"use client"; import React, { useState, useMemo } from "react"; import { useRouter } from "next/navigation"; import { Search, ScanLine, Activity, Globe } from "lucide-react"; import { useGeolocation } from "@/hooks/use-geolocation"; import { useSearchLogic } from "@/hooks/use-search-logic"; import { cn } from "@/lib/utils"; export function Hero() { const router = useRouter(); const [searchQuery, setSearchQuery] = useState(""); const { countryCode, isMounted } = useGeolocation(); const { searchType, isValid, loading, setLoading } = useSearchLogic(searchQuery); const searchConfig = useMemo( () => ({ barcode: { placeholder: "Cole o código EAN/UPC do produto…", button: "Analisar", icon: , label: "Código de barras detectado", }, name: { placeholder: "Nome do alimento ou marca…", button: "Buscar", icon: , label: "Pesquisa por nome", }, auto: { placeholder: "Nome do produto ou código de barras…", button: "Buscar", icon: , label: "Detecção automática", }, }), [] ); const current = searchConfig[searchType]; const handleSearch = async (e: React.FormEvent) => { e.preventDefault(); if (!searchQuery.trim()) return; setLoading(true); const target = searchType === "barcode" && isValid ? `/produto/${searchQuery.trim()}` : `/resultados?q=${encodeURIComponent(searchQuery.trim())}${ countryCode ? `&country=${countryCode}` : "" }`; router.push(target); }; return (
{/* ── Subtle grain texture ──────────────────────────────────────── */}
{/* ── Upper label row ─────────────────────────────────────────── */}
Open Food Facts · Base Colaborativa {isMounted && countryCode && ( {countryCode.toUpperCase()} )}
{/* ── Hairline ────────────────────────────────────────────────── */}
{/* ── Hero headline ───────────────────────────────────────────── */}

A verdade sobre{" "} o que você come.

Dados nutricionais completos de 2 milhões de produtos — Nutri-Score, NOVA, ingredientes e alérgenos. Gratuito, sempre.

{/* ── Search form ─────────────────────────────────────────────── */}
{/* Mode icon */}
{current.icon}
setSearchQuery(e.target.value)} autoComplete="off" spellCheck={false} className="flex-1 bg-transparent border-none outline-none py-[1.125rem] text-[var(--fg-primary)] placeholder-[var(--fg-faint)] text-base font-sans" />
{/* Detection status */}

{current.label}

); } /** Minimal inline arrow icon */ function ArrowRight() { return ( ); }