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
いまではない

プロパティ

表は横にスクロールできます
プロパティ初期値説明
liveboolean-隣の値がいまの値かどうか。決めるのは呼び出し側です。札は時計を持たず、何も比較しません。
childrenReactNode-live のときの札の文字。⚠️ 必ず言葉にしてください。明滅する点は飾りで、点だけに載せた状態は半分の読み手に届きません。
detachedReactNode-live でないときに、札の代わりに出すもの=「ではいつの値か」の答え(日付・時刻・「09:40 時点」)。渡さなければ何も描きません(部品は推測しません)。
size"sm" | "default" | "lg"-大きさ。Badge と同じ段です。
as"span" | "div"-描く要素。既定は span で、文の中にも置けます。

使い方

import { LiveBadge } from "@gunjo/ui";

// ⭐ live かどうかは呼び出し側が決めます。札は時計も持たず、比較もしません。
export function WaitTime({ value, connected, receivedAt }) {
  return (
    <Statistic
      label={
        <span className="inline-flex items-center gap-2">
          待ち時間
          {/* 実時間から外れたら、札の代わりに「いつの値か」を出します */}
          <LiveBadge live={connected} detached={`${receivedAt} 時点`}>
            LIVE
          </LiveBadge>
        </span>
      }
      value={value}
    />
  );
}

// detached を渡さなければ、外れているとき札そのものが消えます(推測しません)
<LiveBadge live={false} />

// 変化そのものが知らせたいことなら、読み上げ領域は呼び出し側で付けます
<LiveBadge live={connected} detached={receivedAt} role="status" />

設計の判断

  • 「LIVE」を独立した札にしています。出どころでは EARTH · TERMINATOR LIVE と一続きの文字で出していて、 触ってもらった人に「どういう意味?」と聞かれました。枠で囲って言葉を独立させると、 それが状態の札だと分かります。
  • 読み上げ領域には、既定ではしていません。role="status" を既定で付けると、再接続のたびに読み上げへ割り込みます。 多くの画面でこの札は環境音なので、割り込むべき画面でだけ呼び出し側が付けます。
  • 外れているときに「古い」とは言いません。言うのはいつの値かです。読み手が必要としているのは評価ではなく時刻で、 それが分からないなら札は出しません。
  • 時計を持たず、何も比較しません。「いまの値か」は締切・再接続・バッファなど画面ごとの事情で決まります。 2つの数の差では言えないので、判断は呼び出し側に置いています(TimeTransport と同じ決まり)。
  • Badge を組んで作っています。枠・色・大きさの段はすでにあるので、足したのは明滅する点と、live / 外れているの対だけです。

使用コンポーネント