Kitchen counter
UpNext · DS v0
Read first
  • Docs
  • QA
Foundations
  • Overview
  • Color
  • Typography
  • Semantic tokens
  • Space
  • Shape
  • Depth
  • Icon
UpNext
  • Athlete Card
  • Agency Card
  • Activity Feed
  • List Card
  • Filters
  • Page Header
  • Page-Level Banner
Atoms
  • Button
  • Button Group
  • Input
  • Textarea
  • Label
  • Badge
  • Chip
  • Avatar
  • Kbd
  • Link
  • Text Block
  • Switch
  • Checkbox
  • Radio Group
  • Toggle
  • Toggle Group
  • Slider
Inputs
  • Select
  • Combobox
  • Input Group
  • Search Input
  • Input OTP
  • Field
Surfaces
  • Separator
  • Scroll Area
Feedback
  • Alert
  • Skeleton
  • Spinner
  • Progress
  • Tooltip
  • Sonner
  • Empty
Overlays
  • Dialog
  • Alert Dialog
  • Drawer
  • Popover
Menus
  • Dropdown Menu
  • Context Menu
  • Menubar
  • Command
Disclosure
  • Tabs
  • Accordion
Data display
  • Table
  • Pagination
  • Breadcrumb
  • Charts
Layout
  • Sidebar
Misc
  • Calendar
  • Carousel
shadcn/ui v4 · Radix · oklch tokens

Kitchen counter

Foundations

Color, type, space, shape. The token layer that everything else derives from. Each topic gets its own page so the system can breathe — granular reference, not a single dense scroll.

01

Color

Six oklch ramps × eleven steps. Brand at primary 500. Status families compose into alerts via DEFAULT + subtle + border + ink.

02

Typography

Geist sans for everything that reads, Geist mono for everything that's code. Twelve-step scale with usage guidance per entry.

03

Semantic tokens

The names components reference. Each maps to a primitive step. The reason consistency is structural rather than disciplinary.

04

Space

Tailwind's 4px-based scale. Twelve steps with conventional roles — inline gaps, stack rhythm, section breaks.

05

Shape

Radius scale plus the concentric radius rule — the single biggest source of 'feels off' bugs in nested layouts.

06

Depth

Four shadow levels, rationed. Most surfaces stay flat with a 1px hairline; shadow is reserved for surfaces that actually float.

07

Icon

Lucide via a thin wrapper. A semantic registry maps known intents (status.success → Check) to one icon and one suggested tone — so the system stays one-icon-per-concept across every surface.