Skip to content

refactor: theme steering initial pass - #609

Open
emrberk wants to merge 14 commits into
mainfrom
refactor/theme-steering-initial-pass
Open

emrberk wants to merge 14 commits into
mainfrom
refactor/theme-steering-initial-pass

Conversation

@emrberk

@emrberk emrberk commented Sep 7, 2026

Copy link
Copy Markdown
Member

Adds three comparable palettes on this branch so we can pick a rail + Run treatment without forking the shipped console.

Supersedes #607. Original work by @zacknelson.

How to review treatments

/ is control (shipped tokens). Append a query string, then toggle light/dark from the theme menu. Check both modes for each treatment.

URL Rail latch Run query
/ or /?treatment=control Shipped magenta, no stroke Solid primary
/?treatment=a Brighter magenta, no stroke Solid brighter primary
/?treatment=b Info cyan well + 1.5px/3px stroke Secondary success: green well, distinct stroke, porcelain type in dark / contentPrimary in light

/review/a and /review/b are aliases when the host has a SPA fallback. The Vite dev server does not, so use ?treatment= locally.

Leftover chrome must not move with A or B: tab underlines, SelectMenu checks, drag chrome, Save/Connect, non-rail info latches, switches, checkboxes, keyboard focus. Those stay on contentAccent / actionPrimary / the status families.

Overlays live in src/theme/treatments.ts. Remove that file and the ThemeModeProvider merge before landing on main. Keep the isolated brand* roles.

Also in this pass (visible on / too)

  • Timestamp clocks in the schema tree and table-details Columns are statusInfo. The designated timestamp is a filled clock at statusInfoSubtle. INTERVAL still uses contentPrimary.
  • Left-rail Grid result-panel glyph is Phosphor GridNine, matching the Chart glyph beside it.
  • Run-query menu is bottom-end on the chevron (right-aligned to the button group), replacing a hardcoded translateX(-7rem) that drifted on the longer “Run selected queries” label.

Isolated brand tokens

Control copies the shipped values so / does not jump:

Token Job
brandAccent / brandAccentActive / brandAccentBorder Selected rail icon, well, and stroke. Stroke is transparent in control and A.
brandAction / brandActionHover / brandActionBorder / brandActionForeground Run query well, hover, stroke, and type.

Earlier theme steering (still in this PR)

A light/dark theme pass across the console: palette retunes, accent → neutral interaction colours, a reworked shadow ramp, focus rings routed through a shared statusInfoFocus helper, and per-mode surfaces for the chrome that needed them.

Surfaces touched: notebook and SQL editor chrome, schema tree, table details drawer, result grid, MCP pair popover and footer pill, AI chat window, top bar, drawers, calendar, and the shared Badge / Switch / SegmentedControl / SelectMenu primitives.

MCP footer pill. Idle is neutral chrome: no fill, outlined in borderStrong to match the version badge beside it. Pill sits flush on the footer in dark mode. Agent changes read cyan (statusInfo).

MCP pair popover. All status notices are one full-bleed band. Danger bands use neutral title/body text with a red icon and surface.

Theme hygiene. yarn lint:colors passes. Three new tokens from the earlier pass (interactionSelected, controlTrackRest, controlTrackStroke) plus the isolated brand* roles in this commit. Five orphaned tokens already removed. src/components/Select deleted in favour of SelectMenuControl.

Test plan

  • / dark and light: rail magenta, no stroke; Run is solid primary; leftover chrome unchanged
  • /?treatment=a dark and light: brighter magenta rail + Run; leftover chrome still shipped magenta
  • /?treatment=b dark and light: cyan rail with stroke on both left and right rails; Run is secondary green; leftover chrome still shipped magenta
  • Timestamp clocks in schema tree and Columns; designated timestamp is filled and quieter
  • Left-rail Grid glyph matches Chart weight/family
  • Open the Run chevron on both “Run query” and “Run selected queries”: menu flush to the right edge
  • Save/Connect, tab underline, switches, checkboxes, keyboard focus do not follow A/B

zacknelson and others added 9 commits September 1, 2026 18:19
WIP theme pass: compress the light elevation ramp, quiet shadows, and
rebind hover/focus/selection off brand so crimson stays on tabs, notebook
identity, and primary actions.

Co-authored-by: Cursor <cursoragent@cursor.com>
Record the remaining palette and binding decisions in THEME-STEERING.md and apply them: status chips, Enabled/Validated, form SelectMenu, and the leftover light chrome leftover from the first lift.

Co-authored-by: Cursor <cursoragent@cursor.com>
Retune pink and danger roles and rebind latches, tooltips, dropdown shadows, and result-grid type so light chrome matches Figma without new tokens.

Co-authored-by: Cursor <cursoragent@cursor.com>
Light provider-tab hover sits lighter than the selected well. Result-grid selection uses a double hover wash and info cell chrome without retuning the shared gridSelection token.

Co-authored-by: Cursor <cursoragent@cursor.com>
Light metrics calendar flips enabled/disabled wells and keeps selected dates inverse. Monitoring count pills match Figma geometry with the quieter 32% stroke. Table and column glyphs settle on contentPrimary.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

Web Console deploy preview

Preview Commit Logs
https://pr-609--web-console.netlify.app 4f47b2d build log

emrberk and others added 4 commits September 8, 2026 16:18
Split rail latch and Run query onto brand* tokens so treatment A (brighter magenta) and B (info rail + success Run) can be compared without moving leftover chrome. Also retune timestamp clocks, swap the left-rail Grid glyph to Phosphor GridNine, and right-align the Run menu.

Co-authored-by: Cursor <cursoragent@cursor.com>
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.

2 participants