Viora LogoViora UI
Login

Action Button

An animated action button with character-level spring transitions, drawn checkmark, and morphing width.

action-button.tsx
Loading source code...

Installation

pnpm dlx viora-ui@latest add action-button
npx viora-ui@latest add action-button
yarn viora-ui@latest add action-button
bunx --bun viora-ui@latest add action-button

Usage

import { ActionButton } from "@/components/arc/action-button/action-button";

export function PublishButton() {
  return (
    <ActionButton
      label="Publish"
      pendingLabel="Publishing"
      successLabel="Published"
      onAction={publish}
      onActionError={error => toast.error(String(error))}
    />
  );
}

API Reference

ActionButton

PropTypeDefaultDescription
labelstring—The resting label text.
pendingLabelstring"Saving"Text shown while the async action resolves.
successLabelstring"Saved"Text shown upon success with drawn tick.
onAction() => void | Promise<void>—Async handler triggered on click.
resetAfterMsnumber2400Delay in ms before returning to idle.
onActionError(error: unknown) => void—Callback triggered if onAction throws.

Built by Otis

Last updated: 10/12/2026