mirror of
https://github.com/kuohuanhuan/x-markdown-css.git
synced 2024-11-25 06:18:19 +00:00
Compare commits
208 Commits
v0.0.0-202
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
1d230d4ac1 | ||
|
3110d29930 | ||
|
64d662fed5 | ||
|
ed6a3c3ca0 | ||
|
9d497f2275 | ||
|
0d773c7326 | ||
|
749fb990d0 | ||
|
7da9b03074 | ||
|
cdeda6c8b6 | ||
|
1b2447b840 | ||
|
8ea3e896f4 | ||
|
9d987a5ae7 | ||
|
c77d5b62fd | ||
|
3df525d608 | ||
|
7114e9018c | ||
|
801a92cd17 | ||
d832da0526 | |||
|
f41596ab69 | ||
|
84d148254e | ||
|
925c909fff | ||
|
cd6192a413 | ||
|
5dcf1d6d8d | ||
|
6deb3d86ef | ||
|
48d9671f65 | ||
|
3a7f38d21c | ||
|
cbea6295e8 | ||
132eb4ff72 | |||
4a9dbe84aa | |||
|
ba95b90714 | ||
6b4fd5f2c5 | |||
c8bc7d3438 | |||
b44d47b14f | |||
5fcbb64413 | |||
0af430670a | |||
47e16ecde7 | |||
bf04be0379 | |||
b43013e33e | |||
0f50a7c98d | |||
f4d95387c3 | |||
42967ea775 | |||
b4d1423d37 | |||
008564db1b | |||
21de988cb9 | |||
5568aa278f | |||
919ebfaf39 | |||
458b495b44 | |||
ff23b42eec | |||
32be4bf51a | |||
ce94858f01 | |||
6c0c7e7624 | |||
10ae6dc593 | |||
28fcbf66a8 | |||
e9264bfa01 | |||
0e6c171424 | |||
d45e09d7bf | |||
eb2e5f532a | |||
2e99e64a3e | |||
877ea710d6 | |||
df63212d6d | |||
ee89b96068 | |||
63a6fc2072 | |||
e54282e5f8 | |||
2b9619f2e2 | |||
2cb60cc6c4 | |||
beedb0e803 | |||
77e57fe3ae | |||
5f45d99381 | |||
936615f48c | |||
06f383891e | |||
e7b3d3eb8d | |||
7ffabe53bd | |||
95a1576179 | |||
cfa79e400a | |||
39c543c7f6 | |||
b383912f30 | |||
74a4cda9d3 | |||
13a8c92ebe | |||
7e5821b10d | |||
a365317c85 | |||
213ea5f44f | |||
5ee77990a6 | |||
59745590c2 | |||
17631306a8 | |||
d8f3f549dc | |||
f988a9dddb | |||
3f5fc5f93b | |||
1b2245bab9 | |||
7b50254f83 | |||
5f9424617e | |||
f169a6c49a | |||
ba62d6e364 | |||
d7c5188b7d | |||
de8b9d621c | |||
8bb74891ce | |||
d33f046030 | |||
bd8d8822e5 | |||
d9678940f2 | |||
706720b8fe | |||
ff06dee900 | |||
80ccac3dd1 | |||
229680ca85 | |||
e3fcf96559 | |||
c77fbd21ae | |||
a4f5996f04 | |||
cb009147b9 | |||
188ac468fd | |||
24056e42d5 | |||
274fc0fb31 | |||
e83212e00f | |||
40a50968ed | |||
1a62e1258e | |||
648738b890 | |||
7dc2238fdf | |||
65b4b24002 | |||
94e8477077 | |||
4bbc199636 | |||
fd57e4bc4f | |||
ab38a24a75 | |||
93e2f86137 | |||
e622185bbf | |||
78cf02d7b8 | |||
eba9d56ae6 | |||
2da4f4deb2 | |||
cd9ecdfed3 | |||
9bf22aa5bd | |||
e6718acc37 | |||
15ef37c0d2 | |||
6fd50e0707 | |||
8da53d8cde | |||
decfa2c47c | |||
58317f99cb | |||
a3f9084a2e | |||
26d5c7966f | |||
296bf3016e | |||
a40c973e46 | |||
29b45f6a7f | |||
c2bd2cb722 | |||
bd2f74a3b2 | |||
d69a4ea949 | |||
95de198e34 | |||
782b6f24e2 | |||
f967cc6bad | |||
32058aa5d3 | |||
02d03e7633 | |||
2042d6be41 | |||
e90679a4ac | |||
9a81468182 | |||
ec673759d2 | |||
f68921d9d0 | |||
ae19499146 | |||
7ab2bd67ea | |||
a307ac8851 | |||
58d893bc24 | |||
e13c83de24 | |||
3ddc662741 | |||
17c8caaa11 | |||
7684e092da | |||
5b0584ce4b | |||
a3f3100f2c | |||
ea73260661 | |||
51046f4088 | |||
a7492b1975 | |||
6179dc8634 | |||
941e73a889 | |||
af46b8e083 | |||
e2aeb767cd | |||
6616b76811 | |||
8be8e8793e | |||
2aa806938e | |||
ebac47e0d7 | |||
61079f3627 | |||
e9c955a8f1 | |||
3db644fa05 | |||
ca1ccd9b4b | |||
f9ffa18565 | |||
0dc71d9a54 | |||
5fc2c0a068 | |||
aa8823c6eb | |||
61b7e4ef05 | |||
cc6bea29ef | |||
d95065f5d2 | |||
1bb7e502ac | |||
de50484e3b | |||
6fbb266d10 | |||
4bc0772d38 | |||
3728e8325a | |||
016746659a | |||
2626938bc7 | |||
2212a48426 | |||
f0965419e6 | |||
de1f09bce4 | |||
c6ca99239e | |||
c0d2969d87 | |||
2ffbf81303 | |||
865a3d89d7 | |||
51f21ee9a7 | |||
9572add1e3 | |||
5f27d24ca8 | |||
6fbe988073 | |||
fe0e9dfb8a | |||
95bbde7a39 | |||
90657b2193 | |||
539d3943fb | |||
fbdcc3b479 | |||
945b2facaf | |||
abca0765ca | |||
a6fa7a2746 | |||
7610344f37 |
@ -1,4 +1,4 @@
|
|||||||
# Browserslist <https://browsersl.ist>
|
# Browserslist <https://browsersl.ist>
|
||||||
|
|
||||||
defaults
|
defaults
|
||||||
since 2012
|
supports css-variables
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
# EditorConfig <http://editorconfig.org>
|
||||||
|
|
||||||
root = true
|
root = true
|
||||||
|
|
||||||
[*]
|
[*]
|
||||||
|
71
.github/workflows/ci.yml
vendored
Normal file
71
.github/workflows/ci.yml
vendored
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
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
34
.github/workflows/release.yaml
vendored
@ -1,34 +0,0 @@
|
|||||||
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
Normal file
68
.github/workflows/release.yml
vendored
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
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/
|
||||||
|
4
.npmignore
Normal file
4
.npmignore
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
build.tar.gz
|
||||||
|
node_modules/
|
||||||
|
.github/
|
||||||
|
.vscode/
|
2
.stylelintignore
Normal file
2
.stylelintignore
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
dist/*.css
|
||||||
|
node_modules/
|
4
.stylelintrc
Normal file
4
.stylelintrc
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"ignoreDisables": true,
|
||||||
|
"extends": "@kuohuanhuan/stylelint-config"
|
||||||
|
}
|
7
.vscode/extensions.json
vendored
Normal file
7
.vscode/extensions.json
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"editorconfig.editorconfig",
|
||||||
|
"stylelint.vscode-stylelint",
|
||||||
|
"ecmel.vscode-html-css"
|
||||||
|
]
|
||||||
|
}
|
5
.vscode/settings.json
vendored
5
.vscode/settings.json
vendored
@ -1,3 +1,6 @@
|
|||||||
{
|
{
|
||||||
"cSpell.enabled": false
|
"cSpell.enabled": false,
|
||||||
|
"stylelint.enable": true,
|
||||||
|
"stylelint.configFile": ".stylelintrc",
|
||||||
|
"workbench.colorCustomizations": {}
|
||||||
}
|
}
|
||||||
|
26
CONTRIBUTING.md
Normal file
26
CONTRIBUTING.md
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# 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,7 +1,8 @@
|
|||||||
module.exports = (grunt) ->
|
module.exports = (grunt) ->
|
||||||
require('load-grunt-tasks')(grunt)
|
# Load Grunt Tasks
|
||||||
|
require('load-grunt-tasks') grunt
|
||||||
grunt.initConfig(
|
# Project Configuration
|
||||||
|
grunt.initConfig
|
||||||
# NPM Package Declare
|
# NPM Package Declare
|
||||||
pkg: grunt.file.readJSON('package.json')
|
pkg: grunt.file.readJSON('package.json')
|
||||||
# Sass Compile
|
# Sass Compile
|
||||||
@ -26,19 +27,31 @@ module.exports = (grunt) ->
|
|||||||
annotation: 'dist/'
|
annotation: 'dist/'
|
||||||
exp:
|
exp:
|
||||||
options:
|
options:
|
||||||
processors: [require('autoprefixer')()]
|
processors: [
|
||||||
|
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('autoprefixer')()
|
require('postcss-preset-env')(
|
||||||
require('cssnano')(
|
features:
|
||||||
preset: 'default'
|
'custom-properties': false
|
||||||
)
|
)
|
||||||
|
require('autoprefixer')()
|
||||||
|
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'
|
||||||
|
]
|
||||||
|
|
||||||
grunt.registerTask('build', ['sass', 'postcss'])
|
# Authored by @kuohuanhuan.
|
||||||
|
21
LICENSE
Normal file
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2023 kuohuanhuan and other contributors
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
74
README.md
Normal file
74
README.md
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
<h1 align="center">x-markdown-css</h1>
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> I am working on a new CSS styling library, so `x-markdown-css` is deprecated.
|
||||||
|
> PS. Sass dev team supports Palestine Hamas. **I am dropping it.**
|
||||||
|
|
||||||
|
<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).
|
3825
package-lock.json
generated
3825
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
31
package.json
31
package.json
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "x-markdown-css",
|
"name": "x-markdown-css",
|
||||||
"version": "0.0.0-20230228.5",
|
"version": "0.1.6",
|
||||||
"description": "A simple and customizable Markdown CSS for everyone.",
|
"description": "A simple and customizable markdown CSS stylesheet for everyone.",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"markdown",
|
"markdown",
|
||||||
"css",
|
"css",
|
||||||
@ -16,34 +16,47 @@
|
|||||||
"article",
|
"article",
|
||||||
"documentation"
|
"documentation"
|
||||||
],
|
],
|
||||||
"main": "index.js",
|
"main": "dist/bundle.min.css",
|
||||||
|
"style": "dist/bundle.min.css",
|
||||||
|
"sass": "src/index.scss",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/kuohuanhuan/x-markdown-css.git"
|
"url": "git+https://github.com/kuohuanhuan/x-markdown-css.git"
|
||||||
},
|
},
|
||||||
"author": "kuohuanhuan",
|
"author": {
|
||||||
|
"name": "kuohuanhuan",
|
||||||
|
"email": "hi@nekohuan.cyou",
|
||||||
|
"url": "https://nekohuan.cyou"
|
||||||
|
},
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/kuohuanhuan/x-markdown-css/issues"
|
"url": "https://github.com/kuohuanhuan/x-markdown-css/issues"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/kuohuanhuan/x-markdown-css#readme",
|
"homepage": "https://github.com/kuohuanhuan/x-markdown-css#readme",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14"
|
"node": ">=16"
|
||||||
},
|
},
|
||||||
"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",
|
||||||
"coffeescript": "^2.7.0",
|
"bumpp": "^9.0.0",
|
||||||
"cssnano": "^5.1.15",
|
"cssnano": "^6.0.0",
|
||||||
"grunt": "^1.6.1",
|
"grunt": "^1.6.1",
|
||||||
"grunt-sass": "^3.1.0",
|
"grunt-sass": "^3.1.0",
|
||||||
"load-grunt-tasks": "^5.1.0",
|
"load-grunt-tasks": "^5.1.0",
|
||||||
"postcss": "^8.4.21"
|
"postcss": "^8.4.21",
|
||||||
|
"postcss-preset-env": "^8.0.1",
|
||||||
|
"stylelint": "^15.2.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
7
src/_content.scss
Normal file
7
src/_content.scss
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
@use 'sass:meta';
|
||||||
|
@use 'partials/container';
|
||||||
|
|
||||||
|
.markdown-body {
|
||||||
|
@include container.container;
|
||||||
|
@include meta.load-css('partials/all');
|
||||||
|
}
|
22
src/_vars.scss
Normal file
22
src/_vars.scss
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
@use 'sass:meta';
|
||||||
|
@use 'variables/constants';
|
||||||
|
@use 'variables/modes/light';
|
||||||
|
@use 'variables/modes/dark';
|
||||||
|
|
||||||
|
:root {
|
||||||
|
@each $name, $val in meta.module-variables('constants') {
|
||||||
|
--xm-#{$name}: #{$val};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-body {
|
||||||
|
@each $name, $val in meta.module-variables('light') {
|
||||||
|
--xm-c-#{$name}: #{$val};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark .markdown-body {
|
||||||
|
@each $name, $val in meta.module-variables('dark') {
|
||||||
|
--xm-c-#{$name}: #{$val};
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,2 @@
|
|||||||
@use 'scss/vars' as *;
|
@use 'vars';
|
||||||
|
@use 'content';
|
||||||
@import 'scss/markdown';
|
|
||||||
@import 'scss/prose';
|
|
||||||
|
9
src/partials/_all.scss
Normal file
9
src/partials/_all.scss
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
@forward 'title';
|
||||||
|
@forward 'text';
|
||||||
|
@forward 'link';
|
||||||
|
@forward 'code';
|
||||||
|
@forward 'quote';
|
||||||
|
@forward 'figure';
|
||||||
|
@forward 'list';
|
||||||
|
@forward 'table';
|
||||||
|
@forward 'media';
|
10
src/partials/_container.scss
Normal file
10
src/partials/_container.scss
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
@mixin container {
|
||||||
|
max-width: fit-content;
|
||||||
|
color: var(--xm-c-regular);
|
||||||
|
font-size: 1rem;
|
||||||
|
font-family: var(--xm-font-display) !important;
|
||||||
|
line-height: 1.75;
|
||||||
|
&:first-child {
|
||||||
|
margin-top: 1rem;
|
||||||
|
}
|
||||||
|
}
|
42
src/partials/code.scss
Normal file
42
src/partials/code.scss
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
14
src/partials/figure.scss
Normal file
14
src/partials/figure.scss
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
19
src/partials/link.scss
Normal file
19
src/partials/link.scss
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
a {
|
||||||
|
border-bottom: 1px solid var(--xm-c-border);
|
||||||
|
color: var(--xm-c-deeper);
|
||||||
|
font-weight: 500;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: border .3s ease-in-out;
|
||||||
|
code {
|
||||||
|
color: var(--xm-c-deep);
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
border-bottom: 1px solid var(--xm-c-regular);
|
||||||
|
}
|
||||||
|
&:not([href]) {
|
||||||
|
border-bottom: none;
|
||||||
|
color: inherit;
|
||||||
|
font-weight: normal;
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
}
|
49
src/partials/list.scss
Normal file
49
src/partials/list.scss
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
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;
|
||||||
|
}
|
17
src/partials/media.scss
Normal file
17
src/partials/media.scss
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
img {
|
||||||
|
display: block;
|
||||||
|
max-width: 92%;
|
||||||
|
margin: 1rem auto;
|
||||||
|
border-radius: .2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
video {
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
iframe {
|
||||||
|
display: flex;
|
||||||
|
width: 92%;
|
||||||
|
margin: auto;
|
||||||
|
border-radius: .2rem;
|
||||||
|
}
|
29
src/partials/quote.scss
Normal file
29
src/partials/quote.scss
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
19
src/partials/table.scss
Normal file
19
src/partials/table.scss
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
table {
|
||||||
|
overflow: auto;
|
||||||
|
width: 100%;
|
||||||
|
border-spacing: 0;
|
||||||
|
border-collapse: collapse;
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
padding: 6px 13px;
|
||||||
|
border: 1.5px solid var(--xm-c-border-table);
|
||||||
|
}
|
||||||
|
thead th {
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
tbody tr {
|
||||||
|
&:hover {
|
||||||
|
background-color: var(--xm-c-shallowest);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
17
src/partials/text.scss
Normal file
17
src/partials/text.scss
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
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;
|
||||||
|
}
|
97
src/partials/title.scss
Normal file
97
src/partials/title.scss
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,13 +0,0 @@
|
|||||||
$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;
|
|
@ -1,2 +0,0 @@
|
|||||||
$font-sans: 'Open Sans', 'Noto Sans TC', 'Inter', 'Roboto', 'Helvetica', 'Arial', 'Microsoft JhengHei', 'Microsoft YaHei', sans-serif;
|
|
||||||
$font-monospace: 'DM Mono', 'Fira Code', 'Jetbrains Mono', 'Input Mono', 'Ubuntu', monospace;
|
|
@ -1,3 +0,0 @@
|
|||||||
$general: #bbb;
|
|
||||||
$dark: #ddd;
|
|
||||||
$darker: #fff;
|
|
@ -1,3 +0,0 @@
|
|||||||
$general: #555;
|
|
||||||
$dark: #222;
|
|
||||||
$darker: #000;
|
|
@ -1,177 +0,0 @@
|
|||||||
.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-monospace) !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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.itrem {
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,267 +0,0 @@
|
|||||||
.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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
@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};
|
|
||||||
}
|
|
||||||
}
|
|
8
src/variables/_constants.scss
Normal file
8
src/variables/_constants.scss
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
// Font stack
|
||||||
|
$font-sans: 'Open Sans', 'Inter', 'Roboto', 'Helvetica', 'Arial', 'Sarasa Gothic TC', 'Sarasa Gothic SC', 'Noto Sans TC', 'Noto Sans SC', 'Microsoft JhengHei', 'Microsoft YaHei', -apple-system, sans-serif;
|
||||||
|
$font-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);
|
10
src/variables/modes/_dark.scss
Normal file
10
src/variables/modes/_dark.scss
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
// Dark mode
|
||||||
|
|
||||||
|
$shallowest: #212121;
|
||||||
|
$shallower: #555;
|
||||||
|
$shallow: #777;
|
||||||
|
$regular: #bbb;
|
||||||
|
$deep: #ddd;
|
||||||
|
$deeper: #fff;
|
||||||
|
$border: hsla(0deg 0% 75% / .35);
|
||||||
|
$border-table: hsla(0deg 0% 40% / .75);
|
10
src/variables/modes/_light.scss
Normal file
10
src/variables/modes/_light.scss
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
// Light mode
|
||||||
|
|
||||||
|
$shallowest: #f8f8f8;
|
||||||
|
$shallower: #ddd;
|
||||||
|
$shallow: #bbb;
|
||||||
|
$regular: #555;
|
||||||
|
$deep: #222;
|
||||||
|
$deeper: #000;
|
||||||
|
$border: hsla(0deg 0% 50% / .35);
|
||||||
|
$border-table: hsla(0deg 0% 50% / .5);
|
Loading…
x
Reference in New Issue
Block a user