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

This commit is contained in:
kudinDmitriyUp
2026-06-17 12:01:51 +00:00
parent 68d494e4e8
commit 72b954864f

View File

@@ -1,75 +1,16 @@
import React from "react";
import { routes } from "@/routes";
import NavbarCentered from "@/components/ui/NavbarCentered";
import HeroBillboard from "@/components/sections/hero/HeroBillboard";
import PricingSimpleCards from "@/components/sections/pricing/PricingSimpleCards";
import ContactCta from "@/components/sections/contact/ContactCta";
import FooterMinimal from "@/components/sections/footer/FooterMinimal";
import { ArrowUpRight, Loader2 } from "lucide-react";
import Button from "@/components/ui/Button";
import TextAnimation from "@/components/ui/TextAnimation";
import ImageOrVideo from "@/components/ui/ImageOrVideo";
import GridOrCarousel from "@/components/ui/GridOrCarousel";
import ScrollReveal from "@/components/ui/ScrollReveal";
import useProducts from "@/hooks/useProducts";
export default function ProductsPage() {
return (
<div className="min-h-screen bg-background text-foreground flex flex-col">
<NavbarCentered
logo="BarberCo"
navItems={routes.map((r) => ({ name: r.label, href: r.path }))}
ctaButton={{ text: "Book Appointment", href: "/book" }}
/>
<main className="flex-grow">
<HeroBillboard
tag="Services"
title="Expert Cuts & Styling"
description="Choose from our range of professional grooming services tailored to your style."
primaryButton={{ text: "Book Now", href: "/book" }}
secondaryButton={{ text: "View Menu", href: "#menu" }}
/>
<div id="menu">
<PricingSimpleCards
tag="Service Menu"
title="Our Haircuts"
description="Simple, straightforward pricing for top-tier grooming."
plans={[
{
tag: "Buzz Cut",
price: "$15",
description: "Quick, clean, and low maintenance.",
features: ["Clipper cut all over", "Even length", "Neck trim"],
buttonText: "Book Buzz Cut",
href: "/book"
},
{
tag: "Basic Cut",
price: "$30",
description: "The classic professional standard.",
features: ["Scissor or clipper cut", "Standard styling", "Neck shave"],
buttonText: "Book Basic Cut",
href: "/book"
},
{
tag: "Fade",
price: "$40",
description: "Precision blending and sharp lines.",
features: ["Skin fade", "Detailed top styling", "Hot towel finish"],
buttonText: "Book Fade",
href: "/book"
}
]}
/>
</div>
<ContactCta
tag="Ready?"
text="Secure your spot in the chair today."
primaryButton={{ text: "Book Appointment", href: "/book" }}
secondaryButton={{ text: "Contact Us", href: "/contact" }}
/>
</main>
<FooterMinimal
brand="BarberCo"
copyright="© 2024 BarberCo. All rights reserved."
/>
</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>
<div data-webild-section="ContactCta"><section aria-label="Contact section" className="py-20"><div className="w-content-width mx-auto"><ScrollReveal variant="fade-blur"><div className="flex flex-col items-center gap-8 md:gap-10 py-20 px-8 rounded card"><div className="flex flex-col items-center gap-2"><div className="px-3 py-1 mb-1 text-sm card rounded w-fit"><p>Book Your Cut</p></div><TextAnimation text="Ready for a fresh look? Secure your spot with our experienced barbers today." variant="slide-up" gradientText={true} tag="h2" className="md:max-w-8/10 text-5xl 2xl:text-6xl leading-[1.15] font-semibold text-center text-balance" /><div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3"><Button text="Book Appointment" href="/book" variant="primary" /><Button text="Contact Us" href="/contact" variant="secondary" animationDelay={0.1} /></div></div></div></ScrollReveal></div></section></div>
</>
);
}
}