Accessibility
Button from @prepared911/ui-core renders a native <button> by default and a proper <a> when href is supplied. The element semantics do the heavy lifting; your job is to name the button clearly, pick the right element for the interaction, and keep disabled state honest.
<button> for actions, <a> for navigation.Enter and Space activate buttons; Enter activates links.disabled attribute, removing the element from the tab order.external is set, supplement the label with "(opens in new window)" via aria-label so screen-reader users hear the behavior.IconButton; don't leave a Button unnamed.aria-pressed; disclosure triggers expose aria-expanded with aria-controls.Button becomes a link when href is provided. Never use a <button> to navigate or an <a> to run an action—semantics drive assistive-tech behavior.
<button> with type="button" (or type="submit" on submit buttons).<a> with href for navigation; add rel="noopener noreferrer" for external links opened in a new window.aria-pressed on non-exclusive toggle buttons; aria-expanded + aria-controls on disclosure triggers.Prefer the native disabled attribute; it removes the button from the tab order and announces as "dimmed / disabled". Use aria-disabled="true" only when the control must remain focusable for a future tooltip-driven explanation.
aria-label that names the target ("Delete incident ABC-123") when the row isn't part of the accessible name.