1import{S as w,o as Y,w as q,s as oe,l as Le,m as Ee,k as ve,p as xt,r as m,g as Fe,f as Ce,A as ce,aq as Ye,j as e,bL as ut,bP as We,b1 as pt,a8 as be,cL as ze,ex as vt,dc as yt,b_ as Nt,cb as Ct,X as ye,b6 as wt,co as Pe,a3 as Je,aE as St,aC as kt,fg as It,f4 as Tt,fW as ht,dx as At,el as Mt,fT as Bt,fX as Dt,fY as Rt,fZ as $t,e5 as Xe,f_ as Et,cU as Ze,ae as xe,ai as zt,cV as et,aj as tt,f$ as Pt,cn as Ut,az as st}from"./vendor-QOkwwy6v.js";import{b as he,s as Ge,t as Ne,bz as _t,u as te,B as U,I as Ue,S as Z,z as _e,a as Ot,v as Lt,w as Ft,x as Wt,y as Gt,T as Ht,bA as Kt,bB as Qt,C as qt,bC as Vt}from"./index-B5Va5PI-.js";import{A as le,a as de,b as me}from"./Avatar-Bs78EZUI.js";import{D as Ie,a as Te,b as He,c as Ke,d as Qe,e as qe,f as Yt}from"./Dialog-DxbQY_8i.js";import{c as Jt}from"./index.module-CDElH-Wz.js";import{D as we,a as Se,b as ke,c as ee,d as nt}from"./DropdownMenu-Dt_8rEUn.js";import{i as ft}from"./imageThumbnailUrl-Caq-69-_.js";import{T as Xt,a as Zt,b as at,c as rt}from"./Tabs-CBAEMcZz.js";import{C as es}from"./Checkbox-CXKHcW99.js";import"./index-oBJ6QkNN.js";import"./index-ChVhUks9.js";Y({});const ts=async t=>{const n=await fetch("/_api/chat/conversations",{method:"GET",...t,headers:{"Content-Type":"application/json"}});if(!n.ok){const a=w.parse(await n.text());throw new Error(a.error)}return w.parse(await n.text())};Y({conversationId:q.number()});const ss=async(t,n)=>{const a=new URLSearchParams({conversationId:t.conversationId.toString()}),r=await fetch(`/_api/chat/conversation?${a.toString()}`,{method:"GET",...n,headers:{"Content-Type":"application/json"}});if(!r.ok){const s=w.parse(await r.text());throw new Error(s.error)}return w.parse(await r.text())};Y({conversationId:q.number(),cursor:q.number().optional(),limit:q.number().optional().default(50)});const gt=async(t,n)=>{const a=new URLSearchParams;a.set("conversationId",t.conversationId.toString()),t.cursor!==void 0&&a.set("cursor",t.cursor.toString()),t.limit!==void 0&&a.set("limit",t.limit.toString());const r=await fetch(`/_api/chat/messages?${a.toString()}`,{method:"GET",...n,headers:{"Content-Type":"application/json"}});if(!r.ok){const s=w.parse(await r.text());throw new Error(s.error)}return w.parse(await r.text())},ns=Y({conversationId:q.number(),content:oe().optional(),messageType:Le(["text","voice","image","file"]),attachmentUrl:oe().optional(),fileName:oe().optional(),fileSize:q.number().optional(),durationSeconds:q.number().optional()}),as=async(t,n)=>{const a=ns.parse(t),r=await fetch("/_api/chat/message/send",{method:"POST",body:w.stringify(a),...n,headers:{"Content-Type":"application/json",...n?.headers??{}}});if(!r.ok){const s=w.parse(await r.text());throw new Error(s.error)}return w.parse(await r.text())},rs=Y({messageId:q.number()}),is=async(t,n)=>{const a=rs.parse(t),r=await fetch("/_api/chat/message/delete",{method:"POST",body:w.stringify(a),...n,headers:{"Content-Type":"application/json"}});if(!r.ok){const s=w.parse(await r.text());throw new Error(s.error)}return w.parse(await r.text())},os=Y({type:Le(["direct","group"]),participantUserIds:Ee(ve()),name:oe().optional()}),cs=async(t,n)=>{const a=os.parse(t),r=await fetch("/_api/chat/conversation/create",{method:"POST",body:w.stringify(a),...n,headers:{"Content-Type":"application/json",...n?.headers??{}}});if(!r.ok){const s=w.parse(await r.text());throw new Error(s.error)}return w.parse(await r.text())};Y({conversationId:q.number(),name:oe().optional(),addUserIds:Ee(ve()).optional(),removeUserIds:Ee(ve()).optional(),muteNotifications:xt().optional()});const ls=Y({conversationId:q.number()}),ds=async(t,n)=>{const a=ls.parse(t),r=await fetch("/_api/chat/messages/read",{method:"POST",body:w.stringify(a),...n,headers:{"Content-Type":"application/json",...n?.headers??{}}});if(!r.ok){const s=w.parse(await r.text());throw new Error(s.error)}return w.parse(await r.text())},ms=Y({fileName:oe().min(1).max(255),contentType:oe().min(1).max(100),fileSize:ve().int().positive().max(100*1024*1024)}),us=async(t,n)=>{const a=ms.parse(t),r=await fetch("/_api/chat/upload",{method:"POST",body:w.stringify(a),...n,headers:{"Content-Type":"application/json",...n?.headers??{}}});if(!r.ok){const s=w.parse(await r.text());throw new Error(s.error)}return w.parse(await r.text())};Y({});Y({conversationId:q.number(),type:Le(["image","file","all"]).optional().default("all"),page:q.number().optional().default(1),limit:q.number().optional().default(30)});const ps=async(t,n)=>{const a=new URLSearchParams;a.set("conversationId",t.conversationId.toString()),t.type&&a.set("type",t.type),t.page!==void 0&&a.set("page",t.page.toString()),t.limit!==void 0&&a.set("limit",t.limit.toString());const r=await fetch(`/_api/chat/shared-media?${a.toString()}`,{method:"GET",...n,headers:{"Content-Type":"application/json"}});if(!r.ok){const s=w.parse(await r.text());throw new Error(s.error)}return w.parse(await r.text())};Y({conversationId:q.number()});const hs=async(t,n)=>{const a=new URLSearchParams;a.set("conversationId",t.conversationId.toString());const r=await fetch(`/_api/chat/reactions/by-conversation?${a.toString()}`,{method:"GET",...n,headers:{"Content-Type":"application/json"}});if(!r.ok){const s=w.parse(await r.text());throw new Error(s.error)}return w.parse(await r.text())},_s=Y({messageId:ve(),emoji:oe().min(1).max(10)}),fs=async(t,n)=>{const a=_s.parse(t),r=await fetch("/_api/chat/reaction/toggle",{method:"POST",body:w.stringify(a),...n,headers:{"Content-Type":"application/json",...n?.headers??{}}});if(!r.ok){const s=w.parse(await r.text());throw new Error(s.error)}return w.parse(await r.text())},Ve=["chat","conversations"],gs=t=>["chat","conversation",t],Ae=t=>["chat","messages",t],js=["chat","unread-count"],bs=(t,n)=>["chat","shared-media",t,n],xs=t=>["chat","reactions",t];function vs(){const{authState:t}=he(),n=t.type==="authenticated"?t.user.id:null,a=Ge({queryKey:Ve,enabled:!!n,queryFn:async()=>(await ts()).conversations,channel:n?Ne.chatList(n):null,apply:(u,c)=>{if(c.type==="conversation_deleted")return u.filter(_=>_.id!==c.conversationId);if(c.type==="message_update"){const _=u.find(b=>b.id===c.conversationId);let l=[...u];
1if(_){const b={..._,lastMessage:c.lastMessage,unreadCount:c.lastMessage.senderId!==n?_.unreadCount+1:_.unreadCount,updatedAt:new Date(c.lastMessage.createdAt)};l=l.filter(x=>x.id!==c.conversationId),l.unshift(b)}return l}return u},reconcileOn:u=>u.type==="new_conversation"||u.type==="conversation_update"}),r=a.data||[],s=m.useRef(new Set),i=_t();return m.useEffect(()=>{if(r.length===0)return;const u=new Set(r.map(_=>_.id));if(s.current.size===0){s.current=u;return}r.some(_=>!s.current.has(_.id))?(s.current=u,i()):u.size<s.current.size&&(s.current=u)},[r,i]),a}function ys(t){return Fe({queryKey:gs(t),enabled:!!t,queryFn:async()=>(await ss({conversationId:t})).conversation})}function Ns(t){return Ge({queryKey:Ae(t),enabled:!!t,queryFn:async()=>(await gt({conversationId:t,limit:50})).messages,channel:t?Ne.chatConversation(t):null,apply:(n,a)=>{if(a.type==="message_deleted")return n.map(r=>r.id===a.messageId?{...r,deletedAt:new Date,content:null,attachmentUrl:null}:r);if(a.type==="new_message"){if(n.some(s=>s.id===a.message.id))return n;const r=n.filter(s=>!(s.id<0&&s.senderId===a.message.senderId));return[a.message,...r]}return n},reconcileOn:n=>n.type==="settings_update"})}function Cs(){const t=Ce();return ce({mutationFn:async({conversationId:n,cursor:a,limit:r=50})=>await gt({conversationId:n,cursor:a,limit:r}),onSuccess:(n,a)=>{t.setQueryData(Ae(a.conversationId),r=>{if(!r)return n.messages;const s=new Set(r.map(u=>u.id)),i=n.messages.filter(u=>!s.has(u.id));return[...r,...i]})}})}function ws(){const t=Ce();return ce({mutationFn:async({messageId:n,conversationId:a})=>(await is({messageId:n}),{messageId:n,conversationId:a}),onSuccess:n=>{t.setQueryData(Ae(n.conversationId),a=>a&&a.map(r=>r.id===n.messageId?{...r,deletedAt:new Date,content:null,attachmentUrl:null}:r)),t.invalidateQueries({queryKey:Ve})}})}function Ss(){const t=Ce(),{authState:n}=he(),a=n.type==="authenticated"?n.user:null;return ce({mutationFn:as,onMutate:async r=>{if(!a)return;const s=Ae(r.conversationId);await t.cancelQueries({queryKey:s});const i=t.getQueryData(s),u=-Date.now(),c={id:u,conversationId:r.conversationId,senderId:a.id,senderName:a.displayName,senderAvatarUrl:a.avatarUrl||null,content:r.content||null,messageType:r.messageType,attachmentUrl:r.attachmentUrl||null,fileName:r.fileName||null,fileSize:r.fileSize||null,durationSeconds:r.durationSeconds||null,createdAt:new Date,editedAt:null,deletedAt:null};return t.setQueryData(s,_=>_?[c,..._]:[c]),{prevMessages:i,queryKey:s,optimisticId:u}},onError:(r,s,i)=>{i?.prevMessages&&t.setQueryData(i.queryKey,i.prevMessages)},onSuccess:(r,s,i)=>{if(!i)return;const{queryKey:u,optimisticId:c}=i;t.setQueryData(u,_=>{if(!_)return[r.message];const l=_.filter(b=>b.id!==c);return l.some(b=>b.id===r.message.id)?l:[r.message,...l]})}})}function ks(){const t=_t();return ce({mutationFn:cs,onSuccess:()=>{t()}})}function Is(){const t=Ce();return ce({mutationFn:ds,onSuccess:(n,a)=>{t.setQueryData(Ve,r=>r&&r.map(s=>s.id===a.conversationId?{...s,unreadCount:0}:s)),t.invalidateQueries({queryKey:js})}})}function Ts(){return ce({mutationFn:us})}function it(t,n="all"){return Fe({queryKey:bs(t,n),enabled:!!t,queryFn:async()=>await ps({conversationId:t,type:n,limit:100,page:1})})}function As(t){return Ge({queryKey:xs(t),enabled:!!t,queryFn:async()=>(await hs({conversationId:t})).reactions,channel:t?Ne.chatConversation(t):null,apply:(n,a)=>a.type==="reaction_update"?{...n,[a.messageId]:a.reactions}:n})}function Ms(){return ce({mutationFn:fs})}const Bs=Y({conversationId:q.number()}),Ds=async(t,n)=>{const a=Bs.parse(t),r=await fetch("/_api/chat/conversation/delete",{method:"POST",body:w.stringify(a),...n,headers:{"Content-Type":"application/json"}});if(!r.ok){const s=w.parse(await r.text());throw new Error(s.error)}return w.parse(await r.text())},jt=()=>{const t=Ce();return ce({mutationFn:n=>Ds(n),onSuccess:(n,a)=>{t.invalidateQueries({queryKey:["chat","conversations"]}),t.removeQueries({queryKey:["chat","conversation",a.conversationId]}),t.removeQueries({queryKey:["chat","messages",a.conversationId]}),Ye.success("Conversation supprimée avec succès.")},onError:n=>{Ye.error(n.message||"Erreur lors de la suppression de la conversation.")}})}
1,Rs="_sidebar_1utjo_2",$s="_header_1utjo_11",Es="_title_1utjo_19",zs="_searchContainer_1utjo_26",Ps="_searchIcon_1utjo_34",Us="_scrollArea_1utjo_43",Os="_item_1utjo_50",Ls="_selected_1utjo_66",Fs="_deleteButton_1utjo_70",Ws="_avatarContainer_1utjo_86",Gs="_avatar_1utjo_86",Hs="_metaContainer_1utjo_96",Ks="_row_1utjo_104",Qs="_convoName_1utjo_111",qs="_unread_1utjo_120",Vs="_time_1utjo_125",Ys="_preview_1utjo_131",Js="_badge_1utjo_146",Xs="_skeletonItem_1utjo_160",Zs="_skeletonAvatar_1utjo_168",en="_skeletonMeta_1utjo_174",tn="_skeletonTitle_1utjo_181",sn="_skeletonSubtitle_1utjo_186",nn="_emptyState_1utjo_191",an="_emptyIcon_1utjo_202",rn="_emptyText_1utjo_207",D={sidebar:Rs,header:$s,title:Es,searchContainer:zs,searchIcon:Ps,scrollArea:Us,item:Os,selected:Ls,deleteButton:Fs,avatarContainer:Ws,avatar:Gs,metaContainer:Hs,row:Ks,convoName:Qs,unread:qs,time:Vs,preview:Ys,badge:Js,skeletonItem:Xs,skeletonAvatar:Zs,skeletonMeta:en,skeletonTitle:tn,skeletonSubtitle:sn,emptyState:nn,emptyIcon:an,emptyText:rn},ot=({selectedConversationId:t,onSelectConversation:n,onCreateNew:a,onConversationDeleted:r})=>{const{language:s}=te(),{authState:i}=he(),u=i.type==="authenticated"?i.user.id:null,c=i.type==="authenticated"?i.user.role:null,_=c==="company"||c==="owner",{data:l=[],isPending:b}=vs(),[x,v]=m.useState(null),g=jt(),[o,h]=m.useState(""),C=l.filter(p=>{const S=p.name||"",T=p.participants.filter(F=>F.userId!==u).map(F=>F.displayName).join(" "),z=o.toLowerCase();return S.toLowerCase().includes(z)||T.toLowerCase().includes(z)}),R=p=>{if(!p)return"";const T=Math.floor((new Date().getTime()-new Date(p).getTime())/1e3);if(T<60)return s==="fr"?"à l'instant":"Just now";if(T<3600){const z=Math.floor(T/60);return s==="fr"?`Il y a ${z} min`:`${z}m ago`}if(T<86400){const z=Math.floor(T/3600);return s==="fr"?`Il y a ${z} h`:`${z}h ago`}return new Intl.DateTimeFormat(s==="fr"?"fr-FR":"en-US",{month:"short",day:"numeric"}).format(new Date(p))},A=p=>{const S=p.lastMessage;if(!S)return s==="fr"?"Aucun message":"No messages yet";let T="";return S.messageType==="image"?T="[Photo]":S.messageType==="file"?T=s==="fr"?"[Fichier]":"[File]":S.messageType==="voice"?T=s==="fr"?"[Message vocal]":"[Voice message]":T=S.content||"",p.type==="group"?`${S.senderId===u?s==="fr"?"Vous":"You":S.senderName}: ${T}`:T};return e.jsxs("div",{className:D.sidebar,children:[e.jsxs("div",{className:D.header,children:[e.jsx("h1",{className:D.title,children:s==="fr"?"Messagerie":"Messaging"}),e.jsx(U,{variant:"outline",size:"icon-sm",onClick:a,"aria-label":s==="fr"?"Nouvelle discussion":"New chat",children:e.jsx(ut,{size:16})})]}),e.jsxs("div",{className:D.searchContainer,children:[e.jsx(We,{className:D.searchIcon,size:16}),e.jsx(Ue,{placeholder:s==="fr"?"Rechercher...":"Search...",value:o,onChange:p=>h(p.target.value),className:D.searchInput,style:{paddingLeft:"2.5rem"}})]}),e.jsx("div",{className:D.scrollArea,children:b?Array.from({length:5}).map((p,S)=>e.jsxs("div",{className:D.skeletonItem,children:[e.jsx(Z,{className:D.skeletonAvatar}),e.jsxs("div",{className:D.skeletonMeta,children:[e.jsx(Z,{className:D.skeletonTitle}),e.jsx(Z,{className:D.skeletonSubtitle})]})]},S)):C.length===0?e.jsxs("div",{className:D.emptyState,children:[e.jsx(pt,{size:36,className:D.emptyIcon}),e.jsx("p",{className:D.emptyText,children:s==="fr"?"Démarrer une conversation":"No conversations found"}),e.jsx(U,{variant:"primary",size:"sm",onClick:a,children:s==="fr"?"Nouveau message":"New message"})]}):C.map(p=>{const S=p.id===t,T=p.participants.find(P=>P.userId!==u),z=p.name||T?.displayName||(s==="fr"?"Inconnu":"Unknown"),F=p.avatarUrl||T?.avatarUrl||null,y=p.unreadCount>0;return e.jsxs("button",{className:`${D.item} ${S?D.selected:""} ${y?D.unread:""}`,onClick:()=>n(p.id),children:[e.jsx("div",{className:D.avatarContainer,children:e.jsxs(le,{className:D.avatar,children:[F&&e.jsx(de,{src:F,alt:z}),e.jsx(me,{children:z.charAt(0).toUpperCase()})]})}),e.jsxs("div",{className:D.metaContainer,children:[e.jsxs("div",{className:D.row,children:[e.jsx("span",{className:D.convoName,children:z}),e.jsx("span",{className:D.time,children:p.lastMessage?R(p.lastMessage.createdAt):""})]}),e.jsxs("div",{className:D.row,children:[e.jsx("p",{className:D.preview,children:A(p)}),y&&e.jsx("span",{className:D.badge,children:p.unreadCount})]})]}),_&&e.jsx(U,{variant:"ghost",size:"icon-sm",className:D.deleteButton,onClick:P=>{P.stopPropagation(),v(p.id)},"aria-label":s==="fr"?"Supprimer":"Delete",children:e.jsx(be,{size:16})})]}
1,p.id)})}),e.jsx(Ie,{open:x!==null,onOpenChange:p=>!p&&v(null),children:e.jsxs(Te,{children:[e.jsxs(He,{children:[e.jsx(Ke,{children:s==="fr"?"Supprimer la conversation":"Delete conversation"}),e.jsx(Qe,{children:s==="fr"?"Cette action est irréversible. Tous les messages et fichiers de cette conversation seront supprimés définitivement.":"This action is irreversible. All messages and files in this conversation will be permanently deleted."})]}),e.jsxs(qe,{children:[e.jsx(U,{variant:"outline",onClick:()=>v(null),children:s==="fr"?"Annuler":"Cancel"}),e.jsx(U,{variant:"destructive",onClick:()=>{x&&g.mutate({conversationId:x},{onSuccess:()=>{v(null),r&&r(x)}})},disabled:g.isPending,children:s==="fr"?"Supprimer":"Delete"})]})]})})]})},on="_header_1cgac_2",cn="_leftSection_1cgac_14",ln="_backButton_1cgac_22",dn="_avatarWrapper_1cgac_26",mn="_avatar_1cgac_26",un="_onlineIndicator_1cgac_36",pn="_infoContainer_1cgac_47",hn="_title_1cgac_54",_n="_subtitle_1cgac_64",fn="_onlineText_1cgac_70",gn="_rightSection_1cgac_75",jn="_destructiveAction_1cgac_82",bn="_skeletonContainer_1cgac_93",xn="_skeletonAvatar_1cgac_100",vn="_skeletonTextContainer_1cgac_108",yn="_skeletonTitle_1cgac_115",Nn="_skeletonSubtitle_1cgac_123",W={header:on,leftSection:cn,backButton:ln,avatarWrapper:dn,avatar:mn,onlineIndicator:un,infoContainer:pn,title:hn,subtitle:_n,onlineText:fn,rightSection:gn,destructiveAction:jn,skeletonContainer:bn,skeletonAvatar:xn,skeletonTextContainer:vn,skeletonTitle:yn,skeletonSubtitle:Nn},Cn=({conversation:t,onBack:n,onLeaveGroup:a,onMuteToggle:r,onInfoClick:s,onDeleteConversation:i,className:u})=>{const{language:c}=te(),_=_e(),{authState:l}=he(),b=l.type==="authenticated"?l.user.id:null,x=l.type==="authenticated"?l.user.role:null,v=x==="company"||x==="owner";if(!t)return e.jsx("div",{className:`${W.header} ${u||""}`,children:e.jsxs("div",{className:W.skeletonContainer,children:[e.jsx("div",{className:W.skeletonAvatar}),e.jsxs("div",{className:W.skeletonTextContainer,children:[e.jsx("div",{className:W.skeletonTitle}),e.jsx("div",{className:W.skeletonSubtitle})]})]})});const g=t.type==="group";let o=t.name,h=t.avatarUrl,C="",R=!1;if(g){const p=t.participants.length;C=c==="fr"?`${p} membres`:`${p} members`,o||(o=t.participants.filter(S=>S.userId!==b).map(S=>S.displayName).join(", ")||(c==="fr"?"Groupe sans nom":"Unnamed group"))}else{const p=t.participants.find(S=>S.userId!==b);o=o||p?.displayName||(c==="fr"?"Utilisateur inconnu":"Unknown user"),h=h||p?.avatarUrl||null,R=p?.isOnline||!1,C=R?c==="fr"?"En ligne":"Online":c==="fr"?"Hors ligne":"Offline"}const A=!1;return e.jsxs("div",{className:`${W.header} ${u||""}`,children:[e.jsxs("div",{className:W.leftSection,children:[_&&n&&e.jsx(U,{variant:"ghost",size:"icon",onClick:n,className:W.backButton,"aria-label":c==="fr"?"Retour":"Back",children:e.jsx(ze,{size:20})}),e.jsxs("div",{className:W.avatarWrapper,children:[e.jsxs(le,{className:W.avatar,children:[h&&e.jsx(de,{src:h,alt:o||""}),e.jsx(me,{children:o?o.charAt(0).toUpperCase():"?"})]}),!g&&R&&e.jsx("span",{className:W.onlineIndicator})]}),e.jsxs("div",{className:W.infoContainer,children:[e.jsx("h2",{className:W.title,children:o}),e.jsx("span",{className:`${W.subtitle} ${R?W.onlineText:""}`,children:C})]})]}),e.jsx("div",{className:W.rightSection,children:e.jsxs(we,{children:[e.jsx(Se,{asChild:!0,children:e.jsx(U,{variant:"ghost",size:"icon","aria-label":"Options",children:e.jsx(vt,{size:20})})}),e.jsxs(ke,{align:"end",children:[e.jsxs(ee,{onClick:()=>s?.(),children:[e.jsx(yt,{size:16,style:{marginRight:8}}),g?c==="fr"?"Info du groupe":"Group info":"Info"]}),e.jsxs(ee,{onClick:()=>r?.(t.id,A),children:[e.jsx(Nt,{size:16,style:{marginRight:8}}),c==="fr"?"Couper les notifications":"Mute notifications"]}),g&&e.jsxs(e.Fragment,{children:[e.jsx(nt,{}),e.jsxs(ee,{className:W.destructiveAction,onClick:()=>a?.(t.id),children:[e.jsx(Ct,{size:16,style:{marginRight:8}}),c==="fr"?"Quitter la conversation":"Leave conversation"]})]}),v&&e.jsxs(e.Fragment,{children:[e.jsx(nt,{}),e.jsxs(ee,{className:W.destructiveAction,onClick:()=>i?.(t.id),children:[e.jsx(be,{size:16,style:{marginRight:8}}),c==="fr"?"Supprimer la conversation":"Delete conversation"]})]})]})]})})]})},wn="_panel_3a0fb_2",Sn="_panelMobile_3a0fb_14",kn="_header_3a0fb_25",In="_headerSpacer_3a0fb_34",Tn="_scrollArea_3a0fb_38",An="_profileInfo_3a0fb_44",Mn="_groupAvatar_3a0fb_52",Bn="_groupName_3a0fb_58",Dn="_groupSubtitle_3a0fb_66",Rn="_sectionsContainer_3a0fb_72",$n="_section_3a0fb_72",En="_sectionHeader_3a0fb_81",zn="_sectionTitle_3a0fb_98",Pn="_sectionContent_3a0fb_106",Un="_membersList_3a0fb_110",On="_memberRow_3a0fb_116",Ln="_memberAvatarWrapper_3a0fb_122",Fn="_memberAvatar_3a0fb_122",Wn="_onlineIndicator_3a0fb_131",Gn="_memberInfo_3a0fb_142",Hn="_memberName_3a0fb_149",Kn="_roleBadge_3a0fb_158",Qn="_mediaGrid_3a0fb_164",qn="_mediaItem_3a0fb_172",Vn="_filesList_3a0fb_190",Yn="_fileItem_3a0fb_196",Jn="_fileIcon_3a0fb_210",Xn="_fileDetails_3a0fb_222",Zn="_fileName_3a0fb_228",ea="_fileMeta_3a0fb_237",ta="_emptyState_3a0fb_243",sa="_skeletonAvatar_3a0fb_252",na="_skeletonTitle_3a0fb_259",aa="_skeletonSubtitle_3a0fb_265",ra="_mediaSkeleton_3a0fb_270",ia="_fileSkeleton_3a0fb_275",j={panel:wn,panelMobile:Sn,header:kn,headerSpacer:In,scrollArea:Tn,profileInfo:An,groupAvatar:Mn,groupName:Bn,groupSubtitle:Dn,sectionsContainer:Rn,section:$n,sectionHeader:En,sectionTitle:zn,sectionContent:Pn,membersList:Un,memberRow:On,memberAvatarWrapper:Ln,memberAvatar:Fn,onlineIndicator:Wn,memberInfo:Gn,memberName:Hn,roleBadge:Kn,mediaGrid:Qn,mediaItem:qn,filesList:Vn,fileItem:Yn,fileIcon:Jn,fileDetails:Xn,fileName:Zn,fileMeta:ea,emptyState:ta,skeletonAvatar:sa,skeletonTitle:na,skeletonSubtitle:aa,mediaSkeleton:ra,fileSkeleton:ia};
1function oa(t,n=2){if(!t||t===0)return"0 Bytes";const a=1024,r=n<0?0:n,s=["Bytes","KB","MB","GB","TB"],i=Math.floor(Math.log(t)/Math.log(a));return parseFloat((t/Math.pow(a,i)).toFixed(r))+" "+s[i]}const $e=({title:t,icon:n,children:a,defaultExpanded:r=!0})=>{const[s,i]=m.useState(r);return e.jsxs("div",{className:j.section,children:[e.jsxs("button",{className:j.sectionHeader,onClick:()=>i(!s),"aria-expanded":s,children:[e.jsxs("div",{className:j.sectionTitle,children:[e.jsx(n,{size:18}),e.jsx("span",{children:t})]}),s?e.jsx(St,{size:16}):e.jsx(kt,{size:16})]}),s&&e.jsx("div",{className:j.sectionContent,children:a})]})},ca=({conversation:t,onClose:n,className:a})=>{const{t:r,language:s}=te(),i=_e(),{data:u,isLoading:c}=it(t?.id||0,"image"),{data:_,isLoading:l}=it(t?.id||0,"file");if(!t)return e.jsxs("div",{className:`${j.panel} ${i?j.panelMobile:""} ${a||""}`,children:[e.jsx("div",{className:j.header,children:e.jsx(U,{variant:"ghost",size:"icon",onClick:n,children:i?e.jsx(ze,{size:20}):e.jsx(ye,{size:20})})}),e.jsxs("div",{className:j.profileInfo,children:[e.jsx(Z,{className:j.skeletonAvatar}),e.jsx(Z,{className:j.skeletonTitle}),e.jsx(Z,{className:j.skeletonSubtitle})]})]});const b=[...t.participants].sort((o,h)=>o.isOnline&&!h.isOnline?-1:!o.isOnline&&h.isOnline?1:o.displayName.localeCompare(h.displayName)),x=s==="fr"?`${t.participants.length} membres`:`${t.participants.length} members`;let v=t.name;!v&&t.type==="group"?v=t.participants.map(o=>o.displayName).join(", ")||(s==="fr"?"Groupe sans nom":"Unnamed group"):!v&&t.type==="direct"&&(v=t.participants[0]?.displayName||(s==="fr"?"Utilisateur inconnu":"Unknown user"));const g=new Intl.DateTimeFormat(s,{day:"numeric",month:"short",year:"numeric"});return e.jsxs("div",{className:`${j.panel} ${i?j.panelMobile:""} ${a||""}`,children:[e.jsxs("div",{className:j.header,children:[i?e.jsx(U,{variant:"ghost",size:"icon",onClick:n,"aria-label":s==="fr"?"Retour":"Back",children:e.jsx(ze,{size:20})}):e.jsx("div",{className:j.headerSpacer}),!i&&e.jsx(U,{variant:"ghost",size:"icon",onClick:n,"aria-label":s==="fr"?"Fermer":"Close",children:e.jsx(ye,{size:20})})]}),e.jsxs("div",{className:j.scrollArea,children:[e.jsxs("div",{className:j.profileInfo,children:[e.jsxs(le,{className:j.groupAvatar,children:[t.avatarUrl&&e.jsx(de,{src:t.avatarUrl,alt:v||""}),e.jsx(me,{children:v?v.charAt(0).toUpperCase():"?"})]}),e.jsx("h2",{className:j.groupName,children:v}),e.jsx("p",{className:j.groupSubtitle,children:x})]}),e.jsxs("div",{className:j.sectionsContainer,children:[e.jsx($e,{title:s==="fr"?"Membres du groupe":"Group members",icon:wt,children:e.jsx("div",{className:j.membersList,children:b.map(o=>e.jsxs("div",{className:j.memberRow,children:[e.jsxs("div",{className:j.memberAvatarWrapper,children:[e.jsxs(le,{className:j.memberAvatar,children:[o.avatarUrl&&e.jsx(de,{src:o.avatarUrl,alt:o.displayName}),e.jsx(me,{children:o.displayName.charAt(0).toUpperCase()})]}),o.isOnline&&e.jsx("span",{className:j.onlineIndicator})]}),e.jsx("div",{className:j.memberInfo,children:e.jsx("span",{className:j.memberName,children:o.displayName})}),o.role==="admin"&&e.jsx(Ot,{variant:"secondary",className:j.roleBadge,children:"Admin"})]},o.userId))})}),e.jsx($e,{title:s==="fr"?"Photos et médias":"Photos & media",icon:Pe,children:c?e.jsx("div",{className:j.mediaGrid,children:[1,2,3].map(o=>e.jsx(Z,{className:j.mediaSkeleton},o))}):u?.items&&u.items.length>0?e.jsx("div",{className:j.mediaGrid,children:u.items.map(o=>e.jsx("a",{href:o.attachmentUrl,target:"_blank",rel:"noreferrer",className:j.mediaItem,children:e.jsx("img",{src:ft(o.attachmentUrl,200),alt:o.fileName||"Media",loading:"lazy"})},o.id))}):e.jsx("p",{className:j.emptyState,children:s==="fr"?"Aucun média":"No media"})}),e.jsx($e,{title:s==="fr"?"Fichiers partagés":"Shared files",icon:Je,children:l?e.jsx("div",{className:j.filesList,children:[1,2].map(o=>e.jsx(Z,{className:j.fileSkeleton},o))}):_?.items&&_.items.length>0?e.jsx("div",{className:j.filesList,children:_.items.map(o=>e.jsxs("a",{href:o.attachmentUrl,target:"_blank",rel:"noreferrer",className:j.fileItem,children:[e.jsx("div",{className:j.fileIcon,children:e.jsx(Je,{size:20})}),e.jsxs("div",{className:j.fileDetails,children:[e.jsx("span",{className:j.fileName,children:o.fileName||"File"}),e.jsxs("span",{className:j.fileMeta,children:[oa(o.fileSize)," ⢠",g.format(new Date(o.createdAt))]})]})]},o.id))}):e.jsx("p",{className:j.emptyState,children:s==="fr"?"Aucun fichier":"No files"})})]})]})]})},la="_playerContainer_1lytk_2",da="_playButton_1lytk_11",ma="_playIconOffset_1lytk_36",ua="_waveformContainer_1lytk_40",pa="_progressTrack_1lytk_47",ha="_progressFill_1lytk_56",_a="_progressHandle_1lytk_66",fa="_timeDisplay_1lytk_79",ie={playerContainer:la,playButton:da,playIconOffset:ma,waveformContainer:ua,progressTrack:pa,progressFill:ha,progressHandle:_a,timeDisplay:fa},ga=({audioUrl:t,durationSeconds:n=0,className:a})=>{const[r,s]=m.useState(!1),[i,u]=m.useState(0),[c,_]=m.useState(0),[l,b]=m.useState(n),x=m.useRef(null);m.useEffect(()=>{const h=x.current;if(!h)return;const C=()=>{_(h.currentTime),l>0&&u(h.currentTime/l*100)},R=()=>{h.duration&&h.duration!==1/0&&b(h.duration)},A=()=>{s(!1),u(0),_(0)};return h.addEventListener("timeupdate",C),h.addEventListener("loadedmetadata",R),h.addEventListener("ended",A),()=>{h.removeEventListener("timeupdate",C),h.removeEventListener("loadedmetadata",R),h.removeEventListener("ended",A)}},[l]);const v=()=>{x.current&&(r?x.current.pause():x.current.play().catch(h=>console.error("Playback failed",h)),s(!r))},g=h=>
1{if(!h||isNaN(h))return"0:00";const C=Math.floor(h/60),R=Math.floor(h%60);return`${C}:${R.toString().padStart(2,"0")}`},o=h=>{if(!x.current||l===0)return;const C=h.currentTarget.getBoundingClientRect(),R=h.clientX-C.left,A=Math.max(0,Math.min(100,R/C.width*100)),p=A/100*l;x.current.currentTime=p,u(A),_(p)};return e.jsxs("div",{className:`${ie.playerContainer} ${a||""}`,children:[e.jsx("button",{className:ie.playButton,onClick:v,"aria-label":r?"Pause":"Play",type:"button",children:r?e.jsx(It,{size:18}):e.jsx(Tt,{size:18,className:ie.playIconOffset})}),e.jsxs("div",{className:ie.waveformContainer,children:[e.jsxs("div",{className:ie.progressTrack,onClick:o,children:[e.jsx("div",{className:ie.progressFill,style:{width:`${i}%`}}),e.jsx("div",{className:ie.progressHandle,style:{left:`${i}%`}})]}),e.jsxs("div",{className:ie.timeDisplay,children:[g(c)," / ",g(l)]})]}),e.jsx("audio",{ref:x,src:t,preload:"metadata"})]})},ja="_pickerContainer_1atp8_1",ba="_header_1atp8_15",xa="_searchWrapper_1atp8_20",va="_searchIcon_1atp8_26",ya="_searchInput_1atp8_33",Na="_clearButton_1atp8_51",Ca="_tabs_1atp8_70",wa="_tab_1atp8_70",Sa="_activeTab_1atp8_97",ka="_emojiContent_1atp8_102",Ia="_categorySection_1atp8_121",Ta="_categoryTitle_1atp8_125",Aa="_emojiGrid_1atp8_135",Ma="_emojiButton_1atp8_141",Ba="_emojiGlyph_1atp8_162",Da="_emptyState_1atp8_171",Q={pickerContainer:ja,header:ba,searchWrapper:xa,searchIcon:va,searchInput:ya,clearButton:Na,tabs:Ca,tab:wa,activeTab:Sa,emojiContent:ka,categorySection:Ia,categoryTitle:Ta,emojiGrid:Aa,emojiButton:Ma,emojiGlyph:Ba,emptyState:Da},ge=[{id:"smileys",icon:ht,labelKey:"Smileys",keywords:"smile face happy sad cry laugh emotion",emojis:["ð","ð","ð","ð","ð","ð
","ð¤£","ð","ð","ð","ð","ð","ð","ð","ð","ð¥°","ð","ð","ð","ð","ð","ð","ð","ð¤ª","ð¤¨","ð§","ð¤","ð","ð¤©","ð¥³"]},{id:"gestures",icon:At,labelKey:"Gestures",keywords:"hand thumb finger sign gesture up down ok peace",emojis:["ð","ð","ð","ð¤","âï¸","ð¤","ð¤","ð¤","ð¤","ð","ð","ð","ð","âï¸","â","ð¤","ð","ð","ð¤","ðª","ð","ð","ð¤","ð"]},{id:"hearts",icon:Mt,labelKey:"Hearts",keywords:"heart love like romance break",emojis:["â¤ï¸","ð§¡","ð","ð","ð","ð","ð¤","ð¤","ð¤","ð","â£ï¸","ð","ð","ð","ð","ð","ð","ð"]},{id:"objects",icon:Bt,labelKey:"Objects",keywords:"object gift star fire music game phone",emojis:["ð","ð","ð","ð","ð","ð","ð
","ð¥","â","ð","ð«","ð¥","â¨","â¡","ð¥","ð¯","ð®","ðµ","ð¶","ð±"]},{id:"animals",icon:Dt,labelKey:"Animals",keywords:"animal dog cat pet bird monkey",emojis:["ð¶","ð±","ð","ð¹","ð°","ð¦","ð»","ð¼","ð¨","ð¯","ð¦","ð®","ð·","ð¸","ðµ","ð","ð","ð","ð","ð§"]},{id:"food",icon:Rt,labelKey:"Food",keywords:"food eat drink pizza burger coffee",emojis:["ð","ð","ð","ð","ð¥ª","ð®","ð¯","ð¥","ð","ð","ð","ð","ð","ð","ð£","ð±","ð¥","ð¤","ð©","ðª"]}];function Oe({onEmojiSelect:t,onClose:n,className:a="",autoFocusSearch:r=!0}){const{t:s}=te(),[i,u]=m.useState(ge[0].id),[c,_]=m.useState(""),l=m.useRef(null),b=m.useRef(null);m.useEffect(()=>{function g(o){l.current&&!l.current.contains(o.target)&&n()}return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[n]),m.useEffect(()=>{r&&b.current&&b.current.focus()},[r]);const x=m.useMemo(()=>{if(!c.trim())return ge;const g=c.toLowerCase();return ge.filter(o=>s(o.labelKey).toLowerCase().includes(g)||o.keywords.includes(g))},[c,s]),v=c.trim()?x:ge.filter(g=>g.id===i);return e.jsxs("div",{ref:l,className:`${Q.pickerContainer} ${a}`,children:[e.jsx("div",{className:Q.header,children:e.jsxs("div",{className:Q.searchWrapper,children:[e.jsx(We,{size:14,className:Q.searchIcon}),e.jsx("input",{ref:b,type:"text",className:Q.searchInput,placeholder:s("Search emojis..."),value:c,onChange:g=>_(g.target.value)}),c&&e.jsx("button",{className:Q.clearButton,onClick:()=>_(""),children:e.jsx(ye,{size:14})})]})}),!c.trim()&&e.jsx("div",{className:Q.tabs,children:ge.map(g=>{const o=g.icon;return e.jsx("button",{className:`${Q.tab} ${i===g.id?Q.activeTab:""}`,onClick:()=>u(g.id),title:s(g.labelKey),type:"button",children:e.jsx(o,{size:16})},g.id)})}),e.jsx("div",{className:Q.emojiContent,children:v.length>0?v.map(g=>e.jsxs("div",{className:Q.categorySection,children:[c.trim()&&e.jsx("div",{className:Q.categoryTitle,children:s(g.labelKey)}),e.jsx("div",{className:Q.emojiGrid,children:g.emojis.map((o,h)=>e.jsx("button",{className:Q.emojiButton,onClick:()=>{t(o),n()},type:"button",children:e.jsx("span",{className:Q.emojiGlyph,children:o})},`${g.id}-${h}`))})]},g.id)):e.jsx("div",{className:Q.emptyState,children:s("No emojis found")})})]})}const Ra="_container_1w5nb_2",$a="_own_1w5nb_11",Ea="_other_1w5nb_15",za="_bubbleWrapper_1w5nb_19",Pa="_avatar_1w5nb_30",Ua="_messageContent_1w5nb_36",Oa="_senderName_1w5nb_48",La="_emojiSpan_1w5nb_55",Fa="_reactionBar_1w5nb_64",Wa="_bubbleRow_1w5nb_89",Ga="_reactionBarForceShow_1w5nb_92",Ha="_reactionBarHidden_1w
15nb_97",Ka="_reactionBtn_1w5nb_105",Qa="_pickerWrapper_1w5nb_124",qa="_emojiPickerContainer_1w5nb_128",Va="_reactionsDisplay_1w5nb_143",Ya="_reactionPill_1w5nb_162",Ja="_reactionPillActive_1w5nb_180",Xa="_reactionEmoji_1w5nb_186",Za="_reactionCount_1w5nb_193",er="_bubble_1w5nb_19",tr="_imageBubble_1w5nb_219",sr="_ownBubble_1w5nb_225",nr="_otherBubble_1w5nb_231",ar="_deletedText_1w5nb_238",rr="_textContent_1w5nb_244",ir="_imageTrigger_1w5nb_248",or="_imageThumbnail_1w5nb_263",cr="_imageDialogContent_1w5nb_276",lr="_imageWrapper_1w5nb_288",dr="_fullSizeImage_1w5nb_297",mr="_downloadOverlay_1w5nb_304",ur="_fileCard_1w5nb_329",pr="_fileCardOwn_1w5nb_345",hr="_fileCardOther_1w5nb_349",_r="_fileIconWrapper_1w5nb_353",fr="_fileInfo_1w5nb_364",gr="_fileName_1w5nb_371",jr="_fileSize_1w5nb_379",br="_downloadIcon_1w5nb_384",xr="_contextMenu_1w5nb_388",vr="_menuTrigger_1w5nb_394",yr="_deleteOption_1w5nb_417",Nr="_timestamp_1w5nb_427",Cr="_timestampOwn_1w5nb_434",wr="_editedIndicator_1w5nb_438",Sr="_mobileSheetContent_1w5nb_444",kr="_mobileSheetBody_1w5nb_452",Ir="_mobileQuickEmojis_1w5nb_461",Tr="_mobileQuickEmojiBtn_1w5nb_469",Ar="_mobileMoreEmojisLabel_1w5nb_489",Mr="_mobileEmojiPickerWrapper_1w5nb_496",Br="_inlineEmojiPicker_1w5nb_502",Dr="_mobileDeleteBtn_1w5nb_510",d={container:Ra,own:$a,other:Ea,bubbleWrapper:za,avatar:Pa,messageContent:Ua,senderName:Oa,emojiSpan:La,reactionBar:Fa,bubbleRow:Wa,reactionBarForceShow:Ga,reactionBarHidden:Ha,reactionBtn:Ka,pickerWrapper:Qa,emojiPickerContainer:qa,reactionsDisplay:Va,reactionPill:Ya,reactionPillActive:Ja,reactionEmoji:Xa,reactionCount:Za,bubble:er,imageBubble:tr,ownBubble:sr,otherBubble:nr,deletedText:ar,textContent:rr,imageTrigger:ir,imageThumbnail:or,imageDialogContent:cr,imageWrapper:lr,fullSizeImage:dr,downloadOverlay:mr,fileCard:ur,fileCardOwn:pr,fileCardOther:hr,fileIconWrapper:_r,fileInfo:fr,fileName:gr,fileSize:jr,downloadIcon:br,contextMenu:xr,menuTrigger:vr,deleteOption:yr,timestamp:Nr,timestampOwn:Cr,editedIndicator:wr,mobileSheetContent:Sr,mobileSheetBody:kr,mobileQuickEmojis:Ir,mobileQuickEmojiBtn:Tr,mobileMoreEmojisLabel:Ar,mobileEmojiPickerWrapper:Mr,inlineEmojiPicker:Br,mobileDeleteBtn:Dr},ct=["â¤ï¸","ð","ð®","ð¢","ð¤©","ð"],Rr=t=>t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/(1024*1024)).toFixed(1)} MB`,$r=({message:t,isOwnMessage:n,showSenderInfo:a,className:r,onDelete:s,canDeleteAny:i,reactions:u=[],onReaction:c,currentUserId:_})=>{const{language:l}=te(),b=_e(),[x,v]=m.useState(!1),[g,o]=m.useState(!1),[h,C]=m.useState(!1),R=m.useRef(null),[A,p]=m.useState(()=>Date.now()),S=y=>{if(t.deletedAt)return;const P=y.target;P.closest("button")||P.closest("a")||P.closest("input")||b&&C(!0)};m.useEffect(()=>{if(Date.now()-new Date(t.createdAt).getTime()>36e5)return;const P=setInterval(()=>p(Date.now()),3e4);return()=>clearInterval(P)},[t.createdAt]);const T=y=>{const O=Math.floor((new Date().getTime()-new Date(y).getTime())/1e3);if(O<60)return l==="fr"?"à l'instant":"Just now";if(O<3600){const H=Math.floor(O/60);return l==="fr"?`Il y a ${H} min`:`${H} min ago`}if(O<86400){const H=Math.floor(O/3600);return l==="fr"?`Il y a ${H} h`:`${H} hrs ago`}return new Intl.DateTimeFormat(l==="fr"?"fr-FR":"en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(new Date(y))},z=m.useMemo(()=>T(t.createdAt),[t.createdAt,l,A]),F=()=>{if(t.deletedAt)return e.jsx("span",{className:d.deletedText,children:l==="fr"?"Message supprimé":"Message deleted"});switch(t.messageType){case"text":return e.jsx("p",{className:d.textContent,children:t.content});case"image":return e.jsxs(Ie,{children:[e.jsx(Yt,{asChild:!0,children:e.jsx("button",{className:d.imageTrigger,children:e.jsx("img",{src:ft(t.attachmentUrl,400),alt:t.fileName||"Image",className:d.imageThumbnail,loading:"lazy"})})}),e.jsx(Te,{className:d.imageDialogContent,children:e.jsxs("div",{className:d.imageWrapper,children:[e.jsx("img",{src:t.attachmentUrl||"",alt:t.fileName||"Image",className:d.fullSizeImage}),e.jsxs("a",{href:t.attachmentUrl||"",download:t.fileName||(l==="fr"?"photo":"image"),target:"_blank",rel:"noopener noreferrer",className:d.downloadOverlay,children:[e.jsx(Ze,{size:16}),l==="fr"?"Enregistrer":"Save"]})]})})]});case"file":return e.jsxs("a",{href:t.attachmentUrl||"#",target:"_blank",rel:"noopener noreferrer",className:`${d.fileC
1ard} ${n?d.fileCardOwn:d.fileCardOther}`,children:[e.jsx("div",{className:d.fileIconWrapper,children:e.jsx(Et,{size:24})}),e.jsxs("div",{className:d.fileInfo,children:[e.jsx("span",{className:d.fileName,children:t.fileName||"Document"}),e.jsx("span",{className:d.fileSize,children:t.fileSize?Rr(t.fileSize):"Unknown size"})]}),e.jsx(Ze,{size:16,className:d.downloadIcon})]});case"voice":return e.jsx(ga,{audioUrl:t.attachmentUrl||"",durationSeconds:t.durationSeconds||0});default:return e.jsx("p",{className:d.textContent,children:t.content})}};return e.jsxs("div",{className:` 2 ${d.container} 3 ${n?d.own:d.other} 4 ${r||""} 5 `,children:[e.jsxs("div",{className:d.bubbleWrapper,children:[!n&&a&&e.jsxs(le,{className:d.avatar,children:[t.senderAvatarUrl&&e.jsx(de,{src:t.senderAvatarUrl,alt:t.senderName}),e.jsx(me,{children:t.senderName?.charAt(0)||"?"})]}),e.jsxs("div",{className:d.messageContent,children:[!n&&a&&e.jsx("span",{className:d.senderName,children:t.senderName}),e.jsxs("div",{ref:R,className:d.bubbleRow,onMouseLeave:()=>{b||o(!1)},onClick:S,children:[!b&&!t.deletedAt&&e.jsxs("div",{className:`${d.reactionBar} ${x?d.reactionBarForceShow:""} ${g?d.reactionBarHidden:""}`,children:[ct.map(y=>e.jsx("button",{className:d.reactionBtn,onClick:()=>{c?.(t.id,y),o(!0)},"aria-label":`React with ${y}`,children:e.jsx("span",{className:d.emojiSpan,children:y})},y)),e.jsxs("div",{className:d.pickerWrapper,children:[e.jsx("button",{className:d.reactionBtn,onClick:()=>v(!x),"aria-label":"More emojis",children:e.jsx($t,{size:16})}),x&&e.jsx("div",{className:d.emojiPickerContainer,children:e.jsx(Oe,{onEmojiSelect:y=>{c?.(t.id,y),v(!1),o(!0)},onClose:()=>v(!1)})})]})]}),!b&&n&&!t.deletedAt&&e.jsx("div",{className:d.contextMenu,children:e.jsxs(we,{children:[e.jsx(Se,{asChild:!0,children:e.jsx("button",{className:d.menuTrigger,"aria-label":"More options",children:e.jsx(Xe,{size:16})})}),e.jsx(ke,{align:"end",children:e.jsxs(ee,{className:d.deleteOption,onClick:()=>s?.(t.id),children:[e.jsx(be,{size:16,style:{marginRight:8}}),l==="fr"?"Supprimer":"Delete"]})})]})}),e.jsx("div",{className:` 6 ${d.bubble} 7 ${n?d.ownBubble:d.otherBubble} 8 ${t.messageType==="image"?d.imageBubble:""} 9 `,children:F()}),!b&&!n&&!t.deletedAt&&i&&e.jsx("div",{className:d.contextMenu,children:e.jsxs(we,{children:[e.jsx(Se,{asChild:!0,children:e.jsx("button",{className:d.menuTrigger,"aria-label":"More options",children:e.jsx(Xe,{size:16})})}),e.jsx(ke,{align:"start",children:e.jsxs(ee,{className:d.deleteOption,onClick:()=>s?.(t.id),children:[e.jsx(be,{size:16,style:{marginRight:8}}),l==="fr"?"Supprimer":"Delete"]})})]})})]}),u&&u.length>0&&!t.deletedAt&&e.jsx("div",{className:d.reactionsDisplay,children:u.map(y=>{const P=_?y.userIds.includes(_):!1;return e.jsxs("button",{className:`${d.reactionPill} ${P?d.reactionPillActive:""}`,onClick:()=>c?.(t.id,y.emoji),title:(y.userNames||[]).join(", "),children:[e.jsx("span",{className:d.reactionEmoji,children:y.emoji}),e.jsx("span",{className:d.reactionCount,children:y.count})]},y.emoji)})}),e.jsxs("span",{className:`${d.timestamp} ${n?d.timestampOwn:""}`,children:[z,t.editedAt&&e.jsx("span",{className:d.editedIndicator,children:l==="fr"?" (modifié)":" (edited)"})]})]})]}),b&&e.jsx(Lt,{open:h,onOpenChange:C,children:e.jsxs(Ft,{side:"bottom",className:d.mobileSheetContent,children:[e.jsx(Wt,{children:e.jsx(Gt,{children:l==="fr"?"Réagir":"React"})}),e.jsxs("div",{className:d.mobileSheetBody,children:[e.jsx("div",{className:d.mobileQuickEmojis,children:ct.map(y=>e.jsx("button",{className:d.mobileQuickEmojiBtn,onClick:()=>{c?.(t.id,y),C(!1)},children:e.jsx("span",{className:d.emojiSpan,children:y})},y))}),e.jsx("div",{className:d.mobileMoreEmojisLabel,children:l==="fr"?"Plus d'émojis":"More emojis"}),e.jsx("div",{className:d.mobileEmojiPickerWrapper,children:e.jsx(Oe,{onEmojiSelect:y=>{c?.(t.id,y),C(!1)},onClose:()=>{},className:d.inlineEmojiPicker,autoFocusSearch:!1})}),(n||i)&&!t.deletedAt&&e.jsxs(U,{variant:"destructive",className:d.mobileDeleteBtn,onClick:()=>{s?.(t.id),C(!1)},children:[e.jsx(be,{size:16,style:{marginRight:8}}),l==="fr"?"Supprimer le message":"Delete message"]})]})]})})]})},Er="_barContainer_9cd0c_2",zr="_hiddenInput_9cd0c_13",Pr="_attachTriggerBtn_9cd0c_17",Ur="_attachmentActions_9cd0c_27",Or="_pendingImageContainer_9cd0c_43",Lr="_pe
9ndingImage_9cd0c_43",Fr="_removeImageBtn_9cd0c_59",Wr="_textareaPill_9cd0c_81",Gr="_textarea_9cd0c_81",Hr="_inputRightActions_9cd0c_113",Kr="_emojiPickerWrapper_9cd0c_120",Qr="_inputEmojiPickerContainer_9cd0c_124",qr="_emojiTriggerBtn_9cd0c_132",Vr="_sendButton_9cd0c_142",Yr="_sendButtonIdle_9cd0c_146",Jr="_sendIconActive_9cd0c_150",Xr="_recordingState_9cd0c_155",Zr="_recordingIndicator_9cd0c_166",ei="_pulsingDot_9cd0c_173",ti="_recordingTime_9cd0c_181",si="_recordingActions_9cd0c_188",ni="_cancelBtn_9cd0c_194",ai="_stopBtn_9cd0c_198",ri="_uploadingState_9cd0c_215",ii="_spinner_9cd0c_226",oi="_uploadingText_9cd0c_230",$={barContainer:Er,hiddenInput:zr,attachTriggerBtn:Pr,attachmentActions:Ur,pendingImageContainer:Or,pendingImage:Lr,removeImageBtn:Fr,textareaPill:Wr,textarea:Gr,inputRightActions:Hr,emojiPickerWrapper:Kr,inputEmojiPickerContainer:Qr,emojiTriggerBtn:qr,sendButton:Vr,sendButtonIdle:Yr,sendIconActive:Jr,recordingState:Xr,recordingIndicator:Zr,pulsingDot:ei,recordingTime:ti,recordingActions:si,cancelBtn:ni,stopBtn:ai,uploadingState:ri,spinner:ii,uploadingText:oi},ci=({conversationId:t,onSendMessage:n,disabled:a=!1,className:r,onTyping:s})=>{const{language:i}=te(),u=_e(),[c,_]=m.useState(""),[l,b]=m.useState(!1),[x,v]=m.useState(0),[g,o]=m.useState(!1),[h,C]=m.useState(""),[R,A]=m.useState(!1),[p,S]=m.useState(null),[T,z]=m.useState(null),F=m.useRef(null),y=m.useRef(null),P=m.useRef(null),O=m.useRef(null),H=m.useRef([]),f=m.useRef(null),M=m.useRef(null),V=Ts(),se=()=>{S(null),M.current&&(URL.revokeObjectURL(M.current),M.current=null),z(null)},ne=()=>{F.current&&(F.current.style.height="auto",F.current.style.height=`${Math.min(F.current.scrollHeight,120)}px`)};m.useEffect(()=>{ne()},[c,p]);const ue=k=>{_(k.target.value),s&&s()},J=k=>{k.key==="Enter"&&!k.shiftKey&&(k.preventDefault(),ae())},ae=async()=>{const k=c.trim();if(!(!k&&!p||a||g||l))if(p){o(!0),C(p.name);try{const{presignedUrl:I,url:K}
9=await V.mutateAsync({fileName:p.name,contentType:p.type||"application/octet-stream",fileSize:p.size});if(!(await fetch(I,{method:"PUT",body:p,headers:{"Content-Type":p.type||"application/octet-stream"}})).ok)throw new Error("Upload to storage failed");n({content:k||void 0,messageType:"image",attachmentUrl:K,fileName:p.name,fileSize:p.size}),se(),_("")}catch(I){console.error("Image upload failed",I),alert(i==="fr"?"Ãchec de l'envoi de l'image.":"Image upload failed.")}finally{o(!1),C("")}}else n({content:k,messageType:"text"}),_("")},Me=async k=>{const I=k.target.files?.[0];if(I){if(k.target.value="",I.size>100*1024*1024){alert(i==="fr"?"La taille du fichier ne doit pas dépasser 100 Mo.":"File size must not exceed 100MB.");return}o(!0),C(I.name);try{const{presignedUrl:K,url:re}=await V.mutateAsync({fileName:I.name,contentType:I.type||"application/octet-stream",fileSize:I.size});if(!(await fetch(K,{method:"PUT",body:I,headers:{"Content-Type":I.type||"application/octet-stream"}})).ok)throw new Error("Upload to storage failed");n({messageType:"file",attachmentUrl:re,fileName:I.name,fileSize:I.size})}catch(K){console.error("Upload failed",K),alert(i==="fr"?"Ãchec de l'envoi du fichier.":"File upload failed.")}finally{o(!1),C("")}}},B=k=>{const I=k.target.files?.[0];if(I){if(k.target.value="",I.size>100*1024*1024){alert(i==="fr"?"La taille du fichier ne doit pas dépasser 100 Mo.":"File size must not exceed 100MB.");return}se(),S(I),M.current=URL.createObjectURL(I),z(M.current)}},G=async()=>{try{const k=await navigator.mediaDevices.getUserMedia({audio:!0}),I=new MediaRecorder(k);O.current=I,H.current=[],I.ondataavailable=K=>{K.data.size>0&&H.current.push(K.data)},I.onstop=async()=>{if(k.getTracks().forEach(re=>re.stop()),H.current.length>0&&l){const re=new Blob(H.current,{type:I.mimeType||"audio/webm"});await Be(re,x)}b(!1),v(0)},I.start(),b(!0),v(0),f.current=window.setInterval(()=>{v(K=>K+1)},1e3)}catch(k){console.error("Microphone access denied",k),alert(i==="fr"?"Accès au microphone refusé.":"Microphone access denied.")}},L=()=>{O.current&&O.current.state!=="inactive"&&O.current.stop(),f.current&&clearInterval(f.current)},X=()=>{O.current&&O.current.state!=="inactive"&&(H.current=[],O.current.stop()),f.current&&clearInterval(f.current),b(!1),v(0)},Be=async(k,I)=>{o(!0),C(i==="fr"?"Message vocal":"Voice message");const K=k.type,re=K.includes("mp4")?"m4a":K.includes("ogg")?"ogg":"webm",De=`voice-message-${Date.now()}.${re}`;try{const{presignedUrl:Re,url:bt}=await V.mutateAsync({fileName:De,contentType:k.type||"audio/webm",fileSize:k.size});if(!(await fetch(Re,{method:"PUT",body:k,headers:{"Content-Type":k.type||"audio/webm"}})).ok)throw new Error("Upload failed");n({messageType:"voice",attachmentUrl:bt,fileName:De,fileSize:k.size,durationSeconds:I})}catch(Re){console.error("Voice upload failed",Re),alert(i==="fr"?"Ãchec de l'envoi vocal.":"Voice upload failed.")}finally{o(!1),C("")}},fe=k=>{const I=Math.floor(k/60),K=k%60;return`${I}:${K.toString().padStart(2,"0")}`};m.useEffect(()=>()=>{f.current&&clearInterval(f.current),O.current&&O.current.state!=="inactive"&&O.current.stop(),M.current&&URL.revokeObjectURL(M.current)},[]);const pe=c.trim()||p;return e.jsx("div",{className:`${$.barContainer} ${r||""}`,children:g?e.jsxs("div",{className:$.uploadingState,children:[e.jsx(xe,{className:$.spinner,size:20}),e.jsx("span",{className:$.uploadingText,children:i==="fr"?`Envoi en cours : ${h}...`:`Sending: ${h}...`})]}):l?e.jsxs("div",{className:$.recordingState,children:[e.jsxs("div",{className:$.recordingIndicator,children:[e.jsx("div",{className:$.pulsingDot}),e.jsx("span",{className:$.recordingTime,children:fe(x)})]}),e.jsxs("div",{className:$.recordingActions,children:[e.jsx(U,{variant:"ghost",size:"icon",onClick:X,className:$.cancelBtn,children:e.jsx(ye,{size:20})}),e.jsx(U,{variant:"destructive",size:"icon",onClick:L,className:$.stopBtn,children:e.jsx(zt,{size:16,fill:"currentColor"})})]})]}):e.jsxs(e.Fragment,{children:[e.jsx("input",{type:"file",ref:y,onChange:Me,className:$.hiddenInput}),e.jsx("input",{type:"file",accept:"image/*",ref:P,onChange:B,className:$.hiddenInput}),u?e.jsxs(we,{children:[e.jsx(Se,{asChild:!0,children:e.jsx(U,{variant:"ghost",size:"icon",disabled:a,"aria-label":i==="fr"?"Plus d'options":"More options",className:$.attachTriggerBtn,children:e.jsx(ut,{size:20})})}),e.jsxs(ke,{align:"start",children:[e.jsxs(ee,{onClick:()=>y.current?.click(),children:[e.jsx(et,{size:16,style:{marginRight:8}}),i==="fr"?"Joindre un fichier":"Attach file"]}),e.jsxs(ee,{onClick:()=>P.current?.click(),children:[e.jsx(Pe,{size:16,style:{marginRight:8}}),i==="fr"?"Envoyer une image":"Send image"]}),e.jsxs(ee,{onClick:G,children:[e.jsx(tt,{size:16,style:{marginRight:8}}),i==="fr"?"Message vocal":"Voice message"]})]})]}):e.jsxs("div",{className:$.attachmentActions,children:[e.jsx(U,{variant:"ghost",size:"icon",disabled:a,onClick:()=>y.current?.click(),"aria-label":i==="fr"?"Joindre un fichier":"Attach file",children:e.jsx(et,{size:20})}),e.jsx(U,{variant:"ghost",size:"icon",disabled:a,onClick:()=>P.current?.click(),"aria-label":i==="fr"?"Envoyer une image":"Send image",children:e.jsx(Pe,{size:20})}),e.jsx(U,{variant:"ghost",size:"icon",disabled:a,onClick:G,"aria-label":i==="fr"?"Message vocal":"Voice message",children:e.jsx(tt,{size:20})})]}),T&&e.jsxs("div",{className:$.pendingImageContainer,children:[e.jsx("img",{src:T,alt:"preview",className:$.pendingImage}),e.jsx("button",{className:$.removeImageBtn,onClick:se,"aria-label":i==="fr"?"Retirer l'image":"Remove image",children:e.jsx(ye,{size:14})})]}),e.jsxs("div",{className:$.textareaPill,children:[e.jsx(Ht,{ref:F,variant:"clear",placeholder:i==="fr"?"Ãcrire un message":"Type a message",className:$.textarea,value:c,onChange:ue,onKeyDown:J,disabled:a,rows:1}),e.jsxs("div",{className:$.inputRightActions,children:[e.jsxs("div",{className:$.emojiPickerWrapper,children:[e.jsx(U,{variant:"ghost",size:"icon",disabled:a,onClick:()=>A(!R),className:$.emojiTriggerBtn,"aria-label":i==="fr"?"Insérer un emoji":"Insert emoji",children:e.jsx(ht,{size:20})}),R&&e.jsx("div",{className:$.inputEmojiPickerContainer,children:e.jsx(Oe,{onEmojiSelect:k=>{_(I=>I+k),s&&s()},onClose:()=>A(!1)})})]}),e.jsx(U,{className:`${$.sendButton} ${pe?"":$.sendButtonIdle}`,variant:pe?"primary":"ghost",size:"icon",disabled:a||!pe,onClick:ae,"aria-label":i==="fr"?"Envoyer":"Send",children:e.jsx(Pt,{size:20,className:pe?$.sendIconActive:""})})]})]})]})})},li="_messageArea_etl9v_2",di="_contentWrapper_etl9v_11",mi="_messagesColumn_etl9v_18",ui="_scrollableArea_etl9v_27",pi="_footerContainer_etl9v_40",hi="_typingIndicator_etl9v_47",_i="_typingDot_etl9v_63",fi="_typingText_etl9v_79",gi="_dateGroup_etl9v_96",ji="_dateDivider_etl9v_101",bi="_dateLabel_etl9v_119",xi="_emptyContainer_etl9v_129",vi="_emptyIcon_etl9v_141",yi="_emptyTitle_etl9v_147",Ni="_emptySubtitle_etl9v_154",Ci="_skeletonContainer_etl9v_162",wi="_skeletonBubbleRow_etl9v_168",Si="_skeletonOwn_etl9v_173",ki="_skeletonBubble_etl9v_168",Ii="_loadM
9oreSpinner_etl9v_183",Ti="_spinner_etl9v_189",E={messageArea:li,contentWrapper:di,messagesColumn:mi,scrollableArea:ui,footerContainer:pi,typingIndicator:hi,typingDot:_i,typingText:fi,dateGroup:gi,dateDivider:ji,dateLabel:bi,emptyContainer:xi,emptyIcon:vi,emptyTitle:yi,emptySubtitle:Ni,skeletonContainer:Ci,skeletonBubbleRow:wi,skeletonOwn:Si,skeletonBubble:ki,loadMoreSpinner:Ii,spinner:Ti},lt=({conversationId:t,onBack:n})=>{const{language:a}=te(),{authState:r}=he(),s=r.type==="authenticated"?r.user.id:null;r.type==="authenticated"&&r.user.displayName;const i=r.type==="authenticated"?r.user.role:null,u=m.useRef(null),[c,_]=m.useState(!0),[l,b]=m.useState(!1),[x,v]=m.useState(!1),[g,o]=m.useState(!1),h=_e(),C=Jt(()=>{b(!1)},3e3),{data:R=null}=ys(t||0),{data:A=[],isFetching:p}=Ns(t||0),S=Cs(),T=Ss(),z=Is(),F=ws(),y=jt(),{data:P={}}=As(t||0),O=Ms(),H=(B,G)=>{t&&O.mutate({messageId:B,emoji:G})};Kt(l&&t?Ne.chatTyping(t):null);const M=Qt(t?Ne.chatTyping(t):null).filter(B=>String(B)!==String(s)).map(B=>R?.participants.find(L=>String(L.userId)===String(B))?.displayName||(a==="fr"?"Quelqu'un":"Someone"));m.useEffect(()=>{t&&A.length>0&&z.mutate({conversationId:t})},[t,A.length]);const V=()=>{const B=u.current;if(!B)return;const G=B.scrollHeight-B.scrollTop<=B.clientHeight+100;if(_(G),B.scrollTop===0&&A.length>0&&!S.isPending){const L=A[A.length-1];L&&L.id>0&&S.mutate({conversationId:t,cursor:L.id})}};m.useEffect(()=>{c&&u.current&&(u.current.scrollTop=u.current.scrollHeight)},[A,c]);const se=B=>{t&&(T.mutate({conversationId:t,...B}),_(!0))},ne=()=>{b(!0),C()},ue=B=>{t&&F.mutate({messageId:B,conversationId:t})},J=()=>{const B={};return[...A].reverse().forEach(L=>{const X=new Date(L.createdAt).toDateString();B[X]||(B[X]=[]),B[X].push(L)}),Object.entries(B)},ae=B=>{const G=new Date(B),L=new Date,X=new Date(L);return X.setDate(L.getDate()-1),G.toDateString()===L.toDateString()?a==="fr"?"Aujourd'hui":"Today":G.toDateString()===X.toDateString()?a==="fr"?"Hier":"Yesterday":new Intl.DateTimeFormat(a==="fr"?"fr-FR":"en-US",{weekday:"long",month:"short",day:"numeric"}).format(G)};if(!t)return e.jsxs("div",{className:E.emptyContainer,children:[e.jsx(pt,{size:48,className:E.emptyIcon}),e.jsx("h2",{className:E.emptyTitle,children:a==="fr"?"Messagerie Horizon":"Horizon Messenger"}),e.jsx("p",{className:E.emptySubtitle,children:a==="fr"?"Sélectionnez une discussion pour commencer à échanger.":"Select a conversation to start messaging."})]});const Me=J();return e.jsxs("div",{className:E.messageArea,children:[e.jsxs("div",{className:E.contentWrapper,children:[(!h||!x)&&e.jsxs("div",{className:E.messagesColumn,children:[e.jsx(Cn,{conversation:R,onBack:n,onInfoClick:()=>v(!0),onDeleteConversation:i==="company"||i==="owner"?()=>o(!0):void 0}),e.jsx("div",{ref:u,onScroll:V,className:E.scrollableArea,children:p&&A.length===0?e.jsx("div",{className:E.skeletonContainer,children:Array.from({length:4}).map((B,G)=>e.jsx("div",{className:`${E.skeletonBubbleRow} ${G%2===0?E.skeletonOwn:""}`,children:e.jsx(Z,{className:E.skeletonBubble})},G))}):e.jsxs(e.Fragment,{children:[S.isPending&&e.jsx("div",{className:E.loadMoreSpinner,children:e.jsx(xe,{className:E.spinner,size:20})}),Me.map(([B,G])=>e.jsxs("div",{className:E.dateGroup,children:[e.jsx("div",{className:E.dateDivider,children:e.jsx("span",{className:E.dateLabel,children:ae(B)})}),G.map((L,X)=>{const Be=L.senderId===s,fe=G[X-1],pe=!fe||fe.senderId!==L.senderId||new Date(L.createdAt).getTime()-new Date(fe.createdAt).getTime()>12e4;return e.jsx($r,{message:L,isOwnMessage:Be,showSenderInfo:pe,onDelete:ue,canDeleteAny:i==="owner"||i==="company",reactions:P[L.id]||[],onReaction:H,currentUserId:s},L.id)})]},B))]})}),e.jsxs("div",{className:E.footerContainer,children:[M.length>0&&e.jsxs("div",{className:E.typingIndicator,children:[e.jsx("span",{className:E.typingDot}),e.jsx("span",{className:E.typingDot}),e.jsx("span",{className:E.typingDot}),e.jsxs("span",{className:E.typingText,children:[M.join(", ")," ",M.length===1?a==="fr"?"écrit...":"is typing...":a==="fr"?"écrivent...":"are typing..."]})]}),e.jsx(ci,{conversationId:t,onSendMessage:se,disabled:T.isPending,className:E.inputBar,onTyping:ne})]})]}),x&&e.jsx(ca,{conversation:R,onClose:()=>v(!1)})]}),e.jsx(Ie,{open:g,onOpenChange:o,children:e.jsxs(Te,{children:[e.jsxs(He,{children:[e.jsx(Ke,{children:a==="fr"?"Supprimer la conversation":"Delete conversation"}),e.jsx(Qe,{children:a==="fr"?"Cette action est irréversible. Tous les messages et fichiers de cette c
9onversation seront supprimés définitivement.":"This action is irreversible. All messages and files in this conversation will be permanently deleted."})]}),e.jsxs(qe,{children:[e.jsx(U,{variant:"outline",onClick:()=>o(!1),children:a==="fr"?"Annuler":"Cancel"}),e.jsx(U,{variant:"destructive",onClick:()=>{t&&y.mutate({conversationId:t},{onSuccess:()=>{o(!1),n?.()}})},disabled:y.isPending,children:a==="fr"?"Supprimer":"Delete"})]})]})})]})},Ai="_dialogContent_t2v1s_2",Mi="_tabsContainer_t2v1s_9",Bi="_tabsList_t2v1s_17",Di="_searchWrapper_t2v1s_25",Ri="_searchIcon_t2v1s_31",$i="_searchInput_t2v1s_38",Ei="_tabContent_t2v1s_42",zi="_groupMetaInput_t2v1s_50",Pi="_loadingWrapper_t2v1s_54",Ui="_spinner_t2v1s_61",Oi="_emptyState_t2v1s_69",Li="_membersList_t2v1s_78",Fi="_memberRowButton_t2v1s_86",Wi="_selectedRow_t2v1s_101",Gi="_avatar_t2v1s_105",Hi="_memberInfo_t2v1s_110",Ki="_memberName_t2v1s_117",Qi="_memberEmail_t2v1s_126",qi="_checkbox_t2v1s_134",Vi="_dialogFooter_t2v1s_138",Yi="_selectedCount_t2v1s_146",N={dialogContent:Ai,tabsContainer:Mi,tabsList:Bi,searchWrapper:Di,searchIcon:Ri,searchInput:$i,tabContent:Ei,groupMetaInput:zi,loadingWrapper:Pi,spinner:Ui,emptyState:Oi,membersList:Li,memberRowButton:Fi,selectedRow:Wi,avatar:Gi,memberInfo:Hi,memberName:Ki,memberEmail:Qi,checkbox:qi,dialogFooter:Vi,selectedCount:Yi},dt=({open:t,onOpenChange:n,onConversationCreated:a})=>{const{t:r,language:s}=te(),[i,u]=m.useState("direct"),[c,_]=m.useState(""),[l,b]=m.useState([]),[x,v]=m.useState(""),{authState:g}=he(),o=g.type==="authenticated"?g.user.id:null,h=g.type==="authenticated"?g.user.role:null,{hasPermission:C}=qt(),R=h==="company"||h==="owner"||h==="admin"||C("messaging.create_group");m.useEffect(()=>{!R&&i!=="direct"&&u("direct")},[R,i]);const A=ks(),{data:p=[],isFetching:S}=Fe({queryKey:["team","members-for-chat"],queryFn:async()=>{try{const ne=await fetch("/_api/team/members");if(ne.ok){const ue=await ne.text();let J;try{J=w.parse(ue)}catch{J=JSON.parse(ue)}const ae=Array.isArray(J)?J:J.members||J.users||[];if(Array.isArray(ae)&&ae.length>0)return ae}}catch(ne){console.warn("Fallback to /_api/users/list because /_api/team/members failed",ne)}const f=await fetch("/_api/users/list");if(!f.ok)throw new Error("Failed to load members");const M=await f.text();let V;try{V=w.parse(M)}catch{V=JSON.parse(M)}const se=Array.isArray(V)?V:V.users||V.members||[];return Array.isArray(se)?se:[]},enabled:t}),T=p.filter(f=>{if(o&&f.id===o)return!1;const M=c.toLowerCase();return f.displayName.toLowerCase().includes(M)||f.email.toLowerCase().includes(M)}),z=f=>{b(M=>M.includes(f)?M.filter(V=>V!==f):[...M,f])},F=async f=>{try{const M=await A.mutateAsync({type:"direct",participantUserIds:[f.id]});n(!1),a(M.conversation.id),P()}catch(M){console.error("Failed to create direct chat:",M)}},y=async()=>{if(!(!x.trim()||l.length===0))try{const f=await A.mutateAsync({type:"group",participantUserIds:l,name:x.trim()});n(!1),a(f.conversation.id),P()}catch(f){console.error("Failed to create group chat:",f)}},P=()=>{_(""),b([]),v("")},O=e.jsxs("div",{className:N.searchWrapper,children:[e.jsx(We,{className:N.searchIcon,size:16}),e.jsx(Ue,{placeholder:s==="fr"?"Rechercher un membre...":"Search a member...",value:c,onChange:f=>_(f.target.value),className:N.searchInput})]}),H=e.jsx(e.Fragment,{children:S?e.jsx("div",{className:N.loadingWrapper,children:e.jsx(xe,{className:N.spinner,size:24})}):T.length===0?e.jsx("div",{className:N.emptyState,children:s==="fr"?"Aucun membre trouvé":"No members found"}):e.jsx("div",{className:N.membersList,children:T.map(f=>e.jsxs("button",{onClick:()=>F(f),className:N.memberRowButton,disabled:A.isPending,children:[e.jsxs(le,{className:N.avatar,children:[f.avatarUrl&&e.jsx(de,{src:f.avatarUrl,alt:f.displayName}),e.jsx(me,{children:f.displayName.charAt(0)})]}),e.jsxs("div",{className:N.memberInfo,children:[e.jsx("span",{className:N.memberName,children:f.displayName}),e.jsx("span",{className:N.memberEmail,children:f.email})]})]},f.id))})});return e.jsx(Ie,{open:t,onOpenChange:n,children:e.jsxs(Te,{className:N.dialogContent,children:[e.jsxs(He,{children:[e.jsx(Ke,{children:s==="fr"?"Nouvelle discussion":"New conversation"}),e.jsx(Qe,{children:s==="fr"?"Commencez à échanger avec des membres de votre équipe.":"Start chatting with your team members."})]}),R?e.jsxs(Xt,{value:i,onValueChange:f=>{u(f),P()},className:N.tabsContainer,children:[e.jsxs(Zt,{className:N.tabsList,children:[e.jsx(at,{value:"direct",children:s==="fr"?"Message direct":"Direct message"}),e.jsx(at,{value:"group",children:s==="fr"?"Groupe":"Group chat"})]}),O,e.jsx(rt,{value:"direct",className:N.tabContent,children:H}),e.jsxs(rt,{value:"group",className:N.tabContent,children:[e.jsx("div",{className:N.groupMetaInput,children:e.jsx(Ue,{placeholder:s==="fr"?"Nom du groupe...":"Group name...",value:x,onChange:f=>v(f.target.value),className:N.groupNameInput})}),S?e.jsx("div",{className:N.loadingWrapper,children:e.jsx(xe,{className:N.spinner,size:24})}):T.length===0?e.jsx("div",{className:N.emptyState,children:s==="fr"?"Aucun membre trouvé":"No members found"}):e.jsx("div",{className:N.membersList,children:T.map(f=>{const M=l.includes(f.id);return e.jsxs("div",{onClick:()=>z(f.id),className:`${N.memberRowButton} ${M?N.selectedRow:""}`,children:[e.jsxs(le,{className:N.avatar,children:[f.avatarUrl&&e.jsx(de,{src:f.avatarUrl,alt:f.displayName}),e.jsx(me,{children:f.displayName.charAt(0)})]}),e.jsxs("div",{className:N.memberInfo,children:[e.jsx("span",{className:N.memberName,children:f.displayName}),e.jsx("span",{className:N.memberEmail,children:f.email})]}),e.jsx(es,{checked:M,className:N.checkbox})]},f.id)})})]})]}):e.jsxs("div",{className:N.tabsContainer,children:[O,e.jsx("div",{className:N.tabContent,children:H})]}),R&&i==="group"&&e.jsxs(qe,{className:N.dialogFooter,children:[e.jsx("div",{className:N.selectedCount,children:l.length>0&&e.jsxs("span",{children:[l.length," ",s==="fr"?"sélectionné(s)":"selected"]})}),e.jsx(U,{variant:"primary",onClick:y,disabled:!x.trim()||l.length===0||A.isPending,children:A.isPending?e.jsx(xe,{className:N.spinner,size:16}):s==="fr"?"Créer":"Create"})]})]})})},Ji="_pageWrapper_1sujm_2",Xi="_mobileContainer_1sujm_11",Zi="_desktopContainer_1sujm_19",eo="_sidebarWrapper_1sujm_30",to="_mainWrapper_1sujm_39",je={pageWrapper:Ji,mobileContainer:Xi,desktopContainer:Zi,sidebarWrapper:eo,mainWrapper:to},mt="horizon_chat_push_prompted",_o=()=>{const{language:t}=te(),n=_e(),[a,r]=Ut(),s=a.get("conv"),[i,u]=m.useState(s?parseInt(s,10):null),[c,_]=m.useState(!1);m.useEffect(()=>()=>{window.scrollTo(0,0),document.body&&(document.body.scrollTop=0),document.documentElement&&(document.documentElement.scrollTop=0)},[]),m.useEffect(()=>{s&&u(parseInt(s,10))},[s]),m.useEffect(()=>{localStorage.getItem(mt)||(localStorage.setItem(mt,"true"),Vt().catch(C=>console.error("Failed to enable push notifications",C)))},[]);const l=h=>{u(h),r({conv:h.toString()},{replace:!0})},b=()=>{u(null),a.delete("conv"),r(a,{replace:!0})},x=()=>{_(!0)},v=h=>{l(h),_(!1)},g=h=>{h===i&&b()},o={fr:{title:"Messagerie - Horizon CRM"},en:{title:"Messaging - Horizon CRM"}}[t];return n?e.jsxs(e.Fragment,{children:[e.jsx(st,{children:e.jsx("title",{children:o.title})}),e.jsx("div",{className:je.mobileContainer,children:i?e.jsx(lt,{conversationId:i,onBack:b}):e.jsx(ot,{selectedConversationId:i,onSelectConversation:l,onCreateNew:x,onConversationDeleted:g})}),e.jsx(dt,{open:c,onOpenChange:_,onConversationCreated:v})]}):e.jsxs(e.Fragment,{children:[e.jsx(st,{children:e.jsx("title",{children:o.title})}),e.jsx("div",{className:je.pageWrapper,children:e.jsxs("div",{className:je.desktopContainer,children:[e.jsx("div",{className:je.sidebarWrapper,children:e.jsx(ot,{selectedConversationId:i,onSelectConversation:l,onCreateNew:x,onConversationDeleted:g})}),e.jsx("div",{className:je.mainWrapper,children:e.jsx(lt,{conversationId:i,onBack:b})})]})}),e.jsx(dt,{open:c,onOpenChange:_,onConversationCreated:v})]})};export{_o as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.