"use client"; import { useState, useEffect } from "react"; import { useRouter } from "next/navigation"; import { Search, ScanLine, Sparkles, Globe } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { detectUserCountry } from "@/lib/geolocation"; import { detectSearchType, isValidBarcode } from "@/lib/openFoodFactsApi"; export function Hero() { const [searchQuery, setSearchQuery] = useState(""); const [error, setError] = useState(""); const [loading, setLoading] = useState(false); const [userCountry, setUserCountry] = useState(null); const [searchType, setSearchType] = useState<"auto" | "barcode" | "name">( "auto" ); const [mounted, setMounted] = useState(false); const router = useRouter(); // Detectar país do usuário ao carregar useEffect(() => { setMounted(true); const detectCountry = async () => { try { // Forçar nova detecção para garantir país correto const country = await detectUserCountry(true); setUserCountry(country.code); } catch { setUserCountry("br"); // Fallback para Brasil } }; detectCountry(); }, []); // Detectar tipo de busca baseado na entrada useEffect(() => { if (searchQuery.trim()) { const detectedType = detectSearchType(searchQuery); setSearchType(detectedType); } else { setSearchType("auto"); } }, [searchQuery]); const handleSearch = async (e: React.FormEvent) => { e.preventDefault(); setError(""); if (!searchQuery.trim()) { setError("Digite nome do produto"); return; } const query = searchQuery.trim(); const detectedType = detectSearchType(query); if (detectedType === "barcode") { if (!isValidBarcode(query)) { setError("Código de barras deve ter entre 8 e 13 dígitos"); return; } setLoading(true); // Redirecionar para página do produto router.push(`/produto/${query}`); } else { setLoading(true); // Redirecionar para página de resultados const countryParam = userCountry ? `&country=${userCountry}` : ""; router.push(`/resultados?q=${encodeURIComponent(query)}${countryParam}`); } }; const getPlaceholder = () => { if (searchType === "barcode") { return "Digite o código de barras (ex: 7896004713588)"; } else if (searchType === "name") { return "Digite o nome do produto (ex: coca cola)"; } return "Digite nome do produto"; }; const getSearchButtonText = () => { if (loading) return "Buscando..."; if (searchType === "barcode") return "Buscar Produto"; if (searchType === "name") return "Buscar Produtos"; return "Buscar"; }; return (
{/* Background Pattern */}
{/* Badge */}
Desenvolvido por{" "} evandrodevbr {" • "}Dados do Open Food Facts
{/* Main Heading */}

Descubra tudo sobre seus{" "} alimentos

{/* Subtitle */}

Consulte informações nutricionais completas, ingredientes e classificações de qualidade de milhares de produtos alimentícios.

{/* Search Form */}
{searchType === "barcode" ? ( ) : ( )} setSearchQuery(e.target.value)} className="pl-12 pr-4 py-4 text-lg border-0 bg-transparent focus:ring-0 focus:outline-none focus:border-transparent focus:shadow-none focus-visible:ring-0 placeholder:text-gray-400 w-full" />
{/* Search Type Indicator */} {searchQuery && (
{searchType === "barcode" && (
Busca por código de barras
)} {searchType === "name" && (
Busca por nome do produto {mounted && userCountry && (
Priorizando {userCountry}
)}
)}
)} {error && (

{error}

)}
{/* Quick Stats */}
2M+
Produtos no banco
100+
Países cobertos
24/7
Disponível sempre
{/* Scroll Indicator */}
); }