'use client' import { useEffect, useMemo, useState } from 'react' import { PublicInset, PublicPageHeader } from '@/components/public-surface' import { ManualsPageShell } from '@/components/manuals-page-shell' import { groupManuals, getCategories, getManufacturers } from '@/lib/manuals-catalog' import { fetchPublishedManualsCatalog } from '@/lib/manuals-live-catalog' import type { Manual } from '@/lib/manuals-types' interface ManualsPageExperienceProps { initialManuals: Manual[] } export function ManualsPageExperience({ initialManuals }: ManualsPageExperienceProps) { const [manuals, setManuals] = useState(initialManuals) useEffect(() => { let cancelled = false void (async () => { const liveManuals = await fetchPublishedManualsCatalog() if (cancelled || liveManuals.length === 0) { return } setManuals((current) => { if (liveManuals.length === current.length) { return current } return liveManuals }) })() return () => { cancelled = true } }, []) const groupedManuals = useMemo(() => groupManuals(manuals), [manuals]) const manufacturers = useMemo(() => getManufacturers(manuals), [manuals]) const categories = useMemo(() => getCategories(manuals), [manuals]) return ( <> {manuals.length} manuals available from {manufacturers.length} manufacturers
) }