sashigane
コンポーネント

Spinner

処理中であることを示す。読み込みや送信のあいだ出す

回転はトークンが持っています

スピナーの形と大きさだけがこのコンポーネントのもので、回転はトークン層にあります。 data-sg-spinner を付けた要素が回るので、素の CSS の利用者も同じものを得られます。

周期はループのスケールから来ています。生の数値は書いていません。

動きだけで状態を伝えません

動きを減らす設定(prefers-reduced-motion)では止まります。 スケルトンと同じ判断です。

止まったスピナーからは進行が読み取れないので、名前を型で必須にしてあります。

<Spinner aria-label="読み込み中" />

すでに名前を持つものの中に置くときは、逆に隠さないと二重に読まれます。

<span>
  <Spinner aria-hidden="true" />
  読み込み中
</span>

aria-label / aria-labelledby / aria-hidden のどれか1つが必ず要ります。

色は継承します

スピナーの色は文字の色をそのまま使います。 塗りの上でも凹んだ面の上でも、 置いた場所の前景に従うので書き直す必要がありません。

大きさは行の高さに合わせてあります

文字やアイコンと横に並べたときに揃います。段は1つだけです。

3つの状態

通常・空・エッジケースの3つは、どのコンポーネントにも必ずあります。

通常default.tsx

通常。回転はトークン層が持っている。

読み込み中

空empty.tsx

空。中身を持たない。

エッジケースedge.tsx

エッジケース。前景の色が変わる場所に置く。

props

Prop

Type

型と説明はコンポーネントのソースから抽出しています。既定値は出していません——cva の defaultVariants は 署名に現れないので、表に出すと「引数のデフォルトが書かれているものだけ」になり、嘘になります。

On this page