// Product detail — gallery, buy box, lab specs, related function ProductScreen({ product, onAdd, onOpen, onNav }) { const { Icon } = window; const { Button, Badge, Rating, ProductCard, TrustBlock, ReviewSummary, ReviewCard } = window.SinopharmaDesignSystem_d11735; const p = product; const [qty, setQty] = React.useState(1); const [tab, setTab] = React.useState('desc'); const related = window.SP_DATA.products.filter((x) => x.id !== p.id).slice(0, 4); const specs = [ ['Forme', p.form], ['Conditionnement', p.count], ['Catégorie', p.category], ['Origine', 'Producteurs identifiés'], ['Lot', 'L24·06·B'], ['Conservation', '15–25 °C'], ]; const tabs = { desc: 'Description', compo: 'Composition', dose: 'Posologie' }; // Structured composition (plant · part · titrage) — clearer fiche for the // regulated context. Falls back gracefully if a product lacks the data. const composition = p.composition || [ { plant: 'Jujubier (Suan Zao Ren)', part: 'Graine', amount: '250 mg', titre: '≥ 1.5 % saponines' }, { plant: 'Schisandra (Wu Wei Zi)', part: 'Fruit', amount: '120 mg', titre: '≥ 2 % schisandrines' }, { plant: 'Poria (Fu Ling)', part: 'Sclérote', amount: '90 mg', titre: '—' }, ]; const posology = p.posology || [ { label: 'Dose', value: '2 gélules par jour' }, { label: 'Moment', value: 'Le matin, à distance des repas' }, { label: 'Prise', value: "Avec un grand verre d'eau" }, { label: 'Durée', value: 'Cure de 3 semaines, renouvelable' }, ]; const descBody = (p.blurb || '') + " Une formule pensée pour s'intégrer simplement à votre routine, dans le respect des principes de la médecine traditionnelle chinoise."; return (
{ e.preventDefault(); onNav('home'); }} style={{ color: 'var(--gray-500)' }}>Accueil { e.preventDefault(); onNav('shop'); }} style={{ color: 'var(--gray-500)' }}>Boutique {p.name}
{/* GALLERY */}
{p.badge ?
{p.badge}
: null}
{[0, 1, 2, 3].map((i) => (
))}
{/* BUY BOX */}
{p.category}

{p.name}

{p.latin}

En stock

{p.blurb}

{p.price} € {p.oldPrice ? {p.oldPrice} € : null} · {p.count}
{qty}
{[['truck', 'Livraison offerte dès 49 €'], ['rotate-ccw', 'Retours sous 30 jours'], ['shield-check', 'Paiement sécurisé']].map(([ic, t]) => ( {t} ))}
{/* SPECS */}
{Object.entries(tabs).map(([k, lbl]) => ( ))}
{tab === 'desc' ? (

{descBody}

) : null} {tab === 'compo' ? (
{composition.map((row, i) => ( ))}
Plante Partie Quantité Titrage
{row.plant} {row.part} {row.amount} {row.titre}

Sans excipient inutile. Contrôle d'identité botanique et dosage des principes actifs à chaque lot.

) : null} {tab === 'dose' ? (
{posology.map((row, i) => (
{row.label} {row.value}
))}
Demandez conseil à votre praticien. Déconseillé pendant la grossesse sans avis médical. Ne se substitue pas à un avis médical.
) : null}
{specs.map(([k, v], i) => (
1 ? '1px solid var(--border-hairline)' : 'none', borderLeft: i % 2 ? '1px solid var(--border-hairline)' : 'none' }}>
{k}
{v}
))}
{/* TRUST BAND */}
{/* REVIEWS — preuve sociale encadrée */}
Avis clients

Ce qu'en disent nos clients

{}} />
{window.SP_DATA.reviews.map((r, i) => ( ))}
{/* RELATED */}

À associer

{related.map((r) => (
onOpen(r)} style={{ cursor: 'pointer' }}> onAdd(r)} />
))}
); } const stepBtn = { width: 44, height: '100%', border: 'none', background: 'transparent', color: 'var(--gray-700)', cursor: 'pointer', display: 'inline-flex', alignItems: 'center', justifyContent: 'center' }; window.ProductScreen = ProductScreen;