1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8765],{1870:(e,t,a)=>{a.d(t,{BN:()=>u,_3:()=>c,qt:()=>r,sr:()=>o,t5:()=>d});var s=a(8398);let r="Si tu correo est\xe1 en nuestro sistema, te enviaremos un email con instrucciones.",n=[".test",".example",".invalid",".localhost",".local"],l=new RegExp("^".concat("[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*","@(?:").concat("[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?","\\.)+").concat("[A-Za-z]{2,}","$")),i=/[\x00-\x20\x7f]/,o=s.Ik({email:s.Yj().transform(e=>e.trim().toLowerCase()).refine(e=>{if(0===e.length||e.length>254||i.test(e))return!1;let t=e.indexOf("@");if(-1===t||t!==e.lastIndexOf("@"))return!1;let a=e.slice(0,t);return!(0===a.length||a.length>64||e.includes("..")||!l.test(e)||n.some(t=>e.endsWith(t)))},{message:"Introduce un correo valido"})}),c=s.Ik({password:s.Yj().min(8,{message:"La contrasena debe tener al menos ".concat(8," caracteres")}).max(128,{message:"La contrasena no puede superar los ".concat(128," caracteres")}),confirm:s.Yj()}).refine(e=>e.password===e.confirm,{message:"Las contrasenas no coinciden",path:["confirm"]});function d(e){return{email:e,redirectTo:"/reset-password"}}function u(e,t){return{newPassword:e,token:t}}},14197:(e,t,a)=>{a.d(t,{Button:()=>d,aO:()=>m,az:()=>f});var s=a(6733),r=a(73885),n=a(65420),l=a(64665),i=a(72087),o=a(63843);let c=(0,n.F)("inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-full text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#0dd922]/30 focus-visible:ring-offset-2 focus-visible:ring-offset-[#181A27] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-5 [&_svg]:shrink-0",{variants:{variant:{default:"bg-secondary text-foreground shadow hover:bg-primary/90",secondary:"bg-accent/20 text-foreground shadow-sm hover:bg-accent/30",outline:"border border-white/5 text-foreground shadow-sm hover:bg-white/10",ghost:"text-foreground transition-all hover:brightness-110 hover:[&>div>svg]:scale-120 hover:[&>div>svg]:brightness-110 [&>div>svg]:transition-all",link:"text-accent hover:text-accent-secondary hover:brightness-110"},size:{default:"h-full px-2 py-2",sm:"h-9 !rounded-xl px-3",lg:"h-10 !rounded-md px-8",icon:"h-10 w-10 px-1 py-1"}},defaultVariants:{variant:"default",size:"default"}}),d=l.forwardRef((e,t)=>{let{className:a,variant:n,size:l,asChild:o=!1,...d}=e,u=o?r.DX:"button";return(0,s.jsx)(u,{className:(0,i.cn)(c({variant:n,size:l,className:a})),ref:t,...d})});d.displayName="Button";let u=l.forwardRef((e,t)=>{let{children:a,className:r="",...n}=e;return(0,s.jsx)("button",{ref:t,type:"button",className:(0,i.cn)("group relative flex h-12 w-auto items-center justify-between rounded-full bg-accent/0 text-foreground px-2 py-2 border border-white/0 hover:bg-white/0 font-medium font-inter cursor-pointer transition-colors",r),...n,children:(0,s.jsx)("span",{children:a})})});u.displayName="LoginButton";let f={Button:u},m=l.forwardRef((e,t)=>{let{children:a,className:r="",...n}=e;return(0,s.jsxs)("button",{ref:t,type:"button",className:(0,i.cn)("group relative flex items-center gap-1 overflow-hidden rounded-[100px] border-[1.5px] border-white/10 bg-accent px-8 py-3 text-foreground cursor-pointer transition-all duration-[600ms] ease-[cubic-bezier(0.23,1,0.32,1)] hover:border-transparent hover:text-foreground hover:rounded-[12px] active:scale-[0.95] font-medium font-inter shadow-[0_0_12px_rgba(78,172,226,0.4)]",r),...n,children:[(0,s.jsx)(o.fl,{className:"absolute w-4 h-4 left-[-25%] stroke-[#111111] fill-none z-[9] group-hover:left-4 group-hover:stroke-white transition-all duration-[800ms] ease-[cubic-bezier(0.34,1.56,0.64,1)]"}),(0,s.jsx)("span",{className:"relative z-[1] -translate-x-3 group-hover:translate-x-3 transition-all duration-[800ms] ease-out",children:a}),(0,s.jsx)("span",{className:"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-4 h-4 bg-accent-secondary brightness-125 rounded-[50%] opacity-0 group-hover:w-[220px] group-hover:h-[220px] group-hover:opacity-100 transition-all duration-[800ms] ease-[cubic-bezier(0.19,1,0.22,1)]"}),(0,s.jsx)(o.fl,{className:"absolute w-4 h-4 right-4 stroke-[#111111] fill-none z-[9] group-hover:right-[-25%] group-hover:stroke-white transition-all duration-[800ms] ease-[cubic-bezier(0.34,1.56,0.64,1)]"})]})});m.displayName="GetStartedButton"},14474:(e,t,a)=>{a.d(t,{w:()=>r});var s=a(64665);
1function r(){let[e,t]=(0,s.useState)({user:null,status:"loading"});return(0,s.useEffect)(()=>{let e=!0;return fetch("/api/auth/get-session",{credentials:"include",cache:"no-store"}).then(e=>e.ok?e.json():null).then(a=>{var s;if(!e)return;let r=null!=(s=null==a?void 0:a.user)?s:null;t({user:r,status:r?"authenticated":"unauthenticated"})}).catch(()=>{e&&t({user:null,status:"unauthenticated"})}),()=>{e=!1}},[]),e}},28600:(e,t,a)=>{a.d(t,{f:()=>E,X:()=>I});var s,r,n=a(6733),l=a(64665),i=a(51971),o=a(25195),c=a(14197);let d=e=>{let{label:t,onClick:a}=e;return(0,n.jsx)(c.Button,{onClick:a,variant:"link",className:"w-auto !p-0 !text-base font-normal",children:(0,n.jsx)("div",{children:t})})};var u=a(85710),f=a.n(u),m=a(77449);let p=null!=(s=m.env.NEXT_PUBLIC_DISCORD_AUTH_URL)?s:"/api/auth/login",x=null!=(r=m.env.NEXT_PUBLIC_KICK_AUTH_URL)?r:"/api/auth/kick";var h=a(63843);let v=[{label:"Discord",href:p,icon:h.EI,disabled:!1},{label:"Kick",href:x,icon:h.Mo,disabled:!0}],g=()=>(0,n.jsx)("div",{className:"w-full",children:(0,n.jsxs)("div",{className:"flex flex-col items-center w-full gap-y-2",children:[(0,n.jsxs)("div",{className:"flex items-center gap-4 py-2 w-full",children:[(0,n.jsx)("hr",{className:"bg-white/20 border-none w-full h-px flex-1"}),(0,n.jsx)("p",{className:"shrink-0 text-sm text-foreground/40",children:"o inicia sesi\xf3n con"}),(0,n.jsx)("hr",{className:"bg-white/20 border-none w-full h-px flex-1"})]}),(0,n.jsx)("p",{className:"w-full rounded-lg border border-amber-400/30 bg-amber-400/10 px-3 py-2 text-center text-xs leading-snug text-amber-200/90",children:"â ï¸ La primera vez que entres con Discord se crear\xe1 una cuenta nueva. Si ya tienes cuenta, inicia sesi\xf3n con ella y vincula Discord desde tu perfil."}),(0,n.jsx)("div",{className:"flex items-center justify-center gap-4 py-2 w-full",children:v.map(e=>e.disabled?(0,n.jsx)(c.Button,{"aria-disabled":"true",className:"gap-4 cursor-not-allowed rounded-full border-none bg-black px-6 py-2 opacity-40",disabled:!0,title:"Proximamente",variant:"ghost",children:(0,n.jsxs)("div",{className:"flex flex-row items-center gap-2 text-white/50 font-medium",children:[(0,n.jsx)(e.icon,{className:"h-5 w-5"}),e.label]})},e.label):(0,n.jsx)(c.Button,{asChild:!0,variant:"ghost",className:"gap-4 roun
1ded-full border-none bg-black px-6 py-2",children:(0,n.jsx)(f(),{href:e.href,children:(0,n.jsxs)("div",{className:"flex flex-row items-center gap-2 text-white/80 font-medium",children:[(0,n.jsx)(e.icon,{className:"h-5 w-5"}),e.label]})})},e.label))})]})});var b=a(50279);let y=e=>{let{children:t,questionButtonLabel:a,backButtonLabel:s,backButtonClick:r,showSocial:l,type:i="auth"}=e;return(0,n.jsxs)(b.Zp,{className:"".concat("verify"===i?"bg-secondary/0 !rounded-2xl px-10 py-5":""),children:[(0,n.jsx)(b.Wu,{children:t}),l&&(0,n.jsx)(b.wL,{children:(0,n.jsx)(g,{})}),null!=a&&null!=s&&null!=r&&(0,n.jsx)(b.wL,{children:(0,n.jsxs)("div",{className:"flex w-full items-center justify-center gap-2",children:[(0,n.jsx)("span",{children:a}),(0,n.jsx)(d,{label:s,onClick:r})]})})]})};var w=a(8398);let j=w.Ik({email:w.Yj().email({message:"Introduce un correo electronico valido"}),password:w.Yj().min(6,{message:"La contrasena debe tener al menos 6 caracteres"})}),N=j.extend({name:w.Yj().min(3,{message:"El nombre debe tener al menos 3 caracteres"})});var C=a(1870);let k="w-full rounded-lg border border-white/5 bg-black/30 px-3 py-2.5 text-sm text-white placeholder:text-white/30 focus:border-[#4BBAFD]/40 focus:outline-none";function S(e){let{variant:t}=e,[a,s]=(0,l.useState)(""),[r,i]=(0,l.useState)(""),[d,u]=(0,l.useState)(""),[f,m]=(0,l.useState)(null),[p,x]=(0,l.useState)(!1),[h,v]=(0,l.useState)(!1),g="register"===t,b=async e=>{e.preventDefault(),m(null);let t=g?N.safeParse({email:a,password:r,name:d}):j.safeParse({email:a,password:r});if(!t.success){var s,n;m(null!=(n=null==(s=t.error.issues[0])?void 0:s.message)?n:"Datos invalidos.");return}x(!0);try{let e=g?{email:a,password:r,name:d}:{email:a,password:r},t=await fetch(g?"/api/auth/sign-up/email":"/api/auth/sign-in/email",{method:"POST",headers:{"content-type":"application/json"},credentials:"include",body:JSON.stringify(e)});if(!t.ok){let e="No se pudo iniciar sesion. Verifica tus datos.";try{let a=await t.json();e=a.message||a.error||e}catch(e){}m(e);return}window.location.assign("/")}catch(e){m("Error de conexion. Intenta de nuevo.")}finally{x(!1)}};return h?(0,n.jsx)(z,{onBack:()=>v(!1)}):(0,n.jsxs)(o.P.form,{className:"mb-2 space-y-3",initial:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{duration:.2},onSubmit:b,children:[g&&(0,n.jsx)("input",{autoComplete:"username",className:k,disabled:p,onChange:e=>u(e.target.value),placeholder:"Nombre de usuario",type:"text",value:d}),(0,n.jsx)("input",{autoComplete:"email",className:k,disabled:p,onChange:e=>s(e.target.value),placeholder:"Correo electronico",type:"email",value:a}),(0,n.jsx)("input",{autoComplete:g?"new-password":"current-password",className:k,disabled:p,onChange:e=>i(e.target.value),placeholder:"Contrasena",type:"password",value:r}),f&&(0,n.jsx)("p",{className:"text-xs text-red-400",children:f}),!g&&(0,n.jsx)("div",{className:"text-right",children:(0,n.jsx)("button",{type:"button",className:"text-xs text-white/45 transition-colors hover:text-[#4BBAFD]",disabled:p,onClick:()=>v(!0),children:"\xbfOlvidaste tu contrase\xf1a?"})}),(0,n.jsx)(c.Button,{className:"w-full rounded-full bg-accent py-4 text-foreground",disabled:p,type:"submit",variant:"default",children:p?"...":g?"Crear cuenta":"Iniciar Sesion"})]})}function z(e){let{onBack:t}=e,[a,s]=(0,l.useState)(""),[r,i]=(0,l.useState)(null),[d,u]=(0,l.useState)(!1),[f,m]=(0,l.useState)(!1),p=async e=>{e.preventDefault(),i(null);let t=C.sr.safeParse({email:a});if(!t.success){var s,r;i(null!=(r=null==(s=t.error.issues[0])?void 0:s.message)?r:"Correo invali
1do.");return}let n=t.data.email;u(!0);try{await fetch("/api/auth/request-password-reset",{method:"POST",headers:{"content-type":"application/json"},credentials:"include",body:JSON.stringify((0,C.t5)(n))}).catch(()=>void 0)}finally{u(!1),m(!0)}};return f?(0,n.jsxs)(o.P.div,{className:"mb-2 space-y-4",initial:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{duration:.2},children:[(0,n.jsx)("p",{className:"text-sm text-white/70",children:C.qt}),(0,n.jsx)(c.Button,{className:"w-full rounded-full bg-accent py-4 text-foreground",type:"button",variant:"default",onClick:t,children:"Volver"})]}):(0,n.jsxs)(o.P.form,{className:"mb-2 space-y-3",initial:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{duration:.2},onSubmit:p,children:[(0,n.jsx)("p",{className:"text-sm text-white/55",children:"Introduce tu correo y te enviaremos instrucciones para restablecer tu contrasena."}),(0,n.jsx)("input",{autoComplete:"email",className:k,disabled:d,onChange:e=>s(e.target.value),placeholder:"Correo electronico",type:"email",value:a}),r&&(0,n.jsx)("p",{className:"text-xs text-red-400",children:r}),(0,n.jsx)(c.Button,{className:"w-full rounded-full bg-accent py-4 text-foreground",disabled:d,type:"submit",variant:"default",children:d?"...":"Enviar instrucciones"}),(0,n.jsx)("button",{type:"button",className:"w-full text-center text-xs text-white/45 transition-colors hover:text-[#4BBAFD]",disabled:d,onClick:t,children:"Volver al inicio de sesion"})]})}let B=e=>{let{variant:t="login"}=e,{flags:a}=function(){let[e,t]=(0,l.useState)({flags:{},loading:!0});return(0,l.useEffect)(()=>{let e=!0;return fetch("/api/feature-flags").then(e=>e.ok?e.json():null).then(a=>{var s;e&&t({flags:null!=(s=null==a?void 0:a.flags)?s:{},loading:!1})}).catch(()=>{e&&t({flags:{},loading:!1})}),()=>{e=!1}},[]),e}(),s=!0===a.password_grace;return(0,n.jsxs)(o.P.div,{"data-auth-variant":t,className:"relative w-full max-w-[466px]",initial:{opacity:0,scale:.95,filter:"blur(10px)",transition:{duration:.3,type:"spring",stiffness:300,damping:25}},animate:{opacity:1,scale:1,filter:"blur(0px)",transition:{duration:.3,type:"spring",stiffness:300,damping:25}},children:[(0,n.jsx)("div",{className:"px-6",children:(0,n.jsxs)(o.P.div,{className:"mb-5 flex w-full flex-col items-center justify-center gap-y-2",children:[(0,n.jsx)(o.P.h3,{variants:P,initial:"hidden",animate:"visible",className:"text-3xl font-semibold font-inter",children:"Bienvenido de nuevo"}),(0,n.jsx)(o.P.p,{variants:L,initial:"hidden",animate:"visible",className:"text-foreground/40 text-sm",children:"Bienvenido, por favor, Introduzca sus datos"})]})}),(0,n.jsx)(o.P.div,{initial:"hidden",animate:"visible",variants:_,className:"w-full",children:(0,n.jsx)(y,{title:"",headerLabel:"",showSocial:!0,children:s?(0,n.jsx)(S,{variant:"login"}):(0,n.jsx)(o.P.div,{variants:_,initial:"hidden",animate:"visible"})})},"auth-form")]})},_={hidden:{opacity:0,blur:10,y:20,filter:"blur(4px)"},visible:{opacity:1,blur:0,y:0,filter:"blur(0)",transition:{duration:.3,ease:"easeOut"}},exit:{opacity:0,blur:10,y:-20,transition:{duration:.2,ease:"easeIn"}}},P={hidden:{opacity:0,blur:10,y:-10},visible:{opacity:1,blur:0,y:0,transition:{duration:.2,ease:"easeOut"}}},L={hidden:{opacity:0,blur:10,y:10},visible:{opacity:1,blur:0,y:0,transition:{duration:.2,ease:"easeOut"}}};var R=a(92437);let D=(0,l.createContext)(void 0);function E(e){let{children:t}=e,[a,s]=(0,l.useState)(!1),[r,o]=(0,l.useState)("login"),c=(0,i.usePathname)();return(0,l.useEffect)(()=>{s(!1)},[c]),(0,n.jsxs)(D.Provider,{value:{openModal:e=>{o(e),s(!0)},closeModal:()=>{s(!1)}},children:[t,(0,n.jsx)(R.lG,{open:a,onOpenChange:e=>{s(e)},children:(0,n.jsxs)(R.Cf,{className:"p-0 w-auto",children:[(0,n.jsx)(R.L3,{className:"sr-only",children:"Autenticaci\xf3n"}),(0,n.jsx)(B,{variant:r})]})})]})}function I(){let e=(0,l.useContext)(D);if(!e)throw Error("useAuthModal must be used within an AuthModalProvider");return e}},50279:(e,t,a)=>{a.d(t,{Wu:()=>o,ZB:()=>i,Zp:()=>n,aR:()=>l,wL:()=>c});var s=a(6733),r=a(64665);r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:"rounded-lg w-full text-foreground ".concat(a),...r})}
1).displayName="Card";let n=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:"rounded-lg w-full text-foreground ".concat(a),...r})});n.displayName="Card";let l=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:"flex flex-col space-y-1.5 p-6 ".concat(a),...r})});l.displayName="CardHeader";let i=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("h3",{ref:t,className:"text-2xl font-semibold leading-none tracking-tight ".concat(a),...r})});i.displayName="CardTitle",r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("p",{ref:t,className:"text-sm text-muted-foreground ".concat(a),...r})}).displayName="CardDescription";let o=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:"p-6 pt-0 ".concat(a),...r})});o.displayName="CardContent";let c=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:"flex items-center p-6 pt-0 ".concat(a),...r})});c.displayName="CardFooter"},72087:(e,t,a)=>{a.d(t,{a:()=>l,cn:()=>n});var s=a(65210),r=a(36774);function n(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return(0,r.QP)((0,s.$)(t))}let l=e=>{let t=Math.abs(e),a=e<0?"-":"";return t>=1e9?{value:"".concat(a).concat((t/1e9).toFixed(2)),suffix:"B"}:t>=1e6?{value:"".concat(a).concat((t/1e6).toFixed(2)),suffix:"M"}:t>=1e3?{value:"".concat(a).concat((t/1e3).toFixed(2)),suffix:"K"}:{value:new Intl.NumberFormat("es-ES",{minimumFractionDigits:2,maximumFractionDigits:2}).format(e),suffix:""}}},92437:(e,t,a)=>{a.d(t,{Cf:()=>f,Es:()=>p,L3:()=>x,c7:()=>m,lG:()=>o,rr:()=>h,zM:()=>c});var s=a(6733),r=a(94481),n=a(64665),l=a(72087),i=a(63843);let o=r.bL,c=r.l9,d=r.ZL;r.bm;let u=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,s.jsx)(r.hJ,{ref:t,className:(0,l.cn)("fixed inset-0 z-[10050] bg-secondary/30 backdrop-blur-xl","data-[state=open]:animate-overlay-show data-[state=closed]:animate-overlay-hide",a),...n})});u.displayName=r.hJ.displayName;let f=n.forwardRef((e,t)=>{let{className:a,children:n,...o}=e;return(0,s.jsxs)(d,{children:[(0,s.jsx)(u,{}),(0,s.jsxs)(r.UC,{ref:t,className:(0,l.cn)("fixed left-1/2 top-1/2 z-[10051] w-full -translate-x-1/2 -translate-y-1/2 gap-4 overflow-y-auto p-6 duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 min-w-full h-full sm:rounded-2xl flex items-center justify-center bg-secondary/80",a),...o,children:[n,(0,s.jsxs)(r.bm,{className:"group absolute right-3 top-3 flex size-7 items-center justify-center rounded-lg outline-offset-2 transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-ring/70 disabled:pointer-events-none data-[state=open]:fade-in-0",children:[(0,s.jsx)(i.US,{className:"opacity-60 transition-opacity group-hover:opacity-100 cursor-pointer"}),(0,s.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})});f.displayName=r.UC.displayName;let m=e=>{let{className:t,...a}=e;return(0,s.jsx)("div",{className:(0,l.cn)("flex flex-col space-y-1.5 text-center sm:text-left",t),...a})};m.displayName="DialogHeader";let p=e=>{let{className:t,...a}=e;return(0,s.jsx)("div",{className:(0,l.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end sm:gap-3",t),...a})};p.displayName="DialogFooter";let x=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,s.jsx)(r.hE,{ref:t,className:(0,l.cn)("text-lg font-semibold tracking-tight",a),...n})});x.displayName=r.hE.displayName;let h=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,s.jsx)(r.VY,{ref:t,className:(0,l.cn)("text-sm text-muted-foreground",a),...n})});h.displayName=r.VY.displayName}}]);
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.