1 line
198 KiB
JavaScript
1 line
198 KiB
JavaScript
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7550],{7:(e,s,a)=>{"use strict";a.d(s,{y:()=>r});var t=a(4208);function r({title:e,description:s}){return(0,t.jsxs)("header",{className:"mb-6",children:[(0,t.jsx)("h2",{className:"text-lg font-medium text-foreground",children:e}),s?(0,t.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:s}):null]})}},3793:(e,s,a)=>{"use strict";a.d(s,{l:()=>L});var t=a(4208),r=a(58113),l=a(52084),n=a(91356),i=a(12551),o=a(13746),d=a(22581),c=a(46424),u=a(57070),m=a(59557),p=a(90324),x=a(80936),h=a(7651),g=a(80361),v=a(51765),f=a(1138);let b=[{type:"mailbox",value:"spam",label:"Spam"},{type:"mailbox",value:"trash",label:"Corbeille"},{type:"mailbox",value:"promotions",label:"Promotions"},{type:"mailbox",value:"social",label:"R\xe9seaux sociaux"},{type:"mailbox",value:"updates",label:"Notifications"}];function j(e,s){return e.toLowerCase().includes(s.toLowerCase())}let y=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function N({items:e,onChange:s,placeholder:a,allowedTypes:l,emptyHint:_}){let[k,C]=(0,n.useState)(""),[w,S]=(0,n.useState)(!1),[A,$]=(0,n.useState)(0),z=(0,n.useRef)(null),M=(0,n.useMemo)(()=>new Set(e.map(d.yD)),[e]),R=function(e,s,a){let{contacts:t}=(0,x.D)(),r=(0,f.zm)(e=>e.identities),{data:l=[]}=(0,p.HM)(),i=(0,n.useMemo)(()=>(0,g.vi)(r,l.map(e=>e.email)),[r,l]),{data:o=[]}=(0,c.b0)(),{data:y=[]}=(0,u.FL)("all"),{folders:N=[]}=(0,m.Q)();return(0,n.useMemo)(()=>{let l=e.trim(),n=a?.types,c=e=>!n||n.includes(e),u=[],m=new Set,p=e=>{m.has(e.id)||(m.add(e.id),u.push(e))};if(c("not_in_contacts")){let e={type:"not_in_contacts",value:"",label:"Toute personne pas dans les contacts"},a=(0,d.yD)(e);!s.has(a)&&(!l||j(e.label,l))&&p({...e,id:a,group:"R\xe8gles contacts"});let t=new Set;for(let e of r){let a=(0,v.US)(e.email,e.accountId);if(t.has(a))continue;t.add(a);let r={type:"not_in_contacts",value:a,label:`Personnes pas dans les contacts de ${e.name||e.email}`},n=(0,d.yD)(r);!s.has(n)&&(!l||j(r.label,l)||j(e.email,l))&&p({...r,id:n,group:"R\xe8gles contacts"})}}if(c("identity"))for(let e of i){let a={type:"identity",value:e.key,label:e.label},t=(0,d.yD)(a);!s.has(t)&&(!l||j(e.label,l)||j(e.key,l))&&p({...a,id:t,group:"Mails de destination"})}if(c("contact"))for(let e of t){let a=(0,h.t)(e);for(let{value:t}of e.emails){if(!t)continue;let e={type:"contact",value:t,label:a?`${a} <${t}>`:t},r=(0,d.yD)(e);if(!s.has(r)&&(!l||j(e.label,l)||j(t,l))&&(p({...e,id:r,group:"Contacts"}),u.length>40))break}}if(c("email")&&l.includes("@")){let e={type:"email",value:l,label:l},a=(0,d.yD)(e);s.has(a)||p({...e,id:a,group:"Adresses"})}if(c("label"))for(let e of o){let a={type:"label",value:e.name,label:`Libell\xe9 \xb7 ${e.name}`},t=(0,d.yD)(a);!s.has(t)&&(!l||j(e.name,l))&&p({...a,id:t,group:"Libell\xe9s"})}if(c("folder"))for(let e of[...y.map(e=>({value:e.id,label:`Dossier \xb7 ${e.name}`})),...N.map(e=>({value:e.name,label:`Dossier \xb7 ${e.name}`}))]){let a={type:"folder",value:e.value,label:e.label},t=(0,d.yD)(a);!s.has(t)&&(!l||j(e.label,l))&&p({...a,id:t,group:"Dossiers"})}if(c("mailbox"))for(let e of b){let a=(0,d.yD)(e);!s.has(a)&&(!l||j(e.label,l))&&p({...e,id:a,group:"Bo\xeetes mail"})}return u.slice(0,12)},[t,r,i,o,y,N,e,s,a?.types])}(k,M,{types:l}),E=a=>{M.has((0,d.yD)(a))||(s([...e,a]),C(""),$(0))},P=a=>{s(e.filter(e=>(0,d.yD)(e)!==a))},I=w&&(R.length>0||y.test(k.trim())),F=(0,n.useMemo)(()=>{let e=new Map;for(let s of R){let a=e.get(s.group)??[];a.push(s),e.set(s.group,a)}return[...e.entries()]},[R]),q=-1;return(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsxs)("div",{className:(0,r.cn)("min-h-9 rounded-md border border-input bg-background px-2 py-1.5","focus-within:ring-2 focus-within:ring-ring/40"),children:[e.length>0?(0,t.jsx)("div",{className:"mb-1 flex flex-wrap gap-1",children:e.map(e=>(0,t.jsxs)("span",{className:"inline-flex max-w-full items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-[11px] text-foreground",children:[(0,t.jsx)("span",{className:"truncate",children:e.label}),(0,t.jsx)("button",{type:"button",className:"shrink-0 rounded-full p-0.5 hover:bg-background/80","aria-label":`Retirer ${e.label}`,onClick:()=>P((0,d.yD)(e)),children:(0,t.jsx)(i.A,{className:"size-3"})})]},(0,d.yD)(e)))}):null,(0,t.jsx)(o.p,{value:k,placeholder:0===e.length?a:"Ajouter…",className:"h-7 border-0 bg-transparent px-0 text-xs shadow-none focus-visible:ring-0",onChange:e=>{C(e.target.value),$(0)},onFocus:()=>{z.current&&window.clearTimeout(z.current),S(!0)},onBlur:()=>{z.current=window.setTimeout(()=>S(!1),120)},onKeyDown:s=>{if("Backspace"===s.key&&!k&&e.length>0)return void P((0,d.yD)(e[e.length-1]));if("Enter"===s.key||","===s.key){if(s.preventDefault(),R[A])E(R[A]);else{let e;e=k.trim().replace(/[,;]$/,""),y.test(e)&&E({type:"email",value:e,label:e})}return}I&&0!==R.length&&("ArrowDown"===s.key?(s.preventDefault(),$(e=>(e+1)%R.length)):"ArrowUp"===s.key&&(s.preventDefault(),$(e=>(e-1+R.length)%R.length)))}})]}),I?(0,t.jsx)("ul",{className:"max-h-44 overflow-y-auto rounded-md border border-border bg-popover py-1 shadow-md",children:F.map(([e,s])=>(0,t.jsxs)("li",{children:[(0,t.jsx)("p",{className:"px-2 py-1 text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:e}),s.map(e=>{let s=q+=1;return(0,t.jsx)("button",{type:"button",className:(0,r.cn)("block w-full px-2 py-1.5 text-left text-xs hover:bg-muted",s===A&&"bg-muted"),onMouseDown:s=>{s.preventDefault(),E(e)},children:e.label},e.id)})]},e))}):null,_&&0===e.length?(0,t.jsx)("p",{className:"text-[11px] text-muted-foreground",children:_}):null]})}var _=a(11808),k=a(24177),C=a(19096),w=a(89342),S=a(93371),A=a(6931),$=a(6224),z=a(24818),M=a(4023),R=a(44410);let E=[{id:"light",label:"Clair"},{id:"dark",label:"Sombre"},{id:"system",label:"Syst\xe8me"}];function P({title:e,description:s,action:a,children:l,variant:n="panel"}){return(0,t.jsxs)("section",{className:(0,r.cn)("space-y-2 border-b border-border px-4 py-3","page"===n&&R.tv),children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("h2",{className:"text-sm font-medium text-foreground",children:e}),s?(0,t.jsx)("p",{className:"mt-0.5 text-[11px] leading-snug text-muted-foreground",children:s}):null]}),a]}),l]})}function I({label:e,children:s}){return(0,t.jsxs)("div",{className:"grid grid-cols-[minmax(0,0.72fr)_minmax(9.75rem,1.18fr)] items-center gap-2 py-1",children:[(0,t.jsx)(C.J,{className:"min-w-0 text-xs font-normal text-muted-foreground",children:e}),(0,t.jsx)("div",{className:"min-w-0",children:s})]})}function F(e){let s=Math.floor(e/60);return`${String(s).padStart(2,"0")}:${String(e%60).padStart(2,"0")}`}function q(e){let[s,a]=e.split(":").map(Number);return Number.isFinite(s)&&Number.isFinite(a)?60*s+a:0}function L({variant:e="panel",onOpenThemeDialog:s}){let a,i=(0,A.S)(),c=(0,$.g)(),{themeMode:u,setThemeMode:m}=(0,z.U)(),x=(0,v._R)(e=>e.defaultVideoProvider),h=(0,v._R)(e=>e.setDefaultVideoProvider),b=(0,v._R)(e=>e.videoProviderApiKeys),j=(0,v._R)(e=>e.setVideoProviderApiKey),y=(0,v._R)(e=>e.defaultInvitationIdentityKey),R=(0,v._R)(e=>e.setDefaultInvitationIdentityKey),T=(0,v._R)(e=>e.autoImportInvitationSources),D=(0,v._R)(e=>e.setAutoImportInvitationSources),U=(0,v._R)(e=>e.invitationImportExclusions),J=(0,v._R)(e=>e.setInvitationImportExclusions),V=(0,v._R)(e=>e.weekStart),K=(0,v._R)(e=>e.setWeekStart),B=(0,v._R)(e=>e.defaultQuickDurationMinutes),O=(0,v._R)(e=>e.setDefaultQuickDurationMinutes),W=(0,v._R)(e=>e.visibleHoursStart),Q=(0,v._R)(e=>e.visibleHoursEnd),H=(0,v._R)(e=>e.setVisibleHoursStart),X=(0,v._R)(e=>e.setVisibleHoursEnd),G=(0,v._R)(e=>e.timeFormat),Z=(0,v._R)(e=>e.setTimeFormat),Y=(0,v._R)(e=>e.dragSnapMinutes),ee=(0,v._R)(e=>e.setDragSnapMinutes),es=(0,v._R)(e=>e.buttonSnapMinutes),ea=(0,v._R)(e=>e.setButtonSnapMinutes),et=(a=(0,f.zm)(e=>e.identities),(0,n.useMemo)(()=>{let e=new Set,s=[];for(let t of a){let a=(0,v.US)(t.email,t.accountId);e.has(a)||(e.add(a),s.push({key:a,label:`${t.name} <${t.email}>`}))}return s},[a])),er=function(){let e=(0,f.zm)(e=>e.identities),{data:s=[]}=(0,p.HM)();return(0,n.useMemo)(()=>(0,g.vi)(e,s.map(e=>e.email)),[e,s])}(),el=i.orgEnforcesTheme?i.themeMode:u,en=i.orgEnforcesVideoProvider?i.defaultVideoProvider:x,ei=!i.orgEnforcesVideoProvider&&"ultimeet"!==en&&"none"!==en,eo=(0,g.R6)(T,er),ed=(0,g.BP)(U,er),ec="page"===e,eu=(0,t.jsxs)(t.Fragment,{children:[ec||c?null:(0,t.jsxs)(P,{title:"Th\xe8me",variant:e,action:s?(0,t.jsx)("button",{type:"button",className:"shrink-0 text-xs text-[#1a73e8] hover:underline disabled:opacity-50",disabled:i.orgEnforcesTheme,onClick:s,children:"Arri\xe8re-plan"}):null,children:[i.orgEnforcesTheme?(0,t.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Th\xe8me impos\xe9 par votre organisation."}):null,(0,t.jsx)("div",{className:"grid grid-cols-3 gap-1.5",children:E.map(e=>(0,t.jsxs)("button",{type:"button",disabled:i.orgEnforcesTheme,onClick:()=>m(e.id),className:(0,r.cn)("rounded-lg border-2 p-1 text-left transition-colors disabled:cursor-not-allowed disabled:opacity-50",el===e.id?"border-primary bg-accent/60":"border-border hover:border-muted-foreground/50 hover:bg-accent/40"),children:[(0,t.jsx)(k.NB,{mode:e.id,className:"h-9"}),(0,t.jsx)("span",{className:"mt-0.5 block text-center text-[11px] text-foreground",children:e.label})]},e.id))})]}),(0,t.jsxs)(P,{title:"Affichage",variant:e,children:[(0,t.jsx)(I,{label:"Premier jour",children:(0,t.jsxs)(w.l6,{value:String(V),onValueChange:e=>K("auto"===e?"auto":Number(e)),children:[(0,t.jsx)(w.bq,{className:"h-8 w-full text-xs",children:(0,t.jsx)(w.yv,{children:(0,S.GY)(V)})}),(0,t.jsx)(w.gC,{children:d.oV.map(e=>(0,t.jsx)(w.eb,{value:String(e.value),children:e.label},String(e.value)))})]})}),(0,t.jsx)(I,{label:"Format horaire",children:(0,t.jsxs)(w.l6,{value:G,onValueChange:e=>Z(e),children:[(0,t.jsx)(w.bq,{className:"h-8 w-full text-xs",children:(0,t.jsx)(w.yv,{children:(0,S.BP)(G)})}),(0,t.jsxs)(w.gC,{children:[(0,t.jsx)(w.eb,{value:"24h",children:"24 h"}),(0,t.jsx)(w.eb,{value:"12h",children:"AM / PM"})]})]})}),(0,t.jsx)(I,{label:"Heures visibles",children:(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-1.5",children:[(0,t.jsx)(o.p,{type:"time",className:"h-8 text-xs [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none",value:F(W),onChange:e=>H(q(e.target.value))}),(0,t.jsx)(o.p,{type:"time",className:"h-8 text-xs [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none",value:F(Q),onChange:e=>X(q(e.target.value))})]})})]}),(0,t.jsxs)(P,{title:"Cr\xe9ation rapide",variant:e,children:[(0,t.jsx)(I,{label:"Dur\xe9e par d\xe9faut",children:(0,t.jsxs)(w.l6,{value:String(B),onValueChange:e=>O(Number(e)),children:[(0,t.jsx)(w.bq,{className:"h-8 w-full text-xs",children:(0,t.jsx)(w.yv,{children:(0,S.nZ)(B)})}),(0,t.jsx)(w.gC,{children:d.DO.map(e=>(0,t.jsx)(w.eb,{value:String(e.minutes),children:e.label},e.minutes))})]})}),(0,t.jsx)(I,{label:"Arrondi glisser",children:(0,t.jsxs)(w.l6,{value:String(Y),onValueChange:e=>ee(Number(e)),children:[(0,t.jsx)(w.bq,{className:"h-8 w-full text-xs",children:(0,t.jsx)(w.yv,{children:(0,S.U)(Y)})}),(0,t.jsx)(w.gC,{children:d.mF.map(e=>(0,t.jsx)(w.eb,{value:String(e),children:(0,S.U)(e)},e))})]})}),(0,t.jsx)(I,{label:"Arrondi boutons +/-",children:(0,t.jsxs)(w.l6,{value:String(es),onValueChange:e=>ea(Number(e)),children:[(0,t.jsx)(w.bq,{className:"h-8 w-full text-xs",children:(0,t.jsx)(w.yv,{children:(0,S.U)(es)})}),(0,t.jsx)(w.gC,{children:d.mF.map(e=>(0,t.jsx)(w.eb,{value:String(e),children:(0,S.U)(e)},e))})]})})]}),(0,t.jsxs)(P,{title:"Visioconf\xe9rence",variant:e,description:i.orgEnforcesVideoProvider?"Fournisseur impos\xe9 par votre organisation.":void 0,children:[(0,t.jsx)(I,{label:"Fournisseur",children:(0,t.jsxs)(w.l6,{value:en,disabled:i.orgEnforcesVideoProvider,onValueChange:e=>h(e),children:[(0,t.jsx)(w.bq,{className:"h-8 w-full text-xs",children:(0,t.jsx)(w.yv,{children:(0,t.jsx)(_.h,{provider:en})})}),(0,t.jsx)(w.gC,{children:d.uI.map(e=>(0,t.jsx)(w.eb,{value:e,children:(0,t.jsx)(_.h,{provider:e})},e))})]})}),ei?(0,t.jsxs)("div",{className:"pt-1",children:[(0,t.jsxs)(C.J,{htmlFor:"agenda-video-api-key",className:"text-[11px] text-muted-foreground",children:["Cl\xe9 API ",(0,S.PF)(en)]}),(0,t.jsx)(o.p,{id:"agenda-video-api-key",type:"password",autoComplete:"off",className:"mt-1 h-8 text-xs",placeholder:"Optionnel si configur\xe9e par l'organisation",value:b[en]??"",onChange:e=>j(en,e.target.value)})]}):null]}),(0,t.jsxs)(P,{title:"Invitations par mail",variant:e,description:"Import automatique des fichiers .ics re\xe7us et envoi des r\xe9ponses.",children:[(0,t.jsx)(I,{label:"Envoi par d\xe9faut",children:(0,t.jsxs)(w.l6,{value:y??"auto",onValueChange:e=>R("auto"===e?null:e),children:[(0,t.jsx)(w.bq,{className:"h-8 w-full text-xs",children:(0,t.jsx)(w.yv,{placeholder:"Identit\xe9 par d\xe9faut"})}),(0,t.jsxs)(w.gC,{children:[(0,t.jsx)(w.eb,{value:"auto",children:"Identit\xe9 mail par d\xe9faut"}),et.map(e=>(0,t.jsx)(w.eb,{value:e.key,children:e.label},e.key))]})]})}),(0,t.jsxs)("div",{className:"space-y-1 pt-1",children:[(0,t.jsx)(C.J,{className:"text-xs font-normal text-muted-foreground",children:"Import automatique depuis"}),(0,t.jsx)(N,{items:eo,allowedTypes:["identity","contact"],placeholder:"Mails de destination ou contacts…",emptyHint:"Bo\xeetes qui re\xe7oivent les .ics, ou exp\xe9diteurs \xe0 importer.",onChange:e=>D((0,g.R6)(e,er))})]}),(0,t.jsxs)("div",{className:"space-y-1 pt-2",children:[(0,t.jsx)(C.J,{className:"text-xs font-normal text-muted-foreground",children:"Ne pas importer automatiquement"}),(0,t.jsx)(N,{items:ed,placeholder:"Contact, adresse, dossier, libell\xe9…",emptyHint:"Excluez exp\xe9diteurs, dossiers ou r\xe8gles contacts.",onChange:e=>J((0,g.BP)(e,er))})]})]}),(0,t.jsx)(l.Mp,{variant:e})]});return ec?(0,t.jsx)(M.I,{columns:2,children:eu}):eu}},4559:(e,s,a)=>{"use strict";a.d(s,{$B:()=>k,Dk:()=>I,EE:()=>w,Es:()=>h,FZ:()=>o,G6:()=>i,HQ:()=>x,Kh:()=>u,MB:()=>S,My:()=>N,P2:()=>z,U4:()=>d,Ve:()=>g,_K:()=>b,bl:()=>R,cE:()=>q,dc:()=>j,eS:()=>M,h2:()=>m,hF:()=>f,hs:()=>F,iF:()=>L,iX:()=>E,jS:()=>v,n5:()=>A,oP:()=>C,u:()=>P,ug:()=>p,w2:()=>y,x6:()=>_,xV:()=>c,yJ:()=>$});var t=a(98306),r=a(39927),l=a(17745),n=a(94927);function i(){return(0,t.I)({queryKey:["admin","mail","domains"],queryFn:()=>n.uE.get("/admin/mail/domains")})}function o(){let e=(0,r.jE)();return(0,l.n)({mutationFn:e=>n.uE.post("/admin/mail/domains",e),onSuccess:()=>{e.invalidateQueries({queryKey:["admin","mail","domains"]})}})}function d(e){let s=(0,r.jE)();return(0,l.n)({mutationFn:()=>n.uE.post(`/admin/mail/domains/${e}/verify-txt`),onSuccess:()=>{s.invalidateQueries({queryKey:["admin","mail","domains"]})}})}function c(e){let s=(0,r.jE)();return(0,l.n)({mutationFn:()=>n.uE.post(`/admin/mail/domains/${e}/verify-mx`),onSuccess:()=>{s.invalidateQueries({queryKey:["admin","mail","domains"]})}})}function u(){return(0,t.I)({queryKey:["admin","migration","projects"],queryFn:()=>n.uE.get("/admin/migration/projects")})}function m(){let e=(0,r.jE)();return(0,l.n)({mutationFn:e=>n.uE.post("/admin/migration/projects",e),onSuccess:()=>{e.invalidateQueries({queryKey:["admin","migration","projects"]})}})}function p(){let e=(0,r.jE)();return(0,l.n)({mutationFn:e=>n.uE.post(`/admin/migration/projects/${e}/activate`),onSuccess:()=>{e.invalidateQueries({queryKey:["admin","migration","projects"]})}})}function x(){let e=(0,r.jE)();return(0,l.n)({mutationFn:e=>n.uE.post(`/admin/migration/projects/${e}/cutover`),onSuccess:()=>{e.invalidateQueries({queryKey:["admin","migration","projects"]})}})}function h(e){return(0,t.I)({queryKey:["admin","migration","projects",e,"cutover-dns"],enabled:!!e,queryFn:()=>n.uE.get(`/admin/migration/projects/${e}/cutover-dns`)})}function g(e){return(0,l.n)({mutationFn:s=>n.uE.post(`/admin/migration/projects/${e}/invites`,s)})}function v(e){let s=(0,r.jE)();return(0,l.n)({mutationFn:s=>n.uE.post(`/admin/migration/projects/${e}/invites/import`,{emails:s}),onSuccess:()=>{s.invalidateQueries({queryKey:["admin","migration","projects"]})},meta:{requiresProjectId:e}})}function f(e,s=!0){return(0,t.I)({queryKey:["admin","migration","projects",e,"roster"],enabled:!!e&&s,queryFn:()=>n.uE.get(`/admin/migration/projects/${e}/roster`)})}function b(e){let s=(0,r.jE)();return(0,l.n)({mutationFn:s=>n.uE.post(`/admin/migration/projects/${e}/roster`,{csv:s}),onSuccess:()=>{s.invalidateQueries({queryKey:["admin","migration","projects",e,"roster"]})},meta:{requiresProjectId:e}})}function j(e,s=!0){return(0,t.I)({queryKey:["admin","migration","projects",e,"jobs"],enabled:!!e&&s,queryFn:()=>n.uE.get(`/admin/migration/projects/${e}/jobs`),refetchInterval:1e4})}function y(e,s){return(0,t.I)({queryKey:["admin","migration","projects",e,"jobs",s,"audit","summary"],enabled:!!(e&&s),queryFn:()=>n.uE.get(`/admin/migration/projects/${e}/jobs/${s}/audit/summary`),refetchInterval:1e4})}function N(e,s,a="failed"){let r="all"===a?"":a;return(0,t.I)({queryKey:["admin","migration","projects",e,"jobs",s,"audit",a],enabled:!!(e&&s),queryFn:()=>{let a=new URLSearchParams({page_size:"50"});return r&&a.set("status",r),n.uE.get(`/admin/migration/projects/${e}/jobs/${s}/audit?${a.toString()}`)},refetchInterval:1e4})}async function _(e,s,a){let t=await n.uE.getBlob(`/admin/migration/projects/${e}/jobs/${s}/audit/export?format=${a}`),r=URL.createObjectURL(t),l=document.createElement("a");l.href=r,l.download=`migration-job-audit-${s.slice(0,8)}.${"csv"===a?"csv":"ndjson"}`,l.click(),URL.revokeObjectURL(r)}function k(e){let s=(0,r.jE)();return(0,l.n)({mutationFn:s=>n.uE.patch(`/admin/migration/projects/${e}/shared-drive-mode`,{shared_drive_mode:s}),onSuccess:()=>{s.invalidateQueries({queryKey:["admin","migration","projects"]}),s.invalidateQueries({queryKey:["admin","migration","projects",e,"shared-drives"]})}})}function C(e,s=!0){return(0,t.I)({queryKey:["admin","migration","projects",e,"shared-drives"],enabled:!!e&&s,queryFn:()=>n.uE.get(`/admin/migration/projects/${e}/shared-drives`),refetchInterval:15e3})}function w(e){let s=(0,r.jE)();return(0,l.n)({mutationFn:s=>n.uE.post(`/admin/migration/projects/${e}/shared-drives/${encodeURIComponent(s)}/approve`),onSuccess:()=>{s.invalidateQueries({queryKey:["admin","migration","projects",e,"shared-drives"]})}})}function S(e){let s=(0,r.jE)();return(0,l.n)({mutationFn:s=>n.uE.post(`/admin/migration/projects/${e}/shared-drives/${encodeURIComponent(s)}/reject`),onSuccess:()=>{s.invalidateQueries({queryKey:["admin","migration","projects",e,"shared-drives"]})}})}function A(e){let s=(0,r.jE)();return(0,l.n)({mutationFn:s=>n.uE.post(`/admin/migration/projects/${e}/jobs/${s}/retry`),onSuccess:()=>{s.invalidateQueries({queryKey:["admin","migration","projects",e,"jobs"]})}})}function $(e){let s=(0,r.jE)();return(0,l.n)({mutationFn:s=>n.uE.post(`/admin/migration/projects/${e}/jobs/${s}/reset-cursor`),onSuccess:()=>{s.invalidateQueries({queryKey:["admin","migration","projects",e,"jobs"]})}})}function z(e){let s=(0,r.jE)();return(0,l.n)({mutationFn:()=>n.uE.post(`/admin/migration/projects/${e}/jobs/retry-failed`),onSuccess:()=>{s.invalidateQueries({queryKey:["admin","migration","projects",e,"jobs"]})}})}function M(){return(0,l.n)({mutationFn:e=>{let s=new URLSearchParams;e.tenant?.trim()&&s.set("tenant",e.tenant.trim()),e.projectId&&s.set("project_id",e.projectId);let a=s.toString();return n.uE.get(`/admin/migration/microsoft/admin-consent-url${a?`?${a}`:""}`)}})}function R(e){return(0,t.I)({queryKey:["migration","invite",e],enabled:!!e,queryFn:()=>n.uE.get(`/migration/invite?token=${encodeURIComponent(e??"")}`)})}function E(){return(0,t.I)({queryKey:["migration","status"],queryFn:()=>n.uE.get("/migration/status")})}function P(){let e=(0,r.jE)();return(0,l.n)({mutationFn:e=>n.uE.post("/migration/claim",e),onSuccess:()=>{e.invalidateQueries({queryKey:["migration"]})}})}function I(){return(0,l.n)({mutationFn:e=>n.uE.post("/migration/oauth/start",e)})}function F(e,s){return(0,t.I)({queryKey:["mail","address-check",e,s],enabled:e.length>0&&s.length>0,queryFn:()=>n.uE.get(`/mail/addresses/check?local=${encodeURIComponent(e)}&domain=${encodeURIComponent(s)}`)})}function q(){return(0,t.I)({queryKey:["mail","hosted","status"],queryFn:()=>n.uE.get("/mail/hosted/status")})}function L(){let e=(0,r.jE)();return(0,l.n)({mutationFn:e=>n.uE.post("/mail/hosted/setup",e),onSuccess:()=>{e.invalidateQueries({queryKey:["mail","hosted","status"]}),e.invalidateQueries({queryKey:["accounts"]}),e.invalidateQueries({queryKey:["identities"]})}})}},6078:(e,s,a)=>{"use strict";a.d(s,{v:()=>n});var t=a(4208),r=a(61554),l=a(18747);function n({isFetching:e,isError:s,onRetry:a}){let{ready:r,authenticated:o}=(0,l.v)();return!r||e?null:o?s?(0,t.jsx)(i,{onRetry:a}):null:(0,t.jsx)("p",{className:"mb-4 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-900 dark:border-amber-900/40 dark:bg-amber-950/30 dark:text-amber-200",children:"Connectez-vous pour synchroniser avec le serveur. Les r\xe9glages locaux restent disponibles hors ligne."})}function i({onRetry:e}){return(0,t.jsxs)("div",{className:"mb-4 flex flex-wrap items-center gap-2 rounded-lg border border-destructive/30 bg-destructive/5 px-3 py-2 text-xs text-destructive",children:[(0,t.jsx)("span",{children:"\xc9chec de synchronisation avec le serveur."}),e?(0,t.jsx)(r.$,{type:"button",variant:"outline",size:"sm",className:"h-7",onClick:e,children:"R\xe9essayer"}):null]})}},9483:(e,s,a)=>{"use strict";a.d(s,{p:()=>n});var t=a(46298),r=a(22029),l=a(91025);let n=(0,t.v)()((0,r.Zr)(e=>({themeMode:"system",setThemeMode:s=>e({themeMode:s})}),{name:"ultimail-demo-theme",storage:l.$,partialize:e=>({themeMode:e.themeMode})}))},11808:(e,s,a)=>{"use strict";a.d(s,{h:()=>i});var t=a(4208),r=a(30206),l=a(93371),n=a(58113);function i({provider:e,className:s,iconClassName:a}){return(0,t.jsxs)("span",{className:(0,n.cn)("inline-flex min-w-0 items-center gap-2",s),children:[(0,t.jsx)(r.e,{provider:e,className:(0,n.cn)("size-4 shrink-0",a)}),(0,t.jsx)("span",{className:"truncate",children:(0,l.PF)(e)})]})}},12154:(e,s,a)=>{"use strict";a.d(s,{d:()=>n});var t=a(4208);a(91356);var r=a(56235),l=a(58113);function n({className:e,...s}){return(0,t.jsx)(r.bL,{"data-slot":"switch",className:(0,l.cn)("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...s,children:(0,t.jsx)(r.zi,{"data-slot":"switch-thumb",className:"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"})})}},24374:(e,s,a)=>{"use strict";a.d(s,{Wo:()=>l,bA:()=>r,dv:()=>n,ge:()=>o,kF:()=>i,ot:()=>d});var t=a(47391);let r=[{type:"brave",label:"Brave Search",description:"API officielle Brave (X-Subscription-Token).",icon:(0,t.r)("brave"),docsUrl:"https://api.search.brave.com",requiresApiKey:!0,requiresBaseURL:!1,supportsCustomMapping:!1},{type:"bing",label:"Bing Web Search",description:"Azure Cognitive Services Bing Search v7.",icon:(0,t.r)("bing"),docsUrl:"https://learn.microsoft.com/azure/cognitive-services/bing-web-search/",requiresApiKey:!0,requiresBaseURL:!1,supportsCustomMapping:!1},{type:"duckduckgo",label:"DuckDuckGo",description:"Scraping HTML l\xe9ger, sans cl\xe9 API (best-effort).",icon:(0,t.r)("duckduckgo"),requiresApiKey:!1,requiresBaseURL:!1,supportsCustomMapping:!1},{type:"searxng",label:"SearXNG",description:"Instance SearXNG auto-h\xe9berg\xe9e (format JSON).",icon:(0,t.r)("searxng"),docsUrl:"https://docs.searxng.org/",requiresApiKey:!1,requiresBaseURL:!0,supportsCustomMapping:!1},{type:"custom",label:"API JSON personnalis\xe9e",description:"Endpoint GET JSON avec mapping des champs r\xe9sultats.",icon:(0,t.r)("custom"),requiresApiKey:!1,requiresBaseURL:!0,supportsCustomMapping:!0}];function l(e){return r.find(s=>s.type===e)??r[0]}function n(e="brave"){let s=l(e);return{id:crypto.randomUUID(),name:s.label,type:e,api_key:"",base_url:function(e){switch(e){case"bing":return"https://api.bing.microsoft.com/v7.0/search";case"searxng":return"https://searx.example.org";case"custom":return"https://api.example.com/search";default:return""}}(e),query_param:"q",auth_header:"bing"===e?"Ocp-Apim-Subscription-Key":"",results_path:"custom"===e?"results":"",title_field:"custom"===e?"title":"",url_field:"custom"===e?"url":"",description_field:"custom"===e?"description":""}}function i(e){let s=e.providers??[],a=e.default_provider_id??"";return a||1!==s.length||(a=s[0]?.id??""),a&&!s.some(e=>e.id===a)&&(a=s[0]?.id??""),{...e,default_provider_id:a,providers:s}}function o(e){let s=e?.providers?.length?e.providers.map(e=>({...n(e.type??"brave"),...e,type:e.type??"brave"})):[];return i({default_provider_id:e?.default_provider_id||s[0]?.id||"",providers:s})}function d(e,s){switch(e.type){case"brave":case"bing":return!!(e.api_key?.trim()||s?.apiKeyConfigured);case"duckduckgo":return!0;case"searxng":return!!e.base_url?.trim();case"custom":return!!(e.base_url?.trim()&&e.results_path?.trim()&&e.title_field?.trim()&&e.url_field?.trim());default:return!1}}},31390:(e,s,a)=>{"use strict";a.d(s,{Ke:()=>i,Nt:()=>l,R6:()=>n});var t=a(4208),r=a(49600);function l({...e}){return(0,t.jsx)(r.bL,{"data-slot":"collapsible",...e})}function n({...e}){return(0,t.jsx)(r.R6,{"data-slot":"collapsible-trigger",...e})}function i({...e}){return(0,t.jsx)(r.Ke,{"data-slot":"collapsible-content",...e})}},36042:(e,s,a)=>{"use strict";function t(e){return e.startsWith("/")?e:`/${e}`}a.d(s,{w:()=>t})},36189:(e,s,a)=>{"use strict";a.d(s,{Og:()=>r,RH:()=>i,SR:()=>o,XR:()=>l,d_:()=>d,gh:()=>n});var t=a(47391);let r=[{type:"openai",label:"OpenAI",description:"API officielle OpenAI (GPT, o-series).",icon:(0,t.r)("openai"),docsUrl:"https://platform.openai.com/docs/api-reference",defaultBaseURL:"https://api.openai.com/v1",defaultModel:"gpt-4o-mini"},{type:"anthropic",label:"Anthropic",description:"Claude via la couche OpenAI-compatible d'Anthropic.",icon:(0,t.r)("anthropic"),docsUrl:"https://platform.claude.com/docs/en/api/openai-sdk",defaultBaseURL:"https://api.anthropic.com/v1",defaultModel:"claude-sonnet-4-6"},{type:"mistral",label:"Mistral AI",description:"API Mistral (OpenAI-compatible).",icon:(0,t.r)("mistral"),docsUrl:"https://docs.mistral.ai/api/",defaultBaseURL:"https://api.mistral.ai/v1",defaultModel:"mistral-small-latest"},{type:"azure_openai",label:"Azure OpenAI",description:"Mod\xe8les OpenAI d\xe9ploy\xe9s sur Azure AI Foundry.",icon:(0,t.r)("azure_openai"),docsUrl:"https://learn.microsoft.com/azure/ai-foundry/openai/reference",defaultBaseURL:"https://VOTRE_RESSOURCE.openai.azure.com/openai/v1",defaultModel:"gpt-4o-mini",baseURLPlaceholder:"https://ma-ressource.openai.azure.com/openai/v1"},{type:"azure_ai_anthropic",label:"Anthropic via Azure",description:"Claude sur Microsoft Foundry. Remplacez VOTRE_RESSOURCE ; v\xe9rifiez la compatibilit\xe9 OpenAI de votre d\xe9ploiement.",icon:(0,t.r)("azure_ai_anthropic"),docsUrl:"https://learn.microsoft.com/azure/ai-foundry/foundry-models/how-to/use-foundry-models-claude",defaultBaseURL:"https://VOTRE_RESSOURCE.services.ai.azure.com/anthropic/v1",defaultModel:"claude-sonnet-4-6",baseURLPlaceholder:"https://ma-ressource.services.ai.azure.com/anthropic/v1"},{type:"aws_bedrock",label:"Anthropic via AWS Bedrock",description:"Claude et autres mod\xe8les via Bedrock (OpenAI-compatible).",icon:(0,t.r)("aws_bedrock"),docsUrl:"https://docs.aws.amazon.com/bedrock/latest/userguide/inference-chat-completions-mantle.html",defaultBaseURL:"https://bedrock-runtime.us-east-1.amazonaws.com/openai/v1",defaultModel:"us.anthropic.claude-sonnet-4-6",baseURLPlaceholder:"https://bedrock-runtime.eu-west-1.amazonaws.com/openai/v1"},{type:"google_gemini",label:"Google Gemini",description:"API Gemini en mode OpenAI-compatible.",icon:(0,t.r)("google_gemini"),docsUrl:"https://ai.google.dev/gemini-api/docs/openai",defaultBaseURL:"https://generativelanguage.googleapis.com/v1beta/openai/",defaultModel:"gemini-2.0-flash"},{type:"groq",label:"Groq",description:"Inf\xe9rence rapide (Llama, Mixtral, etc.).",icon:(0,t.r)("groq"),docsUrl:"https://console.groq.com/docs/openai",defaultBaseURL:"https://api.groq.com/openai/v1",defaultModel:"llama-3.3-70b-versatile"},{type:"deepseek",label:"DeepSeek",description:"Mod\xe8les DeepSeek (OpenAI-compatible).",icon:(0,t.r)("deepseek"),docsUrl:"https://api-docs.deepseek.com/",defaultBaseURL:"https://api.deepseek.com/v1",defaultModel:"deepseek-chat"},{type:"openrouter",label:"OpenRouter",description:"Passerelle multi-fournisseurs (Claude, GPT, Llama…).",icon:(0,t.r)("openrouter"),docsUrl:"https://openrouter.ai/docs",defaultBaseURL:"https://openrouter.ai/api/v1",defaultModel:"anthropic/claude-sonnet-4"},{type:"together",label:"Together AI",description:"Mod\xe8les open-source h\xe9berg\xe9s.",icon:(0,t.r)("together"),docsUrl:"https://docs.together.ai/docs/openai-api",defaultBaseURL:"https://api.together.xyz/v1",defaultModel:"meta-llama/Llama-3.3-70B-Instruct-Turbo"},{type:"fireworks",label:"Fireworks AI",description:"Inf\xe9rence serverless pour mod\xe8les open-source.",icon:(0,t.r)("fireworks"),docsUrl:"https://docs.fireworks.ai/tools-sdks/openai-compatibility",defaultBaseURL:"https://api.fireworks.ai/inference/v1",defaultModel:"accounts/fireworks/models/llama-v3p3-70b-instruct"},{type:"xai",label:"xAI (Grok)",description:"API Grok (OpenAI-compatible).",icon:(0,t.r)("xai"),docsUrl:"https://docs.x.ai/docs/guides/chat-completions",defaultBaseURL:"https://api.x.ai/v1",defaultModel:"grok-2-latest"},{type:"ollama",label:"Ollama (local)",description:"Serveur Ollama local avec API OpenAI-compatible.",icon:(0,t.r)("ollama"),docsUrl:"https://github.com/ollama/ollama/blob/main/docs/openai.md",defaultBaseURL:"http://localhost:11434/v1",defaultModel:"llama3.2"},{type:"ollama_cloud",label:"Ollama Cloud",description:"Mod\xe8les h\xe9berg\xe9s sur ollama.com (cl\xe9 API requise).",icon:(0,t.r)("ollama"),docsUrl:"https://docs.ollama.com/cloud",defaultBaseURL:"https://ollama.com/v1",defaultModel:"gpt-oss:120b"},{type:"custom",label:"Endpoint personnalis\xe9",description:"Toute API compatible OpenAI (/v1/chat/completions).",icon:(0,t.r)("custom"),defaultBaseURL:"",defaultModel:"",baseURLPlaceholder:"https://api.example.com/v1"}];function l(e){return r.find(s=>s.type===e)??r.at(-1)}function n(e="openai"){let s=l(e);return{id:crypto.randomUUID(),type:e,name:s.label,base_url:s.defaultBaseURL,api_key:"",default_model:s.defaultModel}}function i(e){if(e.type)return e.type;let s=e.base_url?.toLowerCase()??"";return s.includes("api.openai.com")?"openai":s.includes("api.anthropic.com")?"anthropic":s.includes("api.mistral.ai")?"mistral":s.includes("openai.azure.com")?"azure_openai":s.includes("services.ai.azure.com/anthropic")?"azure_ai_anthropic":s.includes("bedrock")?"aws_bedrock":s.includes("ollama.com")?"ollama_cloud":s.includes("localhost:11434")||s.includes("127.0.0.1:11434")?"ollama":s.includes("generativelanguage.googleapis.com")?"google_gemini":s.includes("api.groq.com")?"groq":s.includes("api.deepseek.com")?"deepseek":s.includes("openrouter.ai")?"openrouter":s.includes("api.together.xyz")?"together":s.includes("api.fireworks.ai")?"fireworks":s.includes("api.x.ai")?"xai":"custom"}function o(e){let s=i(e),a=l(s);return{...e,type:s,name:e.name?.trim()||a.label}}function d(e,s){let a=i(e);return l(a),(!!e.base_url?.trim()||"custom"===a)&&("ollama"===a||"custom"===a?!!e.base_url?.trim():!!(e.api_key?.trim()||s?.apiKeyConfigured))}},41683:(e,s,a)=>{"use strict";a.d(s,{t:()=>f});var t=a(4208),r=a(91356),l=a(78606),n=a(81613),i=a(93497),o=a(61554),d=a(13746),c=a(19096),u=a(89342),m=a(85349),p=a(66987),x=a(4023),h=a(36189),g=a(58113);function v(e,s){return e.map(e=>({provider:(0,h.SR)(e),configured:(0,h.d_)(e,{apiKeyConfigured:s?.[e.id]?.configured})}))}function f({providers:e,defaultProviderId:s,onProvidersChange:a,onDefaultProviderIdChange:b,className:j,columns:y=2,providerSecrets:N,renderDefaultModelInput:_}){let k=v(e,N),[C,w]=(0,r.useState)(null);function S(e){a(e.map(h.SR))}function A(s,a){let t=[...e];t[s]={...t[s],...a},S(t)}return(0,r.useEffect)(()=>{C&&!e.some(e=>e.id===C)&&w(null)},[C,e]),(0,t.jsxs)("div",{className:(0,g.cn)("w-full space-y-4",j),children:[e.length>0?(0,t.jsxs)(m.M,{children:[(0,t.jsx)(c.J,{className:"text-xs",children:"Fournisseur par d\xe9faut"}),(0,t.jsxs)(u.l6,{value:s||e[0]?.id||"__none__",onValueChange:e=>b("__none__"===e?"":e),children:[(0,t.jsx)(u.bq,{className:"h-9 w-full min-w-0",children:(0,t.jsx)(u.yv,{placeholder:"Choisir…"})}),(0,t.jsx)(u.gC,{children:k.map(({provider:e,configured:s})=>{let a=(0,h.RH)(e),r=(0,h.XR)(a);return(0,t.jsx)(u.eb,{value:e.id,disabled:!s,children:(0,t.jsx)(p.c,{brand:a,icon:r.icon,suffix:s?void 0:" (incomplet)",children:e.name||r.label})},e.id)})})]}),k.some(e=>!e.configured)?(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Les fournisseurs incomplets restent visibles mais ne peuvent pas \xeatre s\xe9lectionn\xe9s par d\xe9faut."}):null]}):null,(0,t.jsx)(x.I,{columns:y,children:e.map((r,i)=>{let x=(0,h.SR)(r),g=(0,h.RH)(x),f=(0,h.XR)(g),j=N?.[r.id]?.configured??!1,y=(0,h.d_)(r,{apiKeyConfigured:j}),k=C===r.id,$=x.name||f.label||`Fournisseur ${i+1}`;return k?(0,t.jsxs)("div",{className:"w-full rounded-lg border border-border py-4",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-2 px-4",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)(p.c,{brand:g,icon:f.icon,className:"text-sm font-medium",children:$}),y?j&&!(r.api_key??"").trim()?(0,t.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Cl\xe9 API enregistr\xe9e sur le serveur"}):null:(0,t.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Configuration incompl\xe8te"})]}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-1",children:[(0,t.jsx)(o.$,{type:"button",variant:"ghost",size:"sm",onClick:()=>w(null),children:"Fermer"}),(0,t.jsx)(o.$,{type:"button",variant:"ghost",size:"icon","aria-label":"Supprimer le fournisseur",onClick:()=>{let t,r,l,n;return t=e[i],C===t?.id&&w(null),l=v(r=e.filter((e,s)=>s!==i),N),void((n=s)===t?.id&&(n=l.find(e=>e.configured)?.provider.id??r[0]?.id??""),a(r.map(h.SR)),b(n))},children:(0,t.jsx)(l.A,{className:"size-4"})})]})]}),(0,t.jsxs)("div",{className:"mt-4 space-y-4 border-t px-4 pt-4",children:[(0,t.jsxs)(m.M,{children:[(0,t.jsx)(c.J,{className:"text-xs",children:"Fournisseur"}),(0,t.jsxs)(u.l6,{value:g,onValueChange:s=>{let a,t,r;return a=e[i],(0,h.XR)(s),t={...(0,h.gh)(s),id:a?.id??(0,h.gh)(s).id,api_key:a?.api_key??""},void((r=[...e])[i]=t,S(r))},children:[(0,t.jsx)(u.bq,{className:"h-9 w-full min-w-0",children:(0,t.jsx)(u.yv,{children:(0,t.jsx)(p.c,{brand:g,icon:f.icon,children:f.label})})}),(0,t.jsx)(u.gC,{className:"max-h-72",children:h.Og.map(e=>(0,t.jsx)(u.eb,{value:e.type,children:(0,t.jsx)(p.c,{brand:e.type,icon:e.icon,children:e.label})},e.type))})]}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:f.description}),f.docsUrl?(0,t.jsxs)("a",{href:f.docsUrl,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-xs text-muted-foreground hover:underline",children:["Documentation",(0,t.jsx)(n.A,{className:"size-3"})]}):null]}),(0,t.jsxs)(m.M,{children:[(0,t.jsx)(c.J,{className:"text-xs",children:"Nom affich\xe9"}),(0,t.jsx)(d.p,{className:"h-9",value:r.name,onChange:e=>A(i,{name:e.target.value}),placeholder:f.label})]}),(0,t.jsxs)(m.M,{children:[(0,t.jsx)(c.J,{className:"text-xs",children:"URL de base"}),(0,t.jsx)(d.p,{className:"h-9",value:r.base_url,onChange:e=>A(i,{base_url:e.target.value}),placeholder:f.baseURLPlaceholder??f.defaultBaseURL})]}),"ollama"!==g?(0,t.jsxs)(m.M,{children:[(0,t.jsx)(c.J,{className:"text-xs",children:"Cl\xe9 API"}),(0,t.jsx)(d.p,{className:"h-9",type:"password",autoComplete:"off",value:r.api_key??"",onChange:e=>A(i,{api_key:e.target.value}),placeholder:j&&!(r.api_key??"").trim()?"•••••••• (laisser vide pour conserver)":"openai"===g?"sk-…":void 0})]}):null,(0,t.jsxs)(m.M,{children:[(0,t.jsx)(c.J,{className:"text-xs",children:"Mod\xe8le par d\xe9faut"}),_?_({provider:r,index:i,onChange:e=>A(i,{default_model:e})}):(0,t.jsx)(d.p,{className:"h-9",value:r.default_model,onChange:e=>A(i,{default_model:e.target.value}),placeholder:f.defaultModel||"gpt-4o-mini"})]})]})]},r.id):(0,t.jsxs)("div",{className:"flex w-full items-center justify-between gap-3 rounded-lg border border-border px-4 py-3",children:[(0,t.jsx)(p.c,{brand:g,icon:f.icon,className:"min-w-0 text-sm font-medium",children:$}),(0,t.jsx)(o.$,{type:"button",variant:"outline",size:"sm",onClick:()=>w(r.id),children:"Modifier"})]},r.id)})}),(0,t.jsxs)(o.$,{type:"button",variant:"outline",size:"sm",onClick:function(){let a=(0,h.gh)("openai");S([...e,a]),w(a.id),s||b(a.id)},children:[(0,t.jsx)(i.A,{className:"mr-2 size-4"}),"Ajouter un fournisseur"]})]})}},47391:(e,s,a)=>{"use strict";function t(e){switch(e){case"google":case"google_workspace":case"google_dwd":return"logos:google-icon";case"google_drive":case"googledrive":return"logos:google-drive";case"microsoft":case"microsoft_365":case"microsoft_app":case"onedrive":return"logos:microsoft-icon";case"dropbox":return"logos:dropbox";case"github":return"logos:github-icon";case"linkedin":return"logos:linkedin-icon";case"azure":case"azure_ad":case"azure_openai":case"azure_ai_anthropic":return"logos:microsoft-azure";case"okta":return"logos:okta-icon";case"brave":return"simple-icons:brave";case"bing":return"simple-icons:microsoftbing";case"duckduckgo":return"simple-icons:duckduckgo";case"searxng":return"simple-icons:searxng";case"postgres":case"postgresql":return"simple-icons:postgresql";case"meilisearch":return"simple-icons:meilisearch";case"typesense":return"simple-icons:typesense";case"nextcloud":return"simple-icons:nextcloud";case"onlyoffice":return"simple-icons:onlyoffice";case"openai":case"openai_compatible":return"simple-icons:openai";case"anthropic":return"simple-icons:anthropic";case"mistral":return"simple-icons:mistralai";case"aws_bedrock":return"simple-icons:amazonaws";case"google_gemini":case"gemini":return"simple-icons:googlegemini";case"groq":return"simple-icons:groq";case"deepseek":return"simple-icons:deepseek";case"openrouter":return"simple-icons:openrouter";case"together":return"simple-icons:togetherdotai";case"fireworks":return"simple-icons:fireworks";case"xai":return"simple-icons:x";case"ollama":case"ollama_cloud":return"simple-icons:ollama";case"deepgram":return"simple-icons:deepgram";case"ldap":case"active_directory":return"mdi:microsoft-active-directory";case"saml":return"mdi:shield-key";case"oauth":return"mdi:key-chain";case"custom":return"mdi:puzzle-outline";case"docx":return"logos:microsoft-word";default:return}}a.d(s,{r:()=>t})},49875:(e,s,a)=>{"use strict";a.d(s,{g:()=>f});var t=a(4208),r=a(91356),l=a(78606),n=a(81613),i=a(93497),o=a(61554),d=a(13746),c=a(19096),u=a(89342),m=a(85349),p=a(66987),x=a(4023),h=a(24374),g=a(58113);function v(e,s){return e.providers.map(e=>({provider:e,configured:(0,h.ot)(e,{apiKeyConfigured:s?.[e.id]?.configured})}))}function f({value:e,onChange:s,className:a,columns:b=2,providerSecrets:j}){let y=v(e,j),[N,_]=(0,r.useState)(null);function k(e){s((0,h.kF)(e))}function C(s,a){let t=[...e.providers];t[s]={...t[s],...a},k({...e,providers:t})}return(0,r.useEffect)(()=>{N&&!e.providers.some(e=>e.id===N)&&_(null)},[N,e.providers]),(0,t.jsxs)("div",{className:(0,g.cn)("w-full space-y-4",a),children:[e.providers.length>0?(0,t.jsxs)(m.M,{children:[(0,t.jsx)(c.J,{className:"text-xs",children:"Fournisseur par d\xe9faut"}),(0,t.jsxs)(u.l6,{value:e.default_provider_id||e.providers[0]?.id||"__none__",onValueChange:s=>k({...e,default_provider_id:"__none__"===s?"":s}),children:[(0,t.jsx)(u.bq,{className:"h-9 w-full min-w-0",children:(0,t.jsx)(u.yv,{placeholder:"Choisir…"})}),(0,t.jsx)(u.gC,{children:y.map(({provider:e,configured:s})=>(0,t.jsx)(u.eb,{value:e.id,disabled:!s,children:(0,t.jsx)(p.c,{brand:e.type,icon:(0,h.Wo)(e.type).icon,suffix:s?void 0:" (incomplet)",children:e.name||(0,h.Wo)(e.type).label})},e.id))})]}),y.some(e=>!e.configured)?(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Les fournisseurs incomplets restent visibles mais ne peuvent pas \xeatre s\xe9lectionn\xe9s par d\xe9faut."}):null]}):null,(0,t.jsx)(x.I,{columns:b,children:e.providers.map((s,a)=>{let r=(0,h.Wo)(s.type),i=j?.[s.id]?.configured??!1,x=(0,h.ot)(s,{apiKeyConfigured:i}),g=N===s.id,f=s.name||r.label||`Fournisseur ${a+1}`;return g?(0,t.jsxs)("div",{className:"w-full rounded-lg border border-border py-4",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-2 px-4",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)(p.c,{brand:s.type,icon:r.icon,className:"text-sm font-medium",children:f}),x?i&&!(s.api_key??"").trim()?(0,t.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Cl\xe9 API enregistr\xe9e sur le serveur"}):null:(0,t.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Configuration incompl\xe8te"})]}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-1",children:[(0,t.jsx)(o.$,{type:"button",variant:"ghost",size:"sm",onClick:()=>_(null),children:"Fermer"}),(0,t.jsx)(o.$,{type:"button",variant:"ghost",size:"icon","aria-label":"Supprimer le fournisseur",onClick:()=>{let s,t,r,l;return s=e.providers[a],N===s?.id&&_(null),t=e.providers.filter((e,s)=>s!==a),r=v({...e,providers:t},j),void((l=e.default_provider_id)===s?.id&&(l=r.find(e=>e.configured)?.provider.id??t[0]?.id??""),k({default_provider_id:l,providers:t}))},children:(0,t.jsx)(l.A,{className:"size-4"})})]})]}),(0,t.jsxs)("div",{className:"mt-4 space-y-4 border-t px-4 pt-4",children:[(0,t.jsxs)(m.M,{children:[(0,t.jsx)(c.J,{className:"text-xs",children:"Type"}),(0,t.jsxs)(u.l6,{value:s.type,onValueChange:s=>{let t,r,l;return t=e.providers[a],r={...(0,h.dv)(s),id:t?.id??(0,h.dv)(s).id,name:(0,h.Wo)(s).label,api_key:t?.api_key??""},void((l=[...e.providers])[a]=r,k({...e,providers:l}))},children:[(0,t.jsx)(u.bq,{className:"h-9 w-full min-w-0",children:(0,t.jsx)(u.yv,{children:(0,t.jsx)(p.c,{brand:s.type,icon:r.icon,children:r.label})})}),(0,t.jsx)(u.gC,{children:h.bA.map(e=>(0,t.jsx)(u.eb,{value:e.type,children:(0,t.jsx)(p.c,{brand:e.type,icon:e.icon,children:e.label})},e.type))})]}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:r.description}),r.docsUrl?(0,t.jsxs)("a",{href:r.docsUrl,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-xs text-muted-foreground hover:underline",children:["Documentation",(0,t.jsx)(n.A,{className:"size-3"})]}):null]}),(0,t.jsxs)(m.M,{children:[(0,t.jsx)(c.J,{className:"text-xs",children:"Nom affich\xe9"}),(0,t.jsx)(d.p,{className:"h-9",value:s.name,onChange:e=>C(a,{name:e.target.value})})]}),r.requiresApiKey||s.api_key||i?(0,t.jsxs)(m.M,{children:[(0,t.jsx)(c.J,{className:"text-xs",children:"brave"===s.type?"Token API (X-Subscription-Token)":"Cl\xe9 API"}),(0,t.jsx)(d.p,{className:"h-9",type:"password",value:s.api_key??"",onChange:e=>C(a,{api_key:e.target.value}),autoComplete:"off",placeholder:i&&!(s.api_key??"").trim()?"•••••••• (laisser vide pour conserver)":"brave"===s.type?"BSA…":void 0})]}):null,r.requiresBaseURL||s.base_url?(0,t.jsxs)(m.M,{children:[(0,t.jsx)(c.J,{className:"text-xs",children:"URL de base"}),(0,t.jsx)(d.p,{className:"h-9",value:s.base_url??"",onChange:e=>C(a,{base_url:e.target.value}),placeholder:"searxng"===s.type?"https://searx.example.org":"https://api.example.com/search"})]}):null,"bing"===s.type||"searxng"===s.type||"custom"===s.type?(0,t.jsxs)(m.M,{children:[(0,t.jsx)(c.J,{className:"text-xs",children:"En-t\xeate d'authentification (optionnel)"}),(0,t.jsx)(d.p,{className:"h-9",value:s.auth_header??"",onChange:e=>C(a,{auth_header:e.target.value}),placeholder:"bing"===s.type?"Ocp-Apim-Subscription-Key":"Authorization"})]}):null,"custom"===s.type||"searxng"===s.type||s.query_param?(0,t.jsxs)(m.M,{children:[(0,t.jsx)(c.J,{className:"text-xs",children:"Param\xe8tre de requ\xeate"}),(0,t.jsx)(d.p,{className:"h-9",value:s.query_param??"q",onChange:e=>C(a,{query_param:e.target.value})})]}):null,r.supportsCustomMapping?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(m.M,{children:[(0,t.jsx)(c.J,{className:"text-xs",children:"Chemin JSON des r\xe9sultats"}),(0,t.jsx)(d.p,{className:"h-9",value:s.results_path??"",onChange:e=>C(a,{results_path:e.target.value}),placeholder:"results ou data.items"})]}),(0,t.jsxs)("div",{className:"grid min-w-0 gap-4",children:[(0,t.jsxs)(m.M,{children:[(0,t.jsx)(c.J,{className:"text-xs",children:"Champ titre"}),(0,t.jsx)(d.p,{className:"h-9",value:s.title_field??"",onChange:e=>C(a,{title_field:e.target.value})})]}),(0,t.jsxs)(m.M,{children:[(0,t.jsx)(c.J,{className:"text-xs",children:"Champ URL"}),(0,t.jsx)(d.p,{className:"h-9",value:s.url_field??"",onChange:e=>C(a,{url_field:e.target.value})})]}),(0,t.jsxs)(m.M,{children:[(0,t.jsx)(c.J,{className:"text-xs",children:"Champ description"}),(0,t.jsx)(d.p,{className:"h-9",value:s.description_field??"",onChange:e=>C(a,{description_field:e.target.value})})]})]}),(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["L'URL peut contenir ",(0,t.jsx)("code",{className:"rounded bg-muted px-1",children:"{query}"})," ","et ",(0,t.jsx)("code",{className:"rounded bg-muted px-1",children:"{count}"}),". Sinon, le param\xe8tre de requ\xeate est ajout\xe9 automatiquement."]})]}):null]})]},s.id):(0,t.jsxs)("div",{className:"flex w-full items-center justify-between gap-3 rounded-lg border border-border px-4 py-3",children:[(0,t.jsx)(p.c,{brand:s.type,icon:r.icon,className:"min-w-0 text-sm font-medium",children:f}),(0,t.jsx)(o.$,{type:"button",variant:"outline",size:"sm",onClick:()=>_(s.id),children:"Modifier"})]},s.id)})}),(0,t.jsxs)(o.$,{type:"button",variant:"outline",size:"sm",onClick:function(){let s=(0,h.dv)("brave");k({default_provider_id:e.default_provider_id||s.id,providers:[...e.providers,s]}),_(s.id)},children:[(0,t.jsx)(i.A,{className:"mr-2 size-4"}),"Ajouter un fournisseur"]})]})}},63948:(e,s,a)=>{"use strict";a.d(s,{MailSettingsSectionFromSegments:()=>aW});var t=a(4208),r=a(49845),l=a(81465),n=a(1881),i=a(7),o=a(6078),d=a(91356),c=a(19984),u=a(56706),m=a(5312),p=a(78606),x=a(61554),h=a(51551),g=a(13746),v=a(19096),f=a(89342),b=a(69640),j=a(91505),y=a(30758),N=a(9519),_=a(8534),k=a(81613);function C({email:e,imapPort:s,smtpPort:a,bridgePassword:r,onBridgePasswordChange:l,onImapPortChange:n,onSmtpPortChange:i,onContinue:o,onBack:d}){return(0,t.jsxs)("div",{className:"space-y-4 max-w-xl",children:[(0,t.jsxs)("div",{className:"rounded-lg border border-border bg-muted/30 p-4 space-y-3 text-sm",children:[(0,t.jsx)("p",{className:"font-medium",children:"Proton Mail via Bridge"}),(0,t.jsxs)("ol",{className:"list-decimal list-inside space-y-2 text-muted-foreground",children:[(0,t.jsxs)("li",{children:["Installez"," ",(0,t.jsxs)("a",{href:"https://proton.me/mail/bridge",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-foreground underline",children:["Proton Mail Bridge",(0,t.jsx)(k.A,{className:"size-3"})]})," ","sur cet ordinateur."]}),(0,t.jsxs)("li",{children:["Connectez-vous avec ",(0,t.jsx)("span",{className:"text-foreground",children:e}),"."]}),(0,t.jsx)("li",{children:"Copiez le mot de passe Bridge g\xe9n\xe9r\xe9 pour IMAP/SMTP."}),(0,t.jsx)("li",{children:"V\xe9rifiez que Bridge \xe9coute sur localhost (ports par d\xe9faut ci-dessous)."})]})]}),(0,t.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,t.jsx)(w,{label:"IMAP port (Bridge)",value:s,onChange:n}),(0,t.jsx)(w,{label:"SMTP port (Bridge)",value:a,onChange:i}),(0,t.jsx)("div",{className:"sm:col-span-2",children:(0,t.jsx)(w,{label:"Mot de passe Bridge",type:"password",value:r,onChange:l,placeholder:"G\xe9n\xe9r\xe9 par Proton Bridge"})})]}),(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Bridge doit rester ouvert en arri\xe8re-plan. Ultimail se connecte \xe0"," ",(0,t.jsx)("code",{className:"text-foreground",children:"127.0.0.1"}),"."]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(x.$,{type:"button",disabled:!r,onClick:o,children:"Tester et continuer"}),(0,t.jsx)(x.$,{type:"button",variant:"ghost",onClick:d,children:"Retour"})]})]})}function w({label:e,value:s,onChange:a,type:r="text",placeholder:l}){return(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)(v.J,{className:"text-xs",children:e}),(0,t.jsx)(g.p,{value:s,type:r,placeholder:l,onChange:e=>a(e.target.value)})]})}var S=a(17745),A=a(94927);function $(e){return(0,S.n)({mutationFn:s=>{let a=e?{...s,account_id:e}:s;return A.uE.post("/mail/accounts/test",a)}})}var z=a(98306),M=a(18747);function R(e){return(e.split("@")[0]??e).replace(/[._-]+/g," ").replace(/\b\w/g,e=>e.toUpperCase())}function E({pending:e,onSubmit:s}){let[a,r]=(0,d.useState)(!1),[l,n]=(0,d.useState)("email"),[i,o]=(0,d.useState)(!1),[c,u]=(0,d.useState)(null),[m,p]=(0,d.useState)(null),h=(0,S.n)({mutationFn:e=>A.uE.get("/mail/accounts/discover",{email:e})}),g=$(),v=(0,S.n)({mutationFn:e=>A.uE.post("/mail/accounts/oauth/start",e)}),{data:f}=function(){let{ready:e,authenticated:s}=(0,M.v)();return(0,z.I)({queryKey:["mail-oauth-providers"],queryFn:()=>A.uE.get("/mail/accounts/oauth/providers"),enabled:e&&s,staleTime:6e4})}(),_=f?.providers??[],[k,w]=(0,d.useState)(""),[q,L]=(0,d.useState)({name:"",imap_host:"127.0.0.1",imap_port:"1143",imap_tls:!0,smtp_host:"127.0.0.1",smtp_port:"1025",smtp_tls:!0,username:"",password:""});function T(){n("email"),w(""),u(null),o(!1),p(null),L({name:"",imap_host:"127.0.0.1",imap_port:"1143",imap_tls:!0,smtp_host:"127.0.0.1",smtp_port:"1025",smtp_tls:!0,username:"",password:""}),h.reset(),g.reset(),v.reset()}async function D(){let e=k.trim();e&&U(await h.mutateAsync(e))}function U(e){u(e),"proton"===e.provider_id&&"manual"!==e.source?n("proton"):n("credentials")}async function J(){let e=await g.mutateAsync({imap_host:q.imap_host,imap_port:Number(q.imap_port)||993,imap_tls:q.imap_tls,smtp_host:q.smtp_host,smtp_port:Number(q.smtp_port)||587,smtp_tls:q.smtp_tls,username:q.username,password:q.password});return p(e.ok),e}async function V(){L(e=>({...e,imap_host:"127.0.0.1",smtp_host:"127.0.0.1",username:c?.email??e.username,password:e.password})),(await J()).ok&&n("credentials")}async function K(e){if(!c)return;let{authorization_url:s}=await v.mutateAsync({provider:e,email:c.email,name:q.name.trim()||R(c.email),provider_id:c.provider_id,imap_host:q.imap_host,imap_port:Number(q.imap_port)||993,imap_tls:q.imap_tls,smtp_host:q.smtp_host,smtp_port:Number(q.smtp_port)||587,smtp_tls:q.smtp_tls});window.location.href=s}(0,d.useEffect)(()=>{c&&(L(e=>{var s;return{...e,imap_host:c.imap_host||e.imap_host,imap_port:String(c.imap_port||993),imap_tls:c.imap_tls,smtp_host:c.smtp_host||e.smtp_host,smtp_port:String(c.smtp_port||587),smtp_tls:c.smtp_tls,username:e.username||(s=c.email,"local"===c.username_hint?s.split("@")[0]??s:s),name:e.name||R(c.email)}}),o(!c||"low"===c.confidence||!c.imap_host||!c.smtp_host||"tutanota"===c.provider_id),p(null))},[c]);let B=c?function(e,s){if(!e.auth_methods.includes("oauth2"))return null;let a=e.provider_id;return("gmail"===a||"google_workspace"===a)&&s.includes("google")?"google":("outlook"===a||"microsoft365"===a)&&s.includes("microsoft")?"microsoft":null}(c,_):null;return a?(0,t.jsxs)(b.Zp,{children:[(0,t.jsxs)(b.aR,{children:[(0,t.jsx)(b.ZB,{className:"text-base",children:"Nouveau compte mail"}),(0,t.jsx)(b.BT,{children:"Saisissez votre adresse e-mail : nous d\xe9tectons le fournisseur et pr\xe9remplissons IMAP/SMTP."})]}),(0,t.jsxs)(b.Wu,{className:"space-y-4",children:["email"===l?(0,t.jsxs)("div",{className:"space-y-3 max-w-md",children:[(0,t.jsx)(F,{label:"Adresse e-mail",value:k,onChange:w,type:"email",autoComplete:"email",placeholder:"vous@exemple.com"}),h.isError?(0,t.jsx)("p",{className:"text-sm text-destructive",children:"D\xe9tection impossible. Utilisez \xab Configurer manuellement \xbb ou r\xe9essayez."}):null,(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(x.$,{type:"button",disabled:!k.trim()||h.isPending,onClick:()=>void D(),children:h.isPending?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(j.A,{className:"mr-2 size-4 animate-spin"}),"D\xe9tection…"]}):"D\xe9tecter la configuration"}),(0,t.jsx)(x.$,{type:"button",variant:"secondary",disabled:!k.trim()||!k.includes("@"),onClick:function(){let e=k.trim();if(e&&e.includes("@")){let s,a;U((a=(s=e.trim().toLowerCase()).split("@")[1]??"",{email:s,domain:a,provider_id:"custom",provider_name:"Configuration manuelle",source:"manual",confidence:"low",imap_host:a?`imap.${a}`:"",imap_port:993,imap_tls:!0,smtp_host:a?`smtp.${a}`:"",smtp_port:587,smtp_tls:!0,username_hint:"email",auth_methods:["password"],notes:["Configuration saisie manuellement — v\xe9rifiez les param\xe8tres serveur avant d'enregistrer."]}))}},children:"Configurer manuellement"}),(0,t.jsx)(x.$,{type:"button",variant:"ghost",onClick:()=>{r(!1),T()},children:"Annuler"})]}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"La d\xe9tection pr\xe9remplit IMAP/SMTP. Choisissez \xab Configurer manuellement \xbb pour saisir vos param\xe8tres sans appel r\xe9seau."})]}):null,"proton"===l&&c?(0,t.jsx)(C,{email:c.email,imapPort:q.imap_port,smtpPort:q.smtp_port,bridgePassword:q.password,onBridgePasswordChange:e=>L({...q,password:e}),onImapPortChange:e=>L({...q,imap_port:e}),onSmtpPortChange:e=>L({...q,smtp_port:e}),onContinue:()=>void V(),onBack:()=>n("email")}):null,"credentials"===l&&c?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(I,{discover:c,onBack:()=>n("email")}),c.notes?.length?(0,t.jsx)("ul",{className:"rounded-md border border-border bg-muted/40 px-3 py-2 text-xs text-muted-foreground space-y-1",children:c.notes.map(e=>(0,t.jsx)("li",{children:e},e))}):null,B?(0,t.jsxs)("div",{className:"space-y-2 max-w-md",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Connexion recommand\xe9e sans mot de passe :"}),(0,t.jsxs)(x.$,{type:"button",variant:"secondary",disabled:v.isPending,onClick:()=>void K(B),children:[v.isPending?(0,t.jsx)(j.A,{className:"mr-2 size-4 animate-spin"}):null,"google"===B?"Continuer avec Google":"Continuer avec Microsoft"]}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"ou identifiant / mot de passe ci-dessous"})]}):null,(0,t.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2 max-w-2xl",children:[(0,t.jsx)(F,{label:"Nom affich\xe9",value:q.name,onChange:e=>L({...q,name:e})}),(0,t.jsx)(F,{label:"Identifiant",value:q.username,onChange:e=>L({...q,username:e}),autoComplete:"username"}),(0,t.jsx)(F,{label:"Mot de passe",type:"password",value:q.password,onChange:e=>{p(null),L({...q,password:e})},autoComplete:"current-password"})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("button",{type:"button",className:"flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground",onClick:()=>o(e=>!e),children:[i?(0,t.jsx)(y.A,{className:"size-4"}):(0,t.jsx)(N.A,{className:"size-4"}),"Param\xe8tres serveur ",i?"":"(avanc\xe9)"]}),i?(0,t.jsxs)("div",{className:"mt-3 grid gap-3 sm:grid-cols-2 max-w-2xl",children:[(0,t.jsx)(F,{label:"IMAP h\xf4te",value:q.imap_host,onChange:e=>L({...q,imap_host:e})}),(0,t.jsx)(F,{label:"IMAP port",value:q.imap_port,onChange:e=>L({...q,imap_port:e})}),(0,t.jsx)(F,{label:"SMTP h\xf4te",value:q.smtp_host,onChange:e=>L({...q,smtp_host:e})}),(0,t.jsx)(F,{label:"SMTP port",value:q.smtp_port,onChange:e=>L({...q,smtp_port:e})}),(0,t.jsxs)("label",{className:"flex items-center gap-2 text-sm sm:col-span-2",children:[(0,t.jsx)("input",{type:"checkbox",checked:q.imap_tls,onChange:e=>L({...q,imap_tls:e.target.checked})}),"IMAP TLS"]}),(0,t.jsxs)("label",{className:"flex items-center gap-2 text-sm sm:col-span-2",children:[(0,t.jsx)("input",{type:"checkbox",checked:q.smtp_tls,onChange:e=>L({...q,smtp_tls:e.target.checked})}),"SMTP TLS / STARTTLS"]})]}):(0,t.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:["R\xe9ception ",q.imap_host,":",q.imap_port," \xb7 Envoi ",q.smtp_host,":",q.smtp_port]})]}),(0,t.jsx)(P,{testing:g.isPending,result:g.data,testOk:m,error:g.isError}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(x.$,{type:"button",variant:"outline",disabled:g.isPending||!q.password||!q.username||!q.imap_host||!q.smtp_host,onClick:()=>void J(),children:g.isPending?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(j.A,{className:"mr-2 size-4 animate-spin"}),"Test…"]}):"Tester la connexion"}),(0,t.jsx)(x.$,{type:"button",disabled:e||!q.password||!q.username||!q.imap_host||!q.smtp_host||!1===m,onClick:function(){c&&(s({name:q.name.trim()||R(c.email),email:c.email,provider:c.provider_id,imap_host:q.imap_host,imap_port:Number(q.imap_port)||993,imap_tls:q.imap_tls,smtp_host:q.smtp_host,smtp_port:Number(q.smtp_port)||587,smtp_tls:q.smtp_tls,username:q.username,password:q.password}),r(!1),T())},children:"Enregistrer"}),(0,t.jsx)(x.$,{type:"button",variant:"ghost",onClick:()=>{r(!1),T()},children:"Annuler"})]})]}):null]})]}):(0,t.jsx)(x.$,{type:"button",variant:"outline",onClick:()=>r(!0),children:"Ajouter un compte mail"})}function P({testing:e,result:s,testOk:a,error:r}){return e||null===a?r?(0,t.jsx)("p",{className:"text-sm text-destructive",children:"\xc9chec du test de connexion."}):null:a&&s?.ok?(0,t.jsx)("p",{className:"text-sm text-green-600 dark:text-green-500",children:"Connexion IMAP et SMTP valid\xe9e."}):(0,t.jsxs)("div",{className:"text-sm text-destructive space-y-1",children:[(0,t.jsx)("p",{children:"\xc9chec du test de connexion."}),s?.imap_error?(0,t.jsxs)("p",{className:"text-xs",children:["IMAP : ",s.imap_error]}):null,s?.smtp_error?(0,t.jsxs)("p",{className:"text-xs",children:["SMTP : ",s.smtp_error]}):null]})}function I({discover:e,onBack:s}){return(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-3 rounded-lg border border-border bg-muted/30 px-3 py-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,t.jsx)(_.A,{className:"size-4 shrink-0 text-muted-foreground"}),(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:"text-sm font-medium truncate",children:e.email}),(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:[e.provider_name,"high"!==e.confidence?` \xb7 confiance ${e.confidence}`:null]})]})]}),(0,t.jsx)(x.$,{type:"button",variant:"ghost",size:"sm",onClick:s,children:"Modifier l'adresse"})]})}function F({label:e,value:s,onChange:a,type:r="text",autoComplete:l,placeholder:n}){return(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)(v.J,{className:"text-xs",children:e}),(0,t.jsx)(g.p,{value:s,type:r,autoComplete:l,placeholder:n,onChange:e=>a(e.target.value)})]})}var q=a(39927);function L(e,s){let a=Number.parseInt(e,10);return Number.isFinite(a)&&a>0?a:s}function T(e){return(e??"").trim()}function D(e,s){let a=s??e;return{name:a.name??e.name??"",email:a.email??e.email??"",username:s?.username??s?.email??e.email??"",password:"",imap_host:s?.imap_host??e.imap_host??"",imap_port:String(s?.imap_port??993),imap_tls:s?.imap_tls??!0,smtp_host:s?.smtp_host??e.smtp_host??"",smtp_port:String(s?.smtp_port??587),smtp_tls:s?.smtp_tls??!0}}function U({account:e,onCancel:s}){var a;let r,{data:l,isPending:n,isError:i,refetch:o}=function(e){let{ready:s,authenticated:a}=(0,M.v)();return(0,z.I)({queryKey:["mail-account",e],enabled:s&&a&&!!e,queryFn:()=>A.uE.get(`/mail/accounts/${e}`)})}(e.id),c=(a=e.id,r=(0,q.jE)(),(0,S.n)({mutationFn:e=>A.uE.put(`/mail/accounts/${a}`,e),onSuccess:()=>{r.invalidateQueries({queryKey:["accounts"]}),r.invalidateQueries({queryKey:["mail-account",a]}),r.invalidateQueries({queryKey:["identities"]})}})),u=$(e.id),[m,p]=(0,d.useState)(!1),[h,g]=(0,d.useState)(null),[v,f]=(0,d.useState)(()=>D(e)),b=l?.auth_type==="oauth2";if((0,d.useEffect)(()=>{l&&(f(D(e,l)),g(null))},[e,l]),n&&!l)return null;if(i)return(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-destructive",children:"Impossible de charger ce compte."}),(0,t.jsx)(x.$,{type:"button",size:"sm",variant:"outline",onClick:()=>void o(),children:"R\xe9essayer"})]});async function _(){g(null);try{let e=await u.mutateAsync({imap_host:T(v.imap_host),imap_port:L(v.imap_port,993),imap_tls:v.imap_tls,smtp_host:T(v.smtp_host),smtp_port:L(v.smtp_port,587),smtp_tls:v.smtp_tls,username:T(v.username)||void 0,password:v.password||void 0,...b?{auth_type:"oauth2"}:{}});g(e.ok)}catch{g(!1)}}let k=!!T(v.imap_host)&&!!T(v.smtp_host),C=!!v.password,w=!c.isPending&&!!T(v.email)&&!!T(v.imap_host)&&!!T(v.smtp_host)&&(b||!!T(v.username))&&(!C||!1!==h);return(0,t.jsxs)("div",{className:"space-y-4 rounded-lg border border-border bg-muted/20 p-4",children:[(0,t.jsx)("h3",{className:"text-sm font-medium",children:"Modifier la connexion"}),b?(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Compte connect\xe9 via OAuth",l?.oauth_provider?` (${l.oauth_provider})`:"",". Vous pouvez ajuster le nom et les serveurs ; le mot de passe n'est pas utilis\xe9."]}):null,(0,t.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2 max-w-2xl",children:[(0,t.jsx)(J,{label:"Nom affich\xe9",value:v.name,onChange:e=>f({...v,name:e})}),(0,t.jsx)(J,{label:"Adresse e-mail",type:"email",value:v.email,onChange:e=>f({...v,email:e})}),(0,t.jsx)(J,{label:"Identifiant",value:v.username,onChange:e=>f({...v,username:e}),autoComplete:"username"}),b?null:(0,t.jsx)(J,{label:"Nouveau mot de passe",type:"password",value:v.password,placeholder:"Laisser vide pour ne pas changer",onChange:e=>{g(null),f({...v,password:e})},autoComplete:"new-password"})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("button",{type:"button",className:"flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground",onClick:()=>p(e=>!e),children:[m?(0,t.jsx)(y.A,{className:"size-4"}):(0,t.jsx)(N.A,{className:"size-4"}),"Param\xe8tres serveur ",m?"":"(avanc\xe9)"]}),m?(0,t.jsxs)("div",{className:"mt-3 grid gap-3 sm:grid-cols-2 max-w-2xl",children:[(0,t.jsx)(J,{label:"IMAP h\xf4te",value:v.imap_host,onChange:e=>f({...v,imap_host:e})}),(0,t.jsx)(J,{label:"IMAP port",value:v.imap_port,onChange:e=>f({...v,imap_port:e})}),(0,t.jsx)(J,{label:"SMTP h\xf4te",value:v.smtp_host,onChange:e=>f({...v,smtp_host:e})}),(0,t.jsx)(J,{label:"SMTP port",value:v.smtp_port,onChange:e=>f({...v,smtp_port:e})}),(0,t.jsxs)("label",{className:"flex items-center gap-2 text-sm sm:col-span-2",children:[(0,t.jsx)("input",{type:"checkbox",checked:v.imap_tls,onChange:e=>f({...v,imap_tls:e.target.checked})}),"IMAP TLS"]}),(0,t.jsxs)("label",{className:"flex items-center gap-2 text-sm sm:col-span-2",children:[(0,t.jsx)("input",{type:"checkbox",checked:v.smtp_tls,onChange:e=>f({...v,smtp_tls:e.target.checked})}),"SMTP TLS / STARTTLS"]})]}):(0,t.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:["R\xe9ception ",v.imap_host,":",v.imap_port," \xb7 Envoi ",v.smtp_host,":",v.smtp_port]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[!0===h?(0,t.jsx)("p",{className:"text-sm text-green-600 dark:text-green-500",children:"Connexion IMAP et SMTP valid\xe9e."}):null,!1===h?(0,t.jsxs)("div",{className:"text-sm text-destructive space-y-1",children:[(0,t.jsx)("p",{children:"\xc9chec du test de connexion."}),u.data?.imap_error?(0,t.jsxs)("p",{className:"text-xs",children:["IMAP : ",u.data.imap_error]}):null,u.data?.smtp_error?(0,t.jsxs)("p",{className:"text-xs",children:["SMTP : ",u.data.smtp_error]}):null]}):null,(0,t.jsx)(x.$,{type:"button",variant:"outline",size:"sm",disabled:u.isPending||!k,onClick:()=>void _(),children:u.isPending?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(j.A,{className:"mr-2 size-4 animate-spin"}),"Test…"]}):"Tester la connexion"}),b||C?null:(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Le mot de passe enregistr\xe9 est utilis\xe9 si le champ ci-dessus est vide."})]}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(x.$,{type:"button",size:"sm",disabled:!w,onClick:function(){let e={name:T(v.name)||T(v.email),email:T(v.email),provider:l?.provider,imap_host:T(v.imap_host),imap_port:L(v.imap_port,993),imap_tls:v.imap_tls,smtp_host:T(v.smtp_host),smtp_port:L(v.smtp_port,587),smtp_tls:v.smtp_tls,username:T(v.username),password:v.password||void 0};(b||!v.password||!1!==h)&&c.mutate(e,{onSuccess:s})},children:c.isPending?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(j.A,{className:"mr-2 size-4 animate-spin"}),"Enregistrement…"]}):"Enregistrer"}),(0,t.jsx)(x.$,{type:"button",size:"sm",variant:"ghost",onClick:s,children:"Annuler"})]})]})}function J({label:e,value:s,onChange:a,type:r="text",autoComplete:l,placeholder:n}){return(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)(v.J,{className:"text-xs",children:e}),(0,t.jsx)(g.p,{value:s,type:r,autoComplete:l,placeholder:n,onChange:e=>a(e.target.value)})]})}var V=a(82826),K=a(27659),B=a(4559),O=a(86227);function W(){let e=(0,O.nc)(e=>e.user?.email),{data:s,isPending:a}=(0,B.cE)(),r=(0,B.iF)(),l=s?.platform_domain??"",n=!!(s?.hosted_mail_account_id||s?.mailbox?.mail_account_id),i=s?.hosted_mail_account_email??s?.mailbox?.email??"",[o,c]=(0,d.useState)(""),[u,m]=(0,d.useState)(""),[p,h]=(0,d.useState)(""),[f,y]=(0,d.useState)("");(0,d.useEffect)(()=>{if(!l||o)return;let s=function(e,s){if(!e?.includes("@"))return"";let[a,t]=e.split("@");return a?t?.toLowerCase()===s.toLowerCase()?a.toLowerCase():a.toLowerCase().replace(/[^a-z0-9._+-]/g,""):""}(e,l);s&&c(s)},[l,o,e]);let N=(0,d.useMemo)(()=>{let e=o.trim().toLowerCase();return e&&l?`${e}@${l}`:""},[o,l]),_=(0,B.hs)(o.trim(),l),k=_.data?.available===!1&&"hosted_mail_disabled"!==_.data.reason,C=p===f,w=p.length>=8,S=!r.isPending&&o.trim().length>0&&w&&C&&_.data?.available!==!1;if(a||!s?.enabled)return null;let $=s.endpoints;async function z(){if(S)try{await r.mutateAsync({local_part:o.trim().toLowerCase(),password:p,display_name:u.trim()||void 0}),h(""),y("")}catch{}}return(0,t.jsxs)(b.Zp,{className:"border-primary/20 bg-primary/[0.03]",children:[(0,t.jsx)(b.aR,{children:(0,t.jsxs)("div",{className:"flex items-start gap-3",children:[(0,t.jsx)(V.A,{className:"mt-0.5 size-5 shrink-0 text-primary"}),(0,t.jsxs)("div",{children:[(0,t.jsx)(b.ZB,{className:"text-base",children:"Mail h\xe9berg\xe9 Ultimail (Stalwart)"}),(0,t.jsxs)(b.BT,{children:["Cr\xe9ez ou connectez votre bo\xeete @",l," — IMAP/SMTP pr\xe9configur\xe9s, sans saisie manuelle des serveurs."]})]})]})}),(0,t.jsxs)(b.Wu,{className:"space-y-4",children:[$?(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Serveurs : IMAP ",$.imap_host,":",$.imap_port,$.imap_tls?" (TLS)":""," \xb7 SMTP ",$.smtp_host,":",$.smtp_port,$.smtp_tls?" (TLS)":""]}):null,n?(0,t.jsxs)("div",{className:"flex items-start gap-2 rounded-lg border border-border bg-background px-3 py-2",children:[(0,t.jsx)(K.A,{className:"mt-0.5 size-4 shrink-0 text-green-600 dark:text-green-500"}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-sm font-medium",children:"Bo\xeete h\xe9berg\xe9e connect\xe9e"}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:i})]})]}):(0,t.jsxs)("div",{className:"space-y-4 max-w-lg",children:[(0,t.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,t.jsxs)("div",{className:"space-y-1.5 sm:col-span-2",children:[(0,t.jsx)(v.J,{htmlFor:"hosted-local-part",children:"Adresse mail"}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(g.p,{id:"hosted-local-part",value:o,autoComplete:"username",placeholder:"prenom.nom",onChange:e=>c(e.target.value)}),(0,t.jsxs)("span",{className:"shrink-0 text-sm text-muted-foreground",children:["@",l]})]}),N?(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:N}):null,_.isFetching?(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"V\xe9rification de la disponibilit\xe9…"}):k?(0,t.jsx)("p",{className:"text-xs text-destructive",children:"Adresse d\xe9j\xe0 prise."}):_.data?.available===!0&&o.trim()?(0,t.jsx)("p",{className:"text-xs text-green-600 dark:text-green-500",children:"Adresse disponible."}):null]}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)(v.J,{htmlFor:"hosted-display-name",children:"Nom affich\xe9"}),(0,t.jsx)(g.p,{id:"hosted-display-name",value:u,placeholder:"Optionnel",onChange:e=>m(e.target.value)})]}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)(v.J,{htmlFor:"hosted-password",children:"Mot de passe bo\xeete"}),(0,t.jsx)(g.p,{id:"hosted-password",type:"password",value:p,autoComplete:"new-password",onChange:e=>h(e.target.value)})]}),(0,t.jsxs)("div",{className:"space-y-1.5 sm:col-span-2",children:[(0,t.jsx)(v.J,{htmlFor:"hosted-password-confirm",children:"Confirmer le mot de passe"}),(0,t.jsx)(g.p,{id:"hosted-password-confirm",type:"password",value:f,autoComplete:"new-password",onChange:e=>y(e.target.value)}),p&&!w?(0,t.jsx)("p",{className:"text-xs text-destructive",children:"8 caract\xe8res minimum."}):null,f&&!C?(0,t.jsx)("p",{className:"text-xs text-destructive",children:"Les mots de passe ne correspondent pas."}):null]})]}),r.isError?(0,t.jsx)("p",{className:"text-sm text-destructive",children:function(e){if(e instanceof A.UQ){switch(e.code){case"address_taken":return"Cette adresse est d\xe9j\xe0 utilis\xe9e.";case"domain_not_active":return"Le domaine mail n'est pas encore actif."}return e.message}return e instanceof Error?e.message:"\xc9chec de la configuration."}(r.error)}):null,r.isSuccess?(0,t.jsx)("p",{className:"text-sm text-green-600 dark:text-green-500",children:"Bo\xeete configur\xe9e — synchronisation IMAP en cours."}):null,(0,t.jsx)(x.$,{type:"button",disabled:!S,onClick:()=>void z(),children:r.isPending?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(j.A,{className:"mr-2 size-4 animate-spin"}),"Configuration…"]}):"Activer ma bo\xeete h\xe9berg\xe9e"})]})]})]})}var Q=a(74877),H=a(93497),X=a(1559);function G({signatures:e,showInitialLoad:s}){let{ready:a}=(0,M.v)(),r=(0,X.DU)(),l=(0,X.IF)(),n=(0,X.M4)(),[i,o]=(0,d.useState)(!1),[c,u]=(0,d.useState)({name:"",html:""});return(0,t.jsxs)(b.Zp,{children:[(0,t.jsxs)(b.aR,{children:[(0,t.jsxs)(b.ZB,{className:"text-base flex items-center gap-2",children:[(0,t.jsx)(Q.A,{className:"size-4"}),"Signatures"]}),(0,t.jsx)(b.BT,{children:"Cr\xe9ez des signatures nomm\xe9es r\xe9utilisables sur vos identit\xe9s d'envoi."})]}),(0,t.jsxs)(b.Wu,{className:"space-y-4",children:[!a||s?null:0===e.length?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Aucune signature enregistr\xe9e."}):(0,t.jsx)("ul",{className:"space-y-3",children:e.map(e=>(0,t.jsxs)("li",{className:"rounded-lg border border-border p-3 space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,t.jsx)("div",{className:"flex-1 space-y-2",children:(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Nom"}),(0,t.jsx)(g.p,{defaultValue:e.name,onBlur:s=>{let a=s.target.value.trim();a&&a!==e.name&&l.mutate({signatureId:e.id,name:a,html:e.html})}})]})}),(0,t.jsx)(x.$,{type:"button",variant:"ghost",size:"icon","aria-label":"Supprimer la signature",onClick:()=>n.mutate(e.id),children:(0,t.jsx)(p.A,{className:"size-3.5"})})]}),(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Contenu HTML"}),(0,t.jsx)("textarea",{className:"min-h-24 w-full rounded-md border border-input bg-background px-3 py-2 text-sm font-mono",defaultValue:e.html,placeholder:"<div>…</div>",onBlur:s=>{s.target.value!==e.html&&l.mutate({signatureId:e.id,name:e.name,html:s.target.value})}})]}),e.html?.trim()?(0,t.jsxs)("div",{className:"rounded-md border border-dashed border-border bg-muted/30 p-3 text-sm",children:[(0,t.jsx)("p",{className:"mb-2 text-xs text-muted-foreground",children:"Aper\xe7u"}),(0,t.jsx)("div",{className:"prose prose-sm max-w-none dark:prose-invert",dangerouslySetInnerHTML:{__html:e.html}})]}):null]},e.id))}),i?(0,t.jsxs)("div",{className:"rounded-lg border border-border p-3 space-y-3 max-w-2xl",children:[(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Nom"}),(0,t.jsx)(g.p,{value:c.name,placeholder:"Professionnelle",onChange:e=>u({...c,name:e.target.value})})]}),(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Contenu HTML"}),(0,t.jsx)("textarea",{className:"min-h-24 w-full rounded-md border border-input bg-background px-3 py-2 text-sm font-mono",value:c.html,placeholder:'<div style="color:#5f6368">…</div>',onChange:e=>u({...c,html:e.target.value})})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(x.$,{type:"button",size:"sm",disabled:r.isPending||!c.name.trim(),onClick:function(){let e=c.name.trim();e&&r.mutate({name:e,html:c.html},{onSuccess:()=>{o(!1),u({name:"",html:""})}})},children:"Enregistrer"}),(0,t.jsx)(x.$,{type:"button",size:"sm",variant:"ghost",onClick:()=>{o(!1),u({name:"",html:""})},children:"Annuler"})]})]}):(0,t.jsxs)(x.$,{type:"button",variant:"outline",size:"sm",onClick:()=>o(!0),children:[(0,t.jsx)(H.A,{className:"size-3.5 mr-1.5"}),"Ajouter une signature"]})]})]})}var Z=a(90324),Y=a(46424);let ee="__none__";function es({account:e,signatures:s}){var a,r;let l,n,i,o=(l=(0,q.jE)(),(0,S.n)({mutationFn:e=>A.uE.delete(`/mail/accounts/${e}`),onSuccess:()=>{l.invalidateQueries({queryKey:["accounts"]}),l.invalidateQueries({queryKey:["identities"]}),l.invalidateQueries({queryKey:["mail-signatures"]})}})),c=(a=e.id,n=(0,q.jE)(),(0,S.n)({mutationFn:()=>A.uE.post(`/mail/accounts/${a}/resanitize-bodies`),onSuccess:()=>{n.invalidateQueries({queryKey:["messages"]}),n.invalidateQueries({queryKey:["thread"]})}})),g=(r=e.id,i=(0,q.jE)(),(0,S.n)({mutationFn:e=>A.uE.post(`/mail/accounts/${r}/sync${e?.force?"?force=true":""}`),onSuccess:()=>{i.invalidateQueries({queryKey:["accounts"]}),i.invalidateQueries({queryKey:["messages"]}),i.invalidateQueries({queryKey:["thread"]})}})),{data:v=[]}=(0,Y.yx)(e.id),[f,j]=(0,d.useState)(!1),[y,N]=(0,d.useState)(null);async function _(){N(null);try{let e=await c.mutateAsync();N(`Corps r\xe9import\xe9s depuis IMAP : ${e.updated} message(s) mis \xe0 jour sur ${e.scanned} analys\xe9(s).`)}catch{N("\xc9chec de la r\xe9importation des corps depuis IMAP.")}}async function k(e=!1){N(null);try{await g.mutateAsync({force:e}),N(e?"Re-synchronisation compl\xe8te IMAP termin\xe9e.":"Synchronisation IMAP termin\xe9e.")}catch{N("\xc9chec de la synchronisation IMAP.")}}let C=c.isPending||g.isPending;return(0,t.jsxs)(b.Zp,{children:[(0,t.jsxs)(b.aR,{className:"flex flex-row items-start justify-between gap-3 space-y-0",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(b.ZB,{className:"text-base",children:e.name}),(0,t.jsx)(b.BT,{children:e.email}),(0,t.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:["IMAP ",e.imap_host," \xb7 SMTP ",e.smtp_host,e.last_sync_at?` \xb7 Derni\xe8re sync : ${new Date(e.last_sync_at).toLocaleString("fr-FR")}`:null]})]}),(0,t.jsxs)("div",{className:"flex shrink-0 gap-1",children:[(0,t.jsxs)(h.rI,{children:[(0,t.jsx)(h.ty,{asChild:!0,children:(0,t.jsx)(x.$,{type:"button",variant:"ghost",size:"icon","aria-label":"Actions avanc\xe9es du compte",disabled:C,children:(0,t.jsx)(u.A,{className:"size-4"})})}),(0,t.jsxs)(h.SQ,{align:"end",children:[(0,t.jsx)(h._2,{disabled:C,onClick:()=>void _(),children:c.isPending?"R\xe9importation IMAP…":"R\xe9importer les corps depuis IMAP"}),(0,t.jsx)(h._2,{disabled:C,onClick:()=>void k(),children:g.isPending?"Synchronisation…":"Synchroniser IMAP"}),(0,t.jsx)(h._2,{disabled:C,onClick:()=>void k(!0),children:"Forcer re-sync complet"})]})]}),(0,t.jsx)(x.$,{type:"button",variant:"ghost",size:"icon","aria-label":"Modifier le compte","aria-pressed":f,onClick:()=>j(e=>!e),children:(0,t.jsx)(m.A,{className:"size-4"})}),(0,t.jsx)(x.$,{type:"button",variant:"ghost",size:"icon","aria-label":"Supprimer le compte",onClick:()=>o.mutate(e.id),children:(0,t.jsx)(p.A,{className:"size-4"})})]})]}),(0,t.jsxs)(b.Wu,{className:"space-y-4",children:[y?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:y}):null,f?(0,t.jsx)(U,{account:e,onCancel:()=>j(!1)}):null,(0,t.jsx)(ea,{accountId:e.id,accountEmail:e.email,identities:v,signatures:s})]})]})}function ea({accountId:e,accountEmail:s,identities:a,signatures:r}){let l,n,i,o=(l=(0,q.jE)(),(0,S.n)({mutationFn:s=>A.uE.post(`/mail/accounts/${e}/identities`,s),onSuccess:()=>{l.invalidateQueries({queryKey:["identities"]}),l.invalidateQueries({queryKey:["mail-signatures"]})}})),c=(n=(0,q.jE)(),(0,S.n)({mutationFn:({identityId:e,...s})=>A.uE.put(`/mail/identities/${e}`,s),onSuccess:()=>{n.invalidateQueries({queryKey:["identities"]}),n.invalidateQueries({queryKey:["mail-signatures"]})}})),u=(i=(0,q.jE)(),(0,S.n)({mutationFn:e=>A.uE.delete(`/mail/identities/${e}`),onSuccess:()=>{i.invalidateQueries({queryKey:["identities"]}),i.invalidateQueries({queryKey:["mail-signatures"]})}})),[m,h]=(0,d.useState)(!1),[b,j]=(0,d.useState)({email:s,name:""}),y=(0,d.useMemo)(()=>[{value:ee,label:"Aucune"},...r.map(e=>({value:e.id,label:e.name}))],[r]);function N(e,s={}){return{identityId:e.id,email:s.email??e.email,name:s.name??e.name,is_default:s.is_default??e.is_default,signature_html:e.signature_html??"",default_signature_id:s.default_signature_id??e.default_signature_id??"",reply_to_addrs:e.reply_to_addrs}}return(0,d.useEffect)(()=>{m||j({email:s,name:""})},[s,m]),(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)("h3",{className:"text-sm font-medium",children:"Identit\xe9s d'envoi"}),0===a.length?(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Aucune identit\xe9 configur\xe9e."}):(0,t.jsx)("ul",{className:"space-y-3",children:a.map(e=>{let s=e.default_signature_id&&""!==e.default_signature_id?e.default_signature_id:ee;return(0,t.jsx)("li",{className:"rounded-lg border border-border p-3 space-y-2",children:(0,t.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,t.jsxs)("div",{className:"grid flex-1 gap-2 sm:grid-cols-3",children:[(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Nom affich\xe9"}),(0,t.jsx)(g.p,{defaultValue:e.name,onBlur:s=>{let a=s.target.value.trim();a&&a!==e.name&&c.mutate(N(e,{name:a}))}})]}),(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Adresse d'envoi"}),(0,t.jsx)(g.p,{type:"email",defaultValue:e.email,onBlur:s=>{let a=s.target.value.trim();a&&a!==e.email&&c.mutate(N(e,{email:a}))}})]}),(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Signature"}),(0,t.jsxs)(f.l6,{value:s,disabled:c.isPending,onValueChange:s=>c.mutate(N(e,{default_signature_id:s===ee?"":s})),children:[(0,t.jsx)(f.bq,{className:"w-full",children:(0,t.jsx)(f.yv,{placeholder:"Signature"})}),(0,t.jsx)(f.gC,{children:y.map(e=>(0,t.jsx)(f.eb,{value:e.value,children:e.label},e.value))})]})]}),e.is_default?(0,t.jsx)("p",{className:"text-xs text-muted-foreground sm:col-span-3",children:"Identit\xe9 par d\xe9faut"}):null]}),(0,t.jsx)(x.$,{type:"button",variant:"ghost",size:"icon","aria-label":"Supprimer l'identit\xe9",onClick:()=>u.mutate(e.id),children:(0,t.jsx)(p.A,{className:"size-3.5"})})]})},e.id)})}),m?(0,t.jsxs)("div",{className:"rounded-lg border border-border p-3 space-y-3 max-w-lg",children:[(0,t.jsxs)("div",{className:"grid gap-2 sm:grid-cols-2",children:[(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Nom affich\xe9"}),(0,t.jsx)(g.p,{value:b.name,placeholder:"Nom visible",onChange:e=>j({...b,name:e.target.value})})]}),(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Adresse d'envoi"}),(0,t.jsx)(g.p,{type:"email",value:b.email,onChange:e=>j({...b,email:e.target.value})})]})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(x.$,{type:"button",size:"sm",disabled:o.isPending||!b.email.trim(),onClick:function(){let e=b.email.trim(),t=b.name.trim();e&&o.mutate({email:e,name:t||e.split("@")[0]||"Identit\xe9",is_default:0===a.length},{onSuccess:()=>{h(!1),j({email:s,name:""})}})},children:"Cr\xe9er l'identit\xe9"}),(0,t.jsx)(x.$,{type:"button",size:"sm",variant:"ghost",onClick:()=>h(!1),children:"Annuler"})]})]}):(0,t.jsx)(x.$,{type:"button",variant:"outline",size:"sm",disabled:o.isPending,onClick:()=>h(!0),children:"Ajouter une identit\xe9"})]})}var et=a(78199),er=a(75681),el=a(65378),en=a(57070),ei=a(59557),eo=a(79197),ed=a(81912),ec=a(54589),eu=a(31047),em=a(90582),ep=a(85569),ex=a(58113),eh=a(163);function eg({value:e,onChange:s,rounded:a="full",className:r,"aria-label":l="Couleur"}){let[n,i]=(0,d.useState)(!1),o=(0,eh.W)(e),c="full"===a;return(0,t.jsxs)(ep.AM,{open:n,onOpenChange:i,children:[(0,t.jsx)(ep.Wv,{asChild:!0,children:(0,t.jsx)("button",{type:"button","aria-label":l,className:(0,ex.cn)("flex shrink-0 items-center justify-center border border-black/10 outline-none ring-offset-1 hover:ring-2 hover:ring-muted-foreground focus-visible:ring-2 focus-visible:ring-ring",c?"size-7 rounded-full p-0.5":"size-7 rounded-sm bg-background hover:bg-muted",r),onClick:e=>e.stopPropagation(),children:(0,t.jsx)("span",{className:(0,ex.cn)("block border border-black/10",c?"size-full rounded-full":"size-4 rounded-sm",o),"aria-hidden":!0})})}),(0,t.jsx)(ep.hl,{className:"w-auto p-2",align:"start",sideOffset:6,children:(0,t.jsx)(em.P,{variant:"menu",value:e,onChange:e=>{s(e),i(!1)}})})]})}var ev=a(31390),ef=a(35019);function eb({checked:e,onPick:s,children:a}){return(0,t.jsxs)("button",{type:"button",onClick:s,className:(0,ex.cn)("flex w-full items-center justify-between gap-2 rounded-md px-2 py-1.5 text-left text-sm transition-colors",e?"bg-accent text-accent-foreground":"text-foreground hover:bg-accent/50"),children:[(0,t.jsx)("span",{children:a}),(0,t.jsx)("span",{className:"flex size-4 shrink-0 items-center justify-center","aria-hidden":!e,children:e?(0,t.jsx)(ef.A,{className:"size-4",strokeWidth:2}):null})]})}function ej({listKind:e,value:s,onChange:a}){return(0,t.jsxs)("fieldset",{className:"space-y-1",children:[(0,t.jsx)("legend",{className:"mb-1 text-xs font-medium text-muted-foreground",children:"labels"===e?"Dans la liste des libell\xe9s":"Dans la liste des dossiers"}),(0,t.jsx)(eb,{checked:"show"===s,onPick:()=>a("show"),children:"Afficher"}),(0,t.jsx)(eb,{checked:"showUnread"===s,onPick:()=>a("showUnread"),children:"Afficher si messages non lus"}),(0,t.jsx)(eb,{checked:"hide"===s,onPick:()=>a("hide"),children:"Masquer"})]})}function ey({value:e,onChange:s}){return(0,t.jsxs)("fieldset",{className:"space-y-1",children:[(0,t.jsx)("legend",{className:"mb-1 text-xs font-medium text-muted-foreground",children:"Dans la liste des messages"}),(0,t.jsx)(eb,{checked:"show"===e,onPick:()=>s("show"),children:"Afficher"}),(0,t.jsx)(eb,{checked:"hide"===e,onPick:()=>s("hide"),children:"Masquer"})]})}function eN({id:e,name:s,color:a,depth:r=0}){let l=(0,ec.xe)(),n=l.getNavItemPrefs(e),i=(0,eh.W)(a),[o,c]=(0,d.useState)(s),[u,m]=(0,d.useState)("");return(0,d.useEffect)(()=>{c(s)},[s]),(0,t.jsx)(eC,{title:s,color:i,depth:r,onColorChange:s=>l.updateFolderOrLabelColor(e,s),onDelete:()=>l.removeFolderOrLabelRow(e),deleteLabel:"Supprimer le libell\xe9",children:(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,t.jsx)(ej,{listKind:"labels",value:n.sidebar,onChange:s=>l.setNavItemSidebarVisibility(e,s)}),(0,t.jsx)(ey,{value:n.messages,onChange:s=>l.setNavItemMessageVisibility(e,s)})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(v.J,{className:"text-xs",htmlFor:`rename-label-${e}`,children:"Renommer"}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(g.p,{id:`rename-label-${e}`,value:o,onChange:e=>c(e.target.value),className:"min-w-[160px] flex-1"}),(0,t.jsx)(x.$,{type:"button",variant:"secondary",disabled:!o.trim()||o.trim()===s,onClick:()=>l.renameFolderOrLabel(e,o.trim()),children:"Enregistrer"})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(v.J,{className:"text-xs",htmlFor:`sublabel-${e}`,children:"Ajouter un sous-libell\xe9"}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(g.p,{id:`sublabel-${e}`,value:u,onChange:e=>m(e.target.value),placeholder:"Nom du sous-libell\xe9",className:"min-w-[160px] flex-1"}),(0,t.jsx)(x.$,{type:"button",variant:"secondary",disabled:!u.trim(),onClick:()=>{l.addChildLabelRow(e,u.trim()),m("")},children:"Ajouter"})]})]})]})})}function e_({id:e,name:s,remoteName:a,depth:r=0}){let l=(0,ec.xe)(),n=l.getNavItemPrefs(e);return(0,t.jsx)(eC,{title:s,subtitle:a&&a!==s?a:void 0,depth:r,hideDelete:!0,hideColor:!0,children:(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,t.jsx)(ej,{listKind:"folders",value:n.sidebar,onChange:s=>l.setNavItemSidebarVisibility(e,s)}),(0,t.jsx)(ey,{value:n.messages,onChange:s=>l.setNavItemMessageVisibility(e,s)})]}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Dossier synchronis\xe9 depuis le serveur mail — structure non modifiable ici."})]})})}function ek({id:e,name:s,color:a,depth:r=0}){let l=(0,ec.xe)(),n=l.getNavItemPrefs(e),i=(0,eh.W)(a),[o,c]=(0,d.useState)(s),[u,m]=(0,d.useState)("__root__"),[p,h]=(0,d.useState)(""),b=(0,d.useMemo)(()=>(0,ec.YI)(l.folderTree,e),[l.folderTree,e]);return(0,d.useEffect)(()=>{c(s)},[s]),(0,t.jsx)(eC,{title:s,color:i,depth:r,onColorChange:s=>l.updateFolderOrLabelColor(e,s),onDelete:()=>l.removeFolderOrLabelRow(e),deleteLabel:"Supprimer le dossier",children:(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,t.jsx)(ej,{listKind:"folders",value:n.sidebar,onChange:s=>l.setNavItemSidebarVisibility(e,s)}),(0,t.jsx)(ey,{value:n.messages,onChange:s=>l.setNavItemMessageVisibility(e,s)})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(v.J,{className:"text-xs",htmlFor:`rename-folder-${e}`,children:"Renommer"}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(g.p,{id:`rename-folder-${e}`,value:o,onChange:e=>c(e.target.value),className:"min-w-[160px] flex-1"}),(0,t.jsx)(x.$,{type:"button",variant:"secondary",disabled:!o.trim()||o.trim()===s,onClick:()=>l.renameFolderOrLabel(e,o.trim()),children:"Enregistrer"})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(v.J,{className:"text-xs",children:"D\xe9placer vers"}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsxs)(f.l6,{value:u,onValueChange:m,children:[(0,t.jsx)(f.bq,{className:"min-w-[200px] flex-1",children:(0,t.jsx)(f.yv,{placeholder:"Emplacement"})}),(0,t.jsx)(f.gC,{children:b.map(e=>(0,t.jsx)(f.eb,{value:e.value,children:e.label},e.value))})]}),(0,t.jsx)(x.$,{type:"button",variant:"secondary",onClick:()=>l.moveFolder(e,"__root__"===u?null:u),children:"D\xe9placer"})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(v.J,{className:"text-xs",htmlFor:`subfolder-${e}`,children:"Nouveau sous-dossier"}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(g.p,{id:`subfolder-${e}`,value:p,onChange:e=>h(e.target.value),placeholder:"Nom du sous-dossier",className:"min-w-[160px] flex-1"}),(0,t.jsx)(x.$,{type:"button",variant:"secondary",disabled:!p.trim(),onClick:()=>{l.addSubfolder(e,p.trim()),h("")},children:"Cr\xe9er"})]})]})]})})}function eC({title:e,subtitle:s,color:a,depth:r,onColorChange:l,onDelete:n,deleteLabel:i,hideDelete:o=!1,hideColor:c=!1,children:u}){let[m,h]=(0,d.useState)(!1);return(0,t.jsxs)(ev.Nt,{open:m,onOpenChange:h,className:"mail-settings-card rounded-lg border border-mail-border bg-mail-surface shadow-sm dark:bg-mail-surface-elevated dark:shadow-[0_1px_4px_rgba(0,0,0,0.35)]",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1 px-3 py-2",style:{paddingLeft:`${12*r+12}px`},children:[!c&&a&&l?(0,t.jsx)(eg,{value:a,onChange:l,"aria-label":"Couleur"}):null,(0,t.jsxs)(ev.R6,{className:"flex min-w-0 flex-1 flex-col items-start text-left",children:[(0,t.jsx)("span",{className:"truncate text-sm font-medium",children:e}),s?(0,t.jsx)("span",{className:"truncate text-xs text-muted-foreground",children:s}):null]}),!o&&n?(0,t.jsx)(x.$,{type:"button",variant:"ghost",size:"icon",className:"shrink-0 text-muted-foreground hover:text-destructive","aria-label":i??"Supprimer",onClick:e=>{e.stopPropagation(),n()},children:(0,t.jsx)(p.A,{className:"size-4"})}):null]}),(0,t.jsx)(ev.Ke,{className:"border-t border-border px-3 py-4",children:u})]})}function ew({nodes:e,depth:s=0}){return(0,t.jsx)("ul",{className:(0,ex.cn)("space-y-2",s>0&&"mt-2"),children:e.map(e=>(0,t.jsxs)("li",{children:[(0,t.jsx)(ek,{id:e.id,name:e.label,color:e.color,depth:s}),e.children?.length?(0,t.jsx)(ew,{nodes:e.children,depth:s+1}):null]},e.id))})}function eS({nodes:e,depth:s=0}){return(0,t.jsx)("ul",{className:(0,ex.cn)("space-y-2",s>0&&"mt-2"),children:e.map(e=>(0,t.jsxs)("li",{children:[(0,t.jsx)(e_,{id:e.id,name:e.label,remoteName:e.remoteName,depth:s}),e.children?.length?(0,t.jsx)(eS,{nodes:e.children,depth:s+1}):null]},e.id))})}var eA=a(44410);function e$({icon:e,children:s}){return(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium text-foreground",children:[(0,t.jsx)(e,{className:"size-4 shrink-0 opacity-70","aria-hidden":!0}),s]})}function ez({title:e,icon:s,loading:a,emptyTitle:r,emptyDescription:l,children:n}){return(0,t.jsxs)("section",{className:"space-y-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[s?(0,t.jsx)(s,{className:"size-4 shrink-0 opacity-70","aria-hidden":!0}):null,(0,t.jsx)("h3",{className:"text-sm font-medium text-foreground",children:e})]}),a?(0,t.jsx)("div",{className:"min-h-[120px] rounded-lg border border-border bg-muted/20","aria-hidden":!0}):n||(0,t.jsxs)("div",{className:"flex min-h-[120px] flex-col items-center justify-center gap-1 rounded-lg border border-dashed border-border bg-muted/10 px-4 py-8 text-center",children:[(0,t.jsx)("p",{className:"text-sm text-foreground",children:r}),l?(0,t.jsx)("p",{className:"max-w-sm text-xs text-muted-foreground",children:l}):null]})]})}function eM(){let{ready:e,authenticated:s}=(0,M.v)(),a=(0,ec.xe)(),{isPending:r}=(0,Y.b0)(),[l,n]=(0,d.useState)(""),[i,o]=(0,d.useState)(eh.s),c=(0,d.useMemo)(()=>a.labelRows.filter(e=>!(0,eu.Y3)(e.id)).map(e=>({...e,depth:Math.max(0,e.label.split("/").length-1)})),[a.labelRows]),u=e&&s&&r&&0===c.length;return(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Cliquez sur un libell\xe9 pour modifier couleur, visibilit\xe9 et sous-libell\xe9s — comme le menu clic droit dans la barre lat\xe9rale."}),(0,t.jsxs)("div",{className:"rounded-lg border border-border p-4 space-y-3",children:[(0,t.jsx)(e$,{icon:et.A,children:"Nouveau libell\xe9"}),(0,t.jsxs)("div",{className:"flex flex-wrap items-end gap-2",children:[(0,t.jsxs)("div",{className:"min-w-[160px] flex-1 space-y-1",children:[(0,t.jsx)(v.J,{className:"text-xs",htmlFor:"new-label-name",children:"Nom"}),(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsx)(eg,{value:i,onChange:o,"aria-label":"Couleur du libell\xe9"}),(0,t.jsx)(g.p,{id:"new-label-name",value:l,onChange:e=>n(e.target.value),className:"flex-1"})]})]}),(0,t.jsx)(x.$,{type:"button",className:"shrink-0",disabled:!l.trim(),onClick:()=>{a.addLabelRowFromSidebar(l.trim(),i),n("")},children:"Cr\xe9er"})]})]}),(0,t.jsx)(ez,{title:"Vos libell\xe9s",icon:et.A,loading:u,emptyTitle:"Aucun libell\xe9 personnalis\xe9",emptyDescription:"Utilisez le formulaire ci-dessus pour en cr\xe9er un.",children:c.length>0?(0,t.jsx)("ul",{className:"space-y-2",children:c.map(e=>(0,t.jsx)("li",{children:(0,t.jsx)(eN,{id:e.id,name:e.label,color:e.color,depth:e.depth})},e.id))}):null})]})}function eR(){let{ready:e,authenticated:s}=(0,M.v)(),a=(0,en.yr)(),{data:r=[],isFetching:l,isError:n,refetch:i,isPending:c}=(0,en.FL)("global"),[u,m]=(0,d.useState)(""),[p,h]=(0,d.useState)(eh.s),[b,j]=(0,d.useState)("__root__"),y=r.filter(e=>"global"===e.scope),N=(0,d.useMemo)(()=>(0,ed.l)(y),[y]),_=(0,d.useMemo)(()=>{let e=[{value:"__root__",label:"Racine"}],s=(a,t)=>{for(let r of a)e.push({value:r.id,label:`${" ".repeat(2*t)}${r.label}`}),r.children?.length&&s(r.children,t+1)};return s(N,0),e},[N]),k=e&&s&&c&&0===y.length;return(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Dossiers Ultimail globaux — organisation virtuelle cross-comptes."}),(0,t.jsx)(o.v,{isFetching:l,isError:n,onRetry:()=>i()}),(0,t.jsxs)("div",{className:"rounded-lg border border-border p-4 space-y-3",children:[(0,t.jsx)(e$,{icon:er.A,children:"Nouveau dossier"}),(0,t.jsxs)("div",{className:"flex flex-wrap items-end gap-2",children:[(0,t.jsxs)("div",{className:"min-w-[160px] flex-1 space-y-1",children:[(0,t.jsx)(v.J,{className:"text-xs",htmlFor:"new-folder-name-global",children:"Nom"}),(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsx)(eg,{value:p,onChange:h,"aria-label":"Couleur du dossier"}),(0,t.jsx)(g.p,{id:"new-folder-name-global",value:u,onChange:e=>m(e.target.value),className:"flex-1"})]})]}),(0,t.jsxs)("div",{className:"min-w-[200px] flex-1 space-y-1",children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Emplacement"}),(0,t.jsxs)(f.l6,{value:b,onValueChange:j,children:[(0,t.jsx)(f.bq,{children:(0,t.jsx)(f.yv,{})}),(0,t.jsx)(f.gC,{children:_.map(e=>(0,t.jsx)(f.eb,{value:e.value,children:e.label},e.value))})]})]}),(0,t.jsx)(x.$,{type:"button",className:"shrink-0",disabled:!u.trim()||a.isPending,onClick:()=>{a.mutate({name:u.trim(),color:p,parent_id:"__root__"===b?void 0:b}),m("")},children:"Cr\xe9er"})]})]}),(0,t.jsx)(ez,{title:"Vos dossiers",icon:er.A,loading:k,emptyTitle:"Aucun dossier Ultimail",emptyDescription:"Utilisez le formulaire ci-dessus pour en cr\xe9er un.",children:y.length>0?(0,t.jsx)(ew,{nodes:N}):null})]})}function eE(){let{ready:e,authenticated:s}=(0,M.v)(),{data:a=[]}=(0,Z.HM)(),[r,l]=(0,d.useState)(""),n=r||a[0]?.id,{data:i=[],isFetching:c,isError:u,refetch:m,isPending:p}=(0,ei.m)(n),x=(0,d.useMemo)(()=>n?(0,eo.Nw)(i,n):[],[i,n]),h=e&&s&&p&&0===i.length;return(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Dossiers synchronis\xe9s depuis vos serveurs mail (IMAP). Masquez ceux que vous ne voulez pas voir dans la barre lat\xe9rale."}),(0,t.jsx)(o.v,{isFetching:c,isError:u,onRetry:()=>m()}),(0,t.jsxs)("div",{className:"max-w-xs space-y-1",children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Compte mail"}),(0,t.jsxs)(f.l6,{value:n??"",onValueChange:l,disabled:0===a.length,children:[(0,t.jsx)(f.bq,{children:(0,t.jsx)(f.yv,{placeholder:"Choisir un compte"})}),(0,t.jsx)(f.gC,{children:a.map(e=>(0,t.jsx)(f.eb,{value:e.id,children:e.email},e.id))})]})]}),(0,t.jsx)(ez,{title:"Dossiers IMAP",icon:er.A,loading:h,emptyTitle:"Aucun dossier IMAP personnalis\xe9",emptyDescription:"Les dossiers syst\xe8me (Bo\xeete de r\xe9ception, Envoy\xe9s…) restent dans la navigation principale. Les dossiers personnalis\xe9s apparaissent ici apr\xe8s synchronisation.",children:x.length>0?(0,t.jsx)(eS,{nodes:x}):null})]})}var eP=a(52590),eI=a(37606);function eF({label:e,checked:s,onChange:a}){return(0,t.jsxs)("label",{className:"flex cursor-pointer items-center justify-between gap-4 rounded-lg border border-border px-4 py-3",children:[(0,t.jsx)("span",{className:"text-sm text-foreground",children:e}),(0,t.jsx)("input",{type:"checkbox",checked:s,onChange:e=>a(e.target.checked),className:"size-4 accent-[#1a73e8]"})]})}var eq=a(9405),eL=a(58e3),eT=a(18166),eD=a(28292);let eU={mail:"Mail",drive:"Drive",contacts:"Contacts",agenda:eD.tg},eJ={mail:["message_received","label_added","label_removed"],drive:["drive_file_created","drive_file_updated","drive_file_deleted","drive_file_moved","drive_share_updated"],contacts:["contact_created","contact_updated","contact_deleted"],agenda:["calendar_event_created","calendar_event_updated","calendar_event_deleted","calendar_event_response"]},eV={message_received:"Mail re\xe7u",label_added:"Libell\xe9 ajout\xe9",label_removed:"Libell\xe9 retir\xe9",drive_file_created:"Fichier ajout\xe9",drive_file_updated:"Fichier modifi\xe9",drive_file_deleted:"Fichier supprim\xe9",drive_file_moved:"Fichier d\xe9plac\xe9",drive_share_updated:"Partage modifi\xe9",contact_created:"Contact cr\xe9\xe9",contact_updated:"Contact modifi\xe9",contact_deleted:"Contact supprim\xe9",calendar_event_created:"\xc9v\xe9nement cr\xe9\xe9",calendar_event_updated:"\xc9v\xe9nement modifi\xe9",calendar_event_deleted:"\xc9v\xe9nement supprim\xe9",calendar_event_response:"R\xe9ponse invitation"},eK={mail:["from","to","subject","body","has_attachment","label"],drive:["drive_file_name","drive_file_path","drive_mime_type","drive_file_size","drive_is_folder"],contacts:["contact_name","contact_email","contact_phone","contact_org","contact_label"],agenda:["calendar_event_title","calendar_event_location","calendar_event_organizer","calendar_event_attendee","calendar_event_all_day","calendar_event_has_video"]},eB={from:"Exp\xe9diteur",to:"Destinataire",subject:"Sujet",body:"Corps",has_attachment:"Pi\xe8ce jointe",label:"Libell\xe9 du message",drive_file_name:"Nom du fichier",drive_file_path:"Chemin",drive_mime_type:"Type MIME",drive_file_size:"Taille (octets)",drive_is_folder:"Dossier",contact_name:"Nom du contact",contact_email:"E-mail du contact",contact_phone:"T\xe9l\xe9phone",contact_org:"Organisation",contact_label:"Libell\xe9 du contact",calendar_event_title:"Titre de l'\xe9v\xe9nement",calendar_event_location:"Lieu",calendar_event_organizer:"Organisateur",calendar_event_attendee:"Participant",calendar_event_all_day:"Journ\xe9e enti\xe8re",calendar_event_has_video:"Visioconf\xe9rence"},eO=["webhook","notify"],eW={mail:["label","remove_label","move","archive","delete","mark_read","mark_important","mark_spam","star","reply","send_mail","forward"],drive:["drive_move","drive_rename","drive_delete","drive_share","drive_copy"],contacts:["contact_add_label","contact_remove_label","contact_delete"],agenda:["calendar_add_attendee","calendar_update_title","calendar_cancel_event","calendar_notify_attendees"]},eQ={label:{label:"Ajouter libell\xe9",needsValue:!0,placeholder:"Nom du libell\xe9",domain:"mail"},remove_label:{label:"Retirer libell\xe9",needsValue:!0,placeholder:"Nom du libell\xe9",domain:"mail"},move:{label:"D\xe9placer vers dossier",needsValue:!0,placeholder:"Nom du dossier",domain:"mail"},archive:{label:"Archiver",needsValue:!1,domain:"mail"},delete:{label:"Supprimer",needsValue:!1,domain:"mail"},mark_read:{label:"Marquer lu",needsValue:!1,domain:"mail"},mark_important:{label:"Marquer important",needsValue:!1,domain:"mail"},mark_spam:{label:"Marquer spam",needsValue:!1,domain:"mail"},star:{label:"Suivi / \xe9toile",needsValue:!1,domain:"mail"},reply:{label:"R\xe9pondre",needsValue:!0,placeholder:"Corps de la r\xe9ponse",domain:"mail"},send_mail:{label:"Envoyer un mail",needsValue:!0,placeholder:"dest@example.com",domain:"mail"},forward:{label:"Transf\xe9rer",needsValue:!0,placeholder:"dest@example.com",domain:"mail"},drive_move:{label:"D\xe9placer le fichier",needsValue:!0,placeholder:"/Dossier cible",domain:"drive"},drive_rename:{label:"Renommer le fichier",needsValue:!0,placeholder:"nouveau-nom.pdf",domain:"drive"},drive_delete:{label:"Supprimer le fichier",needsValue:!1,domain:"drive"},drive_share:{label:"Partager",needsValue:!0,placeholder:"email@example.com",domain:"drive"},drive_copy:{label:"Copier vers",needsValue:!0,placeholder:"/Dossier cible",domain:"drive"},contact_add_label:{label:"Ajouter libell\xe9 contact",needsValue:!0,placeholder:"Libell\xe9",domain:"contacts"},contact_remove_label:{label:"Retirer libell\xe9 contact",needsValue:!0,placeholder:"Libell\xe9",domain:"contacts"},contact_delete:{label:"Supprimer le contact",needsValue:!1,domain:"contacts"},calendar_add_attendee:{label:"Ajouter un participant",needsValue:!0,placeholder:"email@example.com",domain:"agenda"},calendar_update_title:{label:"Modifier le titre",needsValue:!0,placeholder:"Nouveau titre",domain:"agenda"},calendar_cancel_event:{label:"Annuler l'\xe9v\xe9nement",needsValue:!1,domain:"agenda"},calendar_notify_attendees:{label:"Notifier les participants",needsValue:!0,placeholder:"Message",domain:"agenda"},webhook:{label:"Webhook",needsValue:!0,placeholder:"ID du template webhook",domain:"universal"},notify:{label:"Notification",needsValue:!0,placeholder:"Message notification",domain:"universal"}};function eH(e){return e.startsWith("drive_")?"drive":e.startsWith("contact_")?"contacts":e.startsWith("calendar_")?"agenda":"mail"}function eX(e){let s=new Set;for(let a of e.groups)for(let e of a.items)s.add(eH(e.type));return 0===s.size&&s.add("mail"),[...s]}function eG(e){let s=[];for(let a of e)for(let e of eK[a])s.push({value:e,label:eB[e],domain:a});return s}function eZ(e){let s=new Set,a=[];function t(e){if(s.has(e))return;s.add(e);let t=eQ[e];a.push({value:e,label:t.label,needsValue:t.needsValue,placeholder:t.placeholder,domain:t.domain??"universal"})}for(let e of eO)t(e);for(let s of e)for(let e of eW[s])t(e);return a}function eY(e){return"drive"===e?"drive_move":"contacts"===e?"contact_add_label":"agenda"===e?"calendar_add_attendee":"label"}function e0(e){let s=eJ[e][0];return"mail"===e?{type:s}:"drive"===e?{type:s,folder_path:void 0}:"agenda"===e?{type:s,calendar_id:void 0}:{type:s,contact_label:void 0}}let e1=0;function e2(e){return e1+=1,`${e}-${Date.now()}-${e1}`}function e5(e="rule"){return{name:"function"===e?"Nouvelle fonction":"Nouvelle r\xe8gle",priority:0,is_active:!0,rule_kind:e,workflow:function(e="rule",s="mail"){let a=e2("start"),t=e2("cond"),r=e2("actions"),l=e2("end"),n=eK[s][0],i=eY(s),o=[{id:e2("e"),source:a,target:t},{id:e2("e"),source:t,target:r,sourceHandle:"true"},{id:e2("e"),source:r,target:l},{id:e2("e"),source:t,target:l,sourceHandle:"false"}];return{version:1,kind:e,triggers:{operator:"or",groups:[{operator:"and",items:[e0(s)]}]},variables:[],nodes:[{id:a,type:"start",position:{x:80,y:200},data:{}},{id:t,type:"condition",position:{x:280,y:180},data:{field:n,operator:"contains",value:""}},{id:r,type:"actions",position:{x:520,y:160},data:{actions:[{type:i,value:""}]}},{id:l,type:"end",position:{x:760,y:200},data:{}}],edges:o}}(e)}}let e4={file_name:"document.pdf",file_path:"/Documents/document.pdf",mime_type:"application/pdf",file_size:102400,is_folder:!1},e3={name:"Alice Example",email:"alice@example.com",phone:"+33 6 00 00 00 00",org:"Example Corp",labels:[]},e6={title:"R\xe9union \xe9quipe",location:"Salle A",organizer:"alice@example.com",attendee:"bob@example.com",start:"2026-06-15T10:00:00Z",end:"2026-06-15T11:00:00Z",all_day:!1,has_video:!0,calendar_id:"work"},e8={from:"expediteur@example.com",to:["moi@example.com"],subject:"Exemple de sujet",body_text:"Contenu du message de test.",has_attachments:!1,labels:[]};function e9(e){return{name:e.name.trim(),priority:e.priority,is_active:e.is_active,rule_kind:e.rule_kind,account_id:e.account_id,conditions:[],actions:[],workflow:e.workflow}}function e7(){let{ready:e,authenticated:s}=(0,M.v)();return(0,z.I)({queryKey:["mail-webhooks"],queryFn:async()=>{let e=await A.uE.get("/mail/webhooks");return Array.isArray(e)?e:e.webhooks??[]},staleTime:6e4,enabled:e&&s,retry:1})}var se=a(96354),ss=a(89472);a(67177);var sa=a(12154),st=a(78697);let sr=[{value:"has",label:"Poss\xe8de le libell\xe9"},{value:"not_has",label:"Ne poss\xe8de pas le libell\xe9"}],sl=[{value:"contains",label:"contient"},{value:"not_contains",label:"ne contient pas"},{value:"equals",label:"\xe9gal \xe0"},{value:"starts_with",label:"commence par"},{value:"ends_with",label:"finit par"},{value:"regex",label:"correspond \xe0 la regex"},{value:"not_regex",label:"ne correspond pas \xe0 la regex"}],sn=[{value:"equals",label:"\xe9gal \xe0"}];function si(e){return"label"===e||"contact_label"===e}function so(e){return"has_attachment"===e||"drive_is_folder"===e||"calendar_event_all_day"===e||"calendar_event_has_video"===e}function sd(e){return"drive_file_size"===e}function sc(e,s){return"label"===e?"label":"contact_label"===e?"contact_label":"from"===e||"to"===e||"contact_email"===e||"calendar_event_organizer"===e||"calendar_event_attendee"===e?"email":"drive_file_path"===e?"drive_path":"drive_mime_type"===e?"mime_type":"none"}function su(e){return"label"===e?"label":"folder_id"===e?"folder_id":"folder_path"===e?"drive_path":"contact_label"===e?"contact_label":"calendar_id"===e?"calendar_id":"none"}let sm={start:"D\xe9but",condition:"Condition",label_check:"V\xe9rifier libell\xe9",switch:"Switch",llm_check:"V\xe9rification LLM",actions:"Actions",set_var:"Variable",call_function:"Appeler fonction",call_rule:"Appeler r\xe8gle",end:"Fin"},sp={start:"Point d'entr\xe9e du flux",condition:"If / else sur m\xe9tadonn\xe9es de l’\xe9v\xe9nement d\xe9clencheur",label_check:"Ancien nœud libell\xe9 (legacy)",switch:"Branchement multi-cas",llm_check:"D\xe9cision via prompt LLM",actions:"Ex\xe9cute une ou plusieurs actions",set_var:"D\xe9finit une variable d'ex\xe9cution",call_function:"Invoque une r\xe8gle-fonction r\xe9utilisable",call_rule:"Encha\xeene une autre r\xe8gle (cascade)",end:"Termine le flux"};eG(["mail","drive","contacts"]).map(({value:e,label:s})=>({value:e,label:s})),eZ(["mail","drive","contacts"]).map(({value:e,label:s,needsValue:a,placeholder:t})=>({value:e,label:s,needsValue:a,placeholder:t}));let sx=["condition","switch","llm_check","actions","set_var","call_function","call_rule"],sh={start:"border-emerald-500/60 bg-emerald-500/10",condition:"border-blue-500/60 bg-blue-500/10",label_check:"border-indigo-500/60 bg-indigo-500/10",switch:"border-violet-500/60 bg-violet-500/10",llm_check:"border-fuchsia-500/60 bg-fuchsia-500/10",actions:"border-amber-500/60 bg-amber-500/10",set_var:"border-cyan-500/60 bg-cyan-500/10",call_function:"border-orange-500/60 bg-orange-500/10",call_rule:"border-rose-500/60 bg-rose-500/10",end:"border-muted-foreground/40 bg-muted/30"};function sg(e){return eB[e]??e}function sv(e){let s=sl.find(s=>s.value===e)?.label;return s||(sr.find(s=>s.value===e)?.label??e)}function sf(e,s,a,r){return(0,t.jsx)("div",{className:(0,ex.cn)("rounded-lg border-2 px-3 py-2 shadow-sm transition-shadow",sh[e],s&&"border-primary ring-2 ring-primary/40 shadow-md",a),children:r})}function sb({id:e,label:s,labelClassName:a,handleClassName:r,top:l}){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:(0,ex.cn)("pointer-events-none absolute right-5 -translate-y-1/2 text-[10px] font-medium",a),style:{top:l},children:s}),(0,t.jsx)(se.h7,{type:"source",position:ss.yX.Right,id:e,style:{top:l},className:(0,ex.cn)("!size-2.5",r)})]})}function sj({branches:e}){let s=24*e.length;return(0,t.jsx)("div",{className:"relative mt-3 border-t border-border/40 pt-2",style:{height:s},children:e.map((e,s)=>(0,t.jsx)(sb,{...e,top:`${24*s+12}px`},e.id))})}let sy={start:(0,d.memo)(function({selected:e}){return sf("start",e,"min-w-[120px]",(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"text-xs font-semibold",children:"D\xe9but"}),(0,t.jsx)(se.h7,{type:"source",position:ss.yX.Right,className:"!size-2.5 !bg-primary"})]}))}),end:(0,d.memo)(function({selected:e}){return sf("end",e,"min-w-[100px]",(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(se.h7,{type:"target",position:ss.yX.Left,className:"!size-2.5 !bg-primary"}),(0,t.jsx)("p",{className:"text-xs font-semibold text-muted-foreground",children:"Fin"})]}))}),condition:(0,d.memo)(function({data:e,selected:s}){return sf("condition",s,"min-w-[200px]",(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(se.h7,{type:"target",position:ss.yX.Left,className:"!size-2.5 !bg-primary"}),(0,t.jsx)("p",{className:"text-xs font-semibold",children:"Si…"}),(0,t.jsx)("p",{className:"mt-1 text-[11px] text-muted-foreground",children:function(e,s,a){if(si(e.field)){let s="not_has"===e.operator?"Sans libell\xe9":"Libell\xe9";return`${s} \xab ${e.value||"…"} \xbb`}return so(e.field)?`${s(e.field)} = ${"false"===e.value?"non":"oui"}`:`${s(e.field)} ${a(e.operator)} \xab ${e.value||"…"} \xbb`}(e,sg,sv)}),(0,t.jsx)(sj,{branches:[{id:"true",label:"vrai",labelClassName:"text-emerald-600",handleClassName:"!bg-emerald-500"},{id:"false",label:"faux",labelClassName:"text-rose-600",handleClassName:"!bg-rose-500"}]})]}))}),label_check:(0,d.memo)(function({data:e,selected:s}){return sf("label_check",s,"min-w-[200px]",(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(se.h7,{type:"target",position:ss.yX.Left,className:"!size-2.5 !bg-primary"}),(0,t.jsx)("p",{className:"text-xs font-semibold",children:"Libell\xe9"}),(0,t.jsxs)("p",{className:"mt-1 text-[11px] text-muted-foreground",children:["not_has"===e.operator?"Sans":"A"," \xab ",e.label||"…"," \xbb"]}),(0,t.jsx)(sj,{branches:[{id:"true",label:"vrai",labelClassName:"text-emerald-600",handleClassName:"!bg-emerald-500"},{id:"false",label:"faux",labelClassName:"text-rose-600",handleClassName:"!bg-rose-500"}]})]}))}),switch:(0,d.memo)(function({data:e,selected:s}){let a=(e.cases??[]).map((e,s)=>({id:`case-${s}`,label:e.label||e.value||`Cas ${s+1}`,labelClassName:"text-violet-600",handleClassName:"!bg-violet-500"}));return sf("switch",s,"min-w-[220px]",(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(se.h7,{type:"target",position:ss.yX.Left,className:"!size-2.5 !bg-primary"}),(0,t.jsxs)("p",{className:"text-xs font-semibold",children:["Switch \xb7 ",sg(e.field)]}),(0,t.jsx)(sj,{branches:[...a,{id:"default",label:"d\xe9faut",labelClassName:"text-muted-foreground",handleClassName:"!bg-muted-foreground"}]})]}))}),llm_check:(0,d.memo)(function({data:e,selected:s}){return sf("llm_check",s,"min-w-[220px]",(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(se.h7,{type:"target",position:ss.yX.Left,className:"!size-2.5 !bg-primary"}),(0,t.jsx)("p",{className:"text-xs font-semibold",children:"LLM"}),(0,t.jsx)("p",{className:"mt-1 line-clamp-2 text-[11px] text-muted-foreground",children:e.prompt||"Prompt…"}),(0,t.jsx)(sj,{branches:[{id:"true",label:"vrai",labelClassName:"text-emerald-600",handleClassName:"!bg-emerald-500"},{id:"false",label:"faux",labelClassName:"text-rose-600",handleClassName:"!bg-rose-500"}]})]}))}),actions:(0,d.memo)(function({data:e,selected:s}){let a=e.actions??[];return sf("actions",s,"min-w-[200px]",(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(se.h7,{type:"target",position:ss.yX.Left,className:"!size-2.5 !bg-primary"}),(0,t.jsxs)("p",{className:"text-xs font-semibold",children:["Actions (",a.length,")"]}),(0,t.jsx)("ul",{className:"mt-1 space-y-0.5 text-[11px] text-muted-foreground",children:a.slice(0,4).map((e,s)=>{var a;return(0,t.jsxs)("li",{children:[(a=e.type,eQ[a]?.label??a),e.value?`: ${e.value}`:""]},s)})}),(0,t.jsx)(se.h7,{type:"source",position:ss.yX.Right,className:"!size-2.5 !bg-primary"})]}))}),set_var:(0,d.memo)(function({data:e,selected:s}){return sf("set_var",s,"min-w-[180px]",(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(se.h7,{type:"target",position:ss.yX.Left,className:"!size-2.5 !bg-primary"}),(0,t.jsx)("p",{className:"text-xs font-semibold",children:"Variable"}),(0,t.jsxs)("p",{className:"mt-1 font-mono text-[11px] text-muted-foreground",children:[e.name||"var"," = ",e.value||"…"]}),(0,t.jsx)(se.h7,{type:"source",position:ss.yX.Right,className:"!size-2.5 !bg-primary"})]}))}),call_function:(0,d.memo)(function({data:e,selected:s}){return sf("call_function",s,"min-w-[180px]",(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(se.h7,{type:"target",position:ss.yX.Left,className:"!size-2.5 !bg-primary"}),(0,t.jsx)("p",{className:"text-xs font-semibold",children:"Fonction"}),(0,t.jsx)("p",{className:"mt-1 truncate text-[11px] text-muted-foreground",children:e.rule_id||"Choisir…"}),(0,t.jsx)(se.h7,{type:"source",position:ss.yX.Right,className:"!size-2.5 !bg-primary"})]}))}),call_rule:(0,d.memo)(function({data:e,selected:s}){return sf("call_rule",s,"min-w-[180px]",(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(se.h7,{type:"target",position:ss.yX.Left,className:"!size-2.5 !bg-primary"}),(0,t.jsx)("p",{className:"text-xs font-semibold",children:"R\xe8gle cascade"}),(0,t.jsx)("p",{className:"mt-1 truncate text-[11px] text-muted-foreground",children:e.rule_id||"Choisir…"}),(0,t.jsx)(se.h7,{type:"source",position:ss.yX.Right,className:"!size-2.5 !bg-primary"})]}))})};var sN=a(5807),s_=a(29491),sk=a(6893);function sC(e){let s=new Set,a=[];for(let t of e){let e=t.value.trim().toLowerCase();!e||s.has(e)||(s.add(e),a.push(t))}return a.sort((e,s)=>(e.label??e.value).localeCompare(s.label??s.value,"fr"))}let sw=(0,d.createContext)(null);function sS({children:e}){let{suggestionsFor:s}=function(){let{ready:e,authenticated:s}=(0,M.v)(),{data:a=[]}=(0,Y.b0)(),{data:t=[]}=(0,en.FL)("all"),{folders:r=[]}=(0,ei.Q)(),{data:l}=(0,s_.yr)(),{data:n=[]}=(0,sk.fY)(),{data:i=[]}=e7(),o=(0,d.useMemo)(()=>Array.isArray(l)?l:l&&"object"==typeof l&&"address_books"in l?l.address_books??[]:[],[l]),c=(0,sN.E)({queries:o.map(a=>({queryKey:["contacts",a.id],queryFn:()=>(0,s_.A7)(a.id),enabled:e&&s&&!!a.id,staleTime:3e5}))}),u=(0,d.useMemo)(()=>sC(a.map(e=>({value:e.name,label:e.name}))),[a]),m=(0,d.useMemo)(()=>sC([...t.map(e=>({value:e.name,label:e.name})),...r.map(e=>({value:e.name,label:e.remote_name!==e.name?`${e.name} (${e.remote_name})`:e.name}))]),[t,r]),p=(0,d.useMemo)(()=>sC(t.map(e=>({value:e.id,label:`${e.name}${"account"===e.scope?" \xb7 compte":""}`}))),[t]),x=(0,d.useMemo)(()=>{let e=c.flatMap(e=>e.data??[]),s=[];for(let a of e)a.email?.trim()&&s.push({value:a.email.trim(),label:a.full_name?`${a.full_name} <${a.email}>`:a.email});return sC(s)},[c]),h=(0,d.useMemo)(()=>sC(i.map(e=>({value:e.id,label:e.name}))),[i]),g=(0,d.useMemo)(()=>sC(n.map(e=>({value:e.id,label:e.display_name||e.id}))),[n]);return{suggestionsFor:function(e){switch(e){case"label":case"contact_label":return u;case"folder":return m;case"folder_id":return p;case"email":return x;case"webhook":return h;case"calendar_id":return g;case"drive_path":return[{value:"/",label:"Racine Drive"},{value:"/Documents",label:"Documents"},{value:"/Photos",label:"Photos"}];case"mime_type":return[{value:"application/pdf",label:"PDF"},{value:"image/jpeg",label:"JPEG"},{value:"image/png",label:"PNG"},{value:"text/plain",label:"Texte"},{value:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",label:"Word"}];default:return[]}},labelSuggestions:u,folderSuggestions:m,folderIdSuggestions:p,emailSuggestions:x,webhookSuggestions:h}}(),a=(0,d.useMemo)(()=>({suggestionsFor:s}),[s]);return(0,t.jsx)(sw.Provider,{value:a,children:e})}function sA({kind:e,value:s,onChange:a,placeholder:r,className:l,disabled:n}){let i=(0,d.useContext)(sw),[o]=(0,d.useState)(()=>`automation-suggest-${e}-${Math.random().toString(36).slice(2,9)}`),c="none"!==e&&i?i.suggestionsFor(e):[],u=(0,d.useMemo)(()=>{if(!s.trim())return c.slice(0,40);let e=s.trim().toLowerCase();return c.filter(s=>s.value.toLowerCase().includes(e)||(s.label?.toLowerCase().includes(e)??!1)).slice(0,40)},[c,s]);return"none"===e||0===c.length?(0,t.jsx)(g.p,{className:(0,ex.cn)("h-8 text-xs",l),value:s,placeholder:r,disabled:n,onChange:e=>a(e.target.value)}):(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)(g.p,{className:(0,ex.cn)("h-8 text-xs",l),value:s,placeholder:r,disabled:n,list:o,onChange:e=>a(e.target.value)}),(0,t.jsx)("datalist",{id:o,children:u.map(e=>(0,t.jsx)("option",{value:e.value,children:e.label&&e.label!==e.value?e.label:void 0},`${e.value}-${e.label??""}`))}),u.length>0&&s.trim()&&!n?(0,t.jsx)("ul",{className:"absolute z-20 mt-1 max-h-40 w-full overflow-y-auto rounded-md border border-border bg-popover py-1 shadow-md",children:u.slice(0,8).map(e=>(0,t.jsx)("li",{children:(0,t.jsxs)("button",{type:"button",className:"w-full px-2 py-1.5 text-left text-xs hover:bg-muted",onMouseDown:s=>{s.preventDefault(),a(e.value)},children:[(0,t.jsx)("span",{className:"block truncate",children:e.label??e.value}),e.label&&e.label!==e.value?(0,t.jsx)("span",{className:"block truncate font-mono text-[10px] text-muted-foreground",children:e.value}):null]})},`pick-${e.value}-${e.label??""}`))}):null]})}let s$=["mail","drive","contacts","agenda"];function sz({triggers:e,onChange:s,disabled:a}){let r=e.groups.length>0?e.groups:[{operator:"and",items:[{type:"message_received"}]}],l=eX(e),n=l.length>1;function i(e){s({operator:"or",groups:e.length>0?e:[{operator:"and",items:[]}]})}function o(e,s){let a=[...r];a[e]=s,i(a)}function d(e){i(r.filter((s,a)=>a!==e))}return(0,t.jsxs)("div",{className:"space-y-3 rounded-lg border border-border bg-muted/20 p-3",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-xs font-medium",children:"D\xe9clencheurs (OU entre groupes, ET dans un groupe)"}),n?(0,t.jsxs)("p",{className:"mt-0.5 text-[10px] text-muted-foreground",children:["Domaines actifs : ",l.map(e=>eU[e]).join(", ")," — seules les conditions et actions compatibles sont propos\xe9es."]}):null]}),(0,t.jsxs)(x.$,{type:"button",variant:"outline",size:"sm",disabled:a,onClick:function(){s({operator:"or",groups:[...r,{operator:"and",items:[e0(l[0]??"mail")]}]})},children:[(0,t.jsx)(H.A,{className:"mr-1 size-3"}),"Groupe OU"]})]}),r.map((e,s)=>(0,t.jsxs)("div",{className:"space-y-2 rounded-md border border-border/60 bg-background p-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[s>0?(0,t.jsx)("p",{className:"text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:"OU"}):(0,t.jsx)("span",{}),r.length>1?(0,t.jsxs)(x.$,{type:"button",variant:"ghost",size:"sm",className:"h-6 px-2 text-[10px] text-muted-foreground hover:text-destructive",disabled:a,onClick:()=>d(s),children:[(0,t.jsx)(p.A,{className:"mr-1 size-3"}),"Retirer le groupe"]}):null]}),0===e.items.length?(0,t.jsx)("p",{className:"text-xs text-muted-foreground italic",children:"Aucun d\xe9clencheur — ajoutez-en un ci-dessous"}):null,e.items.map((l,n)=>(0,t.jsx)(sM,{item:l,disabled:a,onChange:a=>{let t=[...e.items];t[n]=a,o(s,{...e,items:t})},onRemove:()=>{let e,a;0===(a=(e=r[s]).items.filter((e,s)=>s!==n)).length?d(s):o(s,{...e,items:a})}},n)),(0,t.jsxs)(x.$,{type:"button",variant:"ghost",size:"sm",className:"h-7 text-xs",disabled:a,onClick:()=>o(s,{...e,items:[...e.items,e0(l[0]??"mail")]}),children:[(0,t.jsx)(H.A,{className:"mr-1 size-3"}),"ET — ajouter d\xe9clencheur"]})]},s))]})}function sM({item:e,onChange:s,onRemove:a,disabled:r}){var l;return(0,t.jsxs)("div",{className:"flex flex-wrap items-end gap-2",children:[(0,t.jsxs)("div",{className:"min-w-[160px] flex-1",children:[(0,t.jsx)(v.J,{className:"text-[10px] text-muted-foreground",children:"\xc9v\xe9nement"}),(0,t.jsxs)(f.l6,{value:e.type,disabled:r,onValueChange:e=>{s({...e0(eH(e)),type:e})},children:[(0,t.jsx)(f.bq,{className:"h-8 text-xs",children:(0,t.jsx)(f.yv,{})}),(0,t.jsx)(f.gC,{children:s$.map(e=>(0,t.jsxs)(f.s3,{children:[(0,t.jsx)(f.TR,{className:"text-[10px]",children:eU[e]}),eJ[e].map(e=>(0,t.jsx)(f.eb,{value:e,className:"text-xs",children:eV[e]},e))]},e))})]})]}),"message_received"===e.type?(0,t.jsxs)("div",{className:"min-w-[120px] flex-1",children:[(0,t.jsx)(v.J,{className:"text-[10px] text-muted-foreground",children:"Dossier mail (optionnel)"}),(0,t.jsx)(sA,{kind:su("folder_id"),placeholder:"Choisir un dossier…",value:e.folder_id??"",disabled:r,onChange:a=>s({...e,folder_id:a||void 0})})]}):null,"label_added"===(l=e.type)||"label_removed"===l?(0,t.jsxs)("div",{className:"min-w-[120px] flex-1",children:[(0,t.jsx)(v.J,{className:"text-[10px] text-muted-foreground",children:"Libell\xe9 mail"}),(0,t.jsx)(sA,{kind:su("label"),placeholder:"Nom libell\xe9",value:e.label??"",disabled:r,onChange:a=>s({...e,label:a||void 0})})]}):null,e.type.startsWith("drive_")?(0,t.jsxs)("div",{className:"min-w-[120px] flex-1",children:[(0,t.jsx)(v.J,{className:"text-[10px] text-muted-foreground",children:"Dossier Drive (optionnel)"}),(0,t.jsx)(sA,{kind:su("folder_path"),placeholder:"/Documents",value:e.folder_path??"",disabled:r,onChange:a=>s({...e,folder_path:a||void 0})})]}):null,e.type.startsWith("contact_")?(0,t.jsxs)("div",{className:"min-w-[120px] flex-1",children:[(0,t.jsx)(v.J,{className:"text-[10px] text-muted-foreground",children:"Libell\xe9 contact (optionnel)"}),(0,t.jsx)(sA,{kind:su("contact_label"),placeholder:"Libell\xe9",value:e.contact_label??"",disabled:r,onChange:a=>s({...e,contact_label:a||void 0})})]}):null,e.type.startsWith("calendar_")?(0,t.jsxs)("div",{className:"min-w-[120px] flex-1",children:[(0,t.jsx)(v.J,{className:"text-[10px] text-muted-foreground",children:"Agenda (optionnel)"}),(0,t.jsx)(sA,{kind:su("calendar_id"),placeholder:"Choisir un agenda…",value:e.calendar_id??"",disabled:r,onChange:a=>s({...e,calendar_id:a||void 0})})]}):null,(0,t.jsx)(x.$,{type:"button",variant:"ghost",size:"icon",className:"size-8 shrink-0",disabled:r,title:"Retirer ce d\xe9clencheur",onClick:a,children:(0,t.jsx)(p.A,{className:"size-3.5"})})]})}let sR=(0,d.createContext)(["mail"]);function sE({triggers:e,children:s}){let a=(0,d.useMemo)(()=>eX(e),[e]);return(0,t.jsx)(sR.Provider,{value:a,children:s})}function sP({node:e,allRules:s,onUpdate:a,onDelete:r,triggers:l}){let n=(0,d.useContext)(sR),i=l?eX(l):n,o=eG(i),c=eZ(i),u=eX(l??{operator:"or",groups:[{operator:"and",items:[]}]})[0]??"mail";if(!e||"start"===e.type||"end"===e.type)return(0,t.jsx)("div",{className:"flex h-full items-center justify-center p-4 text-center text-xs text-muted-foreground",children:"S\xe9lectionnez un nœud pour le configurer"});let m=e.type,h=e.data;function g(s){a(e.id,{...h,...s})}return(0,t.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-2 border-b border-border px-3 py-2",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:"text-sm font-medium",children:sm[m]}),(0,t.jsx)("p",{className:"truncate font-mono text-[10px] text-muted-foreground",children:e.id})]}),(0,t.jsx)(x.$,{type:"button",variant:"ghost",size:"icon",className:"size-8 shrink-0 text-muted-foreground hover:text-destructive",title:"Supprimer le nœud",onClick:()=>r(e.id),children:(0,t.jsx)(p.A,{className:"size-4"})})]}),(0,t.jsxs)("div",{className:"flex-1 space-y-3 overflow-y-auto p-3",children:["condition"===m||"label_check"===m?(0,t.jsx)(sI,{fields:o,data:"label_check"===m?{field:"label",operator:"not_has"===h.operator?"not_has":"has",value:String(h.label??"")}:h,onChange:g}):null,"switch"===m?(0,t.jsx)(sF,{fields:o,data:h,onChange:g}):null,"llm_check"===m?(0,t.jsx)(sq,{data:h,onChange:g}):null,"actions"===m?(0,t.jsx)(sL,{actionTypes:c,primaryDomain:u,data:h,onChange:g}):null,"set_var"===m?(0,t.jsx)(sT,{data:h,onChange:g}):null,"call_function"===m||"call_rule"===m?(0,t.jsx)(sD,{data:h,allRules:s,kindFilter:"call_function"===m?"function":"rule",onChange:g}):null]})]})}function sI({fields:e,data:s,onChange:a}){var r;let l=si(r=s.field)?sr:so(r)||sd(r)?sn:sl,n=sc(s.field,s.operator),i="regex"===s.operator||"not_regex"===s.operator;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(sU,{label:"Champ",value:s.field,fields:e,onChange:e=>{a({field:e,operator:si(e)?"has":so(e)||sd(e)?"equals":"contains",value:so(e)?"true":""})}}),(0,t.jsx)(sJ,{label:si(s.field)?"Mode":"Op\xe9rateur",value:s.operator,options:l,onChange:e=>a({operator:e})}),(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-xs",children:si(s.field)?"Libell\xe9":i?"Expression r\xe9guli\xe8re":"Valeur"}),(0,t.jsx)("div",{className:"mt-1",children:so(s.field)?(0,t.jsx)(sJ,{label:"",value:s.value||"true",options:[{value:"true",label:"Oui"},{value:"false",label:"Non"}],onChange:e=>a({value:e})}):(0,t.jsx)(sA,{kind:n,value:s.value,placeholder:i?"(?i)facture|invoice":void 0,onChange:e=>a({value:e})})})]})]})}function sF({fields:e,data:s,onChange:a}){let r=s.cases??[],l=sc(s.field,"contains");return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(sU,{label:"Champ",value:s.field,fields:e,onChange:e=>a({field:e})}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Cas de sortie"}),r.map((e,s)=>(0,t.jsxs)("div",{className:"flex gap-1",children:[(0,t.jsx)(sA,{kind:l,className:"flex-1",placeholder:"Valeur",value:e.value,onChange:t=>{let l=[...r];l[s]={...e,value:t},a({cases:l})}}),(0,t.jsx)(g.p,{className:"h-8 flex-1 text-xs",placeholder:"Libell\xe9",value:e.label??"",onChange:t=>{let l=[...r];l[s]={...e,label:t.target.value},a({cases:l})}}),(0,t.jsx)(x.$,{type:"button",variant:"ghost",size:"icon",className:"size-8 shrink-0",onClick:()=>a({cases:r.filter((e,a)=>a!==s)}),children:(0,t.jsx)(p.A,{className:"size-3.5"})})]},s)),(0,t.jsxs)(x.$,{type:"button",variant:"outline",size:"sm",className:"h-7 w-full text-xs",onClick:()=>a({cases:[...r,{value:"",label:""}]}),children:[(0,t.jsx)(H.A,{className:"mr-1 size-3"}),"Ajouter un cas"]})]})]})}function sq({data:e,onChange:s}){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Prompt"}),(0,t.jsx)("textarea",{className:"mt-1 min-h-20 w-full rounded-md border border-input bg-background px-2 py-1.5 text-xs",value:e.prompt,onChange:e=>s({prompt:e.target.value})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Fournisseur (optionnel)"}),(0,t.jsx)(g.p,{className:"mt-1 h-8 text-xs",value:e.provider??"",onChange:e=>s({provider:e.target.value})})]})]})}function sL({actionTypes:e,primaryDomain:s,data:a,onChange:r}){let l=a.actions??[],n=["universal","mail","drive","contacts"];return(0,t.jsxs)("div",{className:"space-y-2",children:[l.map((s,a)=>{let i=e.find(e=>e.value===s.type),o=function(e){switch(e){case"label":case"remove_label":return"label";case"move":return"folder";case"forward":case"send_mail":case"drive_share":case"calendar_add_attendee":case"calendar_notify_attendees":return"email";case"drive_move":case"drive_copy":return"drive_path";case"contact_add_label":case"contact_remove_label":return"contact_label";case"calendar_update_title":default:return"none";case"webhook":return"webhook"}}(s.type);return(0,t.jsxs)("div",{className:"space-y-1 rounded border border-border/60 p-2",children:[(0,t.jsxs)(f.l6,{value:s.type,onValueChange:e=>{let t=[...l];t[a]={...s,type:e,value:""},r({actions:t})},children:[(0,t.jsx)(f.bq,{className:"h-8 text-xs",children:(0,t.jsx)(f.yv,{})}),(0,t.jsx)(f.gC,{children:n.map(s=>{let a=e.filter(e=>e.domain===s);if(0===a.length)return null;let r="universal"===s?"Commun":eU[s];return(0,t.jsxs)(f.s3,{children:[(0,t.jsx)(f.TR,{className:"text-[10px]",children:r}),a.map(e=>(0,t.jsx)(f.eb,{value:e.value,className:"text-xs",children:e.label},e.value))]},s)})})]}),i?.needsValue?(0,t.jsx)(sA,{kind:o,value:s.value,placeholder:i.placeholder,onChange:e=>{let t=[...l];t[a]={...s,value:e},r({actions:t})}}):null,(0,t.jsx)(x.$,{type:"button",variant:"ghost",size:"sm",className:"h-6 text-xs",onClick:()=>r({actions:l.filter((e,s)=>s!==a)}),children:"Retirer"})]},a)}),(0,t.jsxs)(x.$,{type:"button",variant:"outline",size:"sm",className:"h-7 w-full text-xs",onClick:()=>r({actions:[...l,function(e="mail"){return{type:eY(e),value:""}}(s)]}),children:[(0,t.jsx)(H.A,{className:"mr-1 size-3"}),"Ajouter une action"]})]})}function sT({data:e,onChange:s}){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Nom"}),(0,t.jsx)(g.p,{className:"mt-1 h-8 font-mono text-xs",value:e.name,onChange:e=>s({name:e.target.value})})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)(v.J,{className:"text-xs",children:["Valeur (","{{var}}"," pour interpolation)"]}),(0,t.jsx)(g.p,{className:"mt-1 h-8 font-mono text-xs",value:e.value,onChange:e=>s({value:e.target.value})})]})]})}function sD({data:e,allRules:s,kindFilter:a,onChange:r}){let l=s.filter(e=>(e.rule_kind??"rule")===a);return(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-xs",children:"function"===a?"Fonction":"R\xe8gle"}),(0,t.jsxs)(f.l6,{value:e.rule_id||void 0,onValueChange:e=>r({rule_id:e}),children:[(0,t.jsx)(f.bq,{className:"mt-1 h-8 text-xs",children:(0,t.jsx)(f.yv,{placeholder:"Choisir…"})}),(0,t.jsx)(f.gC,{children:l.map(e=>(0,t.jsx)(f.eb,{value:e.id,className:"text-xs",children:e.name},e.id))})]})]})}function sU({label:e,value:s,fields:a,onChange:r}){let l=[...new Set(a.map(e=>e.domain))];return(0,t.jsxs)("div",{children:[e?(0,t.jsx)(v.J,{className:"text-xs",children:e}):null,(0,t.jsxs)(f.l6,{value:s,onValueChange:r,children:[(0,t.jsx)(f.bq,{className:e?"mt-1 h-8 text-xs":"h-8 text-xs",children:(0,t.jsx)(f.yv,{})}),(0,t.jsx)(f.gC,{children:l.map(e=>(0,t.jsxs)(f.s3,{children:[(0,t.jsx)(f.TR,{className:"text-[10px]",children:eU[e]}),a.filter(s=>s.domain===e).map(e=>(0,t.jsx)(f.eb,{value:e.value,className:"text-xs",children:e.label},e.value))]},e))})]})]})}function sJ({label:e,value:s,options:a,onChange:r}){return(0,t.jsxs)("div",{children:[e?(0,t.jsx)(v.J,{className:"text-xs",children:e}):null,(0,t.jsxs)(f.l6,{value:s,onValueChange:r,children:[(0,t.jsx)(f.bq,{className:e?"mt-1 h-8 text-xs":"h-8 text-xs",children:(0,t.jsx)(f.yv,{})}),(0,t.jsx)(f.gC,{children:a.map(e=>(0,t.jsx)(f.eb,{value:e.value,className:"text-xs",children:e.label},e.value))})]})]})}function sV(e){return(0,t.jsx)(se.Ln,{children:(0,t.jsx)(sK,{...e})})}function sK({state:e,allRules:s,onChange:a,readOnly:r}){let{setCenter:l,getNodes:n}=(0,se.VH)(),i=(0,d.useMemo)(()=>e.workflow.nodes.map(e=>({id:e.id,type:e.type,position:e.position,data:e.data})),[e.workflow.nodes]),o=(0,d.useMemo)(()=>e.workflow.edges.map(e=>({id:e.id,source:e.source,target:e.target,sourceHandle:e.sourceHandle??null,animated:!0})),[e.workflow.edges]),[c,u,m]=(0,se.ck)(i),[p,h,f]=(0,se.fM)(o),[b,j]=(0,d.useState)(null),y=c.find(e=>e.id===b)??null,N=(0,d.useCallback)((s,t)=>{var r,l,n;a({...e,workflow:(r=e.rule_kind,l=e.workflow.triggers,n=e.workflow.variables,{version:1,kind:r,triggers:l,variables:n,nodes:s.map(e=>({id:e.id,type:e.type,position:e.position,data:e.data??{}})),edges:t.map(e=>({id:e.id,source:e.source,target:e.target,sourceHandle:e.sourceHandle??void 0}))})})},[a,e]),_=(0,d.useCallback)(e=>{j(e),u(s=>s.map(s=>({...s,selected:null!==e&&s.id===e})))},[u]),k=(0,d.useCallback)(e=>{requestAnimationFrame(()=>{let s=n().find(s=>s.id===e);if(!s)return;let a=s.measured?.width??200,t=s.measured?.height??80;l(s.position.x+a/2,s.position.y+t/2,{zoom:1,duration:300})})},[n,l]),C=(0,d.useCallback)(e=>{if(r)return;let s=(0,ss.rN)({...e,animated:!0,id:e2("e")},p);h(s),N(c,s)},[p,c,r,h,N]),w=(0,d.useCallback)(()=>{N(c,p)},[p,c,N]);return(0,t.jsx)(sE,{triggers:e.workflow.triggers,children:(0,t.jsxs)("div",{className:"flex min-h-[520px] flex-col gap-3 lg:flex-row",children:[(0,t.jsxs)("aside",{className:"w-full shrink-0 space-y-2 lg:w-52",children:[(0,t.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:"Ajouter un nœud"}),(0,t.jsx)("div",{className:"space-y-1",children:sx.map(e=>(0,t.jsxs)(x.$,{type:"button",variant:"outline",size:"sm",className:"h-auto w-full min-w-0 justify-start px-2 py-1.5 text-left text-xs",disabled:r,onClick:()=>(function(e){var s;if(r||"start"===e||"end"===e)return;let a=c[c.length-1],t=a?a.position.x+220:300,l=(s={x:t,y:a?a.position.y:200},{id:e2(e),type:e,position:s,data:function(e){switch(e){case"condition":return{field:"subject",operator:"contains",value:""};case"label_check":return{label:"",operator:"has"};case"switch":return{field:"subject",cases:[{value:"facture",label:"Factures"},{value:"newsletter",label:"Newsletters"}]};case"llm_check":return{prompt:"Ce message est-il du spam ou une arnaque ?",provider:"",model:""};case"actions":return{actions:[{type:"label",value:""}]};case"set_var":return{name:"result",value:"{{subject}}"};case"call_function":case"call_rule":return{rule_id:""};default:return{}}}(e)}),n=c.map(e=>({...e,selected:!1})).concat({...l,selected:!0});u(n),N(n,p),_(l.id),setTimeout(()=>k(l.id),50)})(e),title:sp[e],children:[(0,t.jsx)(H.A,{className:"mr-1.5 mt-0.5 size-3 shrink-0 self-start"}),(0,t.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,t.jsx)("span",{className:"block font-medium leading-tight",children:sm[e]}),(0,t.jsx)("span",{className:"mt-0.5 block text-wrap break-words text-[10px] leading-snug text-muted-foreground",children:sp[e]})]})]},e))}),(0,t.jsx)(sB,{variables:e.workflow.variables,disabled:r,onChange:function(s){a({...e,workflow:{...e.workflow,variables:s}})}})]}),(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col gap-3",children:[(0,t.jsxs)("div",{className:"grid gap-2 sm:grid-cols-2 lg:grid-cols-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Nom"}),(0,t.jsx)(g.p,{className:"mt-1 h-8 text-xs",value:e.name,disabled:r,onChange:s=>a({...e,name:s.target.value})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Priorit\xe9"}),(0,t.jsx)(g.p,{type:"number",className:"mt-1 h-8 text-xs",value:e.priority,disabled:r,onChange:s=>a({...e,priority:Number(s.target.value)||0})})]}),(0,t.jsxs)("div",{className:"flex items-end gap-2 pb-1",children:[(0,t.jsx)(sa.d,{checked:e.is_active,disabled:r,onCheckedChange:s=>a({...e,is_active:s})}),(0,t.jsx)(v.J,{className:"text-xs",children:"Active"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Type"}),(0,t.jsx)(g.p,{className:"mt-1 h-8 text-xs",value:"function"===e.rule_kind?"Fonction":"R\xe8gle",readOnly:!0})]})]}),"rule"===e.rule_kind?(0,t.jsx)(sz,{triggers:e.workflow.triggers,disabled:r,onChange:s=>a({...e,workflow:{...e.workflow,triggers:s}})}):null,(0,t.jsx)("div",{className:"h-[420px] overflow-hidden rounded-lg border border-border",children:(0,t.jsxs)(se.Gc,{nodes:c,edges:p,nodeTypes:sy,onNodesChange:r?void 0:m,onEdgesChange:r?void 0:f,onConnect:C,onNodeDragStop:w,onNodeClick:(e,s)=>_(s.id),onPaneClick:()=>_(null),fitView:!0,proOptions:{hideAttribution:!0},children:[(0,t.jsx)(se.VS,{gap:16}),(0,t.jsx)(se.H2,{showInteractive:!r}),(0,t.jsx)(se.of,{pannable:!0,zoomable:!0})]})})]}),(0,t.jsx)("aside",{className:"w-full shrink-0 overflow-hidden rounded-lg border border-border lg:w-64",children:(0,t.jsx)(sP,{node:y,allRules:s,triggers:e.workflow.triggers,onUpdate:function(e,s){let a=c.map(a=>a.id===e?{...a,data:s}:a);u(a),N(a,p)},onDelete:function(e){let s=c.find(s=>s.id===e);if(!s||"start"===s.type||"end"===s.type)return;let a=c.filter(s=>s.id!==e),t=p.filter(s=>s.source!==e&&s.target!==e);u(a),h(t),N(a,t),_(null)}})})]})})}function sB({variables:e,onChange:s,disabled:a}){return(0,t.jsxs)("div",{className:"mt-4 space-y-2 rounded-lg border border-border/60 p-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1 text-xs font-medium",children:[(0,t.jsx)(st.A,{className:"size-3.5"}),"Variables d'ex\xe9cution"]}),e.map((r,l)=>(0,t.jsxs)("div",{className:"flex gap-1",children:[(0,t.jsx)(g.p,{className:"h-7 flex-1 font-mono text-[10px]",placeholder:"nom",value:r.name,disabled:a,onChange:a=>{let t=[...e];t[l]={...r,name:a.target.value},s(t)}}),(0,t.jsx)(g.p,{className:"h-7 flex-1 text-[10px]",placeholder:"d\xe9faut",value:r.default??"",disabled:a,onChange:a=>{let t=[...e];t[l]={...r,default:a.target.value},s(t)}})]},l)),(0,t.jsxs)(x.$,{type:"button",variant:"ghost",size:"sm",className:"h-7 w-full text-xs",disabled:a,onClick:()=>s([...e,{name:"",type:"string",default:""}]),children:[(0,t.jsx)(H.A,{className:"mr-1 size-3"}),"Variable"]})]})}var sO=a(24079);function sW({state:e,ruleId:s}){let a=(0,S.n)({mutationFn:e=>A.uE.post("/mail/rules/simulate",e)}),[r,l]=(0,d.useState)(e8),[n,i]=(0,d.useState)(e4),[o,c]=(0,d.useState)(e3),[u,m]=(0,d.useState)(e6),[p,h]=(0,d.useState)(null),f=(0,d.useMemo)(()=>eX(e.workflow.triggers),[e.workflow.triggers]);async function b(){let t=e9(e);h(await a.mutateAsync({message:r,...s?{rule_id:s}:{rule:{conditions:t.conditions,actions:t.actions,workflow:t.workflow}}}))}return(0,t.jsxs)("div",{className:"space-y-3 rounded-lg border border-border bg-muted/10 p-3",children:[(0,t.jsxs)("p",{className:"text-xs font-medium",children:["Tester avec un \xe9v\xe9nement exemple",f.length>0?(0,t.jsxs)("span",{className:"ml-1 font-normal text-muted-foreground",children:["(",f.map(e=>eU[e]).join(", "),")"]}):null]}),f.includes("mail")?(0,t.jsxs)("div",{className:"space-y-2 rounded-md border border-border/50 p-2",children:[(0,t.jsx)("p",{className:"text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:"Mail"}),(0,t.jsxs)("div",{className:"grid gap-2 sm:grid-cols-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-[10px]",children:"De"}),(0,t.jsx)(g.p,{className:"h-8 text-xs",value:r.from,onChange:e=>l({...r,from:e.target.value})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-[10px]",children:"Sujet"}),(0,t.jsx)(g.p,{className:"h-8 text-xs",value:r.subject,onChange:e=>l({...r,subject:e.target.value})})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-[10px]",children:"Corps"}),(0,t.jsx)("textarea",{className:"mt-1 min-h-16 w-full rounded-md border border-input bg-background px-2 py-1.5 text-xs",value:r.body_text,onChange:e=>l({...r,body_text:e.target.value})})]})]}):null,f.includes("drive")?(0,t.jsxs)("div",{className:"space-y-2 rounded-md border border-border/50 p-2",children:[(0,t.jsx)("p",{className:"text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:"Drive"}),(0,t.jsxs)("div",{className:"grid gap-2 sm:grid-cols-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-[10px]",children:"Nom fichier"}),(0,t.jsx)(g.p,{className:"h-8 text-xs",value:n.file_name,onChange:e=>i({...n,file_name:e.target.value})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-[10px]",children:"Chemin"}),(0,t.jsx)(g.p,{className:"h-8 text-xs",value:n.file_path,onChange:e=>i({...n,file_path:e.target.value})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-[10px]",children:"Type MIME"}),(0,t.jsx)(g.p,{className:"h-8 text-xs",value:n.mime_type,onChange:e=>i({...n,mime_type:e.target.value})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-[10px]",children:"Taille (octets)"}),(0,t.jsx)(g.p,{type:"number",className:"h-8 text-xs",value:n.file_size,onChange:e=>i({...n,file_size:Number(e.target.value)||0})})]})]})]}):null,f.includes("contacts")?(0,t.jsxs)("div",{className:"space-y-2 rounded-md border border-border/50 p-2",children:[(0,t.jsx)("p",{className:"text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:"Contacts"}),(0,t.jsxs)("div",{className:"grid gap-2 sm:grid-cols-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-[10px]",children:"Nom"}),(0,t.jsx)(g.p,{className:"h-8 text-xs",value:o.name,onChange:e=>c({...o,name:e.target.value})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-[10px]",children:"E-mail"}),(0,t.jsx)(g.p,{className:"h-8 text-xs",value:o.email,onChange:e=>c({...o,email:e.target.value})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-[10px]",children:"T\xe9l\xe9phone"}),(0,t.jsx)(g.p,{className:"h-8 text-xs",value:o.phone,onChange:e=>c({...o,phone:e.target.value})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-[10px]",children:"Organisation"}),(0,t.jsx)(g.p,{className:"h-8 text-xs",value:o.org,onChange:e=>c({...o,org:e.target.value})})]})]})]}):null,f.includes("agenda")?(0,t.jsxs)("div",{className:"space-y-2 rounded-md border border-border/50 p-2",children:[(0,t.jsx)("p",{className:"text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:eU.agenda}),(0,t.jsxs)("div",{className:"grid gap-2 sm:grid-cols-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-[10px]",children:"Titre"}),(0,t.jsx)(g.p,{className:"h-8 text-xs",value:u.title,onChange:e=>m({...u,title:e.target.value})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-[10px]",children:"Lieu"}),(0,t.jsx)(g.p,{className:"h-8 text-xs",value:u.location,onChange:e=>m({...u,location:e.target.value})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-[10px]",children:"Organisateur"}),(0,t.jsx)(g.p,{className:"h-8 text-xs",value:u.organizer,onChange:e=>m({...u,organizer:e.target.value})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-[10px]",children:"Participant"}),(0,t.jsx)(g.p,{className:"h-8 text-xs",value:u.attendee,onChange:e=>m({...u,attendee:e.target.value})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-[10px]",children:"Calendrier"}),(0,t.jsx)(g.p,{className:"h-8 text-xs",value:u.calendar_id,onChange:e=>m({...u,calendar_id:e.target.value})})]})]})]}):null,f.includes("drive")||f.includes("contacts")||f.includes("agenda")?(0,t.jsx)("p",{className:"text-[10px] text-muted-foreground italic",children:"La simulation API reste orient\xe9e mail ; l'ex\xe9cution r\xe9elle Drive, contacts et agenda est active c\xf4t\xe9 serveur \xe0 la r\xe9ception des \xe9v\xe9nements."}):null,(0,t.jsxs)(x.$,{type:"button",size:"sm",disabled:a.isPending,onClick:b,children:[(0,t.jsx)(sO.A,{className:"mr-1 size-3.5"}),"Simuler"]}),p?(0,t.jsxs)("div",{className:"space-y-2 rounded-md border border-border/60 bg-background p-2 text-xs",children:[(0,t.jsxs)("p",{children:["Correspondance :"," ",(0,t.jsx)("span",{className:p.matched?"text-emerald-600":"text-muted-foreground",children:p.matched?"oui":"non"})]}),p.steps?.length?(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium",children:"Parcours"}),(0,t.jsx)("ol",{className:"mt-1 list-decimal pl-4 text-muted-foreground",children:p.steps.map((e,s)=>(0,t.jsxs)("li",{children:[e.node_type,e.handle?` → ${e.handle}`:""]},s))})]}):null,p.actions?.length?(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium",children:"Actions"}),(0,t.jsx)("ul",{className:"mt-1 space-y-0.5 text-muted-foreground",children:p.actions.map((e,s)=>(0,t.jsxs)("li",{children:[e.type,e.value?`: ${e.value}`:""," ",e.ok?"✓":`✗ ${e.error??""}`]},s))})]}):null]}):null]})}function sQ(){let e,s,a,{ready:r,authenticated:l}=(0,M.v)(),{data:n=[],isFetching:i,isError:c,refetch:u,isPending:m}=function(){let{ready:e,authenticated:s}=(0,M.v)();return(0,z.I)({queryKey:["mail-rules"],queryFn:async()=>{let e=await A.uE.get("/mail/rules");return Array.isArray(e)?e:e.rules??[]},staleTime:6e4,enabled:e&&s,retry:1})}(),p=(e=(0,q.jE)(),(0,S.n)({mutationFn:e=>A.uE.post("/mail/rules",e),onSuccess:()=>{e.invalidateQueries({queryKey:["mail-rules"]})}})),h=(s=(0,q.jE)(),(0,S.n)({mutationFn:({ruleId:e,...s})=>A.uE.put(`/mail/rules/${e}`,s),onSuccess:()=>{s.invalidateQueries({queryKey:["mail-rules"]})}})),g=(a=(0,q.jE)(),(0,S.n)({mutationFn:e=>A.uE.delete(`/mail/rules/${e}`),onSuccess:()=>{a.invalidateQueries({queryKey:["mail-rules"]})}})),[v,f]=(0,d.useState)(!1),[b,j]=(0,d.useState)(null),[y,N]=(0,d.useState)(()=>e5("rule")),_=r&&l&&m&&0===n.length,k=(0,d.useMemo)(()=>n.filter(e=>(e.rule_kind??"rule")==="rule"),[n]),C=(0,d.useMemo)(()=>n.filter(e=>"function"===e.rule_kind),[n]);function w(e){j(null),N(e5(e)),f(!0)}function $(e){var s;let a=e.rule_kind??"rule",t=(s=e.workflow,s&&"object"==typeof s&&Array.isArray(s.nodes)&&0!==s.nodes.length?{version:1,kind:s.kind??a,triggers:s.triggers??{operator:"or",groups:[{operator:"and",items:[{type:"message_received"}]}]},variables:s.variables??[],nodes:s.nodes,edges:s.edges??[]}:null);j(e.id),N({name:e.name,priority:e.priority,is_active:e.is_active,rule_kind:a,account_id:e.account_id,workflow:t??e5(a).workflow}),f(!0)}async function R(){let e=e9(y);b?await h.mutateAsync({ruleId:b,...e}):await p.mutateAsync(e),f(!1)}return(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(o.v,{isFetching:i,isError:c,onRetry:()=>u()}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsxs)(x.$,{type:"button",size:"sm",onClick:()=>w("rule"),children:[(0,t.jsx)(H.A,{className:"mr-1 size-3.5"}),"Nouvelle r\xe8gle"]}),(0,t.jsxs)(x.$,{type:"button",size:"sm",variant:"outline",onClick:()=>w("function"),children:[(0,t.jsx)(eq.A,{className:"mr-1 size-3.5"}),"Nouvelle fonction"]})]}),_?null:0===n.length?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Aucune r\xe8gle. Cr\xe9ez une r\xe8gle graphique avec d\xe9clencheurs, conditions et actions."}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(sH,{title:"R\xe8gles actives",icon:eL.A,items:k,onEdit:$,onDelete:e=>g.mutate(e)}),C.length>0?(0,t.jsx)(sH,{title:"Fonctions r\xe9utilisables",icon:eq.A,items:C,onEdit:$,onDelete:e=>g.mutate(e)}):null]}),(0,t.jsx)(eT.lG,{open:v,onOpenChange:f,children:(0,t.jsxs)(eT.Cf,{className:"flex max-h-[95vh] max-w-[95vw] flex-col gap-0 overflow-hidden p-0 sm:max-w-6xl",children:[(0,t.jsx)(eT.c7,{className:"border-b border-border px-4 py-3",children:(0,t.jsxs)(eT.L3,{className:"text-base",children:[b?"Modifier":"Cr\xe9er"," ","function"===y.rule_kind?"une fonction":"une r\xe8gle"]})}),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto p-4",children:(0,t.jsxs)(sS,{children:[(0,t.jsx)(sV,{state:y,allRules:n,onChange:N},b??`new-${y.rule_kind}`),(0,t.jsx)("div",{className:"mt-4",children:(0,t.jsx)(sW,{state:y,ruleId:b??void 0})})]})}),(0,t.jsxs)("div",{className:"flex justify-end gap-2 border-t border-border px-4 py-3",children:[(0,t.jsx)(x.$,{type:"button",variant:"outline",onClick:()=>f(!1),children:"Annuler"}),(0,t.jsx)(x.$,{type:"button",disabled:!y.name.trim()||p.isPending||h.isPending,onClick:R,children:"Enregistrer"})]})]})})]})}function sH({title:e,icon:s,items:a,onEdit:r,onDelete:l}){return 0===a.length?null:(0,t.jsxs)("section",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium",children:[(0,t.jsx)(s,{className:"size-4 opacity-70"}),e]}),(0,t.jsx)("ul",{className:"divide-y divide-border rounded-lg border border-border",children:a.map(e=>(0,t.jsxs)("li",{className:"flex items-start justify-between gap-2 px-3 py-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:"text-sm font-medium",children:e.name}),(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Priorit\xe9 ",e.priority,!1===e.is_active?" \xb7 inactive":"",null!=e.match_count?` \xb7 ${e.match_count} ex\xe9cutions`:"",e.workflow?" \xb7 graphique":" \xb7 legacy"]})]}),(0,t.jsxs)("div",{className:"flex shrink-0 gap-1",children:[(0,t.jsx)(x.$,{type:"button",variant:"ghost",size:"icon",onClick:()=>r(e),children:(0,t.jsx)(m.A,{className:"size-4"})}),(0,t.jsx)(x.$,{type:"button",variant:"ghost",size:"icon",onClick:()=>l(e.id),children:(0,t.jsx)(p.A,{className:"size-4"})})]})]},e.id))})]})}var sX=a(18584),sG=a(89032);let sZ=[{id:"event",label:"\xc9v\xe9nement",description:"M\xe9tadonn\xe9es communes \xe0 tout type d'automatisation.",domain:"universal",variables:[{token:"$event.type",label:"Type",description:"Type d'\xe9v\xe9nement d\xe9clencheur (ex. message_received, drive_file_created).",example:"drive_file_created"},{token:"$event.domain",label:"Domaine",description:"Domaine source : mail, drive, contacts ou agenda.",example:"drive"},{token:"$date",label:"Date",description:"Horodatage ISO 8601 de l'\xe9v\xe9nement.",example:"2026-05-22T10:00:00Z"}]},{id:"sender",label:"Exp\xe9diteur",description:"Identit\xe9 de l'exp\xe9diteur du message d\xe9clencheur.",domain:"mail",variables:[{token:"$sender.name",label:"Nom",description:"Nom affich\xe9 de l'exp\xe9diteur.",example:"Alice Example"},{token:"$sender.email",label:"E-mail",description:"Adresse e-mail de l'exp\xe9diteur.",example:"alice@example.com"}]},{id:"message",label:"Message",description:"M\xe9tadonn\xe9es principales du mail.",domain:"mail",variables:[{token:"$subject",label:"Objet",description:"Objet du message.",example:"Hello World"},{token:"$message_id",label:"Identifiant",description:"Identifiant interne Ultimail du message.",example:"msg-123"}]},{id:"body",label:"Contenu",description:"Corps du message, en texte ou HTML.",domain:"mail",variables:[{token:"$body.textContent",label:"Texte brut",description:"Corps du message sans mise en forme.",example:"Plain body"},{token:"$body.htmlContent",label:"HTML",description:"Corps du message avec balises HTML.",example:"<p>HTML body</p>"}]},{id:"recipients",label:"Destinataires",description:"Adresses en copie directe (To).",domain:"mail",variables:[{token:"$recipients.to",label:"To",description:"Liste des destinataires, s\xe9par\xe9s par des virgules.",example:"bob@example.com, carol@example.com"}]},{id:"drive",label:"Fichier Drive",description:"M\xe9tadonn\xe9es du fichier ou dossier d\xe9clencheur.",domain:"drive",variables:[{token:"$drive.file_name",label:"Nom",description:"Nom du fichier ou dossier.",example:"rapport.pdf"},{token:"$drive.file_path",label:"Chemin",description:"Chemin complet dans le Drive.",example:"/Documents/rapport.pdf"},{token:"$drive.mime_type",label:"Type MIME",description:"Type MIME du fichier.",example:"application/pdf"},{token:"$drive.file_size",label:"Taille",description:"Taille en octets.",example:"102400"},{token:"$drive.is_folder",label:"Dossier",description:"true si l'\xe9l\xe9ment est un dossier.",example:"false"}]},{id:"contact",label:"Contact",description:"M\xe9tadonn\xe9es du contact d\xe9clencheur.",domain:"contacts",variables:[{token:"$contact.name",label:"Nom",description:"Nom affich\xe9 du contact.",example:"Alice Example"},{token:"$contact.email",label:"E-mail",description:"Adresse e-mail principale.",example:"alice@example.com"},{token:"$contact.phone",label:"T\xe9l\xe9phone",description:"Num\xe9ro de t\xe9l\xe9phone principal.",example:"+33 6 00 00 00 00"},{token:"$contact.org",label:"Organisation",description:"Entreprise ou organisation.",example:"Example Corp"},{token:"$contact.id",label:"Identifiant",description:"Identifiant interne du contact.",example:"contact-42"}]},{id:"calendar",label:"\xc9v\xe9nement agenda",description:"M\xe9tadonn\xe9es de l'\xe9v\xe9nement d\xe9clencheur.",domain:"agenda",variables:[{token:"$calendar.event_title",label:"Titre",description:"Titre ou objet de l'\xe9v\xe9nement.",example:"R\xe9union \xe9quipe"},{token:"$calendar.event_location",label:"Lieu",description:"Lieu ou salle de l'\xe9v\xe9nement.",example:"Salle A"},{token:"$calendar.event_organizer",label:"Organisateur",description:"Adresse e-mail de l'organisateur.",example:"alice@example.com"},{token:"$calendar.event_start",label:"D\xe9but",description:"Date/heure de d\xe9but (ISO 8601).",example:"2026-06-15T10:00:00Z"},{token:"$calendar.event_end",label:"Fin",description:"Date/heure de fin (ISO 8601).",example:"2026-06-15T11:00:00Z"},{token:"$calendar.event_all_day",label:"Journ\xe9e enti\xe8re",description:"true si l'\xe9v\xe9nement dure toute la journ\xe9e.",example:"false"},{token:"$calendar.calendar_id",label:"Agenda",description:"Identifiant de l'agenda source.",example:"work"},{token:"$calendar.event_uid",label:"Identifiant",description:"UID CalDAV de l'\xe9v\xe9nement.",example:"team-sync-2026-06-15"},{token:"$calendar.meet_url",label:"Lien visio",description:"URL de visioconf\xe9rence associ\xe9e, le cas \xe9ch\xe9ant.",example:"https://meet.example.com/abc-def"}]}];function sY(e,s=!0){let a=new Set(e);return s&&a.add("universal"),sZ.filter(e=>a.has(e.domain))}sZ.flatMap(e=>e.variables);let s0={mail:'{"text":"Nouveau mail de $sender.name : $subject"}',drive:'{"text":"Fichier Drive $drive.file_name ajout\xe9 dans $drive.file_path"}',contacts:'{"text":"Contact $contact.name ($contact.email) mis \xe0 jour"}',agenda:'{"text":"\xc9v\xe9nement $calendar.event_title le $calendar.event_start"}'};var s1=a(37094),s2=a(78224),s5=a(36042);let s4={mail:(0,s5.w)("/ultimail-mark.svg"),drive:(0,s5.w)("/ultidrive-mark.svg"),contacts:(0,s5.w)("/contacts-mark.svg"),agenda:(0,s5.w)("/agenda-mark.svg")};function s3({domain:e,className:s,alt:a}){let r=a??eU[e];return"agenda"===e?(0,t.jsx)(s2.q,{className:(0,ex.cn)("shrink-0 object-contain",s),alt:r}):(0,t.jsx)("img",{src:s4[e],alt:r,className:(0,ex.cn)("shrink-0 object-contain",s),draggable:!1})}function s6({domains:e,className:s,markClassName:a="size-5"}){return 0===e.length?null:(0,t.jsx)("div",{className:(0,ex.cn)("flex shrink-0 items-center gap-1",s),children:e.map(e=>(0,t.jsx)(s3,{domain:e,className:a,alt:""},e))})}function s8({active:e,onClick:s,domain:a,label:r}){return(0,t.jsxs)("button",{type:"button",onClick:s,className:(0,ex.cn)("inline-flex items-center gap-2 rounded-md border px-2.5 py-1.5 text-xs transition-colors",e?"border-primary bg-primary/10 text-primary":"border-border bg-background text-muted-foreground hover:bg-muted"),children:["all"===a?(0,t.jsx)(s1.A,{className:"size-4 shrink-0 opacity-80","aria-hidden":!0}):(0,t.jsx)(s3,{domain:a,className:"size-4",alt:""}),(0,t.jsx)("span",{children:r})]})}let s9=["all","mail","drive","contacts","agenda"];function s7({variable:e,copied:s,onCopy:a}){return(0,t.jsxs)("button",{type:"button",title:`${e.label} — ${e.description}`,"aria-label":`Copier ${e.token}`,onClick:()=>a(e.token),className:(0,ex.cn)("inline-flex max-w-full items-center gap-1 rounded-md border px-2 py-0.5 font-mono text-[11px] leading-snug transition-colors","border-border bg-muted/40 text-foreground hover:bg-accent hover:text-accent-foreground","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50",s&&"border-primary/40 bg-primary/10 text-primary"),children:[s?(0,t.jsx)(ef.A,{className:"size-3 shrink-0","aria-hidden":!0}):(0,t.jsx)(sX.A,{className:"size-3 shrink-0 opacity-60","aria-hidden":!0}),(0,t.jsx)("span",{className:"truncate",children:e.token})]})}function ae(){let[e,s]=(0,d.useState)(null),[a,r]=(0,d.useState)("all"),l="all"===a?sY(["mail","drive","contacts","agenda"]):sY([a]),n=(0,d.useCallback)(async e=>{try{await navigator.clipboard.writeText(e),s(e),sG.oR.success(`${e} copi\xe9`),window.setTimeout(()=>{s(s=>s===e?null:s)},1500)}catch{sG.oR.error("Impossible de copier la variable")}},[]);return(0,t.jsxs)("div",{className:"space-y-4 rounded-lg border border-border bg-muted/20 p-4",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm font-medium",children:"Variables du template"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Variables selon le type d'\xe9v\xe9nement (mail, Drive, contacts, agenda). Les variables communes ($event.*, $date) fonctionnent partout."}),(0,t.jsx)("div",{className:"flex flex-wrap gap-1",children:s9.map(e=>(0,t.jsx)(s8,{domain:e,label:"all"===e?"Tout":eU[e],active:a===e,onClick:()=>r(e)},e))})]}),(0,t.jsx)("div",{className:"space-y-4",children:l.map(s=>(0,t.jsxs)("section",{className:"space-y-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-xs font-medium",children:s.label}),(0,t.jsx)("p",{className:"text-[11px] text-muted-foreground",children:s.description})]}),(0,t.jsx)("ul",{className:"space-y-2",children:s.variables.map(s=>(0,t.jsxs)("li",{className:"flex flex-col gap-1.5 sm:flex-row sm:items-start sm:gap-3",children:[(0,t.jsx)(s7,{variable:s,copied:e===s.token,onCopy:n}),(0,t.jsxs)("div",{className:"min-w-0 flex-1 text-[11px] leading-snug",children:[(0,t.jsx)("span",{className:"font-medium text-foreground",children:s.label}),(0,t.jsxs)("span",{className:"text-muted-foreground",children:[" — ",s.description]}),s.example?(0,t.jsxs)("span",{className:"mt-0.5 block font-mono text-[10px] text-muted-foreground/80",children:["Ex. ",s.example]}):null]})]},s.token))})]},s.id))})]})}var as=a(4023),aa=a(30925),at=a(12551),ar=a(26159),al=a(63639),an=a(22854),ai=a(45041);function ao({legend:e,children:s,className:a,legendClassName:r,contentClassName:l}){return(0,t.jsxs)("fieldset",{className:(0,ex.cn)("m-0 min-w-0 rounded-md border border-border p-0",a),children:[(0,t.jsx)("legend",{className:(0,ex.cn)("ml-2.5 w-auto max-w-[calc(100%-1.25rem)] px-1 text-sm font-medium leading-none text-foreground",r),children:e}),(0,t.jsx)("div",{className:(0,ex.cn)("space-y-3 px-3 pb-3 pt-2",l),children:s})]})}function ad({scope:e,onChange:s,enabled:a,className:r}){let[l,n]=(0,d.useState)("/"),i=(0,al.GQ)(l,1,"",a&&!e.all_folders),o=(0,d.useMemo)(()=>(i.data?.files??[]).filter(e=>"directory"===e.type),[i.data?.files]),c=(0,d.useMemo)(()=>{let e=(0,ai.x9)(l);if("/"===e)return[{path:"/",label:"Mon Drive"}];let s=e.slice(1).split("/"),a=[{path:"/",label:"Mon Drive"}];for(let e=0;e<s.length;e++){let t="/"+s.slice(0,e+1).join("/");a.push({path:t,label:(0,an._g)(s[e])})}return a},[l]);return a?(0,t.jsxs)(ao,{className:r,legend:"P\xe9rim\xe8tre Drive — dossiers",children:[(0,t.jsxs)("label",{className:"flex items-start gap-2",children:[(0,t.jsx)(aa.S,{checked:e.all_folders,onCheckedChange:a=>s({all_folders:!0===a,folder_paths:!0===a?[]:e.folder_paths}),className:"mt-0.5"}),(0,t.jsxs)("span",{className:"text-sm",children:["Tout le Drive",(0,t.jsx)("span",{className:"mt-0.5 block text-xs text-muted-foreground",children:"Acc\xe8s \xe0 l'int\xe9gralit\xe9 de l'arborescence."})]})]}),!e.all_folders&&(0,t.jsxs)("div",{className:"space-y-3",children:[e.folder_paths.length>0&&(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)(v.J,{className:"text-xs text-muted-foreground",children:"Dossiers autoris\xe9s"}),(0,t.jsx)("ul",{className:"space-y-1",children:e.folder_paths.map(a=>(0,t.jsxs)("li",{className:"flex items-center justify-between gap-2 rounded-md border border-border px-2.5 py-1.5 text-sm",children:[(0,t.jsx)("span",{className:"truncate font-mono text-xs",children:a}),(0,t.jsx)(x.$,{type:"button",variant:"ghost",size:"icon",className:"size-7 shrink-0",onClick:()=>{s({all_folders:!1,folder_paths:e.folder_paths.filter(e=>e!==a)})},"aria-label":`Retirer ${a}`,children:(0,t.jsx)(at.A,{className:"size-3.5"})})]},a))})]}),(0,t.jsxs)("div",{className:"space-y-2 rounded-md border border-dashed border-border p-2.5",children:[(0,t.jsx)(v.J,{className:"text-xs text-muted-foreground",children:"Ajouter un dossier"}),(0,t.jsx)("div",{className:"flex flex-wrap items-center gap-1 text-xs text-muted-foreground",children:c.map((e,s)=>(0,t.jsxs)("span",{className:"inline-flex items-center gap-1",children:[s>0&&(0,t.jsx)(ar.A,{className:"size-3"}),(0,t.jsx)("button",{type:"button",className:"rounded px-1 hover:bg-muted hover:text-foreground",onClick:()=>n(e.path),children:e.label})]},e.path))}),(0,t.jsxs)(x.$,{type:"button",variant:"outline",size:"sm",className:"w-full justify-start",onClick:()=>{let a;return a=(0,ai.x9)(l),void(!e.folder_paths.includes(a)&&s({all_folders:!1,folder_paths:[...e.folder_paths,a]}))},children:[(0,t.jsx)(H.A,{className:"mr-1.5 size-3.5"}),"Autoriser \xab ",c[c.length-1]?.label??"Mon Drive"," \xbb"]}),i.isLoading?(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Chargement…"}):o.length>0?(0,t.jsx)("ul",{className:"max-h-36 space-y-1 overflow-y-auto",children:o.map(e=>(0,t.jsx)("li",{children:(0,t.jsxs)("button",{type:"button",className:"flex w-full items-center gap-2 rounded px-2 py-1.5 text-left text-sm hover:bg-muted/50",onClick:()=>n(e.path),children:[(0,t.jsx)(er.A,{className:"size-4 shrink-0 text-muted-foreground"}),(0,t.jsx)("span",{className:"truncate",children:(0,an._g)(e.name)})]})},e.path))}):null]})]})]}):null}function ac({scope:e,onChange:s,enabled:a,className:r}){let{data:l=[],isLoading:n}=(0,Z.HM)();return a?(0,t.jsxs)(ao,{className:r,legend:"P\xe9rim\xe8tre mail — comptes",children:[(0,t.jsxs)("label",{className:"flex items-start gap-2",children:[(0,t.jsx)(aa.S,{checked:e.all_accounts,onCheckedChange:a=>s({all_accounts:!0===a,account_ids:!0===a?[]:e.account_ids}),className:"mt-0.5"}),(0,t.jsxs)("span",{className:"text-sm",children:["Tous les comptes mail",(0,t.jsx)("span",{className:"mt-0.5 block text-xs text-muted-foreground",children:"Le token pourra acc\xe9der \xe0 l'ensemble des bo\xeetes rattach\xe9es."})]})]}),!e.all_accounts&&(0,t.jsxs)("div",{className:"space-y-2 pl-1",children:[(0,t.jsx)(v.J,{className:"text-xs text-muted-foreground",children:"Comptes autoris\xe9s"}),n?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Chargement des comptes…"}):0===l.length?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Aucun compte mail configur\xe9."}):(0,t.jsx)("ul",{className:"space-y-1.5",children:l.map(a=>(0,t.jsx)("li",{children:(0,t.jsxs)("label",{className:"flex cursor-pointer items-center gap-2 rounded-md border border-border px-2.5 py-2 hover:bg-muted/40",children:[(0,t.jsx)(aa.S,{checked:e.account_ids.includes(a.id),onCheckedChange:()=>{var t;return t=a.id,void s({all_accounts:!1,account_ids:e.account_ids.includes(t)?e.account_ids.filter(e=>e!==t):[...e.account_ids,t]})}}),(0,t.jsxs)("span",{className:"min-w-0 text-sm",children:[(0,t.jsx)("span",{className:"block truncate font-medium",children:a.name||a.email}),(0,t.jsx)("span",{className:"block truncate text-xs text-muted-foreground",children:a.email})]})]})},a.id))})]})]}):null}function au({scope:e,onChange:s,enabled:a,className:r}){let{data:l,isLoading:n}=(0,s_.yr)(),i=Array.isArray(l)?l:l&&"object"==typeof l&&"address_books"in l?l.address_books??[]:[];return a?(0,t.jsxs)(ao,{className:r,legend:"P\xe9rim\xe8tre contacts — carnets",children:[(0,t.jsxs)("label",{className:"flex items-start gap-2",children:[(0,t.jsx)(aa.S,{checked:e.all_books,onCheckedChange:a=>s({all_books:!0===a,book_ids:!0===a?[]:e.book_ids}),className:"mt-0.5"}),(0,t.jsxs)("span",{className:"text-sm",children:["Tous les carnets",(0,t.jsx)("span",{className:"mt-0.5 block text-xs text-muted-foreground",children:"Le webhook ne se d\xe9clenchera que pour les \xe9v\xe9nements contacts s\xe9lectionn\xe9s."})]})]}),!e.all_books&&(0,t.jsxs)("div",{className:"space-y-2 pl-1",children:[(0,t.jsx)(v.J,{className:"text-xs text-muted-foreground",children:"Carnets autoris\xe9s"}),n?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Chargement…"}):0===i.length?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Aucun carnet configur\xe9."}):(0,t.jsx)("ul",{className:"space-y-1.5",children:i.map(a=>(0,t.jsx)("li",{children:(0,t.jsxs)("label",{className:"flex cursor-pointer items-center gap-2 rounded-md border border-border px-2.5 py-2 hover:bg-muted/40",children:[(0,t.jsx)(aa.S,{checked:e.book_ids.includes(a.id),onCheckedChange:()=>{var t;return t=a.id,void s({all_books:!1,book_ids:e.book_ids.includes(t)?e.book_ids.filter(e=>e!==t):[...e.book_ids,t]})}}),(0,t.jsx)("span",{className:"text-sm",children:a.name||a.id})]})},a.id))})]})]}):null}function am({scope:e,onChange:s,enabled:a,className:r}){let{data:l=[],isLoading:n}=(0,sk.fY)();return a?(0,t.jsxs)(ao,{className:r,legend:"P\xe9rim\xe8tre agenda — calendriers",children:[(0,t.jsxs)("label",{className:"flex items-start gap-2",children:[(0,t.jsx)(aa.S,{checked:e.all_calendars,onCheckedChange:a=>s({all_calendars:!0===a,calendar_ids:!0===a?[]:e.calendar_ids}),className:"mt-0.5"}),(0,t.jsxs)("span",{className:"text-sm",children:["Tous les agendas",(0,t.jsx)("span",{className:"mt-0.5 block text-xs text-muted-foreground",children:"Le webhook ne se d\xe9clenchera que pour les \xe9v\xe9nements agenda s\xe9lectionn\xe9s."})]})]}),!e.all_calendars&&(0,t.jsxs)("div",{className:"space-y-2 pl-1",children:[(0,t.jsx)(v.J,{className:"text-xs text-muted-foreground",children:"Agendas autoris\xe9s"}),n?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Chargement…"}):0===l.length?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Aucun agenda configur\xe9."}):(0,t.jsx)("ul",{className:"space-y-1.5",children:l.map(a=>(0,t.jsx)("li",{children:(0,t.jsxs)("label",{className:"flex cursor-pointer items-center gap-2 rounded-md border border-border px-2.5 py-2 hover:bg-muted/40",children:[(0,t.jsx)(aa.S,{checked:e.calendar_ids.includes(a.id),onCheckedChange:()=>{var t;return t=a.id,void s({all_calendars:!1,calendar_ids:e.calendar_ids.includes(t)?e.calendar_ids.filter(e=>e!==t):[...e.calendar_ids,t]})}}),(0,t.jsx)("span",{className:"size-2.5 shrink-0 rounded-full",style:{backgroundColor:a.color||"#1a73e8"},"aria-hidden":!0}),(0,t.jsx)("span",{className:"text-sm",children:a.display_name||a.id})]})},a.id))})]})]}):null}let ap=[{id:"mail",label:"Mail",description:"Bo\xeetes, messages, libell\xe9s, identit\xe9s et pi\xe8ces jointes."},{id:"drive",label:"Drive",description:"Fichiers, dossiers, partage et t\xe9l\xe9chargement."},{id:"contacts",label:"Contacts",description:"Annuaire, libell\xe9s et propri\xe9t\xe9s des contacts."},{id:"agenda",label:eD.tg,description:"Calendriers, \xe9v\xe9nements, disponibilit\xe9s et r\xe9ponses aux invitations."},{id:"automation",label:"Automatisations",description:"R\xe8gles, webhooks, fournisseurs et administration des tokens."}],ax=[{id:"mail.mailboxes",label:"Bo\xeetes et dossiers",description:"Lister et organiser les dossiers IMAP/unifi\xe9s.",group:"mail",supportsRead:!0,supportsWrite:!0},{id:"mail.labels",label:"Libell\xe9s",description:"Consulter et g\xe9rer les libell\xe9s unifi\xe9s.",group:"mail",supportsRead:!0,supportsWrite:!0},{id:"mail.messages",label:"Messages",description:"Lire le contenu des messages autoris\xe9s.",group:"mail",supportsRead:!0,supportsWrite:!1},{id:"mail.search",label:"Recherche",description:"Rechercher dans les messages des comptes autoris\xe9s.",group:"mail",supportsRead:!0,supportsWrite:!1},{id:"mail.send",label:"Envoi",description:"Envoyer des messages via les identit\xe9s autoris\xe9es.",group:"mail",supportsRead:!1,supportsWrite:!0},{id:"mail.attachments",label:"Pi\xe8ces jointes",description:"T\xe9l\xe9charger et joindre des fichiers aux messages.",group:"mail",supportsRead:!0,supportsWrite:!0},{id:"mail.settings",label:"Configuration",description:"Pr\xe9f\xe9rences mail, signatures et organisation.",group:"mail",supportsRead:!0,supportsWrite:!0},{id:"mail.identities",label:"Identit\xe9s",description:"Identit\xe9s d'envoi et alias configur\xe9s.",group:"mail",supportsRead:!0,supportsWrite:!0},{id:"mail.automation",label:"Automatisations mail",description:"R\xe8gles et actions li\xe9es aux messages.",group:"mail",supportsRead:!0,supportsWrite:!0},{id:"drive.folders",label:"Dossiers",description:"Parcourir l'arborescence Drive.",group:"drive",supportsRead:!0,supportsWrite:!1},{id:"drive.files",label:"Fichiers",description:"Lire le contenu et les m\xe9tadonn\xe9es des fichiers.",group:"drive",supportsRead:!0,supportsWrite:!1},{id:"drive.thumbnails",label:"Miniatures",description:"Obtenir les vignettes de pr\xe9visualisation.",group:"drive",supportsRead:!0,supportsWrite:!1},{id:"drive.download",label:"Liens de t\xe9l\xe9chargement",description:"G\xe9n\xe9rer des liens de t\xe9l\xe9chargement temporaires.",group:"drive",supportsRead:!0,supportsWrite:!1},{id:"drive.share",label:"Liens de partage",description:"Cr\xe9er et g\xe9rer les partages publics.",group:"drive",supportsRead:!0,supportsWrite:!0},{id:"drive.upload",label:"Upload",description:"Envoyer des fichiers et dossiers.",group:"drive",supportsRead:!1,supportsWrite:!0},{id:"drive.rename",label:"Renommage",description:"Renommer fichiers et dossiers.",group:"drive",supportsRead:!1,supportsWrite:!0},{id:"drive.move",label:"D\xe9placement",description:"D\xe9placer fichiers et dossiers.",group:"drive",supportsRead:!1,supportsWrite:!0},{id:"drive.copy",label:"Copie",description:"Dupliquer fichiers et dossiers.",group:"drive",supportsRead:!1,supportsWrite:!0},{id:"contacts.read",label:"Lecture",description:"Consulter les fiches contacts.",group:"contacts",supportsRead:!0,supportsWrite:!1},{id:"contacts.search",label:"Recherche",description:"Rechercher dans l'annuaire.",group:"contacts",supportsRead:!0,supportsWrite:!1},{id:"contacts.write",label:"Cr\xe9ation et modification",description:"Ajouter et modifier des contacts et leurs propri\xe9t\xe9s.",group:"contacts",supportsRead:!1,supportsWrite:!0},{id:"contacts.delete",label:"Suppression",description:"Supprimer des contacts.",group:"contacts",supportsRead:!1,supportsWrite:!0},{id:"contacts.labels",label:"Libell\xe9s de contacts",description:"G\xe9rer les groupes et libell\xe9s de contacts.",group:"contacts",supportsRead:!0,supportsWrite:!0},{id:"agenda.calendars",label:"Calendriers",description:"Lister et g\xe9rer les agendas.",group:"agenda",supportsRead:!0,supportsWrite:!0},{id:"agenda.events",label:"\xc9v\xe9nements",description:"Consulter les \xe9v\xe9nements des agendas autoris\xe9s.",group:"agenda",supportsRead:!0,supportsWrite:!1},{id:"agenda.events.write",label:"Cr\xe9ation et modification",description:"Cr\xe9er et modifier des \xe9v\xe9nements.",group:"agenda",supportsRead:!1,supportsWrite:!0},{id:"agenda.events.delete",label:"Suppression",description:"Supprimer des \xe9v\xe9nements.",group:"agenda",supportsRead:!1,supportsWrite:!0},{id:"agenda.freebusy",label:"Disponibilit\xe9s",description:"Interroger les cr\xe9neaux libres/occup\xe9s.",group:"agenda",supportsRead:!0,supportsWrite:!1},{id:"agenda.response",label:"R\xe9ponses aux invitations",description:"Accepter, refuser ou marquer provisoire une invitation.",group:"agenda",supportsRead:!1,supportsWrite:!0},{id:"automation.rules",label:"R\xe8gles",description:"R\xe8gles de tri et workflows.",group:"automation",supportsRead:!0,supportsWrite:!0},{id:"automation.webhooks",label:"Webhooks",description:"Webhooks sortants et templates.",group:"automation",supportsRead:!0,supportsWrite:!0},{id:"automation.llm",label:"Fournisseurs LLM",description:"Configuration des fournisseurs IA.",group:"automation",supportsRead:!0,supportsWrite:!0},{id:"automation.chat",label:"Chat UltiAI",description:"Sessions assistant IA, completions et sync historique.",group:"automation",supportsRead:!0,supportsWrite:!0},{id:"automation.search",label:"Fournisseurs de recherche",description:"Moteurs de recherche externes.",group:"automation",supportsRead:!0,supportsWrite:!0},{id:"automation.api_tokens",label:"Super admin — Tokens API",description:"Cr\xe9er, modifier et r\xe9voquer d'autres tokens API.",group:"automation",supportsRead:!1,supportsWrite:!0}];function ah(){return ax.map(e=>({resource:e.id,read:!1,write:!1}))}function ag(){return{all_accounts:!0,account_ids:[]}}function av(){return{all_folders:!0,folder_paths:[]}}function af(){return{all_calendars:!0,calendar_ids:[]}}let ab=["mail","drive","contacts","agenda"].flatMap(e=>eJ[e].map(s=>({value:s,label:eV[s],domain:e})));function aj(e="mail"){return{name:"",url:"",template:"",eventTypes:[...eJ[e]],mailScope:ag(),driveScope:av(),contactsScope:{all_books:!0,book_ids:[]},agendaScope:{all_calendars:!0,calendar_ids:[]}}}let ay=["mail","drive","contacts","agenda"];function aN({eventTypes:e,onEventTypesChange:s,mailScope:a,onMailScopeChange:r,driveScope:l,onDriveScopeChange:n,contactsScope:i,onContactsScopeChange:o,agendaScope:d,onAgendaScopeChange:c,className:u}){return(0,t.jsxs)("div",{className:(0,ex.cn)("space-y-4",u),children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(v.J,{className:"text-sm font-medium",children:"\xc9v\xe9nements d\xe9clencheurs"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Le webhook part uniquement pour les \xe9v\xe9nements coch\xe9s, dans le p\xe9rim\xe8tre d\xe9fini ci-dessous."}),(0,t.jsx)("div",{className:"flex flex-col gap-4",children:ay.map(a=>{let r=ab.filter(e=>e.domain===a);return(0,t.jsx)(ao,{className:"shrink-0",legend:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s3,{domain:a,className:"size-3.5",alt:""}),eU[a]]}),legendClassName:"flex items-center gap-1.5 text-xs",children:(0,t.jsx)("ul",{className:"space-y-1.5",children:r.map(a=>(0,t.jsx)("li",{children:(0,t.jsxs)("label",{className:"flex cursor-pointer items-center gap-2 text-sm",children:[(0,t.jsx)(aa.S,{checked:e.includes(a.value),onCheckedChange:()=>{var t;return t=a.value,void(e.includes(t)?s(e.filter(e=>e!==t)):s([...e,t]))}}),a.label]})},a.value))})},a)})})]}),(0,t.jsx)(ac,{enabled:e.some(e=>eJ.mail.includes(e)),scope:a,onChange:r}),(0,t.jsx)(ad,{enabled:e.some(e=>eJ.drive.includes(e)),scope:l,onChange:n}),(0,t.jsx)(au,{enabled:e.some(e=>eJ.contacts.includes(e)),scope:i,onChange:o}),(0,t.jsx)(am,{enabled:e.some(e=>eJ.agenda.includes(e)),scope:d,onChange:c})]})}let a_=["mail","drive","contacts","agenda"];function ak(e){let s=e.event_types??[];var a=s.length>0?s:["message_received"];let t=new Set;for(let e of a){let s=ab.find(s=>s.value===e);s&&t.add(s.domain)}return[...t]}function aC(){let e,s,a,{ready:r,authenticated:l}=(0,M.v)(),{data:n=[],isFetching:i,isError:c,refetch:u,isPending:h}=e7(),f=(e=(0,q.jE)(),(0,S.n)({mutationFn:e=>A.uE.post("/mail/webhooks",e),onSuccess:()=>{e.invalidateQueries({queryKey:["mail-webhooks"]})}})),b=(s=(0,q.jE)(),(0,S.n)({mutationFn:({webhookId:e,...s})=>A.uE.put(`/mail/webhooks/${e}`,s),onSuccess:()=>{s.invalidateQueries({queryKey:["mail-webhooks"]})}})),j=(a=(0,q.jE)(),(0,S.n)({mutationFn:e=>A.uE.delete(`/mail/webhooks/${e}`),onSuccess:()=>{a.invalidateQueries({queryKey:["mail-webhooks"]})}})),[y,N]=(0,d.useState)(!1),[_,k]=(0,d.useState)(null),[C,w]=(0,d.useState)("mail"),[$,z]=(0,d.useState)(()=>aj("mail")),R=r&&l&&h&&0===n.length,E=_?"Modifier le webhook":"Nouveau webhook";async function P(){let e={name:$.name.trim(),url:$.url.trim(),method:"POST",body_template:$.template,event_types:$.eventTypes,mail_scope:$.mailScope,drive_scope:$.driveScope,contacts_scope:$.contactsScope,agenda_scope:$.agendaScope};_?await b.mutateAsync({webhookId:_,...e}):await f.mutateAsync(e),N(!1)}let I=$.name.trim().length>0&&$.url.trim().length>0&&$.eventTypes.length>0&&!f.isPending&&!b.isPending;return(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(o.v,{isFetching:i,isError:c,onRetry:()=>u()}),(0,t.jsxs)(as.I,{columns:2,children:[(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm font-medium",children:"Webhooks"}),(0,t.jsx)("div",{className:"flex flex-col gap-1.5",children:a_.map(e=>(0,t.jsxs)(x.$,{type:"button",variant:"outline",size:"sm",className:"h-9 w-full justify-start gap-2 px-3",onClick:()=>{k(null),w(e),z({...aj(e),template:s0[e]}),N(!0)},children:[(0,t.jsx)(s3,{domain:e,className:"size-5",alt:""}),(0,t.jsxs)("span",{children:["Nouveau webhook ",eU[e]]})]},e))})]}),R?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Chargement…"}):0===n.length?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Aucun webhook configur\xe9."}):(0,t.jsx)("ul",{className:"divide-y divide-border rounded-lg border border-border",children:n.map(e=>{let s=ak(e);return(0,t.jsxs)("li",{className:"flex items-start gap-2 px-3 py-3",children:[(0,t.jsx)(s6,{domains:s,className:"pt-0.5",markClassName:"size-5"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"text-sm font-medium",children:e.name}),(0,t.jsx)("p",{className:"truncate text-xs text-muted-foreground",children:e.url}),(0,t.jsx)("p",{className:"mt-0.5 text-[11px] text-muted-foreground",children:function(e){let s=e.event_types??[];if(0===s.length)return"Aucun \xe9v\xe9nement";let a=s.slice(0,3).map(e=>eV[e]??e),t=s.length>3?` +${s.length-3}`:"";return a.join(", ")+t}(e)})]}),(0,t.jsxs)("div",{className:"flex shrink-0 gap-1",children:[(0,t.jsx)(x.$,{type:"button",variant:"ghost",size:"icon",onClick:()=>{k(e.id),z({name:e.name,url:e.url,template:e.body_template??s0.mail,eventTypes:e.event_types?.length?e.event_types:["message_received"],mailScope:e.mail_scope??{all_accounts:!0,account_ids:[]},driveScope:e.drive_scope??{all_folders:!0,folder_paths:[]},contactsScope:e.contacts_scope??{all_books:!0,book_ids:[]},agendaScope:e.agenda_scope??{all_calendars:!0,calendar_ids:[]}}),w(ak(e)[0]??"mail"),N(!0)},children:(0,t.jsx)(m.A,{className:"size-4"})}),(0,t.jsx)(x.$,{type:"button",variant:"ghost",size:"icon",onClick:()=>j.mutate(e.id),children:(0,t.jsx)(p.A,{className:"size-4"})})]})]},e.id)})})]}),(0,t.jsx)(ae,{})]}),(0,t.jsx)(eT.lG,{open:y,onOpenChange:N,children:(0,t.jsxs)(eT.Cf,{className:"flex max-h-[90vh] max-w-lg flex-col gap-0 overflow-hidden p-0 sm:max-w-2xl",children:[(0,t.jsx)(eT.c7,{className:"border-b border-border px-4 py-3",children:(0,t.jsx)(eT.L3,{className:"text-base",children:E})}),(0,t.jsxs)("div",{className:"flex-1 space-y-4 overflow-y-auto p-4",children:[_?null:(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)(v.J,{className:"text-xs text-muted-foreground",children:"Mod\xe8le de d\xe9part"}),(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:a_.map(e=>(0,t.jsx)(s8,{domain:e,label:eU[e],active:C===e,onClick:()=>{w(e),z(s=>({...s,eventTypes:[...eJ[e]],template:s0[e]}))}},e))})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Nom"}),(0,t.jsx)(g.p,{value:$.name,onChange:e=>z({...$,name:e.target.value})})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(v.J,{className:"text-xs",children:"URL HTTPS"}),(0,t.jsx)(g.p,{value:$.url,onChange:e=>z({...$,url:e.target.value})})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(v.J,{className:"text-xs",children:"body_template JSON"}),(0,t.jsx)("textarea",{className:"min-h-20 w-full rounded-md border border-input bg-background px-3 py-2 font-mono text-xs",value:$.template,onChange:e=>z({...$,template:e.target.value})})]}),(0,t.jsx)(aN,{eventTypes:$.eventTypes,onEventTypesChange:e=>z({...$,eventTypes:e}),mailScope:$.mailScope,onMailScopeChange:e=>z({...$,mailScope:e}),driveScope:$.driveScope,onDriveScopeChange:e=>z({...$,driveScope:e}),contactsScope:$.contactsScope,onContactsScopeChange:e=>z({...$,contactsScope:e}),agendaScope:$.agendaScope,onAgendaScopeChange:e=>z({...$,agendaScope:e})})]}),(0,t.jsxs)("div",{className:"flex justify-end gap-2 border-t border-border px-4 py-3",children:[(0,t.jsx)(x.$,{type:"button",variant:"outline",onClick:()=>N(!1),children:"Annuler"}),(0,t.jsx)(x.$,{type:"button",disabled:!I,onClick:P,children:"Enregistrer"})]})]})})]})}var aw=a(95421),aS=a(55883);function aA({baseUrl:e,apiKey:s="",value:a,onChange:r,placeholder:l,className:n}){let[i,o]=(0,d.useState)(!1),[c,u]=(0,d.useState)(e),[m,p]=(0,d.useState)(s);(0,d.useEffect)(()=>{let a=setTimeout(()=>{u(e),p(s)},400);return()=>clearTimeout(a)},[e,s]);let{data:x,isFetching:h,isError:v}=(0,aw.Kq)(c,m),f=x?.models??[],b=(0,d.useMemo)(()=>{let e=a.trim().toLowerCase();return(e?f.filter(s=>s.toLowerCase().includes(e)):f).slice(0,4)},[f,a]),j=i&&!h&&b.length>0;return(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)(g.p,{className:(0,ex.cn)("h-9",n),value:a,placeholder:l,onChange:e=>r(e.target.value),onFocus:()=>o(!0),onBlur:()=>{window.setTimeout(()=>o(!1),150)},onKeyDown:e=>{"Escape"===e.key&&o(!1)}}),j?(0,t.jsx)("ul",{className:"absolute z-20 mt-1 w-full rounded-md border border-border bg-popover py-1 shadow-md",children:b.map(e=>(0,t.jsx)("li",{children:(0,t.jsx)("button",{type:"button",className:"w-full px-2 py-1.5 text-left text-xs hover:bg-muted",onMouseDown:s=>{s.preventDefault(),r(e),o(!1)},children:(0,t.jsx)("span",{className:"block truncate font-mono",children:e})})},e))}):null]}),e.trim()?(0,t.jsx)("p",{className:(0,ex.cn)("text-[11px]",aS.YS),children:h?"Chargement des mod\xe8les…":v?"Impossible de r\xe9cup\xe9rer les mod\xe8les pour cette URL.":f.length>0?`${f.length} mod\xe8le${f.length>1?"s":""} disponible${f.length>1?"s":""}.`:"Aucun mod\xe8le trouv\xe9 pour cette URL."}):null]})}var a$=a(41683),az=a(66987),aM=a(36189);function aR(){let{data:e,isLoading:s}=(0,aw.Y0)(),a=(0,aw.f3)(),[r,l]=(0,d.useState)({default_provider_id:"",providers:[]}),[n,i]=(0,d.useState)(!1);async function o(){await a.mutateAsync(r),i(!0),setTimeout(()=>i(!1),2e3)}return((0,d.useEffect)(()=>{e&&l({...e,providers:(e.providers??[]).map(aM.SR)})},[e]),s)?(0,t.jsx)("p",{className:(0,ex.cn)("text-sm",aS.YS),children:"Chargement…"}):(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-base font-medium",children:"Fournisseurs LLM"}),(0,t.jsx)("p",{className:(0,ex.cn)("mt-1 text-sm",aS.YS),children:"API OpenAI-compatibles pour l'enrichissement des contacts et le tri par r\xe8gles."})]}),(0,t.jsx)(a$.t,{providers:r.providers,defaultProviderId:r.default_provider_id,onProvidersChange:e=>l(s=>({...s,providers:e})),onDefaultProviderIdChange:e=>l(s=>({...s,default_provider_id:e})),renderDefaultModelInput:({provider:e,onChange:s})=>(0,t.jsx)(aA,{baseUrl:e.base_url,apiKey:e.api_key,value:e.default_model,onChange:s,placeholder:"gpt-4o-mini"})}),(0,t.jsx)(as.I,{columns:2,children:(0,t.jsxs)("div",{className:"space-y-3 rounded-lg border border-border p-4",children:[(0,t.jsx)("h4",{className:"text-sm font-medium",children:"D\xe9couverte de contacts"}),(0,t.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Fournisseur pour l'enrichissement"}),(0,t.jsxs)(f.l6,{value:r.contact_discovery_provider_id??r.default_provider_id,onValueChange:e=>l(s=>({...s,contact_discovery_provider_id:e})),children:[(0,t.jsx)(f.bq,{className:"mt-1 h-9",children:(0,t.jsx)(f.yv,{placeholder:"M\xeame que d\xe9faut"})}),(0,t.jsx)(f.gC,{children:r.providers.map(e=>{let s=(0,aM.RH)(e),a=(0,aM.XR)(s);return(0,t.jsx)(f.eb,{value:e.id,children:(0,t.jsx)(az.c,{brand:s,icon:a.icon,children:e.name||a.label})},e.id)})})]})]}),(0,t.jsxs)("div",{className:"sm:col-span-2",children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Mod\xe8le LLM"}),(0,t.jsx)(g.p,{className:"mt-1 h-9",value:r.contact_discovery_model??"",onChange:e=>l(s=>({...s,contact_discovery_model:e.target.value})),placeholder:"Laisser vide pour utiliser le mod\xe8le par d\xe9faut du fournisseur"})]})]})]})}),(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:(0,t.jsx)(x.$,{onClick:o,disabled:a.isPending,className:aS.NC,children:a.isPending?"Enregistrement…":n?"Enregistr\xe9 ✓":"Enregistrer"})})]})}var aE=a(49875),aP=a(24374);function aI(){let{data:e,isLoading:s}=(0,aw.lU)(),a=(0,aw.aA)(),[r,l]=(0,d.useState)((0,aP.ge)(void 0)),[n,i]=(0,d.useState)(!1);async function o(){let e=await a.mutateAsync(r);l((0,aP.ge)(e)),i(!0),setTimeout(()=>i(!1),2e3)}return((0,d.useEffect)(()=>{e&&l((0,aP.ge)(e))},[e]),s)?(0,t.jsx)("p",{className:(0,ex.cn)("text-sm",aS.YS),children:"Chargement…"}):(0,t.jsxs)("div",{className:"w-full space-y-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-base font-medium",children:"Fournisseurs de recherche web"}),(0,t.jsxs)("p",{className:(0,ex.cn)("mt-1 text-sm",aS.YS),children:["Brave, Bing, DuckDuckGo, SearXNG ou API JSON custom — pour l'enrichissement IA des contacts et le tool UltiAI ",(0,t.jsx)("code",{className:"rounded bg-muted px-1 text-xs",children:"web_search"}),"."]})]}),(0,t.jsx)(aE.g,{value:r,onChange:l}),(0,t.jsx)(x.$,{onClick:o,disabled:a.isPending,className:aS.NC,children:a.isPending?"Enregistrement…":n?"Enregistr\xe9 ✓":"Enregistrer"})]})}var aF=a(49405);function aq({created:e,open:s,onOpenChange:a}){let[r,l]=(0,d.useState)(!1);async function n(){e?.token&&(await navigator.clipboard.writeText(e.token),l(!0),setTimeout(()=>l(!1),2e3))}return(0,t.jsx)(eT.lG,{open:s,onOpenChange:a,children:(0,t.jsxs)(eT.Cf,{className:"sm:max-w-lg",children:[(0,t.jsxs)(eT.c7,{children:[(0,t.jsx)(eT.L3,{children:"Token cr\xe9\xe9"}),(0,t.jsx)(eT.rr,{children:"Copiez ce secret maintenant. Il ne sera plus affich\xe9 par la suite."})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-sm font-medium",children:e?.name}),(0,t.jsxs)("div",{className:"flex items-start gap-2",children:[(0,t.jsx)("code",{className:"flex-1 break-all rounded-md border border-border bg-muted/40 px-3 py-2 font-mono text-xs",children:e?.token}),(0,t.jsx)(x.$,{type:"button",variant:"outline",size:"icon",onClick:n,children:r?(0,t.jsx)(ef.A,{className:"size-4"}):(0,t.jsx)(sX.A,{className:"size-4"})})]}),(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Pr\xe9fixe visible : ",(0,t.jsx)("span",{className:"font-mono",children:e?.token_prefix})]})]}),(0,t.jsx)(eT.Es,{children:(0,t.jsx)(x.$,{type:"button",onClick:()=>a(!1),children:"J'ai copi\xe9 le token"})})]})})}function aL({scope:e,onChange:s,enabled:a,className:r}){return(0,t.jsx)(am,{scope:e,onChange:s,enabled:a,className:r})}function aT(e,s,a){return e.map(e=>e.resource===s?{...e,...a}:e)}function aD({grants:e,onChange:s,className:a}){return(0,t.jsxs)("div",{className:(0,ex.cn)("space-y-3",a),children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(v.J,{className:"text-sm font-medium",children:"Permissions"}),(0,t.jsx)("p",{className:"mt-0.5 text-xs text-muted-foreground",children:"D\xe9veloppez chaque domaine pour choisir lecture et \xe9criture."})]}),ap.map(a=>{var r;return(0,t.jsx)(aU,{group:a.id,title:a.label,description:a.description,grants:e,onChange:s,selectedCount:(r=a.id,ax.filter(e=>e.group===r).filter(s=>{let a=e.find(e=>e.resource===s.id);return a?.read||a?.write}).length)},a.id)})]})}function aU({group:e,title:s,description:a,grants:r,onChange:l,selectedCount:n}){let[i,o]=(0,d.useState)(!1),c=ax.filter(s=>s.group===e);return 0===c.length?null:(0,t.jsx)(ev.Nt,{open:i,onOpenChange:o,children:(0,t.jsxs)("fieldset",{className:"overflow-hidden rounded-md border border-border",children:[(0,t.jsxs)(ev.R6,{className:"flex w-full items-center gap-2 px-3 py-2.5 text-left hover:bg-muted/40",children:[(0,t.jsx)(ar.A,{className:(0,ex.cn)("size-4 shrink-0 text-muted-foreground transition-transform",i&&"rotate-90")}),(0,t.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,t.jsx)("span",{className:"block text-sm font-medium text-foreground",children:s}),(0,t.jsx)("span",{className:"block text-xs text-muted-foreground",children:a})]}),(0,t.jsx)("span",{className:"shrink-0 text-xs text-muted-foreground",children:n>0?`${n} active(s)`:"Aucune"})]}),(0,t.jsx)(ev.Ke,{children:(0,t.jsxs)("div",{className:"border-t border-border",children:[(0,t.jsxs)("div",{className:"grid grid-cols-[1fr_4.5rem_4.5rem] gap-2 border-b border-border bg-muted/30 px-3 py-2 text-xs font-medium text-muted-foreground",children:[(0,t.jsx)("span",{children:"Permission"}),(0,t.jsx)("span",{className:"text-center",children:"Lecture"}),(0,t.jsx)("span",{className:"text-center",children:"\xc9criture"})]}),c.map(e=>{let s=r.find(s=>s.resource===e.id)??{resource:e.id,read:!1,write:!1};return(0,t.jsxs)("div",{className:"grid grid-cols-[1fr_4.5rem_4.5rem] items-start gap-2 border-b border-border px-3 py-2.5 last:border-b-0",children:[(0,t.jsxs)("div",{className:"min-w-0 pr-2",children:[(0,t.jsx)(v.J,{className:"text-sm font-medium",children:e.label}),(0,t.jsx)("p",{className:"mt-0.5 text-xs text-muted-foreground",children:e.description})]}),(0,t.jsx)("div",{className:"flex justify-center pt-0.5",children:e.supportsRead?(0,t.jsx)(aa.S,{checked:s.read,onCheckedChange:s=>l(aT(r,e.id,{read:!0===s})),"aria-label":`${e.label} — lecture`}):(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:"—"})}),(0,t.jsx)("div",{className:"flex justify-center pt-0.5",children:e.supportsWrite?(0,t.jsx)(aa.S,{checked:s.write,onCheckedChange:s=>l(aT(r,e.id,{write:!0===s})),"aria-label":`${e.label} — \xe9criture`}):(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:"—"})})]},e.id)})]})})]})})}function aJ(e){if(!e)return"—";try{return new Intl.DateTimeFormat("fr-FR",{dateStyle:"medium",timeStyle:"short"}).format(new Date(e))}catch{return e}}function aV(){let e,s,{ready:a,authenticated:r}=(0,M.v)(),{data:l=[],isFetching:n,isError:i,refetch:c,isPending:u}=function(){let{ready:e,authenticated:s}=(0,M.v)();return(0,z.I)({queryKey:["api-tokens"],queryFn:async()=>{let e=await A.uE.get("/mail/api-tokens");return Array.isArray(e)?e:e.tokens??[]},staleTime:3e4,enabled:e&&s,retry:1})}(),m=(e=(0,q.jE)(),(0,S.n)({mutationFn:e=>A.uE.post("/mail/api-tokens",e),onSuccess:()=>{e.invalidateQueries({queryKey:["api-tokens"]})}})),h=(s=(0,q.jE)(),(0,S.n)({mutationFn:e=>A.uE.delete(`/mail/api-tokens/${e}`),onSuccess:()=>{s.invalidateQueries({queryKey:["api-tokens"]})}})),[f,j]=(0,d.useState)(""),[y,N]=(0,d.useState)(ah),[_,C]=(0,d.useState)(ag),[w,$]=(0,d.useState)(av),[R,E]=(0,d.useState)(af),[P,I]=(0,d.useState)(null),[F,L]=(0,d.useState)(!1),T=a&&r&&u&&0===l.length,D=y.some(e=>e.resource.startsWith("mail.")&&(e.read||e.write)),U=y.some(e=>e.resource.startsWith("drive.")&&(e.read||e.write)),J=y.some(e=>e.resource.startsWith("agenda.")&&(e.read||e.write)),V=f.trim().length>0&&y.some(e=>e.read||e.write)&&(!D||_.all_accounts||_.account_ids.length>0)&&(!U||w.all_folders||w.folder_paths.length>0)&&(!J||R.all_calendars||R.calendar_ids.length>0);async function K(){I(await m.mutateAsync({name:f.trim(),permissions:y.filter(e=>e.read||e.write),mail_scope:D?_:ag(),drive_scope:U?w:av(),agenda_scope:J?R:af()})),L(!0),j(""),N(ah()),C(ag()),$(av()),E(af())}return(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(o.v,{isFetching:n,isError:i,onRetry:()=>c()}),(0,t.jsxs)(as.I,{columns:2,children:[(0,t.jsxs)(b.Zp,{className:"lg:col-span-2",children:[(0,t.jsxs)(b.aR,{children:[(0,t.jsx)(b.ZB,{className:"text-base",children:"Nouveau token"}),(0,t.jsx)(b.BT,{children:"Jetons fine-grained pour agents IA, scripts et int\xe9grations externes. Choisissez les permissions, puis restreignez le p\xe9rim\xe8tre mail, Drive et agenda si n\xe9cessaire."})]}),(0,t.jsxs)(b.Wu,{className:"space-y-5",children:[(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Documentation API interactive :"," ",(0,t.jsxs)("a",{href:"/api/docs",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-[#1a73e8] hover:underline",children:["/api/docs",(0,t.jsx)(k.A,{className:"size-3"})]})]}),(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)(v.J,{className:"text-xs",children:"Nom"}),(0,t.jsx)(g.p,{value:f,onChange:e=>j(e.target.value),placeholder:"Agent tri bo\xeete support"})]}),(0,t.jsx)(aD,{grants:y,onChange:N}),(0,t.jsxs)("div",{className:"grid gap-4 lg:grid-cols-2",children:[(0,t.jsx)(ac,{scope:_,onChange:C,enabled:D}),(0,t.jsx)(ad,{scope:w,onChange:$,enabled:U}),(0,t.jsx)(aL,{scope:R,onChange:E,enabled:J,className:"lg:col-span-2"})]}),(0,t.jsxs)(x.$,{type:"button",disabled:!V||m.isPending,className:"w-full sm:w-auto",onClick:K,children:[(0,t.jsx)(H.A,{className:"mr-1.5 size-3.5"}),"G\xe9n\xe9rer le token"]})]})]}),(0,t.jsxs)(b.Zp,{children:[(0,t.jsxs)(b.aR,{children:[(0,t.jsxs)(b.ZB,{className:"flex items-center gap-2 text-base",children:[(0,t.jsx)(aF.A,{className:"size-4"}),"Tokens actifs"]}),(0,t.jsx)(b.BT,{children:"R\xe9voquez un jeton compromis ou inutilis\xe9 \xe0 tout moment."})]}),(0,t.jsx)(b.Wu,{children:T?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Chargement…"}):0===l.length?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Aucun token API pour le moment."}):(0,t.jsx)("ul",{className:"divide-y divide-border rounded-lg border border-border",children:l.map(e=>{let s=function(e){let s=[];for(let a of ax){let t=e.find(e=>e.resource===a.id);if(!t)continue;let r=[];t.read&&a.supportsRead&&r.push("lecture"),t.write&&a.supportsWrite&&r.push("\xe9criture"),r.length>0&&s.push(`${a.label} (${r.join(", ")})`)}return s}(e.permissions);return(0,t.jsxs)("li",{className:"flex items-start justify-between gap-3 px-3 py-3",children:[(0,t.jsxs)("div",{className:"min-w-0 space-y-1",children:[(0,t.jsx)("p",{className:"text-sm font-medium",children:e.name}),(0,t.jsxs)("p",{className:"font-mono text-xs text-muted-foreground",children:[e.token_prefix,"…"]}),s.length>0&&(0,t.jsxs)("ul",{className:"text-xs text-muted-foreground",children:[s.slice(0,4).map(e=>(0,t.jsx)("li",{children:e},e)),s.length>4&&(0,t.jsxs)("li",{children:["+ ",s.length-4," autre(s) permission(s)"]})]}),(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Cr\xe9\xe9 ",aJ(e.created_at),e.last_used_at?` \xb7 Derni\xe8re utilisation ${aJ(e.last_used_at)}`:""]})]}),(0,t.jsx)(x.$,{type:"button",variant:"ghost",size:"icon",disabled:h.isPending,onClick:()=>h.mutate(e.id),"aria-label":`R\xe9voquer ${e.name}`,children:(0,t.jsx)(p.A,{className:"size-4"})})]},e.id)})})})]}),(0,t.jsx)(b.Zp,{children:(0,t.jsxs)(b.Wu,{className:"space-y-3",children:[(0,t.jsx)(b.ZB,{className:"text-base",children:"Bonnes pratiques"}),(0,t.jsxs)("div",{className:"space-y-2 text-sm text-muted-foreground",children:[(0,t.jsx)("p",{children:"Limitez chaque token au p\xe9rim\xe8tre strict n\xe9cessaire (principe du moindre privil\xe8ge)."}),(0,t.jsx)("p",{children:"Le secret n'est affich\xe9 qu'une fois \xe0 la cr\xe9ation — stockez-le dans un gestionnaire de secrets, jamais dans le code source."}),(0,t.jsx)("p",{children:"La permission \xab Super admin — Tokens API \xbb permet aussi de g\xe9rer d'autres tokens via l'API — r\xe9servez-la aux agents d'administration de confiance."}),(0,t.jsx)("p",{children:"Pr\xe9f\xe9rez des tokens d\xe9di\xe9s par agent ou int\xe9gration pour faciliter la r\xe9vocation."})]})]})})]}),(0,t.jsx)(aq,{created:P,open:F,onOpenChange:L})]})}var aK=a(3793);let aB={display:function(){let{isFetching:e,isError:s,refetch:a}=(0,l.C)();return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.y,{title:"R\xe9glages d'affichage",description:"Densit\xe9, th\xe8me, type de bo\xeete de r\xe9ception, volet de lecture et d\xe9filement de la liste."}),(0,t.jsx)(o.v,{isFetching:e,isError:s,onRetry:()=>a()}),(0,t.jsx)(n.S,{variant:"page"})]})},accounts:function(){let e,s=(0,c.useRouter)(),a=(0,c.useSearchParams)(),l=a.get("oauth"),{ready:n,authenticated:u}=(0,M.v)(),{data:m=[],isFetching:p,isError:x,refetch:h,isPending:g}=(0,Z.HM)(),{data:v=[],isFetching:f,isError:b,refetch:j,isPending:y}=(0,X.sp)(),N=(e=(0,q.jE)(),(0,S.n)({mutationFn:e=>A.uE.post("/mail/accounts",e),onSuccess:()=>{e.invalidateQueries({queryKey:["accounts"]}),e.invalidateQueries({queryKey:["identities"]}),e.invalidateQueries({queryKey:["mail-signatures"]})}})),_=n&&u&&g&&0===m.length,k=n&&u&&y&&0===v.length;return(0,d.useEffect)(()=>{"success"===l&&(h(),s.replace(`${r.gH}/accounts`))},[l,h,s]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.y,{title:"Comptes mail",description:"Connexions IMAP/SMTP, identit\xe9s d'envoi et signatures."}),"success"===l?(0,t.jsx)("p",{className:"text-sm text-green-600 dark:text-green-500",children:"Compte mail connect\xe9 via OAuth."}):null,"error"===l?(0,t.jsxs)("p",{className:"text-sm text-destructive",children:["\xc9chec de la connexion OAuth",a.get("code")?` (${a.get("code")})`:"","."]}):null,(0,t.jsx)(o.v,{isFetching:p||f,isError:x||b,onRetry:function(){h(),j()}}),(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsx)(W,{}),(0,t.jsx)(E,{pending:N.isPending,onSubmit:e=>N.mutate(e)}),!n||_?null:0===m.length?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Aucun compte mail configur\xe9. Ajoutez votre adresse e-mail ci-dessus pour commencer."}):m.map(e=>(0,t.jsx)(es,{account:e,signatures:v},e.id)),(0,t.jsx)(G,{signatures:v,showInitialLoad:k})]})]})},labels:function(){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.y,{title:"Libell\xe9s et dossiers",description:"M\xeames r\xe9glages que dans la barre lat\xe9rale : couleur, affichage dans les listes, arborescence, renommage."}),(0,t.jsxs)(el.tU,{defaultValue:"labels",children:[(0,t.jsxs)(el.j7,{className:eA.d9,children:[(0,t.jsx)(el.Xi,{value:"labels",children:"Libell\xe9s"}),(0,t.jsx)(el.Xi,{value:"folders-global",children:"Dossiers globaux"}),(0,t.jsx)(el.Xi,{value:"folders-account",children:"Dossiers par compte"})]}),(0,t.jsx)(el.av,{value:"labels",className:"mt-4",children:(0,t.jsx)(eM,{})}),(0,t.jsx)(el.av,{value:"folders-global",className:"mt-4",children:(0,t.jsx)(eR,{})}),(0,t.jsx)(el.av,{value:"folders-account",className:"mt-4",children:(0,t.jsx)(eE,{})})]})]})},notifications:function(){let{isFetching:e,isError:s,refetch:a}=(0,l.C)(),r=(0,eP.x)(e=>e.desktopNewMail),n=(0,eP.x)(e=>e.desktopMentions),d=(0,eP.x)(e=>e.emailDigest),c=(0,eP.x)(e=>e.soundEnabled),u=(0,eP.x)(e=>e.setDesktopNewMail),m=(0,eP.x)(e=>e.setDesktopMentions),p=(0,eP.x)(e=>e.setEmailDigest),x=(0,eP.x)(e=>e.setSoundEnabled);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.y,{title:"Notifications",description:"Pr\xe9f\xe9rences d'alertes synchronis\xe9es avec votre compte Ultimail."}),(0,t.jsx)(o.v,{isFetching:e,isError:s,onRetry:()=>a()}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(eF,{label:"Nouveaux messages (bureau)",checked:r,onChange:async e=>{e&&await (0,eI.Wp)(),u(e)}}),(0,t.jsx)(eF,{label:"Mentions et r\xe9ponses",checked:n,onChange:async e=>{e&&await (0,eI.Wp)(),m(e)}}),(0,t.jsx)(eF,{label:"R\xe9sum\xe9 quotidien par e-mail",checked:d,onChange:p}),(0,t.jsx)(eF,{label:"Son de notification",checked:c,onChange:x})]})]})},automation:function(){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.y,{title:"Automatisations",description:"R\xe8gles et webhooks pour les \xe9v\xe9nements mail, Drive, contacts et UltiCal — conditions et actions adapt\xe9es au d\xe9clencheur."}),(0,t.jsxs)(el.tU,{defaultValue:"rules",children:[(0,t.jsxs)(el.j7,{className:eA.d9,children:[(0,t.jsx)(el.Xi,{value:"rules",children:"R\xe8gles"}),(0,t.jsx)(el.Xi,{value:"webhooks",children:"Webhooks"}),(0,t.jsx)(el.Xi,{value:"llm",children:"Fournisseurs LLM"}),(0,t.jsx)(el.Xi,{value:"search",children:"Recherche"}),(0,t.jsx)(el.Xi,{value:"tokens",children:"Tokens API"})]}),(0,t.jsx)(el.av,{value:"rules",className:"mt-4",children:(0,t.jsx)(sQ,{})}),(0,t.jsx)(el.av,{value:"webhooks",className:"mt-4",children:(0,t.jsx)(aC,{})}),(0,t.jsx)(el.av,{value:"llm",className:"mt-4",children:(0,t.jsx)(aR,{})}),(0,t.jsx)(el.av,{value:"search",className:"mt-4 w-full",children:(0,t.jsx)(aI,{})}),(0,t.jsx)(el.av,{value:"tokens",className:"mt-4",children:(0,t.jsx)(aV,{})})]})]})},agenda:function(){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(SettingsSectionHeader,{title:`R\xe9glages ${eD.tg}`,description:"Affichage, visioconf\xe9rence, invitations, agendas par compte, calendriers iCal et vues. Le th\xe8me suit les r\xe9glages d'affichage."}),(0,t.jsx)(aK.l,{variant:"page"})]})}};function aO({sectionId:e}){let s=aB[e];return(0,t.jsx)(s,{})}function aW({segments:e}){let s=(0,r.oB)(e);return(0,t.jsx)(aO,{sectionId:s})}},65378:(e,s,a)=>{"use strict";a.d(s,{Xi:()=>o,av:()=>d,j7:()=>i,tU:()=>n});var t=a(4208);a(91356);var r=a(32536),l=a(58113);function n({className:e,...s}){return(0,t.jsx)(r.bL,{"data-slot":"tabs",className:(0,l.cn)("flex flex-col gap-2",e),...s})}function i({className:e,...s}){return(0,t.jsx)(r.B8,{"data-slot":"tabs-list",className:(0,l.cn)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",e),...s})}function o({className:e,...s}){return(0,t.jsx)(r.l9,{"data-slot":"tabs-trigger",className:(0,l.cn)("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...s})}function d({className:e,...s}){return(0,t.jsx)(r.UC,{"data-slot":"tabs-content",className:(0,l.cn)("flex-1 outline-none",e),...s})}},66987:(e,s,a)=>{"use strict";a.d(s,{c:()=>i});var t=a(4208),r=a(84834),l=a(47391),n=a(58113);function i({brand:e,icon:s,children:a,className:o,iconClassName:d,suffix:c}){let u=s??(e?(0,l.r)(e):void 0);return(0,t.jsxs)("span",{className:(0,n.cn)("inline-flex min-w-0 items-center gap-2",o),children:[u?(0,t.jsx)(r.In,{icon:u,className:(0,n.cn)("size-4 shrink-0",d),"aria-hidden":!0}):null,(0,t.jsxs)("span",{className:"truncate",children:[a,c]})]})}},69272:(e,s,a)=>{Promise.resolve().then(a.bind(a,63948))},69640:(e,s,a)=>{"use strict";a.d(s,{BT:()=>o,Wu:()=>d,ZB:()=>i,Zp:()=>l,aR:()=>n,wL:()=>c});var t=a(4208);a(91356);var r=a(58113);function l({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card",className:(0,r.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",e),...s})}function n({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,r.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",e),...s})}function i({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-title",className:(0,r.cn)("leading-none font-semibold",e),...s})}function o({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,r.cn)("text-muted-foreground text-sm",e),...s})}function d({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,r.cn)("px-6",e),...s})}function c({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-footer",className:(0,r.cn)("flex items-center px-6 [.border-t]:pt-6",e),...s})}},85349:(e,s,a)=>{"use strict";a.d(s,{M:()=>l});var t=a(4208),r=a(58113);function l({children:e,className:s}){return(0,t.jsx)("div",{className:(0,r.cn)("space-y-2.5",s),children:e})}}},e=>{e.O(0,[438,6317,1909,2082,3616,798,9032,8306,8023,5179,8992,5260,776,6559,1820,2551,9838,1807,1006,563,4927,4498,7865,3639,3777,9821,294,1614,1506,7358],()=>e(e.s=69272)),_N_E=e.O()}]); |