Implemented attributes
Boolean presence enables disabled, selected, selectable and formnovalidate, even when their text is false. Pending and expanded use their explicit string values.
label— Fallback label; child content takes precedence.aria-label— Accessible name forwarded to the native button.variant— primary (default), explicit, contextual, alternate and destructive intent.class— cem-bend-sharp, cem-bend-smooth and cem-bend-round shape utilities.size— Absent inherits the theme; small, medium, large, x-large and xx-large set minimum height.selected— Presence marks a controlled selection and sets aria-pressed=true.control-role="menuitemradio"— A single-choice menu action exposes aria-checked on its native button and keeps selected styling.selectable— Presence exposes aria-pressed=false when selected is absent; activation does not toggle it automatically.disabled— Presence disables native focus and activation.pending— true exposes aria-busy and pending feedback; false restores the resting state.expanded— true/false reflects aria-expanded; the container owns disclosure state and content.hidden— Native host visibility, including until-found.type— button (default), submit or reset.name— Native submitter name.value— Native submitter value.form— ID of an associated form, including an external form.formaction— Native submitter destination override.formmethod— Native submitter method override.formenctype— Native submitter encoding override.formtarget— Native submitter browsing-context override.formnovalidate— Presence bypasses validation for this submitter.commandfor— Native command target ID.command— Native or custom command sent by the button.popovertarget— Native popover target ID.popovertargetaction— Native show, hide or toggle.interestfor— Native interest target where supported.aria-controls— Explicit controlled region ID.aria-haspopup— Explicit popup kind.aria-describedby— Existing description references.aria-expanded— Explicit expansion state, taking precedence over expanded.command-target— @local-name or #element-id; local names use the nearest interaction-scope.interaction— Reference to shared command metadata.context-key— Item key captured with the native invocation source.
Child content replaces the fallback label. Icon-only actions need an accessible name.
Hover, hold the pointer or Space, and use Tab to compare native states.
| Intent | Sharp | Smooth | Round |
|---|---|---|---|
| primary | |||
| explicit | |||
| contextual | |||
| alternate | |||
| destructive |
The attribute sets minimum height. Long content can grow beyond that minimum; compact controls retain the native hit-area expansion.
The first two choices have container-owned selection. The remaining examples demonstrate attribute presence and command semantics.
Pending continues while disabled; disabled actions cannot activate. Reduced motion freezes animation. Forced colors retain a static indicator.
The container toggles the disclosure and native hidden state together. Expanded reflects accessibility state; it does not open content automatically.
Submit uses native validation and opens this gallery with form values in a new tab. Reset restores the input. The external submitter overrides destination, method, encoding and target and bypasses validation.
The native button opens this browser popover directly. Enter, Space and click each activate once. The action does not own visibility.
This surface uses browser popover presentation.
The browser owns modal focus containment, Escape and restoration. The action forwards show-modal without a simulated click handler.
Native popovertarget remains usable alongside commandfor in separate invokers. Do not declare both routes on one action.
Both panels have the local name details. Each action resolves only within its nearest explicit scope; generated native IDs remain explicit while scoped names repeat.