Merge version_2_1782058121077 into main #1
@@ -1,205 +1,35 @@
|
||||
import AboutTextSplit from '@/components/sections/about/AboutTextSplit';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqSimple from '@/components/sections/faq/FaqSimple';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import HeroBillboard from '@/components/sections/hero/HeroBillboard';
|
||||
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
|
||||
import TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
|
||||
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 FeaturesSection from './HomePage/sections/Features';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import FaqSection from './HomePage/sections/Faq';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
|
||||
import CustomizerSection from './HomePage/sections/Customizer';export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboard
|
||||
tag="Oral Care Evolution"
|
||||
title="AI-Powered Personalization for Your Daily Smile"
|
||||
description="Design your perfect toothpaste formula and carry your oral-care essentials in style. Experience the fusion of technology and wellness with Colgate Smart Bag."
|
||||
primaryButton={{
|
||||
text: "Design My Toothpaste",
|
||||
href: "#features",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "See Smart Bags",
|
||||
href: "#about",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/tooth-paste_187299-45834.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTextSplit
|
||||
title="A Smarter Way to Care"
|
||||
descriptions={[
|
||||
"Our AI algorithm analyzes your lifestyle and oral-care goals to curate a unique toothpaste formula tailored exactly to you. From whitening intensity to sensitive protection, every detail is engineered for your needs.",
|
||||
"We believe that oral health is an essential part of lifestyle. That's why we've combined high-tech personalized care with stylish, durable travel solutions that keep your routine effortless, wherever you go.",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesImageBento
|
||||
tag="Design Hub"
|
||||
title="Personalization Features"
|
||||
description="Unlock infinite possibilities with our intuitive customization tools."
|
||||
items={[
|
||||
{
|
||||
title: "AI Formula Creator",
|
||||
description: "Precision tailoring for your oral care.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/illustration-dental-care-application-digital-tablet_53876-125399.jpg",
|
||||
},
|
||||
{
|
||||
title: "3D Packaging Preview",
|
||||
description: "Visualize your design before it's made.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-traveler-with-suitcase_23-2151043213.jpg",
|
||||
},
|
||||
{
|
||||
title: "Smart Bag Designer",
|
||||
description: "Customize colors, materials, and styles.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/luggage-seen-from-rear-car-window_23-2150934320.jpg",
|
||||
},
|
||||
{
|
||||
title: "Premium Ingredients",
|
||||
description: "Naturally sourced for maximum efficacy.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-women-man-essentials-travel-concept_1921-66.jpg",
|
||||
},
|
||||
{
|
||||
title: "Custom Labels",
|
||||
description: "Express yourself with custom artwork.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vertical-banners-sales_23-2150629839.jpg",
|
||||
},
|
||||
{
|
||||
title: "Travel Ready",
|
||||
description: "Sleek compact solutions.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vanity-case-with-products-high-angle_23-2149879964.jpg",
|
||||
},
|
||||
{
|
||||
title: "Subscription Plans",
|
||||
description: "Refills delivered to your door.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/mediterranean-aesthetic-tiles-with-women-s-bag_23-2150916693.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
<CustomizerSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsMediaCards
|
||||
tag="Our Impact"
|
||||
title="Data-Driven Wellness"
|
||||
description="Proven results for a healthier, brighter future."
|
||||
metrics={[
|
||||
{
|
||||
value: "98%",
|
||||
title: "Satisfaction Rate",
|
||||
description: "Users report visibly healthier smiles.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/digital-banking-transparent-screen_53876-105382.jpg",
|
||||
},
|
||||
{
|
||||
value: "5M+",
|
||||
title: "Custom Formulas",
|
||||
description: "Unique recipes created by AI.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/flat-lay-bath-concept-cement-background_23-2148296010.jpg",
|
||||
},
|
||||
{
|
||||
value: "24/7",
|
||||
title: "Wellness Tracking",
|
||||
description: "Connected smart care technology.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/mediterranean-aesthetic-tiles-with-women-s-bag_23-2150916683.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialMarqueeCards
|
||||
tag="Feedback"
|
||||
title="What Our Community Says"
|
||||
description="Join millions of satisfied smile creators."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Anna P.",
|
||||
role: "Designer",
|
||||
quote: "The AI formula maker is simply revolutionary. My sensitivity issues are gone!",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/black-businessman-happy-expression_1194-2547.jpg",
|
||||
},
|
||||
{
|
||||
name: "Marcus R.",
|
||||
role: "Traveler",
|
||||
quote: "The Smart Bag is stylish and perfectly fits all my oral-care essentials.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/lifestyle-weekend-concept-young-smiling-woman-relaxing-home-lying-bed-with-cup-tea_1258-281793.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah L.",
|
||||
role: "Manager",
|
||||
quote: "Finally, a toothpaste that I actually enjoy using every single morning.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/african-american-young-man-wearing-jacket-checkered-shirt-looking-camera-studio_613910-21142.jpg",
|
||||
},
|
||||
{
|
||||
name: "David W.",
|
||||
role: "Entrepreneur",
|
||||
quote: "Seamless experience from design to delivery. The 3D preview is top-notch.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/image-young-brunette-woman-sitting-dreamy-kitchen-smiling-thoughtful-holding-smartphone_1258-187162.jpg",
|
||||
},
|
||||
{
|
||||
name: "Elena V.",
|
||||
role: "Artist",
|
||||
quote: "Love the custom label feature, my tube looks like a work of art.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/calisthenics-parallel-bars-isolated-empty-white-room-black-pull-bar_346278-1589.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSimple
|
||||
tag="Help"
|
||||
title="Common Questions"
|
||||
description="Everything you need to know about Colgate Smart Bag."
|
||||
items={[
|
||||
{
|
||||
question: "How does the AI create the formula?",
|
||||
answer: "Our AI uses your survey responses and lifestyle data to identify which ingredients and concentrations work best for your unique needs.",
|
||||
},
|
||||
{
|
||||
question: "Can I reuse my bag?",
|
||||
answer: "Yes, our Smart Bags are constructed from premium, durable, and recyclable materials meant for long-term use.",
|
||||
},
|
||||
{
|
||||
question: "How often do refills arrive?",
|
||||
answer: "You can customize your subscription frequency from 1 to 3 months based on your usage.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Join the Future"
|
||||
text="Start designing your perfect smile today."
|
||||
primaryButton={{
|
||||
text: "Design Now",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "View Catalog",
|
||||
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="A Smarter Way to Care"
|
||||
descriptions={[
|
||||
"Our AI algorithm analyzes your lifestyle and oral-care goals to curate a unique toothpaste formula tailored exactly to you. From whitening intensity to sensitive protection, every detail is engineered for your needs.",
|
||||
"We believe that oral health is an essential part of lifestyle. That's why we've combined high-tech personalized care with stylish, durable travel solutions that keep your routine effortless, wherever you go.",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
27
src/pages/HomePage/sections/Contact.tsx
Normal file
27
src/pages/HomePage/sections/Contact.tsx
Normal file
@@ -0,0 +1,27 @@
|
||||
// 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="Join the Future"
|
||||
text="Start designing your perfect smile today."
|
||||
primaryButton={{
|
||||
text: "Design Now",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "View Catalog",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
116
src/pages/HomePage/sections/Customizer.tsx
Normal file
116
src/pages/HomePage/sections/Customizer.tsx
Normal file
@@ -0,0 +1,116 @@
|
||||
import React, { useState } from "react";
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
import TextBox from "@/components/ui/TextBox";
|
||||
import Modal from "@/components/ui/Modal";
|
||||
import Button from "@/components/ui/Button";
|
||||
import Input from "@/components/ui/Input";
|
||||
import Label from "@/components/ui/Label";
|
||||
import Textarea from "@/components/ui/Textarea";
|
||||
import SelectorButton from "@/components/ui/SelectorButton";
|
||||
|
||||
export default function CustomizerSection() {
|
||||
const [flavor, setFlavor] = useState("mint");
|
||||
const [material, setMaterial] = useState("leather");
|
||||
|
||||
return (
|
||||
<div id="customizer" data-webild-section="customizer" className="py-24 bg-background">
|
||||
<SectionErrorBoundary name="customizer">
|
||||
<div className="w-content-width mx-auto">
|
||||
<TextBox
|
||||
tag="Live Customization Studio"
|
||||
title="Design Your Perfect Routine"
|
||||
description="Personalize your oral care and lifestyle accessories in real-time. Choose your formulas, colors, and materials to create a truly unique experience."
|
||||
className="mb-12"
|
||||
/>
|
||||
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-8">
|
||||
{/* Toothpaste Creator Card */}
|
||||
<div className="card p-8 flex flex-col items-center text-center">
|
||||
<div className="w-24 h-24 rounded-full bg-primary-cta/10 flex items-center justify-center mb-6">
|
||||
<span className="text-4xl">🦷</span>
|
||||
</div>
|
||||
<h3 className="text-2xl font-bold text-foreground mb-4">AI Toothpaste Creator</h3>
|
||||
<p className="text-accent mb-8">
|
||||
Tailor your toothpaste formula based on your specific dental needs, flavor preferences, and sensitivity levels.
|
||||
</p>
|
||||
<Modal
|
||||
title="AI Toothpaste Creator"
|
||||
description="Customize your perfect formula."
|
||||
trigger={<Button text="Start Creating" variant="primary" />}
|
||||
>
|
||||
<div className="space-y-6 py-4">
|
||||
<div className="space-y-2">
|
||||
<Label>Primary Goal</Label>
|
||||
<SelectorButton
|
||||
options={[
|
||||
{ label: "Whitening", value: "whitening" },
|
||||
{ label: "Sensitivity", value: "sensitivity" },
|
||||
{ label: "Gum Health", value: "gum" }
|
||||
]}
|
||||
activeValue={flavor}
|
||||
onValueChange={setFlavor}
|
||||
/>
|
||||
</div>
|
||||
<div className="space-y-2">
|
||||
<Label>Flavor Profile</Label>
|
||||
<Input placeholder="e.g., Cool Mint, Cinnamon, Berry" />
|
||||
</div>
|
||||
<div className="space-y-2">
|
||||
<Label>Special Requirements</Label>
|
||||
<Textarea placeholder="Any allergies or specific ingredients to avoid?" />
|
||||
</div>
|
||||
<Button text="Generate Formula" className="w-full" />
|
||||
</div>
|
||||
</Modal>
|
||||
</div>
|
||||
|
||||
{/* Smart Bag Designer Card */}
|
||||
<div className="card p-8 flex flex-col items-center text-center">
|
||||
<div className="w-24 h-24 rounded-full bg-primary-cta/10 flex items-center justify-center mb-6">
|
||||
<span className="text-4xl">🎒</span>
|
||||
</div>
|
||||
<h3 className="text-2xl font-bold text-foreground mb-4">Smart Bag Designer</h3>
|
||||
<p className="text-accent mb-8">
|
||||
Design your ideal travel companion. Choose materials, colors, and smart features to fit your lifestyle.
|
||||
</p>
|
||||
<Modal
|
||||
title="Smart Bag Designer"
|
||||
description="Build your perfect travel companion."
|
||||
trigger={<Button text="Start Designing" variant="primary" />}
|
||||
>
|
||||
<div className="space-y-6 py-4">
|
||||
<div className="space-y-2">
|
||||
<Label>Exterior Material</Label>
|
||||
<SelectorButton
|
||||
options={[
|
||||
{ label: "Vegan Leather", value: "leather" },
|
||||
{ label: "Recycled Nylon", value: "nylon" },
|
||||
{ label: "Hard Shell", value: "hard" }
|
||||
]}
|
||||
activeValue={material}
|
||||
onValueChange={setMaterial}
|
||||
/>
|
||||
</div>
|
||||
<div className="space-y-2">
|
||||
<Label>Primary Color</Label>
|
||||
<div className="flex gap-4">
|
||||
<div className="w-10 h-10 rounded-full bg-black cursor-pointer border-2 border-transparent hover:border-primary-cta"></div>
|
||||
<div className="w-10 h-10 rounded-full bg-[#e63946] cursor-pointer border-2 border-primary-cta"></div>
|
||||
<div className="w-10 h-10 rounded-full bg-white border cursor-pointer hover:border-primary-cta"></div>
|
||||
<div className="w-10 h-10 rounded-full bg-blue-900 cursor-pointer border-2 border-transparent hover:border-primary-cta"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="space-y-2">
|
||||
<Label>Monogram (Optional)</Label>
|
||||
<Input placeholder="Enter up to 3 initials" maxLength={3} />
|
||||
</div>
|
||||
<Button text="Preview Design" className="w-full" />
|
||||
</div>
|
||||
</Modal>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
34
src/pages/HomePage/sections/Faq.tsx
Normal file
34
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -0,0 +1,34 @@
|
||||
// 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 FaqSimple from '@/components/sections/faq/FaqSimple';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FaqSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSimple
|
||||
tag="Help"
|
||||
title="Common Questions"
|
||||
description="Everything you need to know about Colgate Smart Bag."
|
||||
items={[
|
||||
{
|
||||
question: "How does the AI create the formula?",
|
||||
answer: "Our AI uses your survey responses and lifestyle data to identify which ingredients and concentrations work best for your unique needs.",
|
||||
},
|
||||
{
|
||||
question: "Can I reuse my bag?",
|
||||
answer: "Yes, our Smart Bags are constructed from premium, durable, and recyclable materials meant for long-term use.",
|
||||
},
|
||||
{
|
||||
question: "How often do refills arrive?",
|
||||
answer: "You can customize your subscription frequency from 1 to 3 months based on your usage.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Features.tsx
Normal file
57
src/pages/HomePage/sections/Features.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 "features" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FeaturesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesImageBento
|
||||
tag="Design Hub"
|
||||
title="Personalization Features"
|
||||
description="Unlock infinite possibilities with our intuitive customization tools."
|
||||
items={[
|
||||
{
|
||||
title: "AI Formula Creator",
|
||||
description: "Precision tailoring for your oral care.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/illustration-dental-care-application-digital-tablet_53876-125399.jpg",
|
||||
},
|
||||
{
|
||||
title: "3D Packaging Preview",
|
||||
description: "Visualize your design before it's made.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-traveler-with-suitcase_23-2151043213.jpg",
|
||||
},
|
||||
{
|
||||
title: "Smart Bag Designer",
|
||||
description: "Customize colors, materials, and styles.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/luggage-seen-from-rear-car-window_23-2150934320.jpg",
|
||||
},
|
||||
{
|
||||
title: "Premium Ingredients",
|
||||
description: "Naturally sourced for maximum efficacy.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-women-man-essentials-travel-concept_1921-66.jpg",
|
||||
},
|
||||
{
|
||||
title: "Custom Labels",
|
||||
description: "Express yourself with custom artwork.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vertical-banners-sales_23-2150629839.jpg",
|
||||
},
|
||||
{
|
||||
title: "Travel Ready",
|
||||
description: "Sleek compact solutions.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vanity-case-with-products-high-angle_23-2149879964.jpg",
|
||||
},
|
||||
{
|
||||
title: "Subscription Plans",
|
||||
description: "Refills delivered to your door.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/mediterranean-aesthetic-tiles-with-women-s-bag_23-2150916693.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
29
src/pages/HomePage/sections/Hero.tsx
Normal file
29
src/pages/HomePage/sections/Hero.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 "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="Oral Care Evolution"
|
||||
title="AI-Powered Personalization for Your Daily Smile"
|
||||
description="Design your perfect toothpaste formula and carry your oral-care essentials in style. Experience the fusion of technology and wellness with Colgate Smart Bag."
|
||||
primaryButton={{
|
||||
text: "Design My Toothpaste",
|
||||
href: "#features",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "See Smart Bags",
|
||||
href: "#about",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/tooth-paste_187299-45834.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
40
src/pages/HomePage/sections/Metrics.tsx
Normal file
40
src/pages/HomePage/sections/Metrics.tsx
Normal file
@@ -0,0 +1,40 @@
|
||||
// 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 MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function MetricsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsMediaCards
|
||||
tag="Our Impact"
|
||||
title="Data-Driven Wellness"
|
||||
description="Proven results for a healthier, brighter future."
|
||||
metrics={[
|
||||
{
|
||||
value: "98%",
|
||||
title: "Satisfaction Rate",
|
||||
description: "Users report visibly healthier smiles.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/digital-banking-transparent-screen_53876-105382.jpg",
|
||||
},
|
||||
{
|
||||
value: "5M+",
|
||||
title: "Custom Formulas",
|
||||
description: "Unique recipes created by AI.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/flat-lay-bath-concept-cement-background_23-2148296010.jpg",
|
||||
},
|
||||
{
|
||||
value: "24/7",
|
||||
title: "Wellness Tracking",
|
||||
description: "Connected smart care technology.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/mediterranean-aesthetic-tiles-with-women-s-bag_23-2150916683.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
52
src/pages/HomePage/sections/Testimonials.tsx
Normal file
52
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,52 @@
|
||||
// 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 TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialMarqueeCards
|
||||
tag="Feedback"
|
||||
title="What Our Community Says"
|
||||
description="Join millions of satisfied smile creators."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Anna P.",
|
||||
role: "Designer",
|
||||
quote: "The AI formula maker is simply revolutionary. My sensitivity issues are gone!",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/black-businessman-happy-expression_1194-2547.jpg",
|
||||
},
|
||||
{
|
||||
name: "Marcus R.",
|
||||
role: "Traveler",
|
||||
quote: "The Smart Bag is stylish and perfectly fits all my oral-care essentials.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/lifestyle-weekend-concept-young-smiling-woman-relaxing-home-lying-bed-with-cup-tea_1258-281793.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah L.",
|
||||
role: "Manager",
|
||||
quote: "Finally, a toothpaste that I actually enjoy using every single morning.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/african-american-young-man-wearing-jacket-checkered-shirt-looking-camera-studio_613910-21142.jpg",
|
||||
},
|
||||
{
|
||||
name: "David W.",
|
||||
role: "Entrepreneur",
|
||||
quote: "Seamless experience from design to delivery. The 3D preview is top-notch.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/image-young-brunette-woman-sitting-dreamy-kitchen-smiling-thoughtful-holding-smartphone_1258-187162.jpg",
|
||||
},
|
||||
{
|
||||
name: "Elena V.",
|
||||
role: "Artist",
|
||||
quote: "Love the custom label feature, my tube looks like a work of art.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/calisthenics-parallel-bars-isolated-empty-white-room-black-pull-bar_346278-1589.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user