1import{r as n,j as e}from"./framer-motion-CQxuJa5n.js";import{r as E,u as K,b as L,s as j,p as v,C as k,f as N,ac as q,g as y,h as w,i as b,af as C,B as D,d as M,j as l,I as o,S as O}from"./index-CSx7K-7R.js";import{C as A}from"./checkbox-vurG2JZY.js";import{A as U,a as B}from"./alert-DDlZdiu2.js";import{U as G}from"./user-DwnLXD35.js";import{M as V}from"./mail-CQVr-2Yp.js";import{L as F}from"./lock-CwA9FnEu.js";import{C as J}from"./circle-check-B_lwCfqV.js";import"./recharts-CFjfazL9.js";import"./index-srxnih4L.js";import"./check-BKeeD-3t.js";function te(){const[p]=E(),u=K(),{toast:r}=L(),c=p.get("invite")||p.get("token"),[T,x]=n.useState(!0),[h,g]=n.useState(!1),[f,d]=n.useState(null),[I,S]=n.useState(null),[s,i]=n.useState({name:"",email:"",password:"",confirmPassword:"",acceptTerms:!1,acceptDataResponsibility:!1});n.useEffect(()=>{c?P():(d("Manglende invitationslink"),x(!1))},[c]);const P=async()=>{try{const{data:a,error:t}=await j.functions.invoke("portal-invitation-validate",{body:{inviteToken:c,action:"validate"}});if(t||!a?.valid){d(a?.error||"Ugyldigt eller udløbet invitationslink");return}S({agentId:a.agentId,agentName:a.agentName,companyName:a.companyName||"Virksomhed",expiresAt:a.expiresAt})}catch(a){console.error("Validation error:",a),d("Kunne ikke validere invitation")}finally{x(!1)}},R=async a=>{if(a.preventDefault(),!s.name.trim()){r({title:"Navn påkrævet",variant:"destructive"});return}if(!s.email.trim()){r({title:"Email påkrævet",variant:"destructive"});return}if(s.password.length<6){r({title:"Adgangskode skal være mindst 6 tegn",variant:"destructive"});return}if(s.password!==s.confirmPassword){r({title:"Adgangskoder matcher ikke",variant:"destructive"});return}if(!s.acceptTerms||!s.acceptDataResponsibility){r({title:"Du skal acceptere vilkårene",variant:"destructive"});return}g(!0);try{const{data:t,error:m}=await j.functions.invoke("portal-invitation-validate",{body:{inviteToken:c,action:"register",name:s.name,email:s.email,password:s.password}});if(m||!t?.success)throw new Error(t?.error||"Kunne ikke oprette konto");r({title:"Konto oprettet!",description:"Du sendes nu til din kundeportal"}),u(`/customer-portal?token=${t.portalToken}`)}catch(t){const m=t instanceof Error?t.message:"Kunne ikke oprette konto";r({title:"Fejl",description:m,variant:"destructive"})}finally{g(!1)}};return T?e.jsx("div",{className:"min-h-screen bg-background flex items-center justify-center",children:e.jsxs("div",{className:"text-center space-y-4",children:[e.jsx(v,{className:"w-12 h-12 animate-spin text-primary mx-auto"}),e.jsx("p",{className:"text-muted-foreground",children:"Validerer invitation..."})]})}):f?e.jsx("div",{className:"min-h-screen bg-background flex items-center justify-center p-4",children:e.jsxs(k,{className:"max-w-md w-full",children:[e.jsxs(N,{className:"text-center",children:[e.jsx(q,{className:"w-12 h-12 text-destructive mx-auto mb-4"}),e.jsx(y,{children:"Invitation Ugyldig"}),e.jsx(w,{children:f})]}),e.jsx(b,{children:e.jsx("p",{className:"text-sm text-muted-foreground text-center",children:"Kontakt venligst virksomheden for et nyt invitationslink, eller tjek om linket er udløbet."})}),e.jsx(C,{className:"flex justify-center",children:e.jsx(D,{variant:"outline",onClick:()=>u("/"),children:"Til Forsiden"})})]})}):e.jsx("div",{className:"min-h-screen bg-background flex items-center justify-center p-4",children:e.jsxs(k,{className:"max-w-lg w-full",children:[e.jsxs(N,{className:"text-center",children:[e.jsx("div",{className:"w-12 h-12 bg-primary/10 rounded-full flex items-center justify-center mx-auto mb-4",children:e.jsx(M,{className:"w-6 h-6 text-primary"})}),e.jsx(y,{className:"text-2xl",children:"Opret Kundeportal Adgang"}),e.jsxs(w,{children:["Du er inviteret til at administrere ",e.jsx("strong",{children:I?.agentName})]})]}),e.jsxs("form",{onSubmit:R,children:[e.jsxs(b,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(l,{htmlFor:"name",className:"flex items-center gap-2",children:[e.jsx(G,{className:"w-4 h-4"}),"Fulde navn"]}),e.jsx(o,{id:"name",type:"text",placeholder:"Dit navn",value:s.name,onChange:a=>i(t=>({...t,name:a.target.value})),required:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(l,{htmlFor:"email",className:"flex items-center gap-2",children:[e.jsx(V,{className:"w-4 h-4"}),"Email"]}),e.jsx(o,{id:"email",type:"email",placeholder:"[email protected]",value:s.email,onChange:a=>i(t=>({...t,email:a.target.value})),required:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(l,{htmlFor:"password",className:"flex items-center gap-2",children:[e.jsx(F,{className:"w-4 h-4"}),"Opret adgangskode"]}),e.jsx(o,{id:"password",type:"password",placeholder:"Mindst 6 tegn",value:s.password,onChange:a=>i(t=>({...t,password:a.target.value})),required:!0,minLength:6})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(l,{htmlFor:"confirmPassword",className:"flex items-center gap-2",children:[e.jsx(F,{className:"w-4 h-4"}),"Gentag adgangskode"]}),e.jsx(o,{id:"confirmPassword",type:"password",placeholder:"Gentag adgangskode",value:s.confirmPassword,onChange:a=>i(t=>({...t,confirmPassword:a.target.value})),required:!0})]}),e.jsxs(U,{children:[e.jsx(O,{className:"w-4 h-4"}),e.jsxs(B,{children:[e.jsx("strong",{children:"GDPR & Datasikkerhed:"})," Du administrerer selv dine data. Agento AI har ikke adgang til det indhold du opretter i portalen."]})]}),e.jsxs("div",{className:"space-y-3 pt-2",children:[e.jsxs("div",{className:"flex items-start space-x-3",children:[e.jsx(A,{id:"acceptTerms",checked:s.acceptTerms,onCheckedChange:a=>i(t=>({...t,acceptTerms:a}))}),e.jsxs(l,{htmlFor:"acceptTerms",className:"text-sm font-normal cursor-pointer",children:["Jeg accepterer ",e.jsx("a",{href:"/vilkaar",target:"_blank",className:"text-primary underline",children:"vilkår og betingelser"})]})]}),e.jsxs("div",{className:"flex items-start space-x-3",children:[e.jsx(A,{id:"acceptDataResponsibility",checked:s.acceptDataResponsibility,onCheckedChange:a=>i(t=>({...t,acceptDataResponsibility:a}))}),e.jsx(l,{htmlFor:"acceptDataResponsibility",className:"text-sm font-normal cursor-pointer",children:"Jeg forstår at jeg er ansvarlig for de data jeg opretter i portalen, og at Agento AI ikke har adgang til personfølsomme oplysninger jeg tilføjer"})]})]})]}),e.jsx(C,{children:e.jsx(D,{type:"submit",className:"w-full",disabled:h||!s.acceptTerms||!s.acceptDataResponsibility,children:h?e.jsxs(e.Fragment,{children:[e.jsx(v,{className:"w-4 h-4 mr-2 animate-spin"}),"Opretter konto..."]}):e.jsxs(e.Fragment,{children:[e.jsx(J,{className:"w-4 h-4 mr-2"}),"Opret Konto & Log Ind"]})})})]})]})})}export{te 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.