Number flow
変化した桁だけが回転するアニメーション付きの数値です。任意のIntlフォーマットとロケールに対応します。
pnpm dlx shadcn@latest add https://hextaui.com/r/number-flow.jsonコンポーネント、HextaUIのテーマトークン、依存するHextaUIコンポーネントを追加します。
まだ追加していない場合は、グローバルCSSにテーマトークンを追加してください。
依存関係をインストールします。
pnpm add cn次のコードをコピーしてプロジェクトに貼り付けてください。
components/ui/number-flow.tsx lib/motion.ts インポートパスは、お使いのプロジェクト構成に合わせて更新してください。
変化した桁だけが動く
各桁は独立した列です。22から23になると、1の位だけが回り、10の位は動きません。99 → 100 の3桁目のように現れたり消えたりする桁は、幅をスライドさせて出入りします。
トレンド
trend は桁が回る向きを決めます。auto は値が増えると上向き、減ると下向きに回り、up と down は方向を固定し、shortest はホイール上の最短経路を取ります。
フォーマット
format と locales は任意の Intl.NumberFormat オプションを受け付けます。通貨記号、区切り文字、符号は桁が動く間も静止したままで、ラテン文字以外の数字はそれぞれの文字体系で回転します。
タイミング
duration と easing で動きを調整するか、animated={false} でオフにします。視差効果の軽減の設定では自動的にオフになります。
中断とイベント
回転の途中で新しい値が来ても、各桁は現在の位置から続行するため、素早い更新でもジャンプしません。onAnimationsStart と onAnimationsFinish は桁のバッチごとに1回発火します。
インラインとバッジ内
テキストのベースラインに揃うインラインの <span> を描画し、等幅数字により、桁が回転している間も幅が安定します。BadgeCount は、上限で打ち切る件数にこれを使います。
右から左
数値は、右から左のレイアウトの中でもブラウザーの表示に合わせて、常に左から右に読みます。
- スクリーンリーダーは、実際にフォーマットされた数値を読み上げます。回転する列は支援技術から隠され、退場中の文字はアニメーションの間隠されます。
- ライブリージョンではありません。変化を読み上げさせたい場合は、
aria-live="polite"を持つ要素で囲んでください。 - 視差効果の軽減が有効な場合、値は回転せずに即座に更新されます。
children と prefix を除く、すべての <span> 属性を受け付けます。
| プロパティ | 型 | デフォルト |
|---|---|---|
value必須。 | number | – |
locales | Intl.LocalesArgument | "en-US" |
formatIntl.NumberFormat に渡されます。 | Intl.NumberFormatOptions | – |
prefix数値の前に付く固定テキスト。 | string | – |
suffix数値の後ろに付く固定テキスト。 | string | – |
trend | "auto" | "up" | "down" | "shortest" | "auto" |
duration回転のデュレーション(ミリ秒)。 | number | 600 |
easing任意の CSS イージング値。 | string | easeSpring |
animated | boolean | true |
onAnimationsStart桁のバッチが動き始めたときに呼ばれます。 | () => void | – |
onAnimationsFinish最新のバッチが落ち着いたときに呼ばれます。新しい値に中断された場合はスキップされます。 | () => void | – |
| 属性 | 説明 |
|---|---|
data-slot="number-flow" | ルートの span。 |
data-slot="number-flow-digit" | 各桁のセル。 |
data-slot="number-flow-symbol" | 区切り文字、符号、記号、プレフィックスとサフィックス。 |
data-slot="number-flow-column" | 桁のセル内で回転する列。 |
data-digit | 列が止まっている桁。0〜9。 |
- Motionすべてのコンポーネントがアニメーションに使うイージングカーブ、継続時間、モーション軽減のチェックと、サイズのモーフィングやスライドするハイライト用のフックです。
- Avatarイニシャルのフォールバック、ステータスバッジ、件数にまとめられる積み重ねグループを備えたユーザー写真です。
- Badge色付きのドットを持つステータスラベル、スライドして閉じる削除可能なタグ、新しい値へ回転するカウントです。
- Cardコンテンツをまとめるサーフェスです。3つのバリアント、端まで広がるメディア、同心円状の角丸、カード全体のリンクに対応します。
- Chartテーマ対応の色を持つRechartsのチャートです。1つの設定からラベルを読み取るツールチップと凡例、見えるフォーカスリングつきのキーボード操作に対応します。
- Data table実データのためのテーブルです。並べ替え、検索、行の選択、固定列、スティッキーヘッダー、ページネーションを備えています。
使用しているブロック
Number flow の上に構築されるブロック。
- Artifactモデルが作成したものを表示する、AIチャットの横のパネルです。Webページ、SVG、ドキュメント、コードがリアルタイムでストリーミングされ、その後サンドボックス化されたプレビューに切り替わります。比較して復元できるバージョン、サイズを変更できる分割、スマートフォンでのボトムシートを備えています。
- Diff Reviewエージェントによる編集を、反映される前にファイルをまたいで確認します。件数つきのファイルツリー、変更ごと、ファイルごと、またはすべてに対する承認と却下、任意の行や範囲に付けてエージェントへ返せるコメント、ユニファイドビューとスプリットビュー、単語単位のハイライト、取り消し、ストリーミングされる編集、チャット向けの「Edited 4 files」サマリーを備えています。