Skip to content

Interface craft.

104 useful systems, one considered language. Find a piece, try its states, read the source, make it yours.

Install Mizu in your React app, import the stylesheet, and make it yours. Getting started ↗

npm install mizu-ui

104 systems

Foundation

9 systems

Motion

9 systems

Type

4 systems

Instruments

3 systems

Feedback

3 systems

Composites

4 systems

Forms

16 systems
FormFieldA label, hint and error linked to a single control without manual IDs.TextFieldA precise, labelled input with native validation and clear error feedback.TextAreaLong-form input with resizable room for thoughts, labels and validation.SelectFieldNative selection that retains the platform's keyboard and touch behavior.CheckboxA generous check target with a secondary description and native form submission.SwitchA tactile binary setting whose thumb tracks the state.SearchFieldSearch with a clear action that belongs to the input.PasswordFieldA revealable secret with explicit visibility feedback.RadioGroupMutually exclusive choices with room to explain what each choice means.SegmentedControlA compact selection rail for density, view and other immediate choices.NumberFieldA bounded numeric stepper that survives decimals and repeated actions.RatingA star rating you can choose with a mouse, touch or arrow keys.ColorPickerNamed swatches and a native custom-color dialog, with the hex value always visible.TagInputAdd, remove and deduplicate tags without losing the keyboard path.FileDropzoneStart a file upload by dropping or browsing, with size and type validation on both paths.AsyncFormA form that follows the save promise and preserves input when a save fails.

Status

12 systems
StatusA quiet diamond and a readable state, never color alone.AlertContextual feedback with a title, explanation and a place to recover.ProgressDeterminate or indeterminate progress, measured on a hairline track.MeterA bounded measurement that distinguishes a reading from task completion.SkeletonA restrained placeholder that retains a readable loading announcement.EmptyStateA useful absence: explain what belongs here and give the next action.ErrorStateA failure surface that names the problem and lets the user try again.ConnectionStatusA connection hint that follows actual browser online and offline events.SaveIndicatorKeep the difference between saved, dirty, saving and failed visible.AsyncBoundaryOne readable contract for ready, loading, empty and failed content.TaskProgressMake a multi-stage operation legible, including partial completion and failure.AsyncButtonAn action whose feedback follows the real promise, with duplicate clicks prevented.

Data

12 systems
DataTableA sortable, typed table that keeps native table semantics and nulls in their place.DescriptionListAligned names and values with the semantics of a description list.StatA metric with context: direction and favorability are separate decisions.BarChartReadable, labelled comparisons without a charting dependency.SparklineA compact history trace with the underlying readings in its accessible name.HeatmapA daily activity field with every date and reading available as text.TimelineEvents connected by a fine thread, with the present kept distinct.ActivityFeedFilter a real event stream by its event type without losing chronological context.DiffViewTwo text versions, aligned by line, with changes made visible.DataInspectorOpen a payload, follow its structure and copy the JSON without a developer-tools panel.TreeViewBrowse a hierarchy with native disclosure and an optional selected leaf.ComparisonTableA feature matrix whose rows and columns stay connected to their meaning.

Navigation

8 systems

Content

10 systems

Layout

6 systems

Interaction

8 systems