"use client"; import { useState, useEffect } from "react"; import { useRouter } from "next/navigation"; import { Search, ScanLine } from "lucide-react"; import { detectSearchType, isValidBarcode } from "@/lib/openFoodFactsApi"; import { cn } from "@/lib/utils"; interface SearchBarProps { initialQuery?: string; className?: string; placeholder?: string; compact?: boolean; } export function SearchBar({ initialQuery = "", className = "", placeholder = "Buscar produtos ou código de barras…", compact = false, }: SearchBarProps) { const [query, setQuery] = useState(initialQuery); const [searchType, setSearchType] = useState<"barcode" | "name" | null>(null); const router = useRouter(); useEffect(() => { const cleaned = query.replace(/\D/g, ""); if (cleaned.length >= 8 && cleaned.length <= 13) { setSearchType("barcode"); } else if (query.trim()) { setSearchType("name"); } else { setSearchType(null); } }, [query]); const handleSearch = () => { if (!query.trim()) return; const type = detectSearchType(query); if (type === "barcode") { const clean = query.replace(/\D/g, ""); if (isValidBarcode(clean)) { router.push(`/produto/${clean}`); } else { router.push(`/resultados?q=${encodeURIComponent(query.trim())}`); } } else { router.push(`/resultados?q=${encodeURIComponent(query.trim())}`); } }; const handleKey = (e: React.KeyboardEvent) => { if (e.key === "Enter") handleSearch(); }; if (compact) { return (