Buttons are interactive elements that allow the user to perform an action on the page or serve as a prominent hyperlink.
href to render a Button as a link for CTA use cases — the component renders as an anchor automatically.isIconOnly) — renders only the icon with reduced padding. Use in condensed layouts or for menus and dropdowns. Requires icon or iconSrc.href) — renders as an anchor element. Use for calls-to-action that navigate.variant="primary" — the most important action on the page. Limit to one per page.variant="secondary" — lesser important actions. Multiple allowed per page.variant="subtle" — the least important action (referred to as "Tertiary" in design language).size="md" — default size for most use cases.size="sm" — for smaller screens or less prominent actions.icon — renders a Pluma icon by name. Leading position by default.iconPosition="trailing" — places the icon after the label.iconSrc — renders a custom image icon by URL. Sizing matches Pluma icons.isLoading) — displays a spinner overlay and blocks interaction.autoLoading, default true) — automatically shows a spinner when onClick returns a promise.isDisabled) — prevents interaction and applies lighter colors across all variants.isDanger) — applies critical color treatment for destructive actions. Works with all variants.isActive) — applies the hover/active visual state programmatically.variant="subtle". The literal value "tertiary" also exists but maps to a different internal style. Use variant="subtle" for the Tertiary design intent.unsafe_withSoftDeprecatedSecondaryVariant — when true, the secondary variant renders with tertiary styling. Used during the layout refresh transition. Can also be set globally via PlumaProvider component config.isError is deprecated — use isDanger instead.unsafe_isActive is deprecated — use isActive instead.children for the label text. Ember uses {{yield}} (default block) via <PlumaButton>Label</PlumaButton>.<button type="button"> by default. When href is provided, it renders as a PlainLink anchor element instead.