Skip to contentVibraUI
Foundation

Vibra theme

The white page and its neutral greys: three planes, two ink tiers, one accent in six roles, status and chart tokens.

The install adds exactly what Vibra adds on top of the shadcn token set, light and dark: --surface, --faint-foreground (the second text tier, for eyebrows and meta), --brand with its -foreground and -muted, --rule and --chart-grid (the two line weights below a border), --overlay, --shadow-sheet/-float/-modal, --success/--warning/--danger/--info (each with -foreground and -muted), --chart-1..8 and the --chart-positive/-negative/-neutral/-axis aliases. It never writes --background, --foreground, --primary, --card, --popover, --border, --input, --ring, --radius or --sidebar-* in cssVars, so on screen your own palette survives; --chart-1 and the tone aliases point at tokens the item does ship. It also brings a css block — tabular figures on cells, keycaps and value slots, --font-display resolved to the sans (load a face of your own under that name and every title follows), the motion tokens every transition is timed on (--duration-fast/-base/-slow and --ease-standard/-emphasized/-exit, the durations zeroed under prefers-reduced-motion and under [data-motion="reduced"]), and the panel/frame/elev-1/elev-2 and focus-ring/focus-ring-inset/focus-outline/focus-outline-inset and type-eyebrow/label/numeral/display utilities — plus the type scale and tracking as theme variables, so a page you build reads the way the docs site does. The one place that block does reach the base tokens is @media print: under .dark it forces the light paper ladder, --background, --primary, --border and --sidebar-* included, so a page printed from dark mode comes out on white rather than as a sheet of ink. Arriving as another item's dependency it only fills in variables you do not have; installing it by name sets all of them. The full Vibra palette, base neutrals included, is on the Theming page to paste.

Install

npx shadcn@latest add @vibra/theme-vibra

Needs the @vibra registry in your components.json — set it up once.

Examples