From 0cb96a87fcef5dff371a4a7142774d2216e4c76e Mon Sep 17 00:00:00 2001 From: bender Date: Thu, 5 Mar 2026 22:48:41 +0000 Subject: [PATCH 1/2] Update src/app/contact/page.tsx --- src/app/contact/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/contact/page.tsx b/src/app/contact/page.tsx index 48c473b..045cbec 100644 --- a/src/app/contact/page.tsx +++ b/src/app/contact/page.tsx @@ -38,7 +38,7 @@ export default function ContactPage() { 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." + 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" -- 2.49.1 From 0d57279cb9433dc07c98fd8b1e219951220135d0 Mon Sep 17 00:00:00 2001 From: bender Date: Thu, 5 Mar 2026 22:48:41 +0000 Subject: [PATCH 2/2] Update src/app/page.tsx --- src/app/page.tsx | 128 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 112 insertions(+), 16 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 4fafb9d..5277cca 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -48,6 +48,10 @@ export default function LandingPage() { const handleBooking = () => { 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 totalPrice = pricePerPerson * groupSize; 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 (

Group Discount Available

-

4+ people = €40/person

+

4 people = €40/person (Maximum)

Perfect for team building and group experiences

+

Groups larger than 4 people: Contact us for custom bookings

@@ -153,7 +234,7 @@ export default function LandingPage() { { text: "Book Package", onClick: () => openBookingModal('basic') }, ], 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, @@ -161,7 +242,7 @@ export default function LandingPage() { { text: "Book Now", onClick: () => openBookingModal('destroyer') }, ], 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: €40/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, @@ -169,7 +250,7 @@ export default function LandingPage() { { text: "Reserve Elite", onClick: () => openBookingModal('elite') }, ], features: [ - "90 minutes unlimited destruction", "VIP treatment & priorities", "All destruction categories", "Small group packages", "Premium room setup", "Professional photos included", "Group price: €40/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" @@ -210,13 +291,13 @@ 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: "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: "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 PM–10 PM, Friday 2 PM–12 AM, Saturday & Sunday 12 PM–12 AM."}, + id: "6", title: "Can I book in advance?", content: "Yes! Check available time slots on our booking calendar. We're open Thursday 5 PM–10 PM, Friday 2 PM–12 AM, Saturday & Sunday 12 PM–12 AM. Monday–Wednesday are closed."}, ]} /> @@ -244,6 +325,7 @@ export default function LandingPage() {

Rage Room Vienna

Vienna, Austria

Open: Thu 5PM-10PM | Fri 2PM-12AM | Sat & Sun 12PM-12AM

+

Monday-Wednesday: Closed

@@ -328,7 +410,7 @@ export default function LandingPage() {
- +
{groupSize}
- {selectedPackage && groupSize >= 4 && ( + {groupSize === 4 && (

✓ Group discount applied! €40 per person

)} + {groupSize > 4 && ( +

Maximum group size is 4 people. Please contact us for larger groups.

+ )}
@@ -357,6 +442,9 @@ export default function LandingPage() { onChange={(e) => setSelectedDate(e.target.value)} className="w-full border rounded px-3 py-2" /> + {getDateWarning(selectedDate) && ( +

{getDateWarning(selectedDate)}

+ )}
@@ -367,15 +455,16 @@ export default function LandingPage() { className="w-full border rounded px-3 py-2" > - - - - - + {getAvailableTimes(selectedDate).map(time => ( + + ))} + {selectedDate && getAvailableTimes(selectedDate).length === 0 && ( +

No available times for this date

+ )}
- {selectedPackage && ( + {selectedPackage && groupSize <= 4 && (

Price per person

€{calculatePrice(packagePrices[selectedPackage], groupSize).toFixed(2)}

@@ -383,9 +472,16 @@ export default function LandingPage() {
)} + {groupSize > 4 && ( +
+

Group size exceeds maximum

+

For groups larger than 4 people, please contact us at bookings@rageroomvienna.local

+
+ )} +