mirror of
https://github.com/kuohuanhuan/x-markdown-css.git
synced 2024-11-25 06:18:19 +00:00
Compare commits
50 Commits
v0.0.0-202
...
v0.0.0-202
Author | SHA1 | Date | |
---|---|---|---|
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
|
@ -1,4 +1,4 @@
|
|||||||
# Browserslist <https://browsersl.ist>
|
# Browserslist <https://browsersl.ist>
|
||||||
|
|
||||||
defaults
|
defaults
|
||||||
since 2012
|
supports css-variables
|
||||||
|
14
.github/workflows/ci.yml
vendored
14
.github/workflows/ci.yml
vendored
@ -22,12 +22,12 @@ jobs:
|
|||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: 16
|
node-version: 16
|
||||||
registry-url: https://registry.npmjs.org/
|
registry-url: https://registry.npmjs.com
|
||||||
# Step IV
|
# Step III
|
||||||
- name: Install Dependencies
|
- name: Install Dependencies
|
||||||
run: npm ci
|
run: npm ci
|
||||||
# Step V
|
# Step IV
|
||||||
- name: Lint
|
- name: Test Lint
|
||||||
run: npm run lint
|
run: npm run lint
|
||||||
# Test Build
|
# Test Build
|
||||||
build:
|
build:
|
||||||
@ -35,8 +35,8 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
node-version: [ 16, 18, latest ]
|
node-version: [16, 18, latest]
|
||||||
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
os: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
steps:
|
steps:
|
||||||
# Step I
|
# Step I
|
||||||
@ -47,7 +47,7 @@ jobs:
|
|||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: ${{ matrix.node-version }}
|
node-version: ${{ matrix.node-version }}
|
||||||
registry-url: https://registry.npmjs.org/
|
registry-url: https://registry.npmjs.com
|
||||||
# Step III
|
# Step III
|
||||||
- name: Install Dependencies
|
- name: Install Dependencies
|
||||||
run: npm ci
|
run: npm ci
|
||||||
|
4
.github/workflows/release.yml
vendored
4
.github/workflows/release.yml
vendored
@ -21,7 +21,7 @@ jobs:
|
|||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: 16
|
node-version: 16
|
||||||
registry-url: https://registry.npmjs.org/
|
registry-url: https://registry.npmjs.com
|
||||||
# Step III
|
# Step III
|
||||||
- name: Install Dependencies
|
- name: Install Dependencies
|
||||||
run: npm ci
|
run: npm ci
|
||||||
@ -30,7 +30,7 @@ jobs:
|
|||||||
run: npm run build
|
run: npm run build
|
||||||
# Step V
|
# Step V
|
||||||
- name: Publish to NPM Registry
|
- name: Publish to NPM Registry
|
||||||
uses: JS-DevTools/npm-publish@v1
|
uses: rxfork/npm-publish@v1
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.NPM_TOKEN }}
|
token: ${{ secrets.NPM_TOKEN }}
|
||||||
# Step VI
|
# Step VI
|
||||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
|||||||
node_modules/
|
node_modules/
|
||||||
|
dist/
|
||||||
|
3
.npmignore
Normal file
3
.npmignore
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
node_modules/
|
||||||
|
.github/
|
||||||
|
.vscode/
|
2
.stylelintignore
Normal file
2
.stylelintignore
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
dist/*.css
|
||||||
|
node_modules/
|
87
.stylelintrc
87
.stylelintrc
@ -1,9 +1,10 @@
|
|||||||
{
|
{
|
||||||
"extends": "stylelint-config-standard-scss",
|
"ignoreDisables": true,
|
||||||
"plugins": [
|
"extends": [
|
||||||
"stylelint-scss",
|
"stylelint-config-standard-scss",
|
||||||
"stylelint-order"
|
"stylelint-config-hudochenkov/order"
|
||||||
],
|
],
|
||||||
|
"plugins": ["stylelint-scss"],
|
||||||
"rules": {
|
"rules": {
|
||||||
"alpha-value-notation": "number",
|
"alpha-value-notation": "number",
|
||||||
"at-rule-empty-line-before": null,
|
"at-rule-empty-line-before": null,
|
||||||
@ -12,83 +13,9 @@
|
|||||||
"color-hex-case": "lower",
|
"color-hex-case": "lower",
|
||||||
"import-notation": null,
|
"import-notation": null,
|
||||||
"max-nesting-depth": 5,
|
"max-nesting-depth": 5,
|
||||||
|
"no-invalid-position-at-import-rule": null,
|
||||||
"number-leading-zero": "never",
|
"number-leading-zero": "never",
|
||||||
"property-no-vendor-prefix": true,
|
"property-no-vendor-prefix": true,
|
||||||
"rule-empty-line-before": null,
|
"rule-empty-line-before": null
|
||||||
"order/properties-alphabetical-order": null,
|
|
||||||
"order/properties-order": [
|
|
||||||
"position",
|
|
||||||
"top",
|
|
||||||
"bottom",
|
|
||||||
"right",
|
|
||||||
"left",
|
|
||||||
"display",
|
|
||||||
"align-items",
|
|
||||||
"justify-content",
|
|
||||||
"float",
|
|
||||||
"clear",
|
|
||||||
"overflow",
|
|
||||||
"overflow-x",
|
|
||||||
"overflow-y",
|
|
||||||
"margin",
|
|
||||||
"margin-top",
|
|
||||||
"margin-right",
|
|
||||||
"margin-bogttom",
|
|
||||||
"margin-left",
|
|
||||||
"padding",
|
|
||||||
"padding-top",
|
|
||||||
"padding-right",
|
|
||||||
"padding-bottom",
|
|
||||||
"padding-left",
|
|
||||||
"width",
|
|
||||||
"min-width",
|
|
||||||
"max-width",
|
|
||||||
"height",
|
|
||||||
"min-height",
|
|
||||||
"max-height",
|
|
||||||
"font-size",
|
|
||||||
"font-family",
|
|
||||||
"font-weight",
|
|
||||||
"text-align",
|
|
||||||
"text-justify",
|
|
||||||
"text-indent",
|
|
||||||
"text-overflow",
|
|
||||||
"text-decoration",
|
|
||||||
"white-space",
|
|
||||||
"color",
|
|
||||||
"background",
|
|
||||||
"background-position",
|
|
||||||
"background-repeat",
|
|
||||||
"background-size",
|
|
||||||
"background-color",
|
|
||||||
"background-clip",
|
|
||||||
"border",
|
|
||||||
"border-style",
|
|
||||||
"border-width",
|
|
||||||
"border-color",
|
|
||||||
"border-top-style",
|
|
||||||
"border-top-width",
|
|
||||||
"border-top-color",
|
|
||||||
"border-right-style",
|
|
||||||
"border-right-width",
|
|
||||||
"border-right-color",
|
|
||||||
"border-bottom-style",
|
|
||||||
"border-bottom-width",
|
|
||||||
"border-bottom-color",
|
|
||||||
"border-left-style",
|
|
||||||
"border-left-width",
|
|
||||||
"border-left-color",
|
|
||||||
"border-radius",
|
|
||||||
"opacity",
|
|
||||||
"filter",
|
|
||||||
"list-style",
|
|
||||||
"outline",
|
|
||||||
"visibility",
|
|
||||||
"z-index",
|
|
||||||
"box-shadow",
|
|
||||||
"text-shadow",
|
|
||||||
"resize",
|
|
||||||
"transition"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
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"
|
||||||
|
]
|
||||||
|
}
|
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,9 @@
|
|||||||
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 +28,23 @@ module.exports = (grunt) ->
|
|||||||
annotation: 'dist/'
|
annotation: 'dist/'
|
||||||
exp:
|
exp:
|
||||||
options:
|
options:
|
||||||
processors: [require('autoprefixer')()]
|
processors: [
|
||||||
|
require('postcss-preset-env')()
|
||||||
|
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')()
|
||||||
require('autoprefixer')()
|
require('autoprefixer')()
|
||||||
require('cssnano')(
|
require('cssnano')(preset: 'default')
|
||||||
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', [
|
||||||
grunt.registerTask('build', ['sass', 'postcss'])
|
'sass'
|
||||||
|
'postcss'
|
||||||
|
]
|
||||||
|
68
README.md
Normal file
68
README.md
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
<h1 align="center">x-markdown-css</h1>
|
||||||
|
|
||||||
|
<center>
|
||||||
|
|
||||||
|
[](https://www.npmjs.com/package/x-markdown-css)
|
||||||
|
[](https://github.com/kuohuanhuan/x-markdown-css/blob/master/package.json)
|
||||||
|
[](https://github.com/kuohuanhuan/x-markdown-css/blob/master/LICENSE)
|
||||||
|
|
||||||
|
</center>
|
||||||
|
|
||||||
|
> A simple and customizable markdown CSS stylesheet for everyone.
|
||||||
|
|
||||||
|
## Requirement
|
||||||
|
|
||||||
|
- Node.js >= 16
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm i
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
```sh
|
||||||
|
grunt build
|
||||||
|
```
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npx grunt build
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
You can use the minified CSS file with a CDN service:
|
||||||
|
|
||||||
|
- UNPKG: `https://unpkg.com/x-markdown-css@latest/dist/bundle.min.css`
|
||||||
|
- jsDelivr: `https://fastly.jsdelivr.net/npm/x-markdown-css@latest/dist/bundle.min.css`
|
||||||
|
- CDNJS: *Coming soon. **Waiting for you to make `x-markdown-css` [popular enough](https://github.com/cdnjs/packages/blob/master/CONTRIBUTING.md#policy-rules-and-guidelines)**!*
|
||||||
|
|
||||||
|
> *ps. `bundle.css` without `.min` stands for unminified version.*
|
||||||
|
|
||||||
|
## Uses
|
||||||
|
|
||||||
|
- [SCSS](https://sass-lang.com)
|
||||||
|
- [Stylelint](https://stylelint.io)
|
||||||
|
- [Grunt](https://gruntjs.com)
|
||||||
|
- [PostCSS](https://postcss.org)
|
||||||
|
- [cssnano](https://cssnano.co)
|
||||||
|
|
||||||
|
*...and much more.*
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
PRs, issues and feature requests are welcome!
|
||||||
|
Feel free to check [Issues](https://github.com/kuohuanhuan/x-markdown-css/issues) page. You can also take a look at the [Contributing Guide](https://github.com/kuohuanhuan/x-markdown-css/blob/master/CONTRIBUTING.md).
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Copyright (c) 2023 [kuohuanhuan](https://github.com/kuohuanhuan), licensed under [MIT](https://github.com/kuohuanhuan/x-markdown-css/blob/master/LICENSE).
|
1046
package-lock.json
generated
1046
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "x-markdown-css",
|
"name": "x-markdown-css",
|
||||||
"version": "0.0.0-20230228.16",
|
"version": "0.0.0-20230302.7",
|
||||||
"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",
|
||||||
@ -49,9 +49,10 @@
|
|||||||
"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",
|
"stylelint": "^15.2.0",
|
||||||
|
"stylelint-config-hudochenkov": "^9.0.0",
|
||||||
"stylelint-config-standard-scss": "^7.0.1",
|
"stylelint-config-standard-scss": "^7.0.1",
|
||||||
"stylelint-order": "^6.0.2",
|
|
||||||
"stylelint-scss": "^4.4.0"
|
"stylelint-scss": "^4.4.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
.markdown-body,
|
|
||||||
.prose {
|
|
||||||
max-width: fit-content;
|
|
||||||
font-size: 1rem;
|
|
||||||
color: var(--xm-c-general);
|
|
||||||
line-height: 1.75;
|
|
||||||
> :first-child {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
> :last-child {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,12 +1,10 @@
|
|||||||
.markdown-body {
|
.markdown-body {
|
||||||
font-family: var(--xm-font-sans) !important;
|
|
||||||
color: var(--xm-c-general);
|
color: var(--xm-c-general);
|
||||||
pre {
|
font-family: var(--xm-font-display) !important;
|
||||||
&:not(.shiki, .highlight) {
|
pre:not(.shiki, .highlight) {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.shiki,
|
.shiki,
|
||||||
.highlight {
|
.highlight {
|
||||||
@ -25,9 +23,9 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
a {
|
a {
|
||||||
|
border-bottom: 1px solid var(--xm-c-link-border);
|
||||||
font-weight: inherit;
|
font-weight: inherit;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
border-bottom: 1px solid var(--xm-c-link-border);
|
|
||||||
transition: border .3s ease-in-out;
|
transition: border .3s ease-in-out;
|
||||||
&:hover {
|
&:hover {
|
||||||
border-bottom: 1px solid var(--xm-c-general);
|
border-bottom: 1px solid var(--xm-c-general);
|
||||||
@ -37,10 +35,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
hr {
|
hr {
|
||||||
margin: 2rem auto;
|
|
||||||
width: 50px;
|
width: 50px;
|
||||||
|
margin: 2rem auto;
|
||||||
}
|
}
|
||||||
blockquote {
|
blockquote,
|
||||||
|
q {
|
||||||
padding: .6rem 1.2rem;
|
padding: .6rem 1.2rem;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
@ -54,11 +53,9 @@
|
|||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
p {
|
p:first-of-type {
|
||||||
&:first-of-type::before {
|
&::before,
|
||||||
content: none;
|
&::after {
|
||||||
}
|
|
||||||
&:first-of-type::after {
|
|
||||||
content: none;
|
content: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -67,12 +64,10 @@
|
|||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
html:not(.dark) .shiki-dark,
|
||||||
.dark .shiki-light {
|
.dark .shiki-light {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
html:not(.dark) .shiki-dark {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.item {
|
.item {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
opacity: .6;
|
opacity: .6;
|
||||||
@ -84,29 +79,24 @@ html:not(.dark) .shiki-dark {
|
|||||||
.header-anchor {
|
.header-anchor {
|
||||||
float: left;
|
float: left;
|
||||||
margin-top: .125rem;
|
margin-top: .125rem;
|
||||||
margin-left: -1.2rem;
|
margin-left: -1.25rem;
|
||||||
padding-right: .5rem;
|
padding-right: .5rem;
|
||||||
font-size: .85rem;
|
|
||||||
text-decoration: none;
|
|
||||||
border: 0 !important;
|
border: 0 !important;
|
||||||
|
font-size: .875rem;
|
||||||
|
text-decoration: none;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
&:hover {
|
&:hover,
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
&:focus {
|
&:focus {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
h1,
|
@for $i from 1 through 6 {
|
||||||
h2,
|
h#{$i} {
|
||||||
h3,
|
&:hover,
|
||||||
h4,
|
&:focus {
|
||||||
h5,
|
.header-anchor {
|
||||||
h6 {
|
opacity: .5;
|
||||||
&:hover,
|
}
|
||||||
&:focus {
|
|
||||||
.header-anchor {
|
|
||||||
opacity: .5;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
1
src/scss/partials/_all.scss
Normal file
1
src/scss/partials/_all.scss
Normal file
@ -0,0 +1 @@
|
|||||||
|
@import 'title', 'text', 'link', 'code', 'quote', 'figure', 'list', 'table', 'media';
|
6
src/scss/partials/_container.scss
Normal file
6
src/scss/partials/_container.scss
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
@mixin container {
|
||||||
|
max-width: fit-content;
|
||||||
|
color: var(--xm-c-general);
|
||||||
|
font-size: 1rem;
|
||||||
|
line-height: 1.75;
|
||||||
|
}
|
@ -1,33 +1,33 @@
|
|||||||
code {
|
code {
|
||||||
font-size: .875rem;
|
|
||||||
font-weight: 600;
|
|
||||||
color: var(--xm-c-dark);
|
color: var(--xm-c-dark);
|
||||||
&::before, &::after {
|
font-weight: 600;
|
||||||
|
font-size: .875rem;
|
||||||
|
font-family: var(--xm-font-mono);
|
||||||
|
&::before,
|
||||||
|
&::after {
|
||||||
content: '`';
|
content: '`';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pre {
|
pre {
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
margin-top: 1.7143rem;
|
margin-top: 1.75rem;
|
||||||
padding-top: .8571rem, 1.1429rem;
|
margin-bottom: 1.75rem;
|
||||||
font-size: .875rem;
|
padding-top: .875rem, 1.15rem;
|
||||||
color: var(--xm-c-pre);
|
|
||||||
line-height: 1.7143;
|
|
||||||
margin-bottom: 1.7143rem;
|
|
||||||
border-radius: .375rem;
|
border-radius: .375rem;
|
||||||
|
color: var(--xm-c-pre);
|
||||||
|
font-size: .875rem;
|
||||||
|
line-height: 1.75;
|
||||||
code {
|
code {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
font-size: inherit;
|
|
||||||
font-family: inherit;
|
|
||||||
font-weight: 400;
|
|
||||||
color: inherit;
|
|
||||||
background: transparent;
|
|
||||||
border-width: 0;
|
border-width: 0;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
|
background: transparent;
|
||||||
|
color: inherit;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: inherit;
|
||||||
|
font-family: inherit;
|
||||||
line-height: inherit;
|
line-height: inherit;
|
||||||
&::before {
|
&::before,
|
||||||
content: none;
|
|
||||||
}
|
|
||||||
&::after {
|
&::after {
|
||||||
content: none;
|
content: none;
|
||||||
}
|
}
|
@ -2,10 +2,10 @@ figure {
|
|||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
figcaption {
|
figcaption {
|
||||||
margin-top: .8571rem;
|
margin-top: .875rem;
|
||||||
font-size: .875rem;
|
|
||||||
color: var(--xm-c-figcaption);
|
color: var(--xm-c-figcaption);
|
||||||
line-height: 1.4286;
|
font-size: .875rem;
|
||||||
|
line-height: 1.45;
|
||||||
}
|
}
|
||||||
> * {
|
> * {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
@ -1,7 +1,7 @@
|
|||||||
a {
|
a {
|
||||||
|
color: var(--xm-c-darker);
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color: var(--xm-c-darker);
|
|
||||||
code {
|
code {
|
||||||
color: var(--xm-c-code);
|
color: var(--xm-c-code);
|
||||||
}
|
}
|
@ -13,8 +13,8 @@ ol {
|
|||||||
content: counter(list-item, decimal) '.';
|
content: counter(list-item, decimal) '.';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
font-weight: 400;
|
|
||||||
color: var(--xm-c-ol-counter);
|
color: var(--xm-c-ol-counter);
|
||||||
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -28,12 +28,12 @@ ul {
|
|||||||
&::before {
|
&::before {
|
||||||
content: '';
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: calc(.875rem - .1875rem);
|
top: .675rem;
|
||||||
left: .25rem;
|
left: .25rem;
|
||||||
width: .375rem;
|
width: .375rem;
|
||||||
height: .375rem;
|
height: .375rem;
|
||||||
background-color: var(--xm-c-ul-counter);
|
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
|
background-color: var(--xm-c-ul-counter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,14 +1,13 @@
|
|||||||
blockquote,
|
blockquote,
|
||||||
q {
|
q {
|
||||||
margin-top: 1.6rem;
|
margin-top: 1.65rem;
|
||||||
|
margin-bottom: 1.65rem;
|
||||||
padding-left: 1rem;
|
padding-left: 1rem;
|
||||||
|
border-left: .25rem solid var(--xm-c-quote-border);
|
||||||
|
color: inherit;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
color: inherit;
|
|
||||||
border-color: var(--xm-c-blockquote-color);
|
|
||||||
border-left-width: .25rem;
|
|
||||||
quotes: '\201C''\201D''\2018''\2019';
|
quotes: '\201C''\201D''\2018''\2019';
|
||||||
margin-bottom: 1.6rem;
|
|
||||||
p {
|
p {
|
||||||
&:first-of-type::before {
|
&:first-of-type::before {
|
||||||
content: open-quote;
|
content: open-quote;
|
@ -1,22 +1,20 @@
|
|||||||
table {
|
table {
|
||||||
|
width: 100%;
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
width: 100%;
|
|
||||||
table-layout: auto;
|
table-layout: auto;
|
||||||
font-size: .875rem;
|
font-size: .875rem;
|
||||||
|
line-height: 1.75;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
line-height: 1.7143;
|
|
||||||
}
|
}
|
||||||
thead {
|
thead {
|
||||||
font-weight: 600;
|
|
||||||
color: var(--xm-c-thead);
|
|
||||||
border-bottom-width: 1px;
|
border-bottom-width: 1px;
|
||||||
border-bottom-color: var(--xm-c-thead-border);
|
border-bottom-color: var(--xm-c-thead-border);
|
||||||
|
color: var(--xm-c-thead);
|
||||||
|
font-weight: 600;
|
||||||
th {
|
th {
|
||||||
vertical-align: bottom;
|
vertical-align: bottom;
|
||||||
padding-right: .5714rem;
|
padding-left: auto .575rem .575rem;
|
||||||
padding-bottom: .5714rem;
|
|
||||||
padding-left: .5714rem;
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
}
|
}
|
||||||
@ -35,7 +33,7 @@ tbody {
|
|||||||
}
|
}
|
||||||
td {
|
td {
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
padding: .5714rem;
|
padding: .575rem;
|
||||||
&:first-child {
|
&:first-child {
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
}
|
}
|
@ -3,8 +3,8 @@ p {
|
|||||||
margin-bottom: 1.25rem;
|
margin-bottom: 1.25rem;
|
||||||
}
|
}
|
||||||
strong {
|
strong {
|
||||||
font-weight: 600;
|
|
||||||
color: var(--xm-c-dark);
|
color: var(--xm-c-dark);
|
||||||
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
b {
|
b {
|
||||||
color: var(--xm-c-dark);
|
color: var(--xm-c-dark);
|
@ -1,18 +1,18 @@
|
|||||||
h1 {
|
h1 {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
margin-bottom: .8889rem;
|
margin-bottom: .875rem;
|
||||||
font-size: 2.25rem;
|
|
||||||
font-weight: 800;
|
|
||||||
color: var(--xm-c-darker);
|
color: var(--xm-c-darker);
|
||||||
line-height: 1.1111;
|
font-weight: 800;
|
||||||
|
font-size: 2.25rem;
|
||||||
|
line-height: 1.15;
|
||||||
}
|
}
|
||||||
h2 {
|
h2 {
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
font-size: 1.5rem;
|
|
||||||
font-weight: 700;
|
|
||||||
color: var(--xm-c-dark);
|
|
||||||
margin-bottom: 1rem;
|
margin-bottom: 1rem;
|
||||||
line-height: 1.3334;
|
color: var(--xm-c-dark);
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
line-height: 1.35;
|
||||||
code {
|
code {
|
||||||
font-size: .875rem;
|
font-size: .875rem;
|
||||||
}
|
}
|
||||||
@ -22,10 +22,10 @@ h2 {
|
|||||||
}
|
}
|
||||||
h3 {
|
h3 {
|
||||||
margin-top: 1.6rem;
|
margin-top: 1.6rem;
|
||||||
font-size: 1.25rem;
|
|
||||||
font-weight: 600;
|
|
||||||
color: inherit;
|
|
||||||
margin-bottom: .6rem;
|
margin-bottom: .6rem;
|
||||||
|
color: inherit;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 1.25rem;
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
opacity: .7;
|
opacity: .7;
|
||||||
code {
|
code {
|
||||||
@ -37,9 +37,9 @@ h3 {
|
|||||||
}
|
}
|
||||||
h4 {
|
h4 {
|
||||||
margin-top: 1.5rem;
|
margin-top: 1.5rem;
|
||||||
font-weight: 600;
|
|
||||||
color: inherit;
|
|
||||||
margin-bottom: .5rem;
|
margin-bottom: .5rem;
|
||||||
|
color: inherit;
|
||||||
|
font-weight: 600;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
+ * {
|
+ * {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
@ -47,17 +47,17 @@ h4 {
|
|||||||
}
|
}
|
||||||
h5,
|
h5,
|
||||||
h6 {
|
h6 {
|
||||||
text-transform: uppercase;
|
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
opacity: .5;
|
|
||||||
letter-spacing: 2px;
|
letter-spacing: 2px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
opacity: .5;
|
||||||
}
|
}
|
||||||
hr {
|
hr {
|
||||||
margin-top: 3rem;
|
margin-top: 3rem;
|
||||||
border-color: var(--xm-c-hr-border);
|
|
||||||
margin-bottom: 3rem;
|
margin-bottom: 3rem;
|
||||||
|
border-color: var(--xm-c-hr-border);
|
||||||
+ * {
|
+ * {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
}
|
}
|
@ -1,14 +1,6 @@
|
|||||||
@use '_partial/container' as *;
|
@use 'partials/container' as *;
|
||||||
|
|
||||||
.markdown-body,
|
|
||||||
.prose {
|
.prose {
|
||||||
@import '_partial/title';
|
@include container;
|
||||||
@import '_partial/text';
|
@import 'partials/all';
|
||||||
@import '_partial/link';
|
|
||||||
@import '_partial/code';
|
|
||||||
@import '_partial/quote';
|
|
||||||
@import '_partial/figure';
|
|
||||||
@import '_partial/list';
|
|
||||||
@import '_partial/table';
|
|
||||||
@import '_partial/media';
|
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
$shiki-light: #f8f8f8;
|
$shiki-light: #f8f8f8;
|
||||||
$shiki-dark: #0e0e0e;
|
$shiki-dark: #0e0e0e;
|
||||||
$link-border: hsla(0deg 0% 50% / .3);
|
$link-border: hsla(0deg 0 50% / .3);
|
||||||
$code: #111827;
|
$code: #111827;
|
||||||
$ol-counter: #6b7280;
|
$ol-counter: #6b7280;
|
||||||
$ul-counter: #d1d5db;
|
$ul-counter: #d1d5db;
|
||||||
$hr-border: hsla(0deg 0% 50% / .3);
|
$hr-border: hsla(0deg 0 50% / .3);
|
||||||
$blockquote-border: hsla(0deg 0% 50% / .3);
|
$quote-border: hsla(0deg 0 50% / .3);
|
||||||
$figcaption: #6b7280;
|
$figcaption: #6b7280;
|
||||||
$pre: #e5e7eb;
|
$pre: #e5e7eb;
|
||||||
$thead: #111827;
|
$thead: #111827;
|
@ -1,2 +1,5 @@
|
|||||||
$font-sans: 'Open Sans', 'Inter', 'Roboto', 'Helvetica', 'Arial', 'Sarasa Gothic TC', 'Sarasa Gothic SC', 'Noto Sans TC', 'Noto Sans SC', 'Microsoft JhengHei', 'Microsoft YaHei', -apple-system, sans-serif;
|
$font-sans: 'Open Sans', 'Inter', 'Roboto', 'Helvetica', 'Arial', 'Sarasa Gothic TC', 'Sarasa Gothic SC', 'Noto Sans TC', 'Noto Sans SC', 'Microsoft JhengHei', 'Microsoft YaHei', -apple-system, sans-serif;
|
||||||
|
$font-serif: 'Merriweather', 'Georgia', 'Times New Roman', 'Times', 'Source Han Serif Traditional Chinese', 'Source Han Serif Simplified Chinese', 'Noto Serif TC', 'Noto Serif SC', serif;
|
||||||
$font-mono: 'DM Mono', 'Fira Code', 'Jetbrains Mono', 'Input Mono', 'Menlo', 'MesloLGS NF', 'Ubuntu', monospace;
|
$font-mono: 'DM Mono', 'Fira Code', 'Jetbrains Mono', 'Input Mono', 'Menlo', 'MesloLGS NF', 'Ubuntu', monospace;
|
||||||
|
|
||||||
|
$font-display: var(--xm-font-sans);
|
@ -1,9 +1,9 @@
|
|||||||
@use 'sass:meta' as *;
|
@use 'sass:meta' as *;
|
||||||
|
|
||||||
@use '_vars/constants';
|
@use 'variables/constants';
|
||||||
@use '_vars/colors';
|
@use 'variables/colors';
|
||||||
@use '_vars/light';
|
@use 'variables/light';
|
||||||
@use '_vars/dark';
|
@use 'variables/dark';
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
@each $name, $val in module-variables('constants') {
|
@each $name, $val in module-variables('constants') {
|
||||||
|
Reference in New Issue
Block a user