Skip to content

Commit b9ccb5e

Browse files
#5 Dark Mode
Initial pass at implementing dark mode
1 parent f1a00f3 commit b9ccb5e

9 files changed

Lines changed: 1102 additions & 28 deletions

File tree

‎AGENTS.md‎

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@ in `out/` is served by any static host (GitHub Pages, GitLab Pages, Bitbucket).
1010

1111
**Key Features:**
1212
- Search over curated repository listing (`repositories.txt`)
13+
- Dark mode, 100% CSS switching (`components/theme-toggle.jsx` +
14+
`plans/css-only-dark-mode.md`): three radios (light/dark/system) as the
15+
last `.menu-bar` child, palettes selected in `app/globals.css` via
16+
`:root:has(#rf-theme-…:checked)` + `prefers-color-scheme`; an inline
17+
pre-paint script in `app/layout.jsx` only restores/persists the choice
18+
(CSP-hashed by the build). Guards: `tests/unit/theme-css.test.js` (the
19+
two dark blocks must stay byte-identical; all hex colors live in the
20+
palette blocks; dark palette passes the same WCAG AA math as
21+
`tests/unit/css-a11y.test.js`)
1322
- Breadcrumb trail under the menu (`components/breadcrumbs.jsx` +
1423
`lib/breadcrumbs.js`): mirrors `/user/repo/branch` with linked ancestors;
1524
the repo crumb never self-links, and ReportView announces the resolved
@@ -130,6 +139,14 @@ coverage there when introducing new markup patterns.
130139
- **Environment config:** meta tags in `app/layout.jsx` (`submission-target`,
131140
`sentry-dsn`, `platform-base-url`) plus `NEXT_PUBLIC_HOSTING_ENVIRONMENT`
132141
/ `NEXT_PUBLIC_BASE_PATH` at build time.
142+
- **Theming:** see the dark-mode bullet above — the radios in
143+
`components/theme-toggle.jsx` are the single source of truth; never add
144+
JS-driven styling. All colors must be custom properties declared only in
145+
the four palette blocks (`:root`, `html:root` mvp overrides, and the two
146+
identical dark blocks) in `app/globals.css`; mvp.css light overrides must
147+
stay on `html:root` (mvp loads after the bundle). Report-template
148+
widgets that hardcode light colors are re-driven from `main#app …`
149+
rules there (the mustache stays byte-identical).
133150

134151
## Report Tables (Enhanced)
135152

@@ -178,7 +195,7 @@ coverage there when introducing new markup patterns.
178195

179196
## Current Test Count
180197

181-
~543 unit/integration + ~202 E2E (~198 across three browsers + 4 basePath leg).
198+
~584 unit/integration + ~229 E2E (~202 across three browsers + 4 basePath leg + 27 dark mode).
182199

183200
WCAG 2.2 AA / HTML5 guards live in tests/unit/html5-attributes.test.js,
184201
tests/unit/report-template-wcag.test.js, tests/unit/css-a11y.test.js and

0 commit comments

Comments
 (0)