mcpField
R
radix-primitives

radix-primitives

github.com/yonatangrossデザイン・UI29946 回インストール今日更新
リポジトリ

radix-primitives について

radix-primitivesは、カスタムデザインシステムや複雑なUIを構築するための、スタイルを持たないアクセシブルなReactプリミティブを扱うスキルです。多態的な合成、キーボード操作とフォーカス制御、データ属性によるスタイリングなどを解説します。

主な機能

  1. 01アクセシブルなReact UIプリミティブ
  2. 02ダイアログ、メニュー、ポップオーバーのパターン
  3. 03asChildによる多態的な合成
  4. 04キーボード操作とフォーカス管理
  5. 05ARIAとスクリーンリーダー対応
  6. 06状態を示すデータ属性

活用シーン

  1. 01独自スタイルのアクセシブルなコンポーネントを構築
  2. 02ダイアログ、メニュー、ツールチップを作成
  3. 03ラッパーdivなしで要素を合成
  4. 04データ属性でコンポーネントの状態をスタイリング

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/yonatangross/orchestkit --skill radix-primitives

インストール後、Claude Code で/radix-primitivesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

checklists/
accessibility-audit.md
references/
aschild-composition.md
dialog-modal-patterns.md
dropdown-menu-patterns.md
focus-management.md
popover-tooltip-patterns.md
scripts/
composed-trigger.tsx
custom-dialog.tsx
custom-dropdown.tsx

詳細

Radix Primitives

高品質なデザインシステムを構築するための、スタイル未設定でアクセシブルな React コンポーネントです。

概要

  • アクセシビリティを完全に備えた、独自のスタイル付きコンポーネントの構築
  • shadcn/ui の内部動作の理解
  • ラッパーの div を使わないポリモーフィックな合成
  • 複雑な UI パターン(モーダル、メニュー、ツールチップ)の実装

プリミティブ一覧

オーバーレイコンポーネント
プリミティブ用途
Dialogモーダルダイアログ、フォーム、確認
AlertDialog破壊的な操作の確認
Sheetサイドパネル、モバイルドロワー
ポップオーバーコンポーネント
プリミティブ用途
Popoverトリガーに連動するリッチコンテンツ
Tooltip簡単なテキストヒント
HoverCardホバー時のプレビューカード
ContextMenu右クリックメニュー
メニューコンポーネント
プリミティブ用途
DropdownMenuアクションメニュー
Menubarアプリケーションのメニューバー
NavigationMenuサイトナビゲーション
フォームコンポーネント
プリミティブ用途
Selectカスタムのセレクトドロップダウン
RadioGroup単一選択グループ
Checkbox真偽値の切り替え
Switchオン/オフの切り替え
Slider範囲の選択
開閉コンポーネント
プリミティブ用途
Accordion展開可能なセクション
Collapsible単一の切り替えコンテンツ
Tabsタブ付きインターフェース

コアパターン:asChild

asChild プロパティを使うと、ラッパーの div を使わずにポリモーフィックなレンダリングができます。

// Without asChild - creates nested elements
<Button>
  <Link href="/about">About</Link>
</Button>

// With asChild - merges into single element
<Button asChild>
  <Link href="/about">About</Link>
</Button>

仕組み:

  • Radix 内部の Slot コンポーネントを使用します
  • 親から子へプロパティをマージします
  • ref を正しく転送します
  • イベントハンドラーを結合します(両方が実行されます)
  • classNames をマージします

組み込みのアクセシビリティ

すべてのプリミティブに次の機能が含まれています。

  • キーボード操作:矢印キー、Escape、Enter、Tab
  • フォーカス管理:フォーカスのトラップ、復帰、視認可能なフォーカスリング
  • ARIA 属性:ロール、状態、プロパティ
  • スクリーンリーダー:適切な読み上げ

データ属性を使ったスタイリング

Radix はデータ属性を使って状態を公開します。

/* Style based on state */
[data-state="open"] { /* open styles */ }
[data-state="closed"] { /* closed styles */ }
[data-disabled] { /* disabled styles */ }
[data-highlighted] { /* keyboard focus */ }
// Tailwind arbitrary variants
<Dialog.Content className="data-[state=open]:animate-in data-[state=closed]:animate-out">

クイックリファレンス

import { Dialog, DropdownMenu, Tooltip } from 'radix-ui'

// Basic Dialog
<Dialog.Root>
  <Dialog.Trigger>Open</Dialog.Trigger>
  <Dialog.Portal>
    <Dialog.Overlay />
    <Dialog.Content>
      <Dialog.Title>Title</Dialog.Title>
      <Dialog.Description>Description</Dialog.Description>
      <Dialog.Close>Close</Dialog.Close>
    </Dialog.Content>
  </Dialog.Portal>
</Dialog.Root>

主な判断事項

判断事項推奨事項
スタイリング方法データ属性 + Tailwind の任意バリアント
合成ラッパーの div を避けるには asChild を使用します
アニメーションdata-state セレクターを使った CSS のみのアニメーション
フォームコンポーネントreact-hook-form と組み合わせます

関連スキル

  • shadcn-patterns - スタイル設定済みの Radix コンポーネント
  • focus-management - アクセシビリティパターン
  • design-system-starter - デザインシステムの基盤

参考資料

コメント