sashigane
コンポーネント

Switch

スイッチ。押した瞬間にオンとオフが切り替わる

チェックボックスとの違い

押した瞬間に効くものがスイッチです。 チェックボックスは送信して初めて効きます。

見た目だけの違いではないので、コンポーネントを分けています。 迷ったときは「押したら何か起きるか」で決めてください。

素の input に乗っています

type="checkbox" に role="switch" を足しただけです。 入ったかどうかの申告も、キーボードも、フォームへの載り方もブラウザが持っています。

自分で状態を持っていないので、素のフォームでも register() でもそのまま載ります。

つまみは境界で形を保ちます

つまみは、入っているときアクセントの塗りの上、切れているとき凹んだ面の上に載ります。 地の色が明暗の両極なので、塗りだけでは片方でつまみが背景に埋もれます。

境界が識別を担っています。

ラベルは Field が付けます

何の入り切りかは、スイッチ自身からは分かりません。

<Field layout="inline" id="dark" label="暗い配色にする">
  <Switch name="dark" />
</Field>

押せないときは塗りの段が落ちます

不透明度では表しません。 薄めると前景と背景が同時に下地へ寄り、 読みやすさの保証が効かなくなります。

3つの状態

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

通常default.tsx

通常。押した瞬間に効くものに使う。

空empty.tsx

空。切れているとき。

エッジケースedge.tsx

エッジケース。押せないときと、誤りのとき。

ここは変えられません

props

Prop

Type

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

On this page