Skip to content
Zuno UI
Explore components
EXPLORE
Actions
Forms
Layout
Navigation
Data display
Feedback
Overlays
RESOURCES
Library / Components

Small details.
Better interfaces.

A collection of carefully built, accessible components ready to make your own. Explore, try them out and find your next piece.

Start building Base UI inside. ZUNO outside.
npx zunoui@latest init

Actions

6

Forms

18

Calendar

Date selection with clear navigation, localization and disabled days; built on react-day-picker.

4 examples →

Checkbox

Recognizable checked and indeterminate states, even without color.

1 example →

Combobox

Selection with search: type to filter, pick one or many, and a clear empty state.

3 examples →

DatePicker

A field-like trigger that opens Calendar in a popover, with localized formatting and form support.

4 examples →

Field

Label, control, description and errors wired together in a single field.

3 examples →

FormSection

Semantic form groups with a legend, description and shared spacing.

1 example →

Input

Text input with visible focus and validation built in with Field.

3 examples →

Input Group

Prefixes, suffixes and actions aligned with the field, without breaking its semantics.

4 examples →

InputOTP

One-time codes with paste, autofill, errors and an easy way to recover.

3 examples →

Label

Correct association with the control and a shared typographic hierarchy.

1 example →

Native Select

The browser's own select, styled to match the rest of the form.

3 examples →

PasswordInput

Password input with show/hide that never loses focus.

1 example →

RadioGroup

Single choice among visible options, with comfortable targets and optional descriptions.

4 examples →

SearchInput

Search with an icon, clear button and loading state; no built-in networking.

1 example →

Select

Single-option selection with a portaled popup, keyboard support and accessible states.

2 examples →

Slider

Pick a value or a range by dragging or with the keyboard, with the value always readable.

3 examples →

Switch

A clear on/off state with an associated label; not a blanket replacement for checkbox.

1 example →

Textarea

Multi-line text input with adjustable height and accessible states.

3 examples →

Layout

14

Navigation

10

Data display

15

Accordion

Stacked sections that expand in place, with subtle dividers and consistent keyboard navigation.

3 examples →

Avatar

User image with an initials fallback when it fails to load.

3 examples →

Badge

Compact labels with contrast and a limited set of variants.

1 example →

BulkActionsBar

The selected count, a way to clear the selection and the actions that apply to every selected item.

2 examples →

Collapsible

Show and hide one region of content, without a parallel styling pattern.

2 examples →

ComparisonTable

Options side by side across shared dimensions, with clear headers and a readable layout on phones.

2 examples →

DataToolbar

Search, filters, density and actions above a data view, without tying them to a table engine.

2 examples →

DescriptionList

Term and value pairs on a real <dl>, stacked or side by side.

2 examples →

Icon

A wrapper for lucide-react icons with consistent sizes and accessible defaults.

3 examples →

Kbd

Readable keyboard shortcuts that do not look like clickable actions.

3 examples →

StatCard

A metric with its comparison and a textual trend, without installing a chart library.

2 examples →

StatusBadge

Semantic status with text, an optional indicator and a consistent visual variant.

1 example →

Table

A semantic tabular base with consistent alignment and density; sorting, filtering and pagination belong to your data layer.

4 examples →

Timeline

Events in order, each with a status, an author, a time and optional details.

2 examples →

Typography

Text recipes on the ZUNO scale over semantic HTML, with no hidden margins.

3 examples →

Feedback

8

Overlays

7

A catalog that grows with you.

These are ZUNO's first components. Every addition ships with real examples and its source code.

Learn the basics ↗