Getting Started
Introduction
baseui-cn is a Base UI-first open component registry with a shadcn-style developer experience. Copy components into your project, own the code, style with Tailwind.
What it is
Every interactive component — dialogs, drawers, selects, tooltips, menus — is built on Base UI. One library, one overlay system, one portal. No conflicts when composing components inside each other.
Base UI's Drawer became stable in v1.3.0 (March 2026). That closed the last gap — so Select, Combobox, Tooltip, and Drawer all share the same portal system. Nesting floating components inside a Drawer just works.
Core principles
Base UI onlyEvery interactive primitive is from @base-ui/react. One library, one overlay system.Tailwind CSSStyled with Tailwind v4. No CSS-in-JS, no runtime style injection.You own the codeComponents are copied into your project. Edit freely. No version lock-in.shadcn-compatible tokensSame CSS variable names — --background, --primary, etc. Themes transfer directly.RSC-aware"use client" only where required. Works with Next.js App Router.LLM-readyFirst-class llms.txt for AI coding assistants. Works with Cursor, Windsurf, and Claude.Quick start
1. Initialize baseui-cn in your project:
npx baseui-cn init2. Add components:
npx baseui-cn add button drawer select3. Or add everything at once:
npx baseui-cn add --all4. Import and use:
Base UI uses the render prop, not asChild
If you're coming from Radix UI or shadcn, the trigger pattern is different. Base UI uses a render prop instead of asChild.