Dialog

任意の内容を表示する汎用モーダル。通話テキスト全文表示、顧客情報の編集、詳細ビューなど、画面遷移せずにじっくり読み書きさせたい場面に使う。AlertDialog (最終確認専用) との違いは、Esc / オーバーレイクリックで閉じられる汎用性。

プレビュー

通話テキスト全文表示の例。トリガーを押すとモーダルが開き、本文をスクロールできる。

実装例

import { Button } from "@/components/Button";
import {
  Dialog,
  DialogContent,
  DialogDescription,
  DialogFooter,
  DialogHeader,
  DialogTitle,
  DialogTrigger,
} from "@/components/ui/dialog";

export function Example() {
  return (
    <Dialog>
      <DialogTrigger asChild>
        <Button variant="secondary" size="m">通話テキストを開く</Button>
      </DialogTrigger>
      <DialogContent>
        <DialogHeader>
          <DialogTitle>通話テキスト全文</DialogTitle>
          <DialogDescription>
            2026-03-19 11:03:22 / 山田 太郎 様 / 担当: 佐藤
          </DialogDescription>
        </DialogHeader>
        {/* 中身: スクロールできる本文エリア */}
        <DialogFooter>
          <Button variant="primary" size="m">コピー</Button>
        </DialogFooter>
      </DialogContent>
    </Dialog>
  );
}

Dialog を使用したコンポーネント

頻繁に利用するダイアログのパターンを、propsとスタイリングを整えた variant コンポーネントとして用意しています。
  • ActionDialog

    ユーザーに確認や単純な操作を求めるダイアログ。フォーム要素を含まない確認・実行のシーンで使う。Cancel + Action の 2 ボタン構成。

  • MessageDialog

    ユーザーに情報を提示するためのダイアログ。入力などの操作を伴わずにメッセージを表示するときに使う。閉じる ボタンのみ。

  • StepFormDialog

    ステップを複数に分けたウィザード形式のダイアログ。タスクの完了に複数の操作が必要な場合に使う。戻る / キャンセル / 次へ の 3 ボタン構成。

  • AlertDialog

    取り消しのきかない操作 (削除・送信など) で、ユーザーに最終確認を求めるダイアログ。Esc / オーバーレイクリックでは閉じず、Cancel / Action の 2 ボタン構成で応答を必須にする。

仕様

  • primitive: src/components/ui/dialog.tsx(shadcn 公式 + Thinca Button へ size 適合)
  • 構成: Dialog / DialogTrigger / DialogContent / DialogHeader / DialogTitle / DialogDescription / DialogFooter / DialogClose
  • 右上の閉じるボタン(×)は自動で表示。showCloseButton={false} で非表示にできる
  • Esc / overlay click / 右上 × ボタンで閉じる
  • 色・余白は shadcn デフォルトのまま。Thinca tokens 化は後日対応