Novi UI
コンポーネント一覧

Modal

作業を中断させる重さがある。確認や入力が本当に必要なときだけ使い、通知には Toast を使う。

デモ

使い分け

こうする

  • 取り消せない操作の確認、または 1 画面で完結する短い入力に使う
  • タイトルは質問か動作で書く(「削除しますか」)

こうしない

  • 長いフォームを入れない。ページにする
  • Modal の上に Modal を重ねない。Flatlay では表現できない

Props

Modal の props 一覧
名前型説明
sizeNoviSize | 'full'
radius'none' | 'sm' | 'md' | 'lg' | 'full'
isOpenboolean
defaultOpenboolean
onOpenChange(isOpen: boolean) => void
isDismissableboolean背景クリックで閉じられるようにする
isKeyboardDismissDisabledbooleanEscape で閉じるのを無効にする
childrenReactNode
classNamesClassNames<typeof modalSlots>

Slot

構成部位に data-slot が出力されます。 CSS の上書きやテストはこれを狙ってください。

  • backdrop必須
  • panel必須
  • header
  • title
  • closeButton
  • body必須
  • footer

アクセシビリティ

キーボード操作
キー動作
Tab / Shift+Tab中の要素を巡回(外へ出ない)
Escape閉じる
  • 開いている間フォーカスは内側に閉じ込められ、Escape で閉じる (`isKeyboardDismissDisabled` で無効化できる)。閉じるボタンには `aria-label` がある
  • キーボードだけで操作できます。フォーカスリングはコントラスト比 3:1 以上です。
  • 本文のコントラスト比は light / dark とも 4.5:1 以上を検査で保証しています。
  • prefers-reduced-motion が有効なときはアニメーションを行いません。