镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

Add the Baton appearance theme - #2196

Open
blakemcanally wants to merge 2 commits into
bmcanally/theme-cablefrom
bmcanally/theme-baton
Open

blakemcanally wants to merge 2 commits into
bmcanally/theme-cablefrom
bmcanally/theme-baton

Conversation

@blakemcanally

@blakemcanally blakemcanally commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Part of #2161. Stacked on #2180.

Summary

This PR adds the Baton appearance theme: "Beige-box chrome and navy highlights. After dark, it glows green."

What changes

  • A [data-theme="baton"] block maps the theme slots to the Baton palette. Its accent family is navy in light mode and phosphor green in dark mode. The Theme accent resolves to it.
  • Only colors change. Fonts, radii, border widths and shapes stay as they are.
  • A new slot, --theme-border-standard-*, lets a theme set the standard hairline. --border-standard falls back to today's neutral-3 (light) and neutral-5 (dark), so every other theme is unchanged. Baton uses a mid-gray hairline in light mode (#808080) and #3a3a3a in dark mode.
  • Dark mode puts dark ink on the green accent, so its five accent overlays use the tint fills. Light mode keeps the shade overlays.
  • The frame follows the page mode in both modes.
  • Baton sets --theme-green-text-light and --theme-red-text-light to green-12 and red-12. The lighter Account-first onboarding and sign-in recovery #2579 status inks miss Lc 60 on Baton's neutral-4.

Palette adjustments

Palette value Old New Reason
--baton-neutral-2-light #f2f2f2 #f3f3f3 --chart-series-2 reaches 3:1 on base and inset

Screenshots

Baton light shell

Baton dark shell

Baton settings, light

Testing

  • node scripts/design-system/check-contrast.mjs exits 0 with no new allowance or exception. pnpm design:check, pnpm typecheck and biome on the changed files pass.
  • Vitest for src/shared/theme, src/shared/design-system and src/app.
  • Playwright: tests/browser/appearance-theme.spec.mjs and tests/browser/appearance.spec.mjs on Chromium. The Baton journey checks --border-standard in both modes and checks that another theme's preview card keeps its own border.
  • Mutation checks: removing the dark tint overlays fails the guard with five pairs. Dropping the new reset lines fails the reset-block test.

The contrast guard does not set a floor for --border-standard itself, so the browser assertions are what protect the new slot.

🤖 Generated with Claude Code

@blakemcanally
blakemcanally changed the base branch from bmcanally/appearance-themes to bmcanally/theme-cable November 5, 2026 19:57
@blakemcanally
blakemcanally added this pull request to stack #2669 November 5, 2026 20:56
@blakemcanally
blakemcanally marked this pull request as ready for review November 6, 2026 00:31
@blakemcanally
blakemcanally requested a review from a team as a code owner November 6, 2026 00:31
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-06T00:35:00.802122Z 6b84f1d Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

blakemcanally and others added 2 commits November 6, 2026 09:09
Baton maps the theme slots onto its palette: neutral ramps, canvas, sidebar,
selection, hover, badge, status dots and its own navy-then-green accent
family, which the Theme accent follows. The frame follows the page mode in
both modes. Dark ink sits on the dark accent, so the five dark accent
overlays use the tint fills.

Baton's light neutral-2 moves from #f2f2f2 to #f3f3f3, the same hue, so
chart series 2 clears 3:1 on the base and inset surfaces (2.974:1 before)
without an allowance.

The registry, the pre-paint bootstrap and the theme tests carry Baton as a
new row each, and the browser journey covers its frame and accent per mode.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Signed-off-by: Blake McAnally <bmcanally@squareup.com>
--border-standard now reads --theme-border-standard-light and -dark and falls
back to neutral-3 and neutral-5, so a theme that leaves the slot out is
unchanged. Baton maps light to its mid-gray neutral-8 and dark to its dark
border step. The slot is in the preview reset block, the THEMES banner and
the documented slot list.

Theme preview cards now always carry data-theme-reset. A card for a theme
that leaves a slot out otherwise inherited the page theme's value, which
showed Baton's hairline inside the Relax card.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Blake McAnally <bmcanally@squareup.com>

@joahg joahg left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Baton's new --theme-border-standard-* slot falls back to the previous neutral-3/neutral-5 hairlines and is in the reset block, so other themes are unchanged; check-contrast, biome and the vitest files pass locally (I did not run the Playwright journey).

This branch has not been deployed

No deployments
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