1import{u as G,a as q,b as se,h as te,r as c,j as e,f as ae,B as h,d as R,D as le,m as ne,n as re,g as ie,c as oe,o as ce,E as B,p as de}from"./index-_aijvlUq.js";import{u as xe}from"./useMemberStore-C9_FW8gS.js";import{p as me}from"./performances-duTJPchz.js";import{m as L}from"./members-I3UAoZ9P.js";import{P as ue,g as he}from"./PageHeader-DCofr6qo.js";import{A as pe}from"./Avatar-BMcjKrGk.js";import{S as O}from"./StatusBadge-CHI7aYVl.js";import{I as ge}from"./InstrumentTag-CHdSvMU6.js";import{o as fe}from"./orgRoles-D1oGgqrm.js";import{d as ye}from"./exportCsv-CZAUSrIW.js";import{C as je}from"./ConfirmDialog-CODvETNM.js";import{l as Ne}from"./loginOutcome-CWrPTVc0.js";import"./downscaleImage-qyGK-a3D.js";import"./Badge-DJIi163x.js";function z(s){return s>=360?"12-month":s>=180?"6-month":`${s}-day`}const be=[{value:"active",label:"Active",solid:"bg-green-500 border-green-500 text-white",outline:"border-gray-300 text-gray-600 hover:border-green-400 hover:text-green-700"},{value:"inactive",label:"Inactive",solid:"bg-gray-500 border-gray-500 text-white",outline:"border-gray-300 text-gray-600 hover:border-gray-500 hover:text-gray-700"},{value:"retired",label:"Alumni",solid:"bg-gray-400 border-gray-400 text-white",outline:"border-gray-300 text-gray-600 hover:border-gray-400 hover:text-gray-600"}];function ve({member:s,performanceHistory:r=null,attendanceStats:a=null,onDelete:j,onStatusChange:i,isChangingStatus:w=!1,onCreateAccount:x,isCreatingAccount:o=!1,onResetPassword:g,isResettingPassword:N=!1,onResendWelcome:b,isResendingWelcome:f=!1,loginActive:m}){const p=G(),{canFully:l}=q(),u=se(t=>t.user?.memberId),A=te(t=>t.currentOrg?.trackPerformanceAttendance!==!1||t.currentOrg?.trackRehearsalAttendance!==!1),C=!!u&&u===s?.id,P=l("members:update")||C,S=l("members:delete")&&!C,[E,$]=c.useState(!1),k=10;return s?e.jsxs("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden",children:[e.jsxs("div",{className:"bg-band-900 px-6 py-5 flex flex-col sm:flex-row sm:items-center sm:gap-6 gap-3",children:[e.jsx("div",{className:"shrink-0",children:e.jsx(pe,{src:s.photoUrl,firstName:s.firstName,lastName:s.lastName,size:"lg"})}),e.jsxs("div",{className:"text-white min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center flex-wrap gap-2",children:[e.jsx("h2",{className:"text-2xl font-bold",children:ae(s)}),s.memberType==="director"&&e.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-xs font-semibold bg-purple-200 text-purple-800",children:"Director"}),s.memberType==="guest"&&e.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-xs font-semibold bg-orange-200 text-orange-800",children:"Guest"}),s.isSectionLeader&&e.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-xs font-semibold bg-band-200 text-band-900",children:"Section Leader"})]}),(s.roleAliases||s.emailAddress)&&e.jsx("p",{className:"text-band-100 text-sm mt-0.5 truncate",title:s.roleAliases?"Role email":"Personal email",children:s.roleAliases?Object.values(s.roleAliases)[0]:s.emailAddress}),e.jsx("div",{className:"mt-2",children:e.jsx(O,{status:s.memberStatus})})]}),(P||S)&&e.jsxs("div",{className:"sm:ml-auto flex gap-3 shrink-0",children:[P&&e.jsx(h,{variant:"secondary",size:"sm",onClick:()=>p(l("members:update")?`/members/${s.id}/edit`:"/account/profile"),children:"Edit"}),S&&j&&e.jsx(h,{variant:"danger",size:"sm",onClick:j,children:"Delete"})]})]}),e.jsxs("div",{className:"px-8 py-6 grid grid-cols-1 md:grid-cols-2 gap-8",children:[s.emailAddress||s.phone||s.street||s.city?e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold text-gray-500 uppercase tracking-wide mb-4",children:"Contact"}),e.jsxs("dl",{className:"space-y-3",children:[s.roleAliases&&Object.entries(s.roleAliases).map(([,t])=>e.jsx(n,{label:"Role Email",value:e.jsx("a",{href:`mailto:${t}`,className:"text-band-600 hover:underline",children:t})},t)),s.emailAddress&&e.jsx(n,{label:"Email",value:e.jsxs("span",{className:"inline-flex items-center gap-2 flex-wrap",children:[e.jsx("a",{href:`mailto:${s.emailAddress}`,className:"text-band-600 hover:underline",children:s.emailAddress}),s.contactEmailVerifiedAt?e.jsxs("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-emerald-50 text-emerald-700 border border-emerald-200",children:["Confirmed ",new Date(s.contactEmailVerifiedAt).toLocaleDateString("en-US",{month:"short",day:"numeric"})]}):e.jsx("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-gray-50 text-gray-500 border border-gray-200",children:"Unconfirmed"})]})}),s.phone&&e.jsx(n,{label:"Phone",value:e.jsx("a",{href:`tel:${s.phone}`,className:"text-band-600 hover:underline",children:s.phone})}),(s.street||s.city)&&e.jsx(n,{label:"Address",value:[s.street,s.street2,s.city,s.state].filter(
1Boolean).join(", ")}),s.county&&e.jsx(n,{label:"County",value:s.county})]})]}):e.jsx("section",{}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold text-gray-500 uppercase tracking-wide mb-4",children:"Membership"}),e.jsxs("dl",{className:"space-y-3",children:[e.jsx(n,{label:"Member Since",value:R(s.onboardingDate)}),e.jsx(n,{label:"Type",value:{director:"Director",guest:"Guest",staff:"Staff (non-performing)"}[s.memberType]||"Musician"}),e.jsx(n,{label:"Status",value:i?e.jsx("div",{className:"flex flex-wrap gap-1.5",children:be.map(t=>{const v=s.memberStatus===t.value;return e.jsx("button",{type:"button",disabled:v||w,onClick:()=>!v&&i(t.value),className:`px-2.5 py-0.5 rounded-full text-xs font-medium border transition-colors disabled:cursor-default ${v?t.solid:`bg-white ${t.outline}`}`,children:t.label},t.value)})}):e.jsx(O,{status:s.memberStatus})}),e.jsx(n,{label:"Login Account",value:s.hasUserAccount?e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[m===!1?e.jsx("span",{className:"text-amber-700 text-sm font-medium",children:"Switched off"}):e.jsx("span",{className:"text-green-600 text-sm font-medium",children:"Active"}),g&&e.jsx(h,{variant:"ghost",size:"sm",onClick:g,isLoading:N,className:"!text-xs !px-2",children:"Reset password"}),b&&e.jsx(h,{variant:"ghost",size:"sm",onClick:b,isLoading:f,className:"!text-xs !px-2",children:m===!1?"Switch on & send welcome":"Resend welcome"})]}):x?e.jsx(h,{variant:"secondary",size:"sm",onClick:x,isLoading:o,children:"Create login account"}):e.jsx("span",{className:"text-gray-400 text-sm",children:"None"})}),s.systemRole&&s.hasUserAccount&&e.jsx(n,{label:"System Role",value:e.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-xs font-semibold bg-indigo-100 text-indigo-700",children:le[s.systemRole]||s.systemRole})}),s.accountAuthority&&e.jsx(n,{label:"Account Access",value:e.jsx("span",{className:`inline-flex items-center px-2 py-0.5 rounded text-xs font-semibold ${s.accountAuthority==="owner"?"bg-amber-100 text-amber-800":"bg-slate-100 text-slate-700"}`,children:s.accountAuthority==="owner"?"Owner":"Admin"})}),s.birthday&&e.jsx(n,{label:"Birthday",value:R(s.birthday)}),s.profession&&e.jsx(n,{label:"Profession",value:s.profession}),s.teams?.length>0&&e.jsx(n,{label:"Teams",value:s.teams.map(t=>t.name).join(", ")}),s.driverDocumentsOnFile&&e.jsx(n,{label:"Driver documents",value:"On file"}),s.orgRoles?.length>0&&e.jsx(n,{label:"Roles",value:e.jsx("div",{className:"flex flex-wrap gap-1",children:s.orgRoles.map(t=>e.jsx("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-semibold bg-teal-100 text-teal-700",children:fe(t)},t))})})]})]})]}),s.bio&&e.jsx(y,{title:"Bio",children:e.jsx("p",{className:"text-sm text-gray-700 whitespace-pre-wrap",children:s.bio})}),(s.emergencyContactName||s.emergencyContactEmail||s.emergencyContactPhone)&&e.jsx(y,{title:"Emergency Contact",children:e.jsxs("dl",{className:"space-y-3",children:[s.emergencyContactName&&e.jsx(n,{label:"Name",value:s.emergencyContactName}),s.emergencyContactRelationship&&e.jsx(n,{label:"Relationship",value:s.emergencyContactRelationship}),s.emergencyContactEmail&&e.jsx(n,{label:"Email",value:e.jsx("a",{href:`mailto:${s.emergencyContactEmail}`,className:"text-band-600 hover:underline",children:s.emergencyContactEmail})}),s.emergencyContactPhone&&e.jsx(n,{label:"Phone",value:e.jsx("a",{href:`tel:${s.emergencyContactPhone}`,className:"text-band-600 hover:underline",children:s.emergencyContactPhone})})]})}),s.communicationProxy&&(s.proxyName||s.proxyEmail||s.proxyPhone)&&e.jsxs(y,{title:"Communication Proxy",children:[e.jsxs("dl",{className:"space-y-3",children:[s.proxyName&&e.jsx(n,{label:"Name",value:s.proxyName}),s.proxyRelationship&&e.jsx(n,{label:"Relationship",value:s.proxyRelationship}),s.proxyEmail&&e.jsx(n,{label:"Email",value:e.jsx("a",{href:`mailto:${s.proxyEmail}`,className:"text-band-600 hover:underline",children:s.proxyEmail})}),s.proxyPhone&&e.jsx(n,{label:"Phone",value:e.jsx("a",{href:`tel:${s.proxyPhone}`,className:"text-band-600 hover:underline",children:s.proxyPhone})})]}),e.jsx("p",{className:"text-xs text-amber-600 mt-2",children:"Notifications route to this contact instead of the member."})]}),e.jsx(y,{title:"Instruments",children:s.instruments?.length>0?e.jsx("div",{className:"flex flex-wrap gap-2",children:s.instruments.map(t=>e.jsx(ge,{name:t.name,family:t.family},t.instrumentId))}):e.jsx("p",{className:"text-sm text-gray-500",children:"No instruments assigned."})}),e.jsx(y,{title:"Ensembles",children:s.ensembles?.length>0?e.jsx("div",{className:"flex flex-wrap gap-2",children:s.ensembles.map(t=>e.jsx("span",{className:"px-3 py-1 rounded-full bg-accent-100 text-accent-700 text-sm font-medium",children:t.name},t.id))}):e.jsx("p",{className:"text-sm text-gray-500",children:"Not a member of any ensemble."})}),e.jsx(y,{title:"Section",children:s.sections?.length>0?e.jsx("div",{className:"space-y-4",children:s.sections.map(t=>e.jsxs("div",{className:"rounded-lg border border-gray-200 bg-gray-50 px-4 py-3",children:[e.jsx("p",{className:"text-sm font-semibold text-gray-900 mb-2",children:t.name}),t.leader?e.jsxs("dl",{className:"space-y-1.5",children:[e.jsx(n,{label:"Leader",value:t.leader.name}),t.leader.email&&e.jsx(n,{label:"Email",value:e.jsx("a",{href:`mailto:${t.leader.email}`,className:"text-band-600 hover:underline",children:t.leader.email})}),t.leader.phone&&e.jsx(n,{label:"Phone",value:e.jsx("a",{href:`tel:${t.leader.phone}`,className:"text-band-600 hover:underline",children:t.leader.phone})})]}):e.jsx("p",{className:"text-xs text-gray-400",children:"No section leader assigned."})]},`${t.id}-${t.ensembleId}`))}):e.jsx("p",{className:"text-sm text-gray-500",children:"Not assigned to a section."})}),A&&e.jsx(y,{title:"Attendance",children:a===null?e.jsx("p",{className:"text-sm text-gray-400",children:"Loading..."}):a.total===0?e.jsxs("p",{className:"text-sm text-gray-500",children:["No attendance records",a.windowDays?` in the last ${z(a.windowDays)}`:" yet","."]}):e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-6",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:`text-2xl font-bold ${a.rate===null?"text-gray-400":a.rate>=(a.targetPercent??50)?"text-green-600":"text-red-500"}`,children:a.rate!==null?`${a.rate}%`:"â"}),e.jsx("p",{className:"text-xs text-gray-400",children:a.windowDays?`${z(a.windowDays)} rate`:"Attendance Rate"})]}),e.jsxs("div",{className:"flex gap-4",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-lg font-semibold text-green-600",children:a.present}),e.jsx("p",{className:"text-xs text-gray-400",children:"Present"})]}),e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-lg font-semibold text-red-500",children:a.absent}),e.jsx("p",{className:"text-xs text-gray-400",children:"Absent"})]}),e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-lg font-semibold text-amber-500",children:a.excused}),e.jsx("p",{className:"text-xs text-gray-400",children:"Excused"})]}),e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-lg font-semibold text-gray-600",children:a.total}),e.jsx("p",{className:"text-xs text-gray-400",children:"Marked"})]})]})]}),a.targetPercent!=null&&e.jsxs("p",{className:"mt-2 text-[11px] text-gray-400",children:["Your organizationâs target is ",a.targetPercent,"%",a.excusedPolicy==="excluded"&&" â excused absences donât count either way",a.excusedPolicy==="counts_against"&&" â excused absences count as a miss",a.excusedPolicy==="counts_for"&&" â excused absences count as attended","."]})]})}),e.jsx(y,{title:"Performance History",actions:r?.length>0&&e.jsx(h,{variant:"ghost",size:"sm",onClick:()=>{ye(`performance-history-${s.firstName}-${s.lastName}.csv`,["Date","Performance","Venue","City","State","Ensemble"],r.map(t=>[t.performanceDate,t.title,t.venueName||"",t.venueCity||"",t.venueState||"",t.ensembleName||""]))},className:"!text-xs",children:"Export CSV"}),children:r===null?e.jsx("p",{className:"text-sm text-gray-400",children:"Loadingâ¦"}):r.length===0?e.jsx("p",{className:"text-sm text-gray-500",children:"No performances recorded."}):e.jsxs("div",{className:"overflow-x-auto -mx-4 px-4 sm:-mx-8 sm:px-8",children:[e.jsxs("table",{className:"w-full min-w-[600px] text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"text-left text-xs font-medium text-gray-400 uppercase tracking-wide border-b border-gray-100",children:[e.jsx("th",{className:"pb-2 pr-6",children:"Date"}),e.jsx("th",{className:"pb-2 pr-6",children:"Performance"}),e.jsx("th",{className:"pb-2 pr-6",children:"Location"}),e.jsx("th",{className:"pb-2",children:"Ensemble"})]})}),e.jsx("tbody",{className:"divide-y divide-gray-100",children:(E?r:r.slice(0,k)).map(t=>e.jsxs("tr",{className:"text-gray-700",children:[e.jsx("td",{className:"py-2.5 pr-6 whitespace-nowrap text-gray-500",children:R(t.performanceDate)}),e.jsx("td",{className:"py-2.5 pr-6 font-medium",children:t.title}),e.jsx("td",{className:"py-2.5 pr-6 text-gray-500",children:[t.venueName,t.venueCity,t.venueState].filter(
1Boolean).join(", ")||"â"}),e.jsx("td",{className:"py-2.5 text-gray-500",children:t.ensembleName??"â"})]},t.id))})]}),e.jsxs("div",{className:"mt-4 flex items-center gap-4",children:[e.jsx(h,{variant:"ghost",size:"sm",onClick:()=>p(`/members/${s.id}/music-history`),children:"View music history â"}),r.length>k&&e.jsx("button",{type:"button",onClick:()=>$(!E),className:"text-xs text-band-600 hover:text-band-800 hover:underline",children:E?`Show recent ${k}`:`Show all ${r.length} performances`})]})]})})]}):null}function y({title:s,actions:r,children:a}){return e.jsxs("div",{children:[e.jsxs("div",{className:"bg-gray-50 border-t border-b border-gray-100 px-4 sm:px-8 py-3 flex items-center justify-between",children:[e.jsx("h3",{className:"text-sm font-semibold text-gray-500 uppercase tracking-wide",children:s}),r]}),e.jsx("div",{className:"px-4 sm:px-8 py-6",children:a})]})}function n({label:s,value:r}){return e.jsxs("div",{className:"flex flex-col sm:flex-row sm:gap-2",children:[e.jsx("dt",{className:"text-xs text-gray-500 uppercase tracking-wide sm:w-36 sm:shrink-0 sm:normal-case sm:text-sm sm:tracking-normal",children:s}),e.jsx("dd",{className:"text-sm text-gray-900",children:r})]})}const F=25,W={delivered:"bg-emerald-50 text-emerald-700 border-emerald-200",sent:"bg-gray-50 text-gray-600 border-gray-200",deferred:"bg-amber-50 text-amber-700 border-amber-200",bounced:"bg-red-50 text-red-700 border-red-200",dropped:"bg-red-50 text-red-700 border-red-200",spam_reported:"bg-red-50 text-red-700 border-red-200"},we={spam_reported:"reported as spam"},V=["bounced","dropped","spam_reported"];function Ae(s){if(!s)return"";const r=new Date(s);return r.toLocaleDateString("en-US",{month:"short",day:"numeric"})+" "+r.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit"})}function Ce({memberId:s,memberEmail:r=null}){const[a,j]=c.useState(!1),[i,w]=c.useState(null),[x,o]=c.useState(0),[g,N]=c.useState(!1),[b,f]=c.useState(!1);function m(l){N(!0);try{L.getEmails(s,{limit:F,offset:l}).then(u=>{w(A=>l===0?u.emails??[]:[...A??[],...u.emails??[]]),o(u.total??0),f(!1)}).catch(()=>f(!0)).finally(()=>N(!1))}catch{f(!0),N(!1)}}function p(){const l=!a;j(l),l&&i===null&&!g&&m(0)}return e.jsxs("section",{className:"bg-white rounded-xl border border-gray-200 mt-4",children:[e.jsxs("button",{type:"button",onClick:p,"aria-expanded":a,className:"w-full flex items-center justify-between px-6 py-4 text-left",children:[e.jsx("span",{className:"text-sm font-semibold text-gray-500 uppercase tracking-wide",children:"Email History"}),e.jsxs("span",{className:"flex items-center gap-2 text-xs text-gray-400",children:[a&&x>0&&`${x} email${x===1?"":"s"}`,e.jsx("svg",{className:`h-4 w-4 transition-transform ${a?"rotate-180":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})]})]}),a&&e.jsxs("div",{className:"px-6 pb-5",children:[(()=>{if(!r||!i?.length)return null;const l=i.find(u=>(u.recipient||"").toLowerCase()===r.toLowerCase());return!l||!V.includes(l.status)?null:e.jsx("div",{className:"bg-red-50 border border-red-200 rounded-lg text-sm text-red-700 p-3 mb-3",children:l.status==="spam_reported"?e.jsxs(e.Fragment,{children:["A message to ",r," was reported as spam, so mail to this address is now blocked â nothing will bounce, it simply wonât arrive. Ask them to mark a band email âNot spamâ and add the sender to their contacts, and ask support to clear the block."]}):e.jsxs(e.Fragment,{children:["Emails to ",r," are bouncing â the address may be wrong."]})})})(),e.jsx("p",{className:"text-xs text-gray-400 mb-3",children:"Delivery status comes from the receiving mail server. âOpenedâ is approximate â some mail apps hide or auto-trigger it."}),g&&i===null&&e.jsx("p",{className:"text-sm text-gray-400 py-2",children:"Loadingâ¦"}),b&&e.jsx("p",{className:"text-sm text-gray-400 py-2",children:"Couldnât load email history."}),i!==null&&!b&&i.length===0&&e.jsx("p",{className:"text-sm text-gray-400 py-2",children:"No emails logged yet â the ledger records sends from July 16, 2026 onward."}),i!==null&&i.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("ul",{className:"divide-y divide-gray-100",children:i.map(l=>e.jsxs("li",{className:"py-2.5 flex items-start gap-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"text-sm text-gray-800 break-words",children:l.subject||"(no subject)"}),e.jsxs("div",{className:"mt-0.5 text-xs text-gray-400",children:[Ae(l.sentAt)," · to ",l.recipient,l.category?` · ${l.category}`:"",l.openedAt?" · opened (approx)":""]}),l.statusDetail&&V.includes(l.status)&&e.jsx("div",{className:"mt-0.5 text-xs text-red-500",children:l.statusDetail})]}),e.jsx("span",{className:`shrink-0 inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium border ${W[l.status]||W.sent}`,children:we[l.status]||l.status})]},l.id))}),i.length<x&&e.jsx("button",{type:"button",disabled:g,onClick:()=>m(i.length),className:"mt-2 text-xs text-brand-primary hover:underline disabled:text-gray-400",children:g?"Loadingâ¦":`Load ${Math.min(F,x-i.length)} more`})]})]})]})}function Oe(){const{id:s}=ne(),r=G(),{state:a}
1=re(),j=ie(),{canFully:i,canAny:w}=q(),{fetchMember:x,selectedMember:o,updateMember:g,deleteMember:N,isLoading:b,error:f}=xe(),{showSuccess:m,showError:p}=oe(),[l,u]=c.useState(!1),[A,C]=c.useState(!1),[P,S]=c.useState(!1),[E,$]=c.useState(!1),[k,t]=c.useState(!1),[v,M]=c.useState(!1),[Y,T]=c.useState(a?.login??null),[Z,I]=c.useState(null),[H,U]=c.useState(null);c.useEffect(()=>{x(s),me.memberHistory(s).then(I).catch(()=>I([])),ce.getMemberStats(s).then(U).catch(()=>U({present:0,absent:0,excused:0,total:0,rate:null}))},[s]);async function J(d){S(!0);try{await g(s,{memberStatus:d}),m("Status updated")}catch(ee){p(ee?.message||B)}finally{S(!1)}}async function K(){$(!0);try{await L.createAccount(s),await x(s),m("Login account created. A welcome email has been sent.")}catch(d){p(d.message||B)}finally{$(!1)}}async function Q(){t(!0);try{const d=await L.resetPassword(s);m(`Password reset email sent to ${d.email}`)}catch(d){p(d.message||"Failed to send reset email")}finally{t(!1)}}async function _(){M(!0);try{const d=await L.resendWelcome(s);d.queued?m(`Welcome email queued for ${d.email} â will send on Go Live.`):m(`Welcome email resent to ${d.email}.`),T(null),await x(s)}catch(d){p(d.message||"Failed to resend welcome email")}finally{M(!1)}}async function X(){C(!0);try{await N(s),m("Member deleted"),r("/members")}catch(d){p(d?.message||de)}finally{C(!1),u(!1)}}if(b)return e.jsx("div",{className:"flex justify-center py-20",children:e.jsxs("svg",{className:"animate-spin motion-reduce:!animate-spin h-8 w-8 text-band-500",viewBox:"0 0 24 24",fill:"none",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]})});if(f||!o)return e.jsxs("div",{className:"text-center py-20",children:[e.jsx("p",{className:"text-gray-500",children:f||"Member not found."}),e.jsx(h,{variant:"secondary",className:"mt-4",onClick:()=>r("/members"),children:"Back to Members"})]});const D=Ne(o,Y);return e.jsxs("div",{className:j?"px-4 pt-3":"",children:[!j&&e.jsx(ue,{title:`${o.firstName} ${o.lastName}`,breadcrumbs:[{label:"Home",to:"/"},{label:"Members",to:"/members"},{label:`${o.firstName} ${o.lastName}`}],actions:e.jsx(h,{variant:"secondary",onClick:()=>r(he("/members")),children:"â Back"})}),D&&e.jsxs("div",{className:"bg-amber-50 border border-amber-200 rounded-xl p-4 mb-4 flex flex-col sm:flex-row sm:items-center gap-3",children:[e.jsxs("div",{className:"flex-1 text-sm text-amber-900",children:[e.jsx("p",{className:"font-semibold",children:D.title}),e.jsx("p",{className:"mt-0.5",children:D.body})]}),e.jsxs("div",{className:"flex gap-2 shrink-0",children:[i("members:update")&&o.hasUserAccount&&e.jsx(h,{size:"sm",onClick:_,isLoading:v,children:D.action}),e.jsx(h,{variant:"ghost",size:"sm",onClick:()=>T(null),children:"Dismiss"})]})]}),e.jsx(ve,{member:o,performanceHistory:Z,attendanceStats:H,onDelete:i("members:delete")?()=>u(!0):void 0,onStatusChange:i("members:update")?J:void 0,isChangingStatus:P,onCreateAccount:i("members:update")&&!o.hasUserAccount?K:void 0,isCreatingAccount:E,onResetPassword:i("members:update")&&o.hasUserAccount?Q:void 0,isResettingPassword:k,onResendWelcome:i("members:update")&&o.hasUserAccount?_:void 0,loginActive:o.loginActive,isResendingWelcome:v}),w("members:read_sensitive")&&e.jsx(Ce,{memberId:o.id,memberEmail:o.emailAddress||null}),e.jsx(je,{isOpen:l,onClose:()=>u(!1),onConfirm:X,isLoading:A,title:"Delete Member",message:`Are you sure you want to delete ${o.firstName} ${o.lastName}?`,confirmLabel:"Delete"})]})}export{Oe as MemberDetailPage};
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.