Merge version_2_1781571812988 into main #1
@@ -7,7 +7,7 @@
|
||||
/* @colorThemes/lightTheme/grayNavyBlue */
|
||||
--background: #0a0a0a;
|
||||
--card: #1a1a1a;
|
||||
--foreground: #ffffffe6;
|
||||
--foreground: #ffffff;
|
||||
--primary-cta: #e6e6e6;
|
||||
--primary-cta-text: #0a0a0a;
|
||||
--secondary-cta: #1a1a1a;
|
||||
|
||||
@@ -1,252 +1,36 @@
|
||||
import AboutTextSplit from '@/components/sections/about/AboutTextSplit';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import HeroBillboardBrand from '@/components/sections/hero/HeroBillboardBrand';
|
||||
import MetricsSimpleCards from '@/components/sections/metrics/MetricsSimpleCards';
|
||||
import PricingSimpleCards from '@/components/sections/pricing/PricingSimpleCards';
|
||||
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 ServicesSection from './HomePage/sections/Services';
|
||||
import StatsSection from './HomePage/sections/Stats';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import PricingSection from './HomePage/sections/Pricing';
|
||||
import FaqSection from './HomePage/sections/Faq';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboardBrand
|
||||
brand="Cornerstone Digital"
|
||||
description="We architect premium digital experiences that scale. Professional websites for businesses ready to dominate their market."
|
||||
primaryButton={{
|
||||
text: "Get Your Proposal",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Our Work",
|
||||
href: "#services",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/elevated-view-diary-digital-tablet-pen-keyboard-coffee-cup-desk_23-2148061557.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTextSplit
|
||||
title="Building Digital Foundations"
|
||||
descriptions={[
|
||||
"Cornerstone Digital was founded on a simple premise: businesses deserve better digital craftsmanship. We don't just build sites; we build high-performing digital assets that act as the cornerstone of your brand.",
|
||||
"Our team combines cutting-edge engineering with refined aesthetic sensibility to create experiences that are both beautiful and technically superior.",
|
||||
"We treat your business goals as our own, ensuring every line of code, every pixel, and every interaction is strategically placed to convert visitors into loyal clients.",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesImageBento
|
||||
tag="Our Expertise"
|
||||
title="Digital Solutions for Growth"
|
||||
description="Comprehensive web solutions tailored for business success."
|
||||
items={[
|
||||
{
|
||||
title: "Corporate Websites",
|
||||
description: "High-conversion landing pages and corporate sites.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/devices-water-cooler-empty-office_482257-119279.jpg",
|
||||
},
|
||||
{
|
||||
title: "Responsive Design",
|
||||
description: "Mobile-first experiences that look stunning everywhere.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/homepage-seen-computer-screen_23-2149416724.jpg",
|
||||
},
|
||||
{
|
||||
title: "Web Architecture",
|
||||
description: "Robust structures that support massive growth.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/female-manager-engaged-budget-analysis-strategy-development_482257-116629.jpg",
|
||||
},
|
||||
{
|
||||
title: "E-Commerce",
|
||||
description: "Secure, fast retail platforms.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/mobile-shopping-experience_23-2151952959.jpg",
|
||||
},
|
||||
{
|
||||
title: "Enterprise Portals",
|
||||
description: "Secure portals for internal and client workflows.",
|
||||
imageSrc: "http://img.b2bpic.net/free-vector/hand-drawn-illustrated-business-landing-page-template_52683-66655.jpg",
|
||||
},
|
||||
{
|
||||
title: "Portfolio Sites",
|
||||
description: "Stunning visuals for agencies and brands.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/stationery-concept_23-2147800646.jpg",
|
||||
},
|
||||
{
|
||||
title: "Software Branding",
|
||||
description: "Complete digital brand identity sets.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/prism-dispersing-colorful-lights_23-2148599245.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ServicesSection />
|
||||
|
||||
<div id="stats" data-section="stats">
|
||||
<SectionErrorBoundary name="stats">
|
||||
<MetricsSimpleCards
|
||||
tag="By The Numbers"
|
||||
title="Proven Results"
|
||||
description="We measure success through tangible growth metrics."
|
||||
metrics={[
|
||||
{
|
||||
value: "150+",
|
||||
description: "Successful Launches",
|
||||
},
|
||||
{
|
||||
value: "95%",
|
||||
description: "Client Retention",
|
||||
},
|
||||
{
|
||||
value: "24h",
|
||||
description: "Support Response Time",
|
||||
},
|
||||
{
|
||||
value: "5x",
|
||||
description: "Average Traffic Boost",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<StatsSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialMarqueeCards
|
||||
tag="Social Proof"
|
||||
title="What Clients Say"
|
||||
description="Partnering with us has redefined what our clients expect from digital agencies."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Alex Rivet",
|
||||
role: "CEO",
|
||||
quote: "Cornerstone Digital completely transformed our online presence in weeks.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-businessman-with-folded-arms-looking-camera_23-2147955314.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah Chen",
|
||||
role: "Founder",
|
||||
quote: "The most professional dev team we've ever worked with. Truly exceptional.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-modern-businesswoman-standing_23-2148204476.jpg",
|
||||
},
|
||||
{
|
||||
name: "Marcus Thorne",
|
||||
role: "Director",
|
||||
quote: "Their attention to detail and technical skill are unmatched.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-business-woman-office-by-window_1303-21128.jpg",
|
||||
},
|
||||
{
|
||||
name: "Elena Voss",
|
||||
role: "VP",
|
||||
quote: "Our conversion rates skyrocketed after the launch. Simply brilliant.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/ends-palm-leaf_23-2147931750.jpg",
|
||||
},
|
||||
{
|
||||
name: "Julian King",
|
||||
role: "CMO",
|
||||
quote: "We finally have a website that matches the quality of our product.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-employee-happy-be-back-work_23-2148727616.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="pricing" data-section="pricing">
|
||||
<SectionErrorBoundary name="pricing">
|
||||
<PricingSimpleCards
|
||||
tag="Our Packages"
|
||||
title="Transparent Pricing"
|
||||
description="Simple packages to help your business get online quickly."
|
||||
plans={[
|
||||
{
|
||||
tag: "Essentials",
|
||||
price: "$2,999",
|
||||
description: "Perfect for small businesses.",
|
||||
features: [
|
||||
"Custom Design",
|
||||
"Mobile Optimization",
|
||||
"3-Month Support",
|
||||
],
|
||||
},
|
||||
{
|
||||
tag: "Growth",
|
||||
price: "$5,999",
|
||||
description: "Ideal for scaling brands.",
|
||||
features: [
|
||||
"Everything in Essentials",
|
||||
"SEO Setup",
|
||||
"Blog Integration",
|
||||
"6-Month Support",
|
||||
],
|
||||
},
|
||||
{
|
||||
tag: "Enterprise",
|
||||
price: "Custom",
|
||||
description: "For high-performance platforms.",
|
||||
features: [
|
||||
"Full Custom Build",
|
||||
"API Integrations",
|
||||
"Advanced Security",
|
||||
"Dedicated Support",
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<PricingSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTwoColumn
|
||||
tag="Knowledge Base"
|
||||
title="Common Questions"
|
||||
description="Everything you need to know about partnering with us."
|
||||
items={[
|
||||
{
|
||||
question: "How long does a build take?",
|
||||
answer: "Standard projects typically take 4-8 weeks from kick-off to launch.",
|
||||
},
|
||||
{
|
||||
question: "Do you offer maintenance?",
|
||||
answer: "Yes, we offer ongoing maintenance and support packages to ensure your site stays current.",
|
||||
},
|
||||
{
|
||||
question: "Can you migrate my current site?",
|
||||
answer: "Absolutely. We specialize in seamless migrations to modern platforms.",
|
||||
},
|
||||
{
|
||||
question: "Is hosting included?",
|
||||
answer: "We recommend top-tier hosting providers but do not provide hosting directly.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Start Here"
|
||||
text="Ready to build your digital cornerstone?"
|
||||
primaryButton={{
|
||||
text: "Contact Us Now",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Schedule a Call",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
23
src/pages/HomePage/sections/About.tsx
Normal file
23
src/pages/HomePage/sections/About.tsx
Normal file
@@ -0,0 +1,23 @@
|
||||
// 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="Building Digital Foundations"
|
||||
descriptions={[
|
||||
"Cornerstone Digital was founded on a simple premise: businesses deserve better digital craftsmanship. We don't just build sites; we build high-performing digital assets that act as the cornerstone of your brand.",
|
||||
"Our team combines cutting-edge engineering with refined aesthetic sensibility to create experiences that are both beautiful and technically superior.",
|
||||
"We treat your business goals as our own, ensuring every line of code, every pixel, and every interaction is strategically placed to convert visitors into loyal clients.",
|
||||
]}
|
||||
/>
|
||||
</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="Start Here"
|
||||
text="Ready to build your digital cornerstone?"
|
||||
primaryButton={{
|
||||
text: "Contact Us Now",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Schedule a Call",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
38
src/pages/HomePage/sections/Faq.tsx
Normal file
38
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -0,0 +1,38 @@
|
||||
// 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 FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FaqSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTwoColumn
|
||||
tag="Knowledge Base"
|
||||
title="Common Questions"
|
||||
description="Everything you need to know about partnering with us."
|
||||
items={[
|
||||
{
|
||||
question: "How long does a build take?",
|
||||
answer: "Standard projects typically take 4-8 weeks from kick-off to launch.",
|
||||
},
|
||||
{
|
||||
question: "Do you offer maintenance?",
|
||||
answer: "Yes, we offer ongoing maintenance and support packages to ensure your site stays current.",
|
||||
},
|
||||
{
|
||||
question: "Can you migrate my current site?",
|
||||
answer: "Absolutely. We specialize in seamless migrations to modern platforms.",
|
||||
},
|
||||
{
|
||||
question: "Is hosting included?",
|
||||
answer: "We recommend top-tier hosting providers but do not provide hosting directly.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
28
src/pages/HomePage/sections/Hero.tsx
Normal file
28
src/pages/HomePage/sections/Hero.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 "hero" section.
|
||||
|
||||
import React from 'react';
|
||||
import HeroBillboardBrand from '@/components/sections/hero/HeroBillboardBrand';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboardBrand
|
||||
brand="Cornerstone Digital"
|
||||
description="We architect premium digital experiences that scale. Professional websites for businesses ready to dominate their market."
|
||||
primaryButton={{
|
||||
text: "Get Your Proposal",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Our Work",
|
||||
href: "#services",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/elevated-view-diary-digital-tablet-pen-keyboard-coffee-cup-desk_23-2148061557.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
54
src/pages/HomePage/sections/Pricing.tsx
Normal file
54
src/pages/HomePage/sections/Pricing.tsx
Normal file
@@ -0,0 +1,54 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "pricing" section.
|
||||
|
||||
import React from 'react';
|
||||
import PricingSimpleCards from '@/components/sections/pricing/PricingSimpleCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function PricingSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="pricing" data-section="pricing">
|
||||
<SectionErrorBoundary name="pricing">
|
||||
<PricingSimpleCards
|
||||
tag="Our Packages"
|
||||
title="Transparent Pricing"
|
||||
description="Simple packages to help your business get online quickly."
|
||||
plans={[
|
||||
{
|
||||
tag: "Essentials",
|
||||
price: "$2,999",
|
||||
description: "Perfect for small businesses.",
|
||||
features: [
|
||||
"Custom Design",
|
||||
"Mobile Optimization",
|
||||
"3-Month Support",
|
||||
],
|
||||
},
|
||||
{
|
||||
tag: "Growth",
|
||||
price: "$5,999",
|
||||
description: "Ideal for scaling brands.",
|
||||
features: [
|
||||
"Everything in Essentials",
|
||||
"SEO Setup",
|
||||
"Blog Integration",
|
||||
"6-Month Support",
|
||||
],
|
||||
},
|
||||
{
|
||||
tag: "Enterprise",
|
||||
price: "Custom",
|
||||
description: "For high-performance platforms.",
|
||||
features: [
|
||||
"Full Custom Build",
|
||||
"API Integrations",
|
||||
"Advanced Security",
|
||||
"Dedicated Support",
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Services.tsx
Normal file
57
src/pages/HomePage/sections/Services.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 "services" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ServicesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesImageBento
|
||||
tag="Our Expertise"
|
||||
title="Digital Solutions for Growth"
|
||||
description="Comprehensive web solutions tailored for business success."
|
||||
items={[
|
||||
{
|
||||
title: "Corporate Websites",
|
||||
description: "High-conversion landing pages and corporate sites.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/devices-water-cooler-empty-office_482257-119279.jpg",
|
||||
},
|
||||
{
|
||||
title: "Responsive Design",
|
||||
description: "Mobile-first experiences that look stunning everywhere.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/homepage-seen-computer-screen_23-2149416724.jpg",
|
||||
},
|
||||
{
|
||||
title: "Web Architecture",
|
||||
description: "Robust structures that support massive growth.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/female-manager-engaged-budget-analysis-strategy-development_482257-116629.jpg",
|
||||
},
|
||||
{
|
||||
title: "E-Commerce",
|
||||
description: "Secure, fast retail platforms.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/mobile-shopping-experience_23-2151952959.jpg",
|
||||
},
|
||||
{
|
||||
title: "Enterprise Portals",
|
||||
description: "Secure portals for internal and client workflows.",
|
||||
imageSrc: "http://img.b2bpic.net/free-vector/hand-drawn-illustrated-business-landing-page-template_52683-66655.jpg",
|
||||
},
|
||||
{
|
||||
title: "Portfolio Sites",
|
||||
description: "Stunning visuals for agencies and brands.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/stationery-concept_23-2147800646.jpg",
|
||||
},
|
||||
{
|
||||
title: "Software Branding",
|
||||
description: "Complete digital brand identity sets.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/prism-dispersing-colorful-lights_23-2148599245.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
38
src/pages/HomePage/sections/Stats.tsx
Normal file
38
src/pages/HomePage/sections/Stats.tsx
Normal file
@@ -0,0 +1,38 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "stats" section.
|
||||
|
||||
import React from 'react';
|
||||
import MetricsSimpleCards from '@/components/sections/metrics/MetricsSimpleCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function StatsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="stats" data-section="stats">
|
||||
<SectionErrorBoundary name="stats">
|
||||
<MetricsSimpleCards
|
||||
tag="By The Numbers"
|
||||
title="Proven Results"
|
||||
description="We measure success through tangible growth metrics."
|
||||
metrics={[
|
||||
{
|
||||
value: "150+",
|
||||
description: "Successful Launches",
|
||||
},
|
||||
{
|
||||
value: "95%",
|
||||
description: "Client Retention",
|
||||
},
|
||||
{
|
||||
value: "24h",
|
||||
description: "Support Response Time",
|
||||
},
|
||||
{
|
||||
value: "5x",
|
||||
description: "Average Traffic Boost",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</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="Social Proof"
|
||||
title="What Clients Say"
|
||||
description="Partnering with us has redefined what our clients expect from digital agencies."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Alex Rivet",
|
||||
role: "CEO",
|
||||
quote: "Cornerstone Digital completely transformed our online presence in weeks.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-businessman-with-folded-arms-looking-camera_23-2147955314.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah Chen",
|
||||
role: "Founder",
|
||||
quote: "The most professional dev team we've ever worked with. Truly exceptional.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-modern-businesswoman-standing_23-2148204476.jpg",
|
||||
},
|
||||
{
|
||||
name: "Marcus Thorne",
|
||||
role: "Director",
|
||||
quote: "Their attention to detail and technical skill are unmatched.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-business-woman-office-by-window_1303-21128.jpg",
|
||||
},
|
||||
{
|
||||
name: "Elena Voss",
|
||||
role: "VP",
|
||||
quote: "Our conversion rates skyrocketed after the launch. Simply brilliant.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/ends-palm-leaf_23-2147931750.jpg",
|
||||
},
|
||||
{
|
||||
name: "Julian King",
|
||||
role: "CMO",
|
||||
quote: "We finally have a website that matches the quality of our product.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-employee-happy-be-back-work_23-2148727616.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user