byronwade/ui

byronwade/ui

Design system

The tokens, primitives, and layout archetypes that compose every surface, a calm, content-first aesthetic built around one brand accent.

Calm & content-firstGeistRe-brandable accent

Philosophy

Why every surface looks the way it does, the thinking the rest of this page applies.

4 items
Calm over chrome

The product should feel quiet. One brand accent does all the emphasizing; everything else comes from semantic foreground, background, and muted tokens. Whitespace is a material, pages are centered and given room to breathe. We reach for the inset edge hairline instead of a drop shadow or hard outline. Restraint is the point: when only one thing is colored, that one thing means something.

one accent among the neutrals
Design engineer principles

Adapted from Vercel's Design Engineer Principles for this registry: bias toward usefulness, own outcomes end-to-end (every state and edge case), find the binding constraint before you ship, design for the full audience, ship craft not volume, and raise the team's floor through registry patterns, lint, and examples.

  • Bias toward usefulness
  • Own outcomes end-to-end
  • Find the binding constraint
  • Design for the full audience
  • Ship craft, not volume
  • Raise the team's floor
No generic grids, one signature hero per page

Consistency comes from shared materials and constant chrome, never from a repeated page template. The thing to avoid is the uniform multi-column card grid. Every page earns a distinctive centerpiece, pick one signature hero and compose everything else around it. Secondary content may use cards, but cards are never a page's primary identity. The kit below exists precisely so each page can look unique without looking random.

Constant chrome, bespoke body

The shell never moves. A light top bar (brand mark + org switcher, user avatar) and a dark floating dock, the primary nav, are identical on every surface; only the body changes. That fixed frame is what lets each page be a bespoke composition without the product feeling disjointed. There is exactly one deliberate exception to the calm-and-light rules: a dark, dense surface (e.g. an inbox/cockpit), a two-pane layout that trades the airy spacing for speed, still on our single green accent.

Principles

The rules behind every surface, read these before composing anything new.

4 items
Single-accent rule

One warm green (--brand) carries all emphasis, links, primary actions, the lone chart series. Chart series beyond the first step down a grayscale ramp (--chart-2…5), never a rainbow. The single multi-hue exception is identity avatars, where color encodes a person.

--chart-1 · the green
--chart-2…5 · grayscale
identity · the exception
Status convention

Status reads from a small colored dot, not colored text. Keep labels in foreground ink so the meaning is the dot, legible in either theme.

DeliveredPendingFailed
Do / Don't
Generic uniform card grid
Hardcoded hex / oklch values
Rainbow chart series
Heavy drop shadows
One signature hero per page
CSS tokens only
Green + grayscale ramp
Hairline --border separators
Spacing & radius

Radius base --radius: 0.75rem, scaled up for cards and down for chips.

rounded-lg
rounded-xl
rounded-2xl
rounded-3xl

Spacing scale

gap-1
gap-2
gap-4
gap-6
gap-8

Foundations

Color, radius, elevation, and type, the raw material everything is built from.

5 items
Color
app/globals.css

--brand

The one accent

--success

Good · = brand

--warning

Needs work

--destructive

Poor / danger

--foreground

Text

--muted-foreground

Secondary text

--background

Page

--card

Surfaces

--muted

Fills

--primary

Solid buttons

--border

Hairlines

--dock

Floating dock

--accent

Hover fills

--sidebar

Sidebar surface

--chart-1

Chart · the green

--chart-2

Grayscale series

--chart-3

Grayscale series

--chart-4

Grayscale series

--chart-5

Grayscale series

Radius
--radius-*
rounded-lg
rounded-xl
rounded-2xl
rounded-3xl
rounded-4xl
Depth
.edge

edge

cards

edge

dock · popovers

Typography
Geist · font-sans / font-mono

The quick brown fox

Section heading · xl semibold

Body copy · sm, calm, readable, generous line height for long-form settings and descriptions.

Muted · sm, captions, hints, and secondary metadata.

Mono · 12px, values, IDs, and code (e.g. usr_8f2a91c4).

Utilities
app/globals.css

Built on one brand accent

.glow-brand

.bg-grid

usr_7f8usr_7f9usr_7fausr_7fbusr_7fcusr_7fdusr_7feusr_7ff

.mask-fade-x

Primitives

The base controls, every one a pill, token-driven, light & dark safe.

8 items
Button, variants
@/components/ui/buttonDetails →
Button, sizes
@/components/ui/buttonDetails →
Badge
@/components/ui/badgeDetails →
DefaultSecondaryDestructiveOutlineGhostSuccessWarning
FilterPill
@/components/ui/filter-pillDetails →
SegmentedControl
@/components/ui/segmented-controlDetails →
StatusDot
@/components/ui/status-dotDetails →
StatusPill
@/components/status-pillDetails →
ActivePendingFailedIn reviewDraft
Card
@/components/ui/cardDetails →
Usage this month
Events across all projects.

12,480

Forms

Inputs and controls, labeled fields, token-driven, light & dark safe.

10 items
Input
@/components/ui/inputDetails →
Textarea
@/components/ui/textareaDetails →
Select
@/components/ui/selectDetails →
Checkbox
@/components/ui/checkboxDetails →
Switch
@/components/ui/switchDetails →
RadioGroup
@/components/ui/radio-groupDetails →
Label
@/components/ui/labelDetails →
Toggle
@/components/ui/toggleDetails →
ToggleGroup
@/components/ui/toggle-groupDetails →
InputGroup
@/components/ui/input-groupDetails →

Overlays

Floating surfaces, triggers open content via the render prop. Dark over light by design.

8 items
Tooltip
@/components/ui/tooltipDetails →
Popover
@/components/ui/popoverDetails →
Dialog
@/components/ui/dialogDetails →
Sheet
@/components/ui/sheetDetails →
Command
@/components/ui/commandDetails →
HoverCard
@/components/ui/hover-cardDetails →

Feedback

Status, progress, and loading, how a surface tells you what's happening.

4 items
Alert
@/components/ui/alertDetails →
Progress
@/components/ui/progressDetails →
Monthly quota
x
Skeleton
@/components/ui/skeletonDetails →
Toast
sonner

Data display

Reading surfaces, how records, structure, and identity are presented.

9 items
Tabs
@/components/ui/tabsDetails →
1,284 events this week, up 14%.
Accordion
@/components/ui/accordionDetails →

Avatar
@/components/ui/avatarDetails →
PGOTFX
Separator
@/components/ui/separatorDetails →
OverviewActivitySettings
Table
@/components/ui/tableDetails →
NameStatusUsage
Acme Inc.Active1,284
GlobexPending0
AspectRatio
@/components/ui/aspect-ratioDetails →
16 / 9
ScrollArea
@/components/ui/scroll-areaDetails →
Collapsible
@/components/ui/collapsibleDetails →

Patterns

Composed pieces, the recurring building blocks of a page.

7 items
MetricStat
@/components/metric-statDetails →
Revenue
$48.2k+100%
Active users
1,204-12%
Churn
2.4%0%
StatCard
@/components/stat-cardDetails →
Total spend
$842.10+8%
Across 3 projects
Ring gauge
@/components/ui/activity-ringDetails →
ActivityGrid
@/components/ui/activity-gridDetails →
GradientAvatar + animalName
@/components/ui/gradient-avatarDetails →
Curious Falcon
Polished Tapir
Brave Ant
Sleepy Iguana
EmptyState
@/components/empty-stateDetails →

No activity yet

Events for this project will show up here.

Charts

One green series, soft gradient fade, faint gridlines, endpoint labels only, never a rainbow.

2 items
Area chart
@/components/ui/chartDetails →
Bar chart
@/components/ui/chartDetails →

House components

Composed dashboard pieces, detail headers, settings panels, and event timelines.

4 items
DetailHeader
@/components/detail-headerDetails →

Acme Inc.

Active
Plan
Pro
Region
US · California
Created
Mar 14, 2026
Monthly
$49.00
Section (settings panel)
@/components/sectionDetails →

Display name

The name shown across your workspace.

Acme Inc.

Visible to teammates and on shared links.

EventTimeline
@/components/event-timelineDetails →
  1. Deployment live

    Production build published.

    Today · 9:42 AM
  2. Changes pushed

    Awaiting review.

    Mar 14 · 4:18 PM
  3. Action needed

    Billing details could not be verified.

    Mar 12 · 11:02 AM
  4. Project created
    Mar 11 · 8:30 AM
VerificationProgress
@/components/verification-progressDetails →
55
Verified
12
Action needed
8
Pending
Brand registeredCarrier approved
Number verifiedCalls active
SMS pendingAwaiting review
A2P 10DLCNot started

Layout archetypes

Composition shells, every page picks one signature hero, never a generic card grid.

3 items

See all six archetypes as full, live pages

Open the gallery to inspect each at any viewport, in either theme, and re-skin them live.

Explore layouts →
HeroSection
@/components/hero-sectionDetails →
Sessions
3,201+14%
Avg session
2m 41s
CenteredFocal
@/components/centered-focalDetails →

Waiting for events

Nothing has come through yet. Send a test to get started.

SplitWithRail + TimelineRail
@/components/split-with-railDetails →

Curious Falcon

usr_8f2a91c4

Sessions
42
Events
118
Today
  1. Signed in1m 8s
  2. Viewed dashboard12s
Yesterday
  1. Failed login0s
  2. Updated profile44s
This is where it begins

Side by side

The same twelve components, ours on the left, a design system you know on the right. Toggle between Vercel, Linear, 0.email, Shopify, Stripe, GitHub, Atlassian, Radix, Mailchimp, and Apple, and flip our side light or dark.

12 items
Toggle the system shown beside ours
Vercel· Geist, Monochrome and sharp, a flat black primary, hairline borders, one blue. 6px radius, no chrome.
Theme
our side flips; each system keeps its own
byronwade/ui
Vercel

Button. Ours pills every control, keeps borders to a hairline, reserves the single warm green for status (not buttons), and lets whitespace carry the layout. Vercel squares to 6px and stays monochrome, a flat black primary, a hairline secondary, no accent on the button.

byronwade/ui
ActivePendingFailedIn review
Vercel
ActivePendingFailedIn review

Status. Vercel's badges are small, squared, and uppercase, tonal text on a faint fill, no leading dot.

byronwade/ui
Usage this month
Calls and texts across all numbers.

12,480

Vercel
Usage this month
Events across all projects.
12,480

Card. Vercel keeps the card flat, 8px, a single #eaeaea border, no shadow. Structure from the line.

byronwade/ui

Shown to teammates across your workspace.

Vercel

Shown to teammates across your workspace.

Text field. Vercel's input is a crisp 6px box with a hairline border that darkens to black on focus, no ring.

byronwade/ui
Vercel
Editor

Select. Vercel's trigger is a monochrome 6px box with a quiet chevron, it matches the input exactly.

byronwade/ui
Vercel
Email me a weekly summaryNotify me of mentions

Checkbox. Vercel's box fills solid black when checked, monochrome, no blue.

byronwade/ui
Vercel
Enable two-factor authenticationMake project public

Switch. Vercel's track flips to solid black when on, a monochrome toggle.

byronwade/ui
Monthly quota
x
Vercel
Monthly quota64%

Progress. Vercel draws a thin black bar on a grey track, monochrome throughout.

byronwade/ui
PGOT
Vercel
PGOTFX

Avatar. Vercel keeps the avatar a circle with a neutral grey fill.

byronwade/ui
Vercel
Changes saved
Your workspace settings have been updated.
Action required
Confirm your billing details to keep your plan active.

Banner. Vercel keeps callouts light, a faint tinted surface and a single accent icon.

byronwade/ui
NameStatusUsage
Acme Inc.Active1,284
GlobexPending0
Vercel
NameStatusUsage
Acme Inc.Active1,284
GlobexPending0

Table. Vercel's table is clean and monochrome, a #fafafa header, hairline rows, plain.

byronwade/ui
1,284 events this week.
Vercel
OverviewActivitySettings
1,284 events this week.

Tabs. Vercel uses underline tabs, a black bottom-rule under the selected label, no track.