Compare commits
7 Commits
version_2_
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| bdc92eb660 | |||
|
|
ccfd815a87 | ||
| 18e9318687 | |||
| 7fd6d46002 | |||
| 62868a31cf | |||
| 87fe77d5b1 | |||
| dcb9c4beb6 |
@@ -1,160 +1,33 @@
|
||||
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqSimple from '@/components/sections/faq/FaqSimple';
|
||||
import FeaturesBento from '@/components/sections/features/FeaturesBento';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import HeroOverlay from '@/components/sections/hero/HeroOverlay';
|
||||
import TestimonialMarqueeOverlayCards from '@/components/sections/testimonial/TestimonialMarqueeOverlayCards';
|
||||
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 ProductsSection from './HomePage/sections/Products';
|
||||
import FeaturesSection from './HomePage/sections/Features';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
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">
|
||||
<HeroOverlay
|
||||
tag="Cashmere's Favorite Stop"
|
||||
title="Great Coffee. Friendly Service. Worth Pulling Over For."
|
||||
description="Whether you're heading to work, starting a road trip, or just need a quick pick-me-up, we're here with handcrafted coffee, delicious breakfast options, and the warmest service in Cashmere."
|
||||
primaryButton={{
|
||||
text: "Order Ahead", href: "#contact"}}
|
||||
secondaryButton={{
|
||||
text: "Call Now", href: "tel:5098880223"}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/coffee-business-concept-handsome-bearded-man-apron-making-coffee-while-standing-cafe_1258-103897.jpg?_wi=1"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutMediaOverlay
|
||||
tag="About Us"
|
||||
title="A Community Coffee Experience"
|
||||
description="At Pull Over Here Espresso, we believe great coffee should come with great service. We're a locally loved drive-thru coffee stand serving handcrafted espresso drinks, breakfast favorites, and friendly service every day. From morning commuters to travelers, we're here to make your day a little better."
|
||||
imageSrc="http://img.b2bpic.net/free-photo/full-shot-woman-wearing-total-denim-outfit_23-2150105179.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Our Favorites"
|
||||
title="Crafted with Care"
|
||||
description="Delicious coffee and breakfast items prepared fresh daily."
|
||||
items={[
|
||||
{
|
||||
title: "Classic Espresso", description: "Rich, bold, and expertly extracted.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/cafe-smooth-shot-nice-drink_1172-478.jpg"},
|
||||
{
|
||||
title: "Signature Lattes", description: "Creamy, smooth, and perfectly balanced.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/latte-coffee-art-table_1232-2739.jpg"},
|
||||
{
|
||||
title: "Breakfast Burritos", description: "The perfect handheld morning meal.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-mexican-food-ready-be-served_23-2148614485.jpg"},
|
||||
{
|
||||
title: "Bagel Sandwiches", description: "Fresh bagels with savory fillings.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/closeup-croissant-with-greens-ham-vegetables-pub_7502-9265.jpg"},
|
||||
{
|
||||
title: "Iced Frappes", description: "Cool, sweet, and refreshing treats.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/frappe-drink-with-caramel-nuts-isolated-white-background-ai-generative_123827-24940.jpg"},
|
||||
{
|
||||
title: "Cold Brew", description: "Slow-steeped for ultimate smoothness.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/still-life-with-iced-coffee-beverage_23-2149648698.jpg"},
|
||||
{
|
||||
title: "Seasonal Specials", description: "Unique flavors for every season.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/towel-spoon-near-drink-spice_23-2147943843.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ProductsSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesBento
|
||||
tag="Why Choose Us"
|
||||
title="Coffee Worth Stopping For"
|
||||
description="What keeps our community coming back every day."
|
||||
features={[
|
||||
{
|
||||
title: "Fast Drive-Thru", description: "Get your favorite drink without leaving the car.", bentoComponent: "info-card-marquee", infoCards: [
|
||||
{
|
||||
icon: "Timer", label: "Speed", value: "Fast"},
|
||||
{
|
||||
icon: "Car", label: "Convenience", value: "Drive-Thru"},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Locally Owned", description: "Proudly serving the Cashmere community.", bentoComponent: "media-stack", mediaItems: [
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/coffee-business-concept-handsome-bearded-man-apron-making-coffee-while-standing-cafe_1258-103897.jpg?_wi=2"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/roasted-coffee-beans-table-closeup_250435-1137.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cocktail-wooden-table-restaurant_23-2147936121.jpg"},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Friendly Service", description: "Always served with a smile.", bentoComponent: "chat-marquee", aiIcon: "Smile", userIcon: "User", exchanges: [
|
||||
{
|
||||
userMessage: "Good morning!", aiResponse: "Welcome to Pull Over Here!"},
|
||||
],
|
||||
placeholder: "Greeting"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialMarqueeOverlayCards
|
||||
tag="What People Say"
|
||||
title="Loved by the Community"
|
||||
description="Don't just take our word for it."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah J.", role: "Local Resident", company: "Cashmere", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vertical-shot-friendly-barista-girl-smiling-you-while-preparing-coffee-pouring-milk-making_1258-203425.jpg"},
|
||||
{
|
||||
name: "Mike D.", role: "Commuter", company: "Cashmere", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-with-afro-hair-smile-broadly-dressed-beige-coat-strolls-city-sunny-autumn-day-uses-smartphone-with-delight-has-fun-texting-cellular-browses-web-pages_273609-55300.jpg"},
|
||||
{
|
||||
name: "Emily R.", role: "Traveler", company: "Visitor", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-overemotive-woman-yellow-anorak-headband-stretches-hands-with-unrecognizable-device_273609-25902.jpg"},
|
||||
{
|
||||
name: "David K.", role: "Local", company: "Cashmere", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-woman-taking-mask-off-outdoors_23-2149403784.jpg"},
|
||||
{
|
||||
name: "Anna P.", role: "Customer", company: "Commuter", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-woman-dressed-white-pajamas_158538-18366.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSimple
|
||||
tag="FAQ"
|
||||
title="Questions?"
|
||||
description="Here is what you need to know."
|
||||
items={[
|
||||
{
|
||||
question: "Where are you located?", answer: "407 Aplets Way, Cashmere, WA 98815."},
|
||||
{
|
||||
question: "What are your hours?", answer: "Mon-Fri: 6am-4pm, Sat-Sun: 8am-2pm."},
|
||||
{
|
||||
question: "Do you offer food?", answer: "Yes, breakfast burritos and bagel sandwiches."},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Contact Us"
|
||||
text="Ready for your next coffee? Give us a call or visit today."
|
||||
primaryButton={{
|
||||
text: "Call Now", href: "tel:5098880223"}}
|
||||
secondaryButton={{
|
||||
text: "Get Directions", href: "https://maps.google.com"}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
21
src/pages/HomePage/sections/About.tsx
Normal file
21
src/pages/HomePage/sections/About.tsx
Normal file
@@ -0,0 +1,21 @@
|
||||
// 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="About Us"
|
||||
title="A Community Coffee Experience"
|
||||
description="At Pull Over Here Espresso, we believe great coffee should come with great service. We're a locally loved drive-thru coffee stand serving handcrafted espresso drinks, breakfast favorites, and friendly service every day. From morning commuters to travelers, we're here to make your day a little better."
|
||||
imageSrc="http://img.b2bpic.net/free-photo/full-shot-woman-wearing-total-denim-outfit_23-2150105179.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
65
src/pages/HomePage/sections/Contact.tsx
Normal file
65
src/pages/HomePage/sections/Contact.tsx
Normal file
@@ -0,0 +1,65 @@
|
||||
/* 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: "Call Now",
|
||||
href: "tel:5098880223"
|
||||
};
|
||||
const secondaryButton = {
|
||||
text: "Get Directions",
|
||||
href: "https://maps.google.com"
|
||||
};
|
||||
|
||||
const ContactInline = () => {
|
||||
return (
|
||||
<section aria-label="Contact section" className="py-20">
|
||||
<div className="w-content-width mx-auto">
|
||||
<ScrollReveal variant="slide-up">
|
||||
<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>{"Contact Us"}</p>
|
||||
</div>
|
||||
|
||||
<TextAnimation
|
||||
text={"Ready for your next coffee? Give us a call or visit today."}
|
||||
variant="fade"
|
||||
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 className="w-full max-w-4xl mt-10 rounded-lg overflow-hidden shadow-sm">
|
||||
<iframe
|
||||
title="Google Maps Location"
|
||||
width="100%"
|
||||
height="400"
|
||||
style={{ border: 0 }}
|
||||
loading="lazy"
|
||||
allowFullScreen
|
||||
src="https://maps.google.com/maps?q=407%20Aplets%20Way,%20Cashmere,%20WA%2098815&t=&z=15&ie=UTF8&iwloc=&output=embed"
|
||||
></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ScrollReveal>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default function ContactSection() {
|
||||
return (
|
||||
<div data-webild-section="contact" id="contact">
|
||||
<ContactInline />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
28
src/pages/HomePage/sections/Faq.tsx
Normal file
28
src/pages/HomePage/sections/Faq.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 "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="FAQ"
|
||||
title="Questions?"
|
||||
description="Here is what you need to know."
|
||||
items={[
|
||||
{
|
||||
question: "Where are you located?", answer: "407 Aplets Way, Cashmere, WA 98815."},
|
||||
{
|
||||
question: "What are your hours?", answer: "Mon-Fri: 6am-4pm, Sat-Sun: 8am-2pm."},
|
||||
{
|
||||
question: "Do you offer food?", answer: "Yes, breakfast burritos and bagel sandwiches."},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
46
src/pages/HomePage/sections/Features.tsx
Normal file
46
src/pages/HomePage/sections/Features.tsx
Normal file
@@ -0,0 +1,46 @@
|
||||
// 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 FeaturesBento from '@/components/sections/features/FeaturesBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FeaturesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesBento
|
||||
tag="Why Choose Us"
|
||||
title="Coffee Worth Stopping For"
|
||||
description="What keeps our community coming back every day."
|
||||
features={[
|
||||
{
|
||||
title: "Fast Drive-Thru", description: "Get your favorite drink without leaving the car.", bentoComponent: "info-card-marquee", infoCards: [
|
||||
{
|
||||
icon: "Timer", label: "Speed", value: "Fast"},
|
||||
{
|
||||
icon: "Car", label: "Convenience", value: "Drive-Thru"},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Locally Owned", description: "Proudly serving the Cashmere community.", bentoComponent: "media-stack", mediaItems: [
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/coffee-business-concept-handsome-bearded-man-apron-making-coffee-while-standing-cafe_1258-103897.jpg?_wi=2"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/roasted-coffee-beans-table-closeup_250435-1137.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cocktail-wooden-table-restaurant_23-2147936121.jpg"},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Friendly Service", description: "Always served with a smile.", bentoComponent: "chat-marquee", aiIcon: "Smile", userIcon: "User", exchanges: [
|
||||
{
|
||||
userMessage: "Good morning!", aiResponse: "Welcome to Pull Over Here!"},
|
||||
],
|
||||
placeholder: "Greeting"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
25
src/pages/HomePage/sections/Hero.tsx
Normal file
25
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,25 @@
|
||||
// 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 HeroOverlay from '@/components/sections/hero/HeroOverlay';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroOverlay
|
||||
tag="Cashmere's Favorite Stop"
|
||||
title="Great Coffee. Friendly Service. Worth Pulling Over For."
|
||||
description="Whether you're heading to work, starting a road trip, or just need a quick pick-me-up, we're here with handcrafted coffee, delicious breakfast options, and the warmest service in Cashmere."
|
||||
primaryButton={{
|
||||
text: "Order Ahead", href: "#contact"}}
|
||||
secondaryButton={{
|
||||
text: "Call Now", href: "tel:5098880223"}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/coffee-business-concept-handsome-bearded-man-apron-making-coffee-while-standing-cafe_1258-103897.jpg?_wi=1"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
36
src/pages/HomePage/sections/Products.tsx
Normal file
36
src/pages/HomePage/sections/Products.tsx
Normal file
@@ -0,0 +1,36 @@
|
||||
// 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 FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ProductsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Our Favorites"
|
||||
title="Crafted with Care"
|
||||
description="Delicious coffee and breakfast items prepared fresh daily."
|
||||
items={[
|
||||
{
|
||||
title: "Classic Espresso", description: "Rich, bold, and expertly extracted.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/cafe-smooth-shot-nice-drink_1172-478.jpg"},
|
||||
{
|
||||
title: "Signature Lattes", description: "Creamy, smooth, and perfectly balanced.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/latte-coffee-art-table_1232-2739.jpg"},
|
||||
{
|
||||
title: "Breakfast Burritos", description: "The perfect handheld morning meal.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-mexican-food-ready-be-served_23-2148614485.jpg"},
|
||||
{
|
||||
title: "Bagel Sandwiches", description: "Fresh bagels with savory fillings.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/closeup-croissant-with-greens-ham-vegetables-pub_7502-9265.jpg"},
|
||||
{
|
||||
title: "Iced Frappes", description: "Cool, sweet, and refreshing treats.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/frappe-drink-with-caramel-nuts-isolated-white-background-ai-generative_123827-24940.jpg"},
|
||||
{
|
||||
title: "Cold Brew", description: "Slow-steeped for ultimate smoothness.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/still-life-with-iced-coffee-beverage_23-2149648698.jpg"},
|
||||
{
|
||||
title: "Seasonal Specials", description: "Unique flavors for every season.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/towel-spoon-near-drink-spice_23-2147943843.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
37
src/pages/HomePage/sections/Testimonials.tsx
Normal file
37
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,37 @@
|
||||
// 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 TestimonialMarqueeOverlayCards from '@/components/sections/testimonial/TestimonialMarqueeOverlayCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialMarqueeOverlayCards
|
||||
tag="What People Say"
|
||||
title="Loved by the Community"
|
||||
description="Don't just take our word for it."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah J.", role: "Local Resident", company: "Cashmere", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vertical-shot-friendly-barista-girl-smiling-you-while-preparing-coffee-pouring-milk-making_1258-203425.jpg"},
|
||||
{
|
||||
name: "Mike D.", role: "Commuter", company: "Cashmere", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-with-afro-hair-smile-broadly-dressed-beige-coat-strolls-city-sunny-autumn-day-uses-smartphone-with-delight-has-fun-texting-cellular-browses-web-pages_273609-55300.jpg"},
|
||||
{
|
||||
name: "Emily R.", role: "Traveler", company: "Visitor", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-overemotive-woman-yellow-anorak-headband-stretches-hands-with-unrecognizable-device_273609-25902.jpg"},
|
||||
{
|
||||
name: "David K.", role: "Local", company: "Cashmere", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-woman-taking-mask-off-outdoors_23-2149403784.jpg"},
|
||||
{
|
||||
name: "Anna P.", role: "Customer", company: "Commuter", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-woman-dressed-white-pajamas_158538-18366.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user