e6a89450da
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.
54 lines
1.3 KiB
Plaintext
54 lines
1.3 KiB
Plaintext
# ── macOS ──
|
|
.DS_Store
|
|
**/.DS_Store
|
|
|
|
# ── Design provenance: keep the text artifacts (*.dc.html, store.js, *.md, tokens.json)
|
|
# but not the heavy binaries (the raw .zip export + screenshot/thumbnail PNGs). ──
|
|
design/_imports/**/*.zip
|
|
design/_imports/**/*.png
|
|
design/_imports/**/*.thumbnail
|
|
|
|
# ── Python ──
|
|
__pycache__/
|
|
*.py[cod]
|
|
|
|
# ── Secrets & env (CLAUDE.md guardrail #7 — never commit secrets) ──
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
!.env.beta.example
|
|
data/secrets/
|
|
|
|
# ── Claude Code (deny by default, allow-list shared wiring — see standards/portability.md) ──
|
|
.claude/*
|
|
!.claude/rules/
|
|
!.claude/agents/
|
|
!.claude/commands/
|
|
!.claude/skills/
|
|
!.claude/settings.json
|
|
# launch.json is a deliberate, secret-free debug config CRM commits
|
|
!.claude/launch.json
|
|
|
|
# ── Local databases & SQLite sidecars ──
|
|
# CRM is canonical and lives on the Start9 /data volume; never commit live LP
|
|
# data into git (guardrail #1). Dev/synthetic DBs are local-only.
|
|
data/*.db
|
|
data/*.db-wal
|
|
data/*.db-shm
|
|
data/crm_dev.db*
|
|
|
|
# ── FUSE / build temp ──
|
|
*.fuse_hidden*
|
|
start9/**/javascript.tmp.*
|
|
node_modules/
|
|
|
|
# Real CRM data bundled in packaging seed dirs — never commit (guardrail #1)
|
|
**/seed/data/
|
|
**/crm.db
|
|
**/crm.db-wal
|
|
**/crm.db-shm
|
|
**/fundraising_state_auto_*.json
|
|
|
|
# Local fundraising-state backups (real data) — never commit
|
|
data/backups/
|