Component library

Cards & layout

Structural building blocks.

Stat Card

A metric with label, value, delta, and an optional count-up sparkline.

Pro
Monthly active users
0.0k+0.0%

Badge

A small status pill with neutral, success, and warning tones.

Free
DraftShippedIn reviewLive

Pricing Card

A plan card with a count-up price, shine-swept ribbon, and feature list.

Pro
Most popular

Pro

$0/ month
  • Unlimited projects
  • Real-time collaboration
  • Priority support
  • Custom export

Avatar

One avatar with initials fallback, status dot, and a spring-in tooltip.

Pro
Maya Kessler
RS
Talia Lund

Avatar Group

An overlapping avatar stack that fans out on hover with name tooltips.

Pro
Maya Kessler
RS
Talia Lund
JP
+3

Flip Card

A card that turns over on click, wide or tall, image on the front.

Pro

Click a card (or focus it and press Enter) to flip it. The front centers a circular image with a title and a muted subtitle; the back rotates to read upright. Swap the image with theimage prop or pass image={null} to drop it, and orientation switches between the wide and tall layouts. Reduced-motion visitors get an instant cut instead of the spring.

Wave Card

A teal card with an SVG turbulence filter tracing caustic light.

Pro

Real-time alerts

Get notified the moment something in your pipeline needs attention.

Glow Card

A card with a large blurred gradient blob drifting slowly behind it.

Pro

Ambient glow

A soft gradient drifts slowly behind the card, independent of the cursor.

Gradient Canvas

An editable gradient surface with drifting blobs and a live contrast readout.

Pro
Misted Sky
Sky Haze
River Indigo
Ink Sky
Gradient

Drag a handle to move that colour along the band. Arrow keys nudge, Shift for larger steps.

Misted Sky

#E2ECFF6% · AAA

Sky Haze

#A8C5FF34% · AAA

River Indigo

#7C83E863% · AA

Ink Sky

#3B3A8692% · AAA

A soft gradient built from colour stops. Below it, each stop is a card you click to open the picker: choose any colour and the card renames itself from the hex, its own label flipping black or white to stay legible on the new swatch. The band moves a colour along the gradient, Add colour blends a stop into the widest gap, and every change reprints the pills, the cards, and the WCAG ratings. Pick From scratch (the spectrum swatch) to start from two neutral stops and build a gradient up from nothing.

Postage Stamp

A die-cut stamp frame with real perforations and a duotone artwork window.

Pro
SHRUSHANK UI
SILENT ARCHIVE¥63

Perf 11¼ · comb · wmk absent

A die-cut postage frame built from four intersecting radial-gradient masks, so the perforations are real cutouts and the drop shadow follows their scalloped edge rather than a rectangle. Upload a photo and it prints into the window as a two-tone image; pick an ink and that duotone, the inner rule, and the denomination all reprint together. Cancel it and the postmark lands with a spring, its ink set to multiply so it darkens the paper underneath.

Collection Wallet

A sleeve holding a fanned card stack you drag out one at a time.

Pro
  • SHRUSHANK UI
    QUIET HOURS¥63
  • SHRUSHANK UI
    FREE BIRD¥84
  • SHRUSHANK UI
    LONG COAST¥120

COLLECTED WORKS

Silent Archive

3 in

A sleeve that keeps a fanned stack tucked behind its front panel, tops peeking over the lip. Drag a card up past the threshold (or click it, or press Enter) and it springs clear of the sleeve; only one draws at a time, and the label swaps to name it while the count tracks what is in versus out. Drag it back down to file it again. Upload a photo per stamp and each prints into its own frame as a two-tone image.

Hover Reveal Card

A text-first carousel row that reveals its photo in three beats.

Pro

The card is only as wide as its headline at rest, hover or tab to it and it genuinely grows, its photo slides in flush against the edge with no padding or rounding of its own, and a call-to-action arrives last.

Photos via Unsplash: Galymzhan Abdugalimov, Vadim Sherbakov, Mia Domenico

Accordion

An expandable panel with animated height and real ARIA semantics.

Pro

Yes. Every component here is free to copy, modify, and ship, with no attribution required.

Testimonial Card

A quote card whose quotation-mark watermark drifts with the cursor.

Pro

We swapped our design system for these components in an afternoon. The motion is the kind of detail that gets pointed out in user interviews.

AN

Amara Nwosu

Design Lead, Fieldnote

Pull Quote

A card-less editorial quote spotlight in large centered type.

Pro

We replaced four spreadsheets and a weekly status meeting with one shared board.

ECElena ChoVP Engineering, Basecamp Foods

Swipe Cards

A Tinder-style stack: drag or arrow-key to skip and save.

Pro

Drag a card, or focus it and use ← → keys.

Cultural

Kyoto: Japan

Temples wrapped in autumn light and quiet canals.

Saved 0 · 6 left

Data Table

A grid-based table with sorting, FLIP row reorder, and in-cell bars.

Pro
api-gatewayacme/edge
Healthy
2.9M
$412
today
auth-serviceacme/identity
Degraded
1.2M
$188
1d ago
billing-workeracme/payments
Healthy
84k
$96
3d ago
search-indexacme/discovery
Down
0
$240
2d ago
media-transcodeacme/assets
Healthy
320k
$530
6d ago
notify-fanoutacme/messaging
Healthy
690k
$74
4d ago
reports-cronacme/analytics
Degraded
12.4k
$33
9d ago
webhooks-relayacme/integrations
Healthy
455k
$120
1d ago

Click a column to cycle sort ascending, descending, off; the rows slide to their new order instead of snapping. Drag the divider on a header edge to resize, with a live guide line. The Requests and Cost columns carry a proportional bar behind the value, so the table doubles as a chart. Select rows for the floating action bar, switch density, or hit Reload to see the skeleton state.

Table Toolbar

The strip above a table: search, faceted filters, column visibility.

Pro
CompanyStageOwnerValue
NorthwindDemoRavi$24,000
Umbrella CoLeadJules$8,200
HooliWonMei$61,000
InitechLostRavi$15,500
SoylentDemoMei$33,000
Massive DynamicLeadJules$47,000
Wonka IndustriesWonRavi$12,800
Stark IndustriesDemoJules$90,000

The toolbar owns nothing but state you pass in: a debounce-ready search value, a selected-values map per faceted filter, and a hidden-columns list. Faceted filters open a multi-select popover with per-option counts, every active choice drops into a removable pill below, and Reset clears search and facets in one call. The View menu toggles column visibility. Pair it above Data Table or any list.

Table Pagination

A table footer with a live range label and rows-per-page select.

Pro
  • INV-0001$137
  • INV-0002$174
  • INV-0003$211
  • INV-0004$248
  • INV-0005$285
  • INV-0006$322
  • INV-0007$359
  • INV-0008$396
  • INV-0009$433
  • INV-0010$470
110 of 247

Just the footer parts: a live range label that swaps to a selection count when rows are checked, and an optional rows-per-page select that resets to page one. The page-number nav itself is the library Pagination component, installed as a dependency, so the ellipsis logic and the sliding highlight are not reimplemented here.

Expandable Rows Table

Rows with a caret that opens a full-width detail panel.

Pro
OrderCustomerPlacedStatusTotal
#3901Wen LiAug 24Shipped$148.00
#3902Aisha BelloAug 25Packing$42.00
#3903Tomas VegaAug 25Delivered$320.00

A plain semantic table, one caret per row. Expansion is a set of ids, so more than one row can be open at once (pass singleOpen to change that); the detail row spans every column and grows by height with a reduced-motion path that skips straight to open. The panel content is a render prop, here a two-up of line items and shipping address, but it takes any node including a nested table.

Tree Table

A treegrid with expandable branches and parent rows that roll up totals.

Pro
NameTypeSize
src20.1 KB
components14.4 KB
Button.tsxtsx3.1 KB
Modal.tsxtsx6.8 KB
utils.tsts1.2 KB
app.tsxtsx4.5 KB

A treegrid, not a plain table: the nested tree is flattened to visible rows on every render, indentation plus a guide line shows depth, and each folder row rolls up the summed size of everything beneath it so a collapsed folder still reports its weight. Focus a row and use the arrow keys, right opens or steps in, left closes or steps out to the parent, up and down move between rows.

Pinned Column Table

A wide table with a frozen column, frozen header, and edge shadows.

Pro
RepRegionQ1Q2Q3Q4QuotaAttainment
Dana WhitfieldEMEA$82k$91k$77k$103k$90k98%
Marcus LindqvistAPAC$61k$58k$72k$66k$70k92%
Priya AnandAMER$118k$122k$109k$140k$110k111%
Yuki TanakaAPAC$44k$51k$63k$59k$60k90%
Sofia RomanoEMEA$95k$88k$101k$97k$85k112%
Tomas AlvarezAMER$71k$80k$68k$90k$78k99%
Ingrid BergEMEA$104k$99k$112k$121k$100k109%
Kenji WatanabeAPAC$58k$64k$55k$71k$65k95%
Amara OkaforEMEA$132k$128k$141k$150k$120k115%
Lucas MeyerAMER$66k$59k$74k$62k$70k93%
Sofia CostaEMEA$88k$94k$83k$100k$85k107%
Raj PatelAPAC$77k$72k$81k$79k$75k103%

With maxHeight set this becomes a frozen-pane grid: the Rep column, the View column, and the header row all stay put, so a trackpad diagonal swipe moves through the quarters and down the rows at once. Each of the four edges carries a shadow that only shows while there is actually content scrolled behind it, measured from the scroll position. Leave maxHeight off and it goes back to horizontal-only, growing to fit its rows.

Editable Table

Click a cell to edit in place, staged per row with validation.

Pro
NameRoleTeamRate/hrEdit

Click any cell to edit it inline. Enter commits and drops to the cell below, Tab commits and moves right, Escape throws the edit away. Changes stage on the row rather than writing through, so a touched row turns amber and shows Save and Revert; the Rate column runs a range check that blocks Save and shows the reason under the cell until you fix it.

Comparison Table

A pricing feature matrix with a pinned column and a recommended tier.

Pro
PlansSolo$01 seatRecommendedTeam$12/moper seatScaleCustom
Core
Projects3UnlimitedUnlimited
Version historyHow far back you can roll7 days90 daysForever
Guest accessNot includedIncludedIncluded
Security
2FAIncludedIncludedIncluded
SSO / SAMLNot includedPartialIncluded
Audit logNot includedNot includedIncluded
Data residencyNot includedNot includedIncluded
Support
Response timeCommunity1 business day1 hour
Onboarding callNot includedPartialIncluded

A feature matrix that stays readable while it scrolls: the feature column is pinned left, the recommended plan keeps its tint and badge down the whole table, and rows sit under sticky section headers. Cells take a boolean, a partial-support marker, or free text, and every state is drawn as an icon plus a label so it never leans on color alone. Header row sticks to the top; the whole thing scrolls sideways on a phone rather than squashing.

Metrics Table

A leaderboard on Data Table with in-cell bars, deltas, and sparklines.

Pro
30d
2
/pricingMarketing
48.2k
+12.4%
3
/docs/quickstartDocs
39.9k
-4.1%
1
/Marketing
91.3k
+2.2%
5
/blog/launch-weekBlog
15.6k
+61.8%
4
/changelogProduct
22.0k
-0.8%

This is the library Data Table with five columns wired up, not a new table. The Views column uses the bar accessor for the fill behind the number, sorting and the row reorder come from Data Table, and only the sparkline and the arrow-plus-percent trend cell are new. The rank column is fixed to each row standing by views, so sorting by trend keeps the ranks readable.

Intelligent Empty State

A blank workspace that adapts across visits from your real click history.

Pro

Your workspace

Real visit and click counts, kept in this browser. The state genuinely changes shape as they accumulate, it is not a scripted slideshow.

Booking Calendar

Month grid, open slots, and an .ics handoff, resolved in the viewer zone.

Pro

Priya Raman

Product designer

Design review

Bring a flow that is not landing. We go through it screen by screen and leave with the next three changes written down.

Duration
45 min
Price
4,000
Location
Google Meet

Times are shown in your own timezone. Switch the zone beside the globe to see the same slots move with you.