{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "github-issues",
  "title": "GitHub Issues",
  "description": "Displays the count of open issues.",
  "dependencies": [
    "lucide-react"
  ],
  "registryDependencies": [
    "button",
    "skeleton"
  ],
  "files": [
    {
      "path": "registry/github-stats/github-issues.tsx",
      "content": "import * as React from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { CircleDotIcon } from \"lucide-react\";\n\nexport function GithubIssues({ repo }: { repo: string }) {\n  return (\n    <Button\n      nativeButton={false}\n      size=\"sm\"\n      variant=\"ghost\"\n      className=\"h-8 shadow-none group\"\n      render={\n        <a\n          href={`https://github.com/${repo}`}\n          target=\"_blank\"\n          rel=\"noreferrer\"\n        />\n      }\n    >\n      <CircleDotIcon className=\"group-hover:scale-110 transition-transform duration-200 ease-out\" />\n      <React.Suspense fallback={<Skeleton className=\"h-4 w-10\" />}>\n        <IssuesCount repo={repo} />\n      </React.Suspense>\n    </Button>\n  );\n}\n\nexport async function IssuesCount({ repo }: { repo: string }) {\n  const data = await fetch(\n    `https://api.github.com/search/issues?q=repo:${repo}+is:issue+is:open`,\n    {\n      next: { revalidate: 86400 }, // Cache for 1 day (86400 seconds)\n    },\n  );\n  const json: { total_count: number } = await data.json();\n\n  return (\n    <p className=\"text-xs text-muted-foreground/70 group-hover:text-muted-foreground transition-colors duration-200 ease-out\">\n      <span className=\"tabular-nums\">\n        {json.total_count >= 1000\n          ? `${(json.total_count / 1000).toFixed(1)}k`\n          : json.total_count.toLocaleString()}\n      </span>{\" \"}\n      issues\n    </p>\n  );\n}\n",
      "type": "registry:component"
    }
  ],
  "type": "registry:block"
}