"use client"; import { useIdentityData } from "components/IdentityProvider"; import { useDomainStatus } from "./useDomainStatus"; import { getDomainAssignment } from "./domainAssignment"; import { Identity } from "components/IdentityProvider"; import { GoToArrow } from "components/Icons/GoToArrow"; export type CustomDomain = NonNullable["custom_domains"][number]; export function DomainList(props: { onSelectDomain: (domain: string) => void; filter?: (domain: CustomDomain) => boolean; }) { let { identity } = useIdentityData(); let domains = identity?.custom_domains || []; if (props.filter) domains = domains.filter(props.filter); let pubDomains = domains.filter( (d) => getDomainAssignment(d).type === "publication", ); let leafletDomains = domains.filter( (d) => getDomainAssignment(d).type === "document", ); let unassignedDomains = domains.filter( (d) => getDomainAssignment(d).type === "unassigned", ); return (
{pubDomains.length > 0 && (
Publications
{pubDomains.map((domain) => ( props.onSelectDomain(domain.domain)} showBase={false} /> ))}
)} {pubDomains.length > 0 && leafletDomains.length > 0 && (
)} {leafletDomains.length > 0 && (
Leaflets
{leafletDomains.map((domain) => ( props.onSelectDomain(domain.domain)} showBase /> ))}
)} {unassignedDomains.length > 0 && ( <> {(pubDomains.length > 0 || leafletDomains.length > 0) && (
)}
Unassigned
{unassignedDomains.map((domain) => ( props.onSelectDomain(domain.domain)} /> ))}
)}
); } function DomainGroup(props: { domain: CustomDomain; onSelect: () => void; showBase: boolean; }) { let assignment = getDomainAssignment(props.domain); return (
{props.showBase && ( )} {assignment.type === "publication" && ( )}
); } function SubDomainRow(props: { path: string; label: string; onSelect: () => void; }) { return ( ); } function UnassignedDomainRow(props: { domain: CustomDomain; onSelect: () => void; }) { let { pending } = useDomainStatus(props.domain.domain); return ( ); }