Skip to content

Commit deb9047

Browse files
author
Dev Agent Amelia
committed
feat(docs): transparent header at page top, gradient bleeds behind navbar
1 parent 4c1c4f3 commit deb9047

2 files changed

Lines changed: 74 additions & 23 deletions

File tree

docs/.vitepress/config.mts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,5 +124,9 @@ export default defineConfig({
124124

125125
markdown: {
126126
lineNumbers: true,
127+
theme: {
128+
light: "github-light",
129+
dark: "github-dark",
130+
},
127131
},
128132
});

docs/.vitepress/theme/style.css

Lines changed: 70 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,24 @@
3131
--vp-c-text-2: #5a6273;
3232
--vp-c-text-3: #8a93a6;
3333

34-
/* Code surfaces */
35-
--vp-code-bg: #f4f5f9;
36-
--vp-code-block-bg: #0e1117;
34+
/* Code surfaces — light bg so syntax colours stay readable */
35+
--vp-code-bg: #eceef5;
36+
--vp-code-block-bg: #f6f8fa;
37+
--vp-code-color: #24292e;
38+
--vp-code-block-divider-color: #d0d7de;
39+
40+
/* Interactive demo — light mode */
41+
--demo-panel-bg: #f6f8fa;
42+
--demo-panel-border: #d0d7de;
43+
--demo-panel-header-bg: rgba(0, 0, 0, 0.03);
44+
--demo-panel-header-border: rgba(0, 0, 0, 0.06);
45+
--demo-panel-header-color: #5a6273;
46+
--demo-code-color: #24292e;
47+
--demo-token-key: #0550ae;
48+
--demo-token-string: #0a3069;
49+
--demo-token-number: #953800;
50+
--demo-token-bool: #cf222e;
51+
--demo-token-comment: #6e7781;
3752
}
3853

3954
/* ---------- Dark mode — deep cool slate, NOT warm brown ---------- */
@@ -57,7 +72,22 @@
5772
--brand-glow: 0 0 40px rgba(123, 143, 255, 0.18);
5873

5974
--vp-code-bg: #11141d;
60-
--vp-code-block-bg: #0a0c12;
75+
--vp-code-block-bg: #0d1117;
76+
--vp-code-color: #e6edf3;
77+
--vp-code-block-divider-color: #30363d;
78+
79+
/* Interactive demo — dark mode */
80+
--demo-panel-bg: #0a0c12;
81+
--demo-panel-border: #1a1f2e;
82+
--demo-panel-header-bg: rgba(255, 255, 255, 0.03);
83+
--demo-panel-header-border: rgba(255, 255, 255, 0.06);
84+
--demo-panel-header-color: #9aa3b5;
85+
--demo-code-color: #d1d5e0;
86+
--demo-token-key: #79c0ff;
87+
--demo-token-string: #a5d6ff;
88+
--demo-token-number: #f2cc60;
89+
--demo-token-bool: #ff7b72;
90+
--demo-token-comment: #6e7681;
6191
}
6292

6393
/* ---------- Base typography refinements ---------- */
@@ -71,18 +101,35 @@ body {
71101

72102
/* ---------- Navbar — single uniform pane, no sidebar/content seam ---------- */
73103
.VPNav {
74-
backdrop-filter: saturate(180%) blur(14px);
75104
-webkit-backdrop-filter: saturate(180%) blur(14px);
105+
backdrop-filter: saturate(180%) blur(14px);
76106
background: rgba(255, 255, 255, 0.78) !important;
77107
border-bottom: 1px solid var(--vp-c-divider);
78-
/* Avoid the double-shadow / curtain artefact in default theme */
79108
box-shadow: none !important;
109+
transition: background 0.25s ease, border-color 0.25s ease,
110+
backdrop-filter 0.25s ease, -webkit-backdrop-filter 0.25s ease;
80111
}
81112

82113
.dark .VPNav {
83114
background: rgba(10, 12, 18, 0.78) !important;
84115
}
85116

117+
/* Fully transparent when the page hasn't been scrolled yet */
118+
.VPNav:has(.VPNavBar.top) {
119+
background: transparent !important;
120+
-webkit-backdrop-filter: none !important;
121+
backdrop-filter: none !important;
122+
border-bottom-color: transparent !important;
123+
}
124+
125+
/* Kill the VitePress divider/divider-line element that draws a 1px bottom line
126+
on non-home doc pages (.VPNavBar:not(.home) .divider-line { background: var(--vp-c-gutter) })
127+
— must be transparent when the header is in its at-top transparent state */
128+
.VPNav:has(.VPNavBar.top) .divider,
129+
.VPNav:has(.VPNavBar.top) .divider-line {
130+
background-color: transparent !important;
131+
}
132+
86133
/* Kill the split between sidebar-aligned curtain and content area */
87134
.VPNavBar,
88135
.VPNavBar .content,
@@ -150,11 +197,11 @@ div[class*='language-'] {
150197
border: 1px solid var(--vp-c-divider);
151198
}
152199

153-
/* ---------- Doc pages — subtle brand cohesion (BELOW the navbar, never crosses it) ---------- */
200+
/* ---------- Doc pages — subtle brand cohesion (bleeds behind the transparent navbar) ---------- */
154201
.VPContent:not(.is-home)::before {
155202
content: '';
156203
position: fixed;
157-
top: var(--vp-nav-height);
204+
top: 0;
158205
left: 0;
159206
right: 0;
160207
height: 280px;
@@ -194,11 +241,11 @@ div[class*='language-'] {
194241
position: relative;
195242
}
196243

197-
/* Decorative background gradient (homepage only — starts below navbar) */
244+
/* Decorative background gradient (homepage only — bleeds behind the transparent navbar) */
198245
.hp-root::before {
199246
content: '';
200247
position: fixed;
201-
top: var(--vp-nav-height);
248+
top: 0;
202249
left: 0;
203250
right: 0;
204251
width: 100%;
@@ -488,8 +535,8 @@ div[class*='language-'] {
488535

489536
.demo-panel {
490537
border-radius: 12px;
491-
border: 1px solid #1a1f2e;
492-
background: #0a0c12;
538+
border: 1px solid var(--demo-panel-border);
539+
background: var(--demo-panel-bg);
493540
overflow: hidden;
494541
min-height: 320px;
495542
display: flex;
@@ -501,11 +548,11 @@ div[class*='language-'] {
501548
align-items: center;
502549
justify-content: space-between;
503550
padding: 0.55rem 1rem;
504-
background: rgba(255, 255, 255, 0.03);
505-
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
551+
background: var(--demo-panel-header-bg);
552+
border-bottom: 1px solid var(--demo-panel-header-border);
506553
font-size: 0.78rem;
507554
font-weight: 600;
508-
color: #9aa3b5;
555+
color: var(--demo-panel-header-color);
509556
letter-spacing: 0.04em;
510557
text-transform: uppercase;
511558
}
@@ -549,19 +596,19 @@ div[class*='language-'] {
549596
font-size: 0.8rem;
550597
line-height: 1.65;
551598
font-family: 'JetBrains Mono', 'Fira Code', ui-monospace, monospace;
552-
color: #d1d5e0;
599+
color: var(--demo-code-color);
553600
overflow-y: auto;
554601
white-space: pre-wrap;
555602
word-break: break-word;
556603
}
557604

558-
.demo-code .key { color: #79c0ff; }
559-
.demo-code .string { color: #a5d6ff; }
560-
.demo-code .number { color: #f2cc60; }
561-
.demo-code .bool { color: #ff7b72; }
562-
.demo-code .tool-name { color: #a5b3ff; font-weight: 600; }
563-
.demo-code .comment { color: #6e7681; font-style: italic; }
564-
.demo-code .label { color: #8b949e; }
605+
.demo-code .key { color: var(--demo-token-key); }
606+
.demo-code .string { color: var(--demo-token-string); }
607+
.demo-code .number { color: var(--demo-token-number); }
608+
.demo-code .bool { color: var(--demo-token-bool); }
609+
.demo-code .tool-name { color: var(--vp-c-brand-1); font-weight: 600; }
610+
.demo-code .comment { color: var(--demo-token-comment); font-style: italic; }
611+
.demo-code .label { color: var(--vp-c-text-3); }
565612

566613
.demo-fade-in { animation: fadeInUp 0.35s ease forwards; }
567614

0 commit comments

Comments
 (0)