
Reka Ui
- 6.7k installs
- 696 repo stars
- Updated July 27, 2026
- onmax/nuxt-skills
reka-ui is an agent skill for Use when building with Reka UI (headless Vue components) - provides component API, accessibility patterns, composition (asChild), controlled/uncontrolled state, virtualization, and
About
Use when building with Reka UI headless Vue components provides component API accessibility patterns composition asChild controlled uncontrolled state virtualization and styling integration Formerly Radix Vue name reka-ui description Use when building with Reka UI headless Vue components provides component API accessibility patterns composition asChild controlled uncontrolled state virtualization and styling integration license MIT Reka UI Unstyled accessible Vue 3 component primitives Current version v2 8 0 January 2026 When to Use Building headless unstyled components from scratch Need WAI-ARIA compliant components Using Nuxt UI shadcn-vue or other Reka-based libraries Implementing accessible forms dialogs menus popovers For Vue patterns use vue skill Available Guidance File Topics references components md references components md Component index by category Form Date Overlay Menu Data etc components md Per-component details dialog md select md etc Guides see reka-ui com https reka-ui com Styling Animation Composition SSR Namespaced Dates i18n Controlled State Inject Context Virtualization Migration Loading Files Consider loading these reference files based on your task referenc.
- Building headless/unstyled components from scratch
- Need WAI-ARIA compliant components
- Using Nuxt UI, shadcn-vue, or other Reka-based libraries
- Implementing accessible forms, dialogs, menus, popovers
- [ ] [references/components.md](references/components.md) - if browsing component index by category or searching for spec
Reka Ui by the numbers
- 6,739 all-time installs (skills.sh)
- +40 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #78 of 2,245 Frontend Development skills by installs in the Skillselion catalog
- Security screen: LOW risk (skills.sh audit)
- Data as of Aug 4, 2026 (Skillselion catalog sync)
reka-ui capabilities & compatibility
- Capabilities
- building headless/unstyled components from scrat · need wai aria compliant components · using nuxt ui, shadcn vue, or other reka based l · implementing accessible forms, dialogs, menus, p · [ ] [references/components.md](references/compon
- Use cases
- documentation
What reka-ui says it does
license: MIT --- # Reka UI Unstyled, accessible Vue 3 component primitives.
npx skills add https://github.com/onmax/nuxt-skills --skill reka-uiAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 6.7k |
|---|---|
| repo stars | ★ 696 |
| Security audit | 3 / 3 scanners passed |
| Last updated | July 27, 2026 |
| Repository | onmax/nuxt-skills ↗ |
When should developers use reka-ui and what problem does it solve?
Use when building with Reka UI (headless Vue components) - provides component API, accessibility patterns, composition (asChild), controlled/uncontrolled state, virtualization, and styling integration
Who is it for?
Developers working with reka-ui patterns described in the skill documentation.
Skip if: Skip when cached docs are empty or the task is outside the skill's documented scope.
When should I use this skill?
Use when building with Reka UI (headless Vue components) - provides component API, accessibility patterns, composition (asChild), controlled/uncontrolled state, virtualization, and styling integration
What you get
Grounded guidance and workflows from SKILL.md for reka-ui.
- accessible Vue component implementations
- component reference lookups
Files
Reka UI
Unstyled, accessible Vue 3 component primitives. WAI-ARIA compliant. Previously Radix Vue.
Current version: v2.8.0 (January 2026)
When to Use
- Building headless/unstyled components from scratch
- Need WAI-ARIA compliant components
- Using Nuxt UI, shadcn-vue, or other Reka-based libraries
- Implementing accessible forms, dialogs, menus, popovers
For Vue patterns: use vue skill
Available Guidance
| File | Topics |
|---|---|
| [references/components.md](references/components.md) | Component index by category (Form, Date, Overlay, Menu, Data, etc.) |
| *components/\.md** | Per-component details (dialog.md, select.md, etc.) |
Guides (see reka-ui.com): Styling, Animation, Composition, SSR, Namespaced, Dates, i18n, Controlled State, Inject Context, Virtualization, Migration
Loading Files
Consider loading these reference files based on your task:
- [ ] references/components.md - if browsing component index by category or searching for specific components
DO NOT load all files at once. Load only what's relevant to your current task.
For styled Nuxt components built on Reka UI: use nuxt-ui skill
Key Concepts
| Concept | Description |
|---|---|
asChild | Render as child element instead of wrapper, merging props/behavior |
| Controlled/Uncontrolled | Use v-model for controlled, default* props for uncontrolled |
| Parts | Components split into Root, Trigger, Content, Portal, etc. |
forceMount | Keep element in DOM for animation libraries |
| Virtualization | Optimize large lists (Combobox, Listbox, Tree) with virtual scrolling |
| Context Injection | Access component context from child components |
Installation
// nuxt.config.ts (auto-imports all components)
export default defineNuxtConfig({
modules: ['reka-ui/nuxt']
})import { RekaResolver } from 'reka-ui/resolver'
// vite.config.ts (with auto-import resolver)
import Components from 'unplugin-vue-components/vite'
export default defineConfig({
plugins: [
vue(),
Components({ resolvers: [RekaResolver()] })
]
})Basic Patterns
<!-- Dialog with controlled state -->
<script setup>
import { DialogRoot, DialogTrigger, DialogPortal, DialogOverlay, DialogContent, DialogTitle, DialogDescription, DialogClose } from 'reka-ui'
const open = ref(false)
</script>
<template>
<DialogRoot v-model:open="open">
<DialogTrigger>Open</DialogTrigger>
<DialogPortal>
<DialogOverlay class="fixed inset-0 bg-black/50" />
<DialogContent class="fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 bg-white p-6 rounded">
<DialogTitle>Title</DialogTitle>
<DialogDescription>Description</DialogDescription>
<DialogClose>Close</DialogClose>
</DialogContent>
</DialogPortal>
</DialogRoot>
</template><!-- Select with uncontrolled default -->
<SelectRoot default-value="apple">
<SelectTrigger>
<SelectValue placeholder="Pick fruit" />
</SelectTrigger>
<SelectPortal>
<SelectContent>
<SelectViewport>
<SelectItem value="apple"><SelectItemText>Apple</SelectItemText></SelectItem>
<SelectItem value="banana"><SelectItemText>Banana</SelectItemText></SelectItem>
</SelectViewport>
</SelectContent>
</SelectPortal>
</SelectRoot><!-- asChild for custom trigger element -->
<DialogTrigger as-child>
<button class="my-custom-button">Open</button>
</DialogTrigger>Recent Updates (v2.6.0-v2.8.0)
- New component: Rating (v2.8.0)
- ScrollArea: Added "glimpse" scrollbar mode (v2.8.0)
- PopperContent: Added
hideShiftedArrowprop (v2.8.0) - TimeField: Added
stepSnappingsupport (v2.8.0) - Breaking:
weekStartsOnnow locale-independent for date components (v2.8.0) - Virtualization:
estimateSizeaccepts function for Listbox/Tree (v2.7.0) - Composables:
useLocale,useDirectionexposed (v2.6.0) - Select:
disableOutsidePointerEventsprop on Content (v2.7.0) - Toast:
disableSwipeprop (v2.6.0)
Resources
- Reka UI Docs
- GitHub
- Nuxt UI (styled Reka components)
- shadcn-vue (styled Reka components)
---
_Token efficiency: ~350 tokens base, components.md index ~100 tokens, per-component ~50-150 tokens_
Components
Auto-generated. Run npx tsx skills/reka-ui/scripts/generate-components.ts to update.Form
| Component | Description | File |
|---|---|---|
| checkbox | Selection control with indeterminate state | components/checkbox.md |
| combobox | Searchable dropdown with filtering | components/combobox.md |
| editable | Inline text editing with preview/edit modes | components/editable.md |
| label | Accessible form label | components/label.md |
| listbox | Accessible list selection | components/listbox.md |
| numberField | Numeric input with increment/decrement | components/number-field.md |
| pinInput | Multi-character code entry (OTP) | components/pin-input.md |
| radioGroup | Mutually exclusive selection | components/radio-group.md |
| select | Dropdown selection with grouping | components/select.md |
| slider | Range input control | components/slider.md |
| switch | Toggle between two states | components/switch.md |
| tagsInput | Multiple tag entry and management | components/tags-input.md |
| toggle | Single state button toggle | components/toggle.md |
| toggleGroup | Multiple toggles with group behavior | components/toggle-group.md |
Date
| Component | Description | File |
|---|---|---|
| calendar | Date selection grid (alpha) | components/calendar.md |
| dateField | Date input field (alpha) | components/date-field.md |
| datePicker | Date picker with calendar (alpha) | components/date-picker.md |
| dateRangeField | Date range input (alpha) | components/date-range-field.md |
| dateRangePicker | Date range picker (alpha) | components/date-range-picker.md |
| rangeCalendar | Calendar for date ranges (alpha) | components/range-calendar.md |
| timeField | Time input field (alpha) | components/time-field.md |
Disclosure
| Component | Description | File |
|---|---|---|
| accordion | Collapsible content sections | components/accordion.md |
| collapsible | Single collapsible panel | components/collapsible.md |
Overlay
| Component | Description | File |
|---|---|---|
| alertDialog | Modal dialog requiring action | components/alert-dialog.md |
| dialog | Modal dialog | components/dialog.md |
| hoverCard | Card shown on hover | components/hover-card.md |
| popover | Floating content panel | components/popover.md |
| tooltip | Informational hover tip | components/tooltip.md |
| toast | Temporary notifications | components/toast.md |
Menu
| Component | Description | File |
|---|---|---|
| contextMenu | Right-click context menu | components/context-menu.md |
| dropdownMenu | Dropdown action menu | components/dropdown-menu.md |
| menubar | Horizontal menu bar | components/menubar.md |
| navigationMenu | Site navigation menu | components/navigation-menu.md |
Data
| Component | Description | File |
|---|---|---|
| avatar | User image with fallback | components/avatar.md |
| pagination | Page navigation | components/pagination.md |
| progress | Progress indicator | components/progress.md |
| scrollArea | Custom scrollbar container | components/scroll-area.md |
| separator | Visual divider | components/separator.md |
| splitter | Resizable split panels | components/splitter.md |
| stepper | Multi-step progress indicator | components/stepper.md |
| tabs | Tabbed content panels | components/tabs.md |
| tree | Hierarchical tree view | components/tree.md |
Layout
| Component | Description | File |
|---|---|---|
| aspectRatio | Maintain aspect ratio | components/aspect-ratio.md |
| toolbar | Toolbar with buttons/toggles | components/toolbar.md |
Utility
| Component | Description | File |
|---|---|---|
| configProvider | Global config context | components/config-provider.md |
| focusScope | Focus trap container | components/focus-scope.md |
| presence | Animation presence control | components/presence.md |
| primitive | Base element wrapper | components/primitive.md |
| visuallyHidden | Screen reader only content | components/visually-hidden.md |
Composables
| Composable | Description |
|---|---|
useEmitAsProps | Convert emit functions to props for passing to child components |
useFilter | Filter items based on search query with customizable matching |
useForwardProps | Forward props to child components while filtering out handled ones |
useForwardPropsEmits | Combine useForwardProps and useEmitAsProps |
useForwardExpose | Forward exposed methods/refs from child components |
useId | Generate unique IDs for accessibility attributes |
useDateFormatter | Format dates with locale support |
useDirection | Get/set text direction (ltr/rtl) |
useLocale | Get/set locale for internationalization |
Accordion
Collapsible content sections
Parts: AccordionRoot, AccordionItem, AccordionHeader, AccordionTrigger, AccordionContent
AccordionRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
collapsible | boolean | false |
defaultValue | `string \ | string[]` |
dir | `"ltr" \ | "rtl"` |
disabled | boolean | false |
modelValue | `string \ | string[]` |
orientation | `"vertical" \ | "horizontal"` |
type | `"single" \ | "multiple"` |
Emits
| Event | Payload |
|---|---|
update:modelValue | `[value: string \ |
Slots
| Slot | Type |
|---|---|
modelValue | `string \ |
AccordionItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
value* | string | - |
Slots
| Slot | Type |
|---|---|
open | boolean |
AccordionHeader
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
AccordionTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
AccordionContent
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
forceMount | boolean | - |
Alert Dialog
Modal dialog requiring action
Parts: AlertDialogRoot, AlertDialogTrigger, AlertDialogPortal, AlertDialogOverlay, AlertDialogContent, AlertDialogTitle, AlertDialogDescription, AlertDialogCancel, AlertDialogAction
AlertDialogRoot
Props
| Prop | Type | Default |
|---|---|---|
defaultOpen | boolean | - |
open | boolean | - |
Emits
| Event | Payload |
|---|---|
update:open | [value: boolean] |
AlertDialogTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
AlertDialogPortal
Props
| Prop | Type | Default |
|---|---|---|
disabled | boolean | - |
forceMount | boolean | - |
to | `string \ | HTMLElement` |
AlertDialogOverlay
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
forceMount | boolean | - |
AlertDialogContent
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disableOutsidePointerEvents | boolean | - |
forceMount | boolean | - |
trapFocus | boolean | - |
Emits
| Event | Payload |
|---|---|
closeAutoFocus | [event: Event] |
escapeKeyDown | [event: KeyboardEvent] |
focusOutside | [event: FocusOutsideEvent] |
interactOutside | `[event: PointerDownOutsideEvent \ |
openAutoFocus | [event: Event] |
pointerDownOutside | [event: PointerDownOutsideEvent] |
AlertDialogTitle
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
AlertDialogDescription
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
AlertDialogCancel
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
AlertDialogAction
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Aspect Ratio
Maintain aspect ratio
Parts: AspectRatio
AspectRatio
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
ratio | number | 1 |
Slots
| Slot | Type |
|---|---|
aspect | number |
Avatar
User image with fallback
Parts: AvatarRoot, AvatarImage, AvatarFallback
AvatarRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
AvatarImage
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
referrerPolicy | `"" \ | "no-referrer" \ |
src* | string | - |
Emits
| Event | Payload |
|---|---|
loadingStatusChange | [value: ImageLoadingStatus] |
AvatarFallback
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
delayMs | number | 0 |
Calendar
Date selection grid (alpha)
Parts: CalendarRoot, CalendarHeader, CalendarHeading, CalendarGrid, CalendarGridHead, CalendarGridBody, CalendarGridRow, CalendarCell, CalendarCellTrigger, CalendarHeadCell, CalendarNext, CalendarPrev
CalendarRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
calendarLabel | string | - |
defaultPlaceholder | DateValue | - |
defaultValue | DateValue | - |
dir | `"ltr" \ | "rtl"` |
disabled | boolean | false |
fixedWeeks | boolean | false |
initialFocus | boolean | false |
isDateDisabled | Matcher | - |
isDateUnavailable | Matcher | - |
locale | string | "en" |
maxValue | DateValue | - |
minValue | DateValue | - |
modelValue | `DateValue \ | DateValue[]` |
multiple | boolean | false |
nextPage | ((placeholder: DateValue) => DateValue) | - |
numberOfMonths | number | 1 |
pagedNavigation | boolean | false |
placeholder | DateValue | - |
preventDeselect | boolean | false |
prevPage | ((placeholder: DateValue) => DateValue) | - |
readonly | boolean | false |
weekdayFormat | `"narrow" \ | "short" \ |
weekStartsOn | `0 \ | 1 \ |
Emits
| Event | Payload |
|---|---|
update:modelValue | [date: DateValue] |
update:placeholder | [date: DateValue] |
Slots
| Slot | Type |
|---|---|
date | DateValue |
grid | Grid<DateValue>[] |
weekDays | string[] |
weekStartsOn | `0 \ |
locale | string |
fixedWeeks | boolean |
CalendarHeader
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
CalendarHeading
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Slots
| Slot | Type |
|---|---|
headingValue | string |
CalendarGrid
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
CalendarGridHead
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
CalendarGridBody
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
CalendarGridRow
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
CalendarCell
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
date* | DateValue | - |
CalendarCellTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
day* | DateValue | - |
month* | DateValue | - |
Slots
| Slot | Type |
|---|---|
dayValue | string |
CalendarHeadCell
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
CalendarNext
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
nextPage | ((placeholder: DateValue) => DateValue) | - |
step | `"month" \ | "year"` |
CalendarPrev
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
prevPage | ((placeholder: DateValue) => DateValue) | - |
step | `"month" \ | "year"` |
Checkbox
Selection control with indeterminate state
Parts: CheckboxGroupRoot, CheckboxRoot, CheckboxIndicator
CheckboxRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
checked | `boolean \ | "indeterminate"` |
defaultChecked | boolean | - |
disabled | boolean | - |
id | string | - |
name | string | - |
required | boolean | - |
value | string | "on" |
Emits
| Event | Payload |
|---|---|
update:checked | [value: boolean] |
Slots
| Slot | Type |
|---|---|
checked | `false \ |
CheckboxIndicator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
forceMount | boolean | - |
Collapsible
Single collapsible panel
Parts: CollapsibleRoot, CollapsibleTrigger, CollapsibleContent
CollapsibleRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultOpen | boolean | false |
disabled | boolean | - |
open | boolean | - |
Emits
| Event | Payload |
|---|---|
update:open | [value: boolean] |
Slots
| Slot | Type |
|---|---|
open | boolean |
CollapsibleTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
CollapsibleContent
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
forceMount | boolean | - |
Combobox
Searchable dropdown with filtering
Parts: ComboboxRoot, ComboboxInput, ComboboxAnchor, ComboboxTrigger, ComboboxContent, ComboboxViewport, ComboboxItem, ComboboxItemIndicator, ComboboxGroup, ComboboxLabel, ComboboxEmpty, ComboboxSeparator, ComboboxArrow, ComboboxPortal, ComboboxCancel, ComboboxVirtualizer
ComboboxRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultOpen | boolean | - |
defaultValue | `AcceptableValue \ | AcceptableValue[]` |
dir | `"ltr" \ | "rtl"` |
disabled | boolean | - |
displayValue | ((val: AcceptableValue) => string) | - |
filterFunction | `((val: string[] \ | number[] \ |
modelValue | `AcceptableValue \ | AcceptableValue[]` |
multiple | boolean | - |
name | string | - |
open | boolean | - |
resetSearchTermOnBlur | boolean | true |
resetSearchTermOnSelect | boolean | true |
searchTerm | string | - |
selectedValue | AcceptableValue | - |
Emits
| Event | Payload |
|---|---|
update:modelValue | [value: AcceptableValue] |
update:open | [value: boolean] |
update:searchTerm | [value: string] |
update:selectedValue | [value: AcceptableValue] |
Slots
| Slot | Type |
|---|---|
open | boolean |
modelValue | `AcceptableValue \ |
ComboboxInput
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
autoFocus | boolean | - |
disabled | boolean | - |
type | string | "text" |
ComboboxAnchor
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
ComboboxTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
ComboboxContent
Props
| Prop | Type | Default |
|---|---|---|
align | `"start" \ | "center" \ |
alignOffset | number | - |
arrowPadding | number | - |
as | `AsTag \ | Component` |
asChild | boolean | - |
avoidCollisions | boolean | - |
bodyLock | boolean | - |
collisionBoundary | `Element \ | (Element \ |
collisionPadding | `number \ | Partial<Record<"top" \ |
disableOutsidePointerEvents | boolean | - |
dismissable | boolean | - |
forceMount | boolean | - |
hideWhenDetached | boolean | - |
position | `"inline" \ | "popper"` |
prioritizePosition | boolean | - |
side | `"top" \ | "right" \ |
sideOffset | number | - |
sticky | `"partial" \ | "always"` |
updatePositionStrategy | `"always" \ | "optimized"` |
Emits
| Event | Payload |
|---|---|
escapeKeyDown | [event: KeyboardEvent] |
focusOutside | [event: FocusOutsideEvent] |
interactOutside | `[event: PointerDownOutsideEvent \ |
pointerDownOutside | [event: PointerDownOutsideEvent] |
ComboboxViewport
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
nonce | string | - |
ComboboxItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
value* | AcceptableValue | - |
Emits
| Event | Payload |
|---|---|
select | [event: SelectEvent<AcceptableValue>] |
ComboboxItemIndicator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
ComboboxGroup
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
ComboboxLabel
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
for | string | - |
ComboboxEmpty
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
ComboboxSeparator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
ComboboxArrow
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
height | number | 5 |
width | number | 10 |
ComboboxPortal
Props
| Prop | Type | Default |
|---|---|---|
disabled | boolean | - |
forceMount | boolean | - |
to | `string \ | HTMLElement` |
ComboboxCancel
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Config Provider
Global config context
Parts: ConfigProvider
ConfigProvider
Props
| Prop | Type | Default |
|---|---|---|
dir | `"ltr" \ | "rtl"` |
nonce | string | - |
scrollBody | `boolean \ | ScrollBodyOption` |
useId | (() => string) | - |
Context Menu
Right-click context menu
Parts: ContextMenuRoot, ContextMenuTrigger, ContextMenuPortal, ContextMenuContent, ContextMenuItem, ContextMenuCheckboxItem, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuItemIndicator, ContextMenuLabel, ContextMenuGroup, ContextMenuSeparator, ContextMenuSub, ContextMenuSubTrigger, ContextMenuSubContent, ContextMenuArrow
ContextMenuRoot
Props
| Prop | Type | Default |
|---|---|---|
dir | `"ltr" \ | "rtl"` |
modal | boolean | true |
Emits
| Event | Payload |
|---|---|
update:open | [payload: boolean] |
ContextMenuTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | false |
ContextMenuPortal
Props
| Prop | Type | Default |
|---|---|---|
disabled | boolean | - |
forceMount | boolean | - |
to | `string \ | HTMLElement` |
ContextMenuContent
Props
| Prop | Type | Default |
|---|---|---|
alignOffset | number | 0 |
as | `AsTag \ | Component` |
asChild | boolean | - |
avoidCollisions | boolean | true |
collisionBoundary | `Element \ | (Element \ |
collisionPadding | `number \ | Partial<Record<"top" \ |
forceMount | boolean | - |
hideWhenDetached | boolean | false |
loop | boolean | - |
prioritizePosition | boolean | - |
sticky | `"partial" \ | "always"` |
Emits
| Event | Payload |
|---|---|
closeAutoFocus | [event: Event] |
escapeKeyDown | [event: KeyboardEvent] |
focusOutside | [event: FocusOutsideEvent] |
interactOutside | `[event: PointerDownOutsideEvent \ |
pointerDownOutside | [event: PointerDownOutsideEvent] |
ContextMenuItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
textValue | string | - |
Emits
| Event | Payload |
|---|---|
select | [event: Event] |
ContextMenuCheckboxItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
checked | `false \ | true \ |
disabled | boolean | - |
textValue | string | - |
Emits
| Event | Payload |
|---|---|
select | [event: Event] |
update:checked | [payload: boolean] |
ContextMenuRadioGroup
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
modelValue | string | - |
Emits
| Event | Payload |
|---|---|
update:modelValue | [payload: string] |
ContextMenuRadioItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
textValue | string | - |
value* | string | - |
Emits
| Event | Payload |
|---|---|
select | [event: Event] |
ContextMenuItemIndicator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
forceMount | boolean | - |
ContextMenuLabel
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
ContextMenuGroup
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
ContextMenuSeparator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
ContextMenuSub
Props
| Prop | Type | Default |
|---|---|---|
defaultOpen | boolean | - |
open | boolean | - |
Emits
| Event | Payload |
|---|---|
update:open | [payload: boolean] |
Slots
| Slot | Type |
|---|---|
open | boolean |
ContextMenuSubTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
textValue | string | - |
ContextMenuSubContent
Props
| Prop | Type | Default |
|---|---|---|
alignOffset | number | - |
arrowPadding | number | - |
as | `AsTag \ | Component` |
asChild | boolean | - |
avoidCollisions | boolean | - |
collisionBoundary | `Element \ | (Element \ |
collisionPadding | `number \ | Partial<Record<"top" \ |
forceMount | boolean | - |
hideWhenDetached | boolean | - |
loop | boolean | - |
prioritizePosition | boolean | - |
sideOffset | number | - |
sticky | `"partial" \ | "always"` |
updatePositionStrategy | `"always" \ | "optimized"` |
Emits
| Event | Payload |
|---|---|
closeAutoFocus | [event: Event] |
entryFocus | [event: Event] |
escapeKeyDown | [event: KeyboardEvent] |
focusOutside | [event: FocusOutsideEvent] |
interactOutside | `[event: PointerDownOutsideEvent \ |
openAutoFocus | [event: Event] |
pointerDownOutside | [event: PointerDownOutsideEvent] |
ContextMenuArrow
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
height | number | 5 |
width | number | 10 |
Date Field
Date input field (alpha)
Parts: DateFieldRoot, DateFieldInput
DateFieldRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultPlaceholder | DateValue | - |
defaultValue | DateValue | - |
dir | `"ltr" \ | "rtl"` |
disabled | boolean | false |
granularity | `"day" \ | "hour" \ |
hideTimeZone | boolean | - |
hourCycle | `12 \ | 24` |
id | string | - |
isDateUnavailable | Matcher | - |
locale | string | "en" |
maxValue | DateValue | - |
minValue | DateValue | - |
modelValue | DateValue | - |
name | string | - |
placeholder | DateValue | - |
readonly | boolean | false |
required | boolean | - |
Emits
| Event | Payload |
|---|---|
update:modelValue | [date: DateValue] |
update:placeholder | [date: DateValue] |
Slots
| Slot | Type |
|---|---|
modelValue | `DateValue \ |
segments | { part: SegmentPart; value: string; }[] |
isInvalid | boolean |
DateFieldInput
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
part* | `"day" \ | "month" \ |
Date Picker
Date picker with calendar (alpha)
Parts: DatePickerRoot, DatePickerField, DatePickerInput, DatePickerTrigger, DatePickerContent, DatePickerCalendar, DatePickerHeader, DatePickerHeading, DatePickerGrid, DatePickerCell, DatePickerCellTrigger, DatePickerNext, DatePickerPrev, DatePickerAnchor, DatePickerArrow, DatePickerClose
DatePickerRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultOpen | boolean | false |
defaultPlaceholder | DateValue | - |
defaultValue | DateValue | - |
dir | `"ltr" \ | "rtl"` |
disabled | boolean | false |
fixedWeeks | boolean | false |
granularity | `"day" \ | "hour" \ |
hideTimeZone | boolean | - |
hourCycle | `12 \ | 24` |
id | string | - |
isDateDisabled | Matcher | - |
isDateUnavailable | Matcher | - |
locale | string | "en" |
maxValue | DateValue | - |
minValue | DateValue | - |
modal | boolean | false |
modelValue | DateValue | - |
name | string | - |
numberOfMonths | number | 1 |
open | boolean | - |
pagedNavigation | boolean | false |
placeholder | DateValue | - |
preventDeselect | boolean | false |
readonly | boolean | false |
required | boolean | - |
weekdayFormat | `"narrow" \ | "short" \ |
weekStartsOn | `0 \ | 1 \ |
Emits
| Event | Payload |
|---|---|
update:modelValue | [date: DateValue] |
update:open | [value: boolean] |
update:placeholder | [date: DateValue] |
DatePickerField
Slots
| Slot | Type |
|---|---|
segments | { part: SegmentPart; value: string; }[] |
modelValue | `DateValue \ |
DatePickerInput
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
part* | `"day" \ | "month" \ |
DatePickerTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
DatePickerContent
Props
| Prop | Type | Default |
|---|---|---|
align | `"start" \ | "center" \ |
alignOffset | number | - |
arrowPadding | number | - |
as | `AsTag \ | Component` |
asChild | boolean | - |
avoidCollisions | boolean | - |
collisionBoundary | `Element \ | (Element \ |
collisionPadding | `number \ | Partial<Record<"top" \ |
disableOutsidePointerEvents | boolean | - |
forceMount | boolean | - |
hideWhenDetached | boolean | - |
prioritizePosition | boolean | - |
side | `"top" \ | "right" \ |
sideOffset | number | - |
sticky | `"partial" \ | "always"` |
trapFocus | boolean | - |
updatePositionStrategy | `"always" \ | "optimized"` |
Emits
| Event | Payload |
|---|---|
closeAutoFocus | [event: Event] |
escapeKeyDown | [event: KeyboardEvent] |
focusOutside | [event: FocusOutsideEvent] |
interactOutside | `[event: PointerDownOutsideEvent \ |
openAutoFocus | [event: Event] |
pointerDownOutside | [event: PointerDownOutsideEvent] |
DatePickerCalendar
Slots
| Slot | Type |
|---|---|
date | DateValue |
grid | Grid<DateValue>[] |
weekDays | string[] |
weekStartsOn | `0 \ |
locale | string |
fixedWeeks | boolean |
DatePickerHeader
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
DatePickerHeading
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Slots
| Slot | Type |
|---|---|
headingValue | string |
DatePickerGrid
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
DatePickerCell
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
date* | DateValue | - |
DatePickerCellTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
day* | DateValue | - |
month* | DateValue | - |
DatePickerNext
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
nextPage | ((placeholder: DateValue) => DateValue) | - |
step | `"month" \ | "year"` |
DatePickerPrev
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
prevPage | ((placeholder: DateValue) => DateValue) | - |
step | `"month" \ | "year"` |
DatePickerAnchor
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
element | Measurable | - |
DatePickerArrow
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
height | number | - |
width | number | - |
DatePickerClose
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Date Range Field
Date range input (alpha)
Parts: DateRangeFieldRoot, DateRangeFieldInput
DateRangeFieldRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultPlaceholder | DateValue | - |
defaultValue | DateRange | - |
dir | `"ltr" \ | "rtl"` |
disabled | boolean | false |
granularity | `"day" \ | "hour" \ |
hideTimeZone | boolean | - |
hourCycle | `12 \ | 24` |
id | string | - |
isDateUnavailable | Matcher | - |
locale | string | "en" |
maxValue | DateValue | - |
minValue | DateValue | - |
modelValue | DateRange | - |
name | string | - |
placeholder | DateValue | - |
readonly | boolean | false |
required | boolean | - |
Emits
| Event | Payload |
|---|---|
update:modelValue | [DateRange] |
update:placeholder | [date: DateValue] |
Slots
| Slot | Type |
|---|---|
modelValue | DateRange |
segments | { start: { part: SegmentPart; value: string; }[... |
DateRangeFieldInput
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
part* | `"day" \ | "month" \ |
type* | `"start" \ | "end"` |
Date Range Picker
Date range picker (alpha)
Parts: DateRangePickerRoot, DateRangePickerField, DateRangePickerInput, DateRangePickerTrigger, DateRangePickerContent, DateRangePickerCalendar, DateRangePickerHeader, DateRangePickerHeading, DateRangePickerGrid, DateRangePickerCell, DateRangePickerCellTrigger, DateRangePickerNext, DateRangePickerPrev
DateRangePickerRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultOpen | boolean | false |
defaultPlaceholder | DateValue | - |
defaultValue | DateRange | { start: undefined, end: undefined } |
dir | `"ltr" \ | "rtl"` |
disabled | boolean | false |
fixedWeeks | boolean | false |
granularity | `"day" \ | "hour" \ |
hideTimeZone | boolean | - |
hourCycle | `12 \ | 24` |
id | string | - |
isDateDisabled | Matcher | - |
isDateUnavailable | Matcher | - |
locale | string | "en" |
maxValue | DateValue | - |
minValue | DateValue | - |
modal | boolean | false |
modelValue | DateRange | - |
name | string | - |
numberOfMonths | number | 1 |
open | boolean | - |
pagedNavigation | boolean | false |
placeholder | DateValue | - |
preventDeselect | boolean | false |
readonly | boolean | false |
required | boolean | - |
weekdayFormat | `"narrow" \ | "short" \ |
weekStartsOn | `0 \ | 1 \ |
Emits
| Event | Payload |
|---|---|
update:modelValue | [date: DateRange] |
update:open | [value: boolean] |
update:placeholder | [date: DateValue] |
update:startValue | [date: DateValue] |
DateRangePickerField
Slots
| Slot | Type |
|---|---|
segments | { start: { part: SegmentPart; value: string; }[... |
modelValue | DateRange |
DateRangePickerInput
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
part* | `"day" \ | "month" \ |
type* | `"start" \ | "end"` |
DateRangePickerTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
DateRangePickerContent
Props
| Prop | Type | Default |
|---|---|---|
align | `"start" \ | "center" \ |
alignOffset | number | - |
arrowPadding | number | - |
as | `AsTag \ | Component` |
asChild | boolean | - |
avoidCollisions | boolean | - |
collisionBoundary | `Element \ | (Element \ |
collisionPadding | `number \ | Partial<Record<"top" \ |
disableOutsidePointerEvents | boolean | - |
forceMount | boolean | - |
hideWhenDetached | boolean | - |
prioritizePosition | boolean | - |
side | `"top" \ | "right" \ |
sideOffset | number | - |
sticky | `"partial" \ | "always"` |
trapFocus | boolean | - |
updatePositionStrategy | `"always" \ | "optimized"` |
Emits
| Event | Payload |
|---|---|
closeAutoFocus | [event: Event] |
escapeKeyDown | [event: KeyboardEvent] |
focusOutside | [event: FocusOutsideEvent] |
interactOutside | `[event: PointerDownOutsideEvent \ |
openAutoFocus | [event: Event] |
pointerDownOutside | [event: PointerDownOutsideEvent] |
DateRangePickerCalendar
Slots
| Slot | Type |
|---|---|
date | DateValue |
grid | Grid<DateValue>[] |
weekDays | string[] |
weekStartsOn | `0 \ |
locale | string |
fixedWeeks | boolean |
DateRangePickerHeader
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
DateRangePickerHeading
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Slots
| Slot | Type |
|---|---|
headingValue | string |
DateRangePickerGrid
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
DateRangePickerCell
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
date* | DateValue | - |
DateRangePickerCellTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
day* | DateValue | - |
month* | DateValue | - |
DateRangePickerNext
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
nextPage | ((placeholder: DateValue) => DateValue) | - |
step | `"month" \ | "year"` |
DateRangePickerPrev
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
prevPage | ((placeholder: DateValue) => DateValue) | - |
step | `"month" \ | "year"` |
Dialog
Modal dialog
Parts: DialogRoot, DialogTrigger, DialogPortal, DialogOverlay, DialogContent, DialogTitle, DialogDescription, DialogClose
DialogRoot
Props
| Prop | Type | Default |
|---|---|---|
defaultOpen | boolean | false |
modal | boolean | true |
open | boolean | - |
Emits
| Event | Payload |
|---|---|
update:open | [value: boolean] |
Slots
| Slot | Type |
|---|---|
open | boolean |
DialogTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
DialogPortal
Props
| Prop | Type | Default |
|---|---|---|
disabled | boolean | - |
forceMount | boolean | - |
to | `string \ | HTMLElement` |
DialogOverlay
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
forceMount | boolean | - |
DialogContent
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disableOutsidePointerEvents | boolean | - |
forceMount | boolean | - |
trapFocus | boolean | - |
Emits
| Event | Payload |
|---|---|
closeAutoFocus | [event: Event] |
escapeKeyDown | [event: KeyboardEvent] |
focusOutside | [event: FocusOutsideEvent] |
interactOutside | `[event: PointerDownOutsideEvent \ |
openAutoFocus | [event: Event] |
pointerDownOutside | [event: PointerDownOutsideEvent] |
DialogTitle
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
DialogDescription
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
DialogClose
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Dropdown Menu
Dropdown action menu
Parts: DropdownMenuRoot, DropdownMenuTrigger, DropdownMenuPortal, DropdownMenuContent, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuItemIndicator, DropdownMenuLabel, DropdownMenuGroup, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, DropdownMenuArrow
DropdownMenuRoot
Props
| Prop | Type | Default |
|---|---|---|
defaultOpen | boolean | - |
dir | `"ltr" \ | "rtl"` |
modal | boolean | true |
open | boolean | - |
Emits
| Event | Payload |
|---|---|
update:open | [payload: boolean] |
Slots
| Slot | Type |
|---|---|
open | boolean |
DropdownMenuTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
DropdownMenuPortal
Props
| Prop | Type | Default |
|---|---|---|
disabled | boolean | - |
forceMount | boolean | - |
to | `string \ | HTMLElement` |
DropdownMenuContent
Props
| Prop | Type | Default |
|---|---|---|
align | `"start" \ | "center" \ |
alignOffset | number | - |
arrowPadding | number | - |
as | `AsTag \ | Component` |
asChild | boolean | - |
avoidCollisions | boolean | - |
collisionBoundary | `Element \ | (Element \ |
collisionPadding | `number \ | Partial<Record<"top" \ |
forceMount | boolean | - |
hideWhenDetached | boolean | - |
loop | boolean | - |
prioritizePosition | boolean | - |
side | `"top" \ | "right" \ |
sideOffset | number | - |
sticky | `"partial" \ | "always"` |
updatePositionStrategy | `"always" \ | "optimized"` |
Emits
| Event | Payload |
|---|---|
closeAutoFocus | [event: Event] |
escapeKeyDown | [event: KeyboardEvent] |
focusOutside | [event: FocusOutsideEvent] |
interactOutside | `[event: PointerDownOutsideEvent \ |
pointerDownOutside | [event: PointerDownOutsideEvent] |
DropdownMenuItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
textValue | string | - |
Emits
| Event | Payload |
|---|---|
select | [event: Event] |
DropdownMenuCheckboxItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
checked | `false \ | true \ |
disabled | boolean | - |
textValue | string | - |
Emits
| Event | Payload |
|---|---|
select | [event: Event] |
update:checked | [payload: boolean] |
DropdownMenuRadioGroup
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
modelValue | string | - |
Emits
| Event | Payload |
|---|---|
update:modelValue | [payload: string] |
DropdownMenuRadioItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
textValue | string | - |
value* | string | - |
Emits
| Event | Payload |
|---|---|
select | [event: Event] |
DropdownMenuItemIndicator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
forceMount | boolean | - |
DropdownMenuLabel
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
DropdownMenuGroup
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
DropdownMenuSeparator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
DropdownMenuSub
Props
| Prop | Type | Default |
|---|---|---|
defaultOpen | boolean | - |
open | boolean | - |
Emits
| Event | Payload |
|---|---|
update:open | [payload: boolean] |
Slots
| Slot | Type |
|---|---|
open | boolean |
DropdownMenuSubTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
textValue | string | - |
DropdownMenuSubContent
Props
| Prop | Type | Default |
|---|---|---|
alignOffset | number | - |
arrowPadding | number | - |
as | `AsTag \ | Component` |
asChild | boolean | - |
avoidCollisions | boolean | - |
collisionBoundary | `Element \ | (Element \ |
collisionPadding | `number \ | Partial<Record<"top" \ |
forceMount | boolean | - |
hideWhenDetached | boolean | - |
loop | boolean | - |
prioritizePosition | boolean | - |
sideOffset | number | - |
sticky | `"partial" \ | "always"` |
updatePositionStrategy | `"always" \ | "optimized"` |
Emits
| Event | Payload |
|---|---|
closeAutoFocus | [event: Event] |
entryFocus | [event: Event] |
escapeKeyDown | [event: KeyboardEvent] |
focusOutside | [event: FocusOutsideEvent] |
interactOutside | `[event: PointerDownOutsideEvent \ |
openAutoFocus | [event: Event] |
pointerDownOutside | [event: PointerDownOutsideEvent] |
DropdownMenuArrow
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
height | number | 5 |
width | number | 10 |
Editable
Inline text editing with preview/edit modes
Parts: EditableRoot, EditableArea, EditableInput, EditablePreview, EditableSubmitTrigger, EditableCancelTrigger, EditableEditTrigger
EditableRoot
Props
| Prop | Type | Default |
|---|---|---|
activationMode | `"dblclick" \ | "focus" \ |
as | `AsTag \ | Component` |
asChild | boolean | - |
autoResize | boolean | false |
defaultValue | string | - |
dir | `"ltr" \ | "rtl"` |
disabled | boolean | false |
id | string | - |
maxLength | number | - |
modelValue | string | - |
name | string | - |
placeholder | `string \ | { edit: string; preview: string; }` |
readonly | boolean | - |
required | boolean | false |
selectOnFocus | boolean | false |
startWithEditMode | boolean | - |
submitMode | `"blur" \ | "none" \ |
Emits
| Event | Payload |
|---|---|
submit | [value: string] |
update:modelValue | [value: string] |
update:state | `[state: "cancel" \ |
Slots
| Slot | Type |
|---|---|
isEditing | boolean |
modelValue | `string \ |
isEmpty | boolean |
submit | `` |
cancel | `` |
edit | `` |
EditableArea
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
EditableInput
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
EditablePreview
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
EditableSubmitTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
EditableCancelTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
EditableEditTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Focus Scope
Focus trap container
Parts: FocusScope
FocusScope
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
loop | boolean | false |
trapped | boolean | false |
Emits
| Event | Payload |
|---|---|
mountAutoFocus | [event: Event] |
unmountAutoFocus | [event: Event] |
Hover Card
Card shown on hover
Parts: HoverCardRoot, HoverCardTrigger, HoverCardPortal, HoverCardContent, HoverCardArrow
HoverCardRoot
Props
| Prop | Type | Default |
|---|---|---|
closeDelay | number | 300 |
defaultOpen | false | false |
open | boolean | - |
openDelay | number | 700 |
Emits
| Event | Payload |
|---|---|
update:open | [value: boolean] |
Slots
| Slot | Type |
|---|---|
open | boolean |
HoverCardTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
HoverCardPortal
Props
| Prop | Type | Default |
|---|---|---|
disabled | boolean | - |
forceMount | boolean | - |
to | `string \ | HTMLElement` |
HoverCardContent
Props
| Prop | Type | Default |
|---|---|---|
align | `"start" \ | "center" \ |
alignOffset | number | - |
arrowPadding | number | - |
as | `AsTag \ | Component` |
asChild | boolean | - |
avoidCollisions | boolean | - |
collisionBoundary | `Element \ | (Element \ |
collisionPadding | `number \ | Partial<Record<"top" \ |
forceMount | boolean | - |
hideWhenDetached | boolean | - |
prioritizePosition | boolean | - |
side | `"top" \ | "right" \ |
sideOffset | number | - |
sticky | `"partial" \ | "always"` |
updatePositionStrategy | `"always" \ | "optimized"` |
Emits
| Event | Payload |
|---|---|
escapeKeyDown | [event: KeyboardEvent] |
focusOutside | [event: FocusOutsideEvent] |
interactOutside | `[event: PointerDownOutsideEvent \ |
pointerDownOutside | [event: PointerDownOutsideEvent] |
HoverCardArrow
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
height | number | 5 |
width | number | 10 |
Label
Accessible form label
Parts: Label
Label
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
for | string | - |
Listbox
Accessible list selection
Parts: ListboxRoot, ListboxContent, ListboxFilter, ListboxItem, ListboxItemIndicator, ListboxGroup, ListboxGroupLabel, ListboxVirtualizer
ListboxRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
by | `string \ | ((a: AcceptableValue, b: AcceptableVal...` |
defaultValue | `AcceptableValue \ | AcceptableValue[]` |
dir | `"ltr" \ | "rtl"` |
disabled | boolean | - |
highlightOnHover | boolean | - |
modelValue | `AcceptableValue \ | AcceptableValue[]` |
multiple | boolean | - |
name | string | - |
orientation | `"vertical" \ | "horizontal"` |
selectionBehavior | `"toggle" \ | "replace"` |
Emits
| Event | Payload |
|---|---|
entryFocus | [event: CustomEvent<any>] |
highlight | [payload: { ref: HTMLElement; value: Acceptable... |
leave | [event: Event] |
update:modelValue | [value: AcceptableValue] |
Slots
| Slot | Type |
|---|---|
modelValue | `AcceptableValue \ |
ListboxContent
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
ListboxFilter
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
autoFocus | boolean | - |
modelValue | string | - |
Emits
| Event | Payload |
|---|---|
update:modelValue | [string] |
Slots
| Slot | Type |
|---|---|
modelValue | `string \ |
ListboxItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
value* | AcceptableValue | - |
Emits
| Event | Payload |
|---|---|
select | [event: SelectEvent<AcceptableValue>] |
ListboxItemIndicator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
ListboxGroup
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
ListboxGroupLabel
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
for | string | - |
ListboxVirtualizer
Props
| Prop | Type | Default |
|---|---|---|
estimateSize | number | - |
options* | AcceptableValue[] | - |
textContent | ((option: AcceptableValue) => string) | - |
Slots
| Slot | Type |
|---|---|
option | `string \ |
virtualizer | `Virtualizer<Element \ |
virtualItem | VirtualItem<Element> |
Menubar
Horizontal menu bar
Parts: MenubarRoot, MenubarMenu, MenubarTrigger, MenubarPortal, MenubarContent, MenubarItem, MenubarCheckboxItem, MenubarRadioGroup, MenubarRadioItem, MenubarItemIndicator, MenubarLabel, MenubarGroup, MenubarSeparator, MenubarSub, MenubarSubTrigger, MenubarSubContent, MenubarArrow
MenubarRoot
Props
| Prop | Type | Default |
|---|---|---|
defaultValue | string | - |
dir | `"ltr" \ | "rtl"` |
loop | boolean | false |
modelValue | string | - |
Emits
| Event | Payload |
|---|---|
update:modelValue | [value: boolean] |
Slots
| Slot | Type |
|---|---|
modelValue | string |
MenubarMenu
Props
| Prop | Type | Default |
|---|---|---|
value | string | - |
MenubarTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
MenubarPortal
Props
| Prop | Type | Default |
|---|---|---|
disabled | boolean | - |
forceMount | boolean | - |
to | `string \ | HTMLElement` |
MenubarContent
Props
| Prop | Type | Default |
|---|---|---|
align | `"start" \ | "center" \ |
alignOffset | number | - |
arrowPadding | number | - |
as | `AsTag \ | Component` |
asChild | boolean | - |
avoidCollisions | boolean | - |
collisionBoundary | `Element \ | (Element \ |
collisionPadding | `number \ | Partial<Record<"top" \ |
forceMount | boolean | - |
hideWhenDetached | boolean | - |
loop | boolean | - |
prioritizePosition | boolean | - |
side | `"top" \ | "right" \ |
sideOffset | number | - |
sticky | `"partial" \ | "always"` |
updatePositionStrategy | `"always" \ | "optimized"` |
Emits
| Event | Payload |
|---|---|
closeAutoFocus | [event: Event] |
escapeKeyDown | [event: KeyboardEvent] |
focusOutside | [event: FocusOutsideEvent] |
interactOutside | `[event: PointerDownOutsideEvent \ |
pointerDownOutside | [event: PointerDownOutsideEvent] |
MenubarItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
textValue | string | - |
Emits
| Event | Payload |
|---|---|
select | [event: Event] |
MenubarCheckboxItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
checked | `false \ | true \ |
disabled | boolean | - |
textValue | string | - |
Emits
| Event | Payload |
|---|---|
select | [event: Event] |
update:checked | [payload: boolean] |
MenubarRadioGroup
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
modelValue | string | - |
Emits
| Event | Payload |
|---|---|
update:modelValue | [payload: string] |
MenubarRadioItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
textValue | string | - |
value* | string | - |
Emits
| Event | Payload |
|---|---|
select | [event: Event] |
MenubarItemIndicator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
forceMount | boolean | - |
MenubarLabel
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
MenubarGroup
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
MenubarSeparator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
MenubarSub
Props
| Prop | Type | Default |
|---|---|---|
defaultOpen | boolean | - |
open | boolean | - |
Emits
| Event | Payload |
|---|---|
update:open | [payload: boolean] |
Slots
| Slot | Type |
|---|---|
open | boolean |
MenubarSubTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
textValue | string | - |
MenubarSubContent
Props
| Prop | Type | Default |
|---|---|---|
alignOffset | number | - |
arrowPadding | number | - |
as | `AsTag \ | Component` |
asChild | boolean | - |
avoidCollisions | boolean | - |
collisionBoundary | `Element \ | (Element \ |
collisionPadding | `number \ | Partial<Record<"top" \ |
forceMount | boolean | - |
hideWhenDetached | boolean | - |
loop | boolean | - |
prioritizePosition | boolean | - |
sideOffset | number | - |
sticky | `"partial" \ | "always"` |
updatePositionStrategy | `"always" \ | "optimized"` |
Emits
| Event | Payload |
|---|---|
closeAutoFocus | [event: Event] |
entryFocus | [event: Event] |
escapeKeyDown | [event: KeyboardEvent] |
focusOutside | [event: FocusOutsideEvent] |
interactOutside | `[event: PointerDownOutsideEvent \ |
openAutoFocus | [event: Event] |
pointerDownOutside | [event: PointerDownOutsideEvent] |
MenubarArrow
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
height | number | 5 |
width | number | 10 |
Navigation Menu
Site navigation menu
Parts: NavigationMenuRoot, NavigationMenuList, NavigationMenuItem, NavigationMenuTrigger, NavigationMenuContent, NavigationMenuLink, NavigationMenuIndicator, NavigationMenuViewport, NavigationMenuSub
NavigationMenuRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultValue | string | - |
delayDuration | number | 200 |
dir | `"ltr" \ | "rtl"` |
disableClickTrigger | boolean | false |
disableHoverTrigger | boolean | false |
modelValue | string | - |
orientation | `"vertical" \ | "horizontal"` |
skipDelayDuration | number | 300 |
Emits
| Event | Payload |
|---|---|
update:modelValue | [value: string] |
Slots
| Slot | Type |
|---|---|
modelValue | string |
NavigationMenuList
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
NavigationMenuItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
value | string | - |
NavigationMenuTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
NavigationMenuContent
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disableOutsidePointerEvents | boolean | - |
forceMount | boolean | - |
Emits
| Event | Payload |
|---|---|
escapeKeyDown | [event: KeyboardEvent] |
focusOutside | [event: FocusOutsideEvent] |
interactOutside | `[event: PointerDownOutsideEvent \ |
pointerDownOutside | [event: PointerDownOutsideEvent] |
NavigationMenuLink
Props
| Prop | Type | Default |
|---|---|---|
active | boolean | - |
as | `AsTag \ | Component` |
asChild | boolean | - |
Emits
| Event | Payload |
|---|---|
select | [payload: CustomEvent<{ originalEvent: Event; }>] |
NavigationMenuIndicator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
forceMount | boolean | - |
NavigationMenuViewport
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
forceMount | boolean | - |
NavigationMenuSub
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultValue | string | - |
modelValue | string | - |
orientation | `"vertical" \ | "horizontal"` |
Emits
| Event | Payload |
|---|---|
update:modelValue | [value: string] |
Slots
| Slot | Type |
|---|---|
modelValue | string |
Number Field
Numeric input with increment/decrement
Parts: NumberFieldRoot, NumberFieldInput, NumberFieldIncrement, NumberFieldDecrement
NumberFieldRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultValue | number | - |
disabled | boolean | - |
formatOptions | NumberFormatOptions | - |
id | string | - |
locale | string | "en-US" |
max | number | - |
min | number | - |
modelValue | number | - |
name | string | - |
required | boolean | - |
step | number | 1 |
Emits
| Event | Payload |
|---|---|
update:modelValue | [val: number] |
Slots
| Slot | Type |
|---|---|
modelValue | number |
textValue | string |
NumberFieldInput
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
NumberFieldIncrement
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
NumberFieldDecrement
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
Pagination
Page navigation
Parts: PaginationRoot, PaginationList, PaginationListItem, PaginationFirst, PaginationPrev, PaginationNext, PaginationLast, PaginationEllipsis
PaginationRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultPage | number | 1 |
disabled | boolean | - |
itemsPerPage | number | 10 |
page | number | - |
showEdges | boolean | false |
siblingCount | number | 2 |
total | number | 0 |
Emits
| Event | Payload |
|---|---|
update:page | [value: number] |
Slots
| Slot | Type |
|---|---|
page | number |
pageCount | number |
PaginationList
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Slots
| Slot | Type |
|---|---|
items | `{ type: "ellipsis"; } \ |
PaginationListItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
value* | number | - |
PaginationFirst
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
PaginationPrev
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
PaginationNext
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
PaginationLast
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
PaginationEllipsis
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Pin Input
Multi-character code entry (OTP)
Parts: PinInputRoot, PinInputInput
PinInputRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultValue | string[] | - |
dir | `"ltr" \ | "rtl"` |
disabled | boolean | - |
id | string | - |
mask | boolean | - |
modelValue | string[] | - |
name | string | - |
otp | boolean | - |
placeholder | string | "" |
required | boolean | - |
type | `"number" \ | "text"` |
Emits
| Event | Payload |
|---|---|
complete | [value: string[]] |
update:modelValue | [value: string[]] |
Slots
| Slot | Type |
|---|---|
modelValue | string[] |
PinInputInput
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
index* | number | - |
Popover
Floating content panel
Parts: PopoverRoot, PopoverTrigger, PopoverPortal, PopoverContent, PopoverArrow, PopoverClose, PopoverAnchor
PopoverRoot
Props
| Prop | Type | Default |
|---|---|---|
defaultOpen | boolean | false |
modal | boolean | false |
open | boolean | - |
Emits
| Event | Payload |
|---|---|
update:open | [value: boolean] |
Slots
| Slot | Type |
|---|---|
open | boolean |
PopoverTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
PopoverPortal
Props
| Prop | Type | Default |
|---|---|---|
disabled | boolean | - |
forceMount | boolean | - |
to | `string \ | HTMLElement` |
PopoverContent
Props
| Prop | Type | Default |
|---|---|---|
align | `"start" \ | "center" \ |
alignOffset | number | - |
arrowPadding | number | - |
as | `AsTag \ | Component` |
asChild | boolean | - |
avoidCollisions | boolean | - |
collisionBoundary | `Element \ | (Element \ |
collisionPadding | `number \ | Partial<Record<"top" \ |
disableOutsidePointerEvents | boolean | - |
forceMount | boolean | - |
hideWhenDetached | boolean | - |
prioritizePosition | boolean | - |
side | `"top" \ | "right" \ |
sideOffset | number | - |
sticky | `"partial" \ | "always"` |
trapFocus | boolean | - |
updatePositionStrategy | `"always" \ | "optimized"` |
Emits
| Event | Payload |
|---|---|
closeAutoFocus | [event: Event] |
escapeKeyDown | [event: KeyboardEvent] |
focusOutside | [event: FocusOutsideEvent] |
interactOutside | `[event: PointerDownOutsideEvent \ |
openAutoFocus | [event: Event] |
pointerDownOutside | [event: PointerDownOutsideEvent] |
PopoverArrow
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
height | number | 5 |
width | number | 10 |
PopoverClose
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
PopoverAnchor
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
element | Measurable | - |
Presence
Animation presence control
Parts: Presence
Primitive
Base element wrapper
Parts: Primitive, Slot
Progress
Progress indicator
Parts: ProgressRoot, ProgressIndicator
ProgressRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
getValueLabel | ((value: number, max: number) => string) | `${Math.round((value / max) * DEFAULT_MAX)}%` |
max | number | DEFAULT_MAX |
modelValue | `number \ | null` |
Emits
| Event | Payload |
|---|---|
update:max | [value: number] |
update:modelValue | [value: string[]] |
Slots
| Slot | Type |
|---|---|
modelValue | `number \ |
ProgressIndicator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Radio Group
Mutually exclusive selection
Parts: RadioGroupRoot, RadioGroupItem, RadioGroupIndicator
RadioGroupRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultValue | string | - |
dir | `"ltr" \ | "rtl"` |
disabled | boolean | false |
loop | boolean | true |
modelValue | string | - |
name | string | - |
orientation | `"vertical" \ | "horizontal"` |
required | boolean | false |
Emits
| Event | Payload |
|---|---|
update:modelValue | [payload: string] |
Slots
| Slot | Type |
|---|---|
modelValue | `string \ |
RadioGroupItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | false |
id | string | - |
name | string | - |
required | boolean | - |
value | string | - |
RadioGroupIndicator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
forceMount | boolean | - |
Range Calendar
Calendar for date ranges (alpha)
Parts: RangeCalendarRoot, RangeCalendarHeader, RangeCalendarHeading, RangeCalendarGrid, RangeCalendarCell, RangeCalendarCellTrigger, RangeCalendarNext, RangeCalendarPrev
RangeCalendarRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
calendarLabel | string | - |
defaultPlaceholder | DateValue | - |
defaultValue | DateRange | { start: undefined, end: undefined } |
dir | `"ltr" \ | "rtl"` |
disabled | boolean | false |
fixedWeeks | boolean | false |
initialFocus | boolean | false |
isDateDisabled | Matcher | - |
isDateUnavailable | Matcher | - |
locale | string | "en" |
maxValue | DateValue | - |
minValue | DateValue | - |
modelValue | DateRange | - |
nextPage | ((placeholder: DateValue) => DateValue) | - |
numberOfMonths | number | 1 |
pagedNavigation | boolean | false |
placeholder | DateValue | - |
preventDeselect | boolean | false |
prevPage | ((placeholder: DateValue) => DateValue) | - |
readonly | boolean | false |
weekdayFormat | `"narrow" \ | "short" \ |
weekStartsOn | `0 \ | 1 \ |
Emits
| Event | Payload |
|---|---|
update:modelValue | [date: DateRange] |
update:placeholder | [date: DateValue] |
update:startValue | [date: DateValue] |
Slots
| Slot | Type |
|---|---|
date | DateValue |
grid | Grid<DateValue>[] |
weekDays | string[] |
weekStartsOn | `0 \ |
locale | string |
fixedWeeks | boolean |
RangeCalendarHeader
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
RangeCalendarHeading
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Slots
| Slot | Type |
|---|---|
headingValue | string |
RangeCalendarGrid
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
RangeCalendarCell
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
date* | DateValue | - |
RangeCalendarCellTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
day* | DateValue | - |
month* | DateValue | - |
Slots
| Slot | Type |
|---|---|
dayValue | string |
RangeCalendarNext
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
nextPage | ((placeholder: DateValue) => DateValue) | - |
step | `"month" \ | "year"` |
RangeCalendarPrev
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
prevPage | ((placeholder: DateValue) => DateValue) | - |
step | `"month" \ | "year"` |
Rating
Star rating input (v2.8.0)
Parts: RatingRoot, RatingItem, RatingItemIndicator
RatingRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultValue | number | - |
modelValue | number | - |
length | number | 5 |
step | `1 \ | 0.5 \ |
clearable | boolean | - |
hoverable | boolean | - |
disabled | boolean | false |
orientation | `"vertical" \ | "horizontal"` |
Emits
| Event | Payload |
|---|---|
update:modelValue | [payload: number] |
Slots
| Slot | Type |
|---|---|
modelValue | `number \ |
items | number[] |
RatingItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
item | number | required |
Slots
| Slot | Type |
|---|---|
steps | number[] |
RatingItemIndicator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
step | number | required |
CSS Variables
| Variable | Description |
|---|---|
--reka-rating-item-step-width | Width based on step |
--reka-rating-item-step-opacity | Visibility of step |
--reka-rating-item-step-z-index | Z-index stacking order |
Data Attributes
| Attribute | Value |
|---|---|
[data-state] | `"active" \ |
Example
<script setup>
import { RatingRoot, RatingItem, RatingItemIndicator } from 'reka-ui'
const rating = ref(3)
</script>
<template>
<RatingRoot v-model="rating" :length="5">
<template #default="{ items }">
<RatingItem v-for="item in items" :key="item" :item="item">
<template #default="{ steps }">
<RatingItemIndicator v-for="step in steps" :key="step" :step="step">
★
</RatingItemIndicator>
</template>
</RatingItem>
</template>
</RatingRoot>
</template>Scroll Area
Custom scrollbar container
Parts: ScrollAreaRoot, ScrollAreaViewport, ScrollAreaScrollbar, ScrollAreaThumb, ScrollAreaCorner
ScrollAreaRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
dir | `"ltr" \ | "rtl"` |
scrollHideDelay | number | 600 |
type | `"always" \ | "scroll" \ |
ScrollAreaViewport
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
nonce | string | - |
ScrollAreaScrollbar
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
forceMount | boolean | - |
orientation | `"vertical" \ | "horizontal"` |
ScrollAreaThumb
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
ScrollAreaCorner
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Select
Dropdown selection with grouping
Parts: SelectRoot, SelectTrigger, SelectPortal, SelectContent, SelectViewport, SelectItem, SelectItemText, SelectItemIndicator, SelectGroup, SelectLabel, SelectSeparator, SelectArrow, SelectScrollUpButton, SelectScrollDownButton, SelectValue, SelectIcon
SelectRoot
Props
| Prop | Type | Default |
|---|---|---|
autocomplete | string | - |
defaultOpen | boolean | - |
defaultValue | string | "" |
dir | `"ltr" \ | "rtl"` |
disabled | boolean | - |
modelValue | string | - |
name | string | - |
open | boolean | - |
required | boolean | - |
Emits
| Event | Payload |
|---|---|
update:modelValue | [value: string] |
update:open | [value: boolean] |
Slots
| Slot | Type |
|---|---|
modelValue | string |
open | boolean |
SelectTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
SelectPortal
Props
| Prop | Type | Default |
|---|---|---|
disabled | boolean | - |
forceMount | boolean | - |
to | `string \ | HTMLElement` |
SelectContent
Props
| Prop | Type | Default |
|---|---|---|
align | `"start" \ | "center" \ |
alignOffset | number | - |
arrowPadding | number | - |
as | `AsTag \ | Component` |
asChild | boolean | - |
avoidCollisions | boolean | - |
bodyLock | boolean | - |
collisionBoundary | `Element \ | (Element \ |
collisionPadding | `number \ | Partial<Record<"top" \ |
forceMount | boolean | - |
hideWhenDetached | boolean | - |
position | `"popper" \ | "item-aligned"` |
prioritizePosition | boolean | - |
side | `"top" \ | "right" \ |
sideOffset | number | - |
sticky | `"partial" \ | "always"` |
updatePositionStrategy | `"always" \ | "optimized"` |
Emits
| Event | Payload |
|---|---|
closeAutoFocus | [event: Event] |
escapeKeyDown | [event: KeyboardEvent] |
pointerDownOutside | [event: PointerDownOutsideEvent] |
SelectViewport
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
nonce | string | - |
SelectItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
textValue | string | - |
value* | string | - |
SelectItemText
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
SelectItemIndicator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
SelectGroup
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
SelectLabel
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
for | string | - |
SelectSeparator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
SelectArrow
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
height | number | 5 |
width | number | 10 |
SelectScrollUpButton
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
SelectScrollDownButton
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
SelectValue
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
placeholder | string | "" |
SelectIcon
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Separator
Visual divider
Parts: Separator
Separator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
decorative | boolean | - |
orientation | `"vertical" \ | "horizontal"` |
Slider
Range input control
Parts: SliderRoot, SliderTrack, SliderRange, SliderThumb
SliderRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultValue | number[] | [0] |
dir | `"ltr" \ | "rtl"` |
disabled | boolean | false |
inverted | boolean | false |
max | number | 100 |
min | number | 0 |
minStepsBetweenThumbs | number | 0 |
modelValue | number[] | - |
name | string | - |
orientation | `"vertical" \ | "horizontal"` |
step | number | 1 |
Emits
| Event | Payload |
|---|---|
update:modelValue | [payload: number[]] |
valueCommit | [payload: number[]] |
Slots
| Slot | Type |
|---|---|
modelValue | number[] |
SliderTrack
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
SliderRange
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
SliderThumb
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Splitter
Resizable split panels
Parts: SplitterGroup, SplitterPanel, SplitterResizeHandle
SplitterGroup
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
autoSaveId | `string \ | null` |
direction* | `"vertical" \ | "horizontal"` |
id | `string \ | null` |
keyboardResizeBy | `number \ | null` |
storage | PanelGroupStorage | defaultStorage |
Emits
| Event | Payload |
|---|---|
layout | [val: number[]] |
Slots
| Slot | Type |
|---|---|
layout | number[] |
SplitterPanel
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
collapsedSize | number | - |
collapsible | boolean | - |
defaultSize | number | - |
id | string | - |
maxSize | number | - |
minSize | number | - |
order | number | - |
Emits
| Event | Payload |
|---|---|
collapse | [] |
expand | [] |
resize | [size: number, prevSize: number] |
Slots
| Slot | Type |
|---|---|
isCollapsed | boolean |
isExpanded | boolean |
SplitterResizeHandle
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
hitAreaMargins | PointerHitAreaMargins | - |
id | string | - |
tabindex | number | 0 |
Emits
| Event | Payload |
|---|---|
dragging | [isDragging: boolean] |
Stepper
Multi-step progress indicator
Parts: StepperRoot, StepperItem, StepperTrigger, StepperTitle, StepperDescription, StepperIndicator, StepperSeparator
StepperRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultValue | number | 1 |
dir | `"ltr" \ | "rtl"` |
linear | boolean | true |
modelValue | number | - |
orientation | `"vertical" \ | "horizontal"` |
Emits
| Event | Payload |
|---|---|
update:modelValue | [payload: number] |
Slots
| Slot | Type |
|---|---|
modelValue | `number \ |
totalSteps | number |
isNextDisabled | boolean |
isPrevDisabled | boolean |
isFirstStep | boolean |
isLastStep | boolean |
goToStep | `` |
nextStep | `` |
prevStep | `` |
StepperItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
completed | boolean | false |
disabled | boolean | false |
step* | number | - |
Slots
| Slot | Type |
|---|---|
state | `"active" \ |
StepperTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
StepperTitle
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
StepperDescription
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
StepperIndicator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
StepperSeparator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
decorative | boolean | - |
orientation | `"vertical" \ | "horizontal"` |
Switch
Toggle between two states
Parts: SwitchRoot, SwitchThumb
SwitchRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
checked | boolean | - |
defaultChecked | boolean | - |
disabled | boolean | - |
id | string | - |
name | string | - |
required | boolean | - |
value | string | "on" |
Emits
| Event | Payload |
|---|---|
update:checked | [payload: boolean] |
Slots
| Slot | Type |
|---|---|
checked | boolean |
SwitchThumb
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Tabs
Tabbed content panels
Parts: TabsRoot, TabsList, TabsTrigger, TabsContent, TabsIndicator
TabsRoot
Props
| Prop | Type | Default |
|---|---|---|
activationMode | `"automatic" \ | "manual"` |
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultValue | `string \ | number` |
dir | `"ltr" \ | "rtl"` |
modelValue | `string \ | number` |
orientation | `"vertical" \ | "horizontal"` |
Emits
| Event | Payload |
|---|---|
update:modelValue | [payload: StringOrNumber] |
Slots
| Slot | Type |
|---|---|
modelValue | `string \ |
TabsList
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
loop | boolean | true |
TabsTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | false |
value* | `string \ | number` |
TabsContent
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
forceMount | boolean | - |
value* | `string \ | number` |
TabsIndicator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Tags Input
Multiple tag entry and management
Parts: TagsInputRoot, TagsInputInput, TagsInputItem, TagsInputItemText, TagsInputItemDelete, TagsInputClear
TagsInputRoot
Props
| Prop | Type | Default |
|---|---|---|
addOnBlur | boolean | - |
addOnPaste | boolean | - |
addOnTab | boolean | - |
as | `AsTag \ | Component` |
asChild | boolean | - |
convertValue | ((value: string) => AcceptableInputValue) | - |
defaultValue | AcceptableInputValue[] | [] |
delimiter | string | "," |
dir | `"ltr" \ | "rtl"` |
disabled | boolean | - |
displayValue | ((value: AcceptableInputValue) => string) | value.toString() |
duplicate | boolean | - |
id | string | - |
max | number | 0 |
modelValue | AcceptableInputValue[] | - |
name | string | - |
required | boolean | - |
Emits
| Event | Payload |
|---|---|
invalid | [payload: AcceptableInputValue] |
update:modelValue | [payload: AcceptableInputValue[]] |
Slots
| Slot | Type |
|---|---|
modelValue | `string \ |
TagsInputInput
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
autoFocus | boolean | - |
maxLength | number | - |
placeholder | string | - |
TagsInputItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
value* | `string \ | Record<string, any>` |
TagsInputItemText
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
TagsInputItemDelete
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
TagsInputClear
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Time Field
Time input field (alpha)
Parts: TimeFieldRoot, TimeFieldInput
Toast
Temporary notifications
Parts: ToastProvider, ToastRoot, ToastViewport, ToastTitle, ToastDescription, ToastAction, ToastClose, ToastPortal
ToastProvider
Props
| Prop | Type | Default |
|---|---|---|
duration | number | 5000 |
label | string | "Notification" |
swipeDirection | `"right" \ | "left" \ |
swipeThreshold | number | 50 |
ToastRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultOpen | boolean | true |
duration | number | - |
forceMount | boolean | - |
open | boolean | - |
type | `"foreground" \ | "background"` |
Emits
| Event | Payload |
|---|---|
escapeKeyDown | [event: KeyboardEvent] |
pause | [] |
resume | [] |
swipeCancel | [event: SwipeEvent] |
swipeEnd | [event: SwipeEvent] |
swipeMove | [event: SwipeEvent] |
swipeStart | [event: SwipeEvent] |
update:open | [value: boolean] |
Slots
| Slot | Type |
|---|---|
open | boolean |
remaining | number |
duration | number |
ToastViewport
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
hotkey | string[] | ["F8"] |
label | `string \ | ((hotkey: string) => string)` |
ToastTitle
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
ToastDescription
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
ToastAction
Props
| Prop | Type | Default |
|---|---|---|
altText* | string | - |
as | `AsTag \ | Component` |
asChild | boolean | - |
ToastClose
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
ToastPortal
Props
| Prop | Type | Default |
|---|---|---|
disabled | boolean | - |
forceMount | boolean | - |
to | `string \ | HTMLElement` |
Toggle Group
Multiple toggles with group behavior
Parts: ToggleGroupRoot, ToggleGroupItem
ToggleGroupRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultValue | `string \ | string[]` |
dir | `"ltr" \ | "rtl"` |
disabled | boolean | false |
loop | boolean | true |
modelValue | `string \ | string[]` |
orientation | `"vertical" \ | "horizontal"` |
rovingFocus | boolean | true |
type | `"single" \ | "multiple"` |
Emits
| Event | Payload |
|---|---|
update:modelValue | `[payload: string \ |
Slots
| Slot | Type |
|---|---|
modelValue | `string \ |
ToggleGroupItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
value* | string | - |
Toggle
Single state button toggle
Parts: Toggle
Toggle
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultValue | boolean | - |
disabled | boolean | false |
pressed | boolean | - |
Emits
| Event | Payload |
|---|---|
update:pressed | [value: boolean] |
Slots
| Slot | Type |
|---|---|
pressed | boolean |
Toolbar
Toolbar with buttons/toggles
Parts: ToolbarRoot, ToolbarButton, ToolbarLink, ToolbarToggleGroup, ToolbarToggleItem, ToolbarSeparator
ToolbarRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
dir | `"ltr" \ | "rtl"` |
loop | boolean | - |
orientation | `"vertical" \ | "horizontal"` |
ToolbarButton
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
ToolbarLink
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
ToolbarToggleGroup
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultValue | `string \ | string[]` |
dir | `"ltr" \ | "rtl"` |
disabled | boolean | - |
loop | boolean | - |
modelValue | `string \ | string[]` |
orientation | `"vertical" \ | "horizontal"` |
rovingFocus | boolean | - |
type | `"single" \ | "multiple"` |
Emits
| Event | Payload |
|---|---|
update:modelValue | `[payload: string \ |
ToolbarToggleItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
disabled | boolean | - |
value* | string | - |
ToolbarSeparator
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Tooltip
Informational hover tip
Parts: TooltipProvider, TooltipRoot, TooltipTrigger, TooltipPortal, TooltipContent, TooltipArrow
TooltipProvider
Props
| Prop | Type | Default |
|---|---|---|
delayDuration | number | 700 |
disableClosingTrigger | boolean | - |
disabled | boolean | - |
disableHoverableContent | boolean | false |
ignoreNonKeyboardFocus | boolean | false |
skipDelayDuration | number | 300 |
TooltipRoot
Props
| Prop | Type | Default |
|---|---|---|
defaultOpen | boolean | false |
delayDuration | number | - |
disableClosingTrigger | boolean | - |
disabled | boolean | - |
disableHoverableContent | boolean | - |
ignoreNonKeyboardFocus | boolean | - |
open | boolean | - |
Emits
| Event | Payload |
|---|---|
update:open | [value: boolean] |
Slots
| Slot | Type |
|---|---|
open | boolean |
TooltipTrigger
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
TooltipPortal
Props
| Prop | Type | Default |
|---|---|---|
disabled | boolean | - |
forceMount | boolean | - |
to | `string \ | HTMLElement` |
TooltipContent
Props
| Prop | Type | Default |
|---|---|---|
align | `"start" \ | "center" \ |
alignOffset | number | - |
ariaLabel | string | - |
arrowPadding | number | - |
as | `AsTag \ | Component` |
asChild | boolean | - |
avoidCollisions | boolean | - |
collisionBoundary | `Element \ | (Element \ |
collisionPadding | `number \ | Partial<Record<"top" \ |
forceMount | boolean | - |
hideWhenDetached | boolean | - |
side | `"top" \ | "right" \ |
sideOffset | number | - |
sticky | `"partial" \ | "always"` |
Emits
| Event | Payload |
|---|---|
escapeKeyDown | [event: KeyboardEvent] |
pointerDownOutside | [event: Event] |
TooltipArrow
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
height | number | 5 |
width | number | 10 |
Tree
Hierarchical tree view
Parts: TreeRoot, TreeItem, TreeVirtualizer
TreeRoot
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
defaultExpanded | string[] | - |
defaultValue | `Record<string, any> \ | Record<string, any>[]` |
dir | `"ltr" \ | "rtl"` |
disabled | boolean | - |
expanded | string[] | - |
getChildren | ((val: Record<string, any>) => Record<string, a... | val.children |
getKey* | (val: Record<string, any>) => string | - |
items | Record<string, any>[] | - |
modelValue | `Record<string, any> \ | Record<string, any>[]` |
multiple | boolean | - |
propagateSelect | boolean | - |
selectionBehavior | `"toggle" \ | "replace"` |
Emits
| Event | Payload |
|---|---|
update:expanded | [val: string[]] |
update:modelValue | [val: Record<string, any>] |
Slots
| Slot | Type |
|---|---|
flattenItems | FlattenedItem<Record<string, any>>[] |
modelValue | `Record<string, any> \ |
expanded | string[] |
TreeItem
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
level* | number | - |
value* | Record<string, any> | - |
Emits
| Event | Payload |
|---|---|
select | [event: SelectEvent<Record<string, any>>] |
toggle | [event: ToggleEvent<Record<string, any>>] |
Slots
| Slot | Type |
|---|---|
isExpanded | boolean |
isSelected | boolean |
isIndeterminate | `boolean \ |
handleToggle | `` |
handleSelect | `` |
TreeVirtualizer
Props
| Prop | Type | Default |
|---|---|---|
estimateSize | number | - |
textContent | ((item: Record<string, any>) => string) | - |
Slots
| Slot | Type |
|---|---|
item | FlattenedItem<Record<string, any>> |
virtualizer | `Virtualizer<Element \ |
virtualItem | VirtualItem<Element> |
Visually Hidden
Screen reader only content
Parts: VisuallyHidden
VisuallyHidden
Props
| Prop | Type | Default |
|---|---|---|
as | `AsTag \ | Component` |
asChild | boolean | - |
Components
Auto-generated. Run npx tsx skills/reka-ui/scripts/generate-components.ts to update.Form
| Component | Description | File |
|---|---|---|
| checkbox | Selection control with indeterminate state | components/checkbox.md |
| combobox | Searchable dropdown with filtering | components/combobox.md |
| editable | Inline text editing with preview/edit modes | components/editable.md |
| label | Accessible form label | components/label.md |
| listbox | Accessible list selection | components/listbox.md |
| numberField | Numeric input with increment/decrement | components/number-field.md |
| pinInput | Multi-character code entry (OTP) | components/pin-input.md |
| radioGroup | Mutually exclusive selection | components/radio-group.md |
| select | Dropdown selection with grouping | components/select.md |
| slider | Range input control | components/slider.md |
| switch | Toggle between two states | components/switch.md |
| tagsInput | Multiple tag entry and management | components/tags-input.md |
| toggle | Single state button toggle | components/toggle.md |
| toggleGroup | Multiple toggles with group behavior | components/toggle-group.md |
Date
| Component | Description | File |
|---|---|---|
| calendar | Date selection grid (alpha) | components/calendar.md |
| dateField | Date input field (alpha) | components/date-field.md |
| datePicker | Date picker with calendar (alpha) | components/date-picker.md |
| dateRangeField | Date range input (alpha) | components/date-range-field.md |
| dateRangePicker | Date range picker (alpha) | components/date-range-picker.md |
| rangeCalendar | Calendar for date ranges (alpha) | components/range-calendar.md |
| timeField | Time input field (alpha) | components/time-field.md |
Disclosure
| Component | Description | File |
|---|---|---|
| accordion | Collapsible content sections | components/accordion.md |
| collapsible | Single collapsible panel | components/collapsible.md |
Overlay
| Component | Description | File |
|---|---|---|
| alertDialog | Modal dialog requiring action | components/alert-dialog.md |
| dialog | Modal dialog | components/dialog.md |
| hoverCard | Card shown on hover | components/hover-card.md |
| popover | Floating content panel | components/popover.md |
| tooltip | Informational hover tip | components/tooltip.md |
| toast | Temporary notifications | components/toast.md |
Menu
| Component | Description | File |
|---|---|---|
| contextMenu | Right-click context menu | components/context-menu.md |
| dropdownMenu | Dropdown action menu | components/dropdown-menu.md |
| menubar | Horizontal menu bar | components/menubar.md |
| navigationMenu | Site navigation menu | components/navigation-menu.md |
Data
| Component | Description | File |
|---|---|---|
| avatar | User image with fallback | components/avatar.md |
| pagination | Page navigation | components/pagination.md |
| progress | Progress indicator | components/progress.md |
| rating | Star rating input (v2.8.0) | components/rating.md |
| scrollArea | Custom scrollbar container | components/scroll-area.md |
| separator | Visual divider | components/separator.md |
| splitter | Resizable split panels | components/splitter.md |
| stepper | Multi-step progress indicator | components/stepper.md |
| tabs | Tabbed content panels | components/tabs.md |
| tree | Hierarchical tree view | components/tree.md |
Layout
| Component | Description | File |
|---|---|---|
| aspectRatio | Maintain aspect ratio | components/aspect-ratio.md |
| toolbar | Toolbar with buttons/toggles | components/toolbar.md |
Utility
| Component | Description | File |
|---|---|---|
| configProvider | Global config context | components/config-provider.md |
| focusScope | Focus trap container | components/focus-scope.md |
| presence | Animation presence control | components/presence.md |
| primitive | Base element wrapper | components/primitive.md |
| visuallyHidden | Screen reader only content | components/visually-hidden.md |
Composables
| Composable | Description |
|---|---|
useEmitAsProps | Convert emit functions to props for passing to child components |
useFilter | Filter items based on search query with customizable matching |
useForwardProps | Forward props to child components while filtering out handled ones |
useForwardPropsEmits | Combine useForwardProps and useEmitAsProps |
useForwardExpose | Forward exposed methods/refs from child components |
useId | Generate unique IDs for accessibility attributes |
useDateFormatter | Format dates with locale support |
useDirection | Get/set text direction (ltr/rtl) |
useLocale | Get/set locale for internationalization |
Related skills
FAQ
What does reka-ui do?
Use when building with Reka UI (headless Vue components) - provides component API, accessibility patterns, composition (asChild), controlled/uncontrolled state, virtualization, and styling integration. Formerly Radix Vue
When should I invoke reka-ui?
Use when building with Reka UI (headless Vue components) - provides component API, accessibility patterns, composition (asChild), controlled/uncontrolled state, virtualization, and styling integration. Formerly Radix Vue
Where is the source documentation?
Ground claims in SKILL.md excerpts and linked reference files from the cached docs.
Is Reka Ui safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.