PageSourceSearch

https://clsdleads.io/_nuxt/CBMSBHtY.js

js clsdleads.io collected 2026-10-04 06:32:27 UTC 23,942 bytes, 1 lines download raw bytes

1import{_ as re}from"./Be_a3qE1.js";import{d as q,c as m,i as C,w as u,f as t,g as n,t as N,j as ae,m as U,l as J,_ as H,b as z,a as ye,r as y,B as le,e as k,F as R,y as ee,h as c,k as P,K as xe,n as oe,E as be,W as he,bL as ne,o as ie,x as we,s as te,u as _e,ag as ke,q as $e}from"./MybY4GKQ.js";import{_ as se}from"./oIIA8faK.js";import{_ as Se}from"./BMKnSq-C.js";import{_ as Ne}from"./B1d_wFmH.js";import{_ as Ee}from"./DTlPawxP.js";import{_ as Ae}from"./DYyUpHSp.js";import{_ as Fe,a as Ce}from"./BEFfZHn-.js";import{_ as de}from"./0hBPEUgy.js";import{_ as Ue,z as F}from"./D19pSFfb.js";import{L as Pe}from"./CwFYDiCE.js";import{_ as Me}from"./Bjq_BPT4.js";import{S as B}from"./BEvBV8v-.js";import"./DzFTbpXR.js";import"./DM3Ey41o.js";import"./oAdjKY2_.js";import"./DeTw-vco.js";import"./B1eai8RZ.js";import"./Bfv5cchR.js";import"./BJ7wMOIh.js";import"./D4k11_F0.js";import"./D7P48y6R.js";import"./BEEUDcLu.js";import"./D40f4AsV.js";import"./D-pctMGk.js";import"./CdfNF2yR.js";const De={class:"flex flex-col items-center pb-6 border-b border-gray-200 dark:border-white/10"},je={class:"mt-3 text-center"},Ie={class:"font-semibold text-gray-900 dark:text-white"},Ve={class:"text-sm text-gray-600 dark:text-gray-400"},Le={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},Oe=q({__name:"UpdateForm",props:{user:Object,profileState:{type:Object,required:!0},profileSchema:{type:Object,required:!0},avatarPreview:String,avatarFile:File,uploadingAvatar:Boolean,removingAvatar:Boolean,avatarError:String},emits:["submit","avatarChange","uploadAvatar","removeAvatar"],setup(o,{emit:h}){return(a,e)=>{const l=se,p=Se,$=Ne,x=ae,w=Ee;return m(),C(w,{state:o.profileState,schema:o.profileSchema,onSubmit:e[8]||(e[8]=d=>a.$emit("submit",d)),class:"flex flex-col gap-6"},{default:u(()=>[t("div",De,[n(Ae,{user:o.user,avatarPreview:o.avatarPreview,avatarFile:o.avatarFile,uploadingAvatar:o.uploadingAvatar,removingAvatar:o.removingAvatar,avatarError:o.avatarError,onAvatarChange:e[0]||(e[0]=d=>a.$emit("avatarChange",d)),onUploadAvatar:e[1]||(e[1]=d=>a.$emit("uploadAvatar")),onRemoveAvatar:e[2]||(e[2]=d=>a.$emit("removeAvatar"))},null,8,["user","avatarPreview","avatarFile","uploadingAvatar","removingAvatar","avatarError"]),t("div",je,[t("p",Ie,N(o.profileState.firstName)+" "+N(o.profileState.lastName),1),t("p",Ve,N(o.profileState.email),1)])]),t("div",Le,[n(p,{label:"First Name",name:"firstName"},{default:u(()=>[n(l,{modelValue:o.profileState.firstName,"onUpdate:modelValue":e[3]||(e[3]=d=>o.profileState.firstName=d),placeholder:"John",class:"w-full"},null,8,["modelValue"])]),_:1}),n(p,{label:"Last Name",name:"lastName"},{default:u(()=>[n(l,{modelValue:o.profileState.lastName,"onUpdate:modelValue":e[4]||(e[4]=d=>o.profileState.lastName=d),placeholder:"Smith",class:"w-full"},null,8,["modelValue"])]),_:1})]),n(p,{label:"Email Address",name:"email"},{default:u(()=>[n(l,{modelValue:o.profileState.email,"onUpdate:modelValue":e[5]||(e[5]=d=>o.profileState.email=d),type:"email",placeholder:"[email protected]",class:"w-full"},null,8,["modelValue"])]),_:1}),n(p,{label:"Agent NPN",name:"npn"},{hint:u(()=>[...e[9]||(e[9]=[t("span",{class:"text-xs text-gray-500"},"Optional — 10 digits only",-1)])]),default:u(()=>[n(l,{modelValue:o.profileState.npn,"onUpdate:modelValue":e[6]||(e[6]=d=>o.profileState.npn=d),placeholder:"1234567890",class:"w-full"},null,8,["modelValue"])]),_:1}),n(p,{label:"Calling From Number",name:"callFromNumber"},{hint:u(()=>[...e[10]||(e[10]=[t("span",{class:"text-xs text-gray-500"},"Optional — number you call leads from",-1)])]),default:u(()=>[n($,{modelValue:o.profileState.callFromNumber,"onUpdate:modelValue":e[7]||(e[7]=d=>o.profileState.callFromNumber=d),class:"w-full"},null,8,["modelValue"])]),_:1}),n(x,{type:"submit",color:"primary",class:"w-full justify-center mt-2"},{default:u(()=>[...e[11]||(e[11]=[U(" Save Changes ",-1)])]),_:1})]),_:1},8,["state","schema"])}}}),Be=Object.assign(Oe,{__name:"ProfileUpdateForm"}),Te={class:"flex items-center gap-3"},ze={class:"w-8 h-8 rounded-lg bg-blue-500/10 flex items-center justify-center shrink-0"},Re=q({__name:"ChangePassword",props:{user:{},onSuccess:{type:Function}}
1,setup(o){return(h,a)=>{const e=H,l=Fe,p=J;return m(),C(p,{class:"border border-gray-200 dark:border-white/10",ui:{header:"border-b border-gray-200 dark:border-white/10 px-6 py-4",body:"px-6 py-5"}},{header:u(()=>[t("div",Te,[t("div",ze,[n(e,{name:"i-heroicons-lock-closed",class:"w-4 h-4 text-blue-400"})]),a[0]||(a[0]=t("div",null,[t("h2",{class:"text-base font-semibold text-gray-900 dark:text-white"},"Password"),t("p",{class:"text-xs text-gray-600 dark:text-gray-400"},"Update your account password")],-1))])]),default:u(()=>[n(l,{email:o.user?.email,autoSetToken:!0,onSuccess:o.onSuccess},null,8,["email","onSuccess"])]),_:1})}}}),qe=Object.assign(Re,{__name:"ProfileChangePassword"}),Ke={class:"flex items-center gap-3"},He={class:"w-8 h-8 rounded-lg bg-indigo-500/10 flex items-center justify-center shrink-0"},We={class:"space-y-4"},Ye={class:"flex items-center gap-3 px-3 py-2 rounded-md bg-gray-50 dark:bg-white/5"},Je={class:"text-sm text-gray-900 dark:text-white flex-1 truncate"},Ze={class:"text-sm text-gray-900 dark:text-white flex-1 truncate"},Ge={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},Qe={class:"flex gap-2 pt-2"},Xe={key:1,class:"text-xs text-red-500 dark:text-red-400"},et={class:"p-6 space-y-4"},tt={class:"text-sm text-gray-600 dark:text-gray-400"},at={class:"flex justify-end gap-3 pt-2"},lt=q({__name:"LinkedEmails",props:{user:{}},setup(o){const h=o,a=z(),{getHeaders:e}=ye(),l=y(h.user.linkedEmails||[]),p=y(""),$=y(!1),x=y(null),w=y(""),d=y(!1),v=y(null),L=async()=>{if(p.value.trim()){$.value=!0,w.value="";try{const f=await e(),s=await $fetch(`/api/users/${h.user.uid}/linked-emails`,{method:"POST",body:{email:p.value.trim()},headers:f});s.data&&(l.value.push(s.data),p.value="",a.add({title:"Email linked",color:"success"}))}catch(f){const s=f?.data?.statusMessage||f?.message||"Failed to add email";w.value=s}finally{$.value=!1}}},M=f=>{v.value=f,d.value=!0},g=async()=>{if(!v.value)return;const f=v.value.id;x.value=f;try{const s=await e();await $fetch(`/api/users/${h.user.uid}/linked-emails/${f}`,{method:"DELETE",headers:s}),l.value=l.value.filter(E=>E.id!==f),a.add({title:"Email unlinked",color:"success"}),d.value=!1,v.value=null}catch(s){a.add({title:"Error",description:s?.data?.statusMessage||"Failed to remove email",color:"error"})}finally{x.value=null}};return le(()=>h.user.linkedEmails,f=>{f&&(l.value=[...f])}),(f,s)=>{const E=H,j=ae,S=se,W=J,Z=de;return m(),k(R,null,[n(W,{class:"border border-gray-200 dark:border-white/10",ui:{header:"border-b border-gray-200 dark:border-white/10 px-6 py-4",body:"px-6 py-5"}},{header:u(()=>[t("div",Ke,[t("div",He,[n(E,{name:"i-heroicons-envelope",class:"w-4 h-4 text-indigo-400"})]),s[3]||(s[3]=t("div",null,[t("h2",{class:"text-base font-semibold text-gray-900 dark:text-white"},"Linked Emails"),t("p",{class:"text-xs text-gray-600 dark:text-gray-400"},"Sign in with any of these emails to access this account")],-1))])]),default:u(()=>[t("div",We,[t("div",Ye,[n(E,{name:"i-heroicons-star",class:"w-4 h-4 text-yellow-500 shrink-0"}),t("span",Je,N(o.user.email),1),s[4]||(s[4]=t("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"Primary",-1))]),(m(!0),k(R,null,ee(c(l),A=>(m(),k("div",{key:A.id,class:"flex items-center gap-3 px-3 py-2 rounded-md bg-gray-50 dark:bg-white/5"},[n(E,{name:"i-heroicons-link",class:"w-4 h-4 text-indigo-400 shrink-0"}),t("span",Ze,N(A.email),1),n(j,{size:"xs",color:"error",variant:"ghost",icon:"i-heroicons-trash",loading:c(x)===A.id,onClick:G=>M(A)},null,8,["loading","onClick"])]))),128)),c(l).length===0?(m(),k("p",Ge," No linked emails yet. Add an email below to sign in with multiple addresses. ")):P("",!0),t("div",Qe,[n(S,{modelValue:c(p),"onUpdate:modelValue":s[0]||(s[0]=A=>oe(p)?p.value=A:null),placeholder:"Add email address","aria-label":"Add email address",type:"email",class:"flex-1",onKeydown:xe(L,["enter"])},null,8,["modelValue"]),n(j,{color:"primary",loading:c($),disabled:!c(p)||c($),onClick:L},{default:u(()=>[...s[5]||(s[5]=[U(" Add ",-1)])]),_:1},8,["loading","disabled"])]),c(w)?(m(),k("p",Xe,N(c(w)),1)):P("",!0)])]),_:1}),n(Z,{open:c(d),"onUpdate:open":s[2]||(s[2]=A=>oe(d)?d.value=A:null)},{content:u(()=>[t("div",et,[s[10]||(s[10]=t("h3",{class:"text-lg font-semibold text-gray-900 dark:text-white"}
1,"Remove Linked Email?",-1)),t("p",tt,[s[6]||(s[6]=U(" Are you sure you want to unlink ",-1)),t("strong",null,N(c(v)?.email),1),s[7]||(s[7]=U("? You will no longer be able to sign in with this email. ",-1))]),t("div",at,[n(j,{color:"neutral",variant:"outline",onClick:s[1]||(s[1]=A=>d.value=!1)},{default:u(()=>[...s[8]||(s[8]=[U("Cancel",-1)])]),_:1}),n(j,{color:"error",loading:c(x)===c(v)?.id,onClick:g},{default:u(()=>[...s[9]||(s[9]=[U(" Remove ",-1)])]),_:1},8,["loading"])])])]),_:1},8,["open"])],64)}}}),st=Object.assign(lt,{__name:"ProfileLinkedEmails"}),ot={class:"flex items-center gap-3"},rt={class:"w-8 h-8 rounded-lg bg-red-500/10 flex items-center justify-center shrink-0"},nt={class:"flex flex-col gap-4"},it={class:"flex items-center justify-between p-3 rounded-lg bg-gray-50 dark:bg-white/5"},dt={class:"flex items-center gap-2"},ut={class:"font-mono text-xs text-gray-700 dark:text-gray-300"},mt={class:"flex items-center gap-1.5"},ct={key:0,class:"inline-flex items-center justify-center w-4 h-4 rounded-full bg-green-500/20"},ft={key:1,class:"inline-flex items-center justify-center w-4 h-4 rounded-full bg-red-500/20"},pt={class:"flex items-start gap-3 p-3 rounded-lg bg-red-500/5 border border-red-500/10"},vt={class:"flex items-center gap-2"},gt={key:2,class:"text-sm text-zinc-600 dark:text-zinc-400 leading-relaxed"},yt=q({__name:"DeleteAccount",props:{user:Object,showDeleteModal:Boolean,deleteStep:String,deleteEmailInput:String,mfaExpires:Number,showMfaModal:Boolean},emits:["deleteAccount","closeDeleteModal","deleteEmailConfirm","mfaSuccess","finalDelete","update:showDeleteModal","update:deleteEmailInput"],setup(o,{emit:h}){return(a,e)=>{const l=H,p=ae,$=se,x=Ue,w=de,d=J;return m(),C(d,{class:"border border-red-500/20",ui:{header:"border-b border-red-500/20 px-6 py-4",body:"px-6 py-5"}},{header:u(()=>[t("div",ot,[t("div",rt,[n(l,{name:"i-heroicons-exclamation-triangle",class:"w-4 h-4 text-red-400"})]),e[8]||(e[8]=t("div",null,[t("h2",{class:"text-base font-semibold text-red-400"},"Danger Zone"),t("p",{class:"text-xs text-gray-600 dark:text-gray-400"},"Irreversible account actions")],-1))])]),default:u(()=>[t("div",nt,[t("div",it,[t("div",dt,[e[9]||(e[9]=t("span",{class:"text-xs text-gray-600 dark:text-gray-400"},"User ID",-1)),t("span",ut,N(o.user?.uid),1)]),t("div",mt,[e[10]||(e[10]=t("span",{class:"text-xs text-gray-600 dark:text-gray-400"},"Email verified",-1)),o.user?.verified?(m(),k("span",ct,[n(l,{name:"i-heroicons-check",class:"w-3 h-3 text-green-400"})])):(m(),k("span",ft,[n(l,{name:"i-heroicons-x-mark",class:"w-3 h-3 text-red-400"})]))])]),t("div",pt,[n(l,{name:"i-heroicons-information-circle",class:"w-4 h-4 text-red-400 mt-0.5 shrink-0"}),e[11]||(e[11]=t("p",{class:"text-xs text-gray-600 dark:text-gray-400 leading-relaxed"}," Deleting your account is permanent and cannot be undone. All your data, orders, and integrations will be removed. ",-1))]),n(p,{color:"error",variant:"soft",class:"w-full justify-center",onClick:e[0]||(e[0]=v=>a.$emit("deleteAccount"))},{default:u(()=>[U(N(c(Pe).account.deleteAccount),1)]),_:1})]),n(w,{open:o.showDeleteModal,dismissible:!0,"onUpdate:open":e[7]||(e[7]=v=>a.$emit("update:showDeleteModal",v)),ui:{footer:"justify-end gap-2"}},be({header:u(()=>[t("div",vt,[n(l,{name:"i-heroicons-exclamation-triangle",class:"h-5 w-5 text-red-500"}),e[12]||(e[12]=t("span",{class:"font-semibold text-zinc-900 dark:text-white"},"Delete Account",-1))])]),body:u(()=>[o.deleteStep==="email"?(m(),k(R,{key:0},[e[13]||(e[13]=t("p",{class:"text-sm text-zinc-600 dark:text-zinc-400 leading-relaxed mb-4"}," This action is permanent and cannot be undone. Type your email address below to confirm. ",-1)),n($,{"model-value":o.deleteEmailInput,"onUpdate:modelValue":e[1]||(e[1]=v=>a.$emit("update:deleteEmailInput",v)),class:"w-full",placeholder:"Enter your email to confirm"},null,8,["model-value"])],64)):o.deleteStep==="mfa"?(m(),C(x,he({key:1},{email:o.user?.email||"",expires:o.mfaExpires||0,mode:"login",open:o.showMfaModal},{onSuccess:e[2]||(e[2]=v=>a.$emit("mfaSuccess")),onClose:e[3]||(e[3]=v=>a.$emit("closeDeleteModal"))}),null,16)):o.deleteStep==="final"?(m(),k("p",gt," Are you absolutely sure? This will permanently delete your account and all associated data. ")):P("",!0)]),_:2},[o.deleteStep!=="mfa"?{name:"footer",fn:u(()=>[n(p,{variant:"ghost",color:"neutral",onClick:e[4]||(e[4]=v=>a.$emit("closeDeleteModal"))},{default:u(()=>[...e[14]||(e[14]=[U("Cancel",-1)])]),_:1}),o.deleteStep==="email"?(m(),C(p,{key:0,color:"error",variant:"solid",disabled:o.deleteEmailInput!==o.user?.email,onClick:e[5]||(e[5]=v=>a.$emit("deleteEmailConfirm"))},{default:u(()=>[...e[15]||(e[15]=[U(" Continue ",-1)])]),_:1},8,["disabled"])):o.deleteStep==="final"?(m(),C(p,{key:1,color:"error",variant:"solid",onClick:e[6]||(e[6]=v=>a.$emit("finalDelete"))},{default:u(()=>[...e[16]||(e[16]=[U(" Permanently Delete ",-1)])]),_:1})):P("",!0)]),key:"0"}:void 0]),1032,["open"])]),_:1})}}}),xt=Object.assign(yt,{__name:"ProfileDeleteAccount"}),bt={class:"flex flex-col gap-4"},ht={key:0,class:"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-2"},wt={key:1,class:"flex flex-col gap-4"},_t={class:"flex items-center justify-between p-3 rounded-lg bg-gray-50 dark:bg-white/5 border border-gray-200 dark:border-white/10"},kt={class:"flex items-center gap-2"},$t={class:"flex items-center gap-2"},St={class:"text-xs text-gray-600 dark:text-gray-400"},Nt={class:"grid grid-cols-2 sm:grid-cols-3 gap-2"},Et=["onClick"],At={class:"truncate"},Ft=q({__name:"LicensedStates",setup(o){const h=ne(),{fetchLicensedStates:a,setLicensedState:e,overwriteLicensedStates:l}=h,p=h.loading,$=h.licensedStates,x=y({}),w=(g={})=>{const f={};B.forEach(s=>{f[s.abbr]=!!g[s.abbr]}),x.value=f};ie(async()=>{const g=await a();w(g?.data?.lic_states||{})}),le(()=>$.value,g=>{w(g)},{immediate:!1});const d=te(()=>B.filter(g=>x.value[g.abbr]).length),v=te(()=>B.every(g=>x.value[g.abbr])),L=async g=>{const f=g?B.map(s=>s.abbr):[];B.forEach(s=>{x.value[s.abbr]=g});try{const s=await l(f);w(s?.data?.lic_states||{})}catch{}},M=async(g,f)=>{x.value[g]=f;try{const s=await e(g,f);s?.data?.lic_states&&w(s.data.lic_states)}catch{}};return(g,f)=>{const s=re,E=H,j=Me;return m(),k("div",bt,[c(p)?(m(),k("div",ht,[(m(),k(R,null,ee(12,S=>n(s,{key:S,class:"h-8 rounded-lg"})),64))])):(m(),k("div",wt,[t("div",_t,[t("div",kt,[n(E,{name:"i-heroicons-map",class:"w-4 h-4 text-primary-400"}),f[0]||(f[0]=t("span",{class:"text-sm font-medium text-gray-800 dark:text-gray-200"},"Select All States",-1))]),t("div",$t,[t("span",St,N(d.value)+" of "+N(c(B).length)+" selected ",1),n(j,{"model-value":v.value,"aria-label":"Select all states","onUpdate:modelValue":L,color:"primary"},null,8,["model-value"])])]),t("div",Nt,[(m(!0),k(R,null,ee(c(B),S=>(m(),k("button",{key:S.abbr,type:"button",onClick:W=>M(S.abbr,!x.value[S.abbr]),class:we(["flex items-center justify-between px-3 py-2 rounded-lg text-sm transition-all duration-150 border text-left",x.value[S.abbr]?"bg-primary-500/15 border-primary-500/40 text-primary-600 dark:text-primary-300":"bg-white dark:bg-white/5 border-gray-200 dark:border-white/10 text-gray-600 dark:text-gray-400 hover:border-gray-300 dark:hover:border-white/20 hover:text-gray-700 dark:hover:text-gray-300"])},[t("span",At,N(S.name),1),x.value[S.abbr]?(m(),C(E,{key:0,name:"i-heroicons-check-circle",class:"w-4 h-4 text-primary-400 ml-1.5 shrink-0"})):P("",!0)],10,Et))),128))])]))])}}}),Ct=Object.assign(Ft,{__name:"ProfileLicensedStates"}),Ut={class:"mx-auto px-4 py-6 space-y-6"},Pt={key:0,class:"flex items-center justify-center h-64"},Mt={class:"flex flex-col items-center gap-3"},Dt={key:1,class:"grid grid-cols-1 lg:grid-cols-3 gap-6"},jt={class:"lg:col-span-2 flex flex-col gap-6"},It={class:"flex items-center gap-3"},Vt={class:"w-8 h-8 rounded-lg bg-primary-500/10 flex items-center justify-center shrink-0"},Lt={class:"flex flex-col gap-6"},Ot={class:"flex items-center gap-3"},Bt={class:"w-8 h-8 rounded-lg bg-green-500/10 flex items-center justify-center shrink-0"},fa=q({__name:"profile",setup(o){_e({title:"Profile | CLSDleads",htmlAttrs:{lang:"en"},meta:[{name:"description",content:"Manage your profile, update personal information, and configure passkey login for enhanced 
1security on CLSDleads."}],link:[{rel:"icon",type:"image/png",href:"/favicons/favicon-32x32.png"}]});const h=ke(),a=te(()=>h.user.value),e=y(""),l=$e({firstName:a.value?.firstName||"",lastName:a.value?.lastName||"",email:a.value?.email||"",npn:a.value?.npn||"",callFromNumber:a.value?.callFromNumber||""}),p=F.object({firstName:F.string().min(2,"First name must be at least 2 characters").optional().or(F.literal("")),lastName:F.string().min(2,"Last name must be at least 2 characters").optional().or(F.literal("")),email:F.string().email("Invalid email").optional().or(F.literal("")),npn:F.string().optional().or(F.literal("")).refine(i=>!i||i===""?!0:/^\d+$/.test(i),{message:"NPN must contain only numbers."}),callFromNumber:F.string().optional().or(F.literal("")).refine(i=>{if(!i||i==="")return!0;const r=String(i).replace(/[^0-9]/g,"");return r.length>=7&&r.length<=15},{message:"Enter a valid phone number."})}),$=()=>{const i=document.querySelector('input[type="file"][name="avatar"]');i&&(i.value=""),D.value=null,T.value=""},x=async i=>{try{if(!a.value?.uid)throw new Error("Not signed in");const r={};if(l.firstName&&(r.firstName=l.firstName),l.lastName&&(r.lastName=l.lastName),l.email&&(r.email=l.email),typeof l.npn<"u"&&(r.npn=l.npn),typeof l.callFromNumber<"u")try{const X=String(l.callFromNumber||"").replace(/[^0-9+]/g,"");r.callFromNumber=X}catch{r.callFromNumber=l.callFromNumber}let _=null;if(D.value){_=new FormData;for(const O in r)_.append(O,r[O]);_.append("avatar",D.value)}K.value=!0;let b;if(_?b=await $fetch(`/api/users/${a.value.uid}/profile`,{method:"PUT",body:_}):b=await $fetch(`/api/users/${a.value.uid}/profile`,{method:"PUT",body:{update:r}}),b?.statusCode!==200)throw new Error(b?.statusMessage||"Update failed");const V=b&&typeof b=="object"&&"data"in b&&b.data&&typeof b.data=="object"&&"update"in b.data?b.data.update:void 0;V&&typeof V=="object"&&(Object.assign(a.value,V),Object.assign(l,V),z().add({title:"Profile updated!",color:"success"})),e.value="Profile updated!",$()}catch(r){const _=r;e.value=_.message||"Failed to update profile."}finally{K.value=!1}},w=y(!1),d=y("email"),v=y(""),L=y(!1),M=y(!1),g=y(null),f=y(null),s=()=>{w.value=!0,d.value="email",v.value="",L.value=!1},E=()=>{w.value=!1},j=()=>{s()},S=()=>{v.value===a.value?.email&&(d.value="mfa")},W=i=>{L.value=!0,f.value=i,d.value="final"},Z=i=>{const r={};l.firstName&&(r.firstName=l.firstName),l.lastName&&(r.lastName=l.lastName),l.email&&(r.email=l.email),h.updateProfile({...r,mfa:i}).then(()=>{Object.assign(l,r),e.value="Profile updated!"}).catch(_=>{const b=_;e.value=b.message||"Failed to update profile."}),M.value=!1},A=async()=>{try{if(!a.value?.uid)throw new Error("No user");if(!await h.deleteUser(a.value.uid))throw new Error("Failed to delete account.");E(),z().add({title:"Account deleted",description:"Your account was successfully deleted.",color:"success"}),h.signOut()}catch(i){const r=i;z().add({title:"Error",description:r.message||"Error deleting account.",color:"error"})}},G=ne(),D=y(null),T=y(""),K=y(!1),I=y(""),Q=y(!1),ue=i=>{const r=i.target;if(r.files&&r.files[0]){const _=r.files[0];if(!_.type.startsWith("image/")){I.value="Only image files are allowed.",D.value=null,T.value="";return}if(_.size>2*1024*1024){I.value="File size must be under 2MB.",D.value=null,T.value="";return}D.value=_,I.value="";const b=new FileReader;b.onload=V=>{T.value=V.target?.result},b.readAsDataURL(_)}},me=async()=>{if(!(!D.value||!a.value?.uid)){K.value=!0,I.value="";try{const i=await G.uploadAvatar(D.value);if(i.statusCode!==200)throw new Error(i.statusMessage||"Upload failed");a.value.avatar=i.data.avatar,z().add({title:"Profile picture updated",color:"success"}),$()}catch(i){const r=i;I.value=r.message||"Failed to upload avatar."}finally{K.value=!1}}},ce=async()=>{if(a.value?.uid){Q.value=!0,I.value="";try{const i=await G.removeAvatar();if(i.statusCode!==200)throw new Error(i.statusMessage||"Failed to remove avatar");a.value.avatar=void 0,T.value="",z().add({title:"Profile picture removed",color:"success"})}catch(i){const r=i;I.value=r.message||"Failed to remove avatar."}finally{Q.value=!1}}};return ie(async()=>{h.user.value||await h.fetchUser(),a.value&&(l.firstName=a.value.firstName||"",l.lastName=a.value.lastName||"",l.email=a.value.email||"",l.npn=a.value.npn||"",l.callFromNumber=a.value.callFromNumber||"")}),le(a,i=>
1{i&&(l.firstName=i.firstName||"",l.lastName=i.lastName||"",l.email=i.email||"",l.npn=i.npn||"",l.callFromNumber=i.callFromNumber||"")}),(i,r)=>{const _=re,b=H,V=Be,O=J,X=qe,fe=st,pe=xt,ve=Ct,ge=Ce;return m(),k(R,null,[t("div",Ut,[r[8]||(r[8]=t("div",null,[t("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"Profile"),t("p",{class:"text-sm text-gray-600 dark:text-gray-400 mt-1"},"Manage your personal information and account settings")],-1)),c(a)?(m(),k("div",Dt,[t("div",jt,[n(O,{class:"border border-gray-200 dark:border-white/10",ui:{header:"border-b border-gray-200 dark:border-white/10 px-6 py-4",body:"px-6 py-5"}},{header:u(()=>[t("div",It,[t("div",Vt,[n(b,{name:"i-heroicons-user",class:"w-4 h-4 text-primary-400"})]),r[4]||(r[4]=t("div",null,[t("h2",{class:"text-base font-semibold text-gray-900 dark:text-white"},"Personal Information"),t("p",{class:"text-xs text-gray-600 dark:text-gray-400"},"Update your name, email, and contact details")],-1))])]),default:u(()=>[n(V,{user:c(a),profileState:l,profileSchema:c(p),avatarFile:D.value??void 0,avatarPreview:T.value,uploadingAvatar:K.value,avatarError:I.value,removingAvatar:Q.value,onSubmit:x,onAvatarChange:ue,onUploadAvatar:me,onRemoveAvatar:ce},null,8,["user","profileState","profileSchema","avatarFile","avatarPreview","uploadingAvatar","avatarError","removingAvatar"])]),_:1}),c(a)?(m(),C(X,{key:0,user:c(a),onSuccess:r[0]||(r[0]=()=>e.value="Password updated!")},null,8,["user"])):P("",!0),c(a)&&(c(a).role==="admin"||c(a).role==="super")?(m(),C(fe,{key:1,user:c(a)},null,8,["user"])):P("",!0),c(a)?(m(),C(pe,{key:2,user:c(a),showDeleteModal:w.value,"onUpdate:showDeleteModal":r[1]||(r[1]=Y=>w.value=Y),deleteStep:d.value,deleteEmailInput:v.value,"onUpdate:deleteEmailInput":r[2]||(r[2]=Y=>v.value=Y),mfaExpires:g.value??void 0,showMfaModal:M.value,onDeleteAccount:j,onCloseDeleteModal:E,onDeleteEmailConfirm:S,onMfaSuccess:W,onFinalDelete:A},null,8,["user","showDeleteModal","deleteStep","deleteEmailInput","mfaExpires","showMfaModal"])):P("",!0)]),t("div",Lt,[n(O,{class:"border border-gray-200 dark:border-white/10",ui:{header:"border-b border-gray-200 dark:border-white/10 px-6 py-4",body:"px-6 py-5"}},{header:u(()=>[t("div",Ot,[t("div",Bt,[n(b,{name:"i-heroicons-map-pin",class:"w-4 h-4 text-green-400"})]),r[5]||(r[5]=t("div",null,[t("h2",{class:"text-base font-semibold text-gray-900 dark:text-white"},"Licensed States"),t("p",{class:"text-xs text-gray-600 dark:text-gray-400"},"States where you are licensed to sell")],-1))])]),default:u(()=>[n(ve)]),_:1}),P("",!0)])])):(m(),k("div",Pt,[t("div",Mt,[n(_,{class:"w-24 h-24 rounded-full"}),n(_,{class:"h-4 w-40 rounded"}),n(_,{class:"h-3 w-32 rounded"})])]))]),M.value?(m(),C(ge,{key:0,open:M.value,email:l.email,expires:g.value||0,mode:"login",onSuccess:Z,onClose:r[3]||(r[3]=Y=>M.value=!1)},null,8,["open","email","expires"])):P("",!0)],64)}}});export{fa as default};

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.