Merge version_2_1781437380901 into main #1

Merged
bender merged 1 commits from version_2_1781437380901 into main 2026-06-14 11:45:02 +00:00
9 changed files with 383 additions and 226 deletions

View File

@@ -1,237 +1,35 @@
import AboutText from '@/components/sections/about/AboutText';
import ContactCta from '@/components/sections/contact/ContactCta';
import FeaturesArrowCards from '@/components/sections/features/FeaturesArrowCards';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import HeroBillboardBrand from '@/components/sections/hero/HeroBillboardBrand';
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 WhyChooseSection from './HomePage/sections/WhyChoose';
import MenuSection from './HomePage/sections/Menu';
import GallerySection from './HomePage/sections/Gallery';
import TestimonialsSection from './HomePage/sections/Testimonials';
import ContactSection from './HomePage/sections/Contact';
import LocationSection from './HomePage/sections/Location';export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroBillboardBrand
brand="LUCKY KEBAB"
description="Authentic, fresh, and locally loved. Experience the premium taste of tradition, prepared with care for our local community."
primaryButton={{
text: "Order Online",
href: "#contact",
}}
secondaryButton={{
text: "View Menu",
href: "#menu",
}}
imageSrc="http://img.b2bpic.net/free-photo/beef-meat-kebab-with-onions-sumakh-lavash-wooden-plate-served-with-wine-vegetables_114579-163.jpg"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutText
title="A Family Tradition of Freshness"
primaryButton={{
text: "Our Story",
href: "#",
}}
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="why-choose" data-section="why-choose">
<SectionErrorBoundary name="why-choose">
<MetricsFeatureCards
tag="Why Lucky Kebab?"
title="Quality That Speaks for Itself"
description="We believe in generous servings, fresh ingredients, and the kind of service that makes you feel at home."
metrics={[
{
value: "100%",
title: "Fresh Ingredients",
features: [
"Locally sourced",
"Premium meats",
"Freshly chopped salads",
],
},
{
value: "5★",
title: "Customer Service",
features: [
"Friendly staff",
"Fast service",
"Community focused",
],
},
{
value: "Daily",
title: "Hand-Prepared",
features: [
"Toasted turkish bread",
"Homemade sauces",
"Hand-marinated meats",
],
},
]}
/>
</SectionErrorBoundary>
</div>
<WhyChooseSection />
<div id="menu" data-section="menu">
<SectionErrorBoundary name="menu">
<FeaturesRevealCardsBento
tag="Our Signature Menu"
title="Freshness You Can Taste"
description="From our succulent lamb kebabs to our famous hand-cut chips, discover the taste that everyone is talking about."
items={[
{
title: "Lamb Kebab",
description: "Slow-cooked, premium lamb, fresh salad, our secret sauce.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/view-delicious-sweets-plate_23-2149192053.jpg",
},
{
title: "Snack Pack",
description: "The local favourite. Generous chips, cheese, and your choice of meat.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-mix-nuts-figs-plate_23-2148352341.jpg",
},
{
title: "Toasted Pide",
description: "Authentic, freshly toasted Turkish bread, warm and crispy.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/traditional-italian-mini-pizza-wooden-plate-marble-table_114579-82432.jpg",
},
{
title: "Classic Beef Kebab",
description: "High-quality beef with crispy salad and garlic yogurt sauce.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-little-pipe-cookies-with-marmalade-white-surface_140725-61658.jpg",
},
{
title: "Fresh Cut Chips",
description: "Double-cooked for the perfect crisp in every bite.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-tasty-ham-sandwiches-with-french-fries-dark-surface_179666-34646.jpg",
},
{
title: "Turkish Delight",
description: "The perfect sweet end to your meal.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/triangle-shaped-pastries-filled-with-cheese-wooden-board_114579-88842.jpg",
},
{
title: "Family Combo",
description: "Big servings designed for sharing with your loved ones.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/various-turkish-delights-dish-marble-background_114579-74572.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<MenuSection />
<div id="gallery" data-section="gallery">
<SectionErrorBoundary name="gallery">
<FeaturesArrowCards
tag="Inside Lucky Kebab"
title="More Than Just Kebabs"
description="See our clean, inviting shop and some of the local favourites."
items={[
{
title: "Clean Inviting Shop",
tags: [
"Family Friendly",
"Spotless",
],
imageSrc: "http://img.b2bpic.net/free-photo/romantic-dining-table-setting-with-wine-glass-other_74190-7639.jpg",
},
{
title: "Happy Local Customers",
tags: [
"Family",
"Local Love",
],
imageSrc: "http://img.b2bpic.net/free-photo/three-elegant-women-with-shopping-bags-city_1157-38858.jpg",
},
{
title: "Fresh Preparation",
tags: [
"Fresh",
"Artisan",
],
imageSrc: "http://img.b2bpic.net/free-photo/pieces-fresh-homemade-sourdough-bread-slicing-artisan-bread-straw-lining-top-view_166373-3249.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<GallerySection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialRatingCards
tag="What Locals Say"
title="Loved By Our Community"
description="We are proud to be a local favorite, serving up smiles and satisfaction every single day."
testimonials={[
{
name: "Sarah J.",
role: "Local Resident",
quote: "Hands down the best lamb kebab in the area. Always fresh, never greasy, and the staff are wonderful.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-smiling-brunette-asian-woman-sitting-with-graphic-pen-looking-happy-drawing_1258-199033.jpg",
},
{
name: "Michael T.",
role: "Loyal Customer",
quote: "The Turkish bread is perfectly toasted every time. Excellent value and very generous servings.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/smiling-man-enjoying-croissant_1170-631.jpg",
},
{
name: "The Anderson Family",
role: "Family Diner",
quote: "Our go-to place for a fast, delicious family meal. Very welcoming, clean, and quick service.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/happy-family-havinf-dinner-together_23-2149117546.jpg",
},
{
name: "David L.",
role: "Professional",
quote: "Consistent quality and fantastic customer service. Its hard to find a place that really cares this much.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/elder-group-friends-partying_23-2150300153.jpg",
},
{
name: "Emma R.",
role: "Student",
quote: "Fresh ingredients and fast, friendly service. Lucky Kebab is a true local gem!",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/happiness-leisure-lifestyle-concept-smiling-african-american-female-recreates-cafe-restaurant-eats-delicious-dessert-drinks-cocktail-happy-have-pleasant-conversation-with-interlocutor_273609-2194.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<LocationSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Order Now"
text="Hungry? Place your order online and pick it up fresh today."
primaryButton={{
text: "Call to Order",
href: "tel:0000000000",
}}
secondaryButton={{
text: "Visit Us",
href: "#",
}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

View File

@@ -0,0 +1,22 @@
// 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 Family Tradition of Freshness"
primaryButton={{
text: "Our Story",
href: "#",
}}
/>
</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="Order Now"
text="Hungry? Place your order online and pick it up fresh today."
primaryButton={{
text: "Call to Order",
href: "tel:0000000000",
}}
secondaryButton={{
text: "Visit Us",
href: "#",
}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,46 @@
// 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 FeaturesArrowCards from '@/components/sections/features/FeaturesArrowCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function GallerySection(): React.JSX.Element {
return (
<div id="gallery" data-section="gallery">
<SectionErrorBoundary name="gallery">
<FeaturesArrowCards
tag="Inside Lucky Kebab"
title="More Than Just Kebabs"
description="See our clean, inviting shop and some of the local favourites."
items={[
{
title: "Clean Inviting Shop",
tags: [
"Family Friendly",
"Spotless",
],
imageSrc: "http://img.b2bpic.net/free-photo/romantic-dining-table-setting-with-wine-glass-other_74190-7639.jpg",
},
{
title: "Happy Local Customers",
tags: [
"Family",
"Local Love",
],
imageSrc: "http://img.b2bpic.net/free-photo/three-elegant-women-with-shopping-bags-city_1157-38858.jpg",
},
{
title: "Fresh Preparation",
tags: [
"Fresh",
"Artisan",
],
imageSrc: "http://img.b2bpic.net/free-photo/pieces-fresh-homemade-sourdough-bread-slicing-artisan-bread-straw-lining-top-view_166373-3249.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View 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="LUCKY KEBAB"
description="Authentic, fresh, and locally loved. Experience the premium taste of tradition, prepared with care for our local community."
primaryButton={{
text: "Order Online",
href: "#contact",
}}
secondaryButton={{
text: "View Menu",
href: "#menu",
}}
imageSrc="http://img.b2bpic.net/free-photo/beef-meat-kebab-with-onions-sumakh-lavash-wooden-plate-served-with-wine-vegetables_114579-163.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,66 @@
import { MapPin, Clock, Phone } from 'lucide-react';
import ScrollReveal from '@/components/ui/ScrollReveal';
export default function LocationSection() {
return (
<section data-webild-section="location" id="location" className="py-24 bg-background relative w-full">
<div className="w-content-width mx-auto px-6">
<ScrollReveal variant="fade">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
<div>
<h2 className="text-4xl md:text-5xl font-bold text-foreground mb-6">Find Us in Helensvale</h2>
<p className="text-lg text-muted-foreground mb-8">
Drop by for the freshest kebabs on the Gold Coast. We're centrally located with plenty of parking available.
</p>
<div className="space-y-6">
<div className="flex items-start gap-4">
<div className="p-3 bg-primary-cta/10 rounded-full text-primary-cta">
<MapPin className="w-6 h-6" />
</div>
<div>
<h3 className="text-xl font-semibold text-foreground mb-1">Address</h3>
<p className="text-muted-foreground">Helensvale, QLD 4212<br/>Gold Coast, Australia</p>
</div>
</div>
<div className="flex items-start gap-4">
<div className="p-3 bg-primary-cta/10 rounded-full text-primary-cta">
<Clock className="w-6 h-6" />
</div>
<div>
<h3 className="text-xl font-semibold text-foreground mb-1">Opening Hours</h3>
<p className="text-muted-foreground">Mon - Sun: 10:00 AM - 9:00 PM</p>
</div>
</div>
<div className="flex items-start gap-4">
<div className="p-3 bg-primary-cta/10 rounded-full text-primary-cta">
<Phone className="w-6 h-6" />
</div>
<div>
<h3 className="text-xl font-semibold text-foreground mb-1">Phone</h3>
<p className="text-muted-foreground">(07) 5500 0000</p>
</div>
</div>
</div>
</div>
<div className="h-[400px] rounded-2xl overflow-hidden shadow-lg border border-border">
<iframe
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1m3!1d113032.64621406552!2d153.26607955!3d-27.90000005!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x6b9110756382c411%3A0x502a35af3de8b70!2sHelensvale%20QLD%204212!5e0!3m2!1sen!2sau!4v1700000000000!5m2!1sen!2sau"
width="100%"
height="100%"
style={{ border: 0 }}
allowFullScreen={true}
loading="lazy"
referrerPolicy="no-referrer-when-downgrade"
title="Lucky Kebab Location Map"
></iframe>
</div>
</div>
</ScrollReveal>
</div>
</section>
);
}

View File

@@ -0,0 +1,64 @@
// 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="Our Signature Menu"
title="Freshness You Can Taste"
description="From our succulent lamb kebabs to our famous hand-cut chips, discover the taste that everyone is talking about."
items={[
{
title: "Lamb Kebab",
description: "Slow-cooked, premium lamb, fresh salad, our secret sauce.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/view-delicious-sweets-plate_23-2149192053.jpg",
},
{
title: "Snack Pack",
description: "The local favourite. Generous chips, cheese, and your choice of meat.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-mix-nuts-figs-plate_23-2148352341.jpg",
},
{
title: "Toasted Pide",
description: "Authentic, freshly toasted Turkish bread, warm and crispy.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/traditional-italian-mini-pizza-wooden-plate-marble-table_114579-82432.jpg",
},
{
title: "Classic Beef Kebab",
description: "High-quality beef with crispy salad and garlic yogurt sauce.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-little-pipe-cookies-with-marmalade-white-surface_140725-61658.jpg",
},
{
title: "Fresh Cut Chips",
description: "Double-cooked for the perfect crisp in every bite.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-tasty-ham-sandwiches-with-french-fries-dark-surface_179666-34646.jpg",
},
{
title: "Turkish Delight",
description: "The perfect sweet end to your meal.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/triangle-shaped-pastries-filled-with-cheese-wooden-board_114579-88842.jpg",
},
{
title: "Family Combo",
description: "Big servings designed for sharing with your loved ones.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/various-turkish-delights-dish-marble-background_114579-74572.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,57 @@
// 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="What Locals Say"
title="Loved By Our Community"
description="We are proud to be a local favorite, serving up smiles and satisfaction every single day."
testimonials={[
{
name: "Sarah J.",
role: "Local Resident",
quote: "Hands down the best lamb kebab in the area. Always fresh, never greasy, and the staff are wonderful.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-smiling-brunette-asian-woman-sitting-with-graphic-pen-looking-happy-drawing_1258-199033.jpg",
},
{
name: "Michael T.",
role: "Loyal Customer",
quote: "The Turkish bread is perfectly toasted every time. Excellent value and very generous servings.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/smiling-man-enjoying-croissant_1170-631.jpg",
},
{
name: "The Anderson Family",
role: "Family Diner",
quote: "Our go-to place for a fast, delicious family meal. Very welcoming, clean, and quick service.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/happy-family-havinf-dinner-together_23-2149117546.jpg",
},
{
name: "David L.",
role: "Professional",
quote: "Consistent quality and fantastic customer service. Its hard to find a place that really cares this much.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/elder-group-friends-partying_23-2150300153.jpg",
},
{
name: "Emma R.",
role: "Student",
quote: "Fresh ingredients and fast, friendly service. Lucky Kebab is a true local gem!",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/happiness-leisure-lifestyle-concept-smiling-african-american-female-recreates-cafe-restaurant-eats-delicious-dessert-drinks-cocktail-happy-have-pleasant-conversation-with-interlocutor_273609-2194.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,49 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "why-choose" section.
import React from 'react';
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function WhyChooseSection(): React.JSX.Element {
return (
<div id="why-choose" data-section="why-choose">
<SectionErrorBoundary name="why-choose">
<MetricsFeatureCards
tag="Why Lucky Kebab?"
title="Quality That Speaks for Itself"
description="We believe in generous servings, fresh ingredients, and the kind of service that makes you feel at home."
metrics={[
{
value: "100%",
title: "Fresh Ingredients",
features: [
"Locally sourced",
"Premium meats",
"Freshly chopped salads",
],
},
{
value: "5★",
title: "Customer Service",
features: [
"Friendly staff",
"Fast service",
"Community focused",
],
},
{
value: "Daily",
title: "Hand-Prepared",
features: [
"Toasted turkish bread",
"Homemade sauces",
"Hand-marinated meats",
],
},
]}
/>
</SectionErrorBoundary>
</div>
);
}