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

Compare commits

...

13 Commits

20 changed files with 1857 additions and 357 deletions

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

@ -0,0 +1,56 @@
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: 16
registry-url: https://registry.npmjs.org/
# Step IV
- name: Install Dependencies
run: npm ci
# Step V
- name: 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.org/
# Step III
- name: Install Dependencies
run: npm ci
# Step IV
- name: Test Build
run: npm run build

View File

@ -21,6 +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/
# Step III # Step III
- name: Install Dependencies - name: Install Dependencies
run: npm ci run: npm ci

94
.stylelintrc Normal file
View File

@ -0,0 +1,94 @@
{
"extends": "stylelint-config-standard-scss",
"plugins": [
"stylelint-scss",
"stylelint-order"
],
"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,
"number-leading-zero": "never",
"property-no-vendor-prefix": true,
"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"
]
}
}

View File

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

1402
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "x-markdown-css", "name": "x-markdown-css",
"version": "0.0.0-20230228.11", "version": "0.0.0-20230228.15",
"description": "A simple and customizable Markdown CSS for everyone.", "description": "A simple and customizable Markdown CSS for everyone.",
"keywords": [ "keywords": [
"markdown", "markdown",
@ -28,11 +28,13 @@
}, },
"homepage": "https://github.com/kuohuanhuan/x-markdown-css#readme", "homepage": "https://github.com/kuohuanhuan/x-markdown-css#readme",
"engines": { "engines": {
"node": ">=14" "node": ">=16"
}, },
"scripts": { "scripts": {
"build": "grunt build", "build": "grunt build",
"bump": "bumpp" "bump": "bumpp",
"lint": "stylelint **/*.scss --config .stylelintrc",
"lint:fix": "stylelint **/*.scss --config .stylelintrc --fix"
}, },
"dependencies": { "dependencies": {
"coffeescript": "^2.7.0", "coffeescript": "^2.7.0",
@ -46,6 +48,10 @@
"grunt": "^1.6.1", "grunt": "^1.6.1",
"grunt-sass": "^3.1.0", "grunt-sass": "^3.1.0",
"load-grunt-tasks": "^5.1.0", "load-grunt-tasks": "^5.1.0",
"postcss": "^8.4.21" "postcss": "^8.4.21",
"stylelint": "^15.2.0",
"stylelint-config-standard-scss": "^7.0.1",
"stylelint-order": "^6.0.2",
"stylelint-scss": "^4.4.0"
} }
} }

View File

@ -0,0 +1,35 @@
code {
font-size: .875rem;
font-weight: 600;
color: var(--xm-c-dark);
&::before, &::after {
content: '`';
}
}
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;
}
}
}

View File

@ -0,0 +1,13 @@
.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;
}
}

View File

@ -0,0 +1,14 @@
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;
}
}

View File

@ -0,0 +1,8 @@
a {
font-weight: 500;
text-decoration: none;
color: var(--xm-c-darker);
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;
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%;
}
}
}
ul ul,
ul ol,
ol ul,
ol ol {
margin-top: .75rem;
margin-bottom: .75rem;
}

View File

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

View File

@ -0,0 +1,20 @@
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;
}
}
}

View File

@ -0,0 +1,46 @@
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;
}
}
}

View File

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

View File

@ -0,0 +1,64 @@
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;
}
}
h5,
h6 {
text-transform: uppercase;
margin-top: 20px;
margin-bottom: 10px;
font-weight: 500;
opacity: .5;
letter-spacing: 2px;
}
hr {
margin-top: 3rem;
border-color: var(--xm-c-hr-border);
margin-bottom: 3rem;
+ * {
margin-top: 0;
}
}

View File

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

View File

@ -1,2 +1,2 @@
$font-sans: 'Open Sans', 'Inter', 'Roboto', 'Helvetica', 'Arial', 'Noto Sans TC', 'Noto Sans SC', 'Sarasa Gothic TC', 'Sarasa Gothic SC', 'Microsoft JhengHei', 'Microsoft YaHei', -apple-system, sans-serif; $font-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-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;

View File

@ -1,6 +1,6 @@
.markdown-body { .markdown-body {
color: var(--xm-c-general);
font-family: var(--xm-font-sans) !important; font-family: var(--xm-font-sans) !important;
color: var(--xm-c-general);
pre { pre {
&:not(.shiki, .highlight) { &:not(.shiki, .highlight) {
margin: 0; margin: 0;
@ -67,17 +67,11 @@
margin-top: 1rem; margin-top: 1rem;
} }
} }
.dark { .dark .shiki-light {
.shiki-light { display: none;
display: none;
}
} }
html { html:not(.dark) .shiki-dark {
&:not(.dark) { display: none;
.shiki-dark {
display: none;
}
}
} }
.item { .item {
text-decoration: none; text-decoration: none;
@ -103,72 +97,13 @@ html {
text-decoration: none; text-decoration: none;
} }
} }
h1 { h1,
&:hover { h2,
.header-anchor { h3,
opacity: .5; h4,
} h5,
}
&: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 { h6 {
&:hover { &:hover,
.header-anchor {
opacity: .5;
}
}
&:focus { &:focus {
.header-anchor { .header-anchor {
opacity: .5; opacity: .5;

View File

@ -1,267 +1,14 @@
@use '_partial/container' as *;
.markdown-body, .markdown-body,
.prose { .prose {
max-width: 65ch; @import '_partial/title';
font-size: 1rem; @import '_partial/text';
color: var(--xm-c-general); @import '_partial/link';
line-height: 1.75; @import '_partial/code';
code { @import '_partial/quote';
font-size: .875rem; @import '_partial/figure';
font-weight: 600; @import '_partial/list';
color: var(--xm-c-dark); @import '_partial/table';
&::before, &::after { @import '_partial/media';
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;
}
} }