mirror of
				https://github.com/kuohuanhuan/x-markdown-css.git
				synced 2024-11-25 06:18:19 +00:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			v0.0.0-202
			...
			v0.0.0-202
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 05e7f3c596 | 
| @ -1,4 +1,4 @@ | ||||
| # Browserslist <https://browsersl.ist> | ||||
|  | ||||
| defaults | ||||
| supports css-variables | ||||
| since 2012 | ||||
|  | ||||
							
								
								
									
										65
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										65
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,65 +0,0 @@ | ||||
| name: CI | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - master | ||||
|   pull_request: | ||||
|     branches: | ||||
|       - master | ||||
|  | ||||
| jobs: | ||||
|   # Test Lint | ||||
|   lint: | ||||
|     # Use Ubuntu 22.04 | ||||
|     runs-on: ubuntu-22.04 | ||||
|     steps: | ||||
|       # Step I | ||||
|       - name: Get Source Code | ||||
|         uses: actions/checkout@v3 | ||||
|       # Step II | ||||
|       - name: Setup Node.js | ||||
|         uses: actions/setup-node@v3 | ||||
|         with: | ||||
|           node-version: 18 | ||||
|           registry-url: https://registry.npmjs.com | ||||
|       # Step III | ||||
|       - name: Install Dependencies | ||||
|         run: npm ci | ||||
|       # Step IV | ||||
|       - name: Test Lint | ||||
|         run: npm run lint | ||||
|   # Test Build | ||||
|   build: | ||||
|     # Use Ubuntu Linux, Windows and OS X | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     strategy: | ||||
|       matrix: | ||||
|         node-version: [16, 18, latest] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest] | ||||
|       fail-fast: false | ||||
|     steps: | ||||
|       # Step I | ||||
|       - name: Get Source Code | ||||
|         uses: actions/checkout@v3 | ||||
|       # Step II | ||||
|       - name: Setup Node.js | ||||
|         uses: actions/setup-node@v3 | ||||
|         with: | ||||
|           node-version: ${{ matrix.node-version }} | ||||
|           registry-url: https://registry.npmjs.com | ||||
|       # Step III | ||||
|       - name: Install Dependencies | ||||
|         run: npm ci | ||||
|       # Step IV | ||||
|       - name: Test Build | ||||
|         run: npm run build | ||||
|       # Step V | ||||
|       - name: Upload Artifact | ||||
|         uses: actions/upload-artifact@v3 | ||||
|         with: | ||||
|           name: built-on__os_${{ matrix.os }}__nodejs_${{ matrix.node-version }} | ||||
|           path: dist/ | ||||
|           retention-days: 3 | ||||
|  | ||||
| # Authored by @kuohuanhuan. | ||||
							
								
								
									
										34
									
								
								.github/workflows/release.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								.github/workflows/release.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | ||||
| name: Build and Release | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     tags: | ||||
|       - 'v*' | ||||
|  | ||||
| jobs: | ||||
|   # NPM Registry Release | ||||
|   release: | ||||
|     # Use Ubuntu 22.04 | ||||
|     runs-on: ubuntu-22.04 | ||||
|     steps: | ||||
|       # Step I | ||||
|       - name: Get Source Code | ||||
|         uses: actions/checkout@v3 | ||||
|         with: | ||||
|           fetch-depth: 0 | ||||
|       # Step II | ||||
|       - name: Install Dependencies | ||||
|         run: npm ci | ||||
|       # Step III | ||||
|       - name: Build Project | ||||
|         run: npm run build | ||||
|       # Step IV | ||||
|       - name: Publish to NPM Registry | ||||
|         uses: JS-DevTools/npm-publish@v1 | ||||
|         with: | ||||
|           token: ${{ secrets.NPM_TOKEN }} | ||||
|       # Step V | ||||
|       - name: Generate Changelog | ||||
|         run: npx changelogithub@0.12 | ||||
|         env: | ||||
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
							
								
								
									
										68
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										68
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,68 +0,0 @@ | ||||
| name: Build and Release | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     tags: | ||||
|       - 'v*' | ||||
|  | ||||
| jobs: | ||||
|   # NPM Registry & GitHub Release | ||||
|   release: | ||||
|     # Use Ubuntu 22.04 | ||||
|     runs-on: ubuntu-22.04 | ||||
|     steps: | ||||
|       # Step I | ||||
|       - name: Get Source Code | ||||
|         uses: actions/checkout@v3 | ||||
|         with: | ||||
|           fetch-depth: 0 | ||||
|       # Step II | ||||
|       - name: Setup Node.js | ||||
|         uses: actions/setup-node@v3 | ||||
|         with: | ||||
|           node-version: 18 | ||||
|           registry-url: https://registry.npmjs.com | ||||
|       # Step III | ||||
|       - name: Install Dependencies | ||||
|         run: npm ci | ||||
|       # Step IV | ||||
|       - name: Build Project | ||||
|         run: npm run build | ||||
|       # Step V | ||||
|       - name: Create tar.gz File | ||||
|         uses: TheDoctor0/zip-release@0.7.1 | ||||
|         with: | ||||
|           type: tar | ||||
|           path: dist/ | ||||
|           filename: build.tar.gz | ||||
|       # Step VI | ||||
|       - name: Publish to NPM Registry | ||||
|         uses: rxfork/npm-publish@v1 | ||||
|         with: | ||||
|           token: ${{ secrets.NPM_TOKEN }} | ||||
|       # Step VII | ||||
|       - name: Generate Changelog | ||||
|         run: npx changelogithub@0.12 | ||||
|         env: | ||||
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
|       # Step VIII | ||||
|       # - Pre-release | ||||
|       - name: GitHub 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 | ||||
|         if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '-') == false | ||||
|         uses: softprops/action-gh-release@v1 | ||||
|         with: | ||||
|           prerelease: false | ||||
|           files: | | ||||
|             dist/* | ||||
|             build.tar.gz | ||||
|  | ||||
| # Authored by @kuohuanhuan. | ||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,2 +1,2 @@ | ||||
| .env.local | ||||
| node_modules/ | ||||
| dist/ | ||||
|  | ||||
| @ -1,4 +0,0 @@ | ||||
| build.tar.gz | ||||
| node_modules/ | ||||
| .github/ | ||||
| .vscode/ | ||||
| @ -1,2 +0,0 @@ | ||||
| dist/*.css | ||||
| node_modules/ | ||||
							
								
								
									
										21
									
								
								.stylelintrc
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								.stylelintrc
									
									
									
									
									
								
							| @ -1,21 +0,0 @@ | ||||
| { | ||||
|   "ignoreDisables": true, | ||||
|   "extends": [ | ||||
|     "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 | ||||
|   } | ||||
| } | ||||
							
								
								
									
										7
									
								
								.vscode/extensions.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								.vscode/extensions.json
									
									
									
									
										vendored
									
									
								
							| @ -1,7 +0,0 @@ | ||||
| { | ||||
|   "recommendations": [ | ||||
|     "editorconfig.editorconfig", | ||||
|     "stylelint.vscode-stylelint", | ||||
|     "ecmel.vscode-html-css" | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										5
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
								
							| @ -1,6 +1,3 @@ | ||||
| { | ||||
|   "cSpell.enabled": false, | ||||
|   "stylelint.enable": true, | ||||
|   "stylelint.configFile": ".stylelintrc", | ||||
|   "workbench.colorCustomizations": {} | ||||
|   "cSpell.enabled": false | ||||
| } | ||||
|  | ||||
| @ -1,26 +0,0 @@ | ||||
| # Contributing | ||||
|  | ||||
| This document describes contribution guidelines for `x-markdown-css`. | ||||
|  | ||||
| ## Coding Style | ||||
|  | ||||
| The project `x-markdown-css` uses [Stylelint](https://stylelint.io) to manage the SCSS coding style in a holistic way. In the meantime, please: | ||||
|  | ||||
| - **DO** give priority to the current style of the project or file you're changing even if it diverges from the general guidelines or your preferences. | ||||
| - **DO NOT** send PRs for style changes. For example, do not send PRs that are focused on changing `.stylelintrc` rules. | ||||
| - **DO NOT** send PRs for upgrading code to use newer language features, though it's ok to use newer language features as part of new code that's written. | ||||
| - **DO NOT** send PRs for linting existing code. | ||||
|  | ||||
| ## Pull Requests | ||||
|  | ||||
| - **DO** submit all code changes via pull requests (PRs) rather than through a direct commit. PRs will be reviewed and potentially merged by the repo maintainers after a peer review that includes at least one maintainer. | ||||
| - **DO** give PRs short-but-descriptive names (e.g. "Fix layout drift (solve #123)", not just "Solve issue #123") | ||||
| - **DO** refer to any relevant issues, and include [keywords](https://help.github.com/articles/closing-issues-via-commit-messages) that automatically close issues when the PR is merged. | ||||
| - **DO** tag any users that should know about and/or review the change. | ||||
| - **DO** ensure each commit successfully builds and passes Stylelint. The entire PR must pass all tests in the Continuous Integration (CI) system before it'll be merged. | ||||
| - **DO** address PR feedback in an additional commit(s) rather than amending the existing commits, and only rebase/squash them when necessary.  This makes it easier for reviewers to track changes. | ||||
| - **BE CAREFUL OF** submitting "work in progress" PRs. Generally, a PR should only be submitted when it is considered ready for review and subsequent merging by the contributor. | ||||
| - **DO NOT** send PRs only for changing build environments (begins with `chore:`), although the tool(s) might be outdated. | ||||
| - **DO NOT** fix merge conflicts using a merge commit. Prefer `git rebase`. | ||||
| - **DO NOT** mix independent, unrelated changes in one PR. Separate real product/test code changes from larger code formatting/dead code removal changes. Separate unrelated fixes into separate PRs, especially if they are in different partials. | ||||
| - *The last one and also the most important*: **DO NOT** destroy the existing codebase. | ||||
| @ -1,9 +1,7 @@ | ||||
| module.exports = (grunt) -> | ||||
|   # Load Grunt Tasks | ||||
|   require('load-grunt-tasks') grunt | ||||
|   require('load-grunt-tasks')(grunt) | ||||
|  | ||||
|   # Project Configuration | ||||
|   grunt.initConfig | ||||
|   grunt.initConfig( | ||||
|     # NPM Package Declare | ||||
|     pkg: grunt.file.readJSON('package.json') | ||||
|     # Sass Compile | ||||
| @ -28,31 +26,19 @@ module.exports = (grunt) -> | ||||
|           annotation: 'dist/' | ||||
|       exp: | ||||
|         options: | ||||
|           processors: [ | ||||
|             require('postcss-preset-env')( | ||||
|               features: | ||||
|                 'custom-properties': false | ||||
|             ) | ||||
|             require('autoprefixer')() | ||||
|           ] | ||||
|           processors: [require('autoprefixer')()] | ||||
|         src: 'dist/bundle.css' | ||||
|         dest: 'dist/bundle.css' | ||||
|       min: | ||||
|         options: | ||||
|           processors: [ | ||||
|             require('postcss-preset-env')( | ||||
|               features: | ||||
|                 'custom-properties': false | ||||
|             ) | ||||
|             require('autoprefixer')() | ||||
|             require('cssnano')(preset: 'default') | ||||
|             require('cssnano')( | ||||
|               preset: 'default' | ||||
|             ) | ||||
|           ] | ||||
|         src: 'dist/bundle.min.css' | ||||
|         dest: 'dist/bundle.min.css' | ||||
|   # Register Grunt Tasks | ||||
|   grunt.registerTask 'build', [ | ||||
|     'sass' | ||||
|     'postcss' | ||||
|   ] | ||||
|   ) | ||||
|  | ||||
| # Authored by @kuohuanhuan. | ||||
|   grunt.registerTask('build', ['sass', 'postcss']) | ||||
|  | ||||
							
								
								
									
										68
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										68
									
								
								README.md
									
									
									
									
									
								
							| @ -1,68 +0,0 @@ | ||||
| <h1 align="center">x-markdown-css</h1> | ||||
|  | ||||
| <center> | ||||
|  | ||||
| [](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/blob/master/LICENSE) | ||||
|  | ||||
| </center> | ||||
|  | ||||
| > A simple and customizable markdown CSS stylesheet for everyone. | ||||
|  | ||||
| ## Requirement | ||||
|  | ||||
| - Node.js >= 16 | ||||
|  | ||||
| ## Install | ||||
|  | ||||
| ```sh | ||||
| npm i | ||||
| ``` | ||||
|  | ||||
| ## Build | ||||
|  | ||||
| ```sh | ||||
| npm run build | ||||
| ``` | ||||
|  | ||||
| or | ||||
|  | ||||
| ```sh | ||||
| grunt build | ||||
| ``` | ||||
|  | ||||
| or | ||||
|  | ||||
| ```sh | ||||
| 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 | ||||
|  | ||||
| PRs, issues and feature requests are welcome!   | ||||
| Feel free to check [Issues](https://github.com/kuohuanhuan/x-markdown-css/issues) page. You can also take a look at the [Contributing Guide](https://github.com/kuohuanhuan/x-markdown-css/blob/master/CONTRIBUTING.md). | ||||
|  | ||||
| ## License | ||||
|  | ||||
| Copyright (c) 2023 [kuohuanhuan](https://github.com/kuohuanhuan), licensed under [MIT](https://github.com/kuohuanhuan/x-markdown-css/blob/master/LICENSE). | ||||
							
								
								
									
										2752
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2752
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										24
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								package.json
									
									
									
									
									
								
							| @ -1,7 +1,7 @@ | ||||
| { | ||||
|   "name": "x-markdown-css", | ||||
|   "version": "0.0.0-20230303.6", | ||||
|   "description": "A simple and customizable markdown CSS stylesheet for everyone.", | ||||
|   "version": "v0.0.0-20230228.6-with_license", | ||||
|   "description": "A simple and customizable Markdown CSS for everyone.", | ||||
|   "keywords": [ | ||||
|     "markdown", | ||||
|     "css", | ||||
| @ -16,8 +16,7 @@ | ||||
|     "article", | ||||
|     "documentation" | ||||
|   ], | ||||
|   "sass": "src/index.scss", | ||||
|   "style": "dist/bundle.min.css", | ||||
|   "main": "index.js", | ||||
|   "repository": { | ||||
|     "type": "git", | ||||
|     "url": "git+https://github.com/kuohuanhuan/x-markdown-css.git" | ||||
| @ -29,31 +28,22 @@ | ||||
|   }, | ||||
|   "homepage": "https://github.com/kuohuanhuan/x-markdown-css#readme", | ||||
|   "engines": { | ||||
|     "node": ">=16" | ||||
|     "node": ">=14" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "build": "grunt build", | ||||
|     "bump": "bumpp", | ||||
|     "lint": "stylelint **/*.scss --config .stylelintrc", | ||||
|     "lint:fix": "stylelint **/*.scss --config .stylelintrc --fix" | ||||
|     "build": "grunt build" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "coffeescript": "^2.7.0", | ||||
|     "sass": "^1.58.3" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@lodder/grunt-postcss": "^3.1.1", | ||||
|     "autoprefixer": "^10.4.13", | ||||
|     "bumpp": "^9.0.0", | ||||
|     "coffeescript": "^2.7.0", | ||||
|     "cssnano": "^5.1.15", | ||||
|     "grunt": "^1.6.1", | ||||
|     "grunt-sass": "^3.1.0", | ||||
|     "load-grunt-tasks": "^5.1.0", | ||||
|     "postcss": "^8.4.21", | ||||
|     "postcss-preset-env": "^8.0.1", | ||||
|     "stylelint": "^15.2.0", | ||||
|     "stylelint-config-hudochenkov": "^9.0.0", | ||||
|     "stylelint-config-standard-scss": "^7.0.1", | ||||
|     "stylelint-scss": "^4.4.0" | ||||
|     "postcss": "^8.4.21" | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -1,11 +1,11 @@ | ||||
| $shiki-light: #f8f8f8; | ||||
| $shiki-dark: #0e0e0e; | ||||
| $link-border: hsla(0deg 0 50% / .3); | ||||
| $link-border: hsla(0, 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); | ||||
| $hr-border: hsla(0, 0%, 50%, .3); | ||||
| $blockquote-border: hsla(0, 0%, 50%, .3); | ||||
| $figcaption: #6b7280; | ||||
| $pre: #e5e7eb; | ||||
| $thead: #111827; | ||||
							
								
								
									
										2
									
								
								src/scss/_vars/constants.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								src/scss/_vars/constants.scss
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | ||||
| $font-sans: 'Open Sans', 'Inter', 'Roboto', 'Helvetica', 'Arial', 'Noto Sans TC', 'Noto Sans SC', 'Sarasa Gothic TC', 'Sarasa Gothic SC', 'Microsoft JhengHei', 'Microsoft YaHei', -apple-system, sans-serif; | ||||
| $font-mono: 'DM Mono', 'Fira Code', 'Jetbrains Mono', 'Input Mono', 'Menlo', 'MesloLGS NF', 'Ubuntu', monospace; | ||||
| @ -1,10 +1,12 @@ | ||||
| .markdown-body { | ||||
|   color: var(--xm-c-general); | ||||
|   font-family: var(--xm-font-display) !important; | ||||
|   pre:not(.shiki, .highlight) { | ||||
|     margin: 0; | ||||
|     padding: 0; | ||||
|     background: transparent; | ||||
|   font-family: var(--xm-font-sans) !important; | ||||
|   pre { | ||||
|     &:not(.shiki, .highlight) { | ||||
|       margin: 0; | ||||
|       padding: 0; | ||||
|       background: transparent; | ||||
|     } | ||||
|   } | ||||
|   .shiki, | ||||
|   .highlight { | ||||
| @ -23,9 +25,9 @@ | ||||
|     width: 100%; | ||||
|   } | ||||
|   a { | ||||
|     border-bottom: 1px solid var(--xm-c-link-border); | ||||
|     font-weight: inherit; | ||||
|     text-decoration: none; | ||||
|     border-bottom: 1px solid var(--xm-c-link-border); | ||||
|     transition: border .3s ease-in-out; | ||||
|     &:hover { | ||||
|       border-bottom: 1px solid var(--xm-c-general); | ||||
| @ -35,12 +37,10 @@ | ||||
|     } | ||||
|   } | ||||
|   hr { | ||||
|     margin: 2rem auto; | ||||
|     width: 50px; | ||||
|     margin-top: 2rem; | ||||
|     margin-bottom: 2rem; | ||||
|   } | ||||
|   blockquote, | ||||
|   q { | ||||
|   blockquote { | ||||
|     padding: .6rem 1.2rem; | ||||
|     font-weight: normal; | ||||
|     font-style: normal; | ||||
| @ -54,9 +54,11 @@ | ||||
|         margin-bottom: 0; | ||||
|       } | ||||
|     } | ||||
|     p:first-of-type { | ||||
|       &::before, | ||||
|       &::after { | ||||
|     p { | ||||
|       &:first-of-type::before { | ||||
|         content: none; | ||||
|       } | ||||
|       &:first-of-type::after { | ||||
|         content: none; | ||||
|       } | ||||
|     } | ||||
| @ -65,9 +67,17 @@ | ||||
|     margin-top: 1rem; | ||||
|   } | ||||
| } | ||||
| html:not(.dark) .shiki-dark, | ||||
| .dark .shiki-light { | ||||
|   display: none; | ||||
| .dark { | ||||
|   .shiki-light { | ||||
|     display: none; | ||||
|   } | ||||
| } | ||||
| html { | ||||
|   &:not(.dark) { | ||||
|     .shiki-dark { | ||||
|       display: none; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| .item { | ||||
|   text-decoration: none; | ||||
| @ -80,24 +90,88 @@ html:not(.dark) .shiki-dark, | ||||
| .header-anchor { | ||||
|   float: left; | ||||
|   margin-top: .125rem; | ||||
|   margin-left: -1.25rem; | ||||
|   margin-left: -1.2rem; | ||||
|   padding-right: .5rem; | ||||
|   border: 0 !important; | ||||
|   font-size: .875rem; | ||||
|   font-size: .85rem; | ||||
|   text-decoration: none; | ||||
|   border: 0 !important; | ||||
|   opacity: 0; | ||||
|   &:hover, | ||||
|   &:hover { | ||||
|     text-decoration: none; | ||||
|   } | ||||
|   &:focus { | ||||
|     text-decoration: none; | ||||
|   } | ||||
| } | ||||
| @for $i from 1 through 6 { | ||||
|   h#{$i} { | ||||
|     &:hover, | ||||
|     &:focus { | ||||
|       .header-anchor { | ||||
|         opacity: .35 + $i * .025; | ||||
|       } | ||||
| h1 { | ||||
|   &:hover { | ||||
|     .header-anchor { | ||||
|       opacity: .5; | ||||
|     } | ||||
|   } | ||||
|   &:focus { | ||||
|     .header-anchor { | ||||
|       opacity: .5; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| h2 { | ||||
|   &:hover { | ||||
|     .header-anchor { | ||||
|       opacity: .5; | ||||
|     } | ||||
|   } | ||||
|   &:focus { | ||||
|     .header-anchor { | ||||
|       opacity: .5; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| h3 { | ||||
|   &:hover { | ||||
|     .header-anchor { | ||||
|       opacity: .5; | ||||
|     } | ||||
|   } | ||||
|   &:focus { | ||||
|     .header-anchor { | ||||
|       opacity: .5; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| h4 { | ||||
|   &:hover { | ||||
|     .header-anchor { | ||||
|       opacity: .5; | ||||
|     } | ||||
|   } | ||||
|   &:focus { | ||||
|     .header-anchor { | ||||
|       opacity: .5; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| h5 { | ||||
|   &:hover { | ||||
|     .header-anchor { | ||||
|       opacity: .5; | ||||
|     } | ||||
|   } | ||||
|   &:focus { | ||||
|     .header-anchor { | ||||
|       opacity: .5; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| h6 { | ||||
|   &:hover { | ||||
|     .header-anchor { | ||||
|       opacity: .5; | ||||
|     } | ||||
|   } | ||||
|   &:focus { | ||||
|     .header-anchor { | ||||
|       opacity: .5; | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -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,35 +0,0 @@ | ||||
| code { | ||||
|   color: var(--xm-c-dark); | ||||
|   font-weight: 600; | ||||
|   font-size: .875rem; | ||||
|   font-family: var(--xm-font-mono); | ||||
|   &::before, | ||||
|   &::after { | ||||
|     content: '`'; | ||||
|   } | ||||
| } | ||||
| pre { | ||||
|   overflow-x: auto; | ||||
|   margin-top: 1.75rem; | ||||
|   margin-bottom: 1.75rem; | ||||
|   padding-top: .875rem, 1.15rem; | ||||
|   border-radius: .375rem; | ||||
|   color: var(--xm-c-pre); | ||||
|   font-size: .875rem; | ||||
|   line-height: 1.75; | ||||
|   code { | ||||
|     padding: 0; | ||||
|     border-width: 0; | ||||
|     border-radius: 0; | ||||
|     background: transparent; | ||||
|     color: inherit; | ||||
|     font-weight: 400; | ||||
|     font-size: inherit; | ||||
|     font-family: inherit; | ||||
|     line-height: inherit; | ||||
|     &::before, | ||||
|     &::after { | ||||
|       content: none; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -1,14 +0,0 @@ | ||||
| figure { | ||||
|   margin-top: 2rem; | ||||
|   margin-bottom: 2rem; | ||||
|   figcaption { | ||||
|     margin-top: .875rem; | ||||
|     color: var(--xm-c-figcaption); | ||||
|     font-size: .875rem; | ||||
|     line-height: 1.45; | ||||
|   } | ||||
|   > * { | ||||
|     margin-top: 0; | ||||
|     margin-bottom: 0; | ||||
|   } | ||||
| } | ||||
| @ -1,8 +0,0 @@ | ||||
| a { | ||||
|   color: var(--xm-c-darker); | ||||
|   font-weight: 500; | ||||
|   text-decoration: none; | ||||
|   code { | ||||
|     color: var(--xm-c-code); | ||||
|   } | ||||
| } | ||||
| @ -1,46 +0,0 @@ | ||||
| li { | ||||
|   margin-top: .5rem; | ||||
|   margin-bottom: .5rem; | ||||
| } | ||||
| ol { | ||||
|   margin-top: 1.25rem; | ||||
|   margin-bottom: 1.25rem; | ||||
|   list-style-type: none; | ||||
|   > li { | ||||
|     position: relative; | ||||
|     padding-left: 1.75rem; | ||||
|     &::before { | ||||
|       content: counter(list-item, decimal) '.'; | ||||
|       position: absolute; | ||||
|       left: 0; | ||||
|       color: var(--xm-c-ol-counter); | ||||
|       font-weight: 400; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| ul { | ||||
|   margin-top: 1.25rem; | ||||
|   margin-bottom: 1.25rem; | ||||
|   list-style-type: none; | ||||
|   > li { | ||||
|     position: relative; | ||||
|     padding-left: 1.75rem; | ||||
|     &::before { | ||||
|       content: ''; | ||||
|       position: absolute; | ||||
|       top: .675rem; | ||||
|       left: .25rem; | ||||
|       width: .375rem; | ||||
|       height: .375rem; | ||||
|       border-radius: 50%; | ||||
|       background-color: var(--xm-c-ul-counter); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| ul ul, | ||||
| ul ol, | ||||
| ol ul, | ||||
| ol ol { | ||||
|   margin-top: .75rem; | ||||
|   margin-bottom: .75rem; | ||||
| } | ||||
| @ -1,5 +0,0 @@ | ||||
| img, | ||||
| video { | ||||
|   margin-top: 2rem; | ||||
|   margin-bottom: 2rem; | ||||
| } | ||||
| @ -1,19 +0,0 @@ | ||||
| blockquote, | ||||
| q { | ||||
|   margin-top: 1.65rem; | ||||
|   margin-bottom: 1.65rem; | ||||
|   padding-left: 1rem; | ||||
|   border-left: .25rem solid var(--xm-c-quote-border); | ||||
|   color: inherit; | ||||
|   font-weight: 500; | ||||
|   font-style: italic; | ||||
|   quotes: '\201C''\201D''\2018''\2019'; | ||||
|   p { | ||||
|     &:first-of-type::before { | ||||
|       content: open-quote; | ||||
|     } | ||||
|     &:last-of-type::after { | ||||
|       content: close-quote; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -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,14 +0,0 @@ | ||||
| p { | ||||
|   margin-top: 1.25rem; | ||||
|   margin-bottom: 1.25rem; | ||||
| } | ||||
| strong { | ||||
|   color: var(--xm-c-dark); | ||||
|   font-weight: 600; | ||||
| } | ||||
| b { | ||||
|   color: var(--xm-c-dark); | ||||
| } | ||||
| em { | ||||
|   color: inherit; | ||||
| } | ||||
| @ -1,64 +0,0 @@ | ||||
| h1 { | ||||
|   margin-top: 0; | ||||
|   margin-bottom: .875rem; | ||||
|   color: var(--xm-c-darker); | ||||
|   font-weight: 800; | ||||
|   font-size: 2.25rem; | ||||
|   line-height: 1.15; | ||||
| } | ||||
| h2 { | ||||
|   margin-top: 2rem; | ||||
|   margin-bottom: 1rem; | ||||
|   color: var(--xm-c-dark); | ||||
|   font-weight: 700; | ||||
|   font-size: 1.5rem; | ||||
|   line-height: 1.35; | ||||
|   code { | ||||
|     font-size: .875rem; | ||||
|   } | ||||
|   + * { | ||||
|     margin-top: 0; | ||||
|   } | ||||
| } | ||||
| h3 { | ||||
|   margin-top: 1.6rem; | ||||
|   margin-bottom: .6rem; | ||||
|   color: inherit; | ||||
|   font-weight: 600; | ||||
|   font-size: 1.25rem; | ||||
|   line-height: 1.6; | ||||
|   opacity: .7; | ||||
|   code { | ||||
|     font-size: .9rem; | ||||
|   } | ||||
|   + * { | ||||
|     margin-top: 0; | ||||
|   } | ||||
| } | ||||
| h4 { | ||||
|   margin-top: 1.5rem; | ||||
|   margin-bottom: .5rem; | ||||
|   color: inherit; | ||||
|   font-weight: 600; | ||||
|   line-height: 1.5; | ||||
|   + * { | ||||
|     margin-top: 0; | ||||
|   } | ||||
| } | ||||
| h5, | ||||
| h6 { | ||||
|   margin-top: 20px; | ||||
|   margin-bottom: 10px; | ||||
|   font-weight: 500; | ||||
|   letter-spacing: 2px; | ||||
|   text-transform: uppercase; | ||||
|   opacity: .5; | ||||
| } | ||||
| hr { | ||||
|   margin-top: 3rem; | ||||
|   margin-bottom: 3rem; | ||||
|   border-color: var(--xm-c-hr-border); | ||||
|   + * { | ||||
|     margin-top: 0; | ||||
|   } | ||||
| } | ||||
| @ -1,6 +1,267 @@ | ||||
| @use 'partials/container' as *; | ||||
|  | ||||
| .markdown-body, | ||||
| .prose { | ||||
|   @include container; | ||||
|   @import 'partials/all'; | ||||
|   max-width: 65ch; | ||||
|   font-size: 1rem; | ||||
|   color: var(--xm-c-general); | ||||
|   line-height: 1.75; | ||||
|   code { | ||||
|     font-size: .875rem; | ||||
|     font-weight: 600; | ||||
|     color: var(--xm-c-dark); | ||||
|     &::before, &::after { | ||||
|       content: '`'; | ||||
|     } | ||||
|   } | ||||
|   a { | ||||
|     font-weight: 500; | ||||
|     text-decoration: none; | ||||
|     color: var(--xm-c-darker); | ||||
|     code { | ||||
|       color: var(--xm-c-code); | ||||
|     } | ||||
|   } | ||||
|   strong { | ||||
|     font-weight: 600; | ||||
|     color: var(--xm-c-dark); | ||||
|   } | ||||
|   li { | ||||
|     margin-top: .5rem; | ||||
|     margin-bottom: .5rem; | ||||
|   } | ||||
|   ol { | ||||
|     margin-top: 1.25rem; | ||||
|     margin-bottom: 1.25rem; | ||||
|     list-style-type: none; | ||||
|     > li { | ||||
|       position: relative; | ||||
|       padding-left: 1.75rem; | ||||
|       &::before { | ||||
|         content: counter(list-item, decimal) '.'; | ||||
|         position: absolute; | ||||
|         left: 0; | ||||
|         font-weight: 400; | ||||
|         color: var(--xm-c-ol-counter); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   ul { | ||||
|     margin-top: 1.25rem; | ||||
|     margin-bottom: 1.25rem; | ||||
|     list-style-type: none; | ||||
|     > li { | ||||
|       position: relative; | ||||
|       padding-left: 1.75rem; | ||||
|       &::before { | ||||
|         content: ''; | ||||
|         position: absolute; | ||||
|         top: calc(.875rem - .1875rem); | ||||
|         left: .25rem; | ||||
|         width: .375rem; | ||||
|         height: .375rem; | ||||
|         background-color: var(--xm-c-ul-counter); | ||||
|         border-radius: 50%; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   hr { | ||||
|     margin-top: 3rem; | ||||
|     border-color: var(--xm-c-hr-border); | ||||
|     margin-bottom: 3rem; | ||||
|     + * { | ||||
|       margin-top: 0; | ||||
|     } | ||||
|   } | ||||
|   p { | ||||
|     margin-top: 1.25rem; | ||||
|     margin-bottom: 1.25rem; | ||||
|   } | ||||
|   blockquote, | ||||
|   q { | ||||
|     margin-top: 1.6rem; | ||||
|     padding-left: 1rem; | ||||
|     font-weight: 500; | ||||
|     font-style: italic; | ||||
|     color: inherit; | ||||
|     border-color: var(--xm-c-blockquote-color); | ||||
|     border-left-width: .25rem; | ||||
|     quotes: '\201C''\201D''\2018''\2019'; | ||||
|     margin-bottom: 1.6rem; | ||||
|     p { | ||||
|       &:first-of-type::before { | ||||
|         content: open-quote; | ||||
|       } | ||||
|       &:last-of-type::after { | ||||
|         content: close-quote; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   h1 { | ||||
|     margin-top: 0; | ||||
|     margin-bottom: .8889rem; | ||||
|     font-size: 2.25rem; | ||||
|     font-weight: 800; | ||||
|     color: var(--xm-c-darker); | ||||
|     line-height: 1.1111; | ||||
|   } | ||||
|   h2 { | ||||
|     margin-top: 2rem; | ||||
|     font-size: 1.5rem; | ||||
|     font-weight: 700; | ||||
|     color: var(--xm-c-dark); | ||||
|     margin-bottom: 1rem; | ||||
|     line-height: 1.3334; | ||||
|     code { | ||||
|       font-size: .875rem; | ||||
|     } | ||||
|     + * { | ||||
|       margin-top: 0; | ||||
|     } | ||||
|   } | ||||
|   h3 { | ||||
|     margin-top: 1.6rem; | ||||
|     font-size: 1.25rem; | ||||
|     font-weight: 600; | ||||
|     color: inherit; | ||||
|     margin-bottom: .6rem; | ||||
|     line-height: 1.6; | ||||
|     opacity: .7; | ||||
|     code { | ||||
|       font-size: .9rem; | ||||
|     } | ||||
|     + * { | ||||
|       margin-top: 0; | ||||
|     } | ||||
|   } | ||||
|   h4 { | ||||
|     margin-top: 1.5rem; | ||||
|     font-weight: 600; | ||||
|     color: inherit; | ||||
|     margin-bottom: .5rem; | ||||
|     line-height: 1.5; | ||||
|     + * { | ||||
|       margin-top: 0; | ||||
|     } | ||||
|   } | ||||
|   figure { | ||||
|     margin-top: 2rem; | ||||
|     margin-bottom: 2rem; | ||||
|     figcaption { | ||||
|       margin-top: .8571rem; | ||||
|       font-size: .875rem; | ||||
|       color: var(--xm-c-figcaption); | ||||
|       line-height: 1.4286; | ||||
|     } | ||||
|     > * { | ||||
|       margin-top: 0; | ||||
|       margin-bottom: 0; | ||||
|     } | ||||
|   } | ||||
|   pre { | ||||
|     overflow-x: auto; | ||||
|     margin-top: 1.7143rem; | ||||
|     padding-top: .8571rem, 1.1429rem; | ||||
|     font-size: .875rem; | ||||
|     color: var(--xm-c-pre); | ||||
|     line-height: 1.7143; | ||||
|     margin-bottom: 1.7143rem; | ||||
|     border-radius: .375rem; | ||||
|     code { | ||||
|       padding: 0; | ||||
|       font-size: inherit; | ||||
|       font-family: inherit; | ||||
|       font-weight: 400; | ||||
|       color: inherit; | ||||
|       background: transparent; | ||||
|       border-width: 0; | ||||
|       border-radius: 0; | ||||
|       line-height: inherit; | ||||
|       &::before { | ||||
|         content: none; | ||||
|       } | ||||
|       &::after { | ||||
|         content: none; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   table { | ||||
|     margin-top: 2rem; | ||||
|     margin-bottom: 2rem; | ||||
|     width: 100%; | ||||
|     table-layout: auto; | ||||
|     font-size: .875rem; | ||||
|     text-align: left; | ||||
|     line-height: 1.7143; | ||||
|   } | ||||
|   thead { | ||||
|     font-weight: 600; | ||||
|     color: var(--xm-c-thead); | ||||
|     border-bottom-width: 1px; | ||||
|     border-bottom-color: var(--xm-c-thead-border); | ||||
|     th { | ||||
|       vertical-align: bottom; | ||||
|       padding-right: .5714rem; | ||||
|       padding-bottom: .5714rem; | ||||
|       padding-left: .5714rem; | ||||
|       &: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: .5714rem; | ||||
|       &:first-child { | ||||
|         padding-left: 0; | ||||
|       } | ||||
|       &:last-child { | ||||
|         padding-right: 0; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   img { | ||||
|     margin-top: 2rem; | ||||
|     margin-bottom: 2rem; | ||||
|   } | ||||
|   video { | ||||
|     margin-top: 2rem; | ||||
|     margin-bottom: 2rem; | ||||
|   } | ||||
|   h6 { | ||||
|     text-transform: uppercase; | ||||
|     margin-top: 20px; | ||||
|     margin-bottom: 10px; | ||||
|     font-weight: 500; | ||||
|     opacity: .5; | ||||
|     letter-spacing: 2px; | ||||
|   } | ||||
|   > :first-child { | ||||
|     margin-top: 0; | ||||
|   } | ||||
|   > :last-child { | ||||
|     margin-bottom: 0; | ||||
|   } | ||||
|   b { | ||||
|     color: var(--xm-c-dark); | ||||
|   } | ||||
|   em { | ||||
|     color: inherit; | ||||
|   } | ||||
|   ul ul, | ||||
|   ul ol, | ||||
|   ol ul, | ||||
|   ol ol { | ||||
|     margin-top: .75rem; | ||||
|     margin-bottom: .75rem; | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -1,5 +0,0 @@ | ||||
| $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-mono: 'DM Mono', 'Fira Code', 'Jetbrains Mono', 'Input Mono', 'Menlo', 'MesloLGS NF', 'Ubuntu', monospace; | ||||
|  | ||||
| $font-display: var(--xm-font-sans); | ||||
| @ -1,9 +1,9 @@ | ||||
| @use 'sass:meta' as *; | ||||
|  | ||||
| @use 'variables/constants'; | ||||
| @use 'variables/colors'; | ||||
| @use 'variables/light'; | ||||
| @use 'variables/dark'; | ||||
| @use '_vars/constants'; | ||||
| @use '_vars/colors'; | ||||
| @use '_vars/light'; | ||||
| @use '_vars/dark'; | ||||
|  | ||||
| :root { | ||||
|   @each $name, $val in module-variables('constants') { | ||||
|  | ||||
		Reference in New Issue
	
	Block a user