{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "github-contribution-list",
  "title": "GitHub Contribution List",
  "author": "Om Patil <patilom1906@gmail.com>",
  "description": "List authored pull requests with merged, open, and closed states.",
  "dependencies": [
    "lucide-react"
  ],
  "registryDependencies": [
    "https://heyompatil.me/r/get-github-data.json"
  ],
  "files": [
    {
      "path": "src/registry/components/github-contribution-list/github-contribution-list.tsx",
      "content": "import {\n  GitMergeIcon,\n  GitPullRequestClosedIcon,\n  GitPullRequestIcon,\n} from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport type {\n  GitHubContribution,\n  GitHubContributionState,\n} from \"@/registry/lib/get-github-data/github-data\"\n\nconst STATE_META: Record<\n  GitHubContributionState,\n  { label: string; icon: typeof GitPullRequestIcon; className: string }\n> = {\n  merged: {\n    label: \"Merged\",\n    icon: GitMergeIcon,\n    className: \"text-violet-700 dark:text-violet-400\",\n  },\n  open: {\n    label: \"Open\",\n    icon: GitPullRequestIcon,\n    className: \"text-green-700 dark:text-green-500\",\n  },\n  closed: {\n    label: \"Closed\",\n    icon: GitPullRequestClosedIcon,\n    className: \"text-red-700 dark:text-red-400\",\n  },\n}\n\nexport type GitHubContributionListProps = React.ComponentProps<\"ul\"> & {\n  contributions: GitHubContribution[]\n}\n\nexport function GitHubContributionList({\n  contributions,\n  className,\n  ...props\n}: GitHubContributionListProps) {\n  if (contributions.length === 0) {\n    return (\n      <p className={cn(\"p-4 text-sm text-muted-foreground\", className)}>\n        No contributions.\n      </p>\n    )\n  }\n\n  return (\n    <ul className={cn(\"divide-y divide-line\", className)} {...props}>\n      {contributions.map((contribution) => {\n        const meta = STATE_META[contribution.state]\n        const Icon = meta.icon\n\n        return (\n          <li\n            key={contribution.id}\n            className=\"relative flex items-center gap-4 p-4 transition-colors hover:bg-accent-muted\"\n          >\n            <Icon\n              className={cn(\"size-4 shrink-0\", meta.className)}\n              aria-hidden\n            />\n\n            <div className=\"min-w-0 flex-1\">\n              <h3 className=\"truncate leading-snug font-medium\">\n                <a\n                  className=\"absolute inset-0\"\n                  href={contribution.url}\n                  target=\"_blank\"\n                  rel=\"noopener\"\n                  aria-label={`Open pull request: ${contribution.title}`}\n                >\n                  <span className=\"sr-only\">{contribution.title}</span>\n                </a>\n                {contribution.title}\n              </h3>\n              <p className=\"truncate text-sm text-muted-foreground\">\n                {contribution.repo}\n              </p>\n            </div>\n\n            <span\n              className={cn(\n                \"shrink-0 text-sm font-medium tabular-nums\",\n                meta.className\n              )}\n            >\n              {meta.label}\n            </span>\n          </li>\n        )\n      })}\n    </ul>\n  )\n}\n",
      "type": "registry:component",
      "target": "@components/github-contribution-list.tsx"
    }
  ],
  "docs": "https://heyompatil.me/components/github-contribution-list",
  "categories": [
    "data-display"
  ],
  "type": "registry:component"
}