feat(admonition): polish

- sort by type names
- tweak colors of some types
- improve dark mode contrast
- prune css
- simplify render hook
This commit is contained in:
ZhenShuo Leo
2025-12-22 18:02:43 +08:00
parent 3f2891cc32
commit 07f2fec870
8 changed files with 306 additions and 366 deletions

View File

@@ -410,6 +410,9 @@
.ms-6 { .ms-6 {
margin-inline-start: calc(var(--spacing) * 6); margin-inline-start: calc(var(--spacing) * 6);
} }
.ms-auto {
margin-inline-start: auto;
}
.-me-48 { .-me-48 {
margin-inline-end: calc(var(--spacing) * -48); margin-inline-end: calc(var(--spacing) * -48);
} }
@@ -985,9 +988,6 @@
.ml-2 { .ml-2 {
margin-left: calc(var(--spacing) * 2); margin-left: calc(var(--spacing) * 2);
} }
.ml-auto {
margin-left: auto;
}
.box-border { .box-border {
box-sizing: border-box; box-sizing: border-box;
} }
@@ -1092,9 +1092,6 @@
.h-3 { .h-3 {
height: calc(var(--spacing) * 3); height: calc(var(--spacing) * 3);
} }
.h-4 {
height: calc(var(--spacing) * 4);
}
.h-5 { .h-5 {
height: calc(var(--spacing) * 5); height: calc(var(--spacing) * 5);
} }
@@ -1173,9 +1170,6 @@
.w-3 { .w-3 {
width: calc(var(--spacing) * 3); width: calc(var(--spacing) * 3);
} }
.w-4 {
width: calc(var(--spacing) * 4);
}
.w-5 { .w-5 {
width: calc(var(--spacing) * 5); width: calc(var(--spacing) * 5);
} }
@@ -1452,11 +1446,6 @@
.self-center { .self-center {
align-self: center; align-self: center;
} }
.truncate {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.\!overflow-hidden { .\!overflow-hidden {
overflow: hidden !important; overflow: hidden !important;
} }
@@ -1978,10 +1967,6 @@
--tw-leading: var(--leading-relaxed); --tw-leading: var(--leading-relaxed);
line-height: var(--leading-relaxed); line-height: var(--leading-relaxed);
} }
.leading-snug {
--tw-leading: var(--leading-snug);
line-height: var(--leading-snug);
}
.font-bold { .font-bold {
--tw-font-weight: var(--font-weight-bold); --tw-font-weight: var(--font-weight-bold);
font-weight: var(--font-weight-bold); font-weight: var(--font-weight-bold);
@@ -2029,9 +2014,6 @@
.\!text-neutral { .\!text-neutral {
color: rgba(var(--color-neutral), 1) !important; color: rgba(var(--color-neutral), 1) !important;
} }
.text-current {
color: currentcolor;
}
.text-inherit { .text-inherit {
color: inherit; color: inherit;
} }
@@ -2406,20 +2388,6 @@
border-top-color: transparent; border-top-color: transparent;
} }
} }
.marker\:hidden {
& *::marker {
display: none;
}
&::marker {
display: none;
}
& *::-webkit-details-marker {
display: none;
}
&::-webkit-details-marker {
display: none;
}
}
.before\:absolute { .before\:absolute {
&::before { &::before {
content: var(--tw-content); content: var(--tw-content);
@@ -3340,26 +3308,11 @@
} }
} }
} }
.print\:block {
@media print {
display: block;
}
}
.print\:hidden { .print\:hidden {
@media print { @media print {
display: none; display: none;
} }
} }
.print\:break-inside-avoid {
@media print {
break-inside: avoid;
}
}
.\[\&\:\:-webkit-details-marker\]\:hidden {
&::-webkit-details-marker {
display: none;
}
}
} }
@layer utilities { @layer utilities {
.prose .chroma { .prose .chroma {
@@ -3601,12 +3554,12 @@ body.zen-mode-enable {
} }
@layer components { @layer components {
:root { :root {
--adm-note-border: oklch(62.3% 0.214 259.815); --adm-note-border: oklch(68.5% 0.169 237.323);
--adm-note-bg: oklch(97% 0.014 254.604); --adm-note-bg: oklch(97.7% 0.013 236.62);
--adm-note-text: oklch(37.9% 0.146 265.522); --adm-note-text: oklch(39.1% 0.09 240.876);
--adm-tip-border: oklch(70.4% 0.14 182.503); --adm-tip-border: oklch(69.6% 0.17 162.48);
--adm-tip-bg: oklch(98.4% 0.014 180.72); --adm-tip-bg: oklch(97.9% 0.021 166.113);
--adm-tip-text: oklch(38.6% 0.063 188.416); --adm-tip-text: oklch(37.8% 0.077 168.94);
--adm-important-border: oklch(62.7% 0.265 303.9); --adm-important-border: oklch(62.7% 0.265 303.9);
--adm-important-bg: oklch(97.7% 0.014 308.299); --adm-important-bg: oklch(97.7% 0.014 308.299);
--adm-important-text: oklch(38.1% 0.176 304.987); --adm-important-text: oklch(38.1% 0.176 304.987);
@@ -3619,78 +3572,75 @@ body.zen-mode-enable {
--adm-abstract-border: oklch(71.5% 0.143 215.221); --adm-abstract-border: oklch(71.5% 0.143 215.221);
--adm-abstract-bg: oklch(98.4% 0.019 200.873); --adm-abstract-bg: oklch(98.4% 0.019 200.873);
--adm-abstract-text: oklch(39.8% 0.07 227.392); --adm-abstract-text: oklch(39.8% 0.07 227.392);
--adm-info-border: oklch(68.5% 0.169 237.323);
--adm-info-bg: oklch(97.7% 0.013 236.62);
--adm-info-text: oklch(39.1% 0.09 240.876);
--adm-todo-border: oklch(55.4% 0.046 257.417);
--adm-todo-bg: oklch(98.4% 0.003 247.858);
--adm-todo-text: oklch(27.9% 0.041 260.031);
--adm-success-border: oklch(72.3% 0.219 149.579);
--adm-success-bg: oklch(98.2% 0.018 155.826);
--adm-success-text: oklch(39.3% 0.095 152.535);
--adm-question-border: oklch(76.9% 0.188 70.08);
--adm-question-bg: oklch(98.7% 0.022 95.277);
--adm-question-text: oklch(41.4% 0.112 45.904);
--adm-failure-border: oklch(65.6% 0.241 354.308);
--adm-failure-bg: oklch(97.1% 0.014 343.198);
--adm-failure-text: oklch(40.8% 0.153 2.432);
--adm-danger-border: oklch(63.7% 0.237 25.331);
--adm-danger-bg: oklch(97.1% 0.013 17.38);
--adm-danger-text: oklch(39.6% 0.141 25.723);
--adm-bug-border: oklch(64.5% 0.246 16.439); --adm-bug-border: oklch(64.5% 0.246 16.439);
--adm-bug-bg: oklch(96.9% 0.015 12.422); --adm-bug-bg: oklch(96.9% 0.015 12.422);
--adm-bug-text: oklch(41% 0.159 10.272); --adm-bug-text: oklch(41% 0.159 10.272);
--adm-danger-border: oklch(63.7% 0.237 25.331);
--adm-danger-bg: oklch(97.1% 0.013 17.38);
--adm-danger-text: oklch(39.6% 0.141 25.723);
--adm-example-border: oklch(55.8% 0.288 302.321); --adm-example-border: oklch(55.8% 0.288 302.321);
--adm-example-bg: oklch(97.7% 0.014 308.299); --adm-example-bg: oklch(97.7% 0.014 308.299);
--adm-example-text: oklch(38.1% 0.176 304.987); --adm-example-text: oklch(38.1% 0.176 304.987);
--adm-failure-border: oklch(65.6% 0.241 354.308);
--adm-failure-bg: oklch(97.1% 0.014 343.198);
--adm-failure-text: oklch(40.8% 0.153 2.432);
--adm-info-border: oklch(62.3% 0.214 259.815);
--adm-info-bg: oklch(97% 0.014 254.604);
--adm-info-text: oklch(37.9% 0.146 265.522);
--adm-question-border: oklch(76.9% 0.188 70.08);
--adm-question-bg: oklch(98.7% 0.022 95.277);
--adm-question-text: oklch(41.4% 0.112 45.904);
--adm-quote-border: oklch(55.1% 0.027 264.364); --adm-quote-border: oklch(55.1% 0.027 264.364);
--adm-quote-bg: oklch(98.5% 0.002 247.839); --adm-quote-bg: oklch(98.5% 0.002 247.839);
--adm-quote-text: oklch(27.8% 0.033 256.848); --adm-quote-text: oklch(27.8% 0.033 256.848);
--adm-success-border: oklch(69.6% 0.17 162.48);
--adm-success-bg: oklch(97.9% 0.021 166.113);
--adm-success-text: oklch(37.8% 0.077 168.94);
--adm-todo-border: oklch(68.5% 0.169 237.323);
--adm-todo-bg: oklch(97.7% 0.013 236.62);
--adm-todo-text: oklch(44.3% 0.11 240.79);
} }
html.dark { html.dark {
--adm-note-bg: color-mix(in oklab, oklch(37.9% 0.146 265.522) 60%, transparent); --adm-note-bg: color-mix(in srgb, color-mix(in oklab, oklch(39.1% 0.09 240.876) 40%, transparent), black 15%);
--adm-note-text: oklch(93.2% 0.032 255.585); --adm-note-text: oklch(95.1% 0.026 236.824);
--adm-tip-bg: color-mix(in oklab, oklch(38.6% 0.063 188.416) 60%, transparent); --adm-tip-bg: color-mix(in srgb, color-mix(in oklab, oklch(37.8% 0.077 168.94) 40%, transparent), black 15%);
--adm-tip-text: oklch(95.3% 0.051 180.801); --adm-tip-text: oklch(95% 0.052 163.051);
--adm-important-bg: color-mix(in oklab, oklch(38.1% 0.176 304.987) 60%, transparent); --adm-important-bg: color-mix(in srgb, color-mix(in oklab, oklch(38.1% 0.176 304.987) 40%, transparent), black 15%);
--adm-important-text: oklch(94.6% 0.033 307.174); --adm-important-text: oklch(94.6% 0.033 307.174);
--adm-warning-bg: color-mix(in oklab, oklch(40.8% 0.123 38.172) 60%, transparent); --adm-warning-bg: color-mix(in srgb, color-mix(in oklab, oklch(40.8% 0.123 38.172) 40%, transparent), black 15%);
--adm-warning-text: oklch(95.4% 0.038 75.164); --adm-warning-text: oklch(95.4% 0.038 75.164);
--adm-caution-bg: color-mix(in oklab, oklch(39.6% 0.141 25.723) 60%, transparent); --adm-caution-bg: color-mix(in srgb, color-mix(in oklab, oklch(39.6% 0.141 25.723) 40%, transparent), black 15%);
--adm-caution-text: oklch(93.6% 0.032 17.717); --adm-caution-text: oklch(93.6% 0.032 17.717);
--adm-abstract-bg: color-mix(in oklab, oklch(39.8% 0.07 227.392) 60%, transparent); --adm-abstract-bg: color-mix(in srgb, color-mix(in oklab, oklch(39.8% 0.07 227.392) 40%, transparent), black 15%);
--adm-abstract-text: oklch(95.6% 0.045 203.388); --adm-abstract-text: oklch(95.6% 0.045 203.388);
--adm-info-bg: color-mix(in oklab, oklch(39.1% 0.09 240.876) 60%, transparent); --adm-bug-bg: color-mix(in srgb, color-mix(in oklab, oklch(41% 0.159 10.272) 40%, transparent), black 15%);
--adm-info-text: oklch(95.1% 0.026 236.824);
--adm-todo-bg: oklch(27.9% 0.041 260.031);
--adm-todo-text: oklch(96.8% 0.007 247.896);
--adm-success-bg: color-mix(in oklab, oklch(39.3% 0.095 152.535) 60%, transparent);
--adm-success-text: oklch(96.2% 0.044 156.743);
--adm-question-bg: color-mix(in oklab, oklch(41.4% 0.112 45.904) 60%, transparent);
--adm-question-text: oklch(96.2% 0.059 95.617);
--adm-failure-bg: color-mix(in oklab, oklch(40.8% 0.153 2.432) 60%, transparent);
--adm-failure-text: oklch(94.8% 0.028 342.258);
--adm-danger-bg: color-mix(in oklab, oklch(39.6% 0.141 25.723) 60%, transparent);
--adm-danger-text: oklch(93.6% 0.032 17.717);
--adm-bug-bg: color-mix(in oklab, oklch(41% 0.159 10.272) 60%, transparent);
--adm-bug-text: oklch(94.1% 0.03 12.58); --adm-bug-text: oklch(94.1% 0.03 12.58);
--adm-example-bg: color-mix(in oklab, oklch(38.1% 0.176 304.987) 60%, transparent); --adm-danger-bg: color-mix(in srgb, color-mix(in oklab, oklch(39.6% 0.141 25.723) 40%, transparent), black 15%);
--adm-danger-text: oklch(93.6% 0.032 17.717);
--adm-example-bg: color-mix(in srgb, color-mix(in oklab, oklch(38.1% 0.176 304.987) 40%, transparent), black 15%);
--adm-example-text: oklch(94.6% 0.033 307.174); --adm-example-text: oklch(94.6% 0.033 307.174);
--adm-quote-bg: color-mix(in oklab, oklch(21% 0.034 264.665) 60%, transparent); --adm-failure-bg: color-mix(in srgb, color-mix(in oklab, oklch(40.8% 0.153 2.432) 40%, transparent), black 15%);
--adm-failure-text: oklch(94.8% 0.028 342.258);
--adm-info-bg: color-mix(in srgb, color-mix(in oklab, oklch(37.9% 0.146 265.522) 40%, transparent), black 15%);
--adm-info-text: oklch(93.2% 0.032 255.585);
--adm-question-bg: color-mix(in srgb, color-mix(in oklab, oklch(41.4% 0.112 45.904) 40%, transparent), black 15%);
--adm-question-text: oklch(96.2% 0.059 95.617);
--adm-quote-bg: color-mix(in srgb, color-mix(in oklab, oklch(21% 0.034 264.665) 40%, transparent), black 15%);
--adm-quote-text: oklch(96.7% 0.003 264.542); --adm-quote-text: oklch(96.7% 0.003 264.542);
--adm-success-bg: color-mix(in srgb, color-mix(in oklab, oklch(37.8% 0.077 168.94) 40%, transparent), black 15%);
--adm-success-text: oklch(95% 0.052 163.051);
--adm-todo-bg: color-mix(in srgb, color-mix(in oklab, oklch(44.3% 0.11 240.79) 40%, transparent), black 15%);
--adm-todo-text: oklch(95.1% 0.026 236.824);
} }
.admonition .admonition-content > * { .admonition-content > :first-child {
margin-top: 0 !important;
}
.admonition-content > :last-child {
margin-bottom: 0 !important;
}
.admonition-content pre {
margin-block: 0 !important; margin-block: 0 !important;
} }
.admonition .admonition-content > * + * {
margin-top: 1.25em !important;
}
.admonition {
margin-block: calc(var(--spacing) * 3);
}
.prose .admonition + * {
margin-top: calc(var(--spacing) * 0);
}
.admonition[data-type="note"] { .admonition[data-type="note"] {
border-color: var(--adm-note-border); border-color: var(--adm-note-border);
background-color: var(--adm-note-bg); background-color: var(--adm-note-bg);
@@ -3721,51 +3671,51 @@ body.zen-mode-enable {
background-color: var(--adm-abstract-bg); background-color: var(--adm-abstract-bg);
color: var(--adm-abstract-text); color: var(--adm-abstract-text);
} }
.admonition[data-type="info"] { .admonition[data-type="bug"] {
border-color: var(--adm-info-border); border-color: var(--adm-bug-border);
background-color: var(--adm-info-bg); background-color: var(--adm-bug-bg);
color: var(--adm-info-text); color: var(--adm-bug-text);
}
.admonition[data-type="todo"] {
border-color: var(--adm-todo-border);
background-color: var(--adm-todo-bg);
color: var(--adm-todo-text);
}
.admonition[data-type="success"] {
border-color: var(--adm-success-border);
background-color: var(--adm-success-bg);
color: var(--adm-success-text);
}
.admonition[data-type="question"] {
border-color: var(--adm-question-border);
background-color: var(--adm-question-bg);
color: var(--adm-question-text);
}
.admonition[data-type="failure"] {
border-color: var(--adm-failure-border);
background-color: var(--adm-failure-bg);
color: var(--adm-failure-text);
} }
.admonition[data-type="danger"] { .admonition[data-type="danger"] {
border-color: var(--adm-danger-border); border-color: var(--adm-danger-border);
background-color: var(--adm-danger-bg); background-color: var(--adm-danger-bg);
color: var(--adm-danger-text); color: var(--adm-danger-text);
} }
.admonition[data-type="bug"] {
border-color: var(--adm-bug-border);
background-color: var(--adm-bug-bg);
color: var(--adm-bug-text);
}
.admonition[data-type="example"] { .admonition[data-type="example"] {
border-color: var(--adm-example-border); border-color: var(--adm-example-border);
background-color: var(--adm-example-bg); background-color: var(--adm-example-bg);
color: var(--adm-example-text); color: var(--adm-example-text);
} }
.admonition[data-type="failure"] {
border-color: var(--adm-failure-border);
background-color: var(--adm-failure-bg);
color: var(--adm-failure-text);
}
.admonition[data-type="info"] {
border-color: var(--adm-info-border);
background-color: var(--adm-info-bg);
color: var(--adm-info-text);
}
.admonition[data-type="question"] {
border-color: var(--adm-question-border);
background-color: var(--adm-question-bg);
color: var(--adm-question-text);
}
.admonition[data-type="quote"] { .admonition[data-type="quote"] {
border-color: var(--adm-quote-border); border-color: var(--adm-quote-border);
background-color: var(--adm-quote-bg); background-color: var(--adm-quote-bg);
color: var(--adm-quote-text); color: var(--adm-quote-text);
} }
.admonition[data-type="success"] {
border-color: var(--adm-success-border);
background-color: var(--adm-success-bg);
color: var(--adm-success-text);
}
.admonition[data-type="todo"] {
border-color: var(--adm-todo-border);
background-color: var(--adm-todo-bg);
color: var(--adm-todo-text);
}
} }
body a, body button { body a, body button {
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to; transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;

View File

@@ -4,135 +4,130 @@
*/ */
:root { :root {
/* GitHub Core Types (5) */ /* GitHub Core Types (5) */
--adm-note-border: theme('colors.blue.500'); --adm-note-border: theme("colors.sky.500");
--adm-note-bg: theme('colors.blue.50'); --adm-note-bg: theme("colors.sky.50");
--adm-note-text: theme('colors.blue.900'); --adm-note-text: theme("colors.sky.900");
--adm-tip-border: theme('colors.teal.500'); --adm-tip-border: theme("colors.emerald.500");
--adm-tip-bg: theme('colors.teal.50'); --adm-tip-bg: theme("colors.emerald.50");
--adm-tip-text: theme('colors.teal.900'); --adm-tip-text: theme("colors.emerald.900");
--adm-important-border: theme('colors.purple.500'); --adm-important-border: theme("colors.purple.500");
--adm-important-bg: theme('colors.purple.50'); --adm-important-bg: theme("colors.purple.50");
--adm-important-text: theme('colors.purple.900'); --adm-important-text: theme("colors.purple.900");
--adm-warning-border: theme('colors.orange.500'); --adm-warning-border: theme("colors.orange.500");
--adm-warning-bg: theme('colors.orange.50'); --adm-warning-bg: theme("colors.orange.50");
--adm-warning-text: theme('colors.orange.900'); --adm-warning-text: theme("colors.orange.900");
--adm-caution-border: theme('colors.red.500'); --adm-caution-border: theme("colors.red.500");
--adm-caution-bg: theme('colors.red.50'); --adm-caution-bg: theme("colors.red.50");
--adm-caution-text: theme('colors.red.900'); --adm-caution-text: theme("colors.red.900");
/* Extended Types (10) */ /* Extended Types (10) */
--adm-abstract-border: theme('colors.cyan.500'); --adm-abstract-border: theme("colors.cyan.500");
--adm-abstract-bg: theme('colors.cyan.50'); --adm-abstract-bg: theme("colors.cyan.50");
--adm-abstract-text: theme('colors.cyan.900'); --adm-abstract-text: theme("colors.cyan.900");
--adm-info-border: theme('colors.sky.500'); --adm-bug-border: theme("colors.rose.500");
--adm-info-bg: theme('colors.sky.50'); --adm-bug-bg: theme("colors.rose.50");
--adm-info-text: theme('colors.sky.900'); --adm-bug-text: theme("colors.rose.900");
--adm-todo-border: theme('colors.slate.500'); --adm-danger-border: theme("colors.red.500");
--adm-todo-bg: theme('colors.slate.50'); --adm-danger-bg: theme("colors.red.50");
--adm-todo-text: theme('colors.slate.800'); --adm-danger-text: theme("colors.red.900");
--adm-success-border: theme('colors.green.500'); --adm-example-border: theme("colors.purple.600");
--adm-success-bg: theme('colors.green.50'); --adm-example-bg: theme("colors.purple.50");
--adm-success-text: theme('colors.green.900'); --adm-example-text: theme("colors.purple.900");
--adm-question-border: theme('colors.amber.500'); --adm-failure-border: theme("colors.pink.500");
--adm-question-bg: theme('colors.amber.50'); --adm-failure-bg: theme("colors.pink.50");
--adm-question-text: theme('colors.amber.900'); --adm-failure-text: theme("colors.pink.900");
--adm-failure-border: theme('colors.pink.500'); --adm-info-border: theme("colors.blue.500");
--adm-failure-bg: theme('colors.pink.50'); --adm-info-bg: theme("colors.blue.50");
--adm-failure-text: theme('colors.pink.900'); --adm-info-text: theme("colors.blue.900");
--adm-danger-border: theme('colors.red.500'); --adm-question-border: theme("colors.amber.500");
--adm-danger-bg: theme('colors.red.50'); --adm-question-bg: theme("colors.amber.50");
--adm-danger-text: theme('colors.red.900'); --adm-question-text: theme("colors.amber.900");
--adm-bug-border: theme('colors.rose.500'); --adm-quote-border: theme("colors.gray.500");
--adm-bug-bg: theme('colors.rose.50'); --adm-quote-bg: theme("colors.gray.50");
--adm-bug-text: theme('colors.rose.900'); --adm-quote-text: theme("colors.gray.800");
--adm-example-border: theme('colors.purple.600'); --adm-success-border: theme("colors.emerald.500");
--adm-example-bg: theme('colors.purple.50'); --adm-success-bg: theme("colors.emerald.50");
--adm-example-text: theme('colors.purple.900'); --adm-success-text: theme("colors.emerald.900");
--adm-quote-border: theme('colors.gray.500'); --adm-todo-border: theme("colors.sky.500");
--adm-quote-bg: theme('colors.gray.50'); --adm-todo-bg: theme("colors.sky.50");
--adm-quote-text: theme('colors.gray.800'); --adm-todo-text: theme("colors.sky.800");
} }
/* CSS Custom Properties - Dark Mode (30 variables: 15 types × 2 properties) */
html.dark { html.dark {
/* GitHub Core Types (5) */ /* GitHub Core Types (5) */
--adm-note-bg: theme('colors.blue.900 / 0.6'); --adm-note-bg: color-mix(in srgb, theme("colors.sky.900 / 0.4"), black 15%);
--adm-note-text: theme('colors.blue.100'); --adm-note-text: theme("colors.sky.100");
--adm-tip-bg: theme('colors.teal.900 / 0.6'); --adm-tip-bg: color-mix(in srgb, theme("colors.emerald.900 / 0.4"), black 15%);
--adm-tip-text: theme('colors.teal.100'); --adm-tip-text: theme("colors.emerald.100");
--adm-important-bg: theme('colors.purple.900 / 0.6'); --adm-important-bg: color-mix(in srgb, theme("colors.purple.900 / 0.4"), black 15%);
--adm-important-text: theme('colors.purple.100'); --adm-important-text: theme("colors.purple.100");
--adm-warning-bg: theme('colors.orange.900 / 0.6'); --adm-warning-bg: color-mix(in srgb, theme("colors.orange.900 / 0.4"), black 15%);
--adm-warning-text: theme('colors.orange.100'); --adm-warning-text: theme("colors.orange.100");
--adm-caution-bg: theme('colors.red.900 / 0.6'); --adm-caution-bg: color-mix(in srgb, theme("colors.red.900 / 0.4"), black 15%);
--adm-caution-text: theme('colors.red.100'); --adm-caution-text: theme("colors.red.100");
/* Extended Types (10) */ /* Extended Types (10) */
--adm-abstract-bg: theme('colors.cyan.900 / 0.6'); --adm-abstract-bg: color-mix(in srgb, theme("colors.cyan.900 / 0.4"), black 15%);
--adm-abstract-text: theme('colors.cyan.100'); --adm-abstract-text: theme("colors.cyan.100");
--adm-info-bg: theme('colors.sky.900 / 0.6'); --adm-bug-bg: color-mix(in srgb, theme("colors.rose.900 / 0.4"), black 15%);
--adm-info-text: theme('colors.sky.100'); --adm-bug-text: theme("colors.rose.100");
--adm-todo-bg: theme('colors.slate.800'); --adm-danger-bg: color-mix(in srgb, theme("colors.red.900 / 0.4"), black 15%);
--adm-todo-text: theme('colors.slate.100'); --adm-danger-text: theme("colors.red.100");
--adm-success-bg: theme('colors.green.900 / 0.6'); --adm-example-bg: color-mix(in srgb, theme("colors.purple.900 / 0.4"), black 15%);
--adm-success-text: theme('colors.green.100'); --adm-example-text: theme("colors.purple.100");
--adm-question-bg: theme('colors.amber.900 / 0.6'); --adm-failure-bg: color-mix(in srgb, theme("colors.pink.900 / 0.4"), black 15%);
--adm-question-text: theme('colors.amber.100'); --adm-failure-text: theme("colors.pink.100");
--adm-failure-bg: theme('colors.pink.900 / 0.6'); --adm-info-bg: color-mix(in srgb, theme("colors.blue.900 / 0.4"), black 15%);
--adm-failure-text: theme('colors.pink.100'); --adm-info-text: theme("colors.blue.100");
--adm-danger-bg: theme('colors.red.900 / 0.6'); --adm-question-bg: color-mix(in srgb, theme("colors.amber.900 / 0.4"), black 15%);
--adm-danger-text: theme('colors.red.100'); --adm-question-text: theme("colors.amber.100");
--adm-bug-bg: theme('colors.rose.900 / 0.6'); --adm-quote-bg: color-mix(in srgb, theme("colors.gray.900 / 0.4"), black 15%);
--adm-bug-text: theme('colors.rose.100'); --adm-quote-text: theme("colors.gray.100");
--adm-example-bg: theme('colors.purple.900 / 0.6'); --adm-success-bg: color-mix(in srgb, theme("colors.emerald.900 / 0.4"), black 15%);
--adm-example-text: theme('colors.purple.100'); --adm-success-text: theme("colors.emerald.100");
--adm-quote-bg: theme('colors.gray.900 / 0.6'); --adm-todo-bg: color-mix(in srgb, theme("colors.sky.800 / 0.4"), black 15%);
--adm-quote-text: theme('colors.gray.100'); --adm-todo-text: theme("colors.sky.100");
} }
/* Base Styles */ /* Base Styles */
.admonition .admonition-content > * { .admonition-content > :first-child {
margin-top: 0 !important;
}
.admonition-content > :last-child {
margin-bottom: 0 !important;
}
.admonition-content pre {
margin-block: 0 !important; margin-block: 0 !important;
} }
.admonition .admonition-content > * + * {
margin-top: 1.25em !important;
}
.admonition {
@apply my-3;
}
.prose .admonition + * {
@apply mt-0;
}
/* Type-Specific Palettes Using CSS Variables */ /* Type-Specific Palettes Using CSS Variables */
.admonition[data-type="note"] { .admonition[data-type="note"] {
border-color: var(--adm-note-border); border-color: var(--adm-note-border);
@@ -170,34 +165,10 @@ html.dark {
color: var(--adm-abstract-text); color: var(--adm-abstract-text);
} }
.admonition[data-type="info"] { .admonition[data-type="bug"] {
border-color: var(--adm-info-border); border-color: var(--adm-bug-border);
background-color: var(--adm-info-bg); background-color: var(--adm-bug-bg);
color: var(--adm-info-text); color: var(--adm-bug-text);
}
.admonition[data-type="todo"] {
border-color: var(--adm-todo-border);
background-color: var(--adm-todo-bg);
color: var(--adm-todo-text);
}
.admonition[data-type="success"] {
border-color: var(--adm-success-border);
background-color: var(--adm-success-bg);
color: var(--adm-success-text);
}
.admonition[data-type="question"] {
border-color: var(--adm-question-border);
background-color: var(--adm-question-bg);
color: var(--adm-question-text);
}
.admonition[data-type="failure"] {
border-color: var(--adm-failure-border);
background-color: var(--adm-failure-bg);
color: var(--adm-failure-text);
} }
.admonition[data-type="danger"] { .admonition[data-type="danger"] {
@@ -206,20 +177,44 @@ html.dark {
color: var(--adm-danger-text); color: var(--adm-danger-text);
} }
.admonition[data-type="bug"] {
border-color: var(--adm-bug-border);
background-color: var(--adm-bug-bg);
color: var(--adm-bug-text);
}
.admonition[data-type="example"] { .admonition[data-type="example"] {
border-color: var(--adm-example-border); border-color: var(--adm-example-border);
background-color: var(--adm-example-bg); background-color: var(--adm-example-bg);
color: var(--adm-example-text); color: var(--adm-example-text);
} }
.admonition[data-type="failure"] {
border-color: var(--adm-failure-border);
background-color: var(--adm-failure-bg);
color: var(--adm-failure-text);
}
.admonition[data-type="info"] {
border-color: var(--adm-info-border);
background-color: var(--adm-info-bg);
color: var(--adm-info-text);
}
.admonition[data-type="question"] {
border-color: var(--adm-question-border);
background-color: var(--adm-question-bg);
color: var(--adm-question-text);
}
.admonition[data-type="quote"] { .admonition[data-type="quote"] {
border-color: var(--adm-quote-border); border-color: var(--adm-quote-border);
background-color: var(--adm-quote-bg); background-color: var(--adm-quote-bg);
color: var(--adm-quote-text); color: var(--adm-quote-text);
} }
.admonition[data-type="success"] {
border-color: var(--adm-success-border);
background-color: var(--adm-success-bg);
color: var(--adm-success-text);
}
.admonition[data-type="todo"] {
border-color: var(--adm-todo-border);
background-color: var(--adm-todo-bg);
color: var(--adm-todo-text);
}

View File

@@ -85,5 +85,3 @@ shortcode:
recent: recent:
show_more: "Show More" show_more: "Show More"

View File

@@ -74,18 +74,18 @@ recent:
show_more: "Mostra di Più" show_more: "Mostra di Più"
admonition: admonition:
note: "Nota" abstract: Sommario
abstract: "Sommario" bug: Bug
info: "Info" caution: Attenzione
todo: "Da fare" danger: Pericolo
tip: "Suggerimento" example: Esempio
important: "Importante" failure: Fallimento
success: "Successo" important: Importante
question: "Domanda" info: Info
warning: "Avviso" note: Nota
caution: "Attenzione" question: Domanda
failure: "Fallimento" quote: Citazione
danger: "Pericolo" success: Successo
bug: "Bug" tip: Suggerimento
example: "Esempio" todo: Da fare
quote: "Citazione" warning: Avviso

View File

@@ -86,18 +86,18 @@ recent:
show_more: "もっと見る" show_more: "もっと見る"
admonition: admonition:
note: "ノート" abstract: 概要
abstract: "概要" bug: バグ
info: "情報" caution: 注意
todo: "TODO" danger: 危険
tip: "ヒント" example:
important: "重要" failure: 失敗
success: "成功" important: 重要
question: "質問" info: 情報
warning: "警告" note: ノート
caution: "注意" question: 質問
failure: "失敗" quote: 引用
danger: "危険" success: 成功
bug: "バグ" tip: ヒント
example: "例" todo: TODO
quote: "引用" warning: 警告

View File

@@ -86,18 +86,18 @@ recent:
show_more: "显示更多" show_more: "显示更多"
admonition: admonition:
note: "笔记" abstract: 摘要
abstract: "摘要" bug: 错误
info: "信息" caution: 注意
todo: "待办" danger: 危险
tip: "提示" example: 示例
important: "重要" failure: 失败
success: "成功" important: 重要
question: "问题" info: 信息
warning: "警告" note: 笔记
caution: "注意" question: 问题
failure: "失败" quote: 引用
danger: "危险" success: 成功
bug: "错误" tip: 提示
example: "示例" todo: 待办
quote: "引用" warning: 警告

View File

@@ -84,3 +84,20 @@ shortcode:
recent: recent:
show_more: "顯示更多" show_more: "顯示更多"
admonition:
abstract: 摘要
bug: 錯誤
caution: 注意
danger: 危險
example: 範例
failure: 失敗
important: 重要
info: 資訊
note: 註記
question: 問題
quote: 引用
success: 成功
tip: 提示
todo: 待辦
warning: 警告

View File

@@ -1,101 +1,81 @@
{{- if eq .Type "alert" -}} {{- if eq .Type "alert" -}}
{{- $typeMap := dict {{- $typeMap := dict
"attention" "warning"
"check" "success"
"cite" "quote"
"done" "success"
"error" "danger"
"fail" "failure"
"faq" "question"
"hint" "tip"
"help" "question"
"missing" "failure"
"summary" "abstract" "summary" "abstract"
"tldr" "abstract" "tldr" "abstract"
"hint" "tip"
"check" "success"
"done" "success"
"help" "question"
"faq" "question"
"attention" "warning"
"fail" "failure"
"missing" "failure"
"error" "danger"
"cite" "quote"
-}} -}}
{{- $iconMap := dict {{- $iconMap := dict
"note" "circle-info"
"abstract" "file-lines" "abstract" "file-lines"
"bug" "bug"
"caution" "fire"
"danger" "fire"
"example" "list-ol"
"failure" "xmark"
"important" "star"
"info" "circle-info" "info" "circle-info"
"note" "circle-info"
"success" "check"
"todo" "list-check" "todo" "list-check"
"tip" "lightbulb" "tip" "lightbulb"
"important" "star"
"success" "check"
"question" "circle-question" "question" "circle-question"
"warning" "triangle-exclamation"
"caution" "triangle-exclamation"
"failure" "xmark"
"danger" "fire"
"bug" "bug"
"example" "list-ol"
"quote" "quote-left" "quote" "quote-left"
"warning" "triangle-exclamation"
-}} -}}
{{- $rawType := .AlertType | lower -}} {{- $rawType := .AlertType | lower -}}
{{- $normalizedType := index $typeMap $rawType | default $rawType -}} {{- $normalizedType := index $typeMap $rawType | default $rawType -}}
{{- $iconName := index $iconMap $normalizedType | default "circle-info" -}} {{- $iconName := index $iconMap $normalizedType | default "circle-info" -}}
{{- $contentText := .Text | plainify | strings.TrimSpace -}} {{- $admonitionTitle := .AlertTitle | default (i18n (printf "admonition.%s" $normalizedType) | default $normalizedType) -}}
{{- $hasContent := ne $contentText "" -}}
{{- $isHeaderOnly := not $hasContent -}}
{{- $title := .AlertTitle -}} {{- $containerClass := "admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" -}}
{{- if not $title -}} {{- $headerClass := "flex items-center gap-2 font-semibold text-inherit capitalize" -}}
{{- $i18nKey := printf "admonition.%s" $normalizedType -}} {{- $contentClass := "admonition-content mt-3 text-base leading-relaxed text-inherit" -}}
{{- $i18nTitle := i18n $i18nKey -}}
{{- if and $i18nTitle (ne $i18nTitle $i18nKey) -}}
{{- $title = $i18nTitle -}}
{{- else -}}
{{- $title = title $normalizedType -}}
{{- end -}}
{{- end -}}
{{- $containerClass := "admonition relative overflow-hidden rounded-lg border-l-4 px-4 py-3 shadow-sm print:break-inside-avoid" -}} {{- $isCollapsible := in (slice "+" "-") .AlertSign -}}
{{- if $isHeaderOnly -}}
{{- $containerClass = printf "%s admonition--header-only" $containerClass -}}
{{- end -}}
{{- $headerClass := "admonition-header flex items-center gap-2 font-semibold text-inherit" -}}
{{- $contentClass := "admonition-content text-base leading-relaxed text-inherit" -}}
{{- if $hasContent -}}
{{- $contentClass = printf "%s mt-3" $contentClass -}}
{{- end -}}
{{- $isCollapsible := and $hasContent (in (slice "+" "-") .AlertSign) -}}
{{- if $isCollapsible -}} {{- if $isCollapsible -}}
<details <details
class="{{ $containerClass }} group print:block" class="{{ $containerClass }} group"
data-type="{{ $normalizedType }}" data-type="{{ $normalizedType }}"
{{ if eq .AlertSign "+" }}open{{ end }}> {{ if eq .AlertSign "+" }}open{{ end }}>
<summary <summary class="{{ $headerClass }} cursor-pointer">
class="{{ $headerClass }} cursor-pointer pr-2 list-none marker:hidden [&::-webkit-details-marker]:hidden"> <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg">
<div class="flex h-5 w-5 shrink-0 items-center justify-center text-current">
{{- partial "icon.html" $iconName -}} {{- partial "icon.html" $iconName -}}
</div> </div>
<div class="flex grow items-center leading-snug"> <div class="grow">
{{ $title }} {{ $admonitionTitle }}
</div> </div>
<div <div
class="ml-auto flex h-6 w-6 items-center justify-center rounded-md text-current transition-transform ease-in-out -rotate-90 group-open:rotate-0 print:hidden"> class="ms-auto flex h-5 w-5 items-center justify-center transition-transform ease-in-out -rotate-90 group-open:rotate-0 print:hidden">
<div class="h-4 w-4"> {{- partial "icon.html" "chevron-down" -}}
{{- partial "icon.html" "chevron-down" -}}
</div>
</div> </div>
</summary> </summary>
<div class="{{ $contentClass }}"> {{- if .Text -}}
{{- .Text | safeHTML -}} <div class="{{ $contentClass }}">
</div> {{- .Text | safeHTML -}}
</div>
{{- end -}}
</details> </details>
{{- else -}} {{- else -}}
<div class="{{ $containerClass }}" data-type="{{ $normalizedType }}"> <div class="{{ $containerClass }}" data-type="{{ $normalizedType }}">
<div class="{{ $headerClass }}"> <div class="{{ $headerClass }}">
<div class="flex h-5 w-5 shrink-0 items-center justify-center text-current"> <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg">
{{- partial "icon.html" $iconName -}} {{- partial "icon.html" $iconName -}}
</div> </div>
<div class="flex grow items-center leading-snug"> <div class="grow">
{{ $title }} {{ $admonitionTitle }}
</div> </div>
</div> </div>
{{- if $hasContent -}} {{- if .Text -}}
<div class="{{ $contentClass }}"> <div class="{{ $contentClass }}">
{{- .Text | safeHTML -}} {{- .Text | safeHTML -}}
</div> </div>