Foundation
PackagesUIArchitecture

Composites

複数のElementsを組み合わせて完結したUI単位を提供する。

責務

Compositesは 複数のElementsを組み合わせて完結したUI単位 を提供する。

  • 複数のElementsを統合し、特定のユースケースに対応するUIを構成する
  • 子要素間の連携ロジック(フォーカストラップ、開閉状態の共有等)を管理する
  • Radix UIの複合コンポーネント(Dialog, Popover等)をベースに構築する
  • コンポーネント内部で完結する状態管理を行なう(外部への状態公開はコールバックPropsで行なう)

責務外

Compositesが行ってはならないことを定義する。

  • ビジネスロジックを持たない — フォームのバリデーションルールやAPI通信はアプリケーション側の責務である
  • ページレイアウトを規定しない — Compositeは画面内の一部分を構成する。ページ全体の構成はアプリケーション側で行なう
  • データの取得・永続化を行なわない — データフェッチやストレージへの保存はCompositeの外で行なう
  • 他のCompositesに依存しない — Composites同士の直接的な依存は禁止する
  • Primitivesを直接使用しない — Elements経由でPrimitivesを利用する。Primitivesに直接依存すると、レイヤーの境界が曖昧になる

要件

要件詳細
'use client' 宣言hooks・イベントハンドラ・ブラウザAPIを使用する場合のみ宣言する
フォーカス管理モーダル・ポップオーバーではフォーカストラップを実装する
キーボード操作Escape で閉じる、矢印キーでの移動等、WAI-ARIAパターンに準拠する
開閉制御open / onOpenChange パターンで制御可能にする
コールバック提供外部に状態変更を通知するコールバックPropsを提供する
アニメーション表示・非表示のトランジションをモーショントークンに基づいて実装する

On this page