3 Commits

Author SHA1 Message Date
6c65d65ad9 Merge version_6 into main
Merge version_6 into main
2025-12-27 11:28:16 +00:00
dd179ae25e Merge version_6 into main
Merge version_6 into main
2025-12-27 11:26:18 +00:00
dbe91ab8b9 Merge version_4 into main
Merge version_4 into main
2025-12-26 16:14:02 +00:00

View File

@@ -1,11 +1,16 @@
"use client"; "use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import { useState } from "react"; import NavbarStyleMinimal from '@/components/navbar/NavbarStyleMinimal';
import HeroLogoBillboardSplitImage from '@/components/sections/hero/HeroLogoBillboardSplitImage';
import MediaAbout from '@/components/sections/about/MediaAbout';
import FeatureCardFourteen from '@/components/sections/feature/FeatureCardFourteen';
import TestimonialCardThirteen from '@/components/sections/testimonial/TestimonialCardThirteen';
import ContactFaq from '@/components/sections/contact/ContactFaq';
import FooterSocial from '@/components/sections/footer/FooterSocial';
import { Heart, Calendar, Instagram, Facebook, Linkedin } from 'lucide-react';
export default function LandingPage() { export default function LandingPage() {
const [isMenuOpen, setIsMenuOpen] = useState(false);
return ( return (
<ThemeProvider <ThemeProvider
defaultButtonVariant="hover-magnetic" defaultButtonVariant="hover-magnetic"
@@ -19,310 +24,228 @@ export default function LandingPage() {
secondaryButtonStyle="glass" secondaryButtonStyle="glass"
headingFontWeight="medium" headingFontWeight="medium"
> >
{/* Navigation */} <div id="nav" data-section="nav">
<nav className="fixed top-0 left-0 w-full bg-white/90 backdrop-blur-sm z-50 border-b border-gray-200"> <NavbarStyleMinimal
<div className="max-w-6xl mx-auto px-6 py-4"> brandName="Viva"
<div className="flex items-center justify-between"> button={{ text: "Reserve Now", href: "contact" }}
<h1 className="text-2xl font-bold text-gray-900">Viva</h1> />
<div className="hidden md:flex items-center space-x-8"> </div>
<a href="#hero" className="text-gray-700 hover:text-gray-900 transition-colors">Home</a>
<a href="#about" className="text-gray-700 hover:text-gray-900 transition-colors">About</a>
<a href="#menu" className="text-gray-700 hover:text-gray-900 transition-colors">Menu</a>
<a href="#testimonials" className="text-gray-700 hover:text-gray-900 transition-colors">Reviews</a>
<a href="#contact" className="text-gray-700 hover:text-gray-900 transition-colors">Contact</a>
<button className="bg-blue-600 text-white px-6 py-2 rounded-lg hover:bg-blue-700 transition-colors">
Reserve Now
</button>
</div>
<button
className="md:hidden"
onClick={() => setIsMenuOpen(!isMenuOpen)}
>
<div className="w-6 h-6 flex flex-col justify-center space-y-1">
<div className="w-full h-0.5 bg-gray-700"></div>
<div className="w-full h-0.5 bg-gray-700"></div>
<div className="w-full h-0.5 bg-gray-700"></div>
</div>
</button>
</div>
{isMenuOpen && (
<div className="md:hidden mt-4 pb-4 border-t border-gray-200 pt-4">
<div className="flex flex-col space-y-2">
<a href="#hero" className="text-gray-700 hover:text-gray-900 transition-colors py-2">Home</a>
<a href="#about" className="text-gray-700 hover:text-gray-900 transition-colors py-2">About</a>
<a href="#menu" className="text-gray-700 hover:text-gray-900 transition-colors py-2">Menu</a>
<a href="#testimonials" className="text-gray-700 hover:text-gray-900 transition-colors py-2">Reviews</a>
<a href="#contact" className="text-gray-700 hover:text-gray-900 transition-colors py-2">Contact</a>
<button className="bg-blue-600 text-white px-6 py-2 rounded-lg hover:bg-blue-700 transition-colors mt-2 w-full">
Reserve Now
</button>
</div>
</div>
)}
</div>
</nav>
{/* Hero Section */} <div id="hero" data-section="hero">
<section id="hero" className="pt-20 min-h-screen flex items-center bg-gradient-to-br from-gray-50 to-blue-50"> <HeroLogoBillboardSplitImage
<div className="max-w-6xl mx-auto px-6 grid md:grid-cols-2 gap-12 items-center"> logoText="VIVA"
<div> description="Experience culinary excellence in an elegant atmosphere. Discover authentic flavors and impeccable service."
<h1 className="text-5xl md:text-6xl font-bold text-gray-900 mb-6">VIVA</h1> buttons={[
<p className="text-xl text-gray-600 mb-8 leading-relaxed"> { text: "Reserve Table", href: "contact" },
Experience culinary excellence in an elegant atmosphere. Discover authentic flavors and impeccable service. { text: "Explore Menu", href: "menu" }
</p> ]}
<div className="flex flex-col sm:flex-row gap-4"> layoutOrder="default"
<button className="bg-blue-600 text-white px-8 py-3 rounded-lg hover:bg-blue-700 transition-colors"> splitImageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766416778445-zl3jwowr.jpg"
Reserve Table splitImageAlt="Restaurant Interior"
</button> imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766762603989-3tcb4zsk.jpg"
<button className="border border-gray-300 text-gray-700 px-8 py-3 rounded-lg hover:border-gray-400 transition-colors"> imageAlt="Fine Dining Experience"
Explore Menu frameStyle="card"
</button> />
</div> </div>
</div>
<div className="relative">
<img
src="https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766416778445-zl3jwowr.jpg"
alt="Restaurant Interior"
className="w-full h-96 object-cover rounded-2xl shadow-2xl"
/>
</div>
</div>
</section>
{/* About Section */} <div id="about" data-section="about">
<section id="about" className="py-20 bg-white"> <MediaAbout
<div className="max-w-6xl mx-auto px-6 grid md:grid-cols-2 gap-12 items-center"> title="Our Story"
<div className="relative"> description="Founded with a passion for culinary innovation, Viva brings together world-class cuisine, impeccable service, and an unforgettable dining experience. Every dish is crafted with precision and love."
<img tag="About Us"
src="https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766764501852-mmy7v2k1.jpg" tagIcon={Heart}
alt="Restaurant ambiance" imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766764501852-mmy7v2k1.jpg"
className="w-full h-96 object-cover rounded-2xl shadow-xl" imageAlt="Restaurant ambiance"
/> buttons={[{ text: "Join us", href: "#" }]}
</div> useInvertedBackground="noInvert"
<div> />
<div className="flex items-center gap-2 mb-4"> </div>
<span className="text-red-500"></span>
<span className="text-sm font-medium text-gray-500 uppercase tracking-wide">About Us</span>
</div>
<h2 className="text-4xl font-bold text-gray-900 mb-6">Our Story</h2>
<p className="text-lg text-gray-600 mb-8 leading-relaxed">
Founded with a passion for culinary innovation, Viva brings together world-class cuisine, impeccable service, and an unforgettable dining experience. Every dish is crafted with precision and love.
</p>
<button className="bg-blue-600 text-white px-8 py-3 rounded-lg hover:bg-blue-700 transition-colors">
Join us
</button>
</div>
</div>
</section>
{/* Menu Section */} <div id="menu" data-section="menu">
<section id="menu" className="py-20 bg-gray-50"> <FeatureCardFourteen
<div className="max-w-6xl mx-auto px-6"> title="Signature Specialties"
<div className="text-center mb-16"> description="Indulge in our carefully curated selection of dishes that define Viva's culinary identity"
<span className="text-sm font-medium text-gray-500 uppercase tracking-wide">Menu</span> textboxLayout="default"
<h2 className="text-4xl font-bold text-gray-900 mt-2 mb-4">Signature Specialties</h2> useInvertedBackground="noInvert"
<p className="text-xl text-gray-600 max-w-2xl mx-auto"> tag="Menu"
Indulge in our carefully curated selection of dishes that define Viva's culinary identity features={[
</p> {
</div> id: "1",
<div className="grid md:grid-cols-2 lg:grid-cols-4 gap-8"> title: "Handmade Pasta",
<div className="bg-white rounded-2xl overflow-hidden shadow-lg hover:shadow-xl transition-shadow"> description: "Traditional Italian pasta prepared fresh daily with premium ingredients. 5 stars",
<img imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766760339172-wtq2r8qq.jpg",
src="https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766760339172-wtq2r8qq.jpg" imageAlt: "Signature Pasta Dish"
alt="Signature Pasta Dish" },
className="w-full h-48 object-cover" {
/> id: "2",
<div className="p-6"> title: "Fresh Seafood",
<h3 className="text-xl font-semibold text-gray-900 mb-2">Handmade Pasta</h3> description: "Ocean-to-table selections featuring the finest catch of the day. 5 stars",
<p className="text-gray-600">Traditional Italian pasta prepared fresh daily with premium ingredients. 5 stars</p> imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766760341776-od1mgbjg.jpg",
</div> imageAlt: "Seafood Specialty"
</div> },
<div className="bg-white rounded-2xl overflow-hidden shadow-lg hover:shadow-xl transition-shadow"> {
<img id: "3",
src="https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766760341776-od1mgbjg.jpg" title: "Decadent Desserts",
alt="Seafood Specialty" description: "Artisanal sweet creations that end your meal on a perfect note. 5 stars",
className="w-full h-48 object-cover" imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766760342753-3muw0pvy.jpg",
/> imageAlt: "Premium Dessert"
<div className="p-6"> },
<h3 className="text-xl font-semibold text-gray-900 mb-2">Fresh Seafood</h3> {
<p className="text-gray-600">Ocean-to-table selections featuring the finest catch of the day. 5 stars</p> id: "4",
</div> title: "Premium Steaks",
</div> description: "Expertly aged cuts grilled to perfection with signature preparations. 5 stars",
<div className="bg-white rounded-2xl overflow-hidden shadow-lg hover:shadow-xl transition-shadow"> imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766416782593-h8zdw91t.jpg",
<img imageAlt: "Prime Steak Selection"
src="https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766760342753-3muw0pvy.jpg" }
alt="Premium Dessert" ]}
className="w-full h-48 object-cover" />
/> </div>
<div className="p-6">
<h3 className="text-xl font-semibold text-gray-900 mb-2">Decadent Desserts</h3>
<p className="text-gray-600">Artisanal sweet creations that end your meal on a perfect note. 5 stars</p>
</div>
</div>
<div className="bg-white rounded-2xl overflow-hidden shadow-lg hover:shadow-xl transition-shadow">
<img
src="https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766416782593-h8zdw91t.jpg"
alt="Prime Steak Selection"
className="w-full h-48 object-cover"
/>
<div className="p-6">
<h3 className="text-xl font-semibold text-gray-900 mb-2">Premium Steaks</h3>
<p className="text-gray-600">Expertly aged cuts grilled to perfection with signature preparations. 5 stars</p>
</div>
</div>
</div>
</div>
</section>
{/* Testimonials Section */} <div id="testimonials" data-section="testimonials">
<section id="testimonials" className="py-20 bg-white"> <TestimonialCardThirteen
<div className="max-w-6xl mx-auto px-6"> testimonials={[
<div className="text-center mb-16"> {
<h2 className="text-4xl font-bold text-gray-900 mb-4">What Our Guests Say</h2> id: "1",
<p className="text-xl text-gray-600 max-w-2xl mx-auto"> name: "Margaret Chen",
Hear from those who have experienced Viva's culinary excellence handle: "@margaretchen",
</p> testimonial: "Viva has become our favorite restaurant. The food is exceptional, the service is impeccable, and the atmosphere is simply perfect. We celebrate every special occasion here.",
</div> rating: 5,
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-8"> starColor: "#ffff00",
<div className="bg-gray-50 rounded-2xl p-6"> imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766414401529-6db20epg.jpg",
<div className="flex items-center gap-3 mb-4"> imageAlt: "Margaret Chen"
<img },
src="https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766414401529-6db20epg.jpg" {
alt="Margaret Chen" id: "2",
className="w-12 h-12 rounded-full object-cover" name: "James Wilson",
/> handle: "@jameswilson",
<div> testimonial: "Outstanding culinary experience. The chef's attention to detail is remarkable, and every course was a masterpiece.",
<h4 className="font-semibold text-gray-900">Margaret Chen</h4> rating: 5,
<p className="text-sm text-gray-500">@margaretchen</p> starColor: "#ffff00",
</div> imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766492697041-9adqfrju.jpg",
</div> imageAlt: "James Wilson"
<div className="flex mb-3"> },
<span className="text-yellow-400"></span> {
</div> id: "3",
<p className="text-gray-600"> name: "Sofia Rodriguez",
Viva has become our favorite restaurant. The food is exceptional, the service is impeccable, and the atmosphere is simply perfect. We celebrate every special occasion here. handle: "@sofiar",
</p> testimonial: "The finest dining experience in the city. Worth every penny for the quality and sophistication.",
</div> rating: 5,
<div className="bg-gray-50 rounded-2xl p-6"> starColor: "#ffff00",
<div className="flex items-center gap-3 mb-4"> imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766502911819-f5rnce5q.jpg",
<img imageAlt: "Sofia Rodriguez"
src="https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766492697041-9adqfrju.jpg" },
alt="James Wilson" {
className="w-12 h-12 rounded-full object-cover" id: "4",
/> name: "David Kim",
<div> handle: "@davidkim",
<h4 className="font-semibold text-gray-900">James Wilson</h4> testimonial: "Brought my family for a special celebration and they loved every moment. Highly recommended for special occasions.",
<p className="text-sm text-gray-500">@jameswilson</p> rating: 5,
</div> starColor: "#ffff00",
</div> imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766502912600-84fr3x4z.jpg",
<div className="flex mb-3"> imageAlt: "David Kim"
<span className="text-yellow-400"></span> },
</div> {
<p className="text-gray-600"> id: "5",
Outstanding culinary experience. The chef's attention to detail is remarkable, and every course was a masterpiece. name: "Emma Thompson",
</p> handle: "@emmathompson",
</div> testimonial: "A culinary journey I'll never forget. The wine pairing was expertly curated and enhanced every dish.",
<div className="bg-gray-50 rounded-2xl p-6"> rating: 5,
<div className="flex items-center gap-3 mb-4"> starColor: "#ffff00",
<img imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766502913367-8j5yog7q.jpg",
src="https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766502911819-f5rnce5q.jpg" imageAlt: "Emma Thompson"
alt="Sofia Rodriguez" },
className="w-12 h-12 rounded-full object-cover" {
/> id: "6",
<div> name: "Michael Santos",
<h4 className="font-semibold text-gray-900">Sofia Rodriguez</h4> handle: "@michaelsantos",
<p className="text-sm text-gray-500">@sofiar</p> testimonial: "Professional service, exquisite food, elegant ambiance. Viva sets the standard for fine dining.",
</div> rating: 5,
</div> starColor: "#ffff00",
<div className="flex mb-3"> imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766502914201-sdgv9pae.jpg",
<span className="text-yellow-400"></span> imageAlt: "Michael Santos"
</div> }
<p className="text-gray-600"> ]}
The finest dining experience in the city. Worth every penny for the quality and sophistication. showRating={true}
</p> title="What Our Guests Say"
</div> description="Hear from those who have experienced Viva's culinary excellence"
</div> textboxLayout="default"
</div> animationType="opacity"
</section> useInvertedBackground="invertCard"
/>
</div>
{/* Contact Section */} <div id="contact" data-section="contact">
<section id="contact" className="py-20 bg-gray-50"> <ContactFaq
<div className="max-w-6xl mx-auto px-6"> faqs={[
<div className="grid lg:grid-cols-2 gap-16"> {
<div> id: "1",
<h2 className="text-4xl font-bold text-gray-900 mb-8">Frequently Asked Questions</h2> title: "How far in advance should I make a reservation?",
<div className="space-y-6"> content: "We recommend reservations at least 2-3 weeks in advance for optimal table selection. However, we do accommodate walk-ins based on availability."
<div className="bg-white rounded-xl p-6 shadow-sm"> },
<h3 className="font-semibold text-gray-900 mb-2">How far in advance should I make a reservation?</h3> {
<p className="text-gray-600">We recommend reservations at least 2-3 weeks in advance for optimal table selection. However, we do accommodate walk-ins based on availability.</p> id: "2",
</div> title: "Do you offer private dining options?",
<div className="bg-white rounded-xl p-6 shadow-sm"> content: "Yes, we offer exclusive private dining experiences for special occasions. Please contact us directly to discuss your event requirements."
<h3 className="font-semibold text-gray-900 mb-2">Do you offer private dining options?</h3> },
<p className="text-gray-600">Yes, we offer exclusive private dining experiences for special occasions. Please contact us directly to discuss your event requirements.</p> {
</div> id: "3",
<div className="bg-white rounded-xl p-6 shadow-sm"> title: "What is your dress code?",
<h3 className="font-semibold text-gray-900 mb-2">What is your dress code?</h3> content: "Smart casual is recommended. Jackets are appreciated but not required. We want our guests to feel comfortable while maintaining our refined atmosphere."
<p className="text-gray-600">Smart casual is recommended. Jackets are appreciated but not required. We want our guests to feel comfortable while maintaining our refined atmosphere.</p> },
</div> {
</div> id: "4",
</div> title: "Do you accommodate dietary restrictions?",
<div className="bg-white rounded-2xl p-8 shadow-lg"> content: "Absolutely. Please inform us of any dietary requirements when booking, and our chef will create a custom menu to suit your needs."
<div className="flex items-center gap-3 mb-6"> },
<span className="text-blue-600">📅</span> {
<h3 className="text-2xl font-bold text-gray-900">Reserve Your Table</h3> id: "5",
</div> title: "Can I bring my own wine?",
<p className="text-gray-600 mb-6"> content: "We have a curated wine selection. Outside wine is not permitted, but our sommelier can recommend excellent pairings from our collection."
Book your next culinary experience at Viva. Experience excellence with every bite. },
</p> {
<button className="w-full bg-blue-600 text-white px-8 py-3 rounded-lg hover:bg-blue-700 transition-colors"> id: "6",
Book Now title: "What is your cancellation policy?",
</button> content: "Reservations cancelled within 48 hours may incur a charge. We appreciate advance notice for any changes to your reservation."
</div> }
</div> ]}
</div> ctaTitle="Reserve Your Table"
</section> ctaDescription="Book your next culinary experience at Viva. Experience excellence with every bite."
ctaButton={{ text: "Book Now", href: "#" }}
ctaIcon={Calendar}
useInvertedBackground="noInvert"
animationType="slide-up"
/>
</div>
{/* Footer */} <div id="footer" data-section="footer">
<footer id="footer" className="py-16 bg-gray-900 text-white"> <FooterSocial
<div className="max-w-6xl mx-auto px-6"> logoText="Viva"
<div className="grid md:grid-cols-4 gap-8"> copyrightText="© 2025 Viva Restaurant. All rights reserved."
<div> columns={[
<h3 className="text-2xl font-bold mb-4">Viva</h3> {
<p className="text-gray-400">© 2025 Viva Restaurant. All rights reserved.</p> title: "Restaurant",
</div> items: [
<div> { label: "About Us", href: "#about" },
<h4 className="font-semibold mb-4">Restaurant</h4> { label: "Menu", href: "#menu" },
<div className="space-y-2"> { label: "Reservations", href: "#contact" }
<a href="#about" className="block text-gray-400 hover:text-white transition-colors">About Us</a> ]
<a href="#menu" className="block text-gray-400 hover:text-white transition-colors">Menu</a> },
<a href="#contact" className="block text-gray-400 hover:text-white transition-colors">Reservations</a> {
</div> title: "Visit",
</div> items: [
<div> { label: "Hours", href: "#" },
<h4 className="font-semibold mb-4">Visit</h4> { label: "Location", href: "#" },
<div className="space-y-2"> { label: "Private Dining", href: "#" }
<a href="#" className="block text-gray-400 hover:text-white transition-colors">Hours</a> ]
<a href="#" className="block text-gray-400 hover:text-white transition-colors">Location</a> }
<a href="#" className="block text-gray-400 hover:text-white transition-colors">Private Dining</a> ]}
</div> socialLinks={[
</div> { icon: Instagram, href: "https://instagram.com", ariaLabel: "Instagram" },
<div> { icon: Facebook, href: "https://facebook.com", ariaLabel: "Facebook" },
<h4 className="font-semibold mb-4">Connect</h4> { icon: Linkedin, href: "https://linkedin.com", ariaLabel: "LinkedIn" }
<div className="flex space-x-4"> ]}
<a href="https://instagram.com" className="text-gray-400 hover:text-white transition-colors" aria-label="Instagram"> />
📷 </div>
</a>
<a href="https://facebook.com" className="text-gray-400 hover:text-white transition-colors" aria-label="Facebook">
📘
</a>
<a href="https://linkedin.com" className="text-gray-400 hover:text-white transition-colors" aria-label="LinkedIn">
💼
</a>
</div>
</div>
</div>
</div>
</footer>
</ThemeProvider> </ThemeProvider>
); );
} }