Compare commits
8 Commits
version_1_
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| f4ecca885c | |||
|
|
9b8949dbec | ||
| 44b86973fd | |||
|
|
a2d60796b6 | ||
| 0ff8545fe0 | |||
|
|
9675501baf | ||
| 0c532abccc | |||
|
|
cc9a940a38 |
@@ -5,15 +5,15 @@
|
||||
|
||||
:root {
|
||||
/* @colorThemes/lightTheme/grayNavyBlue */
|
||||
--background: #efebe5;
|
||||
--card: #f7f2ea;
|
||||
--foreground: #000000;
|
||||
--primary-cta: #000000;
|
||||
--primary-cta-text: #efebe5;
|
||||
--secondary-cta: #ffffff;
|
||||
--secondary-cta-text: #000000;
|
||||
--accent: #ffffff;
|
||||
--background-accent: #e1b875;
|
||||
--background: #121212;
|
||||
--card: #1e1e1e;
|
||||
--foreground: #ffffff;
|
||||
--primary-cta: #ffffff;
|
||||
--primary-cta-text: #121212;
|
||||
--secondary-cta: #2a2a2a;
|
||||
--secondary-cta-text: #ffffff;
|
||||
--accent: #a0a0a0;
|
||||
--background-accent: #332b1f;
|
||||
|
||||
/* @layout/border-radius/rounded */
|
||||
--radius: 1rem;
|
||||
|
||||
@@ -1,253 +1,41 @@
|
||||
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';
|
||||
import FaqSection from './HomePage/sections/Faq';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 />
|
||||
<FaqSection />
|
||||
|
||||
<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>
|
||||
);
|
||||
}
|
||||
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: "Contact Us",
|
||||
href: "#"
|
||||
};
|
||||
const secondaryButton = {
|
||||
text: "Browse Catalog",
|
||||
href: "#products"
|
||||
};
|
||||
|
||||
const ContactInline = () => {
|
||||
return (
|
||||
<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>{"Order Now"}</p>
|
||||
</div>
|
||||
|
||||
<TextAnimation
|
||||
text={"Ready to bring MANNS Chocolates to your next event? Reach out today to start your order."}
|
||||
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" data-section="contact" id="contact">
|
||||
<ContactInline />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
52
src/pages/HomePage/sections/Faq.tsx
Normal file
52
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -0,0 +1,52 @@
|
||||
import Accordion from '@/components/ui/Accordion';
|
||||
import TextAnimation from '@/components/ui/TextAnimation';
|
||||
import Tag from '@/components/ui/Tag';
|
||||
|
||||
export default function FaqSection() {
|
||||
const faqItems = [
|
||||
{
|
||||
title: "How long do the chocolates stay fresh?",
|
||||
content: "Our handcrafted chocolates are made without artificial preservatives. For the best experience, we recommend enjoying them within 3-4 weeks of purchase. Store them in a cool, dry place away from direct sunlight."
|
||||
},
|
||||
{
|
||||
title: "Do you offer allergy-friendly options?",
|
||||
content: "While we take great care in our kitchen, all of our products are made in a facility that also processes peanuts, tree nuts, dairy, and wheat. If you have a severe allergy, we recommend exercising caution."
|
||||
},
|
||||
{
|
||||
title: "Can I place a custom order for a wedding or event?",
|
||||
content: "Absolutely! We love being part of your special moments. We offer custom packaging and bulk orders for weddings, showers, and corporate events. Please reach out via our contact form at least 4 weeks in advance."
|
||||
},
|
||||
{
|
||||
title: "Do you ship nationwide?",
|
||||
content: "Yes, we ship our chocolates across the country! During warmer months, we use insulated packaging and ice packs to ensure your treats arrive in perfect condition. Shipping rates are calculated at checkout."
|
||||
},
|
||||
{
|
||||
title: "What is your return policy?",
|
||||
content: "Due to the perishable nature of our products, we do not accept returns. However, if your order arrives damaged or you are unsatisfied with your purchase, please contact us within 48 hours and we will make it right."
|
||||
}
|
||||
];
|
||||
|
||||
return (
|
||||
<section data-webild-section="faq" id="faq" className="relative w-full py-24 bg-background">
|
||||
<div className="w-content-width mx-auto">
|
||||
<div className="flex flex-col items-center text-center mb-16">
|
||||
<Tag text="FAQ" className="mb-6" />
|
||||
<TextAnimation
|
||||
text="Common Questions"
|
||||
variant="slide-up"
|
||||
tag="h2"
|
||||
className="text-4xl md:text-5xl font-bold text-foreground mb-6"
|
||||
gradientText={false}
|
||||
/>
|
||||
<p className="text-lg text-accent max-w-2xl">
|
||||
Everything you need to know about our handcrafted chocolates, ordering, and shipping.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="max-w-3xl mx-auto">
|
||||
<Accordion items={faqItems} className="w-full" />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
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