コンポーネント
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 は 署名に現れないので、表に出すと「引数のデフォルトが書かれているものだけ」になり、嘘になります。