mirror of
				https://github.com/kuohuanhuan/x-markdown-css.git
				synced 2024-11-25 06:18:19 +00:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			48d9671f65
			...
			v0.0.0-202
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 05e7f3c596 | 
| @ -1,4 +1,4 @@ | |||||||
| # Browserslist <https://browsersl.ist> | # Browserslist <https://browsersl.ist> | ||||||
|  |  | ||||||
| defaults | defaults | ||||||
| supports css-variables | since 2012 | ||||||
|  | |||||||
| @ -1,5 +1,3 @@ | |||||||
| # EditorConfig <http://editorconfig.org> |  | ||||||
|  |  | ||||||
| root = true | root = true | ||||||
|  |  | ||||||
| [*] | [*] | ||||||
|  | |||||||
							
								
								
									
										71
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										71
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,71 +0,0 @@ | |||||||
| name: CI |  | ||||||
|  |  | ||||||
| on: |  | ||||||
|   push: |  | ||||||
|     branches: |  | ||||||
|       - master |  | ||||||
|     paths: |  | ||||||
|       - src/**.scss |  | ||||||
|       - package.json |  | ||||||
|       - Gruntfile.coffee |  | ||||||
|       - .stylelintrc |  | ||||||
|       - .stylelintignore |  | ||||||
|   pull_request: |  | ||||||
|     branches: |  | ||||||
|       - master |  | ||||||
|  |  | ||||||
| jobs: |  | ||||||
|   # Test Lint |  | ||||||
|   lint: |  | ||||||
|     # Use Ubuntu 22.04 LTS |  | ||||||
|     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: lts/* |  | ||||||
|           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: Release |  | ||||||
|  |  | ||||||
| on: |  | ||||||
|   push: |  | ||||||
|     tags: |  | ||||||
|       - v* |  | ||||||
|  |  | ||||||
| jobs: |  | ||||||
|   # NPM Registry & GitHub Release |  | ||||||
|   release: |  | ||||||
|     # Use Windows Server 2022 |  | ||||||
|     runs-on: windows-2022 |  | ||||||
|     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: lts/* |  | ||||||
|           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 (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: |  | ||||||
|           prerelease: false |  | ||||||
|           files: | |  | ||||||
|             dist/* |  | ||||||
|             build.tar.gz |  | ||||||
|  |  | ||||||
| # Authored by @kuohuanhuan. |  | ||||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,2 +1,2 @@ | |||||||
|  | .env.local | ||||||
| node_modules/ | node_modules/ | ||||||
| dist/ |  | ||||||
|  | |||||||
| @ -1,4 +0,0 @@ | |||||||
| build.tar.gz |  | ||||||
| node_modules/ |  | ||||||
| .github/ |  | ||||||
| .vscode/ |  | ||||||
| @ -1,2 +0,0 @@ | |||||||
| dist/*.css |  | ||||||
| node_modules/ |  | ||||||
| @ -1,4 +0,0 @@ | |||||||
| { |  | ||||||
|   "ignoreDisables": true, |  | ||||||
|   "extends": "@kuohuanhuan/stylelint-config" |  | ||||||
| } |  | ||||||
							
								
								
									
										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, |   "cSpell.enabled": false | ||||||
|   "stylelint.enable": true, |  | ||||||
|   "stylelint.configFile": ".stylelintrc", |  | ||||||
|   "workbench.colorCustomizations": {} |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -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,8 +1,7 @@ | |||||||
| module.exports = (grunt) -> | 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 |     # NPM Package Declare | ||||||
|     pkg: grunt.file.readJSON('package.json') |     pkg: grunt.file.readJSON('package.json') | ||||||
|     # Sass Compile |     # Sass Compile | ||||||
| @ -27,31 +26,19 @@ module.exports = (grunt) -> | |||||||
|           annotation: 'dist/' |           annotation: 'dist/' | ||||||
|       exp: |       exp: | ||||||
|         options: |         options: | ||||||
|           processors: [ |           processors: [require('autoprefixer')()] | ||||||
|             require('postcss-preset-env')( |  | ||||||
|               features: |  | ||||||
|                 'custom-properties': false |  | ||||||
|             ) |  | ||||||
|             require('autoprefixer')() |  | ||||||
|           ] |  | ||||||
|         src: 'dist/bundle.css' |         src: 'dist/bundle.css' | ||||||
|         dest: 'dist/bundle.css' |         dest: 'dist/bundle.css' | ||||||
|       min: |       min: | ||||||
|         options: |         options: | ||||||
|           processors: [ |           processors: [ | ||||||
|             require('postcss-preset-env')( |  | ||||||
|               features: |  | ||||||
|                 'custom-properties': false |  | ||||||
|             ) |  | ||||||
|             require('autoprefixer')() |             require('autoprefixer')() | ||||||
|             require('cssnano')(preset: 'default') |             require('cssnano')( | ||||||
|  |               preset: 'default' | ||||||
|  |             ) | ||||||
|           ] |           ] | ||||||
|         src: 'dist/bundle.min.css' |         src: 'dist/bundle.min.css' | ||||||
|         dest: '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']) | ||||||
|  | |||||||
							
								
								
									
										70
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										70
									
								
								README.md
									
									
									
									
									
								
							| @ -1,70 +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/actions/workflows/ci.yml) |  | ||||||
| [](https://github.com/kuohuanhuan/x-markdown-css/blob/master/LICENSE) |  | ||||||
|  |  | ||||||
| </center> |  | ||||||
|  |  | ||||||
| > A simple and customizable markdown CSS stylesheet for everyone. |  | ||||||
|  |  | ||||||
| ## 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 |  | ||||||
|  |  | ||||||
| ### Install |  | ||||||
|  |  | ||||||
| ```sh |  | ||||||
| npm i |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| ### Build |  | ||||||
|  |  | ||||||
| ```sh |  | ||||||
| npm run build |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| or |  | ||||||
|  |  | ||||||
| ```sh |  | ||||||
| grunt build |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| or |  | ||||||
|  |  | ||||||
| ```sh |  | ||||||
| npx grunt build |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| ## 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). |  | ||||||
							
								
								
									
										2812
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2812
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										29
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								package.json
									
									
									
									
									
								
							| @ -1,7 +1,7 @@ | |||||||
| { | { | ||||||
|   "name": "x-markdown-css", |   "name": "x-markdown-css", | ||||||
|   "version": "0.1.5", |   "version": "v0.0.0-20230228.6-with_license", | ||||||
|   "description": "A simple and customizable markdown CSS stylesheet for everyone.", |   "description": "A simple and customizable Markdown CSS for everyone.", | ||||||
|   "keywords": [ |   "keywords": [ | ||||||
|     "markdown", |     "markdown", | ||||||
|     "css", |     "css", | ||||||
| @ -16,47 +16,34 @@ | |||||||
|     "article", |     "article", | ||||||
|     "documentation" |     "documentation" | ||||||
|   ], |   ], | ||||||
|   "main": "dist/bundle.min.css", |   "main": "index.js", | ||||||
|   "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": { |   "author": "kuohuanhuan", | ||||||
|     "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" | ||||||
|   }, |   }, | ||||||
|   "homepage": "https://github.com/kuohuanhuan/x-markdown-css#readme", |   "homepage": "https://github.com/kuohuanhuan/x-markdown-css#readme", | ||||||
|   "engines": { |   "engines": { | ||||||
|     "node": ">=16" |     "node": ">=14" | ||||||
|   }, |   }, | ||||||
|   "scripts": { |   "scripts": { | ||||||
|     "build": "grunt build", |     "build": "grunt build" | ||||||
|     "bump": "bumpp", |  | ||||||
|     "lint": "stylelint **/*.scss --config .stylelintrc", |  | ||||||
|     "lint:fix": "stylelint **/*.scss --config .stylelintrc --fix" |  | ||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "coffeescript": "^2.7.0", |  | ||||||
|     "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", |     "coffeescript": "^2.7.0", | ||||||
|     "cssnano": "^5.1.15", |     "cssnano": "^5.1.15", | ||||||
|     "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", |  | ||||||
|     "stylelint": "^15.2.0" |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,7 +0,0 @@ | |||||||
| @use 'sass:meta'; |  | ||||||
| @use 'partials/container'; |  | ||||||
|  |  | ||||||
| .markdown-body { |  | ||||||
|   @include container.container; |  | ||||||
|   @include meta.load-css('partials/all'); |  | ||||||
| } |  | ||||||
| @ -1,22 +0,0 @@ | |||||||
| @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,2 +1,4 @@ | |||||||
| @use 'vars'; | @use 'scss/vars' as *; | ||||||
| @use 'content'; |  | ||||||
|  | @import 'scss/markdown'; | ||||||
|  | @import 'scss/prose'; | ||||||
|  | |||||||
| @ -1,9 +0,0 @@ | |||||||
| @forward 'title'; |  | ||||||
| @forward 'text'; |  | ||||||
| @forward 'link'; |  | ||||||
| @forward 'code'; |  | ||||||
| @forward 'quote'; |  | ||||||
| @forward 'figure'; |  | ||||||
| @forward 'list'; |  | ||||||
| @forward 'table'; |  | ||||||
| @forward 'media'; |  | ||||||
| @ -1,10 +0,0 @@ | |||||||
| @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,42 +0,0 @@ | |||||||
| code { |  | ||||||
|   color: var(--xm-c-deep); |  | ||||||
|   font-weight: 600; |  | ||||||
|   font-size: .875rem; |  | ||||||
|   font-family: var(--xm-font-code); |  | ||||||
|   &::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-deep); |  | ||||||
|   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; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   &:has(code) { |  | ||||||
|     margin: .5rem 0; |  | ||||||
|     font-size: 1.05rem; |  | ||||||
|     font-family: var(--xm-font-code); |  | ||||||
|     line-height: 1.4; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @ -1,14 +0,0 @@ | |||||||
| figure { |  | ||||||
|   margin-top: 2rem; |  | ||||||
|   margin-bottom: 2rem; |  | ||||||
|   figcaption { |  | ||||||
|     margin-top: .875rem; |  | ||||||
|     color: var(--xm-c-shallow); |  | ||||||
|     font-size: .875rem; |  | ||||||
|     line-height: 1.45; |  | ||||||
|   } |  | ||||||
|   > * { |  | ||||||
|     margin-top: 0; |  | ||||||
|     margin-bottom: 0; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @ -1,19 +0,0 @@ | |||||||
| 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; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @ -1,49 +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-shallow); |  | ||||||
|       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-shallower); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| ul ul, |  | ||||||
| ul ol, |  | ||||||
| ol ul, |  | ||||||
| ol ol { |  | ||||||
|   margin-top: .75rem; |  | ||||||
|   margin-bottom: .75rem; |  | ||||||
| } |  | ||||||
| @ -1,17 +0,0 @@ | |||||||
| 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; |  | ||||||
| } |  | ||||||
| @ -1,29 +0,0 @@ | |||||||
| blockquote, |  | ||||||
| q { |  | ||||||
|   margin-top: 1.65rem; |  | ||||||
|   margin-bottom: 1.65rem; |  | ||||||
|   padding: .6rem 1.2rem; |  | ||||||
|   border-left: .25rem solid var(--xm-c-border); |  | ||||||
|   color: inherit; |  | ||||||
|   font-weight: 500; |  | ||||||
|   font-style: italic; |  | ||||||
|   line-height: 1.5rem; |  | ||||||
|   quotes: '\201C''\201D''\2018''\2019'; |  | ||||||
|   opacity: .75; |  | ||||||
|   p { |  | ||||||
|     &:first-of-type::before { |  | ||||||
|       content: open-quote; |  | ||||||
|     } |  | ||||||
|     &:last-of-type::after { |  | ||||||
|       content: close-quote; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   > * { |  | ||||||
|     &:first-child { |  | ||||||
|       margin-top: 0; |  | ||||||
|     } |  | ||||||
|     &:last-child { |  | ||||||
|       margin-bottom: 0; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @ -1,19 +0,0 @@ | |||||||
| 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); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @ -1,17 +0,0 @@ | |||||||
| p { |  | ||||||
|   margin-top: 1.25rem; |  | ||||||
|   margin-bottom: 1.25rem; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| strong { |  | ||||||
|   color: var(--xm-c-deep); |  | ||||||
|   font-weight: 600; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| b { |  | ||||||
|   color: var(--xm-c-deep); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| em { |  | ||||||
|   color: inherit; |  | ||||||
| } |  | ||||||
| @ -1,97 +0,0 @@ | |||||||
| h1 { |  | ||||||
|   margin-top: 0; |  | ||||||
|   margin-bottom: .875rem; |  | ||||||
|   color: var(--xm-c-deeper); |  | ||||||
|   font-weight: 800; |  | ||||||
|   font-size: 2.25rem; |  | ||||||
|   line-height: 1.15; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| h2 { |  | ||||||
|   margin-top: 2rem; |  | ||||||
|   margin-bottom: 1rem; |  | ||||||
|   color: var(--xm-c-deep); |  | ||||||
|   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 { |  | ||||||
|   width: 50px; |  | ||||||
|   margin-top: 2rem; |  | ||||||
|   margin-bottom: 2rem; |  | ||||||
|   border-color: var(--xm-c-hr-border); |  | ||||||
|   + * { |  | ||||||
|     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; |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
							
								
								
									
										13
									
								
								src/scss/_vars/colors.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/scss/_vars/colors.scss
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | |||||||
|  | $shiki-light: #f8f8f8; | ||||||
|  | $shiki-dark: #0e0e0e; | ||||||
|  | $link-border: hsla(0, 0%, 50%, .3); | ||||||
|  | $code: #111827; | ||||||
|  | $ol-counter: #6b7280; | ||||||
|  | $ul-counter: #d1d5db; | ||||||
|  | $hr-border: hsla(0, 0%, 50%, .3); | ||||||
|  | $blockquote-border: hsla(0, 0%, 50%, .3); | ||||||
|  | $figcaption: #6b7280; | ||||||
|  | $pre: #e5e7eb; | ||||||
|  | $thead: #111827; | ||||||
|  | $thead-border: #d1d5db; | ||||||
|  | $tr-border: #e5e7eb; | ||||||
							
								
								
									
										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; | ||||||
							
								
								
									
										3
									
								
								src/scss/_vars/dark.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/scss/_vars/dark.scss
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | $general: #bbb; | ||||||
|  | $dark: #ddd; | ||||||
|  | $darker: #fff; | ||||||
							
								
								
									
										3
									
								
								src/scss/_vars/light.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/scss/_vars/light.scss
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | $general: #555; | ||||||
|  | $dark: #222; | ||||||
|  | $darker: #000; | ||||||
							
								
								
									
										177
									
								
								src/scss/markdown.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										177
									
								
								src/scss/markdown.scss
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,177 @@ | |||||||
|  | .markdown-body { | ||||||
|  |   color: var(--xm-c-general); | ||||||
|  |   font-family: var(--xm-font-sans) !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 { | ||||||
|  |     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); | ||||||
|  |     } | ||||||
|  |     code { | ||||||
|  |       color: inherit; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   hr { | ||||||
|  |     margin: 2rem auto; | ||||||
|  |     width: 50px; | ||||||
|  |   } | ||||||
|  |   blockquote { | ||||||
|  |     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 { | ||||||
|  |         content: none; | ||||||
|  |       } | ||||||
|  |       &:first-of-type::after { | ||||||
|  |         content: none; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   &:first-child { | ||||||
|  |     margin-top: 1rem; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | .dark { | ||||||
|  |   .shiki-light { | ||||||
|  |     display: none; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | html { | ||||||
|  |   &:not(.dark) { | ||||||
|  |     .shiki-dark { | ||||||
|  |       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.2rem; | ||||||
|  |   padding-right: .5rem; | ||||||
|  |   font-size: .85rem; | ||||||
|  |   text-decoration: none; | ||||||
|  |   border: 0 !important; | ||||||
|  |   opacity: 0; | ||||||
|  |   &:hover { | ||||||
|  |     text-decoration: none; | ||||||
|  |   } | ||||||
|  |   &:focus { | ||||||
|  |     text-decoration: none; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 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; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										267
									
								
								src/scss/prose.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										267
									
								
								src/scss/prose.scss
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,267 @@ | |||||||
|  | .markdown-body, | ||||||
|  | .prose { | ||||||
|  |   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; | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										25
									
								
								src/scss/vars.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								src/scss/vars.scss
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | |||||||
|  | @use 'sass:meta' as *; | ||||||
|  |  | ||||||
|  | @use '_vars/constants'; | ||||||
|  | @use '_vars/colors'; | ||||||
|  | @use '_vars/light'; | ||||||
|  | @use '_vars/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,8 +0,0 @@ | |||||||
| // 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-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', 'Sarasa Gothic TC', 'Sarasa Gothic SC', monospace; |  | ||||||
|  |  | ||||||
| // Font defaults |  | ||||||
| $font-display: var(--xm-font-sans); |  | ||||||
| $font-code: var(--xm-font-mono); |  | ||||||
| @ -1,10 +0,0 @@ | |||||||
| // 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); |  | ||||||
| @ -1,10 +0,0 @@ | |||||||
| // 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