Components / Buttons

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.

Variants

Sizes and link modes

Current sizes: `md`, `lg`

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.