import { createFileRoute, useNavigate } from "@tanstack/react-router"; import { z } from "zod"; import { deleteOwnerValue, getOwnerActionsConfig, listActionsOwners, setOwnerValue } from "~/fns/action-config"; import { useAction } from "~/hooks/use-action"; import { ConfigValueList } from "~/components/ConfigValueList"; import { SelectField, TextField } from "~/ui/Field"; import { Heading } from "~/ui/Heading"; const VISIBILITY = [ { value: "all", label: "All repositories" }, { value: "private", label: "Private repositories" }, { value: "selected", label: "Selected repositories" }, ] as const; const visibilitySchema = z.enum(["all", "private", "selected"]); export const Route = createFileRoute("/settings/actions")({ validateSearch: z.object({ owner: z.string().optional() }), loaderDeps: ({ search }) => search, loader: async ({ deps }) => { const owners = await listActionsOwners(); const owner = deps.owner && owners.includes(deps.owner) ? deps.owner : owners[0]; return { owners, config: await getOwnerActionsConfig({ data: { owner } }) }; }, component: OwnerActionsPage, }); function describe(visibility: string, repos: string[]): string { if (visibility === "selected") return repos.length ? `Repos: ${repos.join(", ")}` : "No repositories"; return visibility === "private" ? "Private repositories" : "All repositories"; } function AccessFields({ repos, listId }: { repos: string[]; listId: string }) { return (
Shared by repositories owned by this account, with per-value repository access policies.