Kanzo UI
Root

Components

Every component in the library, grouped by use, generated from the docs themselves.

Grouped by use, not by source layer: Forms, Actions, Navigation, Overlays & feedback, Data display, and Layout. Whole screens are not here — they live in Showcases.

This grid is generated from the page tree, so it cannot fall behind the docs: a component has a card here exactly when it has a page.

Forms

30
Building a form, step by stepFrom one field to a complete form. Each step adds exactly one idea, and nothing is skipped.ControlsEvery form control in the library, grouped by what it captures. A table index — start here to find the right one.ValidationHow errors are displayed, who owns producing them, and why the library deliberately stops at the boundary.TanStack FormWiring TanStack Form and zod to Field — the setup, the validation modes, and the exact call for every control in the library.FieldThe chrome around a control — label, description, helper and error text, wired together — and the fieldset that groups several of them under one legend.Text inputsInput and Textarea — the two plain text controls, and the one attribute that styles both.EditableAn edit-in-place text field that swaps a preview for an input.CodeEditorA CodeMirror 6 host wired to the Kanzo tokens, with the language left to you.Tags InputA list of values the user invents, entered as removable chips — the one Choice control with no options to choose from.Input GroupAn input with adornments glued to its edges, sharing one border and focus ring.Native SelectThe browser's own select, styled to match the input scale.SelectA listbox of options in a popover, driven by an Ark collection.ListboxA list of selectable options with no popover of its own.ComboboxAn input that filters a list of options as you type.Facet FilterThe one surface behind every faceted filter — a trigger that counts, a listbox of values, and a way out.Radio GroupA set of options where exactly one can be chosen.Segment GroupA segmented control — one of a few views, with a sliding indicator.CheckboxA binary control, with an indeterminate state.SwitchAn on/off toggle that applies immediately.Number InputA numeric input with stepper triggers, backed by the Ark machine.SliderA draggable value along a track, with one thumb or two.RatingRate something on a fixed scale of stars.DatesOne machine with a switch — the month grid inline, or the same grid in a popover.Color PickerPicks a colour from an area, channel sliders, swatches or the eyedropper.File UploadA dropzone and file list for selecting and previewing uploads.ImageCropperA box drawn on a photograph, and the photograph read back through it.Password InputA masked input with a reveal toggle.Pin InputA sequence of single-character cells for one-time passwords and verification codes.Field ArrayRepeatable rows — N controls, a remove per row, and one add below.QuestionnaireA multi-step form that asks one question at a time, with progress, validation and navigation.

Actions

7
6

Overlays & feedback

10

Data display

17

Analytics

2

Graph

1

AI

10
AI-assisted fieldsModel assistance is two composed compounds — Complete for an inline ghost, Suggest for a strip of candidates — over pure inputs. Nothing here knows what a model is; you pass a stream.ConversationThe transcript's scroll container. It follows a stream while the reader is at the tail and stops the moment they scroll up — which is the whole component.MessageOne turn in a transcript. The speaker is declared once on the row, and every part reads it back off the DOM.Prompt inputThe composer, as a real form — so Enter and the button are one path. The submit button is one control wearing three labels.ReasoningA model's thinking, folded away. It opens itself while the thinking streams and folds a second after it stops, saying how long it took — until the reader touches it, after which it never moves on its own again.ToolOne call the model made — its name, its state, what went in and what came back. The payload is children, not a JSON prop, and that is the reason to use this one.TaskThe life of one step — pending, running, done, failed. A list of what an agent is doing, in the same four words a tool call uses.useAiStreamThe streaming engine under every AI surface — one iterator, one abort controller, one status. It never calls a model; you hand it a function returning an async iterable.useInlineCompletionGhost-text completion that does not own your input's value. It streams a continuation, debounces the request, and hands the string back for you to insert.useSuggestionsA deduped candidate strip streamed from your own source — asked once, deduped against what the field already holds, and back to idle when its answer has been taken.

Layout

13

Hooks

14
useKanzoThemeRead and write the runtime theme preferences owned by KanzoThemeProvider.useIsMobileA boolean that tracks whether the viewport is below the md breakpoint.useSidebarRead and drive the sidebar's open state from anywhere below SidebarProvider.useTourContextReach the tour instance and its start handler from any control inside a Tour.useChartContextThe chart context — config, selections, coordinator, and the color / formatNumber helpers — for a DOM part of your own inside a ChartRoot.useChartContextOptionalThe chart context or null — for a part that has to work both inside a ChartRoot and standalone.useChartCapacityHow many categorical slots the live theme publishes, read off the cascade and re-read when the theme moves.useChartQueryRead a relation from the same coordinator the charts use, under the same crossfilter — for anything that is not a plot.useThemeTickRe-render when the theme changes, so a surface painted from resolved tokens repaints instead of freezing the theme it mounted with.useMosaicThe Mosaic context in one call — the coordinator, the two shared selections, and the reset a "Clear filters" button needs.useCrossfilterThe shared Selection every mark filters by — so a widget that is not a chart can follow the same brush.useSelectedEvery chart clause on the page, flattened into one plain union — the read model behind a filter-chip row.useDataTableThe engine behind DataTable — every TanStack row model wired, the state slices held for you, the instance handed back.useDataTableContextThe table instance of the enclosing DataTableRoot, typed by your row type — so a part of your own is a component like any other.

The design of Kanzo UI

5

Why the library is like this, what was measured, and what would reverse each of it.