Empty
まだ表示するものがない画面のためのプレースホルダーです。アイコン、メッセージ、次の操作を備えています。
pnpm dlx shadcn@latest add https://hextaui.com/r/empty.jsonコンポーネント、HextaUIのテーマトークン、依存するHextaUIコンポーネントを追加します。
まだ追加していない場合は、グローバルCSSにテーマトークンを追加してください。
依存関係をインストールします。
pnpm add @base-ui/react class-variance-authority cn次のコードをコピーしてプロジェクトに貼り付けてください。
components/ui/empty.tsx インポートパスは、お使いのプロジェクト構成に合わせて更新してください。
入場
空の状態がコンテンツに置き換わるとき、各パーツがメディア、タイトル、説明、アクションの順にフェードアップします。通知を閉じると確認できます。モーションの低減が有効な場合は、そのまま表示されます。最初の描画から存在する空の状態には、animated={false} を設定します。
アウトライン
variant="outline" は破線の細い枠線を描画します。ドロップゾーンや、コンテンツを待っている領域を示す定番の方法です。
Muted
variant="muted" は淡い塗りの上に載ります。アイコンタイルは持ち上がった白い面に切り替わり、引き続き目立ちます。
小
size="sm" は、サイドバー、ポップオーバー、狭いパネル向けに、パディング、間隔、アイコンタイル、タイトルを小さくします。
Avatar
デフォルトの EmptyMedia の variant はコンテンツを中央揃えにするだけなので、アバター、バッジ、イラストなど何でも収まります。
アバターグループ
招待や共有スペース向けに、ここに入れる可能性のある人を表示します。
画像
画像の読み込み中にレイアウトがずれないよう、画像には明示的な寸法を指定します。
検索結果なし
フィルターに一致するものがない場合、結果を空の状態に差し替え、次の手段を提示します。視覚的に非表示の role="status" が件数を通知するため、スクリーンリーダーのユーザーは、リスト全体を読み上げられなくても変化を聞き取れます。
カード内
データがまだないカードを埋めるには、muted の variant とともに size="sm" を使います。
テーブル内
ヘッダーの位置がずれないよう、colSpan ですべての列にまたがる 1 つのセルに入れます。
ポップオーバー内
メニューや通知パネル向けのコンパクトな空の状態。
コマンドリスト内
<CommandEmpty /> は現在の検索語を関数の子要素に渡すため、メッセージ内でそれを引用できます。
見出しレベル
タイトルは <div> なので、ページのアウトラインを崩すことはありません。適切な見出しレベルとしてレンダリングし、それでリージョンにラベルを付けてください。
長いコンテンツ
区切りのない名前や長いアドレスはコンテナ内で折り返され、長いボタンのラベルは省略されます。
右から左
すべて中央揃えで論理プロパティを使うため、右から左のレイアウトでも自然に読めます。
<EmptyTitle />は<div>をレンダリングします。空の状態がページのセクションである場合は、render={<h2 />}(または適切なレベル)を渡します。<EmptyMedia variant="icon" />は、タイトルがすでに意味を説明しているため、支援技術からは隠されます。デフォルトの variant の画像は公開されたままなので、altまたはalt=""を付けてください。- 検索やフィルターの後に結果が消えた場合は、リストの横に短い
role="status"のメッセージで変化を通知します。空の状態全体をライブリージョンにしないでください。ボタンやリンクが毎回読み上げられてしまいます。
各パーツはプレーンな要素をレンダリングし、その属性を受け付け、要素を差し替える render prop に対応します。
| プロパティ | 型 | デフォルト |
|---|---|---|
variant | "default" | "outline" | "muted" | "default" |
sizesm はパディング、間隔、アイコンタイル、タイトルを小さくします。 | "default" | "sm" | "default" |
animated空の状態がマウントされるとき、各パーツを順にフェードアップさせます。モーションの低減が有効な場合はスキップされます。 | boolean | true |
render | ReactElement | (props, state) => ReactElement | <div> |
| 属性 | 説明 |
|---|---|
data-slot="empty" | CSSでルートを指定します。 |
data-variant | 現在のバリアント。 |
data-size | 現在のサイズ。 |
data-animated | 入場アニメーションがオンのときに付与されます。 |
--empty-padding | 四方のパディング。size によって設定されます。 |
--empty-gap | ヘッダーとコンテンツの間の余白。size によって設定されます。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <div> |
| 属性 | 説明 |
|---|---|
data-slot="empty-header" | CSSでヘッダーを指定します。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
varianticon は、控えめなタイルにアイコンを置きます。stack は、空の状態にホバーすると広がる 2 枚の扇状のカードの上に、タイルを浮かせます。どちらもメディアを支援技術から隠します。 | "default" | "icon" | "stack" | "default" |
render | ReactElement | (props, state) => ReactElement | <div> |
| 属性 | 説明 |
|---|---|
data-slot="empty-icon" | CSS でメディアを指定します。shadcn と一致します。 |
data-variant | 現在のバリアント。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
renderrender={<h2 />} のように、見出しをレンダリングします。 | ReactElement | (props, state) => ReactElement | <div> |
| 属性 | 説明 |
|---|---|
data-slot="empty-title" | CSSでタイトルを指定します。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
render内側のプレーンなリンクには下線が付きます。リンクとしてレンダリングされたコンポーネントは、独自のスタイルを保ちます。 | ReactElement | (props, state) => ReactElement | <div> |
| 属性 | 説明 |
|---|---|
data-slot="empty-description" | CSSで説明を指定します。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <div> |
| 属性 | 説明 |
|---|---|
data-slot="empty-content" | CSS でアクション領域を指定します。 |
- Alertステータスやフィードバックを伝えるインラインメッセージです。ニュートラルなサーフェス、色付きのアイコン、滑らかに折りたたまれる閉じる操作を備えています。
- Progressタスクの進み具合を示すバーまたはリングです。更新のたびに滑らかに動き、全体量が不明なときはスライドします。
- Skeleton150ms待ってから表示され、包んだコンテンツと同じサイズになり、何も動かさずにコンテンツをフェードインさせるプレースホルダーです。
- SpinnerApple風の目盛りまたは呼吸するリングで表示する読み込みインジケーターです。表示までの待機と、ちらつかない最短表示時間を設定できます。
- Toastきれいに積み重なり、ホバーで展開し、スワイプで消せる短いメッセージです。読み込み中の状態をその場で成功またはエラーに切り替えます。
使用しているブロック
Empty の上に構築されるブロック。
- API keysOpenAIやAnthropicのコンソールのような、AIプロダクトのAPIキーのページです。スコープ付きの権限と有効期限を持つキーを作成し、シークレットは一度だけ表示され、コピーで確認でき、取り消しは元に戻せ、その場で名前を変更でき、猶予期間つきでローテーションでき、キーごとの使用量を確認できます。
- Diff Reviewエージェントによる編集を、反映される前にファイルをまたいで確認します。件数つきのファイルツリー、変更ごと、ファイルごと、またはすべてに対する承認と却下、任意の行や範囲に付けてエージェントへ返せるコメント、ユニファイドビューとスプリットビュー、単語単位のハイライト、取り消し、ストリーミングされる編集、チャット向けの「Edited 4 files」サマリーを備えています。
- SecurityAIプロダクト向けのセッションとセキュリティです。行がアニメーションで消えるサインアウトつきのアクティブなデバイス、リアルタイムの強度メーターつきのパスワード変更、本物のQRコードを使う二要素認証の設定、6桁の確認とダウンロードできるリカバリーコード、WebAuthnによるパスキー、入力による確認が必要なアカウント削除を備えています。
- SettingsCursorやClaudeのように構成した、AIプロダクト向けの設定です。検索、グループ、外部リンクを備えた塗りつぶしのサイドバー、控えめなピッカーと入れ子のオプションを持つ行のカード、変更があったときだけ浮かび上がる暗い保存アイランド、⌘Sでの保存、チェックやサーバーからのフィールドエラー、コンテンツの形に合わせた読み込み状態を備えています。