Communitygithub.com

onmax/reka-ui

Use quando estiver construindo com Reka UI (componentes Vue headless) - fornece API de componentes, padrões de acessibilidade, composição (asChild), estado controlado/não controlado, virtualização e integração de estilo. Anteriormente Radix Vue.

O que é reka-ui?

Este skill é especializado no Reka UI, uma biblioteca de componentes Vue headless que oferece componentes acessíveis, estilizáveis e compostos. Ideal para desenvolvedores que constroem interfaces de usuário complexas, o Reka UI fornece API de componentes desacoplada de estilos, suporte a estados controlados e não controlados (como inputs e modais), e padrões de acessibilidade (WAI-ARIA) prontos para uso. O skill abrange a diretiva `asChild` para composição de elementos, virtualização para listas grandes (como `Virtualizer` e `Combobox` com virtualização), e integração com frameworks de estilo como Tailwind CSS e CSS Modules. Anteriormente conhecido como Radix Vue, esta versão mantém compatibilidade com a API do Radix UI para React, mas adaptada para o ecossistema Vue. O skill também documenta como gerenciar estado com `v-model` e `defaultValue`, e como estender componentes com slots e props personalizadas.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/onmax/nuxt-skills/tree/main/skills/reka-ui

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que reka-ui faz?

Use quando estiver construindo com Reka UI (componentes Vue headless) - fornece API de componentes, padrões de acessibilidade, composição (asChild), estado controlado/não controlado, virtualização e integração de estilo. Anteriormente Radix Vue.

Visão Geral

Reka UI é uma biblioteca de componentes de interface de usuário sem estilos (headless) para Vue, focada em acessibilidade, flexibilidade e composição. Ela oferece uma coleção de componentes primitivos e de alto nível que seguem os padrões WAI-ARIA para garantir que suas aplicações sejam acessíveis por padrão. Com Reka UI, você tem controle total sobre a aparência visual, enquanto a lógica de interação e acessibilidade é tratada pela biblioteca.

Principais Conceitos

Componentes Headless

Componentes sem estilos fornecidos prontos para uso. Você aplica seus próprios estilos (Tailwind, CSS Modules, etc.) através de classes ou props.

asChild

A prop asChild permite que um componente Reka UI renderize um elemento filho diferente, mantendo o comportamento e acessibilidade. Exemplo:

<template>
  <RekaDialog.Root>
    <RekaDialog.Trigger asChild>
      <Button>Clique Aqui</Button>
    </RekaDialog.Trigger>
  </RekaDialog.Root>
</template>

Estado Controlado vs. Não Controlado

  • Não Controlado: O componente gerencia seu próprio estado internamente. Use defaultValue.
  • Controlado: O estado é gerenciado por você via v-model ou props value e onValueChange.

Virtualização

Componentes como Virtualizer e Combobox suportam virtualização para lidar com listas grandes de forma eficiente.

Instalação

npm install reka-ui
// ou
yarn add reka-ui
// ou
pnpm add reka-ui

Exemplos de Uso

Diálogo (Modal)

<script setup lang="ts">
import { RekaDialog } from 'reka-ui'
</script>

<template>
  <RekaDialog.Root>
    <RekaDialog.Trigger>Abrir Diálogo</RekaDialog.Trigger>
    <RekaDialog.Portal>
      <RekaDialog.Overlay />
      <RekaDialog.Content>
        <RekaDialog.Title>Título</RekaDialog.Title>
        <RekaDialog.Description>Descrição</RekaDialog.Description>
        <RekaDialog.Close>Fechar</RekaDialog.Close>
      </RekaDialog.Content>
    </RekaDialog.Portal>
  </RekaDialog.Root>
</template>

Dropdown Menu

<script setup lang="ts">
import { RekaDropdownMenu } from 'reka-ui'
</script>

<template>
  <RekaDropdownMenu.Root>
    <RekaDropdownMenu.Trigger>Menu</RekaDropdownMenu.Trigger>
    <RekaDropdownMenu.Content>
      <RekaDropdownMenu.Item>Item 1</RekaDropdownMenu.Item>
      <RekaDropdownMenu.Item>Item 2</RekaDropdownMenu.Item>
    </RekaDropdownMenu.Content>
  </RekaDropdownMenu.Root>
</template>

Referência de Componentes

ComponenteDescrição
AccordionPainéis expansíveis
AlertDialogDiálogo de alerta com foco forçado
AspectRatioMantém proporção de aspecto
AvatarExibe avatar com fallback
CheckboxCaixa de seleção acessível
CollapsibleSeção recolhível
ComboboxInput de seleção com autocomplete
ContextMenuMenu de contexto
DatePickerSeletor de data
DialogModal de diálogo
DropdownMenuMenu suspenso
FormFieldCampo de formulário com validação
HoverCardCard que aparece ao passar o mouse
LabelRótulo acessível
MenubarBarra de menus
NavigationMenuMenu de navegação
PaginationPaginação
PinInputInput de código de pin
PopoverPopover
ProgressBarra de progresso
RadioGroupGrupo de botões de rádio
RangeCalendarCalendário com seleção de intervalo
ScrollAreaÁrea de rolagem personalizada
SelectSeletor
SeparatorSeparador
SliderControle deslizante
SwitchInterruptor
TabsAbas
ToastToast de notificação
ToggleBotão de alternar
ToggleGroupGrupo de botões de alternar
ToolbarBarra de ferramentas
Tooltipdica de ferramenta

Personalização de Estilos

Reka UI não fornece estilos. Você pode usar:

  • Tailwind CSS: Adicione classes diretamente nos componentes.
  • CSS Modules: Importe arquivos .module.css e use classes locais.
  • Styled Components (via Vue): Use bibliotecas como vue-styled-components ou @emotion/vue.
  • CSS Global: Defina estilos globais com seletores (ex.: .reka-dialog-content).

Recursos Adicionais


Nota: Reka UI é uma renomeação do projeto originalmente chamado Radix Vue, mantendo a mesma API e filosofia.

Individual skills in this repo

This repo contains 15 individual skills — each has its own dedicated page.

onmax/document-writer

Use when writing blog posts or documentation markdown files - provides writing style guide (active voice, present tense), content structure patterns, and MDC component usage. Overrides brevity rules for proper grammar. Use nuxt-content for MDC syntax, nuxt-ui for component props.

onmax/motion

Use when adding animations with Motion Vue (motion-v) - provides motion component API, gesture animations, scroll-linked effects, layout transitions, and composables for Vue 3/Nuxt

onmax/nuxt

Use when working on Nuxt 4+ projects - provides server routes, file-based routing, middleware patterns, Nuxt-specific composables, and configuration with latest docs. Covers h3 v1 helpers (validation, WebSocket, SSE) and nitropack v2 patterns. Updated for Nuxt 4.3+.

onmax/nuxt-better-auth

Use when implementing auth in Nuxt apps with @onmax/nuxt-better-auth - provides useUserSession composable, server auth helpers, route protection, and Better Auth plugins integration.

onmax/nuxt-content

Use when working with Nuxt Content v3, markdown content, or CMS features in Nuxt - provides collections (local/remote/API sources), queryCollection API, MDC rendering, database configuration, NuxtStudio integration, hooks, i18n patterns, and LLMs integration

onmax/nuxthub

Use when building NuxtHub v0.10.6 applications - provides database (Drizzle ORM with sqlite/postgresql/mysql), KV storage, blob storage, and cache APIs. Covers configuration, schema definition, migrations, multi-cloud deployment (Cloudflare, Vercel), and the new hub:db, hub:kv, hub:blob virtual module imports.

onmax/nuxt-modules

Use when creating Nuxt modules: (1) Published npm modules (@nuxtjs/, nuxt-), (2) Local project modules (modules/ directory), (3) Runtime extensions (components, composables, plugins), (4) Server extensions (API routes, middleware), (5) Releasing/publishing modules to npm, (6) Setting up CI/CD workflows for modules. Provides defineNuxtModule patterns, Kit utilities, hooks, E2E testing, and release automation.

onmax/nuxt-seo

Nuxt SEO meta-module with robots, sitemap, og-image, schema-org. Use when configuring SEO, generating sitemaps, creating OG images, or adding structured data.

onmax/nuxt-ui

Use when building styled UI with @nuxt/ui v4 components - create forms with validation, implement data tables with sorting, build modal dialogs and overlays, configure Tailwind Variants theming. Use vue skill for raw component patterns, reka-ui for headless primitives.

onmax/pnpm

Use when managing Node.js dependencies with pnpm - install packages, configure monorepo workspaces, set up pnpm catalogs, resolve dependency conflicts with overrides, patch third-party packages, and configure CI pipelines for pnpm projects

onmax/ts-library

Use when authoring TypeScript libraries or npm packages - covers project setup, package.json exports, build tooling (tsdown/unbuild), API design patterns, type inference tricks, testing, and publishing to npm. Use when bundling, configuring dual CJS/ESM output, or setting up release workflows.

onmax/vite

Vite build tool configuration, plugin API, SSR, and Vite 8 Rolldown migration. Use when working with Vite projects, vite.config.ts, Vite plugins, or building libraries/SSR apps with Vite.

onmax/vitest

Use when writing unit/integration tests for Vite projects - configure vitest.config.ts, write test suites with describe/it, create mock implementations with vi.fn and vi.mock, set up code coverage thresholds, and run tests in parallel

onmax/vue

Use when editing .vue files, creating Vue 3 components, writing composables, or testing Vue code - provides Composition API patterns, props/emits best practices, VueUse integration, and reactive destructuring guidance

onmax/vueuse

Use when working with VueUse composables - track mouse position with useMouse, manage localStorage with useStorage, detect network status with useNetwork, debounce values with refDebounced, and access browser APIs reactively. Check VueUse before writing custom composables - most patterns already implemented.

Habilidades Relacionadas