Merge version_2_1783295068728 into main #1
@@ -1,253 +1,39 @@
|
||||
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
|
||||
import HeroBillboard from '@/components/sections/hero/HeroBillboard';
|
||||
import MetricsSimpleCards from '@/components/sections/metrics/MetricsSimpleCards';
|
||||
import TeamOverlayCards from '@/components/sections/team/TeamOverlayCards';
|
||||
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
// AUTO-GENERATED shell by per-section-migrate.
|
||||
// Section bodies live in the sibling sections/ folder (one file per section).
|
||||
// Edit those section files directly. Non-block content (wrappers,
|
||||
// non-inlinable sections) is preserved inline; extracted section blocks
|
||||
// become component refs.
|
||||
|
||||
export default function HomePage() {
|
||||
import React from 'react';
|
||||
import HeroSection from './HomePage/sections/Hero';
|
||||
import AboutSection from './HomePage/sections/About';
|
||||
import FeaturesSection from './HomePage/sections/Features';
|
||||
import ProductsSection from './HomePage/sections/Products';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
import TeamSection from './HomePage/sections/Team';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
|
||||
import CatalogSection from './HomePage/sections/Catalog';export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboard
|
||||
tag="Established 2014"
|
||||
title="Crafting Joy, One Chocolate at a Time."
|
||||
description="From a fourth-grade project to a legacy of love. MANNS Chocolates delivers artisanal, handcrafted sweets for every celebration."
|
||||
primaryButton={{
|
||||
text: "Our Catalog",
|
||||
href: "#products",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Contact Us",
|
||||
href: "#contact",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/chocolate-roll-with-coffee-beans-pinecones-high-quality-photo_114579-26652.jpg"
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutMediaOverlay
|
||||
tag="Our Story"
|
||||
title="The MANNS Legacy"
|
||||
description="Started in 2014 by Carrington and Dillon Manns, our journey began with a simple classroom project. Guided by Ms. Patricia Rashid, we learned the value of hard work, entrepreneurship, and community. Today, we bring that same passion to every handcrafted piece we create."
|
||||
imageSrc="http://img.b2bpic.net/free-photo/photo-cheerful-women-prepare-examination-session-home-assignment-together-write-notebook-enjoy-coffee_273609-44935.jpg"
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesMediaCarousel
|
||||
tag="Our Specialties"
|
||||
title="Celebrations Crafted by Hand"
|
||||
description="We specialize in chocolates for all your life's milestone moments."
|
||||
items={[
|
||||
{
|
||||
title: "Weddings & Showers",
|
||||
description: "Elegant favors for your special day.",
|
||||
buttonIcon: "Heart",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/still-life-delicious-marzipan-dessert_23-2149715499.jpg",
|
||||
},
|
||||
{
|
||||
title: "Holiday Collections",
|
||||
description: "Seasonal delights to make memories.",
|
||||
buttonIcon: "Gift",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/eclairs-covered-with-pink-glaze-served-round-white-plate_8353-577.jpg",
|
||||
},
|
||||
{
|
||||
title: "Birthdays & More",
|
||||
description: "Personalized treats for every celebration.",
|
||||
buttonIcon: "Star",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/chocolate-christmas-concept_23-2147985556.jpg",
|
||||
},
|
||||
{
|
||||
title: "Corporate Gifts",
|
||||
description: "Thoughtful gifts for partners.",
|
||||
buttonIcon: "Briefcase",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-truffle-recipe_23-2149525128.jpg",
|
||||
},
|
||||
{
|
||||
title: "Religious Events",
|
||||
description: "Beautiful gifts for sacred days.",
|
||||
buttonIcon: "Award",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/silver-crowns-stand-table-with-pink-bakeru-berries_8353-1077.jpg",
|
||||
},
|
||||
{
|
||||
title: "Custom Orders",
|
||||
description: "Tailored to your specific theme.",
|
||||
buttonIcon: "Palette",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/gift-drink-near-conifer-twig-cones-blanket_23-2147936824.jpg",
|
||||
},
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesImageBento
|
||||
tag="Collection"
|
||||
title="Explore Our Catalog"
|
||||
description="Handcrafted chocolates made with quality and care."
|
||||
items={[
|
||||
{
|
||||
title: "Classic Bars",
|
||||
description: "Pure, simple, rich.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/back-back-waffles-board-marble-table_114579-74861.jpg",
|
||||
},
|
||||
{
|
||||
title: "Truffle Boxes",
|
||||
description: "Assorted gourmet delight.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-blue-white-chocolate-white-speck-white-stand_140725-14025.jpg",
|
||||
},
|
||||
{
|
||||
title: "Nut Collections",
|
||||
description: "Crunchy & delicious.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-different-herbs-spices-wooden-cutting-board_114579-61638.jpg",
|
||||
},
|
||||
{
|
||||
title: "Caramel Squares",
|
||||
description: "Perfectly balanced.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/hazelnuts-concrete-background-top-view_114579-7916.jpg",
|
||||
},
|
||||
{
|
||||
title: "White Berry",
|
||||
description: "Soft and fruity.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/charcoal-potato-ball_1339-8319.jpg",
|
||||
},
|
||||
{
|
||||
title: "Heart Ganache",
|
||||
description: "The perfect romantic gift.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/chocolate-candies-raspberry-white_176420-7475.jpg",
|
||||
},
|
||||
{
|
||||
title: "Event Favors",
|
||||
description: "Customized for guests.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/heart-cakes_1157-707.jpg",
|
||||
},
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ProductsSection />
|
||||
<CatalogSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsSimpleCards
|
||||
tag="Our Impact"
|
||||
title="More Than Just Chocolates"
|
||||
description="We are proud of the entrepreneurial spirit we cultivate and the joy we share."
|
||||
metrics={[
|
||||
{
|
||||
value: "10+",
|
||||
description: "Years of Passion",
|
||||
},
|
||||
{
|
||||
value: "1000s",
|
||||
description: "Delighted Customers",
|
||||
},
|
||||
{
|
||||
value: "Unlimited",
|
||||
description: "Joy Shared",
|
||||
},
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="team" data-section="team">
|
||||
<SectionErrorBoundary name="team">
|
||||
<TeamOverlayCards
|
||||
tag="Founders"
|
||||
title="Meet the Team"
|
||||
description="The visionaries behind MANNS Chocolates."
|
||||
members={[
|
||||
{
|
||||
name: "Carrington Manns",
|
||||
role: "Co-Founder",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sweet-shot-happy-interracial-gay-couple-enjoying-their-free-love-cuddling-hugging-each-other_273609-9474.jpg",
|
||||
},
|
||||
{
|
||||
name: "Dillon Manns",
|
||||
role: "Co-Founder",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-food-truck-owners_329181-20751.jpg",
|
||||
},
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TeamSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialColumnMarqueeCards
|
||||
tag="Reviews"
|
||||
title="Hear From Our Community"
|
||||
description="We love hearing how our chocolates bring joy to your special moments."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah J.",
|
||||
role: "Wedding Planner",
|
||||
quote: "The chocolates were exquisite and perfectly matched our wedding theme.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/thoughtful-confused-woman-chooses-chocolate-cookie-has-sweet-tooth-dressed-casual-sweater-keeps-diet-feels-temptation-eat-delicious-harmful-food-isolated-white-background_273609-62635.jpg",
|
||||
},
|
||||
{
|
||||
name: "Mike R.",
|
||||
role: "Gift Giver",
|
||||
quote: "Best birthday surprise ever. The quality is unmatched.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/friends-having-dinner-restaurant_23-2148018772.jpg",
|
||||
},
|
||||
{
|
||||
name: "Emily D.",
|
||||
role: "Event Coordinator",
|
||||
quote: "Fantastic service and even better taste. Will definitely order again.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-asian-woman-sunglasses-holding-lolipop-sweets-eating-candy-looking-happy-standing-pink-background_1258-98042.jpg",
|
||||
},
|
||||
{
|
||||
name: "David W.",
|
||||
role: "Regular Customer",
|
||||
quote: "Consistent, fresh, and always delicious. Highly recommended.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/attractive-young-woman-with-beautiful-gingerbread-walk_169016-24855.jpg",
|
||||
},
|
||||
{
|
||||
name: "Jessica L.",
|
||||
role: "Parent",
|
||||
quote: "Perfect treats for our baby shower guests. Everyone loved them!",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-with-paper-bag-looking-dress_23-2147688364.jpg",
|
||||
},
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Order Now"
|
||||
text="Ready to bring MANNS Chocolates to your next event? Reach out today to start your order."
|
||||
primaryButton={{
|
||||
text: "Contact Us",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Browse Catalog",
|
||||
href: "#products",
|
||||
}}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</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 AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutMediaOverlay
|
||||
tag="Our Story"
|
||||
title="The MANNS Legacy"
|
||||
description="Started in 2014 by Carrington and Dillon Manns, our journey began with a simple classroom project. Guided by Ms. Patricia Rashid, we learned the value of hard work, entrepreneurship, and community. Today, we bring that same passion to every handcrafted piece we create."
|
||||
imageSrc="http://img.b2bpic.net/free-photo/photo-cheerful-women-prepare-examination-session-home-assignment-together-write-notebook-enjoy-coffee_273609-44935.jpg"
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
155
src/pages/HomePage/sections/Catalog.tsx
Normal file
155
src/pages/HomePage/sections/Catalog.tsx
Normal file
@@ -0,0 +1,155 @@
|
||||
import React from 'react';
|
||||
import TextAnimation from '@/components/ui/TextAnimation';
|
||||
import ScrollReveal from '@/components/ui/ScrollReveal';
|
||||
|
||||
const catalogData = [
|
||||
{
|
||||
category: "Chocolate Covered Pretzel Rods",
|
||||
price: "3 for $1.00",
|
||||
items: [
|
||||
{ id: "001", name: "Milk Chocolate" },
|
||||
{ id: "002", name: "Dark Chocolate" },
|
||||
{ id: "003", name: "White Chocolate" },
|
||||
{ id: "004", name: "Chocolate Peanut Butter" },
|
||||
{ id: "005", name: "Dark Mint Chocolate" },
|
||||
]
|
||||
},
|
||||
{
|
||||
category: "Chocolate Covered Pretzel Rods w/Sprinkles",
|
||||
price: "75 cents each",
|
||||
items: [
|
||||
{ id: "006", name: "Milk Chocolate" },
|
||||
{ id: "007", name: "Dark Chocolate" },
|
||||
{ id: "008", name: "White Chocolate" },
|
||||
]
|
||||
},
|
||||
{
|
||||
category: "Chocolate Covered Pretzel Rods w/Peanuts",
|
||||
price: "75 cents each",
|
||||
items: [
|
||||
{ id: "009", name: "Milk Chocolate" },
|
||||
{ id: "010", name: "Dark Chocolate" },
|
||||
{ id: "011", name: "White Chocolate" },
|
||||
]
|
||||
},
|
||||
{
|
||||
category: "Chocolate Covered Pretzel Rods w/White Drizzle",
|
||||
price: "75 cents each",
|
||||
items: [
|
||||
{ id: "012", name: "Milk Chocolate" },
|
||||
{ id: "013", name: "Dark Chocolate" },
|
||||
{ id: "014", name: "Chocolate Peanut Butter" },
|
||||
{ id: "015", name: "Dark Mint Chocolate" },
|
||||
]
|
||||
},
|
||||
{
|
||||
category: "Chocolate Covered Pretzels",
|
||||
price: "$2.00 per 1/2 lb. bag",
|
||||
items: [
|
||||
{ id: "016", name: "Milk Chocolate" },
|
||||
{ id: "017", name: "Dark Chocolate" },
|
||||
{ id: "018", name: "White Chocolate" },
|
||||
{ id: "019", name: "Chocolate Peanut Butter" },
|
||||
{ id: "020", name: "Dark Mint Chocolate" },
|
||||
]
|
||||
},
|
||||
{
|
||||
category: "Chocolate Covered Pretzels w/Sprinkles",
|
||||
price: "$2.50 per 1/2 lb. bag",
|
||||
items: [
|
||||
{ id: "021", name: "Milk Chocolate" },
|
||||
{ id: "022", name: "Dark Chocolate" },
|
||||
{ id: "023", name: "White Chocolate" },
|
||||
]
|
||||
},
|
||||
{
|
||||
category: "Chocolate Covered Pretzels w/Peanuts",
|
||||
price: "$2.50 per 1/2 lb. bag",
|
||||
items: [
|
||||
{ id: "024", name: "Milk Chocolate" },
|
||||
{ id: "025", name: "Dark Chocolate" },
|
||||
{ id: "026", name: "White Chocolate" },
|
||||
]
|
||||
},
|
||||
{
|
||||
category: "Chocolate Covered Pretzels w/White Drizzle",
|
||||
price: "$2.50 per 1/2 lb. bag",
|
||||
items: [
|
||||
{ id: "027", name: "Milk Chocolate" },
|
||||
{ id: "028", name: "Dark Chocolate" },
|
||||
]
|
||||
},
|
||||
{
|
||||
category: "Chocolate Covered Peanuts",
|
||||
price: "$2.50 per 1/2 lb. bag",
|
||||
items: [
|
||||
{ id: "029", name: "Milk Chocolate" },
|
||||
{ id: "030", name: "Dark Chocolate" },
|
||||
{ id: "031", name: "White Chocolate" },
|
||||
]
|
||||
},
|
||||
{
|
||||
category: "Chocolate Covered Almonds",
|
||||
price: "$3.50 per 1/2 lb. bag",
|
||||
items: [
|
||||
{ id: "032", name: "Milk Chocolate" },
|
||||
{ id: "033", name: "Dark Chocolate" },
|
||||
{ id: "034", name: "White Chocolate" },
|
||||
]
|
||||
},
|
||||
{
|
||||
category: "Chocolate Covered Cashews",
|
||||
price: "$4.50 per 1/2 lb. bag",
|
||||
items: [
|
||||
{ id: "035", name: "Milk Chocolate" },
|
||||
{ id: "036", name: "Dark Chocolate" },
|
||||
{ id: "037", name: "White Chocolate" },
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
export default function CatalogSection() {
|
||||
return (
|
||||
<section id="catalog" data-webild-section="catalog" className="w-full py-24 bg-background">
|
||||
<div className="w-content-width mx-auto">
|
||||
<div className="text-center mb-16">
|
||||
<TextAnimation
|
||||
text="Full Catalog"
|
||||
variant="slide-up"
|
||||
tag="h2"
|
||||
gradientText={false}
|
||||
className="text-4xl md:text-5xl font-bold text-foreground mb-4"
|
||||
/>
|
||||
<TextAnimation
|
||||
text="Browse our complete selection of handcrafted chocolates."
|
||||
variant="fade"
|
||||
tag="p"
|
||||
gradientText={false}
|
||||
className="text-lg text-accent"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
|
||||
{catalogData.map((category, idx) => (
|
||||
<ScrollReveal key={idx} variant="slide-up" delay={idx * 0.1}>
|
||||
<div className="card p-6 h-full flex flex-col">
|
||||
<div className="mb-4 pb-4 border-b border-foreground/10">
|
||||
<h3 className="text-xl font-semibold text-foreground mb-1">{category.category}</h3>
|
||||
<p className="text-accent font-medium">{category.price}</p>
|
||||
</div>
|
||||
<ul className="space-y-2 flex-grow">
|
||||
{category.items.map((item) => (
|
||||
<li key={item.id} className="flex justify-between items-center text-sm">
|
||||
<span className="text-foreground">{item.name}</span>
|
||||
<span className="text-accent text-xs">Item {item.id}</span>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
</ScrollReveal>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
28
src/pages/HomePage/sections/Contact.tsx
Normal file
28
src/pages/HomePage/sections/Contact.tsx
Normal file
@@ -0,0 +1,28 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "contact" section.
|
||||
|
||||
import React from 'react';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ContactSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Order Now"
|
||||
text="Ready to bring MANNS Chocolates to your next event? Reach out today to start your order."
|
||||
primaryButton={{
|
||||
text: "Contact Us",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Browse Catalog",
|
||||
href: "#products",
|
||||
}}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
59
src/pages/HomePage/sections/Features.tsx
Normal file
59
src/pages/HomePage/sections/Features.tsx
Normal file
@@ -0,0 +1,59 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "features" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FeaturesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesMediaCarousel
|
||||
tag="Our Specialties"
|
||||
title="Celebrations Crafted by Hand"
|
||||
description="We specialize in chocolates for all your life's milestone moments."
|
||||
items={[
|
||||
{
|
||||
title: "Weddings & Showers",
|
||||
description: "Elegant favors for your special day.",
|
||||
buttonIcon: "Heart",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/still-life-delicious-marzipan-dessert_23-2149715499.jpg",
|
||||
},
|
||||
{
|
||||
title: "Holiday Collections",
|
||||
description: "Seasonal delights to make memories.",
|
||||
buttonIcon: "Gift",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/eclairs-covered-with-pink-glaze-served-round-white-plate_8353-577.jpg",
|
||||
},
|
||||
{
|
||||
title: "Birthdays & More",
|
||||
description: "Personalized treats for every celebration.",
|
||||
buttonIcon: "Star",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/chocolate-christmas-concept_23-2147985556.jpg",
|
||||
},
|
||||
{
|
||||
title: "Corporate Gifts",
|
||||
description: "Thoughtful gifts for partners.",
|
||||
buttonIcon: "Briefcase",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-truffle-recipe_23-2149525128.jpg",
|
||||
},
|
||||
{
|
||||
title: "Religious Events",
|
||||
description: "Beautiful gifts for sacred days.",
|
||||
buttonIcon: "Award",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/silver-crowns-stand-table-with-pink-bakeru-berries_8353-1077.jpg",
|
||||
},
|
||||
{
|
||||
title: "Custom Orders",
|
||||
description: "Tailored to your specific theme.",
|
||||
buttonIcon: "Palette",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/gift-drink-near-conifer-twig-cones-blanket_23-2147936824.jpg",
|
||||
},
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
30
src/pages/HomePage/sections/Hero.tsx
Normal file
30
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,30 @@
|
||||
// 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 HeroBillboard from '@/components/sections/hero/HeroBillboard';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboard
|
||||
tag="Established 2014"
|
||||
title="Crafting Joy, One Chocolate at a Time."
|
||||
description="From a fourth-grade project to a legacy of love. MANNS Chocolates delivers artisanal, handcrafted sweets for every celebration."
|
||||
primaryButton={{
|
||||
text: "Our Catalog",
|
||||
href: "#products",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Contact Us",
|
||||
href: "#contact",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/chocolate-roll-with-coffee-beans-pinecones-high-quality-photo_114579-26652.jpg"
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
35
src/pages/HomePage/sections/Metrics.tsx
Normal file
35
src/pages/HomePage/sections/Metrics.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 "metrics" section.
|
||||
|
||||
import React from 'react';
|
||||
import MetricsSimpleCards from '@/components/sections/metrics/MetricsSimpleCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function MetricsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsSimpleCards
|
||||
tag="Our Impact"
|
||||
title="More Than Just Chocolates"
|
||||
description="We are proud of the entrepreneurial spirit we cultivate and the joy we share."
|
||||
metrics={[
|
||||
{
|
||||
value: "10+",
|
||||
description: "Years of Passion",
|
||||
},
|
||||
{
|
||||
value: "1000s",
|
||||
description: "Delighted Customers",
|
||||
},
|
||||
{
|
||||
value: "Unlimited",
|
||||
description: "Joy Shared",
|
||||
},
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
58
src/pages/HomePage/sections/Products.tsx
Normal file
58
src/pages/HomePage/sections/Products.tsx
Normal file
@@ -0,0 +1,58 @@
|
||||
// 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 FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ProductsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesImageBento
|
||||
tag="Collection"
|
||||
title="Explore Our Catalog"
|
||||
description="Handcrafted chocolates made with quality and care."
|
||||
items={[
|
||||
{
|
||||
title: "Classic Bars",
|
||||
description: "Pure, simple, rich.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/back-back-waffles-board-marble-table_114579-74861.jpg",
|
||||
},
|
||||
{
|
||||
title: "Truffle Boxes",
|
||||
description: "Assorted gourmet delight.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-blue-white-chocolate-white-speck-white-stand_140725-14025.jpg",
|
||||
},
|
||||
{
|
||||
title: "Nut Collections",
|
||||
description: "Crunchy & delicious.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-different-herbs-spices-wooden-cutting-board_114579-61638.jpg",
|
||||
},
|
||||
{
|
||||
title: "Caramel Squares",
|
||||
description: "Perfectly balanced.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/hazelnuts-concrete-background-top-view_114579-7916.jpg",
|
||||
},
|
||||
{
|
||||
title: "White Berry",
|
||||
description: "Soft and fruity.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/charcoal-potato-ball_1339-8319.jpg",
|
||||
},
|
||||
{
|
||||
title: "Heart Ganache",
|
||||
description: "The perfect romantic gift.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/chocolate-candies-raspberry-white_176420-7475.jpg",
|
||||
},
|
||||
{
|
||||
title: "Event Favors",
|
||||
description: "Customized for guests.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/heart-cakes_1157-707.jpg",
|
||||
},
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
33
src/pages/HomePage/sections/Team.tsx
Normal file
33
src/pages/HomePage/sections/Team.tsx
Normal file
@@ -0,0 +1,33 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "team" section.
|
||||
|
||||
import React from 'react';
|
||||
import TeamOverlayCards from '@/components/sections/team/TeamOverlayCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TeamSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="team" data-section="team">
|
||||
<SectionErrorBoundary name="team">
|
||||
<TeamOverlayCards
|
||||
tag="Founders"
|
||||
title="Meet the Team"
|
||||
description="The visionaries behind MANNS Chocolates."
|
||||
members={[
|
||||
{
|
||||
name: "Carrington Manns",
|
||||
role: "Co-Founder",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sweet-shot-happy-interracial-gay-couple-enjoying-their-free-love-cuddling-hugging-each-other_273609-9474.jpg",
|
||||
},
|
||||
{
|
||||
name: "Dillon Manns",
|
||||
role: "Co-Founder",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-food-truck-owners_329181-20751.jpg",
|
||||
},
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
53
src/pages/HomePage/sections/Testimonials.tsx
Normal file
53
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,53 @@
|
||||
// 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 TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialColumnMarqueeCards
|
||||
tag="Reviews"
|
||||
title="Hear From Our Community"
|
||||
description="We love hearing how our chocolates bring joy to your special moments."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah J.",
|
||||
role: "Wedding Planner",
|
||||
quote: "The chocolates were exquisite and perfectly matched our wedding theme.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/thoughtful-confused-woman-chooses-chocolate-cookie-has-sweet-tooth-dressed-casual-sweater-keeps-diet-feels-temptation-eat-delicious-harmful-food-isolated-white-background_273609-62635.jpg",
|
||||
},
|
||||
{
|
||||
name: "Mike R.",
|
||||
role: "Gift Giver",
|
||||
quote: "Best birthday surprise ever. The quality is unmatched.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/friends-having-dinner-restaurant_23-2148018772.jpg",
|
||||
},
|
||||
{
|
||||
name: "Emily D.",
|
||||
role: "Event Coordinator",
|
||||
quote: "Fantastic service and even better taste. Will definitely order again.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-asian-woman-sunglasses-holding-lolipop-sweets-eating-candy-looking-happy-standing-pink-background_1258-98042.jpg",
|
||||
},
|
||||
{
|
||||
name: "David W.",
|
||||
role: "Regular Customer",
|
||||
quote: "Consistent, fresh, and always delicious. Highly recommended.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/attractive-young-woman-with-beautiful-gingerbread-walk_169016-24855.jpg",
|
||||
},
|
||||
{
|
||||
name: "Jessica L.",
|
||||
role: "Parent",
|
||||
quote: "Perfect treats for our baby shower guests. Everyone loved them!",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-with-paper-bag-looking-dress_23-2147688364.jpg",
|
||||
},
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user