sindresorhus / generate-github-markdown-css

Generate the CSS for github-markdown-css
MIT License
380 stars 77 forks source link

Fix support for latest GitHub styles #34

Closed hyrious closed 3 months ago

hyrious commented 3 months ago

GitHub updates its styles to use --fgColor-default instead of previously --color-fg-default, these strange-cased variables are from 2 files: primer-primitives-[hash].css and primer-[hash].css.

This PR respects this fact and fixes the generated styles to including variables from primer*.css.

As a result, some code (previously was a hack) can be removed.

Closes #31 Closes #32

Diff with current github-markdown-css/:

diff --git a/github-markdown.css b/dist/auto.css
index d32a314..f69c1f3 100644
--- a/github-markdown.css
+++ b/dist/auto.css
@@ -3,8 +3,36 @@
   [data-theme="dark"] {
     /*dark*/
     color-scheme: dark;
+    --fontStack-monospace: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
+    --base-text-weight-semibold: 600;
+    --base-text-weight-medium: 500;
+    --base-text-weight-normal: 400;
+    --base-size-16: 1rem;
+    --base-size-8: 0.5rem;
+    --base-size-4: 0.25rem;
+    --focus-outlineColor: #1f6feb;
+    --fgColor-default: #e6edf3;
+    --fgColor-muted: #8d96a0;
+    --fgColor-accent: #4493f8;
+    --fgColor-success: #3fb950;
+    --fgColor-attention: #d29922;
+    --fgColor-danger: #f85149;
+    --fgColor-done: #ab7df8;
+    --bgColor-default: #0d1117;
+    --bgColor-muted: #161b22;
+    --bgColor-neutral-muted: #6e768166;
+    --bgColor-attention-muted: #bb800926;
+    --borderColor-default: #30363d;
+    --borderColor-muted: #30363db3;
+    --borderColor-neutral-muted: #6e768166;
+    --borderColor-accent-emphasis: #1f6feb;
+    --borderColor-success-emphasis: #238636;
+    --borderColor-attention-emphasis: #9e6a03;
+    --borderColor-danger-emphasis: #da3633;
+    --borderColor-done-emphasis: #8957e5;
     --color-prettylights-syntax-comment: #8b949e;
     --color-prettylights-syntax-constant: #79c0ff;
+    --color-prettylights-syntax-constant-other-reference-link: #a5d6ff;
     --color-prettylights-syntax-entity: #d2a8ff;
     --color-prettylights-syntax-storage-modifier-import: #c9d1d9;
     --color-prettylights-syntax-entity-tag: #7ee787;
@@ -12,6 +40,7 @@
     --color-prettylights-syntax-string: #a5d6ff;
     --color-prettylights-syntax-variable: #ffa657;
     --color-prettylights-syntax-brackethighlighter-unmatched: #f85149;
+    --color-prettylights-syntax-brackethighlighter-angle: #8b949e;
     --color-prettylights-syntax-invalid-illegal-text: #f0f6fc;
     --color-prettylights-syntax-invalid-illegal-bg: #8e1519;
     --color-prettylights-syntax-carriage-return-text: #f0f6fc;
@@ -30,28 +59,7 @@
     --color-prettylights-syntax-markup-ignored-text: #c9d1d9;
     --color-prettylights-syntax-markup-ignored-bg: #1158c7;
     --color-prettylights-syntax-meta-diff-range: #d2a8ff;
-    --color-prettylights-syntax-brackethighlighter-angle: #8b949e;
     --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;
-    --color-prettylights-syntax-constant-other-reference-link: #a5d6ff;
-    --color-fg-default: #e6edf3;
-    --color-fg-muted: #848d97;
-    --color-fg-subtle: #6e7681;
-    --color-canvas-default: #0d1117;
-    --color-canvas-subtle: #161b22;
-    --color-border-default: #30363d;
-    --color-border-muted: #21262d;
-    --color-neutral-muted: rgba(110,118,129,0.4);
-    --color-accent-fg: #2f81f7;
-    --color-accent-emphasis: #1f6feb;
-    --color-success-fg: #3fb950;
-    --color-success-emphasis: #238636;
-    --color-attention-fg: #d29922;
-    --color-attention-emphasis: #9e6a03;
-    --color-attention-subtle: rgba(187,128,9,0.15);
-    --color-danger-fg: #f85149;
-    --color-danger-emphasis: #da3633;
-    --color-done-fg: #a371f7;
-    --color-done-emphasis: #8957e5;
   }
 }

@@ -60,15 +68,44 @@
   [data-theme="light"] {
     /*light*/
     color-scheme: light;
+    --fontStack-monospace: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
+    --base-text-weight-semibold: 600;
+    --base-text-weight-medium: 500;
+    --base-text-weight-normal: 400;
+    --base-size-16: 1rem;
+    --base-size-8: 0.5rem;
+    --base-size-4: 0.25rem;
+    --focus-outlineColor: #0969da;
+    --fgColor-default: #1f2328;
+    --fgColor-muted: #636c76;
+    --fgColor-accent: #0969da;
+    --fgColor-success: #1a7f37;
+    --fgColor-attention: #9a6700;
+    --fgColor-danger: #d1242f;
+    --fgColor-done: #8250df;
+    --bgColor-default: #ffffff;
+    --bgColor-muted: #f6f8fa;
+    --bgColor-neutral-muted: #afb8c133;
+    --bgColor-attention-muted: #fff8c5;
+    --borderColor-default: #d0d7de;
+    --borderColor-muted: #d0d7deb3;
+    --borderColor-neutral-muted: #afb8c133;
+    --borderColor-accent-emphasis: #0969da;
+    --borderColor-success-emphasis: #1a7f37;
+    --borderColor-attention-emphasis: #bf8700;
+    --borderColor-danger-emphasis: #cf222e;
+    --borderColor-done-emphasis: #8250df;
     --color-prettylights-syntax-comment: #57606a;
     --color-prettylights-syntax-constant: #0550ae;
+    --color-prettylights-syntax-constant-other-reference-link: #0a3069;
     --color-prettylights-syntax-entity: #6639ba;
     --color-prettylights-syntax-storage-modifier-import: #24292f;
-    --color-prettylights-syntax-entity-tag: #116329;
+    --color-prettylights-syntax-entity-tag: #0550ae;
     --color-prettylights-syntax-keyword: #cf222e;
     --color-prettylights-syntax-string: #0a3069;
     --color-prettylights-syntax-variable: #953800;
     --color-prettylights-syntax-brackethighlighter-unmatched: #82071e;
+    --color-prettylights-syntax-brackethighlighter-angle: #57606a;
     --color-prettylights-syntax-invalid-illegal-text: #f6f8fa;
     --color-prettylights-syntax-invalid-illegal-bg: #82071e;
     --color-prettylights-syntax-carriage-return-text: #f6f8fa;
@@ -87,28 +124,7 @@
     --color-prettylights-syntax-markup-ignored-text: #eaeef2;
     --color-prettylights-syntax-markup-ignored-bg: #0550ae;
     --color-prettylights-syntax-meta-diff-range: #8250df;
-    --color-prettylights-syntax-brackethighlighter-angle: #57606a;
     --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;
-    --color-prettylights-syntax-constant-other-reference-link: #0a3069;
-    --color-fg-default: #1F2328;
-    --color-fg-muted: #656d76;
-    --color-fg-subtle: #6e7781;
-    --color-canvas-default: #ffffff;
-    --color-canvas-subtle: #f6f8fa;
-    --color-border-default: #d0d7de;
-    --color-border-muted: hsla(210,18%,87%,1);
-    --color-neutral-muted: rgba(175,184,193,0.2);
-    --color-accent-fg: #0969da;
-    --color-accent-emphasis: #0969da;
-    --color-success-fg: #1a7f37;
-    --color-success-emphasis: #1f883d;
-    --color-attention-fg: #9a6700;
-    --color-attention-emphasis: #9a6700;
-    --color-attention-subtle: #fff8c5;
-    --color-danger-fg: #d1242f;
-    --color-danger-emphasis: #cf222e;
-    --color-done-fg: #8250df;
-    --color-done-emphasis: #8250df;
   }
 }

@@ -116,12 +132,13 @@
   -ms-text-size-adjust: 100%;
   -webkit-text-size-adjust: 100%;
   margin: 0;
-  color: var(--color-fg-default);
-  background-color: var(--color-canvas-default);
+  color: var(--fgColor-default);
+  background-color: var(--bgColor-default);
   font-family: -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";
   font-size: 16px;
   line-height: 1.5;
   word-wrap: break-word;
+  scroll-behavior: auto;
 }

 .markdown-body .octicon {
@@ -161,7 +178,7 @@

 .markdown-body a {
   background-color: transparent;
-  color: var(--color-accent-fg);
+  color: var(--fgColor-accent);
   text-decoration: none;
 }

@@ -185,12 +202,12 @@
   font-weight: var(--base-text-weight-semibold, 600);
   padding-bottom: .3em;
   font-size: 2em;
-  border-bottom: 1px solid var(--color-border-muted);
+  border-bottom: 1px solid var(--borderColor-muted);
 }

 .markdown-body mark {
-  background-color: var(--color-attention-subtle);
-  color: var(--color-fg-default);
+  background-color: var(--bgColor-attention-muted);
+  color: var(--fgColor-default);
 }

 .markdown-body small {
@@ -217,7 +234,7 @@
   border-style: none;
   max-width: 100%;
   box-sizing: content-box;
-  background-color: var(--color-canvas-default);
+  background-color: var(--bgColor-default);
 }

 .markdown-body code,
@@ -236,11 +253,11 @@
   box-sizing: content-box;
   overflow: hidden;
   background: transparent;
-  border-bottom: 1px solid var(--color-border-muted);
+  border-bottom: 1px solid var(--borderColor-muted);
   height: .25em;
   padding: 0;
   margin: 24px 0;
-  background-color: var(--color-border-default);
+  background-color: var(--borderColor-default);
   border: 0;
 }

@@ -293,7 +310,7 @@
 }

 .markdown-body ::placeholder {
-  color: var(--color-fg-subtle);
+  color: var(--fgColor-muted);
   opacity: 1;
 }

@@ -327,14 +344,14 @@
 }

 .markdown-body details:not([open])>*:not(summary) {
-  display: none !important;
+  display: none;
 }

 .markdown-body a:focus,
 .markdown-body [role=button]:focus,
 .markdown-body input[type=radio]:focus,
 .markdown-body input[type=checkbox]:focus {
-  outline: 2px solid var(--color-accent-fg);
+  outline: 2px solid var(--focus-outlineColor);
   outline-offset: -2px;
   box-shadow: none;
 }
@@ -350,7 +367,7 @@
 .markdown-body [role=button]:focus-visible,
 .markdown-body input[type=radio]:focus-visible,
 .markdown-body input[type=checkbox]:focus-visible {
-  outline: 2px solid var(--color-accent-fg);
+  outline: 2px solid var(--focus-outlineColor);
   outline-offset: -2px;
   box-shadow: none;
 }
@@ -367,15 +384,15 @@
 .markdown-body kbd {
   display: inline-block;
   padding: 3px 5px;
-  font: 11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;
+  font: 11px var(--fontStack-monospace, ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace);
   line-height: 10px;
-  color: var(--color-fg-default);
+  color: var(--fgColor-default);
   vertical-align: middle;
-  background-color: var(--color-canvas-subtle);
-  border: solid 1px var(--color-neutral-muted);
-  border-bottom-color: var(--color-neutral-muted);
+  background-color: var(--bgColor-muted);
+  border: solid 1px var(--borderColor-neutral-muted);
+  border-bottom-color: var(--borderColor-neutral-muted);
   border-radius: 6px;
-  box-shadow: inset 0 -1px 0 var(--color-neutral-muted);
+  box-shadow: inset 0 -1px 0 var(--borderColor-neutral-muted);
 }

 .markdown-body h1,
@@ -394,7 +411,7 @@
   font-weight: var(--base-text-weight-semibold, 600);
   padding-bottom: .3em;
   font-size: 1.5em;
-  border-bottom: 1px solid var(--color-border-muted);
+  border-bottom: 1px solid var(--borderColor-muted);
 }

 .markdown-body h3 {
@@ -415,7 +432,7 @@
 .markdown-body h6 {
   font-weight: var(--base-text-weight-semibold, 600);
   font-size: .85em;
-  color: var(--color-fg-muted);
+  color: var(--fgColor-muted);
 }

 .markdown-body p {
@@ -426,8 +443,8 @@
 .markdown-body blockquote {
   margin: 0;
   padding: 0 1em;
-  color: var(--color-fg-muted);
-  border-left: .25em solid var(--color-border-default);
+  color: var(--fgColor-muted);
+  border-left: .25em solid var(--borderColor-default);
 }

 .markdown-body ul,
@@ -456,14 +473,14 @@
 .markdown-body tt,
 .markdown-body code,
 .markdown-body samp {
-  font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;
+  font-family: var(--fontStack-monospace, ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace);
   font-size: 12px;
 }

 .markdown-body pre {
   margin-top: 0;
   margin-bottom: 0;
-  font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;
+  font-family: var(--fontStack-monospace, ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace);
   font-size: 12px;
   word-wrap: normal;
 }
@@ -511,7 +528,7 @@
 }

 .markdown-body .absent {
-  color: var(--color-danger-fg);
+  color: var(--fgColor-danger);
 }

 .markdown-body .anchor {
@@ -551,7 +568,7 @@
 .markdown-body h4 .octicon-link,
 .markdown-body h5 .octicon-link,
 .markdown-body h6 .octicon-link {
-  color: var(--color-fg-default);
+  color: var(--fgColor-default);
   vertical-align: middle;
   visibility: hidden;
 }
@@ -684,7 +701,7 @@
 .markdown-body table th,
 .markdown-body table td {
   padding: 6px 13px;
-  border: 1px solid var(--color-border-default);
+  border: 1px solid var(--borderColor-default);
 }

 .markdown-body table td>:last-child {
@@ -692,12 +709,12 @@
 }

 .markdown-body table tr {
-  background-color: var(--color-canvas-default);
-  border-top: 1px solid var(--color-border-muted);
+  background-color: var(--bgColor-default);
+  border-top: 1px solid var(--borderColor-muted);
 }

 .markdown-body table tr:nth-child(2n) {
-  background-color: var(--color-canvas-subtle);
+  background-color: var(--bgColor-muted);
 }

 .markdown-body table img {
@@ -730,7 +747,7 @@
   padding: 7px;
   margin: 13px 0 0;
   overflow: hidden;
-  border: 1px solid var(--color-border-default);
+  border: 1px solid var(--borderColor-default);
 }

 .markdown-body span.frame span img {
@@ -742,7 +759,7 @@
   display: block;
   padding: 5px 0 0;
   clear: both;
-  color: var(--color-fg-default);
+  color: var(--fgColor-default);
 }

 .markdown-body span.align-center {
@@ -812,7 +829,7 @@
   margin: 0;
   font-size: 85%;
   white-space: break-spaces;
-  background-color: var(--color-neutral-muted);
+  background-color: var(--bgColor-neutral-muted);
   border-radius: 6px;
 }

@@ -857,8 +874,8 @@
   overflow: auto;
   font-size: 85%;
   line-height: 1.45;
-  color: var(--color-fg-default);
-  background-color: var(--color-canvas-subtle);
+  color: var(--fgColor-default);
+  background-color: var(--bgColor-muted);
   border-radius: 6px;
 }

@@ -888,7 +905,7 @@
 .markdown-body .csv-data .blob-num {
   padding: 10px 8px 9px;
   text-align: right;
-  background: var(--color-canvas-default);
+  background: var(--bgColor-default);
   border: 0;
 }

@@ -898,7 +915,7 @@

 .markdown-body .csv-data th {
   font-weight: var(--base-text-weight-semibold, 600);
-  background: var(--color-canvas-subtle);
+  background: var(--bgColor-muted);
   border-top: 0;
 }

@@ -912,8 +929,8 @@

 .markdown-body .footnotes {
   font-size: 12px;
-  color: var(--color-fg-muted);
-  border-top: 1px solid var(--color-border-default);
+  color: var(--fgColor-muted);
+  border-top: 1px solid var(--borderColor-default);
 }

 .markdown-body .footnotes ol {
@@ -938,12 +955,12 @@
   left: -24px;
   pointer-events: none;
   content: "";
-  border: 2px solid var(--color-accent-emphasis);
+  border: 2px solid var(--borderColor-accent-emphasis);
   border-radius: 6px;
 }

 .markdown-body .footnotes li:target {
-  color: var(--color-fg-default);
+  color: var(--fgColor-default);
 }

 .markdown-body .footnotes .data-footnote-backref g-emoji {
@@ -1070,6 +1087,20 @@
   color: var(--color-prettylights-syntax-constant-other-reference-link);
 }

+.markdown-body [role=button]:focus:not(:focus-visible),
+.markdown-body [role=tabpanel][tabindex="0"]:focus:not(:focus-visible),
+.markdown-body button:focus:not(:focus-visible),
+.markdown-body summary:focus:not(:focus-visible),
+.markdown-body a:focus:not(:focus-visible) {
+  outline: none;
+  box-shadow: none;
+}
+
+.markdown-body [tabindex="0"]:focus:not(:focus-visible),
+.markdown-body details-dialog:focus:not(:focus-visible) {
+  outline: none;
+}
+
 .markdown-body g-emoji {
   display: inline-block;
   min-width: 1ch;
@@ -1099,7 +1130,7 @@
 }

 .markdown-body .task-list-item+.task-list-item {
-  margin-top: 4px;
+  margin-top: var(--base-size-4);
 }

 .markdown-body .task-list-item .handle {
@@ -1134,9 +1165,9 @@

 .markdown-body .markdown-alert {
   padding: var(--base-size-8) var(--base-size-16);
-  margin-bottom: 16px;
+  margin-bottom: var(--base-size-16);
   color: inherit;
-  border-left: .25em solid var(--color-border-default);
+  border-left: .25em solid var(--borderColor-default);
 }

 .markdown-body .markdown-alert>:first-child {
@@ -1155,41 +1186,45 @@
 }

 .markdown-body .markdown-alert.markdown-alert-note {
-  border-left-color: var(--color-accent-emphasis);
+  border-left-color: var(--borderColor-accent-emphasis);
 }

 .markdown-body .markdown-alert.markdown-alert-note .markdown-alert-title {
-  color: var(--color-accent-fg);
+  color: var(--fgColor-accent);
 }

 .markdown-body .markdown-alert.markdown-alert-important {
-  border-left-color: var(--color-done-emphasis);
+  border-left-color: var(--borderColor-done-emphasis);
 }

 .markdown-body .markdown-alert.markdown-alert-important .markdown-alert-title {
-  color: var(--color-done-fg);
+  color: var(--fgColor-done);
 }

 .markdown-body .markdown-alert.markdown-alert-warning {
-  border-left-color: var(--color-attention-emphasis);
+  border-left-color: var(--borderColor-attention-emphasis);
 }

 .markdown-body .markdown-alert.markdown-alert-warning .markdown-alert-title {
-  color: var(--color-attention-fg);
+  color: var(--fgColor-attention);
 }

 .markdown-body .markdown-alert.markdown-alert-tip {
-  border-left-color: var(--color-success-emphasis);
+  border-left-color: var(--borderColor-success-emphasis);
 }

 .markdown-body .markdown-alert.markdown-alert-tip .markdown-alert-title {
-  color: var(--color-success-fg);
+  color: var(--fgColor-success);
 }

 .markdown-body .markdown-alert.markdown-alert-caution {
-  border-left-color: var(--color-danger-emphasis);
+  border-left-color: var(--borderColor-danger-emphasis);
 }

 .markdown-body .markdown-alert.markdown-alert-caution .markdown-alert-title {
-  color: var(--color-danger-fg);
+  color: var(--fgColor-danger);
 }
+
+.markdown-body>*:first-child>.heading-element:first-child {
+  margin-top: 0 !important;
+}

Notice --fontStack-monospace is also included without extra hack.