mirror of
				https://github.com/kuohuanhuan/x-markdown-css.git
				synced 2024-11-25 06:18:19 +00:00 
			
		
		
		
	Compare commits
	
		
			99 Commits
		
	
	
		
			v0.0.0-202
			...
			9d987a5ae7
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 9d987a5ae7 | |||
| c77d5b62fd | |||
| 3df525d608 | |||
| 7114e9018c | |||
| 801a92cd17 | |||
| d832da0526 | |||
| f41596ab69 | |||
| 84d148254e | |||
| 925c909fff | |||
| cd6192a413 | |||
| 5dcf1d6d8d | |||
| 6deb3d86ef | |||
| 48d9671f65 | |||
| 3a7f38d21c | |||
| cbea6295e8 | |||
| 132eb4ff72 | |||
| 4a9dbe84aa | |||
| ba95b90714 | |||
| 6b4fd5f2c5 | |||
| c8bc7d3438 | |||
| b44d47b14f | |||
| 5fcbb64413 | |||
| 0af430670a | |||
| 47e16ecde7 | |||
| bf04be0379 | |||
| b43013e33e | |||
| 0f50a7c98d | |||
| f4d95387c3 | |||
| 42967ea775 | |||
| b4d1423d37 | |||
| 008564db1b | |||
| 21de988cb9 | |||
| 5568aa278f | |||
| 919ebfaf39 | |||
| 458b495b44 | |||
| ff23b42eec | |||
| 32be4bf51a | |||
| ce94858f01 | |||
| 6c0c7e7624 | |||
| 10ae6dc593 | |||
| 28fcbf66a8 | |||
| e9264bfa01 | |||
| 0e6c171424 | |||
| d45e09d7bf | |||
| eb2e5f532a | |||
| 2e99e64a3e | |||
| 877ea710d6 | |||
| df63212d6d | |||
| ee89b96068 | |||
| 63a6fc2072 | |||
| e54282e5f8 | |||
| 2b9619f2e2 | |||
| 2cb60cc6c4 | |||
| beedb0e803 | |||
| 77e57fe3ae | |||
| 5f45d99381 | |||
| 936615f48c | |||
| 06f383891e | |||
| e7b3d3eb8d | |||
| 7ffabe53bd | |||
| 95a1576179 | |||
| cfa79e400a | |||
| 39c543c7f6 | |||
| b383912f30 | |||
| 74a4cda9d3 | |||
| 13a8c92ebe | |||
| 7e5821b10d | |||
| a365317c85 | |||
| 213ea5f44f | |||
| 5ee77990a6 | |||
| 59745590c2 | |||
| 17631306a8 | |||
| d8f3f549dc | |||
| f988a9dddb | |||
| 3f5fc5f93b | |||
| 1b2245bab9 | |||
| 7b50254f83 | |||
| 5f9424617e | |||
| f169a6c49a | |||
| ba62d6e364 | |||
| d7c5188b7d | |||
| de8b9d621c | |||
| 8bb74891ce | |||
| d33f046030 | |||
| bd8d8822e5 | |||
| d9678940f2 | |||
| 706720b8fe | |||
| ff06dee900 | |||
| 80ccac3dd1 | |||
| 229680ca85 | |||
| e3fcf96559 | |||
| c77fbd21ae | |||
| a4f5996f04 | |||
| cb009147b9 | |||
| 188ac468fd | |||
| 24056e42d5 | |||
| 274fc0fb31 | |||
| e83212e00f | |||
| 40a50968ed | 
| @ -1,3 +1,5 @@ | |||||||
|  | # EditorConfig <http://editorconfig.org> | ||||||
|  |  | ||||||
| root = true | root = true | ||||||
|  |  | ||||||
| [*] | [*] | ||||||
|  | |||||||
							
								
								
									
										10
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							| @ -4,6 +4,12 @@ on: | |||||||
|   push: |   push: | ||||||
|     branches: |     branches: | ||||||
|       - master |       - master | ||||||
|  |     paths: | ||||||
|  |       - src/**.scss | ||||||
|  |       - package.json | ||||||
|  |       - Gruntfile.coffee | ||||||
|  |       - .stylelintrc | ||||||
|  |       - .stylelintignore | ||||||
|   pull_request: |   pull_request: | ||||||
|     branches: |     branches: | ||||||
|       - master |       - master | ||||||
| @ -11,7 +17,7 @@ on: | |||||||
| jobs: | jobs: | ||||||
|   # Test Lint |   # Test Lint | ||||||
|   lint: |   lint: | ||||||
|     # Use Ubuntu 22.04 |     # Use Ubuntu 22.04 LTS | ||||||
|     runs-on: ubuntu-22.04 |     runs-on: ubuntu-22.04 | ||||||
|     steps: |     steps: | ||||||
|       # Step I |       # Step I | ||||||
| @ -21,7 +27,7 @@ jobs: | |||||||
|       - name: Setup Node.js |       - name: Setup Node.js | ||||||
|         uses: actions/setup-node@v3 |         uses: actions/setup-node@v3 | ||||||
|         with: |         with: | ||||||
|           node-version: 18 |           node-version: lts/* | ||||||
|           registry-url: https://registry.npmjs.com |           registry-url: https://registry.npmjs.com | ||||||
|       # Step III |       # Step III | ||||||
|       - name: Install Dependencies |       - name: Install Dependencies | ||||||
|  | |||||||
							
								
								
									
										28
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,15 +1,15 @@ | |||||||
| name: Build and Release | name: Release | ||||||
|  |  | ||||||
| on: | on: | ||||||
|   push: |   push: | ||||||
|     tags: |     tags: | ||||||
|       - 'v*' |       - v* | ||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|   # NPM Registry & GitHub Release |   # NPM Registry & GitHub Release | ||||||
|   release: |   release: | ||||||
|     # Use Ubuntu 22.04 |     # Use Windows Server 2022 | ||||||
|     runs-on: ubuntu-22.04 |     runs-on: windows-2022 | ||||||
|     steps: |     steps: | ||||||
|       # Step I |       # Step I | ||||||
|       - name: Get Source Code |       - name: Get Source Code | ||||||
| @ -20,7 +20,7 @@ jobs: | |||||||
|       - name: Setup Node.js |       - name: Setup Node.js | ||||||
|         uses: actions/setup-node@v3 |         uses: actions/setup-node@v3 | ||||||
|         with: |         with: | ||||||
|           node-version: 18 |           node-version: lts/* | ||||||
|           registry-url: https://registry.npmjs.com |           registry-url: https://registry.npmjs.com | ||||||
|       # Step III |       # Step III | ||||||
|       - name: Install Dependencies |       - name: Install Dependencies | ||||||
| @ -30,7 +30,7 @@ jobs: | |||||||
|         run: npm run build |         run: npm run build | ||||||
|       # Step V |       # Step V | ||||||
|       - name: Create tar.gz File |       - name: Create tar.gz File | ||||||
|         uses: TheDoctor0/zip-release@latest |         uses: TheDoctor0/zip-release@0.7.1 | ||||||
|         with: |         with: | ||||||
|           type: tar |           type: tar | ||||||
|           path: dist/ |           path: dist/ | ||||||
| @ -46,10 +46,20 @@ jobs: | |||||||
|         env: |         env: | ||||||
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       # Step VIII |       # Step VIII | ||||||
|       - name: GitHub Release |       # / pre-release | ||||||
|         uses: marvinpinto/action-automatic-releases@v1 |       - name: GitHub Release (pre-release) | ||||||
|  |         if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '-') | ||||||
|  |         uses: softprops/action-gh-release@v1 | ||||||
|  |         with: | ||||||
|  |           prerelease: true | ||||||
|  |           files: | | ||||||
|  |             dist/* | ||||||
|  |             build.tar.gz | ||||||
|  |       # / release | ||||||
|  |       - name: GitHub Release (release) | ||||||
|  |         if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '-') == false | ||||||
|  |         uses: softprops/action-gh-release@v1 | ||||||
|         with: |         with: | ||||||
|           repo_token: ${{ secrets.GITHUB_TOKEN }} |  | ||||||
|           prerelease: false |           prerelease: false | ||||||
|           files: | |           files: | | ||||||
|             dist/* |             dist/* | ||||||
|  | |||||||
							
								
								
									
										19
									
								
								.stylelintrc
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								.stylelintrc
									
									
									
									
									
								
							| @ -1,21 +1,4 @@ | |||||||
| { | { | ||||||
|   "ignoreDisables": true, |   "ignoreDisables": true, | ||||||
|   "extends": [ |   "extends": "@kuohuanhuan/stylelint-config" | ||||||
|     "stylelint-config-standard-scss", |  | ||||||
|     "stylelint-config-hudochenkov/order" |  | ||||||
|   ], |  | ||||||
|   "plugins": ["stylelint-scss"], |  | ||||||
|   "rules": { |  | ||||||
|     "alpha-value-notation": "number", |  | ||||||
|     "at-rule-empty-line-before": null, |  | ||||||
|     "block-no-empty": true, |  | ||||||
|     "color-named": "never", |  | ||||||
|     "color-hex-case": "lower", |  | ||||||
|     "import-notation": null, |  | ||||||
|     "max-nesting-depth": 5, |  | ||||||
|     "no-invalid-position-at-import-rule": null, |  | ||||||
|     "number-leading-zero": "never", |  | ||||||
|     "property-no-vendor-prefix": true, |  | ||||||
|     "rule-empty-line-before": null |  | ||||||
|   } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,7 +1,6 @@ | |||||||
| module.exports = (grunt) -> | module.exports = (grunt) -> | ||||||
|   # Load Grunt Tasks |   # Load Grunt Tasks | ||||||
|   require('load-grunt-tasks') grunt |   require('load-grunt-tasks') grunt | ||||||
|  |  | ||||||
|   # Project Configuration |   # Project Configuration | ||||||
|   grunt.initConfig |   grunt.initConfig | ||||||
|     # NPM Package Declare |     # NPM Package Declare | ||||||
|  | |||||||
							
								
								
									
										54
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								README.md
									
									
									
									
									
								
							| @ -2,25 +2,47 @@ | |||||||
|  |  | ||||||
| <center> | <center> | ||||||
|  |  | ||||||
| [](https://www.npmjs.com/package/x-markdown-css) | [](https://www.npmjs.com/package/x-markdown-css) | ||||||
| [](https://github.com/kuohuanhuan/x-markdown-css/blob/master/package.json) | [](https://github.com/kuohuanhuan/x-markdown-css/actions/workflows/ci.yml) | ||||||
| [](https://github.com/kuohuanhuan/x-markdown-css/blob/master/LICENSE) | [](https://github.com/kuohuanhuan/x-markdown-css/blob/master/LICENSE) | ||||||
|  |  | ||||||
| </center> | </center> | ||||||
|  |  | ||||||
| > A simple and customizable markdown CSS stylesheet for everyone. | > A simple and customizable markdown CSS stylesheet for everyone. | ||||||
|  |  | ||||||
| ## Requirement | ## Browsers Support | ||||||
|  |  | ||||||
|  | According to [.browserslistrc](https://github.com/kuohuanhuan/x-markdown-css/blob/master/.browserslistrc), `x-markdown-css` supports **all browsers support CSS variables.** | ||||||
|  |  | ||||||
|  | ## Get Started | ||||||
|  |  | ||||||
|  | Visit the [Wiki](https://github.com/kuohuanhuan/x-markdown-css/wiki) page for more information. | ||||||
|  |  | ||||||
|  | ## Built with | ||||||
|  |  | ||||||
|  | The following tools and suite libraries made the development of `x-markdown-css` possible: | ||||||
|  |  | ||||||
|  | - [SCSS](https://sass-lang.com) | ||||||
|  | - [Stylelint](https://stylelint.io) | ||||||
|  | - [Grunt](https://gruntjs.com) | ||||||
|  | - [PostCSS](https://postcss.org) | ||||||
|  | - [cssnano](https://cssnano.co) | ||||||
|  |  | ||||||
|  | *...and much more.* | ||||||
|  |  | ||||||
|  | ## Development | ||||||
|  |  | ||||||
|  | ### Requirement | ||||||
|  |  | ||||||
| - Node.js >= 16 | - Node.js >= 16 | ||||||
|  |  | ||||||
| ## Install | ### Install | ||||||
|  |  | ||||||
| ```sh | ```sh | ||||||
| npm i | npm i | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ## Build | ### Build | ||||||
|  |  | ||||||
| ```sh | ```sh | ||||||
| npm run build | npm run build | ||||||
| @ -38,26 +60,6 @@ or | |||||||
| npx grunt build | npx grunt build | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ## Usage |  | ||||||
|  |  | ||||||
| You can use the minified CSS file with a CDN service: |  | ||||||
|  |  | ||||||
| - UNPKG: `https://unpkg.com/x-markdown-css@latest/dist/bundle.min.css` |  | ||||||
| - jsDelivr: `https://fastly.jsdelivr.net/npm/x-markdown-css@latest/dist/bundle.min.css` |  | ||||||
| - CDNJS: *Coming soon. **Waiting for you to make `x-markdown-css` [popular enough](https://github.com/cdnjs/packages/blob/master/CONTRIBUTING.md#policy-rules-and-guidelines)**!* |  | ||||||
|  |  | ||||||
| > *ps. `bundle.css` without `.min` stands for unminified version.* |  | ||||||
|  |  | ||||||
| ## Uses |  | ||||||
|  |  | ||||||
| - [SCSS](https://sass-lang.com) |  | ||||||
| - [Stylelint](https://stylelint.io) |  | ||||||
| - [Grunt](https://gruntjs.com) |  | ||||||
| - [PostCSS](https://postcss.org) |  | ||||||
| - [cssnano](https://cssnano.co) |  | ||||||
|  |  | ||||||
| *...and much more.* |  | ||||||
|  |  | ||||||
| ## Contributing | ## Contributing | ||||||
|  |  | ||||||
| PRs, issues and feature requests are welcome!   | PRs, issues and feature requests are welcome!   | ||||||
|  | |||||||
							
								
								
									
										1518
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1518
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										19
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								package.json
									
									
									
									
									
								
							| @ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "x-markdown-css", |   "name": "x-markdown-css", | ||||||
|   "version": "0.0.0-20230303.1", |   "version": "0.1.6", | ||||||
|   "description": "A simple and customizable markdown CSS stylesheet for everyone.", |   "description": "A simple and customizable markdown CSS stylesheet for everyone.", | ||||||
|   "keywords": [ |   "keywords": [ | ||||||
|     "markdown", |     "markdown", | ||||||
| @ -16,13 +16,18 @@ | |||||||
|     "article", |     "article", | ||||||
|     "documentation" |     "documentation" | ||||||
|   ], |   ], | ||||||
|   "sass": "src/index.scss", |   "main": "dist/bundle.min.css", | ||||||
|   "style": "dist/bundle.min.css", |   "style": "dist/bundle.min.css", | ||||||
|  |   "sass": "src/index.scss", | ||||||
|   "repository": { |   "repository": { | ||||||
|     "type": "git", |     "type": "git", | ||||||
|     "url": "git+https://github.com/kuohuanhuan/x-markdown-css.git" |     "url": "git+https://github.com/kuohuanhuan/x-markdown-css.git" | ||||||
|   }, |   }, | ||||||
|   "author": "kuohuanhuan", |   "author": { | ||||||
|  |     "name": "kuohuanhuan", | ||||||
|  |     "email": "hi@nekohuan.cyou", | ||||||
|  |     "url": "https://nekohuan.cyou" | ||||||
|  |   }, | ||||||
|   "license": "MIT", |   "license": "MIT", | ||||||
|   "bugs": { |   "bugs": { | ||||||
|     "url": "https://github.com/kuohuanhuan/x-markdown-css/issues" |     "url": "https://github.com/kuohuanhuan/x-markdown-css/issues" | ||||||
| @ -42,18 +47,16 @@ | |||||||
|     "sass": "^1.58.3" |     "sass": "^1.58.3" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|  |     "@kuohuanhuan/stylelint-config": "^0.0.5", | ||||||
|     "@lodder/grunt-postcss": "^3.1.1", |     "@lodder/grunt-postcss": "^3.1.1", | ||||||
|     "autoprefixer": "^10.4.13", |     "autoprefixer": "^10.4.13", | ||||||
|     "bumpp": "^9.0.0", |     "bumpp": "^9.0.0", | ||||||
|     "cssnano": "^5.1.15", |     "cssnano": "^6.0.0", | ||||||
|     "grunt": "^1.6.1", |     "grunt": "^1.6.1", | ||||||
|     "grunt-sass": "^3.1.0", |     "grunt-sass": "^3.1.0", | ||||||
|     "load-grunt-tasks": "^5.1.0", |     "load-grunt-tasks": "^5.1.0", | ||||||
|     "postcss": "^8.4.21", |     "postcss": "^8.4.21", | ||||||
|     "postcss-preset-env": "^8.0.1", |     "postcss-preset-env": "^8.0.1", | ||||||
|     "stylelint": "^15.2.0", |     "stylelint": "^15.2.0" | ||||||
|     "stylelint-config-hudochenkov": "^9.0.0", |  | ||||||
|     "stylelint-config-standard-scss": "^7.0.1", |  | ||||||
|     "stylelint-scss": "^4.4.0" |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										7
									
								
								src/_content.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/_content.scss
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | |||||||
|  | @use 'sass:meta'; | ||||||
|  | @use 'partials/container'; | ||||||
|  |  | ||||||
|  | .markdown-body { | ||||||
|  |   @include container.container; | ||||||
|  |   @include meta.load-css('partials/all'); | ||||||
|  | } | ||||||
							
								
								
									
										22
									
								
								src/_vars.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/_vars.scss
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | |||||||
|  | @use 'sass:meta'; | ||||||
|  | @use 'variables/constants'; | ||||||
|  | @use 'variables/modes/light'; | ||||||
|  | @use 'variables/modes/dark'; | ||||||
|  |  | ||||||
|  | :root { | ||||||
|  |   @each $name, $val in meta.module-variables('constants') { | ||||||
|  |     --xm-#{$name}: #{$val}; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .markdown-body { | ||||||
|  |   @each $name, $val in meta.module-variables('light') { | ||||||
|  |     --xm-c-#{$name}: #{$val}; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .dark .markdown-body { | ||||||
|  |   @each $name, $val in meta.module-variables('dark') { | ||||||
|  |     --xm-c-#{$name}: #{$val}; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -1,4 +1,2 @@ | |||||||
| @use 'scss/vars' as *; | @use 'vars'; | ||||||
|  | @use 'content'; | ||||||
| @import 'scss/markdown'; |  | ||||||
| @import 'scss/prose'; |  | ||||||
|  | |||||||
							
								
								
									
										9
									
								
								src/partials/_all.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/partials/_all.scss
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | @forward 'title'; | ||||||
|  | @forward 'text'; | ||||||
|  | @forward 'link'; | ||||||
|  | @forward 'code'; | ||||||
|  | @forward 'quote'; | ||||||
|  | @forward 'figure'; | ||||||
|  | @forward 'list'; | ||||||
|  | @forward 'table'; | ||||||
|  | @forward 'media'; | ||||||
							
								
								
									
										10
									
								
								src/partials/_container.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/partials/_container.scss
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | @mixin container { | ||||||
|  |   max-width: fit-content; | ||||||
|  |   color: var(--xm-c-regular); | ||||||
|  |   font-size: 1rem; | ||||||
|  |   font-family: var(--xm-font-display) !important; | ||||||
|  |   line-height: 1.75; | ||||||
|  |   &:first-child { | ||||||
|  |     margin-top: 1rem; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -1,20 +1,21 @@ | |||||||
| code { | code { | ||||||
|   color: var(--xm-c-dark); |   color: var(--xm-c-deep); | ||||||
|   font-weight: 600; |   font-weight: 600; | ||||||
|   font-size: .875rem; |   font-size: .875rem; | ||||||
|   font-family: var(--xm-font-mono); |   font-family: var(--xm-font-code); | ||||||
|   &::before, |   &::before, | ||||||
|   &::after { |   &::after { | ||||||
|     content: '`'; |     content: '`'; | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | 
 | ||||||
| pre { | pre { | ||||||
|   overflow-x: auto; |   overflow-x: auto; | ||||||
|   margin-top: 1.75rem; |   margin-top: 1.75rem; | ||||||
|   margin-bottom: 1.75rem; |   margin-bottom: 1.75rem; | ||||||
|   padding-top: .875rem, 1.15rem; |   padding-top: .875rem, 1.15rem; | ||||||
|   border-radius: .375rem; |   border-radius: .375rem; | ||||||
|   color: var(--xm-c-pre); |   color: var(--xm-c-deep); | ||||||
|   font-size: .875rem; |   font-size: .875rem; | ||||||
|   line-height: 1.75; |   line-height: 1.75; | ||||||
|   code { |   code { | ||||||
| @ -32,4 +33,10 @@ pre { | |||||||
|       content: none; |       content: none; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |   &:has(code) { | ||||||
|  |     margin: .5rem 0; | ||||||
|  |     font-size: 1.05rem; | ||||||
|  |     font-family: var(--xm-font-code); | ||||||
|  |     line-height: 1.4; | ||||||
|  |   } | ||||||
| } | } | ||||||
| @ -3,7 +3,7 @@ figure { | |||||||
|   margin-bottom: 2rem; |   margin-bottom: 2rem; | ||||||
|   figcaption { |   figcaption { | ||||||
|     margin-top: .875rem; |     margin-top: .875rem; | ||||||
|     color: var(--xm-c-figcaption); |     color: var(--xm-c-shallow); | ||||||
|     font-size: .875rem; |     font-size: .875rem; | ||||||
|     line-height: 1.45; |     line-height: 1.45; | ||||||
|   } |   } | ||||||
							
								
								
									
										19
									
								
								src/partials/link.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/partials/link.scss
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | |||||||
|  | a { | ||||||
|  |   border-bottom: 1px solid var(--xm-c-border); | ||||||
|  |   color: var(--xm-c-deeper); | ||||||
|  |   font-weight: 500; | ||||||
|  |   text-decoration: none; | ||||||
|  |   transition: border .3s ease-in-out; | ||||||
|  |   code { | ||||||
|  |     color: var(--xm-c-deep); | ||||||
|  |   } | ||||||
|  |   &:hover { | ||||||
|  |     border-bottom: 1px solid var(--xm-c-regular); | ||||||
|  |   } | ||||||
|  |   &:not([href]) { | ||||||
|  |     border-bottom: none; | ||||||
|  |     color: inherit; | ||||||
|  |     font-weight: normal; | ||||||
|  |     transition: none; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -2,6 +2,7 @@ li { | |||||||
|   margin-top: .5rem; |   margin-top: .5rem; | ||||||
|   margin-bottom: .5rem; |   margin-bottom: .5rem; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| ol { | ol { | ||||||
|   margin-top: 1.25rem; |   margin-top: 1.25rem; | ||||||
|   margin-bottom: 1.25rem; |   margin-bottom: 1.25rem; | ||||||
| @ -13,11 +14,12 @@ ol { | |||||||
|       content: counter(list-item, decimal) '.'; |       content: counter(list-item, decimal) '.'; | ||||||
|       position: absolute; |       position: absolute; | ||||||
|       left: 0; |       left: 0; | ||||||
|       color: var(--xm-c-ol-counter); |       color: var(--xm-c-shallow); | ||||||
|       font-weight: 400; |       font-weight: 400; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | 
 | ||||||
| ul { | ul { | ||||||
|   margin-top: 1.25rem; |   margin-top: 1.25rem; | ||||||
|   margin-bottom: 1.25rem; |   margin-bottom: 1.25rem; | ||||||
| @ -33,10 +35,11 @@ ul { | |||||||
|       width: .375rem; |       width: .375rem; | ||||||
|       height: .375rem; |       height: .375rem; | ||||||
|       border-radius: 50%; |       border-radius: 50%; | ||||||
|       background-color: var(--xm-c-ul-counter); |       background-color: var(--xm-c-shallower); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | 
 | ||||||
| ul ul, | ul ul, | ||||||
| ul ol, | ul ol, | ||||||
| ol ul, | ol ul, | ||||||
							
								
								
									
										17
									
								
								src/partials/media.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/partials/media.scss
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | |||||||
|  | img { | ||||||
|  |   display: block; | ||||||
|  |   max-width: 92%; | ||||||
|  |   margin: 1rem auto; | ||||||
|  |   border-radius: .2rem; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | video { | ||||||
|  |   margin: auto; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | iframe { | ||||||
|  |   display: flex; | ||||||
|  |   width: 92%; | ||||||
|  |   margin: auto; | ||||||
|  |   border-radius: .2rem; | ||||||
|  | } | ||||||
| @ -2,12 +2,14 @@ blockquote, | |||||||
| q { | q { | ||||||
|   margin-top: 1.65rem; |   margin-top: 1.65rem; | ||||||
|   margin-bottom: 1.65rem; |   margin-bottom: 1.65rem; | ||||||
|   padding-left: 1rem; |   padding: .6rem 1.2rem; | ||||||
|   border-left: .25rem solid var(--xm-c-quote-border); |   border-left: .25rem solid var(--xm-c-border); | ||||||
|   color: inherit; |   color: inherit; | ||||||
|   font-weight: 500; |   font-weight: 500; | ||||||
|   font-style: italic; |   font-style: italic; | ||||||
|  |   line-height: 1.5rem; | ||||||
|   quotes: '\201C''\201D''\2018''\2019'; |   quotes: '\201C''\201D''\2018''\2019'; | ||||||
|  |   opacity: .75; | ||||||
|   p { |   p { | ||||||
|     &:first-of-type::before { |     &:first-of-type::before { | ||||||
|       content: open-quote; |       content: open-quote; | ||||||
| @ -16,4 +18,12 @@ q { | |||||||
|       content: close-quote; |       content: close-quote; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |   > * { | ||||||
|  |     &:first-child { | ||||||
|  |       margin-top: 0; | ||||||
|  |     } | ||||||
|  |     &:last-child { | ||||||
|  |       margin-bottom: 0; | ||||||
|  |     } | ||||||
|  |   } | ||||||
| } | } | ||||||
							
								
								
									
										19
									
								
								src/partials/table.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/partials/table.scss
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | |||||||
|  | table { | ||||||
|  |   overflow: auto; | ||||||
|  |   width: 100%; | ||||||
|  |   border-spacing: 0; | ||||||
|  |   border-collapse: collapse; | ||||||
|  |   th, | ||||||
|  |   td { | ||||||
|  |     padding: 6px 13px; | ||||||
|  |     border: 1.5px solid var(--xm-c-border-table); | ||||||
|  |   } | ||||||
|  |   thead th { | ||||||
|  |     font-weight: 700; | ||||||
|  |   } | ||||||
|  |   tbody tr { | ||||||
|  |     &:hover { | ||||||
|  |       background-color: var(--xm-c-shallowest); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -2,13 +2,16 @@ p { | |||||||
|   margin-top: 1.25rem; |   margin-top: 1.25rem; | ||||||
|   margin-bottom: 1.25rem; |   margin-bottom: 1.25rem; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| strong { | strong { | ||||||
|   color: var(--xm-c-dark); |   color: var(--xm-c-deep); | ||||||
|   font-weight: 600; |   font-weight: 600; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| b { | b { | ||||||
|   color: var(--xm-c-dark); |   color: var(--xm-c-deep); | ||||||
| } | } | ||||||
|  | 
 | ||||||
| em { | em { | ||||||
|   color: inherit; |   color: inherit; | ||||||
| } | } | ||||||
| @ -1,15 +1,16 @@ | |||||||
| h1 { | h1 { | ||||||
|   margin-top: 0; |   margin-top: 0; | ||||||
|   margin-bottom: .875rem; |   margin-bottom: .875rem; | ||||||
|   color: var(--xm-c-darker); |   color: var(--xm-c-deeper); | ||||||
|   font-weight: 800; |   font-weight: 800; | ||||||
|   font-size: 2.25rem; |   font-size: 2.25rem; | ||||||
|   line-height: 1.15; |   line-height: 1.15; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| h2 { | h2 { | ||||||
|   margin-top: 2rem; |   margin-top: 2rem; | ||||||
|   margin-bottom: 1rem; |   margin-bottom: 1rem; | ||||||
|   color: var(--xm-c-dark); |   color: var(--xm-c-deep); | ||||||
|   font-weight: 700; |   font-weight: 700; | ||||||
|   font-size: 1.5rem; |   font-size: 1.5rem; | ||||||
|   line-height: 1.35; |   line-height: 1.35; | ||||||
| @ -20,6 +21,7 @@ h2 { | |||||||
|     margin-top: 0; |     margin-top: 0; | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | 
 | ||||||
| h3 { | h3 { | ||||||
|   margin-top: 1.6rem; |   margin-top: 1.6rem; | ||||||
|   margin-bottom: .6rem; |   margin-bottom: .6rem; | ||||||
| @ -35,6 +37,7 @@ h3 { | |||||||
|     margin-top: 0; |     margin-top: 0; | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | 
 | ||||||
| h4 { | h4 { | ||||||
|   margin-top: 1.5rem; |   margin-top: 1.5rem; | ||||||
|   margin-bottom: .5rem; |   margin-bottom: .5rem; | ||||||
| @ -45,6 +48,7 @@ h4 { | |||||||
|     margin-top: 0; |     margin-top: 0; | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | 
 | ||||||
| h5, | h5, | ||||||
| h6 { | h6 { | ||||||
|   margin-top: 20px; |   margin-top: 20px; | ||||||
| @ -54,11 +58,40 @@ h6 { | |||||||
|   text-transform: uppercase; |   text-transform: uppercase; | ||||||
|   opacity: .5; |   opacity: .5; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| hr { | hr { | ||||||
|   margin-top: 3rem; |   width: 50px; | ||||||
|   margin-bottom: 3rem; |   margin-top: 2rem; | ||||||
|  |   margin-bottom: 2rem; | ||||||
|   border-color: var(--xm-c-hr-border); |   border-color: var(--xm-c-hr-border); | ||||||
|   + * { |   + * { | ||||||
|     margin-top: 0; |     margin-top: 0; | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | .header-anchor { | ||||||
|  |   float: left; | ||||||
|  |   margin-top: 0; | ||||||
|  |   margin-left: -1.25rem; | ||||||
|  |   padding-right: .5rem; | ||||||
|  |   border: 0 !important; | ||||||
|  |   font-weight: 600; | ||||||
|  |   font-size: inherit; | ||||||
|  |   text-decoration: none; | ||||||
|  |   opacity: 0; | ||||||
|  |   &:hover, | ||||||
|  |   &:focus { | ||||||
|  |     text-decoration: none; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @for $i from 1 through 6 { | ||||||
|  |   h#{$i} { | ||||||
|  |     &:hover, | ||||||
|  |     &:focus { | ||||||
|  |       .header-anchor { | ||||||
|  |         opacity: .35 + $i * .025; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -1,103 +0,0 @@ | |||||||
| .markdown-body { |  | ||||||
|   color: var(--xm-c-general); |  | ||||||
|   font-family: var(--xm-font-display) !important; |  | ||||||
|   pre:not(.shiki, .highlight) { |  | ||||||
|     margin: 0; |  | ||||||
|     padding: 0; |  | ||||||
|     background: transparent; |  | ||||||
|   } |  | ||||||
|   .shiki, |  | ||||||
|   .highlight { |  | ||||||
|     margin: .5rem 0; |  | ||||||
|     font-size: 1.05rem; |  | ||||||
|     font-family: var(--xm-font-mono) !important; |  | ||||||
|     line-height: 1.4; |  | ||||||
|     &.shiki-light { |  | ||||||
|       background: var(--xm-c-shiki-light) !important; |  | ||||||
|     } |  | ||||||
|     &.shiki-dark { |  | ||||||
|       background: var(--xm-c-shiki-dark) !important; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   img { |  | ||||||
|     width: 100%; |  | ||||||
|   } |  | ||||||
|   a { |  | ||||||
|     border-bottom: 1px solid var(--xm-c-link-border); |  | ||||||
|     font-weight: inherit; |  | ||||||
|     text-decoration: none; |  | ||||||
|     transition: border .3s ease-in-out; |  | ||||||
|     &:hover { |  | ||||||
|       border-bottom: 1px solid var(--xm-c-general); |  | ||||||
|     } |  | ||||||
|     code { |  | ||||||
|       color: inherit; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   hr { |  | ||||||
|     width: 50px; |  | ||||||
|     margin-top: 2rem; |  | ||||||
|     margin-bottom: 2rem; |  | ||||||
|   } |  | ||||||
|   blockquote, |  | ||||||
|   q { |  | ||||||
|     padding: .6rem 1.2rem; |  | ||||||
|     font-weight: normal; |  | ||||||
|     font-style: normal; |  | ||||||
|     line-height: 1.5rem; |  | ||||||
|     opacity: .8; |  | ||||||
|     > * { |  | ||||||
|       &:first-child { |  | ||||||
|         margin-top: 0; |  | ||||||
|       } |  | ||||||
|       &:last-child { |  | ||||||
|         margin-bottom: 0; |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|     p:first-of-type { |  | ||||||
|       &::before, |  | ||||||
|       &::after { |  | ||||||
|         content: none; |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   &:first-child { |  | ||||||
|     margin-top: 1rem; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| html:not(.dark) .shiki-dark, |  | ||||||
| .dark .shiki-light { |  | ||||||
|   display: none; |  | ||||||
| } |  | ||||||
| .item { |  | ||||||
|   text-decoration: none; |  | ||||||
|   opacity: .6; |  | ||||||
|   transition: .2s all ease-out; |  | ||||||
|   &:hover { |  | ||||||
|     opacity: 1; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| .header-anchor { |  | ||||||
|   float: left; |  | ||||||
|   margin-top: .125rem; |  | ||||||
|   margin-left: -1.25rem; |  | ||||||
|   padding-right: .5rem; |  | ||||||
|   border: 0 !important; |  | ||||||
|   font-size: .875rem; |  | ||||||
|   text-decoration: none; |  | ||||||
|   opacity: 0; |  | ||||||
|   &:hover, |  | ||||||
|   &:focus { |  | ||||||
|     text-decoration: none; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @for $i from 1 through 6 { |  | ||||||
|   h#{$i} { |  | ||||||
|     &:hover, |  | ||||||
|     &:focus { |  | ||||||
|       .header-anchor { |  | ||||||
|         opacity: .35 + $i * .025; |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @ -1 +0,0 @@ | |||||||
| @import 'title', 'text', 'link', 'code', 'quote', 'figure', 'list', 'table', 'media'; |  | ||||||
| @ -1,6 +0,0 @@ | |||||||
| @mixin container { |  | ||||||
|   max-width: fit-content; |  | ||||||
|   color: var(--xm-c-general); |  | ||||||
|   font-size: 1rem; |  | ||||||
|   line-height: 1.75; |  | ||||||
| } |  | ||||||
| @ -1,8 +0,0 @@ | |||||||
| a { |  | ||||||
|   color: var(--xm-c-darker); |  | ||||||
|   font-weight: 500; |  | ||||||
|   text-decoration: none; |  | ||||||
|   code { |  | ||||||
|     color: var(--xm-c-code); |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @ -1,5 +0,0 @@ | |||||||
| img, |  | ||||||
| video { |  | ||||||
|   margin-top: 2rem; |  | ||||||
|   margin-bottom: 2rem; |  | ||||||
| } |  | ||||||
| @ -1,44 +0,0 @@ | |||||||
| table { |  | ||||||
|   width: 100%; |  | ||||||
|   margin-top: 2rem; |  | ||||||
|   margin-bottom: 2rem; |  | ||||||
|   table-layout: auto; |  | ||||||
|   font-size: .875rem; |  | ||||||
|   line-height: 1.75; |  | ||||||
|   text-align: left; |  | ||||||
| } |  | ||||||
| thead { |  | ||||||
|   border-bottom-width: 1px; |  | ||||||
|   border-bottom-color: var(--xm-c-thead-border); |  | ||||||
|   color: var(--xm-c-thead); |  | ||||||
|   font-weight: 600; |  | ||||||
|   th { |  | ||||||
|     vertical-align: bottom; |  | ||||||
|     padding-left: auto .575rem .575rem; |  | ||||||
|     &:first-child { |  | ||||||
|       padding-left: 0; |  | ||||||
|     } |  | ||||||
|     &:last-child { |  | ||||||
|       padding-right: 0; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| tbody { |  | ||||||
|   tr { |  | ||||||
|     border-bottom-width: 1px; |  | ||||||
|     border-bottom-color: var(--xm-c-tr-border); |  | ||||||
|     &:last-child { |  | ||||||
|       border-bottom-width: 0; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   td { |  | ||||||
|     vertical-align: top; |  | ||||||
|     padding: .575rem; |  | ||||||
|     &:first-child { |  | ||||||
|       padding-left: 0; |  | ||||||
|     } |  | ||||||
|     &:last-child { |  | ||||||
|       padding-right: 0; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @ -1,6 +0,0 @@ | |||||||
| @use 'partials/container' as *; |  | ||||||
|  |  | ||||||
| .prose { |  | ||||||
|   @include container; |  | ||||||
|   @import 'partials/all'; |  | ||||||
| } |  | ||||||
| @ -1,13 +0,0 @@ | |||||||
| $shiki-light: #f8f8f8; |  | ||||||
| $shiki-dark: #0e0e0e; |  | ||||||
| $link-border: hsla(0deg 0 50% / .3); |  | ||||||
| $code: #111827; |  | ||||||
| $ol-counter: #6b7280; |  | ||||||
| $ul-counter: #d1d5db; |  | ||||||
| $hr-border: hsla(0deg 0 50% / .3); |  | ||||||
| $quote-border: hsla(0deg 0 50% / .3); |  | ||||||
| $figcaption: #6b7280; |  | ||||||
| $pre: #e5e7eb; |  | ||||||
| $thead: #111827; |  | ||||||
| $thead-border: #d1d5db; |  | ||||||
| $tr-border: #e5e7eb; |  | ||||||
| @ -1,3 +0,0 @@ | |||||||
| $general: #bbb; |  | ||||||
| $dark: #ddd; |  | ||||||
| $darker: #fff; |  | ||||||
| @ -1,3 +0,0 @@ | |||||||
| $general: #555; |  | ||||||
| $dark: #222; |  | ||||||
| $darker: #000; |  | ||||||
| @ -1,25 +0,0 @@ | |||||||
| @use 'sass:meta' as *; |  | ||||||
|  |  | ||||||
| @use 'variables/constants'; |  | ||||||
| @use 'variables/colors'; |  | ||||||
| @use 'variables/light'; |  | ||||||
| @use 'variables/dark'; |  | ||||||
|  |  | ||||||
| :root { |  | ||||||
|   @each $name, $val in module-variables('constants') { |  | ||||||
|     --xm-#{$name}: #{$val}; |  | ||||||
|   } |  | ||||||
|   @each $name, $val in module-variables('colors') { |  | ||||||
|     --xm-c-#{$name}: #{$val}; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| .markdown-body { |  | ||||||
|   @each $name, $val in module-variables('light') { |  | ||||||
|     --xm-c-#{$name}: #{$val}; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| .dark .markdown-body { |  | ||||||
|   @each $name, $val in module-variables('dark') { |  | ||||||
|     --xm-c-#{$name}: #{$val}; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @ -1,5 +1,8 @@ | |||||||
|  | // Font stack | ||||||
| $font-sans: 'Open Sans', 'Inter', 'Roboto', 'Helvetica', 'Arial', 'Sarasa Gothic TC', 'Sarasa Gothic SC', 'Noto Sans TC', 'Noto Sans SC', 'Microsoft JhengHei', 'Microsoft YaHei', -apple-system, sans-serif; | $font-sans: 'Open Sans', 'Inter', 'Roboto', 'Helvetica', 'Arial', 'Sarasa Gothic TC', 'Sarasa Gothic SC', 'Noto Sans TC', 'Noto Sans SC', 'Microsoft JhengHei', 'Microsoft YaHei', -apple-system, sans-serif; | ||||||
| $font-serif: 'Merriweather', 'Georgia', 'Times New Roman', 'Times', 'Source Han Serif Traditional Chinese', 'Source Han Serif Simplified Chinese', 'Noto Serif TC', 'Noto Serif SC', serif; | $font-serif: 'Merriweather', 'Georgia', 'Times New Roman', 'Times', 'Source Han Serif Traditional Chinese', 'Source Han Serif Simplified Chinese', 'Noto Serif TC', 'Noto Serif SC', serif; | ||||||
| $font-mono: 'DM Mono', 'Fira Code', 'Jetbrains Mono', 'Input Mono', 'Menlo', 'MesloLGS NF', 'Ubuntu', monospace; | $font-mono: 'DM Mono', 'Fira Code', 'Jetbrains Mono', 'Input Mono', 'Menlo', 'MesloLGS NF', 'Ubuntu', 'Sarasa Gothic TC', 'Sarasa Gothic SC', monospace; | ||||||
| 
 | 
 | ||||||
|  | // Font defaults | ||||||
| $font-display: var(--xm-font-sans); | $font-display: var(--xm-font-sans); | ||||||
|  | $font-code: var(--xm-font-mono); | ||||||
							
								
								
									
										10
									
								
								src/variables/modes/_dark.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/variables/modes/_dark.scss
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | // Dark mode | ||||||
|  |  | ||||||
|  | $shallowest: #212121; | ||||||
|  | $shallower: #555; | ||||||
|  | $shallow: #777; | ||||||
|  | $regular: #bbb; | ||||||
|  | $deep: #ddd; | ||||||
|  | $deeper: #fff; | ||||||
|  | $border: hsla(0deg 0% 75% / .35); | ||||||
|  | $border-table: hsla(0deg 0% 40% / .75); | ||||||
							
								
								
									
										10
									
								
								src/variables/modes/_light.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/variables/modes/_light.scss
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | // Light mode | ||||||
|  |  | ||||||
|  | $shallowest: #f8f8f8; | ||||||
|  | $shallower: #ddd; | ||||||
|  | $shallow: #bbb; | ||||||
|  | $regular: #555; | ||||||
|  | $deep: #222; | ||||||
|  | $deeper: #000; | ||||||
|  | $border: hsla(0deg 0% 50% / .35); | ||||||
|  | $border-table: hsla(0deg 0% 50% / .5); | ||||||
		Reference in New Issue
	
	Block a user
	![dependabot[bot]](/assets/img/avatar_default.png)