Diwa Design System

Button Pure

A minimal, transparent button — icon and label only, without background or border. Use it for inline actions, contextual links, and secondary affordances where a full button would be too heavy.

Properties

NameTypeDefaultDescription
iconstring"arrow-right"Lucide icon name in kebab-case, or "none" to render no icon.
size"sm" | "md" | "lg""md"Text and icon size tier.
alignLabel"end" | "start""end"Side the label appears on relative to the icon. "end" = icon left, label right.
underlinebooleanfalseAdds underline decoration to the label text.
activebooleanfalseForces the active/pressed visual state (background pill).
stretchbooleanfalseFills the container width; icon and label pushed to opposite edges.
hideLabelbooleanfalseHides the label visually (sr-only). Always provide descriptive slot text.
disabledbooleanfalseDisables the button. Blocks all pointer and keyboard interaction.
loadingbooleanfalseShows a spinner in place of the icon. Sets aria-busy. Disables interaction.
type"button" | "submit" | "reset""button"Native button type. Ignored when href is set.
hrefstringWhen set, renders as an <a> element with link semantics.
target"_blank" | "_self" | "_parent" | "_top"Link target. Only meaningful when href is set.
namestringNative button name for form submission.
valuestringNative button value for form submission.
labelstringAccessible label override. Required when hideLabel is true and slot text is absent.
theme"dark" | "light""dark"Per-component theme override. Sets data-theme on the host element.

Events

NameDetail typeBubblesDescription
clickMouseEventYesNative DOM click event. Suppressed (preventDefault + stopPropagation) when disabled or loading.

Slots

SlotDescription
defaultButton label text. Visually hidden when hideLabel is true but always present in the accessibility tree.

CSS Parts

PartDescription
baseThe inner <button> or <a> element. Target with ::part(base) for custom styling.
labelThe <span> wrapping the label slot.
spinnerThe spinner element shown during loading.