Merge version_2_1782369314842 into main #3
@@ -1,179 +1,36 @@
|
||||
import AboutText from '@/components/sections/about/AboutText';
|
||||
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 HeroCenteredLogos from '@/components/sections/hero/HeroCenteredLogos';
|
||||
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
|
||||
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 StorySection from './HomePage/sections/Story';
|
||||
import MenuSection from './HomePage/sections/Menu';
|
||||
import GallerySection from './HomePage/sections/Gallery';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
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">
|
||||
<HeroCenteredLogos
|
||||
avatarsSrc={[
|
||||
"http://img.b2bpic.net/free-photo/happy-portrait-girl-holding-takeaway-coffee-cup_23-2147906477.jpg", "http://img.b2bpic.net/free-photo/high-angle-man-restaurant_23-2148395381.jpg", "http://img.b2bpic.net/free-photo/dreamy-beautiful-woman-student-sitting-cafe-with-books-magazines-smiling-holding-phone-thinking_176420-12422.jpg", "http://img.b2bpic.net/free-photo/medium-shot-smiley-woman-with-coffee-cup_23-2149412558.jpg", "http://img.b2bpic.net/free-photo/pretty-young-woman-enjoying-coffee-cup_23-2148756344.jpg"]}
|
||||
avatarText="Loved by 10,000+ coffee enthusiasts"
|
||||
title="The Art of Lithos Coffee"
|
||||
description="Experience the pinnacle of specialty coffee, where every drop tells a story of origin, passion, and meticulous craft."
|
||||
primaryButton={{
|
||||
text: "Discover Menu", href: "#menu"}}
|
||||
secondaryButton={{
|
||||
text: "Our Story", href: "#story"}}
|
||||
names={[
|
||||
"Sarah J.", "Michael R.", "Elena K.", "David W.", "Olivia M."]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/close-up-barista-hands-preparing-coffee-customer-coffee-shop_93675-135317.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="story" data-section="story">
|
||||
<SectionErrorBoundary name="story">
|
||||
<AboutText
|
||||
title="Rooted in Passion, Crafted in Lithos"
|
||||
primaryButton={{
|
||||
text: "Our Brewing Philosophy", href: "#"}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<StorySection />
|
||||
|
||||
<div id="menu" data-section="menu">
|
||||
<SectionErrorBoundary name="menu">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="The Menu"
|
||||
title="Curated Experiences"
|
||||
description="From single-origin pours to delicate pastries, every item is selected for quality."
|
||||
items={[
|
||||
{
|
||||
title: "Signature Espresso", description: "Robust and refined, our signature blend.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/close-up-hand-holding-coffee-with-milk-cream_23-2148865608.jpg"},
|
||||
{
|
||||
title: "Cold Brew", description: "Steeped for 24 hours, velvet smooth.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/glasses-with-tasty-coffee-assortment_23-2149514291.jpg"},
|
||||
{
|
||||
title: "Gourmet Pastries", description: "Freshly baked every single morning.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/blue-plate-two-sweet-doughnuts-with-colorful-sprinkles_114579-87208.jpg"},
|
||||
{
|
||||
title: "Flat White", description: "Perfectly steamed, silky texture.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/small-business-items-serving-coffee_23-2149458023.jpg"},
|
||||
{
|
||||
title: "Iced Latte", description: "Refreshing and bold caffeine lift.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/refreshing-iced-coffee-glass-with-condensation-ice_84443-83820.jpg"},
|
||||
{
|
||||
title: "Artisan Danishes", description: "Layers of buttery, flaky perfection.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/strawberry-pie-table_140725-6826.jpg"},
|
||||
{
|
||||
title: "Pour Over", description: "Clean flavors, vibrant origin notes.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/man-pouring-syrup-coffee-mixed-with-milk_140725-7036.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MenuSection />
|
||||
|
||||
<div id="gallery" data-section="gallery">
|
||||
<SectionErrorBoundary name="gallery">
|
||||
<FeaturesBento
|
||||
tag="Our Space"
|
||||
title="A Sanctuary of Coffee"
|
||||
description="Explore the aesthetic detail that defines Lithos."
|
||||
features={[
|
||||
{
|
||||
title: "Designed for You", description: "Modern minimalist interiors designed for comfort and focus.", bentoComponent: "media-stack", mediaItems: [
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/hookah-still-life-assortment_23-2149213303.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/luxury-bar-illuminated-by-modern-lighting-equipment-generated-by-ai_188544-24181.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/coffee-cup-cheesecake-wooden-table-front-cushion-against-white-wall_23-2148067198.jpg"},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Crafted Details", description: "Every corner is meticulously considered.", bentoComponent: "media-stack", mediaItems: [
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pretty-blonde-woman-sitting-cafe_273609-6751.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-black-coffee-mug-near-wooden-cutting-board-cheese-copy-space_132075-11328.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happy-beautiful-asian-girl-barista-apron-works-with-coffee-machine-counter-standing_1258-203398.jpg"},
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<GallerySection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialMarqueeCards
|
||||
tag="Reviews"
|
||||
title="What Our Community Says"
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah J.", role: "Coffee Enthusiast", quote: "The best flat white I have ever had.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-girl-dressed-white-pajamas_158538-18356.jpg"},
|
||||
{
|
||||
name: "Michael R.", role: "Regular Patron", quote: "Lithos feels like home away from home.", imageSrc: "http://img.b2bpic.net/free-photo/bearded-male-drinks-coffee-cafe_613910-8838.jpg"},
|
||||
{
|
||||
name: "Elena K.", role: "Design Critic", quote: "Unmatched aesthetic and impeccable coffee.", imageSrc: "http://img.b2bpic.net/free-photo/young-adult-enjoying-beverage_23-2149304428.jpg"},
|
||||
{
|
||||
name: "David W.", role: "Professional", quote: "The perfect spot for my morning meetings.", imageSrc: "http://img.b2bpic.net/free-photo/young-man-texting-cafe-happy-businessman-smiling-texting-smartphone-table_1391-595.jpg"},
|
||||
{
|
||||
name: "Olivia M.", role: "Foodie", quote: "Their danishes are genuinely life-changing.", imageSrc: "http://img.b2bpic.net/free-photo/attractive-casual-african-american-girl-stylish-trench-coat-happily-looking-away-with-coffee-go-cafe-street_574295-2881.jpg"},
|
||||
]}
|
||||
description="Join our community of coffee lovers."
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsFeatureCards
|
||||
tag="Our Impact"
|
||||
title="Lithos By The Numbers"
|
||||
description="Dedication to quality measured in cups."
|
||||
metrics={[
|
||||
{
|
||||
value: "15k+", title: "Cups Served", features: [
|
||||
"Sustainably sourced", "Small batch roasts"],
|
||||
},
|
||||
{
|
||||
value: "50+", title: "Coffee Origins", features: [
|
||||
"Direct trade", "Premium quality"],
|
||||
},
|
||||
{
|
||||
value: "12", title: "Pastry Flavors", features: [
|
||||
"Daily fresh", "Handmade"],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSimple
|
||||
tag="Support"
|
||||
title="Common Inquiries"
|
||||
description="Answers to your burning coffee questions."
|
||||
items={[
|
||||
{
|
||||
question: "Do you offer plant-based milks?", answer: "Yes, we offer oat, almond, and soy alternatives."},
|
||||
{
|
||||
question: "Can I work from your cafe?", answer: "Absolutely, our space is designed for comfort and focused work."},
|
||||
{
|
||||
question: "Do you host brewing workshops?", answer: "Yes, subscribe to our newsletter for event announcements."},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Visit Us"
|
||||
text="Join us at Lithos and experience the difference today."
|
||||
primaryButton={{
|
||||
text: "Get Directions", href: "#footer"}}
|
||||
secondaryButton={{
|
||||
text: "Call Now", href: "tel:5550123"}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
23
src/pages/HomePage/sections/Contact.tsx
Normal file
23
src/pages/HomePage/sections/Contact.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 "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="Visit Us"
|
||||
text="Join us at Lithos and experience the difference today."
|
||||
primaryButton={{
|
||||
text: "Get Directions", href: "#footer"}}
|
||||
secondaryButton={{
|
||||
text: "Call Now", href: "tel:5550123"}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</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="Support"
|
||||
title="Common Inquiries"
|
||||
description="Answers to your burning coffee questions."
|
||||
items={[
|
||||
{
|
||||
question: "Do you offer plant-based milks?", answer: "Yes, we offer oat, almond, and soy alternatives."},
|
||||
{
|
||||
question: "Can I work from your cafe?", answer: "Absolutely, our space is designed for comfort and focused work."},
|
||||
{
|
||||
question: "Do you host brewing workshops?", answer: "Yes, subscribe to our newsletter for event announcements."},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
42
src/pages/HomePage/sections/Gallery.tsx
Normal file
42
src/pages/HomePage/sections/Gallery.tsx
Normal file
@@ -0,0 +1,42 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "gallery" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesBento from '@/components/sections/features/FeaturesBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function GallerySection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="gallery" data-section="gallery">
|
||||
<SectionErrorBoundary name="gallery">
|
||||
<FeaturesBento
|
||||
tag="Our Space"
|
||||
title="A Sanctuary of Coffee"
|
||||
description="Explore the aesthetic detail that defines Lithos."
|
||||
features={[
|
||||
{
|
||||
title: "Designed for You", description: "Modern minimalist interiors designed for comfort and focus.", bentoComponent: "media-stack", mediaItems: [
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/hookah-still-life-assortment_23-2149213303.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/luxury-bar-illuminated-by-modern-lighting-equipment-generated-by-ai_188544-24181.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/coffee-cup-cheesecake-wooden-table-front-cushion-against-white-wall_23-2148067198.jpg"},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Crafted Details", description: "Every corner is meticulously considered.", bentoComponent: "media-stack", mediaItems: [
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pretty-blonde-woman-sitting-cafe_273609-6751.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-black-coffee-mug-near-wooden-cutting-board-cheese-copy-space_132075-11328.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happy-beautiful-asian-girl-barista-apron-works-with-coffee-machine-counter-standing_1258-203398.jpg"},
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</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 HeroCenteredLogos from '@/components/sections/hero/HeroCenteredLogos';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroCenteredLogos
|
||||
avatarsSrc={[
|
||||
"http://img.b2bpic.net/free-photo/happy-portrait-girl-holding-takeaway-coffee-cup_23-2147906477.jpg", "http://img.b2bpic.net/free-photo/high-angle-man-restaurant_23-2148395381.jpg", "http://img.b2bpic.net/free-photo/dreamy-beautiful-woman-student-sitting-cafe-with-books-magazines-smiling-holding-phone-thinking_176420-12422.jpg", "http://img.b2bpic.net/free-photo/medium-shot-smiley-woman-with-coffee-cup_23-2149412558.jpg", "http://img.b2bpic.net/free-photo/pretty-young-woman-enjoying-coffee-cup_23-2148756344.jpg"]}
|
||||
avatarText="Loved by 10,000+ coffee enthusiasts"
|
||||
title="ليثوس | حيث تلتقي الأصالة بفن القهوة المختصة."
|
||||
description="Lithos | Where Heritage Meets the Craft of Specialty Coffee."
|
||||
primaryButton={{"href":"#menu","text":"اكتشف المنيو / Explore Menu"}}
|
||||
secondaryButton={{
|
||||
text: "Our Story", href: "#story"}}
|
||||
names={[
|
||||
"Sarah J.", "Michael R.", "Elena K.", "David W.", "Olivia M."]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/close-up-barista-hands-preparing-coffee-customer-coffee-shop_93675-135317.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
36
src/pages/HomePage/sections/Menu.tsx
Normal file
36
src/pages/HomePage/sections/Menu.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 "menu" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function MenuSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="menu" data-section="menu">
|
||||
<SectionErrorBoundary name="menu">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="The Menu"
|
||||
title="Curated Experiences"
|
||||
description="From single-origin pours to delicate pastries, every item is selected for quality."
|
||||
items={[
|
||||
{
|
||||
title: "Signature Espresso", description: "Robust and refined, our signature blend.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/close-up-hand-holding-coffee-with-milk-cream_23-2148865608.jpg"},
|
||||
{
|
||||
title: "Cold Brew", description: "Steeped for 24 hours, velvet smooth.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/glasses-with-tasty-coffee-assortment_23-2149514291.jpg"},
|
||||
{
|
||||
title: "Gourmet Pastries", description: "Freshly baked every single morning.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/blue-plate-two-sweet-doughnuts-with-colorful-sprinkles_114579-87208.jpg"},
|
||||
{
|
||||
title: "Flat White", description: "Perfectly steamed, silky texture.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/small-business-items-serving-coffee_23-2149458023.jpg"},
|
||||
{
|
||||
title: "Iced Latte", description: "Refreshing and bold caffeine lift.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/refreshing-iced-coffee-glass-with-condensation-ice_84443-83820.jpg"},
|
||||
{
|
||||
title: "Artisan Danishes", description: "Layers of buttery, flaky perfection.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/strawberry-pie-table_140725-6826.jpg"},
|
||||
{
|
||||
title: "Pour Over", description: "Clean flavors, vibrant origin notes.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/man-pouring-syrup-coffee-mixed-with-milk_140725-7036.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
34
src/pages/HomePage/sections/Metrics.tsx
Normal file
34
src/pages/HomePage/sections/Metrics.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 "metrics" section.
|
||||
|
||||
import React from 'react';
|
||||
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function MetricsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsFeatureCards
|
||||
tag="Our Impact"
|
||||
title="Lithos By The Numbers"
|
||||
description="Dedication to quality measured in cups."
|
||||
metrics={[
|
||||
{
|
||||
value: "15k+", title: "Cups Served", features: [
|
||||
"Sustainably sourced", "Small batch roasts"],
|
||||
},
|
||||
{
|
||||
value: "50+", title: "Coffee Origins", features: [
|
||||
"Direct trade", "Premium quality"],
|
||||
},
|
||||
{
|
||||
value: "12", title: "Pastry Flavors", features: [
|
||||
"Daily fresh", "Handmade"],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
47
src/pages/HomePage/sections/Story.tsx
Normal file
47
src/pages/HomePage/sections/Story.tsx
Normal file
@@ -0,0 +1,47 @@
|
||||
/* eslint-disable */
|
||||
// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body
|
||||
import Button from "@/components/ui/Button";
|
||||
import TextAnimation from "@/components/ui/TextAnimation";
|
||||
|
||||
const primaryButton = {
|
||||
href: "#",
|
||||
text: "Our Brewing Philosophy"
|
||||
};
|
||||
|
||||
interface AboutTextProps {
|
||||
title: string;
|
||||
primaryButton?: { text: string; href: string };
|
||||
secondaryButton?: { text: string; href: string };
|
||||
}
|
||||
|
||||
const StoryInline = () => {
|
||||
return (
|
||||
<section aria-label="About section" className="py-20">
|
||||
<div className="w-content-width mx-auto flex flex-col gap-2 items-center">
|
||||
<div className="flex flex-col gap-6 max-w-4xl text-center">
|
||||
<p className="text-2xl md:text-3xl font-medium text-foreground leading-relaxed" dir="rtl">
|
||||
في ليثوس، نحن لا نقدم مجرد كوب قهوة، بل نسرد قصة تبدأ من اختيار أجود حبات البن من مزارعها المستدامة، ونتوجها بتحميص دقيق وشغف لا ينتهي. اسمنا مستوحى من الصلابة والعراقة، ليكون كل رشفة تجربة فريدة تأخذك في رحلة حسية لا تُنسى.
|
||||
</p>
|
||||
<p className="text-xl md:text-2xl text-accent leading-relaxed">
|
||||
At Lithos, we don't just serve coffee; we craft an experience. From carefully sourcing premium, sustainable beans to precise roasting, every cup is a testament to our passion. Inspired by raw elegance, Lithos is designed to be your ultimate sanctuary for sensory discovery.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{(primaryButton || undefined) && (
|
||||
<div className="flex flex-wrap gap-3 justify-center mt-2 md:mt-3">
|
||||
{primaryButton && <Button text={primaryButton.text} href={primaryButton.href} variant="primary" />}
|
||||
{undefined && <Button text={undefined.text} href={undefined.href} variant="secondary" animationDelay={0.1} />}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default function StorySection() {
|
||||
return (
|
||||
<div data-webild-section="story" id="story">
|
||||
<StoryInline />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
32
src/pages/HomePage/sections/Testimonials.tsx
Normal file
32
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,32 @@
|
||||
// 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="Reviews"
|
||||
title="What Our Community Says"
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah J.", role: "Coffee Enthusiast", quote: "The best flat white I have ever had.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-girl-dressed-white-pajamas_158538-18356.jpg"},
|
||||
{
|
||||
name: "Michael R.", role: "Regular Patron", quote: "Lithos feels like home away from home.", imageSrc: "http://img.b2bpic.net/free-photo/bearded-male-drinks-coffee-cafe_613910-8838.jpg"},
|
||||
{
|
||||
name: "Elena K.", role: "Design Critic", quote: "Unmatched aesthetic and impeccable coffee.", imageSrc: "http://img.b2bpic.net/free-photo/young-adult-enjoying-beverage_23-2149304428.jpg"},
|
||||
{
|
||||
name: "David W.", role: "Professional", quote: "The perfect spot for my morning meetings.", imageSrc: "http://img.b2bpic.net/free-photo/young-man-texting-cafe-happy-businessman-smiling-texting-smartphone-table_1391-595.jpg"},
|
||||
{
|
||||
name: "Olivia M.", role: "Foodie", quote: "Their danishes are genuinely life-changing.", imageSrc: "http://img.b2bpic.net/free-photo/attractive-casual-african-american-girl-stylish-trench-coat-happily-looking-away-with-coffee-go-cafe-street_574295-2881.jpg"},
|
||||
]}
|
||||
description="Join our community of coffee lovers."
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user