Skip to content

ConfirmAction

Review a consequential action, execute the actual promise and recover from failure.

Live — this one is real

Usage

import { useState } from "react";
import { ConfirmAction } from "mizu-ui";

export function Example() {
  const [archived, setArchived] = useState(false);
  return archived ? (
    <p role="status">Draft archived on this device.</p>
  ) : (
    <ConfirmAction
      label="Archive draft"
      title="Archive this draft?"
      confirmLabel="Archive"
      action={async () => {
        localStorage.setItem("mizu-demo-archived", "true");
      }}
      onSuccess={() => setArchived(true)}
    >
      The draft leaves your active list. This demonstration stores the result
      locally.
    </ConfirmAction>
  );
}

Source & setup

Import mizu-ui/styles.css once. Fonts are optional via mizu-ui/fonts.css. Override --mizu-* tokens or use className for local styling. Uses native React and CSS; install the package peers for root imports.

Inspect interaction/ConfirmAction.tsx

Source is included in the npm package under src/interaction/ConfirmAction.tsx.

Open full source ↗

Props

PropTypeDefaultDescription
label / title / confirmLabelstring—Trigger, modal name and final action.
action(signal: AbortSignal) => Promise<unknown>—Actual transaction; honor the signal for cancellation.
onSuccess / childrenfunction / ReactNode—Completion callback and review content.

Accessibility

Native modal focus containment and restoration. Pending execution blocks duplicates; failure stays open for retry. Cancel/Escape unmount the action and abort its signal.

Motion

Modal entrance respects reduced motion.

Works alongside