Spec-backed reference
Component API pages are generated from the specs directory so docs stay aligned with the source of truth.
Accessible Lit web components, headless behavior from @chromvoid/headless-ui, and token-driven theming shaped for production application work.
Surface layer
UIKit is the surface layer for ChromVoid products. Behavior stays in headless models, while the package exposes a focused set of Lit custom elements, theme tokens, and controller helpers for real application flows.
Reference
Component pages are generated from specs/components, so the published API reference stays aligned with the real contract instead of drifting into hand-maintained copy.
Tooling
Guides, reference pages, and the live playground ship from the same VitePress build and work under the GitHub Pages subpath without rewrite assumptions.
Workflow
Start with install and registration, move into theming and architecture, then validate composed states in the playground before wiring a real shell.
Install path
The default entry point keeps registration explicit while the theme provider scopes the visual system around the components you render.
Import the bulk register entry and the token CSS in the browser entry.
Wrap composed UI in cv-theme-provider when a product shell owns theme mode.
Render controls, selection, and progress together before moving into a feature route.
import {registerUikit} from '@chromvoid/uikit/register'
import '@chromvoid/uikit/theme/tokens.css'
registerUikit()<cv-theme-provider mode="dark">
<cv-button>Unlock vault</cv-button>
<cv-checkbox checked>Arm sync</cv-checkbox>
<cv-progress value="58" aria-label="Migration progress"></cv-progress>
</cv-theme-provider> Interaction and accessibility contracts stay in @chromvoid/headless-ui where they remain testable outside the render layer.
UIKit custom elements translate those models into slots, parts, attributes, events, and DOM contracts that application shells can compose directly.
Tokens, runtime themes, and cv-theme-provider let products scope visual identity without forking component logic.
Toast and dialog helpers keep common orchestration flows close to the package while the visual contract stays on the documented elements.
Playground
The live playground keeps controller-backed alerts, toasts, selection patterns, and composed component states in one dedicated page instead of a separate demo app.