{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "confirm",
  "title": "Confirm",
  "description": "Awaitable yes/no confirmation built on react-call and alert-dialog.",
  "dependencies": [
    "react-call"
  ],
  "registryDependencies": [
    "alert-dialog"
  ],
  "files": [
    {
      "path": "ui/confirm.tsx",
      "content": "'use client'\n\n\nimport { createCallable } from 'react-call'\n\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n} from '@/components/ui/alert-dialog'\n\nexport interface ConfirmProps {\n  title: string\n  description?: string\n  confirmLabel?: string\n  cancelLabel?: string\n  variant?: 'default' | 'destructive'\n}\n\nexport const Confirm = createCallable<ConfirmProps, boolean>(\n  ({\n    call,\n    title,\n    description,\n    confirmLabel = 'Confirm',\n    cancelLabel = 'Cancel',\n    variant = 'default',\n  }) => (\n    <AlertDialog open={!call.ended} onOpenChange={(open) => !open && call.end(false)}>\n      <AlertDialogContent>\n        <AlertDialogHeader>\n          <AlertDialogTitle>{title}</AlertDialogTitle>\n          {description && <AlertDialogDescription>{description}</AlertDialogDescription>}\n        </AlertDialogHeader>\n        <AlertDialogFooter>\n          <AlertDialogCancel onClick={() => call.end(false)}>{cancelLabel}</AlertDialogCancel>\n          <AlertDialogAction variant={variant} onClick={() => call.end(true)}>\n            {confirmLabel}\n          </AlertDialogAction>\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialog>\n  ),\n  200,\n)\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:component"
}
