Bob AI: Populate src/pages/ProductsPage.tsx (snippet builder, 2 sections)
This commit is contained in:
@@ -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>
|
||||
</>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user