Small delightsfor your site

Curio is a cabinet of 29 React components for personal sites: spinning records, real maps, theme sliders and project layouts, each copied into your project with one command.

Weight700
SpacingSnug
TightSnugEvenAiry
AccentCrimson
Crimson
ThemeDark

Open a drawer

What you’re listening to, six ways. Everything on the sheet is the real component, running.

Rooms full
of curios

Named after the cabinets of curiosities of the 1600s, where every small, strange thing had a labelled shelf.

Engraving of Ole Worm’s museum: a long room with stuffed animals hanging from the ceiling and shelves of labelled boxes
Copenhagen, 1655
Engraving of Ferrante Imperato’s museum in Naples: a vaulted room with a crocodile on the ceiling and visitors at the shelves
Naples, 1599
A museum drawer of pinned hawkmoths in rows, with small typed labels
A specimen drawer

The whole cabinet

All 29 pieces, live. Try them here, then open one for its install command and props.

SunriseDayOvercastDuskMidnight
Theme sliders161 lines
L

A reading app that turns long articles into calm, paginated chapters.

Next.jsPostgresOpen
T

A realtime collaborative whiteboard built on CRDTs and websockets.

ReactYjsOpen
P

A CLI that logs what you worked on, in ten seconds a day.

RustCLIOpen
Projects91 lines
Missing a piece you want?Suggest one on GitHub

First, run
one command

Installing a piece takes about a minute. Drag the slider to walk through it.

$ npx shadcn@latest add https://curio-components.vercel.app/r/record-player.json
Checking registry.
Created 3 files:
  - app/curio.css
  - components/curio/lib/types.ts
  - components/curio/music/record.tsx

What comes in the box

Light and dark, both ways

Every piece reads the dark class or data-theme on any parent, so it follows next-themes or your own toggle.

Flip the switch: the record and its label follow.

Real maps, no API key

The maps draw Esri tiles, with the credit already in place.

Give one a latitude and longitude and it centres there, in light or dark.

Sunrise

Right now I’m listening to Paper PlanesOrigami by Fold & Fly● Live

Eight tokens, one look

--curio-accent, --curio-bg and six more restyle every piece at once.

Pick a swatch to re-colour the track beneath it.

Motion that knows when to stop

Every animation lives in one CSS file and switches off for visitors who ask for reduced motion.

The bars stop. The song title stays.

# curio

Base: Design tokens, animations and shared types used by every curio component.
Record player: Album art as a spinning record; a tonearm swings onto it while music is playing.
Inline track: The current song written into a sentence, with a cover preview on hover.
Cassette: A little tape whose reels turn while something is playing.

Your agent can install it

Curio publishes llms.txt: every piece, what it does and its install URL.

Point Claude or Cursor at it and ask for a map of your city.

Open the
cabinet

Pick a piece and copy its command. It lands in components/curio as plain code you own, ready to change.

Add a component
Package manager
npx shadcn@latest add https://curio-components.vercel.app/r/record-player.json