import { createFileRoute } from "@tanstack/react-router";
import { deleteIssueType, listIssueTypes, saveIssueType } from "~/fns/milestones";
import { listDiscussions } from "~/fns/discussions";
import { deleteDiscussionCategory, saveDiscussionCategory } from "~/fns/discussion-admin";
import { useAction } from "~/hooks/use-action";
import { EmptyState } from "~/ui/EmptyState";
import { LabelChip } from "~/ui/LabelChip";
import { Panel } from "~/ui/Panel";
import { Button } from "~/ui/Button";
import { CheckboxField, TextField } from "~/ui/Field";
import { ErrorBanner } from "~/ui/Callout";
const DEFAULT_COLOR = "f6821f";
export const Route = createFileRoute("/$owner/$repo/settings/planning")({
loader: async ({ params }) => {
const ref = { owner: params.owner, repo: params.repo };
const [types, discussions] = await Promise.all([
listIssueTypes({ data: ref }),
listDiscussions({ data: { ...ref, page: 1 } }),
]);
return { types, categories: discussions.categories };
},
component: PlanningSettings,
});
function IssueTypes() {
const { types } = Route.useLoaderData();
const params = Route.useParams();
const save = useAction(saveIssueType);
const remove = useAction(deleteIssueType);
return (
{types.length === 0 ? (
) : (
{types.map((type) => (
-
{type.description}
))}
)}
);
}
function Categories() {
const { categories } = Route.useLoaderData();
const params = Route.useParams();
const save = useAction(saveDiscussionCategory);
const remove = useAction(deleteDiscussionCategory);
return (
{categories.map((category) => (
-
{category.emoji}
{category.name}
{category.description}
{category.answerable && answers}
))}
);
}
function PlanningSettings() {
return (
<>
>
);
}