Skip to content

Commit d9f3822

Browse files
testac974claude
andcommitted
Fix syntax highlighting to respect light/dark mode
- Changed prose-invert to dark:prose-invert for conditional dark mode - Updated all CSS selectors to use .prose prefix for proper specificity - Set backgrounds on pre elements instead of code elements - Made hljs backgrounds transparent to show pre background - Ensures code blocks properly switch between GitHub Light/Dark themes Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 4baa1d6 commit d9f3822

File tree

2 files changed

+90
-89
lines changed

2 files changed

+90
-89
lines changed

website/app/book/[part]/[chapter]/[section]/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ export default async function BookSectionPage({ params }: PageProps) {
7676
</header>
7777

7878
{/* Content with inline mermaid diagrams */}
79-
<div className="prose prose-invert prose-green max-w-none">
79+
<div className="prose dark:prose-invert prose-green max-w-none">
8080
{htmlParts.map((htmlPart, index) => (
8181
<div key={`content-${index}`}>
8282
{/* Render HTML content chunk */}

website/styles/globals.css

Lines changed: 89 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -96,204 +96,205 @@ body {
9696
/* Code block styling with light/dark mode support */
9797
@layer components {
9898
/* Base code block styling */
99-
pre {
99+
.prose pre {
100100
@apply rounded-lg border border-border p-4 overflow-x-auto my-6;
101101
}
102102

103-
pre code {
103+
.prose pre code {
104104
@apply text-sm font-mono;
105+
background: transparent !important;
105106
}
106107

107108
/* Light mode syntax highlighting - GitHub Light theme */
108-
:root pre code {
109+
.prose pre {
109110
background: #f6f8fa;
110111
}
111112

112-
:root .hljs {
113+
.prose .hljs {
113114
color: #24292f;
114-
background: #f6f8fa;
115+
background: transparent;
115116
}
116117

117-
:root .hljs-doctag,
118-
:root .hljs-keyword,
119-
:root .hljs-meta .hljs-keyword,
120-
:root .hljs-template-tag,
121-
:root .hljs-template-variable,
122-
:root .hljs-type,
123-
:root .hljs-variable.language_ {
118+
.prose .hljs-doctag,
119+
.prose .hljs-keyword,
120+
.prose .hljs-meta .hljs-keyword,
121+
.prose .hljs-template-tag,
122+
.prose .hljs-template-variable,
123+
.prose .hljs-type,
124+
.prose .hljs-variable.language_ {
124125
color: #d73a49;
125126
}
126127

127-
:root .hljs-title,
128-
:root .hljs-title.class_,
129-
:root .hljs-title.class_.inherited__,
130-
:root .hljs-title.function_ {
128+
.prose .hljs-title,
129+
.prose .hljs-title.class_,
130+
.prose .hljs-title.class_.inherited__,
131+
.prose .hljs-title.function_ {
131132
color: #6f42c1;
132133
}
133134

134-
:root .hljs-attr,
135-
:root .hljs-attribute,
136-
:root .hljs-literal,
137-
:root .hljs-meta,
138-
:root .hljs-number,
139-
:root .hljs-operator,
140-
:root .hljs-selector-attr,
141-
:root .hljs-selector-class,
142-
:root .hljs-selector-id,
143-
:root .hljs-variable {
135+
.prose .hljs-attr,
136+
.prose .hljs-attribute,
137+
.prose .hljs-literal,
138+
.prose .hljs-meta,
139+
.prose .hljs-number,
140+
.prose .hljs-operator,
141+
.prose .hljs-selector-attr,
142+
.prose .hljs-selector-class,
143+
.prose .hljs-selector-id,
144+
.prose .hljs-variable {
144145
color: #005cc5;
145146
}
146147

147-
:root .hljs-meta .hljs-string,
148-
:root .hljs-regexp,
149-
:root .hljs-string {
148+
.prose .hljs-meta .hljs-string,
149+
.prose .hljs-regexp,
150+
.prose .hljs-string {
150151
color: #032f62;
151152
}
152153

153-
:root .hljs-built_in,
154-
:root .hljs-symbol {
154+
.prose .hljs-built_in,
155+
.prose .hljs-symbol {
155156
color: #e36209;
156157
}
157158

158-
:root .hljs-code,
159-
:root .hljs-comment,
160-
:root .hljs-formula {
159+
.prose .hljs-code,
160+
.prose .hljs-comment,
161+
.prose .hljs-formula {
161162
color: #6a737d;
162163
}
163164

164-
:root .hljs-name,
165-
:root .hljs-quote,
166-
:root .hljs-selector-pseudo,
167-
:root .hljs-selector-tag {
165+
.prose .hljs-name,
166+
.prose .hljs-quote,
167+
.prose .hljs-selector-pseudo,
168+
.prose .hljs-selector-tag {
168169
color: #22863a;
169170
}
170171

171-
:root .hljs-subst {
172+
.prose .hljs-subst {
172173
color: #24292f;
173174
}
174175

175-
:root .hljs-section {
176+
.prose .hljs-section {
176177
color: #005cc5;
177178
font-weight: bold;
178179
}
179180

180-
:root .hljs-bullet {
181+
.prose .hljs-bullet {
181182
color: #735c0f;
182183
}
183184

184-
:root .hljs-emphasis {
185+
.prose .hljs-emphasis {
185186
color: #24292f;
186187
font-style: italic;
187188
}
188189

189-
:root .hljs-strong {
190+
.prose .hljs-strong {
190191
color: #24292f;
191192
font-weight: bold;
192193
}
193194

194-
:root .hljs-addition {
195+
.prose .hljs-addition {
195196
color: #22863a;
196197
background-color: #f0fff4;
197198
}
198199

199-
:root .hljs-deletion {
200+
.prose .hljs-deletion {
200201
color: #b31d28;
201202
background-color: #ffeef0;
202203
}
203204

204205
/* Dark mode syntax highlighting - GitHub Dark theme */
205-
.dark pre code {
206+
.dark .prose pre {
206207
background: #0d1117;
207208
}
208209

209-
.dark .hljs {
210+
.dark .prose .hljs {
210211
color: #e6edf3;
211-
background: #0d1117;
212+
background: transparent;
212213
}
213214

214-
.dark .hljs-doctag,
215-
.dark .hljs-keyword,
216-
.dark .hljs-meta .hljs-keyword,
217-
.dark .hljs-template-tag,
218-
.dark .hljs-template-variable,
219-
.dark .hljs-type,
220-
.dark .hljs-variable.language_ {
215+
.dark .prose .hljs-doctag,
216+
.dark .prose .hljs-keyword,
217+
.dark .prose .hljs-meta .hljs-keyword,
218+
.dark .prose .hljs-template-tag,
219+
.dark .prose .hljs-template-variable,
220+
.dark .prose .hljs-type,
221+
.dark .prose .hljs-variable.language_ {
221222
color: #ff7b72;
222223
}
223224

224-
.dark .hljs-title,
225-
.dark .hljs-title.class_,
226-
.dark .hljs-title.class_.inherited__,
227-
.dark .hljs-title.function_ {
225+
.dark .prose .hljs-title,
226+
.dark .prose .hljs-title.class_,
227+
.dark .prose .hljs-title.class_.inherited__,
228+
.dark .prose .hljs-title.function_ {
228229
color: #d2a8ff;
229230
}
230231

231-
.dark .hljs-attr,
232-
.dark .hljs-attribute,
233-
.dark .hljs-literal,
234-
.dark .hljs-meta,
235-
.dark .hljs-number,
236-
.dark .hljs-operator,
237-
.dark .hljs-selector-attr,
238-
.dark .hljs-selector-class,
239-
.dark .hljs-selector-id,
240-
.dark .hljs-variable {
232+
.dark .prose .hljs-attr,
233+
.dark .prose .hljs-attribute,
234+
.dark .prose .hljs-literal,
235+
.dark .prose .hljs-meta,
236+
.dark .prose .hljs-number,
237+
.dark .prose .hljs-operator,
238+
.dark .prose .hljs-selector-attr,
239+
.dark .prose .hljs-selector-class,
240+
.dark .prose .hljs-selector-id,
241+
.dark .prose .hljs-variable {
241242
color: #79c0ff;
242243
}
243244

244-
.dark .hljs-meta .hljs-string,
245-
.dark .hljs-regexp,
246-
.dark .hljs-string {
245+
.dark .prose .hljs-meta .hljs-string,
246+
.dark .prose .hljs-regexp,
247+
.dark .prose .hljs-string {
247248
color: #a5d6ff;
248249
}
249250

250-
.dark .hljs-built_in,
251-
.dark .hljs-symbol {
251+
.dark .prose .hljs-built_in,
252+
.dark .prose .hljs-symbol {
252253
color: #ffa657;
253254
}
254255

255-
.dark .hljs-code,
256-
.dark .hljs-comment,
257-
.dark .hljs-formula {
256+
.dark .prose .hljs-code,
257+
.dark .prose .hljs-comment,
258+
.dark .prose .hljs-formula {
258259
color: #8b949e;
259260
}
260261

261-
.dark .hljs-name,
262-
.dark .hljs-quote,
263-
.dark .hljs-selector-pseudo,
264-
.dark .hljs-selector-tag {
262+
.dark .prose .hljs-name,
263+
.dark .prose .hljs-quote,
264+
.dark .prose .hljs-selector-pseudo,
265+
.dark .prose .hljs-selector-tag {
265266
color: #7ee787;
266267
}
267268

268-
.dark .hljs-subst {
269+
.dark .prose .hljs-subst {
269270
color: #e6edf3;
270271
}
271272

272-
.dark .hljs-section {
273+
.dark .prose .hljs-section {
273274
color: #79c0ff;
274275
font-weight: bold;
275276
}
276277

277-
.dark .hljs-bullet {
278+
.dark .prose .hljs-bullet {
278279
color: #d29922;
279280
}
280281

281-
.dark .hljs-emphasis {
282+
.dark .prose .hljs-emphasis {
282283
color: #e6edf3;
283284
font-style: italic;
284285
}
285286

286-
.dark .hljs-strong {
287+
.dark .prose .hljs-strong {
287288
color: #e6edf3;
288289
font-weight: bold;
289290
}
290291

291-
.dark .hljs-addition {
292+
.dark .prose .hljs-addition {
292293
color: #aff5b4;
293294
background-color: #033a16;
294295
}
295296

296-
.dark .hljs-deletion {
297+
.dark .prose .hljs-deletion {
297298
color: #ffdcd7;
298299
background-color: #67060c;
299300
}

0 commit comments

Comments
 (0)