PageSourceSearch

https://madile.at/assets/TeamList-DbA_6Y14.js

js madile.at collected 2026-10-06 11:01:10 UTC 29,244 bytes, 1 lines download raw bytes

1import{j as e,aW as Ne,X as oe,B as Ge,G as He,ad as Je,L as We,t as l,c as q,S as Xe,M as me,aX as ue,ap as Ce,o as Ze,m as _e,Y as Te,V as Ae,U as et,ab as tt,aS as st,aY as at,aZ as nt,a_ as rt,ae as ot}from"./vendor-ui-DUDkkSHt.js";import{r as c,h as it}from"./vendor-react-BnoC6jaQ.js";import{D as lt,c as ct,S as dt,v as pt,e as ut,a as mt,u as xt,C as ht}from"./sortable.esm-CdWgX0Ha.js";import{r as gt}from"./modifiers.esm-CGq5dNsB.js";import{u as se,a9 as Ie,ak as J,an as ft,a8 as bt,af as yt,ac as vt,ad as jt,aU as wt,ao as kt,b0 as St,b1 as Nt,b2 as Ct,b3 as _t,b4 as Tt,at as At,aa as we,b5 as ke,R as It,b6 as Rt,ah as Et}from"./index-C1V3a2SY.js";import{T as ie}from"./Tooltip-rTfxG6kc.js";import{A as Lt,a as P,b as Se}from"./ActionsMenu-CX7LewBo.js";import{L as zt}from"./ListRowCard-DFiY0zfH.js";import{M as Mt}from"./tones-DE2IFeNP.js";import{L as Dt}from"./listStyles-D0vCgQbr.js";import{S as Pt}from"./StatusTabs-DI2K6QrI.js";import{S as $t}from"./SortMenu-DNKO0NJV.js";import{C as Ft,a as qt,E as Bt}from"./states-CpXjdexW.js";import{u as Ot,a as Ut}from"./sortable-CquecDM4.js";import"./vendor-supabase-BC1hGCEc.js";import"./vendor-map-C4RD4rgy.js";import"./vendor-pdf-Mz6frGtm.js";import"./usePopoverPlacement-DYzSJOvS.js";function Qt({open:s,onClose:u,fromAgent:f,targets:m,counts:i}){const{t:o}=se(["adminTeam","adminCommon"]),b=Ie(),[y,$]=c.useState(""),[T,A]=c.useState(!0),[C,R]=c.useState(!0),[I,k]=c.useState(!0),[j,d]=c.useState(!1);if(!s)return null;const w=m.find(p=>p.id===y)??null,L=i.properties-i.propertiesSynced,B=!!w&&(T&&L>0||C&&i.leads>0||I&&i.projects>0);async function O(){if(w){d(!0);try{const p=[];T&&L>0&&p.push(J.from("properties").update({agent_id:w.id,agent_name:w.name,agent_email:w.email,agent_phone:w.phone,agent_photo_url:w.photo_url}).eq("agent_id",f.id).is("justimmo_account_id",null)),C&&i.leads>0&&p.push(J.from("leads").update({agent_id:w.id}).eq("agent_id",f.id)),I&&i.projects>0&&p.push(J.from("projects").update({agent_id:w.id}).eq("agent_id",f.id));const z=(await Promise.all(p)).find(E=>E.error);if(z){const E=z.error.message;throw new Error(E)}l.success(o("reassign.toast.success",{name:w.name}),T&&i.propertiesSynced>0?{description:o("reassign.toast.syncedDesc",{count:i.propertiesSynced})}:void 0),b.invalidateQueries({queryKey:["properties"]}),b.invalidateQueries({queryKey:["leads"]}),b.invalidateQueries({queryKey:["projects"]}),u()}catch(p){const v=p instanceof Error?p.message:o("reassign.toast.failed");l.error(v)}finally{d(!1)}}}return e.jsx("div",{className:"fixed inset-0 z-[200] flex items-center justify-center bg-black/40 backdrop-blur-sm px-4",onClick:u,children:e.jsxs("div",{className:"bg-white rounded-2xl shadow-2xl w-full max-w-md overflow-hidden",onClick:p=>p.stopPropagation(),children:[e.jsxs("div",{className:"flex items-center justify-between px-6 py-4 border-b border-gray-100",children:[e.jsxs("div",{className:"flex items-center gap-2.5",children:[e.jsx(Ne,{size:18,className:"text-primary"}),e.jsx("h2",{className:"text-base font-bold text-app-text",children:o("reassign.title")})]}),e.jsx("button",{onClick:u,className:"p-1.5 rounded-lg text-app-text/65 hover:text-app-text hover:bg-gray-100 transition-colors","aria-label":o("adminCommon:action.close"),children:e.jsx(oe,{size:16})})]}),e.jsxs("div",{className:"p-6 space-y-5",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-app-text/65 uppercase tracking-wider mb-2",children:o("reassign.from")}),e.jsx("div",{className:"bg-gray-50 border border-gray-200 rounded-xl px-4 py-3 text-sm font-medium text-app-text",children:f.name})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-app-text/65 uppercase tracking-wider mb-2",children:o("reassign.to")}),e.jsxs("select",{value:y,onChange:p=>$(p.target.value),className:"w-full bg-white border border-gray-200 rounded-xl px-4 py-3 text-sm text-app-text focus:outline-none focus:ring-2 focus:ring-primary/15 focus:border-primary/30 transition-all",children:[e.jsx("option",{value:"",children:o("reassign.selectAgent")}),m.map(p=>e.jsxs("option",{value:p.id,children:[p.name,p.role?` · ${p.role}`:""]},p.id))]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-app-text/65 uppercase tracking-wider mb-2",children:o("reassign.transferLabel")}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(pe,{checked:T,onChange:A,disabled:L===0,Icon:Ge,label:o("reassign.properties"),count:L}),i.propertiesSynced>0&&e.jsx("p",{className:"text-[11px] text-app-text/65 ml-9 -mt-1",children:o("reassign.syncedNote",{count:i.propertiesSynced})}),e.jsx(pe,{checked:C,onChange:R,disabled:i.leads===0,Icon:He,label:o("reassign.leads"),count:i.leads}),e.jsx(pe,{checked:I,onChange:k,disabled:i.projects===0,Icon:Je,label:o("reassign.projects"),count:i.projects})]})]})]}),e.jsxs("div",{className:"flex items-center justify-end gap-2 px-6 py-4 bg-gray-50 border-t border-gray-100",children:[e.jsx("button",{type:"button",onClick:u,disabled:j,className:"px-4 py-2 rounded-xl text-sm font-medium text-app-text/70 hover:bg-gray-100 transition-colors disabled:opacity-50",children:o("adminCommon:action.cancel")}),e.jsxs("button",{type:"button",onClick:O,disabled:!B||j,className:"inline-flex items-center gap-2 px-5 py-2 rounded-xl text-sm font-semibold bg-primary text-primary-fg hover:bg-primary/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[j&&e.jsx(We,{size:14,className:"animate-spin"}),o("reassign.transferButton")]})]})]})})}function pe({checked:s,onChange:u,disabled:f,Icon:m,label:i,count:o}){return e.jsxs("label",{className:q("flex items-center gap-3 px-3 py-2.5 rounded-xl border transition-colors cursor-pointer select-none",f?"bg-gray-50/50 border-gray-100 text-app-text/65 cursor-not-allowed":s?"bg-primary/5 border-primary/20 text-app-text":"bg-white border-gray-200 text-app-text/70 hover:border-gray-300"),children:[e.jsx("input",{type:"checkbox",checked:s&&!f,disabled:f,onChange:b=>u(b.target.checked),className:"w-4 h-4 rounded accent-primary"}),e.jsx(m,{size:15,className:f?"text-app-text/25":"text-app-text/65"}),e.jsx("span",{className:"flex-1 text-sm font-medium",children:i}),e.jsx("span",{className:q("text-xs font-bold px-2 py-0.5 rounded-full",f?"bg-gray-100 text-app-text/65":"bg-primary/10 text-primary"),children:o})]})}const Kt=Mt,Vt={stuck:{dotColor:"#EF9F27",dimAvatar:!1},active:{dotColor:"#639922",dimAvatar:!1},idle:{dotColor:"#888780",dimAvatar:!0},"no-login":{dotColor:"",dimAvatar:!1}},Yt={stuck:"activity.stuck",active:"activity.active",idle:"activity.idle","no-login":"activity.noLogin"},Gt=["order","name_az"],Ht={order:"sort.order",name_az:"sort.nameAz"},Jt=["all","aktiv","inaktiv"];function Re({member:s,activity:u,forceDim:f,size:m=40}){const{t:i}=se("adminTeam"),o=`${s.vorname} ${s.nachname}`,b=u?Vt[u]:null,y=f||(b?.dimAvatar??!1),[$,T]=c.useState(null),A=s.photo_url&&$!==s.photo_url?s.photo_url:null,C=q("rounded-full shrink-0 relative",y&&"opacity-55"),R=A?e.jsx(It,{src:A,sizes:"64px",fallbackWidth:480,alt:o,onFinalError:()=>T(A),className:"w-full h-full rounded-full object-cover"}):e.jsx("div",{className:q("w-full h-full rounded-full flex items-center justify-center","text-sm font-bold select-none",Et(o)),children:Rt(s.vorname,s.nachname)}),I=b&&b.dotColor&&u!=="no-login",k=e.jsxs("div",{className:C,style:{width:m,height:m},children:[R,I&&e.jsx("span",{"aria-hidden":"true",className:"absolute pointer-events-none",style:{bottom:-1,right:-1,width:11,height:11,borderRadius:9999,background:b.dotColor,border:"2px s
1olid #ffffff"}})]});return b&&u?e.jsx(ie,{content:i(Yt[u]),children:k}):k}function Wt({member:s,loginActivity:u,isSelected:f,selectionMode:m,onToggle:i,onEdit:o,openKey:b,setOpenKey:y,onDelete:$,onToggleStatus:T,onReassign:A,onChangeRole:C,onInvite:R,onPasswordReset:I,dndEnabled:k,stats:j}){const{t:d}=se(["adminTeam","adminCommon"]),{attributes:w,listeners:L,setNodeRef:B,transform:O,transition:p,isDragging:v}=xt({id:s.id,disabled:!k}),z={transform:ht.Transform.toString(O),transition:p,zIndex:v?30:void 0,position:v?"relative":void 0},E=s.status==="inaktiv",ae=j.properties>0||j.openLeads>0,U=s.status==="aktiv",F=u==="stuck",M=!!s.user_id,W=M&&!F,X=!M,Z=`menu-${s.id}`,Q=e.jsxs("span",{className:"block whitespace-nowrap",children:[j.properties>0&&e.jsx("span",{children:d("row.properties",{count:j.properties})}),j.properties>0&&j.openLeads>0&&e.jsx("span",{children:" · "}),j.openLeads>0&&e.jsx("span",{className:"text-amber-300 font-semibold",children:d("row.openLeads",{count:j.openLeads})})]});return e.jsx("div",{ref:B,style:z,children:e.jsxs(zt,{gap:"3",selected:!v&&f,dragging:v,onClick:_=>{_.target.closest("button, a, input, select, [data-drag-handle]")||(m?i(s.id):o(s.id))},children:[e.jsx("button",{"data-drag-handle":!0,...w,...L,className:q("shrink-0 p-1 rounded touch-none",k?"text-app-text/65 hover:text-app-text cursor-grab active:cursor-grabbing opacity-50 hover:opacity-100 focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent":"text-app-text/10 cursor-not-allowed"),tabIndex:k?0:-1,"aria-label":d(k?"row.dragToSort":"row.dragDisabled"),title:d(k?"row.dragToSort":"row.dragDisabled"),children:e.jsx(Ce,{size:16})}),m&&e.jsx("input",{type:"checkbox",checked:f,onChange:()=>i(s.id),onClick:_=>_.stopPropagation(),className:"w-4 h-4 rounded accent-primary shrink-0 cursor-pointer"}),e.jsx(Re,{member:s,activity:u,forceDim:E,size:38}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsxs("p",{className:"text-sm font-medium text-app-text truncate leading-snug",children:[s.vorname," ",s.nachname]}),ae&&e.jsx(ie,{content:Q,children:e.jsx("button",{type:"button",onClick:_=>_.stopPropagation(),className:"text-app-text/65 hover:text-app-text transition-colors p-0.5 -m-0.5",tabIndex:-1,"aria-label":d("row.workloadDetails"),children:e.jsx(tt,{size:14})})})]}),s.rolle&&e.jsx("p",{className:"text-xs text-app-text/65 truncate mt-0.5",children:s.rolle})]}),s.email&&e.jsx(ie,{content:s.email,side:"top",children:e.jsx("a",{href:`mailto:${s.email}`,onClick:_=>_.stopPropagation(),className:"shrink-0 p-1.5 rounded-md text-app-text/65 hover:text-app-text hover:bg-gray-100 transition-colors","aria-label":d("row.sendEmail"),children:e.jsx(me,{size:15})})}),s.phone&&e.jsx(ie,{content:s.phone,side:"top",children:e.jsx("a",{href:`tel:${s.phone.replace(/\s/g,"")}`,onClick:_=>_.stopPropagation(),className:"shrink-0 p-1.5 rounded-md text-app-text/65 hover:text-app-text hover:bg-gray-100 transition-colors","aria-label":d("row.call"),children:e.jsx(st,{size:15})})}),e.jsx("div",{className:"hidden sm:block shrink-0 text-right min-w-[28px]",children:e.jsxs("p",{className:"text-xs text-app-text/65 whitespace-nowrap",children:["#",s.sortOrder]})}),e.jsx("div",{className:"shrink-0 w-8",children:e.jsxs(Lt,{open:b===Z,onToggle:()=>y(b===Z?null:Z),align:"right",width:"w-56",revealOnHover:!0,label:d("list.moreActions"),children:[e.jsx(P,{icon:Te,onClick:()=>{o(s.id),y(null)},children:d("adminCommon:action.edit")}),e.jsx(P,{icon:U?at:nt,onClick:()=>{T(s),y(null)},children:d(U?"actions.toInactive":"actions.toActive")}),e.jsx(P,{icon:rt,onClick:()=>{C(s),y(null)},children:d("actions.changeRole")}),e.jsx(P,{icon:Ne,onClick:()=>{A(s),y(null)},children:d("actions.reassign")}),(F||X||W)&&e.jsx(Se,{}),F&&e.jsx(P,{icon:ue,variant:"warning",onClick:()=>{R(s),y(null)},children:d("actions.reinvite")}),X&&e.jsx(P,{icon:ue,onClick:()=>{R(s),y(null)},children:d("actions.invite")}),W&&e.jsx(P,{icon:ot,onClick:()=>{I(s),y(null)},children:d("actions.passwordReset")}),e.jsx(Se,{}),e.jsx(P,{icon:Ae,variant:"danger",onClick:()=>{$(s.id),y(null)},children:d("adminCommon:action.delete")})]})})]})})}function Xt({isFiltered:s,onReset:u,onAdd:f}){const{t:m}=se("adminTeam");return e.jsxs(_e.div,{initial:{opacity:0}
1,animate:{opacity:1},className:"flex flex-col items-center justify-center py-24 text-center",children:[e.jsx("div",{className:"w-16 h-16 rounded-2xl bg-gray-100 flex items-center justify-center mb-4",children:e.jsx(et,{size:28,className:"text-gray-300"})}),e.jsx("h3",{className:"text-base font-semibold text-app-text/70 mb-1",children:m(s?"empty.noMatch":"empty.noMembers")}),e.jsx("p",{className:"text-sm text-app-text/65 mb-6 max-w-xs",children:m(s?"empty.filteredHint":"empty.emptyHint")}),s?e.jsx("button",{onClick:u,className:"px-4 py-2 rounded-xl text-sm font-medium border border-gray-200 text-app-text/70 hover:bg-gray-50 hover:text-app-text transition-colors",children:m("empty.resetFilter")}):e.jsxs("button",{onClick:f,className:"flex items-center gap-2 px-4 py-2 rounded-xl text-sm font-semibold bg-primary text-primary-fg hover:bg-primary/90 transition-colors",children:[e.jsx(me,{size:15})," ",m("empty.addFirst")]})]})}function fs(){const{t:s}=se(["adminTeam","adminCommon","admin"]),u=ft(),f=bt(),m=it(),i=Ie(),{data:o=[],isLoading:b,isError:y,refetch:$,isRefetching:T}=yt(),{data:A=[]}=vt(),{data:C=[]}=jt(),{data:R=[]}=wt(),{data:I=[]}=kt(),k=c.useMemo(()=>{const t=new Map;for(const a of I){if(!a.owner_agent_id)continue;const n=t.get(a.owner_agent_id)??[];n.push(a),t.set(a.owner_agent_id,n)}return t},[I]),j=St(),d=Nt(),w=Ct(),L=c.useMemo(()=>o.map(t=>t.user_id).filter(t=>!!t),[o]),{data:B=[]}=_t(L),O=c.useMemo(()=>{const t=new Map;for(const a of B)t.set(a.user_id,a);return t},[B]),p=c.useMemo(()=>{const t=new Map,a=Date.now();for(const n of o){const r=n.user_id?O.get(n.user_id):void 0;t.set(n.id,Tt(r,a))}return t},[o,O]),v=c.useMemo(()=>o.filter(t=>p.get(t.id)==="stuck"),[o,p]),z=c.useMemo(()=>{const t=new Map;for(const a of o){const n=A.filter(r=>r.agent_id===a.id);t.set(a.id,{properties:n.length,propertiesSynced:n.filter(r=>r.justimmo_account_id!==null).length,openLeads:C.filter(r=>r.agent_id===a.id&&r.status==="new").length,leads:C.filter(r=>r.agent_id===a.id).length,projects:R.filter(r=>r.agent_id===a.id).length})}return t},[o,A,C,R]),[E,ae]=c.useState(!1),[U,F]=c.useState(null),[M,W]=c.useState(null),[X,Z]=c.useState(new Set);function Q(t,a){Z(n=>{const r=new Set(n);return a?r.add(t):r.delete(t),r})}const _=Ot({distance:5,touchDelay:!0}),Ee=Ut(),[xe,he]=c.useState(null),[S,K]=c.useState(new Set),[V,ge]=c.useState(!1);function Le(){ge(!1),K(new Set)}const[Y,le]=c.useState(""),[G,fe]=c.useState("all"),[ee,be]=c.useState("order"),[ze,ye]=c.useState(null);c.useEffect(()=>{const t=a=>{a.target.closest("[data-dropdown]")||ye(null)};return document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[]);const N=c.useMemo(()=>{const t=Y.trim().toLowerCase();let a=o.filter(n=>!(t&&![n.vorname,n.nachname,n.rolle].join(" ").toLowerCase().includes(t)||G!=="all"&&n.status!==G));return a=[...a].sort((n,r)=>ee==="order"?n.sortOrder-r.sortOrder:`${n.nachname} ${n.vorname}`.localeCompare(`${r.nachname} ${r.vorname}`,"de")),a},[o,Y,G,ee]),ce=!!Y.trim()||G!=="all"||ee!=="order",te=N.length>0&&N.every(t=>S.has(t.id)),ne=!te&&N.some(t=>S.has(t.id)),de=c.useRef(null);c.useEffect(()=>{de.current&&(de.current.indeterminate=ne)},[ne]);function ve(){K(t=>te?new Set:new Set([...t,...N.map(a=>a.id)]))}function Me(t){K(a=>{const n=new Set(a);return n.has(t)?n.delete(t):n.add(t),n})}async function De(t){const a=o.find(r=>r.id===t),n=k.get(t)??[];if(n.length>0){const r=n.map(g=>`„${g.label}"`).join(", "),x=n[0];l.error(s("toast.deleteBlockedSingle",{name:a?.vorname??s("toast.fallbackAgent"),labels:r}),{description:s("toast.deleteBlockedDesc"),action:{label:s("toast.openAccount"),onClick:()=>m(`/admin/settings/data/${x.id}/overview`)},duration:At});return}if(await u({title:s("adminCommon:confirm.deleteItem",{item:`${a?.vorname} ${a?.nachname}`}),confirmLabel:s("adminCommon:action.delete"),tone:"danger"}))try{await d.mutateAsync(t),K(r=>{const x=new Set(r);return x.delete(t),x}),l.success(s("toast.memberDeleted"))}catch(r){const x=r instanceof Error?r.message:s("toast.unknownError");l.error(s("toast.deleteFailed",{msg:x}))}}async function Pe(){const t=[],a=[];for(const h of S)if((k.get(h)??[]).length>0){t.push(h);const re=o.find(Ye=>Ye.id===h);a.push(`${re?.vorname??"?"} ${re?.nachname??""}`.trim())}const n=[...S].filter(h=>!t.includes(h));if(n.length===0){l.error(s("toast.bulkNoneDeletable",{count:S.size}),{duration:7e3});return}if(t.length>0&&l.warning(s("toast.bulkSkipped",{count:t.length,names:a.join(", ")}),{duration:7e3}),!await u({title:s("toast.bulkConfirmDelete",{count:n.length}),confirmLabel:s("adminCommon:action.delete"),tone:"danger"}))return;const r=n.length;let x=0,g=0;for(const h of n)try{await d.mutateAsync(h),x+=1}catch(D){g+=1,console.error(`[bulkDelete] Delete failed for id=${h}:`,D)}K(new Set),g===0?l.success(s("toast.bulkDeleted",{count:x})):x===0?l.error(s("toast.bulkDeleteAllFailed",{count:g})):l(s("toast.bulkDeletePartial",{ok:x,total:r,fail:g}),{style:{background:"#FEF3C7",color:"#92400E"}})}function je(){le(""),fe("all"),be("order")}async function $e(t){const a=z.get(t.id),n=t.status==="aktiv"?"inaktiv":"aktiv";n==="inaktiv"&&a&&(a.properties>0||a.leads>0)&&!await u({title:s("toast.toggleStatusConfirm",{name:t.name,properties:a.properties,leads:a.leads})})||j.mutate({id:t.id,patch:{status:n}},{onSuccess:()=>l.success(n==="aktiv"?s("toast.activated",{name:t.name}):s("toast.deactivated",{name:t.name})),onError:()=>l.error(s("toast.statusChangeFailed"))})}function Fe(t){W(t)}async function qe(t){if(!t.user_id){l.error(s("toast.roleNoUser"));return}const{data:a,error:n}=await J.from("profiles").select("role").eq("id",t.user_id).single();if(n||!a){l.error(s("toast.profileLoadFailed"));return}const r=a.role,x=r==="admin"?"agent":"admin",g=async re=>s(re==="admin"?"admin:header.roleAdmin":"admin:header.roleAgent");
1if(!await u({title:s("toast.roleChangeConfirm",{name:t.name,from:g(r),to:g(x)})}))return;const{error:D}=await J.rpc("set_user_role",{target_user_id:t.user_id,new_role:x});if(D){l.error(D.message);return}i.invalidateQueries({queryKey:["team"]}),l.success(s("toast.roleChanged",{name:t.name,role:g(x)}))}async function Be(t){if(!X.has(t.id)){if(!t.email){l.error(s("toast.inviteNoEmail"));return}Q(t.id,!0);try{const a=we.getState().session,n=await fetch("https://vvlvjidmvbflnkwxcaqm.supabase.co/functions/v1/invite-agent",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${a?.access_token??""}`},body:JSON.stringify({agent_id:t.id,email:t.email})}),r=await n.json();if(!n.ok)throw new Error(r.error||s("toast.inviteFailed"));r.reinvite?l.success(s("toast.reinviteSent",{email:t.email})):l.success(s("toast.inviteSent",{email:t.email})),i.invalidateQueries({queryKey:["team"]}),i.invalidateQueries({queryKey:ke})}catch(a){const n=a instanceof Error?a.message:s("toast.inviteFailed");l.error(n)}finally{Q(t.id,!1)}}}async function Oe(){if(E||v.length===0||!await u({title:s("toast.bulkReinviteConfirm",{count:v.length})}))return;ae(!0),F({done:0,total:v.length});const a=we.getState().session;let n=0,r=0;const x=[];for(let g=0;g<v.length;g++){const h=v[g];if(!h.email){r+=1;continue}try{(await fetch("https://vvlvjidmvbflnkwxcaqm.supabase.co/functions/v1/invite-agent",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${a?.access_token??""}`},body:JSON.stringify({agent_id:h.id,email:h.email})})).ok?n+=1:(r+=1,x.push(h.email))}catch{r+=1,x.push(h.email)}F({done:g+1,total:v.length}),g<v.length-1&&await new Promise(D=>setTimeout(D,250))}if(ae(!1),F(null),i.invalidateQueries({queryKey:["team"]}),i.invalidateQueries({queryKey:ke}),r===0)l.success(s("toast.bulkReinviteSent",{count:n}));else if(n===0)l.error(s("toast.bulkReinviteAllFailed",{count:r}));else{const g=x.length>0?` (${x.slice(0,3).join(", ")}${x.length>3?"…":""})`:"";l(s("toast.bulkReinvitePartial",{ok:n,fail:r,suffix:g}),{style:{background:"#FEF3C7",color:"#92400E"}})}}async function Ue(t){if(!X.has(t.id)){if(!t.email){l.error(s("toast.inviteNoEmail"));return}Q(t.id,!0);try{const{error:a}=await J.auth.resetPasswordForEmail(t.email,{redirectTo:`${window.location.origin}/auth/callback`});if(a){l.error(a.message);return}l.success(s("toast.passwordResetSent",{email:t.email}))}finally{Q(t.id,!1)}}}const Qe=ee==="order"&&G==="all"&&!Y.trim();function Ke(t){he(t.active.id)}function Ve(t){he(null);const{active:a,over:n}=t;if(!n||a.id===n.id)return;const r=N.findIndex(h=>h.id===a.id),x=N.findIndex(h=>h.id===n.id),g=mt(N,r,x);w.mutate(g.map(h=>h.id),{onSuccess:()=>l.success(s("toast.reorderSaved"))})}const H=xe?o.find(t=>t.id===xe):null;return e.jsxs("div",{className:"-mx-4 sm:-mx-6 lg:-mx-8 -my-6 lg:-my-8 bg-gray-100 flex flex-col min-h-[calc(100%+3rem)] lg:min-h-[calc(100%+4rem)]",children:[e.jsxs("div",{className:"sticky top-0 z-10 bg-white/80 backdrop-blur-sm border-b border-gray-200 shadow-[0_1px_3px_rgba(0,0,0,0.04),0_4px_16px_rgba(0,0,0,0.03)]",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-3 px-4 py-4 sm:flex-nowrap sm:px-6 sm:py-5",children:[e.jsxs("div",{className:"flex items-center gap-2.5 shrink-0",children:[e.jsx("h1",{className:"text-lg font-bold text-app-text tracking-tight",children:s("list.title")}),e.jsx(Ft,{count:o.length,loading:b,failed:y})]}),e.jsxs("div",{className:"relative order-last w-full sm:order-none sm:ml-2 sm:w-auto sm:min-w-[180px] sm:max-w-md sm:flex-1",children:[e.jsx(Xe,{size:14,className:"absolute left-3.5 top-1/2 -translate-y-1/2 text-app-text/65"}),e.jsx("input",{type:"text",placeholder:s("list.searchPlaceholder"),value:Y,onChange:t=>le(t.target.value),className:"w-full pl-9 pr-9 py-2.5 text-sm border border-gray-200/80 rounded-xl bg-white/60 text-app-text placeholder-app-text/25 focus:outline-none focus:ring-2 focus:ring-primary/15 focus:border-primary/30 focus:bg-white transition-all duration-200"}),Y&&e.jsx("button",{onClick:()=>le(""),className:"absolute right-3 top-1/2 -translate-y-1/2 text-app-text/65 hover:text-app-text transition-colors",children:e.jsx(oe,{size:13})})]}),e.jsx("div",{className:"hidden flex-1 sm:block"}),e.jsx("button",{type:"button",onClick:()=>V?Le():ge(!0),className:q("ml-auto flex items-center gap-1.5 sm:ml-0 px-3 py-1.5 rounded-lg text-sm font-medium transition-colors shrink-0",V?"bg-primary/10 text-primary border border-primary/20 hover:bg-primary/15":"text-app-text/70 border border-gray-200 hover:bg-gray-50 hover:text-app-text"),children:V?S.size>0?s("list.selectDone",{count:S.size}):s("adminCommon:action.cancel"):s("list.select")}),e.jsxs("button",{onClick:()=>m("/admin/team/new"),className:"shrink-0 flex items-center gap-2 px-5 py-2.5 bg-primary hover:bg-primary-800 text-primary-fg text-sm font-semibold rounded-xl shadow-[0_2px_8px_rgb(var(--color-primary) / 0.20)] hover:shadow-[0_4px_16px_rgb(var(--color-primary) / 0.25)] hover:-translate-y-
1px transition-all duration-200",children:[e.jsx(me,{size:14,strokeWidth:2.5}),e.jsx("span",{className:"hidden sm:inline",children:s("list.newMember")}),e.jsx("span",{className:"sm:hidden",children:s("list.newMemberShort")})]})]}),e.jsxs("div",{className:"flex items-center gap-3 px-4 pb-4 flex-wrap sm:px-6",children:[e.jsx(Pt,{label:s("adminCommon:label.status"),loading:b,failed:y,value:G,onChange:fe,items:Jt.map(t=>({value:t,label:t==="all"?s("tab.all"):f.teamStatus(t),count:t==="all"?o.length:o.filter(a=>a.status===t).length,dotClass:t==="all"?void 0:Kt[t].dot}))}),e.jsx($t,{value:ee,defaultValue:"order",onChange:be,options:Gt.map(t=>({value:t,label:s(Ht[t])}))}),ce&&e.jsxs("button",{onClick:je,className:"flex min-h-8 shrink-0 items-center gap-1 rounded-lg px-2 text-small font-medium text-app-text/70 transition-colors hover:bg-gray-100 hover:text-app-text focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent",children:[e.jsx(oe,{size:13,"aria-hidden":"true"})," ",s("list.reset")]}),ce&&N.length!==o.length&&e.jsx("span",{className:"ml-auto shrink-0 text-small tabular-nums text-app-text/65",children:s("adminCommon:pagination.ofTotal",{shown:N.length,total:o.length})})]})]}),e.jsxs("div",{className:"flex-1 px-6 py-5",children:[!b&&v.length>1&&e.jsxs("div",{className:"mb-4 flex flex-wrap items-center gap-3 px-4 py-3 rounded-xl border border-amber-200/60 bg-amber-50/60",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm text-amber-900",children:[e.jsx("span",{className:"inline-block w-2 h-2 rounded-full bg-amber-500"}),e.jsx("span",{className:"font-medium",children:s("bulk.notActivated",{count:v.length})}),e.jsx("span",{className:"text-xs text-amber-700/70",children:s("bulk.welcomeIncomplete")}
1)]}),e.jsx("div",{className:"flex-1"}),U&&e.jsx("span",{className:"text-xs text-amber-800/80",children:s("bulk.progress",{done:U.done,total:U.total})}),e.jsxs("button",{type:"button",onClick:Oe,disabled:E,className:"flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-semibold bg-amber-600 text-white hover:bg-amber-700 transition-colors disabled:opacity-60 disabled:cursor-wait",children:[E?e.jsx("div",{className:"w-3 h-3 border-2 border-white/40 border-t-white rounded-full animate-spin"}):e.jsx(ue,{size:13}),s("bulk.reinviteAll")]})]}),b?e.jsx(qt,{rows:4}):y?e.jsx(Bt,{onRetry:()=>{$()},retrying:T}):N.length===0?e.jsx(Xt,{isFiltered:ce,onReset:je,onAdd:()=>m("/admin/team/new")}):e.jsxs(lt,{accessibility:Ee,sensors:_,collisionDetection:ct,modifiers:[gt],onDragStart:Ke,onDragEnd:Ve,children:[e.jsx(dt,{items:N.map(t=>t.id),strategy:pt,children:e.jsxs("div",{className:"space-y-2",children:[V&&e.jsx("div",{className:"flex items-center gap-3 px-5 py-1.5",style:{paddingLeft:"calc(1.25rem + 28px)"},children:e.jsxs("button",{onClick:ve,className:q("flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs font-medium transition-all duration-150 border",te?"bg-primary/5 border-primary/20 text-primary":ne?"bg-amber-50 border-amber-200/60 text-amber-700":"bg-white border-gray-200/80 text-app-text/65 hover:border-gray-300 hover:text-app-text"),children:[e.jsx("input",{ref:de,type:"checkbox",checked:te,onChange:ve,className:"w-3.5 h-3.5 rounded accent-primary pointer-events-none",tabIndex:-1}),te?s("bulk.deselectAll"):ne?s("bulk.selectedCount",{count:S.size}):s("bulk.selectAll")]})}),e.jsx("div",{className:Dt,children:N.map(t=>e.jsx(Wt,{member:t,loginActivity:p.get(t.id)??"no-login",isSelected:S.has(t.id),selectionMode:V,onToggle:Me,onEdit:a=>m(`/admin/team/${a}/edit`),openKey:ze,setOpenKey:ye,onDelete:De,onToggleStatus:$e,onReassign:Fe,onChangeRole:qe,onInvite:Be,onPasswordReset:Ue,dndEnabled:Qe,stats:z.get(t.id)??{properties:0,openLeads:0}},t.id))})]})}),e.jsx(ut,{dropAnimation:{duration:200,easing:"ease"},children:H&&e.jsxs("div",{className:"flex items-center gap-4 px-5 py-3.5 bg-white border border-primary/20 rounded-xl shadow-2xl ring-2 ring-primary/10 scale-[1.02] cursor-grabbing",children:[e.jsx(Ce,{size:16,className:"shrink-0 text-app-text/65"}),e.jsx(Re,{member:H}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("p",{className:"text-sm font-bold text-app-text truncate leading-snug",children:[H.vorname," ",H.nachname]}),e.jsx("p",{className:"text-xs text-app-text/65 mt-0.5",children:H.rolle})]}),e.jsxs("div",{className:"text-xs font-medium text-app-text/65",children:["#",H.sortOrder]})]})})]})]}),e.jsx(Ze,{children:V&&S.size>0&&e.jsx(_e.div,{initial:{y:40,opacity:0},animate:{y:0,opacity:1},exit:{y:40,opacity:0},transition:{duration:.22,ease:[.4,0,.2,1]},className:"fixed bottom-6 left-0 lg:left-64 right-0 z-50 flex justify-center pointer-events-none",children:e.jsxs("div",{className:"pointer-events-auto flex flex-wrap items-center gap-3 bg-primary-800 border border-white/10 rounded-xl px-5 py-2.5 shadow-[0_8px_40px_rgba(0,0,0,0.25)]",children:[e.jsx("span",{className:"text-sm font-bold text-white whitespace-nowrap",children:s("bulk.member",{count:S.size})}),e.jsx("div",{className:"w-px h-5 bg-white/15 shrink-0"}),S.size===1&&e.jsxs("button",{onClick:()=>m(`/admin/team/${[...S][0]}/edit`),className:"flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium text-white/70 bg-white/10 hover:bg-white/15 border border-white/10 rounded-lg transition-all whitespace-nowrap",children:[e.jsx(Te,{size:14})," ",e.jsx("span",{className:"hidden sm:inline",children:s("adminCommon:action.edit")})]}),e.jsxs("button",{onClick:Pe,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium text-white bg-red-500/70 hover:bg-red-500 border border-red-400/50 rounded-lg transition-colors whitespace-nowrap shadow-[0_0_0_1px_rgb(239_68_68/0.2)]",children:[e.jsx(Ae,{size:14})," ",e.jsx("span",{className:"hidden sm:inline",children:s("adminCommon:action.delete")})]}),e.jsx("button",{onClick:()=>K(new Set),className:"flex size-8 shrink-0 items-center justify-center rounded-lg text-white/70 hover:bg-white/10 hover:text-white transition-colors","aria-label":s("bulk.dism
1issSelection"),title:s("bulk.dismissSelection"),children:e.jsx(oe,{size:14})})]})})}),M&&e.jsx(Qt,{open:!!M,onClose:()=>{W(null),i.invalidateQueries({queryKey:["team"]})},fromAgent:M,targets:o.filter(t=>t.id!==M.id&&t.status==="aktiv"),counts:(()=>{const t=z.get(M.id);return t?{properties:t.properties,propertiesSynced:t.propertiesSynced,leads:t.leads,projects:t.projects}:{properties:0,propertiesSynced:0,leads:0,projects:0}})()})]})}export{fs 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.