import { createFileRoute } from "@tanstack/react-router";
import { useState } from "react";
import {
changeAdvisoryState,
commentOnAdvisory,
editAdvisory,
getAdvisory,
updateAdvisoryCollaborator,
} from "~/fns/advisories";
import { useAction } from "~/hooks/use-action";
import { AdvisoryForm } from "~/components/security/AdvisoryForm";
import type { AdvisoryValues } from "~/components/security/AdvisoryForm";
import { SeverityBadge } from "~/components/security/SeverityBadge";
import { MarkdownEditor } from "~/components/MarkdownEditor";
import { Button } from "~/ui/Button";
import { TextField } from "~/ui/Field";
import { ErrorBanner } from "~/ui/Callout";
import { Avatar } from "~/ui/Avatar";
import { Badge } from "~/ui/Badge";
import { Markdown } from "~/ui/Markdown";
import { Panel } from "~/ui/Panel";
import { RelativeTime } from "~/ui/RelativeTime";
import { Heading } from "~/ui/Heading";
export const Route = createFileRoute("/$owner/$repo/security/advisories/$ghsaId")({
loader: ({ params }) => getAdvisory({ data: { owner: params.owner, repo: params.repo, ghsaId: params.ghsaId } }),
component: AdvisoryPage,
});
type Advisory = Awaited<ReturnType<typeof getAdvisory>>;
const NEXT_STATES = {
triage: [
{ state: "draft", label: "Accept as draft" },
{ state: "closed", label: "Close report" },
],
draft: [
{ state: "published", label: "Publish advisory" },
{ state: "closed", label: "Close" },
],