import { useState, type FormEvent } from "react"; import { NavLink, Navigate, useParams } from "react-router-dom"; import { useTranslation } from "react-i18next"; import type { components } from "../api/schema"; import { useAuthorities, useCreateAuthority } from "../api/queries"; import { LabelEditor } from "../components/label-editor"; import { Button } from "@/components/ui/button"; import { PageTitle } from "@/components/ui/page-title"; import { ListSkeleton } from "@/components/ui/skeletons"; import { AuthorityRow } from "./authority-row"; import { useDocumentTitle } from "../lib/use-document-title"; import { useBreadcrumb } from "../shell/use-breadcrumb"; type LabelInput = components["schemas"]["LabelInput"]; const KINDS = ["person", "organisation", "place"] as const; export function AuthoritiesPage() { const { t, i18n } = useTranslation(); const { kind } = useParams(); const lang = i18n.language.startsWith("sv") ? "sv" : "en"; const isValidKind = (KINDS as readonly string[]).includes(kind ?? ""); const currentKind = isValidKind ? (kind as string) : "person"; const { data: authorities, isLoading, isError } = useAuthorities(currentKind); const create = useCreateAuthority(); const [labels, setLabels] = useState([]); const [error, setError] = useState(false); useDocumentTitle(t("nav.authorities")); useBreadcrumb([{ label: t("nav.authorities") }]); if (!isValidKind) return ; const onCreate = (event: FormEvent) => { event.preventDefault(); if (!labels.some((l) => l.label)) { setError(true); return; } setError(false); create.mutate( { kind: kind as string, external_uri: null, labels }, { onSuccess: () => setLabels([]) }, ); }; return (
{t("nav.authorities")}
{KINDS.map((k) => ( `rounded-md px-3 py-1 text-sm ${isActive ? "bg-primary text-primary-foreground" : "border"}` } > {t(`authorities.${k}`)} ))}
{isLoading ? ( ) : (
    {isError && (
  • {t("authorities.loadError")}
  • )} {!isError && authorities?.length === 0 && (
  • {t("authorities.empty")}
  • )} {authorities?.map((a) => ( ))}
)}
{t("authorities.new")} ยท {t(`authorities.${currentKind}`)}
{error && (

{t("form.required")}

)} {create.isError && (

{t("form.rejected")}

)}
); }