themes-noir/presets.json
Alex Dunmow 1451f06d9f feat(noir): WO-TF-022 Wave A — detective/true-crime dossier rebuild
Re-persona noir from photography to the locked detective/true-crime
direction: case-file panels, typewriter type, redaction bars, evidence
board, film grain. High-key gallery (light) / darkroom black + amber
safelight (dark).

- 49 mandatory builtin overrides (chrome, marketing, primitives,
  commerce, blog family, auth, page-suggestions), re-skinned from the
  frozen builtin defaults with every field/provider/tag/JS preserved;
  legacy button/card field reads reconciled to the new contract.
- 7 page templates (default, full-width, landing, article, blog-index,
  contact, auth) + themed email wrapper.
- 4 persona blocks (case_file, evidence_board, redacted_quote,
  case_dossier); old photography blocks deleted (now overrides).
- 5 dual-mode presets (19 tokens, light+dark tuned).
- Bundled OFL fonts (Source Serif 4, IBM Plex Mono) + licenses;
  RECOMMENDED_FONTS/ICONS updated; required_icon_packs=lucide.
- Master pages + seed demo ("The Cold File": home/about/blog x3/contact
  with case_tips data table + row_inserted email-admins workflow/login).
- noir CSS vocabulary via manifest css.input_css_append; MID motion
  (scroll-reveal + gallery lightbox, reduced-motion honored, no canvas).

Verified: make build exit 0; check-safety 32 checks 19 ok 13 skip -> OK.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 12:48:44 +08:00

253 lines
8.1 KiB
JSON

[
{
"id": "cold-case",
"name": "Cold Case",
"description": "The default. High-key gallery by day, ink-black type, evidence red. Darkroom black by night lit by an amber safelight.",
"theme": {
"mode": "both",
"lightColors": {
"background": "40 14% 96%",
"foreground": "24 12% 10%",
"card": "40 18% 99%",
"cardForeground": "24 12% 10%",
"popover": "40 18% 99%",
"popoverForeground": "24 12% 10%",
"primary": "0 68% 42%",
"primaryForeground": "40 20% 97%",
"secondary": "40 8% 90%",
"secondaryForeground": "24 12% 14%",
"muted": "40 8% 91%",
"mutedForeground": "28 6% 38%",
"accent": "0 60% 48%",
"accentForeground": "40 20% 97%",
"destructive": "0 74% 40%",
"destructiveForeground": "40 20% 97%",
"border": "30 8% 80%",
"input": "30 8% 84%",
"ring": "0 68% 42%"
},
"darkColors": {
"background": "30 9% 7%",
"foreground": "40 20% 88%",
"card": "30 9% 10%",
"cardForeground": "40 20% 88%",
"popover": "30 9% 10%",
"popoverForeground": "40 20% 88%",
"primary": "36 82% 56%",
"primaryForeground": "30 22% 8%",
"secondary": "30 8% 15%",
"secondaryForeground": "40 16% 85%",
"muted": "30 8% 13%",
"mutedForeground": "40 10% 60%",
"accent": "32 78% 50%",
"accentForeground": "30 22% 8%",
"destructive": "0 70% 52%",
"destructiveForeground": "40 20% 92%",
"border": "30 8% 20%",
"input": "30 8% 18%",
"ring": "36 82% 56%"
}
}
},
{
"id": "evidence-red",
"name": "Evidence Red",
"description": "Red-forward in both modes. The colour of the string on the board and the line under the name.",
"theme": {
"mode": "both",
"lightColors": {
"background": "20 10% 97%",
"foreground": "0 8% 8%",
"card": "20 12% 100%",
"cardForeground": "0 8% 8%",
"popover": "20 12% 100%",
"popoverForeground": "0 8% 8%",
"primary": "358 74% 44%",
"primaryForeground": "20 12% 98%",
"secondary": "20 8% 90%",
"secondaryForeground": "0 8% 12%",
"muted": "20 8% 92%",
"mutedForeground": "12 6% 36%",
"accent": "8 68% 50%",
"accentForeground": "20 12% 98%",
"destructive": "358 78% 42%",
"destructiveForeground": "20 12% 98%",
"border": "12 8% 82%",
"input": "12 8% 86%",
"ring": "358 74% 44%"
},
"darkColors": {
"background": "0 12% 6%",
"foreground": "10 12% 90%",
"card": "0 12% 9%",
"cardForeground": "10 12% 90%",
"popover": "0 12% 9%",
"popoverForeground": "10 12% 90%",
"primary": "2 78% 56%",
"primaryForeground": "0 15% 8%",
"secondary": "0 10% 14%",
"secondaryForeground": "10 12% 86%",
"muted": "0 10% 12%",
"mutedForeground": "8 10% 60%",
"accent": "6 74% 52%",
"accentForeground": "0 15% 8%",
"destructive": "2 80% 54%",
"destructiveForeground": "10 12% 92%",
"border": "0 10% 19%",
"input": "0 10% 16%",
"ring": "2 78% 56%"
}
}
},
{
"id": "safelight",
"name": "Safelight",
"description": "The darkroom under amber safelight. Warm bone paper by day, deep umber and amber glow by night.",
"theme": {
"mode": "both",
"lightColors": {
"background": "38 30% 95%",
"foreground": "30 18% 12%",
"card": "38 34% 98%",
"cardForeground": "30 18% 12%",
"popover": "38 34% 98%",
"popoverForeground": "30 18% 12%",
"primary": "32 74% 44%",
"primaryForeground": "38 30% 97%",
"secondary": "38 16% 88%",
"secondaryForeground": "30 18% 14%",
"muted": "38 14% 90%",
"mutedForeground": "32 12% 38%",
"accent": "26 70% 48%",
"accentForeground": "38 30% 97%",
"destructive": "0 70% 44%",
"destructiveForeground": "38 30% 97%",
"border": "34 16% 80%",
"input": "34 14% 84%",
"ring": "32 74% 44%"
},
"darkColors": {
"background": "28 22% 6%",
"foreground": "38 28% 88%",
"card": "28 20% 9%",
"cardForeground": "38 28% 88%",
"popover": "28 20% 9%",
"popoverForeground": "38 28% 88%",
"primary": "34 84% 56%",
"primaryForeground": "28 24% 7%",
"secondary": "28 18% 14%",
"secondaryForeground": "38 22% 84%",
"muted": "28 16% 12%",
"mutedForeground": "36 16% 60%",
"accent": "28 76% 50%",
"accentForeground": "28 24% 7%",
"destructive": "0 72% 52%",
"destructiveForeground": "38 28% 92%",
"border": "28 18% 19%",
"input": "28 16% 16%",
"ring": "34 84% 56%"
}
}
},
{
"id": "interrogation",
"name": "Interrogation",
"description": "Steel and cold light. Grey-blue neutral by day, slate-black room lit by a single steel lamp by night.",
"theme": {
"mode": "both",
"lightColors": {
"background": "210 16% 95%",
"foreground": "215 22% 12%",
"card": "210 18% 99%",
"cardForeground": "215 22% 12%",
"popover": "210 18% 99%",
"popoverForeground": "215 22% 12%",
"primary": "205 58% 40%",
"primaryForeground": "210 20% 97%",
"secondary": "210 14% 89%",
"secondaryForeground": "215 22% 14%",
"muted": "210 12% 91%",
"mutedForeground": "214 10% 38%",
"accent": "8 62% 48%",
"accentForeground": "210 20% 97%",
"destructive": "0 72% 44%",
"destructiveForeground": "210 20% 97%",
"border": "212 14% 80%",
"input": "212 12% 84%",
"ring": "205 58% 40%"
},
"darkColors": {
"background": "215 24% 7%",
"foreground": "210 18% 88%",
"card": "215 22% 10%",
"cardForeground": "210 18% 88%",
"popover": "215 22% 10%",
"popoverForeground": "210 18% 88%",
"primary": "200 70% 56%",
"primaryForeground": "215 26% 7%",
"secondary": "215 18% 15%",
"secondaryForeground": "210 16% 85%",
"muted": "215 16% 13%",
"mutedForeground": "212 14% 60%",
"accent": "6 72% 54%",
"accentForeground": "215 26% 7%",
"destructive": "0 70% 52%",
"destructiveForeground": "210 18% 92%",
"border": "215 18% 20%",
"input": "215 16% 17%",
"ring": "200 70% 56%"
}
}
},
{
"id": "redaction",
"name": "Redaction",
"description": "Pure document. Stark black-on-white by day, near-monochrome by night, with the faintest red where the bar lifts.",
"theme": {
"mode": "both",
"lightColors": {
"background": "0 0% 98%",
"foreground": "0 0% 8%",
"card": "0 0% 100%",
"cardForeground": "0 0% 8%",
"popover": "0 0% 100%",
"popoverForeground": "0 0% 8%",
"primary": "0 62% 42%",
"primaryForeground": "0 0% 98%",
"secondary": "0 0% 92%",
"secondaryForeground": "0 0% 12%",
"muted": "0 0% 93%",
"mutedForeground": "0 0% 36%",
"accent": "0 0% 12%",
"accentForeground": "0 0% 98%",
"destructive": "0 70% 42%",
"destructiveForeground": "0 0% 98%",
"border": "0 0% 82%",
"input": "0 0% 86%",
"ring": "0 62% 42%"
},
"darkColors": {
"background": "0 0% 5%",
"foreground": "0 0% 90%",
"card": "0 0% 8%",
"cardForeground": "0 0% 90%",
"popover": "0 0% 8%",
"popoverForeground": "0 0% 90%",
"primary": "2 72% 54%",
"primaryForeground": "0 0% 6%",
"secondary": "0 0% 14%",
"secondaryForeground": "0 0% 86%",
"muted": "0 0% 12%",
"mutedForeground": "0 0% 58%",
"accent": "0 0% 88%",
"accentForeground": "0 0% 8%",
"destructive": "2 74% 52%",
"destructiveForeground": "0 0% 92%",
"border": "0 0% 19%",
"input": "0 0% 16%",
"ring": "2 72% 54%"
}
}
}
]