feat: add language switch button and optimize theme visuals

- Add LanguageSwitch component to all 4 theme layouts (starter/default/dark/minimal)
- Import Noto Sans SC for proper Chinese font rendering
- Fix theme flash on refresh by blocking render until site info loads
- Optimize default theme: violet/blue/cyan palette, SVG icons instead of emoji
- Optimize dark theme: unified emerald accent, reduced particle count, backdrop-blur
- Add Tailwind safelist for dark theme dynamic class names
- Prioritize localStorage in i18n detection so manual language choice persists

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
abingyydsandClaude Sonnet 4.6 committed 2026-03-21 10:19:38 +09:00
1 parent 9a18cf2215
commit 662685cc97
43 files changed
+420 -316

No files matched your search

@@ -1 +1 @@
import{r as F,j as te}from"./index-Drgd7k5E.js";function kt(t){const e=F.useRef(null);return e.current===null&&(e.current=t()),e.current}const ee=typeof window<"u",se=ee?F.useLayoutEffect:F.useEffect;function ne(t,e){t.indexOf(e)===-1&&t.push(e)}function re(t,e){const s=t.indexOf(e);s>-1&&t.splice(s,1)}const U=(t,e,s)=>s>e?e:s<t?t:s;let It=()=>{};const dt={},et=t=>t,ie=(t,e)=>s=>e(t(s)),pt=(...t)=>t.reduce(ie),Et=(t,e,s)=>{const r=e-t;return r===0?1:(s-t)/r};class oe{constructor(){this.subscriptions=[]}add(e){return ne(this.subscriptions,e),()=>re(this.subscriptions,e)}notify(e,s,r){const n=this.subscriptions.length;if(n)if(n===1)this.subscriptions[0](e,s,r);else for(let i=0;i<n;i++){const o=this.subscriptions[i];o&&o(e,s,r)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}const L=t=>t*1e3,N=t=>t/1e3;function Pt(t,e){return e?t*(1e3/e):0}const Nt=(t,e,s)=>(((1-3*s+3*e)*t+(3*s-6*e))*t+3*e)*t,ae=1e-7,ce=12;function ue(t,e,s,r,n){let i,o,a=0;do o=e+(s-e)/2,i=Nt(o,r,n)-t,i>0?s=o:e=o;while(Math.abs(i)>ae&&++a<ce);return o}function $(t,e,s,r){if(t===e&&s===r)return et;const n=i=>ue(i,0,1,t,s);return i=>i===0||i===1?i:Nt(n(i),e,r)}const Rt=t=>e=>e<=.5?t(2*e)/2:(2-t(2*(1-e)))/2,Ot=t=>e=>1-t(1-e),Ut=$(.33,1.53,.69,.99),mt=Ot(Ut),le=Rt(mt),fe=t=>t>=1?1:(t*=2)<1?.5*mt(t):.5*(2-Math.pow(2,-10*(t-1))),gt=t=>1-Math.sin(Math.acos(t)),he=Ot(gt),de=Rt(gt),pe=$(.42,0,1,1),me=$(0,0,.58,1),Kt=$(.42,0,.58,1),ge=t=>Array.isArray(t)&&typeof t[0]!="number",ye=t=>Array.isArray(t)&&typeof t[0]=="number",be={linear:et,easeIn:pe,easeInOut:Kt,easeOut:me,circIn:gt,circInOut:de,circOut:he,backIn:mt,backInOut:le,backOut:Ut,anticipate:fe},ve=t=>typeof t=="string",Mt=t=>{if(ye(t)){It(t.length===4);const[e,s,r,n]=t;return $(e,s,r,n)}else if(ve(t))return be[t];return t},J=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function Te(t,e){let s=new Set,r=new Set,n=!1,i=!1;const o=new WeakSet;let a={delta:0,timestamp:0,isProcessing:!1};function u(c){o.has(c)&&(l.schedule(c),t()),c(a)}const l={schedule:(c,f=!1,d=!1)=>{const x=d&&n?s:r;return f&&o.add(c),x.add(c),c},cancel:c=>{r.delete(c),o.delete(c)},process:c=>{if(a=c,n){i=!0;return}n=!0;const f=s;s=r,r=f,s.forEach(u),s.clear(),n=!1,i&&(i=!1,l.process(c))}};return l}const xe=40;function Me(t,e){let s=!1,r=!0;const n={delta:0,timestamp:0,isProcessing:!1},i=()=>s=!0,o=J.reduce((v,g)=>(v[g]=Te(i),v),{}),{setup:a,read:u,resolveKeyframes:l,preUpdate:c,update:f,preRender:d,render:M,postRender:x}=o,m=()=>{const v=dt.useManualTiming,g=v?n.timestamp:performance.now();s=!1,v||(n.delta=r?1e3/60:Math.max(Math.min(g-n.timestamp,xe),1)),n.timestamp=g,n.isProcessing=!0,a.process(n),u.process(n),l.process(n),c.process(n),f.process(n),d.process(n),M.process(n),x.process(n),n.isProcessing=!1,s&&e&&(r=!1,t(m))},T=()=>{s=!0,r=!0,n.isProcessing||t(m)};return{schedule:J.reduce((v,g)=>{const y=o[g];return v[g]=(S,C=!1,b=!1)=>(s||T(),y.schedule(S,C,b)),v},{}),cancel:v=>{for(let g=0;g<J.length;g++)o[J[g]].cancel(v)},state:n,steps:o}}const{schedule:st,cancel:Gt,state:X,steps:Es}=Me(typeof requestAnimationFrame<"u"?requestAnimationFrame:et,!0);let H;function Ae(){H=void 0}const k={now:()=>(H===void 0&&k.set(X.isProcessing||dt.useManualTiming?X.timestamp:performance.now()),H),set:t=>{H=t,queueMicrotask(Ae)}},Lt=t=>e=>typeof e=="string"&&e.startsWith(t),Ps=Lt("--"),Se=Lt("var(--"),De=t=>Se(t)?Fe.test(t.split("/*")[0].trim()):!1,Fe=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function Ns(t){return typeof t!="string"?!1:t.split("/*")[0].includes("var(--")}const yt={test:t=>typeof t=="number",parse:parseFloat,transform:t=>t},qt={...yt,transform:t=>U(0,1,t)},Rs={...yt,default:1},q=t=>Math.round(t*1e5)/1e5,Wt=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function we(t){return t==null}const Ve=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,bt=(t,e)=>s=>!!(typeof s=="string"&&Ve.test(s)&&s.startsWith(t)||e&&!we(s)&&Object.prototype.hasOwnProperty.call(s,e)),Bt=(t,e,s)=>r=>{if(typeof r!="string")return r;const[n,i,o,a]=r.match(Wt);return{[t]:parseFloat(n),[e]:parseFloat(i),[s]:parseFloat(o),alpha:a!==void 0?parseFloat(a):1}},Ce=t=>U(0,255,t),rt={...yt,transform:t=>Math.round(Ce(t))},O={test:bt("rgb","red"),parse:Bt("red","green","blue"),transform:({red:t,green:e,blue:s,alpha:r=1})=>"rgba("+rt.transform(t)+", "+rt.transform(e)+", "+rt.transform(s)+", "+q(qt.transform(r))+")"};function ke(t){let e="",s="",r="",n="";return t.length>5?(e=t.substring(1,3),s=t.substring(3,5),r=t.substring(5,7),n=t.substring(7,9)):(e=t.substring(1,2),s=t.substring(2,3),r=t.substring(3,4),n=t.substring(4,5),e+=e,s+=s,r+=r,n+=n),{red:parseInt(e,16),green:parseInt(s,16),blue:parseInt(r,16),alpha:n?parseInt(n,16)/255:1}}const ut={test:bt("#"),parse:ke,transform:O.transform},z=t=>({test:e=>typeof e=="string"&&e.endsWith(t)&&e.split(" ").length===1,parse:parseFloat,transform:e=>`${e}${t}`}),OsLine truncated
import{r as F,j as te}from"./index-IL0bf27q.js";function kt(t){const e=F.useRef(null);return e.current===null&&(e.current=t()),e.current}const ee=typeof window<"u",se=ee?F.useLayoutEffect:F.useEffect;function ne(t,e){t.indexOf(e)===-1&&t.push(e)}function re(t,e){const s=t.indexOf(e);s>-1&&t.splice(s,1)}const U=(t,e,s)=>s>e?e:s<t?t:s;let It=()=>{};const dt={},et=t=>t,ie=(t,e)=>s=>e(t(s)),pt=(...t)=>t.reduce(ie),Et=(t,e,s)=>{const r=e-t;return r===0?1:(s-t)/r};class oe{constructor(){this.subscriptions=[]}add(e){return ne(this.subscriptions,e),()=>re(this.subscriptions,e)}notify(e,s,r){const n=this.subscriptions.length;if(n)if(n===1)this.subscriptions[0](e,s,r);else for(let i=0;i<n;i++){const o=this.subscriptions[i];o&&o(e,s,r)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}const L=t=>t*1e3,N=t=>t/1e3;function Pt(t,e){return e?t*(1e3/e):0}const Nt=(t,e,s)=>(((1-3*s+3*e)*t+(3*s-6*e))*t+3*e)*t,ae=1e-7,ce=12;function ue(t,e,s,r,n){let i,o,a=0;do o=e+(s-e)/2,i=Nt(o,r,n)-t,i>0?s=o:e=o;while(Math.abs(i)>ae&&++a<ce);return o}function $(t,e,s,r){if(t===e&&s===r)return et;const n=i=>ue(i,0,1,t,s);return i=>i===0||i===1?i:Nt(n(i),e,r)}const Rt=t=>e=>e<=.5?t(2*e)/2:(2-t(2*(1-e)))/2,Ot=t=>e=>1-t(1-e),Ut=$(.33,1.53,.69,.99),mt=Ot(Ut),le=Rt(mt),fe=t=>t>=1?1:(t*=2)<1?.5*mt(t):.5*(2-Math.pow(2,-10*(t-1))),gt=t=>1-Math.sin(Math.acos(t)),he=Ot(gt),de=Rt(gt),pe=$(.42,0,1,1),me=$(0,0,.58,1),Kt=$(.42,0,.58,1),ge=t=>Array.isArray(t)&&typeof t[0]!="number",ye=t=>Array.isArray(t)&&typeof t[0]=="number",be={linear:et,easeIn:pe,easeInOut:Kt,easeOut:me,circIn:gt,circInOut:de,circOut:he,backIn:mt,backInOut:le,backOut:Ut,anticipate:fe},ve=t=>typeof t=="string",Mt=t=>{if(ye(t)){It(t.length===4);const[e,s,r,n]=t;return $(e,s,r,n)}else if(ve(t))return be[t];return t},J=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function Te(t,e){let s=new Set,r=new Set,n=!1,i=!1;const o=new WeakSet;let a={delta:0,timestamp:0,isProcessing:!1};function u(c){o.has(c)&&(l.schedule(c),t()),c(a)}const l={schedule:(c,f=!1,d=!1)=>{const x=d&&n?s:r;return f&&o.add(c),x.add(c),c},cancel:c=>{r.delete(c),o.delete(c)},process:c=>{if(a=c,n){i=!0;return}n=!0;const f=s;s=r,r=f,s.forEach(u),s.clear(),n=!1,i&&(i=!1,l.process(c))}};return l}const xe=40;function Me(t,e){let s=!1,r=!0;const n={delta:0,timestamp:0,isProcessing:!1},i=()=>s=!0,o=J.reduce((v,g)=>(v[g]=Te(i),v),{}),{setup:a,read:u,resolveKeyframes:l,preUpdate:c,update:f,preRender:d,render:M,postRender:x}=o,m=()=>{const v=dt.useManualTiming,g=v?n.timestamp:performance.now();s=!1,v||(n.delta=r?1e3/60:Math.max(Math.min(g-n.timestamp,xe),1)),n.timestamp=g,n.isProcessing=!0,a.process(n),u.process(n),l.process(n),c.process(n),f.process(n),d.process(n),M.process(n),x.process(n),n.isProcessing=!1,s&&e&&(r=!1,t(m))},T=()=>{s=!0,r=!0,n.isProcessing||t(m)};return{schedule:J.reduce((v,g)=>{const y=o[g];return v[g]=(S,C=!1,b=!1)=>(s||T(),y.schedule(S,C,b)),v},{}),cancel:v=>{for(let g=0;g<J.length;g++)o[J[g]].cancel(v)},state:n,steps:o}}const{schedule:st,cancel:Gt,state:X,steps:Es}=Me(typeof requestAnimationFrame<"u"?requestAnimationFrame:et,!0);let H;function Ae(){H=void 0}const k={now:()=>(H===void 0&&k.set(X.isProcessing||dt.useManualTiming?X.timestamp:performance.now()),H),set:t=>{H=t,queueMicrotask(Ae)}},Lt=t=>e=>typeof e=="string"&&e.startsWith(t),Ps=Lt("--"),Se=Lt("var(--"),De=t=>Se(t)?Fe.test(t.split("/*")[0].trim()):!1,Fe=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function Ns(t){return typeof t!="string"?!1:t.split("/*")[0].includes("var(--")}const yt={test:t=>typeof t=="number",parse:parseFloat,transform:t=>t},qt={...yt,transform:t=>U(0,1,t)},Rs={...yt,default:1},q=t=>Math.round(t*1e5)/1e5,Wt=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function we(t){return t==null}const Ve=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,bt=(t,e)=>s=>!!(typeof s=="string"&&Ve.test(s)&&s.startsWith(t)||e&&!we(s)&&Object.prototype.hasOwnProperty.call(s,e)),Bt=(t,e,s)=>r=>{if(typeof r!="string")return r;const[n,i,o,a]=r.match(Wt);return{[t]:parseFloat(n),[e]:parseFloat(i),[s]:parseFloat(o),alpha:a!==void 0?parseFloat(a):1}},Ce=t=>U(0,255,t),rt={...yt,transform:t=>Math.round(Ce(t))},O={test:bt("rgb","red"),parse:Bt("red","green","blue"),transform:({red:t,green:e,blue:s,alpha:r=1})=>"rgba("+rt.transform(t)+", "+rt.transform(e)+", "+rt.transform(s)+", "+q(qt.transform(r))+")"};function ke(t){let e="",s="",r="",n="";return t.length>5?(e=t.substring(1,3),s=t.substring(3,5),r=t.substring(5,7),n=t.substring(7,9)):(e=t.substring(1,2),s=t.substring(2,3),r=t.substring(3,4),n=t.substring(4,5),e+=e,s+=s,r+=r,n+=n),{red:parseInt(e,16),green:parseInt(s,16),blue:parseInt(r,16),alpha:n?parseInt(n,16)/255:1}}const ut={test:bt("#"),parse:ke,transform:O.transform},z=t=>({test:e=>typeof e=="string"&&e.endsWith(t)&&e.split(" ").length===1,parse:parseFloat,transform:e=>`${e}${t}`}),OsLine truncated
@@ -1 +1 @@
import{r as n,j as e,u as M,Q as $,L as k,g as _,d as I,z}from"./index-Drgd7k5E.js";import{S}from"./SpotlightCard-C_ZqQ-j4.js";import{u as A,a as F,C as q}from"./CountUp-Omm8FlHl.js";import{m as K}from"./proxy-BOtdvQpP.js";import{u as Q}from"./use-animation-frame-BTI5WVkr.js";import{u as W}from"./useTranslation-B7WzaWp0.js";const B=({text:s,disabled:t=!1,speed:v=2,className:r="",color:m="#b5b5b5",shineColor:p="#ffffff",spread:g=120,yoyo:j=!1,pauseOnHover:d=!1,direction:u="left",delay:w=0})=>{const[N,b]=n.useState(!1),o=A(0),x=n.useRef(0),a=n.useRef(null),l=n.useRef(u==="left"?1:-1),c=v*1e3,R=w*1e3;Q(f=>{if(t||N){a.current=null;return}if(a.current===null){a.current=f;return}const P=f-a.current;if(a.current=f,x.current+=P,j){const h=c+R,y=h*2,i=x.current%y;if(i<c){const C=i/c*100;o.set(l.current===1?C:100-C)}else if(i<h)o.set(l.current===1?100:0);else if(i<h+c){const T=100-(i-h)/c*100;o.set(l.current===1?T:100-T)}else o.set(l.current===1?0:100)}else{const h=c+R,y=x.current%h;if(y<c){const i=y/c*100;o.set(l.current===1?i:100-i)}else o.set(l.current===1?100:0)}}),n.useEffect(()=>{l.current=u==="left"?1:-1,x.current=0,o.set(0)},[u]);const D=F(o,f=>`${150-f*2}% center`),U=n.useCallback(()=>{d&&b(!0)},[d]),L=n.useCallback(()=>{d&&b(!1)},[d]),E={backgroundImage:`linear-gradient(${g}deg, ${m} 0%, ${m} 35%, ${p} 50%, ${m} 65%, ${m} 100%)`,backgroundSize:"200% auto",WebkitBackgroundClip:"text",backgroundClip:"text",WebkitTextFillColor:"transparent"};return e.jsx(K.span,{className:`inline-block ${r}`,style:{...E,backgroundPosition:D},onMouseEnter:U,onMouseLeave:L,children:s})};function H(){const{t:s}=W(),{user:t,refreshUser:v}=M(),[r,m]=n.useState(null),[p,g]=n.useState(""),[j,d]=n.useState(!1),u=async()=>{try{const a=await _();a.data.success&&m(a.data.data)}catch{}};n.useEffect(()=>{u()},[]);const w=async a=>{if(a.preventDefault(),!!p.trim()){d(!0);try{(await I(p.trim())).data.success&&(z.success(s("dashboard.redeemSuccess")),g(""),await Promise.all([u(),v()]))}catch{}d(!1)}},N=(r==null?void 0:r.quota)??(t==null?void 0:t.quota)??0,b=(r==null?void 0:r.used_quota)??(t==null?void 0:t.used_quota)??0,o=(r==null?void 0:r.request_count)??(t==null?void 0:t.request_count)??0,x=N/$;return e.jsxs("div",{className:"max-w-7xl mx-auto px-6 py-10",children:[e.jsxs("div",{className:"mb-8",children:[e.jsxs("h1",{className:"text-2xl font-heading font-bold text-white mb-1",children:[s("dashboard.welcome")," ",e.jsx(B,{text:(t==null?void 0:t.display_name)||(t==null?void 0:t.username)||"User",className:"!inline",speed:3,color:"#a5b4fc",shineColor:"#e0e7ff"})]}),e.jsx("p",{className:"text-sm text-neutral-400",children:s("dashboard.manageDesc")})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 mb-10",children:[e.jsxs(S,{className:"!bg-neutral-900/60 !border-neutral-800/60 !p-6",spotlightColor:"rgba(34,197,94,0.15)",children:[e.jsx("p",{className:"text-sm text-neutral-400 mb-2",children:s("dashboard.balance")}),e.jsxs("div",{className:"text-3xl font-bold text-white",children:["$",e.jsx(q,{from:0,to:x,duration:1.5})]}),e.jsx("p",{className:"text-xs text-neutral-500 mt-1",children:s("dashboard.quotaUnits",{count:N.toLocaleString()})})]}),e.jsxs(S,{className:"!bg-neutral-900/60 !border-neutral-800/60 !p-6",spotlightColor:"rgba(129,140,248,0.15)",children:[e.jsx("p",{className:"text-sm text-neutral-400 mb-2",children:s("dashboard.used")}),e.jsxs("div",{className:"text-3xl font-bold text-white",children:["$",e.jsx(q,{from:0,to:b/$,duration:1.5})]}),e.jsx("p",{className:"text-xs text-neutral-500 mt-1",children:s("dashboard.quotaUnits",{count:b.toLocaleString()})})]}),e.jsxs(S,{className:"!bg-neutral-900/60 !border-neutral-800/60 !p-6",spotlightColor:"rgba(244,114,182,0.15)",children:[e.jsx("p",{className:"text-sm text-neutral-400 mb-2",children:s("dashboard.totalRequests")}),e.jsx("div",{className:"text-3xl font-bold text-white",children:e.jsx(q,{from:0,to:o,duration:1.5})})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"glass rounded-2xl p-6",children:[e.jsx("h2",{className:"text-lg font-semibold text-white mb-4",children:s("dashboard.redeemCode")}),e.jsxs("form",{onSubmit:w,className:"flex gap-3",children:[e.jsx("input",{type:"text",value:p,onChange:a=>g(a.target.value),className:"input flex-1",placeholder:s("dashboard.enterCode")}),e.jsx("button",{type:"submit",disabled:j,className:"btn-primary whitespace-nowrap",children:s(j?"dashboard.redeeming":"dashboard.redeem")})]})]}),e.jsxs("div",{className:"glass rounded-2xl p-6",children:[e.jsx("h2",{className:"text-lg font-semibold text-white mb-4",children:s("dashboard.quickLinks")}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs(k,{to:"/tokens",className:"glass-sm !rounded-xl px-4 py-3 hover:bg-white/[0.06] transition-colors group",children:[e.jsx("p",{className:"text-sm font-medium text-white group-hover:text-brand-400 transition-colors",children:s("dashboard.apiKeys")}),e.jsx("p",{className:"text-xs teLine truncated
import{r as n,j as e,u as M,Q as $,L as k,g as _,d as I,z}from"./index-IL0bf27q.js";import{S}from"./SpotlightCard-DnZRIBvu.js";import{u as A,a as F,C as q}from"./CountUp-BYW6-_IC.js";import{m as K}from"./proxy-C5U9l3lk.js";import{u as Q}from"./use-animation-frame-C8xwlfkl.js";import{u as W}from"./useTranslation-_qZZdhi7.js";const B=({text:s,disabled:t=!1,speed:v=2,className:r="",color:m="#b5b5b5",shineColor:p="#ffffff",spread:g=120,yoyo:j=!1,pauseOnHover:d=!1,direction:u="left",delay:w=0})=>{const[N,b]=n.useState(!1),o=A(0),x=n.useRef(0),a=n.useRef(null),l=n.useRef(u==="left"?1:-1),c=v*1e3,R=w*1e3;Q(f=>{if(t||N){a.current=null;return}if(a.current===null){a.current=f;return}const P=f-a.current;if(a.current=f,x.current+=P,j){const h=c+R,y=h*2,i=x.current%y;if(i<c){const C=i/c*100;o.set(l.current===1?C:100-C)}else if(i<h)o.set(l.current===1?100:0);else if(i<h+c){const T=100-(i-h)/c*100;o.set(l.current===1?T:100-T)}else o.set(l.current===1?0:100)}else{const h=c+R,y=x.current%h;if(y<c){const i=y/c*100;o.set(l.current===1?i:100-i)}else o.set(l.current===1?100:0)}}),n.useEffect(()=>{l.current=u==="left"?1:-1,x.current=0,o.set(0)},[u]);const D=F(o,f=>`${150-f*2}% center`),U=n.useCallback(()=>{d&&b(!0)},[d]),L=n.useCallback(()=>{d&&b(!1)},[d]),E={backgroundImage:`linear-gradient(${g}deg, ${m} 0%, ${m} 35%, ${p} 50%, ${m} 65%, ${m} 100%)`,backgroundSize:"200% auto",WebkitBackgroundClip:"text",backgroundClip:"text",WebkitTextFillColor:"transparent"};return e.jsx(K.span,{className:`inline-block ${r}`,style:{...E,backgroundPosition:D},onMouseEnter:U,onMouseLeave:L,children:s})};function H(){const{t:s}=W(),{user:t,refreshUser:v}=M(),[r,m]=n.useState(null),[p,g]=n.useState(""),[j,d]=n.useState(!1),u=async()=>{try{const a=await _();a.data.success&&m(a.data.data)}catch{}};n.useEffect(()=>{u()},[]);const w=async a=>{if(a.preventDefault(),!!p.trim()){d(!0);try{(await I(p.trim())).data.success&&(z.success(s("dashboard.redeemSuccess")),g(""),await Promise.all([u(),v()]))}catch{}d(!1)}},N=(r==null?void 0:r.quota)??(t==null?void 0:t.quota)??0,b=(r==null?void 0:r.used_quota)??(t==null?void 0:t.used_quota)??0,o=(r==null?void 0:r.request_count)??(t==null?void 0:t.request_count)??0,x=N/$;return e.jsxs("div",{className:"max-w-7xl mx-auto px-6 py-10",children:[e.jsxs("div",{className:"mb-8",children:[e.jsxs("h1",{className:"text-2xl font-heading font-bold text-white mb-1",children:[s("dashboard.welcome")," ",e.jsx(B,{text:(t==null?void 0:t.display_name)||(t==null?void 0:t.username)||"User",className:"!inline",speed:3,color:"#a5b4fc",shineColor:"#e0e7ff"})]}),e.jsx("p",{className:"text-sm text-neutral-400",children:s("dashboard.manageDesc")})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 mb-10",children:[e.jsxs(S,{className:"!bg-neutral-900/60 !border-neutral-800/60 !p-6",spotlightColor:"rgba(34,197,94,0.15)",children:[e.jsx("p",{className:"text-sm text-neutral-400 mb-2",children:s("dashboard.balance")}),e.jsxs("div",{className:"text-3xl font-bold text-white",children:["$",e.jsx(q,{from:0,to:x,duration:1.5})]}),e.jsx("p",{className:"text-xs text-neutral-500 mt-1",children:s("dashboard.quotaUnits",{count:N.toLocaleString()})})]}),e.jsxs(S,{className:"!bg-neutral-900/60 !border-neutral-800/60 !p-6",spotlightColor:"rgba(129,140,248,0.15)",children:[e.jsx("p",{className:"text-sm text-neutral-400 mb-2",children:s("dashboard.used")}),e.jsxs("div",{className:"text-3xl font-bold text-white",children:["$",e.jsx(q,{from:0,to:b/$,duration:1.5})]}),e.jsx("p",{className:"text-xs text-neutral-500 mt-1",children:s("dashboard.quotaUnits",{count:b.toLocaleString()})})]}),e.jsxs(S,{className:"!bg-neutral-900/60 !border-neutral-800/60 !p-6",spotlightColor:"rgba(244,114,182,0.15)",children:[e.jsx("p",{className:"text-sm text-neutral-400 mb-2",children:s("dashboard.totalRequests")}),e.jsx("div",{className:"text-3xl font-bold text-white",children:e.jsx(q,{from:0,to:o,duration:1.5})})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"glass rounded-2xl p-6",children:[e.jsx("h2",{className:"text-lg font-semibold text-white mb-4",children:s("dashboard.redeemCode")}),e.jsxs("form",{onSubmit:w,className:"flex gap-3",children:[e.jsx("input",{type:"text",value:p,onChange:a=>g(a.target.value),className:"input flex-1",placeholder:s("dashboard.enterCode")}),e.jsx("button",{type:"submit",disabled:j,className:"btn-primary whitespace-nowrap",children:s(j?"dashboard.redeeming":"dashboard.redeem")})]})]}),e.jsxs("div",{className:"glass rounded-2xl p-6",children:[e.jsx("h2",{className:"text-lg font-semibold text-white mb-4",children:s("dashboard.quickLinks")}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs(k,{to:"/tokens",className:"glass-sm !rounded-xl px-4 py-3 hover:bg-white/[0.06] transition-colors group",children:[e.jsx("p",{className:"text-sm font-medium text-white group-hover:text-brand-400 transition-colors",children:s("dashboard.apiKeys")}),e.jsx("p",{className:"text-xs teLine truncated
+100
View File
@@ -0,0 +1,100 @@
import{r as o,j as t,u as se,a as ne,l as re,k as oe,L as F}from"./index-IL0bf27q.js";import{G as ae,R as ie,P as le,M as ce}from"./Mesh-CwXV3WjE.js";import{i as O,P as de,u as ue,L as he,m as T}from"./proxy-C5U9l3lk.js";import{M as me,b as J,d as xe,u as _,e as B,C as fe}from"./CountUp-BYW6-_IC.js";import{u as pe}from"./useTranslation-_qZZdhi7.js";function V(e,n){if(typeof e=="function")return e(n);e!=null&&(e.current=n)}function ge(...e){return n=>{let r=!1;const c=e.map(d=>{const u=V(d,n);return!r&&typeof u=="function"&&(r=!0),u});if(r)return()=>{for(let d=0;d<c.length;d++){const u=c[d];typeof u=="function"?u():V(e[d],null)}}}}function ve(...e){return o.useCallback(ge(...e),e)}class be extends o.Component{getSnapshotBeforeUpdate(n){const r=this.props.childRef.current;if(O(r)&&n.isPresent&&!this.props.isPresent&&this.props.pop!==!1){const c=r.offsetParent,d=O(c)&&c.offsetWidth||0,u=O(c)&&c.offsetHeight||0,h=getComputedStyle(r),a=this.props.sizeRef.current;a.height=parseFloat(h.height),a.width=parseFloat(h.width),a.top=r.offsetTop,a.left=r.offsetLeft,a.right=d-a.width-a.left,a.bottom=u-a.height-a.top}return null}componentDidUpdate(){}render(){return this.props.children}}function we({children:e,isPresent:n,anchorX:r,anchorY:c,root:d,pop:u}){var g;const h=o.useId(),a=o.useRef(null),s=o.useRef({width:0,height:0,top:0,left:0,right:0,bottom:0}),{nonce:m}=o.useContext(me),f=((g=e.props)==null?void 0:g.ref)??(e==null?void 0:e.ref),b=ve(a,f);return o.useInsertionEffect(()=>{const{width:w,height:p,top:C,left:v,right:y,bottom:P}=s.current;if(n||u===!1||!a.current||!w||!p)return;const I=r==="left"?`left: ${v}`:`right: ${y}`,i=c==="bottom"?`bottom: ${P}`:`top: ${C}`;a.current.dataset.motionPopId=h;const S=document.createElement("style");m&&(S.nonce=m);const L=d??document.head;return L.appendChild(S),S.sheet&&S.sheet.insertRule(`
[data-motion-pop-id="${h}"] {
position: absolute !important;
width: ${w}px !important;
height: ${p}px !important;
${I}px !important;
${i}px !important;
}
`),()=>{var z;(z=a.current)==null||z.removeAttribute("data-motion-pop-id"),L.contains(S)&&L.removeChild(S)}},[n]),t.jsx(be,{isPresent:n,childRef:a,sizeRef:s,pop:u,children:u===!1?e:o.cloneElement(e,{ref:b})})}const ye=({children:e,initial:n,isPresent:r,onExitComplete:c,custom:d,presenceAffectsLayout:u,mode:h,anchorX:a,anchorY:s,root:m})=>{const f=J(je),b=o.useId();let g=!0,w=o.useMemo(()=>(g=!1,{id:b,initial:n,isPresent:r,custom:d,onExitComplete:p=>{f.set(p,!0);for(const C of f.values())if(!C)return;c&&c()},register:p=>(f.set(p,!1),()=>f.delete(p))}),[r,f,c]);return u&&g&&(w={...w}),o.useMemo(()=>{f.forEach((p,C)=>f.set(C,!1))},[r]),o.useEffect(()=>{!r&&!f.size&&c&&c()},[r]),e=t.jsx(we,{pop:h==="popLayout",isPresent:r,anchorX:a,anchorY:s,root:m,children:e}),t.jsx(de.Provider,{value:w,children:e})};function je(){return new Map}const Y=e=>e.key||"";function W(e){const n=[];return o.Children.forEach(e,r=>{o.isValidElement(r)&&n.push(r)}),n}const Ce=({children:e,custom:n,initial:r=!0,onExitComplete:c,presenceAffectsLayout:d=!0,mode:u="sync",propagate:h=!1,anchorX:a="left",anchorY:s="top",root:m})=>{const[f,b]=ue(h),g=o.useMemo(()=>W(e),[e]),w=h&&!f?[]:g.map(Y),p=o.useRef(!0),C=o.useRef(g),v=J(()=>new Map),y=o.useRef(new Set),[P,I]=o.useState(g),[i,S]=o.useState(g);xe(()=>{p.current=!1,C.current=g;for(let k=0;k<i.length;k++){const x=Y(i[k]);w.includes(x)?(v.delete(x),y.current.delete(x)):v.get(x)!==!0&&v.set(x,!1)}},[i,w.length,w.join("-")]);const L=[];if(g!==P){let k=[...g];for(let x=0;x<i.length;x++){const M=i[x],R=Y(M);w.includes(R)||(k.splice(x,0,M),L.push(M))}return u==="wait"&&L.length&&(k=L),S(W(k)),I(g),null}const{forceRender:z}=o.useContext(he);return t.jsx(t.Fragment,{children:i.map(k=>{const x=Y(k),M=h&&!f?!1:g===i||w.includes(x),R=()=>{if(y.current.has(x))return;if(v.has(x))y.current.add(x),v.set(x,!0);else return;let $=!0;v.forEach(E=>{E||($=!1)}),$&&(z==null||z(),S(C.current),h&&(b==null||b()),c&&c())};return t.jsx(ye,{isPresent:M,initial:!p.current||r?void 0:!1,custom:n,presenceAffectsLayout:d,mode:u,root:m,onExitComplete:M?void 0:R,anchorX:a,anchorY:s,children:k},x)})})},X={black:"#000000",white:"#ffffff",red:"#ff0000",green:"#00ff00",blue:"#0000ff",fuchsia:"#ff00ff",cyan:"#00ffff",yellow:"#ffff00",orange:"#ff8000"};function q(e){e.length===4&&(e=e[0]+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]);const n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return n||console.warn(`Unable to convert hex string ${e} to rgb values`),[parseInt(n[1],16)/255,parseInt(n[2],16)/255,parseInt(n[3],16)/255]}function Ne(e){return e=parseInt(e),[(e>>16&255)/255,(e>>8&255)/255,(e&255)/255]}function K(e){return e===void 0?[0,0,0]:arguments.length===3?arguments:isNaN(e)?e[0]==="#"?q(e):X[e.toLowerCase()]?q(X[e.toLowerCase()]):(console.warn("Color format not recognised"),[0,0,0]):Ne(e)}class Z extends Array{constructor(n){return Array.isArray(n)?super(...n):super(...K(...arguments))}get r(){return this[0]}get g(){return this[1]}get b(){return this[2]}set r(n){this[0]=n}set g(n){this[1]=n}set b(n){this[2]=n}set(n){return Array.isArray(n)?this.copy(n):this.copy(K(...arguments))}copy(n){return this[0]=n[0],this[1]=n[1],this[2]=n[2],this}}class Se extends ae{constructor(n,{attributes:r={}}={}){Object.assign(r,{position:{size:2,data:new Float32Array([-1,-1,3,-1,-1,3])},uv:{size:2,data:new Float32Array([0,0,2,0,0,2])}}),super(n,r)}}const Me=`#version 300 es
in vec2 position;
void main() {
gl_Position = vec4(position, 0.0, 1.0);
}
`,Re=`#version 300 es
precision highp float;
uniform float uTime;
uniform float uAmplitude;
uniform vec3 uColorStops[3];
uniform vec2 uResolution;
uniform float uBlend;
out vec4 fragColor;
vec3 permute(vec3 x) {
return mod(((x * 34.0) + 1.0) * x, 289.0);
}
float snoise(vec2 v){
const vec4 C = vec4(
0.211324865405187, 0.366025403784439,
-0.577350269189626, 0.024390243902439
);
vec2 i = floor(v + dot(v, C.yy));
vec2 x0 = v - i + dot(i, C.xx);
vec2 i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
vec4 x12 = x0.xyxy + C.xxzz;
x12.xy -= i1;
i = mod(i, 289.0);
vec3 p = permute(
permute(i.y + vec3(0.0, i1.y, 1.0))
+ i.x + vec3(0.0, i1.x, 1.0)
);
vec3 m = max(
0.5 - vec3(
dot(x0, x0),
dot(x12.xy, x12.xy),
dot(x12.zw, x12.zw)
),
0.0
);
m = m * m;
m = m * m;
vec3 x = 2.0 * fract(p * C.www) - 1.0;
vec3 h = abs(x) - 0.5;
vec3 ox = floor(x + 0.5);
vec3 a0 = x - ox;
m *= 1.79284291400159 - 0.85373472095314 * (a0*a0 + h*h);
vec3 g;
g.x = a0.x * x0.x + h.x * x0.y;
g.yz = a0.yz * x12.xz + h.yz * x12.yw;
return 130.0 * dot(m, g);
}
struct ColorStop {
vec3 color;
float position;
};
#define COLOR_RAMP(colors, factor, finalColor) { int index = 0; for (int i = 0; i < 2; i++) { ColorStop currentColor = colors[i]; bool isInBetween = currentColor.position <= factor; index = int(mix(float(index), float(i), float(isInBetween))); } ColorStop currentColor = colors[index]; ColorStop nextColor = colors[index + 1]; float range = nextColor.position - currentColor.position; float lerpFactor = (factor - currentColor.position) / range; finalColor = mix(currentColor.color, nextColor.color, lerpFactor); }
void main() {
vec2 uv = gl_FragCoord.xy / uResolution;
ColorStop colors[3];
colors[0] = ColorStop(uColorStops[0], 0.0);
colors[1] = ColorStop(uColorStops[1], 0.5);
colors[2] = ColorStop(uColorStops[2], 1.0);
vec3 rampColor;
COLOR_RAMP(colors, uv.x, rampColor);
float height = snoise(vec2(uv.x * 2.0 + uTime * 0.1, uTime * 0.25)) * 0.5 * uAmplitude;
height = exp(height);
height = (uv.y * 2.0 - height + 0.2);
float intensity = 0.6 * height;
float midPoint = 0.20;
float auroraAlpha = smoothstep(midPoint - uBlend * 0.5, midPoint + uBlend * 0.5, intensity);
vec3 auroraColor = intensity * rampColor;
fragColor = vec4(auroraColor * auroraAlpha, auroraAlpha);
}
`;function ke(e){const{colorStops:n=["#5227FF","#7cff67","#5227FF"],amplitude:r=1,blend:c=.5}=e,d=o.useRef(e);d.current=e;const u=o.useRef(null);return o.useEffect(()=>{const h=u.current;if(!h)return;const a=new ie({alpha:!0,premultipliedAlpha:!0,antialias:!0}),s=a.gl;s.clearColor(0,0,0,0),s.enable(s.BLEND),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA),s.canvas.style.backgroundColor="transparent";let m;function f(){if(!h)return;const v=h.offsetWidth,y=h.offsetHeight;a.setSize(v,y),m&&(m.uniforms.uResolution.value=[v,y])}window.addEventListener("resize",f);const b=new Se(s);b.attributes.uv&&delete b.attributes.uv;const g=n.map(v=>{const y=new Z(v);return[y.r,y.g,y.b]});m=new le(s,{vertex:Me,fragment:Re,uniforms:{uTime:{value:0},uAmplitude:{value:r},uColorStops:{value:g},uResolution:{value:[h.offsetWidth,h.offsetHeight]},uBlend:{value:c}}});const w=new ce(s,{geometry:b,program:m});h.appendChild(s.canvas);let p=0;const C=v=>{p=requestAnimationFrame(C);const{time:y=v*.01,speed:P=1}=d.current;m.uniforms.uTime.value=y*P*.1,m.uniforms.uAmplitude.value=d.current.amplitude??1,m.uniforms.uBlend.value=d.current.blend??c;const I=d.current.colorStops??n;m.uniforms.uColorStops.value=I.map(i=>{const S=new Z(i);return[S.r,S.g,S.b]}),a.render({scene:w})};return p=requestAnimationFrame(C),f(),()=>{var v;cancelAnimationFrame(p),window.removeEventListener("resize",f),h&&s.canvas.parentNode===h&&h.removeChild(s.canvas),(v=s.getExtension("WEBGL_lose_context"))==null||v.loseContext()}},[r]),t.jsx("div",{ref:u,className:"w-full h-full"})}const Ae=({text:e="",className:n="",delay:r=50})=>{const c=o.useMemo(()=>e.split(""),[e]);return t.jsx("span",{className:n,"aria-label":e,children:c.map((d,u)=>t.jsx(T.span,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,delay:u*r/1e3,ease:[.25,.46,.45,.94]},style:{display:"inline-block",whiteSpace:d===" "?"pre":"normal"},children:d},`${d}-${u}`))})};function G(...e){return e.filter(Boolean).join(" ")}const Q=o.forwardRef((e,n)=>{const{texts:r,transition:c={type:"spring",damping:25,stiffness:300},initial:d={y:"100%",opacity:0},animate:u={y:0,opacity:1},exit:h={y:"-120%",opacity:0},animatePresenceMode:a="wait",animatePresenceInitial:s=!1,rotationInterval:m=2e3,staggerDuration:f=0,staggerFrom:b="first",loop:g=!0,auto:w=!0,splitBy:p="characters",onNext:C,mainClassName:v,splitLevelClassName:y,elementLevelClassName:P,...I}=e,[i,S]=o.useState(0),L=l=>{if(typeof Intl<"u"&&Intl.Segmenter){const j=new Intl.Segmenter("en",{granularity:"grapheme"});return Array.from(j.segment(l),N=>N.segment)}return Array.from(l)},z=o.useMemo(()=>{const l=r[i];if(p==="characters"){const j=l.split(" ");return j.map((N,A)=>({characters:L(N),needsSpace:A!==j.length-1}))}return p==="words"?l.split(" ").map((j,N,A)=>({characters:[j],needsSpace:N!==A.length-1})):p==="lines"?l.split(`
`).map((j,N,A)=>({characters:[j],needsSpace:N!==A.length-1})):l.split(p).map((j,N,A)=>({characters:[j],needsSpace:N!==A.length-1}))},[r,i,p]),k=o.useCallback((l,j)=>{const N=j;if(b==="first")return l*f;if(b==="last")return(N-1-l)*f;if(b==="center"){const A=Math.floor(N/2);return Math.abs(A-l)*f}if(b==="random"){const A=Math.floor(Math.random()*N);return Math.abs(A-l)*f}return Math.abs(b-l)*f},[b,f]),x=o.useCallback(l=>{S(l),C&&C(l)},[C]),M=o.useCallback(()=>{const l=i===r.length-1?g?0:i:i+1;l!==i&&x(l)},[i,r.length,g,x]),R=o.useCallback(()=>{const l=i===0?g?r.length-1:i:i-1;l!==i&&x(l)},[i,r.length,g,x]),$=o.useCallback(l=>{const j=Math.max(0,Math.min(l,r.length-1));j!==i&&x(j)},[r.length,i,x]),E=o.useCallback(()=>{i!==0&&x(0)},[i,x]);return o.useImperativeHandle(n,()=>({next:M,previous:R,jumpTo:$,reset:E}),[M,R,$,E]),o.useEffect(()=>{if(!w)return;const l=setInterval(M,m);return()=>clearInterval(l)},[M,m,w]),t.jsxs(T.span,{className:G("flex flex-wrap whitespace-pre-wrap relative",v),...I,layout:!0,transition:c,children:[t.jsx("span",{className:"sr-only",children:r[i]}),t.jsx(Ce,{mode:a,initial:s,children:t.jsx(T.span,{className:G(p==="lines"?"flex flex-col w-full":"flex flex-wrap whitespace-pre-wrap relative"),layout:!0,"aria-hidden":"true",children:z.map((l,j,N)=>{const A=N.slice(0,j).reduce((H,D)=>H+D.characters.length,0);return t.jsxs("span",{className:G("inline-flex",y),children:[l.characters.map((H,D)=>t.jsx(T.span,{initial:d,animate:u,exit:h,transition:{...c,delay:k(A+D,N.reduce((ee,te)=>ee+te.characters.length,0))},className:G("inline-block",P),children:H},D)),l.needsSpace&&t.jsx("span",{className:"whitespace-pre",children:" "})]},j)})},i)})]})});Q.displayName="RotatingText";const U={damping:30,stiffness:100,mass:2};function Pe({imageSrc:e,altText:n="Tilted card image",captionText:r="",containerHeight:c="300px",containerWidth:d="100%",imageHeight:u="300px",imageWidth:h="300px",scaleOnHover:a=1.1,rotateAmplitude:s=14,showMobileWarning:m=!0,showTooltip:f=!0,overlayContent:b=null,displayOverlayContent:g=!1}){const w=o.useRef(null),p=_(0),C=_(0),v=B(_(0),U),y=B(_(0),U),P=B(1,U),I=B(0),i=B(0,{stiffness:350,damping:30,mass:1}),[S,L]=o.useState(0);function z(M){if(!w.current)return;const R=w.current.getBoundingClientRect(),$=M.clientX-R.left-R.width/2,E=M.clientY-R.top-R.height/2,l=E/(R.height/2)*-s,j=$/(R.width/2)*s;v.set(l),y.set(j),p.set(M.clientX-R.left),C.set(M.clientY-R.top);const N=E-S;i.set(-N*.6),L(E)}function k(){P.set(a),I.set(1)}function x(){I.set(0),P.set(1),v.set(0),y.set(0),i.set(0)}return t.jsxs("figure",{ref:w,className:"relative w-full h-full [perspective:800px] flex flex-col items-center justify-center",style:{height:c,width:d},onMouseMove:z,onMouseEnter:k,onMouseLeave:x,children:[m&&t.jsx("div",{className:"absolute top-4 text-center text-sm block sm:hidden",children:"This effect is not optimized for mobile. Check on desktop."}),t.jsxs(T.div,{className:"relative [transform-style:preserve-3d]",style:{width:h,height:u,rotateX:v,rotateY:y,scale:P},children:[t.jsx(T.img,{src:e,alt:n,className:"absolute top-0 left-0 object-cover rounded-[15px] will-change-transform [transform:translateZ(0)]",style:{width:h,height:u}}),g&&b&&t.jsx(T.div,{className:"absolute top-0 left-0 z-[2] will-change-transform [transform:translateZ(30px)]",children:b})]}),f&&t.jsx(T.figcaption,{className:"pointer-events-none absolute left-0 top-0 rounded-[4px] bg-white px-[10px] py-[4px] text-[10px] text-[#2d2d2d] opacity-0 z-[3] hidden sm:block",style:{x:p,y:C,opacity:I,rotate:i},children:r})]})}function Te(){const{t:e}=pe(),{user:n}=se(),{site:r}=ne(),[c,d]=o.useState([]),[u,h]=o.useState([]);o.useEffect(()=>{re().then(s=>{s.data.success&&d(s.data.data||[])}).catch(()=>{}),oe().then(s=>{s.data.success&&h(s.data.data||[])}).catch(()=>{})},[]);const a=c.filter(s=>s.enabled!==!1);return t.jsxs("div",{className:"relative",children:[t.jsx("div",{className:"absolute inset-0 h-[700px] overflow-hidden pointer-events-none opacity-60",children:t.jsx(ke,{colorStops:["#4338ca","#7c3aed","#06b6d4"],blend:.5,amplitude:1,speed:.5})}),t.jsxs("section",{className:"relative max-w-7xl mx-auto px-6 pt-28 pb-24",children:[t.jsxs("div",{className:"text-center max-w-4xl mx-auto",children:[t.jsx("div",{className:"mb-6",children:t.jsx("h1",{className:"text-5xl md:text-7xl font-extrabold text-white leading-tight tracking-tight",children:t.jsx(Ae,{text:(r==null?void 0:r.name)||e("home.defaultHeroTitle"),delay:80,className:"inline"})})}),t.jsx("p",{className:"text-lg md:text-xl text-neutral-400 max-w-2xl mx-auto mb-4 leading-relaxed",children:e("home.heroSubtitle")}),t.jsx("div",{className:"flex flex-wrap items-center justify-center gap-3 mb-10",children:t.jsx(Q,{texts:[e("home.lightningFast"),e("home.securePrivate"),e("home.payAsYouGo")],mainClassName:"px-4 py-2 bg-white/[0.06] backdrop-blur-sm rounded-full text-white text-sm font-medium overflow-hidden border border-white/[0.08]",staggerFrom:"last",rotationInterval:3e3})}),t.jsx("div",{className: Line truncated
-62
View File
@@ -1,62 +0,0 @@
import{r as d,j as t,u as ee,a as te,l as se,k as re,L as F}from"./index-Drgd7k5E.js";import{T as ne,a as Z,V as T,R as oe,G as ae,P as ie,M as le}from"./Mesh-CwXV3WjE.js";import{m as ce}from"./proxy-BOtdvQpP.js";import{C as de}from"./CountUp-Omm8FlHl.js";import{u as me}from"./useTranslation-B7WzaWp0.js";const ue=new Z,he=new T,fe=new T;class xe extends ne{constructor(e,{near:o=.1,far:i=100,fov:c=45,aspect:u=1,left:x,right:h,bottom:r,top:k,zoom:b=1}={}){super(),Object.assign(this,{near:o,far:i,fov:c,aspect:u,left:x,right:h,bottom:r,top:k,zoom:b}),this.projectionMatrix=new Z,this.viewMatrix=new Z,this.projectionViewMatrix=new Z,this.worldPosition=new T,this.type=x||h?"orthographic":"perspective",this.type==="orthographic"?this.orthographic():this.perspective()}perspective({near:e=this.near,far:o=this.far,fov:i=this.fov,aspect:c=this.aspect}={}){return Object.assign(this,{near:e,far:o,fov:i,aspect:c}),this.projectionMatrix.fromPerspective({fov:i*(Math.PI/180),aspect:c,near:e,far:o}),this.type="perspective",this}orthographic({near:e=this.near,far:o=this.far,left:i=this.left||-1,right:c=this.right||1,bottom:u=this.bottom||-1,top:x=this.top||1,zoom:h=this.zoom}={}){return Object.assign(this,{near:e,far:o,left:i,right:c,bottom:u,top:x,zoom:h}),i/=h,c/=h,u/=h,x/=h,this.projectionMatrix.fromOrthogonal({left:i,right:c,bottom:u,top:x,near:e,far:o}),this.type="orthographic",this}updateMatrixWorld(){return super.updateMatrixWorld(),this.viewMatrix.inverse(this.worldMatrix),this.worldMatrix.getTranslation(this.worldPosition),this.projectionViewMatrix.multiply(this.projectionMatrix,this.viewMatrix),this}updateProjectionMatrix(){return this.type==="perspective"?this.perspective():this.orthographic()}lookAt(e){return super.lookAt(e,!0),this}project(e){return e.applyMatrix4(this.viewMatrix),e.applyMatrix4(this.projectionMatrix),this}unproject(e){return e.applyMatrix4(ue.inverse(this.projectionMatrix)),e.applyMatrix4(this.worldMatrix),this}updateFrustum(){this.frustum||(this.frustum=[new T,new T,new T,new T,new T,new T]);const e=this.projectionViewMatrix;this.frustum[0].set(e[3]-e[0],e[7]-e[4],e[11]-e[8]).constant=e[15]-e[12],this.frustum[1].set(e[3]+e[0],e[7]+e[4],e[11]+e[8]).constant=e[15]+e[12],this.frustum[2].set(e[3]+e[1],e[7]+e[5],e[11]+e[9]).constant=e[15]+e[13],this.frustum[3].set(e[3]-e[1],e[7]-e[5],e[11]-e[9]).constant=e[15]-e[13],this.frustum[4].set(e[3]-e[2],e[7]-e[6],e[11]-e[10]).constant=e[15]-e[14],this.frustum[5].set(e[3]+e[2],e[7]+e[6],e[11]+e[10]).constant=e[15]+e[14];for(let o=0;o<6;o++){const i=1/this.frustum[o].distance();this.frustum[o].multiply(i),this.frustum[o].constant*=i}}frustumIntersectsMesh(e,o=e.worldMatrix){if(!e.geometry.attributes.position||((!e.geometry.bounds||e.geometry.bounds.radius===1/0)&&e.geometry.computeBoundingSphere(),!e.geometry.bounds))return!0;const i=he;i.copy(e.geometry.bounds.center),i.applyMatrix4(o);const c=e.geometry.bounds.radius*o.getMaxScaleOnAxis();return this.frustumIntersectsSphere(i,c)}frustumIntersectsSphere(e,o){const i=fe;for(let c=0;c<6;c++){const u=this.frustum[c];if(i.copy(u).dot(e)+u.constant<-o)return!1}return!0}}const pe=["#ffffff","#ffffff","#ffffff"],ge=s=>{s=s.replace(/^#/,""),s.length===3&&(s=s.split("").map(u=>u+u).join(""));const e=parseInt(s,16),o=(e>>16&255)/255,i=(e>>8&255)/255,c=(e&255)/255;return[o,i,c]},ve=`
attribute vec3 position;
attribute vec4 random;
attribute vec3 color;
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat4 projectionMatrix;
uniform float uTime;
uniform float uSpread;
uniform float uBaseSize;
uniform float uSizeRandomness;
varying vec4 vRandom;
varying vec3 vColor;
void main() {
vRandom = random;
vColor = color;
vec3 pos = position * uSpread;
pos.z *= 10.0;
vec4 mPos = modelMatrix * vec4(pos, 1.0);
float t = uTime;
mPos.x += sin(t * random.z + 6.28 * random.w) * mix(0.1, 1.5, random.x);
mPos.y += sin(t * random.y + 6.28 * random.x) * mix(0.1, 1.5, random.w);
mPos.z += sin(t * random.w + 6.28 * random.y) * mix(0.1, 1.5, random.z);
vec4 mvPos = viewMatrix * mPos;
if (uSizeRandomness == 0.0) {
gl_PointSize = uBaseSize;
} else {
gl_PointSize = (uBaseSize * (1.0 + uSizeRandomness * (random.x - 0.5))) / length(mvPos.xyz);
}
gl_Position = projectionMatrix * mvPos;
}
`,be=`
precision highp float;
uniform float uTime;
uniform float uAlphaParticles;
varying vec4 vRandom;
varying vec3 vColor;
void main() {
vec2 uv = gl_PointCoord.xy;
float d = length(uv - vec2(0.5));
if(uAlphaParticles < 0.5) {
if(d > 0.5) {
discard;
}
gl_FragColor = vec4(vColor + 0.2 * sin(uv.yxx + uTime + vRandom.y * 6.28), 1.0);
} else {
float circle = smoothstep(0.5, 0.4, d) * 0.8;
gl_FragColor = vec4(vColor + 0.2 * sin(uv.yxx + uTime + vRandom.y * 6.28), circle);
}
}
`,we=({particleCount:s=200,particleSpread:e=10,speed:o=.1,particleColors:i,moveParticlesOnHover:c=!1,particleHoverFactor:u=1,alphaParticles:x=!1,particleBaseSize:h=100,sizeRandomness:r=1,cameraDistance:k=20,disableRotation:b=!1,pixelRatio:L=1,className:q})=>{const H=d.useRef(null),p=d.useRef({x:0,y:0});return d.useEffect(()=>{const w=H.current;if(!w)return;const M=new oe({dpr:L,depth:!1,alpha:!0}),N=M.gl;w.appendChild(N.canvas),N.clearColor(0,0,0,0);const S=new xe(N,{fov:15});S.position.set(0,0,k);const V=()=>{const g=w.clientWidth,f=w.clientHeight;M.setSize(g,f),S.perspective({aspect:N.canvas.width/N.canvas.height})};window.addEventListener("resize",V,!1),V();const J=g=>{const f=w.getBoundingClientRect(),D=(g.clientX-f.left)/f.width*2-1,E=-((g.clientY-f.top)/f.height*2-1);p.current={x:D,y:E}};c&&w.addEventListener("mousemove",J);const A=s,P=new Float32Array(A*3),R=new Float32Array(A*4),I=new Float32Array(A*3),U=i&&i.length>0?i:pe;for(let g=0;g<A;g++){let f,D,E,Y;do f=Math.random()*2-1,D=Math.random()*2-1,E=Math.random()*2-1,Y=f*f+D*D+E*E;while(Y>1||Y===0);const X=Math.cbrt(Math.random());P.set([f*X,D*X,E*X],g*3),R.set([Math.random(),Math.random(),Math.random(),Math.random()],g*4);const O=ge(U[Math.floor(Math.random()*U.length)]);I.set(O,g*3)}const B=new ae(N,{position:{size:3,data:P},random:{size:4,data:R},color:{size:3,data:I}}),$=new ie(N,{vertex:ve,fragment:be,uniforms:{uTime:{value:0},uSpread:{value:e},uBaseSize:{value:h*L},uSizeRandomness:{value:r},uAlphaParticles:{value:x?1:0}},transparent:!0,depthTest:!1}),z=new le(N,{mode:N.POINTS,geometry:B,program:$});let j,_=performance.now(),C=0;const W=g=>{j=requestAnimationFrame(W);const f=g-_;_=g,C+=f*o,$.uniforms.uTime.value=C*.001,c?(z.position.x=-p.current.x*u,z.position.y=-p.current.y*u):(z.position.x=0,z.position.y=0),b||(z.rotation.x=Math.sin(C*2e-4)*.1,z.rotation.y=Math.cos(C*5e-4)*.15,z.rotation.z+=.01*o),M.render({scene:z,camera:S})};return j=requestAnimationFrame(W),()=>{window.removeEventListener("resize",V),c&&w.removeEventListener("mousemove",J),cancelAnimationFrame(j),w.contains(N.canvas)&&w.removeChild(N.canvas)}},[s,e,o,c,u,x,h,r,k,b,L]),t.jsx("div",{ref:H,className:`relative w-full h-full ${q}`})};function je({text:s,speed:e=50,maxIterations:o=10,sequential:i=!1,revealDirection:c="start",useOriginalCharsOnly:u=!1,characters:x="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$%^&*()_+",className:h="",parentClassName:r="",encryptedClassName:k="",animateOn:b="hover",clickMode:L="once",...q}){const[H,p]=d.useState(s),[w,M]=d.useState(!1),[N,S]=d.useState(new Set),[V,J]=d.useState(!1),[A,P]=d.useState(b!=="click"),[R,I]=d.useState("forward"),U=d.useRef(null),B=d.useRef([]),$=d.useRef(0),z=d.useMemo(()=>u?Array.from(new Set(s.split(""))).filter(a=>a!==" "):x.split(""),[u,s,x]),j=d.useCallback((a,m)=>a.split("").map((v,n)=>v===" "?" ":m.has(n)?a[n]:z[Math.floor(Math.random()*z.length)]).join(""),[z]),_=d.useCallback(a=>{const m=[];if(a<=0)return m;if(c==="start"){for(let l=0;l<a;l++)m.push(l);return m}if(c==="end"){for(let l=a-1;l>=0;l--)m.push(l);return m}const v=Math.floor(a/2);let n=0;for(;m.length<a;){if(n%2===0){const l=v+n/2;l>=0&&l<a&&m.push(l)}else{const l=v-Math.ceil(n/2);l>=0&&l<a&&m.push(l)}n++}return m.slice(0,a)},[c]),C=d.useCallback(()=>{const a=new Set;for(let m=0;m<s.length;m++)a.add(m);return a},[s]),W=d.useCallback((a,m)=>{const v=Array.from(a);for(let n=0;n<m&&v.length>0;n++){const l=Math.floor(Math.random()*v.length);v.splice(l,1)}return new Set(v)},[]),g=d.useCallback(()=>{const a=new Set;S(a),p(j(s,a)),P(!1)},[s,j]),f=d.useCallback(()=>{i?(B.current=_(s.length),$.current=0,S(new Set)):S(new Set),I("forward"),M(!0)},[i,_,s.length]),D=d.useCallback(()=>{i?(B.current=_(s.length).slice().reverse(),$.current=0,S(C()),p(j(s,C()))):(S(C()),p(j(s,C()))),I("reverse"),M(!0)},[i,_,C,j,s]);d.useEffect(()=>{if(!w)return;let a,m=0;const v=n=>{const l=s.length;switch(c){case"start":return n.size;case"end":return l-1-n.size;case"center":{const y=Math.floor(l/2),G=Math.floor(n.size/2),K=n.size%2===0?y+G:y-G-1;if(K>=0&&K<l&&!n.has(K))return K;for(let Q=0;Q<l;Q++)if(!n.has(Q))return Q;return 0}default:return n.size}};return a=setInterval(()=>{S(n=>{if(i){if(R==="forward")if(n.size<s.length){const l=v(n),y=new Set(n);return y.add(l),p(j(s,y)),y}else return clearInterval(a),M(!1),P(!0),n;if(R==="reverse")if($.current<B.current.length){const l=B.current[$.current++],y=new Set(n);return y.delete(l),p(j(s,y)),y.size===0&&(clearInterval(a),M(!1),P(!1)),y}else return clearInterval(a),M(!1),P(!1),n}else{if(R==="forward")return p(j(s,n)),m++,m>=o&&(clearInterval(a),M(!1),p(s),P(!0)),n;if(R==="reverse"){let l=n;l.size===0&&(l=C());const y=Math.max(1,Math.ceil(s.length/Math.max(1,o))),G=W(l,y);return p(j(s,G)),m++,G.size===0||m>=o?(clearInterval(a),M(!1),P(!1),p(j(s,new Set)),new Set):G}}return n})},e),()=>clearInterval(a)},[w,s,e,o,i,c,j,R,C,W,x,u]);const E=()=>{if(b==="click"){if(L==="once"){if(A)return;I("forward"),f()}L==="toggle"&&(A?D():(I("f Line truncated
+62
View File
@@ -0,0 +1,62 @@
import{r as d,j as t,u as ee,a as te,l as se,k as re,L as E}from"./index-IL0bf27q.js";import{T as oe,a as Z,V as T,R as ae,G as ne,P as ie,M as le}from"./Mesh-CwXV3WjE.js";import{m as ce}from"./proxy-C5U9l3lk.js";import{C as de}from"./CountUp-BYW6-_IC.js";import{u as me}from"./useTranslation-_qZZdhi7.js";const ue=new Z,he=new T,xe=new T;class fe extends oe{constructor(e,{near:a=.1,far:i=100,fov:c=45,aspect:u=1,left:f,right:h,bottom:r,top:k,zoom:b=1}={}){super(),Object.assign(this,{near:a,far:i,fov:c,aspect:u,left:f,right:h,bottom:r,top:k,zoom:b}),this.projectionMatrix=new Z,this.viewMatrix=new Z,this.projectionViewMatrix=new Z,this.worldPosition=new T,this.type=f||h?"orthographic":"perspective",this.type==="orthographic"?this.orthographic():this.perspective()}perspective({near:e=this.near,far:a=this.far,fov:i=this.fov,aspect:c=this.aspect}={}){return Object.assign(this,{near:e,far:a,fov:i,aspect:c}),this.projectionMatrix.fromPerspective({fov:i*(Math.PI/180),aspect:c,near:e,far:a}),this.type="perspective",this}orthographic({near:e=this.near,far:a=this.far,left:i=this.left||-1,right:c=this.right||1,bottom:u=this.bottom||-1,top:f=this.top||1,zoom:h=this.zoom}={}){return Object.assign(this,{near:e,far:a,left:i,right:c,bottom:u,top:f,zoom:h}),i/=h,c/=h,u/=h,f/=h,this.projectionMatrix.fromOrthogonal({left:i,right:c,bottom:u,top:f,near:e,far:a}),this.type="orthographic",this}updateMatrixWorld(){return super.updateMatrixWorld(),this.viewMatrix.inverse(this.worldMatrix),this.worldMatrix.getTranslation(this.worldPosition),this.projectionViewMatrix.multiply(this.projectionMatrix,this.viewMatrix),this}updateProjectionMatrix(){return this.type==="perspective"?this.perspective():this.orthographic()}lookAt(e){return super.lookAt(e,!0),this}project(e){return e.applyMatrix4(this.viewMatrix),e.applyMatrix4(this.projectionMatrix),this}unproject(e){return e.applyMatrix4(ue.inverse(this.projectionMatrix)),e.applyMatrix4(this.worldMatrix),this}updateFrustum(){this.frustum||(this.frustum=[new T,new T,new T,new T,new T,new T]);const e=this.projectionViewMatrix;this.frustum[0].set(e[3]-e[0],e[7]-e[4],e[11]-e[8]).constant=e[15]-e[12],this.frustum[1].set(e[3]+e[0],e[7]+e[4],e[11]+e[8]).constant=e[15]+e[12],this.frustum[2].set(e[3]+e[1],e[7]+e[5],e[11]+e[9]).constant=e[15]+e[13],this.frustum[3].set(e[3]-e[1],e[7]-e[5],e[11]-e[9]).constant=e[15]-e[13],this.frustum[4].set(e[3]-e[2],e[7]-e[6],e[11]-e[10]).constant=e[15]-e[14],this.frustum[5].set(e[3]+e[2],e[7]+e[6],e[11]+e[10]).constant=e[15]+e[14];for(let a=0;a<6;a++){const i=1/this.frustum[a].distance();this.frustum[a].multiply(i),this.frustum[a].constant*=i}}frustumIntersectsMesh(e,a=e.worldMatrix){if(!e.geometry.attributes.position||((!e.geometry.bounds||e.geometry.bounds.radius===1/0)&&e.geometry.computeBoundingSphere(),!e.geometry.bounds))return!0;const i=he;i.copy(e.geometry.bounds.center),i.applyMatrix4(a);const c=e.geometry.bounds.radius*a.getMaxScaleOnAxis();return this.frustumIntersectsSphere(i,c)}frustumIntersectsSphere(e,a){const i=xe;for(let c=0;c<6;c++){const u=this.frustum[c];if(i.copy(u).dot(e)+u.constant<-a)return!1}return!0}}const pe=["#ffffff","#ffffff","#ffffff"],ge=s=>{s=s.replace(/^#/,""),s.length===3&&(s=s.split("").map(u=>u+u).join(""));const e=parseInt(s,16),a=(e>>16&255)/255,i=(e>>8&255)/255,c=(e&255)/255;return[a,i,c]},ve=`
attribute vec3 position;
attribute vec4 random;
attribute vec3 color;
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat4 projectionMatrix;
uniform float uTime;
uniform float uSpread;
uniform float uBaseSize;
uniform float uSizeRandomness;
varying vec4 vRandom;
varying vec3 vColor;
void main() {
vRandom = random;
vColor = color;
vec3 pos = position * uSpread;
pos.z *= 10.0;
vec4 mPos = modelMatrix * vec4(pos, 1.0);
float t = uTime;
mPos.x += sin(t * random.z + 6.28 * random.w) * mix(0.1, 1.5, random.x);
mPos.y += sin(t * random.y + 6.28 * random.x) * mix(0.1, 1.5, random.w);
mPos.z += sin(t * random.w + 6.28 * random.y) * mix(0.1, 1.5, random.z);
vec4 mvPos = viewMatrix * mPos;
if (uSizeRandomness == 0.0) {
gl_PointSize = uBaseSize;
} else {
gl_PointSize = (uBaseSize * (1.0 + uSizeRandomness * (random.x - 0.5))) / length(mvPos.xyz);
}
gl_Position = projectionMatrix * mvPos;
}
`,be=`
precision highp float;
uniform float uTime;
uniform float uAlphaParticles;
varying vec4 vRandom;
varying vec3 vColor;
void main() {
vec2 uv = gl_PointCoord.xy;
float d = length(uv - vec2(0.5));
if(uAlphaParticles < 0.5) {
if(d > 0.5) {
discard;
}
gl_FragColor = vec4(vColor + 0.2 * sin(uv.yxx + uTime + vRandom.y * 6.28), 1.0);
} else {
float circle = smoothstep(0.5, 0.4, d) * 0.8;
gl_FragColor = vec4(vColor + 0.2 * sin(uv.yxx + uTime + vRandom.y * 6.28), circle);
}
}
`,we=({particleCount:s=200,particleSpread:e=10,speed:a=.1,particleColors:i,moveParticlesOnHover:c=!1,particleHoverFactor:u=1,alphaParticles:f=!1,particleBaseSize:h=100,sizeRandomness:r=1,cameraDistance:k=20,disableRotation:b=!1,pixelRatio:$=1,className:q})=>{const G=d.useRef(null),p=d.useRef({x:0,y:0});return d.useEffect(()=>{const w=G.current;if(!w)return;const M=new ae({dpr:$,depth:!1,alpha:!0}),N=M.gl;w.appendChild(N.canvas),N.clearColor(0,0,0,0);const S=new fe(N,{fov:15});S.position.set(0,0,k);const _=()=>{const g=w.clientWidth,x=w.clientHeight;M.setSize(g,x),S.perspective({aspect:N.canvas.width/N.canvas.height})};window.addEventListener("resize",_,!1),_();const J=g=>{const x=w.getBoundingClientRect(),L=(g.clientX-x.left)/x.width*2-1,D=-((g.clientY-x.top)/x.height*2-1);p.current={x:L,y:D}};c&&w.addEventListener("mousemove",J);const A=s,z=new Float32Array(A*3),R=new Float32Array(A*4),I=new Float32Array(A*3),H=i&&i.length>0?i:pe;for(let g=0;g<A;g++){let x,L,D,Y;do x=Math.random()*2-1,L=Math.random()*2-1,D=Math.random()*2-1,Y=x*x+L*L+D*D;while(Y>1||Y===0);const X=Math.cbrt(Math.random());z.set([x*X,L*X,D*X],g*3),R.set([Math.random(),Math.random(),Math.random(),Math.random()],g*4);const O=ge(H[Math.floor(Math.random()*H.length)]);I.set(O,g*3)}const B=new ne(N,{position:{size:3,data:z},random:{size:4,data:R},color:{size:3,data:I}}),F=new ie(N,{vertex:ve,fragment:be,uniforms:{uTime:{value:0},uSpread:{value:e},uBaseSize:{value:h*$},uSizeRandomness:{value:r},uAlphaParticles:{value:f?1:0}},transparent:!0,depthTest:!1}),C=new le(N,{mode:N.POINTS,geometry:B,program:F});let j,V=performance.now(),P=0;const U=g=>{j=requestAnimationFrame(U);const x=g-V;V=g,P+=x*a,F.uniforms.uTime.value=P*.001,c?(C.position.x=-p.current.x*u,C.position.y=-p.current.y*u):(C.position.x=0,C.position.y=0),b||(C.rotation.x=Math.sin(P*2e-4)*.1,C.rotation.y=Math.cos(P*5e-4)*.15,C.rotation.z+=.01*a),M.render({scene:C,camera:S})};return j=requestAnimationFrame(U),()=>{window.removeEventListener("resize",_),c&&w.removeEventListener("mousemove",J),cancelAnimationFrame(j),w.contains(N.canvas)&&w.removeChild(N.canvas)}},[s,e,a,c,u,f,h,r,k,b,$]),t.jsx("div",{ref:G,className:`relative w-full h-full ${q}`})};function je({text:s,speed:e=50,maxIterations:a=10,sequential:i=!1,revealDirection:c="start",useOriginalCharsOnly:u=!1,characters:f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$%^&*()_+",className:h="",parentClassName:r="",encryptedClassName:k="",animateOn:b="hover",clickMode:$="once",...q}){const[G,p]=d.useState(s),[w,M]=d.useState(!1),[N,S]=d.useState(new Set),[_,J]=d.useState(!1),[A,z]=d.useState(b!=="click"),[R,I]=d.useState("forward"),H=d.useRef(null),B=d.useRef([]),F=d.useRef(0),C=d.useMemo(()=>u?Array.from(new Set(s.split(""))).filter(n=>n!==" "):f.split(""),[u,s,f]),j=d.useCallback((n,m)=>n.split("").map((v,o)=>v===" "?" ":m.has(o)?n[o]:C[Math.floor(Math.random()*C.length)]).join(""),[C]),V=d.useCallback(n=>{const m=[];if(n<=0)return m;if(c==="start"){for(let l=0;l<n;l++)m.push(l);return m}if(c==="end"){for(let l=n-1;l>=0;l--)m.push(l);return m}const v=Math.floor(n/2);let o=0;for(;m.length<n;){if(o%2===0){const l=v+o/2;l>=0&&l<n&&m.push(l)}else{const l=v-Math.ceil(o/2);l>=0&&l<n&&m.push(l)}o++}return m.slice(0,n)},[c]),P=d.useCallback(()=>{const n=new Set;for(let m=0;m<s.length;m++)n.add(m);return n},[s]),U=d.useCallback((n,m)=>{const v=Array.from(n);for(let o=0;o<m&&v.length>0;o++){const l=Math.floor(Math.random()*v.length);v.splice(l,1)}return new Set(v)},[]),g=d.useCallback(()=>{const n=new Set;S(n),p(j(s,n)),z(!1)},[s,j]),x=d.useCallback(()=>{i?(B.current=V(s.length),F.current=0,S(new Set)):S(new Set),I("forward"),M(!0)},[i,V,s.length]),L=d.useCallback(()=>{i?(B.current=V(s.length).slice().reverse(),F.current=0,S(P()),p(j(s,P()))):(S(P()),p(j(s,P()))),I("reverse"),M(!0)},[i,V,P,j,s]);d.useEffect(()=>{if(!w)return;let n,m=0;const v=o=>{const l=s.length;switch(c){case"start":return o.size;case"end":return l-1-o.size;case"center":{const y=Math.floor(l/2),W=Math.floor(o.size/2),K=o.size%2===0?y+W:y-W-1;if(K>=0&&K<l&&!o.has(K))return K;for(let Q=0;Q<l;Q++)if(!o.has(Q))return Q;return 0}default:return o.size}};return n=setInterval(()=>{S(o=>{if(i){if(R==="forward")if(o.size<s.length){const l=v(o),y=new Set(o);return y.add(l),p(j(s,y)),y}else return clearInterval(n),M(!1),z(!0),o;if(R==="reverse")if(F.current<B.current.length){const l=B.current[F.current++],y=new Set(o);return y.delete(l),p(j(s,y)),y.size===0&&(clearInterval(n),M(!1),z(!1)),y}else return clearInterval(n),M(!1),z(!1),o}else{if(R==="forward")return p(j(s,o)),m++,m>=a&&(clearInterval(n),M(!1),p(s),z(!0)),o;if(R==="reverse"){let l=o;l.size===0&&(l=P());const y=Math.max(1,Math.ceil(s.length/Math.max(1,a))),W=U(l,y);return p(j(s,W)),m++,W.size===0||m>=a?(clearInterval(n),M(!1),z(!1),p(j(s,new Set)),new Set):W}}return o})},e),()=>clearInterval(n)},[w,s,e,a,i,c,j,R,P,U,f,u]);const D=()=>{if(b==="click"){if($==="once"){if(A)return;I("forward"),x()}$==="toggle"&&(A?L():(I("f Line truncated
+1
View File
@@ -0,0 +1 @@
import{r as l,j as e,u as L,a as E,l as P,k as A,L as f}from"./index-IL0bf27q.js";import{u as R,a as B,C as F}from"./CountUp-BYW6-_IC.js";import{u as I}from"./use-animation-frame-C8xwlfkl.js";import{m as k}from"./proxy-C5U9l3lk.js";import{S as T}from"./SpotlightCard-DnZRIBvu.js";import{u as V}from"./useTranslation-_qZZdhi7.js";function _({children:t,className:n="",colors:o=["#5227FF","#FF9FFC","#B19EEF"],animationSpeed:i=8,showBorder:a=!1,direction:r="horizontal",pauseOnHover:c=!1,yoyo:x=!0}){const[s,g]=l.useState(!1),u=R(0),j=l.useRef(0),m=l.useRef(null),p=i*1e3;I(d=>{if(s){m.current=null;return}if(m.current===null){m.current=d;return}const M=d-m.current;if(m.current=d,j.current+=M,x){const z=p*2,h=j.current%z;h<p?u.set(h/p*100):u.set(100-(h-p)/p*100)}else u.set(j.current/p*100)}),l.useEffect(()=>{j.current=0,u.set(0)},[i,u,x]);const w=B(u,d=>r==="horizontal"?`${d}% 50%`:r==="vertical"?`50% ${d}%`:`${d}% 50%`),v=l.useCallback(()=>{c&&g(!0)},[c]),S=l.useCallback(()=>{c&&g(!1)},[c]),C=r==="horizontal"?"to right":r==="vertical"?"to bottom":"to bottom right",N=[...o,o[0]].join(", "),y={backgroundImage:`linear-gradient(${C}, ${N})`,backgroundSize:r==="horizontal"?"300% 100%":r==="vertical"?"100% 300%":"300% 300%",backgroundRepeat:"repeat"};return e.jsxs(k.div,{className:`relative mx-auto flex max-w-fit flex-row items-center justify-center rounded-[1.25rem] font-medium backdrop-blur transition-shadow duration-500 overflow-hidden cursor-pointer ${a?"py-1 px-2":""} ${n}`,onMouseEnter:v,onMouseLeave:S,children:[a&&e.jsx(k.div,{className:"absolute inset-0 z-0 pointer-events-none rounded-[1.25rem]",style:{...y,backgroundPosition:w},children:e.jsx("div",{className:"absolute bg-black rounded-[1.25rem] z-[-1]",style:{width:"calc(100% - 2px)",height:"calc(100% - 2px)",left:"50%",top:"50%",transform:"translate(-50%, -50%)"}})}),e.jsx(k.div,{className:"inline-block relative z-2 text-transparent bg-clip-text",style:{...y,backgroundPosition:w,WebkitBackgroundClip:"text"},children:t})]})}const W=(t,n)=>{const o=new Set([...Object.keys(t),...n.flatMap(a=>Object.keys(a))]),i={};return o.forEach(a=>{i[a]=[t[a],...n.map(r=>r[a])]}),i},G=({text:t="",delay:n=200,className:o="",animateBy:i="words",direction:a="top",threshold:r=.1,rootMargin:c="0px",animationFrom:x,animationTo:s,easing:g=m=>m,onAnimationComplete:u,stepDuration:j=.35})=>{const m=i==="words"?t.split(" "):t.split(""),[p,w]=l.useState(!1),v=l.useRef(null);l.useEffect(()=>{if(!v.current)return;const h=new IntersectionObserver(([b])=>{b.isIntersecting&&(w(!0),h.unobserve(v.current))},{threshold:r,rootMargin:c});return h.observe(v.current),()=>h.disconnect()},[r,c]);const S=l.useMemo(()=>a==="top"?{filter:"blur(10px)",opacity:0,y:-50}:{filter:"blur(10px)",opacity:0,y:50},[a]),C=l.useMemo(()=>[{filter:"blur(5px)",opacity:.5,y:a==="top"?5:-5},{filter:"blur(0px)",opacity:1,y:0}],[a]),N=x??S,y=s??C,d=y.length+1,M=j*(d-1),z=Array.from({length:d},(h,b)=>d===1?0:b/(d-1));return e.jsx("p",{ref:v,className:`blur-text ${o} flex flex-wrap`,children:m.map((h,b)=>{const D=W(N,y),$={duration:M,times:z,delay:b*n/1e3};return $.ease=g,e.jsxs(k.span,{className:"inline-block will-change-[transform,filter,opacity]",initial:N,animate:p?D:N,transition:$,onAnimationComplete:b===m.length-1?u:void 0,children:[h===" "?" ":h,i==="words"&&b<m.length-1&&" "]},b)})})},U=({as:t="button",className:n="",color:o="white",speed:i="6s",thickness:a=1,children:r,...c})=>e.jsxs(t,{className:`relative inline-block overflow-hidden rounded-[20px] ${n}`,style:{padding:`${a}px 0`,...c.style},...c,children:[e.jsx("div",{className:"absolute w-[300%] h-[50%] opacity-70 bottom-[-11px] right-[-250%] rounded-full animate-star-movement-bottom z-0",style:{background:`radial-gradient(circle, ${o}, transparent 10%)`,animationDuration:i}}),e.jsx("div",{className:"absolute w-[300%] h-[50%] opacity-70 top-[-10px] left-[-250%] rounded-full animate-star-movement-top z-0",style:{background:`radial-gradient(circle, ${o}, transparent 10%)`,animationDuration:i}}),e.jsx("div",{className:"relative z-1 bg-gradient-to-b from-black to-gray-900 border border-gray-800 text-white text-center text-[16px] py-[16px] px-[26px] rounded-[20px]",children:r})]});function Q(){const{t}=V(),{user:n}=L(),{site:o}=E(),[i,a]=l.useState([]),[r,c]=l.useState([]);l.useEffect(()=>{P().then(s=>{s.data.success&&a(s.data.data||[])}).catch(()=>{}),A().then(s=>{s.data.success&&c(s.data.data||[])}).catch(()=>{})},[]);const x=i.filter(s=>s.enabled!==!1);return e.jsxs("div",{className:"relative",children:[e.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[800px] h-[600px] bg-gradient-radial from-brand-600/20 via-purple-600/5 to-transparent blur-3xl"}),e.jsx("div",{className:"absolute top-[400px] right-0 w-[500px] h-[500px] bg-gradient-radial from-pink-600/10 to-transparent blur-3xl"})]}),e.jsxs("section",{className:"relative max-w-7xl mx-auto px-6 pt-24 pb-20",chLine truncated
@@ -1 +1 @@
import{r as c,j as e,u as f,a as N,l as v,k as w,L as r}from"./index-Drgd7k5E.js";import{C as p}from"./CountUp-Omm8FlHl.js";import{u as y}from"./useTranslation-B7WzaWp0.js";const o=({children:t,blur:i=!1,duration:n=800,delay:d=0,threshold:x=.1,initialOpacity:m=0,className:h="",...a})=>{const s=c.useRef(null),[l,j]=c.useState(!1);return c.useEffect(()=>{const b=s.current;if(!b)return;const u=new IntersectionObserver(([g])=>{g.isIntersecting&&(j(!0),u.disconnect())},{threshold:x});return u.observe(b),()=>u.disconnect()},[x]),e.jsx("div",{ref:s,className:h,style:{opacity:l?1:m,filter:i?l?"blur(0px)":"blur(10px)":void 0,transform:l?"translateY(0)":"translateY(20px)",transition:`opacity ${n}ms ease-out ${d}ms, filter ${n}ms ease-out ${d}ms, transform ${n}ms ease-out ${d}ms`,willChange:"opacity, filter, transform"},...a,children:t})};function $(){const{t}=y(),{user:i}=f(),{site:n}=N(),[d,x]=c.useState([]),[m,h]=c.useState([]);c.useEffect(()=>{v().then(s=>{s.data.success&&x(s.data.data||[])}).catch(()=>{}),w().then(s=>{s.data.success&&h(s.data.data||[])}).catch(()=>{})},[]);const a=d.filter(s=>s.enabled!==!1);return e.jsxs("div",{className:"relative",children:[e.jsxs("section",{className:"max-w-5xl mx-auto px-6 pt-32 pb-24",children:[e.jsx(o,{blur:!0,duration:800,delay:100,children:e.jsxs("div",{className:"max-w-3xl",children:[e.jsx("h1",{className:"text-5xl md:text-6xl font-heading font-bold text-white leading-[1.1] tracking-tight",children:(n==null?void 0:n.name)||t("home.defaultHeroTitle")}),e.jsx("p",{className:"text-lg text-neutral-400 mt-6 leading-relaxed max-w-xl",children:t("home.heroSubtitle")}),e.jsx("div",{className:"flex items-center gap-4 mt-10",children:i?e.jsxs(r,{to:"/dashboard",className:"px-7 py-3 rounded-lg bg-white text-neutral-900 font-medium text-sm hover:bg-neutral-200 transition-colors",children:[t("home.goToDashboard")," →"]}):e.jsxs(e.Fragment,{children:[e.jsxs(r,{to:"/register",className:"px-7 py-3 rounded-lg bg-white text-neutral-900 font-medium text-sm hover:bg-neutral-200 transition-colors",children:[t("home.getStarted")," →"]}),e.jsx(r,{to:"/pricing",className:"px-7 py-3 text-neutral-400 font-medium text-sm hover:text-white transition-colors",children:t("home.viewPricing")})]})})]})}),e.jsx(o,{blur:!0,duration:800,delay:400,children:e.jsxs("div",{className:"flex items-center gap-12 mt-20 border-t border-neutral-800 pt-10",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"text-2xl font-bold text-white",children:[e.jsx(p,{from:0,to:a.length||50,duration:2}),"+"]}),e.jsx("p",{className:"text-sm text-neutral-500 mt-0.5",children:t("home.aiModels")})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-2xl font-bold text-white",children:[e.jsx(p,{from:0,to:99.9,duration:2.5}),"%"]}),e.jsx("p",{className:"text-sm text-neutral-500 mt-0.5",children:t("home.uptime")})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-2xl font-bold text-white",children:["<",e.jsx(p,{from:200,to:50,duration:2,direction:"down"}),"ms"]}),e.jsx("p",{className:"text-sm text-neutral-500 mt-0.5",children:t("home.latency")})]})]})})]}),e.jsx("section",{className:"max-w-5xl mx-auto px-6 py-20",children:e.jsxs(o,{blur:!0,duration:800,delay:100,children:[e.jsx("h2",{className:"text-2xl font-heading font-bold text-white mb-2",children:t("home.whyChooseUs")}),e.jsx("p",{className:"text-neutral-500 mb-10",children:t("home.whyChooseUsDesc")}),e.jsx("div",{className:"space-y-6",children:[{title:t("home.lightningFast"),desc:t("home.lightningFastDesc")},{title:t("home.securePrivate"),desc:t("home.securePrivateDesc")},{title:t("home.payAsYouGo"),desc:t("home.payAsYouGoDesc")}].map((s,l)=>e.jsxs("div",{className:"flex gap-6 items-start py-6 border-b border-neutral-800/60 last:border-0 group",children:[e.jsxs("span",{className:"text-sm font-mono text-neutral-600 mt-0.5",children:["0",l+1]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base font-semibold text-white mb-1 group-hover:text-neutral-300 transition-colors",children:s.title}),e.jsx("p",{className:"text-sm text-neutral-500 leading-relaxed max-w-lg",children:s.desc})]})]},l))})]})}),a.length>0&&e.jsx("section",{className:"max-w-5xl mx-auto px-6 py-20",children:e.jsxs(o,{blur:!0,duration:800,delay:100,children:[e.jsxs("div",{className:"flex items-end justify-between mb-8",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-heading font-bold text-white mb-2",children:t("home.availableModels")}),e.jsx("p",{className:"text-neutral-500",children:t("home.availableModelsDesc",{count:a.length})})]}),a.length>8&&e.jsxs(r,{to:"/pricing",className:"text-sm text-neutral-400 hover:text-white transition-colors",children:[t("home.viewAllModels",{count:a.length})," →"]})]}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-2",children:a.slice(0,8).map((s,l)=>e.jsx("div",{className:"px-4 py-3 rounded-lg border border-neutral-800/60 hover:border-neutral-700 transition-colors",children:e.jsx("span",{className:"text-sm text-neutralLine truncated
import{r as c,j as e,u as f,a as N,l as v,k as w,L as r}from"./index-IL0bf27q.js";import{C as p}from"./CountUp-BYW6-_IC.js";import{u as y}from"./useTranslation-_qZZdhi7.js";const o=({children:t,blur:i=!1,duration:n=800,delay:d=0,threshold:x=.1,initialOpacity:m=0,className:h="",...a})=>{const s=c.useRef(null),[l,j]=c.useState(!1);return c.useEffect(()=>{const b=s.current;if(!b)return;const u=new IntersectionObserver(([g])=>{g.isIntersecting&&(j(!0),u.disconnect())},{threshold:x});return u.observe(b),()=>u.disconnect()},[x]),e.jsx("div",{ref:s,className:h,style:{opacity:l?1:m,filter:i?l?"blur(0px)":"blur(10px)":void 0,transform:l?"translateY(0)":"translateY(20px)",transition:`opacity ${n}ms ease-out ${d}ms, filter ${n}ms ease-out ${d}ms, transform ${n}ms ease-out ${d}ms`,willChange:"opacity, filter, transform"},...a,children:t})};function $(){const{t}=y(),{user:i}=f(),{site:n}=N(),[d,x]=c.useState([]),[m,h]=c.useState([]);c.useEffect(()=>{v().then(s=>{s.data.success&&x(s.data.data||[])}).catch(()=>{}),w().then(s=>{s.data.success&&h(s.data.data||[])}).catch(()=>{})},[]);const a=d.filter(s=>s.enabled!==!1);return e.jsxs("div",{className:"relative",children:[e.jsxs("section",{className:"max-w-5xl mx-auto px-6 pt-32 pb-24",children:[e.jsx(o,{blur:!0,duration:800,delay:100,children:e.jsxs("div",{className:"max-w-3xl",children:[e.jsx("h1",{className:"text-5xl md:text-6xl font-heading font-bold text-white leading-[1.1] tracking-tight",children:(n==null?void 0:n.name)||t("home.defaultHeroTitle")}),e.jsx("p",{className:"text-lg text-neutral-400 mt-6 leading-relaxed max-w-xl",children:t("home.heroSubtitle")}),e.jsx("div",{className:"flex items-center gap-4 mt-10",children:i?e.jsxs(r,{to:"/dashboard",className:"px-7 py-3 rounded-lg bg-white text-neutral-900 font-medium text-sm hover:bg-neutral-200 transition-colors",children:[t("home.goToDashboard")," →"]}):e.jsxs(e.Fragment,{children:[e.jsxs(r,{to:"/register",className:"px-7 py-3 rounded-lg bg-white text-neutral-900 font-medium text-sm hover:bg-neutral-200 transition-colors",children:[t("home.getStarted")," →"]}),e.jsx(r,{to:"/pricing",className:"px-7 py-3 text-neutral-400 font-medium text-sm hover:text-white transition-colors",children:t("home.viewPricing")})]})})]})}),e.jsx(o,{blur:!0,duration:800,delay:400,children:e.jsxs("div",{className:"flex items-center gap-12 mt-20 border-t border-neutral-800 pt-10",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"text-2xl font-bold text-white",children:[e.jsx(p,{from:0,to:a.length||50,duration:2}),"+"]}),e.jsx("p",{className:"text-sm text-neutral-500 mt-0.5",children:t("home.aiModels")})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-2xl font-bold text-white",children:[e.jsx(p,{from:0,to:99.9,duration:2.5}),"%"]}),e.jsx("p",{className:"text-sm text-neutral-500 mt-0.5",children:t("home.uptime")})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-2xl font-bold text-white",children:["<",e.jsx(p,{from:200,to:50,duration:2,direction:"down"}),"ms"]}),e.jsx("p",{className:"text-sm text-neutral-500 mt-0.5",children:t("home.latency")})]})]})})]}),e.jsx("section",{className:"max-w-5xl mx-auto px-6 py-20",children:e.jsxs(o,{blur:!0,duration:800,delay:100,children:[e.jsx("h2",{className:"text-2xl font-heading font-bold text-white mb-2",children:t("home.whyChooseUs")}),e.jsx("p",{className:"text-neutral-500 mb-10",children:t("home.whyChooseUsDesc")}),e.jsx("div",{className:"space-y-6",children:[{title:t("home.lightningFast"),desc:t("home.lightningFastDesc")},{title:t("home.securePrivate"),desc:t("home.securePrivateDesc")},{title:t("home.payAsYouGo"),desc:t("home.payAsYouGoDesc")}].map((s,l)=>e.jsxs("div",{className:"flex gap-6 items-start py-6 border-b border-neutral-800/60 last:border-0 group",children:[e.jsxs("span",{className:"text-sm font-mono text-neutral-600 mt-0.5",children:["0",l+1]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base font-semibold text-white mb-1 group-hover:text-neutral-300 transition-colors",children:s.title}),e.jsx("p",{className:"text-sm text-neutral-500 leading-relaxed max-w-lg",children:s.desc})]})]},l))})]})}),a.length>0&&e.jsx("section",{className:"max-w-5xl mx-auto px-6 py-20",children:e.jsxs(o,{blur:!0,duration:800,delay:100,children:[e.jsxs("div",{className:"flex items-end justify-between mb-8",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-heading font-bold text-white mb-2",children:t("home.availableModels")}),e.jsx("p",{className:"text-neutral-500",children:t("home.availableModelsDesc",{count:a.length})})]}),a.length>8&&e.jsxs(r,{to:"/pricing",className:"text-sm text-neutral-400 hover:text-white transition-colors",children:[t("home.viewAllModels",{count:a.length})," →"]})]}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-2",children:a.slice(0,8).map((s,l)=>e.jsx("div",{className:"px-4 py-3 rounded-lg border border-neutral-800/60 hover:border-neutral-700 transition-colors",children:e.jsx("span",{className:"text-sm text-neutralLine truncated
-100
View File
@@ -1,100 +0,0 @@
import{r as o,j as t,u as se,a as ne,l as re,k as oe,L as z}from"./index-Drgd7k5E.js";import{G as ae,R as ie,P as le,M as ce}from"./Mesh-CwXV3WjE.js";import{i as O,P as de,u as ue,L as me,m as L}from"./proxy-BOtdvQpP.js";import{M as he,b as J,d as fe,u as _,e as B,C as xe}from"./CountUp-Omm8FlHl.js";import{u as pe}from"./useTranslation-B7WzaWp0.js";function X(e,n){if(typeof e=="function")return e(n);e!=null&&(e.current=n)}function ge(...e){return n=>{let r=!1;const c=e.map(d=>{const u=X(d,n);return!r&&typeof u=="function"&&(r=!0),u});if(r)return()=>{for(let d=0;d<c.length;d++){const u=c[d];typeof u=="function"?u():X(e[d],null)}}}}function ve(...e){return o.useCallback(ge(...e),e)}class be extends o.Component{getSnapshotBeforeUpdate(n){const r=this.props.childRef.current;if(O(r)&&n.isPresent&&!this.props.isPresent&&this.props.pop!==!1){const c=r.offsetParent,d=O(c)&&c.offsetWidth||0,u=O(c)&&c.offsetHeight||0,m=getComputedStyle(r),a=this.props.sizeRef.current;a.height=parseFloat(m.height),a.width=parseFloat(m.width),a.top=r.offsetTop,a.left=r.offsetLeft,a.right=d-a.width-a.left,a.bottom=u-a.height-a.top}return null}componentDidUpdate(){}render(){return this.props.children}}function we({children:e,isPresent:n,anchorX:r,anchorY:c,root:d,pop:u}){var g;const m=o.useId(),a=o.useRef(null),s=o.useRef({width:0,height:0,top:0,left:0,right:0,bottom:0}),{nonce:h}=o.useContext(he),x=((g=e.props)==null?void 0:g.ref)??(e==null?void 0:e.ref),b=ve(a,x);return o.useInsertionEffect(()=>{const{width:w,height:p,top:j,left:v,right:y,bottom:P}=s.current;if(n||u===!1||!a.current||!w||!p)return;const I=r==="left"?`left: ${v}`:`right: ${y}`,i=c==="bottom"?`bottom: ${P}`:`top: ${j}`;a.current.dataset.motionPopId=m;const S=document.createElement("style");h&&(S.nonce=h);const E=d??document.head;return E.appendChild(S),S.sheet&&S.sheet.insertRule(`
[data-motion-pop-id="${m}"] {
position: absolute !important;
width: ${w}px !important;
height: ${p}px !important;
${I}px !important;
${i}px !important;
}
`),()=>{var k;(k=a.current)==null||k.removeAttribute("data-motion-pop-id"),E.contains(S)&&E.removeChild(S)}},[n]),t.jsx(be,{isPresent:n,childRef:a,sizeRef:s,pop:u,children:u===!1?e:o.cloneElement(e,{ref:b})})}const ye=({children:e,initial:n,isPresent:r,onExitComplete:c,custom:d,presenceAffectsLayout:u,mode:m,anchorX:a,anchorY:s,root:h})=>{const x=J(Ce),b=o.useId();let g=!0,w=o.useMemo(()=>(g=!1,{id:b,initial:n,isPresent:r,custom:d,onExitComplete:p=>{x.set(p,!0);for(const j of x.values())if(!j)return;c&&c()},register:p=>(x.set(p,!1),()=>x.delete(p))}),[r,x,c]);return u&&g&&(w={...w}),o.useMemo(()=>{x.forEach((p,j)=>x.set(j,!1))},[r]),o.useEffect(()=>{!r&&!x.size&&c&&c()},[r]),e=t.jsx(we,{pop:m==="popLayout",isPresent:r,anchorX:a,anchorY:s,root:h,children:e}),t.jsx(de.Provider,{value:w,children:e})};function Ce(){return new Map}const Y=e=>e.key||"";function V(e){const n=[];return o.Children.forEach(e,r=>{o.isValidElement(r)&&n.push(r)}),n}const je=({children:e,custom:n,initial:r=!0,onExitComplete:c,presenceAffectsLayout:d=!0,mode:u="sync",propagate:m=!1,anchorX:a="left",anchorY:s="top",root:h})=>{const[x,b]=ue(m),g=o.useMemo(()=>V(e),[e]),w=m&&!x?[]:g.map(Y),p=o.useRef(!0),j=o.useRef(g),v=J(()=>new Map),y=o.useRef(new Set),[P,I]=o.useState(g),[i,S]=o.useState(g);fe(()=>{p.current=!1,j.current=g;for(let A=0;A<i.length;A++){const f=Y(i[A]);w.includes(f)?(v.delete(f),y.current.delete(f)):v.get(f)!==!0&&v.set(f,!1)}},[i,w.length,w.join("-")]);const E=[];if(g!==P){let A=[...g];for(let f=0;f<i.length;f++){const M=i[f],R=Y(M);w.includes(R)||(A.splice(f,0,M),E.push(M))}return u==="wait"&&E.length&&(A=E),S(V(A)),I(g),null}const{forceRender:k}=o.useContext(me);return t.jsx(t.Fragment,{children:i.map(A=>{const f=Y(A),M=m&&!x?!1:g===i||w.includes(f),R=()=>{if(y.current.has(f))return;if(v.has(f))y.current.add(f),v.set(f,!0);else return;let $=!0;v.forEach(T=>{T||($=!1)}),$&&(k==null||k(),S(j.current),m&&(b==null||b()),c&&c())};return t.jsx(ye,{isPresent:M,initial:!p.current||r?void 0:!1,custom:n,presenceAffectsLayout:d,mode:u,root:h,onExitComplete:M?void 0:R,anchorX:a,anchorY:s,children:A},f)})})},W={black:"#000000",white:"#ffffff",red:"#ff0000",green:"#00ff00",blue:"#0000ff",fuchsia:"#ff00ff",cyan:"#00ffff",yellow:"#ffff00",orange:"#ff8000"};function q(e){e.length===4&&(e=e[0]+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]);const n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return n||console.warn(`Unable to convert hex string ${e} to rgb values`),[parseInt(n[1],16)/255,parseInt(n[2],16)/255,parseInt(n[3],16)/255]}function Ne(e){return e=parseInt(e),[(e>>16&255)/255,(e>>8&255)/255,(e&255)/255]}function K(e){return e===void 0?[0,0,0]:arguments.length===3?arguments:isNaN(e)?e[0]==="#"?q(e):W[e.toLowerCase()]?q(W[e.toLowerCase()]):(console.warn("Color format not recognised"),[0,0,0]):Ne(e)}class Z extends Array{constructor(n){return Array.isArray(n)?super(...n):super(...K(...arguments))}get r(){return this[0]}get g(){return this[1]}get b(){return this[2]}set r(n){this[0]=n}set g(n){this[1]=n}set b(n){this[2]=n}set(n){return Array.isArray(n)?this.copy(n):this.copy(K(...arguments))}copy(n){return this[0]=n[0],this[1]=n[1],this[2]=n[2],this}}class Se extends ae{constructor(n,{attributes:r={}}={}){Object.assign(r,{position:{size:2,data:new Float32Array([-1,-1,3,-1,-1,3])},uv:{size:2,data:new Float32Array([0,0,2,0,0,2])}}),super(n,r)}}const Me=`#version 300 es
in vec2 position;
void main() {
gl_Position = vec4(position, 0.0, 1.0);
}
`,Re=`#version 300 es
precision highp float;
uniform float uTime;
uniform float uAmplitude;
uniform vec3 uColorStops[3];
uniform vec2 uResolution;
uniform float uBlend;
out vec4 fragColor;
vec3 permute(vec3 x) {
return mod(((x * 34.0) + 1.0) * x, 289.0);
}
float snoise(vec2 v){
const vec4 C = vec4(
0.211324865405187, 0.366025403784439,
-0.577350269189626, 0.024390243902439
);
vec2 i = floor(v + dot(v, C.yy));
vec2 x0 = v - i + dot(i, C.xx);
vec2 i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
vec4 x12 = x0.xyxy + C.xxzz;
x12.xy -= i1;
i = mod(i, 289.0);
vec3 p = permute(
permute(i.y + vec3(0.0, i1.y, 1.0))
+ i.x + vec3(0.0, i1.x, 1.0)
);
vec3 m = max(
0.5 - vec3(
dot(x0, x0),
dot(x12.xy, x12.xy),
dot(x12.zw, x12.zw)
),
0.0
);
m = m * m;
m = m * m;
vec3 x = 2.0 * fract(p * C.www) - 1.0;
vec3 h = abs(x) - 0.5;
vec3 ox = floor(x + 0.5);
vec3 a0 = x - ox;
m *= 1.79284291400159 - 0.85373472095314 * (a0*a0 + h*h);
vec3 g;
g.x = a0.x * x0.x + h.x * x0.y;
g.yz = a0.yz * x12.xz + h.yz * x12.yw;
return 130.0 * dot(m, g);
}
struct ColorStop {
vec3 color;
float position;
};
#define COLOR_RAMP(colors, factor, finalColor) { int index = 0; for (int i = 0; i < 2; i++) { ColorStop currentColor = colors[i]; bool isInBetween = currentColor.position <= factor; index = int(mix(float(index), float(i), float(isInBetween))); } ColorStop currentColor = colors[index]; ColorStop nextColor = colors[index + 1]; float range = nextColor.position - currentColor.position; float lerpFactor = (factor - currentColor.position) / range; finalColor = mix(currentColor.color, nextColor.color, lerpFactor); }
void main() {
vec2 uv = gl_FragCoord.xy / uResolution;
ColorStop colors[3];
colors[0] = ColorStop(uColorStops[0], 0.0);
colors[1] = ColorStop(uColorStops[1], 0.5);
colors[2] = ColorStop(uColorStops[2], 1.0);
vec3 rampColor;
COLOR_RAMP(colors, uv.x, rampColor);
float height = snoise(vec2(uv.x * 2.0 + uTime * 0.1, uTime * 0.25)) * 0.5 * uAmplitude;
height = exp(height);
height = (uv.y * 2.0 - height + 0.2);
float intensity = 0.6 * height;
float midPoint = 0.20;
float auroraAlpha = smoothstep(midPoint - uBlend * 0.5, midPoint + uBlend * 0.5, intensity);
vec3 auroraColor = intensity * rampColor;
fragColor = vec4(auroraColor * auroraAlpha, auroraAlpha);
}
`;function Ae(e){const{colorStops:n=["#5227FF","#7cff67","#5227FF"],amplitude:r=1,blend:c=.5}=e,d=o.useRef(e);d.current=e;const u=o.useRef(null);return o.useEffect(()=>{const m=u.current;if(!m)return;const a=new ie({alpha:!0,premultipliedAlpha:!0,antialias:!0}),s=a.gl;s.clearColor(0,0,0,0),s.enable(s.BLEND),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA),s.canvas.style.backgroundColor="transparent";let h;function x(){if(!m)return;const v=m.offsetWidth,y=m.offsetHeight;a.setSize(v,y),h&&(h.uniforms.uResolution.value=[v,y])}window.addEventListener("resize",x);const b=new Se(s);b.attributes.uv&&delete b.attributes.uv;const g=n.map(v=>{const y=new Z(v);return[y.r,y.g,y.b]});h=new le(s,{vertex:Me,fragment:Re,uniforms:{uTime:{value:0},uAmplitude:{value:r},uColorStops:{value:g},uResolution:{value:[m.offsetWidth,m.offsetHeight]},uBlend:{value:c}}});const w=new ce(s,{geometry:b,program:h});m.appendChild(s.canvas);let p=0;const j=v=>{p=requestAnimationFrame(j);const{time:y=v*.01,speed:P=1}=d.current;h.uniforms.uTime.value=y*P*.1,h.uniforms.uAmplitude.value=d.current.amplitude??1,h.uniforms.uBlend.value=d.current.blend??c;const I=d.current.colorStops??n;h.uniforms.uColorStops.value=I.map(i=>{const S=new Z(i);return[S.r,S.g,S.b]}),a.render({scene:w})};return p=requestAnimationFrame(j),x(),()=>{var v;cancelAnimationFrame(p),window.removeEventListener("resize",x),m&&s.canvas.parentNode===m&&m.removeChild(s.canvas),(v=s.getExtension("WEBGL_lose_context"))==null||v.loseContext()}},[r]),t.jsx("div",{ref:u,className:"w-full h-full"})}const Fe=({text:e="",className:n="",delay:r=50})=>{const c=o.useMemo(()=>e.split(""),[e]);return t.jsx("span",{className:n,"aria-label":e,children:c.map((d,u)=>t.jsx(L.span,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,delay:u*r/1e3,ease:[.25,.46,.45,.94]},style:{display:"inline-block",whiteSpace:d===" "?"pre":"normal"},children:d},`${d}-${u}`))})};function G(...e){return e.filter(Boolean).join(" ")}const Q=o.forwardRef((e,n)=>{const{texts:r,transition:c={type:"spring",damping:25,stiffness:300},initial:d={y:"100%",opacity:0},animate:u={y:0,opacity:1},exit:m={y:"-120%",opacity:0},animatePresenceMode:a="wait",animatePresenceInitial:s=!1,rotationInterval:h=2e3,staggerDuration:x=0,staggerFrom:b="first",loop:g=!0,auto:w=!0,splitBy:p="characters",onNext:j,mainClassName:v,splitLevelClassName:y,elementLevelClassName:P,...I}=e,[i,S]=o.useState(0),E=l=>{if(typeof Intl<"u"&&Intl.Segmenter){const C=new Intl.Segmenter("en",{granularity:"grapheme"});return Array.from(C.segment(l),N=>N.segment)}return Array.from(l)},k=o.useMemo(()=>{const l=r[i];if(p==="characters"){const C=l.split(" ");return C.map((N,F)=>({characters:E(N),needsSpace:F!==C.length-1}))}return p==="words"?l.split(" ").map((C,N,F)=>({characters:[C],needsSpace:N!==F.length-1})):p==="lines"?l.split(`
`).map((C,N,F)=>({characters:[C],needsSpace:N!==F.length-1})):l.split(p).map((C,N,F)=>({characters:[C],needsSpace:N!==F.length-1}))},[r,i,p]),A=o.useCallback((l,C)=>{const N=C;if(b==="first")return l*x;if(b==="last")return(N-1-l)*x;if(b==="center"){const F=Math.floor(N/2);return Math.abs(F-l)*x}if(b==="random"){const F=Math.floor(Math.random()*N);return Math.abs(F-l)*x}return Math.abs(b-l)*x},[b,x]),f=o.useCallback(l=>{S(l),j&&j(l)},[j]),M=o.useCallback(()=>{const l=i===r.length-1?g?0:i:i+1;l!==i&&f(l)},[i,r.length,g,f]),R=o.useCallback(()=>{const l=i===0?g?r.length-1:i:i-1;l!==i&&f(l)},[i,r.length,g,f]),$=o.useCallback(l=>{const C=Math.max(0,Math.min(l,r.length-1));C!==i&&f(C)},[r.length,i,f]),T=o.useCallback(()=>{i!==0&&f(0)},[i,f]);return o.useImperativeHandle(n,()=>({next:M,previous:R,jumpTo:$,reset:T}),[M,R,$,T]),o.useEffect(()=>{if(!w)return;const l=setInterval(M,h);return()=>clearInterval(l)},[M,h,w]),t.jsxs(L.span,{className:G("flex flex-wrap whitespace-pre-wrap relative",v),...I,layout:!0,transition:c,children:[t.jsx("span",{className:"sr-only",children:r[i]}),t.jsx(je,{mode:a,initial:s,children:t.jsx(L.span,{className:G(p==="lines"?"flex flex-col w-full":"flex flex-wrap whitespace-pre-wrap relative"),layout:!0,"aria-hidden":"true",children:k.map((l,C,N)=>{const F=N.slice(0,C).reduce((H,D)=>H+D.characters.length,0);return t.jsxs("span",{className:G("inline-flex",y),children:[l.characters.map((H,D)=>t.jsx(L.span,{initial:d,animate:u,exit:m,transition:{...c,delay:A(F+D,N.reduce((ee,te)=>ee+te.characters.length,0))},className:G("inline-block",P),children:H},D)),l.needsSpace&&t.jsx("span",{className:"whitespace-pre",children:" "})]},C)})},i)})]})});Q.displayName="RotatingText";const U={damping:30,stiffness:100,mass:2};function Pe({imageSrc:e,altText:n="Tilted card image",captionText:r="",containerHeight:c="300px",containerWidth:d="100%",imageHeight:u="300px",imageWidth:m="300px",scaleOnHover:a=1.1,rotateAmplitude:s=14,showMobileWarning:h=!0,showTooltip:x=!0,overlayContent:b=null,displayOverlayContent:g=!1}){const w=o.useRef(null),p=_(0),j=_(0),v=B(_(0),U),y=B(_(0),U),P=B(1,U),I=B(0),i=B(0,{stiffness:350,damping:30,mass:1}),[S,E]=o.useState(0);function k(M){if(!w.current)return;const R=w.current.getBoundingClientRect(),$=M.clientX-R.left-R.width/2,T=M.clientY-R.top-R.height/2,l=T/(R.height/2)*-s,C=$/(R.width/2)*s;v.set(l),y.set(C),p.set(M.clientX-R.left),j.set(M.clientY-R.top);const N=T-S;i.set(-N*.6),E(T)}function A(){P.set(a),I.set(1)}function f(){I.set(0),P.set(1),v.set(0),y.set(0),i.set(0)}return t.jsxs("figure",{ref:w,className:"relative w-full h-full [perspective:800px] flex flex-col items-center justify-center",style:{height:c,width:d},onMouseMove:k,onMouseEnter:A,onMouseLeave:f,children:[h&&t.jsx("div",{className:"absolute top-4 text-center text-sm block sm:hidden",children:"This effect is not optimized for mobile. Check on desktop."}),t.jsxs(L.div,{className:"relative [transform-style:preserve-3d]",style:{width:m,height:u,rotateX:v,rotateY:y,scale:P},children:[t.jsx(L.img,{src:e,alt:n,className:"absolute top-0 left-0 object-cover rounded-[15px] will-change-transform [transform:translateZ(0)]",style:{width:m,height:u}}),g&&b&&t.jsx(L.div,{className:"absolute top-0 left-0 z-[2] will-change-transform [transform:translateZ(30px)]",children:b})]}),x&&t.jsx(L.figcaption,{className:"pointer-events-none absolute left-0 top-0 rounded-[4px] bg-white px-[10px] py-[4px] text-[10px] text-[#2d2d2d] opacity-0 z-[3] hidden sm:block",style:{x:p,y:j,opacity:I,rotate:i},children:r})]})}function Le(){const{t:e}=pe(),{user:n}=se(),{site:r}=ne(),[c,d]=o.useState([]),[u,m]=o.useState([]);o.useEffect(()=>{re().then(s=>{s.data.success&&d(s.data.data||[])}).catch(()=>{}),oe().then(s=>{s.data.success&&m(s.data.data||[])}).catch(()=>{})},[]);const a=c.filter(s=>s.enabled!==!1);return t.jsxs("div",{className:"relative",children:[t.jsx("div",{className:"absolute inset-0 h-[700px] overflow-hidden pointer-events-none",children:t.jsx(Ae,{colorStops:["#3A29FF","#FF94B4","#FF3232"],blend:.5,amplitude:1,speed:.5})}),t.jsxs("section",{className:"relative max-w-7xl mx-auto px-6 pt-28 pb-24",children:[t.jsxs("div",{className:"text-center max-w-4xl mx-auto",children:[t.jsx("div",{className:"mb-4",children:t.jsx("h1",{className:"text-5xl md:text-7xl font-heading font-extrabold text-white leading-tight",children:t.jsx(Fe,{text:(r==null?void 0:r.name)||e("home.defaultHeroTitle"),delay:80,className:"inline"})})}),t.jsx("div",{className:"flex items-center justify-center gap-2 text-xl md:text-2xl text-neutral-300 mb-10",children:t.jsxs("span",{children:[e("home.heroSubtitle").split(".")[0],"."]})}),t.jsx("div",{className:"flex flex-wrap items-center justify-center gap-3 mb-6",children:t.jsx(Q,{texts:[e("home.lightningFast"),e("home.securePrivate"),e("home.payAsYouGo")],mainClassName:"px-4 py-2 bg-white/10 backdrop-blur-sm rounded-full text-white text-sm font-medium overflow-hidden",staggerFrom:"last",rotationInterval:3e3})}),t.jsx("div",{ Line truncated
-1
View File
@@ -1 +0,0 @@
import{r as l,j as e,u as L,a as E,l as P,k as A,L as f}from"./index-Drgd7k5E.js";import{u as R,a as B,C as F}from"./CountUp-Omm8FlHl.js";import{u as I}from"./use-animation-frame-BTI5WVkr.js";import{m as k}from"./proxy-BOtdvQpP.js";import{S as T}from"./SpotlightCard-C_ZqQ-j4.js";import{u as V}from"./useTranslation-B7WzaWp0.js";function _({children:t,className:n="",colors:o=["#5227FF","#FF9FFC","#B19EEF"],animationSpeed:i=8,showBorder:a=!1,direction:r="horizontal",pauseOnHover:c=!1,yoyo:x=!0}){const[s,g]=l.useState(!1),u=R(0),j=l.useRef(0),m=l.useRef(null),p=i*1e3;I(d=>{if(s){m.current=null;return}if(m.current===null){m.current=d;return}const M=d-m.current;if(m.current=d,j.current+=M,x){const z=p*2,h=j.current%z;h<p?u.set(h/p*100):u.set(100-(h-p)/p*100)}else u.set(j.current/p*100)}),l.useEffect(()=>{j.current=0,u.set(0)},[i,u,x]);const w=B(u,d=>r==="horizontal"?`${d}% 50%`:r==="vertical"?`50% ${d}%`:`${d}% 50%`),v=l.useCallback(()=>{c&&g(!0)},[c]),S=l.useCallback(()=>{c&&g(!1)},[c]),C=r==="horizontal"?"to right":r==="vertical"?"to bottom":"to bottom right",N=[...o,o[0]].join(", "),y={backgroundImage:`linear-gradient(${C}, ${N})`,backgroundSize:r==="horizontal"?"300% 100%":r==="vertical"?"100% 300%":"300% 300%",backgroundRepeat:"repeat"};return e.jsxs(k.div,{className:`relative mx-auto flex max-w-fit flex-row items-center justify-center rounded-[1.25rem] font-medium backdrop-blur transition-shadow duration-500 overflow-hidden cursor-pointer ${a?"py-1 px-2":""} ${n}`,onMouseEnter:v,onMouseLeave:S,children:[a&&e.jsx(k.div,{className:"absolute inset-0 z-0 pointer-events-none rounded-[1.25rem]",style:{...y,backgroundPosition:w},children:e.jsx("div",{className:"absolute bg-black rounded-[1.25rem] z-[-1]",style:{width:"calc(100% - 2px)",height:"calc(100% - 2px)",left:"50%",top:"50%",transform:"translate(-50%, -50%)"}})}),e.jsx(k.div,{className:"inline-block relative z-2 text-transparent bg-clip-text",style:{...y,backgroundPosition:w,WebkitBackgroundClip:"text"},children:t})]})}const W=(t,n)=>{const o=new Set([...Object.keys(t),...n.flatMap(a=>Object.keys(a))]),i={};return o.forEach(a=>{i[a]=[t[a],...n.map(r=>r[a])]}),i},G=({text:t="",delay:n=200,className:o="",animateBy:i="words",direction:a="top",threshold:r=.1,rootMargin:c="0px",animationFrom:x,animationTo:s,easing:g=m=>m,onAnimationComplete:u,stepDuration:j=.35})=>{const m=i==="words"?t.split(" "):t.split(""),[p,w]=l.useState(!1),v=l.useRef(null);l.useEffect(()=>{if(!v.current)return;const h=new IntersectionObserver(([b])=>{b.isIntersecting&&(w(!0),h.unobserve(v.current))},{threshold:r,rootMargin:c});return h.observe(v.current),()=>h.disconnect()},[r,c]);const S=l.useMemo(()=>a==="top"?{filter:"blur(10px)",opacity:0,y:-50}:{filter:"blur(10px)",opacity:0,y:50},[a]),C=l.useMemo(()=>[{filter:"blur(5px)",opacity:.5,y:a==="top"?5:-5},{filter:"blur(0px)",opacity:1,y:0}],[a]),N=x??S,y=s??C,d=y.length+1,M=j*(d-1),z=Array.from({length:d},(h,b)=>d===1?0:b/(d-1));return e.jsx("p",{ref:v,className:`blur-text ${o} flex flex-wrap`,children:m.map((h,b)=>{const D=W(N,y),$={duration:M,times:z,delay:b*n/1e3};return $.ease=g,e.jsxs(k.span,{className:"inline-block will-change-[transform,filter,opacity]",initial:N,animate:p?D:N,transition:$,onAnimationComplete:b===m.length-1?u:void 0,children:[h===" "?" ":h,i==="words"&&b<m.length-1&&" "]},b)})})},U=({as:t="button",className:n="",color:o="white",speed:i="6s",thickness:a=1,children:r,...c})=>e.jsxs(t,{className:`relative inline-block overflow-hidden rounded-[20px] ${n}`,style:{padding:`${a}px 0`,...c.style},...c,children:[e.jsx("div",{className:"absolute w-[300%] h-[50%] opacity-70 bottom-[-11px] right-[-250%] rounded-full animate-star-movement-bottom z-0",style:{background:`radial-gradient(circle, ${o}, transparent 10%)`,animationDuration:i}}),e.jsx("div",{className:"absolute w-[300%] h-[50%] opacity-70 top-[-10px] left-[-250%] rounded-full animate-star-movement-top z-0",style:{background:`radial-gradient(circle, ${o}, transparent 10%)`,animationDuration:i}}),e.jsx("div",{className:"relative z-1 bg-gradient-to-b from-black to-gray-900 border border-gray-800 text-white text-center text-[16px] py-[16px] px-[26px] rounded-[20px]",children:r})]});function Q(){const{t}=V(),{user:n}=L(),{site:o}=E(),[i,a]=l.useState([]),[r,c]=l.useState([]);l.useEffect(()=>{P().then(s=>{s.data.success&&a(s.data.data||[])}).catch(()=>{}),A().then(s=>{s.data.success&&c(s.data.data||[])}).catch(()=>{})},[]);const x=i.filter(s=>s.enabled!==!1);return e.jsxs("div",{className:"relative",children:[e.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[800px] h-[600px] bg-gradient-radial from-brand-600/20 via-purple-600/5 to-transparent blur-3xl"}),e.jsx("div",{className:"absolute top-[400px] right-0 w-[500px] h-[500px] bg-gradient-radial from-pink-600/10 to-transparent blur-3xl"})]}),e.jsxs("section",{className:"relative max-w-7xl mx-auto px-6 pt-24 pb-20",chLine truncated
+1
View File
@@ -0,0 +1 @@
import{j as n}from"./index-IL0bf27q.js";import{u as a}from"./useTranslation-_qZZdhi7.js";function u({className:t=""}){var s;const{i18n:e}=a(),o=(s=e.language)==null?void 0:s.startsWith("zh"),r=()=>{e.changeLanguage(o?"en":"zh")};return n.jsxs("button",{onClick:r,className:`flex items-center gap-1.5 px-2.5 py-1 rounded-md text-xs transition-colors ${t}`,"aria-label":"Switch language",children:[n.jsxs("svg",{className:"w-3.5 h-3.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:[n.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z"}),n.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3.6 9h16.8M3.6 15h16.8"}),n.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 3a15.3 15.3 0 0 1 4 9 15.3 15.3 0 0 1-4 9 15.3 15.3 0 0 1-4-9 15.3 15.3 0 0 1 4-9Z"})]}),n.jsx("span",{children:o?"EN":"中文"})]})}export{u as L};
+1
View File
@@ -0,0 +1 @@
import{u as h,a as u,b,c as p,r as g,j as e,L as l,O as v}from"./index-IL0bf27q.js";import{L as f}from"./LanguageSwitch-BaL1PXZI.js";import{u as j}from"./useTranslation-_qZZdhi7.js";function L(){const{t:s}=j(),{user:o,logout:d}=h(),{site:t}=u(),m=b(),i=p(),[r,c]=g.useState(!1),n=(t==null?void 0:t.name)||"AI Platform",x=[{to:"/",label:s("nav.home"),auth:!1},{to:"/pricing",label:s("nav.pricing"),auth:!1},{to:"/packages",label:s("nav.packages"),auth:!1},{to:"/dashboard",label:s("nav.dashboard"),auth:!0},{to:"/tokens",label:s("nav.apiKeys"),auth:!0}].filter(a=>!a.auth||o);return e.jsxs("div",{className:"min-h-screen flex flex-col bg-[#09090b]",children:[(t==null?void 0:t.announcement)&&e.jsx("div",{className:"bg-gradient-to-r from-violet-600/10 via-blue-600/10 to-cyan-600/10 border-b border-white/[0.06] text-center py-2.5 px-4",children:e.jsx("p",{className:"text-sm text-neutral-300",children:t.announcement})}),e.jsxs("header",{className:"sticky top-0 z-50 backdrop-blur-2xl bg-[#09090b]/80 border-b border-white/[0.06]",children:[e.jsxs("div",{className:"max-w-7xl mx-auto px-6 h-16 flex items-center justify-between",children:[e.jsxs(l,{to:"/",className:"flex items-center gap-3 group",children:[t!=null&&t.logo?e.jsx("img",{src:t.logo,alt:n,className:"h-8 w-auto"}):e.jsx("div",{className:"w-9 h-9 rounded-xl bg-gradient-to-br from-violet-500 via-blue-500 to-cyan-500 flex items-center justify-center text-white font-bold text-sm shadow-lg shadow-blue-500/20",children:n.charAt(0)}),e.jsx("span",{className:"text-lg font-semibold text-white group-hover:text-blue-400 transition-colors",children:n})]}),e.jsx("nav",{className:"hidden md:flex items-center gap-1 bg-white/[0.04] rounded-full px-1.5 py-1 border border-white/[0.06]",children:x.map(a=>e.jsx(l,{to:a.to,className:`px-4 py-1.5 text-sm rounded-full transition-all ${i.pathname===a.to?"text-white bg-white/[0.08]":"text-neutral-400 hover:text-white"}`,children:a.label},a.to))}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{className:"text-neutral-400 hover:text-white hover:bg-white/5"}),o?e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-sm text-neutral-400 hidden sm:block",children:o.display_name||o.username}),e.jsx("button",{onClick:async()=>{await d(),m("/")},className:"text-sm text-neutral-400 hover:text-white transition-colors",children:s("nav.logout")})]}):e.jsxs(e.Fragment,{children:[e.jsx(l,{to:"/login",className:"text-sm text-neutral-400 hover:text-white transition-colors px-3 py-1.5 hidden sm:block",children:s("nav.login")}),e.jsx(l,{to:"/register",className:"px-5 py-2 rounded-full bg-white text-black text-sm font-medium hover:bg-neutral-100 transition-all",children:s("nav.signUp")})]}),e.jsx("button",{className:"md:hidden p-1.5 rounded-lg hover:bg-white/5 transition-colors",onClick:()=>c(!r),"aria-label":"Toggle menu",children:e.jsx("svg",{className:"w-5 h-5 text-neutral-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:r?e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"}):e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 6h16M4 12h16M4 18h16"})})})]})]}),r&&e.jsx("div",{className:"md:hidden border-t border-white/[0.06] bg-[#09090b]/95 backdrop-blur-2xl",children:e.jsx("nav",{className:"max-w-7xl mx-auto px-6 py-3 flex flex-col gap-1",children:x.map(a=>e.jsx(l,{to:a.to,onClick:()=>c(!1),className:`px-3 py-2 text-sm rounded-lg transition-colors ${i.pathname===a.to?"text-blue-400 bg-blue-500/10":"text-neutral-400 hover:text-white hover:bg-white/5"}`,children:a.label},a.to))})})]}),e.jsx("main",{className:"flex-1",children:e.jsx(v,{})}),e.jsx("footer",{className:"border-t border-white/[0.06] mt-auto bg-[#09090b]",children:e.jsxs("div",{className:"max-w-7xl mx-auto px-6 py-8 flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("p",{className:"text-sm text-neutral-500",children:["© ",new Date().getFullYear()," ",n,"."]}),e.jsx("div",{className:"flex items-center gap-4",children:(t==null?void 0:t.contact_email)&&e.jsx("a",{href:`mailto:${t.contact_email}`,className:"text-sm text-neutral-500 hover:text-neutral-300 transition-colors",children:s("nav.contact")})})]})})]})}export{L as default};
-1
View File
@@ -1 +0,0 @@
import{u as h,a as u,b,c as p,r as g,j as e,L as l,O as v}from"./index-Drgd7k5E.js";import{u as j}from"./useTranslation-B7WzaWp0.js";function y(){const{t:a}=j(),{user:n,logout:o}=h(),{site:t}=u(),m=b(),x=p(),[i,c]=g.useState(!1),r=(t==null?void 0:t.name)||"AI Platform",d=[{to:"/",label:a("nav.home"),auth:!1},{to:"/pricing",label:a("nav.pricing"),auth:!1},{to:"/packages",label:a("nav.packages"),auth:!1},{to:"/dashboard",label:a("nav.dashboard"),auth:!0},{to:"/tokens",label:a("nav.apiKeys"),auth:!0}].filter(s=>!s.auth||n);return e.jsxs("div",{className:"min-h-screen flex flex-col",children:[(t==null?void 0:t.announcement)&&e.jsx("div",{className:"bg-brand-600/20 border-b border-brand-500/20 text-center py-2 px-4",children:e.jsx("p",{className:"text-sm text-brand-200",children:t.announcement})}),e.jsxs("header",{className:"sticky top-0 z-50 backdrop-blur-xl bg-black/60 border-b border-white/[0.06]",children:[e.jsxs("div",{className:"max-w-7xl mx-auto px-6 h-16 flex items-center justify-between",children:[e.jsxs(l,{to:"/",className:"flex items-center gap-3 group",children:[t!=null&&t.logo?e.jsx("img",{src:t.logo,alt:r,className:"h-8 w-auto"}):e.jsx("div",{className:"w-8 h-8 rounded-lg bg-gradient-to-br from-brand-500 to-purple-600 flex items-center justify-center text-white font-bold text-sm",children:r.charAt(0)}),e.jsx("span",{className:"text-lg font-semibold text-white group-hover:text-brand-400 transition-colors",children:r})]}),e.jsx("nav",{className:"hidden md:flex items-center gap-1",children:d.map(s=>e.jsx(f,{to:s.to,active:x.pathname===s.to,children:s.label},s.to))}),e.jsxs("div",{className:"flex items-center gap-3",children:[n?e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-sm text-neutral-400 hidden sm:block",children:n.display_name||n.username}),e.jsx("button",{onClick:async()=>{await o(),m("/")},className:"text-sm text-neutral-400 hover:text-white transition-colors",children:a("nav.logout")})]}):e.jsxs(e.Fragment,{children:[e.jsx(l,{to:"/login",className:"text-sm text-neutral-300 hover:text-white transition-colors px-3 py-1.5 hidden sm:block",children:a("nav.login")}),e.jsx(l,{to:"/register",className:"btn-primary text-sm !px-4 !py-1.5",children:a("nav.signUp")})]}),e.jsx("button",{className:"md:hidden p-1.5 rounded-lg hover:bg-white/5 transition-colors",onClick:()=>c(!i),"aria-label":"Toggle menu",children:e.jsx("svg",{className:"w-5 h-5 text-neutral-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:i?e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"}):e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 6h16M4 12h16M4 18h16"})})})]})]}),i&&e.jsx("div",{className:"md:hidden border-t border-white/[0.06] bg-black/90 backdrop-blur-xl",children:e.jsxs("nav",{className:"max-w-7xl mx-auto px-6 py-3 flex flex-col gap-1",children:[d.map(s=>e.jsx(l,{to:s.to,onClick:()=>c(!1),className:`px-3 py-2 text-sm rounded-lg transition-colors ${x.pathname===s.to?"text-brand-400 bg-brand-500/10":"text-neutral-400 hover:text-white hover:bg-white/5"}`,children:s.label},s.to)),!n&&e.jsx(l,{to:"/login",onClick:()=>c(!1),className:"px-3 py-2 text-sm text-neutral-400 hover:text-white rounded-lg hover:bg-white/5 transition-colors sm:hidden",children:a("nav.login")})]})})]}),e.jsx("main",{className:"flex-1",children:e.jsx(v,{})}),e.jsx("footer",{className:"border-t border-white/[0.06] mt-auto",children:e.jsxs("div",{className:"max-w-7xl mx-auto px-6 py-8 flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("p",{className:"text-sm text-neutral-500",children:["© ",new Date().getFullYear()," ",r,"."]}),e.jsx("div",{className:"flex items-center gap-4",children:(t==null?void 0:t.contact_email)&&e.jsx("a",{href:`mailto:${t.contact_email}`,className:"text-sm text-neutral-500 hover:text-neutral-300 transition-colors",children:a("nav.contact")})})]})})]})}function f({to:a,children:n,active:o}){return e.jsx(l,{to:a,className:`px-3 py-1.5 text-sm rounded-lg transition-all ${o?"text-brand-400 bg-brand-500/10":"text-neutral-400 hover:text-white hover:bg-white/5"}`,children:n})}export{y as default};
+1
View File
@@ -0,0 +1 @@
import{u as h,a as u,b as p,c as b,r as j,j as e,L as n,O as g}from"./index-IL0bf27q.js";import{L as v}from"./LanguageSwitch-BaL1PXZI.js";import{u as f}from"./useTranslation-_qZZdhi7.js";function L(){const{t:s}=f(),{user:l,logout:m}=h(),{site:t}=u(),d=p(),i=b(),[r,c]=j.useState(!1),o=(t==null?void 0:t.name)||"AI Platform",x=[{to:"/",label:s("nav.home"),auth:!1},{to:"/pricing",label:s("nav.pricing"),auth:!1},{to:"/packages",label:s("nav.packages"),auth:!1},{to:"/dashboard",label:s("nav.dashboard"),auth:!0},{to:"/tokens",label:s("nav.apiKeys"),auth:!0}].filter(a=>!a.auth||l);return e.jsxs("div",{className:"min-h-screen flex flex-col bg-neutral-950 text-white",children:[(t==null?void 0:t.announcement)&&e.jsx("div",{className:"border-b border-neutral-800/60 text-center py-2 px-4",children:e.jsx("p",{className:"text-sm text-neutral-400",children:t.announcement})}),e.jsxs("header",{className:"sticky top-0 z-50 backdrop-blur-lg bg-neutral-950/80 border-b border-neutral-800/40",children:[e.jsxs("div",{className:"max-w-5xl mx-auto px-6 h-14 flex items-center justify-between",children:[e.jsxs(n,{to:"/",className:"flex items-center gap-2.5 group",children:[t!=null&&t.logo?e.jsx("img",{src:t.logo,alt:o,className:"h-7 w-auto"}):e.jsx("span",{className:"text-base font-semibold text-white",children:o}),(t==null?void 0:t.logo)&&e.jsx("span",{className:"text-base font-semibold text-white",children:o})]}),e.jsx("nav",{className:"hidden md:flex items-center gap-6",children:x.map(a=>e.jsx(n,{to:a.to,className:`text-sm transition-colors ${i.pathname===a.to?"text-white":"text-neutral-500 hover:text-white"}`,children:a.label},a.to))}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(v,{className:"text-neutral-500 hover:text-white hover:bg-white/5"}),l?e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-sm text-neutral-500 hidden sm:block",children:l.display_name||l.username}),e.jsx("button",{onClick:async()=>{await m(),d("/")},className:"text-sm text-neutral-500 hover:text-white transition-colors",children:s("nav.logout")})]}):e.jsxs(e.Fragment,{children:[e.jsx(n,{to:"/login",className:"text-sm text-neutral-500 hover:text-white transition-colors hidden sm:block",children:s("nav.login")}),e.jsx(n,{to:"/register",className:"px-4 py-1.5 rounded-lg bg-white text-neutral-900 text-sm font-medium hover:bg-neutral-200 transition-colors",children:s("nav.signUp")})]}),e.jsx("button",{className:"md:hidden p-1",onClick:()=>c(!r),children:e.jsx("svg",{className:"w-5 h-5 text-neutral-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:r?e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M6 18L18 6M6 6l12 12"}):e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M4 6h16M4 12h16M4 18h16"})})})]})]}),r&&e.jsx("div",{className:"md:hidden border-t border-neutral-800/40 bg-neutral-950/95",children:e.jsx("nav",{className:"max-w-5xl mx-auto px-6 py-3 flex flex-col gap-1",children:x.map(a=>e.jsx(n,{to:a.to,onClick:()=>c(!1),className:`px-3 py-2 text-sm rounded transition-colors ${i.pathname===a.to?"text-white":"text-neutral-500 hover:text-white"}`,children:a.label},a.to))})})]}),e.jsx("main",{className:"flex-1",children:e.jsx(g,{})}),e.jsx("footer",{className:"border-t border-neutral-800/40 mt-auto",children:e.jsxs("div",{className:"max-w-5xl mx-auto px-6 py-6 flex flex-col md:flex-row items-center justify-between gap-3",children:[e.jsxs("p",{className:"text-xs text-neutral-600",children:["© ",new Date().getFullYear()," ",o]}),(t==null?void 0:t.contact_email)&&e.jsx("a",{href:`mailto:${t.contact_email}`,className:"text-xs text-neutral-600 hover:text-white transition-colors",children:s("nav.contact")})]})})]})}export{L as default};
-1
View File
@@ -1 +0,0 @@
import{u as h,a as u,b as p,c as b,r as j,j as e,L as n,O as g}from"./index-Drgd7k5E.js";import{u as f}from"./useTranslation-B7WzaWp0.js";function k(){const{t:s}=f(),{user:l,logout:m}=h(),{site:t}=u(),d=p(),i=b(),[r,c]=j.useState(!1),o=(t==null?void 0:t.name)||"AI Platform",x=[{to:"/",label:s("nav.home"),auth:!1},{to:"/pricing",label:s("nav.pricing"),auth:!1},{to:"/packages",label:s("nav.packages"),auth:!1},{to:"/dashboard",label:s("nav.dashboard"),auth:!0},{to:"/tokens",label:s("nav.apiKeys"),auth:!0}].filter(a=>!a.auth||l);return e.jsxs("div",{className:"min-h-screen flex flex-col bg-neutral-950 text-white",children:[(t==null?void 0:t.announcement)&&e.jsx("div",{className:"border-b border-neutral-800/60 text-center py-2 px-4",children:e.jsx("p",{className:"text-sm text-neutral-400",children:t.announcement})}),e.jsxs("header",{className:"sticky top-0 z-50 backdrop-blur-lg bg-neutral-950/80 border-b border-neutral-800/40",children:[e.jsxs("div",{className:"max-w-5xl mx-auto px-6 h-14 flex items-center justify-between",children:[e.jsxs(n,{to:"/",className:"flex items-center gap-2.5 group",children:[t!=null&&t.logo?e.jsx("img",{src:t.logo,alt:o,className:"h-7 w-auto"}):e.jsx("span",{className:"text-base font-semibold text-white",children:o}),(t==null?void 0:t.logo)&&e.jsx("span",{className:"text-base font-semibold text-white",children:o})]}),e.jsx("nav",{className:"hidden md:flex items-center gap-6",children:x.map(a=>e.jsx(n,{to:a.to,className:`text-sm transition-colors ${i.pathname===a.to?"text-white":"text-neutral-500 hover:text-white"}`,children:a.label},a.to))}),e.jsxs("div",{className:"flex items-center gap-4",children:[l?e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-sm text-neutral-500 hidden sm:block",children:l.display_name||l.username}),e.jsx("button",{onClick:async()=>{await m(),d("/")},className:"text-sm text-neutral-500 hover:text-white transition-colors",children:s("nav.logout")})]}):e.jsxs(e.Fragment,{children:[e.jsx(n,{to:"/login",className:"text-sm text-neutral-500 hover:text-white transition-colors hidden sm:block",children:s("nav.login")}),e.jsx(n,{to:"/register",className:"px-4 py-1.5 rounded-lg bg-white text-neutral-900 text-sm font-medium hover:bg-neutral-200 transition-colors",children:s("nav.signUp")})]}),e.jsx("button",{className:"md:hidden p-1",onClick:()=>c(!r),children:e.jsx("svg",{className:"w-5 h-5 text-neutral-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:r?e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M6 18L18 6M6 6l12 12"}):e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M4 6h16M4 12h16M4 18h16"})})})]})]}),r&&e.jsx("div",{className:"md:hidden border-t border-neutral-800/40 bg-neutral-950/95",children:e.jsx("nav",{className:"max-w-5xl mx-auto px-6 py-3 flex flex-col gap-1",children:x.map(a=>e.jsx(n,{to:a.to,onClick:()=>c(!1),className:`px-3 py-2 text-sm rounded transition-colors ${i.pathname===a.to?"text-white":"text-neutral-500 hover:text-white"}`,children:a.label},a.to))})})]}),e.jsx("main",{className:"flex-1",children:e.jsx(g,{})}),e.jsx("footer",{className:"border-t border-neutral-800/40 mt-auto",children:e.jsxs("div",{className:"max-w-5xl mx-auto px-6 py-6 flex flex-col md:flex-row items-center justify-between gap-3",children:[e.jsxs("p",{className:"text-xs text-neutral-600",children:["© ",new Date().getFullYear()," ",o]}),(t==null?void 0:t.contact_email)&&e.jsx("a",{href:`mailto:${t.contact_email}`,className:"text-xs text-neutral-600 hover:text-white transition-colors",children:s("nav.contact")})]})})]})}export{k as default};
-1
View File
@@ -1 +0,0 @@
import{u as h,a as u,b as p,c as b,r as g,j as e,L as l,O as f}from"./index-Drgd7k5E.js";import{u as j}from"./useTranslation-B7WzaWp0.js";function k(){const{t:s}=j(),{user:n,logout:d}=h(),{site:t}=u(),m=p(),i=b(),[r,c]=g.useState(!1),o=(t==null?void 0:t.name)||"AI Platform",x=[{to:"/",label:s("nav.home"),auth:!1},{to:"/pricing",label:s("nav.pricing"),auth:!1},{to:"/packages",label:s("nav.packages"),auth:!1},{to:"/dashboard",label:s("nav.dashboard"),auth:!0},{to:"/tokens",label:s("nav.apiKeys"),auth:!0}].filter(a=>!a.auth||n);return e.jsxs("div",{className:"min-h-screen flex flex-col bg-[#0a0a1a]",children:[(t==null?void 0:t.announcement)&&e.jsx("div",{className:"bg-gradient-to-r from-blue-600/20 via-purple-600/20 to-pink-600/20 border-b border-white/10 text-center py-2.5 px-4",children:e.jsx("p",{className:"text-sm text-neutral-200",children:t.announcement})}),e.jsxs("header",{className:"sticky top-0 z-50 backdrop-blur-2xl bg-[#0a0a1a]/80 border-b border-white/[0.08]",children:[e.jsxs("div",{className:"max-w-7xl mx-auto px-6 h-16 flex items-center justify-between",children:[e.jsxs(l,{to:"/",className:"flex items-center gap-3 group",children:[t!=null&&t.logo?e.jsx("img",{src:t.logo,alt:o,className:"h-8 w-auto"}):e.jsx("div",{className:"w-9 h-9 rounded-xl bg-gradient-to-br from-blue-500 via-purple-500 to-pink-500 flex items-center justify-center text-white font-bold text-sm shadow-lg shadow-purple-500/20",children:o.charAt(0)}),e.jsx("span",{className:"text-lg font-semibold text-white group-hover:text-blue-400 transition-colors",children:o})]}),e.jsx("nav",{className:"hidden md:flex items-center gap-1 bg-white/5 rounded-full px-2 py-1",children:x.map(a=>e.jsx(l,{to:a.to,className:`px-4 py-1.5 text-sm rounded-full transition-all ${i.pathname===a.to?"text-white bg-white/10":"text-neutral-400 hover:text-white"}`,children:a.label},a.to))}),e.jsxs("div",{className:"flex items-center gap-3",children:[n?e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-sm text-neutral-400 hidden sm:block",children:n.display_name||n.username}),e.jsx("button",{onClick:async()=>{await d(),m("/")},className:"text-sm text-neutral-400 hover:text-white transition-colors",children:s("nav.logout")})]}):e.jsxs(e.Fragment,{children:[e.jsx(l,{to:"/login",className:"text-sm text-neutral-300 hover:text-white transition-colors px-3 py-1.5 hidden sm:block",children:s("nav.login")}),e.jsx(l,{to:"/register",className:"px-5 py-2 rounded-full bg-white text-black text-sm font-medium hover:bg-neutral-100 transition-all",children:s("nav.signUp")})]}),e.jsx("button",{className:"md:hidden p-1.5 rounded-lg hover:bg-white/5 transition-colors",onClick:()=>c(!r),"aria-label":"Toggle menu",children:e.jsx("svg",{className:"w-5 h-5 text-neutral-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:r?e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"}):e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 6h16M4 12h16M4 18h16"})})})]})]}),r&&e.jsx("div",{className:"md:hidden border-t border-white/[0.08] bg-[#0a0a1a]/95 backdrop-blur-2xl",children:e.jsx("nav",{className:"max-w-7xl mx-auto px-6 py-3 flex flex-col gap-1",children:x.map(a=>e.jsx(l,{to:a.to,onClick:()=>c(!1),className:`px-3 py-2 text-sm rounded-lg transition-colors ${i.pathname===a.to?"text-blue-400 bg-blue-500/10":"text-neutral-400 hover:text-white hover:bg-white/5"}`,children:a.label},a.to))})})]}),e.jsx("main",{className:"flex-1",children:e.jsx(f,{})}),e.jsx("footer",{className:"border-t border-white/[0.08] mt-auto bg-[#0a0a1a]",children:e.jsxs("div",{className:"max-w-7xl mx-auto px-6 py-8 flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("p",{className:"text-sm text-neutral-500",children:["© ",new Date().getFullYear()," ",o,"."]}),e.jsx("div",{className:"flex items-center gap-4",children:(t==null?void 0:t.contact_email)&&e.jsx("a",{href:`mailto:${t.contact_email}`,className:"text-sm text-neutral-500 hover:text-neutral-300 transition-colors",children:s("nav.contact")})})]})})]})}export{k as default};
+1
View File
@@ -0,0 +1 @@
import{u as h,a as u,b as p,c as b,r as f,j as e,L as o,O as g}from"./index-IL0bf27q.js";import{L as j}from"./LanguageSwitch-BaL1PXZI.js";import{u as v}from"./useTranslation-_qZZdhi7.js";function L(){const{t:s}=v(),{user:r,logout:i}=h(),{site:t}=u(),x=p(),m=b(),[l,d]=f.useState(!1),n=(t==null?void 0:t.name)||"AI Platform",c=[{to:"/",label:s("nav.home"),auth:!1},{to:"/pricing",label:s("nav.pricing"),auth:!1},{to:"/packages",label:s("nav.packages"),auth:!1},{to:"/dashboard",label:s("nav.dashboard"),auth:!0},{to:"/tokens",label:s("nav.apiKeys"),auth:!0}].filter(a=>!a.auth||r);return e.jsxs("div",{className:"min-h-screen flex flex-col bg-[#030712] text-white",children:[(t==null?void 0:t.announcement)&&e.jsx("div",{className:"bg-emerald-500/5 border-b border-emerald-500/10 text-center py-2 px-4",children:e.jsx("p",{className:"text-sm text-emerald-300/80 font-mono",children:t.announcement})}),e.jsxs("header",{className:"sticky top-0 z-50 backdrop-blur-xl bg-[#030712]/80 border-b border-emerald-500/[0.08]",children:[e.jsxs("div",{className:"max-w-7xl mx-auto px-6 h-14 flex items-center justify-between",children:[e.jsxs(o,{to:"/",className:"flex items-center gap-3 group",children:[t!=null&&t.logo?e.jsx("img",{src:t.logo,alt:n,className:"h-7 w-auto"}):e.jsx("div",{className:"w-8 h-8 rounded bg-emerald-500/10 border border-emerald-500/20 flex items-center justify-center text-emerald-400 font-bold font-mono text-sm",children:n.charAt(0)}),e.jsx("span",{className:"text-base font-semibold text-emerald-400 font-mono group-hover:text-emerald-300 transition-colors tracking-wide",children:n})]}),e.jsx("nav",{className:"hidden md:flex items-center gap-1",children:c.map(a=>e.jsx(o,{to:a.to,className:`px-3 py-1.5 text-sm font-mono rounded transition-all ${m.pathname===a.to?"text-emerald-400 bg-emerald-500/10":"text-neutral-500 hover:text-emerald-400"}`,children:a.label},a.to))}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(j,{className:"text-neutral-500 hover:text-emerald-400 hover:bg-emerald-500/5 font-mono"}),r?e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-sm text-neutral-500 font-mono hidden sm:block",children:r.display_name||r.username}),e.jsx("button",{onClick:async()=>{await i(),x("/")},className:"text-sm text-neutral-500 hover:text-emerald-400 font-mono transition-colors",children:s("nav.logout")})]}):e.jsxs(e.Fragment,{children:[e.jsx(o,{to:"/login",className:"text-sm text-neutral-500 hover:text-emerald-400 font-mono transition-colors hidden sm:block px-3 py-1.5",children:s("nav.login")}),e.jsx(o,{to:"/register",className:"px-4 py-1.5 rounded bg-emerald-500/10 border border-emerald-500/20 text-emerald-400 text-sm font-mono hover:bg-emerald-500/15 transition-all",children:s("nav.signUp")})]}),e.jsx("button",{className:"md:hidden p-1.5 rounded hover:bg-white/5",onClick:()=>d(!l),children:e.jsx("svg",{className:"w-5 h-5 text-emerald-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:l?e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"}):e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 6h16M4 12h16M4 18h16"})})})]})]}),l&&e.jsx("div",{className:"md:hidden border-t border-emerald-500/[0.08] bg-[#030712]/95 backdrop-blur-xl",children:e.jsx("nav",{className:"max-w-7xl mx-auto px-6 py-3 flex flex-col gap-1",children:c.map(a=>e.jsx(o,{to:a.to,onClick:()=>d(!1),className:`px-3 py-2 text-sm font-mono rounded transition-colors ${m.pathname===a.to?"text-emerald-400 bg-emerald-500/10":"text-neutral-500 hover:text-emerald-400"}`,children:a.label},a.to))})})]}),e.jsx("main",{className:"flex-1",children:e.jsx(g,{})}),e.jsx("footer",{className:"border-t border-emerald-500/[0.08] mt-auto",children:e.jsxs("div",{className:"max-w-7xl mx-auto px-6 py-6 flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("p",{className:"text-xs text-neutral-600 font-mono",children:["© ",new Date().getFullYear()," ",n]}),(t==null?void 0:t.contact_email)&&e.jsx("a",{href:`mailto:${t.contact_email}`,className:"text-xs text-neutral-600 hover:text-emerald-400 font-mono transition-colors",children:s("nav.contact")})]})})]})}export{L as default};
-1
View File
@@ -1 +0,0 @@
import{u as h,a as u,b as g,c as b,r as p,j as e,L as s,O as f}from"./index-Drgd7k5E.js";import{u as j}from"./useTranslation-B7WzaWp0.js";function w(){const{t:a}=j(),{user:o,logout:m}=h(),{site:t}=u(),d=g(),c=b(),[l,i]=p.useState(!1),r=(t==null?void 0:t.name)||"AI Platform",x=[{to:"/",label:a("nav.home"),auth:!1},{to:"/pricing",label:a("nav.pricing"),auth:!1},{to:"/packages",label:a("nav.packages"),auth:!1},{to:"/dashboard",label:a("nav.dashboard"),auth:!0},{to:"/tokens",label:a("nav.apiKeys"),auth:!0}].filter(n=>!n.auth||o);return e.jsxs("div",{className:"min-h-screen flex flex-col bg-black text-white",children:[(t==null?void 0:t.announcement)&&e.jsx("div",{className:"bg-green-500/10 border-b border-green-500/20 text-center py-2 px-4",children:e.jsx("p",{className:"text-sm text-green-300 font-mono",children:t.announcement})}),e.jsxs("header",{className:"sticky top-0 z-50 backdrop-blur-xl bg-black/80 border-b border-green-500/10",children:[e.jsxs("div",{className:"max-w-7xl mx-auto px-6 h-14 flex items-center justify-between",children:[e.jsxs(s,{to:"/",className:"flex items-center gap-3 group",children:[t!=null&&t.logo?e.jsx("img",{src:t.logo,alt:r,className:"h-7 w-auto"}):e.jsx("div",{className:"w-8 h-8 rounded-md bg-green-500/20 border border-green-500/30 flex items-center justify-center text-green-400 font-bold font-mono text-sm",children:r.charAt(0)}),e.jsx("span",{className:"text-lg font-semibold text-green-400 font-mono group-hover:text-green-300 transition-colors",children:r})]}),e.jsx("nav",{className:"hidden md:flex items-center gap-1",children:x.map(n=>e.jsx(s,{to:n.to,className:`px-3 py-1.5 text-sm font-mono rounded transition-all ${c.pathname===n.to?"text-green-400 bg-green-500/10":"text-neutral-500 hover:text-green-400"}`,children:n.label},n.to))}),e.jsxs("div",{className:"flex items-center gap-3",children:[o?e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-sm text-neutral-500 font-mono hidden sm:block",children:o.display_name||o.username}),e.jsx("button",{onClick:async()=>{await m(),d("/")},className:"text-sm text-neutral-500 hover:text-green-400 font-mono transition-colors",children:a("nav.logout")})]}):e.jsxs(e.Fragment,{children:[e.jsx(s,{to:"/login",className:"text-sm text-neutral-500 hover:text-green-400 font-mono transition-colors hidden sm:block",children:a("nav.login")}),e.jsx(s,{to:"/register",className:"px-4 py-1.5 rounded-md bg-green-500/10 border border-green-500/30 text-green-400 text-sm font-mono hover:bg-green-500/20 transition-all",children:a("nav.signUp")})]}),e.jsx("button",{className:"md:hidden p-1.5 rounded hover:bg-white/5",onClick:()=>i(!l),children:e.jsx("svg",{className:"w-5 h-5 text-green-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:l?e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"}):e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 6h16M4 12h16M4 18h16"})})})]})]}),l&&e.jsx("div",{className:"md:hidden border-t border-green-500/10 bg-black/95 backdrop-blur-xl",children:e.jsx("nav",{className:"max-w-7xl mx-auto px-6 py-3 flex flex-col gap-1",children:x.map(n=>e.jsx(s,{to:n.to,onClick:()=>i(!1),className:`px-3 py-2 text-sm font-mono rounded transition-colors ${c.pathname===n.to?"text-green-400 bg-green-500/10":"text-neutral-500 hover:text-green-400"}`,children:n.label},n.to))})})]}),e.jsx("main",{className:"flex-1",children:e.jsx(f,{})}),e.jsx("footer",{className:"border-t border-green-500/10 mt-auto",children:e.jsxs("div",{className:"max-w-7xl mx-auto px-6 py-6 flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("p",{className:"text-xs text-neutral-600 font-mono",children:["© ",new Date().getFullYear()," ",r]}),(t==null?void 0:t.contact_email)&&e.jsx("a",{href:`mailto:${t.contact_email}`,className:"text-xs text-neutral-600 hover:text-green-400 font-mono transition-colors",children:a("nav.contact")})]})})]})}export{w as default};
+1
View File
@@ -0,0 +1 @@
import{u as h,a as u,b,c as p,r as g,j as e,L as r,O as v}from"./index-IL0bf27q.js";import{L as j}from"./LanguageSwitch-BaL1PXZI.js";import{u as f}from"./useTranslation-_qZZdhi7.js";function M(){const{t:a}=f(),{user:n,logout:o}=h(),{site:t}=u(),m=b(),x=p(),[i,c]=g.useState(!1),l=(t==null?void 0:t.name)||"AI Platform",d=[{to:"/",label:a("nav.home"),auth:!1},{to:"/pricing",label:a("nav.pricing"),auth:!1},{to:"/packages",label:a("nav.packages"),auth:!1},{to:"/dashboard",label:a("nav.dashboard"),auth:!0},{to:"/tokens",label:a("nav.apiKeys"),auth:!0}].filter(s=>!s.auth||n);return e.jsxs("div",{className:"min-h-screen flex flex-col",children:[(t==null?void 0:t.announcement)&&e.jsx("div",{className:"bg-brand-600/20 border-b border-brand-500/20 text-center py-2 px-4",children:e.jsx("p",{className:"text-sm text-brand-200",children:t.announcement})}),e.jsxs("header",{className:"sticky top-0 z-50 backdrop-blur-xl bg-black/60 border-b border-white/[0.06]",children:[e.jsxs("div",{className:"max-w-7xl mx-auto px-6 h-16 flex items-center justify-between",children:[e.jsxs(r,{to:"/",className:"flex items-center gap-3 group",children:[t!=null&&t.logo?e.jsx("img",{src:t.logo,alt:l,className:"h-8 w-auto"}):e.jsx("div",{className:"w-8 h-8 rounded-lg bg-gradient-to-br from-brand-500 to-purple-600 flex items-center justify-center text-white font-bold text-sm",children:l.charAt(0)}),e.jsx("span",{className:"text-lg font-semibold text-white group-hover:text-brand-400 transition-colors",children:l})]}),e.jsx("nav",{className:"hidden md:flex items-center gap-1",children:d.map(s=>e.jsx(N,{to:s.to,active:x.pathname===s.to,children:s.label},s.to))}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(j,{className:"text-neutral-400 hover:text-white hover:bg-white/5"}),n?e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-sm text-neutral-400 hidden sm:block",children:n.display_name||n.username}),e.jsx("button",{onClick:async()=>{await o(),m("/")},className:"text-sm text-neutral-400 hover:text-white transition-colors",children:a("nav.logout")})]}):e.jsxs(e.Fragment,{children:[e.jsx(r,{to:"/login",className:"text-sm text-neutral-300 hover:text-white transition-colors px-3 py-1.5 hidden sm:block",children:a("nav.login")}),e.jsx(r,{to:"/register",className:"btn-primary text-sm !px-4 !py-1.5",children:a("nav.signUp")})]}),e.jsx("button",{className:"md:hidden p-1.5 rounded-lg hover:bg-white/5 transition-colors",onClick:()=>c(!i),"aria-label":"Toggle menu",children:e.jsx("svg",{className:"w-5 h-5 text-neutral-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:i?e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"}):e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 6h16M4 12h16M4 18h16"})})})]})]}),i&&e.jsx("div",{className:"md:hidden border-t border-white/[0.06] bg-black/90 backdrop-blur-xl",children:e.jsxs("nav",{className:"max-w-7xl mx-auto px-6 py-3 flex flex-col gap-1",children:[d.map(s=>e.jsx(r,{to:s.to,onClick:()=>c(!1),className:`px-3 py-2 text-sm rounded-lg transition-colors ${x.pathname===s.to?"text-brand-400 bg-brand-500/10":"text-neutral-400 hover:text-white hover:bg-white/5"}`,children:s.label},s.to)),!n&&e.jsx(r,{to:"/login",onClick:()=>c(!1),className:"px-3 py-2 text-sm text-neutral-400 hover:text-white rounded-lg hover:bg-white/5 transition-colors sm:hidden",children:a("nav.login")})]})})]}),e.jsx("main",{className:"flex-1",children:e.jsx(v,{})}),e.jsx("footer",{className:"border-t border-white/[0.06] mt-auto",children:e.jsxs("div",{className:"max-w-7xl mx-auto px-6 py-8 flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("p",{className:"text-sm text-neutral-500",children:["© ",new Date().getFullYear()," ",l,"."]}),e.jsx("div",{className:"flex items-center gap-4",children:(t==null?void 0:t.contact_email)&&e.jsx("a",{href:`mailto:${t.contact_email}`,className:"text-sm text-neutral-500 hover:text-neutral-300 transition-colors",children:a("nav.contact")})})]})})]})}function N({to:a,children:n,active:o}){return e.jsx(r,{to:a,className:`px-3 py-1.5 text-sm rounded-lg transition-all ${o?"text-brand-400 bg-brand-500/10":"text-neutral-400 hover:text-white hover:bg-white/5"}`,children:n})}export{M as default};
@@ -1 +1 @@
import{u as N,a as v,b as y,c as k,r as x,j as e,N as L,L as S,z as p}from"./index-Drgd7k5E.js";import{u as C}from"./useTranslation-B7WzaWp0.js";function A(){var c,m;const{t:s}=C(),{login:h,user:g}=N(),{site:n}=v(),f=y(),l=k(),[t,o]=x.useState({username:"",password:""}),[r,i]=x.useState(!1);if(g){const a=((m=(c=l.state)==null?void 0:c.from)==null?void 0:m.pathname)||"/dashboard";return e.jsx(L,{to:a,replace:!0})}const b=async a=>{var u,d;if(a.preventDefault(),!t.username||!t.password){p.error(s("login.fillAllFields"));return}i(!0);try{if((await h(t.username,t.password)).success){p.success(s("login.welcomeBackToast"));const w=((d=(u=l.state)==null?void 0:u.from)==null?void 0:d.pathname)||"/dashboard";f(w,{replace:!0});return}}catch{}i(!1)};return e.jsx("div",{className:"min-h-[70vh] flex items-center justify-center px-6",children:e.jsx("div",{className:"w-full max-w-md",children:e.jsxs("div",{className:"glass rounded-2xl p-8",children:[e.jsxs("div",{className:"text-center mb-8",children:[e.jsx("h1",{className:"text-2xl font-heading font-bold text-white mb-2",children:s("login.welcomeBack")}),e.jsx("p",{className:"text-sm text-neutral-400",children:n!=null&&n.name?s("login.signInTo",{name:n.name}):s("login.signInToDefault")})]}),e.jsxs("form",{onSubmit:b,className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-neutral-300 mb-1.5",children:s("login.username")}),e.jsx("input",{type:"text",value:t.username,onChange:a=>o({...t,username:a.target.value}),className:"input",placeholder:s("login.enterUsername"),autoComplete:"username",required:!0})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-neutral-300 mb-1.5",children:s("login.password")}),e.jsx("input",{type:"password",value:t.password,onChange:a=>o({...t,password:a.target.value}),className:"input",placeholder:s("login.enterPassword"),autoComplete:"current-password",required:!0})]}),e.jsxs("button",{type:"submit",disabled:r,className:"btn-primary w-full flex items-center justify-center gap-2",children:[r&&e.jsx("div",{className:"w-4 h-4 border-2 border-white/30 border-t-white rounded-full animate-spin"}),s(r?"login.signingIn":"login.signInBtn")]})]}),e.jsx("div",{className:"mt-6 text-center",children:e.jsxs("p",{className:"text-sm text-neutral-400",children:[s("login.noAccount")," ",e.jsx(S,{to:"/register",className:"text-brand-400 hover:text-brand-300 transition-colors font-medium",children:s("login.createOne")})]})})]})})})}export{A as default};
import{u as N,a as v,b as y,c as k,r as x,j as e,N as L,L as S,z as p}from"./index-IL0bf27q.js";import{u as C}from"./useTranslation-_qZZdhi7.js";function A(){var c,m;const{t:s}=C(),{login:h,user:g}=N(),{site:n}=v(),f=y(),l=k(),[t,o]=x.useState({username:"",password:""}),[r,i]=x.useState(!1);if(g){const a=((m=(c=l.state)==null?void 0:c.from)==null?void 0:m.pathname)||"/dashboard";return e.jsx(L,{to:a,replace:!0})}const b=async a=>{var u,d;if(a.preventDefault(),!t.username||!t.password){p.error(s("login.fillAllFields"));return}i(!0);try{if((await h(t.username,t.password)).success){p.success(s("login.welcomeBackToast"));const w=((d=(u=l.state)==null?void 0:u.from)==null?void 0:d.pathname)||"/dashboard";f(w,{replace:!0});return}}catch{}i(!1)};return e.jsx("div",{className:"min-h-[70vh] flex items-center justify-center px-6",children:e.jsx("div",{className:"w-full max-w-md",children:e.jsxs("div",{className:"glass rounded-2xl p-8",children:[e.jsxs("div",{className:"text-center mb-8",children:[e.jsx("h1",{className:"text-2xl font-heading font-bold text-white mb-2",children:s("login.welcomeBack")}),e.jsx("p",{className:"text-sm text-neutral-400",children:n!=null&&n.name?s("login.signInTo",{name:n.name}):s("login.signInToDefault")})]}),e.jsxs("form",{onSubmit:b,className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-neutral-300 mb-1.5",children:s("login.username")}),e.jsx("input",{type:"text",value:t.username,onChange:a=>o({...t,username:a.target.value}),className:"input",placeholder:s("login.enterUsername"),autoComplete:"username",required:!0})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-neutral-300 mb-1.5",children:s("login.password")}),e.jsx("input",{type:"password",value:t.password,onChange:a=>o({...t,password:a.target.value}),className:"input",placeholder:s("login.enterPassword"),autoComplete:"current-password",required:!0})]}),e.jsxs("button",{type:"submit",disabled:r,className:"btn-primary w-full flex items-center justify-center gap-2",children:[r&&e.jsx("div",{className:"w-4 h-4 border-2 border-white/30 border-t-white rounded-full animate-spin"}),s(r?"login.signingIn":"login.signInBtn")]})]}),e.jsx("div",{className:"mt-6 text-center",children:e.jsxs("p",{className:"text-sm text-neutral-400",children:[s("login.noAccount")," ",e.jsx(S,{to:"/register",className:"text-brand-400 hover:text-brand-300 transition-colors font-medium",children:s("login.createOne")})]})})]})})})}export{A as default};
@@ -1 +1 @@
import{u as w,b as y,r as l,k as L,j as e,L as C,Q as u,s as S,z as P}from"./index-Drgd7k5E.js";import{S as B}from"./SpotlightCard-C_ZqQ-j4.js";import{u as _}from"./useTranslation-B7WzaWp0.js";function W(){const{t}=_(),{user:r,refreshUser:h}=w(),p=y(),[b,g]=l.useState([]),[f,j]=l.useState(!0),[a,d]=l.useState(null),[i,c]=l.useState(null);l.useEffect(()=>{L().then(s=>{s.data.success&&g(s.data.data||[])}).catch(()=>{}).finally(()=>j(!1))},[]);const N=async s=>{if(!r){p("/register");return}c(s)},k=async()=>{if(!i)return;const s=i.id;d(s);try{(await S(s)).data.success&&(P.success(t("packages.subscribedSuccess")),c(null),await h())}catch{}d(null)};if(f)return e.jsx("div",{className:"flex items-center justify-center min-h-[50vh]",children:e.jsx("div",{className:"w-8 h-8 border-2 border-brand-500/30 border-t-brand-500 rounded-full animate-spin"})});const x=b.filter(s=>s.enabled),m=["rgba(129,140,248,0.15)","rgba(192,132,252,0.15)","rgba(244,114,182,0.15)","rgba(34,197,94,0.15)"];return e.jsxs("div",{className:"max-w-7xl mx-auto px-6 py-10",children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h1",{className:"text-3xl font-heading font-bold text-white mb-3",children:t("packages.title")}),e.jsx("p",{className:"text-neutral-400 max-w-xl mx-auto",children:t("packages.subtitle")})]}),x.length===0?e.jsxs("div",{className:"text-center py-12 text-neutral-400",children:[e.jsx("p",{children:t("packages.noPackages")}),e.jsxs(C,{to:"/pricing",className:"text-brand-400 hover:text-brand-300 transition-colors mt-2 inline-block",children:[t("packages.checkPricing")," →"]})]}):e.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-6 max-w-5xl mx-auto",children:x.map((s,n)=>e.jsx(B,{className:"!bg-neutral-900/60 !border-neutral-800/60 !p-0 !rounded-2xl flex flex-col",spotlightColor:m[n%m.length],children:e.jsxs("div",{className:"p-6 flex-1 flex flex-col",children:[e.jsxs("div",{className:"mb-4",children:[e.jsx("h3",{className:"text-xl font-semibold text-white",children:s.name}),s.description&&e.jsx("p",{className:"text-sm text-neutral-400 mt-1",children:s.description})]}),e.jsxs("div",{className:"mb-6",children:[e.jsxs("div",{className:"flex items-baseline gap-2",children:[e.jsxs("span",{className:"text-4xl font-bold text-white",children:["$",Number(s.price).toFixed(2)]}),s.original_price>0&&s.original_price>s.price&&e.jsxs("span",{className:"text-lg text-neutral-500 line-through",children:["$",Number(s.original_price).toFixed(2)]})]}),s.duration>0&&e.jsx("p",{className:"text-sm text-neutral-500 mt-1",children:t("packages.daysAccess",{count:s.duration})})]}),e.jsxs("ul",{className:"space-y-2 mb-6 flex-1",children:[s.quota_amount>0&&e.jsxs("li",{className:"flex items-center gap-2 text-sm text-neutral-300",children:[e.jsx("svg",{className:"w-4 h-4 text-green-500 flex-shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})}),t("packages.creditIncluded",{amount:(s.quota_amount/u).toFixed(2)})]}),s.rate_limit>0&&e.jsxs("li",{className:"flex items-center gap-2 text-sm text-neutral-300",children:[e.jsx("svg",{className:"w-4 h-4 text-green-500 flex-shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})}),t("packages.requestsMin",{count:s.rate_limit})]}),e.jsxs("li",{className:"flex items-center gap-2 text-sm text-neutral-300",children:[e.jsx("svg",{className:"w-4 h-4 text-green-500 flex-shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})}),t("packages.allModels")]}),e.jsxs("li",{className:"flex items-center gap-2 text-sm text-neutral-300",children:[e.jsx("svg",{className:"w-4 h-4 text-green-500 flex-shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})}),t("packages.openaiApi")]})]}),e.jsx("button",{onClick:()=>N(s),disabled:a===s.id,className:"btn-primary w-full text-center",children:a===s.id?t("packages.processing"):t(r?"packages.subscribeNow":"packages.signUpToSubscribe")})]})},s.id))}),i&&(()=>{const s=((r==null?void 0:r.quota)||0)/u,n=Number(i.price),o=s<n;return e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm",onClick:()=>!a&&c(null),children:e.jsxs("div",{className:"glass rounded-2xl p-6 w-full max-w-sm",onClick:v=>v.stopPropagation(),children:[e.jsx("h2",{className:"text-lg font-semibold text-white mb-3",children:t("packages.confirmTitle")}),e.jsx("p",{className:"text-sm text-neutral-400 mb-2",children:t("packages.confirmDesc",{name:i.name,price:n.toFixed(2)})}),e.jsxs("p",{className:"text-sm text-neutral-400 mb-4",children:[t("packages.yourBalance")," ",e.jsxs("span",{className:`font-medium ${o?"text-red-Line truncated
import{u as w,b as y,r as l,k as L,j as e,L as C,Q as u,s as S,z as P}from"./index-IL0bf27q.js";import{S as B}from"./SpotlightCard-DnZRIBvu.js";import{u as _}from"./useTranslation-_qZZdhi7.js";function W(){const{t}=_(),{user:r,refreshUser:h}=w(),p=y(),[b,g]=l.useState([]),[f,j]=l.useState(!0),[a,d]=l.useState(null),[i,c]=l.useState(null);l.useEffect(()=>{L().then(s=>{s.data.success&&g(s.data.data||[])}).catch(()=>{}).finally(()=>j(!1))},[]);const N=async s=>{if(!r){p("/register");return}c(s)},k=async()=>{if(!i)return;const s=i.id;d(s);try{(await S(s)).data.success&&(P.success(t("packages.subscribedSuccess")),c(null),await h())}catch{}d(null)};if(f)return e.jsx("div",{className:"flex items-center justify-center min-h-[50vh]",children:e.jsx("div",{className:"w-8 h-8 border-2 border-brand-500/30 border-t-brand-500 rounded-full animate-spin"})});const x=b.filter(s=>s.enabled),m=["rgba(129,140,248,0.15)","rgba(192,132,252,0.15)","rgba(244,114,182,0.15)","rgba(34,197,94,0.15)"];return e.jsxs("div",{className:"max-w-7xl mx-auto px-6 py-10",children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h1",{className:"text-3xl font-heading font-bold text-white mb-3",children:t("packages.title")}),e.jsx("p",{className:"text-neutral-400 max-w-xl mx-auto",children:t("packages.subtitle")})]}),x.length===0?e.jsxs("div",{className:"text-center py-12 text-neutral-400",children:[e.jsx("p",{children:t("packages.noPackages")}),e.jsxs(C,{to:"/pricing",className:"text-brand-400 hover:text-brand-300 transition-colors mt-2 inline-block",children:[t("packages.checkPricing")," →"]})]}):e.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-6 max-w-5xl mx-auto",children:x.map((s,n)=>e.jsx(B,{className:"!bg-neutral-900/60 !border-neutral-800/60 !p-0 !rounded-2xl flex flex-col",spotlightColor:m[n%m.length],children:e.jsxs("div",{className:"p-6 flex-1 flex flex-col",children:[e.jsxs("div",{className:"mb-4",children:[e.jsx("h3",{className:"text-xl font-semibold text-white",children:s.name}),s.description&&e.jsx("p",{className:"text-sm text-neutral-400 mt-1",children:s.description})]}),e.jsxs("div",{className:"mb-6",children:[e.jsxs("div",{className:"flex items-baseline gap-2",children:[e.jsxs("span",{className:"text-4xl font-bold text-white",children:["$",Number(s.price).toFixed(2)]}),s.original_price>0&&s.original_price>s.price&&e.jsxs("span",{className:"text-lg text-neutral-500 line-through",children:["$",Number(s.original_price).toFixed(2)]})]}),s.duration>0&&e.jsx("p",{className:"text-sm text-neutral-500 mt-1",children:t("packages.daysAccess",{count:s.duration})})]}),e.jsxs("ul",{className:"space-y-2 mb-6 flex-1",children:[s.quota_amount>0&&e.jsxs("li",{className:"flex items-center gap-2 text-sm text-neutral-300",children:[e.jsx("svg",{className:"w-4 h-4 text-green-500 flex-shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})}),t("packages.creditIncluded",{amount:(s.quota_amount/u).toFixed(2)})]}),s.rate_limit>0&&e.jsxs("li",{className:"flex items-center gap-2 text-sm text-neutral-300",children:[e.jsx("svg",{className:"w-4 h-4 text-green-500 flex-shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})}),t("packages.requestsMin",{count:s.rate_limit})]}),e.jsxs("li",{className:"flex items-center gap-2 text-sm text-neutral-300",children:[e.jsx("svg",{className:"w-4 h-4 text-green-500 flex-shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})}),t("packages.allModels")]}),e.jsxs("li",{className:"flex items-center gap-2 text-sm text-neutral-300",children:[e.jsx("svg",{className:"w-4 h-4 text-green-500 flex-shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})}),t("packages.openaiApi")]})]}),e.jsx("button",{onClick:()=>N(s),disabled:a===s.id,className:"btn-primary w-full text-center",children:a===s.id?t("packages.processing"):t(r?"packages.subscribeNow":"packages.signUpToSubscribe")})]})},s.id))}),i&&(()=>{const s=((r==null?void 0:r.quota)||0)/u,n=Number(i.price),o=s<n;return e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm",onClick:()=>!a&&c(null),children:e.jsxs("div",{className:"glass rounded-2xl p-6 w-full max-w-sm",onClick:v=>v.stopPropagation(),children:[e.jsx("h2",{className:"text-lg font-semibold text-white mb-3",children:t("packages.confirmTitle")}),e.jsx("p",{className:"text-sm text-neutral-400 mb-2",children:t("packages.confirmDesc",{name:i.name,price:n.toFixed(2)})}),e.jsxs("p",{className:"text-sm text-neutral-400 mb-4",children:[t("packages.yourBalance")," ",e.jsxs("span",{className:`font-medium ${o?"text-red-Line truncated
@@ -1 +1 @@
import{r as n,l as u,j as e}from"./index-Drgd7k5E.js";import{u as h}from"./useTranslation-B7WzaWp0.js";function f(){const{t:s}=h(),[l,i]=n.useState([]),[a,d]=n.useState(""),[c,o]=n.useState(!0);n.useEffect(()=>{u().then(t=>{t.data.success&&i(t.data.data||[])}).catch(()=>{}).finally(()=>o(!1))},[]);const r=l.filter(t=>t.enabled!==!1).filter(t=>!a||(t.display_name||t.model_name||"").toLowerCase().includes(a.toLowerCase()));return c?e.jsx("div",{className:"flex items-center justify-center min-h-[50vh]",children:e.jsx("div",{className:"w-8 h-8 border-2 border-brand-500/30 border-t-brand-500 rounded-full animate-spin"})}):e.jsxs("div",{className:"max-w-7xl mx-auto px-6 py-10",children:[e.jsxs("div",{className:"text-center mb-10",children:[e.jsx("h1",{className:"text-3xl font-heading font-bold text-white mb-3",children:s("pricing.title")}),e.jsx("p",{className:"text-neutral-400 max-w-xl mx-auto",children:s("pricing.subtitle")})]}),e.jsx("div",{className:"max-w-md mx-auto mb-8",children:e.jsxs("div",{className:"relative",children:[e.jsx("svg",{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-neutral-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})}),e.jsx("input",{type:"text",value:a,onChange:t=>d(t.target.value),className:"input !pl-10",placeholder:s("pricing.searchPlaceholder")})]})}),r.length===0?e.jsx("div",{className:"text-center py-12 text-neutral-400",children:s(a?"pricing.noMatch":"pricing.noModels")}):e.jsx("div",{className:"glass-sm rounded-xl overflow-hidden",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-white/[0.06]",children:[e.jsx("th",{className:"text-left px-5 py-3.5 font-medium text-neutral-400",children:s("pricing.model")}),e.jsx("th",{className:"text-right px-5 py-3.5 font-medium text-neutral-400",children:s("pricing.inputPrice")}),e.jsx("th",{className:"text-right px-5 py-3.5 font-medium text-neutral-400",children:s("pricing.outputPrice")}),e.jsx("th",{className:"text-center px-5 py-3.5 font-medium text-neutral-400",children:s("pricing.status")})]})}),e.jsx("tbody",{children:r.map((t,x)=>e.jsxs("tr",{className:"border-b border-white/[0.04] last:border-0 hover:bg-white/[0.02] transition-colors",children:[e.jsx("td",{className:"px-5 py-3.5",children:e.jsx("span",{className:"font-mono text-white",children:t.display_name||t.model_name})}),e.jsx("td",{className:"px-5 py-3.5 text-right font-mono text-neutral-300",children:t.input_price!=null?`$${(Number(t.input_price)*1e3).toFixed(4)}`:"-"}),e.jsx("td",{className:"px-5 py-3.5 text-right font-mono text-neutral-300",children:t.output_price!=null?`$${(Number(t.output_price)*1e3).toFixed(4)}`:"-"}),e.jsx("td",{className:"px-5 py-3.5 text-center",children:e.jsxs("span",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 rounded-full text-xs border ${t.status==="healthy"?"bg-green-500/10 text-green-400 border-green-500/20":"bg-neutral-500/10 text-neutral-400 border-neutral-500/20"}`,children:[e.jsx("span",{className:`w-1.5 h-1.5 rounded-full ${t.status==="healthy"?"bg-green-500":"bg-neutral-500"}`}),t.status==="healthy"?s("pricing.online"):s("pricing.unknown")]})})]},t.model_name||x))})]})})]})}export{f as default};
import{r as n,l as u,j as e}from"./index-IL0bf27q.js";import{u as h}from"./useTranslation-_qZZdhi7.js";function f(){const{t:s}=h(),[l,i]=n.useState([]),[a,d]=n.useState(""),[c,o]=n.useState(!0);n.useEffect(()=>{u().then(t=>{t.data.success&&i(t.data.data||[])}).catch(()=>{}).finally(()=>o(!1))},[]);const r=l.filter(t=>t.enabled!==!1).filter(t=>!a||(t.display_name||t.model_name||"").toLowerCase().includes(a.toLowerCase()));return c?e.jsx("div",{className:"flex items-center justify-center min-h-[50vh]",children:e.jsx("div",{className:"w-8 h-8 border-2 border-brand-500/30 border-t-brand-500 rounded-full animate-spin"})}):e.jsxs("div",{className:"max-w-7xl mx-auto px-6 py-10",children:[e.jsxs("div",{className:"text-center mb-10",children:[e.jsx("h1",{className:"text-3xl font-heading font-bold text-white mb-3",children:s("pricing.title")}),e.jsx("p",{className:"text-neutral-400 max-w-xl mx-auto",children:s("pricing.subtitle")})]}),e.jsx("div",{className:"max-w-md mx-auto mb-8",children:e.jsxs("div",{className:"relative",children:[e.jsx("svg",{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-neutral-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})}),e.jsx("input",{type:"text",value:a,onChange:t=>d(t.target.value),className:"input !pl-10",placeholder:s("pricing.searchPlaceholder")})]})}),r.length===0?e.jsx("div",{className:"text-center py-12 text-neutral-400",children:s(a?"pricing.noMatch":"pricing.noModels")}):e.jsx("div",{className:"glass-sm rounded-xl overflow-hidden",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-white/[0.06]",children:[e.jsx("th",{className:"text-left px-5 py-3.5 font-medium text-neutral-400",children:s("pricing.model")}),e.jsx("th",{className:"text-right px-5 py-3.5 font-medium text-neutral-400",children:s("pricing.inputPrice")}),e.jsx("th",{className:"text-right px-5 py-3.5 font-medium text-neutral-400",children:s("pricing.outputPrice")}),e.jsx("th",{className:"text-center px-5 py-3.5 font-medium text-neutral-400",children:s("pricing.status")})]})}),e.jsx("tbody",{children:r.map((t,x)=>e.jsxs("tr",{className:"border-b border-white/[0.04] last:border-0 hover:bg-white/[0.02] transition-colors",children:[e.jsx("td",{className:"px-5 py-3.5",children:e.jsx("span",{className:"font-mono text-white",children:t.display_name||t.model_name})}),e.jsx("td",{className:"px-5 py-3.5 text-right font-mono text-neutral-300",children:t.input_price!=null?`$${(Number(t.input_price)*1e3).toFixed(4)}`:"-"}),e.jsx("td",{className:"px-5 py-3.5 text-right font-mono text-neutral-300",children:t.output_price!=null?`$${(Number(t.output_price)*1e3).toFixed(4)}`:"-"}),e.jsx("td",{className:"px-5 py-3.5 text-center",children:e.jsxs("span",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 rounded-full text-xs border ${t.status==="healthy"?"bg-green-500/10 text-green-400 border-green-500/20":"bg-neutral-500/10 text-neutral-400 border-neutral-500/20"}`,children:[e.jsx("span",{className:`w-1.5 h-1.5 rounded-full ${t.status==="healthy"?"bg-green-500":"bg-neutral-500"}`}),t.status==="healthy"?s("pricing.online"):s("pricing.unknown")]})})]},t.model_name||x))})]})})]})}export{f as default};
@@ -1 +1 @@
import{u as h,a as g,b as w,r as d,j as e,N as f,L as j,z as a}from"./index-Drgd7k5E.js";import{u as b}from"./useTranslation-B7WzaWp0.js";function y(){const{t:s}=b(),{register:c,user:u}=h(),{site:n}=g(),m=w(),[r,i]=d.useState({username:"",password:"",password2:"",email:""}),[l,o]=d.useState(!1);if(u)return e.jsx(f,{to:"/dashboard",replace:!0});const p=async t=>{if(t.preventDefault(),!r.username||!r.password){a.error(s("register.fillRequired"));return}if(r.password!==r.password2){a.error(s("register.passwordMismatch"));return}if(r.password.length<8){a.error(s("register.passwordLength"));return}if(r.password.length>20){a.error(s("register.passwordLength"));return}o(!0);try{if((await c({username:r.username,password:r.password,email:r.email||void 0})).success){a.success(s("register.accountCreated")),m("/login",{replace:!0});return}}catch{}o(!1)};return e.jsx("div",{className:"min-h-[70vh] flex items-center justify-center px-6",children:e.jsx("div",{className:"w-full max-w-md",children:e.jsxs("div",{className:"glass rounded-2xl p-8",children:[e.jsxs("div",{className:"text-center mb-8",children:[e.jsx("h1",{className:"text-2xl font-heading font-bold text-white mb-2",children:s("register.createAccount")}),e.jsx("p",{className:"text-sm text-neutral-400",children:n!=null&&n.name?s("register.getStartedWith",{name:n.name}):s("register.getStartedDefault")})]}),e.jsxs("form",{onSubmit:p,className:"space-y-4",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-neutral-300 mb-1.5",children:[s("register.username")," *"]}),e.jsx("input",{type:"text",value:r.username,onChange:t=>i({...r,username:t.target.value}),className:"input",placeholder:s("register.chooseUsername"),autoComplete:"username",required:!0})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-neutral-300 mb-1.5",children:s("register.email")}),e.jsx("input",{type:"email",value:r.email,onChange:t=>i({...r,email:t.target.value}),className:"input",placeholder:s("register.emailPlaceholder"),autoComplete:"email"})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-neutral-300 mb-1.5",children:[s("register.password")," *"]}),e.jsx("input",{type:"password",value:r.password,onChange:t=>i({...r,password:t.target.value}),className:"input",placeholder:s("register.passwordPlaceholder"),autoComplete:"new-password",required:!0})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-neutral-300 mb-1.5",children:[s("register.confirmPassword")," *"]}),e.jsx("input",{type:"password",value:r.password2,onChange:t=>i({...r,password2:t.target.value}),className:"input",placeholder:s("register.repeatPassword"),autoComplete:"new-password",required:!0})]}),e.jsxs("button",{type:"submit",disabled:l,className:"btn-primary w-full flex items-center justify-center gap-2",children:[l&&e.jsx("div",{className:"w-4 h-4 border-2 border-white/30 border-t-white rounded-full animate-spin"}),s(l?"register.creating":"register.createAccountBtn")]})]}),e.jsx("div",{className:"mt-6 text-center",children:e.jsxs("p",{className:"text-sm text-neutral-400",children:[s("register.hasAccount")," ",e.jsx(j,{to:"/login",className:"text-brand-400 hover:text-brand-300 transition-colors font-medium",children:s("register.signIn")})]})})]})})})}export{y as default};
import{u as h,a as g,b as w,r as d,j as e,N as f,L as j,z as a}from"./index-IL0bf27q.js";import{u as b}from"./useTranslation-_qZZdhi7.js";function y(){const{t:s}=b(),{register:c,user:u}=h(),{site:n}=g(),m=w(),[r,i]=d.useState({username:"",password:"",password2:"",email:""}),[l,o]=d.useState(!1);if(u)return e.jsx(f,{to:"/dashboard",replace:!0});const p=async t=>{if(t.preventDefault(),!r.username||!r.password){a.error(s("register.fillRequired"));return}if(r.password!==r.password2){a.error(s("register.passwordMismatch"));return}if(r.password.length<8){a.error(s("register.passwordLength"));return}if(r.password.length>20){a.error(s("register.passwordLength"));return}o(!0);try{if((await c({username:r.username,password:r.password,email:r.email||void 0})).success){a.success(s("register.accountCreated")),m("/login",{replace:!0});return}}catch{}o(!1)};return e.jsx("div",{className:"min-h-[70vh] flex items-center justify-center px-6",children:e.jsx("div",{className:"w-full max-w-md",children:e.jsxs("div",{className:"glass rounded-2xl p-8",children:[e.jsxs("div",{className:"text-center mb-8",children:[e.jsx("h1",{className:"text-2xl font-heading font-bold text-white mb-2",children:s("register.createAccount")}),e.jsx("p",{className:"text-sm text-neutral-400",children:n!=null&&n.name?s("register.getStartedWith",{name:n.name}):s("register.getStartedDefault")})]}),e.jsxs("form",{onSubmit:p,className:"space-y-4",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-neutral-300 mb-1.5",children:[s("register.username")," *"]}),e.jsx("input",{type:"text",value:r.username,onChange:t=>i({...r,username:t.target.value}),className:"input",placeholder:s("register.chooseUsername"),autoComplete:"username",required:!0})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-neutral-300 mb-1.5",children:s("register.email")}),e.jsx("input",{type:"email",value:r.email,onChange:t=>i({...r,email:t.target.value}),className:"input",placeholder:s("register.emailPlaceholder"),autoComplete:"email"})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-neutral-300 mb-1.5",children:[s("register.password")," *"]}),e.jsx("input",{type:"password",value:r.password,onChange:t=>i({...r,password:t.target.value}),className:"input",placeholder:s("register.passwordPlaceholder"),autoComplete:"new-password",required:!0})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-neutral-300 mb-1.5",children:[s("register.confirmPassword")," *"]}),e.jsx("input",{type:"password",value:r.password2,onChange:t=>i({...r,password2:t.target.value}),className:"input",placeholder:s("register.repeatPassword"),autoComplete:"new-password",required:!0})]}),e.jsxs("button",{type:"submit",disabled:l,className:"btn-primary w-full flex items-center justify-center gap-2",children:[l&&e.jsx("div",{className:"w-4 h-4 border-2 border-white/30 border-t-white rounded-full animate-spin"}),s(l?"register.creating":"register.createAccountBtn")]})]}),e.jsx("div",{className:"mt-6 text-center",children:e.jsxs("p",{className:"text-sm text-neutral-400",children:[s("register.hasAccount")," ",e.jsx(j,{to:"/login",className:"text-brand-400 hover:text-brand-300 transition-colors font-medium",children:s("register.signIn")})]})})]})})})}export{y as default};
@@ -1 +1 @@
import{r as t,j as c}from"./index-Drgd7k5E.js";const b=({children:i,className:u="",spotlightColor:l="rgba(255, 255, 255, 0.25)"})=>{const o=t.useRef(null),[d,n]=t.useState(!1),[s,p]=t.useState({x:0,y:0}),[x,e]=t.useState(0),v=r=>{if(!o.current||d)return;const a=o.current.getBoundingClientRect();p({x:r.clientX-a.left,y:r.clientY-a.top})},f=()=>{n(!0),e(.6)},h=()=>{n(!1),e(0)},y=()=>{e(.6)},M=()=>{e(0)};return c.jsxs("div",{ref:o,onMouseMove:v,onFocus:f,onBlur:h,onMouseEnter:y,onMouseLeave:M,className:`relative rounded-3xl border border-neutral-800 bg-neutral-900 overflow-hidden p-8 ${u}`,children:[c.jsx("div",{className:"pointer-events-none absolute inset-0 opacity-0 transition-opacity duration-500 ease-in-out",style:{opacity:x,background:`radial-gradient(circle at ${s.x}px ${s.y}px, ${l}, transparent 80%)`}}),i]})};export{b as S};
import{r as t,j as c}from"./index-IL0bf27q.js";const b=({children:i,className:u="",spotlightColor:l="rgba(255, 255, 255, 0.25)"})=>{const o=t.useRef(null),[d,n]=t.useState(!1),[s,p]=t.useState({x:0,y:0}),[x,e]=t.useState(0),v=r=>{if(!o.current||d)return;const a=o.current.getBoundingClientRect();p({x:r.clientX-a.left,y:r.clientY-a.top})},f=()=>{n(!0),e(.6)},h=()=>{n(!1),e(0)},y=()=>{e(.6)},M=()=>{e(0)};return c.jsxs("div",{ref:o,onMouseMove:v,onFocus:f,onBlur:h,onMouseEnter:y,onMouseLeave:M,className:`relative rounded-3xl border border-neutral-800 bg-neutral-900 overflow-hidden p-8 ${u}`,children:[c.jsx("div",{className:"pointer-events-none absolute inset-0 opacity-0 transition-opacity duration-500 ease-in-out",style:{opacity:x,background:`radial-gradient(circle at ${s.x}px ${s.y}px, ${l}, transparent 80%)`}}),i]})};export{b as S};
@@ -1 +1 @@
import{r as n,e as z,j as e,z as m,f as D,h as H,i as E}from"./index-Drgd7k5E.js";import{u as L}from"./useTranslation-B7WzaWp0.js";function P(){const{t}=L(),[u,N]=n.useState([]),[g,h]=n.useState(!0),[v,l]=n.useState(!1),[x,p]=n.useState(""),[b,f]=n.useState(!1),[w,j]=n.useState(null),[o,k]=n.useState(null),[i,d]=n.useState(null),r=n.useCallback(async()=>{h(!0);try{const s=await z();s.data.success&&N(s.data.data||[])}catch{}h(!1)},[]);n.useEffect(()=>{r()},[r]);const C=async s=>{var c;if(s.preventDefault(),!x.trim()){m.error(t("tokens.enterName"));return}f(!0);try{const a=await D({name:x.trim()});if(a.data.success){p(""),l(!1);const y=(c=a.data.data)==null?void 0:c.key;y&&k(y),await r()}}catch{}f(!1)},S=async s=>{try{(await H(s.id,{status:s.status===1?2:1})).data.success&&(m.success(s.status===1?t("tokens.tokenDisabled"):t("tokens.tokenEnabled")),await r())}catch{}},T=async()=>{if(i)try{(await E(i.id)).data.success&&(m.success(t("tokens.tokenDeleted")),d(null),await r())}catch{}},K=async s=>{try{await navigator.clipboard.writeText(s)}catch{const a=document.createElement("textarea");a.value=s,a.style.position="fixed",a.style.opacity="0",document.body.appendChild(a),a.select(),document.execCommand("copy"),document.body.removeChild(a)}j(s),m.success(t("tokens.copiedToClipboard")),setTimeout(()=>j(null),2e3)};return g?e.jsx("div",{className:"flex items-center justify-center min-h-[50vh]",children:e.jsx("div",{className:"w-8 h-8 border-2 border-brand-500/30 border-t-brand-500 rounded-full animate-spin"})}):e.jsxs("div",{className:"max-w-5xl mx-auto px-6 py-10",children:[e.jsxs("div",{className:"flex items-center justify-between mb-8",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-heading font-bold text-white",children:t("tokens.title")}),e.jsx("p",{className:"text-sm text-neutral-400 mt-1",children:t("tokens.subtitle")})]}),e.jsx("button",{onClick:()=>l(!0),className:"btn-primary",children:t("tokens.newKey")})]}),v&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm",onClick:()=>l(!1),children:e.jsxs("div",{className:"glass rounded-2xl p-6 w-full max-w-md",onClick:s=>s.stopPropagation(),children:[e.jsx("h2",{className:"text-lg font-semibold text-white mb-4",children:t("tokens.createApiKey")}),e.jsxs("form",{onSubmit:C,className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-neutral-300 mb-1.5",children:t("tokens.name")}),e.jsx("input",{type:"text",value:x,onChange:s=>p(s.target.value),className:"input",placeholder:t("tokens.namePlaceholder"),autoFocus:!0,required:!0})]}),e.jsxs("div",{className:"flex justify-end gap-3",children:[e.jsx("button",{type:"button",onClick:()=>l(!1),className:"btn-secondary",children:t("tokens.cancel")}),e.jsx("button",{type:"submit",disabled:b,className:"btn-primary",children:t(b?"tokens.creating":"tokens.create")})]})]})]})}),o&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm",children:e.jsxs("div",{className:"glass rounded-2xl p-6 w-full max-w-lg",children:[e.jsx("h2",{className:"text-lg font-semibold text-white mb-2",children:t("tokens.newApiKey")}),e.jsx("div",{className:"bg-yellow-500/10 border border-yellow-500/20 rounded-xl p-3 mb-4",children:e.jsx("p",{className:"text-sm text-yellow-300",children:t("tokens.keyWarning")})}),e.jsxs("div",{className:"bg-black/40 rounded-xl p-4 flex items-center gap-3",children:[e.jsx("code",{className:"text-sm font-mono text-green-400 flex-1 break-all select-all",children:o}),e.jsx("button",{onClick:()=>K(o),className:"btn-primary !px-4 !py-1.5 flex-shrink-0",children:t(w===o?"tokens.copied":"tokens.copy")})]}),e.jsx("div",{className:"flex justify-end mt-4",children:e.jsx("button",{onClick:()=>k(null),className:"btn-secondary",children:t("tokens.savedKey")})})]})}),i&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm",onClick:()=>d(null),children:e.jsxs("div",{className:"glass rounded-2xl p-6 w-full max-w-sm",onClick:s=>s.stopPropagation(),children:[e.jsx("h2",{className:"text-lg font-semibold text-white mb-3",children:t("tokens.deleteToken")}),e.jsx("p",{className:"text-sm text-neutral-400 mb-4",children:t("tokens.deleteConfirm",{name:i.name})}),e.jsxs("div",{className:"flex justify-end gap-3",children:[e.jsx("button",{onClick:()=>d(null),className:"btn-secondary",children:t("tokens.cancel")}),e.jsx("button",{onClick:T,className:"px-6 py-2.5 rounded-xl bg-red-600 text-white text-sm font-medium hover:bg-red-500 transition-colors",children:t("tokens.delete")})]})]})}),u.length===0?e.jsxs("div",{className:"glass rounded-2xl p-12 text-center",children:[e.jsx("div",{className:"w-16 h-16 mx-auto mb-4 rounded-2xl bg-neutral-800/50 flex items-center justify-center",children:e.jsx("svg",{className:"w-8 h-8 text-neutral-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecapLine truncated
import{r as n,e as z,j as e,z as m,f as D,h as H,i as E}from"./index-IL0bf27q.js";import{u as L}from"./useTranslation-_qZZdhi7.js";function P(){const{t}=L(),[u,N]=n.useState([]),[g,h]=n.useState(!0),[v,l]=n.useState(!1),[x,p]=n.useState(""),[b,f]=n.useState(!1),[w,j]=n.useState(null),[o,k]=n.useState(null),[i,d]=n.useState(null),r=n.useCallback(async()=>{h(!0);try{const s=await z();s.data.success&&N(s.data.data||[])}catch{}h(!1)},[]);n.useEffect(()=>{r()},[r]);const C=async s=>{var c;if(s.preventDefault(),!x.trim()){m.error(t("tokens.enterName"));return}f(!0);try{const a=await D({name:x.trim()});if(a.data.success){p(""),l(!1);const y=(c=a.data.data)==null?void 0:c.key;y&&k(y),await r()}}catch{}f(!1)},S=async s=>{try{(await H(s.id,{status:s.status===1?2:1})).data.success&&(m.success(s.status===1?t("tokens.tokenDisabled"):t("tokens.tokenEnabled")),await r())}catch{}},T=async()=>{if(i)try{(await E(i.id)).data.success&&(m.success(t("tokens.tokenDeleted")),d(null),await r())}catch{}},K=async s=>{try{await navigator.clipboard.writeText(s)}catch{const a=document.createElement("textarea");a.value=s,a.style.position="fixed",a.style.opacity="0",document.body.appendChild(a),a.select(),document.execCommand("copy"),document.body.removeChild(a)}j(s),m.success(t("tokens.copiedToClipboard")),setTimeout(()=>j(null),2e3)};return g?e.jsx("div",{className:"flex items-center justify-center min-h-[50vh]",children:e.jsx("div",{className:"w-8 h-8 border-2 border-brand-500/30 border-t-brand-500 rounded-full animate-spin"})}):e.jsxs("div",{className:"max-w-5xl mx-auto px-6 py-10",children:[e.jsxs("div",{className:"flex items-center justify-between mb-8",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-heading font-bold text-white",children:t("tokens.title")}),e.jsx("p",{className:"text-sm text-neutral-400 mt-1",children:t("tokens.subtitle")})]}),e.jsx("button",{onClick:()=>l(!0),className:"btn-primary",children:t("tokens.newKey")})]}),v&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm",onClick:()=>l(!1),children:e.jsxs("div",{className:"glass rounded-2xl p-6 w-full max-w-md",onClick:s=>s.stopPropagation(),children:[e.jsx("h2",{className:"text-lg font-semibold text-white mb-4",children:t("tokens.createApiKey")}),e.jsxs("form",{onSubmit:C,className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-neutral-300 mb-1.5",children:t("tokens.name")}),e.jsx("input",{type:"text",value:x,onChange:s=>p(s.target.value),className:"input",placeholder:t("tokens.namePlaceholder"),autoFocus:!0,required:!0})]}),e.jsxs("div",{className:"flex justify-end gap-3",children:[e.jsx("button",{type:"button",onClick:()=>l(!1),className:"btn-secondary",children:t("tokens.cancel")}),e.jsx("button",{type:"submit",disabled:b,className:"btn-primary",children:t(b?"tokens.creating":"tokens.create")})]})]})]})}),o&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm",children:e.jsxs("div",{className:"glass rounded-2xl p-6 w-full max-w-lg",children:[e.jsx("h2",{className:"text-lg font-semibold text-white mb-2",children:t("tokens.newApiKey")}),e.jsx("div",{className:"bg-yellow-500/10 border border-yellow-500/20 rounded-xl p-3 mb-4",children:e.jsx("p",{className:"text-sm text-yellow-300",children:t("tokens.keyWarning")})}),e.jsxs("div",{className:"bg-black/40 rounded-xl p-4 flex items-center gap-3",children:[e.jsx("code",{className:"text-sm font-mono text-green-400 flex-1 break-all select-all",children:o}),e.jsx("button",{onClick:()=>K(o),className:"btn-primary !px-4 !py-1.5 flex-shrink-0",children:t(w===o?"tokens.copied":"tokens.copy")})]}),e.jsx("div",{className:"flex justify-end mt-4",children:e.jsx("button",{onClick:()=>k(null),className:"btn-secondary",children:t("tokens.savedKey")})})]})}),i&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm",onClick:()=>d(null),children:e.jsxs("div",{className:"glass rounded-2xl p-6 w-full max-w-sm",onClick:s=>s.stopPropagation(),children:[e.jsx("h2",{className:"text-lg font-semibold text-white mb-3",children:t("tokens.deleteToken")}),e.jsx("p",{className:"text-sm text-neutral-400 mb-4",children:t("tokens.deleteConfirm",{name:i.name})}),e.jsxs("div",{className:"flex justify-end gap-3",children:[e.jsx("button",{onClick:()=>d(null),className:"btn-secondary",children:t("tokens.cancel")}),e.jsx("button",{onClick:T,className:"px-6 py-2.5 rounded-xl bg-red-600 text-white text-sm font-medium hover:bg-red-500 transition-colors",children:t("tokens.delete")})]})]})}),u.length===0?e.jsxs("div",{className:"glass rounded-2xl p-12 text-center",children:[e.jsx("div",{className:"w-16 h-16 mx-auto mb-4 rounded-2xl bg-neutral-800/50 flex items-center justify-center",children:e.jsx("svg",{className:"w-8 h-8 text-neutral-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecapLine truncated
+1
View File
@@ -0,0 +1 @@
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,Noto Sans SC,system-ui,-apple-system,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,Fira Code,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--brand: 99 102 241}body{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));font-feature-settings:"cv02","cv03","cv04","cv11"}::-moz-selection{background-color:#6366f14d}::selection{background-color:#6366f14d}::-webkit-scrollbar{width:.375rLine truncated
-1
View File
@@ -1 +0,0 @@
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,system-ui,-apple-system,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,Fira Code,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--brand: 99 102 241}body{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));font-feature-settings:"cv02","cv03","cv04","cv11"}::-moz-selection{background-color:#6366f14d}::selection{background-color:#6366f14d}::-webkit-scrollbar{width:.375rem}::-webkit-Line truncated
@@ -1,4 +1,4 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Home-Nw5uuC4J.js","assets/CountUp-Omm8FlHl.js","assets/use-animation-frame-BTI5WVkr.js","assets/proxy-BOtdvQpP.js","assets/SpotlightCard-C_ZqQ-j4.js","assets/useTranslation-B7WzaWp0.js","assets/Layout-CN7Y4VCf.js","assets/Home-Ddxg0eqL.js","assets/Mesh-CwXV3WjE.js","assets/Layout-D6FTlC22.js","assets/Home-CmajF1bj.js","assets/Layout-DmfpAhMt.js","assets/Home-CmqVbe36.js","assets/Layout-CmT_3-Vm.js","assets/Login-D37tx-Co.js","assets/Register-DiQ0J-Zs.js","assets/Dashboard-B4CiAg5B.js","assets/Tokens-C4dgLqWq.js","assets/Packages-p_b3v2L7.js","assets/Pricing-BiEw1jsi.js"])))=>i.map(i=>d[i]);
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Home-DBdkRxFz.js","assets/CountUp-BYW6-_IC.js","assets/use-animation-frame-C8xwlfkl.js","assets/proxy-C5U9l3lk.js","assets/SpotlightCard-DnZRIBvu.js","assets/useTranslation-_qZZdhi7.js","assets/Layout-jBZtQ6VT.js","assets/LanguageSwitch-BaL1PXZI.js","assets/Home-CckJxCAO.js","assets/Mesh-CwXV3WjE.js","assets/Layout-BPI0INHi.js","assets/Home-Cpixso6G.js","assets/Layout-DXLQxUaA.js","assets/Home-DPa5gqtj.js","assets/Layout-Cd0I7kro.js","assets/Login-DfwJGS1y.js","assets/Register-Dun8m4oq.js","assets/Dashboard-BXw3crDM.js","assets/Tokens-Uwf_aYk2.js","assets/Packages-DpCJ9EEZ.js","assets/Pricing-BUcnP-Rk.js"])))=>i.map(i=>d[i]);
function Vp(e,t){for(var n=0;n<t.length;n++){const r=t[n];if(typeof r!="string"&&!Array.isArray(r)){for(const i in r)if(i!=="default"&&!(i in e)){const o=Object.getOwnPropertyDescriptor(r,i);o&&Object.defineProperty(e,i,o.get?o:{enumerable:!0,get:()=>r[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();function Hp(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Ic={exports:{}},go={},Dc={exports:{}},z={};/**
* @license React
* react.production.min.js
@@ -15,7 +15,7 @@ function Vp(e,t){for(var n=0;n<t.length;n++){const r=t[n];if(typeof r!="string"&
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var lh=x,ah=Symbol.for("react.element"),uh=Symbol.for("react.fragment"),ch=Object.prototype.hasOwnProperty,fh=lh.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,dh={key:!0,ref:!0,__self:!0,__source:!0};function Vc(e,t,n){var r,i={},o=null,s=null;n!==void 0&&(o=""+n),t.key!==void 0&&(o=""+t.key),t.ref!==void 0&&(s=t.ref);for(r in t)ch.call(t,r)&&!dh.hasOwnProperty(r)&&(i[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps,t)i[r]===void 0&&(i[r]=t[r]);return{$$typeof:ah,type:e,key:o,ref:s,props:i,_owner:fh.current}}go.Fragment=uh;go.jsx=Vc;go.jsxs=Vc;Ic.exports=go;var $=Ic.exports,Es={},Hc={exports:{}},ze={},Kc={exports:{}},Wc={};/**
*/var lh=x,ah=Symbol.for("react.element"),uh=Symbol.for("react.fragment"),ch=Object.prototype.hasOwnProperty,fh=lh.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,dh={key:!0,ref:!0,__self:!0,__source:!0};function Vc(e,t,n){var r,i={},o=null,s=null;n!==void 0&&(o=""+n),t.key!==void 0&&(o=""+t.key),t.ref!==void 0&&(s=t.ref);for(r in t)ch.call(t,r)&&!dh.hasOwnProperty(r)&&(i[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps,t)i[r]===void 0&&(i[r]=t[r]);return{$$typeof:ah,type:e,key:o,ref:s,props:i,_owner:fh.current}}go.Fragment=uh;go.jsx=Vc;go.jsxs=Vc;Ic.exports=go;var F=Ic.exports,Es={},Hc={exports:{}},ze={},Kc={exports:{}},Wc={};/**
* @license React
* scheduler.production.min.js
*
@@ -23,7 +23,7 @@ function Vp(e,t){for(var n=0;n<t.length;n++){const r=t[n];if(typeof r!="string"&
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/(function(e){function t(O,N){var F=O.length;O.push(N);e:for(;0<F;){var D=F-1>>>1,U=O[D];if(0<i(U,N))O[D]=N,O[F]=U,F=D;else break e}}function n(O){return O.length===0?null:O[0]}function r(O){if(O.length===0)return null;var N=O[0],F=O.pop();if(F!==N){O[0]=F;e:for(var D=0,U=O.length,Pe=U>>>1;D<Pe;){var we=2*(D+1)-1,ft=O[we],Gt=we+1,ni=O[Gt];if(0>i(ft,F))Gt<U&&0>i(ni,ft)?(O[D]=ni,O[Gt]=F,D=Gt):(O[D]=ft,O[we]=F,D=we);else if(Gt<U&&0>i(ni,F))O[D]=ni,O[Gt]=F,D=Gt;else break e}}return N}function i(O,N){var F=O.sortIndex-N.sortIndex;return F!==0?F:O.id-N.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var s=Date,l=s.now();e.unstable_now=function(){return s.now()-l}}var a=[],u=[],c=1,f=null,p=3,y=!1,d=!1,v=!1,w=typeof setTimeout=="function"?setTimeout:null,m=typeof clearTimeout=="function"?clearTimeout:null,h=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function g(O){for(var N=n(u);N!==null;){if(N.callback===null)r(u);else if(N.startTime<=O)r(u),N.sortIndex=N.expirationTime,t(a,N);else break;N=n(u)}}function k(O){if(v=!1,g(O),!d)if(n(a)!==null)d=!0,B(E);else{var N=n(u);N!==null&&de(k,N.startTime-O)}}function E(O,N){d=!1,v&&(v=!1,m(_),_=-1),y=!0;var F=p;try{for(g(N),f=n(a);f!==null&&(!(f.expirationTime>N)||O&&!fe());){var D=f.callback;if(typeof D=="function"){f.callback=null,p=f.priorityLevel;var U=D(f.expirationTime<=N);N=e.unstable_now(),typeof U=="function"?f.callback=U:f===n(a)&&r(a),g(N)}else r(a);f=n(a)}if(f!==null)var Pe=!0;else{var we=n(u);we!==null&&de(k,we.startTime-N),Pe=!1}return Pe}finally{f=null,p=F,y=!1}}var R=!1,P=null,_=-1,j=5,T=-1;function fe(){return!(e.unstable_now()-T<j)}function Me(){if(P!==null){var O=e.unstable_now();T=O;var N=!0;try{N=P(!0,O)}finally{N?V():(R=!1,P=null)}}else R=!1}var V;if(typeof h=="function")V=function(){h(Me)};else if(typeof MessageChannel<"u"){var G=new MessageChannel,Yt=G.port2;G.port1.onmessage=Me,V=function(){Yt.postMessage(null)}}else V=function(){w(Me,0)};function B(O){P=O,R||(R=!0,V())}function de(O,N){_=w(function(){O(e.unstable_now())},N)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(O){O.callback=null},e.unstable_continueExecution=function(){d||y||(d=!0,B(E))},e.unstable_forceFrameRate=function(O){0>O||125<O?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):j=0<O?Math.floor(1e3/O):5},e.unstable_getCurrentPriorityLevel=function(){return p},e.unstable_getFirstCallbackNode=function(){return n(a)},e.unstable_next=function(O){switch(p){case 1:case 2:case 3:var N=3;break;default:N=p}var F=p;p=N;try{return O()}finally{p=F}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(O,N){switch(O){case 1:case 2:case 3:case 4:case 5:break;default:O=3}var F=p;p=O;try{return N()}finally{p=F}},e.unstable_scheduleCallback=function(O,N,F){var D=e.unstable_now();switch(typeof F=="object"&&F!==null?(F=F.delay,F=typeof F=="number"&&0<F?D+F:D):F=D,O){case 1:var U=-1;break;case 2:U=250;break;case 5:U=1073741823;break;case 4:U=1e4;break;default:U=5e3}return U=F+U,O={id:c++,callback:N,priorityLevel:O,startTime:F,expirationTime:U,sortIndex:-1},F>D?(O.sortIndex=F,t(u,O),n(a)===null&&O===n(u)&&(v?(m(_),_=-1):v=!0,de(k,F-D))):(O.sortIndex=U,t(a,O),d||y||(d=!0,B(E))),O},e.unstable_shouldYield=fe,e.unstable_wrapCallback=function(O){var N=p;return function(){var F=p;p=N;try{return O.apply(this,arguments)}finally{p=F}}}})(Wc);Kc.exports=Wc;var ph=Kc.exports;/**
*/(function(e){function t(O,N){var j=O.length;O.push(N);e:for(;0<j;){var D=j-1>>>1,U=O[D];if(0<i(U,N))O[D]=N,O[j]=U,j=D;else break e}}function n(O){return O.length===0?null:O[0]}function r(O){if(O.length===0)return null;var N=O[0],j=O.pop();if(j!==N){O[0]=j;e:for(var D=0,U=O.length,Pe=U>>>1;D<Pe;){var we=2*(D+1)-1,ft=O[we],Gt=we+1,ni=O[Gt];if(0>i(ft,j))Gt<U&&0>i(ni,ft)?(O[D]=ni,O[Gt]=j,D=Gt):(O[D]=ft,O[we]=j,D=we);else if(Gt<U&&0>i(ni,j))O[D]=ni,O[Gt]=j,D=Gt;else break e}}return N}function i(O,N){var j=O.sortIndex-N.sortIndex;return j!==0?j:O.id-N.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var s=Date,l=s.now();e.unstable_now=function(){return s.now()-l}}var a=[],u=[],c=1,f=null,p=3,y=!1,d=!1,v=!1,w=typeof setTimeout=="function"?setTimeout:null,m=typeof clearTimeout=="function"?clearTimeout:null,h=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function g(O){for(var N=n(u);N!==null;){if(N.callback===null)r(u);else if(N.startTime<=O)r(u),N.sortIndex=N.expirationTime,t(a,N);else break;N=n(u)}}function k(O){if(v=!1,g(O),!d)if(n(a)!==null)d=!0,B(E);else{var N=n(u);N!==null&&de(k,N.startTime-O)}}function E(O,N){d=!1,v&&(v=!1,m(_),_=-1),y=!0;var j=p;try{for(g(N),f=n(a);f!==null&&(!(f.expirationTime>N)||O&&!fe());){var D=f.callback;if(typeof D=="function"){f.callback=null,p=f.priorityLevel;var U=D(f.expirationTime<=N);N=e.unstable_now(),typeof U=="function"?f.callback=U:f===n(a)&&r(a),g(N)}else r(a);f=n(a)}if(f!==null)var Pe=!0;else{var we=n(u);we!==null&&de(k,we.startTime-N),Pe=!1}return Pe}finally{f=null,p=j,y=!1}}var R=!1,P=null,_=-1,$=5,T=-1;function fe(){return!(e.unstable_now()-T<$)}function Me(){if(P!==null){var O=e.unstable_now();T=O;var N=!0;try{N=P(!0,O)}finally{N?V():(R=!1,P=null)}}else R=!1}var V;if(typeof h=="function")V=function(){h(Me)};else if(typeof MessageChannel<"u"){var G=new MessageChannel,Yt=G.port2;G.port1.onmessage=Me,V=function(){Yt.postMessage(null)}}else V=function(){w(Me,0)};function B(O){P=O,R||(R=!0,V())}function de(O,N){_=w(function(){O(e.unstable_now())},N)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(O){O.callback=null},e.unstable_continueExecution=function(){d||y||(d=!0,B(E))},e.unstable_forceFrameRate=function(O){0>O||125<O?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):$=0<O?Math.floor(1e3/O):5},e.unstable_getCurrentPriorityLevel=function(){return p},e.unstable_getFirstCallbackNode=function(){return n(a)},e.unstable_next=function(O){switch(p){case 1:case 2:case 3:var N=3;break;default:N=p}var j=p;p=N;try{return O()}finally{p=j}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(O,N){switch(O){case 1:case 2:case 3:case 4:case 5:break;default:O=3}var j=p;p=O;try{return N()}finally{p=j}},e.unstable_scheduleCallback=function(O,N,j){var D=e.unstable_now();switch(typeof j=="object"&&j!==null?(j=j.delay,j=typeof j=="number"&&0<j?D+j:D):j=D,O){case 1:var U=-1;break;case 2:U=250;break;case 5:U=1073741823;break;case 4:U=1e4;break;default:U=5e3}return U=j+U,O={id:c++,callback:N,priorityLevel:O,startTime:j,expirationTime:U,sortIndex:-1},j>D?(O.sortIndex=j,t(u,O),n(a)===null&&O===n(u)&&(v?(m(_),_=-1):v=!0,de(k,j-D))):(O.sortIndex=U,t(a,O),d||y||(d=!0,B(E))),O},e.unstable_shouldYield=fe,e.unstable_wrapCallback=function(O){var N=p;return function(){var j=p;p=N;try{return O.apply(this,arguments)}finally{p=j}}}})(Wc);Kc.exports=Wc;var ph=Kc.exports;/**
* @license React
* react-dom.production.min.js
*
@@ -36,7 +36,7 @@ function Vp(e,t){for(var n=0;n<t.length;n++){const r=t[n];if(typeof r!="string"&
`),o=r.stack.split(`
`),s=i.length-1,l=o.length-1;1<=s&&0<=l&&i[s]!==o[l];)l--;for(;1<=s&&0<=l;s--,l--)if(i[s]!==o[l]){if(s!==1||l!==1)do if(s--,l--,0>l||i[s]!==o[l]){var a=`
`+i[s].replace(" at new "," at ");return e.displayName&&a.includes("<anonymous>")&&(a=a.replace("<anonymous>",e.displayName)),a}while(1<=s&&0<=l);break}}}finally{Vo=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?ur(e):""}function wh(e){switch(e.tag){case 5:return ur(e.type);case 16:return ur("Lazy");case 13:return ur("Suspense");case 19:return ur("SuspenseList");case 0:case 2:case 15:return e=Ho(e.type,!1),e;case 11:return e=Ho(e.type.render,!1),e;case 1:return e=Ho(e.type,!0),e;default:return""}}function Ls(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case kn:return"Fragment";case Sn:return"Portal";case Ps:return"Profiler";case Dl:return"StrictMode";case Os:return"Suspense";case Rs:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Jc:return(e.displayName||"Context")+".Consumer";case qc:return(e._context.displayName||"Context")+".Provider";case Fl:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case jl:return t=e.displayName||null,t!==null?t:Ls(e.type)||"Memo";case Ot:t=e._payload,e=e._init;try{return Ls(e(t))}catch{}}return null}function Sh(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Ls(t);case 8:return t===Dl?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Vt(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Gc(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function kh(e){var t=Gc(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(s){r=""+s,o.call(this,s)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(s){r=""+s},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function oi(e){e._valueTracker||(e._valueTracker=kh(e))}function Xc(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Gc(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Ui(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function _s(e,t){var n=t.checked;return Y({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function za(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Vt(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Zc(e,t){t=t.checked,t!=null&&Il(e,"checked",t,!1)}function Ts(e,t){Zc(e,t);var n=Vt(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Ns(e,t.type,n):t.hasOwnProperty("defaultValue")&&Ns(e,t.type,Vt(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Ua(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Ns(e,t,n){(t!=="number"||Ui(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var cr=Array.isArray;function An(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t["$"+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty("$"+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&r&&(e[n].defaultSelected=!0)}else{for(n=""+Vt(n),t=null,i=0;i<e.length;i++){if(e[i].value===n){e[i].selected=!0,r&&(e[i].defaultSelected=!0);return}t!==null||e[i].disabled||(t=e[i])}t!==null&&(t.selected=!0)}}function As(e,t){if(t.dang Line truncated
`).replace(Nm,"")}function pi(e,t,n){if(t=au(t),au(e)!==t&&n)throw Error(C(425))}function Qi(){}var Ks=null,Ws=null;function Qs(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var qs=typeof setTimeout=="function"?setTimeout:void 0,Am=typeof clearTimeout=="function"?clearTimeout:void 0,uu=typeof Promise=="function"?Promise:void 0,Im=typeof queueMicrotask=="function"?queueMicrotask:typeof uu<"u"?function(e){return uu.resolve(null).then(e).catch(Dm)}:qs;function Dm(e){setTimeout(function(){throw e})}function rs(e,t){var n=t,r=0;do{var i=n.nextSibling;if(e.removeChild(n),i&&i.nodeType===8)if(n=i.data,n==="/$"){if(r===0){e.removeChild(i),Tr(t);return}r--}else n!=="$"&&n!=="$?"&&n!=="$!"||r++;n=i}while(n);Tr(t)}function $t(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?")break;if(t==="/$")return null}}return e}function cu(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="$"||n==="$!"||n==="$?"){if(t===0)return e;t--}else n==="/$"&&t++}e=e.previousSibling}return null}var qn=Math.random().toString(36).slice(2),st="__reactFiber$"+qn,Fr="__reactProps$"+qn,wt="__reactContainer$"+qn,Js="__reactEvents$"+qn,Fm="__reactListeners$"+qn,jm="__reactHandles$"+qn;function tn(e){var t=e[st];if(t)return t;for(var n=e.parentNode;n;){if(t=n[wt]||n[st]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=cu(e);e!==null;){if(n=e[st])return n;e=cu(e)}return t}e=n,n=e.parentNode}return null}function qr(e){return e=e[st]||e[wt],!e||e.tag!==5&&e.tag!==6&&e.tag!==13&&e.tag!==3?null:e}function Pn(e){if(e.tag===5||e.tag===6)return e.stateNode;throw Error(C(33))}function ko(e){return e[Fr]||null}var Ys=[],On=-1;function Wt(e){return{current:e}}function W(e){0>On||(e.current=Ys[On],Ys[On]=null,On--)}function H(e,t){On++,Ys[On]=e.current,e.current=t}var Ht={},ye=Wt(Ht),_e=Wt(!1),un=Ht;function Un(e,t){var n=e.type.contextTypes;if(!n)return Ht;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i={},o;for(o in n)i[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function Te(e){return e=e.childContextTypes,e!=null}function qi(){W(_e),W(ye)}function fu(e,t,n){if(ye.current!==Ht)throw Error(C(168));H(ye,t),H(_e,n)}function bf(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in t))throw Error(C(108,Sh(e)||"Unknown",i));return Y({},n,r)}function Ji(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Ht,un=ye.current,H(ye,e),H(_e,_e.current),!0}function du(e,t,n){var r=e.stateNode;if(!r)throw Error(C(169));n?(e=bf(e,t,un),r.__reactInternalMemoizedMergedChildContext=e,W(_e),W(ye),H(ye,e)):W(_e),H(_e,n)}var ht=null,xo=!1,is=!1;function Vf(e){ht===null?ht=[e]:ht.push(e)}function $m(e){xo=!0,Vf(e)}function Qt(){if(!is&&ht!==null){is=!0;var e=0,t=b;try{var n=ht;for(b=1;e<n.length;e++){var r=n[e];do r=r(!0);while(r!==null)}ht=null,xo=!1}catch(i){throw ht!==null&&(ht=ht.slice(e+1)),hf(zl,Qt),i}finally{b=t,is=!1}}return null}var Rn=[],Ln=0,Yi=null,Gi=0,be=[],Ve=0,cn=null,mt=1,gt="";function Zt(e,t){Rn[Ln++]=Gi,Rn[Ln++]=Yi,Yi=e,Gi=t}function Hf(e,t,n){be[Ve++]=mt,be[Ve++]=gt,be[Ve++]=cn,cn=e;var r=mt;e=gt;var i=32-Ze(r)-1;r&=~(1<<i),n+=1;var o=32-Ze(t)+i;if(30<o){var s=i-i%5;o=(r&(1<<s)-1).toString(32),r>>=s,i-=s,mt=1<<32-Ze(t)+i|n<<i|r,gt=o+e}else mt=1<<o|n<<i|r,gt=e}function Ql(e){e.return!==null&&(Zt(e,1),Hf(e,1,0))}function ql(e){for(;e===Yi;)Yi=Rn[--Ln],Rn[Ln]=null,Gi=Rn[--Ln],Rn[Ln]=null;for(;e===cn;)cn=be[--Ve],be[Ve]=null,gt=be[--Ve],be[Ve]=null,mt=be[--Ve],be[Ve]=null}var je=null,Fe=null,Q=!1,Xe=null;function Kf(e,t){var n=He(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,t=e.deletions,t===null?(e.deletions=[n],e.flags|=16):t.push(n)}function pu(e,t){switch(e.tag){case 5:var n=e.type;return t=t.nodeType!==1||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t,t!==null?(e.stateNode=t,je=e,Fe=$t(t.firstChild),!0):!1;case 6:return t=e.pendingProps===""||t.nodeType!==3?null:t,t!==null?(e.stateNode=t,je=e,Fe=null,!0):!1;case 13:return t=t.nodeType!==8?null:t,t!==null?(n=cn!==null?{id:mt,overflow:gt}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},n=He(18,null,null,0),n.stateNode=t,n.return=e,e.child=n,je=e,Fe=null,!0):!1;default:return!1}}function Gs(e){return(e.mode&1)!==0&&(e.flags&128)===0}function Xs(e){if(Q){var t=Fe;if(t){var n=t;if(!pu(e,t)){if(Gs(e))throw Error(C(418));t=$t(n.nextSibling);var r=je;t&&pu(e,t)?Kf(r,n):(e.flags=e.flags&-4097|2,Q=!1,je=e)}}else{if(Gs(e))throw Error(C(418));e.flags=e.flags&-4097|2,Q=!1,je=e}}}function hu(e){for(e=e.return;e!==null&&e.t Line truncated
`).replace(Nm,"")}function pi(e,t,n){if(t=au(t),au(e)!==t&&n)throw Error(C(425))}function Qi(){}var Ks=null,Ws=null;function Qs(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var qs=typeof setTimeout=="function"?setTimeout:void 0,Am=typeof clearTimeout=="function"?clearTimeout:void 0,uu=typeof Promise=="function"?Promise:void 0,Im=typeof queueMicrotask=="function"?queueMicrotask:typeof uu<"u"?function(e){return uu.resolve(null).then(e).catch(Dm)}:qs;function Dm(e){setTimeout(function(){throw e})}function rs(e,t){var n=t,r=0;do{var i=n.nextSibling;if(e.removeChild(n),i&&i.nodeType===8)if(n=i.data,n==="/$"){if(r===0){e.removeChild(i),Tr(t);return}r--}else n!=="$"&&n!=="$?"&&n!=="$!"||r++;n=i}while(n);Tr(t)}function $t(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?")break;if(t==="/$")return null}}return e}function cu(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="$"||n==="$!"||n==="$?"){if(t===0)return e;t--}else n==="/$"&&t++}e=e.previousSibling}return null}var qn=Math.random().toString(36).slice(2),st="__reactFiber$"+qn,Fr="__reactProps$"+qn,wt="__reactContainer$"+qn,Js="__reactEvents$"+qn,Fm="__reactListeners$"+qn,jm="__reactHandles$"+qn;function tn(e){var t=e[st];if(t)return t;for(var n=e.parentNode;n;){if(t=n[wt]||n[st]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=cu(e);e!==null;){if(n=e[st])return n;e=cu(e)}return t}e=n,n=e.parentNode}return null}function qr(e){return e=e[st]||e[wt],!e||e.tag!==5&&e.tag!==6&&e.tag!==13&&e.tag!==3?null:e}function Pn(e){if(e.tag===5||e.tag===6)return e.stateNode;throw Error(C(33))}function ko(e){return e[Fr]||null}var Ys=[],On=-1;function Wt(e){return{current:e}}function W(e){0>On||(e.current=Ys[On],Ys[On]=null,On--)}function H(e,t){On++,Ys[On]=e.current,e.current=t}var Ht={},ye=Wt(Ht),_e=Wt(!1),un=Ht;function Un(e,t){var n=e.type.contextTypes;if(!n)return Ht;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i={},o;for(o in n)i[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function Te(e){return e=e.childContextTypes,e!=null}function qi(){W(_e),W(ye)}function fu(e,t,n){if(ye.current!==Ht)throw Error(C(168));H(ye,t),H(_e,n)}function bf(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in t))throw Error(C(108,Sh(e)||"Unknown",i));return Y({},n,r)}function Ji(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Ht,un=ye.current,H(ye,e),H(_e,_e.current),!0}function du(e,t,n){var r=e.stateNode;if(!r)throw Error(C(169));n?(e=bf(e,t,un),r.__reactInternalMemoizedMergedChildContext=e,W(_e),W(ye),H(ye,e)):W(_e),H(_e,n)}var ht=null,xo=!1,is=!1;function Vf(e){ht===null?ht=[e]:ht.push(e)}function $m(e){xo=!0,Vf(e)}function Qt(){if(!is&&ht!==null){is=!0;var e=0,t=b;try{var n=ht;for(b=1;e<n.length;e++){var r=n[e];do r=r(!0);while(r!==null)}ht=null,xo=!1}catch(i){throw ht!==null&&(ht=ht.slice(e+1)),hf(zl,Qt),i}finally{b=t,is=!1}}return null}var Rn=[],Ln=0,Yi=null,Gi=0,be=[],Ve=0,cn=null,mt=1,gt="";function Zt(e,t){Rn[Ln++]=Gi,Rn[Ln++]=Yi,Yi=e,Gi=t}function Hf(e,t,n){be[Ve++]=mt,be[Ve++]=gt,be[Ve++]=cn,cn=e;var r=mt;e=gt;var i=32-Ze(r)-1;r&=~(1<<i),n+=1;var o=32-Ze(t)+i;if(30<o){var s=i-i%5;o=(r&(1<<s)-1).toString(32),r>>=s,i-=s,mt=1<<32-Ze(t)+i|n<<i|r,gt=o+e}else mt=1<<o|n<<i|r,gt=e}function Ql(e){e.return!==null&&(Zt(e,1),Hf(e,1,0))}function ql(e){for(;e===Yi;)Yi=Rn[--Ln],Rn[Ln]=null,Gi=Rn[--Ln],Rn[Ln]=null;for(;e===cn;)cn=be[--Ve],be[Ve]=null,gt=be[--Ve],be[Ve]=null,mt=be[--Ve],be[Ve]=null}var je=null,Fe=null,Q=!1,Xe=null;function Kf(e,t){var n=He(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,t=e.deletions,t===null?(e.deletions=[n],e.flags|=16):t.push(n)}function pu(e,t){switch(e.tag){case 5:var n=e.type;return t=t.nodeType!==1||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t,t!==null?(e.stateNode=t,je=e,Fe=$t(t.firstChild),!0):!1;case 6:return t=e.pendingProps===""||t.nodeType!==3?null:t,t!==null?(e.stateNode=t,je=e,Fe=null,!0):!1;case 13:return t=t.nodeType!==8?null:t,t!==null?(n=cn!==null?{id:mt,overflow:gt}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},n=He(18,null,null,0),n.stateNode=t,n.return=e,e.child=n,je=e,Fe=null,!0):!1;default:return!1}}function Gs(e){return(e.mode&1)!==0&&(e.flags&128)===0}function Xs(e){if(Q){var t=Fe;if(t){var n=t;if(!pu(e,t)){if(Gs(e))throw Error(C(418));t=$t(n.nextSibling);var r=je;t&&pu(e,t)?Kf(r,n):(e.flags=e.flags&-4097|2,Q=!1,je=e)}}else{if(Gs(e))throw Error(C(418));e.flags=e.flags&-4097|2,Q=!1,je=e}}}function hu(e){for(e=e.return;e!==null&&e.t Line truncated
Error generating stack: `+o.message+`
`+o.stack}return{value:e,source:t,stack:i,digest:null}}function us(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function nl(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var Wm=typeof WeakMap=="function"?WeakMap:Map;function vd(e,t,n){n=yt(-1,n),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){oo||(oo=!0,dl=r),nl(e,t)},n}function wd(e,t,n){n=yt(-1,n),n.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r=="function"){var i=t.value;n.payload=function(){return r(i)},n.callback=function(){nl(e,t)}}var o=e.stateNode;return o!==null&&typeof o.componentDidCatch=="function"&&(n.callback=function(){nl(e,t),typeof r!="function"&&(Ut===null?Ut=new Set([this]):Ut.add(this));var s=t.stack;this.componentDidCatch(t.value,{componentStack:s!==null?s:""})}),n}function xu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Wm;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(i.add(n),e=sg.bind(null,e,t,n),t.then(e,e))}function Eu(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null?t.dehydrated!==null:!0),t)return e;e=e.return}while(e!==null);return null}function Cu(e,t,n,r,i){return e.mode&1?(e.flags|=65536,e.lanes=i,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,n.tag===1&&(n.alternate===null?n.tag=17:(t=yt(-1,1),t.tag=2,zt(n,t,1))),n.lanes|=1),e)}var Qm=Et.ReactCurrentOwner,Le=!1;function Se(e,t,n,r){t.child=e===null?qf(t,null,n,r):Bn(t,e.child,n,r)}function Pu(e,t,n,r,i){n=n.render;var o=t.ref;return jn(t,i),r=oa(e,t,n,r,o,i),n=sa(),e!==null&&!Le?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~i,kt(e,t,i)):(Q&&n&&Ql(t),t.flags|=1,Se(e,t,r,i),t.child)}function Ou(e,t,n,r,i){if(e===null){var o=n.type;return typeof o=="function"&&!ga(o)&&o.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(t.tag=15,t.type=o,Sd(e,t,o,r,i)):(e=Di(n.type,null,r,t,t.mode,i),e.ref=t.ref,e.return=t,t.child=e)}if(o=e.child,!(e.lanes&i)){var s=o.memoizedProps;if(n=n.compare,n=n!==null?n:Ar,n(s,r)&&e.ref===t.ref)return kt(e,t,i)}return t.flags|=1,e=Bt(o,r),e.ref=t.ref,e.return=t,t.child=e}function Sd(e,t,n,r,i){if(e!==null){var o=e.memoizedProps;if(Ar(o,r)&&e.ref===t.ref)if(Le=!1,t.pendingProps=r=o,(e.lanes&i)!==0)e.flags&131072&&(Le=!0);else return t.lanes=e.lanes,kt(e,t,i)}return rl(e,t,n,r,i)}function kd(e,t,n){var r=t.pendingProps,i=r.children,o=e!==null?e.memoizedState:null;if(r.mode==="hidden")if(!(t.mode&1))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},H(Nn,De),De|=n;else{if(!(n&1073741824))return e=o!==null?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,H(Nn,De),De|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=o!==null?o.baseLanes:n,H(Nn,De),De|=r}else o!==null?(r=o.baseLanes|n,t.memoizedState=null):r=n,H(Nn,De),De|=r;return Se(e,t,i,n),t.child}function xd(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function rl(e,t,n,r,i){var o=Te(n)?un:ye.current;return o=Un(t,o),jn(t,i),n=oa(e,t,n,r,o,i),r=sa(),e!==null&&!Le?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~i,kt(e,t,i)):(Q&&r&&Ql(t),t.flags|=1,Se(e,t,n,i),t.child)}function Ru(e,t,n,r,i){if(Te(n)){var o=!0;Ji(t)}else o=!1;if(jn(t,i),t.stateNode===null)Ni(e,t),yd(t,n,r),tl(t,n,r,i),r=!0;else if(e===null){var s=t.stateNode,l=t.memoizedProps;s.props=l;var a=s.context,u=n.contextType;typeof u=="object"&&u!==null?u=We(u):(u=Te(n)?un:ye.current,u=Un(t,u));var c=n.getDerivedStateFromProps,f=typeof c=="function"||typeof s.getSnapshotBeforeUpdate=="function";f||typeof s.UNSAFE_componentWillReceiveProps!="function"&&typeof s.componentWillReceiveProps!="function"||(l!==r||a!==u)&&ku(t,s,r,u),Rt=!1;var p=t.memoizedState;s.state=p,eo(t,r,s,i),a=t.memoizedState,l!==r||p!==a||_e.current||Rt?(typeof c=="function"&&(el(t,n,c,r),a=t.memoizedState),(l=Rt||Su(t,n,l,r,p,a,u))?(f||typeof s.UNSAFE_componentWillMount!="function"&&typeof s.componentWillMount!="function"||(typeof s.componentWillMount=="function"&&s.componentWillMount(),typeof s.UNSAFE_componentWillMount=="function"&&s.UNSAFE_componentWillMount()),typeof s.componentDidMount=="function"&&(t.flags|=4194308)):(typeof s.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=a),s.props=r,s.state=a,s.context=u,r=l):(typeof s.componentDidMount=="function"&&(t.flags|=4194308),r=!1)}else{s=t.stateNode,Yf(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:Ye(t.type,l),s.props=u,f=t.pendingProps,p=s.context,a=n.contextType,typeof a=="object"&&a!==null?a=We(a):(a=Te(n)?un:ye.current,a=Un(t,a));var y=n.getDerivedStateFromProps;(c=typeof y=="function"||typeof s.getSnapshotBeforeUpdate=="function")||typeof s.UNSAFE_componentWillReceiveProps!="function"&&typeof s.componentWillReceiveProps!="function"||(l!==f||p!==a)&&ku(t,s,r,a),Rt=!1,p=t.memoizedState,s.state=p,eo(t,r,s,i);var d=t.memoizedState;l Line truncated
* @remix-run/router v1.23.2
@@ -65,7 +65,7 @@ Error generating stack: `+o.message+`
* LICENSE.md file in the root directory of this source tree.
*
* @license MIT
*/function vl(){return vl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},vl.apply(this,arguments)}function py(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,o;for(o=0;o<r.length;o++)i=r[o],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}function hy(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function my(e,t){return e.button===0&&(!t||t==="_self")&&!hy(e)}const gy=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],yy="6";try{window.__reactRouterVersion=yy}catch{}const vy="startTransition",Qu=sh[vy];function wy(e){let{basename:t,children:n,future:r,window:i}=e,o=x.useRef();o.current==null&&(o.current=vg({window:i,v5Compat:!0}));let s=o.current,[l,a]=x.useState({action:s.action,location:s.location}),{v7_startTransition:u}=r||{},c=x.useCallback(f=>{u&&Qu?Qu(()=>a(f)):a(f)},[a,u]);return x.useLayoutEffect(()=>s.listen(c),[s,c]),x.useEffect(()=>uy(r),[r]),x.createElement(fy,{basename:t,children:n,location:l.location,navigationType:l.action,navigator:s,future:r})}const Sy=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",ky=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,ow=x.forwardRef(function(t,n){let{onClick:r,relative:i,reloadDocument:o,replace:s,state:l,target:a,to:u,preventScrollReset:c,viewTransition:f}=t,p=py(t,gy),{basename:y}=x.useContext(qt),d,v=!1;if(typeof u=="string"&&ky.test(u)&&(d=u,Sy))try{let g=new URL(window.location.href),k=u.startsWith("//")?new URL(g.protocol+u):new URL(u),E=xa(k.pathname,y);k.origin===g.origin&&E!=null?u=E+k.search+k.hash:v=!0}catch{}let w=Wg(u,{relative:i}),m=xy(u,{replace:s,state:l,target:a,preventScrollReset:c,relative:i,viewTransition:f});function h(g){r&&r(g),g.defaultPrevented||m(g)}return x.createElement("a",vl({},p,{href:d||w,onClick:v||o?r:h,ref:n,target:a}))});var qu;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(qu||(qu={}));var Ju;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(Ju||(Ju={}));function xy(e,t){let{target:n,replace:r,state:i,preventScrollReset:o,relative:s,viewTransition:l}=t===void 0?{}:t,a=Gd(),u=Gn(),c=Xd(e,{relative:s});return x.useCallback(f=>{if(my(f,n)){f.preventDefault();let p=r!==void 0?r:uo(u)===uo(c);a(e,{replace:p,state:i,preventScrollReset:o,relative:s,viewTransition:l})}},[u,a,c,r,i,n,e,o,s,l])}let Ey={data:""},Cy=e=>{if(typeof window=="object"){let t=(e?e.querySelector("#_goober"):window._goober)||Object.assign(document.createElement("style"),{innerHTML:" ",id:"_goober"});return t.nonce=window.__nonce__,t.parentNode||(e||document.head).appendChild(t),t.firstChild}return e||Ey},Py=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,Oy=/\/\*[^]*?\*\/| +/g,Yu=/\n+/g,Tt=(e,t)=>{let n="",r="",i="";for(let o in e){let s=e[o];o[0]=="@"?o[1]=="i"?n=o+" "+s+";":r+=o[1]=="f"?Tt(s,o):o+"{"+Tt(s,o[1]=="k"?"":t)+"}":typeof s=="object"?r+=Tt(s,t?t.replace(/([^,])+/g,l=>o.replace(/([^,]*:\S+\([^)]*\))|([^,])+/g,a=>/&/.test(a)?a.replace(/&/g,l):l?l+" "+a:a)):o):s!=null&&(o=/^--/.test(o)?o:o.replace(/[A-Z]/g,"-$&").toLowerCase(),i+=Tt.p?Tt.p(o,s):o+":"+s+";")}return n+(t&&i?t+"{"+i+"}":i)+r},dt={},rp=e=>{if(typeof e=="object"){let t="";for(let n in e)t+=n+rp(e[n]);return t}return e},Ry=(e,t,n,r,i)=>{let o=rp(e),s=dt[o]||(dt[o]=(a=>{let u=0,c=11;for(;u<a.length;)c=101*c+a.charCodeAt(u++)>>>0;return"go"+c})(o));if(!dt[s]){let a=o!==e?e:(u=>{let c,f,p=[{}];for(;c=Py.exec(u.replace(Oy,""));)c[4]?p.shift():c[3]?(f=c[3].replace(Yu," ").trim(),p.unshift(p[0][f]=p[0][f]||{})):p[0][c[1]]=c[2].replace(Yu," ").trim();return p[0]})(e);dt[s]=Tt(i?{["@keyframes "+s]:a}:a,n?"":"."+s)}let l=n&&dt.g?dt.g:null;return n&&(dt.g=dt[s]),((a,u,c,f)=>{f?u.data=u.data.replace(f,a):u.data.indexOf(a)===-1&&(u.data=c?a+u.data:u.data+a)})(dt[s],t,r,l),s},Ly=(e,t,n)=>e.reduce((r,i,o)=>{let s=t[o];if(s&&s.call){let l=s(n),a=l&&l.props&&l.props.className||/^go/.test(l)&&l;s=a?"."+a:l&&typeof l=="object"?l.props?"":Tt(l,""):l===!1?"":l}return r+i+(s??"")},"");function Io(e){let t=this||{},n=e.call?e(t.p):e;return Ry(n.unshift?n.raw?Ly(n,[].slice.call(arguments,1),t.p):n.reduce((r,i)=>Object.assign(r,i&&i.call?i(t.p):i),{}):n,Cy(t.target),t.g,t.o,t.k)}let ip,wl,Sl;Io.bind({g:1});let xt=Io.bind({k:1});function _y(e,t,n,r){Tt.p=t,ip=e,wl=n,Sl=r}function Jt(e,t){let n=this||{};return function(){let r=arguments;function i(o,s){let l=Object.assign({},o),a=l.className||i.className;n.p=Object.assign({theme:wl&&wl()},l),n.o=/ *go\d+/.test(a),l.className=Io.apply(n,r)+(a?" "+a:"");let u=e;return e[0]&&(u=l.as||e,delete l.as),Sl&&u[0]&&Sl(l),ip(u,l)}return i}}var Ty=e=>typeof e=="function",co=(e,t)=>Ty(e)?e(t):e,Ny=(()=>{let e=0;return()=Line truncated
*/function vl(){return vl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},vl.apply(this,arguments)}function py(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,o;for(o=0;o<r.length;o++)i=r[o],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}function hy(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function my(e,t){return e.button===0&&(!t||t==="_self")&&!hy(e)}const gy=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],yy="6";try{window.__reactRouterVersion=yy}catch{}const vy="startTransition",Qu=sh[vy];function wy(e){let{basename:t,children:n,future:r,window:i}=e,o=x.useRef();o.current==null&&(o.current=vg({window:i,v5Compat:!0}));let s=o.current,[l,a]=x.useState({action:s.action,location:s.location}),{v7_startTransition:u}=r||{},c=x.useCallback(f=>{u&&Qu?Qu(()=>a(f)):a(f)},[a,u]);return x.useLayoutEffect(()=>s.listen(c),[s,c]),x.useEffect(()=>uy(r),[r]),x.createElement(fy,{basename:t,children:n,location:l.location,navigationType:l.action,navigator:s,future:r})}const Sy=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",ky=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,lw=x.forwardRef(function(t,n){let{onClick:r,relative:i,reloadDocument:o,replace:s,state:l,target:a,to:u,preventScrollReset:c,viewTransition:f}=t,p=py(t,gy),{basename:y}=x.useContext(qt),d,v=!1;if(typeof u=="string"&&ky.test(u)&&(d=u,Sy))try{let g=new URL(window.location.href),k=u.startsWith("//")?new URL(g.protocol+u):new URL(u),E=xa(k.pathname,y);k.origin===g.origin&&E!=null?u=E+k.search+k.hash:v=!0}catch{}let w=Wg(u,{relative:i}),m=xy(u,{replace:s,state:l,target:a,preventScrollReset:c,relative:i,viewTransition:f});function h(g){r&&r(g),g.defaultPrevented||m(g)}return x.createElement("a",vl({},p,{href:d||w,onClick:v||o?r:h,ref:n,target:a}))});var qu;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(qu||(qu={}));var Ju;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(Ju||(Ju={}));function xy(e,t){let{target:n,replace:r,state:i,preventScrollReset:o,relative:s,viewTransition:l}=t===void 0?{}:t,a=Gd(),u=Gn(),c=Xd(e,{relative:s});return x.useCallback(f=>{if(my(f,n)){f.preventDefault();let p=r!==void 0?r:uo(u)===uo(c);a(e,{replace:p,state:i,preventScrollReset:o,relative:s,viewTransition:l})}},[u,a,c,r,i,n,e,o,s,l])}let Ey={data:""},Cy=e=>{if(typeof window=="object"){let t=(e?e.querySelector("#_goober"):window._goober)||Object.assign(document.createElement("style"),{innerHTML:" ",id:"_goober"});return t.nonce=window.__nonce__,t.parentNode||(e||document.head).appendChild(t),t.firstChild}return e||Ey},Py=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,Oy=/\/\*[^]*?\*\/| +/g,Yu=/\n+/g,Tt=(e,t)=>{let n="",r="",i="";for(let o in e){let s=e[o];o[0]=="@"?o[1]=="i"?n=o+" "+s+";":r+=o[1]=="f"?Tt(s,o):o+"{"+Tt(s,o[1]=="k"?"":t)+"}":typeof s=="object"?r+=Tt(s,t?t.replace(/([^,])+/g,l=>o.replace(/([^,]*:\S+\([^)]*\))|([^,])+/g,a=>/&/.test(a)?a.replace(/&/g,l):l?l+" "+a:a)):o):s!=null&&(o=/^--/.test(o)?o:o.replace(/[A-Z]/g,"-$&").toLowerCase(),i+=Tt.p?Tt.p(o,s):o+":"+s+";")}return n+(t&&i?t+"{"+i+"}":i)+r},dt={},rp=e=>{if(typeof e=="object"){let t="";for(let n in e)t+=n+rp(e[n]);return t}return e},Ry=(e,t,n,r,i)=>{let o=rp(e),s=dt[o]||(dt[o]=(a=>{let u=0,c=11;for(;u<a.length;)c=101*c+a.charCodeAt(u++)>>>0;return"go"+c})(o));if(!dt[s]){let a=o!==e?e:(u=>{let c,f,p=[{}];for(;c=Py.exec(u.replace(Oy,""));)c[4]?p.shift():c[3]?(f=c[3].replace(Yu," ").trim(),p.unshift(p[0][f]=p[0][f]||{})):p[0][c[1]]=c[2].replace(Yu," ").trim();return p[0]})(e);dt[s]=Tt(i?{["@keyframes "+s]:a}:a,n?"":"."+s)}let l=n&&dt.g?dt.g:null;return n&&(dt.g=dt[s]),((a,u,c,f)=>{f?u.data=u.data.replace(f,a):u.data.indexOf(a)===-1&&(u.data=c?a+u.data:u.data+a)})(dt[s],t,r,l),s},Ly=(e,t,n)=>e.reduce((r,i,o)=>{let s=t[o];if(s&&s.call){let l=s(n),a=l&&l.props&&l.props.className||/^go/.test(l)&&l;s=a?"."+a:l&&typeof l=="object"?l.props?"":Tt(l,""):l===!1?"":l}return r+i+(s??"")},"");function Io(e){let t=this||{},n=e.call?e(t.p):e;return Ry(n.unshift?n.raw?Ly(n,[].slice.call(arguments,1),t.p):n.reduce((r,i)=>Object.assign(r,i&&i.call?i(t.p):i),{}):n,Cy(t.target),t.g,t.o,t.k)}let ip,wl,Sl;Io.bind({g:1});let xt=Io.bind({k:1});function _y(e,t,n,r){Tt.p=t,ip=e,wl=n,Sl=r}function Jt(e,t){let n=this||{};return function(){let r=arguments;function i(o,s){let l=Object.assign({},o),a=l.className||i.className;n.p=Object.assign({theme:wl&&wl()},l),n.o=/ *go\d+/.test(a),l.className=Io.apply(n,r)+(a?" "+a:"");let u=e;return e[0]&&(u=l.as||e,delete l.as),Sl&&u[0]&&Sl(l),ip(u,l)}return i}}var Ty=e=>typeof e=="function",co=(e,t)=>Ty(e)?e(t):e,Ny=(()=>{let e=0;return()=Line truncated
from {
transform: scale(0) rotate(45deg);
opacity: 0;
@@ -243,7 +243,7 @@ to {
}
`,Si=16,cv=({reverseOrder:e,position:t="top-center",toastOptions:n,gutter:r,children:i,toasterId:o,containerStyle:s,containerClassName:l})=>{let{toasts:a,handlers:u}=zy(n,o);return x.createElement("div",{"data-rht-toaster":o||"",style:{position:"fixed",zIndex:9999,top:Si,left:Si,right:Si,bottom:Si,pointerEvents:"none",...s},className:l,onMouseEnter:u.startPause,onMouseLeave:u.endPause},a.map(c=>{let f=c.position||t,p=u.calculateOffset(c,{reverseOrder:e,gutter:r,defaultPosition:t}),y=av(f,p);return x.createElement(lv,{id:c.id,key:c.id,onHeightUpdate:u.updateHeight,className:c.visible?uv:"",style:y},c.type==="custom"?co(c.message,c):i?i(c):x.createElement(sv,{toast:c,position:f}))}))},hs=ie;const fv="modulepreload",dv=function(e){return"/"+e},Gu={},Oe=function(t,n,r){let i=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const s=document.querySelector("meta[property=csp-nonce]"),l=(s==null?void 0:s.nonce)||(s==null?void 0:s.getAttribute("nonce"));i=Promise.allSettled(n.map(a=>{if(a=dv(a),a in Gu)return;Gu[a]=!0;const u=a.endsWith(".css"),c=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${a}"]${c}`))return;const f=document.createElement("link");if(f.rel=u?"stylesheet":fv,u||(f.as="script"),f.crossOrigin="",f.href=a,l&&f.setAttribute("nonce",l),document.head.appendChild(f),u)return new Promise((p,y)=>{f.addEventListener("load",p),f.addEventListener("error",()=>y(new Error(`Unable to preload CSS for ${a}`)))})}))}function o(s){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=s,window.dispatchEvent(l),!l.defaultPrevented)throw s}return i.then(s=>{for(const l of s||[])l.status==="rejected"&&o(l.reason);return t().catch(o)})};function cp(e,t){return function(){return e.apply(t,arguments)}}const{toString:pv}=Object.prototype,{getPrototypeOf:Ra}=Object,{iterator:Fo,toStringTag:fp}=Symbol,jo=(e=>t=>{const n=pv.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),nt=e=>(e=e.toLowerCase(),t=>jo(t)===e),$o=e=>t=>typeof t===e,{isArray:Xn}=Array,Kn=$o("undefined");function Gr(e){return e!==null&&!Kn(e)&&e.constructor!==null&&!Kn(e.constructor)&&Ae(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const dp=nt("ArrayBuffer");function hv(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&dp(e.buffer),t}const mv=$o("string"),Ae=$o("function"),pp=$o("number"),Xr=e=>e!==null&&typeof e=="object",gv=e=>e===!0||e===!1,ji=e=>{if(jo(e)!=="object")return!1;const t=Ra(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(fp in e)&&!(Fo in e)},yv=e=>{if(!Xr(e)||Gr(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},vv=nt("Date"),wv=nt("File"),Sv=e=>!!(e&&typeof e.uri<"u"),kv=e=>e&&typeof e.getParts<"u",xv=nt("Blob"),Ev=nt("FileList"),Cv=e=>Xr(e)&&Ae(e.pipe);function Pv(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}const Xu=Pv(),Zu=typeof Xu.FormData<"u"?Xu.FormData:void 0,Ov=e=>{let t;return e&&(Zu&&e instanceof Zu||Ae(e.append)&&((t=jo(e))==="formdata"||t==="object"&&Ae(e.toString)&&e.toString()==="[object FormData]"))},Rv=nt("URLSearchParams"),[Lv,_v,Tv,Nv]=["ReadableStream","Request","Response","Headers"].map(nt),Av=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Zr(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,i;if(typeof e!="object"&&(e=[e]),Xn(e))for(r=0,i=e.length;r<i;r++)t.call(null,e[r],r,e);else{if(Gr(e))return;const o=n?Object.getOwnPropertyNames(e):Object.keys(e),s=o.length;let l;for(r=0;r<s;r++)l=o[r],t.call(null,e[l],l,e)}}function hp(e,t){if(Gr(e))return null;t=t.toLowerCase();const n=Object.keys(e);let r=n.length,i;for(;r-- >0;)if(i=n[r],t===i.toLowerCase())return i;return null}const on=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,mp=e=>!Kn(e)&&e!==on;function kl(){const{caseless:e,skipUndefined:t}=mp(this)&&this||{},n={},r=(i,o)=>{if(o==="__proto__"||o==="constructor"||o==="prototype")return;const s=e&&hp(n,o)||o;ji(n[s])&&ji(i)?n[s]=kl(n[s],i):ji(i)?n[s]=kl({},i):Xn(i)?n[s]=i.slice():(!t||!Kn(i))&&(n[s]=i)};for(let i=0,o=arguments.length;i<o;i++)arguments[i]&&Zr(arguments[i],r);return n}const Iv=(e,t,n,{allOwnKeys:r}={})=>(Zr(t,(i,o)=>{n&&Ae(i)?Object.defineProperty(e,o,{value:cp(i,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(e,o,{value:i,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:r}),e),Dv=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),Fv=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),Object.defineProperty(e.prototype,"constructor",{value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},jv=(e,t,n,r)=>{let i,o,s;const l={};if(t=t||{},e==null)return t;do{for(i=Object.getOwnPropertyNames(e),o=i.length;o-- >0;)s=i[o],(!r||r( Line truncated
`).forEach(function(s){i=s.indexOf(":"),n=s.substring(0,i).trim().toLowerCase(),r=s.substring(i+1).trim(),!(!n||t[n]&&y0[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},rc=Symbol("internals");function lr(e){return e&&String(e).trim().toLowerCase()}function $i(e){return e===!1||e==null?e:S.isArray(e)?e.map($i):String(e)}function w0(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const S0=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function gs(e,t,n,r,i){if(S.isFunction(r))return r.call(this,t,n);if(i&&(t=n),!!S.isString(t)){if(S.isString(r))return t.indexOf(r)!==-1;if(S.isRegExp(r))return r.test(t)}}function k0(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function x0(e,t){const n=S.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(i,o,s){return this[r].call(this,t,i,o,s)},configurable:!0})})}let Ie=class{constructor(t){t&&this.set(t)}set(t,n,r){const i=this;function o(l,a,u){const c=lr(a);if(!c)throw new Error("header name must be a non-empty string");const f=S.findKey(i,c);(!f||i[f]===void 0||u===!0||u===void 0&&i[f]!==!1)&&(i[f||a]=$i(l))}const s=(l,a)=>S.forEach(l,(u,c)=>o(u,c,a));if(S.isPlainObject(t)||t instanceof this.constructor)s(t,n);else if(S.isString(t)&&(t=t.trim())&&!S0(t))s(v0(t),n);else if(S.isObject(t)&&S.isIterable(t)){let l={},a,u;for(const c of t){if(!S.isArray(c))throw TypeError("Object iterator must return a key-value pair");l[u=c[0]]=(a=l[u])?S.isArray(a)?[...a,c[1]]:[a,c[1]]:c[1]}s(l,n)}else t!=null&&o(n,t,r);return this}get(t,n){if(t=lr(t),t){const r=S.findKey(this,t);if(r){const i=this[r];if(!n)return i;if(n===!0)return w0(i);if(S.isFunction(n))return n.call(this,i,r);if(S.isRegExp(n))return n.exec(i);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=lr(t),t){const r=S.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||gs(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let i=!1;function o(s){if(s=lr(s),s){const l=S.findKey(r,s);l&&(!n||gs(r,r[l],l,n))&&(delete r[l],i=!0)}}return S.isArray(t)?t.forEach(o):o(t),i}clear(t){const n=Object.keys(this);let r=n.length,i=!1;for(;r--;){const o=n[r];(!t||gs(this,this[o],o,t,!0))&&(delete this[o],i=!0)}return i}normalize(t){const n=this,r={};return S.forEach(this,(i,o)=>{const s=S.findKey(r,o);if(s){n[s]=$i(i),delete n[o];return}const l=t?k0(o):String(o).trim();l!==o&&delete n[o],n[l]=$i(i),r[l]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return S.forEach(this,(r,i)=>{r!=null&&r!==!1&&(n[i]=t&&S.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(`
`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(i=>r.set(i)),r}static accessor(t){const r=(this[rc]=this[rc]={accessors:{}}).accessors,i=this.prototype;function o(s){const l=lr(s);r[l]||(x0(i,s),r[l]=!0)}return S.isArray(t)?t.forEach(o):o(t),this}};Ie.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);S.reduceDescriptors(Ie.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});S.freezeMethods(Ie);function ys(e,t){const n=this||ei,r=t||n,i=Ie.from(r.headers);let o=r.data;return S.forEach(e,function(l){o=l.call(n,o,i.normalize(),t?t.status:void 0)}),i.normalize(),o}function Ep(e){return!!(e&&e.__CANCEL__)}let ti=class extends A{constructor(t,n,r){super(t??"canceled",A.ERR_CANCELED,n,r),this.name="CanceledError",this.__CANCEL__=!0}};function Cp(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new A("Request failed with status code "+n.status,[A.ERR_BAD_REQUEST,A.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function E0(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function C0(e,t){e=e||10;const n=new Array(e),r=new Array(e);let i=0,o=0,s;return t=t!==void 0?t:1e3,function(a){const u=Date.now(),c=r[o];s||(s=u),n[i]=a,r[i]=u;let f=o,p=0;for(;f!==i;)p+=n[f++],f=f%e;if(i=(i+1)%e,i===o&&(o=(o+1)%e),u-s<t)return;const y=c&&u-c;return y?Math.round(p*1e3/y):void 0}}function P0(e,t){let n=0,r=1e3/t,i,o;const s=(u,c=Date.now())=>{n=c,i=null,o&&(clearTimeout(o),o=null),e(...u)};return[(...u)=>{const c=Date.now(),f=c-n;f>=r?s(u,c):(i=u,o||(o=setTimeout(()=>{o=null,s(i)},r-f)))},()=>i&&s(i)]}const fo=(e,t,n=3)=>{let r=0;const i=C0(50,250);return P0(o=>{const s=o.loaded,l=o.lengthComputable?o.total:void 0,a=s-r,u=i(a),c=s<=l;r=s;const f={loaded:s,total:l,progress:l?s/l:void 0,bytes:a,rate:u||void 0,estimated:u&&l&&c?(l-s)/u:void 0,event:o,lengthComputable:l!=null,[t?"download":"upload"]:!0};e(f)},n)},ic=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},oc=e=>(...t)=>S.asap(()=>e(...t)),O0=ge.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,ge.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(ge.origin),ge.navigator&&/(msie|trident)/i.test(ge.navigator.userAgent)):()=>!0,R0=ge.hasStandardBrowserEnv?{write(e,t,n,r,i,o,s){if(typeof document>"u")return;const l=[`${e}=${encodeURIComponent(t)}`];S.isNumber(n)&&l.push(`expires=${new Date(n).toUTCString()}`),S.isString(r)&&l.push(`path=${r}`),S.isString(i)&&l.push(`domain=${i}`),o===!0&&l.push("secure"),S.isString(s)&&l.push(`SameSite=${s}`),document.cookie=l.join("; ")},read(e){if(typeof document>"u")return null;const t=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function L0(e){return typeof e!="string"?!1:/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function _0(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function Pp(e,t,n){let r=!L0(t);return e&&(r||n==!1)?_0(e,t):t}const sc=e=>e instanceof Ie?{...e}:e;function hn(e,t){t=t||{};const n={};function r(u,c,f,p){return S.isPlainObject(u)&&S.isPlainObject(c)?S.merge.call({caseless:p},u,c):S.isPlainObject(c)?S.merge({},c):S.isArray(c)?c.slice():c}function i(u,c,f,p){if(S.isUndefined(c)){if(!S.isUndefined(u))return r(void 0,u,f,p)}else return r(u,c,f,p)}function o(u,c){if(!S.isUndefined(c))return r(void 0,c)}function s(u,c){if(S.isUndefined(c)){if(!S.isUndefined(u))return r(void 0,u)}else return r(void 0,c)}function l(u,c,f){if(f in t)return r(u,c);if(f in e)return r(void 0,u)}const a={url:o,method:o,data:o,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,withXSRFToken:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:l,headers:(u,c,f)=>i(sc(u),sc(c),f,!0)};return S.forEach(Object.keys({...e,...t}),function(c){if(c==="__proto__"||c==="constructor"||c==="prototype")return;const f=S.hasOwnProp(a,c)?a[c]:i,p=f(e[c],t[c],c);S.isUndefined(p)&&f!==l||(n[c]=p)}),n}const Op=e=>{const t=hn({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:i,xsrfCookieName:o,headers:s,auth:l}=t;if(t.headers=s=Ie.from(s),t.url=kp(Pp(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),l&&s.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),S.isFormData(n)){if(ge.hasStandardBrowserEnv||ge.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if(S.isFunction(n.getHeaders)){c Line truncated
`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(i=>r.set(i)),r}static accessor(t){const r=(this[rc]=this[rc]={accessors:{}}).accessors,i=this.prototype;function o(s){const l=lr(s);r[l]||(x0(i,s),r[l]=!0)}return S.isArray(t)?t.forEach(o):o(t),this}};Ie.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);S.reduceDescriptors(Ie.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});S.freezeMethods(Ie);function ys(e,t){const n=this||ei,r=t||n,i=Ie.from(r.headers);let o=r.data;return S.forEach(e,function(l){o=l.call(n,o,i.normalize(),t?t.status:void 0)}),i.normalize(),o}function Ep(e){return!!(e&&e.__CANCEL__)}let ti=class extends A{constructor(t,n,r){super(t??"canceled",A.ERR_CANCELED,n,r),this.name="CanceledError",this.__CANCEL__=!0}};function Cp(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new A("Request failed with status code "+n.status,[A.ERR_BAD_REQUEST,A.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function E0(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function C0(e,t){e=e||10;const n=new Array(e),r=new Array(e);let i=0,o=0,s;return t=t!==void 0?t:1e3,function(a){const u=Date.now(),c=r[o];s||(s=u),n[i]=a,r[i]=u;let f=o,p=0;for(;f!==i;)p+=n[f++],f=f%e;if(i=(i+1)%e,i===o&&(o=(o+1)%e),u-s<t)return;const y=c&&u-c;return y?Math.round(p*1e3/y):void 0}}function P0(e,t){let n=0,r=1e3/t,i,o;const s=(u,c=Date.now())=>{n=c,i=null,o&&(clearTimeout(o),o=null),e(...u)};return[(...u)=>{const c=Date.now(),f=c-n;f>=r?s(u,c):(i=u,o||(o=setTimeout(()=>{o=null,s(i)},r-f)))},()=>i&&s(i)]}const fo=(e,t,n=3)=>{let r=0;const i=C0(50,250);return P0(o=>{const s=o.loaded,l=o.lengthComputable?o.total:void 0,a=s-r,u=i(a),c=s<=l;r=s;const f={loaded:s,total:l,progress:l?s/l:void 0,bytes:a,rate:u||void 0,estimated:u&&l&&c?(l-s)/u:void 0,event:o,lengthComputable:l!=null,[t?"download":"upload"]:!0};e(f)},n)},ic=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},oc=e=>(...t)=>S.asap(()=>e(...t)),O0=ge.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,ge.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(ge.origin),ge.navigator&&/(msie|trident)/i.test(ge.navigator.userAgent)):()=>!0,R0=ge.hasStandardBrowserEnv?{write(e,t,n,r,i,o,s){if(typeof document>"u")return;const l=[`${e}=${encodeURIComponent(t)}`];S.isNumber(n)&&l.push(`expires=${new Date(n).toUTCString()}`),S.isString(r)&&l.push(`path=${r}`),S.isString(i)&&l.push(`domain=${i}`),o===!0&&l.push("secure"),S.isString(s)&&l.push(`SameSite=${s}`),document.cookie=l.join("; ")},read(e){if(typeof document>"u")return null;const t=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function L0(e){return typeof e!="string"?!1:/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function _0(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function Pp(e,t,n){let r=!L0(t);return e&&(r||n==!1)?_0(e,t):t}const sc=e=>e instanceof Ie?{...e}:e;function hn(e,t){t=t||{};const n={};function r(u,c,f,p){return S.isPlainObject(u)&&S.isPlainObject(c)?S.merge.call({caseless:p},u,c):S.isPlainObject(c)?S.merge({},c):S.isArray(c)?c.slice():c}function i(u,c,f,p){if(S.isUndefined(c)){if(!S.isUndefined(u))return r(void 0,u,f,p)}else return r(u,c,f,p)}function o(u,c){if(!S.isUndefined(c))return r(void 0,c)}function s(u,c){if(S.isUndefined(c)){if(!S.isUndefined(u))return r(void 0,u)}else return r(void 0,c)}function l(u,c,f){if(f in t)return r(u,c);if(f in e)return r(void 0,u)}const a={url:o,method:o,data:o,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,withXSRFToken:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:l,headers:(u,c,f)=>i(sc(u),sc(c),f,!0)};return S.forEach(Object.keys({...e,...t}),function(c){if(c==="__proto__"||c==="constructor"||c==="prototype")return;const f=S.hasOwnProp(a,c)?a[c]:i,p=f(e[c],t[c],c);S.isUndefined(p)&&f!==l||(n[c]=p)}),n}const Op=e=>{const t=hn({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:i,xsrfCookieName:o,headers:s,auth:l}=t;if(t.headers=s=Ie.from(s),t.url=kp(Pp(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),l&&s.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),S.isFormData(n)){if(ge.hasStandardBrowserEnv||ge.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if(S.isFunction(n.getHeaders)){c Line truncated
`+s.map(dc).join(`
`):" "+dc(s[0]):"as no adapter specified";throw new A("There is no suitable adapter to dispatch the request "+l,"ERR_NOT_SUPPORT")}return i}const Lp={getAdapter:M0,adapters:Na};function vs(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new ti(null,e)}function pc(e){return vs(e),e.headers=Ie.from(e.headers),e.data=ys.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Lp.getAdapter(e.adapter||ei.adapter,e)(e).then(function(r){return vs(e),r.data=ys.call(e,e.transformResponse,r),r.headers=Ie.from(r.headers),r},function(r){return Ep(r)||(vs(e),r&&r.response&&(r.response.data=ys.call(e,e.transformResponse,r.response),r.response.headers=Ie.from(r.response.headers))),Promise.reject(r)})}const _p="1.13.6",Uo={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{Uo[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const hc={};Uo.transitional=function(t,n,r){function i(o,s){return"[Axios v"+_p+"] Transitional option '"+o+"'"+s+(r?". "+r:"")}return(o,s,l)=>{if(t===!1)throw new A(i(s," has been removed"+(n?" in "+n:"")),A.ERR_DEPRECATED);return n&&!hc[s]&&(hc[s]=!0,console.warn(i(s," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(o,s,l):!0}};Uo.spelling=function(t){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${t}`),!0)};function B0(e,t,n){if(typeof e!="object")throw new A("options must be an object",A.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let i=r.length;for(;i-- >0;){const o=r[i],s=t[o];if(s){const l=e[o],a=l===void 0||s(l,o,e);if(a!==!0)throw new A("option "+o+" must be "+a,A.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new A("Unknown option "+o,A.ERR_BAD_OPTION)}}const zi={assertOptions:B0,validators:Uo},Be=zi.validators;let an=class{constructor(t){this.defaults=t||{},this.interceptors={request:new nc,response:new nc}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let i={};Error.captureStackTrace?Error.captureStackTrace(i):i=new Error;const o=i.stack?i.stack.replace(/^.+\n/,""):"";try{r.stack?o&&!String(r.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(r.stack+=`
`+o):r.stack=o}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=hn(this.defaults,n);const{transitional:r,paramsSerializer:i,headers:o}=n;r!==void 0&&zi.assertOptions(r,{silentJSONParsing:Be.transitional(Be.boolean),forcedJSONParsing:Be.transitional(Be.boolean),clarifyTimeoutError:Be.transitional(Be.boolean),legacyInterceptorReqResOrdering:Be.transitional(Be.boolean)},!1),i!=null&&(S.isFunction(i)?n.paramsSerializer={serialize:i}:zi.assertOptions(i,{encode:Be.function,serialize:Be.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),zi.assertOptions(n,{baseUrl:Be.spelling("baseURL"),withXsrfToken:Be.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let s=o&&S.merge(o.common,o[n.method]);o&&S.forEach(["delete","get","head","post","put","patch","common"],d=>{delete o[d]}),n.headers=Ie.concat(s,o);const l=[];let a=!0;this.interceptors.request.forEach(function(v){if(typeof v.runWhen=="function"&&v.runWhen(n)===!1)return;a=a&&v.synchronous;const w=n.transitional||_a;w&&w.legacyInterceptorReqResOrdering?l.unshift(v.fulfilled,v.rejected):l.push(v.fulfilled,v.rejected)});const u=[];this.interceptors.response.forEach(function(v){u.push(v.fulfilled,v.rejected)});let c,f=0,p;if(!a){const d=[pc.bind(this),void 0];for(d.unshift(...l),d.push(...u),p=d.length,c=Promise.resolve(n);f<p;)c=c.then(d[f++],d[f++]);return c}p=l.length;let y=n;for(;f<p;){const d=l[f++],v=l[f++];try{y=d(y)}catch(w){v.call(this,w);break}}try{c=pc.call(this,y)}catch(d){return Promise.reject(d)}for(f=0,p=u.length;f<p;)c=c.then(u[f++],u[f++]);return c}getUri(t){t=hn(this.defaults,t);const n=Pp(t.baseURL,t.url,t.allowAbsoluteUrls);return kp(n,t.params,t.paramsSerializer)}};S.forEach(["delete","get","head","options"],function(t){an.prototype[t]=function(n,r){return this.request(hn(r||{},{method:t,url:n,data:(r||{}).data}))}});S.forEach(["post","put","patch"],function(t){function n(r){return function(o,s,l){return this.request(hn(l||{},{method:t,headers:r?{"Content-Type":"multipart/form-data"}:{},url:o,data:s}))}}an.prototype[t]=n(),an.prototype[t+"Form"]=n(!0)});let b0=class Tp{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(o){n=o});const r=this;this.promise.then(i=>{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](i);r._listeners=null}),this.promise.then=i=>{let o;const s=new Promise(l=>{r.subscribe(l),o=l}).then(i);return s.cancel=function(){r.unsubscribe(o)},s},t(function(o,s,l){r.reason||(r.reason=new ti(o,s,l),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new Tp(function(i){t=i}),cancel:t}}};function V0(e){return function(n){return e.apply(null,n)}}function H0(e){return S.isObject(e)&&e.isAxiosError===!0}const Cl={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(Cl).forEach(([e,t])=>{Cl[t]=e});function Np(e){const t=new an(e),n=cp(an.prototype.request,t);return S.extend(n,an.prototype,t,{allOwnKeys:!0}),S.extend(n,t,null,{allOwnKeys:!0}),n.create=function(i){return Np(hn(e,i))},n}const te=Np(ei);te.Axios=an;te.CanceledError=ti;te.CancelToken=b0;te.isCancel=Ep;te.VERSION=_p; Line truncated
`+o):r.stack=o}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=hn(this.defaults,n);const{transitional:r,paramsSerializer:i,headers:o}=n;r!==void 0&&zi.assertOptions(r,{silentJSONParsing:Be.transitional(Be.boolean),forcedJSONParsing:Be.transitional(Be.boolean),clarifyTimeoutError:Be.transitional(Be.boolean),legacyInterceptorReqResOrdering:Be.transitional(Be.boolean)},!1),i!=null&&(S.isFunction(i)?n.paramsSerializer={serialize:i}:zi.assertOptions(i,{encode:Be.function,serialize:Be.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),zi.assertOptions(n,{baseUrl:Be.spelling("baseURL"),withXsrfToken:Be.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let s=o&&S.merge(o.common,o[n.method]);o&&S.forEach(["delete","get","head","post","put","patch","common"],d=>{delete o[d]}),n.headers=Ie.concat(s,o);const l=[];let a=!0;this.interceptors.request.forEach(function(v){if(typeof v.runWhen=="function"&&v.runWhen(n)===!1)return;a=a&&v.synchronous;const w=n.transitional||_a;w&&w.legacyInterceptorReqResOrdering?l.unshift(v.fulfilled,v.rejected):l.push(v.fulfilled,v.rejected)});const u=[];this.interceptors.response.forEach(function(v){u.push(v.fulfilled,v.rejected)});let c,f=0,p;if(!a){const d=[pc.bind(this),void 0];for(d.unshift(...l),d.push(...u),p=d.length,c=Promise.resolve(n);f<p;)c=c.then(d[f++],d[f++]);return c}p=l.length;let y=n;for(;f<p;){const d=l[f++],v=l[f++];try{y=d(y)}catch(w){v.call(this,w);break}}try{c=pc.call(this,y)}catch(d){return Promise.reject(d)}for(f=0,p=u.length;f<p;)c=c.then(u[f++],u[f++]);return c}getUri(t){t=hn(this.defaults,t);const n=Pp(t.baseURL,t.url,t.allowAbsoluteUrls);return kp(n,t.params,t.paramsSerializer)}};S.forEach(["delete","get","head","options"],function(t){an.prototype[t]=function(n,r){return this.request(hn(r||{},{method:t,url:n,data:(r||{}).data}))}});S.forEach(["post","put","patch"],function(t){function n(r){return function(o,s,l){return this.request(hn(l||{},{method:t,headers:r?{"Content-Type":"multipart/form-data"}:{},url:o,data:s}))}}an.prototype[t]=n(),an.prototype[t+"Form"]=n(!0)});let b0=class Tp{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(o){n=o});const r=this;this.promise.then(i=>{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](i);r._listeners=null}),this.promise.then=i=>{let o;const s=new Promise(l=>{r.subscribe(l),o=l}).then(i);return s.cancel=function(){r.unsubscribe(o)},s},t(function(o,s,l){r.reason||(r.reason=new ti(o,s,l),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new Tp(function(i){t=i}),cancel:t}}};function V0(e){return function(n){return e.apply(null,n)}}function H0(e){return S.isObject(e)&&e.isAxiosError===!0}const Cl={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(Cl).forEach(([e,t])=>{Cl[t]=e});function Np(e){const t=new an(e),n=cp(an.prototype.request,t);return S.extend(n,an.prototype,t,{allOwnKeys:!0}),S.extend(n,t,null,{allOwnKeys:!0}),n.create=function(i){return Np(hn(e,i))},n}const te=Np(ei);te.Axios=an;te.CanceledError=ti;te.CancelToken=b0;te.isCancel=Ep;te.VERSION=_p; Line truncated
@@ -1 +1 @@
import{r as w,j as Yt}from"./index-Drgd7k5E.js";import{n as ve,p,f as S,g as Ss,i as Vs,W as Jn,h as As,j as xe,m as Tt,s as X,k as W,l as Cs,o as bs,q as Es,r as Ds,J as bt,t as et,v as Te,w as F,x as ct,y as Qn,z as nt,A as b,B as ht,D as O,E as Ms,F as Rs,G as Ls,H as He,I as _t,K as yt,L as B,N as Bs,O as ze,P as ks,Q as ti,c as Z,S as ei,R as V,T as ni,U as Zt,V as Is,X as ii,Y as qt,Z as M,_ as jt,b as js,M as si,d as Fs,$ as oi}from"./CountUp-Omm8FlHl.js";const ri=w.createContext({}),we=w.createContext(null),ai=t=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(t);function li(t){return typeof t=="object"&&t!==null}const ui=t=>/^0[^.\s]+$/u.test(t);function ci(t){let e;return()=>(e===void 0&&(e=t()),e)}function Os(t){for(let e=1;e<t.length;e++)t[e]??(t[e]=t[e-1])}const $=t=>t*180/Math.PI,Jt=t=>{const e=$(Math.atan2(t[1],t[0]));return Qt(e)},Ns={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:t=>(Math.abs(t[0])+Math.abs(t[3]))/2,rotate:Jt,rotateZ:Jt,skewX:t=>$(Math.atan(t[1])),skewY:t=>$(Math.atan(t[2])),skew:t=>(Math.abs(t[1])+Math.abs(t[2]))/2},Qt=t=>(t=t%360,t<0&&(t+=360),t),Ge=Jt,$e=t=>Math.sqrt(t[0]*t[0]+t[1]*t[1]),Xe=t=>Math.sqrt(t[4]*t[4]+t[5]*t[5]),Us={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:$e,scaleY:Xe,scale:t=>($e(t)+Xe(t))/2,rotateX:t=>Qt($(Math.atan2(t[6],t[5]))),rotateY:t=>Qt($(Math.atan2(-t[2],t[0]))),rotateZ:Ge,rotate:Ge,skewX:t=>$(Math.atan(t[4])),skewY:t=>$(Math.atan(t[1])),skew:t=>(Math.abs(t[1])+Math.abs(t[4]))/2};function te(t){return t.includes("scale")?1:0}function ee(t,e){if(!t||t==="none")return te(e);const n=t.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let i,s;if(n)i=Us,s=n;else{const a=t.match(/^matrix\(([-\d.e\s,]+)\)$/u);i=Ns,s=a}if(!s)return te(e);const r=i[e],o=s[1].split(",").map(Ks);return typeof r=="function"?r(o):o[r]}const Ws=(t,e)=>{const{transform:n="none"}=getComputedStyle(t);return ee(n,e)};function Ks(t){return parseFloat(t.trim())}const it=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],st=new Set(it),Ye=t=>t===ve||t===p,Hs=new Set(["x","y","z"]),zs=it.filter(t=>!Hs.has(t));function Gs(t){const e=[];return zs.forEach(n=>{const i=t.getValue(n);i!==void 0&&(e.push([n,i.get()]),i.set(n.startsWith("scale")?1:0))}),e}const U={width:({x:t},{paddingLeft:e="0",paddingRight:n="0",boxSizing:i})=>{const s=t.max-t.min;return i==="border-box"?s:s-parseFloat(e)-parseFloat(n)},height:({y:t},{paddingTop:e="0",paddingBottom:n="0",boxSizing:i})=>{const s=t.max-t.min;return i==="border-box"?s:s-parseFloat(e)-parseFloat(n)},top:(t,{top:e})=>parseFloat(e),left:(t,{left:e})=>parseFloat(e),bottom:({y:t},{top:e})=>parseFloat(e)+(t.max-t.min),right:({x:t},{left:e})=>parseFloat(e)+(t.max-t.min),x:(t,{transform:e})=>ee(e,"x"),y:(t,{transform:e})=>ee(e,"y")};U.translateX=U.x;U.translateY=U.y;const Y=new Set;let ne=!1,ie=!1,se=!1;function hi(){if(ie){const t=Array.from(Y).filter(i=>i.needsMeasurement),e=new Set(t.map(i=>i.element)),n=new Map;e.forEach(i=>{const s=Gs(i);s.length&&(n.set(i,s),i.render())}),t.forEach(i=>i.measureInitialState()),e.forEach(i=>{i.render();const s=n.get(i);s&&s.forEach(([r,o])=>{var a;(a=i.getValue(r))==null||a.set(o)})}),t.forEach(i=>i.measureEndState()),t.forEach(i=>{i.suspendedScrollY!==void 0&&window.scrollTo(0,i.suspendedScrollY)})}ie=!1,ne=!1,Y.forEach(t=>t.complete(se)),Y.clear()}function fi(){Y.forEach(t=>{t.readKeyframes(),t.needsMeasurement&&(ie=!0)})}function $s(){se=!0,fi(),hi(),se=!1}class Pe{constructor(e,n,i,s,r,o=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...e],this.onComplete=n,this.name=i,this.motionValue=s,this.element=r,this.isAsync=o}scheduleResolve(){this.state="scheduled",this.isAsync?(Y.add(this),ne||(ne=!0,S.read(fi),S.resolveKeyframes(hi))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:e,name:n,element:i,motionValue:s}=this;if(e[0]===null){const r=s==null?void 0:s.get(),o=e[e.length-1];if(r!==void 0)e[0]=r;else if(i&&n){const a=i.readValue(n,o);a!=null&&(e[0]=a)}e[0]===void 0&&(e[0]=o),s&&r===void 0&&s.set(e[0])}Os(e)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(e=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,e),Y.delete(this)}cancel(){this.state==="scheduled"&&(Y.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const Xs=t=>t.startsWith("--");function di(t,e,n){Xs(e)?t.style.setProperty(e,n):t.style[e]=n}const Ys={};function mi(t,e){const n=ci(t);return()=>Ys[e]??n()}const _s=mi(()=>window.ScrollTimeline!==void 0,"scrollTimeline"),pi=mi(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),at=([t,e,n,i])=>`cubic-bezier(${t}, ${e}, ${n}, ${i})`,_e={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-inLine truncated
import{r as w,j as Yt}from"./index-IL0bf27q.js";import{n as ve,p,f as S,g as Ss,i as Vs,W as Jn,h as As,j as xe,m as Tt,s as X,k as W,l as Cs,o as bs,q as Es,r as Ds,J as bt,t as et,v as Te,w as F,x as ct,y as Qn,z as nt,A as b,B as ht,D as O,E as Ms,F as Rs,G as Ls,H as He,I as _t,K as yt,L as B,N as Bs,O as ze,P as ks,Q as ti,c as Z,S as ei,R as V,T as ni,U as Zt,V as Is,X as ii,Y as qt,Z as M,_ as jt,b as js,M as si,d as Fs,$ as oi}from"./CountUp-BYW6-_IC.js";const ri=w.createContext({}),we=w.createContext(null),ai=t=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(t);function li(t){return typeof t=="object"&&t!==null}const ui=t=>/^0[^.\s]+$/u.test(t);function ci(t){let e;return()=>(e===void 0&&(e=t()),e)}function Os(t){for(let e=1;e<t.length;e++)t[e]??(t[e]=t[e-1])}const $=t=>t*180/Math.PI,Jt=t=>{const e=$(Math.atan2(t[1],t[0]));return Qt(e)},Ns={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:t=>(Math.abs(t[0])+Math.abs(t[3]))/2,rotate:Jt,rotateZ:Jt,skewX:t=>$(Math.atan(t[1])),skewY:t=>$(Math.atan(t[2])),skew:t=>(Math.abs(t[1])+Math.abs(t[2]))/2},Qt=t=>(t=t%360,t<0&&(t+=360),t),Ge=Jt,$e=t=>Math.sqrt(t[0]*t[0]+t[1]*t[1]),Xe=t=>Math.sqrt(t[4]*t[4]+t[5]*t[5]),Us={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:$e,scaleY:Xe,scale:t=>($e(t)+Xe(t))/2,rotateX:t=>Qt($(Math.atan2(t[6],t[5]))),rotateY:t=>Qt($(Math.atan2(-t[2],t[0]))),rotateZ:Ge,rotate:Ge,skewX:t=>$(Math.atan(t[4])),skewY:t=>$(Math.atan(t[1])),skew:t=>(Math.abs(t[1])+Math.abs(t[4]))/2};function te(t){return t.includes("scale")?1:0}function ee(t,e){if(!t||t==="none")return te(e);const n=t.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let i,s;if(n)i=Us,s=n;else{const a=t.match(/^matrix\(([-\d.e\s,]+)\)$/u);i=Ns,s=a}if(!s)return te(e);const r=i[e],o=s[1].split(",").map(Ks);return typeof r=="function"?r(o):o[r]}const Ws=(t,e)=>{const{transform:n="none"}=getComputedStyle(t);return ee(n,e)};function Ks(t){return parseFloat(t.trim())}const it=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],st=new Set(it),Ye=t=>t===ve||t===p,Hs=new Set(["x","y","z"]),zs=it.filter(t=>!Hs.has(t));function Gs(t){const e=[];return zs.forEach(n=>{const i=t.getValue(n);i!==void 0&&(e.push([n,i.get()]),i.set(n.startsWith("scale")?1:0))}),e}const U={width:({x:t},{paddingLeft:e="0",paddingRight:n="0",boxSizing:i})=>{const s=t.max-t.min;return i==="border-box"?s:s-parseFloat(e)-parseFloat(n)},height:({y:t},{paddingTop:e="0",paddingBottom:n="0",boxSizing:i})=>{const s=t.max-t.min;return i==="border-box"?s:s-parseFloat(e)-parseFloat(n)},top:(t,{top:e})=>parseFloat(e),left:(t,{left:e})=>parseFloat(e),bottom:({y:t},{top:e})=>parseFloat(e)+(t.max-t.min),right:({x:t},{left:e})=>parseFloat(e)+(t.max-t.min),x:(t,{transform:e})=>ee(e,"x"),y:(t,{transform:e})=>ee(e,"y")};U.translateX=U.x;U.translateY=U.y;const Y=new Set;let ne=!1,ie=!1,se=!1;function hi(){if(ie){const t=Array.from(Y).filter(i=>i.needsMeasurement),e=new Set(t.map(i=>i.element)),n=new Map;e.forEach(i=>{const s=Gs(i);s.length&&(n.set(i,s),i.render())}),t.forEach(i=>i.measureInitialState()),e.forEach(i=>{i.render();const s=n.get(i);s&&s.forEach(([r,o])=>{var a;(a=i.getValue(r))==null||a.set(o)})}),t.forEach(i=>i.measureEndState()),t.forEach(i=>{i.suspendedScrollY!==void 0&&window.scrollTo(0,i.suspendedScrollY)})}ie=!1,ne=!1,Y.forEach(t=>t.complete(se)),Y.clear()}function fi(){Y.forEach(t=>{t.readKeyframes(),t.needsMeasurement&&(ie=!0)})}function $s(){se=!0,fi(),hi(),se=!1}class Pe{constructor(e,n,i,s,r,o=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...e],this.onComplete=n,this.name=i,this.motionValue=s,this.element=r,this.isAsync=o}scheduleResolve(){this.state="scheduled",this.isAsync?(Y.add(this),ne||(ne=!0,S.read(fi),S.resolveKeyframes(hi))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:e,name:n,element:i,motionValue:s}=this;if(e[0]===null){const r=s==null?void 0:s.get(),o=e[e.length-1];if(r!==void 0)e[0]=r;else if(i&&n){const a=i.readValue(n,o);a!=null&&(e[0]=a)}e[0]===void 0&&(e[0]=o),s&&r===void 0&&s.set(e[0])}Os(e)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(e=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,e),Y.delete(this)}cancel(){this.state==="scheduled"&&(Y.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const Xs=t=>t.startsWith("--");function di(t,e,n){Xs(e)?t.style.setProperty(e,n):t.style[e]=n}const Ys={};function mi(t,e){const n=ci(t);return()=>Ys[e]??n()}const _s=mi(()=>window.ScrollTimeline!==void 0,"scrollTimeline"),pi=mi(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),at=([t,e,n,i])=>`cubic-bezier(${t}, ${e}, ${n}, ${i})`,_e={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-inLine truncated
@@ -1 +1 @@
import{r as e}from"./index-Drgd7k5E.js";import{M as a,f as u,c}from"./CountUp-Omm8FlHl.js";function p(r){const t=e.useRef(0),{isStatic:o}=e.useContext(a);e.useEffect(()=>{if(o)return;const n=({timestamp:i,delta:s})=>{t.current||(t.current=i),r(i-t.current,s)};return u.update(n,!0),()=>c(n)},[r])}export{p as u};
import{r as e}from"./index-IL0bf27q.js";import{M as a,f as u,c}from"./CountUp-BYW6-_IC.js";function p(r){const t=e.useRef(0),{isStatic:o}=e.useContext(a);e.useEffect(()=>{if(o)return;const n=({timestamp:i,delta:s})=>{t.current||(t.current=i),r(i-t.current,s)};return u.update(n,!0),()=>c(n)},[r])}export{p as u};
@@ -1,4 +1,4 @@
import{r as l,m as q,n as B}from"./index-Drgd7k5E.js";const H=(e,t,r,i)=>{var n,d,y,g;const s=[r,{code:t,...i||{}}];if((d=(n=e==null?void 0:e.services)==null?void 0:n.logger)!=null&&d.forward)return e.services.logger.forward(s,"warn","react-i18next::",!0);p(s[0])&&(s[0]=`react-i18next:: ${s[0]}`),(g=(y=e==null?void 0:e.services)==null?void 0:y.logger)!=null&&g.warn?e.services.logger.warn(...s):console!=null&&console.warn&&console.warn(...s)},z={},U=(e,t,r,i)=>{p(r)&&z[r]||(p(r)&&(z[r]=new Date),H(e,t,r,i))},F=(e,t)=>()=>{if(e.isInitialized)t();else{const r=()=>{setTimeout(()=>{e.off("initialized",r)},0),t()};e.on("initialized",r)}},O=(e,t,r)=>{e.loadNamespaces(t,F(e,r))},A=(e,t,r,i)=>{if(p(r)&&(r=[r]),e.options.preload&&e.options.preload.indexOf(t)>-1)return O(e,r,i);r.forEach(s=>{e.options.ns.indexOf(s)<0&&e.options.ns.push(s)}),e.loadLanguages(t,F(e,i))},J=(e,t,r={})=>!t.languages||!t.languages.length?(U(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:r.lng,precheck:(i,s)=>{if(r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&i.services.backendConnector.backend&&i.isLanguageChangingTo&&!s(i.isLanguageChangingTo,e))return!1}}),p=e=>typeof e=="string",K=e=>typeof e=="object"&&e!==null,Q=l.createContext();class V{constructor(){this.usedNamespaces={}}addUsedNamespaces(t){t.forEach(r=>{this.usedNamespaces[r]||(this.usedNamespaces[r]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}var M={exports:{}},$={};/**
import{r as l,m as q,n as B}from"./index-IL0bf27q.js";const H=(e,t,r,i)=>{var n,d,y,g;const s=[r,{code:t,...i||{}}];if((d=(n=e==null?void 0:e.services)==null?void 0:n.logger)!=null&&d.forward)return e.services.logger.forward(s,"warn","react-i18next::",!0);p(s[0])&&(s[0]=`react-i18next:: ${s[0]}`),(g=(y=e==null?void 0:e.services)==null?void 0:y.logger)!=null&&g.warn?e.services.logger.warn(...s):console!=null&&console.warn&&console.warn(...s)},z={},U=(e,t,r,i)=>{p(r)&&z[r]||(p(r)&&(z[r]=new Date),H(e,t,r,i))},F=(e,t)=>()=>{if(e.isInitialized)t();else{const r=()=>{setTimeout(()=>{e.off("initialized",r)},0),t()};e.on("initialized",r)}},O=(e,t,r)=>{e.loadNamespaces(t,F(e,r))},A=(e,t,r,i)=>{if(p(r)&&(r=[r]),e.options.preload&&e.options.preload.indexOf(t)>-1)return O(e,r,i);r.forEach(s=>{e.options.ns.indexOf(s)<0&&e.options.ns.push(s)}),e.loadLanguages(t,F(e,i))},J=(e,t,r={})=>!t.languages||!t.languages.length?(U(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:r.lng,precheck:(i,s)=>{if(r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&i.services.backendConnector.backend&&i.isLanguageChangingTo&&!s(i.isLanguageChangingTo,e))return!1}}),p=e=>typeof e=="string",K=e=>typeof e=="object"&&e!==null,Q=l.createContext();class V{constructor(){this.usedNamespaces={}}addUsedNamespaces(t){t.forEach(r=>{this.usedNamespaces[r]||(this.usedNamespaces[r]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}var M={exports:{}},$={};/**
* @license React
* use-sync-external-store-shim.production.js
*
+3 -3
View File
@@ -5,10 +5,10 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Noto+Sans+SC:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
<title>AI Platform</title>
<script type="module" crossorigin src="/assets/index-Drgd7k5E.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-BBpo0ZPm.css">
<script type="module" crossorigin src="/assets/index-IL0bf27q.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-B7Z9nRTh.css">
</head>
<body class="bg-black text-white antialiased">
<div id="root"></div>
+1 -1
View File
@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Noto+Sans+SC:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
<title>AI Platform</title>
</head>
<body class="bg-black text-white antialiased">
+25
View File
@@ -0,0 +1,25 @@
import { useTranslation } from 'react-i18next';
export default function LanguageSwitch({ className = '' }) {
const { i18n } = useTranslation();
const isZh = i18n.language?.startsWith('zh');
const toggle = () => {
i18n.changeLanguage(isZh ? 'en' : 'zh');
};
return (
<button
onClick={toggle}
className={`flex items-center gap-1.5 px-2.5 py-1 rounded-md text-xs transition-colors ${className}`}
aria-label="Switch language"
>
<svg className="w-3.5 h-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth={1.5}>
<path strokeLinecap="round" strokeLinejoin="round" d="M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z" />
<path strokeLinecap="round" strokeLinejoin="round" d="M3.6 9h16.8M3.6 15h16.8" />
<path strokeLinecap="round" strokeLinejoin="round" d="M12 3a15.3 15.3 0 0 1 4 9 15.3 15.3 0 0 1-4 9 15.3 15.3 0 0 1-4-9 15.3 15.3 0 0 1 4-9Z" />
</svg>
<span>{isZh ? 'EN' : '中文'}</span>
</button>
);
}
+26 -1
View File
@@ -23,10 +23,35 @@ const themeRegistry = {
},
};
// Full-screen loading spinner shown while site info is being fetched
// Prevents theme flash (rendering default theme before API returns the real one)
function ThemeLoading() {
return (
<div className="flex items-center justify-center min-h-screen bg-gray-950">
<div className="w-8 h-8 border-2 border-white/20 border-t-white/70 rounded-full animate-spin" />
</div>
);
}
export function ThemeProvider({ children }) {
const { site } = useSite();
const { site, loading } = useSite();
// Block rendering until site info is loaded so we know the correct theme
if (loading) {
return <ThemeLoading />;
}
const themeName = site?.theme_template || 'starter';
return (
<ThemeInner themeName={themeName}>
{children}
</ThemeInner>
);
}
// Inner component to keep useMemo stable after loading completes
function ThemeInner({ themeName, children }) {
const theme = useMemo(() => {
const t = themeRegistry[themeName] || themeRegistry.starter;
return { name: themeName, ...t };
+1 -1
View File
@@ -13,7 +13,7 @@ i18n
fallbackLng: 'en',
interpolation: { escapeValue: false },
detection: {
order: ['navigator', 'htmlTag', 'querystring'],
order: ['localStorage', 'navigator', 'htmlTag', 'querystring'],
caches: ['localStorage'],
},
});
+64 -49
View File
@@ -27,10 +27,10 @@ export default function DarkHome() {
{/* Particles Background */}
<div className="absolute inset-0 h-[800px] overflow-hidden pointer-events-none">
<Particles
particleColors={['#00ff88', '#00ccff', '#ff0055']}
particleCount={80}
particleColors={['#10b981', '#06b6d4', '#8b5cf6']}
particleCount={60}
particleSpread={15}
speed={0.3}
speed={0.2}
particleBaseSize={80}
moveParticlesOnHover={true}
alphaParticles={false}
@@ -41,38 +41,39 @@ export default function DarkHome() {
{/* Hero Section */}
<section className="relative max-w-7xl mx-auto px-6 pt-28 pb-24">
<div className="text-center max-w-4xl mx-auto">
{/* Terminal-style header */}
<div className="inline-flex items-center gap-2 px-4 py-1.5 rounded-full border border-green-500/30 bg-green-500/5 mb-8">
<span className="w-2 h-2 rounded-full bg-green-500 animate-pulse" />
<span className="text-xs font-mono text-green-400 uppercase tracking-wider">System Online</span>
{/* Terminal badge */}
<div className="inline-flex items-center gap-2 px-4 py-1.5 rounded-full border border-emerald-500/20 bg-emerald-500/5 mb-8">
<span className="w-2 h-2 rounded-full bg-emerald-500 animate-pulse" />
<span className="text-xs font-mono text-emerald-400/80 uppercase tracking-wider">System Online</span>
</div>
<h1 className="text-5xl md:text-7xl font-heading font-extrabold text-white leading-tight mb-4">
<h1 className="text-5xl md:text-7xl font-extrabold text-white leading-tight mb-6 tracking-tight">
<DecryptedText
text={site?.name || t('home.defaultHeroTitle')}
speed={60}
maxIterations={10}
revealDirection="start"
className="text-white"
encryptedClassName="text-green-500/40"
encryptedClassName="text-emerald-500/30"
/>
</h1>
<p className="text-lg md:text-xl text-neutral-400 max-w-2xl mx-auto mb-10 font-mono">
{'> '}{t('home.heroSubtitle')}
<p className="text-lg md:text-xl text-neutral-400 max-w-2xl mx-auto mb-10 leading-relaxed">
<span className="text-emerald-400/60 font-mono">{'> '}</span>
{t('home.heroSubtitle')}
</p>
<div className="flex items-center justify-center gap-4">
{user ? (
<Link to="/dashboard" className="px-8 py-3.5 rounded-lg bg-green-500 text-black font-bold text-base hover:bg-green-400 transition-all font-mono shadow-lg shadow-green-500/20">
<Link to="/dashboard" className="px-8 py-3.5 rounded-lg bg-emerald-500 text-black font-bold text-base hover:bg-emerald-400 transition-all font-mono shadow-lg shadow-emerald-500/20">
{t('home.goToDashboard')}
</Link>
) : (
<>
<Link to="/register" className="px-8 py-3.5 rounded-lg bg-green-500 text-black font-bold text-base hover:bg-green-400 transition-all font-mono shadow-lg shadow-green-500/20">
<Link to="/register" className="px-8 py-3.5 rounded-lg bg-emerald-500 text-black font-bold text-base hover:bg-emerald-400 transition-all font-mono shadow-lg shadow-emerald-500/20">
{t('home.getStarted')}
</Link>
<Link to="/pricing" className="px-8 py-3.5 rounded-lg border border-green-500/30 text-green-400 font-bold text-base hover:bg-green-500/10 transition-all font-mono">
<Link to="/pricing" className="px-8 py-3.5 rounded-lg border border-emerald-500/20 text-emerald-400 font-medium text-base hover:bg-emerald-500/10 transition-all font-mono">
{t('home.viewPricing')}
</Link>
</>
@@ -80,18 +81,18 @@ export default function DarkHome() {
</div>
</div>
{/* Stats — terminal style */}
{/* Stats */}
<div className="grid grid-cols-3 gap-4 max-w-2xl mx-auto mt-20">
{[
{ label: t('home.aiModels'), value: enabledModels.length || 50, suffix: '+', color: 'text-green-400 border-green-500/20' },
{ label: t('home.uptime'), value: 99.9, suffix: '%', color: 'text-cyan-400 border-cyan-500/20' },
{ label: t('home.latency'), value: 50, suffix: 'ms', prefix: '<', color: 'text-pink-400 border-pink-500/20' },
{ label: t('home.aiModels'), value: enabledModels.length || 50, suffix: '+', color: 'text-emerald-400', border: 'border-emerald-500/15' },
{ label: t('home.uptime'), value: 99.9, suffix: '%', color: 'text-cyan-400', border: 'border-cyan-500/15' },
{ label: t('home.latency'), value: 50, suffix: 'ms', prefix: '<', color: 'text-violet-400', border: 'border-violet-500/15' },
].map((s, i) => (
<div key={i} className={`text-center p-4 rounded-lg bg-black/60 border ${s.color} font-mono`}>
<div className={`text-3xl font-bold ${s.color.split(' ')[0]}`}>
<div key={i} className={`text-center p-5 rounded-lg bg-[#030712]/60 border ${s.border} font-mono backdrop-blur-sm`}>
<div className={`text-3xl font-bold ${s.color}`}>
{s.prefix}<CountUp from={0} to={s.value} duration={2} />{s.suffix}
</div>
<p className="text-xs text-neutral-500 mt-1 uppercase tracking-wider">{s.label}</p>
<p className="text-xs text-neutral-500 mt-1.5 uppercase tracking-wider">{s.label}</p>
</div>
))}
</div>
@@ -100,21 +101,35 @@ export default function DarkHome() {
{/* Features Section */}
<section className="relative max-w-7xl mx-auto px-6 py-20">
<div className="text-center mb-14">
<h2 className="text-3xl font-heading font-bold text-white mb-3">{t('home.whyChooseUs')}</h2>
<p className="text-neutral-500 font-mono">{t('home.whyChooseUsDesc')}</p>
<h2 className="text-3xl font-bold text-white mb-3">{t('home.whyChooseUs')}</h2>
<p className="text-neutral-500">{t('home.whyChooseUsDesc')}</p>
</div>
<div className="grid md:grid-cols-3 gap-6">
{[
{ icon: '⚡', title: t('home.lightningFast'), desc: t('home.lightningFastDesc'), accent: 'green' },
{ icon: '🛡️', title: t('home.securePrivate'), desc: t('home.securePrivateDesc'), accent: 'cyan' },
{ icon: '📊', title: t('home.payAsYouGo'), desc: t('home.payAsYouGoDesc'), accent: 'pink' },
{ icon: (
<svg className="w-5 h-5 text-emerald-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M13 10V3L4 14h7v7l9-11h-7z" />
</svg>
), title: t('home.lightningFast'), desc: t('home.lightningFastDesc'), accent: 'emerald' },
{ icon: (
<svg className="w-5 h-5 text-cyan-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z" />
</svg>
), title: t('home.securePrivate'), desc: t('home.securePrivateDesc'), accent: 'cyan' },
{ icon: (
<svg className="w-5 h-5 text-violet-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
), title: t('home.payAsYouGo'), desc: t('home.payAsYouGoDesc'), accent: 'violet' },
].map((f, i) => (
<div key={i} className={`p-6 rounded-xl bg-black/40 border border-${f.accent}-500/20 hover:border-${f.accent}-500/40 transition-all group`}>
<div className="text-2xl mb-3">{f.icon}</div>
<h3 className={`text-lg font-semibold text-${f.accent}-400 mb-2 font-mono`}>{f.title}</h3>
<div key={i} className={`p-6 rounded-xl bg-[#030712]/60 border border-${f.accent}-500/10 hover:border-${f.accent}-500/25 transition-all group backdrop-blur-sm`}>
<div className={`w-10 h-10 rounded-lg bg-${f.accent}-500/10 flex items-center justify-center mb-4`}>
{f.icon}
</div>
<h3 className="text-lg font-semibold text-white mb-2">{f.title}</h3>
<p className="text-sm text-neutral-400 leading-relaxed">{f.desc}</p>
<div className={`h-0.5 w-0 group-hover:w-full bg-${f.accent}-500/50 transition-all duration-500 mt-4`} />
<div className={`h-px w-0 group-hover:w-full bg-gradient-to-r from-${f.accent}-500/50 to-transparent transition-all duration-500 mt-4`} />
</div>
))}
</div>
@@ -124,15 +139,15 @@ export default function DarkHome() {
{enabledModels.length > 0 && (
<section className="relative max-w-7xl mx-auto px-6 py-20">
<div className="text-center mb-12">
<h2 className="text-3xl font-heading font-bold text-white mb-3">{t('home.availableModels')}</h2>
<p className="text-neutral-500 font-mono">{t('home.availableModelsDesc', { count: enabledModels.length })}</p>
<h2 className="text-3xl font-bold text-white mb-3">{t('home.availableModels')}</h2>
<p className="text-neutral-500">{t('home.availableModelsDesc', { count: enabledModels.length })}</p>
</div>
<div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-2">
{enabledModels.slice(0, 12).map((m, i) => (
<div key={m.id || i} className="px-4 py-3 rounded-lg bg-black/40 border border-green-500/10 flex items-center gap-3 hover:border-green-500/30 transition-colors group font-mono">
<span className="text-green-500 text-xs">$</span>
<span className="text-sm text-neutral-400 group-hover:text-green-400 transition-colors truncate">
<div key={m.id || i} className="px-4 py-3 rounded-lg bg-[#030712]/60 border border-emerald-500/[0.08] flex items-center gap-3 hover:border-emerald-500/20 transition-colors group font-mono backdrop-blur-sm">
<span className="text-emerald-500/60 text-xs">$</span>
<span className="text-sm text-neutral-400 group-hover:text-emerald-400 transition-colors truncate">
{m.display_name || m.model_name}
</span>
</div>
@@ -141,7 +156,7 @@ export default function DarkHome() {
{enabledModels.length > 12 && (
<div className="text-center mt-6">
<Link to="/pricing" className="text-sm text-green-400 hover:text-green-300 transition-colors font-mono">
<Link to="/pricing" className="text-sm text-emerald-400 hover:text-emerald-300 transition-colors font-mono">
{t('home.viewAllModels', { count: enabledModels.length })} &rarr;
</Link>
</div>
@@ -153,23 +168,23 @@ export default function DarkHome() {
{packages.length > 0 && (
<section className="relative max-w-7xl mx-auto px-6 py-20">
<div className="text-center mb-12">
<h2 className="text-3xl font-heading font-bold text-white mb-3">{t('home.plansPackages')}</h2>
<p className="text-neutral-500 font-mono">{t('home.choosePlan')}</p>
<h2 className="text-3xl font-bold text-white mb-3">{t('home.plansPackages')}</h2>
<p className="text-neutral-500">{t('home.choosePlan')}</p>
</div>
<div className="grid md:grid-cols-3 gap-6 max-w-4xl mx-auto">
{packages.filter(p => p.enabled).slice(0, 3).map((pkg) => (
<div key={pkg.id} className="rounded-xl p-6 flex flex-col bg-black/40 border border-green-500/10 hover:border-green-500/30 transition-all">
<h3 className="text-lg font-semibold text-white mb-1 font-mono">{pkg.name}</h3>
<div key={pkg.id} className="rounded-xl p-6 flex flex-col bg-[#030712]/60 border border-emerald-500/[0.08] hover:border-emerald-500/20 transition-all backdrop-blur-sm">
<h3 className="text-lg font-semibold text-white mb-1">{pkg.name}</h3>
{pkg.description && <p className="text-sm text-neutral-400 mb-4">{pkg.description}</p>}
<div className="mt-auto pt-4">
<span className="text-3xl font-bold text-green-400 font-mono">${pkg.price}</span>
<span className="text-3xl font-bold text-emerald-400 font-mono">${pkg.price}</span>
{pkg.original_price > pkg.price && (
<span className="text-sm text-neutral-600 line-through ml-2">${pkg.original_price}</span>
)}
{pkg.duration > 0 && <p className="text-xs text-neutral-600 mt-1 font-mono">{t('home.days', { count: pkg.duration })}</p>}
{pkg.duration > 0 && <p className="text-xs text-neutral-600 mt-1">{t('home.days', { count: pkg.duration })}</p>}
</div>
<Link to={user ? '/packages' : '/register'} className="mt-4 py-2.5 rounded-lg bg-green-500/10 border border-green-500/30 text-green-400 font-medium text-sm text-center hover:bg-green-500/20 transition-colors font-mono">
<Link to={user ? '/packages' : '/register'} className="mt-4 py-2.5 rounded-lg bg-emerald-500/10 border border-emerald-500/20 text-emerald-400 font-medium text-sm text-center hover:bg-emerald-500/15 transition-colors font-mono">
{user ? t('home.subscribe') : t('home.getStarted')}
</Link>
</div>
@@ -180,22 +195,22 @@ export default function DarkHome() {
{/* CTA */}
<section className="relative max-w-7xl mx-auto px-6 py-24">
<div className="rounded-xl p-12 text-center bg-black/60 border border-green-500/20 relative overflow-hidden">
<div className="absolute inset-0 bg-gradient-to-r from-green-500/5 via-transparent to-cyan-500/5" />
<div className="rounded-xl p-12 text-center bg-[#030712]/60 border border-emerald-500/[0.08] relative overflow-hidden backdrop-blur-sm">
<div className="absolute inset-0 bg-gradient-to-r from-emerald-500/[0.03] via-transparent to-cyan-500/[0.03]" />
<div className="relative z-10">
<h2 className="text-3xl font-heading font-bold text-white mb-4 font-mono">{t('home.readyToStart')}</h2>
<h2 className="text-3xl font-bold text-white mb-4">{t('home.readyToStart')}</h2>
<p className="text-neutral-400 mb-8 max-w-md mx-auto">{t('home.readyToStartDesc')}</p>
<div className="flex items-center justify-center gap-4">
{user ? (
<Link to="/dashboard" className="px-8 py-3 rounded-lg bg-green-500 text-black font-bold hover:bg-green-400 transition-all font-mono">
<Link to="/dashboard" className="px-8 py-3 rounded-lg bg-emerald-500 text-black font-bold hover:bg-emerald-400 transition-all font-mono">
{t('home.goToDashboard')}
</Link>
) : (
<>
<Link to="/register" className="px-8 py-3 rounded-lg bg-green-500 text-black font-bold hover:bg-green-400 transition-all font-mono">
<Link to="/register" className="px-8 py-3 rounded-lg bg-emerald-500 text-black font-bold hover:bg-emerald-400 transition-all font-mono">
{t('home.createFreeAccount')}
</Link>
<Link to="/login" className="px-8 py-3 rounded-lg border border-green-500/30 text-green-400 font-bold hover:bg-green-500/10 transition-all font-mono">
<Link to="/login" className="px-8 py-3 rounded-lg border border-emerald-500/20 text-emerald-400 font-medium hover:bg-emerald-500/10 transition-all font-mono">
{t('home.signIn')}
</Link>
</>
+21 -18
View File
@@ -3,6 +3,7 @@ import { Outlet, Link, useNavigate, useLocation } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { useAuth } from '../../context/AuthContext';
import { useSite } from '../../context/SiteContext';
import LanguageSwitch from '../../components/LanguageSwitch';
export default function DarkLayout() {
const { t } = useTranslation();
@@ -25,26 +26,26 @@ export default function DarkLayout() {
const visibleNavItems = navItems.filter((n) => !n.auth || user);
return (
<div className="min-h-screen flex flex-col bg-black text-white">
<div className="min-h-screen flex flex-col bg-[#030712] text-white">
{/* Announcement Banner */}
{site?.announcement && (
<div className="bg-green-500/10 border-b border-green-500/20 text-center py-2 px-4">
<p className="text-sm text-green-300 font-mono">{site.announcement}</p>
<div className="bg-emerald-500/5 border-b border-emerald-500/10 text-center py-2 px-4">
<p className="text-sm text-emerald-300/80 font-mono">{site.announcement}</p>
</div>
)}
{/* Header — cyberpunk style */}
<header className="sticky top-0 z-50 backdrop-blur-xl bg-black/80 border-b border-green-500/10">
{/* Header */}
<header className="sticky top-0 z-50 backdrop-blur-xl bg-[#030712]/80 border-b border-emerald-500/[0.08]">
<div className="max-w-7xl mx-auto px-6 h-14 flex items-center justify-between">
<Link to="/" className="flex items-center gap-3 group">
{site?.logo ? (
<img src={site.logo} alt={siteName} className="h-7 w-auto" />
) : (
<div className="w-8 h-8 rounded-md bg-green-500/20 border border-green-500/30 flex items-center justify-center text-green-400 font-bold font-mono text-sm">
<div className="w-8 h-8 rounded bg-emerald-500/10 border border-emerald-500/20 flex items-center justify-center text-emerald-400 font-bold font-mono text-sm">
{siteName.charAt(0)}
</div>
)}
<span className="text-lg font-semibold text-green-400 font-mono group-hover:text-green-300 transition-colors">
<span className="text-base font-semibold text-emerald-400 font-mono group-hover:text-emerald-300 transition-colors tracking-wide">
{siteName}
</span>
</Link>
@@ -56,8 +57,8 @@ export default function DarkLayout() {
to={n.to}
className={`px-3 py-1.5 text-sm font-mono rounded transition-all ${
location.pathname === n.to
? 'text-green-400 bg-green-500/10'
: 'text-neutral-500 hover:text-green-400'
? 'text-emerald-400 bg-emerald-500/10'
: 'text-neutral-500 hover:text-emerald-400'
}`}
>
{n.label}
@@ -65,26 +66,28 @@ export default function DarkLayout() {
))}
</nav>
<div className="flex items-center gap-3">
<div className="flex items-center gap-2">
<LanguageSwitch className="text-neutral-500 hover:text-emerald-400 hover:bg-emerald-500/5 font-mono" />
{user ? (
<div className="flex items-center gap-3">
<span className="text-sm text-neutral-500 font-mono hidden sm:block">{user.display_name || user.username}</span>
<button onClick={async () => { await logout(); navigate('/'); }} className="text-sm text-neutral-500 hover:text-green-400 font-mono transition-colors">
<button onClick={async () => { await logout(); navigate('/'); }} className="text-sm text-neutral-500 hover:text-emerald-400 font-mono transition-colors">
{t('nav.logout')}
</button>
</div>
) : (
<>
<Link to="/login" className="text-sm text-neutral-500 hover:text-green-400 font-mono transition-colors hidden sm:block">
<Link to="/login" className="text-sm text-neutral-500 hover:text-emerald-400 font-mono transition-colors hidden sm:block px-3 py-1.5">
{t('nav.login')}
</Link>
<Link to="/register" className="px-4 py-1.5 rounded-md bg-green-500/10 border border-green-500/30 text-green-400 text-sm font-mono hover:bg-green-500/20 transition-all">
<Link to="/register" className="px-4 py-1.5 rounded bg-emerald-500/10 border border-emerald-500/20 text-emerald-400 text-sm font-mono hover:bg-emerald-500/15 transition-all">
{t('nav.signUp')}
</Link>
</>
)}
<button className="md:hidden p-1.5 rounded hover:bg-white/5" onClick={() => setMobileMenuOpen(!mobileMenuOpen)}>
<svg className="w-5 h-5 text-green-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<svg className="w-5 h-5 text-emerald-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
{mobileMenuOpen ? <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M6 18L18 6M6 6l12 12" /> : <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M4 6h16M4 12h16M4 18h16" />}
</svg>
</button>
@@ -92,11 +95,11 @@ export default function DarkLayout() {
</div>
{mobileMenuOpen && (
<div className="md:hidden border-t border-green-500/10 bg-black/95 backdrop-blur-xl">
<div className="md:hidden border-t border-emerald-500/[0.08] bg-[#030712]/95 backdrop-blur-xl">
<nav className="max-w-7xl mx-auto px-6 py-3 flex flex-col gap-1">
{visibleNavItems.map((n) => (
<Link key={n.to} to={n.to} onClick={() => setMobileMenuOpen(false)}
className={`px-3 py-2 text-sm font-mono rounded transition-colors ${location.pathname === n.to ? 'text-green-400 bg-green-500/10' : 'text-neutral-500 hover:text-green-400'}`}>
className={`px-3 py-2 text-sm font-mono rounded transition-colors ${location.pathname === n.to ? 'text-emerald-400 bg-emerald-500/10' : 'text-neutral-500 hover:text-emerald-400'}`}>
{n.label}
</Link>
))}
@@ -107,11 +110,11 @@ export default function DarkLayout() {
<main className="flex-1"><Outlet /></main>
<footer className="border-t border-green-500/10 mt-auto">
<footer className="border-t border-emerald-500/[0.08] mt-auto">
<div className="max-w-7xl mx-auto px-6 py-6 flex flex-col md:flex-row items-center justify-between gap-4">
<p className="text-xs text-neutral-600 font-mono">&copy; {new Date().getFullYear()} {siteName}</p>
{site?.contact_email && (
<a href={`mailto:${site.contact_email}`} className="text-xs text-neutral-600 hover:text-green-400 font-mono transition-colors">
<a href={`mailto:${site.contact_email}`} className="text-xs text-neutral-600 hover:text-emerald-400 font-mono transition-colors">
{t('nav.contact')}
</a>
)}
+51 -32
View File
@@ -27,33 +27,33 @@ export default function DefaultHome() {
return (
<div className="relative">
{/* Aurora Background */}
<div className="absolute inset-0 h-[700px] overflow-hidden pointer-events-none">
<Aurora colorStops={["#3A29FF", "#FF94B4", "#FF3232"]} blend={0.5} amplitude={1.0} speed={0.5} />
<div className="absolute inset-0 h-[700px] overflow-hidden pointer-events-none opacity-60">
<Aurora colorStops={["#4338ca", "#7c3aed", "#06b6d4"]} blend={0.5} amplitude={1.0} speed={0.5} />
</div>
{/* Hero Section */}
<section className="relative max-w-7xl mx-auto px-6 pt-28 pb-24">
<div className="text-center max-w-4xl mx-auto">
<div className="mb-4">
<h1 className="text-5xl md:text-7xl font-heading font-extrabold text-white leading-tight">
<div className="mb-6">
<h1 className="text-5xl md:text-7xl font-extrabold text-white leading-tight tracking-tight">
<SplitText text={site?.name || t('home.defaultHeroTitle')} delay={80} className="inline" />
</h1>
</div>
<div className="flex items-center justify-center gap-2 text-xl md:text-2xl text-neutral-300 mb-10">
<span>{t('home.heroSubtitle').split('.')[0]}.</span>
</div>
<p className="text-lg md:text-xl text-neutral-400 max-w-2xl mx-auto mb-4 leading-relaxed">
{t('home.heroSubtitle')}
</p>
<div className="flex flex-wrap items-center justify-center gap-3 mb-6">
<div className="flex flex-wrap items-center justify-center gap-3 mb-10">
<RotatingText
texts={[t('home.lightningFast'), t('home.securePrivate'), t('home.payAsYouGo')]}
mainClassName="px-4 py-2 bg-white/10 backdrop-blur-sm rounded-full text-white text-sm font-medium overflow-hidden"
mainClassName="px-4 py-2 bg-white/[0.06] backdrop-blur-sm rounded-full text-white text-sm font-medium overflow-hidden border border-white/[0.08]"
staggerFrom="last"
rotationInterval={3000}
/>
</div>
<div className="flex items-center justify-center gap-4 mt-8">
<div className="flex items-center justify-center gap-4">
{user ? (
<Link to="/dashboard" className="px-8 py-3.5 rounded-2xl bg-white text-black font-semibold text-base hover:bg-neutral-100 transition-all shadow-xl shadow-white/10">
{t('home.goToDashboard')}
@@ -63,7 +63,7 @@ export default function DefaultHome() {
<Link to="/register" className="px-8 py-3.5 rounded-2xl bg-white text-black font-semibold text-base hover:bg-neutral-100 transition-all shadow-xl shadow-white/10">
{t('home.getStarted')}
</Link>
<Link to="/pricing" className="px-8 py-3.5 rounded-2xl border border-white/20 text-white font-semibold text-base hover:bg-white/10 transition-all">
<Link to="/pricing" className="px-8 py-3.5 rounded-2xl border border-white/20 text-white font-medium text-base hover:bg-white/10 transition-all">
{t('home.viewPricing')}
</Link>
</>
@@ -72,13 +72,13 @@ export default function DefaultHome() {
</div>
{/* Stats */}
<div className="grid grid-cols-3 gap-8 max-w-2xl mx-auto mt-24">
<div className="grid grid-cols-3 gap-6 max-w-2xl mx-auto mt-24">
{[
{ value: enabledModels.length || 50, suffix: '+', label: t('home.aiModels') },
{ value: 99.9, suffix: '%', label: t('home.uptime') },
{ value: 50, suffix: 'ms', label: t('home.latency'), prefix: '<' },
].map((stat, i) => (
<div key={i} className="text-center p-4 rounded-2xl bg-white/5 backdrop-blur-sm border border-white/10">
<div key={i} className="text-center p-5 rounded-2xl bg-white/[0.04] backdrop-blur-sm border border-white/[0.08]">
<div className="text-3xl font-bold text-white">
{stat.prefix}<CountUp from={0} to={stat.value} duration={2} />{stat.suffix}
</div>
@@ -91,27 +91,41 @@ export default function DefaultHome() {
{/* Features Section */}
<section className="relative max-w-7xl mx-auto px-6 py-20">
<div className="text-center mb-14">
<h2 className="text-3xl font-heading font-bold text-white mb-3">{t('home.whyChooseUs')}</h2>
<h2 className="text-3xl font-bold text-white mb-3">{t('home.whyChooseUs')}</h2>
<p className="text-neutral-400">{t('home.whyChooseUsDesc')}</p>
</div>
<div className="grid md:grid-cols-3 gap-8">
<div className="grid md:grid-cols-3 gap-6">
{[
{ icon: '⚡', title: t('home.lightningFast'), desc: t('home.lightningFastDesc'), color: 'from-yellow-500/20 to-orange-500/20' },
{ icon: '🔒', title: t('home.securePrivate'), desc: t('home.securePrivateDesc'), color: 'from-blue-500/20 to-cyan-500/20' },
{ icon: '💰', title: t('home.payAsYouGo'), desc: t('home.payAsYouGoDesc'), color: 'from-green-500/20 to-emerald-500/20' },
{ icon: (
<svg className="w-6 h-6 text-violet-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M13 10V3L4 14h7v7l9-11h-7z" />
</svg>
), title: t('home.lightningFast'), desc: t('home.lightningFastDesc'), gradient: 'from-violet-500/10 to-blue-500/10', border: 'border-violet-500/20' },
{ icon: (
<svg className="w-6 h-6 text-blue-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z" />
</svg>
), title: t('home.securePrivate'), desc: t('home.securePrivateDesc'), gradient: 'from-blue-500/10 to-cyan-500/10', border: 'border-blue-500/20' },
{ icon: (
<svg className="w-6 h-6 text-cyan-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
), title: t('home.payAsYouGo'), desc: t('home.payAsYouGoDesc'), gradient: 'from-cyan-500/10 to-teal-500/10', border: 'border-cyan-500/20' },
].map((f, i) => (
<TiltedCard
key={i}
rotateAmplitude={8}
scaleOnHover={1.03}
rotateAmplitude={6}
scaleOnHover={1.02}
borderRadius="16px"
className="w-full"
>
<div className={`p-6 rounded-2xl bg-gradient-to-br ${f.color} border border-white/10 h-full`}>
<div className="text-3xl mb-4">{f.icon}</div>
<div className={`p-6 rounded-2xl bg-gradient-to-br ${f.gradient} border ${f.border} h-full`}>
<div className="w-12 h-12 rounded-xl bg-white/[0.06] flex items-center justify-center mb-4">
{f.icon}
</div>
<h3 className="text-lg font-semibold text-white mb-2">{f.title}</h3>
<p className="text-sm text-neutral-300 leading-relaxed">{f.desc}</p>
<p className="text-sm text-neutral-400 leading-relaxed">{f.desc}</p>
</div>
</TiltedCard>
))}
@@ -122,13 +136,13 @@ export default function DefaultHome() {
{enabledModels.length > 0 && (
<section className="relative max-w-7xl mx-auto px-6 py-20">
<div className="text-center mb-12">
<h2 className="text-3xl font-heading font-bold text-white mb-3">{t('home.availableModels')}</h2>
<h2 className="text-3xl font-bold text-white mb-3">{t('home.availableModels')}</h2>
<p className="text-neutral-400">{t('home.availableModelsDesc', { count: enabledModels.length })}</p>
</div>
<div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-3">
{enabledModels.slice(0, 12).map((m, i) => (
<div key={m.id || i} className="px-4 py-3 rounded-xl bg-white/5 border border-white/10 flex items-center gap-3 hover:bg-white/10 transition-colors group">
<div key={m.id || i} className="px-4 py-3 rounded-xl bg-white/[0.03] border border-white/[0.06] flex items-center gap-3 hover:bg-white/[0.06] transition-colors group">
<div className="w-2 h-2 rounded-full bg-green-400 flex-shrink-0" />
<span className="text-sm font-mono text-neutral-300 group-hover:text-white transition-colors truncate">
{m.display_name || m.model_name}
@@ -151,15 +165,16 @@ export default function DefaultHome() {
{packages.length > 0 && (
<section className="relative max-w-7xl mx-auto px-6 py-20">
<div className="text-center mb-12">
<h2 className="text-3xl font-heading font-bold text-white mb-3">{t('home.plansPackages')}</h2>
<h2 className="text-3xl font-bold text-white mb-3">{t('home.plansPackages')}</h2>
<p className="text-neutral-400">{t('home.choosePlan')}</p>
</div>
<div className="grid md:grid-cols-3 gap-6 max-w-4xl mx-auto">
{packages.filter(p => p.enabled).slice(0, 3).map((pkg, i) => (
<div key={pkg.id} className={`rounded-2xl p-6 flex flex-col border transition-all hover:scale-[1.02] ${
i === 1 ? 'bg-white/10 border-white/20 shadow-xl' : 'bg-white/5 border-white/10'
i === 1 ? 'bg-white/[0.06] border-white/[0.12] shadow-xl shadow-blue-500/5' : 'bg-white/[0.03] border-white/[0.06]'
}`}>
{i === 1 && <span className="text-xs text-blue-400 font-medium mb-2 uppercase tracking-wider">{t('home.popular') || 'Popular'}</span>}
<h3 className="text-lg font-semibold text-white mb-1">{pkg.name}</h3>
{pkg.description && <p className="text-sm text-neutral-400 mb-4">{pkg.description}</p>}
<div className="mt-auto pt-4">
@@ -171,7 +186,11 @@ export default function DefaultHome() {
</div>
{pkg.duration > 0 && <p className="text-xs text-neutral-500 mt-1">{t('home.days', { count: pkg.duration })}</p>}
</div>
<Link to={user ? '/packages' : '/register'} className="mt-4 py-2.5 rounded-xl bg-white text-black font-medium text-sm text-center hover:bg-neutral-100 transition-colors">
<Link to={user ? '/packages' : '/register'} className={`mt-4 py-2.5 rounded-xl font-medium text-sm text-center transition-colors ${
i === 1
? 'bg-white text-black hover:bg-neutral-100'
: 'bg-white/[0.06] text-white border border-white/[0.08] hover:bg-white/[0.1]'
}`}>
{user ? t('home.subscribe') : t('home.getStarted')}
</Link>
</div>
@@ -182,10 +201,10 @@ export default function DefaultHome() {
{/* CTA Section */}
<section className="relative max-w-7xl mx-auto px-6 py-24">
<div className="rounded-3xl p-12 text-center relative overflow-hidden bg-gradient-to-br from-blue-600/20 via-purple-600/20 to-pink-600/20 border border-white/10">
<div className="rounded-3xl p-12 text-center relative overflow-hidden bg-gradient-to-br from-violet-600/10 via-blue-600/10 to-cyan-600/10 border border-white/[0.08]">
<div className="relative z-10">
<h2 className="text-3xl font-heading font-bold text-white mb-4">{t('home.readyToStart')}</h2>
<p className="text-neutral-300 mb-8 max-w-md mx-auto">{t('home.readyToStartDesc')}</p>
<h2 className="text-3xl font-bold text-white mb-4">{t('home.readyToStart')}</h2>
<p className="text-neutral-400 mb-8 max-w-md mx-auto">{t('home.readyToStartDesc')}</p>
<div className="flex items-center justify-center gap-4">
{user ? (
<Link to="/dashboard" className="px-8 py-3 rounded-2xl bg-white text-black font-semibold hover:bg-neutral-100 transition-all">
@@ -196,7 +215,7 @@ export default function DefaultHome() {
<Link to="/register" className="px-8 py-3 rounded-2xl bg-white text-black font-semibold hover:bg-neutral-100 transition-all">
{t('home.createFreeAccount')}
</Link>
<Link to="/login" className="px-8 py-3 rounded-2xl border border-white/20 text-white font-semibold hover:bg-white/10 transition-all">
<Link to="/login" className="px-8 py-3 rounded-2xl border border-white/20 text-white font-medium hover:bg-white/10 transition-all">
{t('home.signIn')}
</Link>
</>
+15 -12
View File
@@ -3,6 +3,7 @@ import { Outlet, Link, useNavigate, useLocation } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { useAuth } from '../../context/AuthContext';
import { useSite } from '../../context/SiteContext';
import LanguageSwitch from '../../components/LanguageSwitch';
export default function DefaultLayout() {
const { t } = useTranslation();
@@ -25,23 +26,23 @@ export default function DefaultLayout() {
const visibleNavItems = navItems.filter((n) => !n.auth || user);
return (
<div className="min-h-screen flex flex-col bg-[#0a0a1a]">
<div className="min-h-screen flex flex-col bg-[#09090b]">
{/* Announcement Banner */}
{site?.announcement && (
<div className="bg-gradient-to-r from-blue-600/20 via-purple-600/20 to-pink-600/20 border-b border-white/10 text-center py-2.5 px-4">
<p className="text-sm text-neutral-200">{site.announcement}</p>
<div className="bg-gradient-to-r from-violet-600/10 via-blue-600/10 to-cyan-600/10 border-b border-white/[0.06] text-center py-2.5 px-4">
<p className="text-sm text-neutral-300">{site.announcement}</p>
</div>
)}
{/* Header */}
<header className="sticky top-0 z-50 backdrop-blur-2xl bg-[#0a0a1a]/80 border-b border-white/[0.08]">
<header className="sticky top-0 z-50 backdrop-blur-2xl bg-[#09090b]/80 border-b border-white/[0.06]">
<div className="max-w-7xl mx-auto px-6 h-16 flex items-center justify-between">
{/* Logo */}
<Link to="/" className="flex items-center gap-3 group">
{site?.logo ? (
<img src={site.logo} alt={siteName} className="h-8 w-auto" />
) : (
<div className="w-9 h-9 rounded-xl bg-gradient-to-br from-blue-500 via-purple-500 to-pink-500 flex items-center justify-center text-white font-bold text-sm shadow-lg shadow-purple-500/20">
<div className="w-9 h-9 rounded-xl bg-gradient-to-br from-violet-500 via-blue-500 to-cyan-500 flex items-center justify-center text-white font-bold text-sm shadow-lg shadow-blue-500/20">
{siteName.charAt(0)}
</div>
)}
@@ -51,14 +52,14 @@ export default function DefaultLayout() {
</Link>
{/* Desktop Nav */}
<nav className="hidden md:flex items-center gap-1 bg-white/5 rounded-full px-2 py-1">
<nav className="hidden md:flex items-center gap-1 bg-white/[0.04] rounded-full px-1.5 py-1 border border-white/[0.06]">
{visibleNavItems.map((n) => (
<Link
key={n.to}
to={n.to}
className={`px-4 py-1.5 text-sm rounded-full transition-all ${
location.pathname === n.to
? 'text-white bg-white/10'
? 'text-white bg-white/[0.08]'
: 'text-neutral-400 hover:text-white'
}`}
>
@@ -67,8 +68,10 @@ export default function DefaultLayout() {
))}
</nav>
{/* Auth + Mobile toggle */}
<div className="flex items-center gap-3">
{/* Auth + Lang + Mobile toggle */}
<div className="flex items-center gap-2">
<LanguageSwitch className="text-neutral-400 hover:text-white hover:bg-white/5" />
{user ? (
<div className="flex items-center gap-3">
<span className="text-sm text-neutral-400 hidden sm:block">
@@ -83,7 +86,7 @@ export default function DefaultLayout() {
</div>
) : (
<>
<Link to="/login" className="text-sm text-neutral-300 hover:text-white transition-colors px-3 py-1.5 hidden sm:block">
<Link to="/login" className="text-sm text-neutral-400 hover:text-white transition-colors px-3 py-1.5 hidden sm:block">
{t('nav.login')}
</Link>
<Link to="/register" className="px-5 py-2 rounded-full bg-white text-black text-sm font-medium hover:bg-neutral-100 transition-all">
@@ -109,7 +112,7 @@ export default function DefaultLayout() {
</div>
{mobileMenuOpen && (
<div className="md:hidden border-t border-white/[0.08] bg-[#0a0a1a]/95 backdrop-blur-2xl">
<div className="md:hidden border-t border-white/[0.06] bg-[#09090b]/95 backdrop-blur-2xl">
<nav className="max-w-7xl mx-auto px-6 py-3 flex flex-col gap-1">
{visibleNavItems.map((n) => (
<Link
@@ -134,7 +137,7 @@ export default function DefaultLayout() {
<Outlet />
</main>
<footer className="border-t border-white/[0.08] mt-auto bg-[#0a0a1a]">
<footer className="border-t border-white/[0.06] mt-auto bg-[#09090b]">
<div className="max-w-7xl mx-auto px-6 py-8 flex flex-col md:flex-row items-center justify-between gap-4">
<p className="text-sm text-neutral-500">&copy; {new Date().getFullYear()} {siteName}.</p>
<div className="flex items-center gap-4">
+4 -1
View File
@@ -3,6 +3,7 @@ import { Outlet, Link, useNavigate, useLocation } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { useAuth } from '../../context/AuthContext';
import { useSite } from '../../context/SiteContext';
import LanguageSwitch from '../../components/LanguageSwitch';
export default function MinimalLayout() {
const { t } = useTranslation();
@@ -63,7 +64,9 @@ export default function MinimalLayout() {
))}
</nav>
<div className="flex items-center gap-4">
<div className="flex items-center gap-3">
<LanguageSwitch className="text-neutral-500 hover:text-white hover:bg-white/5" />
{user ? (
<div className="flex items-center gap-3">
<span className="text-sm text-neutral-500 hidden sm:block">{user.display_name || user.username}</span>
+6 -7
View File
@@ -9,7 +9,6 @@ import BlurText from '../../components/bits/BlurText';
import SpotlightCard from '../../components/bits/SpotlightCard';
import CountUp from '../../components/bits/CountUp';
import StarBorder from '../../components/bits/StarBorder';
import ShinyText from '../../components/bits/ShinyText';
export default function StarterHome() {
const { t } = useTranslation();
@@ -40,7 +39,7 @@ export default function StarterHome() {
<GradientText
colors={['#818cf8', '#c084fc', '#f472b6', '#818cf8']}
animationSpeed={6}
className="text-5xl md:text-7xl font-heading font-extrabold leading-tight"
className="text-5xl md:text-7xl font-extrabold leading-tight tracking-tight"
>
{site?.name || t('home.defaultHeroTitle')}
</GradientText>
@@ -48,7 +47,7 @@ export default function StarterHome() {
<BlurText
text={t('home.heroSubtitle')}
className="text-lg md:text-xl text-neutral-400 max-w-2xl mx-auto mb-10"
className="text-lg md:text-xl text-neutral-400 max-w-2xl mx-auto mb-10 leading-relaxed"
delay={50}
animateBy="words"
/>
@@ -99,7 +98,7 @@ export default function StarterHome() {
{/* Features Section */}
<section className="relative max-w-7xl mx-auto px-6 py-20">
<div className="text-center mb-12">
<h2 className="text-3xl font-heading font-bold text-white mb-3">{t('home.whyChooseUs')}</h2>
<h2 className="text-3xl font-bold text-white mb-3">{t('home.whyChooseUs')}</h2>
<p className="text-neutral-400">{t('home.whyChooseUsDesc')}</p>
</div>
@@ -140,7 +139,7 @@ export default function StarterHome() {
{enabledModels.length > 0 && (
<section className="relative max-w-7xl mx-auto px-6 py-20">
<div className="text-center mb-12">
<h2 className="text-3xl font-heading font-bold text-white mb-3">{t('home.availableModels')}</h2>
<h2 className="text-3xl font-bold text-white mb-3">{t('home.availableModels')}</h2>
<p className="text-neutral-400">
{t('home.availableModelsDesc', { count: enabledModels.length })}
</p>
@@ -174,7 +173,7 @@ export default function StarterHome() {
{packages.length > 0 && (
<section className="relative max-w-7xl mx-auto px-6 py-20">
<div className="text-center mb-12">
<h2 className="text-3xl font-heading font-bold text-white mb-3">{t('home.plansPackages')}</h2>
<h2 className="text-3xl font-bold text-white mb-3">{t('home.plansPackages')}</h2>
<p className="text-neutral-400">{t('home.choosePlan')}</p>
</div>
@@ -213,7 +212,7 @@ export default function StarterHome() {
<div className="glass rounded-3xl p-12 text-center relative overflow-hidden">
<div className="absolute inset-0 bg-gradient-to-br from-brand-600/10 via-transparent to-purple-600/10" />
<div className="relative z-10">
<h2 className="text-3xl font-heading font-bold text-white mb-4">
<h2 className="text-3xl font-bold text-white mb-4">
{t('home.readyToStart')}
</h2>
<p className="text-neutral-400 mb-8 max-w-md mx-auto">
+5 -2
View File
@@ -3,6 +3,7 @@ import { Outlet, Link, useNavigate, useLocation } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { useAuth } from '../../context/AuthContext';
import { useSite } from '../../context/SiteContext';
import LanguageSwitch from '../../components/LanguageSwitch';
export default function StarterLayout() {
const { t } = useTranslation();
@@ -59,8 +60,10 @@ export default function StarterLayout() {
))}
</nav>
{/* Auth + Mobile toggle */}
<div className="flex items-center gap-3">
{/* Auth + Lang + Mobile toggle */}
<div className="flex items-center gap-2">
<LanguageSwitch className="text-neutral-400 hover:text-white hover:bg-white/5" />
{user ? (
<div className="flex items-center gap-3">
<span className="text-sm text-neutral-400 hidden sm:block">
+10 -2
View File
@@ -2,11 +2,19 @@
export default {
content: ['./index.html', './src/**/*.{js,jsx}'],
darkMode: 'class',
safelist: [
// Dark theme uses dynamic accent colors
{ pattern: /border-(emerald|cyan|violet)-500\/(10|15|20|25)/ },
{ pattern: /bg-(emerald|cyan|violet)-500\/(10|15)/ },
{ pattern: /text-(emerald|cyan|violet)-400/ },
{ pattern: /from-(emerald|cyan|violet)-500\/(50|10)/ },
{ pattern: /to-(emerald|cyan|violet|teal)-500\/(10)/ },
],
theme: {
extend: {
fontFamily: {
sans: ['Inter', 'system-ui', '-apple-system', 'sans-serif'],
heading: ['Inter', 'system-ui', '-apple-system', 'sans-serif'],
sans: ['Inter', 'Noto Sans SC', 'system-ui', '-apple-system', 'sans-serif'],
heading: ['Inter', 'Noto Sans SC', 'system-ui', '-apple-system', 'sans-serif'],
mono: ['JetBrains Mono', 'Fira Code', 'monospace'],
},
colors: {