PageSourceSearch

https://onebernard.fr/assets/AdvisorDashboard-CugXaMRo.js

js onebernard.fr collected 2026-10-09 22:01:31 UTC 31,745 bytes, 2 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashboardContent-CPF2jGaK.js","assets/vendor-ui-Co8xXcZ5.js","assets/vendor-react-BLS9mCXK.js","assets/types-D3pYZVh9.js","assets/index-CFjSbJ-K.js","assets/vendor-charts-BjUneCK4.js","assets/vendor-query-BkA7SkCw.js","assets/vendor-supabase-vdXWJR_5.js","assets/index-ZRQXGrnC.css","assets/building-D__SHj81.js","assets/graduation-cap-rQMdZPXF.js","assets/tree-pine-CnAwma3E.js","assets/mountain-BHACxuyw.js","assets/circle-help-1mtLeDHG.js","assets/card-DFEEGsLE.js","assets/badge-CPGQ_me0.js","assets/progress-DXfKeGbx.js","assets/leads-lXqJhaSe.js","assets/CreateLeadDialog-Dgs8SEaO.js","assets/dialog-CD71uh7b.js","assets/label-DswwuAv2.js","assets/select-Dt_y4ezl.js","assets/chevron-down-CDoIckZk.js","assets/chevron-up-BaFHCn7i.js","assets/check-BXL8SgDr.js","assets/search-CMk16z1B.js","assets/arrow-left-B6jC3qyF.js","assets/SurpriseCalendarWidget-tJwmFrL0.js","assets/CalendarWeatherWidget-DxTD_rpS.js","assets/cloud-8HmGBGAh.js","assets/map-pin-BCtWFStD.js","assets/sun-CITbKFJi.js","assets/vendor-dnd-JcMcgfUu.js","assets/rotate-ccw-CMIzCY-i.js","assets/save-lf5Ie0B8.js","assets/pencil-D297QWg9.js","assets/maximize-2-BVukI8hm.js","assets/trending-up-DYAnyema.js","assets/circle-alert-CleOmmee.js","assets/arrow-up-right-QbJCECVa.js","assets/clipboard-check-BYKjhxrH.js","assets/chart-column-DUmjqeRA.js","assets/wallet-Bl0w9YDL.js","assets/euro-CWBn8B-U.js","assets/target-BwE602HC.js","assets/format-7Hba7NI4.js","assets/fr-BsqWEArE.js","assets/clock-D9RdQWjg.js","assets/rocket-MXhYHDNa.js","assets/calendar-CPjyxUnl.js","assets/megaphone-D5OBKKjE.js","assets/folder-open-CXa7fs3R.js","assets/globe-B8mZw9PK.js","assets/LeadsContent-BdV63J8r.js","assets/LeadStatusWidgets-CWDhLvpA.js","assets/user-check-B-7cVxCO.js","assets/archive-CKzinaIv.js","assets/shield-check-CDusj6BJ.js","assets/file-check-jzErL8g6.js","assets/textarea-C1UezDQO.js","assets/WhatsAppButton-waQdx0sE.js","assets/DocumentPreviewModal-CG1wIcKj.js","assets/download-BKn0Nfu2.js","assets/printer-Pzwk8TX4.js","assets/dropdown-menu-BvPICFIX.js","assets/table-DJnacnP0.js","assets/tabs-BNyu-awl.js","assets/scroll-area-BZ9cO3h7.js","assets/copy-Did_1o8b.js","assets/mail-C_Xn7R7l.js","assets/formatDistanceToNow-CFTAxBqP.js","assets/ellipsis-vertical-BgirtFOG.js","assets/archive-restore-Iig5qxec.js","assets/message-square-C0GCubCa.js","assets/ProjectsManagementContent-DBo3Z5_9.js","assets/ProjectDetailsPanel-DqyYPukn.js","assets/switch-gtdFYhHS.js","assets/receipt-B0UAdDVN.js","assets/wrench-DbkKPJRg.js","assets/alert-dialog-C6wWT7zU.js","assets/trash-2-DkYzxCC5.js","assets/LeadPhotosSection-gcVjQ7Tx.js","assets/purify.es-D9RiKzGB.js","assets/user-AYGfgFyM.js","assets/image-CiIkRQC4.js","assets/file-B99Lctab.js","assets/upload-BN4s5k2L.js","assets/inbox-BCbyFSk5.js","assets/chevron-left-BA5J9dLv.js","assets/hard-hat-BoADxXmm.js","assets/checkbox-4aEPbnjK.js","assets/deliveryNote-8S-BKLPh.js","assets/logo-bernard-white-Dgcxa5jI.js","assets/clipboard-list-YR_2o3g3.js","assets/plus-Dyybx1E2.js","assets/pen-B5o4656b.js","assets/use-mobile-EAcWg2ET.js","assets/CheckupSecurityContent-CPk9dXz6.js","assets/email-z7iXbQ8Y.js","assets/CheckupRoomsEditor-CyvaLolf.js","assets/checkupMarkdown-DafdkKx2.js","assets/layers-DvCkuNRi.js","assets/video-DLjUVR9D.js","assets/door-open-ZQlXGOfj.js","assets/cpu-DC0K4r_R.js","assets/ReportsContent-DT-fRkFT.js","assets/play-DHE_8Xja.js","assets/RemunerationContent-BzbkdW-H.js","assets/award-DFUFW6sC.js","assets/lightbulb-B10GHtql.js","assets/SettingsContent-Dq0Vwkir.js","assets/avatar-BwZ5nKsZ.js","assets/AdvisorOnboardingForm-CLHWXJUC.js","assets/BernardLogo-BClj2i_5.js","assets/scroll-text-LUTxIxEV.js","assets/circle-check-5loOOqkR.js","assets/DashboardLayout-D8Z7N-Oz.js","assets/star-C4ZHIbBD.js","assets/hover-card-D2wP6aBW.js","assets/notifications-BrELrvCt.js","assets/siren-B4brs93N.js","assets/settings-CQ6NmXkQ.js","assets/gift-BCXahpx4.js","assets/ThemeContext-DL0uXlew.js","assets/whatsappAccess-CXk8Nw5n.js","assets/moon-DTSNG8FH.js","assets/crown-uQbC72KU.js","assets/BernardIAButton-DHlEfqWT.js","assets/LoginForm-CLqvLpjC.js","assets/AccessDenied-CKjSHNgn.js","assets/shield-x-B-5AVzL9.js","assets/useSurpriseWidget-BfTTTRoZ.js","assets/useImpersonation-dN7QNvO6.js","assets/types-Pai7TpEx.js","assets/technicalVisits-d0XpaQJg.js","assets/calendar-days-ebooE7oX.js","assets/calendar-clock-DHF82wQw.js","assets/calendar-plus-qVNjOLLq.js","assets/navigation-BGFRs_VV.js","assets/layout-dashboard-CXSavqZ4.js"])))=>i.map(i=>d[i]);
2import{c as oe,s as w,B as I,d as _e,e as ie,b as F,R as ye,_ as O,U as xe,F as ve,I as be}from"./index-CFjSbJ-K.js";import{j as e}from"./vendor-ui-Co8xXcZ5.js";import{r as d,h as Z,k as we}from"./vendor-react-BLS9mCXK.js";import{D as je}from"./DashboardLayout-D8Z7N-Oz.js";import{K as De,a as A,B as Ne}from"./BernardIAButton-DHlEfqWT.js";import{L as Se}from"./LoginForm-CLqvLpjC.js";import{A as Ce}from"./AccessDenied-CKjSHNgn.js";import{u as ke}from"./useSurpriseWidget-BfTTTRoZ.js";import{C as V}from"./card-DFEEGsLE.js";import{B as Q}from"./badge-CPGQ_me0.js";import{b as Ee,d as Me}from"./types-Pai7TpEx.js";import{C as Ie,s as ze}from"./technicalVisits-d0XpaQJg.js";import{D as Oe,a as Ae,b as Te,c as Ue}from"./dialog-CD71uh7b.js";import{t as z,c as q,g as Re,m as ce,a as le,f as P}from"./fr-BsqWEArE.js";import{s as X,a as ee,f as M}from"./format-7Hba7NI4.js";import{c as Pe,e as Le}from"./formatDistanceToNow-CFTAxBqP.js";import{C as $e}from"./chevron-left-BA5J9dLv.js";import{C as Y}from"./calendar-days-ebooE7oX.js";import{C as Fe}from"./calendar-clock-DHF82wQw.js";import{C as We}from"./clock-D9RdQWjg.js";import{M as Be}
2from"./map-pin-BCtWFStD.js";import{C as Ke}from"./calendar-plus-qVNjOLLq.js";import{N as Ve}from"./navigation-BGFRs_VV.js";import{L as qe}from"./layout-dashboard-CXSavqZ4.js";import{F as Ye}from"./folder-open-CXa7fs3R.js";import{W as He}from"./wallet-Bl0w9YDL.js";import{S as Ze}from"./settings-CQ6NmXkQ.js";import{S as Ge}from"./search-CMk16z1B.js";function de(t,s){const n=z(t);return isNaN(s)?q(t,NaN):(s&&n.setDate(n.getDate()+s),n)}function Je(t,s){const n=z(t);if(isNaN(s))return q(t,NaN);if(!s)return n;const r=n.getDate(),a=q(t,n.getTime());a.setMonth(n.getMonth()+s+1,0);const u=a.getDate();return r>=u?a:(n.setFullYear(a.getFullYear(),a.getMonth(),r),n)}function Qe(t,s){const n=s*7;return de(t,n)}function Xe(t,s){const n=X(t),r=X(s);return+n==+r}function te(t,s){const n=z(t.start),r=z(t.end);let a=+n>+r;const u=a?+n:+r,c=a?r:n;c.setHours(0,0,0,0);let y=1;const p=[];for(;+c<=u;)p.push(z(c)),c.setDate(c.getDate()+y),c.setHours(0,0,0,0);return a?p.reverse():p}function et(t){const s=z(t);return s.setDate(1),s.setHours(0,0,0,0),s}function se(t,s){const n=Re(),r=s?.weekStartsOn??s?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,a=z(t),u=a.getDay(),c=(u<r?-7:0)+6-(u-r);return a.setDate(a.getDate()+c),a.setHours(23,59,59,999),a}function tt(t,s){const n=z(t),r=z(s);return n.getFullYear()===r.getFullYear()&&n.getMonth()===r.getMonth()}function st(t){return Xe(t,Pe(t))}function rt(t,s){const r=it(t);let a;if(r.date){const p=ct(r.date,2);a=lt(p.restDateString,p.year)}if(!a||isNaN(a.getTime()))return new Date(NaN);const u=a.getTime();let c=0,y;if(r.time&&(c=dt(r.time),isNaN(c)))return new Date(NaN);if(r.timezone){if(y=ut(r.timezone),isNaN(y))return new Date(NaN)}else{const p=new Date(u+c),v=new Date(0);return v.setFullYear(p.getUTCFullYear(),p.getUTCMonth(),p.getUTCDate()),v.setHours(p.getUTCHours(),p.getUTCMinutes(),p.getUTCSeconds(),p.getUTCMilliseconds()),v}return new Date(u+c+y)}const L={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},nt=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,at=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,ot=/^([+-])(\d{2})(?::?(\d{2}))?$/;function it(t){const s={},n=t.split(L.dateTimeDelimiter);let r;if(n.length>2)return s;if(/:/.test(n[0])?r=n[0]:(s.date=n[0],r=n[1],L.timeZoneDelimiter.test(s.date)&&(s.date=t.split(L.timeZoneDelimiter)[0],r=t.substr(s.date.length,t.length))),r){const a=L.timezone.exec(r);a?(s.time=r.replace(a[1],""),s.timezone=a[1]):s.time=r}return s}function ct(t,s){const n=new RegExp("^(?:(\\d{4}|[+-]\\d{"+(4+s)+"})|(\\d{2}|[+-]\\d{"+(2+s)+"})$)"),r=t.match(n);if(!r)return{year:NaN,restDateString:""};const a=r[1]?parseInt(r[1]):null,u=r[2]?parseInt(r[2]):null;return{year:u===null?a:u*100,restDateString:t.slice((r[1]||r[2]).length)}}function lt(t,s){if(s===null)return new Date(NaN);const n=t.match(nt);if(!n)return new Date(NaN);const r=!!n[4],a=R(n[1]),u=R(n[2])-1,c=R(n[3]),y=R(n[4]),p=R(n[5])-1;if(r)return gt(s,y,p)?mt(s,y,p):new Date(NaN);{const v=new Date(0);return!ft(s,u,c)||!ht(s,a)?new Date(NaN):(v.setUTCFullYear(s,u,Math.max(a,c)),v)}}function R(t){return t?parseInt(t):1}function dt(t){const s=t.match(at);if(!s)return NaN;const n=B(s[1]),r=B(s[2]),a=B(s[3]);return _t(n,r,a)?n*ce+r*le+a*1e3:NaN}function B(t){return t&&parseFloat(t.replace(",","."))||0}function ut(t){if(t==="Z")return 0;const s=t.match(ot);if(!s)return 0;const n=s[1]==="+"?-1:1,r=parseInt(s[2]),a=s[3]&&parseInt(s[3])||0;return yt(r,a)?n*(r*ce+a*le):NaN}function mt(t,s,n){const r=new Date(0);r.setUTCFullYear(t,0,4);const a=r.getUTCDay()||7,u=(s-1)*7+n+1-a;return r.setUTCDate(r.getUTCDate()+u),r}const pt=[31,null,31,30,31,30,31,31,30,31,30,31];function ue(t){return t%400===0||t%4===0&&t%100!==0}function ft(t,s,n){return s>=0&&s<=11&&n>=1&&n<=(pt[s]||(ue(t)?29:28))}function ht(t,s){return s>=1&&s<=(ue(t)?366:365)}function gt(t,s,n){return s>=1&&s<=53&&n>=0&&n<=6}function _t(t,s,n){return t===24?s===0&&n===0:n>=0&&n<60&&s>=0&&s<60&&t>=0&&t<25}function yt(t,s){return s>=0&&s<=59}const re={advisorId:null,onboardingCompleted:!1,identityDocumentUploaded:!1,criminalRecordUploaded:!1,cvUploaded:!1,kbisUploaded:!1,identityDocumentPath:null,criminalRecordPath:null,cvPath:null,kbisPath:null,isInitializing:!1,error:null},K="security-advisor-documents",xt=["application/pdf","image/jpeg","image/png","image/jpg","application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document"],vt=10*1024*1024;function bt(){const{user:t,isAdvisor:s,isAdmin:n}
2=oe(),[r,a]=d.useState(re),[u,c]=d.useState(!0),y=d.useCallback(async()=>{if(!t)return null;try{const{data:i,error:m}=await w.from("advisors").select("id").eq("user_id",t.id).maybeSingle();if(m)throw console.error("Error fetching advisor:",m),m;if(i)return i.id;console.log("[useAdvisorOnboarding] No advisor record found, creating one...");const{data:g}=await w.from("profiles").select("first_name, last_name, phone").eq("id",t.id).maybeSingle(),{data:o,error:x}=await w.from("advisors").insert({user_id:t.id,first_name:g?.first_name||"Nouveau",last_name:g?.last_name||"Conseiller",email:t.email,phone:g?.phone||null,status:"conseiller",onboarding_completed:!1}).select("id").single();if(x)throw console.error("Error creating advisor:",x),x;console.log("[useAdvisorOnboarding] Created new advisor:",o.id);const j=["ID","B3","CV","KBIS"];for(const S of j)await w.from("advisor_documents").upsert({advisor_id:o.id,doc_type:S,status:"missing"},{onConflict:"advisor_id,doc_type"}),await w.from("security_advisor_documents").upsert({security_advisor_id:o.id,document_type:S,status:"pending"},{onConflict:"security_advisor_id,document_type"});return o.id}catch(i){return console.error("Error ensuring advisor record:",i),null}},[t]),p=d.useCallback(async()=>{if(!t){c(!1);return}try{a(f=>({...f,isInitializing:!0,error:null}));const i=await y();if(!i){a(f=>({...f,isInitializing:!1,error:"Impossible de créer ou récupérer le profil conseiller"})),c(!1);return}const{data:m,error:g}=await w.from("security_advisor_documents").select("document_type, status, file_path").eq("security_advisor_id",i);if(g)throw g;const{data:o,error:x}=await w.from("advisors").select("onboarding_completed").eq("id",i).single();if(x)throw x;const j=m?.find(f=>f.document_type==="ID"),S=m?.find(f=>f.document_type==="B3"),T=m?.find(f=>f.document_type==="CV"),D=m?.find(f=>f.document_type==="KBIS"),h=f=>f?.status==="uploaded"||f?.status==="validated";a({advisorId:i,onboardingCompleted:o.onboarding_completed??!1,identityDocumentUploaded:h(j),criminalRecordUploaded:h(S),cvUploaded:h(T),kbisUploaded:h(D),identityDocumentPath:j?.file_path||null,criminalRecordPath:S?.file_path||null,cvPath:T?.file_path||null,kbisPath:D?.file_path||null,isInitializing:!1,error:null})}catch(i){console.error("Error fetching advisor onboarding status:",i),a(m=>({...m,isInitializing:!1,error:"Erreur lors du chargement du statut d'onboarding"}))}finally{c(!1)}},[t,y]);d.useEffect(()=>{t&&s&&!n?p():(n&&a({...re,onboardingCompleted:!0}),c(!1))},[t,s,n,p]);const v=i=>xt.includes(i.type)?i.size>vt?{valid:!1,error:"Le fichier dépasse la taille maximale de 10 Mo."}:{valid:!0}:{valid:!1,error:"Type de fichier non autorisé. Utilisez PDF, JPG, PNG ou Word."},k=async(i,m)=>{let g=r.advisorId;if(!g){if(console.log("[uploadDocument] No advisorId, trying to ensure record..."),g=await y(),!g)return console.error("[uploadDocument] Failed to get or create advisor record"),null;a(h=>({...h,advisorId:g}))}const o=v(i);if(!o.valid)throw console.error("[uploadDocument] File validation failed:",o.error),new Error(o.error);const j={identity:"ID",criminal_record:"B3",cv:"CV",kbis:"KBIS"}[m];i.name.split(".").pop();const S=Date.now(),T=i.name.replace(/[^a-zA-Z0-9.-]/g,"_"),D=`${g}/${j}/${S}_${T}`;try{console.log("[uploadDocument] Uploading to:",D);let h=null;for(let E=0;E<3;E++){const{error:U}=await w.storage.from(K).upload(D,i,{contentType:i.type,upsert:!0});if(!U){h=null;break}h=U,console.warn(`[uploadDocument] Attempt ${E+1} failed:`,U.message),E<2&&await new Promise(W=>setTimeout(W,1e3*(E+1)))}if(h)throw console.error("[uploadDocument] All upload attempts failed:",h),h;console.log("[uploadDocument] Upload successful, updating database..."),await w.from("security_advisor_documents").upsert({security_advisor_id:g,document_type:j,file_path:D,file_name:i.name,mime_type:i.type,file_size:i.size,status:"uploaded",submitted_at:new Date().toISOString()},{onConflict:"security_advisor_id,document_type"}),await w.from("advisor_documents").upsert({advisor_id:g,doc_type:j,storage_path:D,file_name:i.name,mime_type:i.type,file_size:i.size,status:"submitted",submitted_at:new Date().toISOString()},{onConflict:"advisor_id,doc_type"});const f={};switch(m){case"identity":f.identity_document_uploaded=!0,f.identity_document_path=D;break;case"criminal_record":f.criminal_record_uploaded=!0,f.criminal_record_path=D;break;case"cv":f.cv_uploaded=!0,f.cv_path=D;break;case"kbis":f.kbis_uploaded=!0,f.kbis_path=D;break}await w.from("advisors").update(f).eq("id",g);try{await w.from("document_audit_logs").insert({actor_id:t?.id,action:"UPLOAD_DOC",target_id:g,target_type:"security_advisor_document",meta:{doc_type:j,file_name:i.name,bucket:K}})}catch(E){console.warn("Audit log failed:",E)}return console.log("[uploadDocument] Document upload complete"),D}catch(h){throw console.error("[uploadDocument] Error:",h),h.message?.includes("Payload too large")||h.message?.includes("size")?new Error("Le fichier est trop volumineux (max 10 Mo)"):h.message?.includes("permission")||h.message?.includes("policy")?new Error("Erreur de permission. Veuillez vous reconnecter."):h.message?.includes("network")||h.message?.includes("fetch")?new Error("Erreur réseau. Vérifiez votre connexion internet."):new Error(h.message||"Erreur lors du téléchargement")}},N=async(i,m,g)=>{if(!r.advisorId)return!1;const o=i==="identity"?"identityDocument":i==="criminal_record"?"criminalRecord":i;return a(x=>({...x,[`${o}Uploaded`]:m,[`${o}Path`]:g})),!0},C=async()=>
2{if(!r.advisorId||!r.identityDocumentUploaded||!r.criminalRecordUploaded||!r.cvUploaded)return!1;try{const{error:i}=await w.from("advisors").update({onboarding_completed:!0,onboarding_completed_at:new Date().toISOString()}).eq("id",r.advisorId);if(i)throw i;return a(m=>({...m,onboardingCompleted:!0})),!0}catch(i){return console.error("Error completing onboarding:",i),!1}},l=async i=>{try{let m=await w.storage.from(K).createSignedUrl(i,3600);if(m.error&&(m=await w.storage.from("advisor-files").createSignedUrl(i,3600)),m.error&&(m=await w.storage.from("advisor-documents").createSignedUrl(i,3600)),m.error)throw m.error;return m.data?.signedUrl||null}catch(m){return console.error("Error getting signed URL:",m),null}},_=r.identityDocumentUploaded&&r.criminalRecordUploaded&&r.cvUploaded;return{status:r,loading:u,uploadDocument:k,updateDocumentStatus:N,completeOnboarding:C,canCompleteOnboarding:_,refetch:p,getSignedUrl:l}}const wt=t=>t?t.slice(0,5).replace(":","h"):"",ne=({a:t,onOpen:s,large:n})=>e.jsxs("button",{onClick:s,className:`w-full text-left rounded-md border border-primary/30 bg-primary/10 hover:bg-primary/20 px-1.5 py-1 leading-tight ${n?"text-xs":"text-[10px]"}`,children:[e.jsxs("span",{className:"font-semibold text-foreground block truncate",children:[wt(t.start_time)," ",t.first_name," ",t.last_name]}),t.technician_name&&e.jsxs("span",{className:"block truncate text-muted-foreground",children:["Tech : ",t.technician_name]}),(t.site_zip||t.site_city)&&e.jsxs("span",{className:"block truncate text-muted-foreground",children:[t.site_zip," ",t.site_city]})]}),jt=({open:t,onOpenChange:s,items:n})=>{const r=Z(),[a,u]=d.useState("month"),[c,y]=d.useState(new Date),p=l=>n.filter(_=>_.appointment_date&&_.appointment_date===M(l,"yyyy-MM-dd")).sort((_,i)=>(_.start_time??"").localeCompare(i.start_time??"")),v=l=>{s(!1),r(`/advisor/leads/${l.lead_id}/rendez-vous-technique`)},k=l=>y(_=>a==="month"?Je(_,l):a==="week"?Qe(_,l):de(_,l)),N=d.useMemo(()=>a==="day"?[c]:te(a==="week"?{start:ee(c,{weekStartsOn:1}),end:se(c,{weekStartsOn:1})}:{start:ee(et(c),{weekStartsOn:1}),end:se(Le(c),{weekStartsOn:1})}),[a,c]),C=a==="month"?M(c,"MMMM yyyy",{locale:P}):a==="week"?`Semaine du ${M(N[0],"d MMM",{locale:P})} au ${M(N[6],"d MMM yyyy",{locale:P})}`:M(c,"EEEE d MMMM yyyy",{locale:P});return e.jsx(Oe,{open:t,onOpenChange:s,children:e.jsxs(Ae,{className:"max-w-5xl w-[95vw] max-h-[90vh] overflow-y-auto",children:[e.jsx(Te,{children:e.jsx(Ue,{children:"Calendrier des rendez-vous"})}),e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(I,{size:"icon",variant:"outline",onClick:()=>k(-1),"aria-label":"Précédent",children:e.jsx($e,{className:"w-4 h-4"})}),e.jsx(I,{size:"sm",variant:"outline",onClick:()=>y(new Date),children:"Aujourd'hui"}),e.jsx(I,{size:"icon",variant:"outline",onClick:()=>k(1),"aria-label":"Suivant",children:e.jsx(_e,{className:"w-4 h-4"})}),e.jsx("span",{className:"ml-2 font-semibold capitalize text-foreground",children:C})]}),e.jsx("div",{className:"flex gap-1",children:["day","week","month"].map(l=>e.jsx(I,{size:"sm",variant:a===l?"default":"outline",onClick:()=>u(l),children:l==="day"?"Jour":l==="week"?"Semaine":"Mois"},l))})]}),a==="day"?e.jsx("div",{className:"space-y-2 min-h-[200px]",children:p(c).length===0?e.jsx("p",{className:"text-sm text-muted-foreground text-center py-10",children:"Aucun rendez-vous ce jour."}):p(c).map(l=>e.jsx(ne,{a:l,onOpen:()=>v(l),large:!0},l.id))}):e.jsxs("div",{className:"grid grid-cols-7 gap-1",children:[["Lun","Mar","Mer","Jeu","Ven","Sam","Dim"].map(l=>e.jsx("div",{className:"text-center text-xs font-medium text-muted-foreground py-1",children:l},l)),N.map(l=>e.jsxs("div",{className:`rounded-lg border p-1 space-y-1 ${a==="week"?"min-h-[260px]":"min-h-[96px]"} ${a==="month"&&!tt(l,c)?"opacity-40":""} ${st(l)?"border-primary":"border-border"}`,children:[e.jsx("button",{className:"text-xs font-semibold text-foreground hover:text-primary",onClick:()=>{y(l),u("day")},children:M(l,"d")}),p(l).map(_=>e.jsx(ne,{a:_,onOpen:()=>v(_),large:a==="week"&&!1}
2,_.id))]},l.toISOString()))]})]})})},Dt=()=>M(new Date,"yyyy-MM-dd"),Nt=()=>M(new Date(Date.now()+864e5),"yyyy-MM-dd"),$=t=>{const s=t.appointment_date;if(!s)return"upcoming";const n=Dt();return s>n?"upcoming":s<n?"done":"today"},G=async()=>{const{data:t,error:s}=await w.from("technical_visit_confirmations").select("id, lead_id, status, appointment_date, appointment_title, start_time, end_time, first_name, last_name, company, site_address, site_address_complement, site_city, site_zip, sent_at, technician_name:assigned_name").neq("status","draft").order("appointment_date",{ascending:!0});if(s)throw s;return t??[]},St={sent:"Envoyé",viewed:"Consulté",confirmed:"Confirmé",change_requested:"Modification demandée",cancelled:"Annulé"},H=t=>t?t.slice(0,5).replace(":","h"):"",me=()=>{const[t,s]=d.useState([]),n=Z();return d.useEffect(()=>{G().then(r=>s(r.filter(a=>a.appointment_date===Nt()&&a.status!=="cancelled"))).catch(()=>{})},[]),t.length?e.jsx(V,{className:"p-4 mb-4 border-primary/40 bg-primary/5",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(ie,{className:"w-5 h-5 text-primary shrink-0 mt-0.5"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"font-semibold text-foreground",children:t.length>1?`${t.length} rendez-vous demain`:"Rendez-vous demain"}),t.map(r=>e.jsxs("button",{onClick:()=>n(`/advisor/leads/${r.lead_id}/rendez-vous-technique`),className:"block text-sm text-muted-foreground hover:text-foreground text-left",children:[H(r.start_time)," · ",r.first_name," ",r.last_name," ",r.site_city?`— ${r.site_city}`:""]},r.id))]})]})}):null},Ct=()=>{const t=Z(),[s,n]=d.useState([]),[r,a]=d.useState(!0),[u,c]=d.useState("all"),[y,p]=d.useState(!1),[v,k]=d.useState(!1),[N,C]=d.useState(null),l=async()=>{k(!0);try{const o=await ze();C(o.errors?.length?"Synchronisation Google Agenda partielle":`Google Agenda synchronisé (${o.synced})`)}catch{C("Échec de la synchronisation Google Agenda")}finally{k(!1)}};d.useEffect(()=>{G().then(n).catch(console.error).finally(()=>a(!1)),l()},[]);const _=d.useMemo(()=>{const o={upcoming:0,today:0,done:0};return s.forEach(x=>o[$(x)]++),o},[s]),i=d.useMemo(()=>{const o=u==="all"?s:s.filter(x=>$(x)===u);return u==="done"?[...o].reverse():o},[s,u]),m=[{key:"all",label:"Tous",count:s.length,icon:Y},{key:"upcoming",label:"À venir",count:_.upcoming,icon:Fe},{key:"today",label:"En cours",count:_.today,icon:We},{key:"done",label:"Finalisés",count:_.done,icon:Ie}],g={upcoming:"À venir",today:"En cours",done:"Finalisé"};return e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"font-display text-xl font-bold text-foreground",children:"Mes Rendez-vous"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Rendez-vous de repérage technique envoyés"})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[N&&e.jsx("span",{className:"text-xs text-muted-foreground",children:N}),e.jsxs(I,{variant:"outline",className:"gap-2 rounded-xl",onClick:l,disabled:v,children:[v?e.jsx(F,{className:"w-4 h-4 animate-spin"}):e.jsx(ye,{className:"w-4 h-4"})," Synchroniser Google Agenda"]}),e.jsxs(I,{variant:"outline",className:"gap-2 rounded-xl",onClick:()=>p(!0),children:[e.jsx(Y,{className:"w-4 h-4"})," Calendrier"]})]})]}),e.jsx(jt,{open:y,onOpenChange:p,items:s}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:m.map(o=>e.jsxs("button",{onClick:()=>c(o.key),className:`rounded-xl border p-4 text-left transition-colors ${u===o.key?"border-primary bg-primary/10":"border-border bg-card hover:bg-muted/50"}`,children:[e.jsx(o.icon,{className:"w-5 h-5 text-primary mb-2"}),e.jsx("p",{className:"text-2xl font-bold text-foreground",children:o.count}),e.jsx("p",{className:"text-xs text-muted-foreground",children:o.label})]},o.key))}),r?e.jsx("div",{className:"flex justify-center py-12",children:e.jsx(F,{className:"w-6 h-6 animate-spin text-primary"})}):i.length===0?e.jsx(V,{className:"p-8 text-center text-sm text-muted-foreground",children:"Aucun rendez-vous."}):e.jsx("div",{className:"space-y-2",children:i.map(o=>{const x=$(o),j=Ee({site_address:o.site_address,site_address_complement:o.site_address_complement,site_zip:o.site_zip,site_city:o.site_city});return e.jsxs(V,{className:"p-4 cursor-pointer hover:bg-muted/40 transition-colors",onClick:()=>t(`/advisor/leads/${o.lead_id}/rendez-vous-technique`),children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("p",{className:"font-semibold text-foreground",children:[o.first_name," ",o.last_name,o.company?e.jsxs("span",{className:"text-muted-foreground font-normal",children:[" · ",o.company]}):null]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:o.appointment_title||"Repérage technique"}),(o.site_city||o.site_zip)&&e.jsxs("p",{className:"text-xs text-muted-foreground flex items-center gap-1 mt-1",children:[e.jsx(Be,{className:"w-3 h-3"})," ",o.site_zip," ",o.site_city]})]}),e.jsxs("div",{className:"text-right space-y-1",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:o.appointment_date?M(rt(o.appointment_date),"EEEE d MMMM yyyy",{locale:P}):"Date à définir"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[H(o.start_time),o.end_time?` – ${H(o.end_time)}`:""]}),e.jsxs("div",{className:"flex gap-1 justify-end",children:[e.jsx(Q,{variant:x==="today"?"default":"secondary",children:g[x]}),e.jsx(Q,{variant:"outline",children:St[o.status]??o.status})]})]})]}),(j||o.appointment_date&&o.start_time)&&e.jsxs("div",{className:"flex flex-wrap gap-2 mt-3 pt-3 border-t border-border",onClick:S=>S.stopPropagation(),children:[o.appointment_date&&o.start_time&&e.jsxs(I,{size:"sm",variant:"outline",className:"gap-2 rounded-xl",onClick:()=>Me({title:o.appointment_title||"Rendez-vous Bernard",location:j,date:o.appointment_date,startTime:o.start_time,endTime:o.end_time,description:null,url:`${window.location.origin}/advisor/leads/${o.lead_id}/rendez-vous-technique`}),children:[e.jsx(Ke,{className:"w-4 h-4"})," Ajouter à mon calendrier"]}),j&&e.jsxs(I,{size:"sm",variant:"outline",className:"gap-2 rounded-xl",onClick:()=>window.open(`https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(j)}`,"_blank"),children:[e.jsx(Ve,{className:"w-4 h-4"})," Afficher la carte"]})]})]},o.id)})})]})},kt=Object.freeze(Object.defineProperty({__proto__:null,TomorrowAppointmentsAlert:me,default:Ct,fetchSentAppointments:G,phaseOf:$},Symbol.toStringTag,{value:"Module"})),Et=d.lazy(()=>O(()=>import("./DashboardContent-CPF2jGaK.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52]))),Mt=d.lazy(()=>O(()=>import("./LeadsContent-BdV63J8r.js"),__vite__mapDeps([53,1,2,54,4,5,6,7,8,3,9,10,11,12,13,40,55,56,57,58,49,24,47,14,15,59,16,17,18,19,20,21,22,23,25,26,60,61,38,62,63,64,65,66,67,37,68,69,30,70,46,35,51,71,72,39,73,45]))),It=d.lazy(()=>O(()=>import("./ProjectsManagementContent-DBo3Z5_9.js"),__vite__mapDeps([74,1,2,14,4,5,6,7,8,75,21,22,23,24,76,20,3,9,10,11,12,13,25,56,16,67,30,70,46,59,15,77,78,79,72,80,81,69,45,19,82,83,49,62,84,85,86,87,88,89,90,91,92,93,68,63,34,94,51,37,95,18,17,26,96]))),zt=d.lazy(()=>O(()=>import("./CheckupSecurityContent-CPk9dXz6.js"),__vite__mapDeps([97,1,2,14,4,5,6,7,8,59,20,98,99,100,21,22,23,24,101,80,94,102,31,103,19,33,47,29,38,3,9,10,11,12,13,44,104,78,83,30,88,34]))),Ot=
2d.lazy(()=>O(()=>import("./ReportsContent-DT-fRkFT.js"),__vite__mapDeps([105,1,2,14,4,5,6,7,8,15,61,19,38,62,63,25,40,47,106,45,46]))),At=d.lazy(()=>O(()=>Promise.resolve().then(()=>kt),void 0)),Tt=d.lazy(()=>O(()=>import("./RemunerationContent-BzbkdW-H.js"),__vite__mapDeps([107,1,2,14,4,5,6,7,8,15,16,37,41,108,43,49,58,48,44,109,23,22]))),Ut=d.lazy(()=>O(()=>import("./SettingsContent-Dq0Vwkir.js"),__vite__mapDeps([110,1,2,14,4,5,6,7,8,76,111,83]))),Rt=d.lazy(()=>O(()=>import("./AdvisorOnboardingForm-CLHWXJUC.js"),__vite__mapDeps([112,1,2,4,5,6,7,8,14,90,24,20,113,114,38,115,58,86,116,19,59,48,117,64,111,15,22,83,118,119,104,102,120,121,69,70,46,122,123,124,31,125,126,127,128,129,130,26,131,132,133,134,45,88,135,136,47,30,137,138,139,51,42,25]))),ae=()=>e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(F,{className:"w-6 h-6 animate-spin text-primary"})}),Pt=()=>{const[t,s]=we(),n=t.get("tab")||"dashboard",[r,a]=d.useState(n);d.useEffect(()=>{const b=t.get("tab");b&&b!==r&&a(b)},[t]);const u=d.useCallback(b=>{a(b),s({tab:b},{replace:!0})},[s]),[c,y]=d.useState(""),[p,v]=d.useState(null),[k,N]=d.useState(null);d.useEffect(()=>{const b=sessionStorage.getItem("checkup_prefill_lead");if(b){sessionStorage.removeItem("checkup_prefill_lead");try{N(JSON.parse(b)),a("checkup")}catch{}}},[]);const{user:C,loading:l,isAdmin:_,isAdvisor:i,isClient:m,isSuperAdmin:g,avatarUrl:o,getDisplayName:x,getInitials:j,signOut:S}=oe(),{status:T,loading:D}=bt(),{isWidgetVisible:h,showWidget:f,hideWidget:E}=ke("advisor"),U=!l&&!C,W=!l&&C&&!i,pe=!l&&!D&&C&&i&&!_&&!T.onboardingCompleted;if(l||D)return e.jsx("div",{className:"min-h-screen bg-background flex items-center justify-center",children:e.jsx(F,{className:"w-8 h-8 animate-spin text-primary"})});if(U)return e.jsx(Se,{title:"Espace Security Advisor",subtitle:"Connectez-vous pour accéder à votre espace conseiller",variant:"advisor"});if(W)return e.jsx(Ce,{requiredRole:"Conseiller ou Administrateur"});if(pe)return e.jsx(d.Suspense,{fallback:e.jsx(ae,{}),children:e.jsx(Rt,{})});const J=[{id:"dashboard",icon:qe,label:"Dashboard"},{id:"leads",icon:xe,label:"Leads"},{id:"reports",icon:ve,label:"Mes CheckUp"},{id:"projects",icon:Ye,label:"Projets"},{id:"appointments",icon:Y,label:"Mes Rendez-vous"},{id:"remuneration",icon:He,label:"Rémunération"},{id:"settings",icon:Ze,label:"Paramètres"}],fe=()=>"Security Advisor",he={initials:j(),name:x(),role:fe(),avatarUrl:o,isAdmin:_,isAdvisor:i,isClient:m,onSignOut:S},ge=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"hidden md:flex flex-1 max-w-md",children:e.jsxs("div",{className:"relative w-full",children:[e.jsx(Ge,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-5 h-5 text-muted-foreground"}),e.jsx(be,{value:c,onChange:b=>y(b.target.value),placeholder:"Rechercher un projet, client...",className:"pl-10"})]})}),e.jsx(I,{variant:"outline",size:"icon",className:"h-8 w-8 sm:h-10 sm:w-10",children:e.jsx(ie,{className:"w-4 h-4 sm:w-5 sm:h-5"})}),e.jsx(Ne,{className:"hidden sm:inline-flex"})]});return e.jsx(je,{menuItems:J,activeTab:r,onTabChange:u,user:he,headerTitle:J.find(b=>b.id===r)?.label||"Dashboard",headerActions:ge,environment:"advisor",isSuperAdmin:g,showSurpriseWidget:!h,onShowSurpriseWidget:f,children:e.jsx(d.Suspense,{fallback:e.jsx(ae,{}),children:e.jsxs(De,{activeKey:r,children:[e.jsxs(A,{tabKey:"dashboard",children:[e.jsx(me,{}),e.jsx(Et,{onNavigate:u,showSurpriseWidget:h,onCloseSurpriseWidget:E})]}),e.jsx(A,{tabKey:"leads",children:e.jsx(Mt,{onStartCheckupWithLead:b=>{N(b),u("checkup")}})}),e.jsx(A,{tabKey:"projects",children:e.jsx(It,{})}),e.jsx(A,{tabKey:"checkup",volatile:!0,children:e.jsx(zt,{resumeProjectId:p,onResumeHandled:()=>v(null),onCheckupFinalized:()=>u("reports"),initialLeadData:k,onInitialLeadHandled:()=>N(null)})}),e.jsx(A,{tabKey:"reports",children:e.jsx(Ot,{onResumeCheckup:b=>{v(b),u("checkup")}})}),e.jsx(A,{tabKey:"appointments",children:e.jsx(At,{})}),e.jsx(A,{tabKey:"remuneration",children:e.jsx(Tt,{})}),e.jsx(A,{tabKey:"settings",children:e.jsx(Ut,{})})]})})})},ps=Object.freeze(Object.defineProperty({__proto__:null,default:Pt},Symbol.toStringTag,{value:"Module"}));
2export{ps as A,bt as u};

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.