{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "aurora-ai-confirmation",
  "title": "Aurora AI Confirmation",
  "author": "jmagar <https://github.com/jmagar>",
  "description": "Aurora-native confirmation parity surface from AI Elements.",
  "dependencies": [
    "lucide-react@^0.487.0"
  ],
  "registryDependencies": [
    "@aurora/aurora-tokens",
    "@aurora/aurora-ai-elements",
    "@aurora/aurora-components"
  ],
  "files": [
    {
      "path": "registry/aurora/blocks/ai/elements/confirmation.tsx",
      "content": "\"use client\"\n\n/**\n * Aurora Confirmation — operator approve/cancel gate for a risky action.\n *\n * Visual layer is ported 1:1 from the Claude Design source (icon badge, intent\n * tint, sunken detail list, right-aligned action row). Architecture stays\n * shadcn/Aurora: `forwardRef`, `displayName`, `React.memo`, full\n * `React.HTMLAttributes` spread, and the Radix/cva `Button` for actions.\n *\n * This file deliberately re-implements `Confirmation` (rather than re-exporting\n * the legacy `core` version) so it can carry CD's `intent` + `details` API while\n * keeping every architectural guarantee. Token-only colors (`--aurora-*`); no\n * hardcoded hex; no `violet`.\n */\n\nimport * as React from \"react\"\nimport { ChevronRight, CircleAlert, TriangleAlert } from \"lucide-react\"\nimport { Button } from \"@/registry/aurora/ui/button\"\n\nexport type ConfirmationIntent = \"default\" | \"danger\"\n\nexport interface ConfirmationProps extends React.HTMLAttributes<HTMLDivElement> {\n  title: string\n  description?: string\n  /** Optional list of statements/lines previewing exactly what will run. */\n  details?: React.ReactNode[]\n  /** `danger` swaps the icon to a triangle-alert and uses destructive action styling. */\n  intent?: ConfirmationIntent\n  confirmLabel?: string\n  cancelLabel?: string\n  onConfirm?: React.MouseEventHandler<HTMLButtonElement>\n  onCancel?: React.MouseEventHandler<HTMLButtonElement>\n}\n\n// Styles: registry/aurora/styles/aurora-components.css (@layer aurora-components).\n\nconst Confirmation = (\n    { ref,\n      title,\n      description,\n      details,\n      intent = \"default\",\n      confirmLabel = \"Approve\",\n      cancelLabel = \"Cancel\",\n      onConfirm,\n      onCancel,\n      className,\n      ...props\n    }: ConfirmationProps & { ref?: React.Ref<HTMLDivElement> }\n  ) => {\n    const reactId = React.useId()\n    const titleId = `${reactId}-title`\n    const descriptionId = description ? `${reactId}-description` : undefined\n    const Icon = intent === \"danger\" ? TriangleAlert : CircleAlert\n    const cls = [\n      \"aurora-confirm\",\n      intent === \"danger\" && \"aurora-confirm--danger\",\n      className,\n    ]\n      .filter(Boolean)\n      .join(\" \")\n\n    return (\n      <div\n        ref={ref}\n        className={cls}\n        role=\"alertdialog\"\n        aria-labelledby={titleId}\n        aria-describedby={descriptionId}\n        {...props}\n      >\n        <div className=\"aurora-confirm__head\">\n          <span className=\"aurora-confirm__badge\" aria-hidden>\n            <Icon className=\"size-6\" aria-hidden />\n          </span>\n          <div className=\"aurora-confirm__text\">\n            <h3 id={titleId} className=\"aurora-confirm__title\">{title}</h3>\n            {description ? <p id={descriptionId} className=\"aurora-confirm__desc\">{description}</p> : null}\n          </div>\n        </div>\n\n        {details && details.length > 0 ? (\n          <div className=\"aurora-confirm__details\">\n            {details.map((detail, index) => (\n              <div className=\"aurora-confirm__detail\" key={index}>\n                <ChevronRight className=\"aurora-confirm__chevron size-3.5\" aria-hidden />\n                <span>{detail}</span>\n              </div>\n            ))}\n          </div>\n        ) : null}\n\n        <div className=\"aurora-confirm__actions\">\n          <Button type=\"button\" variant=\"neutral\" size=\"sm\" onClick={onCancel}>\n            {cancelLabel}\n          </Button>\n          <Button type=\"button\" variant={intent === \"danger\" ? \"destructive\" : \"aurora\"} size=\"sm\" onClick={onConfirm}>\n            {confirmLabel}\n          </Button>\n        </div>\n      </div>\n    )\n  }\nConfirmation.displayName = \"Confirmation\"\n\nconst MemoConfirmation = React.memo(Confirmation)\nMemoConfirmation.displayName = \"Confirmation\"\n\nexport { MemoConfirmation as Confirmation }\nexport default MemoConfirmation\n",
      "type": "registry:component",
      "target": "@components/aurora/ai/confirmation.tsx"
    }
  ],
  "meta": {
    "namespace": "@aurora",
    "style": "aurora",
    "family": "block",
    "requiresTokens": true,
    "sourcePath": "registry/aurora/blocks/ai/elements/confirmation.tsx",
    "installTarget": "@components/aurora/ai/confirmation.tsx",
    "taxonomy": "ai"
  },
  "docs": "Aurora block that installs Aurora AI Confirmation.\n\nInstall `aurora-tokens`, `aurora-ai-elements`, and `aurora-components` first; the shadcn CLI resolves these automatically through the @aurora registry namespace.\n\nDefault install target: `@components/aurora/ai/confirmation.tsx`.\n\nRegistry dependencies: `aurora-tokens`, `aurora-ai-elements`, `aurora-components`.",
  "categories": [
    "aurora",
    "block",
    "ai"
  ],
  "type": "registry:block"
}