// The button family's shared scale: the one place a box's geometry (height, // horizontal padding, corner radius), its adornment gap and its label type ramp // are decided. A flat Button, an elevated chip and a ButtonSwap at the same // `size` are therefore the same box with the same text inside it, and a row of // mixed types lines up. // // The geometry itself lives in theme/tokens.css (`--spacing-interactive-*`, // `--spacing-interactive-pad-*`) and lib/radius.ts (`INTERACTIVE_HEIGHT`, // `INTERACTIVE_RADIUS`) — the classes below only name those tokens, so a // consumer retunes the whole family by overriding one custom property rather // than by passing a class to every button. BUTTON_METRICS mirrors the same // number for the effect layers that need a number instead of a class: a pill // rounds to half its height, and ElevatedButton's SVG rim has to follow the same // curve as the Pressable, which can't read a class. // // BUTTON_SIZE is the single table every interactive control in the family reads: // its `box` is the hugging label box a Button wears, its `square` is the box an // IconButton (and `