1import{r as n,j as e}from"./react-BoPr1yjH.js";import{u as x,e as v,H as b,I as p,B as j}from"./index-AyuttgAc.js";import{C as E,b as w,c as y,d as C,a as D}from"./card-uH32uaLM.js";import{a as N}from"./react-router-8kbBbRMs.js";import"./@supabase-D9VVd71y.js";import"./react-dom-oPhaD6rJ.js";import"./scheduler-CzFDRTuY.js";import"./@radix-ui-uPnaQNgx.js";import"./@floating-ui-B3T_IbQx.js";import"./react-remove-scroll-DUOJNfth.js";import"./tslib-CDuPK5Eb.js";import"./react-remove-scroll-bar-xMAqS-HS.js";import"./react-style-singleton-Bmo2mwzG.js";import"./get-nonce-C-Z93AgS.js";import"./use-sidecar-CmYptSlY.js";import"./use-callback-ref-CDfTGrR-.js";import"./aria-hidden-DQ5UC2Eg.js";import"./class-variance-authority-Dp3B9jqt.js";import"./clsx-B-dksMZM.js";import"./tailwind-merge-Dnoi3Axr.js";import"./lucide-react-Dy5dDxJP.js";import"./next-themes-D2i0MUJ6.js";import"./sonner-Cu3kxFY5.js";import"./@tanstack-Co7gEp7O.js";import"./react-router-dom-CBJBY5ZW.js";import"./@remix-run-Br25Cn4W.js";import"./react-hook-form-CIeLFd_4.js";import"./react-helmet-async-B6H6Ruhg.js";import"./react-fast-compare-DFNOQxth.js";import"./invariant-C1CP3kcu.js";import"./shallowequal-Bda6gaBQ.js";const ae=()=>{const[t,u]=n.useState(""),[a,g]=n.useState(""),[d,l]=n.useState(!1),c=N(),{toast:o}=x(),{user:m,signIn:h}=v();n.useEffect(()=>{m&&(console.log("User already logged in, redirecting to dashboard"),
1c("/dashboard"))},[m,c]);const f=async r=>{if(r.preventDefault(),l(!0),console.log("Form submitted with email:",t),console.log("Password length:",a.length),!t||!a){o({title:"Erro",description:"Por favor, preencha todos os campos.",variant:"destructive"}),l(!1);return}try{const{error:s}=await h(t,a);if(s){console.log("Login error details:",{message:s.message,status:s.status,name:s.name});let i="Erro no login. Verifique suas credenciais.";s.message.includes("Invalid login credentials")?i="Email ou senha incorretos.":s.message.includes("Email not confirmed")?i="Email não confirmado.":s.message.includes("Database error")&&(i="Erro de conexão. Tente novamente em alguns instantes."),o({title:"Erro no login",description:i,variant:"destructive"})}else console.log("Login successful, will redirect via useEffect"),o({title:"Login realizado com sucesso!",description:"Redirecionando para o dashboard..."})}catch(s){console.error("Unexpected login error:",s),o({title:"Erro inesperado",description:"Tente novamente em alguns instantes.",variant:"destructive"})}finally{l(!1)}};return e.jsxs("div",{className:"min-h-screen bg-gradient-to-br from-pink-50 via-white to-red-50",children:[e.jsx(b,{}),e.jsx("div",{className:"pt-20 flex items-center justify-center px-4 min-h-screen",children:e.jsxs(E,{className:"w-full max-w-md",children:[e.jsxs(w,{className:"text-center",children:[e.jsx("div",{className:"text-3xl font-bold mb-4",style:{color:"#DF5D6F"},children:"Vibe Saúde"}),e.jsx(y,{className:"text-2xl",children:"Ãrea Restrita"}),e.jsx(C,{children:"Dashboard exclusivo da equipe de gestão para acompanhar métricas de tráfego e solicitações de demo"})]}),e.jsx(D,{children:e.jsxs("form",{onSubmit:f,className:"space-y-4",children:[e.jsx("div",{children:e.jsx(p,{type:"email",placeholder:"Email",value:t,onChange:r=>u(r.target.value),required:!0})}),e.jsx("div",{children:e.jsx(p,{type:"password",placeholder:"Senha",value:a,onChange:r=>g(r.target.value),required:!0})}),e.jsx(j,{type:"submit",className:"w-full text-white",style:{backgroundColor:"#DF5D6F"},disabled:d,children:d?"Carregando...":"Acessar Dashboard"})]})})]})})]})};export{ae 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.