"use client"; import { useMemo, useState } from "react"; import { FILTERS } from "@/lib/ui-config"; import type { AppState, Dispatch } from "@/lib/app-state"; import { Header, IconBtn, OfflineBanner, EmptyState } from "@/components/ui-primitives"; import { PlaceCard } from "@/components/place-card"; import { Icons } from "@/components/icons"; export function PlacesListScreen({ state, dispatch, }: { state: AppState; dispatch: Dispatch; }) { const { filter, search, places, offline } = state; const [searchOpen, setSearchOpen] = useState(false); const filtered = useMemo(() => { let out = places; if (filter !== "all") { if (filter === "visited") out = out.filter((p) => p.visited); else if (filter === "unvisited") out = out.filter((p) => !p.visited); else out = out.filter((p) => p.category === filter); } if (search.trim()) { const s = search.toLowerCase(); out = out.filter( (p) => p.name.toLowerCase().includes(s) || p.address.toLowerCase().includes(s) || p.tags.some((t) => t.toLowerCase().includes(s)), ); } return out; }, [filter, search, places]); return (