LIVE の札LiveBadgeExperimental
「これはいまの値です」を示す小さな札です。枠と、ゆっくり明滅する点。実時間から外れているときは札を引っ込め、代わりに「いつの値か」を出します。
プレビュー
待ち時間LIVE
12分
10秒ごとに更新しています
状態とバリエーション
いまの値
success の色・枠・言葉と、ゆっくり明滅する点。点は飾りで、状態を言っているのは文字です。
LIVE
いつの値か
実時間から外れたら、札は LIVE を名乗らず、その場所で「いつの値か」を答えます。色も warning に替わりますが、言っているのは文字です。
09:40 時点
何も出さない
live でなく、detached も渡されていないとき、札は何も描きません。いつの値か分からないのに札を残すと、古い値が現在の値に見えます。(下のプレビューは空です)
(札は描かれていません)
大きさ
Badge と同じ段(sm / default / lg)。密な盤では sm、見出しの横では lg。
LIVELIVELIVE
言葉を差し替える
「LIVE」でなければならない理由はありません。実況・受信中・自動更新中など、その画面の言葉にします。
実況中受信中自動更新
TimeTransport の中
操作盤の実時間の札は、この部品が描いています。時刻を動かすと札は「いつの値か」の側に替わります(同じ形を2か所に作り置きしません)。
09:00
2026-09-12 JST
プロパティ
表は横にスクロールできます
| プロパティ | 型 | 初期値 | 説明 |
|---|---|---|---|
| live | boolean | - | 隣の値がいまの値かどうか。決めるのは呼び出し側です。 |
| children | ReactNode | - | live のときの札の文字。 |
| detached | ReactNode | - | live でないとき、札の代わりに出すもの=いつの値かの答え。 |
| size | "sm" | "default" | "lg" | - | 大きさ。Badge と同じ段です。 |
| as | "span" | "div" | - | 描く要素。既定の span は文の中にも置けます。 |
使い方
import { LiveBadge, Statistic } from "@gunjo/ui";
// live かどうかは呼び出し側が決めます。札は時計も持たず、比較もしません。
const CONNECTED = true;
const RECEIVED_AT = "09:40";
export function WaitTime() {
return (
<Statistic
label={
<span className="inline-flex items-center gap-2">
待ち時間
{/* 実時間から外れたら、札の代わりに「いつの値か」を出します */}
<LiveBadge live={CONNECTED} detached={`${RECEIVED_AT} 時点`}>
LIVE
</LiveBadge>
</span>
}
value="12分"
/>
);
}
// detached を渡さなければ、外れているとき札そのものが消えます(推測しません)
export function QuietWhenUnknown() {
return <LiveBadge live={false} />;
}
// 変化そのものが知らせたいことなら、読み上げ領域は呼び出し側で付けます
export function Announced() {
return <LiveBadge live={CONNECTED} detached={RECEIVED_AT} role="status" />;
}設計の判断
- 「LIVE」を独立した札にしています。状態を表す語を、隣の文字と一続きに並べると、それが状態の札だと読めません。 枠で囲って語を独立させると、名前の一部ではなく「いまの状態」として読まれます。
- 読み上げ領域には、既定ではしていません。
role="status"を既定で付けると、再接続のたびに読み上げへ割り込みます。 多くの画面でこの札は環境音なので、割り込むべき画面でだけ呼び出し側が付けます。 - 外れているときに「古い」とは言いません。言うのはいつの値かです。読み手が必要としているのは評価ではなく時刻で、 それが分からないなら札は出しません。
- 時計を持たず、何も比較しません。「いまの値か」は締切・再接続・バッファなど画面ごとの事情で決まります。 2つの数の差では言えないので、判断は呼び出し側に置いています(
TimeTransportと同じ決まり)。 - Badge を組んで作っています。枠・色・大きさの段はすでにあるので、足したのは明滅する点と、live / 外れているの対だけです。
使用コンポーネント
関連コンポーネント
- Badge
鮮度の話ではない状態(下書き・承認済み)はこちら。
- ExpiryBadge
締切までの残り。いまの値かどうかとは別の軸です。
- TimeTransport
読み手が値を動かすときの操作盤。その実時間の札がこれ。
- DayBand
1日の中の位置を面で見せる帯。鮮度の話ではない。
いつ・なぜ使うか(UIXHERO)
「いつ・なぜ使うか」の判断は、姉妹サイト UIXHERO の記事で解説しています。