1import{_ as ke}from"./BLvDFQwz.js";import{_ as Ie}from"./BTb0mGYl.js";import{d as de,r as d,w as ge,e as o,k as r,h as t,I as w,G as Q,a6 as le,j as e,E as B,F as ue,y as ce,t as u,i as Y,H as Ee,l as U,v as x,x as xe,g as k,J as me,q as L,bw as Ae,an as Se,f as X,L as _e,Y as Ne,o as Ve,K as pe}from"./CxtYSI8p.js";import{_ as Ce}from"./F4ZedSdz.js";import{I as be,u as he,a as Ue}from"./CCi_q7DF.js";import{_ as Pe}from"./Hi8eZT7z.js";import{_ as Re}from"./CkMuR7sa.js";import{r as Te}from"./DZAvtft-.js";import{u as $e}from"./qEfBz0KM.js";import{u as je,_ as Oe}from"./DyaQUTHR.js";import{u as Me}from"./DavXwVHt.js";import{_ as qe}from"./DOFcr0qB.js";import{u as Fe}from"./DXzu5zC1.js";import"./BoIYZ6dm.js";import"./DbnxMNFr.js";import"./CQYV6KkK.js";import"./CNzGBGa9.js";import"./F9_JGg6E.js";import"./CGRRPFlv.js";import"./Do-ZBhkn.js";import"./B4adcmib.js";import"./CSo3UmvD.js";import"./CiHcyySI.js";import"./asfWEa-I.js";import"./BJ9dR-16.js";import"./CwEJKT6f.js";import"./DjRKUJfi.js";import"./hUOCLbQe.js";import"./BaxqJ9fF.js";import"./e3g4H6eK.js";import"./Cq696icQ.js";import"./B7K86Sbh.js";import"./DqmaN8w-.js";import"./CZemrogu.js";import"./DBTc_-8u.js";import"./D6lPVy7n.js";import"./tKnfmu8R.js";import"./DRRCw-gg.js";const Le={class:"space-y-3"},Ge=["value"],Be={class:"label flex items-center justify-between"},He={key:0,class:"text-red-500"},ze={key:1,class:"text-card-text-muted font-normal"},Je=["placeholder"],We={key:0,class:"text-xs text-red-400 mt-1"},Ye={class:"flex items-start gap-1.5 text-xs text-card-text-secondary"},Ke={class:"flex gap-3 pt-1"},Qe=de({__name:"IdVerificationDecisionForm",props:{busy:{type:Boolean,default:!1},initialReason:{default:"UNCLEAR_IMAGE"},initialNote:{default:""}},emits:["submit","cancel","update:state"],setup(p,{emit:S}){const D=p,P=S,g=be,v=d(D.initialReason),_=d(D.initialNote);ge([v,_],([a,i])=>{P("update:state",{reason:a,adminNote:i})});const b=L(()=>!(_.value.length>500||v.value==="OTHER"&&!_.value.trim())),N=()=>{if(!b.value)return;const a={rejectionReason:v.value};_.value.trim()&&(a.adminNote=_.value.trim()),P("submit",a)};return(a,i)=>{const I=xe,h=me;return o(),r("div",Le,[t("div",null,[i[3]||(i[3]=t("label",{class:"label"},[w("Rejection reason "),t("span",{class:"text-red-500"},"*")],-1)),Q(t("select",{"onUpdate:modelValue":i[0]||(i[0]=y=>B(v)?v.value=y:null),class:"input text-card-text w-full"},[(o(!0),r(ue,null,ce(e(g),y=>(o(),r("option",{key:y.value,value:y.value},u(y.label),9,Ge))),128))],512),[[le,e(v)]]),i[4]||(i[4]=t("p",{class:"text-xs text-card-text-muted mt-1"}," The user sees this reason in their account. ",-1))]),t("div",null,[t("label",Be,[t("span",null,[i[5]||(i[5]=w(" Admin note ",-1)),e(v)==="OTHER"?(o(),r("span",He,"*")):(o(),r("span",ze,"(optional)"))]),t("span",{class:Y(["text-xs text-card-text-muted",{"text-red-400":e(_).length>500}])},u(e(_).length)+" / 500 ",3)]),Q(t("textarea",{"onUpdate:modelValue":i[1]||(i[1]=y=>B(_)?_.value=y:null),rows:"3",maxlength:"500",class:"input text-card-text",placeholder:e(v)==="OTHER"?"Describe what needs to change":"Optional note shown in their account and in the rejection email"},null,8,Je),[[Ee,e(_)]]),e(_).length>500?(o(),r("p",We," Note must be 500 characters or fewer. ")):U("",!0)]),t("p",Ye,[x(I,{name:"heroicons:information-circle",class:"w-3.5 h-3.5 mt-0.5 shrink-0 text-card-text-muted"}),i[6]||(i[6]=t("span",null," Rejecting emails the customer this reason and your note, with a link to submit again. The email wording is built in, so it isn't listed under Email Templates. ",-1))]),t("div",Ke,[x(h,{variant:"secondary",disabled:p.busy,class:"flex-1",onClick:i[2]||(i[2]=y=>a.$emit("cancel"))},{default:k(()=>[...i[7]||(i[7]=[w(" Cancel ",-1)])]),_:1},8,["disabled"]),x(h,{loading:p.busy,disabled:p.busy||!e(b),variant:"destructive",class:"flex-1",onClick:N},{default:k(()=>[...i[8]||(i[8]=[w(" Reject ",-1)])]),_:1},8,["loading","disabled"])])])}}}),Xe=Object.assign(Qe,{__name:"AdminIdVerificationDecisionForm"}),Ze=()=>{const p=d(0),S=d(Date.now());let D;const P=L(()=>Math.max(0,Math.ceil((p.value-S.value)/6e4))),g=()=>{D&&clearInterval(D),D=void 0};return Ae(g),{remainingMinutes:P,capture:_=>{const b=_;if((b?.response?.status??b?.statusCode??b?.status)!==429)return!1;const N=Date.now(),a=b.response?.headers?.get("Retry-After")?.trim(),i=a&&/^\d+$/.test(a)?Number(a):NaN,I=a&&/GMT$/i.test(a)?Date.parse(a):NaN,h=Number.isFinite(i)?N+i*1e3:Number.isFinite(I)?I:N+6e4;return p.value=Math.max(p.value,h),S.value=N,g(),P.value>0&&(D=Se(()=>{S.value=Date.now(),P.value===0&&g()},1e3)),!0}}},et={key:0,class:"flex items-center justify-center py-12"},tt={key:1,class:"rounded-lg p-4 bg-red-500/10 border border-red-500/30 text-sm text-red-200"},st={key:2,class:"space-y-6"},at={class:"admin-card p-3 space-y-1"},nt={class:"text-card-text font-medium"},ot={class:"text-xs text-card-text-muted"},it={key:1,class:"text-xs text-card-text-muted mt-1 italic"},rt={class:"flex items-center justify-between mb-2"},lt={class:"text-xs text-card-text-muted"},dt={key:0,class:"admin-card p-3 text-sm text-card-text-muted"},ut={key:1,class:"flex items-center justify-center py-8"},ct={key:2,class:"rounded-lg p-3 bg-red-500/10 border border-red-500/30 text-sm text-red-200"},mt=["disabled"],pt={key:3,class:"grid grid-cols-2 gap-3"},vt=["disabled","onClick"],ft=["src","alt","onError"],gt={key:1,class:"w-full h-full flex flex-col items-center justify-center text-card-text-muted p-2 text-center text-xs"},xt={key:0,class:"admin-card p-3"},_t=["innerHTML"],bt={class:"space-y-1.5 text-sm text-card-text-secondary"},ht={class:"flex items-start gap-2"},yt={class:"flex items-start gap-2"},Dt={class:"flex items-start gap-2"},wt={class:"admin-card p-3 space-y-1 text-sm"},kt={class:"flex items-center gap-2"},It={class:"text-card-text-muted"},Et={key:0,class:"text-card-text-muted"},At={key:0},St={key:1,class:"text-red-300"},Nt={key:2,class:"text-card-text-secondary whitespace-pre-line"},Vt={key:1,class:"space-y-3 pt-2 border-t border-[var(--admin-border)]"},Ct={key:0,class:"flex gap-3"},Ut={key:2,class:"text-sm text-card-text-muted italic pt-2 border-t border-[var(--admin-border)]"},Pt=["src","alt"],Rt=de({__name:"IdVerificationDetailPanel",props:{modelValue:{type:Boolean},requestId:{}},emits:["update:modelValue","decided","view-user"],setup(p,{emit:S}){const D=p,{isLight:P}=$e(),g=S,v=he(),_=je(),b=_e(),{confirm:N}=Me(),a=d(null),i=d(!1),I=d(""),h=d(""),y=L(()=>Te(h.value)),M=d([]),V=d(!1),C=d(""),H=d(0),{remainingMinutes:$,capture:G}=Ze(),R=d(null),T=d(!1),q=d({reason:"UNCLEAR_IMAGE",adminNote:""}),F=d(!1),O=d(null),K=L(()=>
1a.value&&(a.value.userNameSnapshot||a.value.userEmailSnapshot)||"ID verification request"),Z=L(()=>{switch(a.value?.status){case"APPROVED":return"admin-badge-success";case"REJECTED":return"admin-badge-critical";case"PENDING":return"admin-badge-attention";case"SUPERSEDED":return"";default:return""}}),z=()=>{a.value=null,M.value=[],V.value=!1,C.value="",H.value=0,I.value="",R.value=null,T.value=!1,q.value={reason:"UNCLEAR_IMAGE",adminNote:""},F.value=!1,O.value=null},c=l=>{g("update:modelValue",l),l||z()},m=async l=>{const s=()=>D.requestId===l;i.value=!0,I.value="";try{const[f,j]=await Promise.all([v.getDetail(l),v.getSettings().catch(()=>null)]);if(!s()||(a.value=f,h.value=j?.acceptedDocumentsMarkdown??"",a.value.imagesDeletedAt))return;await A()}catch(f){if(!s())return;W(f,"Failed to load verification request"),I.value=n(f)||"Failed to load verification request"}finally{s()&&(i.value=!1)}},A=async()=>{if(!a.value||a.value.imagesDeletedAt)return;if($.value>0){V.value=!1,C.value="ID photo access was rate limited. You can try fetching images again now.";return}const l=a.value.id,s=()=>a.value?.id===l;
1V.value=!0,C.value="";try{const f=await _.runWithStepUp(Ue,j=>v.getSignedUrls(l,j),{message:"Enter your TOTP code to fetch the ID photos. This action is logged.",retryMessage:"That code was invalid. Enter your current TOTP code to fetch the ID photos."});if(!s())return;if(f===null){C.value="Step-up auth was cancelled. Click below to try again.";return}M.value=f,H.value=Date.now()+300*1e3}catch(f){if(G(f),!s())return;C.value=n(f)||"Failed to fetch image URLs."}finally{s()&&(V.value=!1)}},J=async l=>{Date.now()<H.value||V.value||await A()},ee=l=>{l.signedUrl&&(O.value=l,F.value=!0)},te=async()=>{!a.value||!await N({title:"Approve verification?",message:"Approving will mark the user as verified and 18+, and email them to say so. The image is purged 3 days after this decision.",variant:"primary",confirmText:"Approve"})||await ae()},se=async l=>{if(a.value){T.value=!0;try{await v.reject(a.value.id,l),b.success("Verification rejected."),g("decided",a.value.id),c(!1)}catch(s){W(s,"Failed to record decision")}finally{T.value=!1}}},ae=async()=>{if(a.value){T.value=!0;try{await v.approve(a.value.id),b.success("Verification approved."),g("decided",a.value.id),c(!1)}catch(l){W(l,"Failed to record decision")}finally{T.value=!1}}},W=(l,s)=>{const f=l,j=f.data?.code,ie=f.data?.message||f.data?.error;if(j==="INVALID_STATE"){b.error("This request was already decided by another admin."),g("decided",a.value?.id??""),c(!1);return}
1if(f.status===403&&j?.includes("STEP_UP")){b.error("Step-up code was invalid. Please try again.");return}b.error(ie||s)},n=l=>{const s=l;return s.data?.message||s.data?.error||""},ne=l=>be.find(s=>s.value===l)?.label??l,oe=l=>l?new Date(l).toLocaleString("en-GB",{day:"numeric",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit"}):"";return ge(()=>[D.modelValue,D.requestId],async([l,s])=>{if(!l||!s){z();return}await m(s)},{immediate:!0}),(l,s)=>{const f=xe,j=me,ie=Xe,ye=Pe,De=Re;return o(),X(De,{"model-value":p.modelValue,title:e(K),width:"lg","onUpdate:modelValue":c},{default:k(()=>[e(i)?(o(),r("div",et,[...s[5]||(s[5]=[t("div",{class:"inline-block animate-spin rounded-full h-8 w-8 border-4 border-[var(--admin-border)] border-t-[var(--admin-btn-primary-bg)]"},null,-1)])])):e(I)?(o(),r("div",tt,u(e(I)),1)):e(a)?(o(),r("div",st,[t("div",null,[s[6]||(s[6]=t("h3",{class:"admin-section-title mb-2"},"User",-1)),t("div",at,[t("p",nt,u(e(a).userNameSnapshot||"User deleted"),1),t("p",ot,u(e(a).userEmailSnapshot||"â"),1),e(a).userId?(o(),r("button",{key:0,class:"text-xs text-admin-accent-text hover:text-admin-accent-text-hover mt-1",onClick:s[0]||(s[0]=E=>g("view-user",e(a).userId))}," View user profile â ")):(o(),r("p",it," User account has been deleted; review snapshot only. "))])]),t("div",null,[t("div",rt,[s[7]||(s[7]=t("h3",{class:"admin-section-title"},"ID Photos",-1)),t("span",lt,u(e(a).images.length)+" "+u(e(a).images.length===1?"photo":"photos"),1)]),e(a).imagesDeletedAt?(o(),r("div",dt,[x(f,{name:"heroicons:trash",class:"w-4 h-4 inline-block mr-1.5 -mt-0.5"}),w(" Images purged on "+u(oe(e(a).imagesDeletedAt))+" (3-day retention). ",1)])):e(V)?(o(),r("div",ut,[...s[8]||(s[8]=[t("div",{class:"inline-block animate-spin rounded-full h-8 w-8 border-4 border-[var(--admin-border)] border-t-[var(--admin-btn-primary-bg)]"},null,-1)])])):e(C)||e($)?(o(),r("div",ct,[w(u(e($)?"ID photo access is temporarily rate limited.":e(C))+" ",1),t("button",{class:"block text-admin-accent-text underline mt-2 disabled:opacity-60 disabled:cursor-not-allowed",disabled:e($)>0,onClick:A},u(e($)?`Try again in ${e($)} ${e($)===1?"minute":"minutes"}`:"Try fetching images again"),9,mt)])):e(M).length?(o(),r("div",pt,[(o(!0),r(ue,null,ce(e(M),E=>(o(),r("button",{key:E.id,type:"button",class:"rounded-lg overflow-hidden bg-card border border-[var(--admin-border)] hover:border-card-text-muted transition-colors focus:outline-none focus:ring-2 focus:ring-admin-accent-ring",disabled:!E.signedUrl,onClick:we=>ee(E)},[E.signedUrl?(o(),r("img",{key:0,src:E.signedUrl,alt:E.filename||"ID image",class:"w-full object-fit",onError:we=>J(E.id)},null,40,ft)):(o(),r("div",gt,[x(f,{name:"heroicons:trash",class:"w-6 h-6 mb-1"}),s[9]||(s[9]=w(" Image purged ",-1))]))],8,vt))),128))])):U("",!0)]),e(y)?(o(),r("details",xt,[s[10]||(s[10]=t("summary",{class:"admin-section-title cursor-pointer"}," Operator policy â accepted documents ",-1)),t("div",{class:Y(["prose prose-sm max-w-none text-card-text-secondary mt-2",{"prose-invert":!e(P)}]),innerHTML:e(y)},null,10,_t)])):U("",!0),t("div",null,[s[14]||(s[14]=t("h3",{class:"admin-section-title mb-2"},"Verification checklist",-1)),t("ul",bt,[t("li",ht,[x(f,{name:"heroicons:check",class:"w-4 h-4 text-green-400 shrink-0 mt-0.5"}),s[11]||(s[11]=w(" Document is genuine, in date, and matches the user's name on file. ",-1))]),t("li",yt,[x(f,{name:"heroicons:check",class:"w-4 h-4 text-green-400 shrink-0 mt-0.5"}),s[12]||(s[12]=w(" Date of birth on the document confirms the user is 18 or older. If not, reject with 'Age insufficient'. ",-1))]),t("li",Dt,[x(f,{name:"heroicons:check",class:"w-4 h-4 text-green-400 shrink-0 mt-0.5"}),s[13]||(s[13]=w(" Photo is clear and not partially obscured. ",-1))])])]),t("div",null,[s[15]||(s[15]=t("h3",{class:"admin-section-title mb-2"},"Status",-1)),t("div",wt,[t("div",kt,[t("span",{class:Y([e(Z),"admin-badge"])},u(e(a).status),3),t("span",It,"Submitted "+u(oe(e(a).createdAt)),1)]),e(a).decidedAt?(o(),r("p",Et,[w(" Decided "+u(oe(e(a).decidedAt)),1),e(a).decidedByAdminEmailSnapshot?(o(),r("span",At," by "+u(e(a).decidedByAdminEmailSnapshot),1)):U("",!0)])):U("",!0),e(a).rejectionReason?(o(),r("p",St," Reason: "+u(ne(e(a).rejectionReason)),1)):U("",!0),e(a).adminNote?(o(),r("p",Nt," Note: "+u(e(a).adminNote),1)):U("",!0)])]),e(a).status==="PENDING"?(o(),r("div",Vt,[s[18]||(s[18]=t("h3",{class:"admin-section-title"},"Decision",-1)),e(R)?(o(),X(ie,{key:1,busy:e(T),"initial-reason":e(q).reason,"initial-note":e(q).adminNote,onCancel:s[2]||(s[2]=E=>R.value=null),onSubmit:se,"onUpdate:state":s[3]||(s[3]=E=>q.value=E)},null,8,["busy","initial-reason","initial-note"])):(o(),r("div",Ct,[x(j,{disabled:e(T),class:"flex-1",onClick:te},{default:k(()=>[...s[16]||(s[16]=[w(" Approve ",-1)])]),_:1},8,["disabled"]),x(j,{disabled:e(T),variant:"destructive",class:"flex-1",onClick:s[1]||(s[1]=E=>R.value="reject")},{default:k(()=>[...s[17]||(s[17]=[w(" Reject ",-1)])]),_:1},8,["disabled"])]))])):(o(),r("div",Ut," This request has already been decided. "))])):U("",!0),x(ye,{modelValue:e(F),"onUpdate:modelValue":s[4]||(s[4]=E=>B(F)?F.value=E:null),title:e(O)?.filename||"ID image",size:"lg","z-class":"z-[65]"},{default:k(()=>[e(O)?.signedUrl?(o(),r("img",{key:0,src:e(O).signedUrl,alt:e(O).filename||"ID image",class:"w-full h-auto max-h-[75vh] object-contain rounded"},null,8,Pt)):U("",!0)]),_:1},8,["modelValue","title"])]),_:1},8,["model-value","title"])}}}),Tt=Object.assign(Rt,{__name:"AdminIdVerificationDetailPanel"}),re=[{value:"submittedAt:asc",label:"Submitted: oldest first"}
1,{value:"submittedAt:desc",label:"Submitted: newest first"}],ve=[{value:"decidedAt:desc",label:"Decided: newest first"},{value:"decidedAt:asc",label:"Decided: oldest first"}],fe=p=>p==="PENDING"?"submittedAt:asc":p===""?"queue":"decidedAt:desc",$t=p=>p==="PENDING"?re:p===""?[{value:"queue",label:"Queue order"},...ve,...re]:[...ve,...re],jt=p=>{if(p==="queue")return{};const[S,D]=p.split(":");return{sortBy:S,sortOrder:D}},Ot={class:"flex flex-wrap gap-4 mb-6"},Mt=["value"],qt=["onClick"],Ft={class:"text-sm font-medium text-card-text"},Lt={class:"text-xs text-card-text-muted"},Gt={class:"text-sm text-card-text-secondary"},Bt={key:0,class:"text-xs text-card-text-muted ml-1"},Ht={class:"text-sm text-card-text"},zt={class:"text-sm text-card-text"},Cs=de({__name:"index",setup(p){Ne({title:"ID Verification",minimal:!0});const S=he(),D=_e(),{refresh:P}=Fe(),g=pe({status:"PENDING"}),v=d(fe(g.status)),_=L(()=>$t(g.status)),b=d([]),N=d(null),a=d(!0),i=d(!1),I=d(""),h=pe({pending:0,approved:0,rejected:0,superseded:0}),y=d(!1),M=d(null),V=d(!1),C=d(null),H=[{key:"status",label:"Status"},{key:"user",label:"User"},{key:"images",label:"Photos"},{key:"submitted",label:"Submitted"},{key:"decided",label:"Decided"},{key:"actions",label:""}],$=L(()=>g.status==="PENDING"||!g.status?"No pending verification requests.":"No requests match your filters.");let G=0;const R=async(c=1)=>{const m=++G;a.value=!0,i.value=!1,I.value="";try{const A=await S.list({status:g.status||void 0,page:c,limit:20,...jt(v.value)});if(m!==G)return;b.value=A.data,N.value=A.pagination}catch(A){if(m!==G)return;i.value=!0;const J=A.data?.message;I.value=J||"Failed to load verification requests."}finally{m===G&&(a.value=!1)}},T=()=>{v.value=fe(g.status),R(1)},q=async()=>{try{const c=await S.getStats();h.pending=c.pending,h.approved=c.approved,h.rejected=c.rejected,h.superseded=c.superseded}catch(c){console.error("Failed to load ID verification stats",c)}},F=c=>{M.value=c,y.value=!0},O=async c=>{D.info("Refreshing queue..."),await Promise.all([R(N.value?.page||1),q(),P()])},K=c=>{C.value=c,V.value=!0},Z=c=>{switch(c){case"APPROVED":return"admin-badge-success";case"REJECTED":return"admin-badge-critical";case"PENDING":return"admin-badge-attention";case"SUPERSEDED":return"";default:return""}},z=c=>c?new Date(c).toLocaleString("en-GB",{day:"numeric",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit"}):"";return Ve(()=>{Promise.all([R(),q()])}),(c,m)=>{const A=ke,J=Ie,ee=me,te=Ce,se=Tt,ae=Oe,W=qe;return o(),X(W,{title:"ID Verification",description:"Review government ID submissions, approve, or reject with a reason."},{default:k(()=>[x(J,{cols:4,class:"mb-6"},{default:k(()=>[x(A,{label:"Pending",value:e(h).pending,format:"number",color:"warning"},null,8,["value"]),x(A,{label:"Approved",value:e(h).approved,format:"number",color:"success"},null,8,["value"]),x(A,{label:"Rejected",value:e(h).rejected,format:"number",color:"danger"},null,8,["value"]),x(A,{label:"Superseded",value:e(h).superseded,format:"number",color:"muted"},null,8,["value"])]),_:1}),t("div",Ot,[t("div",null,[m[6]||(m[6]=t("label",{class:"label"},"Status",-1)),Q(t("select",{"onUpdate:modelValue":m[0]||(m[0]=n=>e(g).status=n),class:"input text-card-text w-40",onChange:T},[...m[5]||(m[5]=[t("option",{value:"PENDING"},"Pending",-1),t("option",{value:"APPROVED"},"Approved",-1),t("option",{value:"REJECTED"},"Rejected",-1),t("option",{value:"SUPERSEDED"},"Superseded",-1),t("option",{value:""},"All",-1)])],544),[[le,e(g).status]])]),t("div",null,[m[7]||(m[7]=t("label",{class:"label"},"Sort order",-1)),Q(t("select",{"onUpdate:modelValue":m[1]||(m[1]=n=>B(v)?v.value=n:null),class:"input text-card-text w-56",onChange:m[2]||(m[2]=n=>R(1))},[(o(!0),r(ue,null,ce(e(_),n=>(o(),r("option",{key:n.value,value:n.value},u(n.label),9,Mt))),128))],544),[[le,e(v)]])])]),x(te,{columns:H,data:e(b),loading:e(a),error:e(i),"error-message":e(I),"empty-message":e($),pagination:e(N)||void 0,"row-key":"id","item-name":"verification requests",onPageChange:R},{"cell-status":k(({row:n})=>[t("span",{class:Y(["admin-badge",Z(n.status)])},u(n.status),3)]),"cell-user":k(({row:n})=>[t("button",{class:Y(["text-left hover:text-card-text-muted transition-colors",{"curs
1or-default hover:text-current":!n.userId}]),onClick:ne=>n.userId?K(n.userId):null},[t("div",Ft,u(n.userNameSnapshot||"User deleted"),1),t("div",Lt,u(n.userEmailSnapshot||"â"),1)],10,qt)]),"cell-images":k(({row:n})=>[t("span",Gt,[w(u(n._count.images)+" "+u(n._count.images===1?"photo":"photos")+" ",1),n.imagesDeletedAt?(o(),r("span",Bt,"(purged)")):U("",!0)])]),"cell-submitted":k(({row:n})=>[t("div",Ht,u(z(n.createdAt)),1)]),"cell-decided":k(({row:n})=>[t("div",zt,u(n.decidedAt?z(n.decidedAt):"â"),1)]),"cell-actions":k(({row:n})=>[x(ee,{size:"sm",variant:"secondary",onClick:ne=>F(n.id)},{default:k(()=>[w(u(n.status==="PENDING"?"Review":"View"),1)]),_:2},1032,["onClick"])]),_:1},8,["data","loading","error","error-message","empty-message","pagination"]),x(se,{modelValue:e(y),"onUpdate:modelValue":m[3]||(m[3]=n=>B(y)?y.value=n:null),"request-id":e(M),onDecided:O,onViewUser:K},null,8,["modelValue","request-id"]),e(C)?(o(),X(ae,{key:0,modelValue:e(V),"onUpdate:modelValue":m[4]||(m[4]=n=>B(V)?V.value=n:null),"user-id":e(C),mode:"view"},null,8,["modelValue","user-id"])):U("",!0)]),_:1})}}});
1export{Cs 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.