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:126and 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 againstgenerateThemeCss/parseThemeCssinwebapp/src/lib/themes.tsand howCssEntryis 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).