MiHCM

Components

Universal primitives — every component renders in React, Next.js, and React Native via NativeWind.

ComponentDescriptionStatus
ButtonPrimary action affordance. Seven variants, six sizes, icon slots, rounded or hard-edge shapes, and tokenized Tailwind class overrides. Universal across web and native.stable
LinkSemantic navigation and reference primitive. Seven variants, safe external-link defaults, and tokenized Tailwind overrides. Universal across web and native.stable
InputSingle-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).stable
TextType primitive. Type scale, weight, and tone — semantic tokens only.stable
AlertInline message banner with `Alert`, `AlertTitle`, `AlertDescription` pieces. `role="alert"` for screen-reader announcements.stable
AvatarUser portrait. Compose `Avatar` + `AvatarImage` + `AvatarFallback` — fallback shows on image error and during load.stable
BadgeSmall status / labelling pill. Six variants spanning informational, semantic, and outline.stable
CardComposable container surface. Six pieces (`Card`, `CardHeader`, `CardTitle`, `CardDescription`, `CardContent`, `CardFooter`) for predictable layout.stable
CheckboxControlled checkbox with three states — `true`, `false`, `"indeterminate"`. `aria-checked="mixed"` for indeterminate.stable
LabelForm field label. Pairs with `Input`/`Switch`/`Checkbox` via `htmlFor`. Optional `required` suffix.stable
SeparatorVisual divider. `decorative` (default) is hidden from screen readers; pass `decorative={false}` for semantic boundaries.stable
SkeletonPulsing placeholder for loading states. Always prefer skeletons over spinners to preserve layout.stable
SwitchControlled on/off toggle. `role="switch"` with `aria-checked` driven by `checked`.stable
StatusBadgeSmall inline icon + label chip used to mark something as "Module enabled" / "No permission" / "Active". Five built-in tones plus an optional leading icon.stable
NotificationBadgeTiny 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.stable
OrgSelectorForm-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.stable
SectionHeaderTwo-line header (title + optional muted description) with an optional trailing action slot. Used inside cards and editors.stable
StatCardCentered icon tile + big number + caption. The "Quick stats" row primitive — six tones to match the metric meaning.stable
TitleBarSticky page heading shown under the TopBar. `icon` + `supertitle` + `title` + optional `action` slot.stable
Main SidebarFigma-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.stable
TopBarSegmented app header with `Logo`, home/back parallelogram segments, notifications, profile, dividers, and utility actions. Universal across web and native with a simplified native bar.stable
LogoReusable MiHCM logo primitive. Built-in tokenized mark plus approved brand assets that scale through the shared size prop. Universal across web and native.stable
PageShellApplication layout scaffold: TopBar on top, Main Sidebar on desktop, mobile bottom-menu anchor, TitleBar + scrollable content on the right. Web only.stable
SearchFieldSugar wrapper around `Input` that ships the magnifier glyph, a clear button, and `role="search"`. Universal across web and native.stable
AccessLevelGroup4-state segmented button: None / View / Edit / Full Access. Each option has its own brand color when active.stable
CheckboxGridMulti-select grid with summary, view tabs (All / Selected / Unselected), bulk select-all/clear, filter, and responsive grid. Web only.stable
TransferListDual-pane shuttle: unassigned on the left, assigned on the right, four move buttons in the middle. Per-side filter and multi-select. Web only.stable
TableSemantic data table with 5 visual variants (default, bordered, striped, minimal, card). Variant context flows to all sub-components automatically.stable
DialogAccessible modal dialog built on native `<dialog>`. Composable: Dialog, DialogContent, DialogHeader, DialogBody, DialogFooter, DialogTitle, DialogDescription, DialogClose.stable
TabsControlled tabbed interface with full keyboard navigation. Composable: Tabs, TabsList, TabsTrigger, TabsContent.stable
TogglePressable toggle between on/off states. Also exports ToggleGroup for single/multi-select groups.stable
TooltipHover/focus tooltip (web) or long-press tooltip (native). Configurable side and delay.stable
PopoverClick-triggered floating panel anchored to a trigger. Composable: Popover, PopoverTrigger, PopoverContent.stable
PopperLow-level Popper.js v2 positioning primitive for custom floating panels, virtual anchors, arrows, portals, and modifiers.stable
RichTextEditorLexical-powered rich text editor with 4 progressive toolbar variants. Web only.stable
TextareaMulti-line text entry. Shares the `variant` + `invalid` model with Input.stable
RadioGroupMutually exclusive option selection. Fieldset with RadioGroupItem children sharing state via React Context.stable
SelectCustom dropdown for single-value selection. Composable: Select, SelectTrigger, SelectContent, SelectItem, SelectGroup, SelectLabel, SelectSeparator.stable
AlertDialogNon-dismissable modal requiring a user response. No backdrop dismiss, no Escape close. Composable sub-components mirror Dialog.stable
ProgressHorizontal bar showing completion against a max value. Determinate, indeterminate, fixed-tone, or threshold-segmented.stable
BreadcrumbNavigation trail showing page hierarchy. Composable: Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis.stable
SheetSlide-out panel from a screen edge. Composable: Sheet, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription, SheetClose. Dismisses on backdrop click and Escape.stable
ToastBrief non-blocking notification that auto-dismisses. Imperative `toast()` API with semantic variants, appearance styles, and configurable duration.stable
DropdownMenuAction menu triggered by a button click. Composable: DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut.stable
PaginationPage navigation with numbered links and previous/next buttons. Composable: Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationPrevious, PaginationNext, PaginationEllipsis.stable
AccordionVertically stacked collapsible sections. Supports single (one open) and multiple (any number open) modes with animated height transitions.stable
TagLabel chip with optional remove action. Like Badge but interactive — can be removed.stable
BannerFull-width message strip at top of page or section. Optionally dismissible.stable
EmptyStateCentered placeholder for empty sections — optional icon, title, description, and action button.stable
AvatarGroupStacked, overlapping row of Avatar components with an overflow "+N" count. The `size` prop forwards to children. `max` controls the visible limit.stable
DataTableFull-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.stable
BarListCompact ranked-value list with tokenized bars, optional row links, icons, value formatting, and motion-backed width animation.stable
CategoryBarSegmented distribution bar for allocation, status, and risk summaries with optional legend and tokenized segment classes.stable
DropzoneFile drop and browse area powered by react-dropzone. Exposes accepted and rejected files without reading file contents.stable
ProgressCircleCircular progress indicator for KPI cards and compact status summaries with semantic tones and value formatting.stable
RadioCardGroupCard-style single-selection control built on RadioGroup semantics for plans, permissions, and setup choices.stable
SortableListReorderable list powered by dnd-kit sortable primitives with pointer and keyboard sensors plus a renderItem slot for rich rows.stable
SparkChartSmall D3-backed trend chart for dense KPI rows, table cells, and dashboard cards.stable
TabNavigationLink-based tab navigation for routed sections. Use Tabs for local state and TabNavigation when each item is a URL.stable
TrackerDense sequence of status segments for uptime, workflow coverage, and timeline availability.stable
FormFull-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.stable
CalendarDate grid powered by @daypicker/react v10. Forwards the full DayPicker prop surface with MiHCM tokenized geometry, focus, and selection styles.stable
CollapsibleSimple expand/collapse panel powered by Radix. Single toggle — no item/group semantics like Accordion.stable
CommandCommand palette (⌘K) powered by cmdk. Composable search + item groups + keyboard navigation.stable
DatePickerDayPicker v10-backed trigger + popover for single dates, ranges, date-time, and time-only fields. Calendar and DatePicker share one date engine.stable
HoverCardPreview card that appears on hover. Ideal for user profile previews and link details. Powered by Radix.stable
ScrollAreaCustom-styled scrollable container with thin translucent scrollbars. Powered by Radix.stable
SliderRange input with single or dual thumbs. Three sizes. Powered by Radix Slider.stable
AspectRatioLocks a container to a given width-to-height ratio. Uses CSS aspect-ratio on web and RN aspectRatio style on native.stable
ContextMenuRight-click context menu powered by Radix. Sub-menus, checkboxes, radio items, keyboard shortcuts.stable
InputOTPOne-time password / verification code input with individual character slots. Powered by input-otp.stable
DrawerMobile-friendly bottom sheet / drawer with swipe-to-dismiss. Touch-optimised with spring physics via vaul.stable
ComboboxAutocomplete search input combining a text field with a filterable dropdown list. Ideal for large option sets.stable
ResizableResizable panel layout with draggable dividers. Horizontal/vertical split panes for editors, dashboards, admin layouts.stable
NavigationMenuTop-level site navigation bar with dropdown mega-menus. Animated viewport and indicator via Radix.stable
CarouselComposable carousel powered by Embla. Supports horizontal/vertical orientation, loop, and prev/next controls.stable
ChartTheme-aware Recharts wrapper. ChartContainer injects CSS custom properties from a ChartConfig while preserving the full Recharts composition and prop surface.stable
MenubarHorizontal 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.stable
SidebarComposable, collapsible sidebar with mobile sheet support, keyboard shortcuts (Ctrl/Cmd+B), and cookie persistence.stable