PageSourceSearch

https://zown.ai/assets/index-CYFKIMu6.js

js zown.ai collected 2026-10-05 14:48:08 UTC 35,959 bytes, 1 lines download raw bytes

1import{r as c,j as e}from"./ui-CoLPG-_V.js";import{d as P,u as W,f as O,g as U}from"./index-CbJi79kY.js";import{k as ie,h as ne,O as le,P as de,j as ce,i as pe}from"./index-CbJi79kY.js";import{C as I}from"./chevron-left-DiUm68Cj.js";import{C as T}from"./circle-alert-D1NyNmZt.js";import{E as B,C as N}from"./eye-off-YMRxdoeI.js";import{E as Y}from"./eye--DCRdQQd.js";import{C as M}from"./circle-x-EBwJTQvj.js";import"./vendor-gH-7aFTg.js";function Q(){const[g,y]=c.useState(""),[d,f]=c.useState(""),[o,m]=c.useState(!1),[b,n]=c.useState(""),[p,F]=c.useState(""),[l,i]=c.useState(!1),[j,C]=c.useState(!1),u=P(),{loginOrSignup:z,isLoading:x,error:a,clearError:w,isAuthenticated:E}=W();c.useEffect(()=>{E&&u("/homes",{replace:!0})},[E,u]);const k=s=>s?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(s)?"":"Please enter a valid email address":"Email is required",S=s=>s?s.length<8?"Password must be at least 8 characters":"":"Password is required",t=s=>{const v=s.target.value;y(v),l&&n(k(v)),a&&w()},h=s=>{const v=s.target.value;f(v),j&&F(S(v)),a&&w()},r=()=>{i(!0),n(k(g))},A=()=>{C(!0),F(S(d))},R=s=>{const v=s.currentTarget;v.focus(),setTimeout(()=>{v&&v.scrollIntoView({behavior:"smooth",block:"center"})},100)},D=s=>{s.stopPropagation();const v=s.currentTarget;setTimeout(()=>{v.focus()},0)},L=async s=>{s.preventDefault(),w();const v=k(g),V=S(d);if(n(v),F(V),i(!0),C(!0),!(v||V))try{const H=await z(g,d);H.needsVerification?u("/auth/verify-code",{state:{email:g,password:d}}):H.passwordResetRequired?u("/auth/verify-code",{state:{email:g,isPasswordReset:!0}}):u("/homes",{replace:!0})}catch(H){console.error("Authentication error:",H),f(""),F(""),C(!1)}};return e.jsxs("div",{className:"auth-container flex flex-col",style:{width:"100%",maxWidth:"100%",height:"100vh",margin:"0 auto",backgroundColor:"#FFFFFF",overflow:"hidden",display:"flex",flexDirection:"column"},"data-form-type":"other",children:[e.jsx("div",{style:{minHeight:"60px",paddingTop:"calc(20px + var(--safe-area-inset-top))",paddingBottom:"20px",paddingLeft:"max(24px, var(--safe-area-inset-left))",paddingRight:"max(24px, var(--safe-area-inset-right))",display:"flex",alignItems:"center",backgroundColor:"#FFFFFF"},children:e.jsx("button",{onClick:()=>u("/homes"),style:{width:"20px",height:"20px",padding:0,background:"none",border:"none",cursor:"pointer"},children:e.jsx(I,{size:20,style:{color:"#171717"}})})}),e.jsx("div",{className:"auth-form-section",style:{paddingTop:"20px",paddingBottom:"calc(20px + var(--safe-area-inset-bottom))",paddingLeft:"max(24px, var(--safe-area-inset-left))",paddingRight:"max(24px, var(--safe-area-inset-right))",display:"flex",alignItems:"flex-start",justifyContent:"center",backgroundColor:"#FFFFFF",overflowY:"auto",overflowX:"hidden",flex:"1 1 auto",position:"relative",transform:"translateZ(0)",minHeight:0},children:e.jsxs("div",{style:{width:"100%",maxWidth:"393px",display:"flex",flexDirection:"column",gap:"16px",margin:"auto 0"},children:[e.jsx("h1",{style:{width:"100%",fontFamily:"Fustat, ui-sans-serif",fontWeight:600,fontSize:"clamp(24px, 5vw, 28px)",lineHeight:"1.3",letterSpacing:"-0.02em",textAlign:"center",color:"#171717",margin:"0 0 8px 0"},children:"Welcome"}),e.jsx("p",{style:{width:"100%",fontFamily:"Fustat, ui-sans-serif",fontWeight:400,fontSize:"14px",lineHeight:"1.5",textAlign:"center",color:"#737373",margin:"0 0 16px 0"},children:"Enter your details to continue"}),a&&e.jsxs("div",{style:{width:"100%",padding:"12px 16px",backgroundColor:"#FEF2F2",border:"1px solid #FCA5A5",borderRadius:"8px",display:"flex",alignItems:"flex-start",gap:"8px"},children:[e.jsx(T,{size:20,style:{color:"#DC2626",flexShrink:0,marginTop:"2px"}}),e.jsx("div",{style:{flex:1},children:e.jsx("p",{style:{margin:0,fontFamily:"Fustat, ui-sans-serif",fontSize:"14px",lineHeight:"1.5",color:"#DC2626",fontWeight:500},children:a})}),e.jsx("button",{onClick:w,style:{background:"none",border:"none",padding:"0",cursor:"pointer",color:"#DC2626",flexShrink:0},"aria-label":"Dismiss error",children:"×"})]}),e.jsxs("div",{style:{width:"100%",display:"flex",flexDirection:"column",gap:"16px"},children:[e.jsxs("div",{style:{width:"100%",display:"flex",flexDirection:"column",gap:"4px"},children:[e.jsx("label",{htmlFor:"email",style:{width:"100%",height:"18px",fontFamily:"Fustat, ui-sans-serif",fontWeight:500,fontSize:"14px",lineHeight:"128.571%",color:"#171717"},children:"Email Address"}),e.jsxs("div",{style:{position:"relative",width:"100%"},children:[e.jsx("input",{id:"email",type:"email",name:"user-identifier",value:g,onChange:t,onBlur:r,onFocus:R,onTouchStart:D,placeholder:"Enter your email address","aria-label":"Email address","aria-invalid":!!b,"aria-describedby":b?"email-error":void 0,autoComplete:"off",inputMode:"email","data-form-type":"other",style:{width:"100%",minHeight:"52px",padding:"16px",borderRadius:"8px",border:b?"2px solid #F87171":"1px solid #E5E5E5",backgroundColor:"#FFFFFF",fontFamily:"Fustat, ui-sans-serif",fontWeight:400,fontSize:"16px",lineHeight:"125%",color:"#171717",outline:"none",paddingRight:b?"40px":"16px"},className:"email-input"}),b&&e.jsx(T,{size:20,style:{position:"absolute",right:"12px",to
1p:"50%",transform:"translateY(-50%)",color:"#F87171"}})]}),b&&e.jsxs("span",{id:"email-error",style:{display:"flex",alignItems:"center",gap:"4px",marginTop:"8px",fontFamily:"Fustat, ui-sans-serif",fontSize:"12px",lineHeight:"16px",color:"#DC2626"},children:[e.jsx(T,{size:12}),b]})]}),e.jsxs("div",{style:{width:"100%",display:"flex",flexDirection:"column",gap:"4px"},children:[e.jsxs("div",{style:{width:"100%",height:"18px",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[e.jsx("label",{htmlFor:"password",style:{height:"18px",fontFamily:"Fustat, ui-sans-serif",fontWeight:500,fontSize:"14px",lineHeight:"128.571%",color:"#171717"},children:"Password"}),e.jsx("button",{type:"button",onClick:()=>u("/auth/forgot-password"),style:{height:"18px",fontFamily:"Fustat, ui-sans-serif",fontWeight:400,fontSize:"14px",lineHeight:"128.571%",textDecoration:"underline",color:"#012A43",background:"none",border:"none",cursor:"pointer",transition:"opacity 0.2s"},onMouseEnter:s=>s.currentTarget.style.opacity="0.8",onMouseLeave:s=>s.currentTarget.style.opacity="1",children:"Forgot your password?"})]}),e.jsxs("div",{style:{position:"relative",width:"100%"},children:[e.jsx("input",{id:"password",type:o?"text":"password",name:"user-secret",value:d,onChange:h,onBlur:A,onFocus:R,onTouchStart:D,placeholder:"Enter your password","aria-label":"Password","aria-invalid":!!p,"aria-describedby":p?"password-error":void 0,autoComplete:"off","data-form-type":"other",style:{width:"100%",minHeight:"52px",padding:"16px",paddingRight:"48px",borderRadius:"8px",border:p?"2px solid #F87171":"1px solid #E5E5E5",backgroundColor:"#FFFFFF",fontFamily:"Fustat, ui-sans-serif",fontWeight:400,fontSize:"16px",lineHeight:"125%",color:"#171717",outline:"none"},className:"password-input",minLength:8}),e.jsx("button",{type:"button",onClick:()=>m(!o),"aria-label":o?"Hide password":"Show password",style:{position:"absolute",right:"12px",to
1p:"50%",transform:"translateY(-50%)",padding:"4px",borderRadius:"4px",background:"transparent",border:"none",cursor:"pointer",color:"#737373",transition:"all 0.2s"},onMouseEnter:s=>{s.currentTarget.style.backgroundColor="#F5F5F5"},onMouseLeave:s=>{s.currentTarget.style.backgroundColor="transparent"},children:o?e.jsx(B,{size:20}):e.jsx(Y,{size:20})})]}),p&&e.jsxs("span",{id:"password-error",style:{display:"flex",alignItems:"center",gap:"4px",marginTop:"8px",fontFamily:"Fustat, ui-sans-serif",fontSize:"12px",lineHeight:"16px",color:"#DC2626"},children:[e.jsx(T,{size:12}),p]})]})]}),e.jsx("button",{type:"button",onClick:L,disabled:x,"aria-busy":x,style:{width:"100%",minHeight:"52px",padding:"16px 24px",display:"flex",justifyContent:"center",alignItems:"center",gap:"10px",borderRadius:"52px",backgroundColor:x?"#7393A7":"#012A43",border:"none",cursor:x?"not-allowed":"pointer",transition:"all 0.2s",transform:"scale(1)",WebkitTapHighlightColor:"transparent"},onMouseEnter:s=>{x||(s.currentTarget.style.backgroundColor="#2C638B",s.currentTarget.style.transform="translateY(-1px)",s.currentTarget.style.boxShadow="0 4px 12px rgba(1, 42, 67, 0.25)")},onMouseLeave:s=>{x||(s.currentTarget.style.backgroundColor="#012A43",s.currentTarget.style.transform="translateY(0) scale(1)",s.currentTarget.style.boxShadow="none")},onMouseDown:s=>{x||(s.currentTarget.style.transform="scale(0.98)")},onMouseUp:s=>{x||(s.currentTarget.style.transform="translateY(-1px) scale(1)")},children:e.jsxs("span",{style:{display:"flex",alignItems:"center",gap:"8px",fontFamily:"Fustat, ui-sans-serif",fontWeight:600,fontSize:"16px",lineHeight:"125%",color:"#FFFFFF"},children:[x&&e.jsxs("svg",{className:"animate-spin",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),x?"Processing...":"Login or Sign-up"]})}),e.jsxs("p",{style:{width:"100%",fontFamily:"Fustat, ui-sans-serif",fontWeight:400,fontSize:"12px",lineHeight:"16px",textAlign:"center",color:"#737373",margin:0,padding:0,maxWidth:"320px",alignSelf:"center"},children:["By signing up, you accept the Zown"," ",e.jsx("button",{type:"button",className:"legal-link-button",onClick:()=>u("/profile/view?url=https://zown.ca/terms-and-conditions&title=Terms%20of%20Service"),style:{color:"#012A43",textDecoration:"underline",background:"none",border:"none",padding:0,fontFamily:"inherit",fontSize:"inherit",fontWeight:"inherit",lineHeight:"inherit",cursor:"pointer",transition:"opacity 0.2s",display:"inline",verticalAlign:"baseline",whiteSpace:"nowrap"},onMouseEnter:s=>s.currentTarget.style.opacity="0.8",onMouseLeave:s=>s.currentTarget.style.opacity="1",children:"Terms of Service"})," ","and"," ",e.jsx("button",{type:"button",className:"legal-link-button",onClick:()=>u("/profile/view?url=https://zown.ca/privacy-policy&title=Privacy%20Policy"),style:{color:"#012A43",textDecoration:"underline",background:"none",border:"none",padding:0,fontFamily:"inherit",fontSize:"inherit",fontWeight:"inherit",lineHeight:"inherit",cursor:"pointer",transition:"opacity 0.2s",display:"inline",verticalAlign:"baseline",whiteSpace:"nowrap"},onMouseEnter:s=>s.currentTarget.style.opacity="0.8",onMouseLeave:s=>s.currentTarget.style.opacity="1",children:"Privacy Policy"}),"."]})]})})]})}function ee(){const g=P(),{forgotPassword:y,isLoading:d,error:f,clearError:o}=W(),[m,b]=c.useState(""),[n,p]=c.useState(""),[F,l]=c.useState(!1),[i,j]=c.useState(!1),C=a=>a?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(a)?"":"Please enter a valid email address":"Email is required",u=a=>{const w=a.target.value;b(w),F&&p(C(w)),f&&o()},z=()=>{l(!0),p(C(m))},x=async a=>{a.preventDefault(),o();const w=C(m);if(p(w),l(!0),!w)try{await y(m),j(!0),setTimeout(()=>{g("/auth/verify-code",{state:{email:m,isPasswordReset:!0}})},2e3)}catch(E){console.error("Forgot password error:",E)}};return e.jsxs("div",{className:"auth-container flex flex-col",style:{width:"100%",maxWidth:"100%",height:"100vh",margin:"0 auto",backgroundColor:"#FFFFFF",overflow:"hidden",display:"flex",flexDirection:"column"},children:[e.jsx("div",{style:{minHeight:"60px",paddingTop:"calc(20px + var(--safe-area-inset-top))",paddingBottom:"20px",paddingLeft:"max(24px, var(--safe-area-inset-left))",paddingRight:"max(24px, var(--safe-area-inset-right))",display:"flex",alignItems:"center",backgroundColor:"#FFFFFF"},children:e.jsx("button",{onClick:()=>g("/auth"),style:{width:"20px",height:"20px",padding:0,background:"none",border:"none",cursor:"pointer"},children:e.jsx(I,{size:20,style:{color:"#171717"}})})}),e.jsx("div",{className:"auth-form-section",style:{paddingTop:"20px",paddingBottom:"calc(20px + var(--safe-area-inset-bottom))",paddingLeft:"max(24px, var(--safe-area-inset-left))",paddingRight:"max(24px, var(--safe-area-inset-right))",display:"flex",alignItems:"flex-start",justifyContent:"center",backgroundColor:"#FFFFFF",overflowY:"auto",overflowX:"hidden",flex:1,WebkitOverflowScrolling:"touch"},children:e.jsxs("div",{style:{width:"100%",maxWidth:"375px",display:"flex",flexDirection:"column",gap:"24px",paddingTop:"40px"},children:[e.jsxs("div",{style:{width:"100%",display:"flex",flexDirection:"column",gap:"12px"},children:[e.jsx("h1",{style:{width:"100%",fontFamily:"Fustat, ui-sans-serif",fontWeight:600,fontSize:"24px",lineHeight:"120%",letterSpacing:"-0.05em",textAlign:"center",color:"#171717",margin:0},children:"Forgot Password?"}),f&&e.jsxs("div",{style:{width:"100%",padding:"12px 16px",backgroundColor:"#FEF2F2",border:"1px solid #FCA5A5",borderRadius:"8px",display:"flex",alignItems:"flex-start",ga
1p:"8px",marginTop:"16px"},children:[e.jsx(T,{size:20,style:{color:"#DC2626",flexShrink:0,marginTop:"2px"}}),e.jsx("div",{style:{flex:1},children:e.jsx("p",{style:{margin:0,fontFamily:"Fustat, ui-sans-serif",fontSize:"14px",lineHeight:"1.5",color:"#DC2626",fontWeight:500},children:f})}),e.jsx("button",{onClick:o,style:{background:"none",border:"none",padding:"0",cursor:"pointer",color:"#DC2626",flexShrink:0},"aria-label":"Dismiss error",children:"×"})]}),e.jsx("p",{style:{width:"100%",fontFamily:"Fustat, ui-sans-serif",fontWeight:400,fontSize:"14px",lineHeight:"20px",textAlign:"center",color:"#737373",margin:0},children:"Enter your email address and we'll send you a code to reset your password"})]}),i&&e.jsx("div",{style:{width:"100%",padding:"16px",borderRadius:"8px",backgroundColor:"#DCFCE7",border:"1px solid #86EFAC",marginBottom:"16px"},children:e.jsx("p",{style:{fontFamily:"Fustat, ui-sans-serif",fontSize:"14px",lineHeight:"1.5",color:"#166534",margin:0,textAlign:"center"},children:"Reset code sent! Check your email and follow the instructions."})}),e.jsxs("div",{style:{width:"100%",display:"flex",flexDirection:"column",gap:"4px"},children:[e.jsx("label",{htmlFor:"reset-email",style:{width:"100%",fontFamily:"Fustat, ui-sans-serif",fontWeight:500,fontSize:"14px",lineHeight:"18px",color:"#171717",display:"block"},children:"Email address"}),e.jsxs("div",{style:{position:"relative",width:"100%"},children:[e.jsx("input",{id:"reset-email",type:"email",value:m,onChange:u,onBlur:a=>{z(),n||(a.target.style.border="1px solid #E5E5E5",a.target.style.boxShadow="none")},placeholder:"[email protected]","aria-label":"Email address for password reset","aria-invalid":!!n,"aria-describedby":n?"reset-email-error":void 0,disabled:d||i,style:{width:"100%",height:"48px",padding:"14px 12px",borderRadius:"8px",border:n?"2px solid #F87171":"1px solid #E5E5E5",backgroundColor:d||i?"#F5F5F5":"#FFFFFF",fontFamily:"Fustat, ui-sans-serif",fontWeight:400,fontSize:"14px",lineHeight:"20px",color:m?"#171717":"#737373",outline:"none",transition:"all 0.2s",paddingRight:n?"40px":"12px",boxShadow:"0 1px 2px rgba(0, 0, 0, 0.05)",WebkitAppearance:"none",MozAppearance:"none",appearance:"none",cursor:d||i?"not-allowed":"text"},onFocus:a=>{!n&&!d&&!i&&(a.target.style.border="2px solid #012A43",a.target.style.boxShadow="0 0 0 3px rgba(1, 42, 67, 0.1)")}}),n&&e.jsx(T,{size:20,style:{position:"absolute",right:"12px",to
1p:"50%",transform:"translateY(-50%)",color:"#F87171"}})]}),n&&e.jsxs("span",{id:"reset-email-error",style:{display:"flex",alignItems:"center",gap:"4px",marginTop:"8px",fontFamily:"Fustat, ui-sans-serif",fontSize:"12px",lineHeight:"16px",color:"#DC2626"},children:[e.jsx(T,{size:12}),n]})]}),e.jsx("button",{type:"button",onClick:x,disabled:d||i,"aria-busy":d,style:{width:"100%",height:"52px",padding:"14px 32px",display:"flex",justifyContent:"center",alignItems:"center",gap:"8px",borderRadius:"9999px",backgroundColor:d||i?"#7393A7":"#012A43",border:"none",cursor:d||i?"not-allowed":"pointer",transition:"all 0.2s",transform:"scale(1)",boxShadow:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",WebkitTapHighlightColor:"transparent",marginTop:"0"},onMouseEnter:a=>{!d&&!i&&(a.currentTarget.style.backgroundColor="#2C638B",a.currentTarget.style.transform="translateY(-1px)",a.currentTarget.style.boxShadow="0 4px 12px rgba(1, 42, 67, 0.25)")},onMouseLeave:a=>{!d&&!i&&(a.currentTarget.style.backgroundColor="#012A43",a.currentTarget.style.transform="translateY(0) scale(1)",a.currentTarget.style.boxShadow="none")},onMouseDown:a=>{!d&&!i&&(a.currentTarget.style.transform="scale(0.98)")},onMouseUp:a=>{!d&&!i&&(a.currentTarget.style.transform="translateY(-1px) scale(1)")},children:e.jsxs("span",{style:{display:"flex",alignItems:"center",gap:"8px",fontFamily:"Fustat, ui-sans-serif",fontWeight:600,fontSize:"16px",lineHeight:"125%",color:"#FFFFFF"},children:[d&&e.jsxs("svg",{className:"animate-spin",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),d?"Sending...":i?"Code Sent!":"Send Reset Code"]})})]})})]})}function te(){const g=O(),y=P(),{confirmEmail:d,resendCode:f,isLoading:o,error:m,clearError:b}=W(),n=g.state?.email||"",p=g.state?.password||"",F=g.state?.isPasswordReset||!1,[l,i]=c.useState(["","","","","",""]),[j,C]=c.useState(60),[u,z]=c.useState(!1),x=c.useRef([]);c.useEffect(()=>{(!n||!p&&!F)&&y("/auth",{replace:!0})},[n,p,F,y]),c.useEffect(()=>{x.current[0]?.focus()},[]),c.useEffect(()=>{if(j>0){const t=setTimeout(()=>C(j-1),1e3);return()=>clearTimeout(t)}else z(!0)},[j]);const a=(t,h)=>{if(h.length>1){const A=h.slice(0,6).split(""),R=[...l];A.forEach((L,s)=>{t+s<6&&(R[t+s]=L)}),i(R);const D=Math.min(t+A.length,5);x.current[D]?.focus();return}if(!/^\d*$/.test(h))return;const r=[...l];r[t]=h,i(r),h&&t<5&&x.current[t+1]?.focus()},w=(t,h)=>{if(h.key==="Backspace"){if(!l[t]&&t>0){x.current[t-1]?.focus();const r=[...l];r[t-1]="",i(r)}else if(l[t]){const r=[...l];r[t]="",i(r)}}else h.key==="ArrowLeft"&&t>0?x.current[t-1]?.focus():h.key==="ArrowRight"&&t<5&&x.current[t+1]?.focus()},E=async()=>{const t=l.join("");if(!(t.length!==6||o))try{F?y("/auth/reset-password",{state:{email:n,code:t}}):(await d(n,t,p),y("/homes",{replace:!0}))}catch(h){console.error("Verification error:",h),i(["","","","","",""]),x.current[0]?.focus()}},k=async()=>{if(!(!u||o))try{await f(n),C(60),z(!1),i(["","","","","",""]),x.current[0]?.focus()}catch(t){console.error("Resend code error:",t)}},S=l.every(t=>t!=="");return e.jsxs("div",{className:"auth-container flex flex-col",style:{width:"100%",maxWidth:"100%",height:"100vh",margin:"0 auto",backgroundColor:"#FFFFFF",overflow:"hidden",display:"flex",flexDirection:"column"},children:[e.jsx("div",{style:{minHeight:"60px",paddingTop:"calc(20px + var(--safe-area-inset-top))",paddingBottom:"20px",paddingLeft:"max(24px, var(--safe-area-inset-left))",paddingRight:"max(24px, var(--safe-area-inset-right))",display:"flex",alignItems:"center",backgroundColor:"#FFFFFF"},children:e.jsx("button",{onClick:()=>y("/auth/forgot-password"),style:{width:"20px",height:"20px",padding:0,background:"none",border:"none",cursor:"pointer"},children:e.jsx(I,{size:20,style:{color:"#171717"}})})}),e.jsx("div",{style:{paddingTop:"20px",paddingBottom:"calc(20px + var(--safe-area-inset-bottom))",paddingLeft:"max(24px, var(--safe-area-inset-left))",paddingRight:"max(24px, var(--safe-area-inset-right))",display:"flex",flexDirection:"column",alignItems:"center",backgroundColor:"#FFFFFF",overflowY:"auto",overflowX:"hidden",flex:1,WebkitOverflowScrolling:"touch"},children:e.jsxs("div",{style:{width:"100%",maxWidth:"375px",display:"flex",flexDirection:"column",gap:"24px"},children:[e.jsx("h1",{style:{width:"100%",fontFamily:"Fustat, ui-sans-serif",fontWeight:600,fontSize:"24px",lineHeight:"120%",letterSpacing:"-0.05em",textAlign:"center",color:"#171717",margin:0},children:F?"Enter Reset Code":"Enter Verification Code"}),m&&e.jsxs("div",{style:{width:"100%",padding:"12px 16px",backgroundColor:"#FEF2F2",border:"1px solid #FCA5A5",borderRadius:"8px",display:"flex",alignItems:"flex-start",ga
1p:"8px",marginTop:"16px"},children:[e.jsx(T,{size:20,style:{color:"#DC2626",flexShrink:0,marginTop:"2px"}}),e.jsx("div",{style:{flex:1},children:e.jsx("p",{style:{margin:0,fontFamily:"Fustat, ui-sans-serif",fontSize:"14px",lineHeight:"1.5",color:"#DC2626",fontWeight:500},children:m})}),e.jsx("button",{onClick:b,style:{background:"none",border:"none",padding:"0",cursor:"pointer",color:"#DC2626",flexShrink:0},"aria-label":"Dismiss error",children:"×"})]}),e.jsxs("p",{style:{width:"100%",fontFamily:"Fustat, ui-sans-serif",fontWeight:400,fontSize:"14px",lineHeight:"20px",textAlign:"center",color:"#737373",margin:0},children:[F?"Please enter the 6 digit reset code sent to ":"Please enter the 6 digit verification code sent to ",e.jsx("span",{style:{fontWeight:700},children:n})]}),e.jsx("div",{style:{width:"100%",display:"flex",justifyContent:"center",gap:"6px",padding:"24px 0"},children:l.map((t,h)=>e.jsx("input",{ref:r=>{x.current[h]=r},type:"text",inputMode:"numeric",maxLength:6,value:t,onChange:r=>a(h,r.target.value),onKeyDown:r=>w(h,r),"aria-label":`Digit ${h+1}`,autoComplete:h===0?"one-time-code":"off",style:{flex:1,maxWidth:"53px",height:"64px",borderRadius:"8px",border:t?"2px solid #012A43":"2px solid #E5E5E5",backgroundColor:"#FAFAFA",fontFamily:"Fustat, ui-sans-serif",fontWeight:700,fontSize:"24px",lineHeight:"32px",color:"#171717",textAlign:"center",outline:"none",transition:"all 0.2s",boxShadow:t?"0 0 0 3px rgba(1, 42, 67, 0.1)":"none",WebkitAppearance:"none",MozAppearance:"none",appearance:"none"},onFocus:r=>{r.target.style.border="2px solid #012A43",r.target.style.boxShadow="0 0 0 3px rgba(1, 42, 67, 0.1)"},onBlur:r=>{t||(r.target.style.border="2px solid #E5E5E5",r.target.style.boxShadow="none")}},h))}),e.jsx("div",{style:{width:"100%",textAlign:"center",marginTop:"8px"},children:u?e.jsx("button",{type:"button",onClick:k,disabled:o||!u,style:{background:"none",border:"none",fontFamily:"Fustat, ui-sans-serif",fontSize:"14px",lineHeight:"20px",fontWeight:600,color:"#012A43",textDecoration:"underline",cursor:o||!u?"not-allowed":"pointer",opacity:o||!u?.5:1,transition:"opacity 0.2s"},onMouseEnter:t=>{!o&&u&&(t.currentTarget.style.opacity="0.8")},onMouseLeave:t=>{!o&&u&&(t.currentTarget.style.opacity="1")},children:o?"Sending...":"Resend code"}):e.jsxs("p",{style:{fontFamily:"Fustat, ui-sans-serif",fontSize:"14px",lineHeight:"20px",color:"#737373",margin:0},children:["Resend code in"," ",e.jsxs("span",{style:{fontWeight:600},children:[j,"s"]})]})})]})}),e.jsx("div",{style:{padding:"16px max(40px, var(--safe-area-inset-left))",paddingRight:"max(40px, var(--safe-area-inset-right))",paddingBottom:"max(34px, var(--safe-area-inset-bottom))",backgroundColor:"#F4F4F4",borderTop:"1px solid #E5E5E5"},children:e.jsx("button",{type:"button",onClick:E,disabled:!S||o,"aria-busy":o,style:{width:"100%",height:"52px",padding:"14px 32px",display:"flex",justifyContent:"center",alignItems:"center",gap:"8px",borderRadius:"9999px",backgroundColor:!S||o?"#7393A7":"#012A43",border:"none",cursor:!S||o?"not-allowed":"pointer",transition:"all 0.2s",transform:"scale(1)",boxShadow:"0 1px 2px rgba(0, 0, 0, 0.05)",WebkitTapHighlightColor:"transparent"},onMouseEnter:t=>{S&&!o&&(t.currentTarget.style.backgroundColor="#2C638B",t.currentTarget.style.transform="translateY(-1px)",t.currentTarget.style.boxShadow="0 4px 12px rgba(1, 42, 67, 0.25)")},onMouseLeave:t=>{S&&!o&&(t.currentTarget.style.backgroundColor="#012A43",t.currentTarget.style.transform="translateY(0) scale(1)",t.currentTarget.style.boxShadow="0 1px 2px rgba(0, 0, 0, 0.05)")},onMouseDown:t=>{S&&!o&&(t.currentTarget.style.transform="scale(0.98)")},onMouseUp:t=>{S&&!o&&(t.currentTarget.style.transform="translateY(-1px) scale(1)")},children:e.jsxs("span",{style:{display:"flex",alignItems:"center",gap:"8px",fontFamily:"Fustat, ui-sans-serif",fontWeight:600,fontSize:"16px",lineHeight:"125%",color:"#FFFFFF"},children:[o&&e.jsxs("svg",{className:"animate-spin",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),o?"Verifying...":"Continue"]})})})]})}
1function re(){const g=O(),y=P(),{resetPassword:d,isLoading:f,error:o,clearError:m}=W(),b=g.state?.email||"",n=g.state?.code||"",[p,F]=c.useState(""),[l,i]=c.useState(""),[j,C]=c.useState(!1),[u,z]=c.useState(!1);c.useEffect(()=>{(!b||!n)&&y("/auth/forgot-password",{replace:!0})},[b,n,y]);const x=p.length>=8,a=/\d/.test(p),w=/[A-Z]/.test(p),E=/[!@#$%^&*(),.?":{}|<>]/.test(p),k=p===l&&l.length>0,t=x&&a&&w&&E&&k,h=async r=>{if(r.preventDefault(),m(),!!t)try{await d(b,n,p),y("/auth",{state:{message:"Password reset successfully! Please sign in with your new password."}})}catch(A){console.error("Reset password error:",A),F(""),i("")}};return e.jsxs("div",{className:"auth-container flex flex-col",style:{width:"100%",maxWidth:"100%",height:"100vh",margin:"0 auto",backgroundColor:"#FFFFFF",overflow:"hidden",display:"flex",flexDirection:"column"},children:[e.jsx("div",{style:{minHeight:"60px",paddingTop:"calc(20px + var(--safe-area-inset-top))",paddingBottom:"20px",paddingLeft:"max(24px, var(--safe-area-inset-left))",paddingRight:"max(24px, var(--safe-area-inset-right))",display:"flex",alignItems:"center",backgroundColor:"#FFFFFF"},children:e.jsx("button",{onClick:()=>y("/auth/verify-code",{state:{email:b,isPasswordReset:!0}}),style:{width:"20px",height:"20px",padding:0,background:"none",border:"none",cursor:"pointer"},children:e.jsx(I,{size:20,style:{color:"#171717"}})})}),e.jsx("div",{className:"auth-form-section",style:{paddingTop:"20px",paddingBottom:"calc(20px + var(--safe-area-inset-bottom))",paddingLeft:"max(24px, var(--safe-area-inset-left))",paddingRight:"max(24px, var(--safe-area-inset-right))",display:"flex",alignItems:"flex-start",justifyContent:"center",backgroundColor:"#FFFFFF",overflowY:"auto",overflowX:"hidden",flex:1,WebkitOverflowScrolling:"touch"},children:e.jsxs("div",{style:{width:"100%",maxWidth:"375px",display:"flex",flexDirection:"column",gap:"24px",paddingTop:"12px"},children:[e.jsx("h1",{style:{width:"100%",fontFamily:"Fustat, ui-sans-serif",fontWeight:600,fontSize:"24px",lineHeight:"120%",letterSpacing:"-0.05em",textAlign:"center",color:"#171717",margin:0},children:"Enter New Password"}),o&&e.jsxs("div",{style:{width:"100%",padding:"12px 16px",backgroundColor:"#FEF2F2",border:"1px solid #FCA5A5",borderRadius:"8px",display:"flex",alignItems:"flex-start",gap:"8px"},children:[e.jsx(T,{size:20,style:{color:"#DC2626",flexShrink:0,marginTop:"2px"}}),e.jsx("div",{style:{flex:1},children:e.jsx("p",{style:{margin:0,fontFamily:"Fustat, ui-sans-serif",fontSize:"14px",lineHeight:"1.5",color:"#DC2626",fontWeight:500},children:o})}),e.jsx("button",{onClick:m,style:{background:"none",border:"none",padding:"0",cursor:"pointer",color:"#DC2626",flexShrink:0},"aria-label":"Dismiss error",children:"×"})]}),e.jsxs("div",{style:{width:"100%",display:"flex",flexDirection:"column",gap:"16px"},children:[e.jsxs("div",{style:{width:"100%",display:"flex",flexDirection:"column",gap:"8px"},children:[e.jsx("label",{htmlFor:"reset-new-password",style:{fontFamily:"Fustat, ui-sans-serif",fontWeight:500,fontSize:"14px",color:"#171717"},children:"New Password"}),e.jsxs("div",{style:{position:"relative",width:"100%"},children:[e.jsx("input",{id:"reset-new-password",type:j?"text":"password",value:p,onChange:r=>{F(r.target.value),o&&m()},placeholder:"Create password","aria-label":"New password",style:{width:"100%",height:"48px",padding:"14px 12px",paddingRight:"40px",borderRadius:"8px",border:"1px solid #E5E5E5",backgroundColor:"#FFFFFF",fontFamily:"Fustat, ui-sans-serif",fontWeight:400,fontSize:"14px",lineHeight:"20px",color:p?"#171717":"#737373",outline:"none",transition:"all 0.2s",boxShadow:"0 1px 2px rgba(0, 0, 0, 0.05)",WebkitAppearance:"none",MozAppearance:"none",appearance:"none"},onFocus:r=>{r.target.style.border="2px solid #012A43",r.target.style.boxShadow="0 0 0 3px rgba(1, 42, 67, 0.1)"},onBlur:r=>{r.target.style.border="1px solid #E5E5E5",r.target.style.boxShadow="0 1px 2px rgba(0, 0, 0, 0.05)"}}),e.jsx("button",{type:"button",onClick:()=>C(!j),"aria-label":j?"Hide password":"Show password",style:{position:"absolute",right:"12px",to
1p:"50%",transform:"translateY(-50%)",padding:"4px",background:"transparent",border:"none",cursor:"pointer",color:"#737373"},children:j?e.jsx(B,{size:16}):e.jsx(Y,{size:16})})]}),p&&e.jsxs("div",{style:{width:"100%",display:"flex",flexDirection:"column",gap:"8px",marginTop:"8px"},children:[e.jsx("p",{style:{fontFamily:"Fustat, ui-sans-serif",fontSize:"14px",color:"#737373",margin:0},children:"Password must include:"}),e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[x?e.jsx(N,{size:16,style:{color:"#23951F"}}):e.jsx(M,{size:16,style:{color:"#737373"}}),e.jsx("span",{style:{fontFamily:"Fustat, ui-sans-serif",fontSize:"14px",color:"#737373"},children:"8 characters"})]}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[a?e.jsx(N,{size:16,style:{color:"#23951F"}}):e.jsx(M,{size:16,style:{color:"#737373"}}),e.jsx("span",{style:{fontFamily:"Fustat, ui-sans-serif",fontSize:"14px",color:"#737373"},children:"1 number"})]}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[E?e.jsx(N,{size:16,style:{color:"#23951F"}}):e.jsx(M,{size:16,style:{color:"#737373"}}),e.jsx("span",{style:{fontFamily:"Fustat, ui-sans-serif",fontSize:"14px",color:"#737373"},children:"1 special character"})]}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[w?e.jsx(N,{size:16,style:{color:"#23951F"}}):e.jsx(M,{size:16,style:{color:"#737373"}}),e.jsx("span",{style:{fontFamily:"Fustat, ui-sans-serif",fontSize:"14px",color:"#737373"},children:"1 uppercase letter"})]})]})]})]}),e.jsxs("div",{style:{width:"100%",display:"flex",flexDirection:"column",gap:"8px"},children:[e.jsx("label",{htmlFor:"reset-confirm-password",style:{fontFamily:"Fustat, ui-sans-serif",fontWeight:500,fontSize:"14px",color:"#171717"},children:"Confirm Password"}),e.jsxs("div",{style:{position:"relative",width:"100%"},children:[e.jsx("input",{id:"reset-confirm-password",type:u?"text":"password",value:l,onChange:r=>{i(r.target.value),o&&m()},placeholder:"Re-enter password","aria-label":"Confirm password",style:{width:"100%",height:"48px",padding:"14px 12px",paddingRight:"40px",borderRadius:"8px",border:l&&!k?"2px solid #F87171":"1px solid #E5E5E5",backgroundColor:"#FFFFFF",fontFamily:"Fustat, ui-sans-serif",fontWeight:400,fontSize:"14px",lineHeight:"20px",color:l?"#171717":"#737373",outline:"none",transition:"all 0.2s",boxShadow:"0 1px 2px rgba(0, 0, 0, 0.05)",WebkitAppearance:"none",MozAppearance:"none",appearance:"none"},onFocus:r=>{l&&!k||(r.target.style.border="2px solid #012A43",r.target.style.boxShadow="0 0 0 3px rgba(1, 42, 67, 0.1)")},onBlur:r=>{l&&!k||(r.target.style.border="1px solid #E5E5E5",r.target.style.boxShadow="0 1px 2px rgba(0, 0, 0, 0.05)")}}),e.jsx("button",{type:"button",onClick:()=>z(!u),"aria-label":u?"Hide password":"Show password",style:{position:"absolute",right:"12px",to
1p:"50%",transform:"translateY(-50%)",padding:"4px",background:"transparent",border:"none",cursor:"pointer",color:"#737373"},children:u?e.jsx(B,{size:16}):e.jsx(Y,{size:16})})]}),l&&!k&&e.jsx("span",{style:{fontFamily:"Fustat, ui-sans-serif",fontSize:"12px",lineHeight:"16px",color:"#DC2626",marginTop:"4px"},children:"Passwords do not match"})]})]}),e.jsx("button",{type:"button",onClick:h,disabled:!t||f,"aria-busy":f,style:{width:"100%",height:"52px",padding:"14px 32px",display:"flex",justifyContent:"center",alignItems:"center",gap:"8px",borderRadius:"9999px",backgroundColor:!t||f?"#7393A7":"#012A43",border:"none",cursor:!t||f?"not-allowed":"pointer",transition:"all 0.2s",transform:"scale(1)",boxShadow:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",WebkitTapHighlightColor:"transparent",marginTop:"8px"},onMouseEnter:r=>{t&&!f&&(r.currentTarget.style.backgroundColor="#2C638B",r.currentTarget.style.transform="translateY(-1px)",r.currentTarget.style.boxShadow="0 4px 12px rgba(1, 42, 67, 0.25)")},onMouseLeave:r=>{t&&!f&&(r.currentTarget.style.backgroundColor="#012A43",r.currentTarget.style.transform="translateY(0) scale(1)",r.currentTarget.style.boxShadow="0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)")},onMouseDown:r=>{t&&!f&&(r.currentTarget.style.transform="scale(0.98)")},onMouseUp:r=>{t&&!f&&(r.currentTarget.style.transform="translateY(-1px) scale(1)")},children:e.jsxs("span",{style:{display:"flex",alignItems:"center",gap:"8px",fontFamily:"Fustat, ui-sans-serif",fontWeight:600,fontSize:"16px",lineHeight:"125%",color:"#FFFFFF"},children:[f&&e.jsxs("svg",{className:"animate-spin",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),f?"Resetting...":"Reset Password"]})})]})})]})}function se(){const g=P(),[y]=U(),{handleOAuthCallback:d,error:f}=W(),[o,m]=c.useState(!0),[b,n]=c.useState(null);c.useEffect(()=>{async function F(){try{const l=y.get("code"),i=y.get("error"),j=y.get("error_description");if(i){const C=j||`OAuth error: ${i}`;n(C),m(!1);return}if(!l){n("Missing authorization code in callback URL"),m(!1);return}await d(l),g("/homes",{replace:!0})}catch(l){console.error("OAuth callback error:",l),n("Failed to complete OAuth authentication"),m(!1)}}F()},[y,d,g]);const p=b||f;return o?e.jsx("div",{className:"flex min-h-screen items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"border-primary mx-auto mb-4 h-12 w-12 animate-spin rounded-full border-4 border-t-transparent"}),e.jsx("h2",{className:"mb-2 text-lg font-semibold",children:"Completing sign-in..."}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Please wait while we finish setting up your account."})]})}):p?e.jsx("div",{className:"flex min-h-screen items-center justify-center p-4",children:e.jsxs("div",{className:"w-full max-w-md text-center",children:[e.jsxs("div",{className:"mb-4 rounded-lg bg-red-50 p-3",children:[e.jsx("div",{className:"text-destructive mb-2 text-sm font-medium",children:"⚠️ Authentication Failed"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:p})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("button",{onClick:()=>g("/auth",{replace:!0}),className:"bg-primary hover:bg-primary/90 w-full rounded-lg px-4 py-2 text-sm font-medium text-white transition-colors",children:"Try Again"}),e.jsx("button",{onClick:()=>g("/homes",{replace:!0}),className:"text-muted-foreground hover:text-foreground w-full rounded-lg px-4 py-2 text-sm transition-colors",children:"Continue as Guest"})]})]})}):e.jsx("div",{className:"flex min-h-screen items-center justify-center",children:e.jsx("div",{className:"text-center",children:e.jsx("p",{className:"text-muted-foreground",children:"Redirecting..."})})})}export{ie as AuthError,ne as AuthProvider,Q as AuthScreen,ee as ForgotPasswordScreen,se as OAuthCallback,le as OptionalAuthRoute,de as ProtectedRoute,re as Re
1setPasswordScreen,te as VerifyCodeScreen,ce as authService,W as useAuth,pe as useAuthStatus};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.