Design it once.
Ship it anywhere.
Keep it consistent.
Universal primitives for React, Next.js, and React Native — same prop API on every platform. Tailwind 4 tokens, install or copy-paste per component, and Zod-typed descriptors for safe generative UI.
<Button> from @mihcm/uifull configurator →Components
Every primitive ships a web and a native variant. One prop API, one accessibility contract, one set of tokens.
Button
stablePrimary action affordance. Seven variants, six sizes, icon slots, rounded or hard-edge shapes, and tokenized Tailwind class overrides. Universal across web and native.
Link
stableSemantic navigation and reference primitive. Seven variants, safe external-link defaults, and tokenized Tailwind overrides. Universal across web and native.
Input
stableSingle-line text entry. Default + destructive variants, three sizes, optional leading/trailing icons. WCAG 2.1 AA out of the box (`aria-invalid`, `aria-required`, focus ring).
Text
stableType primitive. Type scale, weight, and tone — semantic tokens only.
Alert
stableInline message banner with `Alert`, `AlertTitle`, `AlertDescription` pieces. `role="alert"` for screen-reader announcements.
Avatar
stableUser portrait. Compose `Avatar` + `AvatarImage` + `AvatarFallback` — fallback shows on image error and during load.
Badge
stableSmall status / labelling pill. Six variants spanning informational, semantic, and outline.
Card
stableComposable container surface. Six pieces (`Card`, `CardHeader`, `CardTitle`, `CardDescription`, `CardContent`, `CardFooter`) for predictable layout.
Checkbox
stableControlled checkbox with three states — `true`, `false`, `"indeterminate"`. `aria-checked="mixed"` for indeterminate.
Label
stableForm field label. Pairs with `Input`/`Switch`/`Checkbox` via `htmlFor`. Optional `required` suffix.
Separator
stableVisual divider. `decorative` (default) is hidden from screen readers; pass `decorative={false}` for semantic boundaries.
Skeleton
stablePulsing placeholder for loading states. Always prefer skeletons over spinners to preserve layout.
Switch
stableControlled on/off toggle. `role="switch"` with `aria-checked` driven by `checked`.
StatusBadge
stableSmall inline icon + label chip used to mark something as "Module enabled" / "No permission" / "Active". Five built-in tones plus an optional leading icon.
NotificationBadge
stableTiny counter dot that overlays a parent (the bell icon, an inbox icon, etc.). Renders inside any `position: relative` container; absolutely-positions in the chosen corner.
OrgSelector
stableForm-field-shaped picker for hierarchical org structures (departments, teams, business units, locations). Five variants (popover/inline/columns/drawer/command) and four selection modes (single/multi/cascade/include-descendants) compose freely. Full WAI-ARIA TreeView keyboard model, lazy loading, optional virtualization for large trees.
SectionHeader
stableTwo-line header (title + optional muted description) with an optional trailing action slot. Used inside cards and editors.
StatCard
stableCentered icon tile + big number + caption. The "Quick stats" row primitive — six tones to match the metric meaning.
TitleBar
stableSticky page heading shown under the TopBar. `icon` + `supertitle` + `title` + optional `action` slot.
Main Sidebar
stableFigma-style main app sidebar. Compact 46px desktop rail, mobile bottom menu, expandable drilldown panel with icon, title, description, badges, nested levels, and custom panel slots. `IconSidebar` remains as a compatibility alias.
TopBar
stableSegmented app header with `Logo`, home/back parallelogram segments, notifications, profile, dividers, and utility actions. Universal across web and native with a simplified native bar.
Logo
stableReusable MiHCM logo primitive. Built-in tokenized mark plus approved brand assets that scale through the shared size prop. Universal across web and native.
PageShell
stableApplication layout scaffold: TopBar on top, Main Sidebar on desktop, mobile bottom-menu anchor, TitleBar + scrollable content on the right. Web only.
SearchField
stableSugar wrapper around `Input` that ships the magnifier glyph, a clear button, and `role="search"`. Universal across web and native.
AccessLevelGroup
stable4-state segmented button: None / View / Edit / Full Access. Each option has its own brand color when active.
CheckboxGrid
stableMulti-select grid with summary, view tabs (All / Selected / Unselected), bulk select-all/clear, filter, and responsive grid. Web only.
TransferList
stableDual-pane shuttle: unassigned on the left, assigned on the right, four move buttons in the middle. Per-side filter and multi-select. Web only.
Table
stableSemantic data table with 5 visual variants (default, bordered, striped, minimal, card). Variant context flows to all sub-components automatically.
Dialog
stableAccessible modal dialog built on native `<dialog>`. Composable: Dialog, DialogContent, DialogHeader, DialogBody, DialogFooter, DialogTitle, DialogDescription, DialogClose.
Tabs
stableControlled tabbed interface with full keyboard navigation. Composable: Tabs, TabsList, TabsTrigger, TabsContent.
Toggle
stablePressable toggle between on/off states. Also exports ToggleGroup for single/multi-select groups.
Tooltip
stableHover/focus tooltip (web) or long-press tooltip (native). Configurable side and delay.
Popover
stableClick-triggered floating panel anchored to a trigger. Composable: Popover, PopoverTrigger, PopoverContent.
Popper
stableLow-level Popper.js v2 positioning primitive for custom floating panels, virtual anchors, arrows, portals, and modifiers.
RichTextEditor
stableLexical-powered rich text editor with 4 progressive toolbar variants. Web only.
Textarea
stableMulti-line text entry. Shares the `variant` + `invalid` model with Input.
RadioGroup
stableMutually exclusive option selection. Fieldset with RadioGroupItem children sharing state via React Context.
Select
stableCustom dropdown for single-value selection. Composable: Select, SelectTrigger, SelectContent, SelectItem, SelectGroup, SelectLabel, SelectSeparator.
AlertDialog
stableNon-dismissable modal requiring a user response. No backdrop dismiss, no Escape close. Composable sub-components mirror Dialog.
Progress
stableHorizontal bar showing completion against a max value. Determinate, indeterminate, fixed-tone, or threshold-segmented.
Breadcrumb
stableNavigation trail showing page hierarchy. Composable: Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis.
Sheet
stableSlide-out panel from a screen edge. Composable: Sheet, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription, SheetClose. Dismisses on backdrop click and Escape.
Toast
stableBrief non-blocking notification that auto-dismisses. Imperative `toast()` API with semantic variants, appearance styles, and configurable duration.
DropdownMenu
stableAction menu triggered by a button click. Composable: DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut.
Pagination
stablePage navigation with numbered links and previous/next buttons. Composable: Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationPrevious, PaginationNext, PaginationEllipsis.
Accordion
stableVertically stacked collapsible sections. Supports single (one open) and multiple (any number open) modes with animated height transitions.
Tag
stableLabel chip with optional remove action. Like Badge but interactive — can be removed.
Banner
stableFull-width message strip at top of page or section. Optionally dismissible.
EmptyState
stableCentered placeholder for empty sections — optional icon, title, description, and action button.
AvatarGroup
stableStacked, overlapping row of Avatar components with an overflow "+N" count. The `size` prop forwards to children. `max` controls the visible limit.
DataTable
stableFull-featured data table powered by TanStack Table v8. Sorting, filtering, pagination, selection, column visibility, expandable rows, column resize, column/row pinning, grouping, and faceted filtering — all via boolean props. 5 visual variants.
BarList
stableCompact ranked-value list with tokenized bars, optional row links, icons, value formatting, and motion-backed width animation.
CategoryBar
stableSegmented distribution bar for allocation, status, and risk summaries with optional legend and tokenized segment classes.
Dropzone
stableFile drop and browse area powered by react-dropzone. Exposes accepted and rejected files without reading file contents.
ProgressCircle
stableCircular progress indicator for KPI cards and compact status summaries with semantic tones and value formatting.
RadioCardGroup
stableCard-style single-selection control built on RadioGroup semantics for plans, permissions, and setup choices.
SortableList
stableReorderable list powered by dnd-kit sortable primitives with pointer and keyboard sensors plus a renderItem slot for rich rows.
SparkChart
stableSmall D3-backed trend chart for dense KPI rows, table cells, and dashboard cards.
TabNavigation
stableLink-based tab navigation for routed sections. Use Tabs for local state and TabNavigation when each item is a URL.
Tracker
stableDense sequence of status segments for uptime, workflow coverage, and timeline availability.
Form
stableFull-featured form system integrated with TanStack React Form v1. Field wrappers include input, search, textarea, checkbox, switch, select, combobox, radio, radio cards, date, date range, checkbox grid, dropzone, field arrays, subscriptions, effects, and actions.
Calendar
stableDate grid powered by @daypicker/react v10. Forwards the full DayPicker prop surface with MiHCM tokenized geometry, focus, and selection styles.
Collapsible
stableSimple expand/collapse panel powered by Radix. Single toggle — no item/group semantics like Accordion.
Command
stableCommand palette (⌘K) powered by cmdk. Composable search + item groups + keyboard navigation.
DatePicker
stableDayPicker v10-backed trigger + popover for single dates, ranges, date-time, and time-only fields. Calendar and DatePicker share one date engine.
HoverCard
stablePreview card that appears on hover. Ideal for user profile previews and link details. Powered by Radix.
ScrollArea
stableCustom-styled scrollable container with thin translucent scrollbars. Powered by Radix.
Slider
stableRange input with single or dual thumbs. Three sizes. Powered by Radix Slider.
AspectRatio
stableLocks a container to a given width-to-height ratio. Uses CSS aspect-ratio on web and RN aspectRatio style on native.
ContextMenu
stableRight-click context menu powered by Radix. Sub-menus, checkboxes, radio items, keyboard shortcuts.
InputOTP
stableOne-time password / verification code input with individual character slots. Powered by input-otp.
Drawer
stableMobile-friendly bottom sheet / drawer with swipe-to-dismiss. Touch-optimised with spring physics via vaul.
Combobox
stableAutocomplete search input combining a text field with a filterable dropdown list. Ideal for large option sets.
Resizable
stableResizable panel layout with draggable dividers. Horizontal/vertical split panes for editors, dashboards, admin layouts.
NavigationMenu
stableTop-level site navigation bar with dropdown mega-menus. Animated viewport and indicator via Radix.
Carousel
stableComposable carousel powered by Embla. Supports horizontal/vertical orientation, loop, and prev/next controls.
Chart
stableTheme-aware Recharts wrapper. ChartContainer injects CSS custom properties from a ChartConfig while preserving the full Recharts composition and prop surface.
Menubar
stableHorizontal menu bar with dropdown menus, powered by Radix. Supports density, surfaces, alignment, dropdown sizing, portal behavior, animation, item tones, shortcuts, checkbox/radio items, and submenus.
Sidebar
stableComposable, collapsible sidebar with mobile sheet support, keyboard shortcuts (Ctrl/Cmd+B), and cookie persistence.