Logobaseui-cn
All Base UI primitives covered · one primitive library for your app

Base UI components for React.
shadcn-style install.

An open-source registry of shadcn-style Base UI components for React and Next.js. Copy accessible components into your project, own the code, and build forms, fields, drawers, dialogs, selects, and the rest of your application on one primitive library with Tailwind CSS.

$npx baseui-cn init
Read docsStar on GitHub
49 components|3 blocks|1 primitive library for the whole app|MIT license

No more broken interactions

One overlay system. Everything composes.

If you are searching for shadcn Base UI components, baseui-cn gives you the same copy-and-own workflow while staying fully on Base UI primitives. That means one portal system, one focus model, and fewer overlay bugs.

Mixed libraries (Radix + Vaul + Sonner)
Select inside Drawer breaks focus
Closing toast dismisses the Drawer
Combobox portal renders behind overlay
z-index hacks between libraries
baseui-cn (Base UI only)
Select inside Drawer works correctly
Close toast — Drawer stays open
Combobox inside any overlay, no workaround
One portal system, zero z-index conflicts

Built for real apps, not just demos.

Button
Outline

Button

DefaultSecondaryOutline

Badge

Email
you@example.com

Input

Framework
Next.js

Select

JD
AB
+3

Avatar

Option A
Option B

Checkbox

Off
On

Switch

Loading…68%

Progress

Button
Outline

Button

DefaultSecondaryOutline

Badge

Email
you@example.com

Input

Framework
Next.js

Select

JD
AB
+3

Avatar

Option A
Option B

Checkbox

Off
On

Switch

Loading…68%

Progress

Built differently

Single primitive layer

Every interactive component — dialogs, drawers, selects, tooltips, toasts, menus — is built on Base UI. One library, one overlay system, one portal. No conflicts when composing.

Drawer & Toast without workarounds

Base UI Drawer (stable v1.3.0) and Toast share the same portal system as Select, Combobox, and Dialog. Nest them freely — no Vaul, no Sonner, no event conflicts.

Your code, fewer deps

Components are copied directly into your project — one primitive library instead of four or five. No Radix, no Vaul, no Sonner, no cmdk. Lighter installs, smaller bundles, one API to learn.

How it works

01
npx baseui-cn init

Auto-detects your project. Installs deps, writes CSS variables, creates lib/utils.ts.

02
npx baseui-cn add drawer

Fetches the component from the registry and copies it into your project.

03
import { Drawer } from '@/components/ui/drawer'

Use it. Edit it. It's your code now.

Works with your stack

Next.jsViteRemixAstroAny React project
baseui-cn cli
Detecting project structure...
Found app router, Tailwind, and src aliases.
[ok] @base-ui/react installed
[ok] Theme tokens added to your stylesheet
[ok] lib/utils.ts created
Resolving dependencies...
[ok] login -> components/ui/auth.tsx
[ok] data-grid -> components/data-grid/*
[ok] command -> components/ui/command.tsx
Done. One primitive library, zero portal conflicts.
Quick filters for the most-used component groups

A clickable element that triggers an action.

npx baseui-cn add button
View docs →

A small status descriptor for UI elements.

npx baseui-cn add badge
View docs →

A semantic feedback container for errors, warnings, and status messaging.

npx baseui-cn add alert
View docs →

An image element with a fallback for representing the user.

npx baseui-cn add avatar
View docs →

A container for grouping related content and actions.

npx baseui-cn add card
View docs →

A flexible list item component with media, content, actions, and variants.

npx baseui-cn add item
View docs →

Visually or semantically separates content.

npx baseui-cn add separator
View docs →

Augments native scroll functionality for custom, cross-browser styling.

npx baseui-cn add scroll-area
View docs →

Loading placeholder with pulse animation.

npx baseui-cn add skeleton
View docs →

An animated loading spinner indicator.

npx baseui-cn add spinner
View docs →

Displays an indicator showing the completion progress of a task.

npx baseui-cn add progress
View docs →

A two-state button that can be toggled on or off.

npx baseui-cn add toggle
View docs →

A set of two-state buttons grouped together.

npx baseui-cn add toggle-group
View docs →

A text input field.

npx baseui-cn add input
View docs →

A multi-line text input field.

npx baseui-cn add textarea
View docs →

Accessible form label with required indicator.

npx baseui-cn add label
View docs →

A form field component that provides labeling, description, and validation for form controls.

npx baseui-cn add field
View docs →

A Base UI form wrapper for submission handling, validation wiring, and consistent layout.

npx baseui-cn add form
View docs →

A semantic form section wrapper with a legend for grouped inputs.

npx baseui-cn add fieldset
View docs →

A control that allows the user to toggle between checked and unchecked states.

npx baseui-cn add checkbox
View docs →

A semantic group for managing multiple related checkboxes with shared state.

npx baseui-cn add checkbox-group
View docs →

A control that allows the user to toggle between checked and not checked.

npx baseui-cn add switch
View docs →

A set of checkable buttons where no more than one can be checked at a time.

npx baseui-cn add radio-group
View docs →

Displays a list of options for the user to pick from, triggered by a button.

npx baseui-cn add select
View docs →

An input combined with a listbox for selecting from a list of options.

npx baseui-cn add combobox
View docs →

An input with a list of filtered options that appear as the user types.

npx baseui-cn add autocomplete
View docs →

An input where the user selects a value from within a given range.

npx baseui-cn add slider
View docs →

A numeric input with increment and decrement buttons.

npx baseui-cn add number-field
View docs →

A one-time password input composed of individual character slots.

npx baseui-cn add otp-field
View docs →

A composite input component with addons, icons, and buttons.

npx baseui-cn add input-group
View docs →

A window overlaid on either the primary window or another dialog window.

npx baseui-cn add dialog
View docs →

A modal dialog that interrupts the user with important content and expects a response.

npx baseui-cn add alert-dialog
View docs →

A panel that slides in from the edge of the screen.

npx baseui-cn add drawer
View docs →

Displays rich content in a portal, triggered by a button.

npx baseui-cn add popover
View docs →

A popup that displays information related to an element when focused or hovered.

npx baseui-cn add tooltip
View docs →

A card that appears on hover to preview linked content.

npx baseui-cn add preview-card
View docs →

Displays a menu to the user, such as a set of actions or functions, triggered by a button.

npx baseui-cn add dropdown-menu
View docs →

A succinct message that is displayed temporarily.

npx baseui-cn add toast
View docs →

A command palette component for searching and executing actions.

npx baseui-cn add command
View docs →

An interactive component which expands or collapses a panel.

npx baseui-cn add collapsible
View docs →

A vertically stacked set of interactive headings that each reveal a section of content.

npx baseui-cn add accordion
View docs →

A layered panel shell for grouping sections, headers, and supporting content.

npx baseui-cn add frame
View docs →

A set of layered sections of content known as tab panels that are displayed one at a time.

npx baseui-cn add tabs
View docs →

Semantic table primitives for displaying data.

npx baseui-cn add table
View docs →

A composable TanStack data grid family with editing, virtualization, drag-and-drop, and Base UI-friendly controls.

npx baseui-cn add data-grid
View docs →

Displays the path to the current resource using a hierarchy of links.

npx baseui-cn add breadcrumb
View docs →

Page navigation with first, last, next, and previous buttons.

npx baseui-cn add pagination
View docs →

A visually persistent menu common in desktop applications providing quick access to commands.

npx baseui-cn add menubar
View docs →

A collection of navigation links with sub-menus that appear on hover.

npx baseui-cn add navigation-menu
View docs →

Empty state with icon, title, description, and action.

npx baseui-cn add empty-state
View docs →

Card-based login form built with Base UI Form, alerts, and toast success states.

npx baseui-cn add login
View docs →

Card-based signup form built with Base UI Form, password rules, alerts, and success toasts.

npx baseui-cn add signup
View docs →
52 of 52 installables

AI-ready

Works with Cursor, Windsurf, and Claude

baseui-cn ships a first-class llms.txt manifest. AI agents read it to understand every component, its import path, usage patterns, and which dependencies belong to this project.

View llms.txt

In Cursor or Claude:

"Add a drawer with a combobox inside"

Agent reads llms.txt, knows:

→ Drawer from @/components/ui/drawer

→ Combobox from @/components/ui/combobox

→ Both share Base UI portal — no z-index fix needed

→ Use render prop, not asChild

Latest release

Combobox And Fieldset Legend Upgrade

April 22, 2026

A component-focused release that improves combobox usability, expands the public API, and adds more styling control to FieldsetLegend.

Added a more flexible Combobox trigger API with optional built-in icons and support for custom trigger-button layouts.
Improved ComboboxInput with start addons, optional autofocus control, and clearer built-in clear-button behavior while typing.
Expanded multi-select Combobox support with richer chip layouts, removable chips, and an overflow pattern for larger selections.

Common questions

What teams ask when they want Base UI components

baseui-cn is a Base UI-first component registry with a shadcn-style workflow. Start with the documentation, install with npx baseui-cn init, and browse components like Drawer and Select.

Is baseui-cn a shadcn-style registry for Base UI components?

Yes. baseui-cn gives you the same copy-and-own developer experience people expect from shadcn-style tools, but the components are built on Base UI primitives instead of a mixed stack.

Why use Base UI components instead of mixing Radix, Vaul, Sonner, and cmdk?

Because overlays compose more reliably when they share one primitive layer. baseui-cn keeps drawers, dialogs, selects, comboboxes, and toasts on Base UI so focus, portals, and layering stay consistent.

Do I keep the code after installing a component?

Yes. Components are copied directly into your project, so you can edit the code, theme it with Tailwind CSS, and ship it without depending on a runtime component package.

Start building

One command to initialize. One command per component. Everything else is yours.

$npx baseui-cn init
Read the docs