Skip to content

Commit 2708f72

Browse files
Ripwordsclaude
andcommitted
feat(extension): retheme popup + options to flame/mist tokens
The Chrome extension's popup and options page were using zinc/emerald — distinct from the flame/mist palette every other surface in the product shares (web wizard, Expo wizard, dashboard). Reskin to match. The change is a token swap, not a redesign — the existing "operator-terminal" aesthetic (mono uppercase eyebrows, dot indicators with halo, stripe-edged config cards, small dense buttons) lands better against the warm flame primary + cool mist neutrals than it did against the colder zinc + emerald. Specifics: - :root tokens remapped: ink/line/surface track mist; accent/accent-2/ accent-wash track flame. Added --accent-edge and --accent-deep so the hint-bar (success / informational) can be styled with flame variants instead of hardcoded emerald hexes. Added --danger-edge for parity. - masthead "REPRO" eyebrow dot now picks up flame (was emerald). - granted-config stripe is flame; pending-permission stripe stays burnt amber (--warn) — it's distinct enough from flame to read as a different state rather than a brighter active. - options page radial gradients swap emerald-50 for flame-soft and add a comment explaining the warm/cool tension that mirrors the wizard. Tokens are commented as mirroring @reprojs/sdk-utils/src/theme/tokens.ts. The extension package doesn't import sdk-utils at runtime just for colors (it'd cost an extra IIFE chunk), so the values are duplicated with a "keep in sync" header — same trade-off the existing styles-inline.ts file makes for the web SDK. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 67f0dbf commit 2708f72

2 files changed

Lines changed: 33 additions & 16 deletions

File tree

apps/extension/src/options/styles.css

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,13 @@ body.options {
22
width: auto;
33
min-height: 100vh;
44
padding: 56px 24px 80px;
5+
/* Soft flame wash on the upper-left, cool mist haze on the upper-right —
6+
the same warm/cool tension the wizard uses, just scaled up for the
7+
full-page options surface. */
58
background:
6-
radial-gradient(ellipse 600px 400px at 20% -10%, #ecfdf5 0%, transparent 60%),
7-
radial-gradient(ellipse 500px 300px at 80% 0%, #fafafa 0%, transparent 70%), var(--surface);
9+
radial-gradient(ellipse 600px 400px at 20% -10%, var(--accent-wash) 0%, transparent 60%),
10+
radial-gradient(ellipse 500px 300px at 80% 0%, var(--panel-alt) 0%, transparent 70%),
11+
var(--surface);
812
}
913

1014
.opt-shell {

apps/extension/src/popup/styles.css

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,39 @@
1+
/*
2+
* Tokens mirror @reprojs/sdk-utils/src/theme/tokens.ts so the extension
3+
* popup, the web SDK widget, the Expo wizard, and the dashboard all share
4+
* the flame (primary) + mist (neutral) scales. Keep in sync with that
5+
* file when colors change.
6+
*/
17
:root {
28
--font-sans: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
39
--font-mono: ui-monospace, "SFMono-Regular", "Cascadia Mono", Menlo, Consolas, monospace;
410

5-
--ink: #09090b;
6-
--ink-2: #3f3f46;
7-
--ink-3: #71717a;
8-
--line: #e4e4e7;
9-
--line-strong: #a1a1aa;
10-
--surface: #fafafa;
11+
/* mist scale (text + neutral surfaces) */
12+
--ink: #25343f;
13+
--ink-2: #4a5763;
14+
--ink-3: #6c7a87;
15+
--line: #dde2e5;
16+
--line-strong: #c7cfd5;
17+
--surface: #f5f7f8;
1118
--panel: #ffffff;
12-
--panel-alt: #f4f4f5;
19+
--panel-alt: #edf0f1;
1320

14-
--accent: #047857;
15-
--accent-2: #059669;
16-
--accent-wash: #ecfdf5;
21+
/* flame scale (primary accent) */
22+
--accent: #ff9b51;
23+
--accent-2: #f27a1f;
24+
--accent-wash: #fff2e6;
25+
--accent-edge: #ffc78a;
26+
--accent-deep: #7c3a08;
1727

28+
/* burnt-amber for "permission pending" — distinct enough from flame
29+
to read as a different state, not a brighter version of the active. */
1830
--warn: #b45309;
19-
--warn-wash: #fffbeb;
31+
--warn-wash: #fff7ed;
2032
--warn-edge: #fcd34d;
2133

2234
--danger: #b91c1c;
2335
--danger-wash: #fef2f2;
36+
--danger-edge: #fecaca;
2437

2538
--r-sm: 4px;
2639
--r-md: 6px;
@@ -404,7 +417,7 @@ a:visited {
404417
.error-bar {
405418
padding: 8px 12px;
406419
background: var(--danger-wash);
407-
border: 1px solid #fecaca;
420+
border: 1px solid var(--danger-edge);
408421
border-left-width: 3px;
409422
color: var(--danger);
410423
font-size: 12px;
@@ -415,9 +428,9 @@ a:visited {
415428
.hint-bar {
416429
padding: 10px 12px;
417430
background: var(--accent-wash);
418-
border: 1px solid #a7f3d0;
431+
border: 1px solid var(--accent-edge);
419432
border-left-width: 3px;
420-
color: #064e3b;
433+
color: var(--accent-deep);
421434
font-size: 12px;
422435
line-height: 1.5;
423436
border-radius: var(--r-sm);

0 commit comments

Comments
 (0)