1import{R as f,a0 as x,a6 as v,b2 as y,a5 as h,c1 as N,L as e,ag as o,Z as j,a4 as c,O as p,T as b,U as C,W as _,ak as q,Y as M}from"./index_ec3ba43a.js";import{u as k,f as w,a as R}from"./summary_6b8aa128.js";import z from"./eraser_b33c9e58.js";import E from"./shield-x_3b209a9a.js";function F(s=!0){return f({queryKey:["can-manage-project-memberships"],queryFn:async()=>{var i;const{data:a}=await x.auth.getUser(),r=(i=a.user)==null?void 0:i.id;if(!r)return!1;const{data:l,error:m}=await x.rpc("can_manage_project_memberships",{_user_id:r});return m?!1:l===!0},enabled:s,staleTime:6e4})}function L(s){return f({queryKey:["membership-cleanup-report"],queryFn:R,enabled:s})}function Q(){const s=v();return y({mutationFn:a=>k(a),onSuccess:a=>{h.success("Quadros ajustados",{description:w(a)}),s.invalidateQueries({queryKey:["membership-cleanup-report"]}),s.invalidateQueries({queryKey:["projectMembers"]})},onError:a=>{h.error("Erro ao limpar vÃnculos",{description:N(a)})}})}function U({row:s,isCleaning:a,onClean:r}){return e.jsxs("div",{className:"flex items-center justify-between gap-3 rounded-md border bg-card p-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"truncate text-sm font-medium",children:s.full_name}),e.jsxs("div",{className:"mt-1 flex flex-wrap gap-1",children:[e.jsxs(o,{variant:"outline",className:"text-xs",children:[s.to_remove," quadro(s) a sair"]}),s.kept_open_tasks>0&&e.jsxs(o,{variant:"secondary",className:"text-xs",children:[s.kept_open_tasks," mantido(s) por tarefa aberta"]})]})]}),e.jsxs(j,{size:"sm",variant:"outline",disabled:a||s.to_remove===0,onClick:()=>r(s.user_id),children:[a?e.jsx(c,{className:"mr-2 h-4 w-4 animate-spin"}):e.jsx(z,{className:"mr-2 h-4 w-4"}),"Limpar"]})]})}function A(){const{data:s,isLoading:a}=F(),r=L(s===!0),l=Q(),[m,i]=p.useState(null),n=p.useMemo(()=>r.data??[],[r.data]),d=p.useMemo(()=>({people:n.length,toRemove:n.reduce((t,u)=>t+u.to_remove,0),kept:n.reduce((t,u)=>t+u.kept_open_tasks,0)}),[n]),g=t=>{i(t),l.mutate(t,{onSettled:()=>i(null)})};return a?e.jsx("div",{className:"flex items-center justify-center py-20",children:e.jsx(c,{className:"h-8 w-8 animate-spin text-primary"})}):s!==!0?e.jsxs("div",{className:"flex flex-col items-center justify-center gap-2 py-20 text-center",children:[e.jsx(E,{className:"h-8 w-8 text-muted-foreground"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Acesso restrito a superadmin e RH."})]}):e.jsx("div",{className:"mx-auto max-w-3xl space-y-4 p-4",children:e.jsxs(b,{children:[e.jsxs(C,{className:"pb-3",children:[e.jsxs(_,{className:"flex items-center gap-2 text-lg",children:[e.jsx(q,{className:"h-5 w-5"}),"Conferência de membros de quadros"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Pessoas ativas ainda vinculadas a quadros que não correspondem à organização + time delas. A limpeza preserva quadros com tarefa aberta no nome da pessoa e nunca remove lÃder/admin do quadro."})]}),e.jsxs(M,{className:"space-y-3",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs(o,{variant:"secondary",children:[d.people," pessoa(s)"]}),e.jsxs(o,{variant:"outline",children:[d.toRemove," quadro(s) a sair"]}),e.jsxs(o,{variant:"outline",children:[d.kept," mantido(s) por tarefa aberta"]}),e.jsxs(j,{size:"sm",variant:"ghost",className:"ml-auto",onClick:()=>r.refetch(),disabled:r.isFetching,children:[r.isFetching&&e.jsx(c,{className:"mr-2 h-4 w-4 animate-spin"}),"Atualizar"]})]}),r.isLoading?e.jsx("div",{className:"flex justify-center py-10",children:e.jsx(c,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):n.length===0?e.jsx("p",{className:"py-8 text-center text-sm text-muted-foreground",children:"Nenhum vÃnculo sobrando. Todos os quadros estão coerentes com organização + time."}):e.jsx("div",{className:"space-y-2",children:n.map(t=>e.jsx(U,{row:t,isCleaning:m===t.user_id,onClean:g},t.user_id))})]})]})})}export{A 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.