PageSourceSearch

https://horizoncrm.ca/_assets/client-BCNeYVNf.js

js horizoncrm.ca collected 2026-09-24 14:35:46 UTC 6,361 bytes, 1 lines download raw bytes

1import{S as p,o as N,s as f,x as q,cn as S,r as _,A as k,j as e,aW as T,ay as j,Z as I,bb as B,Y as E,c1 as b,a4 as P}from"./vendor-B5KZbkSs.js";import{o as A,u as M,I as L,B as R}from"./index-DS57U4Yv.js";import{u as w,F as H,a as V,c as D,d as O}from"./Form-2-ZGlGts.js";const Y=N({email:f().email("Adresse courriel invalide / Invalid email address")}),G=async(a,n)=>{const r=Y.parse(a),t=await fetch("/_api/client/request-access-link",{method:"POST",body:p.stringify(r),...n,headers:{"Content-Type":"application/json",...n?.headers??{}}});if(!t.ok){const o=p.parse(await t.text());throw new Error(o.error)}return p.parse(await t.text())},W="_pageContainer_1lzlv_1",$="_loginCard_1lzlv_10",J="_header_1lzlv_20",U="_logoContainer_1lzlv_27",Z="_logoIcon_1lzlv_39",K="_logoIconSecondary_1lzlv_43",Q="_title_1lzlv_52",X="_content_1lzlv_59",ee="_instructionBox_1lzlv_65",se="_iconCircle_1lzlv_73",re="_instructionText_1lzlv_84",ne="_englishText_1lzlv_98",te="_helpHeader_1lzlv_113",ie="_loadingState_1lzlv_123",ae="_spinner_1lzlv_133",oe="_requestFormContainer_1lzlv_147",le="_requestDescription_1lzlv_155",ce="_requestForm_1lzlv_147",de="_requestButton_1lzlv_166",ue="_successMessage_1lzlv_170",me="_errorMessage_1lzlv_182",he="_errorContainer_1lzlv_190",ge="_iconCircleError_1lzlv_197",xe="_messageBlock_1lzlv_209",s={pageContainer:W,loginCard:$,header:J,logoContainer:U,logoIcon:Z,logoIconSecondary:K,title:Q,content:X,instructionBox:ee,iconCircle:se,instructionText:re,englishText:ne,helpHeader:te,loadingState:ie,spinner:ae,requestFormContainer:oe,requestDescription:le,requestForm:ce,requestButton:de,successMessage:ue,errorMessage:me,errorContainer:he,iconCircleError:ge,messageBlock:xe},ve=N({email:f().email("Adresse invalide / Invalid email")}),Ce=()=>{const a=q(),[n]=S(),{authState:r,login:t,logout:o}=A(),{regionCode:F}=M(),m=F==="FR_FR",[h,C]=_.useState(null),[l,z]=_.useState(!1),c=n.get("token")||n.get("accessToken"),g=n.get("redirect"),x=g&&g.startsWith("/client/")?g:"/client/dashboard",i=k({mutationFn:G}),d=w({defaultValues:{email:""},schema:ve});if(_.useEffect(()=>{c&&!l&&!h&&(r.type==="unauthenticated"||r.type==="authenticated")&&(async()=>{z(!0),C(null);try{r.type==="authenticated"&&o(),await t(c),a(x,{replace:!0})}catch(v){console.error("Auto-login failed:",v),C("invalid_token")}finally{z(!1)}})()},[c,r.type,t,o,l,h,a,x]),r.type==="authenticated"&&!c&&!l)return e.jsx(T,{to:x,replace:!0});const y=()=>i.isSuccess?e.jsxs("div",{className:s.successMessage,children:[e.jsx("p",{children:"Si cette adresse est enregistrée, un lien d'accès vient de vous être envoyé. Vérifiez aussi vos courriers indésirables."}),e.jsx("p",{className:s.englishText,children:"If this email is registered, an access link has just been sent to you. Please also check your spam folder."})]}):e.jsxs("div",{className:s.requestFormContainer,children:[e.jsxs("div",{className:s.helpHeader,children:[e.jsx(P,{size:16}),e.jsx("span",{children:"Recevoir mon lien d'accès / Get my access link"})]}),e.jsx("p",{className:s.requestDescription,children:m?"Entrez votre adresse e-mail pour recevoir un nouveau lien.":"Entrez votre adresse courriel pour recevoir un nouveau lien."}),e.jsx(H,{...d,children:e.jsxs("form",{onSubmit:d.handleSubmit(u=>i.mutate(u)),className:s.requestForm,children:[e.jsxs(V,{name:"email",children:[e.jsx(D,{children:e.jsx(L,{type:"email",placeholder:m?"Votre adresse e-mail / Your email":"Votre adresse courriel / Your email",value:d.values.email,onChange:u=>d.setValues(v=>({...v,email:u.target.value})),disabled:i.isPending})}),e.jsx(O,{})]}),e.jsx(R,{type:"submit",disabled:i.isPending,className:s.requestButton,children:i.isPending?"Envoi... / Sending...":"Recevoir mon lien d'accès / Get my link"})]})}),i.isError&&e.jsx("p",{className:s.errorMessage,children:"Une erreur est survenue. Veuillez réessayer. / An error occurred. Please try again."})]});return r.type==="loading"||l?e.jsxs(e.Fragment,{children:[e.jsx(j,{children:e.jsx("title",{children:"Portail Client - Floot"})}),e.jsx("div",{className:s.pageContainer,children:e.jsx("div",{className:s.loginCard,children:e.jsxs("div",{className:s.loadingState,children:[e.jsx("div",{className:s.spinner}),e.jsx("p",{children:"Connexion en cours..."}),e.jsx("p",{className:s.englishText,children:"Logging in..."})]})})})]}):h==="invalid_token"?e.jsxs(e.Fragment,{children:[e.jsx(j,{children:e.jsx("title",{children:"Erreur de connexion - Floot"})}),e.jsx("div",{className:s.pageContainer,children:e.jsx("div",{className:s.loginCard,children:e.jsxs("div",{className:s.errorContainer,children:[e.jsx("div",{className:s.iconCircleError,children:e.jsx(I,{size:32})}),e.jsx("h1",{className:s.title,children:"Lien invalide / Invalid Link"}),e.jsxs("div",{className:s.messageBlock,children:[e.jsx("p",{children:"Le lien d'accès est invalide ou a expiré."}),e.jsx("p",{children:"Veuillez contacter votre représentant pour obtenir un n
1ouveau lien."})]}),e.jsxs("div",{className:`${s.messageBlock} ${s.englishText}`,children:[e.jsx("p",{children:"The access link is invalid or expired."}),e.jsx("p",{children:"Please contact your representative for a new link."})]}),y()]})})})]}):e.jsxs(e.Fragment,{children:[e.jsxs(j,{children:[e.jsx("title",{children:"Portail Client - Floot"}),e.jsx("meta",{name:"description",content:"Accédez à votre portail client pour suivre vos projets, devis et factures."})]}),e.jsx("div",{className:s.pageContainer,children:e.jsxs("div",{className:s.loginCard,children:[e.jsxs("header",{className:s.header,children:[e.jsxs("div",{className:s.logoContainer,children:[e.jsx(B,{size:28,className:s.logoIcon}),e.jsx(E,{size:24,className:s.logoIconSecondary})]}),e.jsx("h1",{className:s.title,children:"Portail Client"})]}),e.jsxs("main",{className:s.content,children:[e.jsxs("div",{className:s.instructionBox,children:[e.jsx("div",{className:s.iconCircle,children:e.jsx(b,{size:24})}),e.jsxs("div",{className:s.instructionText,children:[e.jsxs("p",{children:["Pour accéder à votre portail client, veuillez utiliser le ",e.jsx("strong",{children:"lien unique"})," ",m?"envoyé à votre adresse e-mail.":"envoyé à votre adresse courriel."]}),e.jsxs("p",{className:s.englishText,children:["To access your client portal, please use the ",e.jsx("strong",{children:"unique link"})," sent to your email address."]})]})]}),y()]})]})})]})};export{Ce 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.