Mobile Phase 6: app-wide light theme + [data-theme] toggle
Ship the light palette behind a :root[data-theme="light"] switch; dark
stays the default and brand identity. A pre-paint boot script applies
localStorage.venture_crm_theme (no flash, no prefers-color-scheme), and an
app-wide toggle lives in the desktop sidebar footer + the mobile top bar,
both driven by one theme state in App.
Method keeps dark mode byte-identical: :root grew to 44 themed color slots
whose dark values equal the original literals, then 319 hex literals were
migrated to var() across the JSX inline region and the <style> block. The
StageChip is now className-based (.stage-chip--{stage}); PIPELINE_STAGE_CHIP
is removed. Every light tint (stage/recency/note/priority/reminder/money)
uses the designer's exact values from the full Claude Design export
(store.js + the four *App.dc.html DCLogic palettes), now committed as
provenance under design/_imports/2026-06-19_zip-file/ (zip + screenshots
gitignored).
Mobile surfaces + chrome are fully var-based, so mobile light is complete.
Desktop light has known rough edges (bespoke <style> shades, the legacy
off-palette .badge-* family, dark-tuned shadows) folded into a new Phase 7
design-conformance pass.
Verified: render-smoke green; a jsdom interaction harness on the authed
shell exercised the toggle (boot-dark -> light+persist+relabel -> dark);
dark-identity, theme-parity, and no-undefined-var checks all green. Not yet
checked on a real phone/browser.
This commit is contained in:
+15
-9
@@ -9,7 +9,7 @@ not the visual language below.*
|
||||
|
||||
## 1. Visual theme
|
||||
|
||||
A dense, professional, **dark** venture-CRM workspace (a **light** theme is planned as an
|
||||
A dense, professional, **dark** venture-CRM workspace (a **light** theme ships as an
|
||||
optional toggle — see §8 — but dark is the default and the brand's primary identity) — calm,
|
||||
data-forward, slightly
|
||||
"terminal/financial." Cool blue-greys throughout, a single saturated blue as the only vivid
|
||||
@@ -42,9 +42,9 @@ White (`#ffffff`) appears only as text on accent fills and in the brand mark.
|
||||
`#10b981`/`#6ee7b7`. **Staleness** (last-contact age) overlays the same ramp: fresh grey →
|
||||
due-soon amber `#e0b341` → danger-soft red `#e06c6c`/`#f87171`. Both are tinted-fill + tinted-
|
||||
text badges, consistent with the badge rule above.
|
||||
- **Light theme (planned)** mirrors every slot above in `tokens.tokens.json` `color.light` (e.g.
|
||||
base `#eaeef3`, panel `#ffffff`, text-primary `#16202c`); accent `#3b82c4` is unchanged. Dark is
|
||||
the default — see §8.
|
||||
- **Light theme (implemented, P6)** mirrors every slot above in `tokens.tokens.json` `color.light`
|
||||
(e.g. base `#eaeef3`, panel `#ffffff`, text-primary `#16202c`); accent `#3b82c4` is unchanged. Dark
|
||||
is the default — see §8.
|
||||
|
||||
## 3. Typography
|
||||
|
||||
@@ -166,11 +166,17 @@ brief in `design/BRIEF.md`). The system:
|
||||
- **Touch + safe areas:** 44px minimum primary touch targets; body type bumped 13→15px (§3);
|
||||
sticky bottom nav respects `env(safe-area-inset-bottom)` and content gets bottom padding so
|
||||
the nav never overlaps it.
|
||||
- **Light theme — planned (adopted 2026-06-19).** Ship the light palette (`tokens.tokens.json`
|
||||
`color.light`) behind a `[data-theme]` switch + a top-bar toggle. **Dark stays the default and
|
||||
the brand's primary identity;** light is the optional alternative. It co-lands with the
|
||||
inline-style→CSS migration (theming needs CSS custom properties, not per-element inline values).
|
||||
Full per-component light tints (stage/staleness/note badges) are in `_imports/2026-06-19/`.
|
||||
- **Light theme — implemented (P6, 2026-06-19).** The light palette (`tokens.tokens.json`
|
||||
`color.light` + the per-component tints from the Claude Design export) ships behind a
|
||||
`:root[data-theme="light"]` switch, applied by a pre-paint boot script from
|
||||
`localStorage.venture_crm_theme` and toggled app-wide (desktop sidebar footer + mobile top-bar
|
||||
icon). **Dark stays the default and the brand's primary identity;** light is the optional
|
||||
alternative (no `prefers-color-scheme` auto-switch). Colors are driven by ~44 themed `:root` CSS
|
||||
vars whose dark values equal the original literals (so dark mode is unchanged). **Known gaps
|
||||
(Phase 7 conformance pass):** some bespoke desktop `<style>` shades (login glow/scrollbar/
|
||||
table-hover/KPI), the legacy off-palette `.badge-*` family, and shadows are not yet themed.
|
||||
Full per-component light tints (stage/staleness/note badges) live in
|
||||
`_imports/2026-06-19_zip-file/` (`store.js` + the four `*App.dc.html` `DCLogic` palettes).
|
||||
|
||||
The gap between this section and the current `index.html` is the implementation backlog in
|
||||
`ROADMAP.md` (incl. the inline-style→CSS migration and the locked pipeline-stages/flags spec).
|
||||
|
||||
Reference in New Issue
Block a user