feat: add Shiki syntax highlighting to markdown via rehype-pretty-code
This commit is contained in:
117
src/styles.css
117
src/styles.css
@@ -1,9 +1,9 @@
|
||||
@import url("https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,700&family=Manrope:wght@400;500;600;700;800&display=swap");
|
||||
@import "tailwindcss";
|
||||
@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,700&family=Manrope:wght@400;500;600;700;800&display=swap');
|
||||
@import 'tailwindcss';
|
||||
@plugin "@tailwindcss/typography";
|
||||
|
||||
@theme {
|
||||
--font-sans: "Manrope", ui-sans-serif, system-ui, sans-serif;
|
||||
--font-sans: 'Manrope', ui-sans-serif, system-ui, sans-serif;
|
||||
}
|
||||
|
||||
:root {
|
||||
@@ -28,7 +28,7 @@
|
||||
--hero-b: rgba(47, 106, 74, 0.2);
|
||||
}
|
||||
|
||||
:root[data-theme="dark"] {
|
||||
:root[data-theme='dark'] {
|
||||
--sea-ink: #d7ece8;
|
||||
--sea-ink-soft: #afcdc8;
|
||||
--lagoon: #60d7cf;
|
||||
@@ -51,7 +51,7 @@
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root:not([data-theme="light"]) {
|
||||
:root:not([data-theme='light']) {
|
||||
--sea-ink: #d7ece8;
|
||||
--sea-ink-soft: #afcdc8;
|
||||
--lagoon: #60d7cf;
|
||||
@@ -92,28 +92,45 @@ body {
|
||||
background:
|
||||
radial-gradient(1100px 620px at -8% -10%, var(--hero-a), transparent 58%),
|
||||
radial-gradient(1050px 620px at 112% -12%, var(--hero-b), transparent 62%),
|
||||
radial-gradient(720px 380px at 50% 115%, rgba(79, 184, 178, 0.1), transparent 68%),
|
||||
linear-gradient(180deg, color-mix(in oklab, var(--sand) 68%, white) 0%, var(--foam) 44%, var(--bg-base) 100%);
|
||||
radial-gradient(
|
||||
720px 380px at 50% 115%,
|
||||
rgba(79, 184, 178, 0.1),
|
||||
transparent 68%
|
||||
),
|
||||
linear-gradient(
|
||||
180deg,
|
||||
color-mix(in oklab, var(--sand) 68%, white) 0%,
|
||||
var(--foam) 44%,
|
||||
var(--bg-base) 100%
|
||||
);
|
||||
overflow-x: hidden;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
body::before {
|
||||
content: "";
|
||||
content: '';
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
pointer-events: none;
|
||||
z-index: -1;
|
||||
opacity: 0.28;
|
||||
background:
|
||||
radial-gradient(circle at 20% 15%, rgba(255, 255, 255, 0.8), transparent 34%),
|
||||
radial-gradient(circle at 78% 26%, rgba(79, 184, 178, 0.2), transparent 42%),
|
||||
radial-gradient(
|
||||
circle at 20% 15%,
|
||||
rgba(255, 255, 255, 0.8),
|
||||
transparent 34%
|
||||
),
|
||||
radial-gradient(
|
||||
circle at 78% 26%,
|
||||
rgba(79, 184, 178, 0.2),
|
||||
transparent 42%
|
||||
),
|
||||
radial-gradient(circle at 42% 82%, rgba(47, 106, 74, 0.14), transparent 36%);
|
||||
}
|
||||
|
||||
body::after {
|
||||
content: "";
|
||||
content: '';
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
pointer-events: none;
|
||||
@@ -160,7 +177,7 @@ pre code {
|
||||
}
|
||||
|
||||
.display-title {
|
||||
font-family: "Fraunces", Georgia, serif;
|
||||
font-family: 'Fraunces', Georgia, serif;
|
||||
}
|
||||
|
||||
.island-shell {
|
||||
@@ -174,7 +191,11 @@ pre code {
|
||||
}
|
||||
|
||||
.feature-card {
|
||||
background: linear-gradient(165deg, color-mix(in oklab, var(--surface-strong) 93%, white 7%), var(--surface));
|
||||
background: linear-gradient(
|
||||
165deg,
|
||||
color-mix(in oklab, var(--surface-strong) 93%, white 7%),
|
||||
var(--surface)
|
||||
);
|
||||
box-shadow:
|
||||
0 1px 0 var(--inset-glint) inset,
|
||||
0 18px 34px rgba(30, 90, 72, 0.1),
|
||||
@@ -189,7 +210,10 @@ pre code {
|
||||
button,
|
||||
.island-shell,
|
||||
a {
|
||||
transition: background-color 180ms ease, color 180ms ease, border-color 180ms ease,
|
||||
transition:
|
||||
background-color 180ms ease,
|
||||
color 180ms ease,
|
||||
border-color 180ms ease,
|
||||
transform 180ms ease;
|
||||
}
|
||||
|
||||
@@ -210,7 +234,7 @@ a {
|
||||
}
|
||||
|
||||
.nav-link::after {
|
||||
content: "";
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: -6px;
|
||||
@@ -257,3 +281,66 @@ a {
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
/* ── Syntax Highlighting (rehype-pretty-code / Shiki) ─────────────────── */
|
||||
|
||||
/* Code block wrapper */
|
||||
figure[data-rehype-pretty-code-figure] {
|
||||
margin: 1.5rem 0;
|
||||
border-radius: 0.75rem;
|
||||
overflow: hidden;
|
||||
border: 1px solid var(--line);
|
||||
}
|
||||
|
||||
/* Title bar (e.g. ```ts filename.ts) */
|
||||
[data-rehype-pretty-code-title] {
|
||||
background: var(--surface-strong);
|
||||
color: var(--sea-ink-soft);
|
||||
font-size: 0.75rem;
|
||||
font-family: 'Manrope', sans-serif;
|
||||
padding: 0.5rem 1rem;
|
||||
border-bottom: 1px solid var(--line);
|
||||
letter-spacing: 0.04em;
|
||||
}
|
||||
|
||||
/* The <pre> block */
|
||||
pre[data-theme] {
|
||||
background: var(--surface) !important;
|
||||
padding: 1.25rem 1.5rem;
|
||||
overflow-x: auto;
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
/* Inline code */
|
||||
:not(pre) > code[data-theme] {
|
||||
background: var(--chip-bg);
|
||||
border: 1px solid var(--chip-line);
|
||||
border-radius: 0.3rem;
|
||||
padding: 0.15em 0.45em;
|
||||
font-size: 0.85em;
|
||||
}
|
||||
|
||||
/* Highlighted line */
|
||||
span[data-highlighted-line] {
|
||||
background: color-mix(in oklch, var(--lagoon) 12%, transparent);
|
||||
border-left: 2px solid var(--lagoon);
|
||||
padding-left: calc(1.5rem - 2px);
|
||||
margin-left: -1.5rem;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Line numbers */
|
||||
code[data-line-numbers] {
|
||||
counter-reset: line;
|
||||
}
|
||||
code[data-line-numbers] > [data-line]::before {
|
||||
counter-increment: line;
|
||||
content: counter(line);
|
||||
display: inline-block;
|
||||
width: 1rem;
|
||||
margin-right: 1.5rem;
|
||||
text-align: right;
|
||||
color: var(--sea-ink-soft);
|
||||
opacity: 0.4;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user