1import{ae as q,j as e,af as k,ag as F,ah as J,ai as K,r as m,X as M,aj as O,ak as Q,e as r}from"./index-BoR_bImk.js";import{C as f,a as v,b,c as C}from"./card-CFP7Yu-M.js";import{B as x}from"./button-2MF_qjFo.js";import{I as g}from"./input-Bv_fCSYM.js";import{T as W}from"./textarea-DKSR_u1z.js";import{B as _}from"./badge-ShWPG_2C.js";import{S as Y,a as Z,b as ee,c as se,d as ae}from"./select-BfidB_vD.js";import{T as z,a as L,b as u,c as l,d as U,e as i}from"./table-VgPngzVR.js";import{T as te,a as re,b as A,c as D}from"./tabs-DnI8OvjP.js";import{S as E}from"./shield-B0luq6ND.js";import{P}from"./plus-DDgiYSXR.js";import{L as B}from"./loader-circle-DVsQ30O-.js";import{S as ie}from"./save-BAms6Thk.js";import{P as ne}from"./pencil-BxFS16GE.js";import{T as le}from"./trash-2-C3OKVSTd.js";import{U as ce}from"./user-plus-DCnc7BPf.js";import{S as de}from"./send-BRDQyudA.js";import{C as me}from"./circle-check-D9zQZ0SA.js";import{C as oe}from"./circle-x-Deeq0q7A.js";import{C as xe}from"./clock-C8KmlGAh.js";import"./index-BdQq_4o_.js";import"./index-BxUxiTpX.js";import"./index-C2OV8koC.js";import"./index-BX9JufGG.js";import"./chevron-down-CCQPuFPU.js";import"./check-CKQulDsj.js";import"./index-DRCSKQ5h.js";function he(){const{data:c=[],isLoading:S}=k(),d=F(),o=J(),j=K(),[t,h]=m.useState(""),[p,N]=m.useState(""),[a,w]=m.useState(null),[y,T]=m.useState(""),[R,I]=m.useState(""),H=async()=>{if(t.trim())try{await d.mutateAsync({name:t.trim().toLowerCase().replace(/\s+/g,"_"),description:p.trim()||void 0}),h(""),N(""),r.success("Rôle créé")}catch(s){r.error(s.message)}},V=async s=>{try{await o.mutateAsync({id:s,name:y,description:R||void 0}),w(null),r.success("Rôle mis à jour")}catch(n){r.error(n.message)}},X=async(s,n)=>{if(n==="super_admin")return r.error("Impossible de supprimer le rôle super_admin");if(confirm(`Supprimer le rôle "${n}" ?`))try{await j.mutateAsync(s),r.success("Rôle supprimé")}catch(G){r.error(G.message)}},$=s=>{w(s.id),T(s.name),I(s.description||"")};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs(f,{className:"border-border/50",children:[e.jsx(v,{children:e.jsxs(b,{className:"text-lg flex items-center gap-2",children:[e.jsx(P,{className:"h-5 w-5"})," Nouveau rôle"]})}),e.jsxs(C,{className:"space-y-3",children:[e.jsx(g,{placeholder:"Nom du rôle (ex: comptable)",value:t,onChange:s=>h(s.target.value)}),e.jsx(W,{placeholder:"Description (optionnel)",value:p,onChange:s=>N(s.target.value),rows:2}),e.jsxs(x,{onClick:H,disabled:!t.trim()||d.isPending,children:[d.isPending?e.jsx(B,{className:"h-4 w-4 animate-spin mr-2"}):e.jsx(P,{className:"h-4 w-4 mr-2"}),"Créer le rôle"]})]})]}),e.jsxs(f,{className:"border-border/50",children:[e.jsx(v,{children:e.jsxs(b,{className:"text-lg",children:["Rôles existants (",c.length,")"]})}),e.jsx(C,{children:e.jsxs(z,{children:[e.jsx(L,{children:e.jsxs(u,{children:[e.jsx(l,{children:"Nom"}),e.jsx(l,{children:"Description"}),e.jsx(l,{className:"w-24",children:"Actions"})]})}),e.jsx(U,{children:c.map(s=>e.jsxs(u,{children:[e.jsx(i,{children:a===s.id?e.jsx(g,{value:y,onChange:n=>T(n.target.value),className:"h-8"}):e.jsx(_,{variant:s.name==="super_admin"?"destructive":"secondary",children:s.name})}),e.jsx(i,{children:a===s.id?e.jsx(g,{value:R,onChange:n=>I(n.target.value),className:"h-8"}):e.jsx("span",{className:"text-sm text-muted-foreground",children:s.description||"â"})}),e.jsx(i,{children:a===s.id?e.jsxs("div",{className:"flex gap-1",children:[e.jsx(x,{size:"icon",variant:"ghost",onClick:()=>V(s.id),children:e.jsx(ie,{className:"h-4 w-4"})}),e.jsx(x,{size:"icon",variant:"ghost",onClick:()=>w(null),children:e.jsx(M,{className:"h-4 w-4"})})]}):e.jsxs("div",{className:"flex gap-1",children:[e.jsx(x,{size:"icon",variant:"ghost",onClick:()=>$(s),children:e.jsx(ne,{className:"h-4 w-4"})}),e.jsx(x,{size:"icon",variant:"ghost",className:"text-destructive",onClick:()=>X(s.id,s.name),disabled:s.name==="super_admin",children:e.jsx(le,{className:"h-4 w-4"})})]})})]},s.id))})]})})]})]})}function ue(){const{data:c=[]}=O(),{data:S=[]}=k(),d=Q(),[o,j]=m.useState(""),[t,h]=m.useState(""),p=async()=>
1{if(!(!o.trim()||!t))try{await d.mutateAsync({email:o.trim(),role_name:t}),j(""),h(""),r.success("Invitation envoyée !")}catch(a){r.error(a.message)}},N=a=>a==="accepted"?e.jsx(me,{className:"h-4 w-4 text-primary"}):a==="expired"?e.jsx(oe,{className:"h-4 w-4 text-destructive"}):e.jsx(xe,{className:"h-4 w-4 text-muted-foreground"});return e.jsxs("div",{className:"space-y-6",children:[e.jsxs(f,{className:"border-border/50",children:[e.jsx(v,{children:e.jsxs(b,{className:"text-lg flex items-center gap-2",children:[e.jsx(ce,{className:"h-5 w-5"})," Inviter un utilisateur"]})}),e.jsxs(C,{className:"space-y-3",children:[e.jsx(g,{type:"email",placeholder:"Email de l'utilisateur",value:o,onChange:a=>j(a.target.value)}),e.jsxs(Y,{value:t,onValueChange:h,children:[e.jsx(Z,{children:e.jsx(ee,{placeholder:"Sélectionner un rôle"})}),e.jsx(se,{children:S.map(a=>e.jsxs(ae,{value:a.name,children:[a.name," ",a.description?`â ${a.description}`:""]},a.id))})]}),e.jsxs(x,{onClick:p,disabled:!o.trim()||!t||d.isPending,children:[d.isPending?e.jsx(B,{className:"h-4 w-4 animate-spin mr-2"}):e.jsx(de,{className:"h-4 w-4 mr-2"}),"Envoyer l'invitation"]})]})]}),e.jsxs(f,{className:"border-border/50",children:[e.jsx(v,{children:e.jsxs(b,{className:"text-lg",children:["Invitations envoyées (",c.length,")"]})}),e.jsx(C,{children:e.jsxs(z,{children:[e.jsx(L,{children:e.jsxs(u,{children:[e.jsx(l,{children:"Email"}),e.jsx(l,{children:"Rôle"}),e.jsx(l,{children:"Statut"}),e.jsx(l,{children:"Date"}),e.jsx(l,{children:"Expire"})]})}),e.jsxs(U,{children:[c.map(a=>e.jsxs(u,{children:[e.jsx(i,{className:"font-medium",children:a.email}),e.jsx(i,{children:e.jsx(_,{variant:"outline",children:a.role_name})}),e.jsx(i,{children:e.jsxs("div",{className:"flex items-center gap-1",children:[N(a.status),e.jsx("span",{className:"text-sm capitalize",children:a.status})]})}),e.jsx(i,{className:"text-sm text-muted-foreground",children:new Date(a.created_at).toLocaleDateString("fr-CA")}),e.jsx(i,{className:"text-sm text-muted-foreground",children:new Date(a.expires_at).toLocaleDateString("fr-CA")})]},a.id)),c.length===0&&e.jsx(u,{children:e.jsx(i,{colSpan:5,className:"text-center text-muted-foreground py-8",children:"Aucune invitation"})})]})]})})]})]})}function $e(){return q()?e.jsxs("div",{className:"p-6 md:p-8 max-w-5xl mx-auto",children:[e.jsxs("div",{className:"mb-8",children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center gap-3",children:[e.jsx(E,{className:"h-8 w-8 text-primary"}),"Gestion des rôles & invitations"]}),e.jsx("p",{className:"text-muted-foreground mt-1",children:"Créez des rôles et invitez des membres par email."})]}),e.jsxs(te,{defaultValue:"roles",className:"w-full",children:[e.jsxs(re,{className:"mb-6",children:[e.jsx(A,{value:"roles",children:"ð·ï¸ Rôles"}),e.jsx(A,{value:"invitations",children:"ð§ Invitations"})]}),e.jsx(D,{value:"roles",children:e.jsx(he,{})}),e.jsx(D,{value:"invitations",children:e.jsx(ue,{})})]})]}):e.jsxs("div",{className:"p-8 text-center",children:[e.jsx(E,{className:"h-16 w-16 mx-auto mb-4 text-muted-foreground"}),e.jsx("h2",{className:"text-xl font-semibold mb-2",children:"Accès restreint"}),e.jsx("p",{className:"text-muted-foreground",children:"Seuls les super administrateurs peuvent accéder à cette page."})]})}export{$e 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.