{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "extends": "none",
  "name": "popover-controlled-example",
  "title": "Popover Controlled",
  "description": "popover-controlled-example",
  "dependencies": [
    "@heroicons/react"
  ],
  "registryDependencies": [
    "https://intentui.com/r/button",
    "https://intentui.com/r/loader",
    "https://intentui.com/r/popover",
    "https://intentui.com/r/utils"
  ],
  "files": [
    {
      "path": "src/components/examples/overlays/popover/popover-controlled-example.tsx",
      "content": "'use client'\n\nimport { TrashIcon } from '@heroicons/react/24/outline'\nimport { CheckCircleIcon } from '@heroicons/react/24/solid'\nimport { useRef, useState } from 'react'\nimport { Button } from '@/components/ui/button'\nimport { Loader } from '@/components/ui/loader'\nimport {\n  PopoverContent,\n  PopoverDescription,\n  PopoverFooter,\n  PopoverHeader,\n  PopoverTitle,\n} from '@/components/ui/popover'\nimport { wait } from '@/lib/utils'\n\nexport default function PopoverControlledDemo() {\n  const [isOpen, setIsOpen] = useState(false)\n  const [loading, setLoading] = useState<'idle' | 'loading' | 'success'>('idle')\n  const triggerRef = useRef(null)\n\n  const deleteAccount = async () => {\n    setLoading('loading')\n    await wait(3000)\n    setLoading('success')\n\n    await wait(2000)\n    setLoading('idle')\n    setIsOpen(false)\n  }\n  return (\n    <>\n      <Button ref={triggerRef} onPress={() => setIsOpen(true)} intent=\"danger\">\n        Delete Account\n      </Button>\n      <PopoverContent\n        triggerRef={triggerRef}\n        isOpen={isOpen}\n        onOpenChange={setIsOpen}\n        className=\"sm:max-w-sm\"\n      >\n        <PopoverHeader>\n          <PopoverTitle>Confirm Deletion</PopoverTitle>\n          <PopoverDescription>\n            Are you sure you want to delete your account? This action cannot be undone.\n          </PopoverDescription>\n        </PopoverHeader>\n        <PopoverFooter>\n          <Button intent=\"outline\" onPress={() => setIsOpen(false)}>\n            Cancel\n          </Button>\n          <Button\n            isDisabled={loading === 'loading'}\n            onPress={deleteAccount}\n            intent={['loading', 'idle'].includes(loading) ? 'danger' : 'primary'}\n          >\n            {loading === 'loading' ? (\n              <>\n                <Loader variant=\"spin\" />\n                Deleting...\n              </>\n            ) : loading === 'success' ? (\n              <>\n                <CheckCircleIcon />\n                Deleted\n              </>\n            ) : (\n              <>\n                <TrashIcon />\n                Delete\n              </>\n            )}\n          </Button>\n        </PopoverFooter>\n      </PopoverContent>\n    </>\n  )\n}\n",
      "type": "registry:page",
      "target": "app/popover-controlled-example/page.tsx"
    }
  ],
  "type": "registry:page"
}