import { useParams, Link } from "react-router-dom"; import { ArrowLeft } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { PageHeader } from "@/components/common/page-header"; import { ErrorState } from "@/components/common/error-state"; import { Spinner } from "@/components/common/spinner"; import { VisibilityBadge } from "@/components/common/badges"; import { useRepository, useDeleteRepository } from "./repos-hooks"; import { useMembers } from "./repo-detail-hooks"; import { RepoProvider } from "./repo-context.tsx"; import { computeAccess, canWriteWith, canManageWith } from "./repo-context"; import { RepoOverview } from "./tabs/RepoOverview"; import { Members } from "./tabs/Members"; import { Structure } from "./tabs/Structure"; import { Packages } from "./tabs/Packages"; import { AptConfig } from "./tabs/AptConfig"; import { useMe } from "@/hooks/use-server"; import { useAuthStore } from "@/stores/auth"; export function RepoDetail() { const { repo, tab } = useParams<{ repo: string; tab?: string }>(); const token = useAuthStore((s) => s.token); const me = useMe(!!token); const { data, isLoading, isError, error } = useRepository(repo ?? ""); const members = useMembers(repo ?? ""); const del = useDeleteRepository(); if (isLoading) { return (