Loading component…
Loading component…
What automated tests prove about each implementation — separate from whether the package itself is a finished product. Derived from the test files; how the levels are earned.
React
Package maturity: stable · Implementation verification: Beta
This platform’s whole catalogue is verified to React beta. The catalogue figure is the weakest component on that platform, not an average.
Sequenced spotlight popovers over real elements (onboarding walkthroughs), with dismiss/skip/next.
Reduced motion: off · your browser setting
npx @kinetixui/cli add tourimport { Tour } from "@kinetixui/ui";Styled entirely from the KinetixUI token contract — bg-action,
text-muted-foreground, border-input, ring-ring. Works in light and dark
with no extra config. Keyboard and ARIA behaviour is inherited from Radix where the
component is built on a primitive; the hand-built widgets (DataGrid, TreeView,
ColorPicker, MultiSelect, Tour, KanbanBoard) have their own documented interaction
models — see Accessibility.
The props of @kinetixui/ui, generated from its TypeScript. Props inherited from the underlying DOM element (className, id, event handlers) are accepted too and are not listed.
This table is React-specific. The SwiftUI, Jetpack Compose, Flutter and Angular implementations share the design contract — the same variants, sizes, states and tokens — but each exposes its own idiomatic interface. Their real usage is in the platform tabs on the example above, not here.
| Prop | Type | Notes |
|---|---|---|
| stepsrequired | TourStep[] | |
| openrequired | boolean | |
| stepIndexrequired | number | |
| onStepIndexChangerequired | (index: number) => void | |
| onOpenChangerequired | (open: boolean) => void | |
| nextLabel | React.ReactNode | |
| backLabel | React.ReactNode | |
| skipLabel | React.ReactNode | |
| doneLabel | React.ReactNode |
2 behaviours asserted on every commit by packages/ui/src/components-keyboard.test.tsx. Listed because they are tested, not the other way round — if one stops being tested it stops appearing here.
closes on Escape and returns focus to where it was
keeps Tab inside the dialog while it is open