/** * Pure route state for the landing page navigation. Section links are represented by * hashes on the home page; Blog is a normal application route. */ export const SECTION_IDS = [ "highlights", "quickstart", "cases", "scenarios", "benchmark", "contract", "features", ] as const; export type SectionId = (typeof SECTION_IDS)[number]; export type ActiveNavItem = SectionId | "blog" | "download" | null; function isSectionId(value: string): value is SectionId { return SECTION_IDS.some((id) => id === value); } export function getActiveNavItem(pathname: string, hash: string): ActiveNavItem { if (pathname === "/blog" || pathname.startsWith("/blog/")) return "blog"; if (pathname === "/download") return "download"; if (pathname !== "/") return null; const id = hash.startsWith("#") ? hash.slice(1) : hash; return isSectionId(id) ? id : null; }