/* store-parts.jsx — SectionHead, Nav (cart + mobile menu), Hero (+ parallax
collage & floating labels), TrustBar, Marquee. Exported to window. */
const { Button: PBtn, Tag: PTag } = window.FluvexDesignsDesignSystem_072666;
const { Reveal: PReveal, CountUp: PCountUp, useParallax: pUseParallax, useTilt: pUseTilt, StoreIcon: PIcon, Magnetic: PMag } = window;
const NAV_LINKS = [["Shop", "#shop"], ["Best Sellers", "#best"], ["Categories", "#categories"], ["Bundles", "#bundles"], ["Reviews", "#reviews"], ["FAQ", "#faq"]];
/* ---- shared section header ---- */
function SectionHead({ tag, title, sub, align = "center" }) {
return (
{tag && }
{title}
{sub && {sub}
}
);
}
/* ---- Nav ---- */
function Nav({ cartCount, onOpenCart }) {
const [open, setOpen] = React.useState(false);
const [scrolled, setScrolled] = React.useState(false);
const [bump, setBump] = React.useState(false);
const prev = React.useRef(cartCount);
React.useEffect(() => {
const onScroll = () => setScrolled(window.scrollY > 8);
window.addEventListener("scroll", onScroll);
return () => window.removeEventListener("scroll", onScroll);
}, []);
React.useEffect(() => {
if (cartCount !== prev.current) { setBump(true); const t = setTimeout(() => setBump(false), 450); prev.current = cartCount; return () => clearTimeout(t); }
}, [cartCount]);
return (
F
FluvexDesigns
{NAV_LINKS.map(([l, h]) => {l} )}
{cartCount > 0 && {cartCount} }
setOpen((o) => !o)} aria-label="Menu" style={{ width: 42, height: 42, borderRadius: 12, border: "1px solid var(--hairline)", background: "#fff", display: "flex", alignItems: "center", justifyContent: "center", cursor: "pointer" }}>
{open ? : }
);
}
/* ---- Hero ---- */
function FloatLabel({ text, style }) {
return (
);
}
function HeroCollage() {
const p1 = pUseParallax(22), p2 = pUseParallax(34), p3 = pUseParallax(16), p4 = pUseParallax(40), pl = pUseParallax(46);
const Card = ({ pRef, pos, tilt, dur, delay, mock }) => {
const Mock = window.MOCKS[mock];
return (
);
};
return (
);
}
function Hero({ cartCount, onOpenCart }) {
const avatars = ["#c9b6f5,#533afd", "#f7b986,#ea2261", "#b9b9f9,#665efd", "#9ad1c9,#533afd", "#f96bee,#533afd"];
return (
Digital products that make your business look polished, organized, and ready to grow.
Shop premium interactive HTML tools, dashboards, planners, generators, and digital systems made for creators, students, freelancers, entrepreneurs, and professionals who want powerful products they can use directly in their browser.
{avatars.map((g, i) => )}
★★★★★
happy customers worldwide
);
}
/* ---- Trust bar ---- */
function TrustBar() {
return (
{window.TRUST.map((t, i) => (
))}
);
}
/* ---- Marquee ---- */
function Marquee() {
const items = window.MARQUEE;
const row = [...items, ...items];
return (
{row.map((t, i) => (
{t}
))}
);
}
Object.assign(window, { SectionHead, Nav, Hero, TrustBar, Marquee });
/* cache-bust r2 */