Skip to content

feat(themes): font axis, neutral cream foregrounds, refined shell#257

Merged
itsprade merged 2 commits into
feat/tailor-themesfrom
worktree-flat-gradient-buttons
May 15, 2026
Merged

feat(themes): font axis, neutral cream foregrounds, refined shell#257
itsprade merged 2 commits into
feat/tailor-themesfrom
worktree-flat-gradient-buttons

Conversation

@itsprade
Copy link
Copy Markdown
Contributor

Stacked on top of #222 (feat/tailor-themes).

Summary

  • Font axis — added as a second appearance axis independent of color palette. Geist is default and listed first; Inter is the alternate. New useFont hook, data-font html attribute, persisted to appshell-ui-font. ThemeSwitcher menu now shows color (top) + font (bottom).
  • Cream theme — dropped the brand dark-green text-on-violet pairing; --secondary-foreground, --accent-foreground, --sidebar-accent-foreground now use the same near-black as bloom (rgba(16, 18, 43, 1)).
  • Cream / Bloom shell gradient — multi-stop fade (7 stops) with pure white covering the bottom 30%, giving a smoother, more blended feel.
  • Sidebar active row — hairline outline (0.5px solid var(--border), outline-offset: -0.5px) plus --semantic-shadow-xs. Rule lives in @layer utilities so it wins against Tailwind's outline-hidden. Selector uses [class~="astw:bg-sidebar-accent"] to match the whole-token class the wrapper components inject when a route is active (they don't flip data-active).
  • Docs: docs/api/use-theme.md + docs/concepts/styling-theming.md updated for the new font axis.

Test plan

  • Toggle the appearance menu — verify color and font axes work independently and persist across reloads.
  • Switch through light, dark, cream, bloom with both fonts.
  • Cream: hover/active sidebar text is near-black, not deep green.
  • Cream + Bloom: shell gradient fades smoothly and is pure white in the bottom ~30%.
  • Sidebar: active row shows a hairline outline + subtle drop shadow across all four themes.
  • Pre-existing snapshot failures in menu/select/combobox/autocomplete are present on the base branch too (base-ui inline-style ordering); not introduced here.

🤖 Generated with Claude Code

itsprade and others added 2 commits May 13, 2026 21:47
…sidebar chrome

- Remove deep-dark palette + types + switcher entry + globals selectors; dark covers the same need.
- Default theme now bloom (existing localStorage choices preserved); legacy tailor-dark id remaps to dark.
- Strip tactile button overrides; cream/bloom/dark buttons inherit default shadcn Button styling.
- Drop sidebar right-edge divider (border-r/border-l and inset-variant border-x).
- Dark --sidebar matches --background; sidebar blends with app surface.
- Unify --destructive at #dc2626 across light/cream/bloom for brand-consistent red.
- Neutral badge uses Tailwind neutral palette so lavender --secondary doesn't bleed in.
- Outline button transparent on cream/bloom only (rule sits in @layer utilities to beat
  Tailwind's astw:bg-background which also lives in utilities).
- Secondary button hover now brightness-based (visible regardless of token value).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…om shell

- Font axis (Geist default, Inter): `useFont` hook + `data-font` attr,
  added to ThemeSwitcher as a second axis alongside the color palette.
- Cream theme drops the dark-green text-on-violet pairing; secondary /
  accent / sidebar-accent foregrounds now use the same near-black as bloom.
- Cream/Bloom shell gradient: multi-stop fade with pure white covering the
  bottom 30% for a softer, more blended feel.
- Sidebar active item: hairline outline (`var(--border)`) + `--semantic-shadow-xs`
  drop so the selected row reads as elevated. Rule lives in `@layer utilities`
  so it wins against Tailwind's `outline-hidden` utility.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@itsprade itsprade merged commit ba6c830 into feat/tailor-themes May 15, 2026
4 of 5 checks passed
@itsprade itsprade deleted the worktree-flat-gradient-buttons branch May 15, 2026 09:02
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