ultisuite-client/out/_next/static/chunks/app/settings/[[...section]]/page-ccebb45274be3b02.js
R3D347HR4Y d6d18f911b
Some checks failed
E2E / Playwright e2e (push) Has been cancelled
Lots of stuff and mobile app
2026-06-17 00:13:28 +02:00

1 line
198 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(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()}]);