Shared button primitives and current action guidance.
The current shared truth supports labeled `Button` actions and icon-only `IconButton` actions. Surface emphasis should be handled through context and sanctioned variants, not route-local button clones or custom action chrome.
Current link support: internal `href` and external `href + external`
Icon-only actions
Shared `IconButton` uses the same semantic Material Symbols-backed icon set as labeled buttons.
Current icon-button sizes: `sm`, `md`, `lg`. Warning/orange utility styling can be applied with `app-button-warning`.
Usage guidance
Use when space is tight
Use `IconButton` for compact project controls, modal close actions, utility actions, and dense toolbar layouts where the action is already well understood from context.
Always provide a label
`IconButton` requires an accessible label on the control while the icon remains decorative. Shared code should continue to reference semantic icon names like `create`, `archive`, `delete`, `removeDocument`, `menu`, or `save`.
Prefer text for high-stakes actions
Keep visible text on primary or high-risk actions when clarity matters more than density, especially for irreversible flows or low-frequency actions.
Not yet standardized
Destructive button variant
There is an app-side CSS utility for danger styling, but there is no first-class destructive variant on the shared `Button` component yet.