reka-ui_skill

This skill helps you build accessible, headless Vue components with Reka UI by guiding patterns, state management, virtualization, and styling integration.
  • TypeScript

431

GitHub Stars

2

Bundled Files

2 months ago

Catalog Refreshed

4 months ago

First Indexed

Readme & install

Copy the install command, review bundled files from the catalogue, and read any extended description pulled from the listing source.

Installation

Preview and clipboard use veilstrat where the catalogue uses aiagentskills.

npx veilstrat add skill onmax/nuxt-skills --skill reka-ui

  • components.md6.8 KB
  • SKILL.md4.9 KB

Overview

This skill provides focused guidance for building with Reka UI: a headless, WAI-ARIA compliant set of Vue 3 primitives (formerly Radix Vue). It explains component APIs, accessibility patterns, composition via asChild, controlled vs uncontrolled state, virtualization, and styling integration. Use it to implement accessible, unstyled components or to power styled libraries like Nuxt UI or shadcn-vue.

How this skill works

The skill inspects Reka UI primitives and documentation to surface per-component APIs (Root, Trigger, Content, Portal, parts) and recommended patterns such as v-model controlled state versus default* uncontrolled props. It highlights composition helpers (asChild), context injection, forceMount usage, and virtualization options for large lists. Installation and auto-import patterns for Nuxt and Vite are included to speed integration into Vue/Nuxt projects.

When to use it

  • Building headless or unstyled Vue 3 components that must be accessible
  • Implementing dialogs, menus, selects, popovers, lists, or date pickers with WAI-ARIA patterns
  • Integrating Reka-based styled libraries (Nuxt UI, shadcn-vue) or migrating from Radix Vue
  • Optimizing large lists (Combobox, Listbox, Tree) with virtualization
  • Needing fine-grained control over mounting, composition, and context injection

Best practices

  • Prefer v-model for controlled components and default* props for simple uncontrolled usage
  • Use asChild to pass behavior to custom trigger elements while retaining accessibility
  • Split UI into Parts (Root, Trigger, Content, Portal) to keep markup predictable and testable
  • Enable forceMount during animations to avoid mount/unmount layout shifts
  • Use virtualization (estimateSize, function support) for large list performance and combine with keyboard navigation patterns

Example use cases

  • Controlled Dialog pattern with DialogRoot v-model:open and separate Portal/Overlay/Content for accessibility and focus management
  • Uncontrolled Select using default-value and SelectViewport with virtualized items for long option lists
  • Custom trigger button via asChild to attach dialog behavior to bespoke UI without extra wrappers
  • Migrating a Radix Vue codebase to Reka UI while preserving accessibility contracts and updating to new composables (useLocale, useDirection)
  • Adding swipe or press configuration (Toast disableSwipe, ContextMenu pressOpenDelay) to tailor interaction timing

FAQ

Use v-model when parent needs to manage state; use default* props for simpler local state. Controlled gives predictable external sync; uncontrolled reduces boilerplate.

When should I use forceMount?

Enable forceMount when animations require elements to remain in the DOM to animate in/out reliably, or when measurement must occur before showing content.

Built by
VeilStrat
AI signals for GTM teams
© 2026 VeilStrat. All rights reserved.All systems operational