ステータスバーStatusBarExperimental

ステータスや情報を表示するバーです。

プレビュー

記事エディタ
保存済み
バックグラウンド処理なし
UTF-8

状態とバリエーション

ワークスペース状態

同期状態や選択数など、画面全体に関わる軽い状態をまとめます。

同期済み
アップロード待ちはありません
3 件選択中

エディタ情報

保存状態、文字コード、入力モードなどを短く表示します。

記事エディタ
保存済み
バックグラウンド処理なし
UTF-8

注意が必要な状態

切断や未保存など、ユーザーが気づくべき状態は色と文言を変えます。

未保存
接続が不安定です
再接続中

シェル下部の配置

docs のような枠内では fixed を false にし、シェルの下部に配置します。実アプリ全体に固定する場合は fixed の既定値を使います。

アプリケーションの作業領域
準備完了
バックグラウンド処理はありません
v1.4.0

プロパティ

表は横にスクロールできます
プロパティ初期値説明
fixedbooleantruetrue の場合は画面下部に固定します。docs やカード内では false にして領域内に置きます。
leftNodeReact.ReactNode-左側に表示する状態や補助情報です。
rightNodeReact.ReactNode-右側に表示するバージョン、選択数、入力モードなどです。
childrenReact.ReactNode-中央に表示する主要な状態文です。
classNamestring-ラッパーに追加するクラスです。プレビュー内では幅や色の調整に使います。

使い方

import { StatusBar } from "@gunjo/ui"

export function EditorStatusBar() {
  return (
    <div className="w-full max-w-[720px] overflow-hidden rounded-lg border bg-background">
      <div className="border-b bg-muted/40 px-4 py-2 text-sm font-medium">
        記事エディタ
      </div>
      <div className="grid min-h-40 grid-cols-1 text-sm sm:grid-cols-[160px_1fr]">
        <aside className="border-r bg-muted/20 p-3 text-muted-foreground">
          下書き / 公開設定 / 履歴
        </aside>
        <main className="space-y-3 p-4">
          <div className="h-4 w-2/3 rounded bg-muted" />
          <div className="h-3 w-full rounded bg-muted/70" />
          <div className="h-3 w-5/6 rounded bg-muted/70" />
        </main>
      </div>
      <StatusBar
        fixed={false}
        className="w-full"
        leftNode={<span>保存済み</span>}
        rightNode={<span>UTF-8</span>}
      >
        <span>バックグラウンド処理なし</span>
      </StatusBar>
    </div>
  )
}

設計の判断

  • 左右の2つではなく、真ん中を足して3つにした。資料は「左に重要な状態、右に補足情報」の2つの区画を挙げています。GUNJO は leftNoderightNode に加えて、children を真ん中の区画に置きました。左右は幅の3割で頭打ちにしてあるので、いちばん伝えたい一文が両端の情報に押し出されずに済みます。
  • 狭い画面では、真ん中だけが上の行に移る。640px 未満では2列の格子になり、真ん中の区画が上の行に回って全幅を取ります。横に3つ並べたまま縮めると3つとも読めない長さになるからです。区画の中身はすべて1行に収めて、溢れた分は省略します。
  • 変化の読み上げは入っていません。資料は「バー全体を aria-live の領域にして、接続や保存の変化を読み上げる」を挙げています。GUNJO の StatusBar は素の div で、その指定を持ちません。知らせたい画面は、いまは属性を渡して足します。なお fixed の既定は入りで画面の下に貼り付くので、文書の中に埋めたいときは切ります。

使用コンポーネント

いつ・なぜ使うか(UIXHERO)

「いつ・なぜ使うか」の判断は、姉妹サイト UIXHERO の記事で解説しています。