# Parlemen UI > Soft clay React components you copy into your app. Built on Radix, Tailwind v4 and motion, installable with the shadcn CLI. Semantic colour roles, light and dark, Phosphor icons. ## Rules for assistants - Install with the shadcn CLI. Add the registry once: `npx shadcn@latest registry add "@parlemen=https://ui.parlemen.dev/r/{name}.json"`, then `npx shadcn@latest add @parlemen/`. Projects must be initialised with `npx shadcn@latest init -b radix`. - Install `@parlemen/theme @parlemen/providers` first. Theme ships the tokens (tonal scales, semantic roles, light + dark, clay shadows) as app/parlemen.css. In app/layout.tsx import "./parlemen.css" instead of globals.css, load Bricolage_Grotesque (--font-display) and JetBrains_Mono (--font-code) from next/font/google, add suppressHydrationWarning to , and wrap children in from @/components/ui/providers. - Use semantic colour classes only: `bg-primary text-on-primary`, `bg-primary-container text-on-primary-container`, `bg-surface`, `bg-surface-sunken`, `text-on-surface`, `text-on-surface-muted`. Roles: primary, secondary, tertiary, accent, success, warning, danger, info. Never raw hex or palette classes. - Clay look: raised = `bg-surface shadow-clay-sm`, sunken = `bg-surface-sunken shadow-well`. No hard borders. Rounded everything. - Icons: Phosphor only (`@phosphor-icons/react`, `XxxIcon`). weight="bold" by default, "fill" for active, "duotone" for big decorative icons. Never hand-draw SVG icons. - Motion: `motion/react` with presets from `@/lib/motion` (springs.snappy | squish | bouncy | gentle). - Components take `color` (role) and `variant` (solid | soft | outline | ghost) props, e.g. `