Alert
重要な情報を表示するアラートコンポーネント。
インポート
import { Alert, AlertTitle, AlertDescription } from '@caroainc/ui-components'個別サブパス(バンドルサイズを抑えたい場合):
import { Alert, AlertTitle, AlertDescription } from '@caroainc/ui-components/alert'基本的な使い方
Loading...
<Alert>
<AlertTitle>お知らせ</AlertTitle>
<AlertDescription>
重要なお知らせの内容がここに入ります。
</AlertDescription>
</Alert>バリアント
Loading...
<Alert>
<AlertTitle>デフォルト</AlertTitle>
<AlertDescription>デフォルトのアラートです。</AlertDescription>
</Alert>
<Alert variant="success">
<AlertTitle>成功</AlertTitle>
<AlertDescription>保存が完了しました。</AlertDescription>
</Alert>
<Alert variant="warning">
<AlertTitle>警告</AlertTitle>
<AlertDescription>この操作には注意が必要です。</AlertDescription>
</Alert>
<Alert variant="info">
<AlertTitle>情報</AlertTitle>
<AlertDescription>新しい機能が追加されました。</AlertDescription>
</Alert>
<Alert variant="destructive">
<AlertTitle>エラー</AlertTitle>
<AlertDescription>エラーが発生しました。</AlertDescription>
</Alert>アイコン付きアラート
Loading...
<Alert>
<Icon name="Info" size="sm" />
<AlertTitle>お知らせ</AlertTitle>
<AlertDescription>システムメンテナンスのお知らせです。</AlertDescription>
</Alert>
<Alert variant="destructive">
<Icon name="AlertCircle" size="sm" />
<AlertTitle>エラー</AlertTitle>
<AlertDescription>入力内容に問題があります。</AlertDescription>
</Alert>閉じるボタン
onClose を渡すと右上に閉じるボタン(ghostのXアイコン)が表示されます。開閉状態の管理は利用側で行います(onClose が呼ばれたら親の state を更新して非表示にする、など)。
Loading...
function DismissibleAlert() {
const [open, setOpen] = useState(true)
if (!open) return null
return (
<Alert onClose={() => setOpen(false)}>
<AlertTitle>お知らせ</AlertTitle>
<AlertDescription>このアラートは閉じるボタン付きです。</AlertDescription>
</Alert>
)
}onClose を渡す場合は利用側がClient Componentである必要があります(RSCからは関数を渡せないため)。
これはAlertに限らず、onClick等の関数propsを受け取る全コンポーネントに共通するReact自体の制約です。
表示のみの用途(onCloseを渡さない場合)は/serverからそのまま利用できます。
Props
| Prop | Type | Default | Description |
|---|---|---|---|
variant | 'default' | 'destructive' | 'success' | 'warning' | 'info' | 'default' | アラートのスタイルバリアント |
onClose | () => void | - | 閉じるボタンを表示し、クリック時に呼び出すハンドラ。省略時は閉じるボタンを表示しない |
アクセシビリティ(role)
variant="destructive" のときは role="alert"(即時に読み上げられる緊急度の高いロール)、それ以外の全variant(default/success/warning/info)は role="status"(穏やかに読み上げられるロール)を使用します。
AlertとSonnerの使い分け
| 用途 | 推奨 |
|---|---|
| 一時的な通知(保存完了など) | Sonner |
| ページ内に残すエラー表示 | Alert |
| フォームのバリデーションエラー | Alert |
| 重要な注意事項 | Alert |