PageSourceSearch

https://anam.ma/assets/AdminLettres-Dlu_V-T3.js

js anam.ma collected 2026-10-02 06:28:17 UTC 54,946 bytes, 10 lines download raw bytes

1import{i as Qs,b8 as Js,b6 as Ws,r as d,u as _e,b9 as T,F as $,bt as Ts,j as e,h as n,bN as Xs,B as F,X as _,C as Ys,a as Zs,g as et,bn as st,bg as xs,cc as hs,bT as tt,b as at,U as Ae,cr as Y,cs as Z,bs as nt,ct as ee,b$ as se,d as ps,b5 as gs,c as ze,b4 as rt,ba as N,bb as w}from"./index-2upL18V-.js";import{T as it}from"./textarea-DPVnFy6K.js";import{S as js}from"./skeleton-ByWAMbhZ.js";import{C as lt}from"./checkbox-Bn39UdFf.js";import{D as dt,a as ot,b as ct,e as te,d as Le}from"./dropdown-menu-DLAvbJE1.js";import{D as I,b as R,c as U,d as O,e as V,f as H}from"./dialog-h4OZW20M.js";import{T as bs,a as fs,b as Ne,c as g,d as Ns,e as j}from"./table-Ce40x48p.js";import{C as ae}from"./check-check-D9ejcxT2.js";import{B as ve}from"./building-2-BKoqCFLO.js";import{P as K}from"./pen-line-rJfa9Emh.js";import{C as mt}from"./clock-BrCgYvQE.js";import{C as ne}from"./circle-check-B0r-IYVj.js";import{H as ut}from"./hash-3fo955GQ.js";import{C as vs}from"./chevron-right-B94tAz5p.js";import{S as ws}from"./square-DW9xzLgd.js";import{P as Fe}from"./printer-DhL3_vNG.js";import{U as ks}from"./user-BiLMrUGH.js";import{C as xt}from"./calendar-Cr11xU0p.js";import{a as ht}from"./chevron-down-C2yPeus7.js";import{U as A}from"./upload-Bm8kH-tK.js";import{A as pt}from"./arrow-right-D9EJ0SNC.js";import{C as gt}from"./chevron-left-BYO7G1rf.js";import{I as Cs}from"./info-Bg89KSiM.js";import{L as ys}from"./loader-circle-8lBfJYzw.js";import{S as jt}from"./settings-2-BM8R-4tb.js";import"./index-UqYw647F.js";import"./index-dzQM-MHy.js";import"./circle-CcYZXg59.js";/**
2 * @license lucide-react v0.453.0 - ISC
3 *
4 * This source code is licensed under the ISC license.
5 * See the LICENSE file in the root directory of this source tree.
6 */const Ss=Qs("Layers",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65",key:"dd6zsq"}],["path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65",key:"ep9fru"}]]),q=[{key:"brouillon",label:"À imprimer / signer",labelAr:"للطباعة والتوقيع",icon:$,color:"bg-slate-100 dark:bg-slate-800 text-slate-700 dark:text-slate-300",activeColor:"bg-slate-700 text-white dark:bg-slate-200 dark:text-slate-900",dotColor:"bg-slate-400",borderColor:"border-slate-300 dark:border-slate-600",desc:"Lettres générées, prêtes à imprimer, faire signer et uploader"},{key:"signee",label:"Signée",labelAr:"تم التوقيع",icon:ae,color:"bg-indigo-50 dark:bg-indigo-950/30 text-indigo-800 dark:text-indigo-300",activeColor:"bg-indigo-600 text-white",dotColor:"bg-indigo-400",borderColor:"border-indigo-200 dark:border-indigo-800",desc:"Signées, en attente d'envoi par le Bureau d'Ordre"},{key:"envoyee",label:"Envoyée organisme",labelAr:"أرسلت إلى الهيئة المسيّرة",icon:ve,color:"bg-teal-50 dark:bg-teal-950/30 text-teal-800 dark:text-teal-300",activeColor:"bg-teal-600 text-white",dotColor:"bg-teal-400",borderColor:"border-teal-200 dark:border-teal-800",desc:"Envoyées à l'organisme gestionnaire"},{key:"envoye_assure",label:"Envoyée assuré",labelAr:"أرسلت إلى المؤمَّن للإعلام",icon:Ts,color:"bg-purple-50 dark:bg-purple-950/30 text-purple-800 dark:text-purple-300",activeColor:"bg-purple-600 text-white",dotColor:"bg-purple-400",borderColor:"border-purple-200 dark:border-purple-800",desc:"Envoyées à l'assuré pour information"},{key:"en_signature",label:"En attente signature",labelAr:"في انتظار التوقيع",icon:K,color:"bg-violet-50 dark:bg-violet-950/30 text-violet-800 dark:text-violet-300",activeColor:"bg-violet-600 text-white",dotColor:"bg-violet-500",borderColor:"border-violet-200 dark:border-violet-800",desc:"Préparées et transmises au DG pour signature"},{key:"en_validation",label:"En validation (ancien)",labelAr:"قيد المصادقة",icon:mt,color:"bg-amber-50 dark:bg-amber-950/30 text-amber-800 dark:text-amber-300",activeColor:"bg-amber-600 text-white",dotColor:"bg-amber-400",borderColor:"border-amber-200 dark:border-amber-800",de
6sc:"Ancien workflow — en attente de validation"},{key:"validee",label:"Validée (ancien)",labelAr:"تمت المصادقة",icon:ne,color:"bg-green-50 dark:bg-green-950/30 text-green-800 dark:text-green-300",activeColor:"bg-green-600 text-white",dotColor:"bg-green-400",borderColor:"border-green-200 dark:border-green-800",desc:"Ancien workflow — validées"}];function Ie(r){switch(r){case"avis_favorable":return"Avis favorable";case"avis_defavorable":return"Avis défavorable";case"complement_demande":return"Demande de complément";default:return r}}function bt(r){return r==="avis_favorable"?"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300":r==="avis_defavorable"?"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300":"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300"}function D(r){return r?new Date(r).toLocaleDateString("fr-FR",{day:"2-digit",month:"short",year:"numeric"}):"—"}function Kt(){const{toast:r}=Js(),{user:c}=Ws(),[p,Re]=d.useState(null),[Ue,$s]=d.useState(""),[m,Oe]=d.useState(null),[x,Q]=d.useState(null),[we,qe]=d.useState(""),[y,re]=d.useState(null),[ie,G]=d.useState(null),[Ge,Me]=d.useState(!1),[Be,Ve]=d.useState(null),[h,ke]=d.useState(new Set),[He,Ke]=d.useState(!1),[M,Qe]=d.useState(null),[P,le]=d.useState(null),[J,W]=d.useState(null),[Je,We]=d.useState(!1),[v,de]=d.useState(null),[Ps,X]=d.useState(!1),[S,z]=d.useState([]),[Ds,Ce]=d.useState(!1),[oe,Xe]=d.useState(!1),[b,ce]=d.useState(null),Ye=d.useRef(null),Ze=d.useRef(null),es=d.useRef(null),ss=async(s,t)=>{Ve(s.id);try{const a=localStorage.getItem("csrf_token")||"",i=await fetch(`/api/letters/${s.id}/download/${t}`,{credentials:"include",headers:{"x-csrf-token":a}});if(!i.ok){const Ks=await i.json().catch(()=>({}));throw new Error(Ks.error||"Erreur lors du téléchargement")}const l=await i.blob(),o=URL.createObjectURL(l),f=document.createElement("a");f.href=o;const Hs=s.claimReference||s.id.slice(0,8);f.download=`Lettre_${Hs}.${t==="word"?"docx":"pdf"}`,document.body.appendChild(f),f.click(),document.body.removeChild(f),URL.revokeObjectURL(o),r({title:"Téléchargement réussi",description:`Lettre exportée en ${t==="word"?"Word":"PDF"}`})}catch(a){r({title:"Erreur",description:a.message,variant:"destructive"})}finally{Ve(null)}},{data:me=[],isLoading:ye,refetch:Es}=_e({queryKey:["/api/letters"]}),ue=["superadmin","admin","admin_dcn_commission"].includes((c==null?void 0:c.role)||""),{data:ts=[],refetch:_s}=_e({queryKey:["/api/users/secretaires"],enabled:ue,staleTime:6e4}),as=T({mutationFn:s=>w("PATCH",`/api/letters/${s}/submit`),onSuccess:()=>{N.invalidateQueries({queryKey:["/api/letters"]}),r({title:"Lettre soumise à validation"})},onError:s=>r({title:"Erreur",description:s.message,variant:"destructive"})}),xe=T({mutationFn:s=>w("PATCH",`/api/letters/${s}/validate`),onSuccess:()=>{N.invalidateQueries({queryKey:["/api/letters"]}),r({title:"Lettre validée"})},onError:s=>r({title:"Erreur",description:s.message,variant:"destructive"})}),ns=T({mutationFn:s=>w("PATCH",`/api/letters/${s}/send-to-dg`),onSuccess:()=>{N.invalidateQueries({queryKey:["/api/letters"]}),r({title:"Lettre envoyée au DG pour signature"})},onError:s=>r({title:"Erreur",description:s.message,variant:"destructive"})}),rs=T({mutationFn:s=>w("PATCH",`/api/letters/${s}/send`),onSuccess:()=>{N.invalidateQueries({queryKey:["/api/letters"]}),r({title:"Lettre envoyée à l'organisme"})},onError:s=>r({title:"Erreur",description:s.message,variant:"destructive"})}),is=T({mutationFn:s=>w("PATCH",`/api/letters/${s}/send-assure`),onSuccess:()=>{N.invalidateQueries({queryKey:["/api/letters"]}),r({title:"Lettre envoyée à l'assuré"})},onError:s=>r({title:"Erreur",description:s.message,variant:"destructive"})}),Se=T({mutationFn:({id:s,content:t})=>w("PATCH",`/api/letters/${s}/content`,{editedContent:t}),onSuccess:()=>{N.invalidateQueries({queryKey:["/api/letters"]}),Q(null),r({title:"Contenu sauvegardé"})},onError:s=>r({title:"Erreur",description:s.message,variant:"destructive"})}),he=T({mutationFn:async({id:s,content:t})=>(await w("PATCH",`/api/letters/${s}/content`,{editedContent:t}),w("PATCH",`/api/letters/${s}/validate`)),onSuccess:()=>{N.invalidateQueries({queryKey:["/api/letters"]}
6),Q(null),r({title:"Lettre validée",description:"Le contenu a été sauvegardé et la lettre est maintenant validée."})},onError:s=>r({title:"Erreur",description:s.message,variant:"destructive"})}),ls=T({mutationFn:s=>w("PATCH",`/api/letters/${s}/mark-pret`),onSuccess:()=>{N.invalidateQueries({queryKey:["/api/letters"]}),r({title:"Lettre marquée Prête",description:"La lettre est maintenant en attente de signature."})},onError:s=>r({title:"Erreur",description:s.message,variant:"destructive"})}),pe=T({mutationFn:({letterId:s,userId:t})=>w("PATCH",`/api/letters/${s}/assign`,{assignedToUserId:t}),onSuccess:(s,t)=>{N.invalidateQueries({queryKey:["/api/letters"]}),N.invalidateQueries({queryKey:["/api/users/secretaires"]}),de(null),r({title:t.userId?"Lettre assignée":"Assignation retirée",description:t.userId?"La lettre a été assignée au secrétaire sélectionné.":"La lettre n'est plus assignée."})},onError:s=>r({title:"Erreur",description:s.message,variant:"destructive"})}),As=d.useCallback(s=>{ke(t=>{const a=new Set(t);return a.has(s)?a.delete(s):a.add(s),a})},[]),ds=d.useCallback(s=>{ke(new Set(s))},[]),ge=d.useCallback(()=>ke(new Set),[]),zs=async(s,t)=>{try{const a=localStorage.getItem("csrf_token")||"",i=await fetch(s,{credentials:"include",headers:{"x-csrf-token":a}});if(!i.ok)throw new Error("Erreur lors du téléchargement");const l=await i.blob(),o=document.createElement("a");o.href=URL.createObjectURL(l),o.download=t,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(o.href)}catch(a){r({title:"Erreur",description:a.message,variant:"destructive"})}},Ls=async()=>{if(h.size!==0){Ke(!0);try{const s=localStorage.getItem("csrf_token")||"",t=await fetch("/api/letters/fiche-parapheur",{method:"POST",headers:{"Content-Type":"application/json","x-csrf-token":s},body:JSON.stringify({letterIds:Array.from(h)}),credentials:"include"});if(!t.ok){const l=await t.json().catch(()=>({}));throw new Error(l.error||"Erreur lors de la génération")}const a=await t.blob(),i=document.createElement("a");i.href=URL.createObjectURL(a),i.download=`fiche_parapheur_${new Date().toISOString().slice(0,10)}.pdf`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(i.href),r({title:"Fiche parapheur générée",description:`${h.size} lettre(s) incluse(s)`})}catch(s){r({title:"Erreur",description:s.message,variant:"destructive"})}finally{Ke(!1)}}},Te=async s=>{if(h.size!==0){Qe(s||"all");try{const t=localStorage.getItem("csrf_token")||"",a=await fetch("/api/letters/bordereau",{method:"POST",headers:{"Content-Type":"application/json","x-csrf-token":t},body:JSON.stringify({letterIds:Array.from(h),organism:s}),credentials:"include"});if(!a.ok){const f=await a.json().catch(()=>({}));throw new Error(f.error||"Erreur lors de la génération")}const i=await a.blob(),l=s?`_${s.toUpperCase()}`:"",o=document.createElement("a");o.href=URL.createObjectURL(i),o.download=`bordereau_envoi${l}_${new Date().toISOString().slice(0,10)}.pdf`,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(o.href),r({title:`Bordereau ${s||""} généré`})}catch(t){r({title:"Erreur",description:t.message,variant:"destructive"})}finally{Qe(null)}}},Fs=async()=>{if(!(!P||!J)){We(!0);try{const s=new FormData;s.append("signedDocument",J);const t=localStorage.getItem("csrf_token")||"",a=await fetch(`/api/letters/${P.id}/upload-signed`,{method:"POST",headers:{"x-csrf-token":t},body:s,credentials:"include"});if(!a.ok){const i=await a.json().catch(()=>({}));throw new Error(i.error||"Erreur lors de l'upload")}N.invalidateQueries({queryKey:["/api/letters"]}),r({title:"Document signé uploadé avec succès"}),le(null),W(null)}catch(s){r({title:"Erreur",description:s.message,variant:"destructive"})}finally{We(!1)}}},Is=async()=>{if(S.length!==0){Xe(!0);try{const s=new FormData;S.forEach(o=>s.append("files",o));const t=localStorage.getItem("csrf-token")||"",a=await fetch("/api/letters/bulk-upload-signed",{method:"POST",headers:{"x-csrf-token":t},body:s,credentials:"include"}),i=await a.json();if(!a.ok)throw new Error(i.error||"Erreur lors de l'upload en masse");ce(i.results||[]),N.invalidateQueries({queryKey:["/api/letters"]});const l=(i.results||[]).filter(o=>o.status==="matched").length;r({title:`${l} lettre${l!==1?"s":""} associée${l!==1?"s":""} avec succès`,description:`${i.total} fichier(s) traité(s)`})}catch(s){r({title:"Erreur",description:s.message,variant:"destructive"})}finally{Xe(!1)}}},Rs=async()=>
6{if(y){Me(!0);try{if(ie){const s=new FormData;s.append("signedDocument",ie);const t=localStorage.getItem("csrf_token")||"",a=await fetch(`/api/letters/${y.id}/upload-signed`,{method:"POST",headers:{"x-csrf-token":t},body:s,credentials:"include"});if(!a.ok){const i=await a.json().catch(()=>({}));throw new Error(i.error||"Erreur lors de l'upload")}}await w("PATCH",`/api/letters/${y.id}/sign`),N.invalidateQueries({queryKey:["/api/letters"]}),r({title:"Lettre signée avec succès"}),re(null),G(null)}catch(s){r({title:"Erreur",description:s.message,variant:"destructive"})}finally{Me(!1)}}},[os,$e]=d.useState(!1),[je,cs]=d.useState(""),{data:k,refetch:Us}=_e({queryKey:["/api/admin/settings/letter-counter"],enabled:os}),Pe=T({mutationFn:async s=>w("POST","/api/admin/settings/letter-counter",{value:s}),onSuccess:()=>{Us(),r({title:"Compteur mis à jour",description:"La prochaine lettre utilisera le nouveau numéro de séquence."}),cs("")},onError:s=>{r({title:"Erreur",description:s.message||"Impossible de mettre à jour le compteur.",variant:"destructive"})}}),[L,be]=d.useState(1),B=20,E=q.reduce((s,t)=>(s[t.key]=me.filter(a=>a.status===t.key).length,s),{}),u=me.filter(s=>{var l,o,f;const t=p?s.status===p:!0,a=Ue.toLowerCase(),i=!a||((l=s.patientName)==null?void 0:l.toLowerCase().includes(a))||((o=s.claimReference)==null?void 0:o.toLowerCase().includes(a))||((f=s.organism)==null?void 0:f.toLowerCase().includes(a))||Ie(s.letterType).toLowerCase().includes(a);return t&&i}).sort((s,t)=>new Date(t.dateGenerated).getTime()-new Date(s.dateGenerated).getTime()),De=Math.max(1,Math.ceil(u.length/B)),ms=u.slice((L-1)*B,L*B),Ee=s=>{Re(s),be(1)},Os=s=>{$s(s),be(1)},C=p?q.find(s=>
6s.key===p):null,qs=["superadmin","admin","admin_dcn_commission","admin_daji","responsable","secretaire"].includes((c==null?void 0:c.role)||""),fe=["superadmin","admin","admin_dcn_commission","admin_daji","responsable"].includes((c==null?void 0:c.role)||""),us=["superadmin","admin","admin_dcn_commission","admin_daji","responsable","secretaire","charge_dossier","dcn","daji"].includes((c==null?void 0:c.role)||""),Gs=["superadmin","admin","admin_dcn_commission","dg","secretaire"].includes((c==null?void 0:c.role)||""),Ms=["superadmin","admin","admin_dcn_commission","secretaire"].includes((c==null?void 0:c.role)||""),Bs=["superadmin","admin","admin_dcn_commission","secretaire"].includes((c==null?void 0:c.role)||""),Vs=["superadmin","admin","admin_dcn_commission","admin_daji","responsable","secretaire"].includes((c==null?void 0:c.role)||"");return e.jsxs("div",{className:"flex flex-col gap-6 p-6 max-w-7xl mx-auto",children:[e.jsxs("div",{className:"flex items-center justify-between flex-wrap gap-3",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl font-bold tracking-tight flex items-center gap-2",children:[e.jsx($,{className:"h-6 w-6 text-primary"}),"Gestion des Lettres"]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-0.5",dir:"rtl",children:"إدارة المراسلات"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("span",{className:"text-sm text-muted-foreground",children:[me.length," lettre",me.length!==1?"s":""," au total"]}),e.jsxs(n,{variant:"outline",className:"gap-2",onClick:()=>{z([]),ce(null),X(!0)},"data-testid":"button-bulk-upload-open",children:[e.jsx(Ss,{className:"h-4 w-4"}),"Téléversement en masse"]}),e.jsxs(n,{variant:"outline",className:"gap-2",onClick:()=>$e(!0),"data-testid":"button-open-counter-settings",children:[e.jsx(ut,{className:"h-4 w-4"}),"Compteur réf."]}),e.jsx(n,{variant:"outline",size:"icon",onClick:()=>Es(),"data-testid":"button-refresh-letters",children:e.jsx(Xs,{className:"h-4 w-4"})})]})]}),!ye&&(E.en_signature||0)>0&&e.jsxs("div",{className:"flex items-start gap-3 rounded-lg px-4 py-3 bg-violet-50 dark:bg-violet-950/30 border border-violet-200 dark:border-violet-800 text-violet-800 dark:text-violet-300","data-testid":"alert-letters-en-signature",children:[e.jsx(K,{className:"h-5 w-5 shrink-0 mt-0.5"}),e.jsxs("div",{children:[e.jsxs("p",{className:"font-semibold text-sm",children:[E.en_signature," lettre",(E.en_signature||0)>1?"s":""," préparée",(E.en_signature||0)>1?"s":""," et transmise",(E.en_signature||0)>1?"s":""," pour signature"]}),e.jsx("p",{className:"text-xs opacity-80 mt-0.5",children:"Ces lettres ont été préparées par la secrétaire et sont en attente de signature du Directeur Général."})]}),e.jsx(n,{size:"sm",variant:"outline",className:"ml-auto shrink-0 border-violet-300 text-violet-700 hover:bg-violet-100 dark:border-violet-700 dark:text-violet-300",onClick:()=>Ee("en_signature"),"data-testid":"button-view-en-signature",children:"Voir"})]}),ye?e.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-7 gap-3",children:q.map(s=>e.jsx(js,{className:"h-28 rounded-xl"},s.key))}):e.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-7 gap-3",children:q.map((s,t)=>{const a=s.icon,i=E[s.key]||0,l=p===s.key;return e.jsxs("button",{"data-testid":`stage-card-${s.key}`,onClick:()=>Ee(l?null:s.key),className:`
7                  relative group flex flex-col items-center text-center p-4 rounded-xl border-2 transition-all
8                  cursor-pointer select-none
9                  ${l?`${s.activeColor} border-transparent shadow-md scale-[1.03]`:`${s.color} ${s.borderColor} hover:shadow-sm hover:scale-[1.01]`}
10                `,children:[t<q.length-1&&e.jsx(vs,{className:"absolute -right-2.5 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground/40 z-10 hidden lg:block"}),e.jsx("div",{className:`rounded-lg p-2.5 mb-2 ${l?"bg-white/20":"bg-white/60 dark:bg-white/10"}`,children:e.jsx(a,{className:"h-5 w-5"})}),e.jsx("p",{className:"text-xs font-semibold leading-tight",children:s.label}),e.jsx("p",{className:`text-[10px] mt-0.5 leading-tight ${l?"opacity-80":"text-muted-foreground"}`,dir:"rtl",children:s.labelAr}),e.jsx("div",{className:"mt-2 text-2xl font-bold tabular-nums",children:i}),i>0&&!l&&e.jsx("span",{className:`absolute top-2 right-2 h-2 w-2 rounded-full ${s.dotColor}`})]},s.key)})}),C&&e.jsxs("div",{className:`flex items-center gap-3 rounded-lg px-4 py-3 ${C.color} border ${C.borderColor}`,children:[e.jsx(C.icon,{className:"h-5 w-5 shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-semibold text-sm",children:C.label}),e.jsx("p",{className:"text-xs opacity-70",children:C.desc})]}),e.jsxs(F,{variant:"secondary",className:"tabular-nums shrink-0",children:[E[p]||0," lettre",(E[p]||0)!==1?"s":""]}),e.jsx(n,{variant:"ghost",size:"icon",onClick:()=>Ee(null),className:"shrink-0",children:e.jsx(_,{className:"h-4 w-4"})})]}),!p&&e.jsxs("div",{className:"flex items-center gap-2 flex-wrap text-xs text-muted-foreground bg-muted/40 rounded-lg px-4 py-2",children:[e.jsx("span",{className:"font-medium text-foreground",children:"Toutes les étapes affichées"}),e.jsx("span",{children:"·"}),e.jsx("span",{children:"Cliquez sur une étape pour filtrer"})]}),e.jsxs(Ys,{children:[e.jsxs(Zs,{className:"pb-3 flex flex-col gap-3",children:[e.jsxs("div",{className:"flex flex-row items-center gap-3 flex-wrap",children:[e.jsx(et,{className:"text-base flex-1",children:C?C.label:"Toutes les lettres"}),e.jsxs("div",{className:"relative w-64",children:[e.jsx(st,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(xs,{placeholder:"Réf., assuré, organisme...",value:Ue,onChange:s=>Os(s.target.value),className:"pl-8","data-testid":"input-letters-search"})]})]}),p==="en_signature"&&u.length>0&&e.jsxs("div",{className:"flex items-center gap-2 flex-wrap bg-violet-50 dark:bg-violet-950/20 border border-violet-200 dark:border-violet-800 rounded-lg px-3 py-2",children:[e.jsxs(n,{variant:"ghost",size:"sm",className:"text-xs gap-1.5",onClick:()=>{const s=u.map(t=>
10t.id);h.size===s.length?ge():ds(s)},"data-testid":"button-select-all-en-signature",children:[h.size===u.length&&u.length>0?e.jsx(hs,{className:"h-4 w-4 text-violet-700"}):e.jsx(ws,{className:"h-4 w-4"}),h.size===u.length&&u.length>0?"Tout désélectionner":"Sélectionner tout"]}),h.size>0&&e.jsxs(e.Fragment,{children:[e.jsxs(F,{variant:"secondary",className:"text-xs",children:[h.size," sélectionnée(s)"]}),e.jsxs(n,{size:"sm",variant:"outline",className:"text-xs gap-1.5 border-violet-300 text-violet-800 dark:border-violet-700 dark:text-violet-300",onClick:Ls,disabled:He,"data-testid":"button-generate-parapheur",children:[e.jsx(tt,{className:"h-3.5 w-3.5"}),He?"Génération…":"Fiche Parapheur"]}),e.jsxs(n,{variant:"ghost",size:"sm",className:"text-xs",onClick:ge,"data-testid":"button-clear-selection-signature",children:[e.jsx(_,{className:"h-3.5 w-3.5 mr-1"}),"Effacer"]})]})]}),p==="signee"&&u.length>0&&e.jsxs("div",{className:"flex items-center gap-2 flex-wrap bg-indigo-50 dark:bg-indigo-950/20 border border-indigo-200 dark:border-indigo-800 rounded-lg px-3 py-2",children:[e.jsxs(n,{variant:"ghost",size:"sm",className:"text-xs gap-1.5",onClick:()=>{const s=u.map(t=>t.id);h.size===s.length?ge():ds(s)},"data-testid":"button-select-all-signee",children:[h.size===u.length&&u.length>0?e.jsx(hs,{className:"h-4 w-4 text-indigo-700"}):e.jsx(ws,{className:"h-4 w-4"}),h.size===u.length&&u.length>0?"Tout désélectionner":"Sélectionner tout"]}),h.size>0&&e.jsxs(e.Fragment,{children:[e.jsxs(F,{variant:"secondary",className:"text-xs",children:[h.size," sélectionnée(s)"]}),e.jsxs(n,{size:"sm",variant:"outline",className:"text-xs gap-1.5 border-indigo-300 text-indigo-800 dark:border-indigo-700 dark:text-indigo-300",onClick:()=>Te("CNOPS"),disabled:!!M,"data-testid":"button-bordereau-cnops",children:[e.jsx(Fe,{className:"h-3.5 w-3.5"}),M==="CNOPS"?"Génération…":"Bordereau CNOPS"]}),e.jsxs(n,{size:"sm",variant:"outline",className:"text-xs gap-1.5 border-indigo-300 text-indigo-800 dark:border-indigo-700 dark:text-indigo-300",onClick:()=>Te("CNSS"),disabled:!!M,"data-testid":"button-bordereau-cnss",children:[e.jsx(Fe,{className:"h-3.5 w-3.5"}),M==="CNSS"?"Génération…":"Bordereau CNSS"]}),e.jsxs(n,{size:"sm",variant:"outline",className:"text-xs gap-1.5",onClick:()=>Te(void 0),disabled:!!M,"data-testid":"button-bordereau-all",children:[e.jsx(Fe,{className:"h-3.5 w-3.5"}),M==="all"?"Génération…":"Bordereau complet"]}),e.jsxs(n,{variant:"ghost",size:"sm",className:"text-xs",onClick:ge,"data-testid":"button-clear-selection-signee",children:[e.jsx(_,{className:"h-3.5 w-3.5 mr-1"}),"Effacer"]})]})]})]}),e.jsxs(at,{className:"p-0",children:[ye?e.jsx("div",{className:"p-6 space-y-3",children:[1,2,3].map(s=>e.jsx(js,{className:"h-12 w-full"},s))}):ms.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-16 text-center text-muted-foreground gap-3",children:[e.jsx($,{className:"h-10 w-10 opacity-30"}),e.jsxs("p",{className:"text-sm",children:["Aucune lettre",p?` dans l'étape « ${C==null?void 0:C.label} »`:""]})]}):e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(bs,{children:[e.jsx(fs,{children:e.jsxs(Ne,{children:[(p==="en_signature"||p==="signee")&&e.jsx(g,{className:"w-8"}),e.jsx(g,{className:"whitespace-nowrap",children:"Réf. dossier"}),e.jsx(g,{className:"whitespace-nowrap",children:"Assuré"}),e.jsx(g,{className:"whitespace-nowrap",children:"Organisme"}),e.jsx(g,{className:"whitespace-nowrap",children:"Date soumission"}),e.jsx(g,{className:"whitespace-nowrap",children:"Type de lettre"}),e.jsx(g,{className:"whitespace-nowrap",children:"Étape"}),ue&&e.jsx(g,{className:"whitespace-nowrap",children:"Assigné à"}),e.jsx(g,{className:"whitespace-nowrap",children:"Dernière mise à jour"}),e.jsx(g,{className:"text-right whitespace-nowrap",children:"Actions"})]})}),e.jsx(Ns,{children:ms.map(s=>{const t=q.find(l=>l.key===s.status),a=(t==null?void 0:t.icon)||$,i=p==="en_signature"||p==="signee";return e.jsxs(Ne,{className:`group${h.has(s.id)?" bg-accent/30":""}`,children:[i&&e.jsx(j,{className:"w-8 pr-0",children:e.jsx(lt,{checked:h.has(s.id),onCheckedChange:()=>As(s.id),"aria-label":`Sélectionner lettre ${s.id}`,"data-testid":`checkbox-letter-${s.id}`})}),e.jsx(j,{children:e.jsx("span",{className:"font-mono text-xs font-semibold text-primary",children:s.claimReference||"—"})}),e.jsx(j,{children:e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(ks,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}),e.jsx("span",{className:"text-sm",children:s.patientName||"—"})]})}),e.jsx(j,{children:e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(ve,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}),e.jsx("span",{className:"text-sm truncate max-w-28",children:s.organism||"—"})]})}),e.jsx(j,{children:e.jsxs("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground whitespace-nowrap",children:[e.jsx(xt,{className:"h-3.5 w-3.5 shrink-0"}),D(s.submissionDate)]})}),e.jsx(j,{children:e.jsx("span",{className:`inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium ${bt(s.letterType)}`,children:Ie(s.letterType)})}),e.jsx(j,{children:t?e.jsxs("span",{className:`inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium border ${t.color} ${t.borderColor}`,children:[e.jsx(a,{className:"h-3 w-3 shrink-0"}),t.label]}):e.jsx("span",{className:"text-xs text-muted-foreground",children:s.status})}),ue&&e.jsx(j,{children:s.assignedToName?e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(Ae,{className:"h-3.5 w-3.5 text-blue-500 shrink-0"}),e.jsx("span",{className:"text-xs font-medium text-blue-700 dark:text-blue-300 whitespace-nowrap",children:s.assignedToName})]}):e.jsx("span",{className:"text-xs text-muted-foreground italic",children:"Non assigné"})}),e.jsx(j,{children:e.jsx("div",{className:"text-xs text-muted-foreground whitespace-nowrap",children:s.dateSigned?e.jsxs("span",{children:["Signé ",D(s.dateSigned)]}):s.dateValidated?e.jsxs("span",{children:["Validé ",D(s.dateValidated)]}):s.dateGenerated?e.jsxs("span",{children:["Généré ",D(s.dateGenerated)]}):"—"})}),e.jsx(j,{className:"text-right",children:e.jsxs("div",{className:"flex items-center gap-1 justify-end flex-wrap",children:[e.jsxs(Y,{children:[e.jsx(Z,{asChild:!0,children:e.jsx(n,{variant:"ghost",size:"icon",onClick:()=>Oe(s),"data-testid":`button-preview-${s.id}`,children:e.jsx(nt,{className:"h-3.5 w-3.5"})})}),e.jsx(ee,{children:"Aperçu"})]}),e.jsxs(dt,{children:[e.jsx(ot,{asChild:!0,children:e.jsxs(n,{variant:"outline",size:"sm",disabled:Be===s.id,"data-testid":`button-download-${s.id}`,className:"text-xs gap-1 whitespace-nowrap",children:[e.jsx(se,{className:"h-3.5 w-3.5"}),Be===s.id?"...":"Word / PDF",e.jsx(ht,{className:"h-3 w-3 opacity-60"})]})}),e.jsxs(ct,{align:"end",children:[e.jsxs(te,{onClick:()=>ss(s,"word"),"data-testid":`button-download-word-${s.id}`,children:[e.jsx(se,{className:"h-4 w-4 mr-2"}),"Télécharger en Word (.docx)"]}),e.jsxs(te,{onClick:()=>ss(s,"pdf"),"data-testid":`button-download-pdf-${s.id}`,children:[e.jsx(se,{className:"h-4 w-4 mr-2"}),"Télécharger en PDF"]}),s.commissionType&&(()=>{const l={ct:`/api/export/ct-decision/${s.claimId}
10/word`,medecin_expert:`/api/export/expert-decision/${s.claimId}/word`,rcp:`/api/export/rcp-decision/${s.claimId}/word`},o={ct:"CT",medecin_expert:"Médecin Expert",rcp:"RCP"},f=l[s.commissionType];return f?e.jsxs(e.Fragment,{children:[e.jsx(Le,{}),e.jsxs(te,{onClick:()=>zs(f,`decision_${s.commissionType}_${s.claimReference||s.claimId}.docx`),"data-testid":`button-download-decision-word-${s.id}`,children:[e.jsx(se,{className:"h-4 w-4 mr-2"}),"Décision ",o[s.commissionType]||s.commissionType," — Word"]})]}):null})(),e.jsx(Le,{}),e.jsxs(te,{onClick:()=>window.open(`/api/admin/export/ct-decision/${s.claimId}/pdf`,"_blank"),"data-testid":`button-download-ct-decision-${s.id}`,children:[e.jsx(se,{className:"h-4 w-4 mr-2"}),"Décision de la Commission (PDF)"]}),s.signedDocumentPath&&e.jsxs(e.Fragment,{children:[e.jsx(Le,{}),e.jsxs(te,{onClick:()=>window.open(`/api/letters/${s.id}/signed-document`,"_blank"),"data-testid":`button-download-signed-${s.id}`,children:[e.jsx(A,{className:"h-4 w-4 mr-2"}),"Télécharger la lettre uploadée"]})]})]})]}),ue&&e.jsxs(Y,{children:[e.jsx(Z,{asChild:!0,children:e.jsx(n,{variant:"ghost",size:"icon",onClick:()=>{de(s),_s()},"data-testid":`button-assign-${s.id}`,className:s.assignedToUserId?"text-blue-600":"",children:e.jsx(Ae,{className:"h-3.5 w-3.5"})})}),e.jsx(ee,{children:s.assignedToUserId?`Réassigner (${s.assignedToName})`:"Assigner à un secrétaire"})]}),qs&&(s.status==="brouillon"||s.status==="en_validation")&&e.jsxs(Y,{children:[e.jsx(Z,{asChild:!0,children:e.jsx(n,{variant:"ghost",size:"icon",onClick:()=>{Q(s),qe(s.content||"")},"data-testid":`button-edit-${s.id}`,children:e.jsx(K,{className:"h-3.5 w-3.5"})})}),e.jsx(ee,{children:"Éditer le contenu"})]}),s.status==="brouillon"&&!us&&e.jsxs(n,{size:"sm",variant:"outline",onClick:()=>as.mutate(s.id),disabled:as.isPending,"data-testid":`button-submit-${s.id}`,className:"text-xs gap-1 whitespace-nowrap",children:[e.jsx(pt,{className:"h-3 w-3"}),"Soumettre"]}),fe&&s.status==="brouillon"&&e.jsxs(n,{size:"sm",variant:"outline",onClick:()=>xe.mutate(s.id),disabled:xe.isPending,"data-testid":`button-validate-brouillon-${s.id}`,className:"text-xs gap-1 whitespace-nowrap text-green-700 border-green-300",children:[e.jsx(ne,{className:"h-3 w-3"}),"Valider"]}),us&&s.status==="brouillon"&&e.jsxs(Y,{children:[e.jsx(Z,{asChild:!0,children:e.jsxs(n,{size:"sm",variant:"outline",onClick:()=>ls.mutate(s.id),disabled:ls.isPending,"data-testid":`button-mark-pret-${s.id}`,className:"text-xs gap-1 whitespace-nowrap text-violet-700 border-violet-300",children:[e.jsx(K,{className:"h-3 w-3"}),"Prêt"]})}),e.jsx(ee,{children:"Marquer prête pour signature (brouillon → en_signature)"})]}),fe&&s.status==="en_validation"&&e.jsxs(n,{size:"sm",variant:"outline",onClick:()=>xe.mutate(s.id),disabled:xe.isPending,"data-testid":`button-validate-${s.id}`,className:"text-xs gap-1 whitespace-nowrap",children:[e.jsx(ne,{className:"h-3 w-3"}),"Valider"]}),Vs&&s.status==="validee"&&e.jsxs(n,{size:"sm",variant:"outline",onClick:()=>ns.mutate(s.id),disabled:ns.isPending,"data-testid":`button-send-dg-${s.id}`,className:"text-xs gap-1 whitespace-nowrap",children:[e.jsx(K,{className:"h-3 w-3"}),"Envoyer au DG"]}),Gs&&s.status==="en_signature"&&e.jsxs(n,{size:"sm",variant:"outline",onClick:()=>{re(s),G(null)},"data-testid":`button-sign-${s.id}`,className:"text-xs gap-1 whitespace-nowrap",children:[e.jsx(ae,{className:"h-3 w-3"}),"Signer"]}),(s.status==="en_signature"||s.status==="signee")&&fe&&e.jsxs(Y,{children:[e.jsx(Z,{asChild:!0,children:e.jsxs(n,{size:"sm",variant:"outline",onClick:()=>{le(s),W(null)},"data-testid":`button-upload-signed-${s.id}`,className:"text-xs gap-1 whitespace-nowrap text-indigo-700 border-indigo-300",children:[e.jsx(A,{className:"h-3 w-3"}),s.signedDocumentPath?"Re-uploader":"Uploader signé"]})}),e.jsx(ee,{children:"Joindre le document signé scanné"})]}),Ms&&s.status==="signee"&&e.jsxs(n,{size:"sm",variant:"outline",onClick:()=>rs.mutate(s.id),disabled:rs.isPending,"data-testid":`button-send-org-${s.id}`,className:"text-xs gap-1 whitespace-nowrap",children:[e.jsx(ve,{className:"h-3 w-3"}),"Envoyer organisme"]}),Bs&&s.status==="envoyee"&&e.jsxs(n,{size:"sm",variant:"outline",onClick:()=>is.mutate(s.id),disabled:is.isPending,"data-testid":`button-send-assure-${s.id}`,className:"text-xs gap-1 whitespace-nowrap",children:[e.jsx(Ts,{className:"h-3 w-3"}),"Envoyer assuré"]}),s.status==="envoye_assure"&&e.jsx("span",{className:"text-xs text-muted-foreground px-2",children:"Terminé"})]})})]},s.id)})})]})}),u.length>B&&e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-t","data-testid":"pagination-letters",children:[e.jsxs("span",{className:"text-xs text-muted-foreground",children:["Affichage ",Math.min((L-1)*B+1,u.length),"–",Math.min(L*B,u.length)," sur ",u.length," lettre",u.length>
101?"s":""]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsxs(n,{variant:"outline",size:"sm",onClick:()=>be(s=>Math.max(1,s-1)),disabled:L===1,"data-testid":"button-prev-page",children:[e.jsx(gt,{className:"h-4 w-4"}),"Préc."]}),e.jsxs("span",{className:"text-xs px-2",children:["Page ",L,"/",De]}),e.jsxs(n,{variant:"outline",size:"sm",onClick:()=>be(s=>Math.min(De,s+1)),disabled:L===De,"data-testid":"button-next-page",children:["Suiv.",e.jsx(vs,{className:"h-4 w-4"})]})]})]})]})]}),e.jsx(I,{open:!!m,onOpenChange:s=>!s&&Oe(null),children:e.jsxs(R,{className:"max-w-2xl max-h-[85vh] overflow-y-auto",children:[e.jsxs(U,{children:[e.jsxs(O,{className:"flex items-center gap-2",children:[e.jsx($,{className:"h-5 w-5"}),m&&Ie(m.letterType)]}),e.jsxs(V,{children:[m==null?void 0:m.claimReference," · ",m==null?void 0:m.patientName]})]}),m&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-3 text-sm",children:[e.jsxs("div",{className:"flex flex-col gap-0.5",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"Référence"}),e.jsx("span",{className:"font-mono font-semibold text-primary",children:m.claimReference||"—"})]}),e.jsxs("div",{className:"flex flex-col gap-0.5",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"Assuré"}),e.jsx("span",{children:m.patientName||"—"})]}),e.jsxs("div",{className:"flex flex-col gap-0.5",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"Organisme"}),e.jsx("span",{children:m.organism||"—"})]}),e.jsxs("div",{className:"flex flex-col gap-0.5",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"Date soumission"}),e.jsx("span",{children:D(m.submissionDate)})]})]}),(()=>{const s=q.find(a=>a.key===m.status),t=(s==null?void 0:s.icon)||$;return s?e.jsxs("span",{className:`inline-flex items-center gap-1.5 px-3 py-1 rounded-full text-sm font-medium border ${s.color} ${s.borderColor}`,children:[e.jsx(t,{className:"h-4 w-4"}),s.label]}):null})(),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[m.dateGenerated&&e.jsxs("div",{className:"flex items-center gap-2 bg-muted/50 rounded-md p-2",children:[e.jsx($,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}),e.jsxs("span",{children:["Générée le ",D(m.dateGenerated)]})]}),m.dateValidated&&e.jsxs("div",{className:"flex items-center gap-2 bg-green-50 dark:bg-green-950/20 rounded-md p-2",children:[e.jsx(ne,{className:"h-3.5 w-3.5 text-green-600 shrink-0"}),e.jsxs("span",{children:["Validée le ",D(m.dateValidated)]})]}),m.dateSigned&&e.jsxs("div",{className:"flex items-center gap-2 bg-indigo-50 dark:bg-indigo-950/20 rounded-md p-2",children:[e.jsx(ae,{className:"h-3.5 w-3.5 text-indigo-600 shrink-0"}),e.jsxs("span",{children:["Signée le ",D(m.dateSigned)]})]}),m.dateSent&&e.jsxs("div",{className:"flex items-center gap-2 bg-teal-50 dark:bg-teal-950/20 rounded-md p-2",children:[e.jsx(ve,{className:"h-3.5 w-3.5 text-teal-600 shrink-0"}),e.jsxs("span",{children:["Envoyée organisme le ",D(m.dateSent)]})]})]}),e.jsxs("div",{className:"border rounded-lg p-4 bg-muted/30 min-h-32",children:[e.jsx("p",{className:"text-xs font-medium mb-2 text-muted-foreground uppercase tracking-wide",children:"Contenu de la lettre"}),e.jsx("div",{className:"text-sm whitespace-pre-wrap leading-relaxed",children:m.content||"Contenu non disponible"})]})]})]})}),e.jsx(I,{open:!!x,onOpenChange:s=>!s&&Q(null),children:e.jsxs(R,{className:"max-w-2xl max-h-[85vh] overflow-y-auto",children:[e.jsxs(U,{children:[e.jsxs(O,{className:"flex items-center gap-2",children:[e.jsx(K,{className:"h-5 w-5"}),"Éditer le contenu"]}),e.jsxs(V,{children:[x==null?void 0:x.claimReference," · ",x==null?void 0:x.patientName]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-start gap-2 text-xs bg-amber-50 dark:bg-amber-950/20 border border-amber-200 dark:border-amber-800 rounded-md p-3",children:[e.jsx(ps,{className:"h-4 w-4 text-amber-600 shrink-0 mt-0.5"}),e.jsx("span",{className:"text-amber-800 dark:text-amber-300",children:"Seules les lettres en brouillon ou en validation peuvent être modifiées."})]}),e.jsx(it,{value:we,onChange:s=>qe(s.target.value),className:"min-h-72 font-mono text-sm","data-testid":"textarea-edit-content"})]}
10),e.jsxs(H,{children:[e.jsx(n,{variant:"outline",onClick:()=>Q(null),children:"Annuler"}),e.jsx(n,{variant:"outline",onClick:()=>x&&Se.mutate({id:x.id,content:we}),disabled:Se.isPending||he.isPending,"data-testid":"button-save-content",children:"Sauvegarder"}),fe&&((x==null?void 0:x.status)==="brouillon"||(x==null?void 0:x.status)==="en_validation")&&e.jsxs(n,{onClick:()=>x&&he.mutate({id:x.id,content:we}),disabled:he.isPending||Se.isPending,"data-testid":"button-save-and-validate",children:[e.jsx(ne,{className:"h-4 w-4 mr-1.5"}),he.isPending?"En cours…":"Sauvegarder & Valider"]})]})]})}),e.jsx(I,{open:!!y,onOpenChange:s=>{s||(re(null),G(null))},children:e.jsxs(R,{className:"max-w-lg",children:[e.jsxs(U,{children:[e.jsxs(O,{className:"flex items-center gap-2",children:[e.jsx(ae,{className:"h-5 w-5"}),"Signer la lettre"]}),e.jsxs(V,{children:[y==null?void 0:y.claimReference," · ",y==null?void 0:y.patientName]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Vous pouvez optionnellement joindre le document signé (PDF, Word…)."}),e.jsxs("div",{className:"border-2 border-dashed rounded-lg p-6 text-center cursor-pointer hover-elevate transition-colors",onClick:()=>{var s;return(s=Ye.current)==null?void 0:s.click()},children:[e.jsx("input",{ref:Ye,type:"file",accept:".pdf,.doc,.docx,.png,.jpg",className:"hidden",onChange:s=>{var t;return G(((t=s.target.files)==null?void 0:t[0])||null)},"data-testid":"input-sign-file"}),ie?e.jsxs("div",{className:"flex items-center justify-center gap-2 text-sm",children:[e.jsx($,{className:"h-4 w-4 text-primary"}),e.jsx("span",{className:"font-medium",children:ie.name}),e.jsx(n,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:s=>{s.stopPropagation(),G(null)},children:e.jsx(_,{className:"h-3 w-3"})})]}):e.jsxs("div",{className:"flex flex-col items-center gap-2 text-muted-foreground",children:[e.jsx(A,{className:"h-8 w-8 opacity-40"}),e.jsx("p",{className:"text-sm",children:"Cliquez pour joindre le document signé"}),e.jsx("p",{className:"text-xs",children:"PDF, Word, PNG, JPG"})]})]})]}
10),e.jsxs(H,{children:[e.jsx(n,{variant:"outline",onClick:()=>{re(null),G(null)},children:"Annuler"}),e.jsxs(n,{onClick:Rs,disabled:Ge,"data-testid":"button-confirm-sign",children:[e.jsx(ae,{className:"h-4 w-4 mr-1.5"}),Ge?"En cours…":"Confirmer la signature"]})]})]})}),e.jsx(I,{open:!!P,onOpenChange:s=>!s&&le(null),children:e.jsxs(R,{className:"max-w-md",children:[e.jsx(U,{children:e.jsxs(O,{className:"flex items-center gap-2",children:[e.jsx(A,{className:"h-5 w-5 text-indigo-600"}),"Joindre le document signé"]})}),P&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"bg-muted/40 rounded-lg p-3 text-sm",children:[e.jsx("p",{className:"font-medium",children:P.claimReference||P.id}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-0.5",children:[P.patientName," — ",P.organism]})]}),e.jsxs("div",{className:"border-2 border-dashed rounded-lg p-6 text-center cursor-pointer hover-elevate",onClick:()=>{var s;return(s=Ze.current)==null?void 0:s.click()},children:[e.jsx("input",{ref:Ze,type:"file",accept:".pdf,.doc,.docx,.png,.jpg",className:"hidden",onChange:s=>{var t;return W(((t=s.target.files)==null?void 0:t[0])||null)},"data-testid":"input-upload-signed-file"}),J?e.jsxs("div",{className:"flex items-center justify-center gap-2 text-sm",children:[e.jsx($,{className:"h-4 w-4 text-primary"}),e.jsx("span",{className:"font-medium",children:J.name}),e.jsx(n,{variant:"ghost",size:"icon",onClick:s=>{s.stopPropagation(),W(null)},children:e.jsx(_,{className:"h-3 w-3"})})]}):e.jsxs("div",{className:"flex flex-col items-center gap-2 text-muted-foreground",children:[e.jsx(A,{className:"h-8 w-8 opacity-40"}),e.jsx("p",{className:"text-sm",children:"Cliquez pour sélectionner le document scanné"}),e.jsx("p",{className:"text-xs",children:"PDF, Word, PNG, JPG"})]})]}),P.signedDocumentPath&&e.jsxs("p",{className:"text-xs text-amber-600 dark:text-amber-400 flex items-center gap-1",children:[e.jsx(ps,{className:"h-3.5 w-3.5 shrink-0"}),"Un document signé existe déjà. Il sera remplacé."]})]}
10),e.jsxs(H,{children:[e.jsx(n,{variant:"outline",onClick:()=>{le(null),W(null)},children:"Annuler"}),e.jsxs(n,{onClick:Fs,disabled:Je||!J,"data-testid":"button-confirm-upload-signed",children:[e.jsx(A,{className:"h-4 w-4 mr-1.5"}),Je?"Upload en cours…":"Confirmer l'upload"]})]})]})}),e.jsx(I,{open:!!v,onOpenChange:s=>!s&&de(null),children:e.jsxs(R,{className:"max-w-lg",children:[e.jsxs(U,{children:[e.jsxs(O,{className:"flex items-center gap-2",children:[e.jsx(gs,{className:"h-5 w-5 text-blue-600"}),"Assigner la lettre à un secrétaire"]}),e.jsx(V,{children:"Choisissez un secrétaire pour préparer cette lettre. Le nombre indiqué est la charge actuelle (lettres en cours)."})]}),v&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"bg-muted/40 rounded-lg p-3 text-sm",children:[e.jsx("p",{className:"font-semibold",children:v.claimReference||v.id}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-0.5",children:[v.patientName," — ",v.organism]}),v.assignedToName&&e.jsxs("p",{className:"text-blue-700 dark:text-blue-300 text-xs mt-1 flex items-center gap-1",children:[e.jsx(Ae,{className:"h-3.5 w-3.5 shrink-0"}),"Actuellement assigné à : ",e.jsx("strong",{children:v.assignedToName})]})]}),ts.length===0?e.jsxs("div",{className:"text-center py-6 text-muted-foreground",children:[e.jsx(gs,{className:"h-8 w-8 mx-auto opacity-30 mb-2"}),e.jsx("p",{className:"text-sm",children:"Aucun secrétaire trouvé dans le système."}),e.jsx("p",{className:"text-xs mt-1",children:`Créez d'abord des utilisateurs avec le profil "Secrétaire".`})]}):e.jsx("div",{className:"space-y-2 max-h-72 overflow-y-auto",children:ts.sort((s,t)=>s.assignedCount-t.assignedCount).map(s=>{const t=v.assignedToUserId===s.id,a=s.assignedCount===0?"text-green-700 dark:text-green-400":s.assignedCount<3?"text-amber-700 dark:text-amber-400":"text-red-700 dark:text-red-400";return e.jsxs("button",{onClick:()=>pe.mutate({letterId:v.id,userId:s.id}),disabled:pe.isPending,"data-testid":`button-assign-to-${s.id}`,className:`w-full flex items-center justify-between rounded-lg px-4 py-3 text-left hover-elevate transition-colors border ${t?"border-blue-400 bg-blue-50 dark:bg-blue-950/30":"border-border bg-muted/20"}`,children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"h-8 w-8 rounded-full bg-blue-100 dark:bg-blue-900/40 flex items-center justify-center shrink-0",children:e.jsx(ks,{className:"h-4 w-4 text-blue-600 dark:text-blue-400"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:s.name}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s.username})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[t&&e.jsx("span",{className:"text-xs text-blue-600 dark:text-blue-400 font-medium",children:"Actuel"}),e.jsxs("span",{className:`text-xs font-semibold tabular-nums ${a}`,children:[s.assignedCount," en cours"]})]})]},s.id)})}),v.assignedToUserId&&e.jsx("div",{className:"pt-1 border-t",children:e.jsxs(n,{variant:"outline",size:"sm",className:"text-xs text-muted-foreground gap-1",onClick:()=>pe.mutate({letterId:v.id,userId:null}),disabled:pe.isPending,"data-testid":"button-unassign-letter",children:[e.jsx(_,{className:"h-3.5 w-3.5"}),"Retirer l'assignation"]})})]}),e.jsx(H,{children:e.jsx(n,{variant:"outline",onClick:()=>de(null),children:"Fermer"})})]})}),e.jsx(I,{open:Ps,onOpenChange:s=>{!s&&!oe&&X(!1)},children:e.jsxs(R,{className:"max-w-2xl max-h-[90vh] overflow-y-auto","data-testid":"dialog-bulk-upload",children:[e.jsxs(U,{children:[e.jsxs(O,{className:"flex items-center gap-2",children:[e.jsx(Ss,{className:"h-5 w-5 text-primary"}),"Téléversement en masse de lettres signées"]}),e.jsx(V,{children:"Déposez vos fichiers — le numéro de réclamation est détecté automatiquement depuis le nom du fichier."})]}),b?e.jsxs("div",{className:"space-y-4",children:[b.filter(s=>s.status==="matched").length>0&&e.jsxs("div",{className:"flex items-center gap-3 rounded-md bg-green-500/10 border border-green-500/30 px-4 py-3 text-sm text-green-800 dark:text-green-300",children:[e.jsx(ze,{className:"h-4 w-4 shrink-0"}),e.jsxs("p",{className:"flex-1",children:[e.jsxs("strong",{children:[b.filter(s=>s.status==="matched").length," lettre",b.filter(s=>s.status==="matched").length>
101?"s":""]})," associée",b.filter(s=>s.status==="matched").length>1?"s":"",". Cliquez sur ",e.jsx("strong",{children:"« Voir les lettres signées »"})," pour les retrouver dans l'onglet ",e.jsx("strong",{children:"Signée"}),"."]})]}),e.jsx("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-4",children:[{label:"Total",value:b.length,color:"bg-muted"},{label:"Associés",value:b.filter(s=>s.status==="matched").length,color:"bg-green-500/10 text-green-700 dark:text-green-400"},{label:"Déjà signés",value:b.filter(s=>s.status==="already_signed").length,color:"bg-blue-500/10 text-blue-700 dark:text-blue-400"},{label:"Non trouvés",value:b.filter(s=>s.status==="unmatched"||s.status==="error").length,color:"bg-amber-500/10 text-amber-700 dark:text-amber-400"}].map(({label:s,value:t,color:a})=>e.jsxs("div",{className:`rounded-md p-3 text-center ${a}`,children:[e.jsx("p",{className:"text-2xl font-bold",children:t}),e.jsx("p",{className:"text-xs font-medium mt-0.5",children:s})]},s))}),e.jsx("div",{className:"rounded-md border overflow-hidden",children:e.jsxs(bs,{children:[e.jsx(fs,{children:e.jsxs(Ne,{children:[e.jsx(g,{className:"w-8"}),e.jsx(g,{children:"Fichier"}),e.jsx(g,{children:"N° Dossier détecté"}),e.jsx(g,{children:"Statut"})]})}),e.jsx(Ns,{children:b.map((s,t)=>e.jsxs(Ne,{children:[e.jsxs(j,{children:[s.status==="matched"&&e.jsx(ze,{className:"h-4 w-4 text-green-600"}),s.status==="already_signed"&&e.jsx(Cs,{className:"h-4 w-4 text-blue-500"}),(s.status==="unmatched"||s.status==="error")&&e.jsx(rt,{className:"h-4 w-4 text-amber-500"})]}),e.jsx(j,{className:"font-mono text-xs max-w-[200px] truncate",title:s.filename,children:s.filename}),e.jsx(j,{className:"font-mono text-xs",children:s.claimNumber??e.jsx("span",{className:"text-muted-foreground italic",children:"Non détecté"})}),e.jsxs(j,{children:[s.status==="matched"&&e.jsx(F,{variant:"outline",className:"text-xs bg-green-500/10 text-green-700 border-green-500/30",children:"Associé"}),s.status==="already_signed"&&e.jsx(F,{variant:"outline",className:"text-xs bg-blue-500/10 text-blue-700 border-blue-500/30",children:"Déjà signé"}),s.status==="unmatched"&&e.jsx(F,{variant:"outline",className:"text-xs bg-amber-500/10 text-amber-700 border-amber-500/30",children:s.error||"Non trouvé"}),s.status==="error"&&e.jsx(F,{variant:"outline",className:"text-xs bg-red-500/10 text-red-700 border-red-500/30",children:"Erreur"})]})]},t))})]})})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:`border-2 border-dashed rounded-lg p-8 text-center cursor-pointer transition-colors ${Ds?"border-primary bg-primary/5":"border-border hover:border-primary/50"}`,onDragOver:s=>{s.preventDefault(),Ce(!0)},onDragLeave:()=>Ce(!1),onDrop:s=>{s.preventDefault(),Ce(!1);const t=Array.from(s.dataTransfer.files);z(a=>{const i=new Set(a.map(l=>l.name));return[...a,...t.filter(l=>!i.has(l.name))]})},onClick:()=>{var s;return(s=es.current)==null?void 0:s.click()},"data-testid":"dropzone-bulk",children:[e.jsx(A,{className:"h-10 w-10 mx-auto mb-3 text-muted-foreground"}),e.jsx("p",{className:"text-sm font-medium mb-1",children:"Glissez-déposez vos fichiers ici"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"ou cliquez pour sélectionner (PDF, Word, images — jusqu'à 100 fichiers)"}),e.jsx("input",{ref:es,type:"file",multiple:!0,className:"hidden",accept:".pdf,.doc,.docx,.jpg,.jpeg,.png",onChange:s=>{const t=Array.from(s.target.files||[]);z(a=>{const i=new Set(a.map(l=>l.name));return[...a,...t.filter(l=>!i.has(l.name))]}),s.target.value=""}})]}),e.jsxs("div",{className:"bg-muted/50 rounded-md p-3 text-xs space-y-1 text-muted-foreground",children:[e.jsxs("p",{className:"font-medium text-foreground flex items-center gap-1",children:[e.jsx(Cs,{className:"h-3.5 w-3.5"})," Formats de nommage reconnus"]}),e.jsxs("p",{children:["• ",e.jsx("code",{className:"bg-background px-1 rounded",children:"BO-20260402-00011.pdf"})," → Nouveau format"]}),e.jsxs("p",{children:["• ",e.jsx("code",{className:"bg-background px-1 rounded",children:"6310437.pdf"})," ou ",e.jsx("code",{className:"bg-background px-1 rounded",children:"lettre_6310437_signe.pdf"})," → Numéro de dossier"]}),e.jsx("p",{children:"• Le numéro peut apparaître n'importe où dans le nom du fichier"})]}),S.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("p",{className:"text-sm font-medium",children:[S.length," fichier",S.length!==1?"s":""," sélectionné",S.length!==1?"s":""]}),e.jsxs(n,{variant:"ghost",size:"sm",onClick:()=>z([]),className:"text-destructive",children:[e.jsx(_,{className:"h-3.5 w-3.5 mr-1"}),"Tout effacer"]})]}),e.jsx("div",{className:"max-h-48 overflow-y-auto space-y-1 rounded-md border p-2",children:S.map((s,t)=>e.jsxs("div",{className:"flex items-center justify-between gap-2 text-xs py-1 px-2 rounded hover-elevate",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx($,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}),e.jsx("span",{className:"truncate font-mono",children:s.name})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[e.jsxs("span",{className:"text-muted-foreground",children:[(s.size/1024).toFixed(0)," Ko"]}),e.jsx("button",{onClick:()=>z(a=>a.filter((i,l)=>l!==t)),className:"text-muted-foreground hover:text-destructive transition-colors",children:e.jsx(_,{className:"h-3.5 w-3.5"})})]})]},t))})]})]}),e.jsx(H,{children:b?e.jsxs(e.Fragment,{children:[e.jsx(n,{variant:"outline",onClick:()=>{z([]),ce(null)},"data-testid":"button-bulk-new",children:"Nouvel import"}),b&&b.filter(s=>s.status==="matched").length>0&&e.jsxs(n,{className:"gap-2 bg-green-600 text-white",onClick:()=>{X(!1),z([]),ce(null),Re("signee")},"data-testid":"button-bulk-goto-signee",children:[e.jsx(ze,{className:"h-4 w-4"}),"Voir les lettres signées"]}),e.jsx(n,{variant:"outline",onClick:()=>X(!1),children:"Fermer"})]}):e.jsxs(e.Fragment,{children:[e.jsx(n,{variant:"outline",onClick:()=>X(!1),disabled:oe,children:"Annuler"}),e.jsx(n,{onClick:Is,disabled:S.length===0||oe,className:"gap-2","data-testid":"button-bulk-upload-confirm",children:oe?e.jsxs(e.Fragment,{children:[e.jsx(ys,{className:"h-4 w-4 animate-spin"})," Traitement en cours…"]}):e.jsxs(e.Fragment,{children:[e.jsx(A,{className:"h-4 w-4"})," Lancer l'association (",S.length," fichier",S.length!==1?"s":"",")"]})})]})})]})}),e.jsx(I,{open:os,onOpenChange:$e,children:e.jsxs(R,{className:"sm:max-w-md","data-testid":"dialog-counter-sett
10ings",children:[e.jsxs(U,{children:[e.jsxs(O,{className:"flex items-center gap-2",children:[e.jsx(jt,{className:"h-5 w-5 text-primary"}),"Compteur de référence des lettres"]}),e.jsxs(V,{children:["Configurez le numéro de séquence minimum pour les prochaines lettres générées. Le format est : ",e.jsx("span",{className:"font-mono font-semibold",children:"N/ REF XXXX/DAJI/YYYY"})]})]}),e.jsxs("div",{className:"space-y-4 py-2",children:[e.jsxs("div",{className:"rounded-lg bg-muted/50 px-4 py-3 space-y-2 text-sm",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Référence max. utilisée :"}),e.jsx("span",{className:"font-mono font-semibold","data-testid":"text-counter-max-used",children:k?k.maxUsed:"—"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Override admin :"}),e.jsx("span",{className:"font-mono font-semibold","data-testid":"text-counter-override",children:k?k.override!==null?k.override:e.jsx("span",{className:"text-muted-foreground italic",children:"non défini"}):"—"})]}),e.jsxs("div",{className:"flex items-center justify-between border-t pt-2 mt-2",children:[e.jsx("span",{className:"font-medium",children:"Prochain numéro attribué :"}),e.jsx("span",{className:"font-mono text-base font-bold text-primary","data-testid":"text-counter-next",children:k?k.nextSeq:"—"})]}),(k==null?void 0:k.updatedAt)&&e.jsxs("p",{className:"text-xs text-muted-foreground pt-1",children:["Override mis à jour le ",new Date(k.updatedAt).toLocaleString("fr-FR")]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-sm font-medium",htmlFor:"counter-input",children:"Définir un nouveau minimum (le prochain sera cet entier + 1)"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(xs,{id:"counter-input",type:"number",min:0,max:999999,placeholder:"ex : 1500",value:je,onChange:s=>cs(s.target.value),"data-testid":"input-counter-value",className:"font-mono"}),e.jsx(n,{onClick:()=>{const s=parseInt(je,10);isNaN(s)||Pe.mutate(s)},disabled:!je||isNaN(parseInt(je))||Pe.isPending,"data-testid":"button-counter-save",children:Pe.isPending?e.jsx(ys,{className:"h-4 w-4 animate-spin"}):"Enregistrer"})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Si vous saisissez 1500, la prochaine lettre aura la référence ",e.jsxs("span",{className:"font-mono",children:["N/ REF 1501/DAJI/",new Date().getFullYear()]})]})]})]}),e.jsx(H,{children:e.jsx(n,{variant:"outline",onClick:()=>$e(!1),children:"Fermer"})})]})})]})}export{Kt 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.