// Membership tiers — Free + Premium const { useEffect: useEMem, useState: useSMem, useRef: useRMem } = React; function Membership({ t }) { const ref = useRMem(null); const [inView, setInView] = useSMem(false); const [annual, setAnnual] = useSMem(true); useEMem(() => { const io = new IntersectionObserver(([e]) => e.isIntersecting && setInView(true), { threshold: 0.15 }); if (ref.current) io.observe(ref.current); return () => io.disconnect(); }, []); const tiers = t.membership.tiers; return (
{/* ambient */}
{t.membership.eyebrow}

{t.membership.title1} {t.membership.title2} {t.membership.title3}.

{t.membership.intro}

{/* billing toggle */}
{/* Tier cards */}
{tiers.map((tier, i) => { const isPremium = tier.premium; const price = annual ? tier.priceAnnual : tier.priceMonthly; return (
{/* premium badge + gradient edge */} {isPremium && ( <>
{t.membership.mostPopular}
{/* decorative circles in bg */}
)} {/* header */}
{tier.kind}

{tier.name}

{tier.tagline}

{/* price */}
{tier.free ? ( <> {t.membership.free} {t.membership.pay} ) : ( <> {price} SEK / {annual ? t.membership.perYear : t.membership.perMonth} )}
{/* features */}
    {tier.features.map((f, j) => (
  • {f.highlight ? ( {f.text} ) : f.text}
  • ))}
{/* CTA */} {tier.cta} {/* footnote */} {tier.footnote && (
{tier.footnote}
)}
); })}
{/* Comparison strip */}
{t.membership.perks.map((p, i) => (
{p.value}
{p.label}
))}

{t.membership.fineprint}

); } window.Membership = Membership;