components library

Classes

UiActionGroupGeometry
Solved size and child slots for one action-group frame.
UiActionGroupGeometryItem
Minimal input item for testing the geometry engine without widgets.
UiActionGroupGeometrySlot
Solved physical placement for one action-group slot.
UiActionGroupGeometrySolver
Geometry-first layout engine used by the smart action renderers.
UiAdaptiveSheetScope
Presents focused content as a bottom sheet on phones and a constrained floating surface on tablet/desktop.
UiAlert
Inline alert banner.
UiAlertDialog
A single modal alert — shadcn's AlertDialog ported.
UiAlertDialogScope
Imperative helpers for presenting UiAlertDialog.
UiAttachment
A media attachment with metadata and deterministic transfer state.
UiAttachmentGroup
Horizontally browsable attachment collection with compact spacing.
UiAvatar
Token-driven avatar primitive.
UiAvatarEntry
UiAvatarGroup
Stacked avatar group primitive.
UiBadge
Compact label surface for statuses and counts.
UiBottomTabAccessory
A contextual control that sits beside a floating bottom tab dock.
UiBottomTabBar
UiBottomTabDrawerController
Owns presentation and a persistable order of stable destination IDs.
UiBottomTabItem
One slot in a UiBottomTabBar.
UiBottomTabRailConfig
UiBottomTabScaffold
Page shell with a UiBottomTabBar and per-tab state preservation.
UiBubble
The visual message surface. Sender identity, metadata, and row alignment belong to UiMessage.
UiBubbleGroup
UiButton
Token-driven labeled action button.
UiButtonMetrics
Shared sizing ratios used by UiButton and any other trigger-shaped surface (selects, menu triggers, etc.).
UiCalendarEvent
A dated event rendered by Open UI calendar components.
UiCalendarTimeGrid
Token-driven, platform-neutral calendar time grid.
UiCard
Neutral card surface.
UiCardHeader
Convenience header cell with title + optional subtitle/trailing.
UiCardSkeleton
Card-shaped loading placeholder.
UiCheckbox
UiCombobox<T>
Searchable select for larger option sets.
UiCompactChoiceFilter<T>
A compact choice control whose resting surface becomes its floating menu.
UiConfirmActionGroup
Two-button confirmation group with coordinated width and label morphs.
UiConversationTile
A conversation list row with clear identity, recency and unread hierarchy.
UiDataColumn
UiDataRow
UiDataTable
UiDatePicker
Month-grid calendar with forward/back navigation and direct month/year selection.
UiDateRange
Inclusive date range.
UiDateRangePicker
Two-step date range picker.
UiDateTimePicker
Combined date + time picker. Emits a single DateTime on change.
UiDateTimeRange
Inclusive date-time range.
UiDateTimeRangePicker
Composite picker for a date range and a time range. Emits a UiDateTimeRange whose start uses the range's first date + start time, and whose end uses the last date + end time.
UiDialog
Modal dialog surface.
UiDialogScope
Imperative helpers for showing a UiDialog.
UiDraggable<T extends Object>
A typed drag source for arbitrary content.
UiDragHandle
A 44px grip with focus indication, pointer dragging and semantic move actions. Focus the handle and press Arrow Up/Down to move one position.
UiDragPreview
Shared lifted surface for custom drag feedback and sortable proxies.
UiDrawer
Drawer content wrapper. Usually presented by UiDrawerScope.show.
UiDrawerController<T>
Controls an open modal drawer.
UiDrawerFooter
Standard padded footer content for a structured UiDrawer.
UiDrawerHeader
Standard header content for a structured UiDrawer.
UiDrawerNavigator
Accessor for the drawer stack owned by the current modal drawer route.
UiDrawerScope
Imperative helpers for showing a UiDrawer overlay.
UiDrawerSection
Labelled group for use inside the structured drawer body.
UiDrawerStackController
Controls the nested stack inside a single modal drawer route.
UiDropdownMenu
Dropdown menu surface and trigger.
UiDropRegion<T extends Object>
Typed destination with explicit acceptance and token-driven boundary feedback.
UiEmptyState
Placeholder shown when a view has no data.
UiErrorState
Placeholder shown when loading failed.
UiExpandingBottomTabBar
Four compact icons in a surface that expands to reveal a stationary grid. Supply stable UiBottomTabItem.id values when persisting controller.order.
UiFileUpload
File-selection / dropzone display control.
UiFilterChip
Selectable chip for compact filters and option toggles.
UiFluidBranch
A destination surface can contain several actions, independently of the number of surfaces participating in the split.
UiFluidMenuButton
Compatibility name for UiDropdownMenu. New code should use UiDropdownMenu. Retains the original fixed width and outside-tap passthrough defaults.
UiFluidMorph
Experimental V13 morph. Geometry is expressed in this widget's local coordinate space. The parent owns available space and overlay lifecycle. The source and destination stay mounted; visible content stays interactive during motion.
UiFluidSheetAnchor<T>
Experimental: owns the source key for showUiFluidSheet and supplies the undimmed source copy painted during the transition.
UiFluidSplit
Experimental emergence composition: a retained source and one or more surfaces move apart with a diminishing geometric neck. Reverse the same controller to merge them. Uses no blur, refraction, or shader.
UiFluidSurface
Paints a fluid surface while keeping its content at a stable layout size. Use inside a Stack with finite bounds and room for the authored overshoot.
UiFluidTrigger
Accessible press/hold/release trigger. Place over the source surface, or use as its content. The owning composition controls destination dismissal.
UiFormatAction
UiFormattedText
Renders lightweight, operator-based rich text while preserving plain source.
UiFormattedTextController
A controller that previews formatting without hiding its source operators.
UiFormattedTextMatch
UiFormattedTextParser
Stateless parser shared by display text and composing controllers.
UiFormattedTextRule
A delimiter pair and the visual treatment of the text it encloses.
UiFormatToolbar
Horizontally scrolling formatting actions sized for native touch targets.
UiFormController
Coordinates field validation and submission over UiFormSubmitController.
UiFormControllerField
A TextEditingController-backed field to track, with an optional validator run on every edit.
UiFormErrorSummary
Visible validation errors with actions that focus the corresponding field.
UiFormFieldController<T>
State owned by UiFormController for one typed field. Values should be immutable; use a new collection when changing selections.
UiFormFieldView<T>
Field presentation for custom controls. Bind the child's value, onChanged, and focus node to field; leave its own label/helper/error slots empty.
UiFormSubmitController
Gates a form's submit button behind a single canSubmit signal, so a button doesn't read as active before the form is actually ready.
UiFormTextField
Text adapter that synchronizes edits and form resets without recreating focus.
UiIconButton
Icon-only button primitive.
UiInput
Text input component.
UiInputState
UiIntentPalette
Rest-state colors shared by intent-aware surfaces.
UiLoadingState
Placeholder shown while data is loading.
UiMarker
UiMediaGallery
Full-screen gallery chrome for images, video, documents, or custom media.
UiMediaGalleryAction
An accessible icon action in the gallery chrome.
UiMediaGalleryItem
Application-owned media content displayed by UiMediaGallery.
UiMediaPreview
Generic media surface with an image and a centered fallback.
UiMenuGestureController
Bridges a held gesture from an anchor into its separately mounted popup. Attach to one stack at a time; the anchor forwards its long-press updates.
UiMenuGroup
Labelled cluster of items; renders an optional caption + items.
UiMenuItem
Single actionable row in the menu.
UiMenuNode
Base type for anything that can appear in a UiDropdownMenu.
UiMenuSeparator
Horizontal separator between groups/items.
UiMenuShortcut
Shortcut display widget (kept alongside items, not an item itself).
UiMenuStack
Bounded menu stack. Submenus morph from their selected row, covering a retained parent at parentScale. The caller owns root overlay placement/dismissal; Back and Escape pop one nested level.
UiMenuSubmenu
Long-press / hover submenu. Rendered inline as a row that opens a nested menu on tap.
UiMenuTransition
Menu-specific fluid presentation: stable content is revealed by the moving outline, while visual separation returns to the parent during contraction. Unlike a standalone button morph, the compact endpoint owns no separate fill.
UiMessage
A conversation row that owns identity, alignment, metadata, and actions.
UiMessageGroup
UiMessageQueueBadge
Compact count displayed over the live-edge control for queued arrivals.
UiMessageReceipt
A compact timestamp and accessible delivery receipt, with optional recovery.
UiMessageReplyReturnButton
Returns to a message whose quoted reply was followed elsewhere.
UiMessageScrollControls
Animated conversation scroll controls inspired by compact messaging UIs.
UiMessageScroller
A chat viewport that follows new content only while the reader is at the live edge and preserves their position when older items are prepended.
UiMessageScrollerController
Imperative access to a UiMessageScroller's live-edge state.
UiMessageScrollerItem
UiMessageScrollToBottomButton
Circular control that returns a conversation to its live edge.
UiMessageUtilityAction
UiMessageUtilityStrip
A compact, keyboard-dock-friendly command surface for selected messages.
UiMultiSelect<T>
Controlled searchable multi-selection with removable values and lazy options.
UiNavigationCountBadge
Standard numeric badge used by navigation surfaces.
UiNavigationDrawer
Navigation-specific drawer composition with the same region model as UiNavigationRail: primary destinations in the body and persistent actions/destinations in the footer.
UiNavigationDrawerAction
Non-selectable command rendered by UiNavigationDrawer.
UiNavigationDrawerDestination
Selectable destination rendered by UiNavigationDrawer.
UiNavigationRail
Floating navigation rail for tablet/desktop shells.
UiNavigationRailAction
UiNavigationRailAvatar
UiNavigationRailDestination
UiNavigationRailGeometry
Size and spacing configuration for UiNavigationRail.
UiOtpInput
A single accessible text field rendered as grouped verification-code slots.
UiPagedBottomTabBar
A floating bottom dock that browses destinations in small, stable sets.
UiPagination
UiPersistentSheet
A non-modal, persistent bottom sheet that keeps the host body visible and interactive — the design used by Apple Maps / Google Maps filter panels and modern search sheets.
UiPersistentSheetController
Controls a UiPersistentSheet. Exposes imperative snap navigation and observes snap changes via ChangeNotifier.
UiRadio<T>
UiRadioGroup<T>
Controlled, accessible group of radio options.
UiRadioGroupOption<T>
One selectable item rendered by UiRadioGroup.
UiRating
Star (or configurable-icon) rating input.
UiRefresher
Pull-to-refresh behavior for any vertical, non-reversed Scrollable.
UiRefresherController
Imperative companion for UiRefresher.
UiRefreshIndicator
Token-driven default indicator used by both refresher variants.
UiRefreshIndicatorDetails
Immutable input passed to a UiRefreshIndicatorBuilder.
UiReorderableList<T>
Controlled vertical sorting with stable keys, auto-scroll and keyboard moves.
UiReplyPreview
The same quoted-message vocabulary in history and above a composer.
UiResponsiveNavigationScaffold
Navigation shell that picks a different chrome strategy per breakpoint.
UiSelect<T>
Generic dropdown select.
UiSelectOption<T>
Single item in a UiSelect.
UiSelectState<T>
UiSheet
Canonical sheet surface — use directly inside UiSheetScope.show or drop into a route body for non-modal presentations.
UiSheetBody
Semantic wrapper used when sheet body is split across helpers.
UiSheetController<T>
Controls an open sheet. Exposed via UiSheetScope.show so callers can dismiss the sheet from inside the sheet body.
UiSheetFooter
Action row pinned to the bottom of the sheet.
UiSheetHandle
Default drag-handle affordance rendered at the top of UiSheets.
UiSheetHeader
Pre-composed header with optional title/subtitle and trailing slot.
UiSheetScope
Imperative helpers for presenting a UiSheet as a modal overlay.
UiSheetSnap
Snap-point model for UiSheet presentation.
UiSidebar
Persistent navigation surface for tablet/desktop layouts.
UiSidebarGroup
Labelled cluster of items; renders an optional caption above rows.
UiSidebarItem
Clickable sidebar row.
UiSidebarNode
Shared node contract for sidebar children.
UiSidebarSection
Static section with an optional header + arbitrary body widget.
UiSidebarSeparator
Horizontal separator between groups/sections.
UiSkeleton
Shared loading placeholder surface and animation scope.
UiSkeletonBar
Rectangular loading mark for text, icons, chips, and media blocks.
UiSkeletonText
Stack of text-line skeleton bars with optional per-line widths.
UiSlider
A single-value range slider (min/max/value/onChanged) — think volume or brightness, not a two-handle range selector.
UiSliverDataTable
A table that participates directly in an ancestor CustomScrollView.
UiSliverRefresher
Sliver-native refresh control for a CustomScrollView.
UiSmartActionGroup
Experimental inline action group for replacing "More" sheets with morphing buttons.
UiSmartActionGroupAction
One command rendered by UiSmartActionGroup.
UiSwitch
UiTab
Tab list item.
UiTabs
Shadcn-style segmented tab list.
UiTabViews
Cross-fade + subtle upward slide between tab panels.
UiTextSelectionToolbar
Widgets-layer port of Flutter's Material text selection toolbar: the floating pill with text actions that Android users expect after a long press. iOS uses SystemContextMenu; this covers every platform where the system menu is unavailable without pulling Material into the kit.
UiTimeGridPicker
Compact column-based time picker inspired by popover time controls.
UiTimeline
A grouped, reverse-chronological activity timeline.
UiTimelineActor
A person or system identity associated with a timeline event.
UiTimelineChange
A before/after value shown within a timeline event.
UiTimelineEvent
Immutable content model for one UiTimeline entry.
UiTimelineTag
A compact label attached to a timeline event.
UiTimePicker
Simple hour/minute wheel picker (24-hour clock).
UiTimePickerField
Read-only form trigger that opens UiTimeGridPicker in an anchored overlay.
UiTimeRange
Inclusive time range.
UiTimeRangePicker
Pair of UiTimeGridPickers for a start/end time range.
UiTimeValue
24-hour clock value (hour 0..23, minute 0..59).
UiToast
Sonner-like toast surface.
UiToastAction
Optional action button attached to a toast.
UiToaster
Sonner-like toaster.
UiToastOverlay
Back-compat shim for the older API.
UiTooltip
UiTypingIndicator
A compact, WhatsApp-inspired incoming bubble for active composition.
UiTypingUser
A participant currently composing a chat message.
UiUnreadMessagesMarker
A quiet, semantic boundary between previously seen and unread messages.
UiWavatar
A deterministic, locally rendered abstract avatar.
UiWavatarCharacteristics
Optional context that gently directs UiWavatar's generated geometry.
UiWavatarParticipant
One distinct identity within a multi-participant UiWavatar.

Enums

UiAlertDialogIntent
Intent for the confirm action in a UiAlertDialog.
UiAlertIntent
Intent model for the inline UiAlert banner.
UiAsyncStateMode
Layout shape for async placeholder widgets.
UiAttachmentOrientation
UiAttachmentSize
UiAttachmentState
UiAvatarShape
UiBottomTabBarLayout
Bottom tab bar.
UiBottomTabOverflowBehavior
How canonical destinations beyond the visible bottom set are reached.
UiBubbleVariant
UiCardVariant
Visual density of a card surface.
UiChatAlignment
UiDragActivation
Gesture policy for an in-app drag. Adaptive waits on touch/stylus and starts immediately with a mouse, preserving touch scrolling.
UiDrawerSide
Edge a drawer attaches to.
UiDrawerVariant
Visual treatment for modal drawers.
UiDropState
Local destination state; incompatible payload types never activate a region.
UiInputVariant
UiIntent
Semantic emphasis shared by intent-aware UI components.
UiLoadingIndicatorMode
Visual mode for UiLoadingState's indicator.
UiMarkerVariant
UiMenuScrollBehavior
How an open menu responds when its anchor's ancestor scrollable moves.
UiMessageDeliveryStatus
Presentation state only. The application derives delivery from its transport.
UiNavigationFormFactor
Breakpoint form factors surfaced by UiResponsiveNavigationScaffold.
UiOtpInputType
Characters accepted by UiOtpInput. Codes always read left to right.
UiRefreshStatus
Lifecycle states shared by UiRefresher and UiSliverRefresher.
UiReplyPreviewVariant
UiSelectPlacement
Placement strategy used when the dropdown opens.
UiSheetSnapKind
How a sheet sizes itself along the vertical axis.
UiSize
Component sizing scale.
UiSmartActionGroupExpandedLayout
How flexible actions divide the wide layout after an overflow group expands.
UiTabsLayout
UiTimelineMarker
Selects whether an event uses its actor avatar or its status icon.
UiTimelineTone
Semantic color and icon treatment for a timeline event marker.
UiTimePickerClockFormat
Time format used by UiTimeGridPicker and UiTimePickerField.
UiToastPosition
Stack position for toasts.
UiTooltipSide
UiWavatarAgeGroup
Broad age context used to tune the glyph's proportions.
UiWavatarGender
Optional identity context used only to diversify abstract geometry.
UiWavatarSubject
The kind of identity represented by a UiWavatar.
UiWavatarThemeMode
Controls whether generated colors respond to platform brightness.

Constants

datePickerDayGridKey → const ValueKey<String>
Test-only keys for the calendar sub-grids. @visibleForTesting is intentionally omitted so call sites in the test package don't need to import meta — the keys are harmless if read in production.
datePickerHeaderTriggerKey → const ValueKey<String>
datePickerMonthGridKey → const ValueKey<String>
datePickerYearGridKey → const ValueKey<String>
kUiPressGrowScale → const double
How far a small pressed surface grows past kUiPressGrowThreshold, as a scale factor. Content inside is counter-scaled by 1 / this so it stays visually fixed size while only the surface grows around it.
kUiPressGrowThreshold → const double
Below this visual size, a pressed button grows its surface instead of shrinking its content (see UiIconButton's press treatment) — small enough that a shrink is barely visible, and a thumb covering the control benefits from seeing it get bigger rather than smaller underneath.
persistentSheetSurfaceKey → const ValueKey<String>
Test hook: identifies the sized surface that represents the current sheet height. Exposed so integration tests can measure the rendered sheet directly (the surrounding UiPersistentSheet fills its parent layout and therefore reports the wrong height).

Functions

buildUiFormattedTextSpan(BuildContext context, String source, {required List<UiFormattedTextRule> rules, required TextStyle baseStyle, bool showOperators = false, TextStyle? operatorStyle}) TextSpan
selectedTime(DateTime d) UiTimeValue
Imperative helper: shows a time picker inside a modal sheet and resolves with the chosen UiTimeValue, or null on cancel.
showUiFluidSheet<T>(BuildContext context, {required GlobalKey<State<StatefulWidget>> sourceKey, required Widget builder(BuildContext, UiSheetController<T>), WidgetBuilder? sourceBuilder, UiSheetSnap snap = const UiSheetSnap.fit(), double? maxWidth, BorderRadius? sheetBorderRadius, BorderRadius? sourceBorderRadius, Color? surfaceColor, Color? sourceColor, Color? scrimColor, bool barrierDismissible = true, bool isDismissible = true, UiFluidRouteMotion motion = const UiFluidRouteMotion(), Duration transitionDuration = const Duration(milliseconds: 612), Duration reverseTransitionDuration = const Duration(milliseconds: 480)}) Future<T?>
Experimental: presents a modal sheet that emerges from the widget under sourceKey with the kit's fluid choreography instead of sliding up.

Typedefs

UiAsyncFieldValidator<T> = Future<String?> Function(T value)
UiBottomTabOverflowDrawerBuilder = Widget Function(BuildContext context, UiDrawerController<void> controller)
UiBottomTabRailBuilder = Widget Function(BuildContext context, UiBottomTabRailConfig config)
UiCalendarDayHeaderBuilder = Widget Function(BuildContext context, DateTime day, bool isToday)
UiCalendarTimeLabelBuilder = String Function(int hour)
UiComboboxFilter<T> = bool Function(UiSelectOption<T> option, String query)
UiControlledDrawerBuilder<T> = Widget Function(BuildContext context, UiDrawerController<T> controller)
UiDataRowBuilder = UiDataRow Function(BuildContext context, int index)
UiDatePredicate = bool Function(DateTime date)
Predicate the picker consults before accepting a date — return true for dates that should be non-selectable (e.g. weekends).
UiDropRegionBuilder = Widget Function(BuildContext context, UiDropState state)
UiFieldValidator<T> = String? Function(T value)
UiFluidMenuGestureController = UiMenuGestureController
Compatibility name for UiMenuGestureController.
UiFluidMenuStack = UiMenuStack
Compatibility name for UiMenuStack.
UiFluidMenuTransition = UiMenuTransition
Compatibility name for UiMenuTransition.
UiFormattedTextStyleBuilder = TextStyle Function(BuildContext context, TextStyle baseStyle)
UiFormFieldValidator = String? Function(String value)
Validates a single form field's current text. Returns null when valid, otherwise an error message — same shape as UiInput.validator, so factories like an emailField(msg) helper work as either.
UiInputValidator = String? Function(String value)
UiNavigationRailLeadingBuilder = Widget Function(BuildContext context, Color foreground)
UiRefreshErrorCallback = void Function(Object error, StackTrace stackTrace)
UiRefreshIndicatorBuilder = Widget Function(BuildContext context, UiRefreshIndicatorDetails details)
UiReorderableItemBuilder<T> = Widget Function(BuildContext context, T item, int index, Widget handle)
The builder receives a fully wired handle; place it beside any custom content.
UiResponsiveNavigationBuilder = Widget Function(BuildContext context, UiNavigationFormFactor formFactor)
Builder signature for responsive navigation.
UiSelectOptionBuilder<T> = Widget Function(BuildContext context, UiSelectOption<T> option, bool selected)
Builder for the dropdown option row.
UiSelectOptionLabelBuilder<T> = Widget Function(BuildContext context, UiSelectOption<T> option, bool selected)
Builder for the label slot inside an option row — replaces the default Text(option.label) while keeping the row's default chrome (padding, hover background, selected check).
UiSelectValidator<T> = String? Function(T? value)
UiSelectValueBuilder<T> = Widget Function(BuildContext context, UiSelectOption<T>? selected)
Builder for the value shown inside the closed trigger.
UiTimelineDateLabelBuilder = String Function(DateTime date)
UiTimelineLoadMoreLabelBuilder = String Function(int remaining)
UiTimelineTimeLabelBuilder = String Function(DateTime date)
UiTypingLabelBuilder = String Function(List<UiTypingUser> users)
Builds the visible and spoken typing-state label.
UiUnreadMarkerBuilder = Widget Function(BuildContext context)