{"version":3,"file":"StepByStepForm.TiIyRjon.mjs","names":["useState","useRef","useMemo","useCallback"],"sources":["https:/framerusercontent.com/modules/BwRmNMb85DeyNNj6BTEJ/UdKkhjdgcbXl4KtXJ3Av/StepByStepForm.js"],"sourcesContent":["// Step-by-step form for collecting Name, Phone, Email, Date, Start Time, Adults, Children, Address, Allergies, Special Occasion, Social Media Sharing, Instagram Handle\n// Features: Webhook submission with retry logic, abandoned form tracking, CRM integration\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useCallback,startTransition,useMemo,useEffect,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";const WEBHOOK_CONFIG={supabaseWebhook:\"https://mzmmunduwavxafewtetv.supabase.co/functions/v1/form-webhook\",secondaryWebhook:\"https://xdomdorylkslplcrluuh.supabase.co/functions/v1/submit-form/82s4a9mw77nn\",maxRetries:3,retryDelayMs:1e3};// Generate unique submission ID to prevent duplicates\nconst generateSubmissionId=()=>{return`${Date.now()}-${Math.random().toString(36).substr(2,9)}`;};// Transform form data to match webhook field names\nconst transformFormData=formData=>{const{firstName,lastName,startTime,specialOccasion,termsAccepted,hasAllergies,finalizingVenue,address,city,state,zipCode,adults,children,...rest}=formData;// Calculate total guests\nconst adultsNum=parseInt(adults)||0;const childrenNum=parseInt(children)||0;const totalGuests=adultsNum+childrenNum;// Combine address fields into one full address string\nconst fullAddress=[address,city,state,zipCode].filter(Boolean).join(\", \");return{...rest,// Combine first and last name into \"name\"\n...firstName||lastName?{name:[firstName,lastName].filter(Boolean).join(\" \")}:{},// Map startTime to start_time (accepted field name)\n...startTime?{start_time:startTime}:{},// Map specialOccasion to occasion (accepted field name)\n...specialOccasion?{occasion:specialOccasion}:{},// Combined address field\n...fullAddress?{address:fullAddress}:{},// Include adults and children with accepted names\n...adults?{adults:adults}:{},...children?{children:children}:{},// Add total guests count\n...totalGuests>0?{guests:totalGuests}:{},// Keep allergies as-is (accepted field name) - only include actual allergy text\n// hasAllergies is just Yes/No, the actual text is in \"allergies\" field which passes through via ...rest\n// Keep terms accepted status\n...termsAccepted?{terms_accepted:termsAccepted}:{},// Map venue status\n...finalizingVenue!==undefined?{venue_pending:finalizingVenue}:{},// Add submission ID\nsubmission_id:generateSubmissionId()};};// Webhook submission with retry logic\nconst submitWithRetry=async(url,data,maxRetries=WEBHOOK_CONFIG.maxRetries,delayMs=WEBHOOK_CONFIG.retryDelayMs)=>{let lastError=\"\";for(let attempt=1;attempt<=maxRetries;attempt++){try{const response=await fetch(url,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(data)});if(response.ok){console.log(`[Webhook] Success on attempt ${attempt} to ${url}`);return{success:true,attempts:attempt};}lastError=`HTTP ${response.status}: ${response.statusText}`;console.warn(`[Webhook] Attempt ${attempt} failed: ${lastError}`);}catch(e){lastError=e instanceof Error?e.message:\"Network error\";console.warn(`[Webhook] Attempt ${attempt} failed: ${lastError}`);}if(attempt<maxRetries){await new Promise(resolve=>setTimeout(resolve,delayMs*attempt));}}console.error(`[Webhook] All ${maxRetries} attempts failed for ${url}`);return{success:false,error:lastError,attempts:maxRetries};};// Submit to Supabase (primary) and secondary webhook\nconst submitToSupabaseAndSync=async(formData,formStatus=\"complete\",additionalData={})=>{const transformedData={...transformFormData(formData),_formStatus:formStatus,...additionalData};// Step 1: Submit to Supabase (primary webhook)\nconst supabaseResult=await submitWithRetry(WEBHOOK_CONFIG.supabaseWebhook,transformedData);if(!supabaseResult.success){return{success:false,error:`Supabase submission failed: ${supabaseResult.error}`};}// Step 1b: Submit to secondary webhook (best-effort)\nconst secondaryResult=await submitWithRetry(WEBHOOK_CONFIG.secondaryWebhook,transformedData);if(!secondaryResult.success){console.warn(`[Secondary Webhook] Submission failed but Supabase submission succeeded: ${secondaryResult.error}`);// Don't fail the whole submission if secondary fails - Supabase is source of truth\n}return{success:true};};// Phone validation - must have at least 10 digits\nconst isValidPhone=phone=>{const digitsOnly=phone.replace(/\\D/g,\"\");return digitsOnly.length>=10;};// Check if form has required contact info (valid phone number)\nconst hasRequiredContactInfo=data=>{return!!data?.phone&&isValidPhone(String(data.phone));};// Send incomplete form data to webhook (fire and forget)\nconst sendIncompleteForm=async(formData,currentStep)=>{// Only send if we have a valid phone number (step 2 completed)\nif(!hasRequiredContactInfo(formData)){console.log(\"[Incomplete Form] Skipping - no valid phone number\");return;}const payload={...transformFormData(formData),_formStatus:\"incomplete\",_lastCompletedStep:currentStep,_totalSteps:steps.length,_abandonedAt:new Date().toISOString()};console.log(\"[Incomplete Form] Sending to webhook:\",payload);// Deliver to BOTH webhooks via sendBeacon. A plain-string beacon goes out as\n// text/plain (a CORS-safelisted type, no preflight) and the browser guarantees\n// delivery even if the tab is closing or navigating. Sequential awaited fetches\n// dropped the second call (secondary Lovable) on unload, so incompletes reached\n// the primary but not the secondary. Beacon sends to both reliably.\ntry{const body=JSON.stringify(payload);let primaryQueued=false;let secondaryQueued=false;if(typeof navigator!==\"undefined\"&&typeof navigator.sendBeacon===\"function\"){primaryQueued=navigator.sendBeacon(WEBHOOK_CONFIG.supabaseWebhook,body);secondaryQueued=navigator.sendBeacon(WEBHOOK_CONFIG.secondaryWebhook,body);}// Fallback: for any endpoint the beacon could not queue, use a keepalive\n// text/plain fetch (still a simple request, still survives navigation).\nif(!primaryQueued&&typeof fetch!==\"undefined\"){void fetch(WEBHOOK_CONFIG.supabaseWebhook,{method:\"POST\",headers:{\"Content-Type\":\"text/plain;charset=UTF-8\"},body,keepalive:true}).catch(()=>{});}if(!secondaryQueued&&typeof fetch!==\"undefined\"){void fetch(WEBHOOK_CONFIG.secondaryWebhook,{method:\"POST\",headers:{\"Content-Type\":\"text/plain;charset=UTF-8\"},body,keepalive:true}).catch(()=>{});}console.log(\"[Incomplete Form] Beacon queued - primary:\",primaryQueued,\"secondary:\",secondaryQueued);}catch(e){// Silent fail for incomplete form tracking\nconsole.error(\"[Incomplete Form] Failed to send:\",e);}};const steps=[{title:\"Your Information\",fields:[{label:\"First Name\",key:\"firstName\",type:\"string\",placeholder:\"First Name\",required:true},{label:\"Last Name\",key:\"lastName\",type:\"string\",placeholder:\"Last Name\",required:true}],layout:\"row\"},{title:\"Contact\",fields:[{label:\"Phone\",key:\"phone\",type:\"tel\",placeholder:\"Phone\",required:true}],layout:\"full\"},{title:\"Contact\",fields:[{label:\"Email\",key:\"email\",type:\"email\",placeholder:\"Email Address\",required:true}],layout:\"full\"},{title:\"Event Date\",fields:[{label:\"Date\",key:\"date\",type:\"date\",placeholder:\"Select Date\",required:true}],layout:\"full\"},{title:\"Event Time\",fields:[{label:\"Start Time\",key:\"startTime\",type:\"enum\",options:[\"1pm\",\"4pm\",\"7pm\",\"9:30pm\"],required:true,helperText:\"If your preferred time isn't listed, please choose the closest available option.\"}],layout:\"full\"},{title:\"Party Size\",fields:[{label:\"Not sure yet?\",key:\"partySizeEstimate\",type:\"enum\",options:[\"Unknown\"],required:false},{label:\"Estimated Number of Adults\",key:\"adults\",type:\"number\",placeholder:\"Number of Adults\",required:true},{label:\"Estimated Children under 13\",key:\"children\",type:\"number\",placeholder:\"Children under 13\",required:false}],layout:\"row\"},{title:\"Location\",fields:[{label:\"Address\",key:\"address\",type:\"address\",placeholder:\"Street Address\",required:true},{label:\"City\",key:\"city\",type:\"string\",placeholder:\"City\",required:true},{label:\"State\",key:\"state\",type:\"string\",placeholder:\"State\",required:true},{label:\"Zip Code\",key:\"zipCode\",type:\"string\",placeholder:\"Zip Code\",required:true}],layout:\"address\",hasVenueCheckbox:true},{title:\"Dietary Information\",fields:[{label:\"Do you or your guests have any allergies?\",key:\"hasAllergies\",type:\"yesno\",required:true},{label:\"Please list allergies\",key:\"allergies\",type:\"string\",placeholder:\"List any allergies...\",conditionalOn:\"hasAllergies\",conditionalValue:\"Yes\",required:false}],layout:\"allergies\"},{title:\"Special Occasion\",fields:[{label:\"Special Occasion?\",key:\"specialOccasion\",type:\"string\",placeholder:\"Birthday, Anniversary, etc. (optional)\",required:false}],layout:\"full\"},{title:\"Terms & Conditions\",fields:[{label:\"Customer Acknowledgement\",key:\"termsAccepted\",type:\"terms\",required:true,termsText:`By submitting a quote request or booking through this platform, I acknowledge and agree that:\n\nRole of Limitless Franchise Solutions LLC DBA Hibachi Guru\nLimitless Franchise Solutions LLC, doing business as Hibachi Guru (\"Hibachi Guru\"), is not a hibachi or catering service provider and is not the seller of record for any services booked through this platform. Hibachi Guru's role is limited to connecting customers with independent third-party hibachi service providers and, where applicable, providing booking coordination services.\n\nIndependent Third-Party Vendors\nAll hibachi services are provided by independent third-party vendors who contract directly with the customer. Hibachi Guru does not control, supervise, or guarantee the quality, safety, timing, pricing, or performance of any services provided.\n\nPayments, Deposits, and Taxes\nAll service pricing, deposits, balances, refunds, gratuities, and any applicable sales, use, or local taxes are determined, collected, and handled solely by the selected hibachi service provider. Hibachi Guru does not collect service payments on behalf of vendors.\n\nAssumption of Risk\nI understand that hibachi cooking and live-fire food preparation involve inherent risks, including open flames, hot surfaces, sharp utensils, and potential property damage. I voluntarily assume all risks associated with hosting or attending the event.\n\nLimitation of Liability\nTo the fullest extent permitted by law, I agree that Hibachi Guru shall not be liable for any:\n\nPersonal injury, property damage, fire, or loss of any kind\n\nFailure to perform, delayed performance, or unsatisfactory service\n\nActs or omissions of the hibachi service provider or its employees, contractors, or agents\n\nClaims, disputes, chargebacks, or damages arising from or related to the event\n\nNo Claims Against Hibachi Guru\nI agree that any claims, disputes, or legal actions arising from the hibachi services must be brought solely against the hibachi service provider and not against Limitless Franchise Solutions LLC DBA Hibachi Guru.\n\nI acknowledge that I have read, understand, and agree to these terms as a condition of submitting a quote request or booking through this platform.`}],layout:\"full\"}];/**\n * Step-by-Step Booking Form\n *\n * Collects: Name, Phone, Email, Date, Start Time, Adults, Children, Address, Allergies, Special Occasion, Social Sharing, Instagram.\n * Features: Webhook retry logic, abandoned form tracking, CRM integration\n * Color scheme: Black and Orange\n *\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 460\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function StepByStepForm(props){const{background=\"#000000\",primary=\"#FFFFFF\",accent=\"#FF6B00\",buttonText=\"#FFFFFF\",buttonBackground=\"#FF6B00\",disabledButtonBackground=\"#B34700\",placeholderColor=\"#999999\",borderColor=\"#4D4D4D\",font={},buttonFont={},style={}}=props;const[step,setStep]=useState(0);const[form,setForm]=useState({});const[submitting,setSubmitting]=useState(false);const[submitted,setSubmitted]=useState(false);const[error,setError]=useState(\"\");const[validationError,setValidationError]=useState(\"\");const[finalizingVenue,setFinalizingVenue]=useState(false);const[isMobile,setIsMobile]=useState(false);const[smsEmailConsent,setSmsEmailConsent]=useState(false);// Detect mobile screen width\nuseEffect(()=>{const checkMobile=()=>{setIsMobile(window.innerWidth<480);};checkMobile();window.addEventListener(\"resize\",checkMobile);return()=>window.removeEventListener(\"resize\",checkMobile);},[]);// Capture UTM parameters and referrer source once on mount.\n// Priority: sessionStorage (set by site-wide header script on FIRST page of session)\n//         → URL params on current page (fallback if script not installed)\n// The header script captures the true landing page + referrer before same-site\n// navigation overwrites document.referrer, solving the \"referral\" misattribution.\nconst trafficSourceRef=useRef({});useEffect(()=>{const SESSION_KEY=\"hg_traffic_source\";try{let captured={};// 1. Prefer sessionStorage — populated by the site-wide attribution script\n//    on the original landing page, so it has the true source/referrer.\ntry{const stored=sessionStorage.getItem(SESSION_KEY);if(stored)captured=JSON.parse(stored);}catch(_){}// 2. If sessionStorage is empty (script not installed or first-page form),\n//    fall back to reading URL params on the current page.\nif(Object.keys(captured).length===0){const params=new URLSearchParams(window.location.search);const utmFields=[\"utm_source\",\"utm_medium\",\"utm_campaign\",\"utm_content\",\"utm_term\",\"gclid\",\"fbclid\"];utmFields.forEach(key=>{const val=params.get(key);if(val)captured[key]=val;});// Only capture referrer from external domains (ignore same-site navigation)\nconst isExternalReferrer=(()=>{if(!document.referrer)return false;try{return new URL(document.referrer).hostname!==window.location.hostname;}catch(_){return false;}})();if(isExternalReferrer)captured[\"referrer\"]=document.referrer;if(!captured[\"landing_page\"])captured[\"landing_page\"]=window.location.href.split(\"?\")[0];}// Always derive inferred_source if missing — whether data came\n// from sessionStorage or URL params. This guarantees every\n// submission includes a human-readable source label.\nif(!captured[\"utm_source\"]&&!captured[\"inferred_source\"]){const isPaidMedium=/^(cpc|ppc|paid|paid_search|paid_social)$/i.test(captured[\"utm_medium\"]??\"\");if(captured[\"gclid\"]){captured[\"inferred_source\"]=\"google_ads\";}else if(captured[\"fbclid\"]){captured[\"inferred_source\"]=\"facebook_ads\";}else if(isPaidMedium){captured[\"inferred_source\"]=captured[\"utm_medium\"].toLowerCase();}else if(captured[\"referrer\"]){try{const refHost=new URL(captured[\"referrer\"]).hostname;if(/google/.test(refHost))captured[\"inferred_source\"]=\"google_organic\";else if(/bing|msn/.test(refHost))captured[\"inferred_source\"]=\"bing_organic\";else if(/facebook|instagram|fb\\.com/.test(refHost))captured[\"inferred_source\"]=\"social\";else if(/yelp/.test(refHost))captured[\"inferred_source\"]=\"yelp\";else if(/tiktok/.test(refHost))captured[\"inferred_source\"]=\"tiktok\";else captured[\"inferred_source\"]=\"referral\";}catch(_){}}else{captured[\"inferred_source\"]=\"direct\";}}// Always record which page the form was filled on\ncaptured[\"form_page\"]=window.location.href.split(\"?\")[0];trafficSourceRef.current=captured;}catch(_){}},[]);// Track form interaction for abandoned form detection\nconst hasSubmittedRef=useRef(false);const isSubmittingRef=useRef(false)// Prevent duplicate submissions\n;const formRef=useRef(form);// Keep formRef in sync with form state\nuseEffect(()=>{formRef.current=form;},[form]);// Track abandoned forms when user leaves page\nuseEffect(()=>{const handleBeforeUnload=()=>{if(!hasSubmittedRef.current&&Object.keys(formRef.current).length>0&&hasRequiredContactInfo(formRef.current)){// Use sendBeacon for reliable delivery on page unload\nconst payload={...transformFormData({...formRef.current,finalizingVenue}),_formStatus:\"abandoned\",_lastCompletedStep:step,_totalSteps:steps.length,_abandonedAt:new Date().toISOString(),...trafficSourceRef.current};console.log(\"[Abandoned Form] Page unload - sending data:\",payload);// Send to primary webhook\nnavigator.sendBeacon(WEBHOOK_CONFIG.supabaseWebhook,JSON.stringify(payload));// Also send to secondary webhook\nnavigator.sendBeacon(WEBHOOK_CONFIG.secondaryWebhook,JSON.stringify(payload));}};// Also track visibility changes (user switches tabs/minimizes)\nconst handleVisibilityChange=()=>{if(document.visibilityState===\"hidden\"&&!hasSubmittedRef.current&&Object.keys(formRef.current).length>0&&hasRequiredContactInfo(formRef.current)){console.log(\"[Incomplete Form] Tab hidden - sending data:\",{...formRef.current,finalizingVenue,step});sendIncompleteForm({...formRef.current,finalizingVenue,...trafficSourceRef.current},step);}};window.addEventListener(\"beforeunload\",handleBeforeUnload);document.addEventListener(\"visibilitychange\",handleVisibilityChange);return()=>{window.removeEventListener(\"beforeunload\",handleBeforeUnload);document.removeEventListener(\"visibilitychange\",handleVisibilityChange);};},[step,finalizingVenue]);// Simple email validation\nconst isValidEmail=email=>{const emailRegex=/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;return emailRegex.test(email);};const currentStep=steps[step];const isLast=step===steps.length-1;const canBack=step>0;// Check if all required fields in current step have values\nconst canNext=useMemo(()=>{if(submitting||submitted)return false;return currentStep.fields.every(field=>{// Skip conditional fields that shouldn't be shown\nif(field.conditionalOn){const conditionMet=form[field.conditionalOn]===field.conditionalValue;if(!conditionMet)return true// Skip validation for hidden fields\n;}// Optional fields don't need values\nif(!field.required)return true;// Party size can be marked unknown instead of entering a number\nif(currentStep.title===\"Party Size\"&&field.key===\"adults\"&&form.partySizeEstimate===\"Unknown\"){return true;}// Address fields are optional if finalizing venue is checked\nif(currentStep.hasVenueCheckbox&&finalizingVenue){return true;}// For yesno type, check if a selection was made\nif(field.type===\"yesno\"){return form[field.key]===\"Yes\"||form[field.key]===\"No\"||form[field.key]===\"Unsure\";}return form[field.key]&&form[field.key]!==\"\";});},[currentStep,form,submitting,submitted,finalizingVenue]);const handleInput=useCallback((key,inputType)=>e=>{let val=e.target.value;// For phone fields, only allow digits and format\n    if(inputType===\"tel\"){val=val.replace(/\\D/g,\"\").slice(0,10);}// Date inputs need synchronous updates to work properly with native picker\n    if(inputType===\"date\"){setForm(f=>({...f,[key]:val}));}else{startTransition(()=>setForm(f=>({...f,[key]:val})));}},[]);const handleEnumSelect=useCallback((key,option)=>{startTransition(()=>setForm(f=>({...f,[key]:option})));},[]);const handleNext=useCallback(()=>{if(!canNext)return;// Validate email if current step has email field\nconst emailField=currentStep.fields.find(f=>f.type===\"email\");if(emailField&&form[emailField.key]){if(!isValidEmail(form[emailField.key])){setValidationError(\"Please enter a valid email address\");return;}}// Validate phone if current step has tel field\nconst phoneField=currentStep.fields.find(f=>f.type===\"tel\");if(phoneField&&form[phoneField.key]){if(!isValidPhone(form[phoneField.key])){setValidationError(\"Please enter a valid phone number (10 digits required)\");return;}}// Validate date is not in the past\nconst dateField=currentStep.fields.find(f=>f.type===\"date\");if(dateField&&form[dateField.key]){const selectedDate=new Date(form[dateField.key]);const today=new Date;today.setHours(0,0,0,0);if(selectedDate<today){setValidationError(\"Please select a date in the future\");return;}}// Validate number inputs only when user has entered a value\nconst numberFields=currentStep.fields.filter(f=>f.type===\"number\");for(const numberField of numberFields){const rawValue=form[numberField.key];if(rawValue===undefined||rawValue===null||rawValue===\"\"){continue;}const parsedValue=Number(rawValue);if(!Number.isFinite(parsedValue)||parsedValue<0){setValidationError(\"Please enter a valid non-negative number\");return;}}setValidationError(\"\");startTransition(()=>{setStep(s=>s+1);});},[canNext,currentStep,form]);const handleBack=useCallback(()=>{if(!canBack)return;setValidationError(\"\");startTransition(()=>{setStep(s=>s-1);});},[canBack,currentStep,form]);const handleSubmit=useCallback(async()=>{// SYNCHRONOUS duplicate check - must happen before ANY async code\nif(isSubmittingRef.current){console.log(\"[Form] Submission already in progress, blocking duplicate\");return;}if(hasSubmittedRef.current){console.log(\"[Form] Already submitted, blocking duplicate\");return;}// Set refs IMMEDIATELY and SYNCHRONOUSLY before any async operations\nisSubmittingRef.current=true;hasSubmittedRef.current=true;// Now safe to do async state updates\nstartTransition(()=>{setSubmitting(true);setError(\"\");});// Include venue finalization status and traffic source in form data\nconst submissionData={...form,finalizingVenue:finalizingVenue,sms_email_consent:smsEmailConsent,...trafficSourceRef.current};const result=await submitToSupabaseAndSync(submissionData,\"complete\",{_submittedAt:new Date().toISOString()});if(!result.success){startTransition(()=>{setError(result.error||\"Submission failed. Please try again.\");setSubmitting(false);});isSubmittingRef.current=false;hasSubmittedRef.current=false;return;}window.location.href=\"/thank-you/\";},[form,finalizingVenue,smsEmailConsent]);const primaryStyles=useMemo(()=>({background:background,color:primary,borderRadius:8,padding:isMobile?16:20,display:\"flex\",flexDirection:\"column\",alignItems:\"stretch\",justifyContent:\"flex-start\",gap:isMobile?14:12,...font,...style,position:\"relative\",boxSizing:\"border-box\"}),[background,primary,font,style,isMobile]);const inputStyles=useMemo(()=>({fontSize:isMobile?16:16,padding:isMobile?\"14px 14px\":\"12px 14px\",borderRadius:6,border:`1px solid ${borderColor}`,outline:\"none\",color:primary,backgroundColor:background,WebkitAppearance:\"none\",MozAppearance:\"none\",appearance:\"none\",width:\"100%\",boxSizing:\"border-box\",minHeight:isMobile?48:44,...font}),[primary,background,borderColor,font,isMobile]);const renderField=field=>{const value=form[field.key]||\"\";// Handle conditional visibility\nif(field.conditionalOn){const conditionMet=form[field.conditionalOn]===field.conditionalValue;if(!conditionMet)return null;}if(field.type===\"string\"||field.type===\"address\"){return /*#__PURE__*/_jsx(\"input\",{id:field.key,name:field.key,type:\"text\",placeholder:field.placeholder,value:value,onChange:handleInput(field.key),style:inputStyles},field.key);}if(field.type===\"email\"){return /*#__PURE__*/_jsx(\"input\",{id:field.key,name:field.key,type:\"email\",placeholder:field.placeholder,value:value,onChange:handleInput(field.key),style:inputStyles},field.key);}if(field.type===\"tel\"){return /*#__PURE__*/_jsx(\"input\",{id:field.key,name:field.key,type:\"tel\",inputMode:\"numeric\",pattern:\"[0-9]*\",maxLength:10,placeholder:field.placeholder,value:value,onChange:handleInput(field.key,\"tel\"),style:inputStyles},field.key);}if(field.type===\"number\"){return /*#__PURE__*/_jsx(\"input\",{id:field.key,name:field.key,type:\"number\",min:\"0\",placeholder:field.placeholder,value:value,onChange:handleInput(field.key),style:inputStyles},field.key);}if(field.type===\"date\"){// Get today's date in YYYY-MM-DD format for min attribute\nconst today=new Date().toISOString().split(\"T\")[0];return /*#__PURE__*/_jsx(\"input\",{id:field.key,name:field.key,type:\"date\",min:today,placeholder:field.placeholder,value:value,onChange:handleInput(field.key,\"date\"),style:inputStyles},field.key);}if(field.type===\"yesno\"){return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:10},children:[/*#__PURE__*/_jsx(\"label\",{style:{fontWeight:600,color:primary,fontSize:isMobile?14:15,...font},children:field.label}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",gap:isMobile?8:10,flexWrap:\"wrap\"},children:[\"Yes\",\"No\",\"Unsure\"].map(option=>/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:()=>handleEnumSelect(field.key,option),style:{padding:isMobile?\"12px 28px\":\"10px 24px\",borderRadius:6,border:value===option?`2px solid ${accent}`:`1px solid ${borderColor}`,background:value===option?accent:background,color:value===option?buttonText:primary,cursor:\"pointer\",fontWeight:500,minHeight:isMobile?44:\"auto\",flex:isMobile?1:\"0 1 auto\",...buttonFont},children:option},option))})]},field.key);}if(field.type===\"enum\"){return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:10},children:[/*#__PURE__*/_jsx(\"label\",{style:{fontWeight:600,color:primary,fontSize:isMobile?14:15,...font},children:field.label}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",gap:isMobile?8:10,flexWrap:\"wrap\",flexDirection:isMobile&&(field.options?.length||0)>3?\"column\":\"row\"},children:field.options?.map(option=>/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:()=>handleEnumSelect(field.key,option),style:{padding:isMobile?\"12px 16px\":\"10px 18px\",borderRadius:6,border:value===option?`2px solid ${accent}`:`1px solid ${borderColor}`,background:value===option?accent:background,color:value===option?buttonText:primary,cursor:\"pointer\",fontWeight:500,flex:isMobile&&(field.options?.length||0)>3?\"none\":\"0 1 auto\",width:isMobile&&(field.options?.length||0)>3?\"100%\":\"auto\",minHeight:isMobile?44:\"auto\",...buttonFont},children:option},option))}),field.helperText&&/*#__PURE__*/_jsx(\"p\",{style:{fontSize:13,color:`${primary}99`,margin:\"4px 0 0 0\",fontStyle:\"italic\",...font},children:field.helperText})]},field.key);}if(field.type===\"terms\"){return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:12},children:[/*#__PURE__*/_jsx(\"label\",{style:{fontWeight:600,color:primary,fontSize:15,...font},children:field.label}),/*#__PURE__*/_jsx(\"div\",{style:{maxHeight:180,overflowY:\"auto\",padding:14,border:`1px solid ${borderColor}`,borderRadius:6,background:background,fontSize:12,lineHeight:1.5,color:placeholderColor,whiteSpace:\"pre-wrap\"},children:field.termsText}),/*#__PURE__*/_jsxs(\"label\",{style:{display:\"flex\",alignItems:\"center\",gap:10,cursor:\"pointer\",...font},children:[/*#__PURE__*/_jsx(\"input\",{type:\"checkbox\",checked:value===\"accepted\",onChange:e=>handleEnumSelect(field.key,e.target.checked?\"accepted\":\"\"),style:{width:18,height:18,accentColor:accent,cursor:\"pointer\"}}),/*#__PURE__*/_jsx(\"span\",{style:{color:primary,fontSize:14},children:\"I have read and agree to the Customer Acknowledgement\"})]}),/*#__PURE__*/_jsxs(\"label\",{style:{display:\"flex\",alignItems:\"flex-start\",gap:10,cursor:\"pointer\",...font},children:[/*#__PURE__*/_jsx(\"input\",{type:\"checkbox\",checked:smsEmailConsent,onChange:e=>setSmsEmailConsent(e.target.checked),style:{width:18,height:18,marginTop:2,accentColor:accent,cursor:\"pointer\",flexShrink:0}}),/*#__PURE__*/_jsx(\"span\",{style:{color:primary,fontSize:14,lineHeight:1.5},children:\"I agree to receive booking confirmations, quote updates, and important service communications via SMS and email from Hibachi Guru\"})]})]},field.key);}return null;};// Render address layout with venue checkbox\nconst renderAddressLayout=()=>{const addressFields=currentStep.fields;return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:10},children:[/*#__PURE__*/_jsxs(\"label\",{style:{display:\"flex\",alignItems:\"center\",gap:10,cursor:\"pointer\",marginBottom:6,...font},children:[/*#__PURE__*/_jsx(\"input\",{type:\"checkbox\",checked:finalizingVenue,onChange:e=>setFinalizingVenue(e.target.checked),style:{width:18,height:18,accentColor:accent,cursor:\"pointer\"}}),/*#__PURE__*/_jsx(\"span\",{style:{color:primary,fontSize:14},children:\"Still finalizing venue (address will be provided later)\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{opacity:finalizingVenue?.5:1,display:\"flex\",flexDirection:\"column\",gap:10},children:[renderField(addressFields[0]),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:isMobile?\"column\":\"row\",gap:10},children:[/*#__PURE__*/_jsx(\"div\",{style:{flex:isMobile?\"none\":2,width:isMobile?\"100%\":\"auto\"},children:renderField(addressFields[1])}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:10,flex:isMobile?\"none\":2,width:isMobile?\"100%\":\"auto\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{flex:1},children:renderField(addressFields[2])}),/*#__PURE__*/_jsx(\"div\",{style:{flex:1},children:renderField(addressFields[3])})]})]})]})]});};// Render allergies layout with Yes/No and conditional input\nconst renderAllergiesLayout=()=>{const yesNoField=currentStep.fields[0];const detailField=currentStep.fields[1];return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:10},children:[renderField(yesNoField),form[yesNoField.key]===\"Yes\"&&renderField(detailField)]});};if(submitted)return /*#__PURE__*/_jsx(\"div\",{style:primaryStyles,children:/*#__PURE__*/_jsx(\"span\",{style:{fontWeight:600,...font},children:\"Thank you! We'll be in touch soon.\"})});return /*#__PURE__*/_jsxs(\"form\",{autoComplete:\"off\",style:primaryStyles,onSubmit:e=>{e.preventDefault();e.stopPropagation();// Extra guard against double-submit\nif(submitting||hasSubmittedRef.current)return;if(isLast)handleSubmit();else handleNext();},\"aria-label\":\"Step by Step Form\",children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                form[aria-label=\"Step by Step Form\"] input::placeholder {\n                    color: ${placeholderColor};\n                    opacity: 1;\n                }\n                form[aria-label=\"Step by Step Form\"] input[type=\"date\"]::-webkit-calendar-picker-indicator {\n                    filter: invert(1);\n                    cursor: pointer;\n                }\n            `}),/*#__PURE__*/_jsx(\"h3\",{style:{fontSize:isMobile?26:32,fontWeight:700,color:primary,margin:0,marginBottom:isMobile?12:16,textAlign:\"center\",...font},children:currentStep.title}),currentStep.layout===\"address\"?renderAddressLayout():currentStep.layout===\"allergies\"?renderAllergiesLayout():currentStep.layout===\"row\"?/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:isMobile?\"column\":\"row\",gap:12},children:currentStep.fields.map(field=>/*#__PURE__*/_jsx(\"div\",{style:{flex:isMobile?\"none\":1,width:isMobile?\"100%\":\"auto\"},children:renderField(field)},field.key))}):currentStep.fields.map(field=>renderField(field)),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:isMobile&&canBack?\"column-reverse\":\"row\",justifyContent:canBack?\"space-between\":\"flex-end\",alignItems:isMobile?\"stretch\":\"center\",gap:isMobile?8:10,marginTop:6},children:[canBack&&/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:handleBack,disabled:submitting,style:{padding:isMobile?\"10px 20px\":\"12px 24px\",borderRadius:50,border:\"none\",background:\"transparent\",color:primary,cursor:\"pointer\",fontWeight:500,textAlign:\"center\",...buttonFont},children:\"← BACK\"}),/*#__PURE__*/_jsxs(\"button\",{type:isLast?\"submit\":\"button\",onClick:isLast?undefined:handleNext,disabled:!canNext||submitting||isLast&&hasSubmittedRef.current,style:{padding:isMobile?\"14px 20px\":\"12px 24px\",borderRadius:50,border:\"none\",background:canNext?buttonBackground:disabledButtonBackground,color:buttonText,cursor:canNext?\"pointer\":\"not-allowed\",fontWeight:600,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",gap:6,width:isMobile?\"100%\":\"auto\",...buttonFont},children:[isLast?submitting?\"SENDING...\":\"SUBMIT\":\"NEXT\",/*#__PURE__*/_jsx(\"span\",{style:{fontSize:16},children:\"→\"})]})]}),!!error&&/*#__PURE__*/_jsx(\"div\",{style:{color:\"#E84C3D\",marginTop:6,fontSize:14},children:error}),!!validationError&&/*#__PURE__*/_jsx(\"div\",{style:{color:\"#E84C3D\",marginTop:6,fontSize:14},children:validationError}),/*#__PURE__*/_jsxs(\"div\",{style:{fontSize:12,color:`${primary}99`,marginTop:6,textAlign:\"center\"},children:[\"Step \",step+1,\" of \",steps.length]})]});}addPropertyControls(StepByStepForm,{background:{type:ControlType.Color,title:\"Background\",defaultValue:\"#000000\"},primary:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#FFFFFF\"},accent:{type:ControlType.Color,title:\"Accent\",defaultValue:\"#FF6B00\"},buttonBackground:{type:ControlType.Color,title:\"Button Background\",defaultValue:\"#FF6B00\"},disabledButtonBackground:{type:ControlType.Color,title:\"Disabled Button\",defaultValue:\"#B34700\"},buttonText:{type:ControlType.Color,title:\"Button Text\",defaultValue:\"#FFFFFF\"},placeholderColor:{type:ControlType.Color,title:\"Placeholder\",defaultValue:\"#999999\"},borderColor:{type:ControlType.Color,title:\"Border Color\",defaultValue:\"#4D4D4D\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\"},buttonFont:{type:ControlType.Font,title:\"Button Font\",controls:\"extended\",defaultFontType:\"sans-serif\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"StepByStepForm\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"400\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"460\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./StepByStepForm.map"],"mappings":"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"}