ultisuite-client/out/_next/static/chunks/9821-63c24d4f4d16de76.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
49 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

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.

"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9821],{6893:(e,t,a)=>{a.d(t,{fY:()=>f,xy:()=>g});var n=a(91356),i=a(98306),r=a(5807),l=a(49658),s=a(94927),o=a(18747),d=a(89285),u=a(77774),c=a(87009),m=a(61241);let p=["agenda","calendars"];function f(){let{ready:e,authenticated:t}=(0,o.v)(),a=(0,u.xB)(),n=(0,m.G)(e=>e.version);return(0,i.I)({queryKey:a?[...c.B,"calendars",n]:p,enabled:e&&t,staleTime:3e5,queryFn:async()=>a?m.G.getState().listCalendars():(await s.uE.get("/calendar")).calendars??[],initialData:a?()=>m.G.getState().listCalendars():void 0})}function g(e,t,a){let{ready:i,authenticated:p}=(0,o.v)(),f=(0,u.xB)(),g=(0,m.G)(e=>e.version),v=(0,l.GP)(t,"yyyy-MM-dd"),h=(0,l.GP)(a,"yyyy-MM-dd"),b=(0,r.E)({queries:e.map(e=>({queryKey:f?[...c.B,"events",e.id,v,h,g]:["agenda","events",e.id,v,h],enabled:i&&p,staleTime:3e4,queryFn:async()=>f?m.G.getState().listEvents(e.id,v,h):(await s.uE.get(`/calendar/${encodeURIComponent(e.id)}/events`,{from:v,to:h,page_size:"500"})).events??[],initialData:f?()=>m.G.getState().listEvents(e.id,v,h):void 0}))}),x=b.some(e=>e.isLoading),y=b.every(e=>e.isError)&&b.length>0,C=(0,n.useMemo)(()=>e.map((e,t)=>{let a=b[t];return`${e.id}:${a?.dataUpdatedAt??0}:${a?.fetchStatus??"idle"}`}).join("|"),[e,b]),E=t.getTime(),j=a.getTime();return{events:(0,n.useMemo)(()=>{let n=[];return e.forEach((e,i)=>{let r=b[i]?.data;r&&n.push(...(0,d.OB)(e,r,t,a))}),n.sort((e,t)=>e.start.getTime()-t.start.getTime())},[e,b,E,j,C]),isLoading:x,isError:y}}},6931:(e,t,a)=>{a.d(t,{S:()=>c});var n=a(91356),i=a(93021),r=a(52590),l=a(9150),s=a(80361),o=a(51765);let d={default_theme_mode:l.E.default_theme_mode,enforce_org_theme:!1,default_video_provider:l.E.default_video_provider,enforce_org_video_provider:!1,configured_video_providers:["ultimeet"]};function u(e,t,a){return Number.isFinite(e)?Math.min(a,Math.max(t,Math.round(e))):t}function c(){let e=(0,o._R)(e=>e.defaultVideoProvider),t=(0,o._R)(e=>e.videoProviderApiKeys),a=(0,o._R)(e=>e.defaultInvitationIdentityKey),c=(0,o._R)(e=>e.autoImportInvitationSources),m=(0,o._R)(e=>e.invitationImportExclusions),p=(0,o._R)(e=>e.weekStart),f=(0,o._R)(e=>e.defaultQuickDurationMinutes),g=(0,o._R)(e=>e.visibleHoursStart),v=(0,o._R)(e=>e.visibleHoursEnd),h=(0,o._R)(e=>e.timeFormat),b=(0,o._R)(e=>e.dragSnapMinutes),x=(0,o._R)(e=>e.buttonSnapMinutes),y=(0,r.x)(e=>e.themeMode),{data:C}=(0,i.i)(),E=C?.org_agenda??d,j=E.enforce_org_theme,k=E.enforce_org_video_provider,M=E.default_theme_mode,w=E.default_video_provider;return(0,n.useMemo)(()=>{var n;let i,r,o,d,C=(n={defaultVideoProvider:e,videoProviderApiKeys:t,defaultInvitationIdentityKey:a,autoImportInvitationSources:c,invitationImportExclusions:m,weekStart:p,defaultQuickDurationMinutes:f,visibleHoursStart:g,visibleHoursEnd:v,timeFormat:h,dragSnapMinutes:b,buttonSnapMinutes:x},r=(i={...l.$,...n}).autoImportInvitationSources??(n.autoImportInvitationIdentityKeys?(0,s.ON)(n.autoImportInvitationIdentityKeys):l.$.autoImportInvitationSources),o=u(i.visibleHoursStart,0,1439),(d=u(i.visibleHoursEnd,0,1439))<o&&(d=o),{...i,autoImportInvitationSources:(0,s.R6)(r),visibleHoursStart:o,visibleHoursEnd:d,defaultQuickDurationMinutes:Math.max(5,i.defaultQuickDurationMinutes)}),E=k?w:C.defaultVideoProvider;return{...C,defaultVideoProvider:E,themeMode:j?M:y,orgEnforcesTheme:j,orgEnforcesVideoProvider:k}},[e,t,a,c,m,p,f,g,v,h,b,x,y,j,k,M,w])}},9150:(e,t,a)=>{a.d(t,{$:()=>n,E:()=>i});let n={defaultVideoProvider:"ultimeet",videoProviderApiKeys:{},defaultInvitationIdentityKey:null,autoImportInvitationSources:[],invitationImportExclusions:[],weekStart:"auto",defaultQuickDurationMinutes:60,visibleHoursStart:0,visibleHoursEnd:1439,timeFormat:"24h",dragSnapMinutes:15,buttonSnapMinutes:15,externalCalendars:[],calendarViews:[],defaultCalendarViewId:null,accountEnabledCalendarIds:{}},i={default_theme_mode:"system",enforce_org_theme:!1,default_video_provider:"ultimeet",enforce_org_video_provider:!1,video_provider_api_keys:{}}},19096:(e,t,a)=>{a.d(t,{J:()=>l});var n=a(4208);a(91356);var i=a(84068),r=a(58113);function l({className:e,...t}){return(0,n.jsx)(i.b,{"data-slot":"label",className:(0,r.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}},22581:(e,t,a)=>{a.d(t,{DO:()=>s,L_:()=>l,mF:()=>i,oV:()=>o,uI:()=>r,yD:()=>d});var n=a(80361);let i=[5,10,15,20,30,60],r=["ultimeet","google_meet","zoom","teams","jitsi","none"],l={ultimeet:"UltiMeet",google_meet:"Google Meet",zoom:"Zoom",teams:"Microsoft Teams",jitsi:"Jitsi",none:"Aucun"},s=[{minutes:15,label:"15 min"},{minutes:30,label:"30 min"},{minutes:45,label:"45 min"},{minutes:60,label:"1 h"},{minutes:90,label:"1 h 30"},{minutes:120,label:"2 h"}],o=[{value:"auto",label:"Automatique (locale)"},{value:1,label:"Lundi"},{value:0,label:"Dimanche"},{value:6,label:"Samedi"}];function d(e){return"identity"===e.type?`identity:${(0,n.HH)(e.value)}`:`${e.type}:${e.value}`}},30206:(e,t,a)=>{a.d(t,{e:()=>s});var n=a(4208),i=a(84834),r=a(43992),l=a(58113);function s({provider:e,className:t}){if("none"===e)return(0,n.jsx)(i.In,{icon:"mdi:video-off-outline",className:(0,l.cn)("size-5 shrink-0 text-muted-foreground",t),"aria-hidden":!0});let a=r.wi[e];return"image"===a.kind?(0,n.jsx)("img",{src:a.src,alt:"",className:(0,l.cn)("size-5 shrink-0 object-contain",t)}):(0,n.jsx)(i.In,{icon:a.icon,className:(0,l.cn)("size-5 shrink-0",t),"aria-hidden":!0})}},30541:(e,t,a)=>{a.d(t,{Ay:()=>s,Fd:()=>c,JV:()=>r,Tz:()=>i,eM:()=>n,el:()=>o,hg:()=>d,iv:()=>u,so:()=>l,z:()=>m});let n="ext:";function i(e){return e.startsWith(n)}function r(e){return{id:e.id,display_name:e.display_name,color:e.color,path:e.url}}function l(e,t){return[...e,...t.map(r)]}function s(e,t,a){let n=a[t];return!n||n.includes(e)}function o(e,t){return t?e.find(e=>e.id===t)??null:null}function d({allCalendars:e,hiddenCalendarIds:t,accountIds:a,accountEnabledCalendarIds:n,activeView:i}){let r=new Set(t);return e.map(e=>e.id).filter(t=>{if(r.has(t))return!1;let l=e.find(e=>e.id===t)?.account_id??null;return!!function(e,t,a,n=null){if(0===t.length)return!0;let i=n?t.filter(e=>e===n):t;return(!n||0!==i.length)&&i.some(t=>s(e,t,a))}(t,a,n,l)&&(!i||!!i.calendar_ids.includes(t))})}function u(e,t){let a=new Set(t);return e.filter(e=>a.has(e.id))}let c="Tous les agendas";function m(e){return e.trim().toLocaleLowerCase("fr")===c.toLocaleLowerCase("fr")}},41280:(e,t,a)=>{a.d(t,{BF:()=>w,BK:()=>D,K5:()=>b,Kj:()=>A,Lj:()=>E,NV:()=>$,O0:()=>j,Xu:()=>_,YK:()=>S,YN:()=>g,bN:()=>C,dB:()=>T,hm:()=>k,kX:()=>M,nN:()=>I,ni:()=>h,yw:()=>V,zq:()=>v});var n=a(49658),i=a(48408),r=a(99736),l=a(5315),s=a(4518),o=a(4315),d=a(17004),u=a(50131),c=a(41991),m=a(74771),p=a(54798),f=a(7556);let g={weekStartsOn:1,locale:f.fr},v=1;function h(e="auto"){if("auto"!==e)return e;if("u"<typeof navigator)return v;try{let e=new Intl.Locale(navigator.language).weekInfo,t=e?.firstDay;if(7===t)return 0;if(null!=t&&t>=0&&t<=6)return t}catch{}return+!navigator.language.toLowerCase().startsWith("en-us")}function b(e){return{weekStartsOn:e,locale:f.fr}}let x=["L","M","M","J","V","S","D"],y=["D","L","M","M","J","V","S"];function C(e){return 0===e?y:x}function E(e){let t=e.trim();if(/^\d{8}$/.test(t))return new Date(Number(t.slice(0,4)),Number(t.slice(4,6))-1,Number(t.slice(6,8)));let a=/^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})(Z?)$/.exec(t);if(!a){let e=new Date(t);return Number.isNaN(e.getTime())?null:e}let[,n,i,r,l,s,o,d]=a;return"Z"===d?new Date(Date.UTC(+n,i-1,+r,+l,+s,+o)):new Date(+n,i-1,+r,+l,+s,+o)}function j(e){let t=(e,t=2)=>String(e).padStart(t,"0");return`${t(e.getUTCFullYear(),4)}${t(e.getUTCMonth()+1)}${t(e.getUTCDate())}T${t(e.getUTCHours())}${t(e.getUTCMinutes())}${t(e.getUTCSeconds())}Z`}function k(e){return(0,n.GP)(e,"yyyyMMdd")}function M(e){return(0,n.GP)(e,"yyyy-MM-dd")}function w(e){let t=(0,i.qg)(e,"yyyy-MM-dd",new Date);return Number.isNaN(t.getTime())?null:t}function I(e,t,a="auto",n){let i=null!=n?b(n):function(e="auto"){return b(h(e))}(a);switch(e){case"day":return{start:(0,r.o)(t),end:(0,l.D)(t)};case"week":return{start:(0,s.k)(t,i),end:(0,o.$)(t,i)};case"month":return{start:(0,s.k)((0,d.w)(t),i),end:(0,o.$)((0,u.p)(t),i)}}}function _(e,t,a="auto",n){let{start:i,end:r}=I(e,t,a,n),l=[];for(let e=i;e<=r;e=(0,c.f)(e,1))l.push(e);return l}function N(e){return e.charAt(0).toUpperCase()+e.slice(1)}function S(e,t,a="auto",i){if("day"===e)return N((0,n.GP)(t,"EEEE d MMMM yyyy",{locale:f.fr}));if("month"===e)return N((0,n.GP)(t,"MMMM yyyy",{locale:f.fr}));let{start:r,end:l}=I("week",t,a,i);return(0,m.t)(r,l)?N((0,n.GP)(r,"MMMM yyyy",{locale:f.fr})):(0,p.s)(r,l)?`${N((0,n.GP)(r,"MMM",{locale:f.fr}))} ${(0,n.GP)(l,"MMM yyyy",{locale:f.fr})}`:`${N((0,n.GP)(r,"MMM yyyy",{locale:f.fr}))} ${(0,n.GP)(l,"MMM yyyy",{locale:f.fr})}`}function T(e,t="24h"){return(0,n.GP)(e,"12h"===t?"h:mm a":"HH:mm",{locale:f.fr})}function A(e,t="24h"){return T(new Date(2e3,0,1,e,0,0),t)}function D(e){let t=Math.floor(e/60),a=e%60;return 0===t?`${a} min`:`${t} h ${String(a).padStart(2,"0")}`}function $(e,t,a,i="24h"){let r=M(e)===M(t),l=e=>N((0,n.GP)(e,"EEEE d MMMM",{locale:f.fr}));if(a){let a=(0,c.f)(t,-1);return M(e)===M(a)||t<=e?l(e):`${l(e)} ${l(a)}`}return r?`${l(e)}${T(e,i)} ${T(t,i)}`:`${l(e)} ${T(e,i)} ${l(t)} ${T(t,i)}`}function V(e,t=15){return Math.round(e/t)*t}},43992:(e,t,a)=>{a.d(t,{Cc:()=>d,IG:()=>s,OH:()=>o,lp:()=>r,uE:()=>l,wi:()=>i});var n=a(93371);let i={ultimeet:{kind:"image",src:"/ultimeet-mark.svg",alt:"UltiMeet"},google_meet:{kind:"iconify",icon:"logos:google-meet"},zoom:{kind:"iconify",icon:"logos:zoom-icon"},teams:{kind:"iconify",icon:"logos:microsoft-teams"},jitsi:{kind:"iconify",icon:"simple-icons:jitsi"}};function r(){return`${crypto.randomUUID()}@ulti`}function l(e,t){let a=e.path.endsWith("/")?e.path:`${e.path}/`;return`${a}${t}.ics`}function s(e,t){if("none"===e)return"Aucune visio";let a=(0,n.PF)(e);return t?`${a} activ\xe9e`:`Ajouter ${a}`}function o(e){return`Rejoindre ${(0,n.PF)(e)}`}function d(e){return"ultimeet"===e}},46424:(e,t,a)=>{a.d(t,{_X:()=>d,b0:()=>o,d7:()=>c,gr:()=>m,j9:()=>u,yx:()=>p});var n=a(98306),i=a(39927),r=a(17745),l=a(94927),s=a(18747);function o(){let{ready:e,authenticated:t}=(0,s.v)();return(0,n.I)({queryKey:["labels"],queryFn:async()=>{let e=await l.uE.get("/mail/labels");return Array.isArray(e)?e:e.labels??[]},staleTime:3e5,enabled:e&&t,retry:1})}function d(){let e=(0,i.jE)();return(0,r.n)({mutationFn:e=>l.uE.post("/mail/labels",e),onSuccess:()=>{e.invalidateQueries({queryKey:["labels"]})}})}function u(){let e=(0,i.jE)();return(0,r.n)({mutationFn:({id:e,...t})=>l.uE.put(`/mail/labels/${e}`,t),onSuccess:()=>{e.invalidateQueries({queryKey:["labels"]})}})}function c(){let e=(0,i.jE)();return(0,r.n)({mutationFn:e=>l.uE.delete(`/mail/labels/${e}`),onMutate:async t=>{await e.cancelQueries({queryKey:["labels"]});let a=e.getQueryData(["labels"]);return e.setQueryData(["labels"],e=>e?.filter(e=>e.id!==t)),{previous:a}},onError:(t,a,n)=>{n?.previous&&e.setQueryData(["labels"],n.previous)},onSettled:()=>{e.invalidateQueries({queryKey:["labels"]})}})}function m(){let e=(0,i.jE)();return(0,r.n)({mutationFn:e=>l.uE.post("/mail/labels/reorder",{items:e}),onSuccess:()=>{e.invalidateQueries({queryKey:["labels"]})}})}function p(e){return(0,n.I)({queryKey:["identities",e],queryFn:async()=>{let t=await l.uE.get(`/mail/accounts/${e}/identities`);return Array.isArray(t)?t:t.identities??[]},enabled:!!e})}},51765:(e,t,a)=>{a.d(t,{US:()=>m,ZF:()=>c,_R:()=>u});var n=a(46298),i=a(22029),r=a(91025),l=a(9150),s=a(80361),o=a(30541);function d(e){return`${e}${crypto.randomUUID()}`}let u=(0,n.v)()((0,i.Zr)((e,t)=>({...l.$,quickSettingsOpen:!1,hiddenCalendarIds:[],lastView:"week",activeCalendarViewId:null,setQuickSettingsOpen:t=>e({quickSettingsOpen:t}),setDefaultVideoProvider:t=>e({defaultVideoProvider:t}),setVideoProviderApiKey:(t,a)=>e(e=>({videoProviderApiKeys:{...e.videoProviderApiKeys,[t]:a}})),setDefaultInvitationIdentityKey:t=>e({defaultInvitationIdentityKey:t}),setAutoImportInvitationSources:t=>e({autoImportInvitationSources:(0,s.R6)(t)}),setInvitationImportExclusions:t=>e({invitationImportExclusions:(0,s.BP)(t)}),setWeekStart:t=>e({weekStart:t}),setDefaultQuickDurationMinutes:t=>e({defaultQuickDurationMinutes:t}),setVisibleHoursStart:t=>e({visibleHoursStart:t}),setVisibleHoursEnd:t=>e({visibleHoursEnd:t}),setTimeFormat:t=>e({timeFormat:t}),setDragSnapMinutes:t=>e({dragSnapMinutes:t}),setButtonSnapMinutes:t=>e({buttonSnapMinutes:t}),toggleCalendarVisible:a=>{let n=t().hiddenCalendarIds;e({hiddenCalendarIds:n.includes(a)?n.filter(e=>e!==a):[...n,a]})},setLastView:t=>e({lastView:t}),setExternalCalendars:t=>e({externalCalendars:t}),addExternalCalendar:t=>{let a=d(o.eM);return e(e=>({externalCalendars:[...e.externalCalendars,{...t,id:a}]})),a},updateExternalCalendar:(t,a)=>e(e=>({externalCalendars:e.externalCalendars.map(e=>e.id===t?{...e,...a}:e)})),removeExternalCalendar:t=>e(e=>({externalCalendars:e.externalCalendars.filter(e=>e.id!==t),calendarViews:e.calendarViews.map(e=>({...e,calendar_ids:e.calendar_ids.filter(e=>e!==t)})),activeCalendarViewId:e.activeCalendarViewId===t?null:e.activeCalendarViewId,hiddenCalendarIds:e.hiddenCalendarIds.filter(e=>e!==t),accountEnabledCalendarIds:Object.fromEntries(Object.entries(e.accountEnabledCalendarIds).map(([e,a])=>[e,a.filter(e=>e!==t)]))})),setCalendarViews:t=>e({calendarViews:t}),addCalendarView:t=>{let a=t.name.trim();if((0,o.z)(a))return"";let n=d("view:");return e(e=>({calendarViews:[...e.calendarViews,{...t,name:a,id:n}]})),n},updateCalendarView:(t,a)=>e(e=>{let n=a.name?.trim();return n&&(0,o.z)(n)?e:{calendarViews:e.calendarViews.map(e=>e.id===t?{...e,...a,...n?{name:n}:{}}:e)}}),removeCalendarView:t=>e(e=>({calendarViews:e.calendarViews.filter(e=>e.id!==t),defaultCalendarViewId:e.defaultCalendarViewId===t?null:e.defaultCalendarViewId,activeCalendarViewId:e.activeCalendarViewId===t?null:e.activeCalendarViewId})),setDefaultCalendarViewId:t=>e({defaultCalendarViewId:t}),setActiveCalendarViewId:t=>e({activeCalendarViewId:t}),setAccountEnabledCalendarIds:(t,a)=>e(e=>{let n={...e.accountEnabledCalendarIds};return null===a?delete n[t]:n[t]=a,{accountEnabledCalendarIds:n}}),toggleAccountCalendar:(t,a,n)=>{e(e=>{let i=e.accountEnabledCalendarIds[t]??n,r=i.includes(a)?i.filter(e=>e!==a):[...i,a],l={...e.accountEnabledCalendarIds};return r.length===n.length&&n.every(e=>r.includes(e))?delete l[t]:l[t]=r,{accountEnabledCalendarIds:l}})}}),{name:"agenda-settings-store",version:3,migrate:(e,t)=>(t<1&&(!e.autoImportInvitationSources&&Array.isArray(e.autoImportInvitationIdentityKeys)&&(e.autoImportInvitationSources=(0,s.ON)(e.autoImportInvitationIdentityKeys)),delete e.autoImportInvitationIdentityKeys),t<2&&(e.externalCalendars??=[],e.calendarViews??=[],e.defaultCalendarViewId??=null,e.accountEnabledCalendarIds??={},e.activeCalendarViewId??=null),t<3&&(e.calendarViews=(e.calendarViews??[]).map(e=>(0,o.z)(e.name)?{...e,name:`${e.name} (vue)`}:e)),e),storage:r.$,partialize:e=>({defaultVideoProvider:e.defaultVideoProvider,videoProviderApiKeys:e.videoProviderApiKeys,defaultInvitationIdentityKey:e.defaultInvitationIdentityKey,autoImportInvitationSources:e.autoImportInvitationSources,invitationImportExclusions:e.invitationImportExclusions,weekStart:e.weekStart,defaultQuickDurationMinutes:e.defaultQuickDurationMinutes,visibleHoursStart:e.visibleHoursStart,visibleHoursEnd:e.visibleHoursEnd,timeFormat:e.timeFormat,dragSnapMinutes:e.dragSnapMinutes,buttonSnapMinutes:e.buttonSnapMinutes,hiddenCalendarIds:e.hiddenCalendarIds,lastView:e.lastView,externalCalendars:e.externalCalendars,calendarViews:e.calendarViews,defaultCalendarViewId:e.defaultCalendarViewId,accountEnabledCalendarIds:e.accountEnabledCalendarIds,activeCalendarViewId:e.activeCalendarViewId})})),c=(0,n.v)(e=>({sidebarCollapsed:!1,setSidebarCollapsed:t=>e({sidebarCollapsed:t})}));function m(e,t){return`${t??""}:${e}`}},52084:(e,t,a)=>{a.d(t,{Mp:()=>A,uV:()=>T,c7:()=>S});var n=a(4208),i=a(91356),r=a(93497),l=a(40230),s=a(5312),o=a(78606),d=a(89032),u=a(22054),c=a(58113);let m={sm:"size-8 text-sm",md:"size-10 text-base",lg:"size-20 text-3xl"};function p({account:e,size:t="md",className:a}){let i=e.name||e.email,r=(0,u.w7)(i),l=(0,u.V7)(i);return(0,n.jsx)("div",{className:(0,c.cn)("flex shrink-0 items-center justify-center rounded-full font-medium text-white",m[t],a),style:{backgroundColor:l},"aria-hidden":!0,children:r})}var f=a(61554),g=a(30925),v=a(18166),h=a(13746),b=a(19096),x=a(89342),y=a(79416),C=a(30541),E=a(89285),j=a(51765),k=a(76972),M=a(46424),w=a(90324),I=a(44410),_=a(49845);function N({calendarId:e,label:t,color:a,checked:i,onToggle:r}){return(0,n.jsxs)("label",{className:"flex cursor-pointer items-center gap-2.5 rounded-lg px-2 py-1.5 hover:bg-mail-nav-hover",children:[(0,n.jsx)(g.S,{checked:i,onCheckedChange:r}),(0,n.jsx)("span",{"aria-hidden":!0,className:"size-3.5 shrink-0 rounded-[4px]",style:{backgroundColor:a}}),(0,n.jsx)("span",{className:"min-w-0 truncate text-sm text-foreground/85",children:t}),(0,n.jsx)("span",{className:"sr-only",children:e})]})}function S({open:e,onOpenChange:t,calendar:a,accounts:r}){let l=(0,j._R)(e=>e.addExternalCalendar),s=(0,j._R)(e=>e.updateExternalCalendar),[o,u]=(0,i.useState)(""),[m,p]=(0,i.useState)(""),[g,C]=(0,i.useState)(y.x0[0].value),[E,k]=(0,i.useState)("all");return(0,i.useEffect)(()=>{e&&(u(a?.display_name??""),p(a?.url??""),C(a?.color??y.x0[0].value),k(a?.account_id??"all"))},[e,a]),(0,n.jsx)(v.lG,{open:e,onOpenChange:t,children:(0,n.jsxs)(v.Cf,{className:"sm:max-w-md","aria-describedby":void 0,children:[(0,n.jsx)(v.c7,{children:(0,n.jsx)(v.L3,{children:a?"Modifier le calendrier externe":"Ajouter un calendrier iCal"})}),(0,n.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(b.J,{htmlFor:"ext-cal-name",children:"Nom"}),(0,n.jsx)(h.p,{id:"ext-cal-name",value:o,onChange:e=>u(e.target.value),placeholder:"Calendrier externe"})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(b.J,{htmlFor:"ext-cal-url",children:"Lien iCal"}),(0,n.jsx)(h.p,{id:"ext-cal-url",value:m,onChange:e=>p(e.target.value),placeholder:"https://…/calendar.ics"})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(b.J,{children:"Compte mail"}),(0,n.jsxs)(x.l6,{value:E,onValueChange:k,children:[(0,n.jsx)(x.bq,{className:"h-9",children:(0,n.jsx)(x.yv,{})}),(0,n.jsxs)(x.gC,{children:[(0,n.jsx)(x.eb,{value:"all",children:"Tous les comptes"}),r.map(e=>(0,n.jsx)(x.eb,{value:e.id,children:e.email},e.id))]})]})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(b.J,{children:"Couleur"}),(0,n.jsx)("div",{className:"flex flex-wrap gap-2",children:y.x0.map(e=>(0,n.jsx)("button",{type:"button",title:e.label,"aria-label":e.label,onClick:()=>C(e.value),className:(0,c.cn)("size-7 rounded-full transition-transform hover:scale-110",g===e.value&&"ring-2 ring-foreground/70 ring-offset-2 ring-offset-background"),style:{backgroundColor:e.value}},e.value))})]})]}),(0,n.jsxs)(v.Es,{children:[(0,n.jsx)(f.$,{variant:"ghost",onClick:()=>t(!1),children:"Annuler"}),(0,n.jsx)(f.$,{onClick:()=>{let e=o.trim(),n=m.trim();if(!e||!n)return;try{let e=new URL(n);if("http:"!==e.protocol&&"https:"!==e.protocol)return void d.oR.error("L'URL doit commencer par http:// ou https://")}catch{d.oR.error("URL iCal invalide");return}let i={display_name:e,url:n,color:g,account_id:"all"===E?null:E};a?(s(a.id,i),d.oR.success("Calendrier externe mis \xe0 jour")):(l(i),d.oR.success("Calendrier externe ajout\xe9")),t(!1)},disabled:!o.trim()||!m.trim(),children:a?"Enregistrer":"Ajouter"})]})]})})}function T({open:e,onOpenChange:t,view:a,calendarOptions:r,labelOptions:l}){let s=(0,j._R)(e=>e.addCalendarView),o=(0,j._R)(e=>e.updateCalendarView),[u,c]=(0,i.useState)(""),[m,p]=(0,i.useState)([]),[x,y]=(0,i.useState)([]);return(0,i.useEffect)(()=>{e&&(c(a?.name??""),p(a?.calendar_ids??[]),y(a?.label_ids??[]))},[e,a]),(0,n.jsx)(v.lG,{open:e,onOpenChange:t,children:(0,n.jsxs)(v.Cf,{className:"sm:max-w-lg","aria-describedby":void 0,children:[(0,n.jsx)(v.c7,{children:(0,n.jsx)(v.L3,{children:a?"Modifier la vue":"Nouvelle vue d'agendas"})}),(0,n.jsxs)("div",{className:"flex max-h-[min(70vh,520px)] flex-col gap-4 overflow-y-auto pr-1",children:[(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(b.J,{htmlFor:"view-name",children:"Nom de la vue"}),(0,n.jsx)(h.p,{id:"view-name",value:u,onChange:e=>c(e.target.value),placeholder:"Travail, Perso…"})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(b.J,{children:"Agendas inclus"}),(0,n.jsx)("div",{className:"max-h-44 space-y-0.5 overflow-y-auto rounded-lg border border-border p-1",children:0===r.length?(0,n.jsx)("p",{className:"px-2 py-3 text-xs text-muted-foreground",children:"Aucun agenda disponible."}):r.map(e=>(0,n.jsx)(N,{calendarId:e.id,label:e.label,color:e.color,checked:m.includes(e.id),onToggle:()=>{var t;return t=e.id,void p(e=>e.includes(t)?e.filter(e=>e!==t):[...e,t])}},e.id))})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(b.J,{children:"Libell\xe9s associ\xe9s"}),(0,n.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Pour filtrer les invitations import\xe9es depuis le mail (optionnel)."}),(0,n.jsx)("div",{className:"max-h-36 space-y-0.5 overflow-y-auto rounded-lg border border-border p-1",children:0===l.length?(0,n.jsx)("p",{className:"px-2 py-3 text-xs text-muted-foreground",children:"Aucun libell\xe9."}):l.map(e=>(0,n.jsxs)("label",{className:"flex cursor-pointer items-center gap-2.5 rounded-lg px-2 py-1.5 hover:bg-mail-nav-hover",children:[(0,n.jsx)(g.S,{checked:x.includes(e.id),onCheckedChange:()=>{var t;return t=e.id,void y(e=>e.includes(t)?e.filter(e=>e!==t):[...e,t])}}),(0,n.jsx)("span",{className:"truncate text-sm",children:e.label})]},e.id))})]})]}),(0,n.jsxs)(v.Es,{children:[(0,n.jsx)(f.$,{variant:"ghost",onClick:()=>t(!1),children:"Annuler"}),(0,n.jsx)(f.$,{onClick:()=>{let e=u.trim();if(!e)return;if((0,C.z)(e))return void d.oR.error("\xab Tous les agendas \xbb est r\xe9serv\xe9 \xe0 l'affichage sans vue.");if(0===m.length)return void d.oR.error("S\xe9lectionnez au moins un agenda");let n={name:e,calendar_ids:m,label_ids:x};a?(o(a.id,n),d.oR.success("Vue mise \xe0 jour")):(s(n),d.oR.success("Vue cr\xe9\xe9e")),t(!1)},disabled:!u.trim(),children:a?"Enregistrer":"Cr\xe9er"})]})]})})}function A({variant:e="panel"}){let{data:t=[]}=(0,w.HM)(),{data:a=[]}=(0,M.b0)(),{calendars:d,externalCalendars:u}=(0,k.v6)(),m=(0,j._R)(e=>e.accountEnabledCalendarIds),g=(0,j._R)(e=>e.toggleAccountCalendar),v=(0,j._R)(e=>e.removeExternalCalendar),h=(0,j._R)(e=>e.calendarViews),y=(0,j._R)(e=>e.defaultCalendarViewId),D=(0,j._R)(e=>e.setDefaultCalendarViewId),$=(0,j._R)(e=>e.removeCalendarView),[V,P]=(0,i.useState)(!1),[L,O]=(0,i.useState)(null),[R,z]=(0,i.useState)(!1),[F,K]=(0,i.useState)(null),U=(0,i.useMemo)(()=>d.map(e=>e.id),[d]),G=(0,i.useMemo)(()=>d.map(e=>({id:e.id,label:e.display_name,color:(0,E.Iu)(e)})),[d]),Y=(0,i.useMemo)(()=>a.map(e=>({id:e.id,label:e.name})),[a]),q="page"===e,H=e=>(0,c.cn)("space-y-3",q?I.tv:(0,c.cn)("px-4 py-3","rest"===e&&"border-t border-border"));return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("section",{className:H("first"),children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h2",{className:"text-sm font-medium text-foreground",children:"Agendas par compte mail"}),(0,n.jsx)("p",{className:"mt-0.5 text-[11px] leading-snug text-muted-foreground",children:"Choisissez les agendas visibles pour chaque compte Ultimail."})]}),0===t.length?(0,n.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Aucun compte mail connect\xe9."," ",(0,n.jsx)("a",{href:`${_.gH}/accounts`,className:"text-[#1a73e8] hover:underline",children:"Ajouter un compte"})]}):(0,n.jsx)("div",{className:"divide-y divide-border overflow-hidden rounded-lg border border-border",children:t.map(e=>(0,n.jsxs)("div",{className:"p-3",children:[(0,n.jsxs)("div",{className:"mb-2 flex items-center gap-2",children:[(0,n.jsx)(p,{account:e,size:"sm"}),(0,n.jsxs)("div",{className:"min-w-0",children:[(0,n.jsx)("p",{className:"truncate text-sm font-medium",children:e.name}),(0,n.jsx)("p",{className:"truncate text-xs text-muted-foreground",children:e.email})]})]}),(0,n.jsx)("div",{className:"space-y-0.5",children:0===d.length?(0,n.jsx)("p",{className:"text-xs text-muted-foreground",children:"Aucun agenda."}):d.map(t=>(0,n.jsx)(N,{calendarId:t.id,label:t.display_name,color:(0,E.Iu)(t),checked:(0,C.Ay)(t.id,e.id,m),onToggle:()=>g(e.id,t.id,U)},`${e.id}-${t.id}`))})]},e.id))})]}),(0,n.jsxs)("section",{className:H("rest"),children:[(0,n.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h2",{className:"text-sm font-medium text-foreground",children:"Calendriers externes"}),(0,n.jsx)("p",{className:"mt-0.5 text-[11px] leading-snug text-muted-foreground",children:"Abonnez un flux iCal (Google, Outlook, etc.)."})]}),(0,n.jsxs)(f.$,{type:"button",variant:"outline",size:"sm",className:"h-8 shrink-0 gap-1 rounded-full",onClick:()=>{O(null),P(!0)},children:[(0,n.jsx)(r.A,{className:"size-3.5"}),"Ajouter"]})]}),0===u.length?(0,n.jsx)("p",{className:"text-xs text-muted-foreground",children:"Aucun calendrier externe."}):(0,n.jsx)("ul",{className:"space-y-2",children:u.map(e=>(0,n.jsxs)("li",{className:"flex items-center gap-2 rounded-lg border border-border px-2 py-2",children:[(0,n.jsx)(l.A,{className:"size-4 shrink-0 text-muted-foreground"}),(0,n.jsx)("span",{"aria-hidden":!0,className:"size-3 shrink-0 rounded-full",style:{backgroundColor:e.color}}),(0,n.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,n.jsx)("p",{className:"truncate text-sm",children:e.display_name}),(0,n.jsx)("p",{className:"truncate text-[11px] text-muted-foreground",children:e.url})]}),(0,n.jsx)(f.$,{type:"button",variant:"ghost",size:"icon",className:"size-8 shrink-0","aria-label":`Modifier ${e.display_name}`,onClick:()=>{O(e),P(!0)},children:(0,n.jsx)(s.A,{className:"size-4"})}),(0,n.jsx)(f.$,{type:"button",variant:"ghost",size:"icon",className:"size-8 shrink-0 text-destructive","aria-label":`Supprimer ${e.display_name}`,onClick:()=>v(e.id),children:(0,n.jsx)(o.A,{className:"size-4"})})]},e.id))})]}),(0,n.jsxs)("section",{className:H("rest"),children:[(0,n.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h2",{className:"text-sm font-medium text-foreground",children:"Vues d'agendas"}),(0,n.jsx)("p",{className:"mt-0.5 text-[11px] leading-snug text-muted-foreground",children:"Regroupez des agendas et libell\xe9s, puis ouvrez une vue depuis la barre lat\xe9rale."})]}),(0,n.jsxs)(f.$,{type:"button",variant:"outline",size:"sm",className:"h-8 shrink-0 gap-1 rounded-full",onClick:()=>{K(null),z(!0)},children:[(0,n.jsx)(r.A,{className:"size-3.5"}),"Nouvelle vue"]})]}),(0,n.jsxs)("div",{className:"grid grid-cols-[minmax(0,0.72fr)_minmax(9.75rem,1.18fr)] items-center gap-2 py-1",children:[(0,n.jsx)(b.J,{className:"text-xs font-normal text-muted-foreground",children:"Vue par d\xe9faut"}),(0,n.jsxs)(x.l6,{value:y??"none",onValueChange:e=>D("none"===e?null:e),children:[(0,n.jsx)(x.bq,{className:"h-8 w-full text-xs",children:(0,n.jsx)(x.yv,{placeholder:"Aucune vue"})}),(0,n.jsxs)(x.gC,{children:[(0,n.jsx)(x.eb,{value:"none",children:"Aucune vue"}),h.map(e=>(0,n.jsx)(x.eb,{value:e.id,children:e.name},e.id))]})]})]}),0===h.length?(0,n.jsx)("p",{className:"text-xs text-muted-foreground",children:"Aucune vue enregistr\xe9e."}):(0,n.jsx)("ul",{className:"space-y-2",children:h.map(e=>(0,n.jsxs)("li",{className:"flex items-center gap-2 rounded-lg border border-border px-2 py-2",children:[(0,n.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,n.jsx)("p",{className:"truncate text-sm font-medium",children:e.name}),(0,n.jsxs)("p",{className:"text-[11px] text-muted-foreground",children:[e.calendar_ids.length," agenda",e.calendar_ids.length>1?"s":"",e.label_ids.length>0?` \xb7 ${e.label_ids.length} libell\xe9${e.label_ids.length>1?"s":""}`:""]})]}),(0,n.jsx)(f.$,{type:"button",variant:"ghost",size:"icon",className:"size-8 shrink-0","aria-label":`Modifier ${e.name}`,onClick:()=>{K(e),z(!0)},children:(0,n.jsx)(s.A,{className:"size-4"})}),(0,n.jsx)(f.$,{type:"button",variant:"ghost",size:"icon",className:"size-8 shrink-0 text-destructive","aria-label":`Supprimer ${e.name}`,onClick:()=>$(e.id),children:(0,n.jsx)(o.A,{className:"size-4"})})]},e.id))})]}),(0,n.jsx)(S,{open:V,onOpenChange:P,calendar:L,accounts:t}),(0,n.jsx)(T,{open:R,onOpenChange:z,view:F,calendarOptions:G,labelOptions:Y})]})}},52590:(e,t,a)=>{a.d(t,{x:()=>u});var n=a(46298),i=a(22029),r=a(91025),l=a(81893),s=a(65367),o=a(19916);let d={quickSettingsOpen:!1,themeDialogOpen:!1,density:"default",themeMode:"system",backgroundId:"none",inboxSort:"default",readingPane:"none",conversationMode:!0,infiniteScroll:!1,listPageSize:o.Lw,...s.L5},u=(0,n.v)()((0,i.Zr)(e=>({...d,setQuickSettingsOpen:t=>e({quickSettingsOpen:t}),setThemeDialogOpen:t=>e({themeDialogOpen:t}),setDensity:t=>e({density:t}),setThemeMode:t=>e({themeMode:t}),setBackgroundId:t=>e({backgroundId:t}),setInboxSort:t=>e({inboxSort:t}),setReadingPane:t=>e({readingPane:t}),setConversationMode:t=>e({conversationMode:t}),setInfiniteScroll:t=>e({infiniteScroll:t}),setListPageSize:t=>e({listPageSize:t}),setDesktopNewMail:t=>e({desktopNewMail:t}),setDesktopMentions:t=>e({desktopMentions:t}),setEmailDigest:t=>e({emailDigest:t}),setSoundEnabled:t=>e({soundEnabled:t}),hydrateFromApi:t=>e(e=>({...e,...t,...void 0!==t.backgroundId?{backgroundId:(0,l.y9)(t.backgroundId)}:{}}))}),{name:"ultimail-mail-settings",storage:r.$,partialize:e=>({density:e.density,themeMode:e.themeMode,backgroundId:e.backgroundId,inboxSort:e.inboxSort,readingPane:e.readingPane,conversationMode:e.conversationMode,infiniteScroll:e.infiniteScroll,listPageSize:e.listPageSize,desktopNewMail:e.desktopNewMail,desktopMentions:e.desktopMentions,emailDigest:e.emailDigest,soundEnabled:e.soundEnabled}),merge:(e,t)=>e?{...t,...e,backgroundId:(0,l.y9)(e.backgroundId??"none"),listPageSize:(0,o.rq)(Number(e.listPageSize))?(0,o.QK)(Number(e.listPageSize)):t.listPageSize}:t}))},58226:(e,t,a)=>{a.d(t,{$t:()=>f,CK:()=>p,Ko:()=>b,kW:()=>g});var n=a(4518),i=a(41991),r=a(15233),l=a(14003),s=a(82998),o=a(49658),d=a(7556),u=a(41280);let c={SU:0,MO:1,TU:2,WE:3,TH:4,FR:5,SA:6},m=["SU","MO","TU","WE","TH","FR","SA"];function p(e){let t=e.trim().replace(/^RRULE:/i,"");if(!t)return null;let a={};for(let e of t.split(";")){let[t,n]=e.split("=");t&&n&&(a[t.toUpperCase()]=n.toUpperCase())}let n=a.FREQ;if(!n||!["DAILY","WEEKLY","MONTHLY","YEARLY"].includes(n))return null;let i=Math.max(1,Number(a.INTERVAL??"1")||1),r=a.COUNT?Math.max(1,Number(a.COUNT)||1):void 0,l=a.UNTIL?(0,u.Lj)(a.UNTIL)??void 0:void 0,s="WEEKLY"===n&&a.BYDAY?a.BYDAY.split(",").map(e=>c[e.trim()]).filter(e=>void 0!==e):[];return{freq:n,interval:i,count:r,until:l,byday:s}}function f(e,t,a,o,d,c=400){let m=[],p=0,g=e=>(!t.until||!(e>t.until))&&(p++,(!t.count||!(p>t.count))&&(e>=o&&e<=d&&!a.has(e.getTime())&&m.push(e),m.length<c));if("WEEKLY"===t.freq&&t.byday.length>0){let a=[...t.byday].sort((e,t)=>e-t),l=(0,n.k)(e,u.YN);for(let n=0;n<1e3;n++){for(let t of a){let a=(t-1+7)%7,n=new Date((0,i.f)(l,a));if(n.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),0),!(n<e)&&!g(n))return m}if((l=(0,r.J)(l,t.interval))>d&&(!t.count||p>t.count)||l>d&&!t.count)break}return m}let v=new Date(e);for(let e=0;e<5e3&&g(v);e++){switch(t.freq){case"DAILY":v=(0,i.f)(v,t.interval);break;case"WEEKLY":v=(0,r.J)(v,t.interval);break;case"MONTHLY":v=(0,l.P)(v,t.interval);break;case"YEARLY":v=(0,s.e)(v,t.interval)}if(v>d&&!t.count&&!t.until||v>d&&t.until&&t.until<=d)break}return m}function g(e){let t=(0,o.GP)(e,"EEEE",{locale:d.fr}),a=(0,o.GP)(e,"d",{locale:d.fr}),n=(0,o.GP)(e,"d MMMM",{locale:d.fr});return[{value:"",label:"Ne se r\xe9p\xe8te pas"},{value:"FREQ=DAILY",label:"Tous les jours"},{value:`FREQ=WEEKLY;BYDAY=${m[e.getDay()]}`,label:`Toutes les semaines le ${t}`},{value:"FREQ=MONTHLY",label:`Tous les mois le ${a}`},{value:"FREQ=YEARLY",label:`Tous les ans le ${n}`},{value:"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR",label:"Tous les jours ouvr\xe9s (lun.ven.)"}]}let v={DAILY:["Tous les jours","Tous les {n} jours"],WEEKLY:["Toutes les semaines","Toutes les {n} semaines"],MONTHLY:["Tous les mois","Tous les {n} mois"],YEARLY:["Tous les ans","Tous les {n} ans"]},h=["dim.","lun.","mar.","mer.","jeu.","ven.","sam."];function b(e){let t=p(e);if(!t)return"R\xe9currence personnalis\xe9e";let[a,n]=v[t.freq],i=1===t.interval?a:n.replace("{n}",String(t.interval));if("WEEKLY"===t.freq&&t.byday.length>0){let e=[...t.byday].sort((e,t)=>(e+6)%7-(t+6)%7);5===e.length&&e.every(e=>e>=1&&e<=5)?i="Tous les jours ouvr\xe9s (lun.ven.)":i+=` le ${e.map(e=>h[e]).join(", ")}`}return t.count&&(i+=`, ${t.count} fois`),t.until&&(i+=`, jusqu'au ${(0,o.GP)(t.until,"d MMM yyyy",{locale:d.fr})}`),i}},61241:(e,t,a)=>{a.d(t,{G:()=>h});var n=a(46298),i=a(99736),r=a(43004),l=a(38006),s=a(41991),o=a(46647),d=a(809),u=a(41280);let c=[{id:"personal",display_name:"Camille Visiteur",color:"#039be5",path:"/calendars/personal"},{id:"work",display_name:"Produit",color:"#4f6df5",path:"/calendars/work"}],m="#4f6df5",p="#039be5";function f(e,t,a=0){let n=(0,i.o)(new Date);return(0,r.g)((0,l.a)((0,s.f)(n,e),t),a)}function g(){let e=f(0,9,30),t=f(0,10,45),a=f(0,12,30),n=f(0,15,0),i=f(1,16,30),r=f(2,8,30),l=f(2,14,0),c=f(3,10,0),g=f(3,14,0),v=f(4,11,0),h=f(4,0,0),b=f(5,7,0),x=f(5,17,0),y=f(6,0,0),C=f(6,14,0);return[{uid:"demo-standup",summary:"Stand-up \xe9quipe produit",description:"Point quotidien — avancement sprint, blocages, d\xe9mo interactive.",location:"UltiMeet",start:(0,u.O0)(e),end:(0,u.O0)((0,o.L)(e,1)),all_day:!1,path:"/calendars/work/demo-standup.ics",etag:'"demo-standup"',organizer:"lea.fontaine@atelier-nord.fr",attendees:[{email:"camille@demo.ulti",name:"Camille Visiteur",status:"ACCEPTED"},{email:"thomas.giraud@proton.me",name:"Thomas Giraud",status:"ACCEPTED"},{email:"julien.carpentier@proton.me",name:"Julien Carpentier",status:"TENTATIVE"}],meet_url:"https://meet.demo.ulti/standup",color:m},{uid:"demo-one-on-one",summary:"1-on-1 — L\xe9a Fontaine",description:"Suivi carri\xe8re, feedback sur la refonte agenda.",location:"Salle Boreal",start:(0,u.O0)(t),end:(0,u.O0)((0,d.z)(t,30)),all_day:!1,path:"/calendars/work/demo-one-on-one.ics",etag:'"demo-one-on-one"',organizer:"lea.fontaine@atelier-nord.fr",attendees:[{email:"camille@demo.ulti",name:"Camille Visiteur",status:"ACCEPTED"}],color:m},{uid:"demo-lunch",summary:"D\xe9jeuner \xe9quipe design",description:"C\xe9l\xe9brer la livraison du nouveau parcours onboarding.",location:"Le Comptoir, 12 rue de la Paix, Paris 2e",start:(0,u.O0)(a),end:(0,u.O0)((0,o.L)(a,1)),all_day:!1,path:"/calendars/personal/demo-lunch.ics",etag:'"demo-lunch"',organizer:"camille@demo.ulti",attendees:[{email:"marie.deschamps@yahoo.fr",name:"Marie Deschamps",status:"ACCEPTED"},{email:"damien.girard@gmail.com",name:"Damien Girard",status:"NEEDS-ACTION"}],color:p},{uid:"demo-client-call",summary:"Appel client — Atelier Nord",description:"Pr\xe9sentation UltiCal + int\xe9gration UltiMeet pour leur \xe9quipe.",location:"UltiMeet",start:(0,u.O0)(n),end:(0,u.O0)((0,o.L)(n,1)),all_day:!1,path:"/calendars/work/demo-client-call.ics",etag:'"demo-client-call"',organizer:"camille@demo.ulti",attendees:[{email:"lea.fontaine@atelier-nord.fr",name:"L\xe9a Fontaine",status:"ACCEPTED"},{email:"vincent.morel@gmail.com",name:"Vincent Morel",status:"TENTATIVE"}],meet_url:"https://meet.demo.ulti/atelier-nord",color:m},{uid:"demo-sprint-review",summary:"Revue de sprint",description:"D\xe9mo des stories livr\xe9es — focus calendrier partag\xe9 et invitations mail.",location:"Salle Atlas",start:(0,u.O0)(i),end:(0,u.O0)((0,o.L)(i,1)),all_day:!1,path:"/calendars/work/demo-sprint-review.ics",etag:'"demo-sprint-review"',organizer:"lea.fontaine@atelier-nord.fr",attendees:[{email:"thomas.giraud@proton.me",name:"Thomas Giraud",status:"ACCEPTED"},{email:"julien.carpentier@proton.me",name:"Julien Carpentier",status:"NEEDS-ACTION"},{email:"camille@demo.ulti",name:"Camille Visiteur",status:"ACCEPTED"}],meet_url:"https://meet.demo.ulti/sprint-review",color:m},{uid:"demo-doctor",summary:"RDV m\xe9decin",description:"Visite annuelle — bloquer la matin\xe9e en cons\xe9quence.",location:"Cabinet Dr. Martin, 8 av. de l'Op\xe9ra, Paris 1er",start:(0,u.O0)(r),end:(0,u.O0)((0,d.z)(r,30)),all_day:!1,path:"/calendars/personal/demo-doctor.ics",etag:'"demo-doctor"',color:p},{uid:"demo-review",summary:"Revue roadmap Q3",description:"Prioriser les chantiers agenda, drive et meet avant le comit\xe9.",location:"Salle Atlas",start:(0,u.O0)(l),end:(0,u.O0)((0,o.L)(l,1)),all_day:!1,path:"/calendars/work/demo-review.ics",etag:'"demo-review"',organizer:"vincent.morel@gmail.com",attendees:[{email:"camille@demo.ulti",name:"Camille Visiteur",status:"ACCEPTED"},{email:"lea.fontaine@atelier-nord.fr",name:"L\xe9a Fontaine",status:"TENTATIVE"}],color:m},{uid:"demo-workshop",summary:"Atelier design system — composants agenda",description:"Session collaborative : chips \xe9v\xe9nements, drag & drop, popover invit\xe9s.",location:"Open space Produit",start:(0,u.O0)(c),end:(0,u.O0)((0,o.L)(c,2)),all_day:!1,path:"/calendars/work/demo-workshop.ics",etag:'"demo-workshop"',organizer:"damien.girard@gmail.com",attendees:[{email:"marie.deschamps@yahoo.fr",name:"Marie Deschamps",status:"ACCEPTED"},{email:"thomas.giraud@proton.me",name:"Thomas Giraud",status:"ACCEPTED"},{email:"camille@demo.ulti",name:"Camille Visiteur",status:"NEEDS-ACTION"}],meet_url:"https://meet.demo.ulti/design-system",color:m},{uid:"demo-infra",summary:"Point infra & s\xe9curit\xe9",description:"Revue des acc\xe8s CalDAV, tokens API agenda et webhooks.",location:"UltiMeet",start:(0,u.O0)(g),end:(0,u.O0)((0,o.L)(g,1)),all_day:!1,path:"/calendars/work/demo-infra.ics",etag:'"demo-infra"',organizer:"guillaume.perrot@proton.me",attendees:[{email:"camille@demo.ulti",name:"Camille Visiteur",status:"ACCEPTED"},{email:"julien.carpentier@proton.me",name:"Julien Carpentier",status:"TENTATIVE"}],meet_url:"https://meet.demo.ulti/infra",color:m},{uid:"demo-internal-demo",summary:"D\xe9mo interne Ultimail",description:"Pr\xe9sentation landing page + parcours d\xe9mo mail, agenda et drive.",location:"Salle Polaris",start:(0,u.O0)(v),end:(0,u.O0)((0,o.L)(v,1)),all_day:!1,path:"/calendars/work/demo-internal-demo.ics",etag:'"demo-internal-demo"',organizer:"camille@demo.ulti",attendees:[{email:"lea.fontaine@atelier-nord.fr",name:"L\xe9a Fontaine",status:"ACCEPTED"},{email:"vincent.morel@gmail.com",name:"Vincent Morel",status:"ACCEPTED"},{email:"thomas.giraud@proton.me",name:"Thomas Giraud",status:"NEEDS-ACTION"}],meet_url:"https://meet.demo.ulti/demo-interne",color:m},{uid:"demo-focus",summary:"Focus — z\xe9ro interruption",description:"Journ\xe9e sans r\xe9union pour finaliser les specs agenda.",location:"",start:(0,u.hm)(h),end:(0,u.hm)((0,s.f)(h,1)),all_day:!0,path:"/calendars/personal/demo-focus.ics",etag:'"demo-focus"',color:p},{uid:"demo-run",summary:"Course — running club",description:"Sortie matinale avant la deadline beta.",location:"Bois de Vincennes, porte Dor\xe9e",start:(0,u.O0)(b),end:(0,u.O0)((0,d.z)(b,30)),all_day:!1,path:"/calendars/personal/demo-run.ics",etag:'"demo-run"',color:p},{uid:"demo-beta-deadline",summary:"Deadline — livraison beta agenda",description:"Gel des features, QA finale et pr\xe9paration release notes.",location:"Salle Polaris",start:(0,u.O0)(x),end:(0,u.O0)((0,o.L)(x,1)),all_day:!1,path:"/calendars/work/demo-beta-deadline.ics",etag:'"demo-beta-deadline"',organizer:"lea.fontaine@atelier-nord.fr",attendees:[{email:"camille@demo.ulti",name:"Camille Visiteur",status:"ACCEPTED"},{email:"thomas.giraud@proton.me",name:"Thomas Giraud",status:"ACCEPTED"}],color:m},{uid:"demo-offsite",summary:"Offsite \xe9quipe produit",description:"Journ\xe9e strat\xe9gie Q3 — vision suite souveraine et roadmap int\xe9gr\xe9e.",location:"Ch\xe2teau de Chantilly, salle des Gardes",start:(0,u.hm)(y),end:(0,u.hm)((0,s.f)(y,1)),all_day:!0,path:"/calendars/work/demo-offsite.ics",etag:'"demo-offsite"',organizer:"vincent.morel@gmail.com",attendees:[{email:"camille@demo.ulti",name:"Camille Visiteur",status:"ACCEPTED"},{email:"lea.fontaine@atelier-nord.fr",name:"L\xe9a Fontaine",status:"ACCEPTED"},{email:"thomas.giraud@proton.me",name:"Thomas Giraud",status:"TENTATIVE"},{email:"julien.carpentier@proton.me",name:"Julien Carpentier",status:"NEEDS-ACTION"}],color:m},{uid:"demo-retro",summary:"R\xe9trospective sprint",description:"Bilan du cycle — ce qui a bien fonctionn\xe9 sur l'agenda d\xe9mo.",location:"Salle Atlas",start:(0,u.O0)(C),end:(0,u.O0)((0,o.L)(C,2)),all_day:!1,path:"/calendars/work/demo-retro.ics",etag:'"demo-retro"',organizer:"lea.fontaine@atelier-nord.fr",attendees:[{email:"camille@demo.ulti",name:"Camille Visiteur",status:"ACCEPTED"},{email:"marie.deschamps@yahoo.fr",name:"Marie Deschamps",status:"ACCEPTED"},{email:"damien.girard@gmail.com",name:"Damien Girard",status:"NEEDS-ACTION"}],meet_url:"https://meet.demo.ulti/retro",color:m}]}function v(e){return`/calendars/${e}/`}let h=(0,n.v)((e,t)=>({calendars:c,events:g(),version:0,reset:()=>e({calendars:c,events:g(),version:t().version+1}),bump:()=>e({version:t().version+1}),listCalendars:()=>t().calendars,listEvents:(e,a,n)=>{let i=v(e);return t().events.filter(e=>{if(!e.path?.startsWith(i))return!1;let t=(0,u.Lj)(e.start);if(!t)return!1;let r=(0,u.kX)(t);return r>=a&&r<=n})},upsertEvent:(t,a)=>{e(e=>{let n=a.path??`${v(t)}${a.uid}.ics`,i=e.events.filter(e=>e.path!==n);return i.push({...a,path:n}),{events:i,version:e.version+1}})},deleteEvent:t=>{e(e=>({events:e.events.filter(e=>e.path!==t),version:e.version+1}))}}))},65367:(e,t,a)=>{a.d(t,{IX:()=>i,L5:()=>n,Sm:()=>r});let n={desktopNewMail:!0,desktopMentions:!0,emailDigest:!1,soundEnabled:!1};function i(e){let t=e.notifications;return{density:e.density,themeMode:e.theme_mode,backgroundId:e.background_id,inboxSort:e.inbox_sort,readingPane:e.reading_pane,conversationMode:e.conversation_mode,desktopNewMail:t?.desktop_new_mail??n.desktopNewMail,desktopMentions:t?.desktop_mentions??n.desktopMentions,emailDigest:t?.email_digest??n.emailDigest,soundEnabled:t?.sound_enabled??n.soundEnabled}}function r(e){let t={};void 0!==e.density&&(t.density=e.density),void 0!==e.themeMode&&(t.theme_mode=e.themeMode),void 0!==e.backgroundId&&(t.background_id=e.backgroundId),void 0!==e.inboxSort&&(t.inbox_sort=e.inboxSort),void 0!==e.readingPane&&(t.reading_pane=e.readingPane),void 0!==e.conversationMode&&(t.conversation_mode=e.conversationMode);let a={};return void 0!==e.desktopNewMail&&(a.desktop_new_mail=e.desktopNewMail),void 0!==e.desktopMentions&&(a.desktop_mentions=e.desktopMentions),void 0!==e.emailDigest&&(a.email_digest=e.emailDigest),void 0!==e.soundEnabled&&(a.sound_enabled=e.soundEnabled),Object.keys(a).length>0&&(t.notifications=a),t}},76972:(e,t,a)=>{a.d(t,{lC:()=>d,v6:()=>o});var n=a(91356),i=a(6893),r=a(90324),l=a(30541),s=a(51765);function o(){let e=(0,s._R)(e=>e.externalCalendars),{data:t=[],isLoading:a,isError:r}=(0,i.fY)();return{calendars:(0,n.useMemo)(()=>(0,l.so)(t,e),[t,e]),apiCalendars:t,externalCalendars:e,isLoading:a,isError:r}}function d(){let e=(0,s._R)(e=>e.hiddenCalendarIds),t=(0,s._R)(e=>e.accountEnabledCalendarIds),a=(0,s._R)(e=>e.calendarViews),i=(0,s._R)(e=>e.activeCalendarViewId),d=(0,s._R)(e=>e.defaultCalendarViewId),u=(0,s._R)(e=>e.setActiveCalendarViewId),{data:c=[]}=(0,r.HM)(),{calendars:m,apiCalendars:p,externalCalendars:f,isLoading:g,isError:v}=o(),h=(0,n.useMemo)(()=>c.map(e=>e.id),[c]),b=(0,n.useMemo)(()=>(0,l.el)(a,i),[a,i]),x=(0,n.useRef)(!1);(0,n.useEffect)(()=>{if(!x.current){if(null!==i||!d){x.current=!0;return}a.some(e=>e.id===d)&&u(d),x.current=!0}},[i,a,d,u]);let y=(0,n.useMemo)(()=>(0,l.hg)({allCalendars:[...p.map(e=>({id:e.id,account_id:null})),...f.map(e=>({id:e.id,account_id:e.account_id}))],hiddenCalendarIds:e,accountIds:h,accountEnabledCalendarIds:t,activeView:b}),[p,f,e,h,t,b]),C=(0,n.useMemo)(()=>(0,l.iv)(m,y),[m,y]);return{calendars:m,visibleCalendars:C,visibleIds:y,activeView:b,activeCalendarViewId:i,calendarViews:a,isLoading:g,isError:v}}},77774:(e,t,a)=>{a.d(t,{xB:()=>r}),a(4208);var n=a(91356);a(89032);let i=(0,n.createContext)(null);function r(){return(0,n.useContext)(i)?.enabled??!1}},79416:(e,t,a)=>{a.d(t,{ht:()=>i,sl:()=>r,x0:()=>n,xQ:()=>l});let n=[{value:"#039be5",label:"Paon"},{value:"#7986cb",label:"Lavande"},{value:"#33b679",label:"Sauge"},{value:"#8e24aa",label:"Raisin"},{value:"#e67c73",label:"Flamant rose"},{value:"#f6bf26",label:"Banane"},{value:"#f4511e",label:"Mandarine"},{value:"#616161",label:"Graphite"},{value:"#3f51b5",label:"Myrtille"},{value:"#0b8043",label:"Basilic"},{value:"#d50000",label:"Tomate"}];function i(e){let t=(e??"").trim();return/^#[0-9a-fA-F]{8}$/.test(t)?t.slice(0,7).toLowerCase():/^#[0-9a-fA-F]{6}$/.test(t)?t.toLowerCase():/^#[0-9a-fA-F]{3}$/.test(t)?`#${t[1]}${t[1]}${t[2]}${t[2]}${t[3]}${t[3]}`.toLowerCase():""}function r(e){let t=0;for(let a=0;a<e.length;a++)t=31*t+e.charCodeAt(a)|0;return n[Math.abs(t)%n.length].value}function l(e){let t=i(e);return t?(299*parseInt(t.slice(1,3),16)+587*parseInt(t.slice(3,5),16)+114*parseInt(t.slice(5,7),16))/1e3>150?"#1f1f1f":"#fff":"#fff"}n[0].value},80361:(e,t,a)=>{function n(e){return e.trim().toLowerCase()}function i(e){let t=e.trim();if(!t)return t;let a=t.lastIndexOf("@");if(a<=0)return n(t);let i=t.lastIndexOf(":",a);return i>=0?n(t.slice(i+1)):n(t)}function r(e,t){let a=t.trim();if(!a||!a.includes("@"))return;let i=n(a);e.has(i)||e.set(i,a)}function l(e,t=[]){let a=new Map;for(let e of t)r(a,e);for(let t of e)r(a,t.email);return[...a.entries()].map(([e,t])=>({key:e,label:t})).sort((e,t)=>e.label.localeCompare(t.label,"fr",{sensitivity:"base"}))}function s(e,t){let a=i(e);return t.find(e=>e.key===a)?.label??a}function o(e,t=[]){let a=new Set,r=[];for(let l of e){let e;if("identity"!==l.type&&"contact"!==l.type)continue;if("identity"===l.type){let a=i(l.value);e={type:"identity",value:a,label:s(a,t)||a}}else{let t=n(l.value);if(!t)continue;e={type:"contact",value:t,label:l.label.trim()||t}}let o="identity"===e.type?`identity:${e.value}`:`contact:${e.value}`;a.has(o)||(a.add(o),r.push(e))}return r}function d(e,t=[]){return o(e.map(e=>({type:"identity",value:i(e),label:i(e)})),t)}function u(e,t=[]){let a=new Set,n=[];for(let r of e){if("identity"!==r.type){n.push(r);continue}let e=i(r.value),l=`identity:${e}`;a.has(l)||(a.add(l),n.push({type:"identity",value:e,label:s(e,t)||e}))}return n}a.d(t,{BP:()=>u,HH:()=>i,ON:()=>d,R6:()=>o,vi:()=>l})},81893:(e,t,a)=>{a.d(t,{Pu:()=>l,UT:()=>i,y9:()=>r});let n={mountains:"photo-mountains",ocean:"gradient-ocean",forest:"photo-nature",abstract:"gradient-blossom"},i=[{id:"none",label:"Aucun",background:"none",fallbackColor:"var(--app-canvas)"},{id:"gradient-aurora",label:"Aurore",background:'url("/mail-backgrounds/gradient-aurora.svg") center / cover no-repeat',fallbackColor:"#667eea"},{id:"gradient-sunset",label:"Coucher de soleil",background:'url("/mail-backgrounds/gradient-sunset.svg") center / cover no-repeat',fallbackColor:"#e44d26"},{id:"gradient-ocean",label:"Oc\xe9an",background:'url("/mail-backgrounds/gradient-ocean.svg") center / cover no-repeat',fallbackColor:"#203a43"},{id:"gradient-blossom",label:"Floral",background:'url("/mail-backgrounds/gradient-blossom.svg") center / cover no-repeat',fallbackColor:"#ffecd2"},{id:"photo-mountains",label:"Montagnes",background:'url("https://picsum.photos/seed/ultimail-mountains/1920/1080") center / cover no-repeat',fallbackColor:"#5c6b73"},{id:"photo-ocean",label:"Mer",background:'url("https://picsum.photos/seed/ultimail-ocean/1920/1080") center / cover no-repeat',fallbackColor:"#1a5276"},{id:"photo-city",label:"Ville",background:'url("https://picsum.photos/seed/ultimail-city/1920/1080") center / cover no-repeat',fallbackColor:"#2c3e50"},{id:"photo-nature",label:"Nature",background:'url("https://picsum.photos/seed/ultimail-nature/1920/1080") center / cover no-repeat',fallbackColor:"#2d5016"}];function r(e){return i.some(t=>t.id===e)?e:n[e]??"none"}function l(e){let t,a=(t=r(e),i.find(e=>e.id===t)??i[0]);return{background:a.background,fallbackColor:a.fallbackColor}}},87009:(e,t,a)=>{a.d(t,{B:()=>n}),a(91356),a(61241),a(49677);let n=["demo","agenda"]},89285:(e,t,a)=>{a.d(t,{Iu:()=>s,KQ:()=>u,OB:()=>o,lg:()=>d});var n=a(41991),i=a(41280),r=a(79416),l=a(58226);function s(e){return(0,r.ht)(e.color)||(0,r.sl)(e.id)}function o(e,t,a,o){let d=s(e),u=[];for(let s of t){let t=(0,i.Lj)(s.start);if(!t)continue;let c=s.end?(0,i.Lj)(s.end):null;(!c||c<=t)&&(c=s.all_day?(0,n.f)(t,1):new Date(t.getTime()+18e5));let m=c.getTime()-t.getTime(),p=(0,r.ht)(s.color)||d,f={calendarId:e.id,path:s.path??"",etag:s.etag??"",uid:s.uid,title:s.summary||"(Sans titre)",description:s.description??"",location:s.location??"",meetUrl:s.meet_url??"",organizer:s.organizer??"",attendees:s.attendees??[],allDay:s.all_day,color:p,rrule:s.rrule??"",recurring:!!s.rrule,master:s},g=s.rrule?(0,l.CK)(s.rrule):null;if(!g){c>=a&&t<=o&&u.push({...f,key:`${f.path}@${t.getTime()}`,start:t,end:c});continue}let v=new Set((s.exdates??[]).map(e=>(0,i.Lj)(e)?.getTime()).filter(e=>"number"==typeof e)),h=new Date(a.getTime()-m);for(let e of(0,l.$t)(t,g,v,h,o)){let t=new Date(e.getTime()+m);u.push({...f,key:`${f.path}@${e.getTime()}`,start:e,end:t})}}return u.sort((e,t)=>e.start.getTime()-t.start.getTime())}function d(e,t){let a=new Date(t);a.setHours(0,0,0,0);let i=(0,n.f)(a,1);return e.filter(e=>e.start<i&&e.end>a)}function u(e){return e.allDay?e.end.getTime()-e.start.getTime()>864e5:e.start.getFullYear()!==e.end.getFullYear()||e.start.getMonth()!==e.end.getMonth()||e.start.getDate()!==e.end.getDate()}},93371:(e,t,a)=>{a.d(t,{BP:()=>l,GY:()=>s,PF:()=>o,U:()=>i,nZ:()=>r});var n=a(22581);function i(e){return 60===e?"1 h":`${e} min`}function r(e){let t=n.DO.find(t=>t.minutes===e);return t?t.label:e%60==0?60===e?"1 h":`${e/60} h`:`${e} min`}function l(e){return"12h"===e?"AM / PM":"24 h"}function s(e){switch(e){case"auto":default:return"Automatique (locale)";case 0:return"Dimanche";case 1:return"Lundi";case 6:return"Samedi"}}function o(e){return n.L_[e]}}}]);