Merge version_2_1781523573948 into main #1
@@ -1,281 +1,36 @@
|
||||
import AboutTextSplit from '@/components/sections/about/AboutTextSplit';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import HeroBillboardTiltedCarousel from '@/components/sections/hero/HeroBillboardTiltedCarousel';
|
||||
import PricingMediaCards from '@/components/sections/pricing/PricingMediaCards';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import TestimonialOverlayCards from '@/components/sections/testimonial/TestimonialOverlayCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
// AUTO-GENERATED shell by per-section-migrate.
|
||||
// Section bodies live in ./<PageBase>/sections/<X>.tsx. Edit the section
|
||||
// files directly. Non-block content (wrappers, non-inlinable sections) is
|
||||
// preserved inline; extracted section blocks become <XSection/> refs.
|
||||
|
||||
export default function HomePage() {
|
||||
import React from 'react';
|
||||
import HeroSection from './HomePage/sections/Hero';
|
||||
import AboutSection from './HomePage/sections/About';
|
||||
import ProductsSection from './HomePage/sections/Products';
|
||||
import PricingSection from './HomePage/sections/Pricing';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import FaqSection from './HomePage/sections/Faq';
|
||||
import SocialProofSection from './HomePage/sections/SocialProof';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboardTiltedCarousel
|
||||
tag="GYLMO जिल्मो"
|
||||
title="Handcrafted Cakes, Delivered with Love"
|
||||
description="Premium custom cakes for every celebration. Order online and taste the difference that fresh ingredients and expert craftsmanship make."
|
||||
primaryButton={{
|
||||
text: "Order Your Cake Today",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "View Our Menu",
|
||||
href: "#products",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-adult-cutting-cake_23-2150154705.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/meringue-roll-concept-tasty-delicious-food_185193-165538.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-influencer-with-cake_23-2149172467.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-baby-shower-concept-with-copy-space_23-2148731309.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-delicious-cake-with-lily_23-2148761724.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/bar-still-life-with-cakes-table_23-2147821330.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTextSplit
|
||||
title="Our Passion for Perfection"
|
||||
descriptions={[
|
||||
"At GYLMO जिल्मो, we believe every cake tells a story. From hand-whisked batters to signature frostings, we source the finest ingredients to ensure every slice is a memory.",
|
||||
"दिखावट और स्वाद का एक अनोखा संगम, जहाँ हम हर जश्न को खास बनाने के लिए प्यार और बारीकियों के साथ केक तैयार करते हैं।",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Signature Cakes"
|
||||
title="Our Creations"
|
||||
description="Explore our curated collection of premium cakes crafted for every occasion."
|
||||
items={[
|
||||
{
|
||||
title: "Velvet Elegance",
|
||||
description: "Classic red velvet with cream cheese frosting.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-red-cake-slice-fruit-cake-piece-inside-plate-grey-background-cake-sweet-tea_140725-22984.jpg",
|
||||
},
|
||||
{
|
||||
title: "Dark Truffle",
|
||||
description: "Rich Belgian chocolate ganache perfection.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/classical-cheesecake-served-plate_141793-861.jpg",
|
||||
},
|
||||
{
|
||||
title: "Fruit Fantasy",
|
||||
description: "Fresh seasonal fruits on airy sponge.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/homemade-peach-blueberry-tart_23-2147920846.jpg",
|
||||
},
|
||||
{
|
||||
title: "Golden Vanilla",
|
||||
description: "Madagascar vanilla bean dream.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-yummy-chocolate-cake-with-fresh-fruits-getting-eat-by-female-dark-wall_179666-30727.jpg",
|
||||
},
|
||||
{
|
||||
title: "Caramel Drizzle",
|
||||
description: "Salted caramel layered delight.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-delicious-chocolate-cake-concept_23-2148769279.jpg",
|
||||
},
|
||||
{
|
||||
title: "Berry Swirl",
|
||||
description: "Strawberry infused goodness.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/dark-chocolate-cake-slice-with-melting-fudge-icing-generated-by-ai_188544-24279.jpg",
|
||||
},
|
||||
{
|
||||
title: "Coffee Crunch",
|
||||
description: "Robust espresso-infused celebration.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/nice-cupcakes-with-rose-sugar-white-glaze-stand-white_8353-686.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ProductsSection />
|
||||
|
||||
<div id="pricing" data-section="pricing">
|
||||
<SectionErrorBoundary name="pricing">
|
||||
<PricingMediaCards
|
||||
tag="Pricing"
|
||||
title="Simple & Transparent"
|
||||
description="Choose the perfect size for your celebration."
|
||||
plans={[
|
||||
{
|
||||
tag: "Small",
|
||||
price: "₹800",
|
||||
period: "500g",
|
||||
features: [
|
||||
"Perfect for small gatherings",
|
||||
"Custom flavor options",
|
||||
],
|
||||
primaryButton: {
|
||||
text: "Select",
|
||||
href: "#contact",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-cake-with-notepad-tea-pink-desk-cake-sugar-sweet-bake-biscuit-color_140725-55893.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Medium",
|
||||
price: "₹1500",
|
||||
period: "1kg",
|
||||
features: [
|
||||
"Ideal for parties",
|
||||
"Personalized messaging included",
|
||||
],
|
||||
primaryButton: {
|
||||
text: "Select",
|
||||
href: "#contact",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-fruit-cakes-creamy-desserts-with-candies-fruits-white-background-cream-sweet-cookie-dessert-cake-tea_140725-116168.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Large",
|
||||
price: "₹2800",
|
||||
period: "2kg+",
|
||||
features: [
|
||||
"Best for corporate events",
|
||||
"Tiered customization",
|
||||
],
|
||||
primaryButton: {
|
||||
text: "Select",
|
||||
href: "#contact",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-blueberry-desserts-with-chocolate_23-2148689832.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<PricingSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialOverlayCards
|
||||
tag="Reviews"
|
||||
title="Loved by Our Customers"
|
||||
description="Don't just take our word for it—see what our community says."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Aarav Sharma",
|
||||
role: "Professional",
|
||||
company: "Urban Living",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/funny-joyful-young-woman-eating-cakes-having-fun_171337-14493.jpg",
|
||||
},
|
||||
{
|
||||
name: "Priya Verma",
|
||||
role: "Homemaker",
|
||||
company: "Delhi Residents",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-senior-birthday-party_23-2149168214.jpg",
|
||||
},
|
||||
{
|
||||
name: "Vikram Singh",
|
||||
role: "Event Planner",
|
||||
company: "Celebrations Inc",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/holidays-celebration-cute-glamour-girl-celebrating-her-birthday-holding-plate-with-cake-smiling-cheerful-celebrating-standing-blue-background_1258-123601.jpg",
|
||||
},
|
||||
{
|
||||
name: "Meera Iyer",
|
||||
role: "Corporate Lead",
|
||||
company: "Tech Solutions",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/image-beautiful-africanamerican-woman-looking-with-tempted-smile-delicious-piece-cake-stand_1258-137638.jpg",
|
||||
},
|
||||
{
|
||||
name: "Rahul Mehta",
|
||||
role: "Student",
|
||||
company: "University Life",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-senior-birthday-party_23-2149168235.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSplitMedia
|
||||
tag="FAQs"
|
||||
title="Need Help? Find Answers"
|
||||
description="Everything you need to know about ordering your custom cake."
|
||||
items={[
|
||||
{
|
||||
question: "Can I customize the flavor?",
|
||||
answer: "Yes! We offer a wide range of flavor combinations for all orders.",
|
||||
},
|
||||
{
|
||||
question: "How early should I order?",
|
||||
answer: "For custom designs, please place your order 48 hours in advance.",
|
||||
},
|
||||
{
|
||||
question: "Do you deliver?",
|
||||
answer: "We provide reliable city-wide delivery for all orders.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/portrait-cheerful-male-chef-dressed-uniform_171337-5366.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="social-proof" data-section="social-proof">
|
||||
<SectionErrorBoundary name="social-proof">
|
||||
<SocialProofMarquee
|
||||
tag="Trusted By"
|
||||
title="Trusted Partners"
|
||||
description="Proudly serving local businesses and events."
|
||||
names={[
|
||||
"Urban Events",
|
||||
"Cafe Daily",
|
||||
"Tech Meetups",
|
||||
"Corporate Gatherings",
|
||||
"Local Festivals",
|
||||
"Wedding Planners",
|
||||
"University Events",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<SocialProofSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Get Started"
|
||||
text="Ready to order your dream cake? Reach out today!"
|
||||
primaryButton={{
|
||||
text: "WhatsApp Us",
|
||||
href: "https://wa.me/91XXXXXXXXXX",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Order via Form",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
22
src/pages/HomePage/sections/About.tsx
Normal file
22
src/pages/HomePage/sections/About.tsx
Normal file
@@ -0,0 +1,22 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "about" section.
|
||||
|
||||
import React from 'react';
|
||||
import AboutTextSplit from '@/components/sections/about/AboutTextSplit';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTextSplit
|
||||
title="Our Passion for Perfection"
|
||||
descriptions={[
|
||||
"At GYLMO जिल्मो, we believe every cake tells a story. From hand-whisked batters to signature frostings, we source the finest ingredients to ensure every slice is a memory.",
|
||||
"दिखावट और स्वाद का एक अनोखा संगम, जहाँ हम हर जश्न को खास बनाने के लिए प्यार और बारीकियों के साथ केक तैयार करते हैं।",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
53
src/pages/HomePage/sections/Contact.tsx
Normal file
53
src/pages/HomePage/sections/Contact.tsx
Normal file
@@ -0,0 +1,53 @@
|
||||
/* eslint-disable */
|
||||
// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body
|
||||
import ScrollReveal from "@/components/ui/ScrollReveal";
|
||||
import TextAnimation from "@/components/ui/TextAnimation";
|
||||
import Button from "@/components/ui/Button";
|
||||
|
||||
const primaryButton = {
|
||||
text: "WhatsApp Us",
|
||||
href: "https://wa.me/91XXXXXXXXXX"
|
||||
};
|
||||
const secondaryButton = {
|
||||
text: "Get Directions",
|
||||
href: "https://maps.app.goo.gl/5p4NDfR9Sm2NKjTt5?g_st=ic"
|
||||
};
|
||||
|
||||
const ContactInline = () => {
|
||||
return (
|
||||
<section aria-label="Contact section" className="py-20">
|
||||
<div className="w-content-width mx-auto">
|
||||
<ScrollReveal variant="slide-up">
|
||||
<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>{"Get Started"}</p>
|
||||
</div>
|
||||
|
||||
<TextAnimation
|
||||
text={"Ready to order your dream cake? Reach out 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={primaryButton.text} href={primaryButton.href} variant="primary" />
|
||||
<Button text={secondaryButton.text} href={secondaryButton.href} variant="secondary" animationDelay={0.1} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ScrollReveal>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default function ContactSection() {
|
||||
return (
|
||||
<div data-webild-section="contact" id="contact">
|
||||
<ContactInline />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
35
src/pages/HomePage/sections/Faq.tsx
Normal file
35
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -0,0 +1,35 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "faq" section.
|
||||
|
||||
import React from 'react';
|
||||
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FaqSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSplitMedia
|
||||
tag="FAQs"
|
||||
title="Need Help? Find Answers"
|
||||
description="Everything you need to know about ordering your custom cake."
|
||||
items={[
|
||||
{
|
||||
question: "Can I customize the flavor?",
|
||||
answer: "Yes! We offer a wide range of flavor combinations for all orders.",
|
||||
},
|
||||
{
|
||||
question: "How early should I order?",
|
||||
answer: "For custom designs, please place your order 48 hours in advance.",
|
||||
},
|
||||
{
|
||||
question: "Do you deliver?",
|
||||
answer: "We provide reliable city-wide delivery for all orders.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/portrait-cheerful-male-chef-dressed-uniform_171337-5366.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
48
src/pages/HomePage/sections/Hero.tsx
Normal file
48
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,48 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "hero" section.
|
||||
|
||||
import React from 'react';
|
||||
import HeroBillboardTiltedCarousel from '@/components/sections/hero/HeroBillboardTiltedCarousel';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboardTiltedCarousel
|
||||
tag="GYLMO जिल्मो"
|
||||
title="Handcrafted Cakes, Delivered with Love"
|
||||
description="Premium custom cakes for every celebration. Order online and taste the difference that fresh ingredients and expert craftsmanship make."
|
||||
primaryButton={{
|
||||
text: "Order Your Cake Today",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "View Our Menu",
|
||||
href: "#products",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-adult-cutting-cake_23-2150154705.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/meringue-roll-concept-tasty-delicious-food_185193-165538.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-influencer-with-cake_23-2149172467.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-baby-shower-concept-with-copy-space_23-2148731309.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-delicious-cake-with-lily_23-2148761724.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/bar-still-life-with-cakes-table_23-2147821330.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
64
src/pages/HomePage/sections/Pricing.tsx
Normal file
64
src/pages/HomePage/sections/Pricing.tsx
Normal file
@@ -0,0 +1,64 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "pricing" section.
|
||||
|
||||
import React from 'react';
|
||||
import PricingMediaCards from '@/components/sections/pricing/PricingMediaCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function PricingSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="pricing" data-section="pricing">
|
||||
<SectionErrorBoundary name="pricing">
|
||||
<PricingMediaCards
|
||||
tag="Pricing"
|
||||
title="Simple & Transparent"
|
||||
description="Choose the perfect size for your celebration."
|
||||
plans={[
|
||||
{
|
||||
tag: "Small",
|
||||
price: "₹800",
|
||||
period: "500g",
|
||||
features: [
|
||||
"Perfect for small gatherings",
|
||||
"Custom flavor options",
|
||||
],
|
||||
primaryButton: {
|
||||
text: "Select",
|
||||
href: "#contact",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-cake-with-notepad-tea-pink-desk-cake-sugar-sweet-bake-biscuit-color_140725-55893.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Medium",
|
||||
price: "₹1500",
|
||||
period: "1kg",
|
||||
features: [
|
||||
"Ideal for parties",
|
||||
"Personalized messaging included",
|
||||
],
|
||||
primaryButton: {
|
||||
text: "Select",
|
||||
href: "#contact",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-fruit-cakes-creamy-desserts-with-candies-fruits-white-background-cream-sweet-cookie-dessert-cake-tea_140725-116168.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Large",
|
||||
price: "₹2800",
|
||||
period: "2kg+",
|
||||
features: [
|
||||
"Best for corporate events",
|
||||
"Tiered customization",
|
||||
],
|
||||
primaryButton: {
|
||||
text: "Select",
|
||||
href: "#contact",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-blueberry-desserts-with-chocolate_23-2148689832.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
64
src/pages/HomePage/sections/Products.tsx
Normal file
64
src/pages/HomePage/sections/Products.tsx
Normal file
@@ -0,0 +1,64 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "products" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ProductsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Signature Cakes"
|
||||
title="Our Creations"
|
||||
description="Explore our curated collection of premium cakes crafted for every occasion."
|
||||
items={[
|
||||
{
|
||||
title: "Velvet Elegance",
|
||||
description: "Classic red velvet with cream cheese frosting.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-red-cake-slice-fruit-cake-piece-inside-plate-grey-background-cake-sweet-tea_140725-22984.jpg",
|
||||
},
|
||||
{
|
||||
title: "Dark Truffle",
|
||||
description: "Rich Belgian chocolate ganache perfection.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/classical-cheesecake-served-plate_141793-861.jpg",
|
||||
},
|
||||
{
|
||||
title: "Fruit Fantasy",
|
||||
description: "Fresh seasonal fruits on airy sponge.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/homemade-peach-blueberry-tart_23-2147920846.jpg",
|
||||
},
|
||||
{
|
||||
title: "Golden Vanilla",
|
||||
description: "Madagascar vanilla bean dream.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-yummy-chocolate-cake-with-fresh-fruits-getting-eat-by-female-dark-wall_179666-30727.jpg",
|
||||
},
|
||||
{
|
||||
title: "Caramel Drizzle",
|
||||
description: "Salted caramel layered delight.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-delicious-chocolate-cake-concept_23-2148769279.jpg",
|
||||
},
|
||||
{
|
||||
title: "Berry Swirl",
|
||||
description: "Strawberry infused goodness.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/dark-chocolate-cake-slice-with-melting-fudge-icing-generated-by-ai_188544-24279.jpg",
|
||||
},
|
||||
{
|
||||
title: "Coffee Crunch",
|
||||
description: "Robust espresso-infused celebration.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/nice-cupcakes-with-rose-sugar-white-glaze-stand-white_8353-686.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
29
src/pages/HomePage/sections/SocialProof.tsx
Normal file
29
src/pages/HomePage/sections/SocialProof.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "social-proof" section.
|
||||
|
||||
import React from 'react';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function SocialProofSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="social-proof" data-section="social-proof">
|
||||
<SectionErrorBoundary name="social-proof">
|
||||
<SocialProofMarquee
|
||||
tag="Trusted By"
|
||||
title="Trusted Partners"
|
||||
description="Proudly serving local businesses and events."
|
||||
names={[
|
||||
"Urban Events",
|
||||
"Cafe Daily",
|
||||
"Tech Meetups",
|
||||
"Corporate Gatherings",
|
||||
"Local Festivals",
|
||||
"Wedding Planners",
|
||||
"University Events",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Testimonials.tsx
Normal file
57
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,57 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "testimonials" section.
|
||||
|
||||
import React from 'react';
|
||||
import TestimonialOverlayCards from '@/components/sections/testimonial/TestimonialOverlayCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialOverlayCards
|
||||
tag="Reviews"
|
||||
title="Loved by Our Customers"
|
||||
description="Don't just take our word for it—see what our community says."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Aarav Sharma",
|
||||
role: "Professional",
|
||||
company: "Urban Living",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/funny-joyful-young-woman-eating-cakes-having-fun_171337-14493.jpg",
|
||||
},
|
||||
{
|
||||
name: "Priya Verma",
|
||||
role: "Homemaker",
|
||||
company: "Delhi Residents",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-senior-birthday-party_23-2149168214.jpg",
|
||||
},
|
||||
{
|
||||
name: "Vikram Singh",
|
||||
role: "Event Planner",
|
||||
company: "Celebrations Inc",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/holidays-celebration-cute-glamour-girl-celebrating-her-birthday-holding-plate-with-cake-smiling-cheerful-celebrating-standing-blue-background_1258-123601.jpg",
|
||||
},
|
||||
{
|
||||
name: "Meera Iyer",
|
||||
role: "Corporate Lead",
|
||||
company: "Tech Solutions",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/image-beautiful-africanamerican-woman-looking-with-tempted-smile-delicious-piece-cake-stand_1258-137638.jpg",
|
||||
},
|
||||
{
|
||||
name: "Rahul Mehta",
|
||||
role: "Student",
|
||||
company: "University Life",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-senior-birthday-party_23-2149168235.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user