import { createFileRoute, Outlet } from "@tanstack/react-router";
import { SideNav, SideNavLayout, SideNavLink } from "~/ui/Nav";
import { requireSignedIn } from "~/lib/route-guards";
const NAV = [
{ to: "/$owner/$repo/settings", label: "General", exact: true },
{ to: "/$owner/$repo/settings/collaborators", label: "Collaborators", exact: false },
{ to: "/$owner/$repo/settings/branches", label: "Branch protection", exact: false },
{ to: "/$owner/$repo/settings/webhooks", label: "Webhooks", exact: false },
{ to: "/$owner/$repo/settings/integrations", label: "Integrations", exact: false },
{ to: "/$owner/$repo/settings/mirroring", label: "Mirroring", exact: false },
{ to: "/$owner/$repo/settings/secrets", label: "Actions secrets", exact: false },
{ to: "/$owner/$repo/settings/deploy-tokens", label: "Deploy tokens", exact: false },
{ to: "/$owner/$repo/settings/variables", label: "Actions variables", exact: false },
{ to: "/$owner/$repo/settings/environments", label: "Environments", exact: false },
{ to: "/$owner/$repo/settings/runners", label: "Runners", exact: false },
{ to: "/$owner/$repo/settings/containers", label: "Containers", exact: false },
{ to: "/$owner/$repo/settings/lfs", label: "Git LFS", exact: false },
{ to: "/$owner/$repo/settings/sites", label: "Sites", exact: false },
{ to: "/$owner/$repo/settings/planning", label: "Issues & discussions", exact: false },
{ to: "/$owner/$repo/settings/ai", label: "AI merge fixes", exact: false },
] as const;
export const Route = createFileRoute("/$owner/$repo/settings")({
beforeLoad: requireSignedIn,
component: RepoSettingsLayout,
});
function RepoSettingsLayout() {
const params = Route.useParams();
return (
<SideNavLayout>
<SideNav>
{NAV.map((item) => (
<SideNavLink key={item.to} to={item.to} params={params} activeOptions={{ exact: item.exact }}>
{item.label}
</SideNavLink>
))}
</SideNav>
<div className="min-w-0 space-y-6">