Toast
きれいに積み重なり、ホバーで展開し、スワイプで消せる短いメッセージです。読み込み中の状態をその場で成功またはエラーに切り替えます。
pnpm dlx shadcn@latest add https://hextaui.com/r/toast.jsonコンポーネント、HextaUIのテーマトークン、依存するHextaUIコンポーネントを追加します。
まだ追加していない場合は、グローバルCSSにテーマトークンを追加してください。
依存関係をインストールします。
pnpm add @base-ui/react @tabler/icons-react cn次のコードをコピーしてプロジェクトに貼り付けてください。
components/ui/toast.tsx components/ui/button.tsx components/ui/spinner.tsx インポートパスは、お使いのプロジェクト構成に合わせて更新してください。
アプリのルート付近に <Toaster /> を一度だけ追加します。
あとは、React コンポーネントの外を含め、どこからでも toast を呼び出します。
toast は最新のものを手前にして、きれいに積み重なります。積み重なった部分にホバーまたはフォーカスすると扇状に広がり、読んでいる間はすべてのタイマーが一時停止します。toast を端に向かってスワイプすると閉じます。
タイプ
すべての toast は同じ落ち着いた面を使い、色を持つのはアイコンだけです。
Promise
toast.promise はスピナーを表示し、その後その場で成功またはエラーの toast に変わり、アイコンは切り替わるときにポンと現れます。
アクション
Undo のようなボタンには action を渡します。クリックすると toast も閉じます。
その場で更新
toast.loading の id を保持し、toast.update でタイプも含めて変更します。
重複なし
toast に id を付けると、再度呼び出したときにコピーを積み重ねる代わりに、既存のものが更新されます。
| キー | アクション |
|---|---|
| F6 | フォーカスを toast の中に移し、扇状に広げます。 |
| Tab | toast のアクションと閉じるボタンの間を移動します。 |
| Esc | フォーカスされている toast を閉じます。 |
- toast は控えめに読み上げられ、
toast.errorはすぐに読み上げられます。 - ポインターまたはフォーカスが toast 上にある間はタイマーが一時停止するため、カウントダウンと競う必要がありません。
- 閉じるボタンはホバーとフォーカスで表示され、タッチスクリーンでは常に表示されます。
- 視差効果の軽減が有効な場合、toast はスライドせずにフェードします。
| プロパティ | 型 | デフォルト |
|---|---|---|
positionスマートフォンでは常に全幅を使います。 | "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right" | "bottom-right" |
limit同時に表示される toast の数。古いものはフェードアウトします。 | number | 3 |
timeout画面に表示される既定の時間(ms)。 | number | 5000 |
| 属性 | 説明 |
|---|---|
data-slot="toaster" | ビューポート。data-position を持ちます。 |
data-slot="toast" | 各 toast。data-type、data-expanded、data-swiping を持ちます。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
description | ReactNode | – |
action | { label: ReactNode; onClick?: (event) => void } | – |
id重複させず更新するために再利用します。 | string | – |
timeoutデフォルトは Toaster のタイムアウトです。長いメッセージは、毎分約250語を目安に、より長く表示されます。 | number | – |
priority | "low" | "high" | "low" |
onClose | () => void | – |
onRemove | () => void | – |
toast.success、toast.error、toast.warning、toast.info、toast.loading、toast.promise、toast.update、toast.dismiss もあります。それぞれ toast の id を返すか、受け取ります。
- Buttonすべてのバリアントとサイズのボタンです。読み込み、成功、エラーのフローを内蔵し、高速なリクエストではスピナーを省略します。
- SpinnerApple風の目盛りまたは呼吸するリングで表示する読み込みインジケーターです。表示までの待機と、ちらつかない最短表示時間を設定できます。
- Alertステータスやフィードバックを伝えるインラインメッセージです。ニュートラルなサーフェス、色付きのアイコン、滑らかに折りたたまれる閉じる操作を備えています。
- Emptyまだ表示するものがない画面のためのプレースホルダーです。アイコン、メッセージ、次の操作を備えています。
- Progressタスクの進み具合を示すバーまたはリングです。更新のたびに滑らかに動き、全体量が不明なときはスライドします。
- Skeleton150ms待ってから表示され、包んだコンテンツと同じサイズになり、何も動かさずにコンテンツをフェードインさせるプレースホルダーです。
使用しているブロック
Toast の上に構築されるブロック。
- API keysOpenAIやAnthropicのコンソールのような、AIプロダクトのAPIキーのページです。スコープ付きの権限と有効期限を持つキーを作成し、シークレットは一度だけ表示され、コピーで確認でき、取り消しは元に戻せ、その場で名前を変更でき、猶予期間つきでローテーションでき、キーごとの使用量を確認できます。
- Artifactモデルが作成したものを表示する、AIチャットの横のパネルです。Webページ、SVG、ドキュメント、コードがリアルタイムでストリーミングされ、その後サンドボックス化されたプレビューに切り替わります。比較して復元できるバージョン、サイズを変更できる分割、スマートフォンでのボトムシートを備えています。
- Chat Sidebarチャットアプリ向けのサイドバーです。上部にロゴ、検索、New chat、その下に独自のリンク、ピン留めされたチャット、チャットを表示するために展開するプロジェクト、日ごとにグループ化された最近のチャットを配置します。行にはホバーメニューと右クリックメニュー、インラインでの名前変更、取り消しできる削除、リアルタイムの返信状態があります。
- HextaAIHextaUIのすべてのAIブロックで作られた、完全なAIチャットアプリです。サイドバーのチャット、出典つきの思考、差分と承認つきのツール呼び出し、エージェントの実行前に確認するプラン、ストリーミングされるMarkdownとコード、無音の音声モードを備え、すべてAI SDKのメッセージパーツで動作します。