diff --git a/src/App.tsx b/src/App.tsx index 501c93c..7785ff3 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -55,6 +55,8 @@ export default function App() { className="min-h-screen main-content" style={{ backgroundColor: '#FFFFFF' }} > + + {/* Home Page */} } /> @@ -120,6 +122,8 @@ export default function App() { {/* 404 Page */} } /> + + {/* Add AIChatbot to all pages */} @@ -133,7 +137,6 @@ export default function App() { function HomePage() { return ( <> - @@ -144,7 +147,6 @@ function HomePage() { - > ); } diff --git a/src/components/BookingModal.tsx b/src/components/BookingModal.tsx new file mode 100644 index 0000000..c3828fa --- /dev/null +++ b/src/components/BookingModal.tsx @@ -0,0 +1,201 @@ +import React, { useState } from "react"; +import { Calendar } from "lucide-react"; +import { Button } from "./ui/button"; +import { Input } from "./ui/input"; +import { Label } from "./ui/label"; +import { Textarea } from "./ui/textarea"; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "./ui/select"; +import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "./ui/dialog"; + +interface BookingFormData { + companyName: string; + contactName: string; + email: string; + phone: string; + role: string; + teamSize: string; + facilityZone: string; + additionalRequirements: string; +} + +interface BookingModalProps { + isOpen: boolean; + onClose: () => void; + initialFacilityZone?: string; +} + +export function BookingModal({ isOpen, onClose, initialFacilityZone = "" }: BookingModalProps) { + const [bookingForm, setBookingForm] = useState({ + companyName: '', + contactName: '', + email: '', + phone: '', + role: '', + teamSize: '', + facilityZone: initialFacilityZone, + additionalRequirements: '' + }); + + const handleBookingSubmit = (e: React.FormEvent) => { + e.preventDefault(); + console.log('Booking form submitted:', bookingForm); + // Here you would typically send the form data to your backend + alert('Booking request submitted successfully! We will contact you within 24 hours.'); + onClose(); + }; + + const updateFormField = (field: keyof BookingFormData, value: string) => { + setBookingForm(prev => ({ ...prev, [field]: value })); + }; + + return ( + { + if (!open) { + onClose(); + } + }}> + + + Book Our Learning Facility + + Submit your booking request and we'll get back to you within 24 hours to confirm availability and discuss your requirements. + + + + + + + Company/Organization Name * + updateFormField('companyName', e.target.value)} + placeholder="Enter company name" + required + className="text-body" + /> + + + + Contact Person * + updateFormField('contactName', e.target.value)} + placeholder="Enter your full name" + required + className="text-body" + /> + + + + + + Email Address * + updateFormField('email', e.target.value)} + placeholder="your.email@company.com" + required + className="text-body" + /> + + + + Phone Number + updateFormField('phone', e.target.value)} + placeholder="+1 (555) 123-4567" + className="text-body" + /> + + + + + + Your Role/Position + updateFormField('role', e.target.value)} + placeholder="e.g., Training Manager, HR Director" + className="text-body" + /> + + + + Expected Group Size * + updateFormField('teamSize', value)}> + + + + + 1-10 participants + 11-25 participants + 26-50 participants + 51-80 participants + 80+ participants + + + + + + + Preferred Learning Zone + updateFormField('facilityZone', value)}> + + + + + Training Amphitheater (80-120 people) + Collaboration Suites (4-8 people) + Outdoor Learning Pavilion (20-40 people) + Multiple zones needed + Flexible - advise best option + + + + + + Additional Requirements + updateFormField('additionalRequirements', e.target.value)} + placeholder="Please share any specific requirements, preferred dates, catering needs, accommodation requirements, etc." + rows={4} + className="text-body resize-none" + /> + + + + + Cancel + + + + Submit Booking Request + + + + + + ); +} \ No newline at end of file diff --git a/src/components/Navigation.tsx b/src/components/Navigation.tsx index a3dc475..e208679 100644 --- a/src/components/Navigation.tsx +++ b/src/components/Navigation.tsx @@ -1,14 +1,39 @@ -import React, { useState, useEffect } from 'react'; -import { Button } from './ui/button'; +import klcLogo from 'figma:asset/e98caa8afd8d11246bbff1dde75bbaae6f6a0894.png'; +import { + ArrowRight, + BookMarked, + ChevronDown, + ChevronRight, + Eye, + GraduationCap, + Heart, + LayoutDashboard, + Lightbulb, + LogOut, + Menu, + Podcast, + Settings, + ShoppingCart, + Star, + Target, + TrendingUp, + User, + Users +} from 'lucide-react'; +import { useEffect, useState } from 'react'; +import { useAuth } from './AuthContext'; +import { useCart } from './CartContext'; +import { navigateTo } from './Router'; import { Avatar, AvatarFallback, AvatarImage } from './ui/avatar'; -import { Badge } from './ui/badge'; +import { Button } from './ui/button'; +import { Collapsible, CollapsibleContent, CollapsibleTrigger } from './ui/collapsible'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, - DropdownMenuTrigger, - DropdownMenuSeparator, DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuTrigger, } from './ui/dropdown-menu'; import { Sheet, @@ -17,50 +42,6 @@ import { SheetTitle, SheetTrigger, } from './ui/sheet'; -import { Collapsible, CollapsibleContent, CollapsibleTrigger } from './ui/collapsible'; -import { navigateTo } from './Router'; -import { useAuth } from './AuthContext'; -import { useCart } from './CartContext'; -import { ImageWithFallback } from './figma/ImageWithFallback'; -import { PrimaryCTAButton } from './PrimaryCTAButton'; -import { StandardCTAButton } from './StandardCTAButton'; -import klcLogo from 'figma:asset/e98caa8afd8d11246bbff1dde75bbaae6f6a0894.png'; -import { - Menu, - ChevronDown, - ChevronRight, - Building2, - User, - Settings, - LogOut, - LayoutDashboard, - Users, - Target, - Award, - Lightbulb, - GraduationCap, - BookOpen, - Video, - FileText, - Eye, - Heart, - MapPin, - Calendar, - Play, - Home, - Monitor, - Headphones, - Globe, - Download, - Clock, - TrendingUp, - Star, - BookMarked, - Podcast, - Building, - ShoppingCart, - ArrowRight -} from 'lucide-react'; interface NavigationProps { currentPage?: string; @@ -598,7 +579,8 @@ export function Navigation({ currentPage }: NavigationProps) { className="management-dev-glassmorphic-btn text-body px-8 py-4 min-h-[52px] border transition-all duration-300 group" style={{ fontFamily: 'var(--font-family-base)', - color: '#04045B' + color: '#04045B', + backgroundColor: '#04045b', }} > Start Leadership Journey diff --git a/src/styles/globals.css b/src/styles/globals.css index b6bf00a..5df1d49 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -2470,7 +2470,7 @@ html { /* Management Development Section - Glassmorphic Download Button */ .management-dev-glassmorphic-btn { - background: rgba(4, 4, 91, 0.15) !important; /* Semi-transparent blue */ + background: #04045b !important; /* Semi-transparent blue */ backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; border: 1px solid rgba(255, 255, 255, 0.2) !important; @@ -2508,7 +2508,7 @@ html { /* Enhanced hover effect with glassmorphism */ .management-dev-glassmorphic-btn:hover { - background: rgba(4, 4, 91, 0.25) !important; + /* background: rgba(4, 4, 91, 0.25) !important; */ border-color: rgba(255, 255, 255, 0.3) !important; box-shadow: 0 12px 40px rgba(4, 4, 91, 0.2),