import { Link } from "@tanstack/react-router";
import { Badge, EmptyState, RelativeTime } from "./ui/Primitives";
import type { RepoSummary } from "~/lib/types";
export function RepoList({ repos, empty = "No repositories yet." }: { repos: RepoSummary[]; empty?: string }) {
if (repos.length === 0) return <EmptyState title={empty} />;
return (
<ul className="divide-y divide-gray-800/80">
{repos.map((repo, index) => (
<li
key={repo.id}
className="animate-rise px-4 py-4"
style={{ animationDelay: `${Math.min(index, 12) * 25}ms` }}
>
<div className="flex flex-wrap items-center gap-2">
<Link
to="/$owner/$repo"
params={{ owner: repo.owner, repo: repo.name }}
className="font-mono text-[15px] font-medium text-accent-400 hover:underline"
>
<span className="text-gray-400">{repo.owner}/</span>
{repo.name}
</Link>
{repo.visibility === "private" && <Badge>Private</Badge>}
{repo.isArchived && <Badge tone="amber">Archived</Badge>}
{repo.status !== "ready" && <Badge tone="accent">{repo.status}</Badge>}
</div>
{repo.forkOf && (
<p className="mt-0.5 text-xs text-gray-500">
forked from {repo.forkOf.owner}/{repo.forkOf.name}
</p>
)}
{repo.description && <p className="mt-1.5 text-sm text-gray-400">{repo.description}</p>}
<div className="mt-2 flex flex-wrap gap-4 text-xs text-gray-500">
<span>★ {repo.starsCount}</span>
<span>⑂ {repo.forksCount}</span>
{repo.pushedAt && (
<span>
Updated <RelativeTime timestamp={repo.pushedAt} />
</span>