/* 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. Shop Best Sellers → Explore All Products ); } /* ---- 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"]], ]; const [email, setEmail] = React.useState(""); const [sent, setSent] = React.useState(false); 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.