Skip to content

feat(registry): gibson-theme — dark-led theme item for the Gibson admin portal - #10

Merged
curphey merged 4 commits into
mainfrom
feat/gibson-theme
Jun 12, 2026
Merged

curphey merged 4 commits into
mainfrom
feat/gibson-theme

Conversation

@curphey

@curphey curphey commented Jun 12, 2026

Copy link
Copy Markdown
Collaborator

What

Adds a new named theme registry item gibson-theme (registry:style) for the Gibson admin portal (gibson-hackers.com). It is a 1:1 structural swap for the corp theme globals.css — same variable inventory, same :root/[data-theme]/.dark/.light selectors, same @custom-variant, @font-face, @theme inline, and body blocks — with only the dark-mode values changed to the Gibson look. It reuses the shared src/registry/crashoverride/theme/tokens.css (the brand-core layer, identical for both themes) rather than duplicating it.

The corp theme item is completely untouched (git diff origin/main -- src/registry/crashoverride/theme/ is empty; the CI tokens.css staleness gate passes).

Value summary (dark block)

Var Corp theme gibson-theme
--radius 0.25rem 0.375rem
--background oklch(0.20 0 0) oklch(0.145 0.02 274) — near-black indigo
--card oklch(0.30 0.02 274) oklch(0.185 0.022 274)
--popover oklch(0.33 0.02 274) oklch(0.22 0.022 274)
--primary oklch(0.93 0.25 124) oklch(0.93 0.25 124) — same phosphor lime
--primary-foreground oklch(0.20 0 0) oklch(0.13 0.02 274)
--secondary / --muted / --accent oklch(0.27 0.035 274) oklch(0.24 0.03 274)
--muted-foreground oklch(0.68 0.02 274) oklch(0.66 0.018 274)
--border oklch(1 0 0 / 8%) oklch(1 0 0 / 9%) — hairline
--sidebar oklch(0.20 0 0) oklch(0.125 0.018 274)
--sidebar-accent oklch(0.27 0.035 274) oklch(0.22 0.025 274)
--chart-1..5 (corp dark) copied unchanged
Light block — copied verbatim from corp (white surfaces, Fandango primary) so the in-app toggle stays on the proven corp light

Verification

  • npm run registry:build — emits public/r/gibson-theme.json and public/r/v1/gibson-theme.json; tokens.css content in the built item is byte-identical to the corp theme item's
  • git diff --exit-code src/registry/crashoverride/theme/tokens.css — staleness gate clean
  • npx vitest run — 205/205 pass (incl. new src/test/gibson-theme.test.ts + a registry-build.test.ts case for the new item)
  • npm run lint + npm run build (tsc + vite) — clean

Notes

  • Storybook preview registration skipped: .storybook/preview.tsx imports the corp theme's globals.css globally; both themes define the same :root variables, so importing the second file would silently override the first (last-import wins). A safe preview needs a scoped/toolbar mechanism — out of scope here.
  • Consumer wiring lands in crashappsec/digital-marketing: the Gibson admin portal applies this item via the design-refresh admin job (npx shadcn add @crashoverride/gibson-theme / registry-refresh.yml with items: gibson-theme).
  • GitHub Pages must deploy (merge → pages.yml) before consumers can shadcn add the new item — public/r/ is gitignored and regenerated by CI.

🤖 Generated with Claude Code

curphey and others added 4 commits June 12, 2026 10:59
…in portal

New registry:style item "gibson-theme" serving gibson-hackers.com. Structurally
a 1:1 swap for the corp `theme` globals.css (same var inventory, same
[data-theme]/.dark selectors, same @font-face + @theme inline blocks); only the
dark values differ — deep near-black indigo surfaces (hue 274), phosphor-lime
primary, hairline borders, 0.375rem radius. Chart vars and the entire light
block are copied verbatim from the corp theme so the in-app toggle stays on the
proven corp light. Shares the corp theme's tokens.css (brand-core layer) rather
than duplicating it. The corp `theme` item is untouched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Mark declared the Gibson home-page prompt canonical (2026-06-12). The
gibson-theme registry item is the brand carrier for internal apps, so the
spec lives here too: dark-led lime-primary tokens, mono status chrome,
real-data-only surfaces, reduced-motion parity. Implementation of record:
crashappsec/digital-marketing PR #1767.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…anonical values

- registry.json item description, globals.css header, README item list and
  the brand spec now all state explicitly: gibson-theme is for internal
  apps only (gibson-hackers.com), never for crashoverride.com or any
  public/customer-facing property — public sites use the theme item.
- docs/gibson-home-spec.md gains the approved canonical value table (the
  Mission Control playground render of record, dark + light) and documents
  the known deltas vs the gibson-theme global surface tokens
  (background/card/muted-foreground), explicitly gated on Mark before any
  global alignment. New internal surfaces take values from the table.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…als as-is for now (Mark, 2026-06-12)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@curphey
curphey merged commit 9c0d10e into main Jun 12, 2026
2 checks passed
@curphey
curphey deleted the feat/gibson-theme branch June 12, 2026 11:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant