buttons you want to press,fields you want to fill in.
every part is cut from the same few materials and lit by the same light, so whatever you build with them feels made, not assembled.
how it's made
bezels, faces, and one lamp. that's the kit.
a face, set in a bezel.
the bezel never moves. the face lifts a pixel when you hover and sinks flush when you press, so a click feels like it went somewhere.
- 1facelifts on hover, sinks on press
- 2bezelholds still, always
three layers. nothing else.
a bezel, a face and a label. no images and no canvas, just gradients and shadows from one set of tokens, which is why every key in the kit matches every other.
- 1labeltext, embossed
- 2face--face-dark
- 3bezel--bezel-dark
one lamp, right overhead.
highlights sit on top edges and shadows fall below, as if one light hangs over your screen. here it swings so you can watch them follow. in the kit it never moves.
- 1highlighton the edge facing the light
- 2shadowfalls away from it
raised to press. sunken to fill.
fields are cut into the surface and keys stand up from it, so you can tell which is which before you've read a word. every part in the kit is one or the other.
- 1field--field
- 2key--face
the parts
62 parts. one case.
because they're all cut from the same materials, any two look like they came out of the same box. here are ten, working. the rest are in the docs, each with its source.
open the whole case →we sent it to ada@example.com. (123456 works)
showing the week view
monthly readers
24,891
vs. last 30 days
getting it
one command. or the source.
take it as a package, or copy the parts you want into your own repo and bend them. the cli does both, and never writes over a file you've changed. react 19, tailwind v4, no runtime dependencies.
tell me what to build next.
if a part you need is missing, or one of them feels off, write it below. it opens as an issue on github with your words as its title.
a star is how other people find blurrow, and it tells me to keep going.
ready when you are.
one command installs the package, adds the styles and the font, and sets up toasts. it shows you every change before it writes it, and running it twice won't hurt.
npx @blurrow/ui initthanks for reading all the way down here. if you make something with it, i'd really like to see it.