78 lines · 2.9 KB
import { createFileRoute, Link } from "@tanstack/react-router";
import { getAdvisories } from "~/fns/advisories";
import { SeverityBadge } from "~/components/security/SeverityBadge";
import { buttonClass } from "~/ui/Button";
import { Badge } from "~/ui/Badge";
import { EmptyState } from "~/ui/EmptyState";
import { Panel } from "~/ui/Panel";
import { RelativeTime } from "~/ui/RelativeTime";

export const Route = createFileRoute("/$owner/$repo/security/advisories/")({
  loader: ({ params }) => getAdvisories({ data: { owner: params.owner, repo: params.repo } }),
  component: AdvisoriesPage,
});

const STATE_TONES = { triage: "warning", draft: "neutral", published: "success", closed: "neutral" } as const;

function AdvisoriesPage() {
  const { advisories, canManage, canReport } = Route.useLoaderData();
  const params = Route.useParams();
  const actions = (
    <>
      {canReport && (
        <Link
          to="/$owner/$repo/security/advisories/new"
          params={params}
          search={{ mode: "report" }}
          className={buttonClass("secondary", "sm")}
        >
          Report a vulnerability
        </Link>
      )}
      {canManage && (
        <Link
          to="/$owner/$repo/security/advisories/new"
          params={params}
          search={{ mode: "draft" }}
          className={buttonClass("primary", "sm")}
        >
          New draft advisory
        </Link>