ActionsComponentBeta

Button.

A little push. A clear next step.

A button turns intent into action. Choose the right emphasis, give it a clear label, and let the details do their work.

Make it yours

Preparing the example…

PROPERTIES7

A place to start

Usage

Import the stylesheet once at your application root. This complete example reflects the properties selected above.

Loading example…

A spectrum of emphasis

Examples & states

Use one solid action to lead. Let the quieter variants support it.

The finer details

API reference

Generated from Dixy’s local TypeScript interfaces. Native and Base UI Button props are forwarded; this table covers the options Dixy adds.

Button

PropType / descriptionDefault
material"matte" | "glossy" | "soft" | "metal" | "paper"

Optional finish for solid/soft variants; requires materials.css. Inherits Theme.

—
shape"rounded" | "pill" | "square"

Geometry independent of emphasis. Inherits Theme; focus remains outside.

—
size"sm" | "md" | "lg"

The height and horizontal padding.

md
variant"soft" | "solid" | "outline" | "ghost"

The visual emphasis.

solid
color"neutral" | "accent" | "danger" | "success"

The semantic color palette.

accent
loadingboolean

Show progress and prevent repeated activation.

false

IconButton

PropType / descriptionDefault
aria-label*string

Required accessible name for the icon-only action.

—
Explore the full Base UI API

Built from the same foundations

Styling tokens

Change Theme settings above to compare appearance, accent, neutral, radius, spacing density, motion and direction. Override component aliases on a Theme root so custom properties follow portaled content too. The wrapper merges className, style, refs and render composition with its owning primitive.

TokenPurpose
--dixy-button-primary-backgroundThe component-specific starting point.
--dixy-font-label-mdControl label font and line height; body roles remain readable in text inputs.
--dixy-color-background-selectedSelected surfaces use semantic color across appearances.
--dixy-color-border-focusFocus indication remains visible independently of shadows.
--dixy-spacing-inset-smDensity-aware component padding.
--dixy-motion-transition-feedbackShort state feedback, reduced by the inherited motion setting.
Explore theme customization

Consider everyone

Accessibility

Use a verb that explains the action. IconButton requires an aria-label. Loading communicates aria-busy and disables activation; keep a visible label. For navigation, use render with an anchor, nativeButton={false}, and role="link" so its semantics match its purpose.

TabMove focus to the button.
Enter / SpaceActivate the focused button.

Target: WCAG 2.2 AA. Automated tests cover selected behavior; manual screen-reader, contrast, and zoom validation remain part of the release checklist.

THE THINKING BEHIND IT

Build it. Then understand it.

The wrapper adds a visual API while forwarding Base UI props and refs. Loading changes behavior as well as appearance: it must prevent duplicate actions.

A token to follow--dixy-button-primary-background

Nothing up our sleeves

Source
UP NEXTText Field