"use client"; import React, { useState, useEffect, useCallback } from "react"; import { useParams, useRouter } from "next/navigation"; import { motion, AnimatePresence } from "framer-motion"; import { ArrowLeft, AlertCircle, AlertTriangle, Database, Globe, ShieldCheck, Beaker, ClipboardList, } from "lucide-react"; import { Button } from "@/components/ui/button"; import Image from "next/image"; import { searchByBarcode, Product, formatNutritionData } from "@/lib/openFoodFactsApi"; import { NutriScoreBadge, NovaBadge } from "@/app/components/NutriScoreBadge"; import { NutritionGrid } from "@/app/components/NutritionBar"; import { ProductSkeleton } from "@/app/components/ProductSkeleton"; export default function ProdutoPage() { const params = useParams(); const router = useRouter(); const barcode = params.barcode as string; const [product, setProduct] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const searchProduct = useCallback(async () => { try { setLoading(true); setError(null); const result = await searchByBarcode(barcode); if (result) setProduct(result); else setError("Produto não catalogado na base ODbL."); } catch { setError("Falha crítica na sincronização de dados."); } finally { setLoading(false); } }, [barcode]); useEffect(() => { if (barcode) searchProduct(); }, [barcode, searchProduct]); if (loading) return ; // Handler de Erro - Estética Industrial if (error || !product) { return (

Erro de Protocolo

{error}

); } const imageUrl = product.image_front_url || product.image_url || null; return (
{/* 1. NAVEGAÇÃO E TÍTULO (Sticky Header) */}

{product.product_name || "Unlabeled Product"}

{product.code}
{/* COLUNA ESQUERDA: Ativos Visuais (5 Colunas) */}
{imageUrl ? ( {product.product_name ) : (
No Visual Metadata
)}
{/* Ficha Técnica (Bento-style) */}

SKU Datasheet

{[ { label: "Fabricante", val: product.brands, icon: ShieldCheck }, { label: "Região", val: product.countries, icon: Globe }, { label: "Registro", val: "Auditado", icon: ClipboardList } ].map((item, i) => item.val && (
{item.label} {item.val}
))}
{/* COLUNA DIREITA: Inteligência de Dados (7 Colunas) */}
{/* Veredito Rápido: Scores */}
} /> } />
{/* Análise Macronutricional */}

Composição Nutricional / 100g

{/* Bloqueadores e Alérgenos */} {product.allergens_tags && product.allergens_tags.length > 0 && (

Detecção de Alérgenos

{product.allergens_tags.map(tag => ( {tag.replace(/en:|pt:/g, "")} ))}
)}
{/* Lista de Ingredientes (OCR Interpretation) */}

Relatório de Ingredientes

{product.ingredients_text || "O fabricante não forneceu a lista de ingredientes para este SKU."}

); } // Sub-componente para cards de dados function DataCard({ title, desc, badge }: { title: string, desc: string, badge: React.ReactNode }) { return (

{title}

{desc}

{badge}
); }