{"version":3,"file":"Loops_Newsletter.DQu4ck-R.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/YL4kiwF19Ej92QlGHpsm/aiTj9q8UacMsjdYZrTvY/Loops_Newsletter.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useRef,useEffect}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * LOOPS NEWSLETTER FORM — with Region\n *\n * Posts to the Loops form endpoint:\n *   POST https://app.loops.so/api/newsletter-form/<FORM_ID>\n *   Content-Type: application/x-www-form-urlencoded\n *\n * SETUP\n * 1. In Loops, create a contact property named `region` (type: String).\n *    Audience → `+` at the end of the column headers → Add property.\n * 2. Form ID + list ID are already filled in for Libra's Newsletter form.\n *\n * NOTE: on an existing contact, the form endpoint can only update `userGroup`.\n * A returning subscriber will NOT have their region overwritten.\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 460\n * @framerIntrinsicHeight 44\n * @framerDisableUnlink\n */const STYLES=`\n@keyframes loopsFormShake {\n  10%, 90% { transform: translate3d(calc(-0.25 * var(--loops-shake)), 0, 0); }\n  20%, 80% { transform: translate3d(calc(0.5 * var(--loops-shake)), 0, 0); }\n  30%, 50%, 70% { transform: translate3d(calc(-1 * var(--loops-shake)), 0, 0); }\n  40%, 60% { transform: translate3d(var(--loops-shake), 0, 0); }\n}\n/* Deliberately NOT setting scrollbar-width / scrollbar-color: a non-auto\n   value on either makes Chrome ignore ::-webkit-scrollbar entirely, and the\n   pseudo-elements are what opt us out of macOS overlay scrollbars (which\n   stay hidden until you scroll — the exact problem being solved).\n   Covers Chrome, Edge, Safari. Firefox keeps its platform default. */\n.loops-region-popup::-webkit-scrollbar { width: var(--loops-sb-width); }\n.loops-region-popup::-webkit-scrollbar-track { background: transparent; }\n.loops-region-popup::-webkit-scrollbar-thumb {\n  background: var(--loops-sb-color);\n  border-radius: 999px;\n  border: 2px solid transparent;\n  background-clip: content-box;\n}\n.loops-region-icon { display: inline-flex; flex: 0 0 auto; overflow: hidden; }\n.loops-region-icon > * { width: 100% !important; height: 100% !important; }`;/** Renders the SVG uploaded to a region's `Flag` control. */function RegionIcon({item,size}){if(!item?.icon)return null;return /*#__PURE__*/_jsx(\"span\",{className:\"loops-region-icon\",\"aria-hidden\":\"true\",style:{width:size,height:size},children:/*#__PURE__*/_jsx(\"img\",{src:item.icon,alt:\"\",style:{objectFit:\"contain\"}})});}// Mirrors the site's locale switcher. `short` shows in the closed field,\n// `label` + `note` show in the popup, `value` is what lands in Loops.\n// Each row also takes an uploaded SVG via its `Flag` control in the panel.\nconst DEFAULT_REGIONS=[{short:\"INT\",label:\"International\",note:\"English\",value:\"INT\"},{short:\"AT\",label:\"Austria\",note:\"Deutsch\",value:\"AT\"},{short:\"BE FR\",label:\"Belgium\",note:\"Fran\\xe7ais\",value:\"BE-FR\"},{short:\"BE NL\",label:\"Belgium\",note:\"Nederlands\",value:\"BE-NL\"},{short:\"CH\",label:\"Switzerland\",note:\"Swiss\",value:\"CH\"},{short:\"CZ\",label:\"Czech Republic\",note:\"čeština\",value:\"CZ\"},{short:\"DE\",label:\"Germany\",note:\"Deutsch\",value:\"DE\"},{short:\"HU\",label:\"Hungary\",note:\"magyar\",value:\"HU\"},{short:\"IT\",label:\"Italy\",note:\"Italiano\",value:\"IT\"},{short:\"NL\",label:\"Netherlands\",note:\"Nederlands\",value:\"NL\"},{short:\"PL\",label:\"Poland\",note:\"Polski\",value:\"PL\"},{short:\"RO\",label:\"Romania\",note:\"Rom\\xe2nă\",value:\"RO\"},{short:\"SK\",label:\"Slovakia\",note:\"Slov\\xe1k\",value:\"SK\"}];export default function LoopsRegionForm({formId=\"cm6xq4rxa015xcusgs61tlusz\",regionFieldName=\"region\",mailingLists=\"cmgeaihb112t40iza6z2u0t7e\",userGroup=\"\",source=\"Framer\",direction=\"row\",gap=6,emailPlaceholder=\"name@email.com\",regionPlaceholder=\"Region\",regionRequired=true,regionWidth=0,defaultRegion=\"\",// Renamed from `regions` on purpose — Framer caches an instance's array\n// props, so a new key is the only way to pick up the new default.\nregionItems=DEFAULT_REGIONS,honeypot=true,minSubmitSeconds=1.5,showIcons=true,iconSize=16,buttonLabel=\"Join\",successMessage=\"Thank you! You have been added to the Libra-Newsletter.\",errorMessage=\"Something went wrong. Please try again.\",font,textColor=\"#000000\",placeholderColor=\"#8A8A8A\",fieldBackground=\"#FFFFFF\",borderColor=\"#000000\",borderWidth=1,radius=0,fieldPaddingX=12,fieldHeight=36,buttonBackground=\"#000000\",buttonTextColor=\"#FFFFFF\",buttonPaddingX=14,popupPosition=\"auto\",popupWidth=240,popupMaxHeight=280,visibleRows=8.5,popupAlign=\"left\",popupBackground=\"#FFFFFF\",popupNoteColor=\"#8A8A8A\",popupHoverBackground=\"#F2F2F2\",popupShadow=true,scrollFade=true,fadeHeight=28,scrollbarAlways=true,scrollbarColor=\"#C9C9C9\",scrollbarWidth=10,successColor=\"#000000\",shakeOnError=true,shakeAmount=6,previewState=\"idle\",previewOpen=false,onSuccess,onError,style}){const items=(regionItems||[]).filter(item=>item&&(item.short||item.label));function resolvePreselectedRegion(preselect){const query=(preselect||\"\").trim().toLowerCase();if(!query)return-1;const byLabel=items.findIndex(item=>(item?.label||\"\").trim().toLowerCase()===query);if(byLabel>=0)return byLabel;const byShort=items.findIndex(item=>(item?.short||\"\").trim().toLowerCase()===query);if(byShort>=0)return byShort;const byValue=items.findIndex(item=>(item?.value||\"\").trim().toLowerCase()===query);if(byValue>=0)return byValue;return-1;}const[email,setEmail]=useState(\"\");const[regionIndex,setRegionIndex]=useState(resolvePreselectedRegion(defaultRegion));const[state,setStateRaw]=useState(\"idle\")// idle | loading | success | error\n;const[message,setMessage]=useState(\"\");const[shakeNonce,setShakeNonce]=useState(0);// Bot traps. `trap` must stay empty; humans never see the field.\nconst[trap,setTrap]=useState(\"\");const mountedAt=useRef(Date.now());const[open,setOpen]=useState(false);const[openUp,setOpenUp]=useState(false);const[activeIndex,setActiveIndex]=useState(-1);const scrollRef=useRef(null);const[rowHeight,setRowHeight]=useState(0);const[atTop,setAtTop]=useState(true);const[atBottom,setAtBottom]=useState(true);const formRef=useRef(null);const selectRef=useRef(null);const triggerRef=useRef(null);const onCanvas=RenderTarget.current()===RenderTarget.canvas;// On the Framer canvas, ignore live state so you can style each state.\nconst view=onCanvas?previewState:state;const isOpen=onCanvas?previewOpen:open;const selected=regionIndex>=0&&regionIndex<items.length?items[regionIndex]:undefined;// Every transition into \"error\" bumps the nonce, so a second failed\n// submit re-shakes even though the state value hasn't changed.\nfunction setState(next){setStateRaw(next);if(next===\"error\")setShakeNonce(n=>n+1);}useEffect(()=>{setRegionIndex(resolvePreselectedRegion(defaultRegion));},[defaultRegion]);useEffect(()=>{if(regionIndex>=items.length)setRegionIndex(-1);},[items.length,regionIndex]);// Shakes the entire component sideways on any failed submit.\nuseEffect(()=>{if(!shakeNonce||!shakeOnError)return;const element=formRef.current;if(!element)return;if(typeof window!==\"undefined\"&&window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches)return;// Cancel + force reflow, otherwise it only ever animates once.\nelement.style.animation=\"none\";void element.offsetWidth;element.style.animation=\"loopsFormShake 420ms cubic-bezier(0.36, 0.07, 0.19, 0.97)\";// Strip the animation once it finishes. An element with a transform\n// still in effect keeps its own stacking context, which re-orders\n// this component against its siblings — so it must not linger.\nconst clear=()=>{element.style.animation=\"\";};element.addEventListener(\"animationend\",clear,{once:true});return()=>element.removeEventListener(\"animationend\",clear);},[shakeNonce,shakeOnError]);// Failures are silent by design — bind `On error` in Framer to show\n// something. This log is the only other trace, so keep it.\nuseEffect(()=>{if(state===\"error\"&&message)console.warn(\"[Loops form]\",message);},[state,message]);// Height that shows `visibleRows` rows — 8.5 leaves the 9th half cut,\n// which reads unmistakably as \"there is another row below\". Derived from\n// a measured row so it survives font, padding and icon-size changes.\nconst effectiveMaxHeight=visibleRows>0&&rowHeight>0?Math.round(rowHeight*visibleRows):popupMaxHeight;// Which edges the list is resting against, so the right fades show.\nfunction updateScrollEdges(){const el=scrollRef.current;if(!el)return;setAtTop(el.scrollTop<=1);setAtBottom(el.scrollTop+el.clientHeight>=el.scrollHeight-1);}// Re-measure when the popup opens — a short list needs no fade at all.\nuseEffect(()=>{if(!isOpen)return;const row=scrollRef.current?.querySelector('[role=\"option\"]');if(row)setRowHeight(row.getBoundingClientRect().height);updateScrollEdges();},[isOpen,items.length,iconSize,fieldPaddingX,font]);// Edges shift once the measured height lands.\nuseEffect(()=>{if(isOpen)updateScrollEdges();},[effectiveMaxHeight]);// Close the popup on outside click.\nuseEffect(()=>{if(!open)return;function handlePointerDown(event){if(!selectRef.current?.contains(event.target))setOpen(false);}document.addEventListener(\"pointerdown\",handlePointerDown);return()=>document.removeEventListener(\"pointerdown\",handlePointerDown);},[open]);function openPopup(){if(onCanvas)return;let up=popupPosition===\"up\";if(popupPosition===\"auto\"&&triggerRef.current){const rect=triggerRef.current.getBoundingClientRect();const below=window.innerHeight-rect.bottom;// Footers sit at the bottom of the page — usually opens upward.\nup=below<effectiveMaxHeight+16&&rect.top>below;}setOpenUp(up);setActiveIndex(Math.max(0,regionIndex));setOpen(true);}function choose(index){setRegionIndex(index);setOpen(false);triggerRef.current?.focus();}function handleTriggerKeyDown(event){if(!open){if([\"ArrowDown\",\"ArrowUp\",\"Enter\",\" \"].includes(event.key)){event.preventDefault();openPopup();}return;}if(event.key===\"Escape\"){event.preventDefault();setOpen(false);}else if(event.key===\"ArrowDown\"){event.preventDefault();setActiveIndex(i=>(i+1)%items.length);}else if(event.key===\"ArrowUp\"){event.preventDefault();setActiveIndex(i=>(i-1+items.length)%items.length);}else if(event.key===\"Enter\"||event.key===\" \"){event.preventDefault();if(items[activeIndex])choose(activeIndex);}}async function handleSubmit(event){event?.preventDefault();if(onCanvas)return;if(state===\"loading\")return;if(!formId){setState(\"error\");setMessage(\"No Form ID set on this component.\");onError?.();return;}if(honeypot){// A filled decoy means a bot walked the DOM and completed\n// every input it found.\nif(trap.trim()){setState(\"error\");setMessage(\"Blocked: honeypot field was filled.\");onError?.();return;}// Humans need time to read and type. Bots post instantly.\nconst elapsed=(Date.now()-mountedAt.current)/1e3;if(elapsed<minSubmitSeconds){setState(\"error\");setMessage(`Blocked: submitted after ${elapsed.toFixed(2)}s, under the ${minSubmitSeconds}s threshold.`);onError?.();return;}}if(!email||!/^\\S+@\\S+\\.\\S+$/.test(email)){setState(\"error\");setMessage(\"Please enter a valid email address.\");onError?.();return;}if(regionRequired&&!selected){setState(\"error\");setMessage(\"Please select your region.\");onError?.();return;}// Client-side rate limit, same as Loops' own generated form.\n// Stops a second submit inside 60s ever reaching the endpoint.\ntry{const now=Date.now();const previous=window.localStorage.getItem(\"loops-form-timestamp\");if(previous&&Number(previous)+60*1e3>now){setState(\"error\");setMessage(\"Too many signups, please try again in a little while.\");onError?.();return;}window.localStorage.setItem(\"loops-form-timestamp\",String(now));}catch(e){// localStorage blocked (private mode / embedded) — submit anyway.\n}function clearRateLimit(){try{window.localStorage.setItem(\"loops-form-timestamp\",\"\");}catch(e){}}setState(\"loading\");setMessage(\"\");const fields={email,source};const regionValue=selected?.value||selected?.label;if(regionValue)fields[regionFieldName||\"region\"]=regionValue;if(mailingLists)fields.mailingLists=mailingLists;if(userGroup)fields.userGroup=userGroup;const body=Object.keys(fields).filter(key=>fields[key]).map(key=>`${encodeURIComponent(key)}=${encodeURIComponent(fields[key])}`).join(\"&\");try{const response=await fetch(`https://app.loops.so/api/newsletter-form/${formId}`,{method:\"POST\",body,headers:{\"Content-Type\":\"application/x-www-form-urlencoded\"}});if(response.status===429){setState(\"error\");setMessage(\"Too many signups, please try again in a little while.\");clearRateLimit();onError?.();return;}const data=await response.json();if(response.ok&&data?.success){setState(\"success\");setEmail(\"\");setRegionIndex(resolvePreselectedRegion(defaultRegion));onSuccess?.();return;}setState(\"error\");setMessage(data?.message||response.statusText||errorMessage);clearRateLimit();onError?.();}catch(error){setState(\"error\");setMessage(// Cloudflare blocks show up as a generic fetch failure.\nerror?.message===\"Failed to fetch\"?\"Too many signups, please try again in a little while.\":error?.message||errorMessage);clearRateLimit();onError?.();}}const fontStyle={...font||{},color:textColor};const fieldStyle={...fontStyle,height:fieldHeight,padding:`0 ${fieldPaddingX}px`,background:fieldBackground,border:`${borderWidth}px solid ${borderColor}`,borderRadius:radius,boxSizing:\"border-box\",outline:\"none\",margin:0,WebkitAppearance:\"none\",appearance:\"none\"};if(view===\"success\"){return /*#__PURE__*/_jsx(\"div\",{style:{...fontStyle,color:successColor,display:\"flex\",alignItems:\"center\",minHeight:fieldHeight,...style},children:successMessage});}return /*#__PURE__*/_jsxs(\"form\",{ref:formRef,onSubmit:handleSubmit,noValidate:true,style:{display:\"flex\",flexDirection:\"column\",gap:6,width:\"100%\",[\"--loops-shake\"]:`${shakeAmount}px`,...style},children:[/*#__PURE__*/_jsx(\"style\",{children:STYLES}),honeypot&&/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",left:-9999,top:\"auto\",width:1,height:1,overflow:\"hidden\"},children:/*#__PURE__*/_jsxs(\"label\",{children:[\"Website\",/*#__PURE__*/_jsx(\"input\",{type:\"text\",name:\"website\",tabIndex:-1,autoComplete:\"off\",value:trap,onChange:event=>setTrap(event.target.value)})]})}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:direction,gap,width:\"100%\"},children:[/*#__PURE__*/_jsx(\"input\",{type:\"email\",name:\"email\",value:email,\"aria-required\":\"true\",placeholder:emailPlaceholder,onChange:event=>setEmail(event.target.value),disabled:view===\"loading\",style:{...fieldStyle,flex:1,minWidth:0}}),/*#__PURE__*/_jsxs(\"div\",{ref:selectRef,style:{position:\"relative\",flex:\"0 0 auto\"},children:[/*#__PURE__*/_jsxs(\"button\",{ref:triggerRef,type:\"button\",role:\"combobox\",\"aria-expanded\":isOpen,\"aria-haspopup\":\"listbox\",\"aria-label\":regionPlaceholder,disabled:view===\"loading\",onClick:()=>open?setOpen(false):openPopup(),onKeyDown:handleTriggerKeyDown,style:{...fieldStyle,display:\"flex\",alignItems:\"center\",gap:6,cursor:\"pointer\",color:selected?textColor:placeholderColor,whiteSpace:\"nowrap\",// Fixed width stops the row jumping as the\n// label changes between \"Region\", \"DE\", \"BE FR\".\nwidth:regionWidth>0?regionWidth:undefined,justifyContent:regionWidth>0?\"space-between\":undefined},children:[showIcons&&selected?/*#__PURE__*/_jsx(RegionIcon,{item:selected,size:iconSize}):null,/*#__PURE__*/_jsx(\"span\",{children:selected?selected.short||selected.value||selected.label:regionPlaceholder}),/*#__PURE__*/_jsx(Chevron,{color:selected?textColor:placeholderColor})]}),isOpen&&/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",zIndex:20,[popupAlign===\"right\"?\"right\":\"left\"]:0,[openUp?\"bottom\":\"top\"]:fieldHeight+6,width:popupWidth,background:popupBackground,border:`${borderWidth}px solid ${borderColor}`,borderRadius:radius,boxShadow:popupShadow?\"0 8px 24px rgba(0,0,0,0.12)\":\"none\",overflow:\"hidden\"},children:[/*#__PURE__*/_jsx(\"div\",{ref:scrollRef,role:\"listbox\",onScroll:updateScrollEdges,className:scrollbarAlways?\"loops-region-popup\":undefined,style:{[\"--loops-sb-color\"]:scrollbarColor,[\"--loops-sb-width\"]:`${scrollbarWidth}px`,maxHeight:effectiveMaxHeight,overflowY:\"auto\",padding:0},children:items.map((item,index)=>{const value=item.value||item.label;const isSelected=index===regionIndex;const isActive=index===activeIndex;return /*#__PURE__*/_jsxs(\"button\",{type:\"button\",role:\"option\",\"aria-selected\":isSelected,onClick:()=>choose(index),onMouseEnter:()=>setActiveIndex(index),style:{...fontStyle,display:\"flex\",alignItems:\"center\",gap:8,width:\"100%\",textAlign:\"left\",padding:`9px ${fieldPaddingX}px`,background:isActive||isSelected?popupHoverBackground:\"transparent\",border:\"none\",borderRadius:0,cursor:\"pointer\",fontWeight:isSelected?600:400},children:[showIcons?/*#__PURE__*/_jsx(RegionIcon,{item:item,size:iconSize}):null,/*#__PURE__*/_jsx(\"span\",{children:item.label}),item.note?/*#__PURE__*/_jsxs(\"span\",{style:{color:popupNoteColor},children:[\"(\",item.note,\")\"]}):null]},value+index);})}),scrollFade&&!atTop&&/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",left:0,right:0,top:0,height:fadeHeight,background:`linear-gradient(to bottom, ${popupBackground}, transparent)`,pointerEvents:\"none\"}}),scrollFade&&!atBottom&&/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",left:0,right:0,bottom:0,height:fadeHeight,background:`linear-gradient(to top, ${popupBackground}, transparent)`,pointerEvents:\"none\"}})]})]}),/*#__PURE__*/_jsx(\"button\",{type:\"submit\",disabled:view===\"loading\",style:{...fontStyle,height:fieldHeight,padding:`0 ${buttonPaddingX}px`,background:buttonBackground,color:buttonTextColor,border:\"none\",borderRadius:radius,cursor:view===\"loading\"?\"default\":\"pointer\",opacity:view===\"loading\"?.6:1,whiteSpace:\"nowrap\",boxSizing:\"border-box\"},children:view===\"loading\"?\"…\":buttonLabel})]})]});}function Chevron({color}){return /*#__PURE__*/_jsx(\"svg\",{width:\"10\",height:\"6\",viewBox:\"0 0 10 6\",fill:\"none\",\"aria-hidden\":\"true\",style:{flex:\"0 0 auto\"},children:/*#__PURE__*/_jsx(\"path\",{d:\"M1 1L5 5L9 1\",stroke:color,strokeWidth:\"1.2\"})});}addPropertyControls(LoopsRegionForm,{formId:{type:ControlType.String,title:\"Form ID\",defaultValue:\"cm6xq4rxa015xcusgs61tlusz\",description:\"The ID at the end of your Loops Form Endpoint (app.loops.so/forms → Settings).\"},regionFieldName:{type:ControlType.String,title:\"Region key\",defaultValue:\"region\",description:\"Must match the API name of the property in Loops.\"},regionItems:{type:ControlType.Array,title:\"Regions\",control:{type:ControlType.Object,controls:{short:{type:ControlType.String,title:\"Short\",description:\"Shown in the closed field, e.g. DE\"},label:{type:ControlType.String,title:\"Name\"},note:{type:ControlType.String,title:\"Language\"},value:{type:ControlType.String,title:\"Value\",description:\"What gets saved to Loops.\"},icon:{type:ControlType.File,title:\"Flag\",allowedFileTypes:[\"svg\"]}}},defaultValue:DEFAULT_REGIONS},defaultRegion:{type:ControlType.String,title:\"Preselect\",placeholder:\"e.g. Germany\",description:\"Set this per localized page using the region name so the field opens on the right country.\"},regionRequired:{type:ControlType.Boolean,title:\"Region req.\",defaultValue:true},regionPlaceholder:{type:ControlType.String,title:\"Region hint\",defaultValue:\"Region\"},regionWidth:{type:ControlType.Number,title:\"Region w\",defaultValue:0,min:0,max:240,description:\"0 = fits its text. Set a fixed width so the row doesn't jump between 'Region', 'DE' and 'BE FR'.\"},honeypot:{type:ControlType.Boolean,title:\"Bot trap\",defaultValue:true,description:\"Adds an invisible decoy field and rejects instant submits. Costs nothing for real visitors.\"},minSubmitSeconds:{type:ControlType.Number,title:\"Min secs\",defaultValue:1.5,min:0,max:10,step:.5,hidden:props=>!props.honeypot,description:\"Submits faster than this are treated as bots.\"},showIcons:{type:ControlType.Boolean,title:\"Icons\",defaultValue:true},iconSize:{type:ControlType.Number,title:\"Icon size\",defaultValue:16,min:8,max:40,hidden:props=>!props.showIcons},mailingLists:{type:ControlType.String,title:\"Lists\",defaultValue:\"cmgeaihb112t40iza6z2u0t7e\",description:\"Newsletter = cmgeaihb112t40iza6z2u0t7e \\xb7 NL small waitlist = cmk3rvcuz0z6u0iwzakc35lpv \\xb7 NL big waitlist = cmk3rvft61gzv0ix37now9wdu\"},userGroup:{type:ControlType.String,title:\"User group\"},source:{type:ControlType.String,title:\"Source\",defaultValue:\"Framer\"},emailPlaceholder:{type:ControlType.String,title:\"Email hint\",defaultValue:\"name@email.com\"},buttonLabel:{type:ControlType.String,title:\"Button\",defaultValue:\"Join\"},successMessage:{type:ControlType.String,title:\"Success\",defaultValue:\"Thank you! You have been added to the Libra-Newsletter.\"},direction:{type:ControlType.Enum,title:\"Direction\",options:[\"row\",\"column\"],optionTitles:[\"Row\",\"Column\"],defaultValue:\"row\",displaySegmentedControl:true},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:6,min:0},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:14,lineHeight:\"1.2em\"}},textColor:{type:ControlType.Color,title:\"Text\",defaultValue:\"#000000\"},placeholderColor:{type:ControlType.Color,title:\"Hint\",defaultValue:\"#8A8A8A\"},fieldBackground:{type:ControlType.Color,title:\"Field bg\",defaultValue:\"#FFFFFF\"},borderColor:{type:ControlType.Color,title:\"Border\",defaultValue:\"#000000\"},borderWidth:{type:ControlType.Number,title:\"Border w\",defaultValue:1,min:0,max:8},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:0,min:0,max:40},fieldHeight:{type:ControlType.Number,title:\"Height\",defaultValue:36,min:24,max:80},fieldPaddingX:{type:ControlType.Number,title:\"Field pad\",defaultValue:12,min:0,max:40},buttonBackground:{type:ControlType.Color,title:\"Btn bg\",defaultValue:\"#000000\"},buttonTextColor:{type:ControlType.Color,title:\"Btn text\",defaultValue:\"#FFFFFF\"},buttonPaddingX:{type:ControlType.Number,title:\"Btn pad\",defaultValue:14,min:0,max:60},popupPosition:{type:ControlType.Enum,title:\"Popup\",options:[\"auto\",\"up\",\"down\"],optionTitles:[\"Auto\",\"Up\",\"Down\"],defaultValue:\"auto\",displaySegmentedControl:true,description:\"Auto opens upward when there's no room below.\"},popupAlign:{type:ControlType.Enum,title:\"Align\",options:[\"left\",\"right\"],optionTitles:[\"Left\",\"Right\"],defaultValue:\"left\",displaySegmentedControl:true},popupWidth:{type:ControlType.Number,title:\"Popup w\",defaultValue:240,min:120,max:480},visibleRows:{type:ControlType.Number,title:\"Rows shown\",defaultValue:8.5,min:0,max:20,step:.5,description:\"Use a .5 value to leave the next row half cut — the clearest hint the list continues. 0 falls back to a fixed Popup h.\"},popupMaxHeight:{type:ControlType.Number,title:\"Popup h\",defaultValue:280,min:120,max:600,hidden:props=>props.visibleRows>0},popupBackground:{type:ControlType.Color,title:\"Popup bg\",defaultValue:\"#FFFFFF\"},popupNoteColor:{type:ControlType.Color,title:\"Language\",defaultValue:\"#8A8A8A\"},popupHoverBackground:{type:ControlType.Color,title:\"Hover\",defaultValue:\"#F2F2F2\"},popupShadow:{type:ControlType.Boolean,title:\"Shadow\",defaultValue:true},scrollFade:{type:ControlType.Boolean,title:\"Fade edges\",defaultValue:true,description:\"Fades whichever edge has more content — the clearest signal the list continues.\"},fadeHeight:{type:ControlType.Number,title:\"Fade size\",defaultValue:28,min:8,max:80,hidden:props=>!props.scrollFade},scrollbarAlways:{type:ControlType.Boolean,title:\"Scrollbar\",defaultValue:true,description:\"Keeps the scrollbar visible so it's obvious the list continues. Off = the OS default, which hides it on macOS.\"},scrollbarColor:{type:ControlType.Color,title:\"Bar colour\",defaultValue:\"#C9C9C9\",hidden:props=>!props.scrollbarAlways},scrollbarWidth:{type:ControlType.Number,title:\"Bar width\",defaultValue:10,min:4,max:20,hidden:props=>!props.scrollbarAlways},successColor:{type:ControlType.Color,title:\"Success c.\",defaultValue:\"#000000\"},shakeOnError:{type:ControlType.Boolean,title:\"Shake\",defaultValue:true,description:\"Shakes the whole component sideways on a failed submit.\"},shakeAmount:{type:ControlType.Number,title:\"Shake px\",defaultValue:6,min:1,max:24,hidden:props=>!props.shakeOnError},previewState:{type:ControlType.Enum,title:\"Preview\",options:[\"idle\",\"loading\",\"error\",\"success\"],optionTitles:[\"Idle\",\"Loading\",\"Error\",\"Success\"],defaultValue:\"idle\",description:\"Canvas only — lets you style each state. Ignored when published.\"},previewOpen:{type:ControlType.Boolean,title:\"Popup open\",defaultValue:false,description:\"Canvas only — hold the popup open so you can style it.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"LoopsRegionForm\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Loops_Newsletter.map"],"mappings":"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"}