1
0
mirror of https://github.com/kuohuanhuan/x-markdown-css.git synced 2024-11-25 06:18:19 +00:00

Compare commits

...

57 Commits

Author SHA1 Message Date
458b495b44 chore: release v0.1.1 2023-03-07 19:53:37 +08:00
ff23b42eec feat(title): improve .header-anchor display effect 2023-03-07 19:47:52 +08:00
32be4bf51a refactor: use @forward instead of @use in _all.scss 2023-03-07 18:57:50 +08:00
ce94858f01 feat(code): add specify styles for code blocks 2023-03-07 18:56:37 +08:00
6c0c7e7624 fix(code): remove Shiki integration 2023-03-07 18:38:01 +08:00
10ae6dc593 chore: release v0.1.0 2023-03-06 22:16:47 +08:00
28fcbf66a8 chore(ci): use Node.js version lts/* at lint and release 2023-03-06 22:12:09 +08:00
e9264bfa01 chore(lint): use @kuohuanhuan/stylelint-config as Stylelint config 2023-03-06 22:07:19 +08:00
0e6c171424 chore(package): standardize author field in package.json 2023-03-06 19:43:44 +08:00
d45e09d7bf chore(ci): add lts/* to node-version in CI 2023-03-05 19:53:39 +08:00
eb2e5f532a chore(ci): rename Build and Release to Release 2023-03-05 19:39:45 +08:00
2e99e64a3e refactor(colors)!: rename $link-border to $a-border 2023-03-05 18:15:14 +08:00
877ea710d6 chore(ci): only run lint and build when specified files modified 2023-03-05 18:09:07 +08:00
df63212d6d chore(ci): use windows-2022 to create releases [skip actions] 2023-03-05 17:52:14 +08:00
ee89b96068 fix(code)!: respect shiki themes 2023-03-05 17:43:16 +08:00
63a6fc2072 refactor!: deprecate .prose class and lint 2023-03-05 17:39:51 +08:00
e54282e5f8 docs(readme): move documentation to Wiki 2023-03-05 17:14:04 +08:00
2b9619f2e2 refactor: migrate to modern module system 2023-03-05 15:00:12 +08:00
2cb60cc6c4 fix(markdown): remove invalid .highlight class 2023-03-05 13:55:52 +08:00
beedb0e803 docs(readme): remove unnecessary remark 2023-03-05 12:46:14 +08:00
77e57fe3ae chore: release v0.0.5 2023-03-05 12:33:18 +08:00
5f45d99381 Due to a restrict of npm, we cannot override the 0.0.3 version. 2023-03-05 12:33:00 +08:00
936615f48c chore: release v0.0.3 2023-03-04 22:54:05 +08:00
06f383891e docs(readme): use shorthand link with CDN 2023-03-04 22:48:59 +08:00
e7b3d3eb8d chore(package.json): add main value to support CDN services 2023-03-04 22:36:48 +08:00
7ffabe53bd revert: de8b9d621c [skip actions] 2023-03-04 19:51:29 +08:00
95a1576179 feat(fonts): add Sarasa Gothic to monospace font fallback 2023-03-04 19:13:56 +08:00
cfa79e400a chore: release v0.0.2 2023-03-04 18:55:23 +08:00
39c543c7f6 docs(readme): add usage in CSS files 2023-03-04 18:44:50 +08:00
b383912f30 docs(readme): replace node badge with ci one 2023-03-04 18:19:01 +08:00
74a4cda9d3 docs(readme): change the colors of the badges 2023-03-04 17:31:13 +08:00
13a8c92ebe chore(build): remove useless blank line in Gruntfile.coffee 2023-03-04 17:25:33 +08:00
7e5821b10d chore(config): add top comment to .editorconfig 2023-03-04 17:22:46 +08:00
a365317c85 refactor(fonts)!: add font-code to let managing code fonts more flexible 2023-03-04 17:19:15 +08:00
213ea5f44f refactor(vars): create modes directory 2023-03-04 16:53:06 +08:00
5ee77990a6 refactor(vars): organize variables 2023-03-04 16:49:47 +08:00
59745590c2 fix(vars): fix deprecated color expression in Sass 2023-03-04 16:46:29 +08:00
17631306a8 feat(vars)!: rename variable $general to $regular 2023-03-04 16:36:56 +08:00
d8f3f549dc docs(readme): rename "Uses" section and add description 2023-03-04 16:30:38 +08:00
f988a9dddb chore: release v0.0.1-patch.3 2023-03-03 22:54:56 +08:00
3f5fc5f93b docs(readme): move development infos into a independent section 2023-03-03 22:54:37 +08:00
1b2245bab9 chore: release v0.0.1-patch.2 2023-03-03 22:47:54 +08:00
7b50254f83 docs(readme): fix typo in "Usage" block 2023-03-03 22:47:39 +08:00
5f9424617e chore: release v0.0.1-patch.1 2023-03-03 22:46:22 +08:00
f169a6c49a docs(readme): add usage in Sass / SCSS 2023-03-03 22:46:03 +08:00
ba62d6e364 chore: release v0.0.1-patch.0 2023-03-03 21:09:54 +08:00
d7c5188b7d docs(readme): add "Browsers Support" block 2023-03-03 21:09:33 +08:00
de8b9d621c chore(ci): include all files in dist instead of the dir to build.tar.gz 2023-03-03 20:58:09 +08:00
8bb74891ce chore(ci): add LTS to Ubuntu 22.04 comment 2023-03-03 20:54:14 +08:00
d33f046030 chore: release v0.0.1 2023-03-03 20:15:39 +08:00
bd8d8822e5 revert: 706720b8fe 2023-03-03 20:15:12 +08:00
d9678940f2 chore: release v0.0.0-20230303.9 2023-03-03 20:09:40 +08:00
706720b8fe chore(ci): use windows-2022 instead of ubuntu-22.04 to release 2023-03-03 20:07:17 +08:00
ff06dee900 chore: release v0.0.0-20230303.7 2023-03-03 20:02:21 +08:00
80ccac3dd1 chore(ci): add pre-release and release comment to task name 2023-03-03 20:02:07 +08:00
229680ca85 chore: release v0.0.0-20230303.6 2023-03-03 20:00:25 +08:00
e3fcf96559 chore(ci): upload tar.gz file instead of .zip that no longer exists 2023-03-03 20:00:07 +08:00
34 changed files with 351 additions and 410 deletions

View File

@ -1,3 +1,5 @@
# EditorConfig <http://editorconfig.org>
root = true
[*]

View File

@ -4,6 +4,12 @@ on:
push:
branches:
- master
paths:
- src/**.scss
- package.json
- Gruntfile.coffee
- .stylelintrc
- .stylelintignore
pull_request:
branches:
- master
@ -11,7 +17,7 @@ on:
jobs:
# Test Lint
lint:
# Use Ubuntu 22.04
# Use Ubuntu 22.04 LTS
runs-on: ubuntu-22.04
steps:
# Step I
@ -21,7 +27,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 18
node-version: lts/*
registry-url: https://registry.npmjs.com
# Step III
- name: Install Dependencies

View File

@ -1,4 +1,4 @@
name: Build and Release
name: Release
on:
push:
@ -8,8 +8,8 @@ on:
jobs:
# NPM Registry & GitHub Release
release:
# Use Ubuntu 22.04
runs-on: ubuntu-22.04
# Use Windows Server 2022
runs-on: windows-2022
steps:
# Step I
- name: Get Source Code
@ -20,7 +20,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 18
node-version: lts/*
registry-url: https://registry.npmjs.com
# Step III
- name: Install Dependencies
@ -46,28 +46,23 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Step VIII
# - Pre-release
- name: GitHub Release
# / 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.zip
# - Release
- name: GitHub Release
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.zip
- name: Add Latest Tag
uses: cardinalby/git-tag-action@master
env:
TAG: Latest
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build.tar.gz
# Authored by @kuohuanhuan.

View File

@ -1,21 +1,4 @@
{
"ignoreDisables": true,
"extends": [
"stylelint-config-standard-scss",
"stylelint-config-hudochenkov/order"
],
"plugins": ["stylelint-scss"],
"rules": {
"alpha-value-notation": "number",
"at-rule-empty-line-before": null,
"block-no-empty": true,
"color-named": "never",
"color-hex-case": "lower",
"import-notation": null,
"max-nesting-depth": 5,
"no-invalid-position-at-import-rule": null,
"number-leading-zero": "never",
"property-no-vendor-prefix": true,
"rule-empty-line-before": null
}
"extends": "@kuohuanhuan/stylelint-config"
}

View File

@ -1,7 +1,6 @@
module.exports = (grunt) ->
# Load Grunt Tasks
require('load-grunt-tasks') grunt
# Project Configuration
grunt.initConfig
# NPM Package Declare

View File

@ -2,25 +2,47 @@
<center>
[![Version](https://img.shields.io/npm/v/x-markdown-css.svg)](https://www.npmjs.com/package/x-markdown-css)
[![Node.js Requirement](https://img.shields.io/badge/node-%3E%3D16-blue.svg)](https://github.com/kuohuanhuan/x-markdown-css/blob/master/package.json)
[![MIT License](https://img.shields.io/github/license/kuohuanhuan/x-markdown-css)](https://github.com/kuohuanhuan/x-markdown-css/blob/master/LICENSE)
[![NPM Version](https://img.shields.io/npm/v/x-markdown-css)](https://www.npmjs.com/package/x-markdown-css)
[![GitHub Actions](https://img.shields.io/github/actions/workflow/status/kuohuanhuan/x-markdown-css/ci.yml)](https://github.com/kuohuanhuan/x-markdown-css/actions/workflows/ci.yml)
[![MIT License](https://img.shields.io/github/license/kuohuanhuan/x-markdown-css?color=blue)](https://github.com/kuohuanhuan/x-markdown-css/blob/master/LICENSE)
</center>
> A simple and customizable markdown CSS stylesheet for everyone.
## Requirement
## Browsers Support
According to [.browserslistrc](https://github.com/kuohuanhuan/x-markdown-css/blob/master/.browserslistrc), `x-markdown-css` supports **all browsers support CSS variables.**
## Get Started
Visit the [Wiki](https://github.com/kuohuanhuan/x-markdown-css/wiki) page for more information.
## Built with
The following tools and suite libraries made the development of `x-markdown-css` possible:
- [SCSS](https://sass-lang.com)
- [Stylelint](https://stylelint.io)
- [Grunt](https://gruntjs.com)
- [PostCSS](https://postcss.org)
- [cssnano](https://cssnano.co)
*...and much more.*
## Development
### Requirement
- Node.js >= 16
## Install
### Install
```sh
npm i
```
## Build
### Build
```sh
npm run build
@ -38,26 +60,6 @@ or
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!

298
package-lock.json generated
View File

@ -1,18 +1,20 @@
{
"name": "x-markdown-css",
"version": "0.0.0-20230303.5",
"version": "0.1.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "x-markdown-css",
"version": "0.0.0-20230302.2",
"version": "0.1.0",
"license": "MIT",
"dependencies": {
"coffeescript": "^2.7.0",
"sass": "^1.58.3"
"sass": "^1.58.3",
"x-markdown-css": "^0.1.0"
},
"devDependencies": {
"@kuohuanhuan/stylelint-config": "^0.0.4",
"@lodder/grunt-postcss": "^3.1.1",
"autoprefixer": "^10.4.13",
"bumpp": "^9.0.0",
@ -22,10 +24,7 @@
"load-grunt-tasks": "^5.1.0",
"postcss": "^8.4.21",
"postcss-preset-env": "^8.0.1",
"stylelint": "^15.2.0",
"stylelint-config-hudochenkov": "^9.0.0",
"stylelint-config-standard-scss": "^7.0.1",
"stylelint-scss": "^4.4.0"
"stylelint": "^15.2.0"
},
"engines": {
"node": ">=16"
@ -621,6 +620,19 @@
"node": ">=10"
}
},
"node_modules/@kuohuanhuan/stylelint-config": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/@kuohuanhuan/stylelint-config/-/stylelint-config-0.0.4.tgz",
"integrity": "sha512-/BNDzhnjeddfeKqQtd6qk0WkC1jiWg2c9mheKTo4CMXXgcgNznGoaMjtTEGhxXD4C6xg4Fl0U6IBOxL+fgOE+A==",
"dev": true,
"peerDependencies": {
"bumpp": "^9.0.0",
"postcss-scss": "^4.0.6",
"stylelint": "^15.2.0",
"stylelint-order": "^6.0.2",
"stylelint-scss": "^4.4.0"
}
},
"node_modules/@lodder/grunt-postcss": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/@lodder/grunt-postcss/-/grunt-postcss-3.1.1.tgz",
@ -822,6 +834,12 @@
"node": ">=8"
}
},
"node_modules/async": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
"integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==",
"dev": true
},
"node_modules/autoprefixer": {
"version": "10.4.13",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz",
@ -1006,9 +1024,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001458",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001458.tgz",
"integrity": "sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w==",
"version": "1.0.30001462",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001462.tgz",
"integrity": "sha512-PDd20WuOBPiasZ7KbFnmQRyuLE7cFXW2PVd7dmALzbkUXEP46upAuCDm9eY9vho8fgNMGmbAX92QBZHzcnWIqw==",
"dev": true,
"funding": [
{
@ -1173,21 +1191,6 @@
"node": ">= 8"
}
},
"node_modules/cross-spawn/node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
"dependencies": {
"isexe": "^2.0.0"
},
"bin": {
"node-which": "bin/node-which"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/css-blank-pseudo": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-5.0.2.tgz",
@ -1282,16 +1285,16 @@
}
},
"node_modules/css-tree": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
"integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
"integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
"dev": true,
"dependencies": {
"mdn-data": "2.0.14",
"source-map": "^0.6.1"
"mdn-data": "2.0.30",
"source-map-js": "^1.0.1"
},
"engines": {
"node": ">=8.0.0"
"node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
}
},
"node_modules/css-what": {
@ -1416,6 +1419,25 @@
"node": ">=8.0.0"
}
},
"node_modules/csso/node_modules/css-tree": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
"integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
"dev": true,
"dependencies": {
"mdn-data": "2.0.14",
"source-map": "^0.6.1"
},
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/csso/node_modules/mdn-data": {
"version": "2.0.14",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
"integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
"dev": true
},
"node_modules/dateformat": {
"version": "4.6.3",
"resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz",
@ -1568,9 +1590,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
"version": "1.4.313",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.313.tgz",
"integrity": "sha512-QckB9OVqr2oybjIrbMI99uF+b9+iTja5weFe0ePbqLb5BHqXOJUO1SG6kDj/1WtWPRIBr51N153AEq8m7HuIaA==",
"version": "1.4.322",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.322.tgz",
"integrity": "sha512-KovjizNC9XB7dno/2GjxX8VS0SlfPpCjtyoKft+bCO+UfD8bFy16hY4Sh9s0h9BDxbRH2U0zX5VBjpM1LTcNlg==",
"dev": true
},
"node_modules/emoji-regex": {
@ -1939,6 +1961,18 @@
"node": ">=0.10.0"
}
},
"node_modules/global-prefix/node_modules/which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
"dependencies": {
"isexe": "^2.0.0"
},
"bin": {
"which": "bin/which"
}
},
"node_modules/globby": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
@ -2079,27 +2113,6 @@
"node": ">=10"
}
},
"node_modules/grunt-legacy-util/node_modules/async": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
"integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==",
"dev": true
},
"node_modules/grunt-legacy-util/node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
"dependencies": {
"isexe": "^2.0.0"
},
"bin": {
"node-which": "bin/node-which"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/grunt-sass": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/grunt-sass/-/grunt-sass-3.1.0.tgz",
@ -2543,9 +2556,9 @@
}
},
"node_modules/lilconfig": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz",
"integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==",
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
"integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
"dev": true,
"engines": {
"node": ">=10"
@ -2686,9 +2699,9 @@
}
},
"node_modules/mdn-data": {
"version": "2.0.14",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
"integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
"version": "2.0.30",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
"integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
"dev": true
},
"node_modules/meow": {
@ -4126,6 +4139,7 @@
"url": "https://tidelift.com/funding/github/npm/postcss-scss"
}
],
"peer": true,
"engines": {
"node": ">=12.0"
},
@ -4166,9 +4180,9 @@
}
},
"node_modules/postcss-sorting": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-8.0.1.tgz",
"integrity": "sha512-go9Zoxx7KQH+uLrJ9xa5wRErFeXu01ydA6O8m7koPXkmAN7Ts//eRcIqjo0stBR4+Nir2gMYDOWAOx7O5EPUZA==",
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-8.0.2.tgz",
"integrity": "sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==",
"dev": true,
"peer": true,
"peerDependencies": {
@ -4656,9 +4670,9 @@
}
},
"node_modules/spdx-correct": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
"integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
"integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
"dev": true,
"dependencies": {
"spdx-expression-parse": "^3.0.0",
@ -4829,85 +4843,15 @@
"url": "https://opencollective.com/stylelint"
}
},
"node_modules/stylelint-config-hudochenkov": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/stylelint-config-hudochenkov/-/stylelint-config-hudochenkov-9.0.0.tgz",
"integrity": "sha512-IOiSA2URkeIxEbn/Vl7OnkovjFci2o5n4qdC8gMuVkygeqCt7y3JJvagbRGgBoIvr3ldus/WBIEHRr+y8ZLXMw==",
"dev": true,
"peerDependencies": {
"stylelint": "^15.0.0",
"stylelint-order": "^6.0.2"
}
},
"node_modules/stylelint-config-recommended": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-10.0.1.tgz",
"integrity": "sha512-TQ4xQ48tW4QSlODcti7pgSRqBZcUaBzuh0jPpfiMhwJKBPkqzTIAU+IrSWL/7BgXlOM90DjB7YaNgFpx8QWhuA==",
"dev": true,
"peerDependencies": {
"stylelint": "^15.0.0"
}
},
"node_modules/stylelint-config-recommended-scss": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-9.0.1.tgz",
"integrity": "sha512-qAmz/TdrqslwiMTuLM3QXeISUkfEDUXGMfRBCHm/xrkCJNnQefv+mzG2mWTsWkqcVk8HAyUkug10dwAcYp2fCQ==",
"dev": true,
"dependencies": {
"postcss-scss": "^4.0.2",
"stylelint-config-recommended": "^10.0.1",
"stylelint-scss": "^4.4.0"
},
"peerDependencies": {
"postcss": "^8.3.3",
"stylelint": "^15.0.0"
},
"peerDependenciesMeta": {
"postcss": {
"optional": true
}
}
},
"node_modules/stylelint-config-standard": {
"version": "30.0.1",
"resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-30.0.1.tgz",
"integrity": "sha512-NbeHOmpRQhjZh5XB1B/S4MLRWvz4xxAxeDBjzl0tY2xEcayNhLbaRGF0ZQzq+DQZLCcPpOHeS2Ru1ydbkhkmLg==",
"dev": true,
"dependencies": {
"stylelint-config-recommended": "^10.0.1"
},
"peerDependencies": {
"stylelint": "^15.0.0"
}
},
"node_modules/stylelint-config-standard-scss": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-7.0.1.tgz",
"integrity": "sha512-m5sRdtsB1F5fnC1Ozla7ryftU47wVpO+HWd+JQTqeoG0g/oPh5EfbWfcVHbNCEtuoHfALIySiUWS20pz2hX6jA==",
"dev": true,
"dependencies": {
"stylelint-config-recommended-scss": "^9.0.0",
"stylelint-config-standard": "^30.0.1"
},
"peerDependencies": {
"postcss": "^8.3.3",
"stylelint": "^15.0.0"
},
"peerDependenciesMeta": {
"postcss": {
"optional": true
}
}
},
"node_modules/stylelint-order": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.2.tgz",
"integrity": "sha512-yuac0BE6toHd27wUPvYVVQicAJthKFIv1HPQFH3Q0dExiO3Z6Uam7geoO0tUd5Z9ddsATYK++1qWNDX4RxMH5Q==",
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.3.tgz",
"integrity": "sha512-1j1lOb4EU/6w49qZeT2SQVJXm0Ht+Qnq9GMfUa3pMwoyojIWfuA+JUDmoR97Bht1RLn4ei0xtLGy87M7d29B1w==",
"dev": true,
"peer": true,
"dependencies": {
"postcss": "^8.4.21",
"postcss-sorting": "^8.0.1"
"postcss-sorting": "^8.0.2"
},
"peerDependencies": {
"stylelint": "^14.0.0 || ^15.0.0"
@ -4918,6 +4862,7 @@
"resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.4.0.tgz",
"integrity": "sha512-Qy66a+/30aylFhPmUArHhVsHOun1qrO93LGT15uzLuLjWS7hKDfpFm34mYo1ndR4MCo8W4bEZM1+AlJRJORaaw==",
"dev": true,
"peer": true,
"dependencies": {
"lodash": "^4.17.21",
"postcss-media-query-parser": "^0.2.3",
@ -4935,19 +4880,6 @@
"integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
"dev": true
},
"node_modules/stylelint/node_modules/css-tree": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
"integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
"dev": true,
"dependencies": {
"mdn-data": "2.0.30",
"source-map-js": "^1.0.1"
},
"engines": {
"node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
}
},
"node_modules/stylelint/node_modules/global-modules": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
@ -4983,11 +4915,17 @@
"node": ">=0.10.0"
}
},
"node_modules/stylelint/node_modules/mdn-data": {
"version": "2.0.30",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
"integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
"dev": true
"node_modules/stylelint/node_modules/which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
"dependencies": {
"isexe": "^2.0.0"
},
"bin": {
"which": "bin/which"
}
},
"node_modules/supports-color": {
"version": "7.2.0",
@ -5053,6 +4991,25 @@
"node": ">=10.13.0"
}
},
"node_modules/svgo/node_modules/css-tree": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
"integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
"dev": true,
"dependencies": {
"mdn-data": "2.0.14",
"source-map": "^0.6.1"
},
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/svgo/node_modules/mdn-data": {
"version": "2.0.14",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
"integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
"dev": true
},
"node_modules/table": {
"version": "6.8.1",
"resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz",
@ -5208,15 +5165,18 @@
}
},
"node_modules/which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
"dependencies": {
"isexe": "^2.0.0"
},
"bin": {
"which": "bin/which"
"node-which": "bin/node-which"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/wrappy": {
@ -5238,6 +5198,18 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/x-markdown-css": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/x-markdown-css/-/x-markdown-css-0.1.0.tgz",
"integrity": "sha512-K+MdhXLXDIZA6yK4Kj2V1vq+JUFOP22lp1Vv1230/eU9gerE85FzK+wkttzeZN43+Bg6bAxaIEogLk+05WC0uA==",
"dependencies": {
"coffeescript": "^2.7.0",
"sass": "^1.58.3"
},
"engines": {
"node": ">=16"
}
},
"node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",

View File

@ -1,6 +1,6 @@
{
"name": "x-markdown-css",
"version": "0.0.0-20230303.5",
"version": "0.1.1",
"description": "A simple and customizable markdown CSS stylesheet for everyone.",
"keywords": [
"markdown",
@ -16,13 +16,18 @@
"article",
"documentation"
],
"sass": "src/index.scss",
"main": "dist/bundle.min.css",
"style": "dist/bundle.min.css",
"sass": "src/index.scss",
"repository": {
"type": "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",
"bugs": {
"url": "https://github.com/kuohuanhuan/x-markdown-css/issues"
@ -39,9 +44,11 @@
},
"dependencies": {
"coffeescript": "^2.7.0",
"sass": "^1.58.3"
"sass": "^1.58.3",
"x-markdown-css": "^0.1.0"
},
"devDependencies": {
"@kuohuanhuan/stylelint-config": "^0.0.4",
"@lodder/grunt-postcss": "^3.1.1",
"autoprefixer": "^10.4.13",
"bumpp": "^9.0.0",
@ -51,9 +58,6 @@
"load-grunt-tasks": "^5.1.0",
"postcss": "^8.4.21",
"postcss-preset-env": "^8.0.1",
"stylelint": "^15.2.0",
"stylelint-config-hudochenkov": "^9.0.0",
"stylelint-config-standard-scss": "^7.0.1",
"stylelint-scss": "^4.4.0"
"stylelint": "^15.2.0"
}
}

7
src/_content.scss Normal file
View File

@ -0,0 +1,7 @@
@use 'sass:meta';
@use 'partials/container';
.markdown-body {
@include container.container;
@include meta.load-css('partials/all');
}

27
src/_vars.scss Normal file
View File

@ -0,0 +1,27 @@
@use 'sass:meta';
@use 'variables/constants';
@use 'variables/colors';
@use 'variables/modes/light';
@use 'variables/modes/dark';
:root {
@each $name, $val in meta.module-variables('constants') {
--xm-#{$name}: #{$val};
}
@each $name, $val in meta.module-variables('colors') {
--xm-c-#{$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};
}
}

View File

@ -1,4 +1,2 @@
@use 'scss/vars' as *;
@import 'scss/markdown';
@import 'scss/prose';
@use 'vars';
@use 'content';

9
src/partials/_all.scss Normal file
View File

@ -0,0 +1,9 @@
@forward 'title';
@forward 'text';
@forward 'link';
@forward 'code';
@forward 'quote';
@forward 'figure';
@forward 'list';
@forward 'table';
@forward 'media';

View 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;
}
}

View File

@ -1,13 +1,14 @@
code {
color: var(--xm-c-dark);
color: var(--xm-c-deep);
font-weight: 600;
font-size: .875rem;
font-family: var(--xm-font-mono);
font-family: var(--xm-font-code);
&::before,
&::after {
content: '`';
}
}
pre {
overflow-x: auto;
margin-top: 1.75rem;
@ -32,4 +33,10 @@ pre {
content: none;
}
}
&:has(code) {
margin: .5rem 0;
font-size: 1.05rem;
font-family: var(--xm-font-code);
line-height: 1.4;
}
}

13
src/partials/link.scss Normal file
View File

@ -0,0 +1,13 @@
a {
border-bottom: 1px solid var(--xm-c-a-border);
color: var(--xm-c-deeper);
font-weight: 500;
text-decoration: none;
transition: border .3s ease-in-out;
code {
color: var(--xm-c-code);
}
&:hover {
border-bottom: 1px solid var(--xm-c-regular);
}
}

View File

@ -2,6 +2,7 @@ li {
margin-top: .5rem;
margin-bottom: .5rem;
}
ol {
margin-top: 1.25rem;
margin-bottom: 1.25rem;
@ -18,6 +19,7 @@ ol {
}
}
}
ul {
margin-top: 1.25rem;
margin-bottom: 1.25rem;
@ -37,6 +39,7 @@ ul {
}
}
}
ul ul,
ul ol,
ol ul,

View File

@ -1,5 +1,6 @@
img,
video {
width: 100%;
margin-top: 2rem;
margin-bottom: 2rem;
}

View File

@ -2,12 +2,14 @@ blockquote,
q {
margin-top: 1.65rem;
margin-bottom: 1.65rem;
padding-left: 1rem;
padding: .6rem 1.2rem;
border-left: .25rem solid var(--xm-c-quote-border);
color: inherit;
font-weight: 500;
font-style: italic;
line-height: 1.5rem;
quotes: '\201C''\201D''\2018''\2019';
opacity: .8;
p {
&:first-of-type::before {
content: open-quote;
@ -16,4 +18,12 @@ q {
content: close-quote;
}
}
> * {
&:first-child {
margin-top: 0;
}
&:last-child {
margin-bottom: 0;
}
}
}

View File

@ -7,6 +7,7 @@ table {
line-height: 1.75;
text-align: left;
}
thead {
border-bottom-width: 1px;
border-bottom-color: var(--xm-c-thead-border);
@ -23,6 +24,7 @@ thead {
}
}
}
tbody {
tr {
border-bottom-width: 1px;

View File

@ -2,13 +2,16 @@ p {
margin-top: 1.25rem;
margin-bottom: 1.25rem;
}
strong {
color: var(--xm-c-dark);
color: var(--xm-c-deep);
font-weight: 600;
}
b {
color: var(--xm-c-dark);
color: var(--xm-c-deep);
}
em {
color: inherit;
}

View File

@ -1,15 +1,16 @@
h1 {
margin-top: 0;
margin-bottom: .875rem;
color: var(--xm-c-darker);
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-dark);
color: var(--xm-c-deep);
font-weight: 700;
font-size: 1.5rem;
line-height: 1.35;
@ -20,6 +21,7 @@ h2 {
margin-top: 0;
}
}
h3 {
margin-top: 1.6rem;
margin-bottom: .6rem;
@ -35,6 +37,7 @@ h3 {
margin-top: 0;
}
}
h4 {
margin-top: 1.5rem;
margin-bottom: .5rem;
@ -45,6 +48,7 @@ h4 {
margin-top: 0;
}
}
h5,
h6 {
margin-top: 20px;
@ -54,11 +58,40 @@ h6 {
text-transform: uppercase;
opacity: .5;
}
hr {
margin-top: 3rem;
margin-bottom: 3rem;
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;
}
}
}
}

View File

@ -1,103 +0,0 @@
.markdown-body {
color: var(--xm-c-general);
font-family: var(--xm-font-display) !important;
pre:not(.shiki, .highlight) {
margin: 0;
padding: 0;
background: transparent;
}
.shiki,
.highlight {
margin: .5rem 0;
font-size: 1.05rem;
font-family: var(--xm-font-mono) !important;
line-height: 1.4;
&.shiki-light {
background: var(--xm-c-shiki-light) !important;
}
&.shiki-dark {
background: var(--xm-c-shiki-dark) !important;
}
}
img {
width: 100%;
}
a {
border-bottom: 1px solid var(--xm-c-link-border);
font-weight: inherit;
text-decoration: none;
transition: border .3s ease-in-out;
&:hover {
border-bottom: 1px solid var(--xm-c-general);
}
code {
color: inherit;
}
}
hr {
width: 50px;
margin-top: 2rem;
margin-bottom: 2rem;
}
blockquote,
q {
padding: .6rem 1.2rem;
font-weight: normal;
font-style: normal;
line-height: 1.5rem;
opacity: .8;
> * {
&:first-child {
margin-top: 0;
}
&:last-child {
margin-bottom: 0;
}
}
p:first-of-type {
&::before,
&::after {
content: none;
}
}
}
&:first-child {
margin-top: 1rem;
}
}
html:not(.dark) .shiki-dark,
.dark .shiki-light {
display: none;
}
.item {
text-decoration: none;
opacity: .6;
transition: .2s all ease-out;
&:hover {
opacity: 1;
}
}
.header-anchor {
float: left;
margin-top: .125rem;
margin-left: -1.25rem;
padding-right: .5rem;
border: 0 !important;
font-size: .875rem;
text-decoration: none;
opacity: 0;
&:hover,
&:focus {
text-decoration: none;
}
}
@for $i from 1 through 6 {
h#{$i} {
&:hover,
&:focus {
.header-anchor {
opacity: .35 + $i * .025;
}
}
}
}

View File

@ -1 +0,0 @@
@import 'title', 'text', 'link', 'code', 'quote', 'figure', 'list', 'table', 'media';

View File

@ -1,6 +0,0 @@
@mixin container {
max-width: fit-content;
color: var(--xm-c-general);
font-size: 1rem;
line-height: 1.75;
}

View File

@ -1,8 +0,0 @@
a {
color: var(--xm-c-darker);
font-weight: 500;
text-decoration: none;
code {
color: var(--xm-c-code);
}
}

View File

@ -1,6 +0,0 @@
@use 'partials/container' as *;
.prose {
@include container;
@import 'partials/all';
}

View File

@ -1,3 +0,0 @@
$general: #bbb;
$dark: #ddd;
$darker: #fff;

View File

@ -1,3 +0,0 @@
$general: #555;
$dark: #222;
$darker: #000;

View File

@ -1,25 +0,0 @@
@use 'sass:meta' as *;
@use 'variables/constants';
@use 'variables/colors';
@use 'variables/light';
@use 'variables/dark';
:root {
@each $name, $val in module-variables('constants') {
--xm-#{$name}: #{$val};
}
@each $name, $val in module-variables('colors') {
--xm-c-#{$name}: #{$val};
}
}
.markdown-body {
@each $name, $val in module-variables('light') {
--xm-c-#{$name}: #{$val};
}
}
.dark .markdown-body {
@each $name, $val in module-variables('dark') {
--xm-c-#{$name}: #{$val};
}
}

View File

@ -1,13 +1,14 @@
$shiki-light: #f8f8f8;
$shiki-dark: #0e0e0e;
$link-border: hsla(0deg 0 50% / .3);
// Colors
$pre: #e5e7eb;
$code: #111827;
$figcaption: #6b7280;
$thead: #111827;
$ol-counter: #6b7280;
$ul-counter: #d1d5db;
$hr-border: hsla(0deg 0 50% / .3);
$quote-border: hsla(0deg 0 50% / .3);
$figcaption: #6b7280;
$pre: #e5e7eb;
$thead: #111827;
// Border
$a-border: hsla(0deg 0% 50% / .3);
$hr-border: hsla(0deg 0% 50% / .3);
$quote-border: hsla(0deg 0% 50% / .3);
$thead-border: #d1d5db;
$tr-border: #e5e7eb;

View File

@ -1,5 +1,8 @@
// Font stack
$font-sans: 'Open Sans', 'Inter', 'Roboto', 'Helvetica', 'Arial', 'Sarasa Gothic TC', 'Sarasa Gothic SC', 'Noto Sans TC', 'Noto Sans SC', 'Microsoft JhengHei', 'Microsoft YaHei', -apple-system, sans-serif;
$font-serif: 'Merriweather', 'Georgia', 'Times New Roman', 'Times', 'Source Han Serif Traditional Chinese', 'Source Han Serif Simplified Chinese', 'Noto Serif TC', 'Noto Serif SC', serif;
$font-mono: 'DM Mono', 'Fira Code', 'Jetbrains Mono', 'Input Mono', 'Menlo', 'MesloLGS NF', 'Ubuntu', monospace;
$font-mono: 'DM Mono', 'Fira Code', 'Jetbrains Mono', 'Input Mono', 'Menlo', 'MesloLGS NF', 'Ubuntu', 'Sarasa Gothic TC', 'Sarasa Gothic SC', monospace;
// Font defaults
$font-display: var(--xm-font-sans);
$font-code: var(--xm-font-mono);

View File

@ -0,0 +1,3 @@
$regular: #bbb;
$deep: #ddd;
$deeper: #fff;

View File

@ -0,0 +1,3 @@
$regular: #555;
$deep: #222;
$deeper: #000;