"use client"; import { useDebouncedCallback } from "use-debounce"; import { PageHeader } from "../general/PageHeader"; import { useSearchParams, usePathname, useRouter } from "next/navigation"; import { getSearchPath } from "@/lib/common"; import styles from './searchContainer.module.scss'; import { Icon } from "../general/Icon"; import Link from "next/link"; export function SearchContainer({ query, results, }: { query: string; results: any; }) { const searchParams = useSearchParams(); const pathname = usePathname(); const { replace } = useRouter(); const onQueryChange = useDebouncedCallback((query) => { replace(getSearchPath(query)); }, 500); return (
{ onQueryChange(e.target.value); }} />
{query && }
); } function capitalizeFirstLetter(s: string) { return s.charAt(0).toUpperCase() + s.slice(1); } function linkTo(page: any): string | null { if (page.__typename === "EventPage") { return `/arrangementer/${page.slug}`; } if (page.__typename === "NewsPage") { return `/aktuelt/${page.slug}`; } if (page.__typename === "AssociationPage") { return `/foreninger/${page.slug}`; } if (page.__typename === "GenericPage") { return `/{page.slug}`; } if (page.__typename === "VenuePage") { return `/lokaler/${page.slug}`; } return null; } const PAGE_TYPES: Record = { NewsPage: "Nyhet", EventPage: "Arrangement", GenericPage: "Underside", VenuePage: "Lokale", AssociationPage: "Forening", }; function SearchResults({ results }: { results: any }) { if (!results.length) { return
Ingen resultater
; } const supportedResults = results.filter( (result: any) => !!result?.id && Object.keys(PAGE_TYPES).includes(result.__typename) ); return (

{results.length} resultater

{supportedResults.map((result: any) => { let resultType = PAGE_TYPES[result.__typename] ?? ""; if (result.__typename === "AssociationPage") { resultType = capitalizeFirstLetter(result?.associationType); } const link = linkTo(result); const ResultItem = () => (
{resultType}

{result.title}

); if (link) { return ( ); } return ; })}
); }