Progress
タスクの進み具合を示すバーまたはリングです。更新のたびに滑らかに動き、全体量が不明なときはスライドします。
pnpm dlx shadcn@latest add https://hextaui.com/r/progress.jsonコンポーネント、HextaUIのテーマトークン、依存するHextaUIコンポーネントを追加します。
まだ追加していない場合は、グローバルCSSにテーマトークンを追加してください。
依存関係をインストールします。
pnpm add @base-ui/react class-variance-authority cn次のコードをコピーしてプロジェクトに貼り付けてください。
components/ui/progress.tsx インポートパスは、お使いのプロジェクト構成に合わせて更新してください。
<Progress /> は子要素の後ろに独自のトラックとインジケーターを描画するため、ラベルと値はバーの上の1行に収まります。更新のたびに塗りは現在位置からなめらかに動くので、素早い更新も段階的ではなく1つの滑らかな動きに見えます。
サイズ
xs、sm、default、lg はバーの太さを変えます。xs は Attachment が下端に引く細い線です。
ステータス
variant は塗りまたはリングだけに色を付けるため、トラック、ラベル、値はニュートラルのままです。
不確定
合計が不明な間は value={null} を渡します。トラック上を区間がスライドし、数値が届くと塗りが先頭から伸びます。
円形
<ProgressCircle /> は同じ値を、上から始まるリングとして描画します。子要素は中央に置かれ、lg と xl の <ProgressValue /> に合います。
不確定な円形
値が届くまで、円弧がリングの周りを回ります。
カスタムの範囲とフォーマット
任意の範囲には min と max、数値には format、テキストには <ProgressValue /> の関数の子要素を設定します。同じ言葉をスクリーンリーダーにも伝えるには getAriaValueText を使います。
アニメーションする値
<ProgressValue /> の内側に <NumberFlow /> を描画すると、変化した桁だけが塗りに合わせて回転します。
長いラベル
長い名前は別の行に折り返され、値は末尾に残ります。リングは各行の横にコンパクトなステータスとして使えます。
表示されるラベルなし
何を読み込んでいるかが文脈からすでにわかる場合は、aria-label でバーに名前を付けます。
右から左
塗りと不確定のスライドは右から始まります。読み手の数字で値をフォーマットするには locale を渡します。
- ルートは
progressbarで、aria-valuenow、aria-valuemin、aria-valuemax、フォーマット済みのaria-valuetextを持ちます。不確定の間は現在の値を持ちません。 <ProgressLabel />はバーに名前を付けます。ない場合はaria-labelを渡してください。- progressbar がすでに値を読み上げるため、
<ProgressValue />はスクリーンリーダーから隠されます。 - 視差効果の軽減が有効な場合、塗りは新しい値へ直接移り、不確定のバーとリングは動く代わりにその場で脈動します。
localeを渡さない限り値はen-USでフォーマットされるため、サーバーとブラウザーで同じテキストが描画されます。
Base UI の progress 上に構築されています。すべてのパーツは、ラップしているプリミティブの props を受け付けます。
| プロパティ | 型 | デフォルト |
|---|---|---|
valuenull にするとバーが不確定になります。 | number | null | – |
min | number | 0 |
max | number | 100 |
size | "xs" | "sm" | "default" | "lg" | "default" |
variant | "default" | "success" | "warning" | "destructive" | "default" |
format値をフォーマットします。指定しない場合、値はパーセントで表示されます。 | Intl.NumberFormatOptions | – |
locale | Intl.LocalesArgument | "en-US" |
getAriaValueText | (formattedValue: string, value: number | null) => string | – |
className | string | (state) => string | – |
render | ReactElement | (props, state) => ReactElement | <div> |
| 属性 | 説明 |
|---|---|
data-slot="progress" | ルート。 |
data-size | サイズ: xs、sm、default、lg。 |
data-variant | ステータスのバリアント。 |
data-progressing | 値が max 未満の間付きます。 |
data-complete | 値が max に達したときに付きます。 |
data-indeterminate | 値が null または有限の数値でないときに付きます。 |
progressbar に名前を付けます。<span> を描画し、ルートと同じ状態属性を受け付けます。
| プロパティ | 型 | デフォルト |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <span> |
| 属性 | 説明 |
|---|---|
data-slot="progress-label" | ラベル。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
childrenカスタムテキスト。指定しない場合はフォーマット済みの値が表示され、不確定の間は何も表示されません。 | (formattedValue: string | null, value: number | null) => ReactNode | – |
render | ReactElement | (props, state) => ReactElement | <span> |
| 属性 | 説明 |
|---|---|
data-slot="progress-value" | 値。 |
<Progress /> によって描画され、その size でサイズが決まります。カスタム構成向けにエクスポートされています。
| 属性 | 説明 |
|---|---|
data-slot="progress-track" | トラック。 |
--progress-dir | 1、右から左では -1。不確定状態のスライドは文字の読み方向に従います。 |
塗り。幅は値からインラインで設定され、更新の間でなめらかに変化します。
| 属性 | 説明 |
|---|---|
data-slot="progress-indicator" | 塗り。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
valuenull で円弧が回ります。 | number | null | – |
min | number | 0 |
max | number | 100 |
size | "sm" | "default" | "lg" | "xl" | "default" |
variant | "default" | "success" | "warning" | "destructive" | "default" |
locale | Intl.LocalesArgument | "en-US" |
childrenリングの中央に表示されます。 | ReactNode | – |
render | ReactElement | (props, state) => ReactElement | <div> |
| 属性 | 説明 |
|---|---|
data-slot="progress-circle" | ルート。 |
data-size | サイズ: sm、default、lg、xl。 |
data-variant | ステータスのバリアント。 |
data-progressing | 値が max 未満の間付きます。 |
data-complete | 値が max に達したときに付きます。 |
data-indeterminate | 値が null または有限の数値でないときに付きます。 |
--progress-circle-size | リングの幅と高さ。 |
--progress-stroke | リングの線の太さ。 |
- Alertステータスやフィードバックを伝えるインラインメッセージです。ニュートラルなサーフェス、色付きのアイコン、滑らかに折りたたまれる閉じる操作を備えています。
- Emptyまだ表示するものがない画面のためのプレースホルダーです。アイコン、メッセージ、次の操作を備えています。
- Skeleton150ms待ってから表示され、包んだコンテンツと同じサイズになり、何も動かさずにコンテンツをフェードインさせるプレースホルダーです。
- SpinnerApple風の目盛りまたは呼吸するリングで表示する読み込みインジケーターです。表示までの待機と、ちらつかない最短表示時間を設定できます。
- Toastきれいに積み重なり、ホバーで展開し、スワイプで消せる短いメッセージです。読み込み中の状態をその場で成功またはエラーに切り替えます。
- Attachmentアップロード向けのファイルカードと画像カードです。進捗、状態、操作、カード全体のトリガーに対応し、名前は拡張子を保ったまま表示されます。