/* store-parts2.jsx — Why, How It Works, Reviews, FAQ, Final CTA, Footer. Exported to window. */ const { Button: P2Btn, Tag: P2Tag } = window.FluvexDesignsDesignSystem_072666; const { Reveal: P2Reveal, StoreIcon: P2Icon, _fxReduce: p2Reduce, Magnetic: P2Mag } = window; /* stars that fill left-to-right when scrolled into view */ function AnimStars() { const ref = React.useRef(null); const [go, setGo] = React.useState(false); React.useEffect(() => { const el = ref.current; if (!el) return; if (p2Reduce()) { setGo(true); return; } const io = new IntersectionObserver((es) => es.forEach((e) => { if (e.isIntersecting) { setGo(true); io.unobserve(el); } }), { threshold: 0.6 }); io.observe(el); return () => io.disconnect(); }, []); return ( {[0, 1, 2, 3, 4].map((i) => ( ★ ))} ); } /* ---- Why customers love ---- */ function Why() { return ( {window.BENEFITS.map(([ic, label], i) => ( {label} ))} ); } /* ---- How it works ---- */ function HowItWorks() { const ref = React.useRef(null); const [go, setGo] = React.useState(false); React.useEffect(() => { const el = ref.current; if (!el) return; if (p2Reduce()) { setGo(true); return; } const io = new IntersectionObserver((es) => es.forEach((e) => { if (e.isIntersecting) { setGo(true); io.unobserve(el); } }), { threshold: 0.3 }); io.observe(el); return () => io.disconnect(); }, []); return ( {window.STEPS.map(([t, d], i) => ( {i + 1} {t} {d} ))} ); } /* ---- Reviews ---- */ function Reviews() { return ( {window.REVIEWS.map((r, i) => ( “{r.text}” {r.name}{r.role} ))} ); } /* ---- FAQ ---- */ function FAQ() { const [open, setOpen] = React.useState(0); return ( {window.FAQS.map(([q, a], i) => { const isOpen = open === i; return ( setOpen(isOpen ? -1 : i)} style={{ display: "flex", justifyContent: "space-between", alignItems: "center", gap: 16, padding: "20px 24px", cursor: "pointer" }}> {q} {a} ); })} ); } /* ---- Final CTA ---- */ function FinalCTA() { return ( {/* Premium mini product mockups — each has a bespoke inner UI hint (calendar grid, invoice lines, budget bars, etc.) so they read as real product miniatures at 128px wide. */} {(() => { const bar = (w, c, o = 1) => ; const cards = [ { key: "planner", top: "3%", left: "1%", rot: -4, d: "0s", from: "#c9b6f5", to: "#533afd", icon: "planner", name: "Teacher Planner", tag: "Weekly Plan", body: ( {[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14].map(i => ( ))} ), }, { key: "invoice", top: "49%", left: "1%", rot: 3, d: "-3s", from: "#8f79d5", to: "#533afd", icon: "briefcase", name: "Invoice Studio", tag: "#INV-024", body: ( {bar(38, "#e6e8f2")}{bar(20, "#e6e8f2")} {bar(46, "#e6e8f2")}{bar(20, "#e6e8f2")} Total $1,240.00 ), }, { key: "calendar", top: "26%", right: "1%", rot: -3, d: "-1s", from: "#b9b9f9", to: "#665efd", icon: "grid", name: "Content Calendar", tag: "This week", body: ( {[..."MTWTFSS"].map((d, i) => ( {d} ))} {Array.from({ length: 14 }).map((_, i) => ( ))} ), }, { key: "mediakit", top: "3%", right: "1%", rot: 4, d: "-4s", from: "#c9b6f5", to: "#f96bee", icon: "share", name: "Media Kit", tag: "Alex Rivera", body: ( {[["124K","IG"],["48K","TT"],["12K","YT"]].map(([n, l], i) => ( {n} {l} ))} ), }, { key: "budget", top: "72%", left: "1%", rot: 4, d: "-2s", from: "#f7b986", to: "#ea2261", icon: "clock", name: "Budget Tracker", tag: "October", body: ( Spent $3,820 62% of budget $2,180 left ), }, { key: "life", top: "26%", left: "1%", rot: -3, d: "-5s", from: "#9ad1c9", to: "#533afd", icon: "sparkle", name: "Life Tracker", tag: "Today", body: ( 88% {bar("100%", "#533afd", 0.9)} {bar("70%", "#9ad1c9")} {bar("55%", "#eef0f8")} ), }, { key: "resume", top: "49%", right: "1%", rot: 3, d: "-6s", from: "#b9b9f9", to: "#533afd", icon: "doc", name: "Photo Resume", tag: "Alex Rivera", body: ( Product Designer {bar("100%", "#e6e8f2")} {bar("74%", "#e6e8f2")} ), }, { key: "coverletter", top: "72%", right: "1%", rot: -3, d: "-7s", from: "#f7e7cb", to: "#f7b986", icon: "edit", name: "Cover Letter", tag: "Draft", body: ( Dear Hiring Team, {bar("100%", "#e6e8f2")} {bar("88%", "#e6e8f2")} {bar("72%", "#e6e8f2")} {bar("46%", "#e6e8f2")} ), }, ]; return cards.map((c) => ( {c.name} {c.tag} {c.body} )); })()} Ready to make your work look premium without starting from scratch? Explore digital products designed to help you plan better, sell smarter, and present your brand with confidence. { if (window.ml) window.ml('show', 'LQIrrO', true); }} style={{ fontFamily: "var(--font-sans)", fontSize: "var(--body-md-size)", fontWeight: 400, padding: "15px 30px", borderRadius: 9999, border: "none", background: "var(--primary)", color: "#fff", cursor: "pointer", whiteSpace: "nowrap", boxShadow: "0 10px 30px rgba(83,58,253,.35)" }}>Join the Fluvex Brief Shop Best Sellers → ); } /* ---- Footer ---- */ function Footer() { const cols = [ ["Shop", ["All Products", "Best Sellers", "New Arrivals", "Bundles", "On Sale"]], ["Categories", ["HTML Planners", "Business HTML Tools", "Productivity Dashboards", "Resume & Career Tools", "Wedding HTML Studios"]], ["Company", ["About", "Reviews", "FAQ", "Contact"]], ["Support", ["How It Works", "License Terms", "Refund Policy", "Support"]], ]; return ( ); } Object.assign(window, { Why, HowItWorks, Reviews, FAQ, FinalCTA, Footer });
{d}
“{r.text}”
{a}
Explore digital products designed to help you plan better, sell smarter, and present your brand with confidence.