/* ============================================================
FLORÍADE — Loja + Produto
============================================================ */
function PageHead({ eyebrow, title, sub }){
return (
{eyebrow}
{title}
{sub &&
{sub}
}
);
}
function Loja({ go, initialLine="todos" }){
const [line, setLine] = useState(initialLine);
const [sort, setSort] = useState("curado");
useEffect(()=>{ setLine(initialLine||"todos"); },[initialLine]);
let list = PRODUCTS.filter(p=> line==="todos" || p.line===line);
if(sort==="precoAsc") list = [...list].sort((a,b)=>a.price-b.price);
if(sort==="precoDesc") list = [...list].sort((a,b)=>b.price-a.price);
if(sort==="nome") list = [...list].sort((a,b)=>a.name.localeCompare(b.name,"pt-BR"));
return (
{LINES.map(l=>(
))}
Ordenar
{list.map((p,i)=>
go("produto",id)}/>)}
);
}
/* ---------- PÁGINA DE PRODUTO ---------- */
function CorrTable({ p }){
const rows = [
["Planeta", {p.planet}{p.planetName}],
["Signo", {p.sign}{signName(p.sign)}],
["Elemento", {p.elementName}],
["Processo", {p.process}],
["Linha", {p.lineLabel}],
];
return (
{rows.map(([k,v],i)=>(
{k}
{v}
))}
);
}
function signName(g){
const m={"♈":"Áries","♉":"Touro","♊":"Gêmeos","♋":"Câncer","♌":"Leão","♍":"Virgem","♎":"Libra","♏":"Escorpião","♐":"Sagitário","♑":"Capricórnio","♒":"Aquário","♓":"Peixes"};
return m[g]||"";
}
function Produto({ id, go }){
const p = PRODUCTS.find(x=>x.id===id) || PRODUCTS[0];
const cart = useCart();
const [qty, setQty] = useState(1);
useEffect(()=>{ setQty(1); window.scrollTo(0,0); },[id]);
const related = PRODUCTS.filter(x=>x.id!==p.id && (x.line===p.line || x.planet===p.planet)).slice(0,3);
const relFill = related.length<3 ? [...related, ...PRODUCTS.filter(x=>x.id!==p.id && !related.includes(x))].slice(0,3) : related;
return (
{p.lineLabel} · {p.process}
{p.name}
{p.latin}
{p.tag}
{p.desc}
Virtudes
{p.virtues.map(v=> - ✥ {v}
)}
{brl(p.price)}
{qty}
Modo de uso ritual
{p.ritual}
Afinidades
Essências em Ressonância
{relFill.map((r,i)=>
go("produto",pid)}/>)}
);
}
Object.assign(window, { Loja, Produto });