PageSourceSearch

https://copilote-pour-courtiers-en-rpa.web.app/assets/ContactsListPage-BjrdCETm.js

js copilote-pour-courtiers-en-rpa.web.app collected 2026-10-03 12:20:34 UTC 20,842 bytes, 1 lines download raw bytes

1import{j as s}from"./vendor-ui-6WE2-1ZX.js";import{a as i,i as be,h as ge}from"./vendor-react-QkowUNUI.js";import{n as $,p as he,x as ye,Q as we,r as v,q as Se}from"./vendor-firebase-CezJN4L9.js";import{u as je,g as Ne,d as M,x as ke}from"./index-ChjFZE29.js";import{V as Ce}from"./VirtualizedTable-CZe58bku.js";import{l as O,A as Ae}from"./AddContactDrawer-o7dq97B7.js";import{Q as Re}from"./regions-D3X2VJ6v.js";import"./index-DlJnboEx.js";function Te({status:e,label:t}){const n={overdue:"bg-rose-100 text-rose-700 border-rose-200",today:"bg-amber-100 text-amber-700 border-amber-200",soon:"bg-sky-100 text-sky-700 border-sky-200",scheduled:"bg-emerald-100 text-emerald-700 border-emerald-200",none:"bg-slate-100 text-slate-500 border-slate-200"};return s.jsx("span",{className:`inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-medium ${n[e]||n.none}`,children:t})}function Ee({contacts:e=[],activeTab:t="all",loading:n=!1,error:l=null}){const{goTo:u}=je(),[h,d]=i.useState([{id:"lastInteractionAt",desc:!0}]),y=i.useMemo(()=>[{accessorKey:"name",header:"Nom",size:18,enableSorting:!0,cell:({getValue:c})=>s.jsx("span",{className:"font-medium text-slate-900 truncate block",children:c()})},{accessorKey:"phone",header:"Téléphone",size:13,enableSorting:!1,cell:({getValue:c})=>{const x=c();return x&&x!=="—"?s.jsxs("span",{className:"text-green-600 truncate block flex items-center gap-1",children:[s.jsx("span",{children:"📞"}),x]}):s.jsx("span",{className:"text-slate-500",children:"—"})}},{accessorKey:"email",header:"Courriel",size:20,enableSorting:!0,cell:({getValue:c})=>{const x=c();return x?s.jsxs("span",{className:"text-[#1f6dff] truncate block flex items-center gap-1",children:[s.jsx("span",{children:"📧"}),s.jsx("span",{className:"truncate",children:x})]}):s.jsx("span",{className:"text-slate-500",children:"—"})}},{accessorKey:"status",header:"Statut",size:13,enableSorting:!0,cell:({getValue:c})=>s.jsx("span",{className:"text-slate-600 truncate block",children:c()})},{accessorKey:"followUpStatus",header:"Prochain suivi",size:14,enableSorting:!0,cell:({row:c})=>s.jsx(Te,{status:c.original.followUpStatus,label:c.original.followUpLabel})},{accessorKey:"owner",header:"Courtier",size:12,enableSorting:!0,cell:({getValue:c})=>s.jsx("span",{className:"text-slate-600 truncate block",children:c()})},{accessorKey:"lastInteractionAt",header:"Dernière interaction",size:14,enableSorting:!0,sortingFn:(c,x)=>{const B=c.original.lastInteractionSort||0,j=x.original.lastInteractionSort||0;return B-j},cell:({row:c})=>{const x=c.original.lastInteractionAt||c.original.updatedAt;return s.jsx("span",{className:"text-slate-600 truncate block",children:x&&typeof x=="string"?x:"—"})}}],[]),m=c=>{c.id&&u.contactDetail(c.id)};return n?s.jsx("div",{className:"px-4 py-6 text-center text-sm text-slate-500",children:"Chargement des contacts…"}):l?s.jsx("div",{className:"px-4 py-6 text-center text-sm text-rose-500",children:l}):s.jsx(Ce,{data:e,columns:y,onRowClick:m,sorting:h,onSortingChange:d,estimateSize:42,height:"calc(100vh - 280px)",emptyMessage:"Aucun contact dans cette catégorie."})}const Q=[{key:"all",label:"Tous les contacts"},{key:"qualifiedBuyers",label:"Acheteurs qualifiés"},{key:"buyers",label:"Acheteurs"},{key:"sellers",label:"Vendeurs"},{key:"formerOwners",label:"Anciens propriétaires"},{key:"professionals",label:"Notaires, avocats et autres contacts"},{key:"brokers",label:"Courtiers collaborateurs"}],C={overdue:0,today:1,soon:2,scheduled:3,none:4};function Qe(){const{currentUser:e}=Ne(),n=(()=>{try{const r=localStorage.getItem("contactsFilters");if(r){const a=JSON.parse(r);return{activeTab:a.activeTab||Q[0].key,selectedOwners:a.selectedOwners||[],selectedRegions:a.selectedRegions||[],selectedStatuses:a.selectedStatuses||[],selectedResidenceTypes:a.selectedResidenceTypes||[]}}}catch(r){O.error("Error loading filters from localStorage",r,{context:"ContactsListPage.loadFiltersFromStorage"})}return{activeTab:Q[0].key,selectedOwners:[],selectedRegions:[],selectedStatuses:[],selectedResidenceTypes:[]}})(),[l]=be(),u=r=>({all:"all",qualifies:"qualifiedBuyers",acheteurs:"buyers",vendeurs:"sellers",courtiers:"brokers",professionnels:"professionals"})[r]||null,h=()=>{const r=l.get("type");if(r){const a=u(r);if(a)return a}return n.activeTab},[d,y]=i.useState(h()),[m,c]=i.useState(l.get("global")||""),[x,B]=i.useState(n.selectedOwners),[j,oe]=i.useState(n.selectedRegions),[R,le]=i.useState(n.selectedStatuses),[T,ie]=i.useState(n.selectedResidenceTypes),[V,K]=i.useState([]),[J,ae]=i.useState(!0),[ce,Z]=i.useState(null),[W,Y]=i.useState([]),[ue,de]=i.useState(!0),[fe,q]=i.useState(!1),[z,H]=i.useState({type:null,message:""}
1),[X,ee]=i.useState([]),[te,se]=i.useState(!1),pe=ge();i.useEffect(()=>{c(l.get("global")||"");const r=l.get("type");if(r){const a=u(r);a&&y(a)}},[l]),i.useEffect(()=>{try{localStorage.setItem("contactsFilters",JSON.stringify({activeTab:d,selectedOwners:x,selectedRegions:j,selectedStatuses:R,selectedResidenceTypes:T}))}catch(r){O.error("Error saving filters to localStorage",r,{context:"ContactsListPage.saveFiltersEffect"})}},[d,x,j,R,T]);const E=i.useCallback(async()=>{try{let a=[],o=null,f=!0;for(;f;){const b=[$(M,"contacts"),he("nom","asc"),ye(500)];o&&b.push(we(o));const p=await v(Se(...b)),k=p.docs.map(w=>Ie(w.id,w.data()));a=[...a,...k],p.docs.length<500?f=!1:o=p.docs[p.docs.length-1]}K(a),Z(null)}catch(r){O.error("[FIRESTORE_ERROR] Lecture contacts refusée",r,{context:"ContactsListPage.loadContacts",collection:"contacts"}),K([]),Z("Accès refusé. Vérifie les permissions Firestore.")}finally{ae(!1)}},[]),F=i.useCallback(async()=>{try{const r=$(M,"users"),a=await v(r),o=["admin","courtier","assistant"],f=a.docs.map(b=>{const p=b.data()||{},k=(p.role||p.settings?.profile?.accessType||"").toLowerCase();if(!o.includes(k))return null;const w=p.settings?.profile||{},g=[w.name,p.displayName,p.nom,p.name,p.email].flat().find(S=>typeof S=="string"&&S.trim());if(!g)return null;const N=[w.workEmail,p.email,w.personalEmail,p.personalEmail].flat().find(S=>typeof S=="string"&&S.trim())||"",L=[w.assignedPhone,w.cell,p.phone,p.telephone].flat().find(S=>typeof S=="string"&&S.trim())||"";return{id:b.id,label:g.trim(),email:N.trim(),phone:L.trim()}}).filter(Boolean).sort((b,p)=>b.label.localeCompare(p.label,"fr",{sensitivity:"base"}));Y(f)}catch(r){O.error("[FIRESTORE_ERROR] Lecture courtiers impossible",r,{context:"ContactsListPage.loadOwners",collection:"users"}),Y([])}finally{de(!1)}},[]),U=i.useCallback(async()=>{try{const r=$(M,"residences"),o=(await v(r)).docs.map(f=>({id:f.id,...f.data()}));ee(o)}catch(r){O.error("[FIRESTORE_ERROR] Lecture résidences impossible",r,{context:"ContactsListPage.loadResidences",collection:"residences"}),ee([])}},[]),me=i.useCallback(async()=>{se(!0),await Promise.all([E(),F(),U()]),se(!1)},[E,F,U]);i.useEffect(()=>{E(),F(),U()},[E,F,U]),i.useEffect(()=>{const r=()=>{E()};return window.addEventListener("focus",r),()=>window.removeEventListener("focus",r)},[E]);const P=i.useMemo(()=>{const r={all:[],qualifiedBuyers:[],buyers:[],sellers:[],formerOwners:[],professionals:[],brokers:[]},a=new Set;return X.forEach(o=>{const f=(o.statut||o.status||"").toLowerCase();(f==="vendu"||f==="fermee")&&(o.contactPrincipalId&&a.add(o.contactPrincipalId),o.contactSecondaireId&&a.add(o.contactSecondaireId))}),V.forEach(o=>{r.all.push(o);const f=o.categories||[],b=(o.type||"").toLowerCase(),p=b.includes("qualifié"),k=b.includes("acheteur")||b.includes("prospect"),w=p||f.includes("qualifiedBuyer"),g=k||f.includes("buyer"),N=f.includes("seller"),L=f.includes("professional"),S=f.includes("broker"),re=b.includes("liste noire")||b.includes("non sérieux");w&&!re?(r.qualifiedBuyers.push(o),r.buyers.push(o)):g&&!re&&r.buyers.push(o),N&&r.sellers.push(o),a.has(o.id)&&r.formerOwners.push(o),L&&r.professionals.push(o),S&&r.brokers.push(o)}),r},[V,X]),xe=i.useMemo(()=>(P[d]||[]).filter(o=>{const f=m.trim()?(()=>{const g=m.trim().toLowerCase();return[o.name,o.email,o.phone,...o.region||[],o.company,o.owner,o.status].some(L=>L?.toString().toLowerCase().includes(g))})():!0,b=x.length>0?x.some(g=>o.owner.toLowerCase().includes(g.toLowerCase())):!0,p=j.length>0?j.some(g=>(o.region||[]).some(N=>N.toLowerCase()===g.toLowerCase())):!0,k=R.length>0?R.some(g=>o.status.toLowerCase().includes(g.toLowerCase())):!0,w=T.length>0?T.some(g=>(o.typeResidenceSouhaitee||[]).some(N=>N.toLowerCase()===g.toLowerCase())):!0;return f&&b&&p&&k&&w}).slice().sort((o,f)=>_e(o,f)),[d,m,x,j,R,T,P]);return s.jsxs("div",{className:"space-y-6",children:[s.jsxs("header",{className:"flex flex-wrap items-center justify-between gap-4",children:[s.jsxs("div",{children:[s.jsx("h1",{className:"text-2xl font-semibold text-slate-900",children:"Tableau de bord des Contacts"}),s.jsx("p",{className:"text-sm text-slate-500",children:"Suivi centralisé des prospects, partenaires et intervenants clés."})]}),s.jsxs("div",{className:"flex gap-3",children:[s.jsx("button",{type:"button",onClick:me,disabled:te,className:"rounded-full border border-slate-200 bg-white px-4 py-2 text-sm font-semibold text-slate-600 transition hover:border-[#1f6dff]/40 disabled:opacity-50",children:te?"...":"↻ Rafraîchir"}),s.jsx("button",{type:"button",className:"rounded-full bg-gradient-to-r from-[#1f6dff] to-[#2c4dff] px-4 py-2 text-sm font-semibold text-white shadow-[0_12px_28px_-18px_rgba(31,109,255,0.65)] hover:brightness-105",onClick:()=>{H({type:null,message:""}),q(!0)},children:"Ajouter un contact"})]})]}),!J&&s.jsx("div",{className:"grid grid-cols-3 gap-3 md:grid-cols-5",children:[{key:"all",label:"Tous",icon:"👥",gradient:"from-slate-700 via-slate-800 to-slate-900"},{key:"qualifiedBuyers",label:"Qualifiés",icon:"⭐",gradient:"from-blue-700 via-blue-800 to-indigo-900"},{key:"buyers",label:"Acheteurs",icon:"🏠",gradient:"from-indigo-500 via-blue-600 to-indigo-700"},{key:"sellers",label:"Vendeurs",icon:"🔑",gradient:"from-orange-500 via-amber-600 to-orange-700"},{key:"brokers",label:"Courtiers",icon:"🤝",gradient:"from-emerald-600 via-green-700 to-teal-800"}].map(r=>{const a=P[r.key]?.length??0,o=P.all?.length??0,f=d===r.key;return s.jsxs("button",{type:"button",onClick:()=>y(r.key),className:`relative flex items-center gap-3 overflow-hidden rounded-2xl bg-gradient-to-br ${r.gradient} px-4 py-4 text-left shadow-md transition hover:brightness-110 ${f?"outline outline-2 outline-offset-2 outline-[#D4AF37]":""}`,children:[s.jsx("div",{className:"absolute -right-3 -top-3 h-16 w-16 rounded-full bg-white/5"}),s.jsx("span",{className:"text-xl shrink-0",children:r.icon}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("p",{className:"truncate text-[10px] font-black uppercase tracking-widest text-white/55",children:r.label}),s.jsx("p",{className:"text-3xl font-black leading-none text-white",children:a}),s.jsx("p",{className:"text-[9px] text-white/40 font-semibold mt-0.5",children:o>0&&r.key!=="all"?`${Math.round(a/o*100)}% du total`:`${o>0?"100":"0"}%`})]}),s.jsx("div",{className:"absolute inset-0 rounded-2xl border border-[#D4AF37]/30 pointer-events-none"})]},r.key)})}),s.jsxs("div",{className:"space-y-3",children:[s.jsxs("label",{className:"flex items-center gap-2 rounded-full border-2 border-blue-200 bg-blue-50 px-4 py-2 text-sm text-slate-500 shadow-sm",children:[s.jsx("span",{className:"material-symbols-outlined text-blue-500",children:"manage_search"}),s.jsx("input",{type:"search",placeholder:"Recherche globale (nom, courriel, téléphone, région, entreprise, courtier, statut...)",value:m,onChange:r=>c(r.target.value),className:"w-full border-none bg-transparent text-slate-700 placeholder:text-slate-400 focus:outline-none"}),m&&s.jsx("button",{onClick:()=>c(""),className:"text-slate-400 hover:text-slate-600",title:"Effacer",children:s.jsx("span",{className:"material-symbols-outlined text-base",children:"close"})})]}
1),s.jsxs("div",{className:"grid gap-3 md:grid-cols-4 rounded-2xl border border-slate-200 bg-slate-50 p-4",children:[s.jsx(_,{label:"Équipe Interne",options:W.map(r=>r.label),selected:x,onChange:B}),s.jsx(_,{label:"Régions",options:Re,selected:j,onChange:oe}),s.jsx(_,{label:"Statuts",options:Array.from(new Set(V.map(r=>r.status).filter(r=>r&&r!=="—"))).sort(),selected:R,onChange:le}),s.jsx(_,{label:"Types résidence recherchés",options:ke,selected:T,onChange:ie})]})]}),s.jsx("nav",{className:"flex flex-wrap gap-2",children:Q.map(r=>s.jsx("button",{type:"button",onClick:()=>y(r.key),className:`rounded-full border px-5 py-2 text-sm font-semibold transition ${d===r.key?"border-[#1f6dff] bg-gradient-to-r from-[#1f6dff] to-[#2c4dff] text-white shadow-[0_14px_24px_-18px_rgba(31,109,255,0.55)]":"border-slate-200 bg-white text-slate-600 hover:border-[#1f6dff]/40"}`,children:s.jsx("span",{className:"flex items-center gap-2",children:s.jsx("span",{children:r.label})})},r.key))}),s.jsx("section",{className:"overflow-hidden rounded-[28px] border border-slate-200/70 bg-white shadow-[0_32px_72px_-48px_rgba(15,40,110,0.6)] p-4",children:s.jsx("div",{className:"overflow-x-auto",children:s.jsx("div",{className:"min-w-[1000px]",children:s.jsx(Ee,{contacts:xe,activeTab:d,loading:J,error:ce})})})}),fe?s.jsx(Ae,{onClose:()=>q(!1),onCreated:r=>{q(!1),pe(`/contacts/${r}`)},onError:r=>H({type:"error",message:r}),ownerOptions:W,ownersLoading:ue,currentUser:e}):null,z.message?s.jsx("div",{className:`rounded-2xl px-4 py-3 text-sm shadow ${z.type==="success"?"bg-emerald-50 text-emerald-700":"bg-rose-50 text-rose-600"}`,children:z.message}):null]})}function Ie(e,t){const n=Array.isArray(t.roles)?t.roles:[],u=n.includes("seller")?A(Array.isArray(t.residences)&&t.residences.length?t.residences.join(", "):t.notesResidence||t.rating||"Contact vendeur"):Oe(t,n),h=D(t.nextFollowUpAt||t.followUpAt||t.relanceAt),d=Le(h),y=D(t.lastInteractionAt||t.updatedAt||t.createdAt);return{id:e,name:t.displayName||[t.prenom,t.nom].filter(Boolean).join(" ")||"Contact",phone:t.telephone||t.cellulaire||"—",email:t.courriel||"",status:A(t.type||n.join(" · ")||"—"),rating:u,owner:A(t.courtierResponsable||"—"),ownerUid:t.ownerUid||"",updatedAt:I(t.updatedAt),lastInteractionAt:I(y),lastInteractionSort:y?y.getTime():0,followUpStatus:d.status,followUpLabel:d.label,followUpSortValue:d.sortValue,followUpTimestamp:d.timestamp,categories:n.length?n:["contact"],region:Array.isArray(t.regionPreferee)?t.regionPreferee:t.regionPreferee?[t.regionPreferee]:t.region?[t.region]:[],typeResidenceSouhaitee:Array.isArray(t.typeResidenceSouhaitee)?t.typeResidenceSouhaitee:t.typeResidenceSouhaitee?[t.typeResidenceSouhaitee]:[],lastInvitationStatus:t.lastInvitationStatus||"NOT_SENT",lastInvitationId:t.lastInvitationId||null,lastInvitationAt:t.lastInvitationAt||null,buyerScore:t.buyerScore||0,buyerTier:t.buyerTier||null}}function I(e){const t=D(e);return t?t.toLocaleDateString("fr-CA",{year:"numeric",month:"long",day:"numeric"}):"—"}function D(e){if(!e)return null;if(e instanceof Date)return e;if(e?.toDate)return e.toDate();const t=new Date(e);return Number.isNaN(t.getTime())?null:t}function Le(e){if(!e)return{status:"none",label:"Non planifié",sortValue:C.none,timestamp:null};const t=new Date,n=Math.round((e.getTime()-t.getTime())/864e5);let l;return n<0?l="overdue":n===0?l="today":n<=3?l="soon":l="scheduled",{status:l,label:Pe(n,e),sortValue:C[l]??C.none,timestamp:e.getTime()}}function A(e){if(e==null||typeof e=="string"&&e.trim()==="")return"—";if(typeof e=="string")return e.trim();if(typeof e=="number"||typeof e=="boolean")return String(e);if(e instanceof Date)return I(e);if(typeof e?.toDate=="function")return A(e.toDate());if(Array.isArray(e)){const t=e.map(n=>A(n)).filter(n=>n&&n!=="—");return t.length?t.join(" · "):"—"}if(typeof e=="object"){const t=e.texte||e.text||e.message||e.content,n=e.auteurEmail||e.auteurNom||e.auteurId||e.author,l=e.date||e.createdAt||e.updatedAt,u=[];if(t&&u.push(String(t)),n&&u.push(String(n)),l){const d=D(l);u.push(d?I(d):String(l))}if(u.length)return u.join(" · ");if(typeof e.label=="string"&&e.label.trim())return e.label.trim();if(typeof e.name=="string"&&e.name.trim())return e.name.trim();if(e.value!=null)return A(e.value);const h=Object.entries(e).map(([d,y])=>{const m=A(y);return!m||m==="—"?"":`${d}: ${m}`}
1).filter(Boolean);if(h.length)return h.join(" · ");try{return JSON.stringify(e)}catch{return String(e)}}return String(e)}function Oe(e,t){if(Array.isArray(t)&&t.includes("broker"))return"Courtier collaborateur";if(Array.isArray(t)&&t.includes("professional"))return"Professionnel";const n=[e.coteLabel,e.cote?.label,e.cote?.niveauLabel,e.cote?.niveau,e.cote?.status,e.cote,e.rating,e.qualifications?.seriousness,e.qualifications?.label,e.qualifications?.niveau,e.stats?.seriousness,e.notes,e.notesGenerales];for(const l of n){const u=G(l);if(u)return u}return typeof e.notes=="string"&&e.notes.trim()&&ne(e.notes.trim())||"—"}function G(e){if(e==null)return"";if(typeof e=="string"){const t=e.trim();if(!t)return"";const n=ne(t),l=Fe(n);for(const u of Ue)for(const h of u.keywords)if(l.includes(h))return u.label;return""}if(typeof e=="number"||typeof e=="boolean")return String(e);if(Array.isArray(e)){for(const t of e){const n=G(t);if(n)return n}return""}if(e instanceof Date)return I(e);if(typeof e=="object"){const t=[e.label,e.niveauLabel,e.niveau,e.status,e.state,e.title,e.type,e.value,e.tag,e.selection,e.choice,e.primary,e.description,e.summary,e.text,e.texte];for(const n of t){const l=G(n);if(l)return l}}return""}function ne(e){const t=[" · "," - "," – "," — "," | "," / "];for(const l of t)if(e.includes(l))return e.split(l)[0].trim();const n=["·","-","–","—","|","/"];for(const l of n)if(e.includes(l))return e.split(l)[0].trim();return e}function Fe(e){return e.normalize("NFD").replace(new RegExp("\\p{Diacritic}","gu"),"").toLowerCase().replace(/[^a-z0-9 ]/g," ").replace(/\s+/g," ").trim()}const Ue=[{label:"Acheteur très sérieux",keywords:["acheteur tres serieux","tres serieux","tres-serieux","tres serieuse","tres-serieuse","tres motive","tres motivee"]},{label:"Acheteur moins sérieux",keywords:["moins serieux","acheteur moins serieux"]},{label:"Acheteur pas sérieux",keywords:["pas serieux","non serieux","pas-serieux"]},{label:"Acheteur sérieux",keywords:["acheteur serieux","serieux"]},{label:"En début de processus",keywords:["debut de processus","debut processus","en processus","processus"]}];function Pe(e,t){if(e<0){const n=Math.abs(e);return n===1?"1 j de retard":`${n} j de retard`}return e===0?"Aujourd’hui":e===1?"Dans 1 jour":e<=3?`Dans ${e} jours`:`Le ${I(t)}`}function _e(e,t){return(e.followUpSortValue??C.none)!==(t.followUpSortValue??C.none)?(e.followUpSortValue??C.none)-(t.followUpSortValue??C.none):e.followUpTimestamp&&t.followUpTimestamp?e.followUpTimestamp-t.followUpTimestamp:e.followUpTimestamp?-1:t.followUpTimestamp?1:e.lastInteractionSort&&t.lastInteractionSort?t.lastInteractionSort-e.lastInteractionSort:e.lastInteractionSort?-1:t.lastInteractionSort?1:e.name.localeCompare(t.name)}function _({label:e,options:t,selected:n,onChange:l}){const[u,h]=i.useState(!1),d=m=>{n.includes(m)?l(n.filter(c=>c!==m)):l([...n,m])},y=()=>{l([])};return s.jsxs("div",{className:"relative",children:[s.jsx("label",{className:"mb-1 block text-xs font-semibold uppercase tracking-wide text-slate-500",children:e}),s.jsxs("button",{type:"button",onClick:()=>h(!u),className:"flex w-full items-center justify-between rounded-xl border border-slate-200 bg-white px-3 py-2 text-left text-sm focus:border-[#1f6dff] focus:outline-none",children:[s.jsx("span",{className:n.length>0?"text-slate-700":"text-slate-400",children:n.length>0?`${n.length} sélectionné${n.length>1?"s":""}`:`Tous les ${e.toLowerCase()}`}),s.jsx("span",{className:"material-symbols-outlined text-slate-400",children:u?"expand_less":"expand_more"})]}),u&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"fixed inset-0 z-10",onClick:()=>h(!1)}),s.jsxs("div",{className:"absolute left-0 right-0 top-full z-20 mt-1 max-h-64 overflow-y-auto rounded-xl border border-slate-200 bg-white shadow-lg",children:[n.length>0&&s.jsx("button",{type:"button",onClick:y,className:"w-full border-b border-slate-100 px-3 py-2 text-left text-xs font-semibold text-[#1f6dff] hover:bg-slate-50",children:"Effacer tout"}),t.map(m=>s.jsxs("label",{className:"flex cursor-pointer items-center gap-2 border-b border-slate-100 px-3 py-2 text-sm hover:bg-slate-50 last:border-b-0",children:[s.jsx("input",{type:"checkbox",checked:n.includes(m),onChange:()=>
1d(m),className:"h-4 w-4 rounded border-slate-300 text-[#1f6dff] focus:ring-[#1f6dff]"}),s.jsx("span",{className:"flex-1 text-slate-700",children:m})]},m)),t.length===0&&s.jsx("div",{className:"px-3 py-4 text-center text-sm text-slate-400",children:"Aucune option disponible"})]})]})]})}export{Qe 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.