{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "choice",
  "title": "Choice",
  "description": "A callable dialog that waits for a selection.",
  "dependencies": [
    "react-call"
  ],
  "registryDependencies": [
    "dialog",
    "button"
  ],
  "files": [
    {
      "path": "ui/choice.tsx",
      "content": "'use client'\n\n\nimport { createCallable } from 'react-call'\n\nimport { Button } from '@/components/ui/button'\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n} from '@/components/ui/dialog'\n\nexport interface ChoiceOption {\n  label: string\n  value: string\n  description?: string\n}\n\nexport interface ChoiceProps {\n  title: string\n  description?: string\n  options: ChoiceOption[]\n}\n\nexport const Choice = createCallable<ChoiceProps, string | null>(\n  ({ call, title, description, options }) => (\n    <Dialog open={!call.ended} onOpenChange={(open) => !open && call.end(null)}>\n      <DialogContent>\n        <DialogHeader>\n          <DialogTitle>{title}</DialogTitle>\n          {description && <DialogDescription>{description}</DialogDescription>}\n        </DialogHeader>\n        <div className=\"grid gap-2\">\n          {options.map((option) => (\n            <Button\n              key={option.value}\n              variant=\"outline\"\n              className=\"h-auto flex-col items-start gap-0.5 whitespace-normal py-2.5 text-left\"\n              onClick={() => call.end(option.value)}\n            >\n              <span className=\"font-medium\">{option.label}</span>\n              {option.description && (\n                <span className=\"text-muted-foreground text-xs\">{option.description}</span>\n              )}\n            </Button>\n          ))}\n        </div>\n      </DialogContent>\n    </Dialog>\n  ),\n  200,\n)\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:component"
}
