// ───────────────────────────────────────────────────────────── // REFERENCES VIEW — Lista de suplementos como uma gaveta // (cada nome de suplemento abre/fecha as referências dele, // igual ao padrão visual da lista de produtos). // ───────────────────────────────────────────────────────────── const { useState: useStateRefs, useMemo: useMemoRefs } = React; function ReferenceCard({ r, i, t }) { const inner = ( <>
[{String(i + 1).padStart(2, "0")}] {r.year && ( {r.year} )} {r.type && ( · {r.type} )}
{r.title}
{r.authors && (
{r.authors}
)} {r.journal && (
{r.journal}
)} {r.link && (
Abrir fonte
)} ); const card = { display: "block", textAlign: "left", background: t.bg0, border: `1px solid ${t.border}`, borderRadius: 12, padding: "14px 16px", color: "inherit", textDecoration: "none", cursor: r.link ? "pointer" : "default", }; return r.link ? ( {inner} ) : (
{inner}
); } function SupplementRefsDrawer({ supp, refs, t, expanded, onToggle }) { return (
{/* CABEÇALHO — clicável */} {/* GAVETA */} {expanded && (
{refs.map((r, i) => )}
)}
); } function ReferencesView({ t, query }) { const all = (typeof REFERENCIAS_SUPLEMENTOS !== "undefined" ? REFERENCIAS_SUPLEMENTOS : []); const q = (query || "").toLowerCase().trim(); const filtered = q ? all.filter(r => ( r.supplement.toLowerCase().includes(q) || (r.title || "").toLowerCase().includes(q) || (r.authors || "").toLowerCase().includes(q) || (r.journal || "").toLowerCase().includes(q) )) : all; // Agrupa por suplemento (preservando ordem de aparição) const grouped = useMemoRefs(() => { const map = new Map(); filtered.forEach(r => { if (!map.has(r.supplement)) map.set(r.supplement, []); map.get(r.supplement).push(r); }); return Array.from(map.entries()); }, [filtered]); // Estado: quais suplementos estão expandidos // Quando há busca ativa, abre todos automaticamente const [expandedSet, setExpandedSet] = useStateRefs(() => new Set()); const toggle = (supp) => { setExpandedSet(prev => { const next = new Set(prev); if (next.has(supp)) next.delete(supp); else next.add(supp); return next; }); }; if (filtered.length === 0) { return (
Nenhuma referência encontrada{q ? ` para "${query}"` : ""}.
); } return (
{/* Cabeçalho introdutório */}
Referências bibliográficas

Estudos clínicos, revisões sistemáticas e meta-análises que embasam o conteúdo deste acervo. Toque no nome do suplemento para abrir a gaveta com as referências.

{/* Lista de gavetas — uma por suplemento */}
{grouped.map(([supp, refs]) => ( toggle(supp)} /> ))}
); } Object.assign(window, { ReferencesView });