50 lines
2.4 KiB
Markdown
50 lines
2.4 KiB
Markdown
# 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).
|