Button
Five variants, three sizes, pill by default. The primary variant carries a glow token so there is exactly one obvious action per view — if two of them are on screen, the design is wrong, not the component.
Variants
Sizes
Heights come from --field-h-sm / --field-h / --field-h-lg, which are density tokens. Switch to Compact in the header and every button shortens without a single prop changing.
With icons
Disabled
Opacity plus pointer-events, and the glow is removed — a disabled primary that still glows reads as available.
API
variant'primary' | 'secondary' | 'outline' | 'ghost' | 'danger''primary'size'sm' | 'md' | 'lg''md'iconboolean — square icon-only button, needs aria-label—squareboolean — corner radius instead of pill—…restAll native <button> props, ref forwarded—