Centrim Design System — a token-first, accessible React component system.
Core components
The first component layer. Every example below renders the production component straight from @/design-system — no mock-ups, no screenshots. Toggle the theme in the header to check both palettes.
Input
Single-line text field with label, helper text, validation messaging and optional leading/trailing icons.
import { Input } from "@/design-system";
Anatomy and states
As it appears on your ID.
Enter a valid email address.
Email verified.
Generated automatically.
Sizes
Shape
default (8px control radius), rounded for search-style fields, squared inside bordered groups.
Value alignment
Right alignment suits numeric and currency fields.
Textarea
Multi-line text field sharing the Input chrome, with an optional character counter.
import { Textarea } from "@/design-system";
States
Plain text, no links.
Add at least 40 characters.
Saved.
Select
Single-choice picker built on the Radix Select primitive, with the same field anatomy as Input.
import { Select } from "@/design-system";
States
Where your team is based.
Select a country to continue.
Checkbox
Tri-state selection control for forms: unchecked, checked and indeterminate.
import { Checkbox } from "@/design-system";
States
Cycles indeterminate → checked → indeterminate.
Send me a weekly summary.
You must accept the terms.
Radio
Mutually exclusive choice within a RadioGroup. RadioField adds the standard label, helper and error rhythm.
import { Radio, RadioField } from "@/design-system";
Group
You can change this at any time.
Choose a billing cycle.
Switch
Immediate on/off toggle for settings. Use Checkbox inside forms that are explicitly submitted.
import { Switch } from "@/design-system";
States
Product updates and security alerts.
Badge
Compact, non-interactive status or metadata label. Subtle is the default treatment; solid is reserved for stronger emphasis. A badge never looks or behaves like a button — no border, shadow or hover state.
import { Badge } from "@/design-system";
Subtle — Default
Solid — Strong emphasis
With icon — subtle
With dot
A tinted dot for compact status lists; the label still carries the meaning.
With avatar
Removable
The only interactive affordance a badge may carry.
With icon — solid
Sizes — small (24px) and medium (28px)
Shape
Pill is the status default; rounded and square suit counts and dense table cells.
Avatar
Represents a person or entity with an image, initials, or a neutral glyph fallback.
import { Avatar } from "@/design-system";
Sizes
Image, initials, fallback
Pill shape
Widens to carry a short label next to the initials.
Tooltip
Supplementary text attached to a control. Never the only place essential information lives.
import { Tooltip, TooltipProvider } from "@/design-system";
Usage
Tab to either control to open the tooltip from the keyboard.
Divider
A one-pixel rule separating content, using the semantic border tokens.
import { Divider } from "@/design-system";