"use client"; import { useIdentityData } from "components/IdentityProvider"; import { getBasePublicationURL } from "app/lish/createPub/getPublicationURL"; import { normalizePublicationRecord, type NormalizedPublication, } from "src/utils/normalizeRecords"; import { SpeedyLink } from "components/SpeedyLink"; import { Popover } from "components/Popover"; import { ButtonPrimary } from "components/Buttons"; import { LooseLeafSmall } from "components/Icons/LooseleafSmall"; import { HomeButton, type navPages } from "./NavigationButtons"; import { HomeSmall } from "components/Icons/HomeSmall"; import { MoreOptionsVerticalTiny } from "components/Icons/MoreOptionsVerticalTiny"; import { PubIcon, PublicationButtons } from "./Publications"; import { HomeTiny } from "components/Icons/HomeTiny"; import { LooseleafTiny } from "components/Icons/LooseleafTiny"; import { Separator } from "components/Layout"; import { Menu, MenuItem } from "components/Menu"; import { AddTiny } from "components/Icons/AddTiny"; export const PublicationNavigation = (props: { currentPage: navPages; currentPubUri?: string; }) => { let { identity } = useIdentityData(); if (!identity) return; let hasLooseleafs = !!identity?.permission_token_on_homepage.find( (f) => f.permission_tokens.leaflets_to_documents && f.permission_tokens.leaflets_to_documents[0]?.document, ); let pubCount = identity?.publications.length ?? 0; let onlyOnePub = pubCount === 1 && hasLooseleafs; let onlyLooseleafs = pubCount === 0 && hasLooseleafs; let className = "font-bold text-secondary flex gap-2 items-center grow min-w-0 text-sm h-[34px] px-2 accent-container"; // if not publications or looseleafs if (!identity.publications && !hasLooseleafs) { return ( Create a Publication! ); } switch (props.currentPage) { case "looseleafs": case "pub": if (onlyLooseleafs || onlyOnePub) return ( <> Home ); break; case "home": { if (onlyLooseleafs || onlyOnePub) { let pub = identity.publications[0]; return (
}> {}}> Create New Publication {onlyLooseleafs ? ( Looseleafs ) : (
{pub.name}
)}
); } break; } } return ( ({ record: normalizePublicationRecord(pub.record), uri: pub.uri, }))} />{" "} Publications } className="pt-1 px-2!" >
); }; function PubIcons(props: { publications: { record: NormalizedPublication | null; uri: string }[]; }) { if (props.publications.length < 1) return null; return (
{props.publications.map((pub, index) => { if (index <= 2) return (
); })}
); }