Merge version_2_1781437335735 into main
Merge version_2_1781437335735 into main
This commit was merged in pull request #2.
This commit is contained in:
@@ -1,126 +1,33 @@
|
||||
import AboutText from '@/components/sections/about/AboutText';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FeaturesDetailedCards from '@/components/sections/features/FeaturesDetailedCards';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import HeroBillboard from '@/components/sections/hero/HeroBillboard';
|
||||
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
|
||||
import TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
// AUTO-GENERATED shell by per-section-migrate.
|
||||
// Section bodies live in ./<PageBase>/sections/<X>.tsx. Edit the section
|
||||
// files directly. Non-block content (wrappers, non-inlinable sections) is
|
||||
// preserved inline; extracted section blocks become <XSection/> refs.
|
||||
|
||||
export default function HomePage() {
|
||||
import React from 'react';
|
||||
import HeroSection from './HomePage/sections/Hero';
|
||||
import AboutSection from './HomePage/sections/About';
|
||||
import FeaturesSection from './HomePage/sections/Features';
|
||||
import ProductsSection from './HomePage/sections/Products';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboard
|
||||
tag="Since 2012"
|
||||
title="Glory in Every Sip"
|
||||
description="Welcome to Cafe Glory, where artisanal coffee meets a warm, welcoming community. Discover your new favorite morning ritual in the heart of the city."
|
||||
primaryButton={{
|
||||
text: "Our Menu", href: "#features"}}
|
||||
secondaryButton={{
|
||||
text: "Visit Us", href: "#contact"}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/front-view-cup-coffee-with-muffins_23-2148337165.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutText
|
||||
title="A passion for craft, served daily. We believe every cup tells a story of origin, roasting precision, and the art of the perfect brew."
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesDetailedCards
|
||||
tag="Our Menu Highlights"
|
||||
title="Crafted with Care"
|
||||
description="Our seasonal menu is curated using the finest locally sourced ingredients."
|
||||
items={[
|
||||
{
|
||||
title: "Fresh Pastries", description: "Hand-crafted croissants, seasonal tarts, and daily baked treats.", tags: ["Artisanal", "Fresh"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-woman-holding-croissant_23-2149233686.jpg"},
|
||||
{
|
||||
title: "Specialty Coffee", description: "Single-origin beans roasted to perfection by our expert baristas.", tags: ["Organic", "Specialty"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cup-latte-old-wooden_2829-15587.jpg"},
|
||||
{
|
||||
title: "Warm Atmosphere", description: "The perfect nook for reading, working, or catching up with friends.", tags: ["Cozy", "Community"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/wooden-table-chair-dinner_74190-3963.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Signature Offerings"
|
||||
title="The Cafe Glory Collection"
|
||||
description="Discover our signature products and local favorites."
|
||||
items={[
|
||||
{ title: "Signature Roast", description: "Our balanced signature blend.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/coffee-composition-with-cotton-bag_23-2147671450.jpg" },
|
||||
{ title: "Fudge Brownies", description: "Rich dark chocolate goodness.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/top-view-little-creamy-cake-with-chocolate-cookies-dark-surface-biscuit-cake-sweet-pie-sugar-cookies_140725-118184.jpg" },
|
||||
{ title: "Matcha Latte", description: "Ceremonial grade matcha.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/elevated-view-breakfast-blue-background_23-2147860583.jpg" },
|
||||
{ title: "Sourdough Bread", description: "Slow-fermented artisan bread.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/person-slicing-raw-vegan-bread-with-knife_181624-34824.jpg" },
|
||||
{ title: "Berry Parfait", description: "Organic yogurt and fresh fruit.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/mason-jar-filled-with-layers-yogurt-granola-berries-berry-sauce_9975-124471.jpg" },
|
||||
{ title: "Cinnamon Roll", description: "Warm, glazed, and spicy.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/fluffy-meringue-muffins-with-black-dry-grapes-table_114579-22145.jpg" },
|
||||
{ title: "Barista Kit", description: "Pro tools for your home.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/tools-used-process-coffee-making_23-2150187566.jpg" },
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ProductsSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsFeatureCards
|
||||
tag="Our Impact"
|
||||
title="By The Numbers"
|
||||
description="We are proud of the community we have built over the years."
|
||||
metrics={[
|
||||
{
|
||||
value: "10k+", title: "Happy Customers", features: ["Quality focused", "Community driven"],
|
||||
},
|
||||
{
|
||||
value: "5k", title: "Cups Brewed", features: ["Artisanal techniques", "Perfect consistency"],
|
||||
},
|
||||
{
|
||||
value: "12+", title: "Local Farmers", features: ["Directly sourced", "Sustainable practices"],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialRatingCards
|
||||
tag="Community Voices"
|
||||
title="What Our Friends Say"
|
||||
description="Discover why our guests make us their daily ritual."
|
||||
testimonials={[
|
||||
{ name: "Sarah Johnson", role: "Creative Lead", quote: "The best lattes in town. A hidden gem!", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/portrait-handsome-happy-young-man-relaxing-coffee-shop-spending-time-cafe-listening_1258-245399.jpg" },
|
||||
{ name: "Michael Chen", role: "Software Engineer", quote: "My favorite place to write code on Saturdays.", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-working-home_23-2149161002.jpg" },
|
||||
{ name: "Emily Rodriguez", role: "Journalist", quote: "Super cozy atmosphere and friendly team.", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-woman-reading-coffee-shop_23-2150183749.jpg" },
|
||||
{ name: "David Kim", role: "Marketing Dir", quote: "The sourdough bread is simply life changing.", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/beautiful-women-laughing-together-medium-shot_23-2148422483.jpg" },
|
||||
{ name: "Jessica Lee", role: "Graphic Designer", quote: "I love the attention to detail in their roasting.", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/close-up-businessman-with-cup-coffee_1098-1268.jpg" },
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Visit Us"
|
||||
text="Join us for a fresh brew today. Located in the heart of downtown."
|
||||
primaryButton={{ text: "Get Directions", href: "#" }}
|
||||
secondaryButton={{ text: "Contact Us", href: "#" }}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
18
src/pages/HomePage/sections/About.tsx
Normal file
18
src/pages/HomePage/sections/About.tsx
Normal file
@@ -0,0 +1,18 @@
|
||||
// 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 AboutText from '@/components/sections/about/AboutText';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutText
|
||||
title="A passion for Moroccan heritage, served daily. We believe every meal tells a story of tradition, rich spices, and the art of true hospitality."
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/Contact.tsx
Normal file
21
src/pages/HomePage/sections/Contact.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 "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 for an authentic Moroccan breakfast today. Experience true hospitality in the heart of downtown."
|
||||
primaryButton={{ text: "Get Directions", href: "#" }}
|
||||
secondaryButton={{ text: "Contact Us", href: "#" }}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/Features.tsx
Normal file
21
src/pages/HomePage/sections/Features.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 "features" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesDetailedCards from '@/components/sections/features/FeaturesDetailedCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FeaturesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesDetailedCards
|
||||
tag="Our Moroccan Menu"
|
||||
title="Crafted with Tradition"
|
||||
description="Our menu is curated using authentic recipes and the finest ingredients to bring you a true taste of Morocco."
|
||||
items={[{"title":"Moroccan Breakfast","description":"A rich spread of msemen, baghrir, olives, honey, and fresh cheese.","imageSrc":"https://images.unsplash.com/photo-1533777857889-4be7c70b33f7?auto=format&fit=crop&q=80&w=800","tags":["Authentic","Traditional"]},{"imageSrc":"https://images.unsplash.com/photo-1576092768241-dec231879fc3?auto=format&fit=crop&q=80&w=800","tags":["Refreshing","Classic"],"title":"Moroccan Mint Tea","description":"The classic 'Atay', brewed with fresh mint and gunpowder green tea."},{"title":"Warm Atmosphere","description":"Experience the vibrant colors and cozy ambiance inspired by Moroccan riads.","imageSrc":"https://images.unsplash.com/photo-1539020140153-e479b8c22e70?auto=format&fit=crop&q=80&w=800","tags":["Cozy","Cultural"]}]}
|
||||
/>
|
||||
</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 HeroBillboard from '@/components/sections/hero/HeroBillboard';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboard
|
||||
tag="Since 2012"
|
||||
title="Authentic Moroccan Flavors"
|
||||
description="Welcome to Cafe Glory, where traditional Moroccan hospitality meets vibrant flavors. Discover our authentic Moroccan breakfast and artisanal coffee in a warm, culturally rich setting."
|
||||
primaryButton={{
|
||||
text: "Our Menu", href: "#features"}}
|
||||
secondaryButton={{
|
||||
text: "Visit Us", href: "#contact"}}
|
||||
imageSrc="https://images.unsplash.com/photo-1533777857889-4be7c70b33f7?auto=format&fit=crop&q=80&w=800"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/Metrics.tsx
Normal file
21
src/pages/HomePage/sections/Metrics.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 "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 Heritage"
|
||||
title="A Taste of Morocco"
|
||||
description="Sharing the rich culinary traditions of Morocco with our community."
|
||||
metrics={[{"features":["Authentic flavors","Warm hospitality"],"title":"Happy Guests","value":"10k+"},{"features":["Fresh mint","Traditional brewing"],"title":"Pots of Mint Tea","value":"5k"},{"features":["Family traditions","Quality ingredients"],"title":"Authentic Recipes","value":"100%"}]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/Products.tsx
Normal file
21
src/pages/HomePage/sections/Products.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 "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="Signature Offerings"
|
||||
title="The Moroccan Collection"
|
||||
description="Discover our signature Moroccan dishes and local favorites."
|
||||
items={[{"href":"#","imageSrc":"https://images.unsplash.com/photo-1626200419188-f15e569f5542?auto=format&fit=crop&q=80&w=800","title":"Msemen (Square Pancakes)","description":"Flaky, buttery Moroccan flatbread."},{"href":"#","imageSrc":"https://images.unsplash.com/photo-1589301760014-d929f39ce9b1?auto=format&fit=crop&q=80&w=800","title":"Baghrir (Thousand Hole Crepes)","description":"Spongy semolina crepes served with honey and butter."},{"description":"Authentic sweet mint tea.","title":"Moroccan Mint Tea","href":"#","imageSrc":"https://images.unsplash.com/photo-1576092768241-dec231879fc3?auto=format&fit=crop&q=80&w=800"},{"href":"#","imageSrc":"https://images.unsplash.com/photo-1509440159596-0249088772ff?auto=format&fit=crop&q=80&w=800","title":"Khobz (Moroccan Bread)","description":"Traditional round bread baked fresh daily."},{"title":"Amlou","description":"A delicious dip of almonds, argan oil, and honey.","href":"#","imageSrc":"https://images.unsplash.com/photo-1596040033229-a9821ebd058d?auto=format&fit=crop&q=80&w=800"},{"title":"Sfenj","description":"Moroccan doughnuts, crispy on the outside and fluffy inside.","imageSrc":"https://images.unsplash.com/photo-1626200419188-f15e569f5542?auto=format&fit=crop&q=80&w=800","href":"#"},{"description":"Coffee brewed with traditional Moroccan spices.","title":"Spiced Coffee","href":"#","imageSrc":"https://images.unsplash.com/photo-1541167760496-1628856ab772?auto=format&fit=crop&q=80&w=800"}]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/Testimonials.tsx
Normal file
21
src/pages/HomePage/sections/Testimonials.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 "testimonials" section.
|
||||
|
||||
import React from 'react';
|
||||
import TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialRatingCards
|
||||
tag="Guest Voices"
|
||||
title="What Our Guests Say"
|
||||
description="Discover why our guests love our authentic Moroccan experience."
|
||||
testimonials={[{"role":"Creative Lead","name":"Sarah Johnson","quote":"The traditional Moroccan breakfast is incredible. The msemen is just like my grandmother used to make!","imageSrc":"http://img.b2bpic.net/free-photo/portrait-handsome-happy-young-man-relaxing-coffee-shop-spending-time-cafe-listening_1258-245399.jpg","rating":5},{"name":"Michael Chen","role":"Software Engineer","quote":"I come here every weekend for the mint tea and the cozy riad-like atmosphere.","imageSrc":"http://img.b2bpic.net/free-photo/medium-shot-man-working-home_23-2149161002.jpg","rating":5},{"imageSrc":"http://img.b2bpic.net/free-photo/medium-shot-woman-reading-coffee-shop_23-2150183749.jpg","name":"Emily Rodriguez","role":"Journalist","quote":"The spiced coffee and baghrir are the perfect start to my day. Highly recommend!","rating":5},{"rating":5,"name":"David Kim","role":"Marketing Dir","quote":"Such a warm and welcoming place. The flavors are truly authentic and delicious.","imageSrc":"http://img.b2bpic.net/free-photo/beautiful-women-laughing-together-medium-shot_23-2148422483.jpg"},{"rating":5,"quote":"A hidden gem! The amlou dip with fresh khobz is out of this world.","name":"Jessica Lee","role":"Graphic Designer","imageSrc":"http://img.b2bpic.net/free-photo/close-up-businessman-with-cup-coffee_1098-1268.jpg"}]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user