{"version":3,"file":"SharedEmailField.BDPY8aRL.mjs","names":["React.useState","React.useId","_Fragment"],"sources":["https:/framerusercontent.com/modules/pRLkH3sK2HGNZ7gA2j2c/1vP6VhJnIuhVd5yKBLGD/SharedEmailField.js"],"sourcesContent":["// Get Started: https://www.framer.com/developers\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";const KEY_FALLBACK=\"shared_email\";function shadowToCss(s){if(!s?.enabled)return\"none\";return`${s.x}px ${s.y}px ${s.blur}px ${s.spread}px ${s.color}`;}function safeTrim(v){return(typeof v===\"string\"?v:String(v??\"\")).trim();}function getKey(k){return safeTrim(k)||KEY_FALLBACK;}function getStored(storageKey){const key=getKey(storageKey);try{return safeTrim(localStorage.getItem(key));}catch{return\"\";}}function setStored(storageKey,value){const key=getKey(storageKey);const v=safeTrim(value);try{localStorage.setItem(key,v);}catch{}// Broadcast for cross-component sync\ntry{window.dispatchEvent(new CustomEvent(\"__shared_input__\",{detail:{key,value:v}}));}catch{}}function useSharedValue(storageKey){const key=getKey(storageKey);const[value,setValue]=React.useState(()=>getStored(key));React.useEffect(()=>{const onEvt=e=>{const d=e?.detail;if(!d||d.key!==key)return;setValue(safeTrim(d.value));};window.addEventListener(\"__shared_input__\",onEvt);return()=>window.removeEventListener(\"__shared_input__\",onEvt);},[key]);return[value,setValue,key];}function fontToCss(f){if(!f)return{};const css={};if(f.family)css.fontFamily=f.family;if(f.style)css.fontStyle=f.style;if(typeof f.weight===\"number\")css.fontWeight=f.weight;if(f.lineHeight!==undefined)css.lineHeight=f.lineHeight;if(typeof f.letterSpacing===\"number\")css.letterSpacing=f.letterSpacing;return css;}function FieldShell(props){return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",height:\"100%\"},children:[props.showLabel&&props.label?.length>0&&/*#__PURE__*/_jsx(\"div\",{style:{marginBottom:6,color:props.labelColor,...fontToCss(props.labelFont),lineHeight:(props.labelFont?.lineHeight)??1.2},children:props.label}),props.children]});}function StyledInput(props){const[focused,setFocused]=React.useState(false);const id=React.useId();const placeholderCss=`\n      [data-shared-input=\"${id}\"]::placeholder { color: ${props.placeholderColor}; opacity: 1; }\n    `.trim();const inputStyle={width:\"100%\",height:\"100%\",paddingLeft:props.paddingX,paddingRight:props.paddingX,paddingTop:props.paddingY,paddingBottom:props.paddingY,borderRadius:props.radius,background:props.background,color:props.textColor,border:props.border.enabled?`${props.border.width}px ${props.border.style} ${props.border.color}`:\"none\",outline:\"none\",boxShadow:focused?shadowToCss(props.focusShadow):shadowToCss(props.shadow),...fontToCss(props.font),fontSize:props.fontSize,opacity:1,cursor:\"text\",transition:\"box-shadow 150ms ease, border-color 150ms ease\"};return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:placeholderCss}),/*#__PURE__*/_jsx(\"input\",{\"data-shared-input\":id,name:props.name,type:props.type,value:props.value,placeholder:props.placeholder,onFocus:()=>setFocused(true),onBlur:()=>setFocused(false),onChange:e=>props.onValueChange(e.target.value),style:inputStyle})]});}/**\n * Step 1 - user types, stores + broadcasts. Placeholder only.\n */export function EmailCapture(props){const[storedValue]=useSharedValue(props.storageKey);const[value,setValue]=React.useState(storedValue||\"\");return /*#__PURE__*/_jsx(FieldShell,{...props,children:/*#__PURE__*/_jsx(StyledInput,{...props,value:value,onValueChange:v=>{setValue(v);setStored(props.storageKey,v);}})});}/**\n * Step 2 - prefill only if stored value exists. Placeholder only.\n */export function EmailPrefill(props){const[storedValue]=useSharedValue(props.storageKey);const[value,setValue]=React.useState(\"\");React.useEffect(()=>{const stored=getStored(props.storageKey);if(stored)setValue(stored);},[props.storageKey]);React.useEffect(()=>{if(!props.lockToStoredValue)return;const v=safeTrim(storedValue);if(v&&v!==safeTrim(value))setValue(v);},[storedValue,props.lockToStoredValue,value]);return /*#__PURE__*/_jsx(FieldShell,{...props,children:/*#__PURE__*/_jsx(StyledInput,{...props,value:value,onValueChange:v=>{if(props.lockToStoredValue)return;setValue(v);setStored(props.storageKey,v);}})});}/**\n * Drop this inside a native Framer Form to include the shared email in submission.\n */export function HiddenEmailField(props){const[value]=useSharedValue(props.storageKey);return /*#__PURE__*/_jsx(\"input\",{type:\"hidden\",name:props.name,value:safeTrim(value)});}/* -------- Property Controls -------- */const borderDefaults={enabled:true,width:1,color:\"rgba(0,0,0,0.15)\",style:\"solid\"};const shadowDefaults={enabled:false,x:0,y:10,blur:30,spread:0,color:\"rgba(0,0,0,0.15)\"};const focusShadowDefaults={enabled:false,x:0,y:0,blur:0,spread:3,color:\"rgba(0,0,0,0.15)\"};const fontDefaults={family:\"system-ui\",weight:500,size:16,lineHeight:1.2,letterSpacing:0};const labelFontDefaults={family:\"system-ui\",weight:600,size:12,lineHeight:1.2,letterSpacing:0};const commonControls={storageKey:{type:ControlType.String,defaultValue:\"shared_email\"},name:{type:ControlType.String,defaultValue:\"email\"},type:{type:ControlType.Enum,options:[\"email\",\"text\"],defaultValue:\"email\"},placeholder:{type:ControlType.String,defaultValue:\"Email\"},paddingX:{type:ControlType.Number,defaultValue:12,min:0,max:80},paddingY:{type:ControlType.Number,defaultValue:12,min:0,max:80},radius:{type:ControlType.Number,defaultValue:10,min:0,max:80},font:{type:ControlType.Font,defaultValue:fontDefaults},fontSize:{type:ControlType.Number,defaultValue:16,min:8,max:80},textColor:{type:ControlType.Color,defaultValue:\"#111111\"},placeholderColor:{type:ControlType.Color,defaultValue:\"rgba(0,0,0,0.45)\"},background:{type:ControlType.Color,defaultValue:\"#FFFFFF\"},border:{type:ControlType.Object,controls:{enabled:{type:ControlType.Boolean,defaultValue:borderDefaults.enabled},width:{type:ControlType.Number,defaultValue:borderDefaults.width,min:0,max:12},color:{type:ControlType.Color,defaultValue:borderDefaults.color},style:{type:ControlType.Enum,options:[\"solid\",\"dashed\",\"dotted\"],defaultValue:borderDefaults.style}}},shadow:{type:ControlType.Object,controls:{enabled:{type:ControlType.Boolean,defaultValue:shadowDefaults.enabled},x:{type:ControlType.Number,defaultValue:shadowDefaults.x,min:-50,max:50},y:{type:ControlType.Number,defaultValue:shadowDefaults.y,min:-50,max:50},blur:{type:ControlType.Number,defaultValue:shadowDefaults.blur,min:0,max:200},spread:{type:ControlType.Number,defaultValue:shadowDefaults.spread,min:-50,max:50},color:{type:ControlType.Color,defaultValue:shadowDefaults.color}}},focusShadow:{type:ControlType.Object,controls:{enabled:{type:ControlType.Boolean,defaultValue:focusShadowDefaults.enabled},x:{type:ControlType.Number,defaultValue:focusShadowDefaults.x,min:-50,max:50},y:{type:ControlType.Number,defaultValue:focusShadowDefaults.y,min:-50,max:50},blur:{type:ControlType.Number,defaultValue:focusShadowDefaults.blur,min:0,max:200},spread:{type:ControlType.Number,defaultValue:focusShadowDefaults.spread,min:-50,max:50},color:{type:ControlType.Color,defaultValue:focusShadowDefaults.color}}},showLabel:{type:ControlType.Boolean,defaultValue:false},label:{type:ControlType.String,defaultValue:\"Email\"},labelColor:{type:ControlType.Color,defaultValue:\"rgba(0,0,0,0.7)\"},labelFont:{type:ControlType.Font,defaultValue:labelFontDefaults}};addPropertyControls(EmailCapture,commonControls);addPropertyControls(EmailPrefill,{...commonControls,lockToStoredValue:{type:ControlType.Boolean,defaultValue:false}});addPropertyControls(HiddenEmailField,{storageKey:{type:ControlType.String,defaultValue:\"shared_email\"},name:{type:ControlType.String,defaultValue:\"email\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"EmailPrefill\":{\"type\":\"reactComponent\",\"name\":\"EmailPrefill\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"EmailCapture\":{\"type\":\"reactComponent\",\"name\":\"EmailCapture\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"HiddenEmailField\":{\"type\":\"reactComponent\",\"name\":\"HiddenEmailField\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SharedEmailField.map"],"mappings":"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"}