feat(frontend): split theme CSS vars into a standalone theme.css
Phase 1 of stylix integration (#1457): extract the Catppuccin palette into a dedicated, separately-linked stylesheet so a theme swap can replace just that file without rebuilding the rest of the frontend. - shared/src/theme.css (new): the `:root` palette, moved out of base.css (which now holds only the body typography it references). - shared/package.json: export `./theme.css`. - dashboard/src/theme.css + agent/src/theme.css (new): one-line re-exports of @hive/shared/theme.css so each package's esbuild emits its own standalone `dist/static/theme.css` (palette is NOT inlined into the page bundles). - both build.mjs: add theme.css to the CSS build list. - every page (dashboard index/flow/logs, agent index/stats/screen): link `theme.css` first, ahead of the page CSS, so the `:root` vars resolve for everything. - docs/web-ui/css-vars.md: document the split + the no-rebuild rationale. Behaviour-neutral — same colours, just relocated. Verified both `npm run build` outputs: theme.css emits standalone (383b) with the palette; no `--*` palette defs duplicated into common.css/agent.css. Phase 2 (nix derivation that swaps theme.css from stylix colours) is a follow-up; touches nix/frontend.nix, coordinating with damocles. Part of #1457.
This commit is contained in:
parent
a3e6585266
commit
e70584b632
14 changed files with 88 additions and 38 deletions
|
|
@ -1,11 +1,22 @@
|
|||
# CSS custom properties (theme variables)
|
||||
|
||||
All colour variables are declared **once** in
|
||||
`frontend/packages/shared/src/base.css` under `:root`.
|
||||
`frontend/packages/shared/src/theme.css` under `:root`.
|
||||
Per-page stylesheets (`common.css`, `dashboard.css`, `flow.css`, `logs.css`, `agent.css`) must reference these
|
||||
names and must **not** redeclare them.
|
||||
names and must **not** redeclare them. (`base.css` holds only the
|
||||
shared `body` typography — it references the palette but no longer
|
||||
defines it.)
|
||||
|
||||
## Palette (`base.css`)
|
||||
`theme.css` is deliberately a **standalone** stylesheet, not `@import`ed
|
||||
into the page bundles: each package re-exports it (`src/theme.css` →
|
||||
`@import "@hive/shared/theme.css"`) so esbuild emits its own
|
||||
`dist/static/theme.css`, and every page links it **first**
|
||||
(`<link rel="stylesheet" href=".../theme.css">`) ahead of the page CSS.
|
||||
Because the palette lives in its own output file, a theme swap — e.g. a
|
||||
stylix-generated variant carrying the same variable names — can replace
|
||||
just that one file without rebuilding the rest of the frontend bundle.
|
||||
|
||||
## Palette (`theme.css`)
|
||||
|
||||
| Variable | Hex | Catppuccin Mocha | Use |
|
||||
|---|---|---|---|
|
||||
|
|
|
|||
Loading…
Reference in a new issue