Foundation ComponentReact 18 & 19Zero Runtime CSS

Button

A clear next step. Native button behavior with sizes, tones and loading feedback.

Interactive preview

Usage

import { Button } from "@devvy-ui/react";

<Button loading={saving} onClick={save}>Save changes</Button>

API reference

Native HTML attributes, className, style and a forwarded ref are supported. Component-specific props:

PropTypeDefaultDescription
variantsolid | outline | ghostsolidVisual emphasis.
tonebrand | neutral | dangerbrandSolid background tone. Outline and ghost use neutral text.
sizesm | md | lgmdControl dimensions.
loadingbooleanfalseShows a spinner, sets aria-busy and disables activation.

Accessibility & behavior

Platform Behavior & Guidelines

Defaults to type="button". Set type="submit" inside forms. Keep a clear accessible name during loading.

Source ownership

Add the audited implementation directly into your repository with the CLI:

node /path/to/devvy-ui/packages/cli/src/cli.mjs add button

Make the source yours.

Start from the canonical implementation used by the package and registry. Change the code, keep the MIT notice, and build the behavior your project needs.

Button.tsxREACT / TSX

Edit your own copy. Downloaded source uses your changes; the component preview above uses the shipped version. Run the source installer first to include shared helpers.