{"version":3,"file":"Auth.BeTkhFTD.mjs","names":["useState","useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/oylpHdwqHAjMOzEBKZJ7/2DZVPuJt6GfmG3f7JSIp/Auth.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,forwardRef,useState,useRef,useCallback}from\"react\";import{useAuthStore,useLoginFormStore,usePreviewAuthStore,useSignupFormStore,useVerifyEmailFormStore,showToast,isFramerPreview,API_BASE}from\"https://framer.com/m/GlobalStore-5Rjw.js\";import{sharedMeClient}from\"https://framer.com/m/MeClient-D7pYGt.js\";import{clearRememberedNext,loginUrlWithNext,onboardingOrNext,pendingSetupStep,rememberedNext,rememberNextFromUrl,returnsToRegistration,takeNextOr}from\"https://framer.com/m/NextPath-vSstPL.js\";// Fix browser autofill background on dark theme\nif(typeof document!==\"undefined\"){const id=\"__autofill-fix\";if(!document.getElementById(id)){const style=document.createElement(\"style\");style.id=id;style.textContent=`\n            input:-webkit-autofill,\n            input:-webkit-autofill:hover,\n            input:-webkit-autofill:focus,\n            input:-webkit-autofill:active {\n                transition: background-color 9999s ease-in-out 0s !important;\n                -webkit-text-fill-color: inherit !important;\n                caret-color: inherit !important;\n            }\n        `;document.head.appendChild(style);}}/*\n * AUTH OVERRIDES\n * ===============\n *\n * SIGNUP FORM:\n *   signupFirstNameInput → First name input\n *   signupLastNameInput  → Last name input\n *   signupEmailInput     → Email input\n *   signupPasswordInput  → Password input\n *   signupSubmitButton   → Submit button\n *\n * LOGIN FORM:\n *   loginEmailInput      → Email input\n *   loginPasswordInput   → Password input\n *   loginSubmitButton    → Submit button\n *\n * VERIFY EMAIL FORM:\n *   verifyOtpInput       → OTP input component (custom 6-digit input)\n *   verifySubmitButton   → Verify button (also syncs with Salesforce)\n *   verifyResendButton   → Resend OTP button\n *   displayVerificationEmail → Shows email being verified\n *\n * USER INFO:\n *   displayUserName      → Shows user's full name\n *   displayUserFirstName → Shows user's first name\n *   displayUserLastName  → Shows user's last name\n *   displayUserEmail     → Shows user's email\n *   displayUserAvatar    → Shows user's profile image (apply to Image or Frame component)\n *   displayUserMilitaryRole   → Shows user's military role (joins multiple with \" / \")\n *   displayUserMilitaryBranch → Shows user's military branch (joins multiple with \" / \")\n *   displayUserCity      → Shows user's city\n *   signOutButton        → Signs user out\n *\n * VISIBILITY:\n *   showWhileLoading     → Shows during auth check\n *   showWhenLoggedIn     → Shows when authenticated\n *   showWhenLoggedOut    → Shows when NOT authenticated\n *   showWhenEmailNotVerified → Shows when logged in but email not verified\n *   showWhenEmailVerified → Shows when logged in AND email verified\n *   showWhenExistingContact → Shows when user existed in Salesforce before signup\n *   showWhenNewContact   → Shows when user is new (not in Salesforce before signup)\n *   showWhenStaff         → Shows only when user is m43_team or admin (roles ladder)\n *\n * PAGE GUARDS:\n *   redirectIfLoggedIn   → Use on /login, /register. Redirects logged-in users forward.\n *   redirectIfVerified   → Use on /verify-email. Requires session, redirects if verified.\n *   redirectIfOnboarded  → Use on /onboarding. Requires verified email, redirects if onboarded.\n *   requireAuth          → Use on /dashboard, etc. Full auth required.\n *\n * PREVIEW TOGGLE:\n *   authPreviewToggle    → Apply to a component with an \"isLoggedIn\" boolean prop.\n *                          When true, sets preview state to \"Logged In\".\n *                          When false, sets preview state to \"Logged Out\".\n *                          Only active in Framer preview mode.\n *\n * NOTE: Onboarding form overrides have been moved to Onboarding.tsx\n */const API_URL=API_BASE;// Warm the connection to the API host as soon as this file loads (every page\n// loads it for the navbar), so the first /api/me does not also pay for DNS +\n// TLS (MEM-02). `use-credentials`: /api/me sends the session cookie, and a\n// plain `crossorigin` (anonymous) preconnect opens a socket that credentialed\n// requests cannot reuse. The same tag in the Framer site <head> starts earlier\n// still (see the PR's manual steps).\nif(typeof document!==\"undefined\"){try{const origin=new URL(API_URL).origin;if(!document.querySelector(`link[rel=\"preconnect\"][href=\"${origin}\"]`)){const link=document.createElement(\"link\");link.rel=\"preconnect\";link.href=origin;link.crossOrigin=\"use-credentials\";document.head.appendChild(link);}}catch{}}// Remember a `?next=` (e.g. /login?next=/events/x) for the rest of the sign-in\n// or sign-up, so the member returns to that page (NextPath.tsx validates it).\nif(typeof window!==\"undefined\")rememberNextFromUrl();const meClient=sharedMeClient(API_URL);/**\n * Staff-tier check, mirroring the server's roles ladder (`src/lib/roles.ts`:\n * member < m43_team < admin). `GET /api/me` returns the member row's `role`\n * column directly, so this reads that instead of the legacy `member.staff`\n * boolean (Phase A fix — plan §7 risk #5: the client-side gate had drifted\n * from the server's actual authorization model). This override only hides\n * chrome; every admin API call is independently server-gated.\n */function hasStaffAccess(role,groups){if(role===\"m43_team\"||role===\"admin\")return true;// Door staff: a plain member holding the volunteer group reaches the\n// check-in tools; the admin home shows them only those.\nreturn Array.isArray(groups)&&groups.includes(\"volunteer\");}/**\n * Short-lived session cache so admin pages don't flash blank (requireStaff\n * returning null → page pop) on every navigation. Written after each\n * successful /api/me, read only by the staff gate for its first paint, always\n * revalidated in the background, cleared on sign-out. 10 minutes max.\n */const AUTH_CACHE_KEY=\"m43.auth.v1\";const AUTH_CACHE_TTL_MS=10*60*1e3;function readAuthCache(){try{const raw=sessionStorage.getItem(AUTH_CACHE_KEY);if(!raw)return null;const parsed=JSON.parse(raw);if(!parsed||typeof parsed.at!==\"number\"||Date.now()-parsed.at>AUTH_CACHE_TTL_MS)return null;return{user:parsed.user,member:parsed.member};}catch{return null;}}function writeAuthCache(user,member){try{sessionStorage.setItem(AUTH_CACHE_KEY,JSON.stringify({at:Date.now(),user,member}));}catch{}}function clearAuthCache(){try{sessionStorage.removeItem(AUTH_CACHE_KEY);}catch{}}// Paint-from-cache for DISPLAY gates only (navbar avatar/name, logged-in/out\n// layers, staff-only layers). Framer re-mounts the layout template on every\n// route and the shared auth store starts empty, so without this the navbar\n// pops in after the /api/me round-trip. Redirect gates deliberately do NOT\n// use it — a stale cache must never bounce someone between pages.\nfunction withCachedAuth(store){if(!store.loading)return store;const cached=readAuthCache();if(!cached||!cached.user)return store;return{...store,user:cached.user,member:cached.member,loading:false};}// ============================================================================\n// HELPER FUNCTIONS\n// ============================================================================\n/**\n * Converts a string to Title Case, replacing underscores with spaces.\n * Example: \"active_duty\" -> \"Active Duty\"\n */function toTitleCase(str){return str.replace(/_/g,\" \")// Replace underscores with spaces\n.replace(/\\b\\w/g,char=>char.toUpperCase())// Capitalize first letter of each word\n;}/**\n * Formats a value that may be a string, JSON string, or array into a display string.\n * - Arrays are joined with \" / \" separator.\n * - Underscores are replaced with spaces.\n * - Each value is converted to Title Case.\n * Handles: actual arrays, JSON-stringified arrays, and plain strings.\n */function formatArrayValue(value){if(!value)return\"\";// If it's already an array, format and join it\nif(Array.isArray(value)){return value.filter(Boolean).map(toTitleCase).join(\" / \");}// If it's a string, check if it's a JSON array\nif(typeof value===\"string\"){// Check if it looks like a JSON array\nconst trimmed=value.trim();if(trimmed.startsWith(\"[\")&&trimmed.endsWith(\"]\")){try{const parsed=JSON.parse(trimmed);if(Array.isArray(parsed)){return parsed.filter(Boolean).map(toTitleCase).join(\" / \");}}catch{// Not valid JSON, fall through to plain string handling\n}}// Plain string, apply title case\nreturn toTitleCase(value);}return toTitleCase(String(value));}// ============================================================================\n// AUTH API FUNCTIONS\n// ============================================================================\n/**\n * What refreshAuth returns when the API could not be reached after retries.\n * NOT \"signed out\": guards must keep the page (or offer a retry), never send\n * anyone to /login over a network blip.\n */const AUTH_TRANSIENT=Object.freeze({transient:true,user:undefined,member:undefined});function isTransientAuth(result){return result===AUTH_TRANSIENT;}/**\n * Loads the session into the store. Returns { user, member } when signed in,\n * null when signed out, or AUTH_TRANSIENT when the API could not be reached.\n * All callers on a page share one /api/me (MeClient.tsx); `fresh` forces a new\n * request after sign in, sign up or verification.\n */async function refreshAuth(setStore,opts={}){if(isFramerPreview()){setStore({user:null,member:null,loading:false,initialized:true,isExistingContact:false,pendingVerificationEmail:null,salesforceLookupComplete:false,salesforceId:null});return null;}let outcome=await meClient.get(!!opts.fresh);// Replaced while in flight (a sign-in or sign-out happened meanwhile):\n// never store it; take the current answer instead.\nfor(let i=0;outcome.stale&&i<3;i++)outcome=await meClient.get();if(outcome.stale)outcome={kind:\"transient\"};if(outcome.kind===\"signedIn\"){writeAuthCache(outcome.user,outcome.member);setStore(prev=>({user:outcome.user,member:outcome.member,loading:false,initialized:true,isExistingContact:prev.isExistingContact,pendingVerificationEmail:prev.pendingVerificationEmail,salesforceLookupComplete:prev.salesforceLookupComplete,salesforceId:outcome.member?.salesforce_id||prev.salesforceId,authError:false}));return{user:outcome.user,member:outcome.member};}if(outcome.kind===\"signedOut\"){clearAuthCache()// signed out server-side: never paint a stale identity\n;setStore(prev=>({user:null,member:null,loading:false,initialized:true,isExistingContact:false,pendingVerificationEmail:prev.pendingVerificationEmail,salesforceLookupComplete:false,salesforceId:null,authError:false}));return null;}// Transient: keep whatever identity we already had (or the recent\n// session cache) so the page stays as it was, and flag the error.\nconst cached=readAuthCache();setStore(prev=>({...prev,user:prev.user??cached?.user??null,member:prev.member??cached?.member??null,loading:false,initialized:true,authError:true}));return AUTH_TRANSIENT;}/**\n * Where a signed-in person goes next: the account step they still owe\n * (NextPath.pendingSetupStep, which also holds Sean's onboarding choice: only\n * the registration page is returned to before onboarding), else the page they\n * came from (`?next=`, validated in NextPath.tsx), else /dashboard.\n */function finalStep(user,member){const returning=returnsToRegistration(rememberedNext());return pendingSetupStep(user,member,returning)??takeNextOr(\"/dashboard\");}/** Shown in place of a guarded page when the session check could not reach the API. */function AuthRetryNotice(){return /*#__PURE__*/_jsxs(\"div\",{role:\"alert\",style:{padding:24,fontFamily:\"Inter, system-ui, sans-serif\",fontSize:16,lineHeight:1.5,textAlign:\"center\",// The site's text colour (#171717 light, #f2f2f2 dark), never inherited: the live body's\n// own colour is black in both modes. The button's text and border follow it.\ncolor:\"var(--token-6f8353a1-d1e1-4961-95a5-21dd402c5f42, #171717)\"},children:[/*#__PURE__*/_jsx(\"p\",{style:{margin:\"0 0 12px\"},children:\"We couldn't reach Mission43 just now.\"}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:()=>window.location.reload(),style:{font:\"inherit\",padding:\"8px 16px\",borderRadius:8,border:\"1px solid currentColor\",background:\"transparent\",color:\"inherit\",cursor:\"pointer\"},children:\"Try again\"})]});}/**\n * Background lookup to check if Salesforce Contact exists for this email.\n * Called while user waits for OTP verification code.\n * Does NOT create anything - just checks existence.\n */async function lookupSalesforceContact(setStore){try{console.log(\"[Auth] Starting Salesforce lookup...\");const res=await fetch(`${API_URL}/api/salesforce/lookup-by-email`,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},credentials:\"include\"});if(res.ok){const data=await res.json();console.log(\"[Auth] Salesforce lookup result:\",data);// Update auth store with lookup results\nsetStore(prev=>({...prev,salesforceLookupComplete:true,salesforceId:data.salesforceId||null,isExistingContact:data.exists&&data.source===\"salesforce\"}));return{exists:data.exists||false,salesforceId:data.salesforceId||null,isExistingContact:data.exists&&data.source===\"salesforce\"};}else{console.error(\"[Auth] Salesforce lookup failed:\",await res.text());setStore(prev=>({...prev,salesforceLookupComplete:true}));return{exists:false,salesforceId:null,isExistingContact:false};}}catch(error){console.error(\"[Auth] Salesforce lookup error:\",error);setStore(prev=>({...prev,salesforceLookupComplete:true}));return{exists:false,salesforceId:null,isExistingContact:false};}}/**\n * Complete registration after email verification.\n * Creates member record and checks for existing SF Contacts by email.\n * Returns resolution status so frontend knows where to redirect:\n * - 'resolved': SF Contact already linked → go to /onboarding\n * - 'needs_resolution': needs phone search / contact matching → go to /contact-resolution\n */async function completeRegistration(setStore){try{console.log(\"[Auth] Completing registration with Salesforce...\");// Check for registration source (e.g., /join page for print media)\nlet registrationSource;try{registrationSource=localStorage.getItem(\"registration_source\")||undefined;}catch{}const res=await fetch(`${API_URL}/api/salesforce/complete-registration`,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},credentials:\"include\",body:JSON.stringify(registrationSource?{registration_source:registrationSource}:{})});// Clean up after sending\nif(registrationSource){try{localStorage.removeItem(\"registration_source\");}catch{}}if(res.ok){const data=await res.json();console.log(\"[Auth] Registration complete:\",data);const resolution=data.resolution||{};const isResolved=resolution.status===\"resolved\";// Update auth store with registration results\nsetStore(prev=>({...prev,isExistingContact:isResolved,salesforceId:resolution.salesforceId||null}));return{success:true,isExistingContact:isResolved,salesforceId:resolution.salesforceId||null,resolution};}else{console.error(\"[Auth] Registration failed:\",await res.text());return{success:false,isExistingContact:false,salesforceId:null};}}catch(error){console.error(\"[Auth] Registration error:\",error);return{success:false,isExistingContact:false,salesforceId:null};}}/**\n * Sync with Salesforce - fire and forget version (DEPRECATED - use completeRegistration instead)\n * Uses keepalive to ensure request completes even after page navigation\n */function syncWithSalesforceBackground(){fetch(`${API_URL}/api/salesforce/sync`,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},credentials:\"include\",keepalive:true}).then(res=>{if(!res.ok){console.error(\"Background Salesforce sync failed\");}else{console.log(\"Background Salesforce sync initiated\");}}).catch(error=>{console.error(\"Background Salesforce sync error:\",error);});}/**\n * Sync with Salesforce - blocking version (DEPRECATED - use completeRegistration instead)\n */async function syncWithSalesforce(){try{const res=await fetch(`${API_URL}/api/salesforce/sync`,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},credentials:\"include\"});if(res.ok){const data=await res.json();return{success:true,isExistingContact:data.isExistingContact||false};}else{console.error(\"Salesforce sync failed:\",await res.text());return{success:false,isExistingContact:false};}}catch(error){console.error(\"Salesforce sync error:\",error);return{success:false,isExistingContact:false};}}async function signIn(email,password,setStore){const res=await fetch(`${API_URL}/api/auth/sign-in/email`,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},credentials:\"include\",body:JSON.stringify({email,password})});const data=await res.json();const hasError=!res.ok||data.error||data.code||data.message?.toLowerCase().includes(\"error\");if(!hasError){await refreshAuth(setStore,{fresh:true});}return{...data,_httpStatus:res.status,_ok:res.ok};}async function signUp(email,password,firstName,lastName,setStore){const fullName=`${firstName} ${lastName}`.trim();const res=await fetch(`${API_URL}/api/auth/sign-up/email`,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},credentials:\"include\",body:JSON.stringify({email,password,name:fullName,firstName,lastName})});const data=await res.json();const hasError=!res.ok||data.error||data.code||data.message?.toLowerCase().includes(\"error\");if(!hasError&&data.user){await refreshAuth(setStore,{fresh:true});}return{...data,_httpStatus:res.status,_ok:res.ok};}async function sendVerificationOtp(email){const res=await fetch(`${API_URL}/api/auth/email-otp/send-verification-otp`,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},credentials:\"include\",body:JSON.stringify({email,type:\"email-verification\"})});const data=await res.json();return{...data,_httpStatus:res.status,_ok:res.ok};}async function verifyEmailOtp(email,otp,setStore){const res=await fetch(`${API_URL}/api/auth/email-otp/verify-email`,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},credentials:\"include\",body:JSON.stringify({email,otp})});const data=await res.json();if(res.ok&&!data.error){await refreshAuth(setStore,{fresh:true});}return{...data,_httpStatus:res.status,_ok:res.ok};}async function signOut(setStore){clearAuthCache();clearRememberedNext();meClient.reset();const res=await fetch(`${API_URL}/api/auth/sign-out`,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},credentials:\"include\",body:JSON.stringify({})});setStore({user:null,member:null,loading:false,initialized:true,isExistingContact:false,pendingVerificationEmail:null,salesforceLookupComplete:false,salesforceId:null});return res.json();}// ============================================================================\n// PREVIEW AUTH TOGGLE (for Framer canvas design)\n// ============================================================================\nexport function authPreviewToggle(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[,setPreviewStore]=usePreviewAuthStore();const isLoggedIn=props.isLoggedIn??props.authPreview??props.loggedIn??false;useEffect(()=>{if(!isFramerPreview())return;const newState=isLoggedIn?\"loggedIn\":\"loggedOut\";setPreviewStore({state:newState});window.dispatchEvent(new Event(\"authPreviewChange\"));},[isLoggedIn]);return /*#__PURE__*/_jsx(Component,{...props,ref:ref});});}// ============================================================================\n// LOGIN FORM OVERRIDES\n// ============================================================================\nexport function loginEmailInput(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[form,setForm]=useLoginFormStore();return /*#__PURE__*/_jsx(Component,{...props,ref:ref,value:form.email,onChange:e=>setForm(prev=>({...prev,email:e.target?.value||e})),onValueChange:value=>setForm(prev=>({...prev,email:value})),type:\"email\",placeholder:props.placeholder||\"Email\",disabled:form.loading});});}export function loginPasswordInput(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[form,setForm]=useLoginFormStore();return /*#__PURE__*/_jsx(Component,{...props,ref:ref,value:form.password,onChange:e=>setForm(prev=>({...prev,password:e.target?.value||e})),onValueChange:value=>setForm(prev=>({...prev,password:value})),type:\"password\",placeholder:props.placeholder||\"Password\",disabled:form.loading});});}export function loginSubmitButton(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[form,setForm]=useLoginFormStore();const[,setAuthStore]=useAuthStore();const handleClick=async()=>{if(form.loading)return;if(!form.email||!form.password){showToast(\"Missing Fields\",\"Please fill in all fields\",\"error\");return;}setForm(prev=>({...prev,loading:true}));try{const result=await signIn(form.email,form.password,setAuthStore);if(!result._ok||result.error||result.code){const errorMessage=result.error?.message||result.message||result.error?.code||result.code||\"Invalid email or password\";showToast(\"Sign In Failed\",errorMessage,\"error\");setForm(prev=>({...prev,loading:false}));}else{setForm({email:\"\",password:\"\",loading:false});// signIn already loaded the fresh session; this joins it.\nconst authResult=await refreshAuth(setAuthStore);// Signed in but the session check blipped: go on to the\n// page they wanted; its own guard re-checks.\nwindow.location.href=isTransientAuth(authResult)?takeNextOr(\"/dashboard\"):finalStep(authResult?.user,authResult?.member);}}catch(err){showToast(\"Connection Error\",\"Network error. Please try again.\",\"error\");setForm(prev=>({...prev,loading:false}));}};const handleTap=e=>{e?.preventDefault?.();handleClick();};return /*#__PURE__*/_jsx(Component,{...props,ref:ref,onClick:handleTap,onTap:handleTap,disabled:form.loading,variant:form.loading?\"Loading\":props.variant,\"data-loading\":form.loading});});}// ============================================================================\n// SIGNUP FORM OVERRIDES\n// ============================================================================\nexport function signupFirstNameInput(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[form,setForm]=useSignupFormStore();return /*#__PURE__*/_jsx(Component,{...props,ref:ref,value:form.firstName,onChange:e=>setForm(prev=>({...prev,firstName:e.target?.value||e})),onValueChange:value=>setForm(prev=>({...prev,firstName:value})),type:\"text\",placeholder:props.placeholder||\"First Name\",disabled:form.loading});});}export function signupLastNameInput(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[form,setForm]=useSignupFormStore();return /*#__PURE__*/_jsx(Component,{...props,ref:ref,value:form.lastName,onChange:e=>setForm(prev=>({...prev,lastName:e.target?.value||e})),onValueChange:value=>setForm(prev=>({...prev,lastName:value})),type:\"text\",placeholder:props.placeholder||\"Last Name\",disabled:form.loading});});}/**\n * An email handed over in the URL FRAGMENT (\"/register#email=jo%40example.com\"),\n * e.g. by the guest-registration confirmation's \"create your account\" link.\n * The fragment is never sent to a server; signupEmailInput also removes it from\n * the address bar right after reading it, so scripts and history don't keep it.\n * Returns \"\" unless it looks like an email.\n */function emailFromFragment(hash){const m=/(?:^#|&)email=([^&]*)/.exec(hash||\"\");if(!m)return\"\";let email=\"\";try{email=decodeURIComponent(m[1]).trim();}catch{return\"\";}return email.length<=254&&/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email)?email:\"\";}export function signupEmailInput(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[form,setForm]=useSignupFormStore();// Prefill from \"#email=\" once, never over something already typed.\nuseEffect(()=>{if(typeof window===\"undefined\")return;const email=emailFromFragment(window.location.hash);if(!email)return;setForm(prev=>prev.email?prev:{...prev,email});try{history.replaceState(history.state,\"\",window.location.pathname+window.location.search);}catch{}},[]);return /*#__PURE__*/_jsx(Component,{...props,ref:ref,value:form.email,onChange:e=>setForm(prev=>({...prev,email:e.target?.value||e})),onValueChange:value=>setForm(prev=>({...prev,email:value})),type:\"email\",placeholder:props.placeholder||\"Email\",disabled:form.loading});});}export function signupPasswordInput(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[form,setForm]=useSignupFormStore();return /*#__PURE__*/_jsx(Component,{...props,ref:ref,value:form.password,onChange:e=>setForm(prev=>({...prev,password:e.target?.value||e})),onValueChange:value=>setForm(prev=>({...prev,password:value})),type:\"password\",placeholder:props.placeholder||\"Password\",disabled:form.loading});});}export function signupSubmitButton(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[form,setForm]=useSignupFormStore();const[,setAuthStore]=useAuthStore();const handleClick=async()=>{if(form.loading)return;if(!form.firstName||!form.lastName||!form.email||!form.password){showToast(\"Missing Fields\",\"Please fill in all fields\",\"error\");return;}if(form.password.length<8){showToast(\"Password Too Short\",\"Password must be at least 8 characters\",\"error\");return;}setForm(prev=>({...prev,loading:true}));try{const result=await signUp(form.email,form.password,form.firstName,form.lastName,setAuthStore);const hasError=!result._ok||result.error||result.code||!result.user;if(hasError){let errorMessage=\"Sign up failed\";let errorTitle=\"Sign Up Failed\";if(result.error?.message){errorMessage=result.error.message;}else if(result.message){errorMessage=result.message;}else if(result.error?.code){errorMessage=result.error.code;}else if(result.code){errorMessage=result.code;}const errorLower=errorMessage.toLowerCase();if(result.code===\"USER_ALREADY_EXISTS\"||result.error?.code===\"USER_ALREADY_EXISTS\"||errorLower.includes(\"already exists\")||errorLower.includes(\"already registered\")||errorLower.includes(\"email is already\")||errorLower.includes(\"user with this email\")){errorMessage=\"An account with this email already exists\";errorTitle=\"Account Exists\";}showToast(errorTitle,errorMessage,\"error\");setForm(prev=>({...prev,loading:false}));}else{const emailToVerify=form.email;setAuthStore(prev=>({...prev,pendingVerificationEmail:emailToVerify}));setForm({firstName:\"\",lastName:\"\",email:\"\",password:\"\",loading:false});// Track registration source for /join page (print media QR codes)\nif(window.location.pathname===\"/join\"){try{localStorage.setItem(\"registration_source\",\"print_join\");}catch{}}window.location.href=\"/verify-email\";}}catch(err){showToast(\"Connection Error\",\"Network error. Please try again.\",\"error\");setForm(prev=>({...prev,loading:false}));}};const handleTap=e=>{e?.preventDefault?.();handleClick();};return /*#__PURE__*/_jsx(Component,{...props,ref:ref,onClick:handleTap,onTap:handleTap,disabled:form.loading,variant:form.loading?\"Loading\":props.variant,\"data-loading\":form.loading});});}// ============================================================================\n// VERIFY EMAIL FORM OVERRIDES\n// ============================================================================\nexport function verifyOtpInput(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[form,setForm]=useVerifyEmailFormStore();const handleChange=valueOrEvent=>{let value;if(typeof valueOrEvent===\"string\"){value=valueOrEvent;}else if(valueOrEvent?.target?.value!==undefined){value=valueOrEvent.target.value;}else{value=String(valueOrEvent||\"\");}const cleanValue=value.replace(/\\D/g,\"\").slice(0,6);// Use functional update to avoid stale closure issues\nsetForm(prev=>({...prev,otp:cleanValue}));};return /*#__PURE__*/_jsx(Component,{...props,ref:ref,value:form.otp,onChange:handleChange,disabled:form.loading});});}export function verifySubmitButton(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[form,setForm]=useVerifyEmailFormStore();const[authStore,setAuthStore]=useAuthStore();useEffect(()=>{if(isFramerPreview())return;const initVerification=async()=>{const result=await refreshAuth(setAuthStore);if(result?.user?.email){// Start background Salesforce lookup while user waits for OTP\n// This pre-checks if the email exists in Salesforce\nlookupSalesforceContact(setAuthStore);if(!form.otpSent){try{const otpResult=await sendVerificationOtp(result.user.email);if(otpResult._ok&&!otpResult.error){setForm(prev=>({...prev,otpSent:true,resendCooldown:60}));showToast(\"Code Sent\",`Verification code sent to ${result.user.email}`,\"success\");}}catch(err){console.error(\"Failed to send initial OTP:\",err);}}}};initVerification();},[]);const handleClick=async()=>{if(form.loading)return;const email=authStore.user?.email;if(!email){showToast(\"Session Required\",\"Please sign in to verify your email\",\"info\");window.location.href=\"/login\";return;}if(!form.otp||form.otp.length!==6){showToast(\"Invalid Code\",\"Please enter the 6-digit code\",\"error\");return;}setForm(prev=>({...prev,loading:true}));try{const result=await verifyEmailOtp(email,form.otp,setAuthStore);const isSuccess=result._ok&&!result.error&&(result.status===true||result.user||!result.code);if(isSuccess){// Complete registration - this creates member record and checks for SF Contacts\n// This is a BLOCKING call so we ensure the member record exists\n// before redirecting\nshowToast(\"Email Verified\",\"Setting up your profile...\",\"info\");const registrationResult=await completeRegistration(setAuthStore);if(registrationResult.success){console.log(\"[Auth] Registration complete, resolution:\",registrationResult.resolution?.status,\"salesforce_id:\",registrationResult.salesforceId);}else{console.warn(\"[Auth] Registration had issues, but continuing to onboarding\");}setAuthStore(prev=>({...prev,pendingVerificationEmail:null,isExistingContact:registrationResult.isExistingContact,salesforceId:registrationResult.salesforceId}));// Persist existing contact flag for onboarding welcome message\nif(registrationResult.isExistingContact){try{localStorage.setItem(\"m43_existing_contact\",\"true\");}catch{}}setForm({otp:\"\",loading:false,resendCooldown:0,otpSent:false});// Redirect based on contact resolution status\nif(registrationResult.success&&registrationResult.resolution?.status===\"needs_resolution\"){window.location.href=\"/contact-resolution\";}else{// Onboarding, or straight back to the registration\n// page they came from (NextPath.ONBOARDING_BEFORE_RETURN\n// decides). That page still sends anyone without a\n// linked Salesforce Contact to contact resolution.\nwindow.location.href=onboardingOrNext();}}else{let errorMessage=\"Invalid or expired code\";if(result.error?.message){errorMessage=result.error.message;}else if(result.message){errorMessage=result.message;}else if(result.code){errorMessage=result.code;}showToast(\"Verification Failed\",errorMessage,\"error\");setForm(prev=>({...prev,loading:false}));}}catch(err){showToast(\"Connection Error\",\"Network error. Please try again.\",\"error\");setForm(prev=>({...prev,loading:false}));}};const handleTap=e=>{e?.preventDefault?.();handleClick();};return /*#__PURE__*/_jsx(Component,{...props,ref:ref,onClick:handleTap,onTap:handleTap,disabled:form.loading||form.otp.length!==6,variant:form.loading?\"Loading\":props.variant,\"data-loading\":form.loading});});}export function verifyResendButton(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[form,setForm]=useVerifyEmailFormStore();const[authStore,setAuthStore]=useAuthStore();useEffect(()=>{if(!authStore.initialized&&!isFramerPreview()){refreshAuth(setAuthStore);}},[]);useEffect(()=>{if(form.resendCooldown>0){const timer=setTimeout(()=>{setForm(prev=>({...prev,resendCooldown:prev.resendCooldown-1}));},1e3);return()=>clearTimeout(timer);}},[form.resendCooldown]);const handleClick=async()=>{if(form.resendCooldown>0)return;const email=authStore.user?.email;if(!email){showToast(\"Session Required\",\"Please sign in to verify your email\",\"info\");window.location.href=\"/login\";return;}try{const result=await sendVerificationOtp(email);if(result._ok&&!result.error){showToast(\"Code Sent\",`New code sent to ${email}`,\"success\");setForm(prev=>({...prev,resendCooldown:60,otpSent:true}));}else{showToast(\"Failed to Send\",\"Please try again later\",\"error\");}}catch(err){showToast(\"Connection Error\",\"Network error. Please try again.\",\"error\");}};const handleTap=e=>{e?.preventDefault?.();handleClick();};return /*#__PURE__*/_jsx(Component,{...props,ref:ref,onClick:handleTap,onTap:handleTap,disabled:form.resendCooldown>0,text:form.resendCooldown>0?`Resend in ${form.resendCooldown}s`:props.text});});}export function displayVerificationEmail(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[authStore,setAuthStore]=useAuthStore();useEffect(()=>{if(!authStore.initialized&&!isFramerPreview()){refreshAuth(setAuthStore);}},[]);const email=authStore.user?.email||\"your email\";return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:email});});}// ============================================================================\n// USER DISPLAY & SIGN OUT\n// ============================================================================\nexport function displayUserName(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[rawStore,setStore]=useAuthStore();const store=withCachedAuth(rawStore);const[previewStore]=usePreviewAuthStore();const[,forceUpdate]=useState(0);useEffect(()=>{if(!store.initialized&&!isFramerPreview()){refreshAuth(setStore);}const handler=()=>forceUpdate(n=>n+1);window.addEventListener(\"authPreviewChange\",handler);return()=>window.removeEventListener(\"authPreviewChange\",handler);},[]);if(isFramerPreview()){const state=previewStore.state;if(state===\"loggedIn\"||state===\"verified\"||state===\"unverified\"){return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:\"John Doe\"});}return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:\"\"});}return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:store.user?.name||\"\"});});}export function displayUserFirstName(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[rawStore,setStore]=useAuthStore();const store=withCachedAuth(rawStore);const[previewStore]=usePreviewAuthStore();const[,forceUpdate]=useState(0);useEffect(()=>{if(!store.initialized&&!isFramerPreview()){refreshAuth(setStore);}const handler=()=>forceUpdate(n=>n+1);window.addEventListener(\"authPreviewChange\",handler);return()=>window.removeEventListener(\"authPreviewChange\",handler);},[]);if(isFramerPreview()){const state=previewStore.state;if(state===\"loggedIn\"||state===\"verified\"||state===\"unverified\"){return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:\"John\"});}return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:\"\"});}const firstName=store.member?.first_name||store.user?.firstName||store.user?.name?.split(\" \")[0]||\"\";return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:firstName});});}export function displayUserLastName(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[rawStore,setStore]=useAuthStore();const store=withCachedAuth(rawStore);const[previewStore]=usePreviewAuthStore();const[,forceUpdate]=useState(0);useEffect(()=>{if(!store.initialized&&!isFramerPreview()){refreshAuth(setStore);}const handler=()=>forceUpdate(n=>n+1);window.addEventListener(\"authPreviewChange\",handler);return()=>window.removeEventListener(\"authPreviewChange\",handler);},[]);if(isFramerPreview()){const state=previewStore.state;if(state===\"loggedIn\"||state===\"verified\"||state===\"unverified\"){return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:\"Doe\"});}return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:\"\"});}const lastName=store.member?.last_name||store.user?.lastName||store.user?.name?.split(\" \").slice(1).join(\" \")||\"\";return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:lastName});});}export function displayUserEmail(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[rawStore,setStore]=useAuthStore();const store=withCachedAuth(rawStore);const[previewStore]=usePreviewAuthStore();const[,forceUpdate]=useState(0);useEffect(()=>{if(!store.initialized&&!isFramerPreview()){refreshAuth(setStore);}const handler=()=>forceUpdate(n=>n+1);window.addEventListener(\"authPreviewChange\",handler);return()=>window.removeEventListener(\"authPreviewChange\",handler);},[]);if(isFramerPreview()){const state=previewStore.state;if(state===\"loggedIn\"||state===\"verified\"||state===\"unverified\"){return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:\"john@example.com\"});}return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:\"\"});}return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:store.user?.email||\"\"});});}// The initials fallback used to be api.dicebear.com/7.x/initials seeded with the\n// member's full name, which sent the name to DiceBear and, through the Meta\n// Pixel's page-image scrape, to Facebook (PUB-137, MEM-01 / N-4). It is now built\n// here as DiceBear 7.x's exact SVG for backgroundColor=F02F4E (@dicebear/initials\n// + core 7.2.0) in a data: URI that holds only the initials, never the name.\n// Mirrored in Auth/UserAvatar.tsx and ActivityList.tsx\n// (tests/framer-components/avatar-initials.test.ts).\n/**\n * DiceBear 7.x initials, ported as-is: getInitials(seed.trim()).slice(0, 2).\n * The 2-unit cut can split a letter outside the BMP (e.g. \"Test \\u{1D4E4}ser\");\n * the half left over becomes U+FFFD, as DiceBear drew it (a lone surrogate\n * would also make encodeURIComponent throw during render).\n */function avatarInitials(seed){const pick=(input,discardAtSymbol)=>{const matches=(discardAtSymbol?input.replace(/@.*/,\"\"):input).match(RegExp(\"(\\\\p{L}[\\\\p{L}\\\\p{M}]*)\",\"gu\"));if(!matches)return discardAtSymbol?pick(input,false):\"\";if(matches.length===1)return matches[0].match(RegExp(\"^(?:\\\\p{L}\\\\p{M}*){1,2}\",\"u\"))[0].toUpperCase();const first=matches[0].match(RegExp(\"^\\\\p{L}\\\\p{M}*\",\"u\"))[0];const last=matches[matches.length-1].match(RegExp(\"^\\\\p{L}\\\\p{M}*\",\"u\"))[0];return(first+last).toUpperCase();};return pick(seed.trim(),true).slice(0,2).replace(/[\\uD800-\\uDBFF]$/,\"�\");}/**\n * The initials avatar as a data: URI (letters only, so nothing needs XML\n * escaping). Parentheses are encoded too, so it is safe unquoted in CSS url().\n */function initialsAvatarUri(seed,fontSize=50){// DiceBear's viewBox mask draws nothing, but WebKit rasterizes masked text a\n// hair differently, so it stays: with it the image is pixel-identical.\nconst svg=`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\">`+`<mask id=\"viewboxMask\"><rect width=\"100\" height=\"100\" rx=\"0\" ry=\"0\" x=\"0\" y=\"0\" fill=\"#fff\" /></mask>`+`<g mask=\"url(#viewboxMask)\"><rect fill=\"#F02F4E\" width=\"100\" height=\"100\" x=\"0\" y=\"0\" />`+`<text x=\"50%\" y=\"50%\" font-family=\"Arial, sans-serif\" font-size=\"${fontSize}\" font-weight=\"400\" fill=\"#ffffff\" text-anchor=\"middle\" dy=\"${(fontSize*.356).toFixed(3)}\">${avatarInitials(seed)}</text>`+`</g></svg>`;return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg).replace(/\\(/g,\"%28\").replace(/\\)/g,\"%29\")}`;}export function displayUserAvatar(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[rawStore,setStore]=useAuthStore();const store=withCachedAuth(rawStore);const[previewStore]=usePreviewAuthStore();const[,forceUpdate]=useState(0);// Avatar override via CustomEvent from MemberSettings (cross-module reactivity)\n// undefined = no override, null = photo removed, string = new photo URL\nconst[avatarOverride,setAvatarOverride]=useState(undefined);useEffect(()=>{if(!store.initialized&&!isFramerPreview()){refreshAuth(setStore);}const handler=()=>forceUpdate(n=>n+1);window.addEventListener(\"authPreviewChange\",handler);// Listen for avatar changes from MemberSettings\nconst avatarHandler=e=>{const detail=e.detail;setAvatarOverride(detail?.url??null);};window.addEventListener(\"avatarChanged\",avatarHandler);return()=>{window.removeEventListener(\"authPreviewChange\",handler);window.removeEventListener(\"avatarChanged\",avatarHandler);};},[]);// Default placeholder avatar\nconst placeholderAvatar=initialsAvatarUri(\"JD\");// Get avatar URL based on auth state\nlet finalAvatar=placeholderAvatar;if(isFramerPreview()){const state=previewStore.state;if(state===\"loggedIn\"||state===\"verified\"||state===\"unverified\"){finalAvatar=placeholderAvatar;}}else{const avatarUrl=avatarOverride!==undefined?avatarOverride:store.user?.image||store.member?.avatar||store.member?.avatar_url||store.member?.profile_photo_url||null;const userName=store.member?.first_name&&store.member?.last_name?`${store.member.first_name} ${store.member.last_name}`:store.user?.name;const fallbackAvatar=userName?initialsAvatarUri(userName):placeholderAvatar;finalAvatar=avatarUrl||fallbackAvatar;}const existingStyle=props.style||{};const imageStyle={...existingStyle,backgroundImage:`url(${finalAvatar})`,backgroundSize:\"cover\",backgroundPosition:\"center\",backgroundRepeat:\"no-repeat\"};return /*#__PURE__*/_jsx(Component,{...props,ref:ref,style:imageStyle,src:finalAvatar,image:finalAvatar,background:finalAvatar,backgroundImage:finalAvatar});});}export function displayUserMilitaryRole(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[store,setStore]=useAuthStore();const[previewStore]=usePreviewAuthStore();const[,forceUpdate]=useState(0);useEffect(()=>{if(!store.initialized&&!isFramerPreview()){refreshAuth(setStore);}const handler=()=>forceUpdate(n=>n+1);window.addEventListener(\"authPreviewChange\",handler);return()=>window.removeEventListener(\"authPreviewChange\",handler);},[]);if(isFramerPreview()){const state=previewStore.state;if(state===\"loggedIn\"||state===\"verified\"||state===\"unverified\"){return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:\"Veteran / Spouse\"});}return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:\"\"});}const militaryRoleRaw=store.member?.military_role||store.member?.military?.military_role||null;const militaryRole=formatArrayValue(militaryRoleRaw);return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:militaryRole});});}export function displayUserMilitaryBranch(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[store,setStore]=useAuthStore();const[previewStore]=usePreviewAuthStore();const[,forceUpdate]=useState(0);useEffect(()=>{if(!store.initialized&&!isFramerPreview()){refreshAuth(setStore);}const handler=()=>forceUpdate(n=>n+1);window.addEventListener(\"authPreviewChange\",handler);return()=>window.removeEventListener(\"authPreviewChange\",handler);},[]);if(isFramerPreview()){const state=previewStore.state;if(state===\"loggedIn\"||state===\"verified\"||state===\"unverified\"){return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:\"Army / Navy\"});}return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:\"\"});}const militaryBranchRaw=store.member?.military_branch||store.member?.military?.military_branch||null;const militaryBranch=formatArrayValue(militaryBranchRaw);return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:militaryBranch});});}export function displayUserCity(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[store,setStore]=useAuthStore();const[previewStore]=usePreviewAuthStore();const[,forceUpdate]=useState(0);useEffect(()=>{if(!store.initialized&&!isFramerPreview()){refreshAuth(setStore);}const handler=()=>forceUpdate(n=>n+1);window.addEventListener(\"authPreviewChange\",handler);return()=>window.removeEventListener(\"authPreviewChange\",handler);},[]);if(isFramerPreview()){const state=previewStore.state;if(state===\"loggedIn\"||state===\"verified\"||state===\"unverified\"){return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:\"Boise\"});}return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:\"\"});}const city=store.member?.city||\"\";return /*#__PURE__*/_jsx(Component,{...props,ref:ref,text:city});});}export function signOutButton(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[,setStore]=useAuthStore();const wrapperRef=useRef(null);const handleSignOut=useCallback(async e=>{e?.preventDefault?.();e?.stopPropagation?.();await signOut(setStore);window.location.href=\"/login\";},[setStore]);// Attach native DOM listeners directly — bypasses Framer's event system\nuseEffect(()=>{const el=wrapperRef.current;if(!el)return;const handler=e=>{e.preventDefault();e.stopPropagation();handleSignOut(e);};el.addEventListener(\"click\",handler,true);el.addEventListener(\"touchend\",handler,true);return()=>{el.removeEventListener(\"click\",handler,true);el.removeEventListener(\"touchend\",handler,true);};},[handleSignOut]);return /*#__PURE__*/_jsx(\"div\",{ref:wrapperRef,style:{display:\"contents\"},children:/*#__PURE__*/_jsx(Component,{...props,ref:ref})});});}// ============================================================================\n// AUTH STATE OVERRIDES (visibility)\n// ============================================================================\nexport function showWhileLoading(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[rawStore,setStore]=useAuthStore();const store=withCachedAuth(rawStore);useEffect(()=>{if(!store.initialized&&!isFramerPreview()){refreshAuth(setStore);}},[]);if(isFramerPreview())return null;if(!store.loading)return null;return /*#__PURE__*/_jsx(Component,{...props,ref:ref});});}export function showWhenLoggedIn(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[rawStore,setStore]=useAuthStore();const store=withCachedAuth(rawStore);const[previewStore]=usePreviewAuthStore();const[,forceUpdate]=useState(0);useEffect(()=>{if(!store.initialized&&!isFramerPreview()){refreshAuth(setStore);}const handler=()=>forceUpdate(n=>n+1);window.addEventListener(\"authPreviewChange\",handler);return()=>window.removeEventListener(\"authPreviewChange\",handler);},[]);if(isFramerPreview()){const state=previewStore.state;if(state===\"loggedIn\"||state===\"verified\"||state===\"unverified\"){return /*#__PURE__*/_jsx(Component,{...props,ref:ref});}return null;}if(store.loading||!store.user)return null;return /*#__PURE__*/_jsx(Component,{...props,ref:ref});});}export function showWhenLoggedOut(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[rawStore,setStore]=useAuthStore();const store=withCachedAuth(rawStore);const[previewStore]=usePreviewAuthStore();const[,forceUpdate]=useState(0);useEffect(()=>{if(!store.initialized&&!isFramerPreview()){refreshAuth(setStore);}const handler=()=>forceUpdate(n=>n+1);window.addEventListener(\"authPreviewChange\",handler);return()=>window.removeEventListener(\"authPreviewChange\",handler);},[]);if(isFramerPreview()){if(previewStore.state===\"loggedOut\"){return /*#__PURE__*/_jsx(Component,{...props,ref:ref});}return null;}if(store.loading||store.user)return null;return /*#__PURE__*/_jsx(Component,{...props,ref:ref});});}export function showWhenEmailNotVerified(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[store,setStore]=useAuthStore();const[previewStore]=usePreviewAuthStore();const[,forceUpdate]=useState(0);useEffect(()=>{if(!store.initialized&&!isFramerPreview()){refreshAuth(setStore);}const handler=()=>forceUpdate(n=>n+1);window.addEventListener(\"authPreviewChange\",handler);return()=>window.removeEventListener(\"authPreviewChange\",handler);},[]);if(isFramerPreview()){if(previewStore.state===\"unverified\"){return /*#__PURE__*/_jsx(Component,{...props,ref:ref});}return null;}if(store.loading||!store.user||store.user.emailVerified)return null;return /*#__PURE__*/_jsx(Component,{...props,ref:ref});});}export function showWhenEmailVerified(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[store,setStore]=useAuthStore();const[previewStore]=usePreviewAuthStore();const[,forceUpdate]=useState(0);useEffect(()=>{if(!store.initialized&&!isFramerPreview()){refreshAuth(setStore);}const handler=()=>forceUpdate(n=>n+1);window.addEventListener(\"authPreviewChange\",handler);return()=>window.removeEventListener(\"authPreviewChange\",handler);},[]);if(isFramerPreview()){if(previewStore.state===\"verified\"){return /*#__PURE__*/_jsx(Component,{...props,ref:ref});}return null;}if(store.loading||!store.user||!store.user.emailVerified)return null;return /*#__PURE__*/_jsx(Component,{...props,ref:ref});});}export function showWhenExistingContact(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[store,setStore]=useAuthStore();useEffect(()=>{if(!store.initialized&&!isFramerPreview()){refreshAuth(setStore);}},[]);if(isFramerPreview())return null;if(store.loading||!store.isExistingContact)return null;return /*#__PURE__*/_jsx(Component,{...props,ref:ref});});}export function showWhenNewContact(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[store,setStore]=useAuthStore();const[previewStore]=usePreviewAuthStore();const[,forceUpdate]=useState(0);useEffect(()=>{if(!store.initialized&&!isFramerPreview()){refreshAuth(setStore);}const handler=()=>forceUpdate(n=>n+1);window.addEventListener(\"authPreviewChange\",handler);return()=>window.removeEventListener(\"authPreviewChange\",handler);},[]);if(isFramerPreview()){const state=previewStore.state;if(state===\"loggedIn\"||state===\"verified\"||state===\"unverified\"){return /*#__PURE__*/_jsx(Component,{...props,ref:ref});}return null;}if(store.loading||store.isExistingContact)return null;return /*#__PURE__*/_jsx(Component,{...props,ref:ref});});}// ============================================================================\n// PAGE GUARDS\n// ============================================================================\nexport function redirectIfLoggedIn(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[store,setStore]=useAuthStore();useEffect(()=>{if(isFramerPreview()){setStore(prev=>({...prev,loading:false,initialized:true}));return;}refreshAuth(setStore).then(result=>{if(result?.user){window.location.href=finalStep(result.user,result.member);}});},[]);if(isFramerPreview()){return /*#__PURE__*/_jsx(Component,{...props,ref:ref});}if(store.loading||store.user){return null;}return /*#__PURE__*/_jsx(Component,{...props,ref:ref});});}export function redirectIfVerified(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[store,setStore]=useAuthStore();useEffect(()=>{if(isFramerPreview()){setStore(prev=>({...prev,loading:false,initialized:true}));return;}refreshAuth(setStore).then(result=>{if(isTransientAuth(result))return;// a blip is not a sign-out\nif(!result?.user){window.location.href=\"/login\";}else if(result.user.emailVerified){window.location.href=finalStep(result.user,result.member);}});},[]);if(isFramerPreview()){return /*#__PURE__*/_jsx(Component,{...props,ref:ref});}if(store.loading||!store.user||store.user?.emailVerified){return null;}return /*#__PURE__*/_jsx(Component,{...props,ref:ref});});}export function redirectIfOnboarded(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[store,setStore]=useAuthStore();useEffect(()=>{if(isFramerPreview()){setStore(prev=>({...prev,loading:false,initialized:true}));return;}refreshAuth(setStore).then(result=>{if(isTransientAuth(result))return;// a blip is not a sign-out\nif(!result?.user){window.location.href=\"/login\";}else if(!result.user.emailVerified){window.location.href=\"/verify-email\";}else if(result.member&&!result.member.salesforce_id){window.location.href=\"/contact-resolution\";}else if(result.member?.onboarding_completed){window.location.href=takeNextOr(\"/dashboard\");}});},[]);if(isFramerPreview()){return /*#__PURE__*/_jsx(Component,{...props,ref:ref});}if(store.loading||!store.user||!store.user?.emailVerified||store.member?.onboarding_completed){return null;}return /*#__PURE__*/_jsx(Component,{...props,ref:ref});});}export function showWhenStaff(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[rawStore,setStore]=useAuthStore();const store=withCachedAuth(rawStore);const[previewStore]=usePreviewAuthStore();const[,forceUpdate]=useState(0);useEffect(()=>{if(!store.initialized&&!isFramerPreview()){refreshAuth(setStore);}const handler=()=>forceUpdate(n=>n+1);window.addEventListener(\"authPreviewChange\",handler);return()=>window.removeEventListener(\"authPreviewChange\",handler);},[]);// In Framer preview, hide staff-only elements by default\nif(isFramerPreview()){return null;}// Hide while loading, if not logged in, or if not staff\nif(store.loading||!store.user||!hasStaffAccess(store.member?.role,store.member?.groups)){return null;}return /*#__PURE__*/_jsx(Component,{...props,ref:ref});});}export function requireAuth(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[store,setStore]=useAuthStore();useEffect(()=>{if(isFramerPreview()){setStore(prev=>({...prev,loading:false,initialized:true}));return;}refreshAuth(setStore).then(result=>{// A blip is not a sign-out: keep the page (a recent session\n// still renders it; otherwise the retry notice shows).\nif(isTransientAuth(result))return;if(!result?.user){// Come back here after signing in.\nwindow.location.href=loginUrlWithNext();return;}// The account steps live in ONE place (NextPath.pendingSetupStep).\nconst step=pendingSetupStep(result.user,result.member);if(step)window.location.href=step;});},[]);if(isFramerPreview()){return /*#__PURE__*/_jsx(Component,{...props,ref:ref});}if(store.authError&&!store.loading&&!store.user){return /*#__PURE__*/_jsx(AuthRetryNotice,{});}if(store.loading||!store.user||!store.user.emailVerified||!store.member?.onboarding_completed){return null;}return /*#__PURE__*/_jsx(Component,{...props,ref:ref});});}export function requireStaff(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[store,setStore]=useAuthStore();useEffect(()=>{if(isFramerPreview()){setStore(prev=>({...prev,loading:false,initialized:true}));return;}refreshAuth(setStore).then(result=>{// A blip is not a sign-out (B9): never bounce staff to /login\n// over one; the recent session or the retry notice shows.\nif(isTransientAuth(result))return;if(!result?.user){window.location.href=loginUrlWithNext();}else if(!hasStaffAccess(result.member?.role,result.member?.groups)){window.location.href=\"/\";}});},[]);if(isFramerPreview()){return /*#__PURE__*/_jsx(Component,{...props,ref:ref});}if(store.authError&&!store.loading&&!store.user){return /*#__PURE__*/_jsx(AuthRetryNotice,{});}if(store.loading||!store.user||!hasStaffAccess(store.member?.role,store.member?.groups)){// Not resolved yet: paint from the recent cache so admin→admin\n// navigation doesn't blank the page; the refresh above still runs\n// and redirects if the session is gone.\nconst cached=store.loading?readAuthCache():null;if(cached&&cached.user&&hasStaffAccess(cached.member?.role,cached.member?.groups)){return /*#__PURE__*/_jsx(Component,{...props,ref:ref});}return null;}return /*#__PURE__*/_jsx(Component,{...props,ref:ref});});}\nexport const __FramerMetadata__ = {\"exports\":{\"displayUserFirstName\":{\"type\":\"reactHoc\",\"name\":\"displayUserFirstName\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayUserAvatar\":{\"type\":\"reactHoc\",\"name\":\"displayUserAvatar\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayUserMilitaryBranch\":{\"type\":\"reactHoc\",\"name\":\"displayUserMilitaryBranch\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayUserMilitaryRole\":{\"type\":\"reactHoc\",\"name\":\"displayUserMilitaryRole\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"signupSubmitButton\":{\"type\":\"reactHoc\",\"name\":\"signupSubmitButton\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"signOutButton\":{\"type\":\"reactHoc\",\"name\":\"signOutButton\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"showWhenLoggedOut\":{\"type\":\"reactHoc\",\"name\":\"showWhenLoggedOut\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"verifyOtpInput\":{\"type\":\"reactHoc\",\"name\":\"verifyOtpInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"requireAuth\":{\"type\":\"reactHoc\",\"name\":\"requireAuth\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayUserCity\":{\"type\":\"reactHoc\",\"name\":\"displayUserCity\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayUserEmail\":{\"type\":\"reactHoc\",\"name\":\"displayUserEmail\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"signupPasswordInput\":{\"type\":\"reactHoc\",\"name\":\"signupPasswordInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"showWhenLoggedIn\":{\"type\":\"reactHoc\",\"name\":\"showWhenLoggedIn\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"signupEmailInput\":{\"type\":\"reactHoc\",\"name\":\"signupEmailInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"redirectIfOnboarded\":{\"type\":\"reactHoc\",\"name\":\"redirectIfOnboarded\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"showWhenNewContact\":{\"type\":\"reactHoc\",\"name\":\"showWhenNewContact\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"loginEmailInput\":{\"type\":\"reactHoc\",\"name\":\"loginEmailInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayUserLastName\":{\"type\":\"reactHoc\",\"name\":\"displayUserLastName\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"verifySubmitButton\":{\"type\":\"reactHoc\",\"name\":\"verifySubmitButton\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"signupLastNameInput\":{\"type\":\"reactHoc\",\"name\":\"signupLastNameInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"loginSubmitButton\":{\"type\":\"reactHoc\",\"name\":\"loginSubmitButton\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"showWhenEmailVerified\":{\"type\":\"reactHoc\",\"name\":\"showWhenEmailVerified\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"requireStaff\":{\"type\":\"reactHoc\",\"name\":\"requireStaff\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"redirectIfLoggedIn\":{\"type\":\"reactHoc\",\"name\":\"redirectIfLoggedIn\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayUserName\":{\"type\":\"reactHoc\",\"name\":\"displayUserName\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"authPreviewToggle\":{\"type\":\"reactHoc\",\"name\":\"authPreviewToggle\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"showWhileLoading\":{\"type\":\"reactHoc\",\"name\":\"showWhileLoading\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"signupFirstNameInput\":{\"type\":\"reactHoc\",\"name\":\"signupFirstNameInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"loginPasswordInput\":{\"type\":\"reactHoc\",\"name\":\"loginPasswordInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"showWhenStaff\":{\"type\":\"reactHoc\",\"name\":\"showWhenStaff\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"redirectIfVerified\":{\"type\":\"reactHoc\",\"name\":\"redirectIfVerified\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"showWhenEmailNotVerified\":{\"type\":\"reactHoc\",\"name\":\"showWhenEmailNotVerified\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"showWhenExistingContact\":{\"type\":\"reactHoc\",\"name\":\"showWhenExistingContact\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayVerificationEmail\":{\"type\":\"reactHoc\",\"name\":\"displayVerificationEmail\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"verifyResendButton\":{\"type\":\"reactHoc\",\"name\":\"verifyResendButton\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Auth.map"],"mappings":"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"}