sashigane
コンポーネント

Input

1行の入力欄。誤りをその場で示せる

凹んだ面を宣言します

入力欄は地であって塗りではありません。面の仕組みに乗るので、 背景と文字が対で決まります。塗るだけの道はありません。

誤りは自分で決めません

aria-invalid が付くと境界が変わります。付けるのは Field です—— ここで決めると、Field を使わない書き方だけが誤りを名乗れることになります。

境界の色は文字の役割(border-danger)です。mark ではありません—— 深い面の上では mark が要件ぎりぎりまで明るい側へ寄るので、 赤のように、明るい側で彩度が落ちる色は白っぽく見えます。

ダークモード・凹んだ面での彩度
danger-markC* = 21.4(白っぽい)
dangerC* = 40.8

状態の境界は太くします。 1px では色の面積が足りず、違いが読み取りにくいためです。

境界だけで伝えません。 Field が文言も一緒に出します。

満たしていることも表せます

valid を渡すと、境界が変わり、印が出ます。

誤りとは別の仕組みで受け取ります——誤りには aria-invalid という 標準の属性がありますが、満たしていることを表す属性はありません。 そこだけ形が違うのはそのためです。

押せないときは文字が淡くなります

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

3つの状態

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

通常default.tsx

通常。凹んだ面を宣言している。

空empty.tsx

空。中身もラベルも無いとき。

エッジケースedge.tsx

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

この形では受け取れません

props

Prop

Type

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

On this page