2.8 KiB
2.8 KiB
Context
The project already contains a theme file at src/static/styles/theme.scss, but the actual app styling is inconsistent:
theme.scssdefines--brand-*, text, background, border, and utility classessrc/uni.scssanduno.config.tsstill reference--theme-*variables The requested change is a cross-cutting design-system alignment focused on the project-wide theme contract.
Goals / Non-Goals
-
Goals:
- Define a single source of truth for the core project palette
- Use exactly three core brand colors for layout-level styling:
- Primary:
#2F7D32 - Secondary:
#1F2937 - Tertiary:
#F4FBF5
- Primary:
- Ensure shared consumers such as UnoCSS utilities and uView theme variables resolve from the same theme source
-
Non-Goals:
- Full repo-wide page cleanup in one implementation pass
- Redefining semantic success, warning, and error states for every page
- Removing light/dark theme support
Decisions
-
Decision:
src/static/styles/theme.scsswill remain the only file that contains literal core brand values.- Why: this file already acts as the closest thing to a design-token source, and centralizing values here avoids duplicating palette values across styling systems.
-
Decision:
src/uni.scssanduno.config.tswill consume compatibility aliases exported from the same theme source rather than define their own brand colors.- Why: the current
--theme-*and--brand-*split is inconsistent and invites drift. Compatibility aliases let existing consumers keep working while the project converges on one source.
- Why: the current
-
Decision: layout-level accents in touched agent-facing pages and shared components will be limited to the approved primary, secondary, tertiary, and neutral tokens.
- Why: the project had mixed blue, green, orange, red, purple, and cyan across normal layout decoration, which weakens hierarchy and visual cohesion.
-
Decision: semantic success, warning, and error colors may remain for exceptional states only.
- Why: status badges, destructive actions, and warnings still need semantic distinction, but these colors should not become the default decorative palette for dashboards and cards.
Risks / Trade-offs
- Risk: changing the core palette may alter the look of existing shared utilities.
- Mitigation: keep the implementation scoped to shared tokens plus touched pages, and validate affected agent pages after the token update.
Migration Plan
- Define the approved brand palette and compatibility aliases in
src/static/styles/theme.scss - Update
src/uni.scssanduno.config.tsto reference the shared aliases - Verify touched shared utilities and agent pages for palette consistency
Open Questions
- Which additional agent-facing pages should be migrated to the shared token set in the next cleanup pass