形
角丸は全コンポーネントで --radius-outer と --radius-inner の 2 つの意味トークンに統一している。用途ごとに半径を発明せず、面には outer、その中の項目には inner を使う。面を入れ子にするときは、内側と外側の曲線が同じ中心を共有するよう、半径と余白の関係で決める。
2つの意味トークン
角丸に使うトークンは 2 つだけ。独立した面には --radius-outer、面の中で繰り返される項目には --radius-inner。Button・Card・Tabs をはじめ 19 のコンポーネントがこの 2 つに接続していて、 用途ごとに半径を発明しない。現在は outer が rounded-md (8px)、inner が rounded-sm (6px)。
| トークン | 現在値 | 用途 |
|---|---|---|
| --radius-outer | rounded-md (8px) | 独立した面。Button・Card・Input・Popover など、それ自体で完結する要素の外枠。 |
| --radius-inner | rounded-sm (6px) | 面の中で繰り返される項目。メニュー項目・TabsTrigger など、外枠の内側に並ぶ要素。 |
コンポーネントでは rounded-(--radius-outer) または rounded-(--radius-inner) と記述する。これらの意味トークンは --radius-outer が --radius-md、--radius-inner が --radius-sm に接続していて、値の変更はこの 2 行だけで全体に伝わる。
rounded-(--radius-outer)那覇市 / 正社員
rounded-(--radius-outer)TabsTrigger = rounded-(--radius-inner)半径は余白の分だけ大きくする
外側の角から内側の角までが一定の距離なら、2本の曲線は平行になる。角だけが太ったり細ったりせず、四辺と同じ厚みに見える。
- 外側
- コンテナの rounded トークン
- 内側
- 子要素の rounded トークン
- padding
- 間を空ける p-* トークン
対応する外側トークン
内側の rounded と間隔の p-* が交わるセルを、外側の rounded に使う。「一致なし」の組み合わせは、内側か間隔を変更する。
| 内側 | p-0.5 | p-1 | p-2 |
|---|---|---|---|
| rounded-sm | rounded-md | rounded-lg | rounded-xl |
| rounded-md | rounded-lg | 一致なし | 一致なし |
| rounded-lg | 一致なし | rounded-xl | rounded-2xl |
| rounded-xl | 一致なし | rounded-2xl | rounded-3xl |
| rounded-2xl | 一致なし | rounded-3xl | rounded-4xl |
| rounded-3xl | 一致なし | rounded-4xl | 一致なし |
Tabs に当てはめる
TabsTrigger の --radius-inner は rounded-sm、その周りの TabsList が p-1 なので、TabsList は rounded-lgにする。選択されたタブと背景の曲線が同じ流れになる。
不一致になる組み合わせ
外側が小さすぎても、大きすぎても曲線は揃わない。対応表にない組み合わせへ近いトークンを無理に当てるのも避ける。
p-1 に対して、左の外側は丸みが足りない
rounded-md / p-1 / rounded-smrounded-lg / p-1 / rounded-smp-2 に対して、左の外側は丸みが足りない
rounded-lg / p-2 / rounded-smrounded-xl / p-2 / rounded-smp-2 に対して、左の外側は丸みが大きすぎる
rounded-2xl / p-2 / rounded-smrounded-xl / p-2 / rounded-smrounded-md + p-1 には対応する外側がないため、内側を変更する
rounded-xl / p-1 / rounded-mdrounded-xl / p-1 / rounded-lgrounded-full — 円形・トラック形状
Avatar、Switch、Slider、Progress、RadioGroup など、円とトラック(細長い丸)にはスケールでなく rounded-full を使う。ここだけは意味トークンの外側にある。