"use client"; import { useState, useRef, useEffect, useMemo } from "react"; import { Search } from "lucide-react"; import { getProducts } from "@/content/products"; import Link from "next/link"; import Image from "next/image"; import { formatCurrency } from "@/lib/utils"; import { useRouter } from "next/navigation"; const allProducts = getProducts(); export function GlobalSearch() { const [query, setQuery] = useState(""); const [isOpen, setIsOpen] = useState(false); const router = useRouter(); const results = useMemo(() => { if (query.length < 2) return []; const q = query.toLowerCase(); return allProducts .filter(p => p.name.toLowerCase().includes(q) || p.brand.toLowerCase().includes(q) || p.category.toLowerCase().includes(q) || (p.sku && p.sku.toLowerCase().includes(q)) ) .slice(0, 20); }, [query]); const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === 'Enter' && query.length > 1) { router.push(`/sklep?search=${encodeURIComponent(query)}`); setIsOpen(false); setQuery(''); } }; return ( <>
setQuery(e.target.value)} onKeyDown={handleKeyDown} />
{query.length > 1 ? (
{results.length > 0 ? (
{results.map((product) => ( setIsOpen(false)} className="flex items-center gap-4 p-3 hover:bg-slate-50 rounded-lg transition-colors group border border-transparent hover:border-border" >
{product.name}
{product.brand} {product.name} {product.specs?.['Moc chłodnicza'] ? `${product.specs['Moc chłodnicza']} kW • ` : ''}{product.category}
{product.price !== null ? formatCurrency(product.price) : 'Zapytaj o cenę'}
))}
) : (
Brak wyników dla "{query}"
)}
) : (
Wpisz co najmniej 2 znaki, aby rozpocząć wyszukiwanie w sklepie
)}
); }