39 Commits

Author SHA1 Message Date
0d57279cb9 Update src/app/page.tsx 2026-03-05 22:48:41 +00:00
0cb96a87fc Update src/app/contact/page.tsx 2026-03-05 22:48:41 +00:00
709809a43d Switch to version 3: modified src/app/styles/variables.css 2026-03-05 22:43:18 +00:00
14845f6a43 Switch to version 3: modified src/app/page.tsx 2026-03-05 22:43:18 +00:00
a2236262a7 Switch to version 4: modified src/app/styles/variables.css 2026-03-05 22:26:40 +00:00
685ded6818 Switch to version 4: modified src/app/page.tsx 2026-03-05 22:26:39 +00:00
2b47d52b41 Switch to version 3: modified src/app/page.tsx 2026-03-05 22:26:34 +00:00
4b1a154c72 Switch to version 3: added src/app/contact/page.tsx 2026-03-05 22:26:34 +00:00
610e785ce8 Switch to version 2: modified src/app/page.tsx 2026-03-05 22:26:31 +00:00
f5a8271149 Switch to version 1: modified src/app/page.tsx 2026-03-05 22:26:19 +00:00
afc2ea67c8 Switch to version 2: remove src/app/contact/page.tsx 2026-03-05 22:26:11 +00:00
afd0f20994 Switch to version 2: modified src/app/page.tsx 2026-03-05 22:26:11 +00:00
5e87e99246 Switch to version 3: modified src/app/styles/variables.css 2026-03-05 22:26:00 +00:00
42da17e0ed Switch to version 3: modified src/app/page.tsx 2026-03-05 22:25:59 +00:00
d0dbd8f953 Merge version_4 into main
Merge version_4 into main
2026-03-05 22:25:19 +00:00
53d950981e Update theme colors 2026-03-05 22:25:11 +00:00
f69e24ccde Merge version_4 into main
Merge version_4 into main
2026-03-05 22:24:29 +00:00
c63c1c7bcd Update theme colors 2026-03-05 22:24:23 +00:00
8fad654f10 Merge version_4 into main
Merge version_4 into main
2026-03-05 22:23:06 +00:00
f688991241 Update theme colors 2026-03-05 22:23:00 +00:00
aecd434918 Merge version_4 into main
Merge version_4 into main
2026-03-05 22:22:31 +00:00
3bfc9ee9ca Update theme colors 2026-03-05 22:22:25 +00:00
69ffbd86ea Merge version_4 into main
Merge version_4 into main
2026-03-05 22:21:50 +00:00
0f8cfb13fb Update theme colors 2026-03-05 22:21:44 +00:00
659dcd2387 Merge version_4 into main
Merge version_4 into main
2026-03-05 22:15:48 +00:00
f9ecbba79e Update src/app/page.tsx 2026-03-05 22:15:44 +00:00
0b017ed241 Switch to version 3: modified src/app/page.tsx 2026-03-05 22:11:52 +00:00
996e1d468d Switch to version 3: added src/app/contact/page.tsx 2026-03-05 22:11:51 +00:00
19ad5f2935 Switch to version 2: modified src/app/page.tsx 2026-03-05 22:11:38 +00:00
5463af8225 Switch to version 1: modified src/app/page.tsx 2026-03-05 22:11:19 +00:00
781355feb4 Switch to version 2: remove src/app/contact/page.tsx 2026-03-05 22:09:58 +00:00
c50bf4e63f Switch to version 2: modified src/app/page.tsx 2026-03-05 22:09:57 +00:00
4f5c85bf6e Merge version_3 into main
Merge version_3 into main
2026-03-05 22:07:58 +00:00
ae1e84fd9f Update src/app/page.tsx 2026-03-05 22:07:48 +00:00
05130d2151 Update src/app/contact/page.tsx 2026-03-05 22:07:48 +00:00
ad1f0594d2 Merge version_3 into main
Merge version_3 into main
2026-03-05 22:07:07 +00:00
e1ac8386b6 Update src/app/page.tsx 2026-03-05 22:07:03 +00:00
decd098528 Add src/app/contact/page.tsx 2026-03-05 22:07:02 +00:00
181669a257 Merge version_2 into main
Merge version_2 into main
2026-03-05 22:00:21 +00:00
2 changed files with 246 additions and 22 deletions

90
src/app/contact/page.tsx Normal file
View File

@@ -0,0 +1,90 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarStyleApple from '@/components/navbar/NavbarStyleApple/NavbarStyleApple';
import ContactSplit from '@/components/sections/contact/ContactSplit';
import FooterMedia from '@/components/sections/footer/FooterMedia';
import { Zap, Mail } from 'lucide-react';
export default function ContactPage() {
return (
<ThemeProvider
defaultButtonVariant="expand-hover"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="small"
sizing="medium"
background="none"
cardStyle="subtle-shadow"
primaryButtonStyle="diagonal-gradient"
secondaryButtonStyle="radial-glow"
headingFontWeight="normal"
>
<div id="nav" data-section="nav">
<NavbarStyleApple
brandName="Rage Room Vienna"
navItems={[
{ name: "Packages", id: "/" },
{ name: "Experience", id: "/" },
{ name: "FAQ", id: "/" },
{ name: "Contact", id: "/contact" },
]}
/>
</div>
<div id="contact" data-section="contact">
<ContactSplit
tag="Get In Touch"
tagIcon={Mail}
tagAnimation="slide-up"
title="We're Here to Help"
description="Have questions about our packages, group bookings, or special requests? Reach out to our team and we'll get back to you as soon as possible. For groups larger than 4 people, contact us to arrange custom booking experiences."
background={{ variant: "canvas-reveal" }}
useInvertedBackground={false}
imageSrc="http://img.b2bpic.net/free-photo/person-suffering-from-technology-addiction-cybersickness_23-2151552653.jpg?_wi=2"
imageAlt="Contact us"
mediaAnimation="blur-reveal"
mediaPosition="right"
inputPlaceholder="your@email.com"
buttonText="Send Message"
termsText="We'll respond to your inquiry within 24 hours. Your information is secure and won't be shared."
onSubmit={(email) => {
alert(`Thank you! We'll contact you at ${email} soon.`);
}}
/>
</div>
<div id="footer" data-section="footer">
<FooterMedia
imageSrc="http://img.b2bpic.net/free-photo/weathered-concrete-wall-texture-with-stains_632498-60807.jpg?_wi=2"
imageAlt="Industrial concrete background"
logoText="Rage Room Vienna"
copyrightText="© 2025 Rage Room Vienna | Adrenaline. Chaos. Freedom."
columns={[
{
title: "Experience", items: [
{ label: "Packages", href: "/" },
{ label: "About Us", href: "/" },
{ label: "Safety", href: "/" },
],
},
{
title: "Info", items: [
{ label: "Hours", href: "#" },
{ label: "Contact", href: "/contact" },
{ label: "Book Now", href: "https://booking.rageroomvienna.local" },
],
},
{
title: "Follow", items: [
{ label: "Instagram", href: "https://instagram.com" },
{ label: "Facebook", href: "https://facebook.com" },
{ label: "TikTok", href: "https://tiktok.com" },
],
},
]}
/>
</div>
</ThemeProvider>
);
}

View File

@@ -21,7 +21,7 @@ export default function LandingPage() {
const calculatePrice = (basePrice: number, quantity: number) => { const calculatePrice = (basePrice: number, quantity: number) => {
if (quantity >= 4) { if (quantity >= 4) {
return Math.round(basePrice * 0.8 * 100) / 100; return 40;
} }
return basePrice; return basePrice;
}; };
@@ -48,6 +48,10 @@ export default function LandingPage() {
const handleBooking = () => { const handleBooking = () => {
if (selectedPackage && selectedDate && selectedTime) { if (selectedPackage && selectedDate && selectedTime) {
if (groupSize > 4) {
alert(`Group size exceeds maximum of 4 people. Please contact us for custom group bookings at bookings@rageroomvienna.local or call our team.`);
return;
}
const pricePerPerson = calculatePrice(packagePrices[selectedPackage], groupSize); const pricePerPerson = calculatePrice(packagePrices[selectedPackage], groupSize);
const totalPrice = pricePerPerson * groupSize; const totalPrice = pricePerPerson * groupSize;
alert(`Booking confirmed!\nPackage: ${selectedPackage}\nGroup Size: ${groupSize}\nDate: ${selectedDate}\nTime: ${selectedTime}\nTotal: €${totalPrice.toFixed(2)}`); alert(`Booking confirmed!\nPackage: ${selectedPackage}\nGroup Size: ${groupSize}\nDate: ${selectedDate}\nTime: ${selectedTime}\nTotal: €${totalPrice.toFixed(2)}`);
@@ -55,6 +59,82 @@ export default function LandingPage() {
} }
}; };
const isTimeAvailable = (date: string, time: string): boolean => {
if (!date) return false;
const dateObj = new Date(date);
const dayOfWeek = dateObj.getDay();
const [hours] = time.split(':').map(Number);
// Monday (1) to Wednesday (3) - not bookable
if (dayOfWeek >= 1 && dayOfWeek <= 3) {
return false;
}
// Thursday (4): 17:00-22:00
if (dayOfWeek === 4) {
return hours >= 17 && hours < 22;
}
// Friday (5): 14:00-24:00
if (dayOfWeek === 5) {
return hours >= 14 && hours < 24;
}
// Saturday (6) and Sunday (0): 12:00-24:00
if (dayOfWeek === 6 || dayOfWeek === 0) {
return hours >= 12 && hours < 24;
}
return false;
};
const getAvailableTimes = (date: string): string[] => {
if (!date) return [];
const dateObj = new Date(date);
const dayOfWeek = dateObj.getDay();
const allTimes = ['14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00'];
if (dayOfWeek >= 1 && dayOfWeek <= 3) {
return [];
}
if (dayOfWeek === 4) {
return allTimes.filter(time => {
const [hours] = time.split(':').map(Number);
return hours >= 17 && hours < 22;
});
}
if (dayOfWeek === 5) {
return allTimes.filter(time => {
const [hours] = time.split(':').map(Number);
return hours >= 14 && hours < 24;
});
}
if (dayOfWeek === 6 || dayOfWeek === 0) {
return allTimes.filter(time => {
const [hours] = time.split(':').map(Number);
return hours >= 12 && hours < 24;
});
}
return [];
};
const getDateWarning = (date: string): string | null => {
if (!date) return null;
const dateObj = new Date(date);
const dayOfWeek = dateObj.getDay();
const dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
if (dayOfWeek >= 1 && dayOfWeek <= 3) {
return `${dayNames[dayOfWeek]} is not available. We're only open Thursday-Sunday.`;
}
return null;
};
return ( return (
<ThemeProvider <ThemeProvider
defaultButtonVariant="expand-hover" defaultButtonVariant="expand-hover"
@@ -108,7 +188,7 @@ export default function LandingPage() {
imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg?_wi=4"}, imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg?_wi=4"},
]} ]}
testimonialRotationInterval={5000} testimonialRotationInterval={5000}
imageSrc="http://img.b2bpic.net/free-photo/person-suffering-from-technology-addiction-cybersickness_23-2151552653.jpg" imageSrc="http://img.b2bpic.net/free-photo/person-suffering-from-technology-addiction-cybersickness_23-2151552653.jpg?_wi=1"
imageAlt="Rage Room destruction session" imageAlt="Rage Room destruction session"
mediaAnimation="blur-reveal" mediaAnimation="blur-reveal"
imagePosition="right" imagePosition="right"
@@ -131,36 +211,46 @@ export default function LandingPage() {
</div> </div>
<div id="pricing" data-section="pricing"> <div id="pricing" data-section="pricing">
<div className="w-full bg-gradient-to-b from-background to-background py-12 md:py-16 flex items-center justify-center">
<div className="w-full max-w-3xl px-6 md:px-8 text-center">
<div className="mb-8 md:mb-12">
<h3 className="text-2xl md:text-3xl font-bold text-foreground mb-3">Group Discount Available</h3>
<p className="text-lg md:text-2xl font-semibold text-primary-cta">4 people = 40/person (Maximum)</p>
<p className="text-sm md:text-base text-foreground/70 mt-2">Perfect for team building and group experiences</p>
<p className="text-xs md:text-sm text-foreground/60 mt-3 font-medium">Groups larger than 4 people: Contact us for custom bookings</p>
</div>
</div>
</div>
<PricingCardEight <PricingCardEight
title="Choose Your Explosion" title="Choose Your Explosion"
description="Three fury-fueled packages designed to match your rage level. All include protective gear, tools, and unlimited smashing. Group discount: 4+ people pay only €40 per person per package!" description="Three fury-fueled packages designed to match your rage level. All include protective gear, tools, and unlimited smashing."
tag="Pricing" tag="Pricing"
tagIcon={Zap} tagIcon={Zap}
tagAnimation="slide-up" tagAnimation="slide-up"
plans={[ plans={[
{ {
id: "basic", badge: "Beginner", badgeIcon: Flame, id: "basic", badge: "Beginner", badgeIcon: Flame,
price: "€49", subtitle: "Perfect First Strike 30 Minutes | Save 18% with groups of 4+", buttons: [ price: "€49", subtitle: "Perfect First Strike 30 Minutes", buttons: [
{ text: "Book Package", onClick: () => openBookingModal('basic') }, { text: "Book Package", onClick: () => openBookingModal('basic') },
], ],
features: [ features: [
"30 minutes of pure destruction", "All safety gear included", "Glass and ceramics", "Solo or duo session", "Perfect for first-timers", "Group price: €40/person (4+ people)"], "30 minutes of pure destruction", "All safety gear included", "Glass and ceramics", "Solo or duo session", "Perfect for first-timers", "Group price: €40/person (max 4 people)"],
}, },
{ {
id: "destroyer", badge: "Most Popular", badgeIcon: Sparkles, id: "destroyer", badge: "Most Popular", badgeIcon: Sparkles,
price: "€79", subtitle: "Best Value 60 Minutes | Save 18% with groups of 4+", buttons: [ price: "€79", subtitle: "Best Value 60 Minutes", buttons: [
{ text: "Book Now", onClick: () => openBookingModal('destroyer') }, { text: "Book Now", onClick: () => openBookingModal('destroyer') },
], ],
features: [ features: [
"60 minutes of maximum chaos", "Premium safety equipment", "Glass, ceramics & electronics", "Doubles or small group", "Most items to smash", "Best value experience", "Group price: €63/person (4+ people)"], "60 minutes of maximum chaos", "Premium safety equipment", "Glass, ceramics & electronics", "Doubles or small group", "Most items to smash", "Best value experience", "Group price: €40/person (max 4 people)"],
}, },
{ {
id: "elite", badge: "Ultimate", badgeIcon: Crown, id: "elite", badge: "Ultimate", badgeIcon: Crown,
price: "€129", subtitle: "Total Annihilation 90 Minutes | Save 18% with groups of 4+", buttons: [ price: "€129", subtitle: "Total Annihilation 90 Minutes", buttons: [
{ text: "Reserve Elite", onClick: () => openBookingModal('elite') }, { text: "Reserve Elite", onClick: () => openBookingModal('elite') },
], ],
features: [ features: [
"90 minutes unlimited destruction", "VIP treatment & priorities", "All destruction categories", "Small group packages", "Premium room setup", "Professional photos included", "Group price: €103/person (4+ people)"], "90 minutes unlimited destruction", "VIP treatment & priorities", "All destruction categories", "Small group packages", "Premium room setup", "Professional photos included", "Group price: €40/person (max 4 people)"],
}, },
]} ]}
animationType="slide-up" animationType="slide-up"
@@ -201,17 +291,47 @@ export default function LandingPage() {
{ {
id: "2", title: "Is it really safe?", content: "Absolutely. All participants receive thorough safety briefing, professional-grade protective equipment, and constant supervision. Our trained staff ensures a safe, controlled environment for pure adrenaline release."}, id: "2", title: "Is it really safe?", content: "Absolutely. All participants receive thorough safety briefing, professional-grade protective equipment, and constant supervision. Our trained staff ensures a safe, controlled environment for pure adrenaline release."},
{ {
id: "3", title: "How many people can join?", content: "Sessions are designed for solo destructors up to small groups. Basic packages work great for 1-2 people. Destroyer and Elite packages support small groups. Contact us for group booking options."}, id: "3", title: "How many people can join?", content: "Maximum group size is 4 people per session. If your group is larger than 4 people, please contact us at bookings@rageroomvienna.local to arrange custom group bookings."},
{ {
id: "4", title: "What's included in pricing?", content: "All packages include full protective gear, safety briefing, tools, smashable items (glass, ceramics, electronics), and supervised session time. Photos available in Elite package."}, id: "4", title: "What's included in pricing?", content: "All packages include full protective gear, safety briefing, tools, smashable items (glass, ceramics, electronics), and supervised session time. Photos available in Elite package."},
{ {
id: "5", title: "Are there age restrictions?", content: "Minimum age is 16 years old (with parental consent). No maximum age limit we welcome destructors of all ages who can safely handle the experience."}, id: "5", title: "Are there age restrictions?", content: "Minimum age is 16 years old (with parental consent). No maximum age limit we welcome destructors of all ages who can safely handle the experience."},
{ {
id: "6", title: "Can I book in advance?", content: "Yes! Check available time slots on our booking calendar. We're open Thursday 5 PM10 PM, Friday 2 PM12 AM, Saturday & Sunday 12 PM12 AM."}, id: "6", title: "Can I book in advance?", content: "Yes! Check available time slots on our booking calendar. We're open Thursday 5 PM10 PM, Friday 2 PM12 AM, Saturday & Sunday 12 PM12 AM. MondayWednesday are closed."},
]} ]}
/> />
</div> </div>
<div id="maps" data-section="maps">
<div className="w-full bg-card py-16 md:py-24">
<div className="flex items-center justify-center w-full">
<div className="w-full max-w-6xl px-6 md:px-8">
<div className="text-center mb-12">
<h2 className="text-3xl md:text-4xl font-bold text-foreground mb-3">Visit Us</h2>
<p className="text-lg text-foreground/70">Find Rage Room Vienna at our location in the heart of the city</p>
</div>
<div className="w-full rounded-lg overflow-hidden shadow-lg" style={{ height: '500px' }}>
<iframe
width="100%"
height="100%"
style={{ border: 0 }}
loading="lazy"
allowFullScreen
referrerPolicy="no-referrer-when-downgrade"
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2659.2098789453607!2d16.36892492346897!3d48.20849977122393!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x476d079f8c41d6ad%3A0x1234567890!2sVienna%2C%20Austria!5e0!3m2!1sen!2sat!4v1234567890"
></iframe>
</div>
<div className="mt-8 text-center">
<p className="text-foreground font-semibold mb-2">Rage Room Vienna</p>
<p className="text-foreground/70">Vienna, Austria</p>
<p className="text-foreground/70 mt-4">Open: Thu 5PM-10PM | Fri 2PM-12AM | Sat & Sun 12PM-12AM</p>
<p className="text-foreground/70 text-sm mt-2">Monday-Wednesday: Closed</p>
</div>
</div>
</div>
</div>
</div>
<div id="contact" data-section="contact"> <div id="contact" data-section="contact">
<ContactCTA <ContactCTA
tag="Ready to Rage?" tag="Ready to Rage?"
@@ -231,7 +351,7 @@ export default function LandingPage() {
<div id="footer" data-section="footer"> <div id="footer" data-section="footer">
<FooterMedia <FooterMedia
imageSrc="http://img.b2bpic.net/free-photo/weathered-concrete-wall-texture-with-stains_632498-60807.jpg" imageSrc="http://img.b2bpic.net/free-photo/weathered-concrete-wall-texture-with-stains_632498-60807.jpg?_wi=1"
imageAlt="Industrial concrete background" imageAlt="Industrial concrete background"
logoText="Rage Room Vienna" logoText="Rage Room Vienna"
copyrightText="© 2025 Rage Room Vienna | Adrenaline. Chaos. Freedom." copyrightText="© 2025 Rage Room Vienna | Adrenaline. Chaos. Freedom."
@@ -290,7 +410,7 @@ export default function LandingPage() {
</div> </div>
<div> <div>
<label className="block text-sm font-medium mb-2">Group Size</label> <label className="block text-sm font-medium mb-2">Group Size (Max 4 people)</label>
<div className="flex items-center gap-4"> <div className="flex items-center gap-4">
<button <button
onClick={() => setGroupSize(Math.max(1, groupSize - 1))} onClick={() => setGroupSize(Math.max(1, groupSize - 1))}
@@ -300,15 +420,18 @@ export default function LandingPage() {
</button> </button>
<span className="text-lg font-bold min-w-12 text-center">{groupSize}</span> <span className="text-lg font-bold min-w-12 text-center">{groupSize}</span>
<button <button
onClick={() => setGroupSize(groupSize + 1)} onClick={() => setGroupSize(Math.min(4, groupSize + 1))}
className="px-3 py-2 border rounded hover:bg-gray-100" className="px-3 py-2 border rounded hover:bg-gray-100"
> >
+ +
</button> </button>
</div> </div>
{selectedPackage && groupSize >= 4 && ( {groupSize === 4 && (
<p className="text-sm text-green-600 mt-2 font-semibold"> Group discount applied! 40 per person</p> <p className="text-sm text-green-600 mt-2 font-semibold"> Group discount applied! 40 per person</p>
)} )}
{groupSize > 4 && (
<p className="text-sm text-red-600 mt-2 font-semibold">Maximum group size is 4 people. Please contact us for larger groups.</p>
)}
</div> </div>
<div> <div>
@@ -319,6 +442,9 @@ export default function LandingPage() {
onChange={(e) => setSelectedDate(e.target.value)} onChange={(e) => setSelectedDate(e.target.value)}
className="w-full border rounded px-3 py-2" className="w-full border rounded px-3 py-2"
/> />
{getDateWarning(selectedDate) && (
<p className="text-sm text-red-600 mt-2">{getDateWarning(selectedDate)}</p>
)}
</div> </div>
<div> <div>
@@ -329,15 +455,16 @@ export default function LandingPage() {
className="w-full border rounded px-3 py-2" className="w-full border rounded px-3 py-2"
> >
<option value="">Select a time</option> <option value="">Select a time</option>
<option value="17:00">5:00 PM</option> {getAvailableTimes(selectedDate).map(time => (
<option value="18:00">6:00 PM</option> <option key={time} value={time}>{time}</option>
<option value="19:00">7:00 PM</option> ))}
<option value="20:00">8:00 PM</option>
<option value="21:00">9:00 PM</option>
</select> </select>
{selectedDate && getAvailableTimes(selectedDate).length === 0 && (
<p className="text-sm text-red-600 mt-2">No available times for this date</p>
)}
</div> </div>
{selectedPackage && ( {selectedPackage && groupSize <= 4 && (
<div className="bg-gray-50 p-4 rounded-lg"> <div className="bg-gray-50 p-4 rounded-lg">
<p className="text-sm text-gray-600">Price per person</p> <p className="text-sm text-gray-600">Price per person</p>
<p className="text-2xl font-bold">{calculatePrice(packagePrices[selectedPackage], groupSize).toFixed(2)}</p> <p className="text-2xl font-bold">{calculatePrice(packagePrices[selectedPackage], groupSize).toFixed(2)}</p>
@@ -345,9 +472,16 @@ export default function LandingPage() {
</div> </div>
)} )}
{groupSize > 4 && (
<div className="bg-red-50 p-4 rounded-lg border border-red-200">
<p className="text-sm text-red-800 font-semibold">Group size exceeds maximum</p>
<p className="text-sm text-red-700 mt-1">For groups larger than 4 people, please contact us at bookings@rageroomvienna.local</p>
</div>
)}
<button <button
onClick={handleBooking} onClick={handleBooking}
disabled={!selectedPackage || !selectedDate || !selectedTime} disabled={!selectedPackage || !selectedDate || !selectedTime || groupSize > 4}
className="w-full bg-blue-600 text-white py-3 rounded-lg font-semibold hover:bg-blue-700 disabled:bg-gray-400 disabled:cursor-not-allowed" className="w-full bg-blue-600 text-white py-3 rounded-lg font-semibold hover:bg-blue-700 disabled:bg-gray-400 disabled:cursor-not-allowed"
> >
Confirm Booking Confirm Booking