reka-ui
Reka UI(ヘッドレスVueコンポーネント)を使った開発時に活用するスキルで、コンポーネントAPI、アクセシビリティパターン、コンポジション(asChild)、制御/非制御ステート、仮想化、スタイリング統合に関する情報を提供します。旧称はRadix Vueです。
description の原文を見る
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.
SKILL.md 本文
Reka UI
スタイルなし、アクセシブルな Vue 3 コンポーネントプリミティブ。WAI-ARIA 準拠。以前は Radix Vue として知られていました。
現在のバージョン: v2.8.0(2026年1月)
使用する場合
- ゼロから headless/unstyled コンポーネントを構築する場合
- WAI-ARIA 準拠のコンポーネントが必要な場合
- Nuxt UI、shadcn-vue、または Reka ベースの他のライブラリを使用している場合
- アクセシブルなフォーム、ダイアログ、メニュー、ポップオーバーを実装する場合
Vue パターンについては: vue スキルを使用してください
利用可能なガイダンス
| ファイル | トピック |
|---|---|
references/components.md | カテゴリ別コンポーネントインデックス(Form、Date、Overlay、Menu、Data など) |
| components/*.md | コンポーネント別の詳細情報(dialog.md、select.md など) |
ガイド (reka-ui.com を参照):スタイリング、アニメーション、コンポジション、SSR、Namespaced、日付、i18n、制御状態、Inject Context、仮想化、マイグレーション
ファイルの読み込み
タスクに基づいて以下の参考ファイルの読み込みを検討してください:
-
references/components.md- コンポーネントインデックスをカテゴリ別に閲覧したり、特定のコンポーネントを検索する場合
一度にすべてのファイルを読み込まないでください。 現在のタスクに関連するファイルのみを読み込んでください。
Reka UI 上に構築されたスタイル付き Nuxt コンポーネントについては: nuxt-ui スキルを使用してください
主要な概念
| 概念 | 説明 |
|---|---|
asChild | ラッパーの代わりに子要素としてレンダリング、props/動作をマージ |
| Controlled/Uncontrolled | 制御状態は v-model を使用、非制御状態は default* props を使用 |
| Parts | コンポーネントを Root、Trigger、Content、Portal などに分割 |
forceMount | アニメーションライブラリ用に DOM に要素を保持 |
| Virtualization | 仮想スクロールで大規模リスト(Combobox、Listbox、Tree)を最適化 |
| Context Injection | 子コンポーネントからコンポーネントコンテキストにアクセス |
インストール
// 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()] })
]
})
基本パターン
<!-- 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>
最近の更新(v2.6.0~v2.8.0)
- 新しいコンポーネント: Rating(v2.8.0)
- ScrollArea: 「glimpse」スクロールバーモード追加(v2.8.0)
- PopperContent:
hideShiftedArrowprop 追加(v2.8.0) - TimeField:
stepSnappingサポート追加(v2.8.0) - 破壊的変更:
weekStartsOnは日付コンポーネントでロケール非依存に(v2.8.0) - Virtualization:
estimateSizeが Listbox/Tree の関数を受け入れるように(v2.7.0) - Composables:
useLocale、useDirection公開(v2.6.0) - Select: Content の
disableOutsidePointerEventsprop(v2.7.0) - Toast:
disableSwipeprop(v2.6.0)
リソース
- Reka UI Docs
- GitHub
- Nuxt UI(スタイル付き Reka コンポーネント)
- shadcn-vue(スタイル付き Reka コンポーネント)
トークン効率: ベース ~350 トークン、components.md インデックス ~100 トークン、コンポーネント別 ~50-150 トークン
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- onmax
- リポジトリ
- onmax/nuxt-skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/onmax/nuxt-skills / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。