{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "use-query",
  "title": "useQuery",
  "description": "A hook to query data",
  "files": [
    {
      "path": "registry/hooks/use-query.ts",
      "content": "'use client'\n\nimport * as React from 'react'\n\nexport function useQuery<T>(fetcher: () => Promise<T>) {\n  const [error, setError] = React.useState<Error | null>(null)\n  const [data, setData] = React.useState<T | null>(null)\n  const [status, setStatus] = React.useState<\n    'idle' | 'loading' | 'success' | 'error'\n  >('idle')\n\n  const fetch = React.useCallback(async () => {\n    setStatus('loading')\n    try {\n      const result = await fetcher()\n      setData(result)\n      setStatus('success')\n    }\n    catch (err) {\n      setError(err as Error)\n      setStatus('error')\n    }\n  }, [fetcher])\n\n  const refetch = React.useCallback(() => {\n    fetch()\n  }, [fetch])\n\n  return { data, error, status, refetch }\n}\n",
      "type": "registry:hook",
      "target": "hookas/use-query.ts"
    }
  ],
  "type": "registry:hook"
}