Compare commits
3 Commits
version_1_
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 776ec7f027 | |||
|
|
2352ac6c9e | ||
| 70d3425e6a |
@@ -1,222 +1,32 @@
|
||||
import AboutTextSplit from '@/components/sections/about/AboutTextSplit';
|
||||
import FaqSimple from '@/components/sections/faq/FaqSimple';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
|
||||
import HeroSplitMediaGrid from '@/components/sections/hero/HeroSplitMediaGrid';
|
||||
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 MenuSection from './HomePage/sections/Menu';
|
||||
import AmbienceSection from './HomePage/sections/Ambience';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import FaqSection from './HomePage/sections/Faq';
|
||||
|
||||
|
||||
import ReservationsSection from './HomePage/sections/Reservations';export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroSplitMediaGrid
|
||||
tag="Since 1980s"
|
||||
title="Fresh Flavors. Elegant Spaces. Memorable Moments."
|
||||
description="Experience the finest pure-vegetarian cuisine in Ahilyanagar. Perfectly curated for families and food enthusiasts who appreciate quality, ambiance, and authentic taste."
|
||||
primaryButton={{
|
||||
text: "Explore Menu",
|
||||
href: "#menu",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Find Us on Map",
|
||||
href: "https://maps.google.com",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/delicious-pakistan-meal-with-copy-space_23-2148821543.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-woman-with-delicious-food_23-2149461770.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTextSplit
|
||||
title="Our Legacy"
|
||||
descriptions={[
|
||||
"Sukhsagar Restaurant has relocated to Ahilyanagar to continue serving our long-standing family recipes. We focus on high-quality ingredients, clean spaces, and generous quantities.",
|
||||
"Our ambiance is carefully curated for families and social gatherings. Whether it is a quick lunch or a long dinner, we invite you to experience the harmony of tradition and modern comfort.",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="menu" data-section="menu">
|
||||
<SectionErrorBoundary name="menu">
|
||||
<FeaturesTaggedCards
|
||||
tag="Digital Menu Preview"
|
||||
title="Signature Flavors"
|
||||
description="Hand-picked vegetarian classics from our kitchen, prepared with premium ingredients and time-honored techniques."
|
||||
items={[
|
||||
{
|
||||
tag: "Street Food",
|
||||
title: "Special Pav Bhaji",
|
||||
description: "Classic Mumbai-style bhaji with buttery, toasted pav buns.",
|
||||
primaryButton: {
|
||||
text: "View Full Menu",
|
||||
href: "#",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pav-bhaji-being-garnished-with-fresh-herbs_23-2151996252.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Mains",
|
||||
title: "Veg Biryani",
|
||||
description: "Fragrant basmati rice cooked with seasonal vegetables and spices.",
|
||||
primaryButton: {
|
||||
text: "View Full Menu",
|
||||
href: "#",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-from-afar-cake-sweets-cake-with-slices-lime-chocolate-white-bowls-chocolate-limes-yellow-candies-chocolate-cream-table_140725-111329.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Starters",
|
||||
title: "Manchurian Dry",
|
||||
description: "Crispy vegetable balls tossed in savory soy-garlic sauce.",
|
||||
primaryButton: {
|
||||
text: "View Full Menu",
|
||||
href: "#",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/restaurant-hall-with-blue-chairs-decors-wall_140725-8028.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MenuSection />
|
||||
|
||||
<div id="ambience" data-section="ambience">
|
||||
<SectionErrorBoundary name="ambience">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Atmosphere"
|
||||
title="A Cozy Haven"
|
||||
description="Our interiors are designed for comfort and elegance. Perfect for family celebrations or quiet evening meals."
|
||||
items={[
|
||||
{
|
||||
title: "Main Dining Area",
|
||||
description: "Spacious seating with warm lighting and plush decor.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/group-friends-eating-restaurant_23-2148395390.jpg",
|
||||
},
|
||||
{
|
||||
title: "Family Booths",
|
||||
description: "Private, comfortable corners for intimate family dining.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/grey-painted-fancy-restaurant-with-empty-dinner-table_140725-8730.jpg",
|
||||
},
|
||||
{
|
||||
title: "Private Party Room",
|
||||
description: "Ideal for small celebrations and gatherings.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/dining-table-background-zoom-calls_23-2149684444.jpg",
|
||||
},
|
||||
{
|
||||
title: "Ambient Decor",
|
||||
description: "Subtle details reflecting modern restaurant design.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/restaurant-hall-with-turquoise-chairs-white-walls-french-windows-curtains_140725-8450.jpg",
|
||||
},
|
||||
{
|
||||
title: "Clean Washrooms",
|
||||
description: "Hygienic, well-maintained facilities for guests.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/white-chairs-tables-cafe_141793-2924.jpg",
|
||||
},
|
||||
{
|
||||
title: "Quick Service Spot",
|
||||
description: "Efficient counter service for walk-ins.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beverage-topped-with-fried-orange-slice_141793-1125.jpg",
|
||||
},
|
||||
{
|
||||
title: "Parking Area",
|
||||
description: "Ample space provided for all guests.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happy-family-enjoying-time-together_23-2149283540.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AmbienceSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialMarqueeOverlayCards
|
||||
tag="Love from Guests"
|
||||
title="What People Say"
|
||||
description="Join our community of happy diners in Ahilyanagar."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Pawan Mundada",
|
||||
role: "Local Guide",
|
||||
company: "Ahilyanagar",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-man-smiling-restaurant_23-2150771033.jpg",
|
||||
},
|
||||
{
|
||||
name: "Swagat Patil",
|
||||
role: "Local Guide",
|
||||
company: "Ahilyanagar",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-man-holding-burger_23-2148705543.jpg",
|
||||
},
|
||||
{
|
||||
name: "Hari Om",
|
||||
role: "Local Guide",
|
||||
company: "Ahilyanagar",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-waitress-holding-plate-with-muffin_107420-12322.jpg",
|
||||
},
|
||||
{
|
||||
name: "Priya Kulkarni",
|
||||
role: "Foodie",
|
||||
company: "Ahilyanagar",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-happy-woman-tasting-pastry-cafe_1262-5335.jpg",
|
||||
},
|
||||
{
|
||||
name: "Rahul Deshmukh",
|
||||
role: "Diner",
|
||||
company: "Ahilyanagar",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-happy-business-woman-posing-her-own-coffee-shop_1163-1790.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
<ReservationsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSimple
|
||||
tag="Support"
|
||||
title="Frequently Asked"
|
||||
description="Have questions about our restaurant? Here are the most common ones."
|
||||
items={[
|
||||
{
|
||||
question: "Is the restaurant purely vegetarian?",
|
||||
answer: "Yes, we are 100% pure-veg restaurant.",
|
||||
},
|
||||
{
|
||||
question: "Are you open on weekends?",
|
||||
answer: "Yes, we are open every day from 11:00 AM to 11:00 PM.",
|
||||
},
|
||||
{
|
||||
question: "Do you offer home delivery?",
|
||||
answer: "Yes, we offer no-contact delivery options via delivery partners.",
|
||||
},
|
||||
{
|
||||
question: "Is parking available?",
|
||||
answer: "Yes, ample parking space is available for all guests.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
22
src/pages/HomePage/sections/About.tsx
Normal file
22
src/pages/HomePage/sections/About.tsx
Normal 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 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="Our Legacy"
|
||||
descriptions={[
|
||||
"Sukhsagar Restaurant has relocated to Ahilyanagar to continue serving our long-standing family recipes. We focus on high-quality ingredients, clean spaces, and generous quantities.",
|
||||
"Our ambiance is carefully curated for families and social gatherings. Whether it is a quick lunch or a long dinner, we invite you to experience the harmony of tradition and modern comfort.",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
64
src/pages/HomePage/sections/Ambience.tsx
Normal file
64
src/pages/HomePage/sections/Ambience.tsx
Normal file
@@ -0,0 +1,64 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "ambience" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AmbienceSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="ambience" data-section="ambience">
|
||||
<SectionErrorBoundary name="ambience">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Atmosphere"
|
||||
title="A Cozy Haven"
|
||||
description="Our interiors are designed for comfort and elegance. Perfect for family celebrations or quiet evening meals."
|
||||
items={[
|
||||
{
|
||||
title: "Main Dining Area",
|
||||
description: "Spacious seating with warm lighting and plush decor.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/group-friends-eating-restaurant_23-2148395390.jpg",
|
||||
},
|
||||
{
|
||||
title: "Family Booths",
|
||||
description: "Private, comfortable corners for intimate family dining.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/grey-painted-fancy-restaurant-with-empty-dinner-table_140725-8730.jpg",
|
||||
},
|
||||
{
|
||||
title: "Private Party Room",
|
||||
description: "Ideal for small celebrations and gatherings.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/dining-table-background-zoom-calls_23-2149684444.jpg",
|
||||
},
|
||||
{
|
||||
title: "Ambient Decor",
|
||||
description: "Subtle details reflecting modern restaurant design.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/restaurant-hall-with-turquoise-chairs-white-walls-french-windows-curtains_140725-8450.jpg",
|
||||
},
|
||||
{
|
||||
title: "Clean Washrooms",
|
||||
description: "Hygienic, well-maintained facilities for guests.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/white-chairs-tables-cafe_141793-2924.jpg",
|
||||
},
|
||||
{
|
||||
title: "Quick Service Spot",
|
||||
description: "Efficient counter service for walk-ins.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beverage-topped-with-fried-orange-slice_141793-1125.jpg",
|
||||
},
|
||||
{
|
||||
title: "Parking Area",
|
||||
description: "Ample space provided for all guests.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happy-family-enjoying-time-together_23-2149283540.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</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 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="Frequently Asked"
|
||||
description="Have questions about our restaurant? Here are the most common ones."
|
||||
items={[
|
||||
{
|
||||
question: "Is the restaurant purely vegetarian?",
|
||||
answer: "Yes, we are 100% pure-veg restaurant.",
|
||||
},
|
||||
{
|
||||
question: "Are you open on weekends?",
|
||||
answer: "Yes, we are open every day from 11:00 AM to 11:00 PM.",
|
||||
},
|
||||
{
|
||||
question: "Do you offer home delivery?",
|
||||
answer: "Yes, we offer no-contact delivery options via delivery partners.",
|
||||
},
|
||||
{
|
||||
question: "Is parking available?",
|
||||
answer: "Yes, ample parking space is available for all guests.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
36
src/pages/HomePage/sections/Hero.tsx
Normal file
36
src/pages/HomePage/sections/Hero.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 "hero" section.
|
||||
|
||||
import React from 'react';
|
||||
import HeroSplitMediaGrid from '@/components/sections/hero/HeroSplitMediaGrid';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroSplitMediaGrid
|
||||
tag="Since 1980s"
|
||||
title="Fresh Flavors. Elegant Spaces. Memorable Moments."
|
||||
description="Experience the finest pure-vegetarian cuisine in Ahilyanagar. Perfectly curated for families and food enthusiasts who appreciate quality, ambiance, and authentic taste."
|
||||
primaryButton={{
|
||||
text: "Explore Menu",
|
||||
href: "#menu",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Find Us on Map",
|
||||
href: "https://maps.google.com",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/delicious-pakistan-meal-with-copy-space_23-2148821543.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-woman-with-delicious-food_23-2149461770.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
52
src/pages/HomePage/sections/Menu.tsx
Normal file
52
src/pages/HomePage/sections/Menu.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 "menu" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function MenuSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="menu" data-section="menu">
|
||||
<SectionErrorBoundary name="menu">
|
||||
<FeaturesTaggedCards
|
||||
tag="Digital Menu Preview"
|
||||
title="Signature Flavors"
|
||||
description="Hand-picked vegetarian classics from our kitchen, prepared with premium ingredients and time-honored techniques."
|
||||
items={[
|
||||
{
|
||||
tag: "Street Food",
|
||||
title: "Special Pav Bhaji",
|
||||
description: "Classic Mumbai-style bhaji with buttery, toasted pav buns.",
|
||||
primaryButton: {
|
||||
text: "View Full Menu",
|
||||
href: "#",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pav-bhaji-being-garnished-with-fresh-herbs_23-2151996252.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Mains",
|
||||
title: "Veg Biryani",
|
||||
description: "Fragrant basmati rice cooked with seasonal vegetables and spices.",
|
||||
primaryButton: {
|
||||
text: "View Full Menu",
|
||||
href: "#",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-from-afar-cake-sweets-cake-with-slices-lime-chocolate-white-bowls-chocolate-limes-yellow-candies-chocolate-cream-table_140725-111329.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Starters",
|
||||
title: "Manchurian Dry",
|
||||
description: "Crispy vegetable balls tossed in savory soy-garlic sauce.",
|
||||
primaryButton: {
|
||||
text: "View Full Menu",
|
||||
href: "#",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/restaurant-hall-with-blue-chairs-decors-wall_140725-8028.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
113
src/pages/HomePage/sections/Reservations.tsx
Normal file
113
src/pages/HomePage/sections/Reservations.tsx
Normal file
@@ -0,0 +1,113 @@
|
||||
import Button from "@/components/ui/Button";
|
||||
import Input from "@/components/ui/Input";
|
||||
import Textarea from "@/components/ui/Textarea";
|
||||
import Label from "@/components/ui/Label";
|
||||
import TextAnimation from "@/components/ui/TextAnimation";
|
||||
import ScrollReveal from "@/components/ui/ScrollReveal";
|
||||
import Tag from "@/components/ui/Tag";
|
||||
import ImageOrVideo from "@/components/ui/ImageOrVideo";
|
||||
import { Phone, MapPin } from "lucide-react";
|
||||
|
||||
export default function ReservationsSection() {
|
||||
return (
|
||||
<section data-webild-section="reservations" id="reservations" className="relative w-full py-24 bg-background">
|
||||
<div className="w-content-width mx-auto px-6">
|
||||
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 lg:gap-24 items-center">
|
||||
|
||||
<ScrollReveal variant="slide-up" className="flex flex-col gap-8">
|
||||
<div>
|
||||
<Tag text="Reservations" className="mb-4" />
|
||||
<TextAnimation
|
||||
text="Book Your Table"
|
||||
variant="slide-up"
|
||||
tag="h2"
|
||||
className="text-4xl md:text-5xl font-bold text-foreground mb-4 font-serif"
|
||||
gradientText={false}
|
||||
/>
|
||||
<p className="text-lg text-muted-foreground">
|
||||
Reserve your table in advance and skip the wait. We look forward to hosting your family and friends for a memorable dining experience.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="card p-8 rounded-2xl bg-card border border-border shadow-sm">
|
||||
<form className="flex flex-col gap-6" onSubmit={(e) => e.preventDefault()}>
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||
<div className="flex flex-col gap-2">
|
||||
<Label htmlFor="name">Full Name</Label>
|
||||
<Input id="name" type="text" placeholder="John Doe" required />
|
||||
</div>
|
||||
<div className="flex flex-col gap-2">
|
||||
<Label htmlFor="phone">Phone Number</Label>
|
||||
<Input id="phone" type="tel" placeholder="+91 98765 43210" required />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
|
||||
<div className="flex flex-col gap-2">
|
||||
<Label htmlFor="date">Date</Label>
|
||||
<div className="relative">
|
||||
<Input id="date" type="date" required className="w-full" />
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-col gap-2">
|
||||
<Label htmlFor="time">Time</Label>
|
||||
<div className="relative">
|
||||
<Input id="time" type="time" required className="w-full" />
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-col gap-2">
|
||||
<Label htmlFor="guests">Guests</Label>
|
||||
<div className="relative">
|
||||
<Input id="guests" type="number" min="1" max="20" placeholder="2" required className="w-full" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="flex flex-col gap-2">
|
||||
<Label htmlFor="requests">Special Requests</Label>
|
||||
<Textarea id="requests" placeholder="Any dietary requirements or special occasions?" rows={3} />
|
||||
</div>
|
||||
|
||||
<Button text="Request Reservation" variant="primary" className="w-full mt-2" />
|
||||
</form>
|
||||
</div>
|
||||
</ScrollReveal>
|
||||
|
||||
<ScrollReveal variant="fade-blur" delay={0.2} className="h-full flex flex-col gap-8">
|
||||
<div className="relative h-[400px] w-full rounded-2xl overflow-hidden">
|
||||
<ImageOrVideo
|
||||
imageSrc="https://images.unsplash.com/photo-1555396273-367ea4eb4db5?q=80&w=1974&auto=format&fit=crop"
|
||||
className="w-full h-full object-cover"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-1 sm:grid-cols-2 gap-6">
|
||||
<div className="flex items-start gap-4">
|
||||
<div className="w-12 h-12 rounded-full bg-primary-cta/10 flex items-center justify-center shrink-0">
|
||||
<Phone className="w-6 h-6 text-primary-cta" />
|
||||
</div>
|
||||
<div>
|
||||
<h4 className="font-semibold text-foreground mb-1">Call Us Directly</h4>
|
||||
<p className="text-muted-foreground text-sm">095617 45045</p>
|
||||
<p className="text-muted-foreground text-sm">For large groups & events</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="flex items-start gap-4">
|
||||
<div className="w-12 h-12 rounded-full bg-primary-cta/10 flex items-center justify-center shrink-0">
|
||||
<MapPin className="w-6 h-6 text-primary-cta" />
|
||||
</div>
|
||||
<div>
|
||||
<h4 className="font-semibold text-foreground mb-1">Location</h4>
|
||||
<p className="text-muted-foreground text-sm">Near Sitaban Lawn, Poonam Moti Nagar</p>
|
||||
<p className="text-muted-foreground text-sm">Ahilyanagar, Maharashtra</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ScrollReveal>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Testimonials.tsx
Normal file
57
src/pages/HomePage/sections/Testimonials.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 "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="Love from Guests"
|
||||
title="What People Say"
|
||||
description="Join our community of happy diners in Ahilyanagar."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Pawan Mundada",
|
||||
role: "Local Guide",
|
||||
company: "Ahilyanagar",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-man-smiling-restaurant_23-2150771033.jpg",
|
||||
},
|
||||
{
|
||||
name: "Swagat Patil",
|
||||
role: "Local Guide",
|
||||
company: "Ahilyanagar",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-man-holding-burger_23-2148705543.jpg",
|
||||
},
|
||||
{
|
||||
name: "Hari Om",
|
||||
role: "Local Guide",
|
||||
company: "Ahilyanagar",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-waitress-holding-plate-with-muffin_107420-12322.jpg",
|
||||
},
|
||||
{
|
||||
name: "Priya Kulkarni",
|
||||
role: "Foodie",
|
||||
company: "Ahilyanagar",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-happy-woman-tasting-pastry-cafe_1262-5335.jpg",
|
||||
},
|
||||
{
|
||||
name: "Rahul Deshmukh",
|
||||
role: "Diner",
|
||||
company: "Ahilyanagar",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-happy-business-woman-posing-her-own-coffee-shop_1163-1790.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user