Pattern library
UI Patterns
A UI pattern library built for coding agents. 40 patterns, each shipping a copy-paste prompt that rebuilds it inside your own codebase — plus a live preview and the source behind it.

Every pattern, three ways
The prompts are the point. Each one is written to survive being handed to an agent with no other context: it names the surfaces the pattern belongs on, spells out the constraint that makes it work, and calls out the failure it exists to prevent.Nothing here is a dependency you install.
- Preview
- The pattern running live in an isolated frame, in whichever theme you are reading in.
- Source
- Its markup, styles and behaviour, plus a single runnable file carrying its own palette.
- Prompt
- A written spec that rebuilds the pattern from scratch — including why each decision is the way it is. Paste it into Claude Code, Cursor, or any coding agent.
The catalogue
Numbered in curated order. The note beside each pattern gives its catalogue number and when it last changed.BadgesNew added in the last release. Updated revised since it was added.
Data display · 11
- scheduletimelinegridflexbox
Windowed schedule grid
Rows of resources against a fixed time window, where each block is sized by its overlap with the window rather than by its own duration.
- progressbenchmarkscss-onlydata-viz
Benchmark progress bar
Places a raw figure on a scale of external benchmarks instead of printing it plain.
- tablematrixstickyaccessibility
Cross-highlight matrix
A two-axis lookup table with both headers sticky, hover lighting the full row and column at once, and a durable click-to-pin selection for touch.
- truncationpathstext-overflowbreadcrumbs
Left-truncating paths
Shortens a long path by dropping whole segments from the left, because the tail is what tells two paths apart.
- steppersparklineseriestruncation
Shape-mark sequence Updated
A sequence compressed into a row of small marks whose shape carries the state.
- timelinedrill-downcss-onlydata-viz
Linked month bars
A month-by-month volume timeline built from plain divs where every aggregate row links to the filtered view that produced it.
- meterskeuomorphiccss-onlyreduced-motion
Glass vial meter
A vertical potion-vial meter whose liquid fills a wide bulb first and then rises into a narrow neck — all CSS, no images.
- progressstacked-barbatchlegend
Partitioned stage bar
Progress for work with several possible endings, drawn as a census rather than a fraction.
- explainabilitycalculatordisclosureformula
Term-by-term derivation
A computed figure shown with the audit trail behind it — the number is the product and the derivation is the receipt.
- dry-rundifftreepreview
Plan preview tree Updated
A dry run shown as a before-and-after tree with counts now, after, and the difference.
- dashboardwidgetscardsempty-state
Uniform slot shell
One card shell many independent sources render through, where the shell does the capping.
Layout · 9
- cardscss-onlygradientsvariations
Object-shaped cards Updated
Where a record stands for a physical thing, the card is drawn as that thing — nine variations in pure gradients.
- css-gridcss-onlyno-assetscards
Adaptive tile mosaic
A container with no artwork draws one from up to four member tiles, grid tracks following tile count.
- layoutcss-onlygradientscontrast
Ground-scrimmed artwork Updated
Text printed over unreviewed artwork, scrimmed to an alpha that can be written down rather than guessed.
- statscss-gridcss-onlyhairline
Hairline stat strip Updated
Stat tiles joined by hairlines that are grid gap, not borders.
- conversationgutterstatus-rolescontrast
Annotated transcript
Conversation bubbles with a speaker-colored spine and a fixed metadata gutter.
- skeuomorphicgradientsno-assetscards
Cork notice board
Pinned paper notes on a cork board where every texture is layered CSS gradients.
- hotspotspointer-eventsaspect-ratiocontainer-query
Hotspot marker layer Updated
Markers at percentage coordinates over a fixed-aspect picture, turning into a list when too narrow.
- empty-statesvgcurrentcolorillustration
Line-art empty states
Inline drawings for empty surfaces stroked in the inherited text colour.
- masonrycolumnsbreak-insidereading-order
Column-flow wall
Cards flowing down columns instead of across rows, with the reading-order cost stated plainly.
Interaction · 11
- scrollingaffordancelistsoverflow
Scroll edge shadows
An inset shadow shown only on the edge that has more content behind it.
- queuereview-flowanimationkeyboard
Frozen-batch deck
A one-card-at-a-time review queue whose batch is snapshotted at mount.
- cardsaccessibilitykeyboardfocus-within
Controls beside the anchor Updated
Per-card controls over a fully-linked card without nesting interactive elements in the anchor.
- canvasvisualizationregistryanimation
Pluggable canvas visualizer Updated
One canvas, a registry of draw modes, each mode owning its entire frame.
- keyboardroving-tabindexaccessibilitystates
Roving-grid board Updated
A dense grid of state cells that is one tab stop with arrow-key navigation.
- navigationtocresponsivearia-current
Section rail
Sticky vertical rail on wide screens, wrapping tab row on narrow ones, from the same markup.
- buttonsskeuomorphicpresstokens
Ledge-press buttons
Buttons on a solid ledge shadow that travel down onto it when pressed.
- aria-disableddisabledpreconditionskeyboard
Guarded control Updated
A blocked control stays focusable, carries the reason as text, and refuses in its handler.
- progresspollingbackground-jobindeterminate
Polled job card Updated
One card for every state a background job passes through.
- animationtransitionsreflowreduced-motion
Entry-transform motion
FLIP-style motion between two rendered states when the old DOM is already gone.
- assignmentpickeraria-pressedfiltering
Slot-first picker Updated
Assignment that starts at the destination slot, then narrows the catalogue.
Forms · 6
- undotoastdestructivearia-live
Undo toast
A destructive action with no confirm dialog, held behind a toast and committed when it expires.
- confirm-dialogdestructivecascadedialog-element
Blast-radius confirm New
A confirm dialog that names everything a delete cascades and blocks dismissal while it runs.
- selectionbulk-actionstoolbarcheckbox
Batch action bar Updated
A bar that exists only while something is selected, states the count in words, caps at five actions.
- empty-statefiltersearchzero-results
Filtered to zero
The three empty states a list actually has, written as three different screens.
- searchquery-syntaxchipsfacets
Parsed query chips
A search box that echoes back how it read the text as removable chips.
- selectoptgrouppolymorphicforms
Compound-value picker
One grouped select whose value carries both the kind and the id.
Color · 3
- colorcontrastcolor-mixaccessibility
Ground-referenced color Updated
Colors solved against the page's own ground token so they invert correctly between themes.
- colorcolor-mixcustom-propertiestheming
Single-property color variants Updated
One custom property carries the hue; border, fill, spine and dot derive from it.
- contrastbrand-colorfocus-ringopacity
Controls on an unknown fill Updated
Opaque controls, a gradient-darkened fill, and a two-tone focus ring on a surface whose colour arrives from outside.
No patterns match that search.
Try a shorter term, or clear the filters to see all 40.