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

Compare commits

..

112 Commits

Author SHA1 Message Date
c77fbd21ae chore: release v0.0.0-20230303.5 2023-03-03 19:53:55 +08:00
a4f5996f04 chore(ci): solve incorrect version of cardinalby/git-tag-action 2023-03-03 19:53:41 +08:00
cb009147b9 chore: release v0.0.0-20230303.4 2023-03-03 19:52:51 +08:00
188ac468fd chore(ci): add pre-release specific & add latest tag 2023-03-03 19:52:31 +08:00
24056e42d5 chore: release v0.0.0-20230303.3 2023-03-03 19:32:35 +08:00
274fc0fb31 chore(ci): generate Changelog **after** release 2023-03-03 19:32:19 +08:00
e83212e00f chore: release v0.0.0-20230303.2 2023-03-03 19:29:41 +08:00
40a50968ed chore(ci): solve version conflicts & errors 2023-03-03 19:29:27 +08:00
1a62e1258e chore: release v0.0.0-20230303.1 2023-03-03 19:26:55 +08:00
648738b890 refactor(markdown): split margin to margin-top and margin-bottom 2023-03-03 19:13:28 +08:00
7dc2238fdf feat(markdown): apply different opacities for .header-anchor 2023-03-03 19:10:15 +08:00
65b4b24002 chore(ci): create a tar.gz file instead of a .zip one 2023-03-03 19:04:32 +08:00
94e8477077 chore: create and modify footer author comment 2023-03-03 18:45:16 +08:00
4bbc199636 chore(build): disable postcss-custom-properties option in PostCSS 2023-03-03 18:42:00 +08:00
fd57e4bc4f chore(npm): replace main key in package.json with sass and style 2023-03-03 18:34:08 +08:00
ab38a24a75 chore: release v0.0.0-20230302.12 2023-03-02 23:15:01 +08:00
93e2f86137 chore(npm): add build.zip to .npmignore 2023-03-02 23:14:27 +08:00
e622185bbf chore: release v0.0.0-20230302.11 2023-03-02 23:07:32 +08:00
78cf02d7b8 chore(ci): add a name for vimtor/action-zip task 2023-03-02 23:07:02 +08:00
eba9d56ae6 chore: release v0.0.0-20230302.10 2023-03-02 22:52:18 +08:00
2da4f4deb2 chore(ci): add .zip file to GitHub Release and upload artifact 2023-03-02 22:52:00 +08:00
cd9ecdfed3 chore: release v0.0.0-20230302.9 2023-03-02 22:33:59 +08:00
9bf22aa5bd chore(ci): update Node.js version in CI to 18 from 16 2023-03-02 22:33:39 +08:00
e6718acc37 chore: release v0.0.0-20230302.8 2023-03-02 22:28:25 +08:00
15ef37c0d2 chore(ci): use softprops/action-gh-release to create GitHub Releases 2023-03-02 22:27:49 +08:00
6fd50e0707 chore: release v0.0.0-20230302.7 2023-03-02 21:18:38 +08:00
8da53d8cde style(markdown): improve selectors 2023-03-02 21:18:14 +08:00
decfa2c47c chore: release v0.0.0-20230302.6 2023-03-02 20:39:44 +08:00
58317f99cb chore(ci): change registry URL to npmjs.com from npmjs.org 2023-03-02 20:39:24 +08:00
a3f9084a2e chore(ci): rename task Lint to Test Lint 2023-03-02 20:35:07 +08:00
26d5c7966f chore: release v0.0.0-20230302.5 2023-03-02 20:31:57 +08:00
296bf3016e docs(readme): remove descriptions of packages in "Uses" 2023-03-02 20:31:42 +08:00
a40c973e46 chore: release v0.0.0-20230302.4 2023-03-02 20:25:51 +08:00
29b45f6a7f style(vars): rename $blockquote-border to $quote-border 2023-03-02 20:25:23 +08:00
c2bd2cb722 docs: introduce new project description 2023-03-02 20:23:38 +08:00
bd2f74a3b2 chore(lint): fix incorrect comma placing in .stylelintrc 2023-03-02 20:21:26 +08:00
d69a4ea949 refactor: rename directory partial to partials 2023-03-02 20:18:45 +08:00
95de198e34 chore: release v0.0.0-20230302.3 2023-03-02 20:12:31 +08:00
782b6f24e2 feat: separate $font-display for more user customization 2023-03-02 20:11:32 +08:00
f967cc6bad style: unite and reorder CSS rules 2023-03-02 20:05:26 +08:00
32058aa5d3 feat(markdown): apply styles to q element 2023-03-02 19:43:02 +08:00
02d03e7633 refactor: rename dirs and files in a more meaningful way 2023-03-02 19:42:04 +08:00
2042d6be41 docs(readme): provide more commands 2023-03-02 19:36:28 +08:00
e90679a4ac chore(browserslist): only browsers support css-variables 2023-03-02 19:29:37 +08:00
9a81468182 chore(ci): use .npmignore instead of editing .gitignore 2023-03-02 19:25:05 +08:00
ec673759d2 chore(lint): normalize .stylelintignore 2023-03-02 19:19:12 +08:00
f68921d9d0 docs(readme): add cssnano to "Uses" 2023-03-02 19:17:47 +08:00
ae19499146 chore: release v0.0.0-20230302.2 2023-03-02 00:28:08 +08:00
7ab2bd67ea refactor(markdown): fix duplicate selector rules 2023-03-02 00:27:50 +08:00
a307ac8851 fix(font): rename font constants 2023-03-02 00:25:02 +08:00
58d893bc24 chore: release v0.0.0-20230302.1 2023-03-02 00:09:40 +08:00
e13c83de24 fix(code): fix duplicate selector rules 2023-03-02 00:09:17 +08:00
3ddc662741 docs(readme): fix wrong align of badges 2023-03-02 00:08:47 +08:00
17c8caaa11 chore(ci): fix wrong sorted comment 2023-03-02 00:07:22 +08:00
7684e092da chore: release v0.0.0-20230301.7 2023-03-01 23:08:07 +08:00
5b0584ce4b docs: add README.md and CONTRIBUTING.md 2023-03-01 23:07:31 +08:00
a3f3100f2c chore: release v0.0.0-20230301.6 2023-03-01 20:42:42 +08:00
ea73260661 chore(ci): ref. https://github.com/JS-DevTools/npm-publish/pull/68 2023-03-01 20:42:25 +08:00
51046f4088 chore: release v0.0.0-20230301.5 2023-03-01 20:34:20 +08:00
a7492b1975 chore(ci): use different .gitignore with GitHub Actions 2023-03-01 20:34:07 +08:00
6179dc8634 chore: release v0.0.0-20230301.4 2023-03-01 20:28:50 +08:00
941e73a889 fix(code): fix incorrect font-family value 2023-03-01 20:28:10 +08:00
af46b8e083 chore: release v0.0.0-20230301.3 2023-03-01 20:22:48 +08:00
e2aeb767cd fix(blockquote): fix incorrect border configuration 2023-03-01 20:22:34 +08:00
6616b76811 chore: release v0.0.0-20230301.2 2023-03-01 20:14:30 +08:00
8be8e8793e chore(browserslist): deprecate browsers before 2015 2023-03-01 20:13:29 +08:00
2aa806938e BREAKING CHANGE: normalize number values 2023-03-01 20:12:33 +08:00
ebac47e0d7 refactor(prose): use _partial/all to replace a lot of components 2023-03-01 20:03:44 +08:00
61079f3627 refactor(colors): use value 0 instead of 0% 2023-03-01 19:51:29 +08:00
e9c955a8f1 BREAKING CHANGE: deprecate .markdown-body used as .prose 2023-03-01 19:51:17 +08:00
3db644fa05 fix(typo): fix wrong CSS variable name 2023-03-01 19:50:23 +08:00
ca1ccd9b4b chore(lint): configure ignored paths & files to Stylelint 2023-03-01 19:47:12 +08:00
f9ffa18565 chore(build): add postcss-preset-env to inject polyfills 2023-03-01 19:45:58 +08:00
0dc71d9a54 chore: release v0.0.0-20230229.1 2023-03-01 00:48:35 +08:00
5fc2c0a068 refactor(container): use @extend to import container 2023-03-01 00:47:59 +08:00
aa8823c6eb chore: release v0.0.0-20230228.16 2023-02-28 23:28:28 +08:00
61b7e4ef05 refactor(media): minify selector rules 2023-02-28 23:27:55 +08:00
cc6bea29ef chore: release v0.0.0-20230228.15 2023-02-28 23:14:56 +08:00
d95065f5d2 refactor(_partial): sepreate SCSS files into several partials 2023-02-28 23:14:32 +08:00
1bb7e502ac chore: release v0.0.0-20230228.14 2023-02-28 22:41:06 +08:00
de50484e3b fix(prose): switch to a flexible max-width value 2023-02-28 22:40:50 +08:00
6fbb266d10 fix(colors): solve deprecated grammars 2023-02-28 22:38:44 +08:00
4bc0772d38 chore: release v0.0.0-20230228.13 2023-02-28 22:21:47 +08:00
3728e8325a feat(fonts): put Sarasa Gothic before Noto Sans 2023-02-28 22:21:27 +08:00
016746659a chore: release v0.0.0-20230228.12 2023-02-28 20:50:36 +08:00
2626938bc7 chore(lint): introduce Stylelint to lint SCSS code 2023-02-28 20:50:12 +08:00
2212a48426 chore(ci): add Lint & Build tests 2023-02-28 20:48:49 +08:00
f0965419e6 chore(ci): use registry.npmjs.org as NPM registry 2023-02-28 20:47:41 +08:00
de1f09bce4 style(scss): solve duplicate selectors 2023-02-28 20:23:29 +08:00
c6ca99239e chore(node): correct requirement to Node.js 16 at least 2023-02-28 20:19:53 +08:00
c0d2969d87 chore: release v0.0.0-20230228.11 2023-02-28 20:17:39 +08:00
2ffbf81303 chore(ci): use Node.js 16 to build project 2023-02-28 20:17:24 +08:00
865a3d89d7 chore: release v0.0.0-20230228.10 2023-02-28 20:15:33 +08:00
51f21ee9a7 chore(ci): use Node.js 14 to build project 2023-02-28 20:15:13 +08:00
9572add1e3 chore: release v0.0.0-20230228.9 2023-02-28 20:09:08 +08:00
5f27d24ca8 chore(git): remove .env.local from .gitignore 2023-02-28 20:08:49 +08:00
6fbe988073 chore: release v0.0.0-20230228.8 2023-02-28 20:06:41 +08:00
fe0e9dfb8a chore(deps): recongize coffeescript as a dependency 2023-02-28 20:06:22 +08:00
95bbde7a39 chore: release v0.0.0-20230228.7 2023-02-28 20:02:37 +08:00
90657b2193 release: v0.0.0-20230228.6-with-license 2023-02-28 19:58:37 +08:00
539d3943fb chore(license): add MIT License 2023-02-28 19:55:11 +08:00
fbdcc3b479 release: v0.0.0-20230228.6 2023-02-28 19:53:01 +08:00
945b2facaf refactor(vars): rename $font-monospace to $font-mono 2023-02-28 19:52:39 +08:00
abca0765ca feat(vars): add more fallback fonts in $font-monospace 2023-02-28 19:51:59 +08:00
a6fa7a2746 feat(vars): add more fallback fonts in $font-sans 2023-02-28 19:51:14 +08:00
7610344f37 fix(typo): correct .itrem to .item 2023-02-28 19:47:45 +08:00
677d0606c4 release: v0.0.0-20230228.5 2023-02-28 19:24:15 +08:00
42e4afa30b feat(vars): rearrange monospace fonts 2023-02-28 19:23:35 +08:00
e85ce4af9f feat(vars): add fallback fonts to $font-sans 2023-02-28 19:22:23 +08:00
08d56cfa67 chore(ci): set correct permission of GITHUB_TOKEN 2023-02-28 19:15:05 +08:00
35077abd10 release: v0.0.0-20230228.3 2023-02-28 18:59:33 +08:00
db1fdcefa1 chore: allows dist to push to Git 2023-02-28 18:59:21 +08:00
35 changed files with 3395 additions and 439 deletions

View File

@ -1,4 +1,4 @@
# Browserslist <https://browsersl.ist>
defaults
since 2012
supports css-variables

65
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,65 @@
name: CI
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
# Test Lint
lint:
# Use Ubuntu 22.04
runs-on: ubuntu-22.04
steps:
# Step I
- name: Get Source Code
uses: actions/checkout@v3
# Step II
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 18
registry-url: https://registry.npmjs.com
# Step III
- name: Install Dependencies
run: npm ci
# Step IV
- name: Test Lint
run: npm run lint
# Test Build
build:
# Use Ubuntu Linux, Windows and OS X
runs-on: ${{ matrix.os }}
strategy:
matrix:
node-version: [16, 18, latest]
os: [ubuntu-latest, windows-latest, macos-latest]
fail-fast: false
steps:
# Step I
- name: Get Source Code
uses: actions/checkout@v3
# Step II
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.com
# Step III
- name: Install Dependencies
run: npm ci
# Step IV
- name: Test Build
run: npm run build
# Step V
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: built-on__os_${{ matrix.os }}__nodejs_${{ matrix.node-version }}
path: dist/
retention-days: 3
# Authored by @kuohuanhuan.

View File

@ -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 }}

73
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,73 @@
name: Build and Release
on:
push:
tags:
- 'v*'
jobs:
# NPM Registry & GitHub Release
release:
# Use Ubuntu 22.04
runs-on: ubuntu-22.04
steps:
# Step I
- name: Get Source Code
uses: actions/checkout@v3
with:
fetch-depth: 0
# Step II
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 18
registry-url: https://registry.npmjs.com
# Step III
- name: Install Dependencies
run: npm ci
# Step IV
- name: Build Project
run: npm run build
# Step V
- name: Create tar.gz File
uses: TheDoctor0/zip-release@0.7.1
with:
type: tar
path: dist/
filename: build.tar.gz
# Step VI
- name: Publish to NPM Registry
uses: rxfork/npm-publish@v1
with:
token: ${{ secrets.NPM_TOKEN }}
# Step VII
- name: Generate Changelog
run: npx changelogithub@0.12
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Step VIII
# - Pre-release
- name: GitHub Release
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '-')
uses: softprops/action-gh-release@v1
with:
prerelease: true
files: |
dist/*
build.zip
# - Release
- name: GitHub Release
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '-') == false
uses: softprops/action-gh-release@v1
with:
prerelease: false
files: |
dist/*
build.zip
- name: Add Latest Tag
uses: cardinalby/git-tag-action@master
env:
TAG: Latest
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Authored by @kuohuanhuan.

4
.gitignore vendored
View File

@ -1,4 +1,2 @@
dist/
.env.local
node_modules/
dist/

4
.npmignore Normal file
View File

@ -0,0 +1,4 @@
build.tar.gz
node_modules/
.github/
.vscode/

2
.stylelintignore Normal file
View File

@ -0,0 +1,2 @@
dist/*.css
node_modules/

21
.stylelintrc Normal file
View File

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

7
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,7 @@
{
"recommendations": [
"editorconfig.editorconfig",
"stylelint.vscode-stylelint",
"ecmel.vscode-html-css"
]
}

View File

@ -1,3 +1,6 @@
{
"cSpell.enabled": false
}
{
"cSpell.enabled": false,
"stylelint.enable": true,
"stylelint.configFile": ".stylelintrc",
"workbench.colorCustomizations": {}
}

26
CONTRIBUTING.md Normal file
View 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.

View File

@ -1,7 +1,9 @@
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
pkg: grunt.file.readJSON('package.json')
# Sass Compile
@ -26,19 +28,31 @@ module.exports = (grunt) ->
annotation: 'dist/'
exp:
options:
processors: [require('autoprefixer')()]
processors: [
require('postcss-preset-env')(
features:
'custom-properties': false
)
require('autoprefixer')()
]
src: 'dist/bundle.css'
dest: 'dist/bundle.css'
min:
options:
processors: [
require('autoprefixer')()
require('cssnano')(
preset: 'default'
require('postcss-preset-env')(
features:
'custom-properties': false
)
require('autoprefixer')()
require('cssnano')(preset: 'default')
]
src: '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
View 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.

68
README.md Normal file
View File

@ -0,0 +1,68 @@
<h1 align="center">x-markdown-css</h1>
<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)
</center>
> A simple and customizable markdown CSS stylesheet for everyone.
## Requirement
- Node.js >= 16
## Install
```sh
npm i
```
## Build
```sh
npm run build
```
or
```sh
grunt build
```
or
```sh
npx grunt build
```
## Usage
You can use the minified CSS file with a CDN service:
- UNPKG: `https://unpkg.com/x-markdown-css@latest/dist/bundle.min.css`
- jsDelivr: `https://fastly.jsdelivr.net/npm/x-markdown-css@latest/dist/bundle.min.css`
- CDNJS: *Coming soon. **Waiting for you to make `x-markdown-css` [popular enough](https://github.com/cdnjs/packages/blob/master/CONTRIBUTING.md#policy-rules-and-guidelines)**!*
> *ps. `bundle.css` without `.min` stands for unminified version.*
## Uses
- [SCSS](https://sass-lang.com)
- [Stylelint](https://stylelint.io)
- [Grunt](https://gruntjs.com)
- [PostCSS](https://postcss.org)
- [cssnano](https://cssnano.co)
*...and much more.*
## Contributing
PRs, issues and feature requests are welcome!
Feel free to check [Issues](https://github.com/kuohuanhuan/x-markdown-css/issues) page. You can also take a look at the [Contributing Guide](https://github.com/kuohuanhuan/x-markdown-css/blob/master/CONTRIBUTING.md).
## License
Copyright (c) 2023 [kuohuanhuan](https://github.com/kuohuanhuan), licensed under [MIT](https://github.com/kuohuanhuan/x-markdown-css/blob/master/LICENSE).

2752
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,23 @@
{
"name": "x-markdown-css",
"version": "0.0.0-20230228.2",
"description": "A simple and customizable Markdown CSS for everyone.",
"main": "index.js",
"version": "0.0.0-20230303.5",
"description": "A simple and customizable markdown CSS stylesheet for everyone.",
"keywords": [
"markdown",
"css",
"sass",
"scss",
"coffeescript",
"grunt",
"javascript",
"postcss",
"prose",
"blog",
"article",
"documentation"
],
"sass": "src/index.scss",
"style": "dist/bundle.min.css",
"repository": {
"type": "git",
"url": "git+https://github.com/kuohuanhuan/x-markdown-css.git"
@ -14,22 +29,31 @@
},
"homepage": "https://github.com/kuohuanhuan/x-markdown-css#readme",
"engines": {
"node": ">=14"
"node": ">=16"
},
"scripts": {
"build": "grunt build"
"build": "grunt build",
"bump": "bumpp",
"lint": "stylelint **/*.scss --config .stylelintrc",
"lint:fix": "stylelint **/*.scss --config .stylelintrc --fix"
},
"dependencies": {
"coffeescript": "^2.7.0",
"sass": "^1.58.3"
},
"devDependencies": {
"@lodder/grunt-postcss": "^3.1.1",
"autoprefixer": "^10.4.13",
"coffeescript": "^2.7.0",
"bumpp": "^9.0.0",
"cssnano": "^5.1.15",
"grunt": "^1.6.1",
"grunt-sass": "^3.1.0",
"load-grunt-tasks": "^5.1.0",
"postcss": "^8.4.21"
"postcss": "^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"
}
}

View File

@ -1,2 +0,0 @@
$font-sans: 'Open Sans', 'Noto Sans TC', 'Inter', 'Roboto', 'Helvetica', 'Arial', sans-serif;
$font-monospace: 'DM Mono', 'Jetbrains Mono', 'Fira Code', 'Input Mono', 'Ubuntu', monospace;

View File

@ -1,18 +1,16 @@
.markdown-body {
color: var(--xm-c-general);
font-family: var(--xm-font-sans) !important;
pre {
&:not(.shiki, .highlight) {
margin: 0;
padding: 0;
background: transparent;
}
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-monospace) !important;
font-family: var(--xm-font-mono) !important;
line-height: 1.4;
&.shiki-light {
background: var(--xm-c-shiki-light) !important;
@ -25,9 +23,9 @@
width: 100%;
}
a {
border-bottom: 1px solid var(--xm-c-link-border);
font-weight: inherit;
text-decoration: none;
border-bottom: 1px solid var(--xm-c-link-border);
transition: border .3s ease-in-out;
&:hover {
border-bottom: 1px solid var(--xm-c-general);
@ -37,10 +35,12 @@
}
}
hr {
margin: 2rem auto;
width: 50px;
margin-top: 2rem;
margin-bottom: 2rem;
}
blockquote {
blockquote,
q {
padding: .6rem 1.2rem;
font-weight: normal;
font-style: normal;
@ -54,11 +54,9 @@
margin-bottom: 0;
}
}
p {
&:first-of-type::before {
content: none;
}
&:first-of-type::after {
p:first-of-type {
&::before,
&::after {
content: none;
}
}
@ -67,19 +65,11 @@
margin-top: 1rem;
}
}
.dark {
.shiki-light {
display: none;
}
html:not(.dark) .shiki-dark,
.dark .shiki-light {
display: none;
}
html {
&:not(.dark) {
.shiki-dark {
display: none;
}
}
}
.itrem {
.item {
text-decoration: none;
opacity: .6;
transition: .2s all ease-out;
@ -90,88 +80,24 @@ html {
.header-anchor {
float: left;
margin-top: .125rem;
margin-left: -1.2rem;
margin-left: -1.25rem;
padding-right: .5rem;
font-size: .85rem;
text-decoration: none;
border: 0 !important;
font-size: .875rem;
text-decoration: none;
opacity: 0;
&:hover {
text-decoration: none;
}
&:hover,
&: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;
@for $i from 1 through 6 {
h#{$i} {
&:hover,
&:focus {
.header-anchor {
opacity: .35 + $i * .025;
}
}
}
}

View File

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

View File

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

View File

@ -0,0 +1,35 @@
code {
color: var(--xm-c-dark);
font-weight: 600;
font-size: .875rem;
font-family: var(--xm-font-mono);
&::before,
&::after {
content: '`';
}
}
pre {
overflow-x: auto;
margin-top: 1.75rem;
margin-bottom: 1.75rem;
padding-top: .875rem, 1.15rem;
border-radius: .375rem;
color: var(--xm-c-pre);
font-size: .875rem;
line-height: 1.75;
code {
padding: 0;
border-width: 0;
border-radius: 0;
background: transparent;
color: inherit;
font-weight: 400;
font-size: inherit;
font-family: inherit;
line-height: inherit;
&::before,
&::after {
content: none;
}
}
}

View File

@ -0,0 +1,14 @@
figure {
margin-top: 2rem;
margin-bottom: 2rem;
figcaption {
margin-top: .875rem;
color: var(--xm-c-figcaption);
font-size: .875rem;
line-height: 1.45;
}
> * {
margin-top: 0;
margin-bottom: 0;
}
}

View File

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

View File

@ -0,0 +1,46 @@
li {
margin-top: .5rem;
margin-bottom: .5rem;
}
ol {
margin-top: 1.25rem;
margin-bottom: 1.25rem;
list-style-type: none;
> li {
position: relative;
padding-left: 1.75rem;
&::before {
content: counter(list-item, decimal) '.';
position: absolute;
left: 0;
color: var(--xm-c-ol-counter);
font-weight: 400;
}
}
}
ul {
margin-top: 1.25rem;
margin-bottom: 1.25rem;
list-style-type: none;
> li {
position: relative;
padding-left: 1.75rem;
&::before {
content: '';
position: absolute;
top: .675rem;
left: .25rem;
width: .375rem;
height: .375rem;
border-radius: 50%;
background-color: var(--xm-c-ul-counter);
}
}
}
ul ul,
ul ol,
ol ul,
ol ol {
margin-top: .75rem;
margin-bottom: .75rem;
}

View File

@ -0,0 +1,5 @@
img,
video {
margin-top: 2rem;
margin-bottom: 2rem;
}

View File

@ -0,0 +1,19 @@
blockquote,
q {
margin-top: 1.65rem;
margin-bottom: 1.65rem;
padding-left: 1rem;
border-left: .25rem solid var(--xm-c-quote-border);
color: inherit;
font-weight: 500;
font-style: italic;
quotes: '\201C''\201D''\2018''\2019';
p {
&:first-of-type::before {
content: open-quote;
}
&:last-of-type::after {
content: close-quote;
}
}
}

View File

@ -0,0 +1,44 @@
table {
width: 100%;
margin-top: 2rem;
margin-bottom: 2rem;
table-layout: auto;
font-size: .875rem;
line-height: 1.75;
text-align: left;
}
thead {
border-bottom-width: 1px;
border-bottom-color: var(--xm-c-thead-border);
color: var(--xm-c-thead);
font-weight: 600;
th {
vertical-align: bottom;
padding-left: auto .575rem .575rem;
&:first-child {
padding-left: 0;
}
&:last-child {
padding-right: 0;
}
}
}
tbody {
tr {
border-bottom-width: 1px;
border-bottom-color: var(--xm-c-tr-border);
&:last-child {
border-bottom-width: 0;
}
}
td {
vertical-align: top;
padding: .575rem;
&:first-child {
padding-left: 0;
}
&:last-child {
padding-right: 0;
}
}
}

View File

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

View File

@ -0,0 +1,64 @@
h1 {
margin-top: 0;
margin-bottom: .875rem;
color: var(--xm-c-darker);
font-weight: 800;
font-size: 2.25rem;
line-height: 1.15;
}
h2 {
margin-top: 2rem;
margin-bottom: 1rem;
color: var(--xm-c-dark);
font-weight: 700;
font-size: 1.5rem;
line-height: 1.35;
code {
font-size: .875rem;
}
+ * {
margin-top: 0;
}
}
h3 {
margin-top: 1.6rem;
margin-bottom: .6rem;
color: inherit;
font-weight: 600;
font-size: 1.25rem;
line-height: 1.6;
opacity: .7;
code {
font-size: .9rem;
}
+ * {
margin-top: 0;
}
}
h4 {
margin-top: 1.5rem;
margin-bottom: .5rem;
color: inherit;
font-weight: 600;
line-height: 1.5;
+ * {
margin-top: 0;
}
}
h5,
h6 {
margin-top: 20px;
margin-bottom: 10px;
font-weight: 500;
letter-spacing: 2px;
text-transform: uppercase;
opacity: .5;
}
hr {
margin-top: 3rem;
margin-bottom: 3rem;
border-color: var(--xm-c-hr-border);
+ * {
margin-top: 0;
}
}

View File

@ -1,267 +1,6 @@
.markdown-body,
@use 'partials/container' as *;
.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;
}
@include container;
@import 'partials/all';
}

View File

@ -1,11 +1,11 @@
$shiki-light: #f8f8f8;
$shiki-dark: #0e0e0e;
$link-border: hsla(0, 0%, 50%, .3);
$link-border: hsla(0deg 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);
$hr-border: hsla(0deg 0 50% / .3);
$quote-border: hsla(0deg 0 50% / .3);
$figcaption: #6b7280;
$pre: #e5e7eb;
$thead: #111827;

View File

@ -0,0 +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-serif: 'Merriweather', 'Georgia', 'Times New Roman', 'Times', 'Source Han Serif Traditional Chinese', 'Source Han Serif Simplified Chinese', 'Noto Serif TC', 'Noto Serif SC', serif;
$font-mono: 'DM Mono', 'Fira Code', 'Jetbrains Mono', 'Input Mono', 'Menlo', 'MesloLGS NF', 'Ubuntu', monospace;
$font-display: var(--xm-font-sans);

View File

@ -1,9 +1,9 @@
@use 'sass:meta' as *;
@use '_vars/constants';
@use '_vars/colors';
@use '_vars/light';
@use '_vars/dark';
@use 'variables/constants';
@use 'variables/colors';
@use 'variables/light';
@use 'variables/dark';
:root {
@each $name, $val in module-variables('constants') {