"use client"; import { useState } from "react"; import { cn } from "@/lib/utils"; interface NutriScoreBadgeProps { grade: string; className?: string; size?: "sm" | "md" | "lg"; showTooltip?: boolean; } const GRADE_INFO: Record = { a: { desc: "Muito bom", explanation: "Excelente qualidade nutricional" }, b: { desc: "Bom", explanation: "Boa qualidade nutricional" }, c: { desc: "Regular", explanation: "Qualidade nutricional moderada" }, d: { desc: "Ruim", explanation: "Qualidade nutricional baixa" }, e: { desc: "Muito ruim", explanation: "Qualidade nutricional muito baixa" }, }; const GRADE_CLASS: Record = { a: "grade-a", b: "grade-b", c: "grade-c", d: "grade-d", e: "grade-e", }; const SIZE_CLASS = { sm: "w-8 h-8 text-sm", md: "w-14 h-14 text-xl", lg: "w-20 h-20 text-2xl", }; export function NutriScoreBadge({ grade, className, size = "md", showTooltip = true, }: NutriScoreBadgeProps) { const [hover, setHover] = useState(false); const key = grade?.toLowerCase(); const info = GRADE_INFO[key]; if (!info) return null; return (
setHover(true)} onMouseLeave={() => setHover(false)} > {key.toUpperCase()}
{showTooltip && hover && (

Nutri-Score {key.toUpperCase()}

{info.desc}

{info.explanation}

)}
); } /* ── NOVA Badge ───────────────────────────────────────────────────────────── */ interface NovaBadgeProps { group: number; className?: string; size?: "sm" | "md" | "lg"; showTooltip?: boolean; } const NOVA_INFO: Record = { 1: { desc: "Não processado", explanation: "Alimentos não ou minimamente processados", bg: "#1a7a4a", fg: "#fff" }, 2: { desc: "Ingrediente", explanation: "Ingredientes culinários processados", bg: "#e8c110", fg: "#1e1810" }, 3: { desc: "Processado", explanation: "Alimentos processados", bg: "#e07820", fg: "#fff" }, 4: { desc: "Ultraprocessado",explanation: "Alimentos ultraprocessados", bg: "#c0201a", fg: "#fff" }, }; export function NovaBadge({ group, className, size = "md", showTooltip = true, }: NovaBadgeProps) { const [hover, setHover] = useState(false); const info = NOVA_INFO[group]; if (!info) return null; return (
setHover(true)} onMouseLeave={() => setHover(false)} > {group}
{showTooltip && hover && (

NOVA {group}

{info.desc}

{info.explanation}

)}
); }