Source-based component library for React/Next.js. Full ownership, unlimited customization.
- You own the code — Components live in your project, not
node_modules - Zero breaking changes — Update on your timeline
- Fully customizable — Modify any component freely
- Headless foundation — Built with Ark UI + Tailwind CSS
- Source-based architecture — Components are copied into your app, so you keep full ownership.
- CLI workflow —
init,add,list, anddifffor setup, install, discovery, and sync checks. - Token-based theming — CSS variables with presets (
slate,blue,green) and easy customization. - React/Next.js ready — Works with modern React apps and supports RSC-aware setups.
- Headless + utility-first — Ark UI primitives with Tailwind-friendly component APIs.
# 1. Initialize config
npx liminal-ui init
# 2. Add components
npx liminal-ui add button
npx liminal-ui add dialog accordion select| Command | Description |
|---|---|
liminal init |
Create components.json config |
liminal add <name> |
Add component(s) to your project |
liminal add <name> -y |
Auto-install npm dependencies |
liminal add <name> -f |
Force overwrite existing files |
liminal list |
Show available components |
liminal diff <name> |
Compare local vs registry |
accordion— Expandable content sections with Ark UIalert— Static alert banner with semantic title and description slotsavatar— Avatar primitive with root, image, and fallback APIsbadge— Status badges withdefault,secondary,destructive, andoutlinevariantsbutton— Variants (default,destructive,outline,secondary,ghost,link) and sizescard— Composable card layout (CardHeader,CardContent,CardFooter, etc.)checkbox— Checkbox primitive with convenience API and composed partsdialog— Modal dialog with overlay, content, title, description, and close controlsdropdown-menu— Context/dropdown menu with groups, labels, separators, and itemsinput— Text input with consistent tokens and invalid-state stylinglabel— Form label component with accessible defaultspopover— Positioned popover with portal/positioner pattern and convenience wrapperprogress— Progress indicator with track/range and optional value textradio-group— Radio group with item controls and text labelsselect— Select component with collection API, groups, and item indicatorsseparator— Horizontal/vertical visual dividerskeleton— Loading placeholders with size variantsslider— Slider primitive with track, range, and thumb controlssonner— Toast integration wrapper (Toaster,toast) for notificationsswitch— Toggle switch with convenience API and composed partstabs— Tab system with list, triggers, content, and optional indicatortextarea— Multiline input aligned withInputstylestooltip— Lightweight tooltip primitive with trigger and content
Para ver ejemplos y detalles de uso de cada componente, consulta la documentación en la app de docs (apps/www), por ejemplo en /docs/components/button, /docs/components/dialog, etc.
Liminal UI usa un sistema de tokens CSS basado en variables HSL, compatible con shadcn/ui y herramientas como tweakcn.
- Los tokens base viven en
registry/lib/themes.css(preset slate por defecto). - El CLI ofrece 3 presets de color: slate, blue, green.
- Durante
liminal initpuedes elegir:- Copiar el CSS de tokens base a tu archivo global (por defecto
app/globals.css). - Elegir el preset de color.
- Copiar el CSS de tokens base a tu archivo global (por defecto
- Si quieres personalizar visualmente el tema:
- Genera un preset con
liminal inito copiaregistry/lib/themes.css. - Abre
tweakcn, ajusta los colores. - Exporta el CSS y reemplaza las variables en tu
globals.css.
- Genera un preset con
Mientras mantengas los mismos nombres de variables (--background, --primary, --card, etc.), todos los componentes de Liminal UI seguirán funcionando.
liminal-ui/
├── registry/ # Component source files
│ ├── ui/ # Components (button.tsx, dialog.tsx, ...)
│ └── lib/ # Utilities (utils.ts)
├── packages/cli/ # CLI tool
└── scripts/ # Build scripts
# Install dependencies
npm install
# Build registry
npm run build:registry
# Build CLI
cd packages/cli && npm run build
# Test locally
npm link
npx liminal list- UI Logic: Ark UI (headless)
- Styling: Tailwind CSS
- CLI: Commander.js, Zod, Prompts
- Build: TypeScript, tsup
MIT © Liminal UI Contributors