WAPER / DESIGN SYSTEM
Built to feel familiar.
A common language for every screen. Explore our foundations, components, and interactions.
Foundations 8
ColourSemantic colour tokens, light and dark values, and contrast against the page background.
TypeSystem fonts for the interface, Literata for reading, and monospace for code. A consistent scale for size, weight and line height.
Spacing and sizesTailwind’s 4px scale. Controls from 20 to 44: buttons 24 / 30 / 32 / 36, inputs 35, composer 44.
RadiusCorner radii from small controls to large panels; larger surfaces use larger corners.
Shadow and bordersFour shadows in light only (all transparent in dark: surface steps and thin edges do the work); tooltips and hover cards get a 0.5px inner edge; dialogs and settings have none. Four border tiers.
MotionPress play to compare curves and durations.
IconsLucide at stroke 1.75: 14 in menus, 16 in buttons, 18 in rail rows; four colours.
FocusKeyboard focus is a 2px --focus outline, offset 1. Inputs only darken their edge one step, no ring. Press Tab to try.
Components 19
ButtonsEleven variants. Text buttons are pills at 24 / 30 / 32 / 36; icon buttons 20–44, square (radius 6) or circle. Pressed adds a 12% tint, no scaling; loading keeps the width.
BadgesStatus badges in two sizes (20, 24) and count badges for unread (22, 18); coloured ones pair a soft background with readable text.
Inputs and text areas35 high, radius 8, 1px edge; focus only darkens the edge, no ring. Type a single letter in “Name” to see the error state.
Search fieldA 32-high pill (36 large); the clear button appears once there’s text.
SelectTrigger 35 (28 small, used in settings), same edge as inputs; the list uses the menu look with a check on the right.
Switch, checkbox, radioOn and checked use the accent blue. The switch is 32 × 20; off is a faint fill with a thin edge.
Segmented control and tabsSegmented picks a value; tabs switch content. Both are pills (26 small, 32 default): the current one gets a faint fill and primary text.
Filter chipsCompact filter chips with clear selected states, in horizontally scrollable rows.
AvatarsEight sizes: 13, 16, 22, 24, 36, 44, 60, 96. Stacks overlap by 6 with a ring in the background colour.
Progress, skeletons and spinners4-high progress bars (accent by default), spinners, and skeletons on surface-l2 with a 2.2s shimmer, shaped like what they replace.
NoticesOne line of status in the page. No border; soft background and text pairs.
Empty statesUse a quiet inline message in small regions, or an icon and action for an empty page or panel.
CardsElevated floats (card shadow plus a 1px edge in light, just the edge in dark); group is the settings card; inset sits in the page.
List rowsCompact (40, radius 8) for members and menu-like lists; card (64, radius 16) for apps, skills and routines.
Page and section headersA page header with back, title, description and actions; section and group titles.
Key–valueFor details, billing and usage. Stacks on narrow screens.
Breadcrumbs and backBreadcrumbs for nested places; a back link when there's one way back.
TableA bordered table with rounded corners and a distinct header surface, also used in conversations.
Key hints and the wordmarkOrange only means needs-you; “new” is accent blue; the brand colour is the main agent's blue.
Overlays 6
Menus and submenusEvery menu is the same: radius 12, padding 6, 30-high items at 13/18, 14 icons, a 0.5px edge, popover shadow in light only.
Context menuRight-click, long-press or Shift+F10 opens the same menu at the pointer.
Popover, tooltip and an open selectPopovers share the menu surface. Tooltips are 24 high, radius 6, edge only, 8 below the trigger.
Dialog and confirmRadius 14, elevated surface, 1px edge, no shadow; the scrim is black 50% / 70%. Title 14/22 600.
DrawersSide drawers sit on surface-base with a hairline edge; the phone bottom drawer has 24 corners and a handle.
Toasts and loading → doneFollow the theme: elevated surface, thin edge, radius 9, 12.5 text; popover shadow in light only.