Files
ottyl/tickets/047-style-presets-as-full-layout-not-just-colors.md
T

2.4 KiB

047 — Treat presets as full style makeovers (not just color schemes) in UI and impl

Summary

Tickets 012 and 020 already unified the data model for colour schemes and custom CSS: src/settings.rs stores both built-in ColorScheme variants and CssEntry (Imported/Linked) as equally-selectable themes via custom_theme_id, and the doc comment at src/settings.rs:44 notes ticket 020 removed the old "use as theme" vs. "always-on overlay" distinction. However, built-in presets themselves (webapp/src/lib/themes.ts BUILTIN_THEMES) are still defined purely as ThemeVars records of --c-* color variables — they can only ever restyle colors, not layout — so the underlying premise of the wishlist ("presets are literally entire style makeovers that just happen to look like color changes") isn't actually true of the built-ins yet, and the settings UI may still read as "pick a colour scheme, optionally add CSS on top" rather than "pick one style, which can be as small as a palette or as large as a full redesign."

Scope

  • Audit the settings UI (webapp/src/lib/useSettingsPanel.ts, webapp/src/App.tsx:126 and wherever the panel is rendered) for language/layout that still implies "colour scheme" and "CSS" are two separate features, and rework it to present a single list of interchangeable style presets (built-in or user-provided), any of which may be pure-palette or a full layout override.
  • Confirm/ensure a user-provided style is not constrained to variable overrides — i.e. an imported/linked CSS entry can target arbitrary selectors and restructure layout, not just override --c-* variables (verify against generateThemeCss/parseThemeCss in webapp/src/lib/themes.ts and how CssEntry is applied to the document).
  • No new built-in presets need to be layout-altering; this ticket is about removing the artificial ceiling and the UI framing, not about shipping a redesigned built-in theme.

Acceptance criteria

  • Settings UI presents colour schemes and custom/imported CSS as one unified list of selectable "styles," with no leftover UI copy or layout implying they're separate concepts.
  • A user-supplied CSS entry can override layout-affecting rules (not just color variables) and have it take effect, verified manually with a sample stylesheet that changes more than colors.

Depends on

None (builds on tickets 012, 020 — already merged).