15 Commits

Author SHA1 Message Date
kudinDmitriyUp
307f8aae69 Bob AI (stub): Increase the spacing from the side of each element on the he 2026-06-03 15:01:46 +00:00
103f1ac138 Merge version_8_1780498632449 into main
Merge version_8_1780498632449 into main
2026-06-03 14:58:26 +00:00
kudinDmitriyUp
1808eaeb59 Bob AI: Fix button styling in hero section to use standard Button co 2026-06-03 14:57:44 +00:00
0a555cebf0 Merge version_7_1780497924503 into main
Merge version_7_1780497924503 into main
2026-06-03 14:47:12 +00:00
kudinDmitriyUp
1bd975b83a Bob AI: On the hero section, fix the broken spacing from the sides o 2026-06-03 14:46:36 +00:00
070498676d Merge version_6_1780497418695 into main
Merge version_6_1780497418695 into main
2026-06-03 14:38:52 +00:00
kudinDmitriyUp
0adc67b76d Bob AI (stub): Fix the spacing and buttons on the first section. 2026-06-03 14:38:49 +00:00
bc5393893b Merge version_5_1780497112957 into main
Merge version_5_1780497112957 into main
2026-06-03 14:33:37 +00:00
kudinDmitriyUp
b0069a702f Bob AI: Changed the second section to a split layout with text and i 2026-06-03 14:32:57 +00:00
3c3c30edec Merge version_4_1780496862537 into main
Merge version_4_1780496862537 into main
2026-06-03 14:30:32 +00:00
kudinDmitriyUp
a8915a2817 Bob AI: For the image on the hero section, have it switch in between 2026-06-03 14:29:56 +00:00
3aa9469b5d Merge version_3_1780496675582 into main
Merge version_3_1780496675582 into main
2026-06-03 14:26:25 +00:00
kudinDmitriyUp
c9c7285f53 Bob AI (stub): Make the hero section smoothly switch between 4 images, with 2026-06-03 14:26:19 +00:00
eed444b7ad Merge version_2_1780496569911 into main
Merge version_2_1780496569911 into main
2026-06-03 14:23:46 +00:00
kudinDmitriyUp
d7574da9bd Bob AI: Modify the hero section to display a large image carousel that switches between 2026-06-03 14:23:43 +00:00
9 changed files with 407 additions and 204 deletions

View File

@@ -1,210 +1,37 @@
import AboutTestimonial from '@/components/sections/about/AboutTestimonial';
import ContactCta from '@/components/sections/contact/ContactCta';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import FeaturesMediaGrid from '@/components/sections/features/FeaturesMediaGrid';
import HeroBillboardBrand from '@/components/sections/hero/HeroBillboardBrand';
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
import TeamOverlayCards from '@/components/sections/team/TeamOverlayCards';
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; this shell only fixes render order.
export default function HomePage() {
import React from 'react';
import HeroSection from './HomePage/sections/Hero';
import AboutSection from './HomePage/sections/About';
import ServicesSection from './HomePage/sections/Services';
import PortfolioSection from './HomePage/sections/Portfolio';
import ClientsSection from './HomePage/sections/Clients';
import TeamSection from './HomePage/sections/Team';
import TestimonialsSection from './HomePage/sections/Testimonials';
import ContactSection from './HomePage/sections/Contact';
{/* webild-stub @2026-06-03T15:01:45.386Z: Increase the spacing from the side of each element on the hero section like the rest of the site */}
{/* webild-stub @2026-06-03T14:38:48.425Z: Fix the spacing and buttons on the first section. */}
{/* webild-stub @2026-06-03T14:26:17.945Z: Make the hero section smoothly switch between 4 images, with a loading animation in between each image transition. */}
export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroBillboardBrand
brand="Innovate Marketing"
description="Your Vision, Amplified. We craft data-driven strategies and compelling narratives to elevate your brand and drive measurable results. Let's grow together."
primaryButton={{
text: "Our Services",
href: "#services",
}}
secondaryButton={{
text: "Contact Us",
href: "#contact",
}}
imageSrc="http://img.b2bpic.net/free-photo/group-friends-planning-trip-cafe_23-2148952344.jpg"
/>
</SectionErrorBoundary>
</div>
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutTestimonial
tag="About Us"
quote="Our mission is to empower businesses with innovative marketing solutions that connect, engage, and convert. We believe in transparent partnerships and sustainable growth."
author="Jane Doe"
role="Founder & CEO, Innovate Marketing"
imageSrc="http://img.b2bpic.net/free-photo/joyful-business-woman-with-coffee-cup_23-2148095746.jpg"
/>
</SectionErrorBoundary>
</div>
<div id="services" data-section="services">
<SectionErrorBoundary name="services">
<FeaturesMediaGrid
tag="Our Services"
title="Comprehensive Digital Marketing Solutions"
description="From strategy to execution, we cover all aspects of digital marketing to ensure your brand stands out and achieves its goals."
items={[
{
title: "SEO & SEM",
description: "Boost your visibility and drive organic traffic with our expert search engine optimization and marketing strategies.",
imageSrc: "http://img.b2bpic.net/free-photo/business-chart-visual-graphics-report-concept_53876-125580.jpg",
},
{
title: "Content Marketing",
description: "Engage your audience with compelling stories and valuable content that converts leads into loyal customers.",
imageSrc: "http://img.b2bpic.net/free-photo/from-notebook-glasses-near-laptop_23-2147768820.jpg",
},
{
title: "Social Media Management",
description: "Build a strong online presence and foster community with tailored social media strategies and engaging campaigns.",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-hands-scanning-qr-code_23-2149357862.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<div id="portfolio" data-section="portfolio">
<SectionErrorBoundary name="portfolio">
<FeaturesImageBento
tag="Our Work"
title="Successful Campaigns, Tangible Results"
description="Explore a selection of our recent projects that delivered significant impact and measurable success for our diverse range of clients."
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/business-achievement-improvement-success-result_53876-123860.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/business-team-discussing-their-ideas-office-working-collaborate-together-analysis-chart_1421-632.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/male-graphic-designer-holding-spiral-notepad-with-text_1170-1098.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/laboratory-test-tube-with-coronavirus-vaccine_637285-4809.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/middle-aged-hispanic-business-man_23-2151020337.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-friends-reading-menu-restaurant_23-2150384822.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/3d-rendering-personal-care-products-fondant-pink_23-2151053850.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<div id="clients" data-section="clients">
<SectionErrorBoundary name="clients">
<SocialProofMarquee
tag="Our Clients"
title="Trusted by Industry Leaders"
description="We partner with ambitious brands across various sectors, helping them achieve their marketing objectives and grow their market share."
names={[
"GlobalCorp Solutions",
"Apex Innovations",
"Digital Dynamics",
"EcoVibe Brands",
"SynergyTech Group",
"Quantum Leap Ventures",
"FutureForward Co.",
]}
/>
</SectionErrorBoundary>
</div>
<div id="team" data-section="team">
<SectionErrorBoundary name="team">
<TeamOverlayCards
tag="Meet the Team"
title="Dedicated Experts Driving Your Success"
description="Our diverse team of marketing professionals brings a wealth of experience, creativity, and passion to every project, ensuring exceptional results."
members={[
{
name: "Alex Johnson",
role: "Marketing Director",
imageSrc: "http://img.b2bpic.net/free-photo/business-composition-with-modern-style_23-2147900149.jpg",
},
{
name: "Sarah Lee",
role: "Content Strategist",
imageSrc: "http://img.b2bpic.net/free-photo/pretty-young-woman-sitting-restaurant-looking-mobile-phone_23-2148101654.jpg",
},
{
name: "David Kim",
role: "SEO Specialist",
imageSrc: "http://img.b2bpic.net/free-photo/young-man-with-disabilities-invalid-disabled-paralized-handicapped-immobilized-looking-camera-upset-tired-sitting-wheelchair-business-office-room-working-financial-project-with-team_482257-28442.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialMarqueeCards
tag="Testimonials"
title="What Our Clients Say"
description="Don't just take our word for it. Hear directly from the businesses we've helped succeed and grow their brand."
testimonials={[
{
name: "Emily Watson",
role: "CEO, Tech Solutions",
quote: "Innovate Marketing completely transformed our online presence. Their strategic approach and execution led to a significant increase in lead generation and brand engagement. Highly recommend!",
imageSrc: "http://img.b2bpic.net/free-photo/successful-senior-businessman-standing-window_1262-3120.jpg",
},
{
name: "Mark Davis",
role: "Founder, Urban Bites",
quote: "Working with Innovate Marketing was a game-changer for our restaurant. Their creative campaigns and social media expertise brought in new customers and boosted our visibility immensely.",
imageSrc: "http://img.b2bpic.net/free-photo/middle-aged-hispanic-business-person_23-2151098593.jpg",
},
{
name: "Jessica Chen",
role: "Marketing Manager, HealthCo",
quote: "The team at Innovate Marketing is incredibly professional and results-driven. They understood our niche perfectly and delivered a campaign that exceeded all our expectations.",
imageSrc: "http://img.b2bpic.net/free-photo/young-beautiful-businesswoman-with-laptop-coffee-go-city-street_574295-836.jpg",
},
{
name: "Michael Brown",
role: "Owner, CraftWorks",
quote: "From website redesign to targeted ads, Innovate Marketing handled everything with precision. Our sales have never been better, thanks to their dedicated efforts.",
imageSrc: "http://img.b2bpic.net/free-photo/successful-businesswoman-smiling-looking-confident-happy-standing-suit-street-leans-her_1258-193996.jpg",
},
{
name: "Sophia Rodriguez",
role: "E-commerce Lead, StyleHub",
quote: "Innovate Marketing provided exceptional support for our e-commerce platform. Their data-driven insights and innovative strategies significantly improved our conversion rates.",
imageSrc: "http://img.b2bpic.net/free-photo/middle-age-woman-working-night-using-computer-laptop-doing-money-gesture-with-hands-asking-salary-payment-millionaire-business_839833-14045.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Ready to Grow?"
text="Let's build a powerful marketing strategy tailored to your unique business goals. Get in touch today and start your journey to success."
primaryButton={{
text: "Start a Project",
href: "mailto:contact@innovatemarketing.com",
}}
secondaryButton={{
text: "Call Us",
href: "tel:+1234567890",
}}
/>
</SectionErrorBoundary>
</div>
<HeroSection />
<AboutSection />
<ServicesSection />
<PortfolioSection />
<ClientsSection />
<TeamSection />
<TestimonialsSection />
<ContactSection />
</>
);
}

View File

@@ -0,0 +1,50 @@
// 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 AboutTestimonial from '@/components/sections/about/AboutTestimonial';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
import Tag from "@/components/ui/Tag";
import Button from "@/components/ui/Button";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-webild-section="about" className="py-24 bg-background">
<SectionErrorBoundary name="about">
<div className="container mx-auto px-4 sm:px-6 lg:px-8">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
<div>
<Tag text="About Us" className="mb-6" />
<h2 className="text-4xl font-bold tracking-tight text-foreground sm:text-5xl mb-6">
We are a team of passionate marketers.
</h2>
<p className="text-lg text-muted-foreground mb-8">
Our mission is to empower businesses with innovative marketing solutions that connect, engage, and convert. We believe in transparent partnerships and sustainable growth.
</p>
<div className="flex gap-4">
<Button text="Learn More" variant="primary" />
<Button text="Meet the Team" variant="secondary" />
</div>
</div>
<div className="relative h-[500px] rounded-2xl overflow-hidden">
<img
src="https://images.unsplash.com/photo-1522071820081-009f0129c71c?auto=format&fit=crop&q=80"
alt="Team working"
className="absolute inset-0 w-full h-full object-cover"
/>
</div>
</div>
</div>
<div className="hidden">
<AboutTestimonial
tag="About Us"
quote="Our mission is to empower businesses with innovative marketing solutions that connect, engage, and convert. We believe in transparent partnerships and sustainable growth."
author="Jane Doe"
role="Founder & CEO, Innovate Marketing"
imageSrc="http://img.b2bpic.net/free-photo/joyful-business-woman-with-coffee-cup_23-2148095746.jpg"
/>
</div>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,29 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "clients" section.
import React from 'react';
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ClientsSection(): React.JSX.Element {
return (
<div id="clients" data-section="clients">
<SectionErrorBoundary name="clients">
<SocialProofMarquee
tag="Our Clients"
title="Trusted by Industry Leaders"
description="We partner with ambitious brands across various sectors, helping them achieve their marketing objectives and grow their market share."
names={[
"GlobalCorp Solutions",
"Apex Innovations",
"Digital Dynamics",
"EcoVibe Brands",
"SynergyTech Group",
"Quantum Leap Ventures",
"FutureForward Co.",
]}
/>
</SectionErrorBoundary>
</div>
);
}

View 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="Ready to Grow?"
text="Let's build a powerful marketing strategy tailored to your unique business goals. Get in touch today and start your journey to success."
primaryButton={{
text: "Start a Project",
href: "mailto:contact@innovatemarketing.com",
}}
secondaryButton={{
text: "Call Us",
href: "tel:+1234567890",
}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,101 @@
"use client";
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "hero" section.
import React, { useState, useEffect } from 'react';
import HeroBillboardBrand from '@/components/sections/hero/HeroBillboardBrand';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
import Button from "@/components/ui/Button";
const IMAGES = [
"http://img.b2bpic.net/free-photo/group-friends-planning-trip-cafe_23-2148952344.jpg",
"https://images.unsplash.com/photo-1522071820075-bc879564763a?q=80&w=2070&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
"https://images.unsplash.com/photo-1552664730-d307ca8849d1?q=80&w=2070&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
"https://images.unsplash.com/photo-1517245381810-b23468734b09?q=80&w=2070&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
];
export default function HeroSection(): React.JSX.Element {
const [currentImageIndex, setCurrentImageIndex] = useState(0);
const [progress, setProgress] = useState(0);
useEffect(() => {
const duration = 5000; // 5 seconds per image
const interval = 50; // update progress every 50ms
const step = (interval / duration) * 100;
const timer = setInterval(() => {
setProgress((prev) => {
if (prev >= 100) {
setCurrentImageIndex((prevIndex) => (prevIndex + 1) % IMAGES.length);
return 0;
}
return prev + step;
});
}, interval);
return () => clearInterval(timer);
}, []);
return (
<div id="hero" data-webild-section="hero" className="relative w-full pt-24 pb-12 px-6">
<div className="max-w-6xl mx-auto mb-12">
<h1 className="text-6xl md:text-8xl font-bold tracking-tight mb-8 text-center">
Innovate Marketing
</h1>
<div className="flex flex-col md:flex-row justify-end items-end gap-6">
<div className="max-w-md text-right">
<p className="text-base md:text-lg text-muted-foreground mb-6">
Your Vision, Amplified. We craft data-driven strategies and compelling narratives to elevate your brand and drive measurable results. Let's grow together.
</p>
<div className="flex items-center justify-end gap-4">
<Button href="#services" text="Our Services" variant="primary" />
<Button href="#contact" text="Contact Us" variant="secondary" />
</div>
</div>
</div>
</div>
<div className="w-full max-w-6xl mx-auto relative rounded-3xl overflow-hidden aspect-[16/9] md:aspect-[21/9] shadow-2xl bg-muted">
{IMAGES.map((src, index) => (
<div
key={src}
className={`absolute inset-0 transition-opacity duration-1000 ease-in-out ${
index === currentImageIndex ? 'opacity-100 z-10' : 'opacity-0 z-0'
}`}
>
<img
src={src}
alt={`Slide ${index + 1}`}
className="w-full h-full object-cover"
/>
</div>
))}
{/* Progress Bars Overlay */}
<div className="absolute bottom-6 left-0 right-0 z-20 flex justify-center gap-3 px-6">
{IMAGES.map((_, index) => (
<div
key={index}
className="h-1.5 w-16 sm:w-24 bg-white/30 rounded-full overflow-hidden backdrop-blur-sm cursor-pointer"
onClick={() => {
setCurrentImageIndex(index);
setProgress(0);
}}
>
<div
className="h-full bg-white transition-all duration-75 ease-linear"
style={{
width: index === currentImageIndex
? `${progress}%`
: index < currentImageIndex ? '100%' : '0%'
}}
/>
</div>
))}
</div>
</div>
</div>
);
}

View File

@@ -0,0 +1,43 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "portfolio" section.
import React from 'react';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function PortfolioSection(): React.JSX.Element {
return (
<div id="portfolio" data-section="portfolio">
<SectionErrorBoundary name="portfolio">
<FeaturesImageBento
tag="Our Work"
title="Successful Campaigns, Tangible Results"
description="Explore a selection of our recent projects that delivered significant impact and measurable success for our diverse range of clients."
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/business-achievement-improvement-success-result_53876-123860.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/business-team-discussing-their-ideas-office-working-collaborate-together-analysis-chart_1421-632.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/male-graphic-designer-holding-spiral-notepad-with-text_1170-1098.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/laboratory-test-tube-with-coronavirus-vaccine_637285-4809.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/middle-aged-hispanic-business-man_23-2151020337.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-friends-reading-menu-restaurant_23-2150384822.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/3d-rendering-personal-care-products-fondant-pink_23-2151053850.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,37 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "services" section.
import React from 'react';
import FeaturesMediaGrid from '@/components/sections/features/FeaturesMediaGrid';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ServicesSection(): React.JSX.Element {
return (
<div id="services" data-section="services">
<SectionErrorBoundary name="services">
<FeaturesMediaGrid
tag="Our Services"
title="Comprehensive Digital Marketing Solutions"
description="From strategy to execution, we cover all aspects of digital marketing to ensure your brand stands out and achieves its goals."
items={[
{
title: "SEO & SEM",
description: "Boost your visibility and drive organic traffic with our expert search engine optimization and marketing strategies.",
imageSrc: "http://img.b2bpic.net/free-photo/business-chart-visual-graphics-report-concept_53876-125580.jpg",
},
{
title: "Content Marketing",
description: "Engage your audience with compelling stories and valuable content that converts leads into loyal customers.",
imageSrc: "http://img.b2bpic.net/free-photo/from-notebook-glasses-near-laptop_23-2147768820.jpg",
},
{
title: "Social Media Management",
description: "Build a strong online presence and foster community with tailored social media strategies and engaging campaigns.",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-hands-scanning-qr-code_23-2149357862.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,37 @@
// 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="Meet the Team"
title="Dedicated Experts Driving Your Success"
description="Our diverse team of marketing professionals brings a wealth of experience, creativity, and passion to every project, ensuring exceptional results."
members={[
{
name: "Alex Johnson",
role: "Marketing Director",
imageSrc: "http://img.b2bpic.net/free-photo/business-composition-with-modern-style_23-2147900149.jpg",
},
{
name: "Sarah Lee",
role: "Content Strategist",
imageSrc: "http://img.b2bpic.net/free-photo/pretty-young-woman-sitting-restaurant-looking-mobile-phone_23-2148101654.jpg",
},
{
name: "David Kim",
role: "SEO Specialist",
imageSrc: "http://img.b2bpic.net/free-photo/young-man-with-disabilities-invalid-disabled-paralized-handicapped-immobilized-looking-camera-upset-tired-sitting-wheelchair-business-office-room-working-financial-project-with-team_482257-28442.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View 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="Testimonials"
title="What Our Clients Say"
description="Don't just take our word for it. Hear directly from the businesses we've helped succeed and grow their brand."
testimonials={[
{
name: "Emily Watson",
role: "CEO, Tech Solutions",
quote: "Innovate Marketing completely transformed our online presence. Their strategic approach and execution led to a significant increase in lead generation and brand engagement. Highly recommend!",
imageSrc: "http://img.b2bpic.net/free-photo/successful-senior-businessman-standing-window_1262-3120.jpg",
},
{
name: "Mark Davis",
role: "Founder, Urban Bites",
quote: "Working with Innovate Marketing was a game-changer for our restaurant. Their creative campaigns and social media expertise brought in new customers and boosted our visibility immensely.",
imageSrc: "http://img.b2bpic.net/free-photo/middle-aged-hispanic-business-person_23-2151098593.jpg",
},
{
name: "Jessica Chen",
role: "Marketing Manager, HealthCo",
quote: "The team at Innovate Marketing is incredibly professional and results-driven. They understood our niche perfectly and delivered a campaign that exceeded all our expectations.",
imageSrc: "http://img.b2bpic.net/free-photo/young-beautiful-businesswoman-with-laptop-coffee-go-city-street_574295-836.jpg",
},
{
name: "Michael Brown",
role: "Owner, CraftWorks",
quote: "From website redesign to targeted ads, Innovate Marketing handled everything with precision. Our sales have never been better, thanks to their dedicated efforts.",
imageSrc: "http://img.b2bpic.net/free-photo/successful-businesswoman-smiling-looking-confident-happy-standing-suit-street-leans-her_1258-193996.jpg",
},
{
name: "Sophia Rodriguez",
role: "E-commerce Lead, StyleHub",
quote: "Innovate Marketing provided exceptional support for our e-commerce platform. Their data-driven insights and innovative strategies significantly improved our conversion rates.",
imageSrc: "http://img.b2bpic.net/free-photo/middle-age-woman-working-night-using-computer-laptop-doing-money-gesture-with-hands-asking-salary-payment-millionaire-business_839833-14045.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}