Untouchable Theme Engine
The Untouchable Theme Engine is the official visual contract for BentoTUI.
Definition
The theme engine is not a skin layer. It is a contract layer.
- Bentos consume theme semantics for screen-level behavior.
- Rooms consume theme semantics for spacing and split readability.
- Bricks consume theme semantics for component rendering and contrast.
When this contract is stable, app teams can compose quickly without per-screen color glue.
Scope
- Centralize visual semantics across all bentos, rooms, and bricks.
- Prevent ad-hoc per-screen color glue and style drift.
- Keep rendering predictable across themes and snapshots.
Architecture Placement
- Shared style helpers moved from
styles/totheme/styles/. - Theme values are consumed by components as semantic roles, not hard-coded colors.
- Validation scenarios treat theme switching as a first-class input.
Contract Rules
- Theme decisions happen globally, not per feature screen.
- Bricks render using semantic tokens and must preserve contrast guarantees.
- Rooms do not invent local color systems.
- Bentos should remain theme-agnostic in behavior logic.
Validation Expectations
Theme regressions should always be reproducible using the frozen tuple:
scenario + viewport + theme + focus + snapshot
registry/bentos/app-shell is the proving ground for this behavior and should stay deterministic.
Current State
- Shared style helpers moved from
styles/totheme/styles/. - Themes now drive global visual intent instead of local overrides.
- Validation scenarios use theme changes as first-class regression inputs.
Outcome
Teams can compose faster because layout and component behavior remain stable while theme semantics apply globally.