Less is more. A small lab of the components we build every day, rethought for better feel. Copy the source if that’s all you need. Stay for how each one was built, dead ends included, written for frontend and design engineers who want the why. In React, fully Tailwind.
Browse ·
Report a bug ·
Feature request
[blocked]
Features
Everyday components, rethought - Menus, OTP inputs, upload staging, command palettes, and more - each built to do one thing well
Watch, then install - Short looping clips on lab.moumen.dev; open any for the live demo, blueprint, and source
shadcn registry - Install with npx moumenlab add or the shadcn CLI; you own the code, no runtime package
Fully Tailwind - No CSS files to import; shared tokens (lab-theme) merge into your @theme on install
Motion-first - Animations with motion/react; interruptible, layout-aware, reduced-motion aware
Install a component
bash
npx moumenlab add hover-expand-icon-stripnpx moumenlab add schedule-builder -c apps/web # monorepo: target the app workspacenpx moumenlab list
Component pages are statically generated from registry.json. Registry payloads at /r/*.json are built on every deploy - the same file the site shows (highlighted) and the CLI installs.
Add a component
bash
cd apps/webpnpm new:component "Radial Dial" radial-dial
That scaffolds the installable stub, the showcase, and wires registry.json + showcase entries. Then write the component (Tailwind only - see CONTRIBUTING.md) and optionally drop a clip in public/lab.
Contributing
Contributions are welcome! Please read our Contributing Guide and Code of Conduct before submitting pull requests.