Radius
Corners grow with the size of the surface.
const RADII = [
{
name: "rounded-xs",
value: "5px",
className: "h-16 bg-control rounded-xs",
usage: "Badges, kbd, xs controls.",
},
{
name: "rounded-sm",
value: "6px",
className: "h-16 bg-control rounded-sm",
usage: "Rows, nav items, sm and md controls, menu items.",
},
{
name: "rounded-md",
value: "8px",
className: "h-16 bg-control rounded-md",
usage: "lg controls, inputs, tooltips, row panels.",
},
{
name: "rounded-lg",
value: "10px",
className: "h-16 bg-control rounded-lg",
usage: "Menus and popovers, stat tiles.",
},
{ name: "rounded-xl", value: "12px", className: "h-16 bg-control rounded-xl", usage: "Panels." },
{
name: "rounded-full",
value: "9999px",
className: "h-16 bg-control rounded-full",
usage: "Pills, action bar, avatars, dots.",
},
];
export default function Radius() {
return (
<div className="grid grid-cols-3 gap-4 bg-default font-sans text-body-md text-default">
{RADII.map((radius) => (
<div className="flex flex-col gap-2" key={radius.name}>
<div className={radius.className} />
<div className="flex items-baseline justify-between">
<code className="font-medium">{radius.name}</code>
<span className="text-body-md text-muted tabular-nums">{radius.value}</span>
</div>
<span className="text-body-md text-muted">{radius.usage}</span>
</div>
))}
</div>
);
}
A nested surface uses a smaller radius than its container, never the same one.
Marks too small for the scale keep a fixed radius below rounded-xs: 4px for checkboxes and the xs square avatar, 3px for waterfall bars, 2px for meter swatches and waterfall error markers.