Skip to content
Habitus Design

Components

Interactive and composite bricks of @saas-design/ui: every recipe variant and every codegen showcase case, rendered from the generated React 19 / Svelte 5 parts.

ui.alert

Alert displays a static status or informational message. Renders a live region with role=status by default; children carry the message body.

Alert

Alert renders a div with alert or status semantics.

  • defaults
    Alert
  • variant.default
    Alert
  • variant.destructive
    Alert
  • variant.success
    Alert
  • variant.warning
    Alert
PropTypeNotes
Classstringadds Tailwind utilities
Variantstringdefault, destructive, or wireframe preset
Rolestringstatus or alert (defaults to status)
AriaLivestringpolite or assertive (defaults to polite)
Attrsattrs
Childrenchildren

ui.badge

Badge shows a short status label. Badge uses variant and size presets.

Badge

Badge renders label text in a div wrapper.

  • defaults
    Badge
  • size.sm
    Badge
  • size.default
    Badge
  • size.lg
    Badge
  • variant.default
    Badge
  • variant.secondary
    Badge
  • variant.outline
    Badge
  • variant.destructive
    Badge
PropTypeNotes
Variantstringcolor preset: default, secondary, destructive, outline
Sizestringdensity preset: default, sm, lg
Classstringadds Tailwind utilities
Attrsattrs
Childrenchildren

ui.button-plain

ButtonPlain is a bare button element: no styling beyond Class. Patterns (tabs, tree rows, menu items) style it themselves.

ButtonPlain

ButtonPlain is a bare button element: no styling beyond Class. Patterns (tabs, tree rows, menu items) style it themselves.

  • defaults
  • default
PropTypeNotes
Classstringadds Tailwind utilities
Typestringbutton type: button, submit, reset (ignored when Href is set)
Disabledboolblocks interaction
IDstringelement id
RolestringARIA role override
TabIndexstringtab order override
AriaLabelstringaccessible name for unlabeled controls
Attrsattrs
Childrenchildren

ui.button

Button triggers an action on click. Optional Href renders an anchor with button appearance (CTA navigation). For exotic roots, use ButtonClasses (Templ/Svelte/Vue/Solid) or asChild (React). Prefer Link for prose/semantic navigation.

Button

Button renders a button element, or an anchor when Href is set. Type/Form apply only in button mode; Disabled on anchors uses aria-disabled.

  • defaults
  • variant.default
  • variant.outline
  • variant.ghost
  • variant.secondary
  • variant.destructive
  • variant.link
  • variant.contrast
  • variant.muted
  • size.sm
  • size.default
  • size.lg
  • size.xl
  • layout.default
  • layout.icon
  • state.disabled
  • state.reset
  • state.submit
  • composition.aschild-link
  • composition.href
  • composition.href-external
  • composition.href-disabled
PropTypeNotes
Variantstringappearance preset: default, secondary, destructive, outline, ghost, link
Sizestringdensity preset: default, sm, lg, icon
Layoutstringsets layout
Classstringadds Tailwind utilities
Typestringbutton type: button, submit, reset (ignored when Href is set)
Formstringlinks button to a form id (ignored when Href is set)
Hrefstringwhen set, renders an anchor with button appearance
Targetstringexplicit target; External implies _blank (anchor mode)
Relstringexplicit rel; external links default to noopener noreferrer (anchor mode)
Externalboolopens in a new tab with safe rel defaults (anchor mode)
Disabledboolblocks interaction
IDstringelement id
RolestringARIA role override
TabIndexstringtab order override
AriaLabelstringaccessible name for unlabeled controls
Attrsattrs
Childrenchildren

ui.card

Card groups related content in one bordered surface. Card uses header, content, and footer slots. For semantic root elements (section, article), use CardClasses on a manual wrapper.

Card

Card renders the bordered surface wrapper.

  • defaults
    Card
  • variant.default
    Card
  • variant.muted
    Card
  • variant.ghost
    Card
  • variant.compact
    Card
  • variant.raised
    Card
  • variant.kpi
    Card
  • variant.flat
    Card
  • variant.accent
    Card
PropTypeNotes
Classstringadds Tailwind utilities
Variantstringsurface: default, muted, ghost, compact
Attrsattrs
Childrenchildren

CardHeader

CardHeader renders the top slot.

  • defaults
    CardHeader
PropTypeNotes
Classstringadds Tailwind utilities
Attrsattrs
Childrenchildren

CardTitle

CardTitle renders heading text at the As level (default h2).

  • defaults

    CardTitle

PropTypeNotes
Classstringadds Tailwind utilities
Asintmaps to h1-h6 (default h2)
Attrsattrs
Childrenchildren

CardDescription

CardDescription renders a muted subtitle in a p element.

  • defaults

    CardDescription

PropTypeNotes
Classstringadds Tailwind utilities
Attrsattrs
Childrenchildren

CardContent

CardContent renders the padded main body slot.

  • defaults
    CardContent
PropTypeNotes
Classstringadds Tailwind utilities
Attrsattrs
Childrenchildren

CardFooter

CardFooter renders the bottom action slot.

  • defaults
PropTypeNotes
Classstringadds Tailwind utilities
Attrsattrs
Childrenchildren

ui.checkbox

Checkbox is a native boolean form control. Wireframe styling via Variant and Size; supports standard ARIA attrs.

Checkbox

Checkbox renders a styled input[type=checkbox].

  • defaults
  • size.default
  • size.sm
  • variant.default
  • variant.ghost
  • state.checked
  • state.disabled
  • state.unchecked
PropTypeNotes
Variantstringsets appearance preset
Sizestringsets density preset
Classstringadds Tailwind utilities
Namestring
Valuestring
Checkedbool
Disabledbool
Requiredbool
IDstringelement id
RolestringARIA role override
TabIndexstringtab order override
AriaLabelstringaccessible name for unlabeled controls
Attrsattrs

ui.form.controls

Form controls covers fieldset, legend, datalist, output, meter, and progress.

Fieldset

Fieldset renders a native fieldset.

  • defaults
    Fieldset
  • size.default
    Fieldset
  • size.lg
    Fieldset
  • size.sm
    Fieldset
  • variant.card
    Fieldset
  • variant.default
    Fieldset
  • variant.inline
    Fieldset
  • status.progress
    Fieldset
PropTypeNotes
Variantstringsets appearance preset
Sizestringsets density preset
Classstringadds Tailwind utilities
Namestring
Formstring
Disabledbool
Attrsattrs
Childrenchildren

Legend

Legend renders a native legend.

  • defaults
    Legend
  • size.sm
    Legend
  • size.default
    Legend
  • size.lg
    Legend
  • variant.default
    Legend
  • variant.muted
    Legend
  • group.fieldset
    Legend
PropTypeNotes
Variantstringsets appearance preset
Sizestringsets density preset
Classstringadds Tailwind utilities
Attrsattrs
Childrenchildren

DataList

DataList renders a native datalist.

  • defaults
    DataList
PropTypeNotes
IDstring
Classstringadds Tailwind utilities
Attrsattrs
Childrenchildren

DataOption

DataOption renders an option inside a datalist.

  • defaults
  • status.progress
PropTypeNotes
Valuestring
Labelstring
Attrsattrs

Output

Output renders a native output element.

  • defaults
    Output
  • group.fieldset
    Output
  • status.progress
    40Output
PropTypeNotes
IDstring
Classstringadds Tailwind utilities
Namestring
Forstring
Valuestringinitial output text
Attrsattrs
Childrenchildren

Meter

Meter renders a native meter.

  • defaults
    Meter
  • size.sm
    Meter
  • size.default
    Meter
  • size.lg
    Meter
  • variant.default
    Meter
  • variant.muted
    Meter
  • group.fieldset
    Meter
  • status.progress
    Meter
PropTypeNotes
Variantstringsets appearance preset
Sizestringsets density preset
IDstring
Classstringadds Tailwind utilities
Valuestring
Minstring
Maxstring
Lowstring
Highstring
Optimumstring
Attrsattrs
Childrenchildren

Progress

Progress renders a native progress element.

  • defaults
    Progress
  • size.sm
    Progress
  • size.default
    Progress
  • size.lg
    Progress
  • variant.default
    Progress
  • variant.muted
    Progress
  • group.fieldset
    Progress
  • status.progress
    Progress
PropTypeNotes
Variantstringsets appearance preset
Sizestringsets density preset
IDstring
Classstringadds Tailwind utilities
Valuestring
Maxstring
Attrsattrs
Childrenchildren

ui.dialog

Dialog renders a native dialog root with an optional behavior hook. The data-ui8kit hook defaults off; the registry ships no client JS.

Dialog

Dialog renders a native dialog element.

  • defaults
    Dialog
  • size.default
    Dialog
  • size.full
    Dialog
  • size.lg
    Dialog
  • size.xl
    Dialog
  • variant.card
    Dialog
  • variant.default
    Dialog
  • variant.sheet
    Dialog
PropTypeNotes
Variantstringsets appearance preset
Sizestringsets density preset
Classstringadds Tailwind utilities
IDstring
Openboolinitial open state (static attribute only)
DataUI8Kitstringopt-in behavior hook; empty emits nothing
AriaLabelstring
AriaLabelledBystring
AriaDescribedBystring
Attrsattrs
Childrenchildren

ui.disclosure

Disclosure renders native details and summary elements. Open is a static attribute only โ€” no controlled-state contract.

Disclosure

Disclosure renders native details.

  • defaults
    Disclosure
  • variant.card
    Disclosure
  • variant.default
    Disclosure
  • variant.ghost
    Disclosure
  • variant.item
    Disclosure
  • state.open
    Disclosure
PropTypeNotes
Variantstringsets appearance preset
Classstringadds Tailwind utilities
Openboolinitial open state (static attribute only)
Namestringgroup name: details of one name open one at a time (native exclusive accordion); leave out for independent items
Attrsattrs
Childrenchildren

Summary

Summary renders native summary, followed by a Lucide chevron-down indicator that turns over when the details open (CSS only: group-open:rotate-180 on the Disclosure group).

  • defaults
    Summary
  • variant.card
    Summary
  • variant.default
    Summary
  • variant.ghost
    Summary
  • variant.item
    Summary
PropTypeNotes
Variantstringsets appearance preset
Classstringadds Tailwind utilities
Attrsattrs
Childrenchildren

ui.form

Form primitives: form wrapper, field item, description, and validation message. Composes with Label, Input, and other controls.

Form

Form renders a vertical grid form container.

  • defaults
    Form
  • group.fieldset
    Form
PropTypeNotes
IDstring
Classstringadds Tailwind utilities
Actionstring
Methodstring
Enctypestring
Autocompletestring
Namestring
Targetstring
NoValidatebool
Attrsattrs
Childrenchildren

FormItem

FormItem groups a single field with spacing for label and control.

  • defaults
    FormItem
PropTypeNotes
Classstringadds Tailwind utilities
Attrsattrs
Childrenchildren

FormDescription

FormDescription renders muted helper copy below a control.

  • defaults

    FormDescription

PropTypeNotes
Classstringadds Tailwind utilities
Attrsattrs
Childrenchildren

FormMessage

FormMessage renders destructive validation feedback.

  • defaults
PropTypeNotes
Classstringadds Tailwind utilities
Attrsattrs
Childrenchildren

ui.iconbadge

IconBadge renders a small icon surface for nav rows, cards, and status blocks. Pass the letter, glyph, or Icon node as children.

IconBadge

IconBadge renders children as the badge content.

  • defaults
    H
  • variant.default
    H
  • variant.primary
    H
  • variant.accent
    H
  • variant.secondary
    H
  • variant.outline
    H
  • variant.destructive
    H
  • size.xs
    H
  • size.sm
    H
  • size.default
    H
  • size.lg
    H
  • size.xl
    H
PropTypeNotes
Variantstringsets appearance preset
Sizestringsets density preset
Classstringadds Tailwind utilities
Attrsattrs
Childrenchildren

ui.input

Input is a single-line native text field. Supports types, validation attrs, and wireframe variant/size classes.

Input

Input renders a styled single-line form control.

  • defaults
  • size.sm
  • size.default
  • size.lg
  • size.xs
  • variant.default
  • variant.ghost
  • variant.outline
  • state.disabled
  • state.required
  • type.email
PropTypeNotes
Variantstringsets appearance preset
Sizestringsets density preset
Classstringadds Tailwind utilities
Typestringinput type; defaults to text
Namestring
Valuestring
Placeholderstring
Disabledbool
Requiredbool
Autocompletestring
Minstring
Maxstring
IDstringelement id
RolestringARIA role override
TabIndexstringtab order override
AriaLabelstringaccessible name for unlabeled controls
Attrsattrs

ui.radio

Radio is a native single-choice control within a named group.

Radio

Radio renders input[type=radio] with shared Name for grouping.

  • defaults
  • size.default
  • size.sm
  • variant.default
  • variant.ghost
  • layout.group
  • state.disabled
PropTypeNotes
Variantstringsets appearance preset
Sizestringsets density preset
Classstringadds Tailwind utilities
Namestring
Valuestring
Checkedbool
Disabledbool
Requiredbool
IDstringelement id
RolestringARIA role override
TabIndexstringtab order override
AriaLabelstringaccessible name for unlabeled controls
Attrsattrs

ui.range

Range renders a styled input[type=range] (single thumb slider). The value is controlled from outside: Value in, an input event out (canary used a bindable prop).

Range

Range renders input type=range.

  • defaults
  • value.default
  • state.disabled
PropTypeNotes
Valuestringcurrent value as a string, controlled by the caller
Minintlowest value, 0 by default
Maxinthighest value, 100 by default
Stepintstep, 1 by default
Disabledbooldisables the slider
AriaLabelstringaccessible name
Classstringadds Tailwind utilities
Attrsattrs

ui.select

Select is a native dropdown built from Option items.

Select

Select renders option children from the Options list plus manual children.

  • defaults
  • size.sm
  • size.default
  • size.lg
  • size.xs
  • variant.default
  • variant.ghost
  • variant.outline
  • state.disabled
PropTypeNotes
Variantstringsets appearance preset
Sizestringsets density preset
Classstringadds Tailwind utilities
Namestring
Valuestringcurrently selected option value
Disabledbool
Requiredbool
Optionsitems
IDstringelement id
RolestringARIA role override
TabIndexstringtab order override
AriaLabelstringaccessible name for unlabeled controls
Attrsattrs
Childrenchildren

SelectOption

SelectOption renders an option for custom Select children.

  • defaults
  • state.disabled
  • variant.default
PropTypeNotes
Valuestring
Labelstring
Selectedbool
Disabledbool
Attrsattrs
Childrenchildren

OptGroup

OptGroup renders a native optgroup around option children.

  • defaults
    OptGroup
  • state.disabled
    OptGroup
PropTypeNotes
Classstringadds Tailwind utilities
Labelstring
Disabledbool
Attrsattrs
Childrenchildren

ui.sheet

Sheet is a side drawer dialog with a trigger (Lucide menu/x) and a close button. Behavior: behaviors/ui8kit.js.

Sheet

Sheet renders the hidden dialog root: overlay + panel (children). ID is required for the trigger's aria-controls.

    PropTypeNotes
    Sidestringleft or right
    Classstringadds Tailwind utilities
    IDstringdialog id (target of SheetTrigger Controls)
    AriaLabelstringaccessible name (default: Menu)
    Openboolrender open (static); default hidden
    Attrsattrs
    Childrenchildren

    SheetTrigger

    SheetTrigger renders the menu button (aria-expanded, aria-controls, aria-haspopup=dialog) with Lucide menu/x icons.

    • defaults
    • variant.default
    • variant.ghost
    • variant.contrast
    • variant.current
    • size.sm
    • size.default
    • size.lg
    • side.right
    • side.left
    PropTypeNotes
    Variantstringdefault, ghost, contrast, current
    Sizestringsm, default, lg
    Classstringadds Tailwind utilities
    Controlsstringid of the Sheet
    AriaLabelstringaccessible name (default: Open menu)
    Attrsattrs

    SheetClose

    SheetClose renders the close button (Lucide x) inside the panel.

    • defaults
    • variant.default
    • variant.ghost
    • variant.contrast
    • variant.current
    • size.sm
    • size.default
    • size.lg
    • side.right
    • side.left
    PropTypeNotes
    Variantstringdefault, ghost, contrast, current
    Sizestringsm, default, lg
    Classstringadds Tailwind utilities
    AriaLabelstringaccessible name (default: Close menu)
    Attrsattrs

    ui.skeleton

    Skeleton renders a pulsing placeholder box (loading state). It is decorative: aria-hidden; the loading state is announced by the container (aria-busy).

    Skeleton

    Skeleton renders a decorative placeholder.

    • defaults
    • shape.line
    • shape.block
    PropTypeNotes
    Shapestringline, block or circle
    Classstringadds Tailwind utilities
    Attrsattrs

    ui.switch

    Switch is a toggle control (checkbox with switch ARIA semantics). Use for on/off settings; wireframe uses native checkbox styling.

    Switch

    Switch renders input[type=checkbox] with switch role attrs.

    • defaults
    • size.default
    • size.sm
    • state.disabled
    • state.off
    • state.on
    PropTypeNotes
    Sizestringsets density preset
    Classstringadds Tailwind utilities
    Namestring
    Valuestring
    Checkedbool
    Disabledbool
    Requiredbool
    IDstring
    TabIndexstring
    AriaLabelstring
    Attrsattrs

    ui.table

    Table composes semantic table, caption, sections, rows, and cells. Supports scope, colspan, and headers attrs on head cells.

    Table

    Table renders the root table element.

    • defaults
      Table
    PropTypeNotes
    Classstringadds Tailwind utilities
    Attrsattrs
    Childrenchildren

    TableCaption

    TableCaption renders the table caption.

    • defaults
      TableCaption
    PropTypeNotes
    Classstringadds Tailwind utilities
    Attrsattrs
    Childrenchildren

    TableHead

    TableHead renders the thead section.

    • defaults
      TableHead
    PropTypeNotes
    Classstringadds Tailwind utilities
    Attrsattrs
    Childrenchildren

    TableBody

    TableBody renders the tbody section.

    • defaults
      TableBody
    PropTypeNotes
    Classstringadds Tailwind utilities
    Attrsattrs
    Childrenchildren

    TableFoot

    TableFoot renders the tfoot section.

    • defaults
      TableFoot
    PropTypeNotes
    Classstringadds Tailwind utilities
    Attrsattrs
    Childrenchildren

    TableRow

    TableRow renders one tr row.

    • defaults
      TableRow
    PropTypeNotes
    Classstringadds Tailwind utilities
    Attrsattrs
    Childrenchildren

    TableHeadCell

    TableHeadCell renders th with optional scope and abbr.

    • defaults
      TableHeadCell
    PropTypeNotes
    Classstringadds Tailwind utilities
    Scopestringth scope: col, row, colgroup, rowgroup
    ColSpanint
    RowSpanint
    Headersstringids of related header cells
    Abbrstringabbreviated header text for th
    Attrsattrs
    Childrenchildren

    TableCell

    TableCell renders td with colspan and rowspan.

    • defaults
      TableCell
    PropTypeNotes
    Classstringadds Tailwind utilities
    Scopestringth scope: col, row, colgroup, rowgroup
    ColSpanint
    RowSpanint
    Headersstringids of related header cells
    Abbrstringabbreviated header text for th
    Attrsattrs
    Childrenchildren

    TableColGroup

    TableColGroup renders colgroup with optional span.

    • defaults
      TableColGroup
    PropTypeNotes
    Classstringadds Tailwind utilities
    Spanint
    Attrsattrs
    Childrenchildren

    TableCol

    TableCol renders a single col definition.

    • defaults
    PropTypeNotes
    Classstringadds Tailwind utilities
    Spanint
    Attrsattrs

    ui.textarea

    Textarea is a multi-line native text field with row sizing.

    Textarea

    Textarea renders a styled multi-line form control.

    • defaults
    • size.sm
    • size.default
    • size.lg
    • variant.default
    • variant.ghost
    • rows.custom
    • state.disabled
    PropTypeNotes
    Variantstringsets appearance preset
    Sizestringsets density preset
    Classstringadds Tailwind utilities
    Namestring
    Valuestringinitial textarea content
    Placeholderstring
    Rowsintvisible line count; defaults to 4 when zero
    Disabledbool
    Requiredbool
    IDstringelement id
    RolestringARIA role override
    TabIndexstringtab order override
    AriaLabelstringaccessible name for unlabeled controls
    Attrsattrs

    ui.themetoggle

    ThemeToggle switches between light and dark color schemes (button with aria-pressed). Behavior: data-ui8kit="theme-toggle" in behaviors/ui8kit.js.

    ThemeToggle

    ThemeToggle renders a button with Lucide sun/moon icons; aria-pressed reflects dark mode.

    • defaults
    • variant.default
    • variant.ghost
    • variant.contrast
    • variant.current
    • size.sm
    • size.default
    • size.lg
    • label.custom
    PropTypeNotes
    Variantstringdefault, ghost, contrast (on primary surfaces), current (inherits text color)
    Sizestringsm, default, lg
    Classstringadds Tailwind utilities
    IDstring
    AriaLabelstringaccessible name (default: Dark mode)
    Attrsattrs