| name | shadcn/ui | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| version | 1.0.0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description | Inspired by shadcn/ui. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| colors |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| typography |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| rounded |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| spacing |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| components |
|
This project follows a "Mechanical Minimalist" aesthetic. It prioritizes clarity, speed, and precision, reflecting the underlying reactive engine's philosophy: surgical updates and zero-waste.
The UI should feel lightweight, responsive, and neutral, allowing the content and the performance of the reactivity to take center stage.
The palette is strictly high-contrast monochrome with a single functional "destructive" color for critical actions.
- Background (#ffffff): A clean, sterile canvas.
- Primary (#18181b): Deep obsidian for core interactions and emphasis.
- Secondary (#f4f4f5): Soft grey for subtle layering and secondary actions.
- Destructive: High-visibility red for danger actions. In Dark mode, this shifts to a deeper, less vibrating tone (#7f1d1d).
The system supports system-level theme detection.
- Light Mode: The default state, mimicking high-end printed technical documentation.
- Dark Mode: Activates via
prefers-color-scheme: dark. It reverses the luminance while maintaining the same hierarchical relationships. Backgrounds become Obsidian (#09090b) and borders become Zinc-800 (#27272a).
Uses system fonts to ensure zero-latency loading and a native OS feel.
- Headlines: Bold, tightly tracked (-0.05em) for a modern, "engineered" look.
- Body: Readable, standard tracking, focusing on clarity.
- Labels: Semi-bold and slightly smaller to create clear hierarchy.
The Button is the core interaction primitive. It is implemented as a functional component to handle:
- Reactivity: Using
getClass()functions to ensure variants and classes update surgically. - Accessibility: Native button attributes (type, disabled) are preserved and synced with visual states.
- Variants:
- Primary: High emphasis, solid background.
- Secondary: Medium emphasis, subtle background.
- Danger: High emphasis, warning intent.
- Ghost: Low emphasis, no background until hover. Ideal for utility actions and icon-only buttons.
- Cards: Used for grouping reactive units. They use a subtle 1px border instead of heavy shadows.
- Inputs: High focus on states (focus-ring) to provide clear feedback during data entry.