Bob AI: Populate src/pages/ProductsPage.tsx (snippet builder, 2 sections)

This commit is contained in:
kudinDmitriyUp
2026-06-21 17:55:45 +00:00
parent 8feae5d918
commit b8f7c95d20

View File

@@ -1,117 +1,18 @@
import React from "react";
import { routes } from "@/routes";
import NavbarCentered from "@/components/ui/NavbarCentered";
import HeroSplit from "@/components/sections/hero/HeroSplit";
import ProductMediaCards from "@/components/sections/product/ProductMediaCards";
import FeaturesIconCards from "@/components/sections/features/FeaturesIconCards";
import ContactCta from "@/components/sections/contact/ContactCta";
import FooterSimple from "@/components/sections/footer/FooterSimple";
import Button from "@/components/ui/Button";
import HeroBackgroundSlot from "@/components/ui/HeroBackgroundSlot";
import TextAnimation from "@/components/ui/TextAnimation";
import ImageOrVideo from "@/components/ui/ImageOrVideo";
import ScrollReveal from "@/components/ui/ScrollReveal";
import AvatarGroup from "@/components/ui/AvatarGroup";
import { ArrowUpRight, Loader2 } from "lucide-react";
import GridOrCarousel from "@/components/ui/GridOrCarousel";
import useProducts from "@/hooks/useProducts";
export default function ProductsPage() {
return (
<div className="min-h-screen bg-background text-foreground flex flex-col">
<NavbarCentered
logo="Lumina"
navItems={routes.map((r) => ({ name: r.label, href: r.path }))}
ctaButton={{ text: "Get Started", href: "/contact" }}
/>
<main className="flex-grow">
<HeroSplit
tag="New Arrivals"
title="Discover Our Premium Collection"
description="Explore our latest range of high-quality products designed to elevate your everyday experience with unmatched style and durability."
primaryButton={{ text: "Shop Now", href: "#products" }}
secondaryButton={{ text: "Learn More", href: "#features" }}
imageSrc="https://images.unsplash.com/photo-1491553895911-0055eca6402d?auto=format&fit=crop&q=80"
/>
<div id="products">
<ProductMediaCards
tag="Our Catalog"
title="Featured Products"
description="Handpicked items that our customers love. Find the perfect addition to your lifestyle."
products={[
{
name: "Classic Minimalist Watch",
price: "$199.00",
imageSrc: "https://images.unsplash.com/photo-1523275335684-37898b6baf30?auto=format&fit=crop&q=80",
onClick: () => console.log("Clicked Watch")
},
{
name: "Premium Leather Tote",
price: "$249.00",
imageSrc: "https://images.unsplash.com/photo-1548036328-c9fa89d128fa?auto=format&fit=crop&q=80",
onClick: () => console.log("Clicked Bag")
},
{
name: "Polarized Aviator Sunglasses",
price: "$129.00",
imageSrc: "https://images.unsplash.com/photo-1511499767150-a48a237f0083?auto=format&fit=crop&q=80",
onClick: () => console.log("Clicked Sunglasses")
}
]}
/>
</div>
<div id="features">
<FeaturesIconCards
tag="Why Choose Us"
title="Crafted with Excellence"
description="We don't compromise on quality. Every product is built to last and designed to impress."
features={[
{
icon: "✨",
title: "Premium Materials",
description: "Sourced from the best suppliers globally to ensure longevity and a luxurious feel."
},
{
icon: "🌱",
title: "Sustainable Practices",
description: "Eco-friendly packaging and ethical production methods you can feel good about."
},
{
icon: "🛡️",
title: "Lifetime Warranty",
description: "We stand behind our products forever. If it breaks, we fix it or replace it."
}
]}
/>
</div>
<ContactCta
tag="Ready to Upgrade?"
text="Join thousands of satisfied customers and experience the Lumina difference today."
primaryButton={{ text: "Browse Full Catalog", href: "/products" }}
secondaryButton={{ text: "Contact Sales", href: "/contact" }}
/>
</main>
<FooterSimple
brand="Lumina"
columns={[
{
title: "Shop",
items: [
{ label: "All Products", href: "/products" },
{ label: "New Arrivals", href: "/products" },
{ label: "Best Sellers", href: "/products" }
]
},
{
title: "Company",
items: [
{ label: "About Us", href: "/about" },
{ label: "Contact", href: "/contact" }
]
}
]}
copyright="© 2024 Lumina Inc. All rights reserved."
links={[
{ label: "Privacy Policy", href: "#" },
{ label: "Terms of Service", href: "#" }
]}
/>
</div>
<>
<div data-webild-section="HeroBillboard"><section aria-label="Hero section" className="relative pt-25 pb-20 md:pt-30"><HeroBackgroundSlot /><div className="flex flex-col gap-12 md:gap-15 w-content-width mx-auto"><div className="flex flex-col items-center gap-3 text-center"><AvatarGroup avatarsSrc={["https://img.freepik.com/free-photo/young-beautiful-woman-smiling-looking-camera-standing-office_176420-17482.jpg","https://img.freepik.com/free-photo/handsome-corporate-man-real-estate-agent-assistant-smiling-holding-digital-tablet_176420-18071.jpg","https://img.freepik.com/free-photo/young-creative-woman-holding-notebook-smiling_176420-17483.jpg"]} label="Trusted by creatives in Vacoas-Phoenix" className="mb-1" /><TextAnimation text="Premium Stationery & Office Supplies" variant="fade-blur" gradientText={true} tag="h1" className="md:max-w-8/10 text-7xl 2xl:text-8xl leading-[1.15] font-semibold text-center text-balance" /><TextAnimation text="Discover our curated selection of professional office essentials and unique artistic tools. Elevate your workspace with MyLab's high-quality products." variant="fade-blur" gradientText={false} tag="p" className="md:max-w-7/10 text-lg md:text-xl leading-snug text-balance" /><div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3"><Button text="Shop Now" href="#products" variant="primary" /><Button text="View Categories" href="#categories" variant="secondary" animationDelay={0.1} /></div></div><ScrollReveal variant="slide-up" delay={0.2} className="w-full p-2 xl:p-3 2xl:p-4 card rounded overflow-hidden"><ImageOrVideo imageSrc="https://img.freepik.com/free-photo/flat-lay-desk-concept-with-copy-space_23-2148236814.jpg" className="aspect-4/5 md:aspect-video" /></ScrollReveal></div></section></div>
<div data-webild-section="ProductMediaCards"><section aria-label="Products section" className="py-20"><div className="w-content-width mx-auto flex justify-center"><Loader2 className="size-8 animate-spin text-foreground" strokeWidth={1.5} /></div></section></div>
</>
);
}
}