{"version":3,"file":"HubspotForm.JrG5NfFr.mjs","names":["useState","useId","useRef"],"sources":["https:/framerusercontent.com/modules/PTu2mcQjvot4Vc58rSEQ/DNk3xDxKfImEKWjJSTkZ/HubspotForm.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useEffect,useRef,useState,useId}from\"react\";const defaultProps={portalId:\"\",formId:\"\",region:\"na1\",submissionAction:\"message\",confirmationMessage:\"Thank you for your submission!\",redirectUrl:\"\",redirectPage:\"\",downloadUrl:\"\",downloadFile:\"\",downloadFilename:\"\",submitButtonText:\"Submit\",backgroundColor:\"transparent\",inputBackgroundColor:\"#18181B\",inputTextColor:\"#FAFAFA\",inputBorderColor:\"#27272A\",inputBorderRadius:8,inputPadding:16,fieldSpacing:24,labelColor:\"#A1A1AA\",labelFont:{},inputFont:{},buttonBackgroundColor:\"#FAFAFA\",buttonHoverColor:\"#E4E4E7\",buttonSuccessColor:\"#22C55E\",buttonTextColor:\"#18181B\",buttonFont:{},buttonBorderRadius:8,buttonPadding:{top:14,right:24,bottom:14,left:24},buttonMarginTop:8,successIcon:\"\",successText:\"Success\",confirmationFont:{},confirmationColor:\"#22C55E\",confirmationBackgroundColor:\"#18181B\",width:400,height:300};/**\n * HubSpot Form Component for Framer\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function HubSpotForm(props){const{portalId,formId,region,submissionAction,confirmationMessage,redirectUrl,redirectPage,downloadUrl,downloadFile,downloadFilename,submitButtonText,backgroundColor,inputBackgroundColor,inputTextColor,inputBorderColor,inputBorderRadius,inputPadding,fieldSpacing,labelColor,labelFont,inputFont,buttonBackgroundColor,buttonHoverColor,buttonSuccessColor,buttonTextColor,buttonFont,buttonBorderRadius,buttonPadding,buttonMarginTop,successIcon,successText,confirmationFont,confirmationColor,confirmationBackgroundColor}=props;// Convert button padding object to CSS string\nconst buttonPaddingCss=`${buttonPadding.top}px ${buttonPadding.right}px ${buttonPadding.bottom}px ${buttonPadding.left}px`;const[scriptLoaded,setScriptLoaded]=useState(false);const[buttonState,setButtonState]=useState(\"idle\");const containerId=useId().replace(/:/g,\"-\");const containerRef=useRef(null);// Load HubSpot script\nuseEffect(()=>{if(window.hbspt){setScriptLoaded(true);return;}const existingScript=document.querySelector('script[src*=\"hsforms.net\"]');if(existingScript){existingScript.addEventListener(\"load\",()=>setScriptLoaded(true));return;}const script=document.createElement(\"script\");script.src=\"//js.hsforms.net/forms/embed/v2.js\";script.charset=\"utf-8\";script.async=true;script.onload=()=>setScriptLoaded(true);document.head.appendChild(script);},[]);// Recreate the HubSpot form\nconst createForm=(fadeIn=false)=>{const container=document.getElementById(`hs-form-${containerId}`);if(container&&window.hbspt){if(fadeIn){container.style.opacity=\"0\";}container.innerHTML=\"\";window.hbspt.forms.create({region,portalId,formId,target:`#hs-form-${containerId}`,css:\"\",cssClass:`framer-hs-form-${containerId}`,submitText:submitButtonText||\"Submit\",inlineMessage:\" \",onFormReady:function($form){// Add page context to help prevent spam flagging\nconst contextInput=document.createElement(\"input\");contextInput.type=\"hidden\";contextInput.name=\"hs_context\";contextInput.value=JSON.stringify({pageUri:window.location.href,pageName:document.title});if($form&&$form[0]){$form[0].appendChild(contextInput);}// Fade in after form is ready\nif(fadeIn){setTimeout(()=>{container.style.opacity=\"1\";},50);}}});}};// Update button to submitting state\nconst setButtonSubmitting=()=>{setButtonState(\"submitting\");const button=document.querySelector(`.framer-hs-form-${containerId} input[type=\"submit\"]`);if(button){button.value=\"Submitting...\";button.disabled=true;}};// Update button to success state\nconst setButtonSuccess=()=>{setButtonState(\"success\");const button=document.querySelector(`.framer-hs-form-${containerId} input[type=\"submit\"]`);if(button){// If custom icon is provided, we need to replace the input with a button element\nif(successIcon){const newButton=document.createElement(\"button\");newButton.type=\"button\";newButton.disabled=true;newButton.className=button.className+\" success-state\";newButton.innerHTML=`<img src=\"${successIcon}\" alt=\"\" style=\"height: 1em; vertical-align: middle; margin-right: 6px;\" />${successText||\"Success\"}`;newButton.style.cssText=button.style.cssText;button.replaceWith(newButton);}else{button.value=`✓ ${successText||\"Success\"}`;button.disabled=true;button.classList.add(\"success-state\");}}};// Reset button to idle state\nconst resetButton=()=>{setButtonState(\"idle\");};// Handle form submission\nconst handleFormSubmitted=()=>{// Handle download if needed\nif(submissionAction===\"download\"){const fileToDownload=downloadFile||downloadUrl;if(fileToDownload){const link=document.createElement(\"a\");link.href=fileToDownload;link.download=downloadFilename||\"\";link.target=\"_blank\";document.body.appendChild(link);link.click();document.body.removeChild(link);}}// Handle redirects\nif(submissionAction===\"url\"&&redirectUrl){setTimeout(()=>{window.location.href=redirectUrl;},1e3);return;}if(submissionAction===\"page\"&&redirectPage){setTimeout(()=>{window.location.href=redirectPage;},1e3);return;}// Recreate form immediately (HubSpot replaces form with success message)\n// Then show success state on the new button\ncreateForm(true)// Pass true to enable fade-in transition\n;// Wait for form to be created, then show success\nsetTimeout(()=>{setButtonSuccess();// Reset after 3 seconds\nsetTimeout(()=>{resetButton();const button=document.querySelector(`.framer-hs-form-${containerId} input[type=\"submit\"]`);if(button){button.value=submitButtonText||\"Submit\";button.disabled=false;}},3e3);},300);};// Listen for HubSpot form submission events (works with iframe forms)\nuseEffect(()=>{const handleMessage=event=>{// Check if this is a HubSpot form callback for our form\nif(event.data?.type===\"hsFormCallback\"){const eventFormId=event.data?.id||\"\";const isOurForm=eventFormId===formId||eventFormId.replace(/-/g,\"\")===formId.replace(/-/g,\"\");if(isOurForm&&event.data?.eventName===\"onFormSubmit\"){// Form is being submitted - show spinner\nsetButtonSubmitting();}if(isOurForm&&event.data?.eventName===\"onFormSubmitted\"){// Form submission complete - show success\nhandleFormSubmitted();}}};window.addEventListener(\"message\",handleMessage);return()=>window.removeEventListener(\"message\",handleMessage);},[formId,submissionAction,redirectUrl,redirectPage,downloadFile,downloadUrl,downloadFilename,containerId,successIcon,successText]);// Create HubSpot form\nuseEffect(()=>{if(!scriptLoaded||!portalId||!formId||!window.hbspt)return;// Clear existing form\nconst container=document.getElementById(`hs-form-${containerId}`);if(container){container.innerHTML=\"\";}// Small delay to ensure DOM is ready\nconst timer=setTimeout(()=>createForm(),100);return()=>clearTimeout(timer);},[scriptLoaded,portalId,formId,region,containerId]);// Generate dynamic styles\nconst generateStyles=()=>{const labelStyles=labelFont?Object.entries(labelFont).map(([key,value])=>{const cssKey=key.replace(/([A-Z])/g,\"-$1\").toLowerCase();return`${cssKey}: ${value}`;}).join(\"; \"):\"\";const inputStyles=inputFont?Object.entries(inputFont).map(([key,value])=>{const cssKey=key.replace(/([A-Z])/g,\"-$1\").toLowerCase();return`${cssKey}: ${value}`;}).join(\"; \"):\"\";const buttonStyles=buttonFont?Object.entries(buttonFont).map(([key,value])=>{const cssKey=key.replace(/([A-Z])/g,\"-$1\").toLowerCase();return`${cssKey}: ${value}`;}).join(\"; \"):\"\";return`\n            .framer-hs-form-${containerId} {\n                background-color: ${backgroundColor};\n            }\n\n            .framer-hs-form-${containerId} label {\n                color: ${labelColor} !important;\n                ${labelStyles}\n                margin-bottom: 4px !important;\n                display: block !important;\n            }\n\n            .framer-hs-form-${containerId} .hs-input,\n            .framer-hs-form-${containerId} input[type=\"text\"],\n            .framer-hs-form-${containerId} input[type=\"email\"],\n            .framer-hs-form-${containerId} input[type=\"tel\"],\n            .framer-hs-form-${containerId} input[type=\"number\"],\n            .framer-hs-form-${containerId} textarea,\n            .framer-hs-form-${containerId} select {\n                background-color: ${inputBackgroundColor} !important;\n                color: ${inputTextColor} !important;\n                border: 1px solid ${inputBorderColor} !important;\n                border-radius: ${inputBorderRadius}px !important;\n                padding: ${inputPadding}px !important;\n                width: 100% !important;\n                box-sizing: border-box !important;\n                ${inputStyles}\n            }\n\n            .framer-hs-form-${containerId} .hs-input:focus,\n            .framer-hs-form-${containerId} input:focus,\n            .framer-hs-form-${containerId} textarea:focus,\n            .framer-hs-form-${containerId} select:focus {\n                outline: none !important;\n                border-color: ${buttonBackgroundColor} !important;\n            }\n\n            .framer-hs-form-${containerId} .hs-button,\n            .framer-hs-form-${containerId} input[type=\"submit\"],\n            .framer-hs-form-${containerId} button[type=\"submit\"] {\n                background-color: ${buttonBackgroundColor} !important;\n                color: ${buttonTextColor} !important;\n                border: none !important;\n                border-radius: ${buttonBorderRadius}px !important;\n                padding: ${buttonPaddingCss} !important;\n                cursor: pointer !important;\n                width: 100% !important;\n                box-sizing: border-box !important;\n                margin-top: ${buttonMarginTop}px !important;\n                ${buttonStyles}\n                transition: opacity 0.2s ease !important;\n            }\n\n            .framer-hs-form-${containerId} .hs-button:hover:not(:disabled),\n            .framer-hs-form-${containerId} input[type=\"submit\"]:hover:not(:disabled),\n            .framer-hs-form-${containerId} button[type=\"submit\"]:hover:not(:disabled) {\n                background-color: ${buttonHoverColor} !important;\n            }\n\n            .framer-hs-form-${containerId} .hs-button:disabled,\n            .framer-hs-form-${containerId} input[type=\"submit\"]:disabled,\n            .framer-hs-form-${containerId} button[type=\"submit\"]:disabled {\n                cursor: not-allowed !important;\n                opacity: 0.8 !important;\n            }\n\n            .framer-hs-form-${containerId} .hs-button.success-state,\n            .framer-hs-form-${containerId} input[type=\"submit\"].success-state,\n            .framer-hs-form-${containerId} button[type=\"submit\"].success-state,\n            .framer-hs-form-${containerId} button.success-state {\n                background-color: ${buttonSuccessColor} !important;\n                opacity: 1 !important;\n            }\n\n            .framer-hs-form-${containerId} .hs-form-field {\n                margin-bottom: ${fieldSpacing}px !important;\n            }\n\n            .framer-hs-form-${containerId} .hs-error-msgs {\n                color: #dc3545 !important;\n                font-size: 12px !important;\n                margin-top: 4px !important;\n                list-style: none !important;\n                padding: 0 !important;\n            }\n\n            .framer-hs-form-${containerId} .hs-richtext {\n                margin-bottom: 16px !important;\n            }\n\n            .framer-hs-form-${containerId} fieldset {\n                border: none !important;\n                padding: 0 !important;\n                margin: 0 !important;\n                max-width: 100% !important;\n            }\n\n            .framer-hs-form-${containerId} .legal-consent-container {\n                margin-top: 16px !important;\n            }\n\n            .framer-hs-form-${containerId} .hs-form-checkbox-display {\n                display: flex !important;\n                align-items: flex-start !important;\n                gap: 8px !important;\n            }\n\n            .framer-hs-form-${containerId} .hs-form-checkbox-display input {\n                width: auto !important;\n                margin-top: 4px !important;\n            }\n\n            /* Hide HubSpot's default success message - we handle it in the button */\n            .framer-hs-form-${containerId} .submitted-message,\n            #hs-form-${containerId} .submitted-message,\n            #hs-form-${containerId} > .submitted-message {\n                display: none !important;\n            }\n        `;};// Confirmation message styles\nconst confirmationStyles=confirmationFont?Object.entries(confirmationFont).reduce((acc,[key,value])=>{const cssKey=key.replace(/([A-Z])/g,\"-$1\").toLowerCase();acc[key]=value;return acc;},{}):{};// Placeholder when no IDs configured\nif(!portalId||!formId){return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",backgroundColor:\"#f5f5f5\",border:\"2px dashed #ccc\",borderRadius:8,padding:20,boxSizing:\"border-box\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{textAlign:\"center\",color:\"#666\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:24,marginBottom:8},children:\"📝\"}),/*#__PURE__*/_jsx(\"div\",{style:{fontWeight:600,marginBottom:4},children:\"HubSpot Form\"}),/*#__PURE__*/_jsx(\"div\",{style:{fontSize:12},children:\"Enter your Portal ID and Form ID in the properties panel\"})]})});}return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{width:\"100%\",height:\"100%\",backgroundColor,overflow:\"auto\"},children:[/*#__PURE__*/_jsx(\"style\",{children:generateStyles()}),/*#__PURE__*/_jsx(\"div\",{id:`hs-form-${containerId}`,style:{transition:\"opacity 0.2s ease\"}})]});}HubSpotForm.defaultProps=defaultProps;addPropertyControls(HubSpotForm,{// HubSpot Settings\nportalId:{type:ControlType.String,title:\"Portal ID\",placeholder:\"Your HubSpot Portal ID\"},formId:{type:ControlType.String,title:\"Form ID\",placeholder:\"Your HubSpot Form ID\"},region:{type:ControlType.Enum,title:\"Region\",options:[\"na1\",\"eu1\"],optionTitles:[\"North America (na1)\",\"Europe (eu1)\"],defaultValue:\"na1\"},// Submission Action\nsubmissionAction:{type:ControlType.Enum,title:\"On Submit\",options:[\"message\",\"url\",\"page\",\"download\"],optionTitles:[\"Show Message\",\"Redirect to URL\",\"Redirect to Page\",\"Download File\"],defaultValue:\"message\"},confirmationMessage:{type:ControlType.String,title:\"Message\",placeholder:\"Thank you for your submission!\",displayTextArea:true,hidden:props=>![\"message\",\"download\"].includes(props.submissionAction)},redirectUrl:{type:ControlType.String,title:\"Redirect URL\",placeholder:\"https://example.com/thank-you\",hidden:props=>props.submissionAction!==\"url\"},redirectPage:{type:ControlType.Link,title:\"Redirect Page\",hidden:props=>props.submissionAction!==\"page\"},downloadFile:{type:ControlType.File,title:\"Upload File\",allowedFileTypes:[\"pdf\",\"zip\",\"doc\",\"docx\",\"xls\",\"xlsx\",\"png\",\"jpg\",\"jpeg\",\"gif\",\"mp4\",\"mp3\"],hidden:props=>props.submissionAction!==\"download\"},downloadUrl:{type:ControlType.String,title:\"Or File URL\",placeholder:\"https://example.com/file.pdf\",hidden:props=>props.submissionAction!==\"download\"},downloadFilename:{type:ControlType.String,title:\"Filename\",placeholder:\"download.pdf (optional)\",hidden:props=>props.submissionAction!==\"download\"},// Submit Button\nsubmitButtonText:{type:ControlType.String,title:\"Button Text\",placeholder:\"Submit\",defaultValue:\"Submit\"},// Form Background\nbackgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"transparent\"},// Label Styling\nlabelColor:{type:ControlType.Color,title:\"Label Color\",defaultValue:\"#A1A1AA\"},labelFont:{type:ControlType.Font,title:\"Label Font\",controls:\"extended\"},// Input Styling\ninputBackgroundColor:{type:ControlType.Color,title:\"Input Background\",defaultValue:\"#18181B\"},inputTextColor:{type:ControlType.Color,title:\"Input Text\",defaultValue:\"#FAFAFA\"},inputBorderColor:{type:ControlType.Color,title:\"Input Border\",defaultValue:\"#27272A\"},inputBorderRadius:{type:ControlType.Number,title:\"Input Radius\",defaultValue:8,min:0,max:50,unit:\"px\"},inputPadding:{type:ControlType.Number,title:\"Input Padding\",defaultValue:16,min:0,max:32,unit:\"px\"},fieldSpacing:{type:ControlType.Number,title:\"Field Spacing\",defaultValue:24,min:0,max:48,unit:\"px\"},inputFont:{type:ControlType.Font,title:\"Input Font\",controls:\"extended\"},// Button Styling\nbuttonBackgroundColor:{type:ControlType.Color,title:\"Button Color\",defaultValue:\"#FAFAFA\"},buttonHoverColor:{type:ControlType.Color,title:\"Button Hover\",defaultValue:\"#E4E4E7\"},buttonSuccessColor:{type:ControlType.Color,title:\"Button Success\",defaultValue:\"#22C55E\"},buttonTextColor:{type:ControlType.Color,title:\"Button Text\",defaultValue:\"#18181B\"},buttonBorderRadius:{type:ControlType.Number,title:\"Button Radius\",defaultValue:8,min:0,max:50,unit:\"px\"},buttonPadding:{type:ControlType.FourSides,title:\"Button Padding\",defaultValue:{top:14,right:24,bottom:14,left:24}},buttonMarginTop:{type:ControlType.Number,title:\"Button Spacing\",defaultValue:8,min:0,max:48,unit:\"px\"},buttonFont:{type:ControlType.Font,title:\"Button Font\",controls:\"extended\"},// Success State\nsuccessIcon:{type:ControlType.Image,title:\"Success Icon\"},successText:{type:ControlType.String,title:\"Success Text\",defaultValue:\"Success\",placeholder:\"Success\"},// Confirmation Styling\nconfirmationColor:{type:ControlType.Color,title:\"Message Color\",defaultValue:\"#22C55E\",hidden:props=>![\"message\",\"download\"].includes(props.submissionAction)},confirmationBackgroundColor:{type:ControlType.Color,title:\"Message Background\",defaultValue:\"#18181B\",hidden:props=>![\"message\",\"download\"].includes(props.submissionAction)},confirmationFont:{type:ControlType.Font,title:\"Message Font\",controls:\"extended\",hidden:props=>![\"message\",\"download\"].includes(props.submissionAction)}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"HubSpotForm\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./HubspotForm.map"],"mappings":"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"}