reka-ui

Reka UI component library reference for Vue 3. Use this when building accessible, unstyled UI components with Reka UI primitives.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "reka-ui" with this command: npx skills add pzyyll/ai-agents/pzyyll-ai-agents-reka-ui

Reka UI

Reka UI is an open-source Vue 3 component library providing unstyled, accessible primitive components. Built on WAI-ARIA standards with full keyboard navigation and focus management.

When to use this skill

Use this skill when:

  • Building Vue 3 UI components with Reka UI primitives
  • Need reference for Reka UI component APIs (props, events, slots)
  • Implementing accessible UI patterns (dialogs, menus, selects, etc.)
  • Working with date/time components using @internationalized/date
  • Composing custom components with asChild prop
  • Styling Reka UI components with Tailwind CSS or custom CSS
  • Wrapping Reka UI primitives with forwarded props/emits
  • Migrating from Radix Vue to Reka UI

Installation

install guide

npm add reka-ui

Nuxt Module

export default defineNuxtConfig({
  modules: ['reka-ui/nuxt'],
})

unplugin-vue-components

import Components from 'unplugin-vue-components/vite'
import RekaResolver from 'reka-ui/resolver'

export default defineConfig({
  plugins: [
    vue(),
    Components({
      dts: true,
      resolvers: [RekaResolver()],
    }),
  ],
})

Date Components Prerequisite

Date and time components require @internationalized/date:

npm add @internationalized/date

Usage Rules

  1. Reka UI components are unstyled - you control all styling (CSS, Tailwind, etc.)
  2. Import components individually: import { DialogRoot, DialogContent } from 'reka-ui'
  3. Components follow a compound pattern: Root > Trigger > Content (with sub-parts)
  4. Use v-model for controlled state, defaultValue for uncontrolled
  5. Use the asChild prop to compose primitives onto your own elements
  6. Stateful components expose data-state attributes for CSS targeting
  7. Use forceMount prop when animating with JS animation libraries
  8. Wrap app in ConfigProvider for global RTL/locale/scroll settings
  9. Use TooltipProvider and ToastProvider at app root level
  10. Date components use DateValue objects from @internationalized/date, not native Date

Key Concepts

Composition with asChild

Merge primitive behavior onto your own elements:

<DialogTrigger asChild>
  <MyButton>Open</MyButton>
</DialogTrigger>

Data Attributes for Styling

.AccordionContent[data-state="open"] {
  animation: slideDown 300ms ease-out;
}
.AccordionContent[data-state="closed"] {
  animation: slideUp 300ms ease-out;
}

CSS Variables for Animation

Some components expose sizing CSS variables:

  • --reka-accordion-content-width / --reka-accordion-content-height
  • --reka-collapsible-content-width / --reka-collapsible-content-height

Controlled vs Uncontrolled

<!-- Uncontrolled -->
<AccordionRoot defaultValue="item-1">

<!-- Controlled -->
<AccordionRoot v-model="activeItem">

Animation with Vue Transition

<DialogContent forceMount>
  <Transition name="fade">
    <div v-if="open">Content</div>
  </Transition>
</DialogContent>

Component Index

Load component docs on-demand from components/ folder.

Form Components

ComponentFileDescription
Autocompleteautocomplete.mdInput with suggestions, value is text itself
Checkboxcheckbox.mdToggle between checked and unchecked
Comboboxcombobox.mdSearchable select with keyboard support
Editableeditable.mdInline editable text
Labellabel.mdAccessible label for controls
Listboxlistbox.mdSelectable list of items
Number Fieldnumber-field.mdNumeric input with increment/decrement
Pin Inputpin-input.mdSequence of one-character inputs
Radio Groupradio-group.mdSingle selection from a group
Selectselect.mdDropdown selection list
Sliderslider.mdRange input with draggable thumb
Switchswitch.mdToggle between on and off
Tags Inputtags-input.mdInput for multiple tag values
Toggletoggle.mdTwo-state on/off button
Toggle Grouptoggle-group.mdSet of toggle buttons

Color Components

ComponentFileDescription
Color Areacolor-area.md2D area for color selection
Color Fieldcolor-field.mdInput for color values
Color Slidercolor-slider.mdSlider for color channels
Color Swatchcolor-swatch.mdColor preview display
Color Swatch Pickercolor-swatch-picker.mdPicker with color swatches

Date & Time Components

ComponentFileDescription
Calendarcalendar.mdDate calendar view
Date Fielddate-field.mdSegmented date input
Date Pickerdate-picker.mdDate input with calendar popup
Date Range Fielddate-range-field.mdSegmented date range input
Date Range Pickerdate-range-picker.mdDate range with calendar popup
Range Calendarrange-calendar.mdCalendar for date ranges
Time Fieldtime-field.mdSegmented time input
Time Range Fieldtime-range-field.mdSegmented time range input
Month Pickermonth-picker.mdCalendar for month selection
Month Range Pickermonth-range-picker.mdCalendar for month ranges
Year Pickeryear-picker.mdCalendar for year selection
Year Range Pickeryear-range-picker.mdCalendar for year ranges

General Components

ComponentFileDescription
Accordionaccordion.mdExpandable/collapsible content sections
Alert Dialogalert-dialog.mdModal dialog requiring a response
Aspect Ratioaspect-ratio.mdContent within a desired ratio
Avataravatar.mdImage with fallback for user display
Collapsiblecollapsible.mdExpandable/collapsible panel
Context Menucontext-menu.mdRight-click menu
Dialogdialog.mdModal window overlay
Dropdown Menudropdown-menu.mdMenu triggered by a button
Hover Cardhover-card.mdContent preview on hover
Menubarmenubar.mdHorizontal menu bar
Navigation Menunavigation-menu.mdSite navigation links
Paginationpagination.mdPage navigation controls
Popoverpopover.mdContent popup triggered by button
Progressprogress.mdProgress indicator bar
Scroll Areascroll-area.mdCustom cross-browser scroll
Separatorseparator.mdVisual/semantic content divider
Splittersplitter.mdResizable panel layout
Stepperstepper.mdMulti-step process indicator
Tabstabs.mdTabbed content panels
Toasttoast.mdTemporary notification messages
Toolbartoolbar.mdGrouped controls container
Tooltiptooltip.mdHover/focus information popup
Treetree.mdHierarchical expandable list

Guides Index

Load guide docs on-demand from guides/ folder.

GuideFileDescription
Introductionintroduction.mdOverview of Reka UI
Getting Startedgetting-started.mdQuick start tutorial
Installationinstallation.mdInstallation methods
Accessibilityaccessibility.mdWAI-ARIA compliance details
Stylingstyling.mdCSS, Tailwind, and data attributes
Animationanimation.mdCSS, Vue Transition, and Motion Vue
Compositioncomposition.mdasChild prop and component composition
Controlled Statecontrolled-state.mdv-model vs defaultValue patterns
Datesdates.mdWorking with @internationalized/date
I18ni18n.mdRTL and internationalization
SSRserver-side-rendering.mdServer-side rendering
Virtualizationvirtualization.mdLarge dataset rendering
Namespacednamespaced-components.mdNamespaced component imports
Inject Contextinject-context.mdContext injection patterns
Migrationmigration.mdMigrating from Radix Vue
Releasesreleases.mdRelease information

Utilities Index

Load utility docs on-demand from utilities/ folder.

Components

UtilityFileDescription
ConfigProviderconfig-provider.mdGlobal config (locale, dir, scroll)
FocusScopefocus-scope.mdFocus trapping
Presencepresence.mdMount/unmount with transitions
Primitiveprimitive.mdBase primitive component
RovingFocusroving-focus.mdRoving tabindex focus management
Slotslot.mdProp merging onto child
VisuallyHiddenvisually-hidden.mdScreen-reader-only content

Composables

ComposableFileDescription
useIduse-id.mdGenerate unique IDs (deprecated: use Vue 3.5+)
useDateFormatteruse-date-formatter.mdLocale-aware date formatting
useDirectionuse-direction.mdAccess current text direction
useLocaleuse-locale.mdAccess current locale
useEmitAsPropsuse-emit-as-props.mdConvert emits to prop handlers
useFilteruse-filter.mdLocale-aware string filtering
useForwardExposeuse-forward-expose.mdForward template ref $el
useForwardPropsuse-forward-props.mdForward props without boolean casting
useForwardPropsEmitsuse-forward-props-emits.mdCombined props + emits forwarding

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

daisyui

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

ai-agents

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

commercial-proposal-writer

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

project-planning

No summary provided by upstream source.

Repository SourceNeeds Review