{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/De7vbaUBiehwrtrjz26L/Uvg8pTrVUtu9sbURLPjn/Booking.js", "ssg:https://framerusercontent.com/modules/bvSvr6S6Mq7jrcfJenUO/2ZhWpvKT6cSh3v0dgdx2/xOMoucACr.js"],
  "sourcesContent": ["function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{useEffect,useCallback}from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{motion,AnimatePresence}from\"framer-motion\";// Environment detection utilities\nconst Environment={// Single source of truth for environment detection\ndetect:()=>{if(typeof window===\"undefined\")return{isMobile:false,isWebView:false,hasAnimationSupport:true};const ua=window.navigator.userAgent.toLowerCase();const isMobile=window.innerWidth<768||/android|iphone|ipad|ipod|mobile/.test(ua);const isWebView=/android.*wv/.test(ua)||ua.includes(\"android\")&&ua.includes(\"chrome\")&&ua.includes(\"mobile\");// Check for specific animation support issues\nconst hasAnimationSupport=!isWebView||typeof window.requestAnimationFrame===\"function\";return{isMobile,isWebView,hasAnimationSupport};},// Apply safety measures based on environment\napplySafetyMeasures:()=>{if(typeof window===\"undefined\")return;const env=Environment.detect();if(!env.hasAnimationSupport){// Mark document for CSS targeting\ndocument.documentElement.classList.add(\"safe-mode-animations\");// Provide safe fallbacks for common animation functions\nif(!window.requestAnimationFrame){window.requestAnimationFrame=cb=>setTimeout(cb,16);}if(!window.cancelAnimationFrame){window.cancelAnimationFrame=id=>clearTimeout(id);}// Generic error handler for animation methods\nwindow.addEventListener(\"error\",event=>{const errorMsg=event.message||\"\";// If error is related to undefined properties that look like animation operations\nif(errorMsg.includes(\"Cannot read properties of undefined\")&&/Event|animation|Screen|Size|Position|transition|transform/i.test(errorMsg)){// Prevent default error behavior\nevent.preventDefault();event.stopPropagation();// Log to console but not to Sentry\nconsole.warn(\"Animation-related error suppressed:\",errorMsg);return true// Prevent error from propagating\n;}return false// Let other errors propagate normally\n;},true);}}};class AnimationErrorBoundary extends React.Component{static getDerivedStateFromError(error){// If we detect an animation-related error, we'll render the fallback\nconst isAnimationError=error&&error.message&&(error.message.includes(\"Cannot read properties of undefined\")||error.message.includes(\"animation\")||error.message.includes(\"transition\"));return{hasError:true,isAnimationError:!!isAnimationError};}componentDidCatch(error,errorInfo){// We can still log the error for debugging\nconsole.warn(\"Animation component error:\",error);// Only report non-animation errors to Sentry\nif(!error.message||!error.message.includes(\"Cannot read properties of undefined\")){if(typeof window!==\"undefined\"&&window.Sentry){window.Sentry?.withScope(scope=>{scope.setExtra(\"errorInfo\",errorInfo);scope.setTag(\"component\",\"AnimationErrorBoundary\");window.Sentry?.captureException(error);});}}}render(){if(this.state.hasError){// We can render a fallback UI\nreturn /*#__PURE__*/_jsx(\"div\",{...this.props.fallbackProps,children:this.props.children});}return this.props.children;}constructor(props){super(props);_define_property(this,\"state\",void 0);this.state={hasError:false};}}// Safe motion component that uses error boundary and environment detection\nconst SafeMotion=props=>{const env=React.useMemo(()=>Environment.detect(),[]);// For problematic environments, return a regular div without animations\nif(!env.hasAnimationSupport){const{initial,animate,exit,transition,...otherProps}=props;return /*#__PURE__*/_jsx(\"div\",{...otherProps,children:props.children});}// Otherwise use motion component with error boundary\nreturn /*#__PURE__*/_jsx(AnimationErrorBoundary,{fallbackProps:props,children:/*#__PURE__*/_jsx(motion.div,{...props})});};// Form initial state\nconst initialFormState={firstName:\"\",lastName:\"\",email:\"\",phone:\"\",message:\"\",selectedDate:\"\",selectedTime:\"\"};// Main Booking Component\nexport function SquareBookingSystem(props){// At the beginning of the component, ensure we use props.cloudFunctionUrl\nconst apiEndpoint=props.cloudFunctionUrl;// Time zone adjustments for Eastern Time\nconst isDST=(dateString=null)=>{// Use the provided date or today's date if none provided\nconst date=dateString?new Date(dateString):new Date;const year=date.getFullYear();const month=date.getMonth()+1// JavaScript months are 0-indexed\n;const day=date.getDate();// For debugging\n// console.log(\n//     `isDST check for ${dateString}: year=${year}, month=${month}, day=${day}`\n// )\n// Special case for March 9, 2025 - handle differently due to known issues with Square\nif(year===2025&&month===3&&day===9){// console.log(\n//     \"Special case detected: March 9, 2025 (DST transition day)\"\n// )\n// console.log(\n//     \"Based on testing with Square, we need to handle this date specially\"\n// )\n// Through testing, we discovered that Square treats this date in a unique way\n// We're returning true here to ensure the frontend and backend handling is consistent\nreturn true;}if(month>3&&month<11)return true// Definitely in DST (April to October)\n;if(month<3||month>11)return false// Definitely not in DST (December to February)\n;// Handle March (3) and November (11)\nif(month===3){// DST starts on second Sunday in March\nconst secondSunday=new Date(year,2,1);secondSunday.setDate(secondSunday.getDate()+(14-secondSunday.getDay())%7);// Get the day of the second Sunday\nconst secondSundayDay=secondSunday.getDate();// On the transition day, we need special handling\nif(day===secondSundayDay){// console.log(\n//     `Transition day in March detected: ${month}/${day}/${year}`\n// )\n// DST officially begins at 2:00 AM\nreturn true;}// For other days in March, compare the date\nreturn day>secondSundayDay;}if(month===11){// DST ends on first Sunday in November\nconst firstSunday=new Date(year,10,1);firstSunday.setDate(firstSunday.getDate()+(7-firstSunday.getDay())%7);// Get the day of the first Sunday\nconst firstSundayDay=firstSunday.getDate();// Special case: If it's exactly the first Sunday (DST transition day)\nif(day===firstSundayDay){// console.log(\n//     `Transition day in November detected: ${month}/${day}/${year}`\n// )\n// On the transition day ending DST, consider if it's before 2 AM (still DST)\n// or after 2 AM (no longer DST)\n// For bookings, we'll simplify and just return false since we want EST time\nreturn false;}// For other days in November, compare the date\nreturn day<firstSundayDay;}return false;};// Helper function to determine if a date is a DST transition day (start or end)\nconst isDateDstTransitionDay=dateString=>{if(!dateString)return false;const date=new Date(dateString);const year=date.getFullYear();const month=date.getMonth()+1// JavaScript months are 0-indexed\n;const day=date.getDate();// Only March and November have transition days\nif(month!==3&&month!==11)return false;if(month===3){// DST starts on second Sunday in March\nconst secondSunday=new Date(year,2,1);secondSunday.setDate(secondSunday.getDate()+(14-secondSunday.getDay())%7);// Check if this is the second Sunday\nreturn day===secondSunday.getDate();}if(month===11){// DST ends on first Sunday in November\nconst firstSunday=new Date(year,10,1);firstSunday.setDate(firstSunday.getDate()+(7-firstSunday.getDay())%7);// Check if this is the first Sunday\nreturn day===firstSunday.getDate();}return false;};const ET_OFFSET=isDST()?-4:-5// EDT or EST offset from UTC\n;const LOCAL_OFFSET=new Date().getTimezoneOffset()/60;const TIMEZONE_ADJUSTMENT=ET_OFFSET+LOCAL_OFFSET;// Helper to create a date in Eastern Time\nconst createETDate=dateString=>{// For date strings like \"2025-03-12\", we need to handle them specially\n// to avoid timezone conversion issues\nif(dateString.match(/^\\d{4}-\\d{2}-\\d{2}$/)){// Split the date string into components\nconst[year,month,day]=dateString.split(\"-\").map(Number);// Create a date using Eastern Time components (ensures correct date)\n// month is 0-indexed in JavaScript Date\nconst etDate=new Date;etDate.setFullYear(year,month-1,day);etDate.setHours(12,0,0,0)// Set to noon to avoid any date boundary issues\n;return etDate;}// For datetime strings, use the previous logic\nconst date=new Date(dateString);const utcDate=new Date(date.getTime()+date.getTimezoneOffset()*6e4);return new Date(utcDate.getTime()+ET_OFFSET*36e5);};// Helper to display a date in UI correctly showing ET\nconst formatDateForDisplay=(dateString,options)=>{if(!dateString)return\"\";return createETDate(dateString).toLocaleDateString(\"en-US\",options);};// State declarations\nconst[formData,setFormData]=React.useState(initialFormState);const[isLoading,setIsLoading]=React.useState(false);const[step,setStep]=React.useState(1);const[availableDates,setAvailableDates]=React.useState([]);const[errors,setErrors]=React.useState({});const[bookingConfirmed,setBookingConfirmed]=React.useState(false);const[bookingError,setBookingError]=React.useState(\"\");const[bookingId,setBookingId]=React.useState(null);const[calendarView,setCalendarView]=React.useState(\"week\");const[viewingDate,setViewingDate]=React.useState(new Date);const[customerId,setCustomerId]=React.useState(null);const[isCreatingCustomer,setIsCreatingCustomer]=React.useState(false);const[lastCachedFormData,setLastCachedFormData]=React.useState({firstName:\"\",lastName:\"\",email:\"\",phone:\"\"});const[isMobile,setIsMobile]=React.useState(false);const[nextAvailableDate,setNextAvailableDate]=React.useState(null);const[dateAnimationDirection,setDateAnimationDirection]=React.useState(\"slide-next-in\");const[animationKey,setAnimationKey]=React.useState(0);const[previousDates,setPreviousDates]=React.useState([]);const[safeAreaBottom,setSafeAreaBottom]=React.useState(\"env(safe-area-inset-bottom, 20px)\");// Initialize Sentry if it's available\nuseEffect(()=>{if(typeof window!==\"undefined\"&&window.Sentry){try{// Configure Sentry to properly handle cross-origin errors\nif(window.Sentry.init){window.Sentry.init({crossOrigin:\"anonymous\",// Add error filter to ignore specific errors we can't fix\nbeforeSend(event){// Get environment information\nconst env=Environment.detect();// Skip animation errors in environments with known issues\nif(event?.exception?.values?.[0]?.value){const errorValue=event.exception.values[0].value;// Create a pattern-based approach instead of hardcoded values\nconst isAnimationError=errorValue.includes(\"Cannot read properties of undefined\")&&// Using regex to match animation-related properties\n/Event|animation|Screen|Size|Position|transition|transform|volume|ready/i.test(errorValue);if(isAnimationError&&!env.hasAnimationSupport){// Only report a sample of animation errors (1 in 20)\n// This avoids flooding Sentry but still lets you monitor\n// if they're still happening\nif(Math.random()<.05){return{...event,level:\"warning\",exception:{values:[{type:\"AnimationWarning\",value:\"Animation not fully supported in this environment (sampled)\",stacktrace:event.exception.values[0].stacktrace}]}};}return null// Skip sending this event\n;}}return event;}});}// Set user info in Sentry if available\nwindow.Sentry?.configureScope(scope=>{scope.setTag(\"component\",\"SquareBookingSystem\");// Also set environment tags\nconst env=Environment.detect();scope.setTag(\"env.isMobile\",String(env.isMobile));scope.setTag(\"env.isWebView\",String(env.isWebView));scope.setTag(\"env.hasAnimationSupport\",String(env.hasAnimationSupport));});// Apply environment safety measures immediately\nEnvironment.applySafetyMeasures();}catch(setupError){// Avoid crashes if Sentry setup fails\nconsole.error(\"Error setting up Sentry:\",setupError);}}},[]);// Helper function to log errors to Sentry\nconst logError=(error,context)=>{// First, comment out any console.error statements to prevent leaking data\n// console.error(`Error in ${context}:`, error);\n// Log to Sentry if available\nif(typeof window!==\"undefined\"&&window.Sentry){if(typeof error===\"string\"){window.Sentry?.captureMessage(`${context}: ${error}`,\"error\");}else{window.Sentry?.withScope(scope=>{scope.setExtra(\"context\",context);window.Sentry?.captureException(error);});}}};// Check if mobile view and apply environment safety measures\nuseEffect(()=>{// Use our Environment utility for consistent detection\nconst env=Environment.detect();setIsMobile(env.isMobile);// Set up resize listener\nconst checkIsMobile=()=>{const updatedEnv=Environment.detect();setIsMobile(updatedEnv.isMobile);};window.addEventListener(\"resize\",checkIsMobile);// Setup CSS variables for safe areas\ndocument.documentElement.style.setProperty(\"--safe-area-inset-bottom\",\"env(safe-area-inset-bottom, 20px)\");// Apply safety measures for animation-related issues\nEnvironment.applySafetyMeasures();return()=>{window.removeEventListener(\"resize\",checkIsMobile);};},[]);// Use effect to select the first available date when changing to step 2\nuseEffect(()=>{if(step===2&&!formData.selectedDate&&availableDates.length>0){// Find the first available date after today\nconst today=new Date;today.setHours(0,0,0,0);// Sort dates chronologically\nconst sortedDates=[...availableDates].sort((a,b)=>new Date(a.date).getTime()-new Date(b.date).getTime());// Find first date after today with available timeslots\nconst nextDate=sortedDates.find(date=>{const dateObj=new Date(date.date);return dateObj>=today&&date.timeslots.length>0;});if(nextDate){// Find which view this date belongs to\nconst dateObj=new Date(nextDate.date);// Update the viewing date to show this date's week/set\nsetViewingDate(dateObj);// Select this date\nhandleDateSelect(nextDate.date);}}},[step,availableDates]);// Style constants for consistent fonts and sizes\nconst FONT_STYLES={fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',heading:{fontSize:\"20px\",fontWeight:\"700\"},subheading:{fontSize:\"15px\",fontWeight:\"600\"},normal:{fontSize:\"14px\",fontWeight:\"400\"},small:{fontSize:\"13px\",fontWeight:\"400\"},button:{fontSize:\"14px\",fontWeight:\"550\"}};// Design constants to match the contact form\nconst COLORS={accent:\"#FA574B\",accentBg:\"#FFECEB\",text:\"#000000\",lightText:\"#999999\",inputBg:\"rgb(242, 242, 242)\",border:\"#E0E0E0\",background:\"#FFFFFF\",lightBg:\"#F5F5F5\",selectedBg:\"#FFECEB\",selectedText:\"#FA574B\",buttonBg:\"rgb(74, 74, 74)\",radius:\"8px\"};// Generate calendar dates (fallback function if API fails)\nconst generateCalendarDates=useCallback(()=>{const dates=[];const now=new Date;for(let i=0;i<30;i++){// Create a date in browser's local time\nconst localDate=new Date(now);localDate.setDate(now.getDate()+i);// Convert to a date string\nconst dateString=localDate.toISOString().split(\"T\")[0];// Create a new date object adjusted to Eastern Time\nconst etDate=createETDate(dateString);// Skip past dates and Sundays (if your business is closed on Sundays)\nif(etDate<now||etDate.getDay()===0){continue;}// Format date as yyyy-mm-dd - use the original date string but ensure it represents an ET date\nconst formattedDate=etDate.toISOString().split(\"T\")[0];// Generate random time slots (in a real app, these would come from Square API)\nconst timeslots=[];if(Math.random()>.3){// 70% chance this date has availability\nconst startHour=9;const endHour=21// Extend to 9pm to match test.js\n;for(let hour=startHour;hour<endHour;hour++){if(Math.random()>.5){// 50% chance this hour is available\ntimeslots.push({time:`${hour}:00`,teamMemberId:Math.random()>.5?\"team-member-1\":undefined});}if(Math.random()>.5){timeslots.push({time:`${hour}:30`,teamMemberId:Math.random()>.5?\"team-member-2\":undefined});}}}if(timeslots.length>0){dates.push({date:formattedDate,timeslots:timeslots.sort((a,b)=>a.time.localeCompare(b.time))});}}return dates;},[]);// Fetch availability using the Cloud Function\nconst fetchAvailability=useCallback(async()=>{setIsLoading(true);try{// Call the Google Cloud Function to get availability\nconst response=await fetch(apiEndpoint,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({action:\"getAvailability\"}),mode:\"cors\",credentials:\"omit\"});const data=await response.json();if(response.ok&&data.availableDates){// Add some debugging\nconst filteredDates=data.availableDates.filter(d=>d.timeslots&&d.timeslots.length>0);// console.log(\n//     `Availability: Found ${filteredDates.length} dates with timeslots`\n// )\nsetAvailableDates(data.availableDates);return data.availableDates;}else{// Instead of using generated dates, set an error state\n// console.error(\"Error fetching availability:\", data)\nlogError(`Error fetching availability: ${JSON.stringify(data.error||data)}`,\"fetchAvailability\");setBookingError(\"We're having trouble connecting to our booking system.\");setAvailableDates([])// Empty array instead of fake data\n;return[];}}catch(error){// Instead of using generated dates, set an error state\n// console.error(\"Error fetching availability:\", error)\nlogError(error,\"fetchAvailability\");setBookingError(\"We're having trouble connecting to our booking system.\");setAvailableDates([])// Empty array instead of fake data\n;return[];}finally{setIsLoading(false);}},[apiEndpoint]);// Improved email validation\nconst isValidEmail=email=>{// Basic format check (allows most valid email formats)\nconst basicCheck=/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);if(!basicCheck)return false;// Additional checks\nconst parts=email.split(\"@\");if(parts.length!==2)return false;const[localPart,domainPart]=parts;// Domain should have at least one dot\nif(!domainPart.includes(\".\"))return false;// Domain should be at least 4 characters (a.bc)\nif(domainPart.length<4)return false;// Domain should not start or end with dot\nif(domainPart.startsWith(\".\")||domainPart.endsWith(\".\"))return false;return true;};// Validate form fields\nconst validateForm=()=>{try{const newErrors={};if(!formData.firstName||!formData.firstName.trim()){newErrors.firstName=\"First name is required\";}if(!formData.lastName||!formData.lastName.trim()){newErrors.lastName=\"Last name is required\";}if(!formData.email||!formData.email.trim()){newErrors.email=\"Email is required\";}else if(!isValidEmail(formData.email)){newErrors.email=\"Please enter a valid email address\";}// For phone validation, use our rawPhoneDigits state\nif(!rawPhoneDigits||rawPhoneDigits.length===0){newErrors.phone=\"Phone number is required\";}else if(rawPhoneDigits.length!==10){newErrors.phone=\"Phone number must be 10 digits\";}setErrors(newErrors);return Object.keys(newErrors).length===0;}catch(error){// If any error occurs during validation, log it and return false\nlogError(error,\"validateForm\");// Set a generic error for all fields to ensure the form doesn't proceed\nconst safeErrors={firstName:\"Please check your information and try again\",lastName:\"Please check your information and try again\",email:\"Please check your information and try again\",phone:\"Please check your information and try again\"};setErrors(safeErrors);return false;}};// Simplified createOrLookupCustomer function\nconst createOrLookupCustomer=async()=>{try{// Check if we have all required contact info\nif(!formData.firstName||!formData.lastName||!formData.email||!formData.phone){logError(\"Attempted customer lookup with incomplete contact info\",\"createOrLookupCustomer\");return{success:false};}// Perform customer lookup\nconst result=await createOrFetchCustomerId();if(result.success&&result.customerId){// Store customer ID - simple approach\nsetCustomerId(result.customerId);// console.log(\n//     \"Successfully retrieved customer ID:\",\n//     result.customerId\n// )\nreturn{success:true,customerId:result.customerId};}else{logError(\"Failed to get customer ID\",\"createOrLookupCustomer\");return{success:false};}}catch(error){logError(error,\"createOrLookupCustomer\");return{success:false};}};// Simplified createBooking function - now accepts customerId as a parameter\nconst createBooking=async currentCustomerId=>{try{// console.log(\"Creating booking with customerId:\", currentCustomerId)\n// Validate we have a customer ID and complete form data\nif(!currentCustomerId){const errorMsg=\"Customer ID is missing for booking\";logError(errorMsg,\"createBooking\");setBookingError(\"There was an error with your customer information. Please try again.\");return false;}if(!formData.firstName||!formData.lastName||!formData.email||!formData.phone){const errorMsg=\"Cannot create booking with incomplete contact information\";logError(errorMsg,\"createBooking\");setBookingError(\"Please fill out all required contact information.\");return false;}// Your API endpoint\nlet apiUrl=apiEndpoint;if(!apiUrl){apiUrl=SquareBookingSystem.defaultProps.cloudFunctionUrl;}// Check if this is a DST transition day\nconst[year,month,day]=formData.selectedDate.split(\"-\").map(Number);const[bookingHours,bookingMinutes]=formData.selectedTime.split(\":\").map(Number);// Get the second Sunday in March (DST start)\nconst isDstTransitionDay=isDateDstTransitionDay(formData.selectedDate);// Determine if this date is normally in DST\nlet isDstForDate=isDST(formData.selectedDate);// Log comprehensive debug info\n// console.log(\n//     `Booking date: ${formData.selectedDate}, isDST result: ${isDstForDate}`\n// )\n// console.log(\n//     `Is DST transition day: ${isDstTransitionDay ? \"YES\" : \"NO\"}`\n// )\n// For DST transition days, we need to be extra explicit\nif(isDstTransitionDay){// For March transition day (DST start), we want to use EDT rules\nif(month===3){// console.log(\n//     `\u26A0\uFE0F DST START transition day detected: ${formData.selectedDate}`\n// )\n// console.log(\n//     `\uD83D\uDEA8 CRITICAL: Setting isDST=true for this date to ensure correct Square handling`\n// )\n// Force DST=true for March transition day\nisDstForDate=true;}else if(month===11){// console.log(\n//     `\u26A0\uFE0F DST END transition day detected: ${formData.selectedDate}`\n// )\n// console.log(`Setting isDST=false for this date`)\n// Force DST=false for November transition day\nisDstForDate=false;}}// March 9, 2025 specific handling - keep this for backward compatibility\nif(year===2025&&month===3&&day===9){// console.log(\n//     `\uD83D\uDD0E Special handling for March 9, 2025 (DST transition day)`\n// )\n// console.log(\n//     `Based on testing, Square applies special DST handling for this date`\n// )\n// Special case: We're forcing isDST to true for this date\n// because Square is applying a different time conversion on their end\nisDstForDate=true;// console.log(\n//     `Setting isDST=${isDstForDate} for March 9, 2025 booking`\n// )\n// console.log(\n//     `This ensures the time shown in Square matches what the customer expects (${bookingHours}:${bookingMinutes.toString().padStart(2, \"0\")} ET)`\n// )\n}// Format data for the API\nconst requestBody={action:\"createBooking\",firstName:formData.firstName,lastName:formData.lastName,email:formData.email,phone:formData.phone,message:formData.message,customerId:currentCustomerId,selectedDate:formData.selectedDate,selectedTime:formData.selectedTime,teamMemberId:formData.teamMemberId,locationId:props.locationId,serviceId:props.serviceId,isDST:isDstForDate};// console.log(\"Sending booking request with data:\", {\n//     ...requestBody,\n//     phone: \"REDACTED\",\n// })\n// Send the booking request\nconst response=await fetch(apiUrl,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(requestBody),mode:\"cors\",credentials:\"omit\"});const bookingData=await response.json();// console.log(\"Booking response:\", bookingData)\nif(response.ok){// Store created booking ID\nconst id=bookingData.booking?.id||\"unknown\";// console.log(\"Setting booking ID:\", id)\nsetBookingId(id);// Set booking confirmed state\nsetBookingConfirmed(true);setBookingError(\"\");// Show booking confirmed step\nsetStepWithUrlUpdate(3);// Clean up after successful booking\nsetTimeout(()=>{// Reset customer ID for any future bookings\nsetCustomerId(null);},1e3);return true;}else{setBookingError(bookingData.message||\"Failed to create booking. Please try again.\");return false;}}catch(error){// console.error(\"Error creating booking:\", error)\nsetBookingError(\"An error occurred while creating your booking. Please try again.\");return false;}};const createOrFetchCustomerId=async()=>{try{let attempts=0;let apiUrl=apiEndpoint||SquareBookingSystem.defaultProps.cloudFunctionUrl;// SAFETY CHECK: Ensure we have a valid email before attempting customer lookup\nif(!formData.email||!formData.firstName||!formData.lastName||!formData.phone){logError(\"Attempted customer lookup with incomplete contact info\",\"createOrFetchCustomerId\");return{success:false,message:\"Complete contact information is required\"};}while(attempts<3){if(attempts>0){// Add a small delay before retrying\nawait new Promise(resolve=>setTimeout(resolve,1e3*attempts));}// console.log(`Direct customer lookup attempt ${attempts}`)\nconst response=await fetch(apiUrl,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({action:\"findOrCreateCustomer\",firstName:formData.firstName,lastName:formData.lastName,email:formData.email,phone:formData.phone}),mode:\"cors\",credentials:\"omit\"});// Handle response\nif(response.ok){const data=await response.json();// console.log(`Customer API response:`, data)\n// Verify the response has a valid customer ID\nif(data.customerId){return{success:true,customerId:data.customerId,isNewCustomer:data.isNewCustomer||false};}}attempts++;}logError(\"All direct customer lookup attempts failed\",\"createOrFetchCustomerId\");return{success:false};}catch(error){logError(error,\"createOrFetchCustomerId\");return{success:false};}};// Format phone number as (XXX) XXX-XXXX for display purposes only\nconst formatPhoneNumber=value=>{// Remove all non-digit characters\nconst digitsOnly=value.replace(/\\D/g,\"\").substring(0,10);// Format the phone number based on length\nif(digitsOnly.length===0){return\"\";}else if(digitsOnly.length<3){return digitsOnly;}else if(digitsOnly.length<6){return`(${digitsOnly.slice(0,3)}) ${digitsOnly.slice(3)}`;}else{return`(${digitsOnly.slice(0,3)}) ${digitsOnly.slice(3,6)}-${digitsOnly.slice(6,10)}`;}};// Reference to track raw phone digits\nconst[rawPhoneDigits,setRawPhoneDigits]=React.useState(\"\");// Handle form input changes\nconst handleInputChange=e=>{try{const{name,value}=e.target;if(name===\"phone\"){// Get the current and previous values\nconst previousValue=formData.phone;const currentValue=value;// Check if this is a potential backspace operation (value is shorter than previous)\nconst isBackspace=currentValue.length<previousValue.length;// Calculate cursor position\nconst cursorPosition=e.target.selectionStart;// Check if we're dealing with a backspace over a formatting character\nif(isBackspace&&cursorPosition<previousValue.length&&/[\\(\\)\\s-]/.test(previousValue.charAt(cursorPosition))&&currentValue===previousValue.substring(0,cursorPosition)+previousValue.substring(cursorPosition+1)){// Handle backspace over a formatting character\n// Extract all digits from previous value\nconst allDigits=previousValue.replace(/\\D/g,\"\");// Count digits up to the cursor position to find which digit to remove\nconst digitsBeforeCursor=previousValue.substring(0,cursorPosition).replace(/\\D/g,\"\").length;// If we're right after a formatting character, remove the digit before it\nif(digitsBeforeCursor>0){// Remove the digit at the right position\nconst newDigitsOnly=allDigits.substring(0,digitsBeforeCursor-1)+allDigits.substring(digitsBeforeCursor);// Format and update\nconst formattedValue=formatPhoneNumber(newDigitsOnly);setRawPhoneDigits(newDigitsOnly);// Update form state\nsetFormData(prev=>({...prev,[name]:formattedValue}));// Set cursor position after React update\nsetTimeout(()=>{try{const input=document.getElementsByName(name)[0];if(input){// Position cursor where it makes sense based on the deleted digit\nconst newPosition=Math.max(0,cursorPosition-1);input.setSelectionRange(newPosition,newPosition);}}catch(error){// Silently handle any cursor positioning errors\nconsole.error(\"Error positioning cursor:\",error);}},0);return;}}// For regular input changes, continue with normal handling\n// Extract only the digits and limit to 10\nconst digitsOnly=value.replace(/\\D/g,\"\").substring(0,10);// Store raw digits for validation\nsetRawPhoneDigits(digitsOnly);// Format for display\nconst formattedValue=formatPhoneNumber(digitsOnly);// Update form state with formatted value\nsetFormData(prev=>({...prev,[name]:formattedValue}));// Clear any validation errors for this field as the user types\nif(errors[name]){setErrors(prev=>({...prev,[name]:null}));}// If in step 2 and value changed, reset customer ID\nif(step===2&&formData[name]!==formattedValue){setCustomerId(null);}return;}// For non-phone fields\n// If any key contact field changes and we're in step 2, reset the customer ID\nif(step===2&&[\"firstName\",\"lastName\",\"email\",\"phone\"].includes(name)&&formData[name]!==value){// Only reset if the value is actually changing\nsetCustomerId(null);}setFormData(prev=>({...prev,[name]:value}));// Clear any validation errors for this field as the user types\nif(errors[name]){setErrors(prev=>({...prev,[name]:null}));}}catch(error){// Log any errors that occur during input handling\nlogError(error,\"handleInputChange\");// Make sure we don't leave the form in a broken state\ntry{const{name,value}=e.target;// Fall back to simple updates without formatting or validation\nif(name===\"phone\"){const digitsOnly=value.replace(/\\D/g,\"\").substring(0,10);setRawPhoneDigits(digitsOnly);setFormData(prev=>({...prev,[name]:formatPhoneNumber(digitsOnly)}));}else{setFormData(prev=>({...prev,[name]:value}));}}catch(fallbackError){// Last resort error handler\nconsole.error(\"Critical error in input handling:\",fallbackError);}}};// Replace the phone input component with a simpler approach\nconst handlePhoneKeyDown=e=>{// Allow: backspace, delete, tab, escape, enter\nif([46,8,9,27,13].indexOf(e.keyCode)!==-1||// Allow: Ctrl/cmd+A, Ctrl/cmd+C, Ctrl/cmd+X\ne.keyCode===65&&(e.ctrlKey===true||e.metaKey===true)||e.keyCode===67&&(e.ctrlKey===true||e.metaKey===true)||e.keyCode===88&&(e.ctrlKey===true||e.metaKey===true)||// Allow: home, end, left, right\ne.keyCode>=35&&e.keyCode<=39){// Let it happen, don't do anything\nreturn;}// Ensure that it is a number and stop the keypress if not\nif((e.shiftKey||e.keyCode<48||e.keyCode>57)&&(e.keyCode<96||e.keyCode>105)){e.preventDefault();}};// Handle date selection - make sure the correct date is set without timezone issues\nconst handleDateSelect=date=>{// For debugging\n// console.log(\"=== Date Selection Debug ===\")\n// console.log(\"Selected date:\", date)\n// console.log(\n//     \"Current viewing date:\",\n//     viewingDate.toISOString().split(\"T\")[0]\n// )\n// First, ensure we set the form data with the correct selected date\nsetFormData(prev=>({...prev,selectedDate:date}));// Create a NEW date object directly from the string to avoid any conversion issues\nconst parts=date.split(\"-\").map(part=>parseInt(part,10));const selectedDateObj=new Date(parts[0],parts[1]-1,parts[2],12,0,0,0);// Log the day of week for debugging\n// console.log(\"Selected date parts:\", parts)\n// console.log(\"Created date object:\", selectedDateObj.toISOString())\n// console.log(\"Selected day of week:\", selectedDateObj.getDay())\n// On desktop, update the viewingDate to center on the selected week\n// On mobile, don't change the viewingDate to prevent shifting\nif(!isMobile){// Set viewingDate to the EXACT selected date for desktop only\nsetViewingDate(selectedDateObj);// console.log(\n//     \"Updated viewingDate to:\",\n//     selectedDateObj.toISOString().split(\"T\")[0]\n// )\n}else{// console.log(\n//     \"Mobile: Keeping viewingDate unchanged to prevent shifting\"\n// )\n}// Handle timeslot selection\nconst availableDateObj=availableDates.find(d=>d.date===date);if(availableDateObj&&availableDateObj.timeslots&&availableDateObj.timeslots.length>0){// console.log(\"Found timeslots for date, selecting first one\")\nhandleTimeSelect(availableDateObj.timeslots[0].time);}else{// Clear the selected time if there are no timeslots for this date\n// console.log(\"No timeslots found for date, clearing selection\")\nsetFormData(prev=>({...prev,selectedTime:\"\"}));}};// Handle time selection\nconst handleTimeSelect=time=>{setFormData(prev=>({...prev,selectedTime:time}));};// Function to update URL parameter without page reload\nconst updateUrlParameter=(paramName,paramValue)=>{if(typeof window!==\"undefined\"){const url=new URL(window.location.href);url.searchParams.set(paramName,paramValue);window.history.pushState({},\"\",url);}};// Custom step setter that also updates URL parameter\nconst setStepWithUrlUpdate=newStep=>{setStep(newStep);// Reset customer ID when going back to step 1\nif(newStep===1){setCustomerId(null);}const stepParams={1:\"booking_start\",2:\"booking_details\",3:\"booking_complete\"};// console.log(\"Setting step:\", newStep)\nif(stepParams[newStep]){updateUrlParameter(\"booking_step\",stepParams[newStep]);// console.log(\"Updated URL parameter:\", stepParams[newStep])\n}};// Update handleSubmit to pass the customer ID directly\nconst handleSubmit=e=>{e.preventDefault();try{if(step===2){// In step 2, we already have date/time and need to create booking\n// Step 1: Clear errors\nsetErrors({});setBookingError(\"\");// Step 2: Validate form - wrap in try/catch to prevent crashes\ntry{const isValid=validateForm();if(!isValid){// If validation failed, errors will be set in validateForm\n// Don't proceed with submission\nreturn;}}catch(validationError){logError(validationError,\"form validation in handleSubmit\");setBookingError(\"An error occurred validating your information. Please try again.\");return;}// Step 3: Set loading state\nsetIsLoading(true);setIsCreatingCustomer(true);// Step 4: Look up or create customer\n// This is the ONLY place we should be getting a customer ID\ncreateOrLookupCustomer().then(result=>{if(result.success&&result.customerId){// Step 5: Create booking with the customer ID we just got\n// Pass the ID directly to avoid React state timing issues\nsetTimeout(()=>{createBooking(result.customerId).then(bookingSuccess=>{if(bookingSuccess){// console.log(\n//     \"Booking successful, showing confirmation page\"\n// )\n}}).catch(error=>{logError(error,\"createBooking in handleSubmit\");setIsLoading(false);setIsCreatingCustomer(false);}).finally(()=>{setIsLoading(false);});},500);}else{// Handle customer lookup failure\nlogError(\"Failed to get customer ID\",\"createOrLookupCustomer in handleSubmit\");// Only show this error if there are no field validation errors\nif(!Object.values(errors).some(error=>error)){setBookingError(\"There was an error creating your profile. Please check your information and try again.\");}setIsLoading(false);setIsCreatingCustomer(false);}}).catch(error=>{logError(error,\"createOrLookupCustomer in handleSubmit\");// Only show this error if there are no field validation errors\nif(!Object.values(errors).some(error=>error)){setBookingError(\"An error occurred while processing your information. Please try again.\");}setIsLoading(false);setIsCreatingCustomer(false);});}else if(formData.selectedDate&&formData.selectedTime){// Move to step 2 (contact form)\nsetStepWithUrlUpdate(2);}}catch(error){logError(error,\"handleSubmit\");// Only show this error if there are no field validation errors\nif(!Object.values(errors).some(error=>error)){setBookingError(\"An unexpected error occurred. Please try again.\");}setIsLoading(false);setIsCreatingCustomer(false);}};// Go to previous step\nconst handleBack=()=>{if(step>1){setStepWithUrlUpdate(step-1)// Use our new function instead of setStep((prev) => prev - 1)\n;}};// Use effect to select the first available timeslot when first loading\nuseEffect(()=>{if(availableDates.length>0&&!formData.selectedDate&&step===1){// Make sure we're not defaulting to today if there are no timeslots\nhandleNextAvailable();}},[availableDates,step]);// Effect to handle initial loading of data\nuseEffect(()=>{// This is only run once when the component mounts\nif(apiEndpoint){fetchAvailability().then(dates=>{// If we got no dates due to an error, don't try to select a default\nif(dates.length===0){setStep(1)// Ensure we're on step 1 to show the error\n;}// Otherwise the normal useEffect above will handle selection\n});}else{// No cloud function URL, show error instead of mock data\nsetBookingError(\"We're having trouble connecting to our booking system.\");setAvailableDates([]);}},[apiEndpoint]);// Helper to check if a date has available timeslots\nconst hasAvailableTimeslots=dateString=>{const dateObj=availableDates.find(d=>d.date===dateString);return!!(dateObj&&dateObj.timeslots&&dateObj.timeslots.length>0);};// Helper function to generate week dates - show 7 days for desktop, 4 for mobile\nconst generateWeekDates=(currentDate=new Date)=>{// console.log(\n//     \"generateWeekDates called with date:\",\n//     new Date(currentDate).toISOString().split(\"T\")[0]\n// )\nconst dates=[];// Make sure we have a clean copy with noon time\nconst baseDate=new Date(currentDate);baseDate.setHours(12,0,0,0);if(isMobile){// Mobile: Simply show 4 days starting with the current date\nfor(let i=0;i<4;i++){const date=new Date(baseDate);date.setDate(baseDate.getDate()+i);dates.push(date);}}else{// Desktop: Show full week (Sunday to Saturday)\n// Find the Sunday of the week containing the current date\nconst dayOfWeek=baseDate.getDay()// 0 = Sunday, 6 = Saturday\n;// console.log(\"Current day of week:\", dayOfWeek)\n// Calculate date of Sunday\nconst sunday=new Date(baseDate);sunday.setDate(baseDate.getDate()-dayOfWeek);// console.log(\n//     \"First day of week:\",\n//     sunday.toISOString().split(\"T\")[0]\n// )\n// Generate all 7 days\nfor(let i=0;i<7;i++){const date=new Date(sunday);date.setDate(sunday.getDate()+i);dates.push(date);}}// console.log(\n//     \"Generated dates from\",\n//     dates[0].toISOString().split(\"T\")[0],\n//     \"to\",\n//     dates[dates.length - 1].toISOString().split(\"T\")[0]\n// )\nreturn dates;};// Check if we should disable the back button (when all days would be in the past)\nconst shouldDisableBackButton=(currentDate=new Date)=>{const today=new Date;today.setHours(0,0,0,0);if(isMobile){// For mobile: check if going back one day would make it before today\nconst checkDate=new Date(currentDate);checkDate.setDate(checkDate.getDate()-1);// First day in the view is now in the past, disable back button\nreturn checkDate<today;}else{// For desktop: check if going back a week would make all 7 days in the past\n// Create a proper clone with consistent time\nconst baseDate=new Date(currentDate);baseDate.setHours(12,0,0,0);// Get the current Sunday\nconst sundayOfCurrentWeek=new Date(baseDate);sundayOfCurrentWeek.setDate(baseDate.getDate()-baseDate.getDay());// Get the previous Sunday (7 days before current Sunday)\nconst prevSunday=new Date(sundayOfCurrentWeek);prevSunday.setDate(sundayOfCurrentWeek.getDate()-7);// Add 6 days to get to Saturday of previous week\nconst prevSaturday=new Date(prevSunday);prevSaturday.setDate(prevSunday.getDate()+6);// If the last day (Saturday) in the previous week is before today, disable back button\nreturn prevSaturday<today;}};// Check if we should disable the forward button (when we'd go past the last available date)\nconst shouldDisableForwardButton=(currentDate=new Date)=>{if(!availableDates||availableDates.length===0)return false;// Find the last available date\nconst lastAvailableDate=new Date(Math.max(...availableDates.map(d=>new Date(d.date).getTime())));if(isMobile){// For mobile: check if the next day would be past the last available date\nconst checkDate=new Date(currentDate);checkDate.setDate(checkDate.getDate()+1);return checkDate>lastAvailableDate;}else{// For desktop: check if the first day in the next week would be past the last available date\n// Create a proper clone with consistent time\nconst baseDate=new Date(currentDate);baseDate.setHours(12,0,0,0);// Get the current Sunday\nconst sundayOfCurrentWeek=new Date(baseDate);sundayOfCurrentWeek.setDate(baseDate.getDate()-baseDate.getDay());// Get the next Sunday (7 days after current Sunday)\nconst nextSunday=new Date(sundayOfCurrentWeek);nextSunday.setDate(sundayOfCurrentWeek.getDate()+7);return nextSunday>lastAvailableDate;}};// Group time slots by period (Morning, Afternoon, Evening)\nconst groupTimeSlots=timeslots=>{if(!timeslots||timeslots.length===0)return{};const groups={Morning:[],Afternoon:[],Evening:[]};timeslots.forEach(slot=>{const hour=parseInt(slot.time.split(\":\")[0]);if(hour<12){groups.Morning.push(slot);}else if(hour<17){groups.Afternoon.push(slot);}else{groups.Evening.push(slot);}});// Only keep groups that have available slots\nconst filteredGroups={};Object.entries(groups).forEach(([key,value])=>{if(value.length>0){filteredGroups[key]=value;}});return filteredGroups;};// Format time in 12-hour format with AM/PM\nconst formatTimeWithAmPm=timeString=>{const[hours,minutes]=timeString.split(\":\").map(Number);const period=hours>=12?\"PM\":\"AM\"// Changed back to uppercase\n;const displayHours=hours%12||12;return`${displayHours}:${minutes.toString().padStart(2,\"0\")} ${period}`;};// Modern arrow icons\nconst LeftArrow=()=>/*#__PURE__*/_jsx(\"svg\",{width:\"20\",height:\"20\",viewBox:\"0 0 24 24\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M15 18L9 12L15 6\",stroke:COLORS.text,strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})});const RightArrow=()=>/*#__PURE__*/_jsx(\"svg\",{width:\"20\",height:\"20\",viewBox:\"0 0 24 24\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M9 18L15 12L9 6\",stroke:COLORS.text,strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})});// Calendar icon for confirmation\nconst ConfirmationCalendarIcon=()=>/*#__PURE__*/_jsxs(\"svg\",{width:\"60\",height:\"60\",viewBox:\"0 0 60 60\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",children:[/*#__PURE__*/_jsx(\"rect\",{x:\"5\",y:\"10\",width:\"50\",height:\"45\",rx:\"4\",stroke:COLORS.accent,strokeWidth:\"2.5\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M5 20H55\",stroke:COLORS.accent,strokeWidth:\"2.5\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M15 5V12\",stroke:COLORS.accent,strokeWidth:\"2.5\",strokeLinecap:\"round\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M45 5V12\",stroke:COLORS.accent,strokeWidth:\"2.5\",strokeLinecap:\"round\"}),/*#__PURE__*/_jsx(\"text\",{x:\"30\",y:\"42\",\"font-family\":\"sans-serif\",\"font-size\":\"20\",\"font-weight\":\"700\",\"text-anchor\":\"middle\",fill:COLORS.accent,children:formData.selectedDate?createETDate(formData.selectedDate).getDate():\"\"})]});// Function to find and select the next available date and timeslot\nconst handleNextAvailable=()=>{if(availableDates.length===0)return;// Sort dates chronologically\nconst sortedDates=[...availableDates].sort((a,b)=>new Date(a.date).getTime()-new Date(b.date).getTime());// Only consider dates that actually have timeslots\nconst datesWithTimeslots=sortedDates.filter(date=>date.timeslots&&date.timeslots.length>0);// Use the currently selected date as the starting point, or today if none selected\nlet startDate;if(formData.selectedDate){// Start from the day AFTER the currently selected date\nstartDate=new Date(formData.selectedDate);startDate.setDate(startDate.getDate()+1);startDate.setHours(0,0,0,0);}else{// If no date is selected, start from today\nstartDate=new Date;startDate.setHours(0,0,0,0);}// Convert to string for easier comparison\nconst startDateString=startDate.toISOString().split(\"T\")[0];// Find the next available date AFTER the start date\nconst nextDate=datesWithTimeslots.find(date=>{const dateObj=new Date(date.date);// Convert both to strings for comparison to avoid time issues\nconst dateString=dateObj.toISOString().split(\"T\")[0];return dateString>=startDateString;});if(nextDate){// console.log(\"Found next available date:\", nextDate.date);\n// Update the viewing date to show this date's week\nconst dateObj=new Date(nextDate.date);setViewingDate(dateObj);// Clear any previously selected date\nsetFormData(prev=>({...prev,selectedDate:\"\",selectedTime:\"\"}));// Use setTimeout to ensure the state has been updated\nsetTimeout(()=>{// Then select this date\nhandleDateSelect(nextDate.date);},0);}else{// console.log(\"No future available dates found\");\n}};// Update the today indicator to correctly reflect today's date in Eastern Time\nconst isTodayWithAvailability=dateString=>{// Parse the date string as Eastern Time\nconst etDate=createETDate(dateString);// Get today's date in Eastern Time\nconst now=new Date;const etNow=new Date(now.getTime()+(ET_OFFSET- -now.getTimezoneOffset()/60)*36e5);// Compare year, month, and day to determine if it's today\nreturn etDate.getDate()===etNow.getDate()&&etDate.getMonth()===etNow.getMonth()&&etDate.getFullYear()===etNow.getFullYear();};// Helper to check if a date is tomorrow in Eastern Time\nconst isTomorrow=dateString=>{// Parse the date string as Eastern Time\nconst etDate=createETDate(dateString);// Get today's date in Eastern Time\nconst now=new Date;const etNow=new Date(now.getTime()+(ET_OFFSET- -now.getTimezoneOffset()/60)*36e5);// Create tomorrow's date in Eastern Time\nconst etTomorrow=new Date(etNow);etTomorrow.setDate(etNow.getDate()+1);// Compare year, month, and day to determine if it's tomorrow\nreturn etDate.getDate()===etTomorrow.getDate()&&etDate.getMonth()===etTomorrow.getMonth()&&etDate.getFullYear()===etTomorrow.getFullYear();};// Enhanced date display with Today/Tomorrow prefix\nconst getEnhancedDateDisplay=(dateString,options={})=>{if(!dateString)return\"\";// Format the date using the provided options\nconst formattedDate=formatDateForDisplay(dateString,options);// Add Today/Tomorrow prefix if applicable\nif(isTodayWithAvailability(dateString)){return`Today \\xb7 ${formattedDate}`;}else if(isTomorrow(dateString)){return`Tomorrow \\xb7 ${formattedDate}`;}// Return regular format for other dates\nreturn formattedDate;};// Helper to get the ordinal suffix for a number (1st, 2nd, 3rd, etc.)\nconst getOrdinalSuffix=day=>{if(day>3&&day<21)return\"th\";switch(day%10){case 1:return\"st\";case 2:return\"nd\";case 3:return\"rd\";default:return\"th\";}};// Scroll to top when step changes (especially important for mobile)\nuseEffect(()=>{// Create a reference to the container to access it when needed\nconst container=document.querySelector(\".booking-system-container\");if(container){container.scrollTop=0;}else{// Fallback to window scroll if container isn't found\nwindow.scrollTo(0,0);}},[step]);// Initialize URL parameter when component loads\nReact.useEffect(()=>{// Set initial URL parameter when the booking component is first displayed\nupdateUrlParameter(\"booking_step\",\"booking_start\");},[])// Empty dependency array means this runs once on component mount\n;return /*#__PURE__*/_jsxs(\"div\",{className:\"booking-system-container\",style:{fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',maxWidth:\"100%\",width:\"100%\",backgroundColor:props.backgroundColor,borderRadius:props.borderRadius,overflow:\"auto\",maxHeight:\"100vh\",boxShadow:\"none\",color:props.textColor,padding:\"36px 24px 36px 24px\",paddingBottom:\"36px\",position:\"relative\"},children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                /* Fixed button container styling */\n                .fixed-button-container {\n                    position: fixed;\n                    bottom: 0;\n                    left: 0;\n                    right: 0;\n                    background-color: ${props.backgroundColor||\"#F9F9F9\"};\n                    padding: 15px 24px;\n                    box-shadow: 0px -2px 10px rgba(0,0,0,0.1);\n                    z-index: 1000;\n                    transform: translateZ(0); /* Force hardware acceleration */\n                }\n                \n                /* Bottom spacer to prevent content from being hidden behind fixed buttons */\n                .content-bottom-spacer {\n                    height: 0;\n                    width: 100%;\n                    padding-bottom: 0;\n                    visibility: visible;\n                    display: block;\n                }\n                \n                @media (max-width: 767px) {\n                    .content-bottom-spacer {\n                        height: 90px; /* Increased height for better spacing */\n                        margin-top: 30px; /* Add some margin top for separation */\n                    }\n                }\n                \n                /* Safe area for iOS browsers */\n                @supports(padding: max(0px)) {\n                    .fixed-button-container {\n                        padding-bottom: max(15px, calc(15px + env(safe-area-inset-bottom, 0px)));\n                    }\n                    \n                    @media (max-width: 767px) {\n                        .content-bottom-spacer {\n                            height: calc(90px + env(safe-area-inset-bottom, 20px)); /* Dynamic height including safe area */\n                        }\n                    }\n                }\n                \n                @keyframes spin {\n                    0% { transform: rotate(0deg); }\n                    100% { transform: rotate(360deg); }\n                }\n                \n                .booking-btn {\n                    transition: all 0.2s ease;\n                }\n                .booking-btn:hover {\n                    filter: brightness(0.95);\n                }\n                .booking-btn:active {\n                    filter: brightness(0.90);\n                }\n                \n                /* Date card and timeslot hover styles */\n                .date-card {\n                    transition: all 0.2s ease;\n                }\n                .date-card:hover:not(.disabled) {\n                    filter: brightness(0.97);\n                }\n                .date-card:active:not(.disabled) {\n                    filter: brightness(0.95);\n                }\n                \n                .time-slot {\n                    transition: all 0.2s ease;\n                }\n                .time-slot:hover {\n                    filter: brightness(0.97);\n                }\n                .time-slot:active {\n                    filter: brightness(0.95);\n                }\n                \n                /* Simple direct fix for button spacing when wrapped */\n                @media (max-width: 480px) {\n                    .change-timeslot-btn {\n                        margin-top: 16px !important;\n                    }\n                }\n                \n                /* Safe mode styles for problematic browser environments */\n                .safe-mode-animations * {\n                    /* Disable transitions and animations for safety */\n                    transition: none !important;\n                    animation: none !important;\n                    transform: none !important;\n                }\n                \n                /* Ensure safe-mode environments don't have transform or opacity animations */\n                .safe-mode-animations .date-slide-animation,\n                .safe-mode-animations .slide-next-in,\n                .safe-mode-animations .slide-prev-in,\n                .safe-mode-animations .mobile-date-enter,\n                .safe-mode-animations .mobile-date-exit {\n                    animation: none !important;\n                    opacity: 1 !important;\n                    transform: none !important;\n                }\n            `}),/*#__PURE__*/_jsx(\"style\",{children:`\n                .booking-btn {\n                    transition: all 0.2s ease;\n                }\n                .booking-btn:hover {\n                    filter: brightness(0.95);\n                }\n                .booking-btn:active {\n                    filter: brightness(0.90);\n                }\n                \n                /* Date card and timeslot hover styles */\n                .date-card {\n                    transition: all 0.2s ease;\n                }\n                .date-card:hover:not(.disabled) {\n                    filter: brightness(0.97);\n                }\n                .date-card:active:not(.disabled) {\n                    filter: brightness(0.95);\n                }\n                \n                .time-slot {\n                    transition: all 0.2s ease;\n                }\n                .time-slot:hover {\n                    filter: brightness(0.97);\n                }\n                .time-slot:active {\n                    filter: brightness(0.95);\n                }\n                \n                /* Simple direct fix for button spacing when wrapped */\n                @media (max-width: 480px) {\n                    .change-timeslot-btn {\n                        margin-top: 16px !important;\n                    }\n                }\n                \n                /* Date navigation animations - improved for natural timeline scrolling */\n                /* When current dates are moving left (going to future) */\n                @keyframes slideOutToLeft {\n                    from { transform: translateX(0); opacity: 1; }\n                    to { transform: translateX(-100%); opacity: 0; }\n                }\n                \n                /* When new dates are coming in from right (going to future) */\n                @keyframes slideInFromRight {\n                    from { transform: translateX(100%); opacity: 0; }\n                    to { transform: translateX(0); opacity: 1; }\n                }\n                \n                /* When current dates are moving right (going to past) */\n                @keyframes slideOutToRight {\n                    from { transform: translateX(0); opacity: 1; }\n                    to { transform: translateX(100%); opacity: 0; }\n                }\n                \n                /* When new dates are coming in from left (going to past) */\n                @keyframes slideInFromLeft {\n                    from { transform: translateX(-100%); opacity: 0; }\n                    to { transform: translateX(0); opacity: 1; }\n                }\n                \n                /* Mobile-specific animations for single date navigation */\n                @keyframes fadeOut {\n                    from { opacity: 1; }\n                    to { opacity: 0; }\n                }\n                \n                @keyframes fadeIn {\n                    from { opacity: 0; }\n                    to { opacity: 1; }\n                }\n                \n                .date-slide-animation {\n                    animation-duration: 0.35s;\n                    animation-fill-mode: both;\n                    animation-timing-function: cubic-bezier(0.3, 0, 0.2, 1);\n                    position: relative;\n                    width: 100%;\n                    overflow-x: hidden;\n                }\n                \n                /* Going forward in time: Next dates sliding in from right */\n                .slide-next-in {\n                    animation-name: slideInFromRight;\n                }\n                \n                /* Going backward in time: Previous dates sliding in from left */\n                .slide-prev-in {\n                    animation-name: slideInFromLeft;\n                }\n                \n                /* Make the date grid a continuous scrolling experience */\n                .date-grid-container {\n                    width: 100%;\n                    overflow: hidden;\n                    position: relative;\n                }\n                \n                /* Mobile specific - no animation for stable dates */\n                .mobile-date-stable {\n                    opacity: 1;\n                }\n                \n                /* Mobile specific - animated date for entrance */\n                .mobile-date-enter {\n                    animation: fadeIn 0.35s forwards;\n                }\n                \n                /* Mobile specific - animated date for exit */\n                .mobile-date-exit {\n                    animation: fadeOut 0.35s forwards;\n                }\n            `}),step!==3&&/*#__PURE__*/_jsxs(\"div\",{style:{textAlign:\"center\",marginBottom:\"20px\"},children:[/*#__PURE__*/_jsx(\"h2\",{style:{margin:\"0 0 16px 0\",color:props.headingColor||props.textColor},children:step===1?\"Select a date & time\":\"Complete your booking\"}),step===1&&props.subheadingText&&/*#__PURE__*/_jsx(\"p\",{style:{margin:\"0 0 24px 0\",color:COLORS.lightText,fontSize:\"13px\",textAlign:\"center\"},children:\"Choose a timeslot for your free 25-minute consultation.\"}),step===2&&/*#__PURE__*/_jsx(\"p\",{style:{margin:\"0 0 24px 0\",color:COLORS.lightText,fontSize:\"13px\",textAlign:\"center\"},children:\"Provide some contact details to confirm your booking.\"})]}),/*#__PURE__*/_jsxs(AnimatePresence,{mode:\"wait\",children:[step===1&&/*#__PURE__*/_jsxs(SafeMotion,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},exit:{opacity:0,x:-20},transition:{duration:.3},children:[/*#__PURE__*/_jsx(\"div\",{style:{marginBottom:\"0\"},children:isLoading&&step===1&&!formData.selectedDate?/*#__PURE__*/_jsxs(\"div\",{style:{textAlign:\"center\",padding:\"40px 0\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{width:\"30px\",height:\"30px\",position:\"relative\",margin:\"0 auto\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",width:\"100%\",height:\"100%\",border:`2px solid ${COLORS.lightText}`,borderRadius:\"50%\",borderTopColor:\"transparent\",animation:\"spin 0.8s linear infinite\"}}),/*#__PURE__*/_jsx(\"style\",{children:`\n                                                @keyframes spin {\n                                                  0% { transform: rotate(0deg); }\n                                                  100% { transform: rotate(360deg); }\n                                                }\n                                              `})]}),/*#__PURE__*/_jsx(\"p\",{style:{marginTop:\"16px\",color:COLORS.lightText},children:\"Loading available appointment times...\"})]}):/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(\"div\",{style:{marginBottom:\"20px\",backgroundColor:COLORS.background,borderRadius:COLORS.radius,padding:\"20px\",boxShadow:\"0px 2px 8px rgba(0, 0, 0, 0.05)\",fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif'},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\",marginBottom:\"24px\"},children:[/*#__PURE__*/_jsx(\"div\",{children:/*#__PURE__*/_jsx(\"h2\",{style:{margin:0,fontWeight:\"700\",fontSize:\"20px\",color:COLORS.text},children:formData.selectedDate?getEnhancedDateDisplay(formData.selectedDate,{month:\"long\",day:\"numeric\",year:\"numeric\"}):viewingDate.toLocaleDateString(\"en-US\",{month:\"long\",day:\"numeric\",year:\"numeric\"})})}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:\"8px\"},children:[/*#__PURE__*/_jsx(\"button\",{onClick:()=>{// Going backward (to previous dates): Current slides right, new slides in from left\nsetDateAnimationDirection(\"slide-prev-in\");setAnimationKey(prevKey=>prevKey+1);// For mobile, save current dates for animation comparison\nif(isMobile){setPreviousDates(generateWeekDates(viewingDate));}setTimeout(()=>{// Simple approach: move backward by day (mobile) or week (desktop)\nconst baseDate=new Date(viewingDate);baseDate.setHours(12,0,0,0);if(isMobile){// For mobile, move back one day\nbaseDate.setDate(baseDate.getDate()-1);}else{// For desktop, move back exactly 7 days\nbaseDate.setDate(baseDate.getDate()-7);}setViewingDate(baseDate);// console.log(\n//     \"Navigation: Moving back to\",\n//     baseDate\n//         .toISOString()\n//         .split(\n//             \"T\"\n//         )[0]\n// )\n},10);},disabled:shouldDisableBackButton(viewingDate),className:shouldDisableBackButton(viewingDate)?\"\":\"booking-btn\",style:{width:\"36px\",height:\"36px\",backgroundColor:shouldDisableBackButton(viewingDate)?\"#E0E0E0\":COLORS.lightBg,border:\"none\",borderRadius:COLORS.radius,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",cursor:shouldDisableBackButton(viewingDate)?\"not-allowed\":\"pointer\",opacity:shouldDisableBackButton(viewingDate)?.5:1,fontFamily:FONT_STYLES.fontFamily},children:/*#__PURE__*/_jsx(LeftArrow,{})}),/*#__PURE__*/_jsx(\"button\",{onClick:()=>{// Going forward (to next dates): Current slides left, new slides in from right\nsetDateAnimationDirection(\"slide-next-in\");setAnimationKey(prevKey=>prevKey+1);// For mobile, save current dates for animation comparison\nif(isMobile){setPreviousDates(generateWeekDates(viewingDate));}setTimeout(()=>{// Simple approach: move forward by day (mobile) or week (desktop)\nconst baseDate=new Date(viewingDate);baseDate.setHours(12,0,0,0);if(isMobile){// For mobile, move forward one day\nbaseDate.setDate(baseDate.getDate()+1);}else{// For desktop, move forward exactly 7 days\nbaseDate.setDate(baseDate.getDate()+7);}setViewingDate(baseDate);// console.log(\n//     \"Navigation: Moving forward to\",\n//     baseDate\n//         .toISOString()\n//         .split(\n//             \"T\"\n//         )[0]\n// )\n},10);},disabled:shouldDisableForwardButton(viewingDate),className:shouldDisableForwardButton(viewingDate)?\"\":\"booking-btn\",style:{width:\"36px\",height:\"36px\",backgroundColor:shouldDisableForwardButton(viewingDate)?\"#E0E0E0\":COLORS.lightBg,border:\"none\",borderRadius:COLORS.radius,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",cursor:shouldDisableForwardButton(viewingDate)?\"not-allowed\":\"pointer\",opacity:shouldDisableForwardButton(viewingDate)?.5:1,fontFamily:FONT_STYLES.fontFamily},children:/*#__PURE__*/_jsx(RightArrow,{})})]})]}),/*#__PURE__*/_jsx(\"div\",{className:\"date-grid-container\",children:!isMobile?/*#__PURE__*/_jsx(\"div\",{className:`date-slide-animation ${dateAnimationDirection}`,style:{display:\"grid\",gridTemplateColumns:`repeat(7, 1fr)`,gap:\"10px\",marginBottom:\"10px\"},children:generateWeekDates(viewingDate).map((date,index)=>{const dateString=date.toISOString().split(\"T\")[0];const hasAvailability=hasAvailableTimeslots(dateString);const isSelected=dateString===formData.selectedDate;const isToday=new Date(date).setHours(0,0,0,0)===new Date().setHours(0,0,0,0);const isPastDate=date<new Date&&!isToday// Don't consider today as past\n;const hasNoAvailability=!hasAvailability;const isDisabled=isPastDate// Only disable past dates\n;return /*#__PURE__*/_jsxs(\"div\",{onClick:()=>!isDisabled&&handleDateSelect(dateString),className:`date-card ${isDisabled?\"disabled\":\"\"}`,style:{cursor:isDisabled?\"not-allowed\":\"pointer\",borderRadius:COLORS.radius,overflow:\"hidden\",backgroundColor:isSelected?COLORS.selectedBg:COLORS.lightBg,opacity:isDisabled?.6:1,position:\"relative\"},children:[isToday&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:\"8px\",right:\"8px\",width:\"6px\",height:\"6px\",borderRadius:\"50%\",backgroundColor:isSelected?COLORS.accent// Pink when today is selected\n:\"#4a4a4a\"}}),/*#__PURE__*/_jsx(\"div\",{style:{padding:\"10px 0 5px\",textAlign:\"center\",fontSize:\"14px\",fontWeight:\"500\",color:isSelected?COLORS.selectedText:COLORS.lightText},children:date.toLocaleDateString(\"en-US\",{weekday:\"short\"})}),/*#__PURE__*/_jsx(\"div\",{style:{padding:\"5px 0 10px\",textAlign:\"center\",fontSize:\"24px\",fontWeight:\"700\",color:isSelected?COLORS.selectedText:COLORS.text,textDecoration:isDisabled||hasNoAvailability?\"line-through\":\"none\"},children:date.getDate()})]},`day-${index}`);})},`date-container-${animationKey}`):// For mobile, animate only the changing date\n/*#__PURE__*/_jsx(\"div\",{style:{display:\"grid\",gridTemplateColumns:`repeat(4, 1fr)`,gap:\"10px\",marginBottom:\"10px\"},children:generateWeekDates(viewingDate).map((date,index)=>{const dateString=date.toISOString().split(\"T\")[0];const hasAvailability=hasAvailableTimeslots(dateString);const isSelected=dateString===formData.selectedDate;const isToday=new Date(date).setHours(0,0,0,0)===new Date().setHours(0,0,0,0);const isPastDate=date<new Date&&!isToday// Don't consider today as past\n;const hasNoAvailability=!hasAvailability;const isDisabled=isPastDate// Only disable past dates\n;// Determine animation class based on date comparison with previous dates\nlet animationClass=\"mobile-date-stable\";if(previousDates.length>0){const isNewDate=!previousDates.some(prevDate=>prevDate.getDate()===date.getDate()&&prevDate.getMonth()===date.getMonth()&&prevDate.getFullYear()===date.getFullYear());if(isNewDate){animationClass=\"mobile-date-enter\";}}return /*#__PURE__*/_jsxs(\"div\",{onClick:()=>!isDisabled&&handleDateSelect(dateString),className:`date-card ${isDisabled?\"disabled\":\"\"} ${animationClass}`,style:{cursor:isDisabled?\"not-allowed\":\"pointer\",borderRadius:COLORS.radius,overflow:\"hidden\",backgroundColor:isSelected?COLORS.selectedBg:COLORS.lightBg,opacity:isDisabled?.6:1,position:\"relative\"},children:[isToday&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:\"8px\",right:\"8px\",width:\"6px\",height:\"6px\",borderRadius:\"50%\",backgroundColor:isSelected?COLORS.accent// Pink when today is selected\n:\"#4a4a4a\"}}),/*#__PURE__*/_jsx(\"div\",{style:{padding:\"10px 0 5px\",textAlign:\"center\",fontSize:\"14px\",fontWeight:\"500\",color:isSelected?COLORS.selectedText:COLORS.lightText},children:date.toLocaleDateString(\"en-US\",{weekday:\"short\"})}),/*#__PURE__*/_jsx(\"div\",{style:{padding:\"5px 0 10px\",textAlign:\"center\",fontSize:\"24px\",fontWeight:\"700\",color:isSelected?COLORS.selectedText:COLORS.text,textDecoration:isDisabled||hasNoAvailability?\"line-through\":\"none\"},children:date.getDate()})]},`mobile-day-${date.toISOString()}`);})},`mobile-date-container-${animationKey}`)}),/*#__PURE__*/_jsx(\"div\",{style:{textAlign:\"center\",color:COLORS.lightText,marginTop:\"5px\",fontSize:\"13px\",marginBottom:\"0\"},children:\"Times are shown in Eastern Time (ET).\"})]}),formData.selectedDate&&/*#__PURE__*/_jsx(\"div\",{style:{backgroundColor:COLORS.background,borderRadius:COLORS.radius,padding:\"20px\",boxShadow:\"0px 2px 8px rgba(0, 0, 0, 0.05)\",marginBottom:\"20px\"},children:(()=>{const selectedDateObj=availableDates.find(d=>d.date===formData.selectedDate);// When no server connection, display contact information\nif(bookingError&&availableDates.length===0){return /*#__PURE__*/_jsxs(\"div\",{style:{textAlign:\"center\",padding:\"30px 0\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{marginBottom:\"16px\"},children:/*#__PURE__*/_jsx(\"svg\",{width:\"48\",height:\"48\",viewBox:\"0 0 24 24\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\",fill:\"#E53935\"})})}),/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"18px\",fontWeight:\"600\",marginBottom:\"12px\",color:COLORS.text},children:\"Connection issue\"}),/*#__PURE__*/_jsx(\"p\",{style:{fontSize:\"15px\",lineHeight:\"1.5\",color:COLORS.text,marginBottom:\"24px\"},children:\"We're having trouble connecting to our scheduling system. Please try again later or contact us directly.\"}),/*#__PURE__*/_jsx(\"a\",{href:\"https://talkingtulips.com/contact\",target:\"_blank\",rel:\"noopener noreferrer\",className:\"booking-btn\",style:{display:\"inline-block\",padding:\"8px 16px\",backgroundColor:COLORS.selectedBg,color:COLORS.selectedText,textDecoration:\"none\",borderRadius:COLORS.radius,fontSize:\"13px\",fontWeight:\"600\"},children:\"Contact us\"})]});}if(!selectedDateObj){return /*#__PURE__*/_jsxs(\"div\",{style:{textAlign:\"center\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"16px\",color:COLORS.lightText,marginBottom:\"24px\",marginTop:\"32px\",textAlign:\"center\"},children:\"No availability for this date.\"}),/*#__PURE__*/_jsx(\"button\",{onClick:handleNextAvailable,className:\"booking-btn\",style:{padding:\"8px 16px\",backgroundColor:COLORS.selectedBg,color:COLORS.selectedText,border:\"none\",borderRadius:COLORS.radius,fontSize:\"13px\",fontWeight:\"600\",cursor:\"pointer\",display:\"inline-block\",marginBottom:\"16px\"},children:\"Go to next available\"})]});}const groups=groupTimeSlots(selectedDateObj.timeslots);if(Object.keys(groups).length===0){return /*#__PURE__*/_jsxs(\"div\",{style:{textAlign:\"center\",padding:\"20px 0\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"16px\",color:COLORS.lightText,marginBottom:\"24px\",textAlign:\"center\"},children:\"No available time slots for this date.\"}),/*#__PURE__*/_jsx(\"div\",{style:{textAlign:\"center\"},children:/*#__PURE__*/_jsx(\"button\",{onClick:handleNextAvailable,className:\"booking-btn\",style:{padding:\"8px 16px\",backgroundColor:COLORS.selectedBg,color:COLORS.selectedText,border:\"none\",borderRadius:COLORS.radius,fontSize:\"13px\",fontWeight:\"600\",cursor:\"pointer\",display:\"inline-block\"},children:\"Go to next available\"})})]});}return Object.entries(groups).map(([period,slots],periodIndex)=>/*#__PURE__*/_jsxs(\"div\",{style:{marginBottom:periodIndex<Object.keys(groups).length-1?\"24px\":\"0\"},children:[/*#__PURE__*/_jsx(\"h4\",{style:{fontSize:\"14px\",color:COLORS.lightText,marginBottom:\"12px\",marginTop:\"0\",fontWeight:\"500\"},children:period}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"grid\",gridTemplateColumns:\"repeat(auto-fill, minmax(140px, 1fr))\",gap:\"8px\"},children:slots.map((slot,index)=>/*#__PURE__*/_jsx(\"div\",{onClick:()=>handleTimeSelect(slot.time),className:\"time-slot\",style:{padding:\"14px 10px\",textAlign:\"center\",borderRadius:COLORS.radius,backgroundColor:formData.selectedTime===slot.time?COLORS.accentBg:COLORS.lightBg,color:formData.selectedTime===slot.time?COLORS.accent:COLORS.text,cursor:\"pointer\",fontWeight:\"550\",fontSize:\"15px\"},children:formatTimeWithAmPm(slot.time)},`slot-${index}`))})]},period));})()})]})}),/*#__PURE__*/_jsx(\"div\",{className:\"content-bottom-spacer\"})]},\"step1\"),step===2&&/*#__PURE__*/_jsx(SafeMotion,{initial:{opacity:0,x:20},animate:{opacity:1,x:0},exit:{opacity:0,x:20},transition:{duration:.3},children:/*#__PURE__*/_jsxs(\"div\",{style:{marginBottom:\"0\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{marginBottom:\"20px\",padding:\"16px\",backgroundColor:\"#FFFFFF\",borderRadius:COLORS.radius,display:\"flex\",flexDirection:isMobile?\"row\":\"row\",flexWrap:\"wrap\",justifyContent:\"space-between\",alignItems:\"center\",boxShadow:\"0px 1px 3px rgba(0, 0, 0, 0.08)\"},className:\"timeslot-display-container\",children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:\"16px\",marginBottom:\"0\",marginRight:\"16px\",flexGrow:1,minWidth:\"250px\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{width:\"54px\",height:\"54px\",backgroundColor:COLORS.selectedBg,borderRadius:\"50%\",display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",alignItems:\"center\",color:COLORS.selectedText,fontWeight:\"600\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"12px\",marginBottom:\"2px\",fontWeight:\"500\",marginTop:\"2px\"},children:formData.selectedDate&&createETDate(formData.selectedDate).toLocaleDateString(\"en-US\",{month:\"short\"})}),/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"20px\",marginTop:\"-3px\"},children:formData.selectedDate&&createETDate(formData.selectedDate).getDate()})]}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"15px\",fontWeight:\"600\",marginBottom:\"6px\",color:COLORS.text},children:\"Free virtual consultation\"}),/*#__PURE__*/_jsxs(\"div\",{style:{fontSize:\"14px\",color:COLORS.text,opacity:.8},children:[formData.selectedTime&&formatTimeWithAmPm(formData.selectedTime),\" \",\"ET \\xb7 25 minutes\"]})]})]}),/*#__PURE__*/_jsx(\"button\",{onClick:()=>setStepWithUrlUpdate(1),className:\"booking-btn change-timeslot-btn\",style:{padding:\"8px 16px\",backgroundColor:COLORS.selectedBg,color:COLORS.selectedText,border:\"none\",borderRadius:COLORS.radius,fontSize:\"13px\",fontWeight:\"550\",fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',cursor:\"pointer\",flexShrink:0,alignSelf:\"center\",margin:\"0\"},children:\"Change timeslot\"})]}),/*#__PURE__*/_jsx(\"form\",{onSubmit:handleSubmit,children:/*#__PURE__*/_jsxs(\"div\",{style:{backgroundColor:\"#FFFFFF\",borderRadius:COLORS.radius,padding:\"20px\",marginBottom:\"20px\",boxShadow:\"0px 1px 3px rgba(0, 0, 0, 0.08)\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:\"16px\",marginBottom:\"16px\",width:\"100%\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{flex:1},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"14px\",fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',color:\"rgb(153, 153, 153)\",lineHeight:\"1.5em\",marginBottom:\"8px\"},children:\"First name\"}),/*#__PURE__*/_jsx(\"input\",{type:\"text\",name:\"firstName\",value:formData.firstName,onChange:handleInputChange,placeholder:\"Jane\",required:true,autoComplete:\"given-name\",style:{width:\"100%\",padding:\"12px 16px\",backgroundColor:COLORS.inputBg,border:\"none\",borderRadius:COLORS.radius,fontSize:\"14px\",fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',color:\"rgb(51, 51, 51)\",outline:\"none\"}})]}),/*#__PURE__*/_jsxs(\"div\",{style:{flex:1},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"14px\",fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',color:\"rgb(153, 153, 153)\",lineHeight:\"1.5em\",marginBottom:\"8px\"},children:\"Last name\"}),/*#__PURE__*/_jsx(\"input\",{type:\"text\",name:\"lastName\",value:formData.lastName,onChange:handleInputChange,placeholder:\"Smith\",required:true,autoComplete:\"family-name\",style:{width:\"100%\",padding:\"12px 16px\",backgroundColor:COLORS.inputBg,border:\"none\",borderRadius:COLORS.radius,fontSize:\"14px\",fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',color:\"rgb(51, 51, 51)\",outline:\"none\"}})]})]}),/*#__PURE__*/_jsxs(\"div\",{style:{marginBottom:\"16px\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"14px\",fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',color:\"rgb(153, 153, 153)\",lineHeight:\"1.5em\",marginBottom:\"8px\"},children:\"Email address\"}),/*#__PURE__*/_jsx(\"input\",{type:\"email\",name:\"email\",value:formData.email,onChange:handleInputChange,placeholder:\"name@example.com\",required:true,autoComplete:\"email\",style:{width:\"100%\",padding:\"12px 16px\",backgroundColor:COLORS.inputBg,border:\"none\",borderRadius:COLORS.radius,fontSize:\"14px\",fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',color:\"rgb(51, 51, 51)\",outline:\"none\"}})]}),/*#__PURE__*/_jsxs(\"div\",{style:{marginBottom:\"16px\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"14px\",fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',color:\"rgb(153, 153, 153)\",lineHeight:\"1.5em\",marginBottom:\"8px\"},children:\"Phone number\"}),/*#__PURE__*/_jsx(\"input\",{type:\"tel\",name:\"phone\",value:formData.phone,onChange:handleInputChange,onKeyDown:handlePhoneKeyDown,placeholder:\"(555) 555-5555\",required:true,autoComplete:\"tel\",style:{width:\"100%\",padding:\"12px 16px\",backgroundColor:COLORS.inputBg,border:\"none\",borderRadius:COLORS.radius,fontSize:\"14px\",fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',color:\"rgb(51, 51, 51)\",outline:\"none\"}})]}),/*#__PURE__*/_jsxs(\"div\",{style:{marginBottom:\"24px\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"14px\",fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',color:\"rgb(153, 153, 153)\",lineHeight:\"1.5em\",marginBottom:\"8px\"},children:\"Message (optional)\"}),/*#__PURE__*/_jsx(\"textarea\",{name:\"message\",value:formData.message,onChange:handleInputChange,placeholder:\"Share any helpful information to help us prepare for your consultation.\",style:{width:\"100%\",padding:\"12px 16px\",backgroundColor:COLORS.inputBg,border:\"none\",borderRadius:COLORS.radius,fontSize:\"14px\",fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',color:\"rgb(51, 51, 51)\",minHeight:\"100px\",resize:\"vertical\",outline:\"none\"}})]}),(Object.values(errors).some(error=>error)||bookingError)&&/*#__PURE__*/_jsxs(\"div\",{style:{marginTop:\"16px\",padding:\"12px\",backgroundColor:\"#FFEFEF\",borderRadius:COLORS.radius,borderLeft:\"4px solid #E53935\"},children:[Object.values(errors).map((error,index)=>error?/*#__PURE__*/_jsx(\"div\",{style:{color:\"#E53935\",fontSize:\"14px\",marginBottom:index<Object.values(errors).length-1?\"8px\":0,fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif'},children:error},index):null),bookingError&&!Object.values(errors).some(error=>error)&&/*#__PURE__*/_jsx(\"div\",{style:{color:\"#E53935\",fontSize:\"14px\",fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif'},children:bookingError})]})]})}),/*#__PURE__*/_jsx(\"div\",{className:\"content-bottom-spacer\"})]})},\"step2\"),step===3&&/*#__PURE__*/_jsx(SafeMotion,{initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},transition:{duration:.3},children:bookingId?/*#__PURE__*/_jsxs(\"div\",{style:{backgroundColor:COLORS.background,borderRadius:COLORS.radius,padding:\"0\",textAlign:\"center\",fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif'},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:\"80px\",height:\"80px\",margin:\"0 auto 24px\",backgroundColor:COLORS.accentBg,borderRadius:\"50%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:/*#__PURE__*/_jsx(\"svg\",{width:\"40\",height:\"40\",viewBox:\"0 0 24 24\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",style:{position:\"relative\",top:\"2px\"},children:/*#__PURE__*/_jsx(\"path\",{d:\"M5 12L9 16L19 6\",stroke:COLORS.accent,strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})})}),/*#__PURE__*/_jsx(\"h3\",{style:{fontSize:\"22px\",fontWeight:\"700\",marginTop:\"0\",marginBottom:\"16px\",color:COLORS.text,fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif'},children:\"Your appointment is confirmed.\"}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"center\",alignItems:\"center\",marginBottom:\"30px\",marginTop:\"30px\",padding:\"0 12px\",gap:\"36px\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{padding:\"10px\",textAlign:\"center\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",alignItems:\"center\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"flex-start\",justifyContent:\"center\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"28px\",fontWeight:\"600\",lineHeight:\"1\"},children:parseInt(formatDateForDisplay(formData.selectedDate,{day:\"numeric\"}))}),/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"14px\",fontWeight:\"500\",color:COLORS.lightText,marginTop:\"2px\",marginLeft:\"2px\"},children:getOrdinalSuffix(parseInt(formatDateForDisplay(formData.selectedDate,{day:\"numeric\"})))})]}),/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"14px\",color:COLORS.lightText,marginTop:\"8px\"},children:formatDateForDisplay(formData.selectedDate,{month:\"long\"})})]})}),/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"10px\",textAlign:\"center\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{fontSize:\"28px\",fontWeight:\"600\",lineHeight:\"1\",display:\"flex\"},children:[/*#__PURE__*/_jsx(\"span\",{children:formData.selectedTime?formatTimeWithAmPm(formData.selectedTime).split(\" \")[0]:\"\"}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:\"14px\",fontWeight:\"500\",color:COLORS.lightText,marginTop:\"2px\",marginLeft:\"2px\"},children:formData.selectedTime?formatTimeWithAmPm(formData.selectedTime).split(\" \")[1]:\"\"})]}),/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"14px\",color:COLORS.lightText,marginTop:\"8px\"},children:\"Eastern Time\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"10px\",textAlign:\"center\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"28px\",fontWeight:\"600\",lineHeight:\"1\"},children:\"25\"}),/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"14px\",color:COLORS.lightText,marginTop:\"8px\"},children:\"minutes\"})]})]}),/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"24px\",backgroundColor:\"#F9F9F9\",borderRadius:COLORS.radius,margin:\"0\"},children:[/*#__PURE__*/_jsx(\"p\",{style:{fontSize:\"15px\",lineHeight:\"1.5\",color:COLORS.text,margin:\"0 0 12px 0\",fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif'},children:\"We've sent you a confirmation email with more details. We look forward to meeting with you soon!\"}),/*#__PURE__*/_jsx(\"p\",{style:{fontSize:\"14px\",lineHeight:\"1.5\",color:COLORS.lightText,margin:\"0\",fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif'},children:\"You'll receive an email with a video conference link on the day of your consultation.\"})]})]}):/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{style:{width:\"70px\",height:\"70px\",margin:\"0 auto 24px\",backgroundColor:\"#ffebee\",borderRadius:\"50%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:/*#__PURE__*/_jsx(\"svg\",{width:\"40\",height:\"40\",viewBox:\"0 0 24 24\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\",fill:\"#f44336\"})})}),/*#__PURE__*/_jsx(\"h2\",{style:{margin:\"0 0 16px\",color:props.headingColor||props.textColor},children:\"Booking Failed\"}),/*#__PURE__*/_jsx(\"p\",{style:{marginBottom:\"24px\",color:\"#f44336\"},children:bookingError||\"An error occurred while booking your appointment. Please try again.\"}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"center\",gap:\"16px\"},children:[/*#__PURE__*/_jsx(\"button\",{onClick:handleBack,style:{padding:\"12px 24px\",backgroundColor:\"transparent\",color:props.buttonColor,border:`1px solid ${props.buttonColor}`,borderRadius:\"4px\",fontSize:\"16px\",fontWeight:\"600\",cursor:\"pointer\"},children:\"Go Back\"}),/*#__PURE__*/_jsx(\"button\",{onClick:createBooking,className:\"booking-btn\",style:{padding:\"12px 24px\",backgroundColor:props.buttonColor,color:props.buttonTextColor,border:\"none\",borderRadius:\"4px\",fontSize:\"16px\",fontWeight:\"600\",cursor:\"pointer\"},children:\"Try Again\"})]})]})},\"step3\")]}),step===1&&formData.selectedDate&&/*#__PURE__*/_jsx(\"div\",{className:isMobile?\"fixed-button-container\":\"\",style:!isMobile?{marginTop:\"20px\"}:{},children:/*#__PURE__*/_jsx(\"button\",{onClick:()=>setStepWithUrlUpdate(2),disabled:!formData.selectedTime,className:\"booking-btn\",style:{width:\"100%\",padding:\"14px\",backgroundColor:!formData.selectedTime?\"#E0E0E0\":COLORS.buttonBg,color:!formData.selectedTime?COLORS.lightText:\"#FFFFFF\",border:\"none\",borderRadius:COLORS.radius,fontSize:\"14px\",fontWeight:\"600\",fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',cursor:!formData.selectedTime?\"not-allowed\":\"pointer\",marginBottom:\"0\",boxShadow:!formData.selectedTime?\"none\":\"0px 0.7px 0.7px -0.6px rgba(0, 0, 0, 0.15), 0px 1.8px 1.8px -1.3px rgba(0, 0, 0, 0.14)\"},children:\"Continue\"})}),step===2&&/*#__PURE__*/_jsx(\"div\",{className:isMobile?\"fixed-button-container\":\"\",style:!isMobile?{marginTop:\"20px\"}:{},children:/*#__PURE__*/_jsxs(\"button\",{onClick:e=>{e.preventDefault();handleSubmit(e);},className:\"booking-btn\",disabled:isCreatingCustomer||isLoading,style:{width:\"100%\",padding:\"14px\",backgroundColor:COLORS.buttonBg,color:\"#FFFFFF\",border:\"none\",borderRadius:COLORS.radius,fontSize:\"14px\",fontWeight:\"600\",fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',cursor:isCreatingCustomer||isLoading?\"not-allowed\":\"pointer\",marginBottom:\"0\",opacity:isCreatingCustomer||isLoading?.8:1,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",gap:\"8px\",boxShadow:\"0px 0.7px 0.7px -0.6px rgba(0, 0, 0, 0.15), 0px 1.8px 1.8px -1.3px rgba(0, 0, 0, 0.14)\"},children:[(isCreatingCustomer||isLoading)&&/*#__PURE__*/_jsx(\"div\",{style:{width:\"20px\",height:\"20px\",position:\"relative\",margin:\"0 5px\"},children:/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",width:\"100%\",height:\"100%\",border:`2px solid ${COLORS.lightText}`,borderRadius:\"50%\",borderTopColor:\"transparent\",animation:\"spin 0.8s linear infinite\"}})}),/*#__PURE__*/_jsx(\"span\",{children:isCreatingCustomer||isLoading?\"Processing...\":\"Book appointment\"})]})})]});}// Define default properties\nSquareBookingSystem.defaultProps={headingText:\"Book a free consultation\",subheadingText:\"Schedule your consultation in just a few clicks.\",backgroundColor:\"#ffffff\",headingColor:\"#333333\",textColor:\"#444444\",buttonColor:\"#FA574B\",buttonTextColor:\"#ffffff\",borderRadius:8,showShadow:false,serviceDuration:60,googleAdsConversionId:\"\",cloudFunctionUrl:\"https://booking-server-398277907797.us-east1.run.app\"};// Add property controls for Framer\naddPropertyControls(SquareBookingSystem,{headingText:{type:ControlType.String,title:\"Heading Text\",defaultValue:SquareBookingSystem.defaultProps.headingText},subheadingText:{type:ControlType.String,title:\"Subheading Text\",defaultValue:SquareBookingSystem.defaultProps.subheadingText},backgroundColor:{type:ControlType.Color,title:\"Background Color\",defaultValue:SquareBookingSystem.defaultProps.backgroundColor},headingColor:{type:ControlType.Color,title:\"Heading Color\",defaultValue:SquareBookingSystem.defaultProps.headingColor},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:SquareBookingSystem.defaultProps.textColor},buttonColor:{type:ControlType.Color,title:\"Button Color\",defaultValue:SquareBookingSystem.defaultProps.buttonColor},buttonTextColor:{type:ControlType.Color,title:\"Button Text Color\",defaultValue:SquareBookingSystem.defaultProps.buttonTextColor},borderRadius:{type:ControlType.Number,title:\"Border Radius\",defaultValue:SquareBookingSystem.defaultProps.borderRadius,min:0,max:20,step:1},showShadow:{type:ControlType.Boolean,title:\"Show Shadow\",defaultValue:SquareBookingSystem.defaultProps.showShadow},serviceDuration:{type:ControlType.String,title:\"Service Duration (minutes)\",defaultValue:SquareBookingSystem.defaultProps.serviceDuration},googleAdsConversionId:{type:ControlType.String,title:\"Google Ads Conversion ID\",description:\"Will track 3 conversion values: $10 (start), $40 (details), $240 (complete)\",defaultValue:SquareBookingSystem.defaultProps.googleAdsConversionId},cloudFunctionUrl:{type:ControlType.String,title:\"Cloud Function URL\",defaultValue:SquareBookingSystem.defaultProps.cloudFunctionUrl}});export default SquareBookingSystem;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SquareBookingSystem\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"SquareBookingSystem\":{\"type\":\"reactComponent\",\"name\":\"SquareBookingSystem\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Booking.map", "// Generated by Framer (f7d95e4)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,SmartComponentScopedContainer,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import{Icon as Material}from\"https://framerusercontent.com/modules/6Ldpz1V0DkD45gXvi67I/PCgBX5d6MdQT7E7nhdXn/Material.js\";import{SquareBookingSystem}from\"https://framerusercontent.com/modules/De7vbaUBiehwrtrjz26L/Uvg8pTrVUtu9sbURLPjn/Booking.js\";const SquareBookingSystemFonts=getFonts(SquareBookingSystem);const MaterialFonts=getFonts(Material);const cycleOrder=[\"O7tNdZnnU\",\"dLyGn9hDq\"];const serializationHash=\"framer-2htXE\";const variantClassNames={dLyGn9hDq:\"framer-v-1ygq0zm\",O7tNdZnnU:\"framer-v-1gisqun\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableVariantMap={Desktop:\"O7tNdZnnU\",Mobile:\"dLyGn9hDq\"};const getProps=({closeOverlay,height,id,width,...props})=>{return{...props,iGkMPzz2e:closeOverlay??props.iGkMPzz2e,variant:humanReadableVariantMap[props.variant]??props.variant??\"O7tNdZnnU\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,iGkMPzz2e,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"O7tNdZnnU\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap160qbmz=activeVariantCallback(async(...args)=>{if(iGkMPzz2e){const res=await iGkMPzz2e(...args);if(res===false)return false;}});const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1gisqun\",className,classNames),\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"O7tNdZnnU\",ref:refBinding,style:{backgroundColor:\"rgba(0, 0, 0, 0)\",...style},variants:{dLyGn9hDq:{backgroundColor:\"rgb(255, 255, 255)\"}},...addPropertyOverrides({dLyGn9hDq:{\"data-framer-name\":\"Mobile\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1k49kpz-container\",isAuthoredByUser:true,layoutDependency:layoutDependency,layoutId:\"R4MFq4ueg-container\",nodeId:\"R4MFq4ueg\",rendersWithMotion:true,scopeId:\"xOMoucACr\",children:/*#__PURE__*/_jsx(SquareBookingSystem,{backgroundColor:\"rgb(255, 255, 255)\",borderRadius:8,buttonColor:\"rgb(250, 87, 75)\",buttonTextColor:\"rgb(255, 255, 255)\",cloudFunctionUrl:\"https://booking-server-398277907797.us-east1.run.app\",googleAdsConversionId:\"\",headingColor:\"rgb(51, 51, 51)\",headingText:\"Book a free consultation\",height:\"100%\",id:\"R4MFq4ueg\",layoutId:\"R4MFq4ueg\",serviceDuration:\"\",showShadow:false,style:{width:\"100%\"},subheadingText:\"Schedule your consultation in just a few clicks.\",textColor:\"rgb(68, 68, 68)\",width:\"100%\",...addPropertyOverrides({dLyGn9hDq:{borderRadius:0}},baseVariant,gestureVariant)})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-cwm3av\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"EH2kR7YRQ\",onTap:onTap160qbmz,style:{backgroundColor:\"var(--token-2fdb61e6-4f2a-43bd-8ac6-7d6dc171efed, rgb(242, 242, 242))\",borderBottomLeftRadius:1e3,borderBottomRightRadius:1e3,borderTopLeftRadius:1e3,borderTopRightRadius:1e3,boxShadow:\"0px 1px 2px 0px rgba(0,0,0,0.25)\"},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1jel5rr-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"oCyHxYemD-container\",nodeId:\"oCyHxYemD\",rendersWithMotion:true,scopeId:\"xOMoucACr\",children:/*#__PURE__*/_jsx(Material,{color:\"var(--token-547d758d-12f7-456f-a4ba-ce3923498e6a, rgb(74, 74, 74))\",height:\"100%\",iconSearch:\"Home\",iconSelection:\"Close\",iconStyle15:\"Sharp\",iconStyle2:\"Filled\",iconStyle7:\"Filled\",id:\"oCyHxYemD\",layoutId:\"oCyHxYemD\",mirrored:false,selectByList:true,style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})})})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-2htXE.framer-13b220n, .framer-2htXE .framer-13b220n { display: block; }\",\".framer-2htXE.framer-1gisqun { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; max-width: 800px; overflow: hidden; padding: 0px; position: relative; width: 800px; }\",\".framer-2htXE .framer-1k49kpz-container { flex: none; height: auto; position: relative; width: 100%; }\",\".framer-2htXE .framer-cwm3av { align-content: center; align-items: center; cursor: pointer; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: hidden; padding: 6px; position: absolute; right: 24px; top: 24px; width: min-content; will-change: var(--framer-will-change-override, transform); z-index: 1; }\",\".framer-2htXE .framer-1jel5rr-container { flex: none; height: 20px; position: relative; width: 20px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-2htXE.framer-1gisqun, .framer-2htXE .framer-cwm3av { gap: 0px; } .framer-2htXE.framer-1gisqun > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-2htXE.framer-1gisqun > :first-child { margin-top: 0px; } .framer-2htXE.framer-1gisqun > :last-child { margin-bottom: 0px; } .framer-2htXE .framer-cwm3av > * { margin: 0px; margin-left: calc(0px / 2); margin-right: calc(0px / 2); } .framer-2htXE .framer-cwm3av > :first-child { margin-left: 0px; } .framer-2htXE .framer-cwm3av > :last-child { margin-right: 0px; } }\",\".framer-2htXE.framer-v-1ygq0zm.framer-1gisqun { justify-content: flex-start; max-height: calc(var(--framer-viewport-height, 100vh) * 1); max-width: unset; min-height: calc(var(--framer-viewport-height, 100vh) * 1); }\",\".framer-2htXE.framer-v-1ygq0zm .framer-1k49kpz-container { min-height: 100%; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 754.5\n * @framerIntrinsicWidth 800\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"800px\",null,null]},\"dLyGn9hDq\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,null,\"100vh\",\"100vh\"]}}}\n * @framerVariables {\"iGkMPzz2e\":\"closeOverlay\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerxOMoucACr=withCSS(Component,css,\"framer-2htXE\");export default FramerxOMoucACr;FramerxOMoucACr.displayName=\"Booking Overlay\";FramerxOMoucACr.defaultProps={height:754.5,width:800};addPropertyControls(FramerxOMoucACr,{variant:{options:[\"O7tNdZnnU\",\"dLyGn9hDq\"],optionTitles:[\"Desktop\",\"Mobile\"],title:\"Variant\",type:ControlType.Enum},iGkMPzz2e:{title:\"Close Overlay\",type:ControlType.EventHandler}});addFonts(FramerxOMoucACr,[{explicitInter:true,fonts:[]},...SquareBookingSystemFonts,...MaterialFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerxOMoucACr\",\"slots\":[],\"annotations\":{\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"800px\\\",null,null]},\\\"dLyGn9hDq\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,null,\\\"100vh\\\",\\\"100vh\\\"]}}}\",\"framerIntrinsicWidth\":\"800\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerVariables\":\"{\\\"iGkMPzz2e\\\":\\\"closeOverlay\\\"}\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicHeight\":\"754.5\",\"framerContractVersion\":\"1\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "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",
  "names": ["_define_property", "obj", "key", "value", "Environment", "window", "ua", "isMobile", "isWebView", "hasAnimationSupport", "cb", "id", "event", "errorMsg", "AnimationErrorBoundary", "I", "error", "errorInfo", "scope", "p", "props", "SafeMotion", "se", "initial", "animate", "exit", "transition", "otherProps", "motion", "initialFormState", "SquareBookingSystem", "apiEndpoint", "isDST", "dateString", "date", "year", "month", "day", "secondSunday", "secondSundayDay", "firstSunday", "firstSundayDay", "isDateDstTransitionDay", "ET_OFFSET", "LOCAL_OFFSET", "TIMEZONE_ADJUSTMENT", "createETDate", "etDate", "utcDate", "formatDateForDisplay", "options", "formData", "setFormData", "ye", "isLoading", "setIsLoading", "step", "setStep", "availableDates", "setAvailableDates", "errors", "setErrors", "bookingConfirmed", "setBookingConfirmed", "bookingError", "setBookingError", "bookingId", "setBookingId", "calendarView", "setCalendarView", "viewingDate", "setViewingDate", "customerId", "setCustomerId", "isCreatingCustomer", "setIsCreatingCustomer", "lastCachedFormData", "setLastCachedFormData", "setIsMobile", "nextAvailableDate", "setNextAvailableDate", "dateAnimationDirection", "setDateAnimationDirection", "animationKey", "setAnimationKey", "previousDates", "setPreviousDates", "safeAreaBottom", "setSafeAreaBottom", "ue", "env", "errorValue", "setupError", "logError", "context", "checkIsMobile", "updatedEnv", "today", "nextDate", "a", "b", "dateObj", "handleDateSelect", "FONT_STYLES", "COLORS", "generateCalendarDates", "te", "dates", "now", "i", "localDate", "formattedDate", "timeslots", "hour", "fetchAvailability", "response", "data", "filteredDates", "d", "isValidEmail", "email", "parts", "localPart", "domainPart", "validateForm", "newErrors", "rawPhoneDigits", "createOrLookupCustomer", "result", "createOrFetchCustomerId", "createBooking", "currentCustomerId", "apiUrl", "bookingHours", "bookingMinutes", "isDstTransitionDay", "isDstForDate", "requestBody", "bookingData", "setStepWithUrlUpdate", "attempts", "resolve", "formatPhoneNumber", "digitsOnly", "setRawPhoneDigits", "handleInputChange", "name", "previousValue", "currentValue", "isBackspace", "cursorPosition", "allDigits", "digitsBeforeCursor", "newDigitsOnly", "formattedValue", "prev", "input", "newPosition", "fallbackError", "handlePhoneKeyDown", "part", "selectedDateObj", "availableDateObj", "handleTimeSelect", "time", "updateUrlParameter", "paramName", "paramValue", "url", "newStep", "stepParams", "handleSubmit", "validationError", "bookingSuccess", "handleBack", "handleNextAvailable", "hasAvailableTimeslots", "generateWeekDates", "currentDate", "baseDate", "dayOfWeek", "sunday", "shouldDisableBackButton", "checkDate", "sundayOfCurrentWeek", "prevSunday", "prevSaturday", "shouldDisableForwardButton", "lastAvailableDate", "nextSunday", "groupTimeSlots", "groups", "slot", "filteredGroups", "formatTimeWithAmPm", "timeString", "hours", "minutes", "period", "LeftArrow", "RightArrow", "ConfirmationCalendarIcon", "u", "datesWithTimeslots", "startDate", "startDateString", "isTodayWithAvailability", "etNow", "isTomorrow", "etTomorrow", "getEnhancedDateDisplay", "getOrdinalSuffix", "container", "AnimatePresence", "l", "prevKey", "index", "hasAvailability", "isSelected", "isToday", "isPastDate", "hasNoAvailability", "isDisabled", "animationClass", "prevDate", "slots", "periodIndex", "addPropertyControls", "ControlType", "SquareBookingSystemFonts", "getFonts", "SquareBookingSystem", "MaterialFonts", "Icon", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "closeOverlay", "height", "id", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "fallbackRef", "pe", "refBinding", "defaultLayoutId", "ae", "activeLocale", "setLocale", "useLocaleInfo", "componentViewport", "useComponentViewport", "style", "className", "layoutId", "iGkMPzz2e", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTap160qbmz", "args", "scopingClassNames", "cx", "LayoutGroup", "u", "ComponentViewportProvider", "SmartComponentScopedContainer", "css", "FramerxOMoucACr", "withCSS", "xOMoucACr_default", "addPropertyControls", "ControlType", "addFonts"]
}
