Compare commits
21 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3ff2f132a0 | |||
| 50c30ef09d | |||
| 368eb604c5 | |||
| 21b4a13e6a | |||
| 05dc897ee8 | |||
| e0c18d712a | |||
| 140d009bb0 | |||
| 7ba2b219e9 | |||
| 5b54d76758 | |||
| b2caa555b2 | |||
| 65baa58b9f | |||
| 3ba592a9cb | |||
| 99b19224da | |||
| 7acc2126ae | |||
| 7c806918ec | |||
| 2908086b11 | |||
| 0f2a2f7fc9 | |||
| 9fe8e0e61b | |||
| 5b8df30190 | |||
| e882bdc3da | |||
| e3e48eb575 |
174
src/app/chefs-story/page.tsx
Normal file
174
src/app/chefs-story/page.tsx
Normal file
@@ -0,0 +1,174 @@
|
||||
"use client"
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||
import HeroSplitDualMedia from '@/components/sections/hero/HeroSplitDualMedia';
|
||||
import MetricSplitMediaAbout from '@/components/sections/about/MetricSplitMediaAbout';
|
||||
import FeatureBento from '@/components/sections/feature/FeatureBento';
|
||||
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
|
||||
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
|
||||
import { Award, Flame, Leaf, Star, UtensilsCrossed, Clock } from 'lucide-react';
|
||||
|
||||
export default function ChefsStoryPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="directional-hover"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="pill"
|
||||
contentWidth="compact"
|
||||
sizing="mediumSizeLargeTitles"
|
||||
background="circleGradient"
|
||||
cardStyle="gradient-mesh"
|
||||
primaryButtonStyle="flat"
|
||||
secondaryButtonStyle="radial-glow"
|
||||
headingFontWeight="extrabold"
|
||||
>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Artisan Table"
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Chef's Story", id: "/chefs-story" },
|
||||
{ name: "Contact", id: "/contact" }
|
||||
]}
|
||||
button={{ text: "Reserve Table", href: "#contact" }}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="hero" data-section="hero">
|
||||
<HeroSplitDualMedia
|
||||
title="Meet Chef Julian"
|
||||
description="With over 20 years of culinary expertise, Chef Julian transforms seasonal ingredients into extraordinary dining experiences. His passion for precision and innovation defines every dish that leaves our kitchen."
|
||||
tag="Culinary Visionary"
|
||||
tagIcon={UtensilsCrossed}
|
||||
tagAnimation="slide-up"
|
||||
background={{ variant: "plain" }}
|
||||
buttons={[
|
||||
{ text: "Reserve Now", href: "#contact" }
|
||||
]}
|
||||
buttonAnimation="slide-up"
|
||||
mediaItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/professional-chef-preparing-food-kitchen_23-2149727971.jpg?_wi=1", imageAlt: "Chef Julian in the kitchen"
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/female-chef-kitchen-preparing-plate-steak_23-2149720769.jpg?_wi=1", imageAlt: "Chef plating a signature dish"
|
||||
}
|
||||
]}
|
||||
mediaAnimation="slide-up"
|
||||
rating={5}
|
||||
ratingText="Michelin-Starred Chef | 450+ Reviews"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<MetricSplitMediaAbout
|
||||
title="Chef's Journey"
|
||||
description="Chef Julian's culinary journey began in the heart of Paris, where he trained under Michelin-starred mentors. His commitment to sourcing the finest local ingredients and mastering classical techniques while embracing modern innovation has established him as a leading figure in contemporary cuisine. From humble beginnings to international acclaim, his story is one of dedication, passion, and an unwavering commitment to excellence."
|
||||
tag="Est. 2015"
|
||||
tagIcon={Award}
|
||||
tagAnimation="slide-up"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/professional-chef-preparing-food-kitchen_23-2149727971.jpg?_wi=2"
|
||||
imageAlt="Chef Julian creating culinary masterpieces"
|
||||
mediaAnimation="slide-up"
|
||||
metrics={[
|
||||
{ value: "20+", title: "Years Experience" },
|
||||
{ value: "1", title: "Michelin Star" },
|
||||
{ value: "15", title: "Awards Won" },
|
||||
{ value: "100+", title: "Signature Dishes" }
|
||||
]}
|
||||
metricsAnimation="slide-up"
|
||||
useInvertedBackground={false}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<FeatureBento
|
||||
title="Culinary Philosophy"
|
||||
description="Chef Julian's approach to cooking is rooted in respect for ingredients, precision in technique, and a passion for creating unforgettable moments at the table."
|
||||
tag="The Chef's Craft"
|
||||
tagIcon={Star}
|
||||
tagAnimation="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={true}
|
||||
animationType="blur-reveal"
|
||||
features={[
|
||||
{
|
||||
title: "Seasonal Sourcing", description: "Working exclusively with local farmers and sustainable suppliers to ensure peak freshness and quality", bentoComponent: "icon-info-cards", items: [
|
||||
{ icon: Leaf, label: "Local", value: "100% Regional" },
|
||||
{ icon: Star, label: "Quality", value: "Premium Grade" },
|
||||
{ icon: Award, label: "Certified", value: "Sustainable" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Technique Mastery", description: "Classical French methods combined with contemporary innovation to deliver dishes that surprise and delight", bentoComponent: "icon-info-cards", items: [
|
||||
{ icon: Flame, label: "Precision", value: "Exact Timing" },
|
||||
{ icon: Clock, label: "Process", value: "Meticulous" },
|
||||
{ icon: UtensilsCrossed, label: "Creativity", value: "Boundless" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Guest Experience", description: "Every reservation is an opportunity to create lasting memories through exceptional cuisine and warm hospitality", bentoComponent: "reveal-icon", icon: Star
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<ContactSplitForm
|
||||
title="Experience Chef Julian's Cuisine"
|
||||
description="Book your table today and discover why guests return again and again. Each reservation is treated as a special occasion."
|
||||
useInvertedBackground={false}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/burning-candle-table_140725-8115.jpg?_wi=2"
|
||||
imageAlt="Intimate restaurant dining"
|
||||
mediaAnimation="slide-up"
|
||||
mediaPosition="left"
|
||||
inputs={[
|
||||
{ name: "name", type: "text", placeholder: "Your Full Name", required: true },
|
||||
{ name: "email", type: "email", placeholder: "your@email.com", required: true },
|
||||
{ name: "phone", type: "tel", placeholder: "(555) 123-4567", required: true },
|
||||
{ name: "date", type: "date", placeholder: "Preferred Date", required: true },
|
||||
{ name: "time", type: "time", placeholder: "Preferred Time", required: true },
|
||||
{ name: "guests", type: "number", placeholder: "Number of Guests", required: true }
|
||||
]}
|
||||
textarea={{
|
||||
name: "special_requests", placeholder: "Tell us about yourself and any special occasions...", rows: 4
|
||||
}}
|
||||
buttonText="Confirm Reservation"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterBaseReveal
|
||||
columns={[
|
||||
{
|
||||
title: "Restaurant", items: [
|
||||
{ label: "Chef's Story", href: "/chefs-story" },
|
||||
{ label: "Contact", href: "/contact" },
|
||||
{ label: "Home", href: "/" },
|
||||
{ label: "Reservations", href: "#contact" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Visit", items: [
|
||||
{ label: "Hours", href: "#" },
|
||||
{ label: "Reservations", href: "#contact" },
|
||||
{ label: "Private Events", href: "#" },
|
||||
{ label: "Gift Cards", href: "#" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Connect", items: [
|
||||
{ label: "Instagram", href: "https://instagram.com" },
|
||||
{ label: "Facebook", href: "https://facebook.com" },
|
||||
{ label: "Twitter", href: "https://twitter.com" },
|
||||
{ label: "Newsletter", href: "#" }
|
||||
]
|
||||
}
|
||||
]}
|
||||
copyrightText="© 2024 Artisan Table. All rights reserved."
|
||||
/>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
155
src/app/contact/page.tsx
Normal file
155
src/app/contact/page.tsx
Normal file
@@ -0,0 +1,155 @@
|
||||
"use client"
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||
import HeroSplitDualMedia from '@/components/sections/hero/HeroSplitDualMedia';
|
||||
import FeatureBento from '@/components/sections/feature/FeatureBento';
|
||||
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
|
||||
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
|
||||
import { MapPin, Phone, Mail, Clock, Navigation, UtensilsCrossed } from 'lucide-react';
|
||||
|
||||
export default function ContactPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="directional-hover"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="pill"
|
||||
contentWidth="compact"
|
||||
sizing="mediumSizeLargeTitles"
|
||||
background="circleGradient"
|
||||
cardStyle="gradient-mesh"
|
||||
primaryButtonStyle="flat"
|
||||
secondaryButtonStyle="radial-glow"
|
||||
headingFontWeight="extrabold"
|
||||
>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Artisan Table"
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Chef's Story", id: "/chefs-story" },
|
||||
{ name: "Contact", id: "/contact" }
|
||||
]}
|
||||
button={{ text: "Reserve Table", href: "#contact" }}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="hero" data-section="hero">
|
||||
<HeroSplitDualMedia
|
||||
title="Visit Artisan Table"
|
||||
description="Located in the heart of the city, our restaurant welcomes you to experience culinary excellence in an intimate, elegant setting. We're excited to serve you."
|
||||
tag="Get in Touch"
|
||||
tagIcon={UtensilsCrossed}
|
||||
tagAnimation="slide-up"
|
||||
background={{ variant: "plain" }}
|
||||
buttons={[
|
||||
{ text: "Reserve Now", href: "#contact" },
|
||||
{ text: "View Location", href: "#location" }
|
||||
]}
|
||||
buttonAnimation="slide-up"
|
||||
mediaItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/burning-candle-table_140725-8115.jpg?_wi=1", imageAlt: "Restaurant exterior entrance"
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/table-set-dinning-table_1339-3458.jpg?_wi=1", imageAlt: "Restaurant dining room"
|
||||
}
|
||||
]}
|
||||
mediaAnimation="slide-up"
|
||||
rating={5}
|
||||
ratingText="Award-Winning | Warm Welcome"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="location" data-section="location">
|
||||
<FeatureBento
|
||||
title="Location & Hours"
|
||||
description="Find us easily in the heart of the city. We're open for dinner service Tuesday through Sunday. Closed Mondays."
|
||||
tag="Visit Us"
|
||||
tagIcon={MapPin}
|
||||
tagAnimation="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={true}
|
||||
animationType="blur-reveal"
|
||||
features={[
|
||||
{
|
||||
title: "Address", description: "123 Culinary Lane, Downtown District, City ST 12345", bentoComponent: "icon-info-cards", items: [
|
||||
{ icon: MapPin, label: "Location", value: "Downtown" },
|
||||
{ icon: Navigation, label: "District", value: "Arts Quarter" },
|
||||
{ icon: Phone, label: "Phone", value: "(555) 123-4567" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Hours of Operation", description: "Dinner service with private event availability upon request", bentoComponent: "icon-info-cards", items: [
|
||||
{ icon: Clock, label: "Tuesday - Thursday", value: "5PM - 11PM" },
|
||||
{ icon: Clock, label: "Friday - Saturday", value: "5PM - 12AM" },
|
||||
{ icon: Clock, label: "Sunday", value: "5PM - 10PM" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Contact Information", description: "Reach out to us via phone or email for reservations and inquiries", bentoComponent: "icon-info-cards", items: [
|
||||
{ icon: Phone, label: "Reservations", value: "(555) 123-4567" },
|
||||
{ icon: Mail, label: "Email", value: "info@artisantable.com" },
|
||||
{ icon: Mail, label: "Events", value: "events@artisantable.com" }
|
||||
]
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<ContactSplitForm
|
||||
title="Get in Touch"
|
||||
description="Have questions or want to make a reservation? Send us a message and we'll get back to you shortly. For immediate assistance, please call us directly."
|
||||
useInvertedBackground={false}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/front-view-cook-preparing-meal-designing-meal-inside-plate-fry-meat-food-meal_140725-26012.jpg?_wi=2"
|
||||
imageAlt="Chef preparing contact invitation"
|
||||
mediaAnimation="slide-up"
|
||||
mediaPosition="left"
|
||||
inputs={[
|
||||
{ name: "name", type: "text", placeholder: "Your Full Name", required: true },
|
||||
{ name: "email", type: "email", placeholder: "your@email.com", required: true },
|
||||
{ name: "phone", type: "tel", placeholder: "(555) 123-4567", required: true },
|
||||
{ name: "subject", type: "text", placeholder: "Subject", required: true }
|
||||
]}
|
||||
textarea={{
|
||||
name: "message", placeholder: "Your message or reservation request...", rows: 5
|
||||
}}
|
||||
buttonText="Send Message"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterBaseReveal
|
||||
columns={[
|
||||
{
|
||||
title: "Restaurant", items: [
|
||||
{ label: "About", href: "/" },
|
||||
{ label: "Chef's Story", href: "/chefs-story" },
|
||||
{ label: "Contact", href: "/contact" },
|
||||
{ label: "Reservations", href: "#contact" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Visit", items: [
|
||||
{ label: "Hours", href: "#location" },
|
||||
{ label: "Location", href: "#location" },
|
||||
{ label: "Private Events", href: "#" },
|
||||
{ label: "Gift Cards", href: "#" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Connect", items: [
|
||||
{ label: "Instagram", href: "https://instagram.com" },
|
||||
{ label: "Facebook", href: "https://facebook.com" },
|
||||
{ label: "Twitter", href: "https://twitter.com" },
|
||||
{ label: "Newsletter", href: "#" }
|
||||
]
|
||||
}
|
||||
]}
|
||||
copyrightText="© 2024 Artisan Table. All rights reserved."
|
||||
/>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
123
src/app/gallery/page.tsx
Normal file
123
src/app/gallery/page.tsx
Normal file
@@ -0,0 +1,123 @@
|
||||
"use client"
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||
import FeatureBento from '@/components/sections/feature/FeatureBento';
|
||||
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
|
||||
import { Camera, Sparkles } from 'lucide-react';
|
||||
|
||||
export default function GalleryPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="directional-hover"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="pill"
|
||||
contentWidth="compact"
|
||||
sizing="mediumSizeLargeTitles"
|
||||
background="circleGradient"
|
||||
cardStyle="gradient-mesh"
|
||||
primaryButtonStyle="flat"
|
||||
secondaryButtonStyle="radial-glow"
|
||||
headingFontWeight="extrabold"
|
||||
>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Artisan Table"
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Reservations", id: "/reservations" },
|
||||
{ name: "Gallery", id: "/gallery" },
|
||||
{ name: "Contact", id: "#contact" }
|
||||
]}
|
||||
button={{ text: "Reserve Table", href: "/reservations" }}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="gallery" data-section="gallery">
|
||||
<FeatureBento
|
||||
title="Our Restaurant Gallery"
|
||||
description="Explore the elegance, ambiance, and culinary artistry that defines Artisan Table. From intimate dining settings to exquisite plated dishes, witness the essence of fine dining."
|
||||
tag="Visual Journey"
|
||||
tagIcon={Camera}
|
||||
tagAnimation="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={true}
|
||||
animationType="blur-reveal"
|
||||
features={[
|
||||
{
|
||||
title: "Dining Ambiance", description: "Experience our elegantly appointed dining room with soft candlelight and refined decor", bentoComponent: "media-stack", items: [
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/burning-candle-table_140725-8115.jpg?_wi=1", imageAlt: "Elegant candlelit dining table"
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/table-set-dinning-table_1339-3458.jpg", imageAlt: "Fine dining table setting with details"
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/couple-enjoying-food-restaurant_23-2149269174.jpg", imageAlt: "Guests enjoying intimate dinner"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Culinary Creations", description: "Discover our signature dishes meticulously plated and presented with artistic flair", bentoComponent: "media-stack", items: [
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/female-chef-kitchen-preparing-plate-steak_23-2149720769.jpg", imageAlt: "Chef plating a gourmet dish"
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-cook-preparing-meal-designing-meal-inside-plate-fry-meat-food-meal_140725-26012.jpg", imageAlt: "Professional plating of fine cuisine"
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pumpkin-soup-with-shrimp-glass-red-wine_140725-5413.jpg", imageAlt: "Gourmet soup with wine pairing"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Chef & Kitchen", description: "Meet our passionate culinary team crafting exceptional dishes with precision and care", bentoComponent: "media-stack", items: [
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/professional-chef-preparing-food-kitchen_23-2149727971.jpg?_wi=1", imageAlt: "Professional chef at work in kitchen"
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/professional-chef-preparing-food-kitchen_23-2149727971.jpg?_wi=2", imageAlt: "Chef preparing signature dishes"
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-cook-preparing-meal-designing-meal-inside-plate-fry-meat-food-meal_140725-26012.jpg", imageAlt: "Kitchen team in action"
|
||||
}
|
||||
]
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterBaseReveal
|
||||
columns={[
|
||||
{
|
||||
title: "Restaurant", items: [
|
||||
{ label: "Home", href: "/" },
|
||||
{ label: "Reservations", href: "/reservations" },
|
||||
{ label: "Gallery", href: "/gallery" },
|
||||
{ label: "Contact", href: "#contact" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Visit", items: [
|
||||
{ label: "Hours", href: "/" },
|
||||
{ label: "Reservations", href: "/reservations" },
|
||||
{ label: "Private Events", href: "#" },
|
||||
{ label: "Gift Cards", href: "#" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Connect", items: [
|
||||
{ label: "Instagram", href: "https://instagram.com" },
|
||||
{ label: "Facebook", href: "https://facebook.com" },
|
||||
{ label: "Twitter", href: "https://twitter.com" },
|
||||
{ label: "Newsletter", href: "#" }
|
||||
]
|
||||
}
|
||||
]}
|
||||
copyrightText="© 2024 Artisan Table. All rights reserved."
|
||||
/>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
162
src/app/menu/page.tsx
Normal file
162
src/app/menu/page.tsx
Normal file
@@ -0,0 +1,162 @@
|
||||
"use client"
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||
import HeroSplit from '@/components/sections/hero/HeroSplit';
|
||||
import FeatureBento from '@/components/sections/feature/FeatureBento';
|
||||
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
|
||||
import { UtensilsCrossed, Flame, Leaf, Heart, Sparkles, ChefHat } from 'lucide-react';
|
||||
|
||||
export default function MenuPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="directional-hover"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="pill"
|
||||
contentWidth="compact"
|
||||
sizing="mediumSizeLargeTitles"
|
||||
background="circleGradient"
|
||||
cardStyle="gradient-mesh"
|
||||
primaryButtonStyle="flat"
|
||||
secondaryButtonStyle="radial-glow"
|
||||
headingFontWeight="extrabold"
|
||||
>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Artisan Table"
|
||||
navItems={[
|
||||
{ name: "Home", id: "hero" },
|
||||
{ name: "About", id: "about" },
|
||||
{ name: "Menu", id: "menu" },
|
||||
{ name: "Wines", id: "wines" },
|
||||
{ name: "Contact", id: "contact" }
|
||||
]}
|
||||
button={{ text: "Reserve Table", href: "/" }}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="hero" data-section="hero">
|
||||
<HeroSplit
|
||||
title="Our Menu"
|
||||
description="Discover our carefully curated selection of chef-crafted dishes featuring seasonal ingredients and innovative flavor combinations. Each course is designed to delight and inspire."
|
||||
tag="Culinary Experience"
|
||||
tagIcon={ChefHat}
|
||||
tagAnimation="slide-up"
|
||||
background={{ variant: "plain" }}
|
||||
buttons={[
|
||||
{ text: "Reserve Now", href: "/" }
|
||||
]}
|
||||
buttonAnimation="slide-up"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/professional-chef-preparing-food-kitchen_23-2149727971.jpg?_wi=1"
|
||||
imageAlt="Chef preparing gourmet dishes"
|
||||
mediaAnimation="slide-up"
|
||||
imagePosition="right"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="menu" data-section="menu">
|
||||
<FeatureBento
|
||||
title="Menu Sections"
|
||||
description="Explore our diverse offerings organized by course and culinary style."
|
||||
tag="Signature Dishes"
|
||||
tagIcon={Sparkles}
|
||||
tagAnimation="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={true}
|
||||
animationType="blur-reveal"
|
||||
features={[
|
||||
{
|
||||
title: "Appetizers", description: "Exquisite small plates to begin your culinary journey", bentoComponent: "icon-info-cards", items: [
|
||||
{ icon: UtensilsCrossed, label: "Pan-Seared Scallops", value: "Starter" },
|
||||
{ icon: Flame, label: "Foie Gras Terrine", value: "Appetizer" },
|
||||
{ icon: Leaf, label: "Heirloom Vegetables", value: "Vegetarian" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Main Courses", description: "Expertly prepared entrees showcasing premium ingredients", bentoComponent: "icon-info-cards", items: [
|
||||
{ icon: Flame, label: "Grass-Fed Ribeye", value: "Entrée" },
|
||||
{ icon: Leaf, label: "Pan-Roasted Halibut", value: "Seafood" },
|
||||
{ icon: Heart, label: "Duck Confit", value: "Specialty" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Desserts", description: "Sweet finale to your dining experience", bentoComponent: "icon-info-cards", items: [
|
||||
{ icon: Heart, label: "Chocolate Decadence", value: "Dessert" },
|
||||
{ icon: Sparkles, label: "Crème Brûlée", value: "Classic" },
|
||||
{ icon: Leaf, label: "Lavender Panna Cotta", value: "Floral" }
|
||||
]
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="wines" data-section="wines">
|
||||
<FeatureBento
|
||||
title="Wine Pairings"
|
||||
description="Our sommelier has curated an exceptional selection of wines to complement each course perfectly."
|
||||
tag="Wine Collection"
|
||||
tagIcon={Sparkles}
|
||||
tagAnimation="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
animationType="blur-reveal"
|
||||
features={[
|
||||
{
|
||||
title: "Red Wines", description: "Full-bodied and elegant selections from renowned vineyards", bentoComponent: "icon-info-cards", items: [
|
||||
{ icon: Flame, label: "Château Margaux 2015", value: "Bordeaux" },
|
||||
{ icon: Heart, label: "Barolo Riserva", value: "Piedmont" },
|
||||
{ icon: Sparkles, label: "Cabernet Sauvignon", value: "Napa Valley" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "White Wines", description: "Crisp and refined options to enhance lighter courses", bentoComponent: "icon-info-cards", items: [
|
||||
{ icon: Leaf, label: "Chablis Grand Cru", value: "Burgundy" },
|
||||
{ icon: Sparkles, label: "Sauvignon Blanc", value: "Loire Valley" },
|
||||
{ icon: Heart, label: "Chardonnay Reserve", value: "California" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Exclusive Selection", description: "Limited edition and collector's items for the discerning palate", bentoComponent: "icon-info-cards", items: [
|
||||
{ icon: Sparkles, label: "Vintage Champagne", value: "Premium" },
|
||||
{ icon: Heart, label: "Dessert Wine Selection", value: "Sweet" },
|
||||
{ icon: Flame, label: "Rare Burgundy", value: "Collector" }
|
||||
]
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterBaseReveal
|
||||
columns={[
|
||||
{
|
||||
title: "Restaurant", items: [
|
||||
{ label: "Home", href: "/" },
|
||||
{ label: "Menu", href: "/menu" },
|
||||
{ label: "Wines", href: "/menu" },
|
||||
{ label: "Contact", href: "/" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Visit", items: [
|
||||
{ label: "Hours", href: "/" },
|
||||
{ label: "Reservations", href: "/" },
|
||||
{ label: "Private Events", href: "#" },
|
||||
{ label: "Gift Cards", href: "#" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Connect", items: [
|
||||
{ label: "Instagram", href: "https://instagram.com" },
|
||||
{ label: "Facebook", href: "https://facebook.com" },
|
||||
{ label: "Twitter", href: "https://twitter.com" },
|
||||
{ label: "Newsletter", href: "#" }
|
||||
]
|
||||
}
|
||||
]}
|
||||
copyrightText="© 2024 Artisan Table. All rights reserved."
|
||||
/>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
@@ -29,11 +29,11 @@ export default function LandingPage() {
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Artisan Table"
|
||||
navItems={[
|
||||
{ name: "Home", id: "hero" },
|
||||
{ name: "About", id: "about" },
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Chef's Story", id: "/chefs-story" },
|
||||
{ name: "Menu", id: "features" },
|
||||
{ name: "Reviews", id: "testimonials" },
|
||||
{ name: "Contact", id: "contact" }
|
||||
{ name: "Contact", id: "/contact" }
|
||||
]}
|
||||
button={{ text: "Reserve Table", href: "#contact" }}
|
||||
/>
|
||||
@@ -212,17 +212,17 @@ export default function LandingPage() {
|
||||
columns={[
|
||||
{
|
||||
title: "Restaurant", items: [
|
||||
{ label: "About", href: "#about" },
|
||||
{ label: "About", href: "/" },
|
||||
{ label: "Chef's Story", href: "/chefs-story" },
|
||||
{ label: "Menu", href: "#features" },
|
||||
{ label: "Reviews", href: "#testimonials" },
|
||||
{ label: "Contact", href: "#contact" }
|
||||
{ label: "Reviews", href: "#testimonials" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Visit", items: [
|
||||
{ label: "Hours", href: "#faq" },
|
||||
{ label: "Reservations", href: "#contact" },
|
||||
{ label: "Private Events", href: "#" },
|
||||
{ label: "Contact", href: "/contact" },
|
||||
{ label: "Gift Cards", href: "#" }
|
||||
]
|
||||
},
|
||||
@@ -240,4 +240,4 @@ export default function LandingPage() {
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
}
|
||||
102
src/app/reservations/page.tsx
Normal file
102
src/app/reservations/page.tsx
Normal file
@@ -0,0 +1,102 @@
|
||||
"use client"
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
|
||||
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
|
||||
import { Calendar, Clock, Users, MapPin } from 'lucide-react';
|
||||
import { useState } from 'react';
|
||||
|
||||
export default function ReservationsPage() {
|
||||
const [formData, setFormData] = useState<Record<string, string>>({});
|
||||
|
||||
const handleSubmit = (data: Record<string, string>) => {
|
||||
setFormData(data);
|
||||
console.log('Reservation submitted:', data);
|
||||
};
|
||||
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="directional-hover"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="pill"
|
||||
contentWidth="compact"
|
||||
sizing="mediumSizeLargeTitles"
|
||||
background="circleGradient"
|
||||
cardStyle="gradient-mesh"
|
||||
primaryButtonStyle="flat"
|
||||
secondaryButtonStyle="radial-glow"
|
||||
headingFontWeight="extrabold"
|
||||
>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Artisan Table"
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Reservations", id: "/reservations" },
|
||||
{ name: "Gallery", id: "/gallery" },
|
||||
{ name: "Contact", id: "#contact" }
|
||||
]}
|
||||
button={{ text: "Reserve Table", href: "#contact" }}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<ContactSplitForm
|
||||
title="Make a Reservation"
|
||||
description="Reserve your table at Artisan Table. We look forward to hosting you for an exceptional dining experience."
|
||||
useInvertedBackground={false}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/burning-candle-table_140725-8115.jpg?_wi=2"
|
||||
imageAlt="Intimate restaurant dining"
|
||||
mediaAnimation="slide-up"
|
||||
mediaPosition="left"
|
||||
inputs={[
|
||||
{ name: "name", type: "text", placeholder: "Your Full Name", required: true },
|
||||
{ name: "email", type: "email", placeholder: "your@email.com", required: true },
|
||||
{ name: "phone", type: "tel", placeholder: "(555) 123-4567", required: true },
|
||||
{ name: "date", type: "date", placeholder: "Preferred Date", required: true },
|
||||
{ name: "time", type: "time", placeholder: "Preferred Time", required: true },
|
||||
{ name: "guests", type: "number", placeholder: "Number of Guests", required: true }
|
||||
]}
|
||||
textarea={{
|
||||
name: "special_requests", placeholder: "Special requests or dietary requirements...", rows: 4
|
||||
}}
|
||||
buttonText="Confirm Reservation"
|
||||
onSubmit={handleSubmit}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterBaseReveal
|
||||
columns={[
|
||||
{
|
||||
title: "Restaurant", items: [
|
||||
{ label: "Home", href: "/" },
|
||||
{ label: "Reservations", href: "/reservations" },
|
||||
{ label: "Gallery", href: "/gallery" },
|
||||
{ label: "Contact", href: "#contact" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Visit", items: [
|
||||
{ label: "Hours", href: "/" },
|
||||
{ label: "Reservations", href: "/reservations" },
|
||||
{ label: "Private Events", href: "#" },
|
||||
{ label: "Gift Cards", href: "#" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Connect", items: [
|
||||
{ label: "Instagram", href: "https://instagram.com" },
|
||||
{ label: "Facebook", href: "https://facebook.com" },
|
||||
{ label: "Twitter", href: "https://twitter.com" },
|
||||
{ label: "Newsletter", href: "#" }
|
||||
]
|
||||
}
|
||||
]}
|
||||
copyrightText="© 2024 Artisan Table. All rights reserved."
|
||||
/>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
@@ -10,15 +10,15 @@
|
||||
--accent: #ffffff;
|
||||
--background-accent: #ffffff; */
|
||||
|
||||
--background: #fcf6ec;
|
||||
--card: #f3ede2;
|
||||
--foreground: #2e2521;
|
||||
--primary-cta: #2e2521;
|
||||
--background: #fafaf8;
|
||||
--card: #f5f3f0;
|
||||
--foreground: #2c2824;
|
||||
--primary-cta: #8b6f47;
|
||||
--primary-cta-text: #fcf6ec;
|
||||
--secondary-cta: #ffffff;
|
||||
--secondary-cta: #d4a574;
|
||||
--secondary-cta-text: #2e2521;
|
||||
--accent: #b2a28b;
|
||||
--background-accent: #b2a28b;
|
||||
--accent: #c9915f;
|
||||
--background-accent: #f0e6d8;
|
||||
|
||||
/* text sizing - set by ThemeProvider */
|
||||
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);
|
||||
|
||||
161
src/app/wines/page.tsx
Normal file
161
src/app/wines/page.tsx
Normal file
@@ -0,0 +1,161 @@
|
||||
"use client"
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||
import HeroSplit from '@/components/sections/hero/HeroSplit';
|
||||
import FeatureBento from '@/components/sections/feature/FeatureBento';
|
||||
import MetricCardEleven from '@/components/sections/metrics/MetricCardEleven';
|
||||
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
|
||||
import { Wine, Sparkles, Award, Leaf, Flame, Heart, GlassWater } from 'lucide-react';
|
||||
|
||||
export default function WinesPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="directional-hover"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="pill"
|
||||
contentWidth="compact"
|
||||
sizing="mediumSizeLargeTitles"
|
||||
background="circleGradient"
|
||||
cardStyle="gradient-mesh"
|
||||
primaryButtonStyle="flat"
|
||||
secondaryButtonStyle="radial-glow"
|
||||
headingFontWeight="extrabold"
|
||||
>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Artisan Table"
|
||||
navItems={[
|
||||
{ name: "Home", id: "hero" },
|
||||
{ name: "About", id: "about" },
|
||||
{ name: "Menu", id: "menu" },
|
||||
{ name: "Wines", id: "wines" },
|
||||
{ name: "Contact", id: "contact" }
|
||||
]}
|
||||
button={{ text: "Reserve Table", href: "/" }}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="hero" data-section="hero">
|
||||
<HeroSplit
|
||||
title="Wine Collection"
|
||||
description="Our sommelier has carefully selected wines from the world's most prestigious vineyards. Each bottle is chosen to complement our culinary creations and elevate your dining experience."
|
||||
tag="Premium Wine Selection"
|
||||
tagIcon={Wine}
|
||||
tagAnimation="slide-up"
|
||||
background={{ variant: "plain" }}
|
||||
buttons={[
|
||||
{ text: "Reserve Now", href: "/" }
|
||||
]}
|
||||
buttonAnimation="slide-up"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/pumpkin-soup-with-shrimp-glass-red-wine_140725-5413.jpg?_wi=1"
|
||||
imageAlt="Premium wine collection"
|
||||
mediaAnimation="slide-up"
|
||||
imagePosition="right"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="wines" data-section="wines">
|
||||
<FeatureBento
|
||||
title="Wine Offerings"
|
||||
description="Explore our curated wine collection spanning regions and varietals from around the world."
|
||||
tag="Sommelier Curated"
|
||||
tagIcon={Sparkles}
|
||||
tagAnimation="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={true}
|
||||
animationType="blur-reveal"
|
||||
features={[
|
||||
{
|
||||
title: "Bordeaux", description: "Classic elegance from France's most prestigious wine region. Bold, complex, and perfect for our signature main courses.", bentoComponent: "icon-info-cards", items: [
|
||||
{ icon: Award, label: "Château Margaux", value: "2015" },
|
||||
{ icon: Flame, label: "Pichon Longueville", value: "2016" },
|
||||
{ icon: Heart, label: "Saint-Émilion Grand Cru", value: "2017" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Burgundy", description: "Sophisticated pinot noir and chardonnay selections showcasing terroir and tradition. Exceptional depth and character.", bentoComponent: "icon-info-cards", items: [
|
||||
{ icon: Sparkles, label: "Romanée-Conti", value: "2014" },
|
||||
{ icon: Leaf, label: "Chablis Premier Cru", value: "2020" },
|
||||
{ icon: Heart, label: "Volnay Premier Cru", value: "2018" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "International Selection", description: "Exceptional wines from New World and emerging wine regions. Modern techniques meet classic traditions.", bentoComponent: "icon-info-cards", items: [
|
||||
{ icon: Flame, label: "Napa Valley Cabernet", value: "Opus One" },
|
||||
{ icon: Leaf, label: "Barossa Valley Shiraz", value: "Penfolds" },
|
||||
{ icon: Sparkles, label: "Tuscan Brunello", value: "Biondi-Santi" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Sparkling & Dessert", description: "Celebration-worthy bubbles and exquisite dessert wines to complement every moment of your meal.", bentoComponent: "icon-info-cards", items: [
|
||||
{ icon: Sparkles, label: "Vintage Champagne", value: "Krug" },
|
||||
{ icon: Heart, label: "Sauternes", value: "Château d'Yquem" },
|
||||
{ icon: GlassWater, label: "Moscato d'Asti", value: "Premium" }
|
||||
]
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<MetricCardEleven
|
||||
title="Wine Expertise"
|
||||
description="Our commitment to wine excellence is reflected in our selection, service, and sommelier knowledge."
|
||||
tag="Collection Highlights"
|
||||
tagIcon={Award}
|
||||
tagAnimation="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
animationType="blur-reveal"
|
||||
metrics={[
|
||||
{
|
||||
id: "1", value: "50+", title: "Premium Wines", description: "Carefully selected from world-renowned vineyards and producers", imageSrc: "http://img.b2bpic.net/free-photo/pumpkin-soup-with-shrimp-glass-red-wine_140725-5413.jpg?_wi=1", imageAlt: "Wine collection"
|
||||
},
|
||||
{
|
||||
id: "2", value: "15+", title: "Regions Represented", description: "From classic European to emerging New World wine destinations", imageSrc: "http://img.b2bpic.net/free-photo/pumpkin-soup-with-shrimp-glass-red-wine_140725-5413.jpg?_wi=1", imageAlt: "Wine varieties"
|
||||
},
|
||||
{
|
||||
id: "3", value: "Expert", title: "Sommelier Service", description: "Professional guidance and personalized pairing recommendations for every course", imageSrc: "http://img.b2bpic.net/free-photo/pumpkin-soup-with-shrimp-glass-red-wine_140725-5413.jpg?_wi=1", imageAlt: "Sommelier expertise"
|
||||
},
|
||||
{
|
||||
id: "4", value: "Vintage", title: "Rare Selections", description: "Limited edition and collector's items available for special occasions", imageSrc: "http://img.b2bpic.net/free-photo/pumpkin-soup-with-shrimp-glass-red-wine_140725-5413.jpg?_wi=1", imageAlt: "Rare wines"
|
||||
}
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterBaseReveal
|
||||
columns={[
|
||||
{
|
||||
title: "Restaurant", items: [
|
||||
{ label: "Home", href: "/" },
|
||||
{ label: "Menu", href: "/menu" },
|
||||
{ label: "Wines", href: "/wines" },
|
||||
{ label: "Contact", href: "/" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Visit", items: [
|
||||
{ label: "Hours", href: "/" },
|
||||
{ label: "Reservations", href: "/" },
|
||||
{ label: "Private Events", href: "#" },
|
||||
{ label: "Gift Cards", href: "#" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Connect", items: [
|
||||
{ label: "Instagram", href: "https://instagram.com" },
|
||||
{ label: "Facebook", href: "https://facebook.com" },
|
||||
{ label: "Twitter", href: "https://twitter.com" },
|
||||
{ label: "Newsletter", href: "#" }
|
||||
]
|
||||
}
|
||||
]}
|
||||
copyrightText="© 2024 Artisan Table. All rights reserved."
|
||||
/>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user