From 5da2b0fdcc669d84085d59d940e89475b3f61cb8 Mon Sep 17 00:00:00 2001 From: Eduard Gert Date: Wed, 4 Feb 2026 15:11:22 +0100 Subject: [PATCH] Add error page --- proxy/internal/proxy/reverseproxy.go | 12 ++++-- proxy/web/dist/assets/index-BQ7jeUNq.js | 9 ---- proxy/web/dist/assets/style-B08XFatU.css | 1 - proxy/web/dist/index.html | 6 +-- proxy/web/index.html | 2 +- proxy/web/package-lock.json | 13 ++++++ proxy/web/src/App.tsx | 6 ++- proxy/web/src/components/PoweredByNetBird.tsx | 9 +++- proxy/web/src/data.ts | 12 ++++++ proxy/web/src/main.tsx | 10 ++++- proxy/web/src/pages/ErrorPage.tsx | 42 +++++++++++++++++++ proxy/web/web.go | 6 ++- 12 files changed, 106 insertions(+), 22 deletions(-) delete mode 100644 proxy/web/dist/assets/index-BQ7jeUNq.js delete mode 100644 proxy/web/dist/assets/style-B08XFatU.css create mode 100644 proxy/web/src/pages/ErrorPage.tsx diff --git a/proxy/internal/proxy/reverseproxy.go b/proxy/internal/proxy/reverseproxy.go index feb792f50..10d7bb673 100644 --- a/proxy/internal/proxy/reverseproxy.go +++ b/proxy/internal/proxy/reverseproxy.go @@ -6,6 +6,7 @@ import ( "sync" "github.com/netbirdio/netbird/proxy/internal/roundtrip" + "github.com/netbirdio/netbird/proxy/web" ) type ReverseProxy struct { @@ -30,9 +31,14 @@ func NewReverseProxy(transport http.RoundTripper) *ReverseProxy { func (p *ReverseProxy) ServeHTTP(w http.ResponseWriter, r *http.Request) { target, serviceId, accountID, exists := p.findTargetForRequest(r) if !exists { - // No mapping found so return an error here. - // TODO: prettier error page. - http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound) + web.ServeHTTP(w, r, map[string]any{ + "page": "error", + "error": map[string]any{ + "code": 404, + "title": "Service Not Found", + "message": "The requested service could not be found. Please check the URL, try refreshing, or check if the peer is running. If that doesn't work, see our documentation for help.", + }, + }, http.StatusNotFound) return } diff --git a/proxy/web/dist/assets/index-BQ7jeUNq.js b/proxy/web/dist/assets/index-BQ7jeUNq.js deleted file mode 100644 index dee83eb6f..000000000 --- a/proxy/web/dist/assets/index-BQ7jeUNq.js +++ /dev/null @@ -1,9 +0,0 @@ -(function(){const b=document.createElement("link").relList;if(b&&b.supports&&b.supports("modulepreload"))return;for(const _ of document.querySelectorAll('link[rel="modulepreload"]'))f(_);new MutationObserver(_=>{for(const M of _)if(M.type==="childList")for(const D of M.addedNodes)D.tagName==="LINK"&&D.rel==="modulepreload"&&f(D)}).observe(document,{childList:!0,subtree:!0});function T(_){const M={};return _.integrity&&(M.integrity=_.integrity),_.referrerPolicy&&(M.referrerPolicy=_.referrerPolicy),_.crossOrigin==="use-credentials"?M.credentials="include":_.crossOrigin==="anonymous"?M.credentials="omit":M.credentials="same-origin",M}function f(_){if(_.ep)return;_.ep=!0;const M=T(_);fetch(_.href,M)}})();var pf={exports:{}},Uu={};var Rd;function Em(){if(Rd)return Uu;Rd=1;var o=Symbol.for("react.transitional.element"),b=Symbol.for("react.fragment");function T(f,_,M){var D=null;if(M!==void 0&&(D=""+M),_.key!==void 0&&(D=""+_.key),"key"in _){M={};for(var U in _)U!=="key"&&(M[U]=_[U])}else M=_;return _=M.ref,{$$typeof:o,type:f,key:D,ref:_!==void 0?_:null,props:M}}return Uu.Fragment=b,Uu.jsx=T,Uu.jsxs=T,Uu}var Hd;function Mm(){return Hd||(Hd=1,pf.exports=Em()),pf.exports}var R=Mm(),Sf={exports:{}},K={};var jd;function _m(){if(jd)return K;jd=1;var o=Symbol.for("react.transitional.element"),b=Symbol.for("react.portal"),T=Symbol.for("react.fragment"),f=Symbol.for("react.strict_mode"),_=Symbol.for("react.profiler"),M=Symbol.for("react.consumer"),D=Symbol.for("react.context"),U=Symbol.for("react.forward_ref"),O=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),H=Symbol.for("react.lazy"),j=Symbol.for("react.activity"),w=Symbol.iterator;function st(s){return s===null||typeof s!="object"?null:(s=w&&s[w]||s["@@iterator"],typeof s=="function"?s:null)}var L={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},X=Object.assign,V={};function tt(s,E,C){this.props=s,this.context=E,this.refs=V,this.updater=C||L}tt.prototype.isReactComponent={},tt.prototype.setState=function(s,E){if(typeof s!="object"&&typeof s!="function"&&s!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,s,E,"setState")},tt.prototype.forceUpdate=function(s){this.updater.enqueueForceUpdate(this,s,"forceUpdate")};function St(){}St.prototype=tt.prototype;function zt(s,E,C){this.props=s,this.context=E,this.refs=V,this.updater=C||L}var P=zt.prototype=new St;P.constructor=zt,X(P,tt.prototype),P.isPureReactComponent=!0;var Rt=Array.isArray;function Dt(){}var W={H:null,A:null,T:null,S:null},Zt=Object.prototype.hasOwnProperty;function It(s,E,C){var q=C.ref;return{$$typeof:o,type:s,key:E,ref:q!==void 0?q:null,props:C}}function Cl(s,E){return It(s.type,E,s.props)}function Pt(s){return typeof s=="object"&&s!==null&&s.$$typeof===o}function I(s){var E={"=":"=0",":":"=2"};return"$"+s.replace(/[=:]/g,function(C){return E[C]})}var Rl=/\/+/g;function tl(s,E){return typeof s=="object"&&s!==null&&s.key!=null?I(""+s.key):E.toString(36)}function ll(s){switch(s.status){case"fulfilled":return s.value;case"rejected":throw s.reason;default:switch(typeof s.status=="string"?s.then(Dt,Dt):(s.status="pending",s.then(function(E){s.status==="pending"&&(s.status="fulfilled",s.value=E)},function(E){s.status==="pending"&&(s.status="rejected",s.reason=E)})),s.status){case"fulfilled":return s.value;case"rejected":throw s.reason}}throw s}function S(s,E,C,q,J){var lt=typeof s;(lt==="undefined"||lt==="boolean")&&(s=null);var yt=!1;if(s===null)yt=!0;else switch(lt){case"bigint":case"string":case"number":yt=!0;break;case"object":switch(s.$$typeof){case o:case b:yt=!0;break;case H:return yt=s._init,S(yt(s._payload),E,C,q,J)}}if(yt)return J=J(s),yt=q===""?"."+tl(s,0):q,Rt(J)?(C="",yt!=null&&(C=yt.replace(Rl,"$&/")+"/"),S(J,E,C,"",function(qa){return qa})):J!=null&&(Pt(J)&&(J=Cl(J,C+(J.key==null||s&&s.key===J.key?"":(""+J.key).replace(Rl,"$&/")+"/")+yt)),E.push(J)),1;yt=0;var Wt=q===""?".":q+":";if(Rt(s))for(var Ut=0;Ut>>1,dt=S[ct];if(0<_(dt,N))S[ct]=N,S[Q]=dt,Q=ct;else break t}}function T(S){return S.length===0?null:S[0]}function f(S){if(S.length===0)return null;var N=S[0],Q=S.pop();if(Q!==N){S[0]=Q;t:for(var ct=0,dt=S.length,s=dt>>>1;ct_(C,Q))q_(J,C)?(S[ct]=J,S[q]=Q,ct=q):(S[ct]=C,S[E]=Q,ct=E);else if(q_(J,Q))S[ct]=J,S[q]=Q,ct=q;else break t}}return N}function _(S,N){var Q=S.sortIndex-N.sortIndex;return Q!==0?Q:S.id-N.id}if(o.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var M=performance;o.unstable_now=function(){return M.now()}}else{var D=Date,U=D.now();o.unstable_now=function(){return D.now()-U}}var O=[],p=[],H=1,j=null,w=3,st=!1,L=!1,X=!1,V=!1,tt=typeof setTimeout=="function"?setTimeout:null,St=typeof clearTimeout=="function"?clearTimeout:null,zt=typeof setImmediate<"u"?setImmediate:null;function P(S){for(var N=T(p);N!==null;){if(N.callback===null)f(p);else if(N.startTime<=S)f(p),N.sortIndex=N.expirationTime,b(O,N);else break;N=T(p)}}function Rt(S){if(X=!1,P(S),!L)if(T(O)!==null)L=!0,Dt||(Dt=!0,I());else{var N=T(p);N!==null&&ll(Rt,N.startTime-S)}}var Dt=!1,W=-1,Zt=5,It=-1;function Cl(){return V?!0:!(o.unstable_now()-ItS&&Cl());){var ct=j.callback;if(typeof ct=="function"){j.callback=null,w=j.priorityLevel;var dt=ct(j.expirationTime<=S);if(S=o.unstable_now(),typeof dt=="function"){j.callback=dt,P(S),N=!0;break l}j===T(O)&&f(O),P(S)}else f(O);j=T(O)}if(j!==null)N=!0;else{var s=T(p);s!==null&&ll(Rt,s.startTime-S),N=!1}}break t}finally{j=null,w=Q,st=!1}N=void 0}}finally{N?I():Dt=!1}}}var I;if(typeof zt=="function")I=function(){zt(Pt)};else if(typeof MessageChannel<"u"){var Rl=new MessageChannel,tl=Rl.port2;Rl.port1.onmessage=Pt,I=function(){tl.postMessage(null)}}else I=function(){tt(Pt,0)};function ll(S,N){W=tt(function(){S(o.unstable_now())},N)}o.unstable_IdlePriority=5,o.unstable_ImmediatePriority=1,o.unstable_LowPriority=4,o.unstable_NormalPriority=3,o.unstable_Profiling=null,o.unstable_UserBlockingPriority=2,o.unstable_cancelCallback=function(S){S.callback=null},o.unstable_forceFrameRate=function(S){0>S||125ct?(S.sortIndex=Q,b(p,S),T(O)===null&&S===T(p)&&(X?(St(W),W=-1):X=!0,ll(Rt,Q-ct))):(S.sortIndex=dt,b(O,S),L||st||(L=!0,Dt||(Dt=!0,I()))),S},o.unstable_shouldYield=Cl,o.unstable_wrapCallback=function(S){var N=w;return function(){var Q=w;w=N;try{return S.apply(this,arguments)}finally{w=Q}}}})(xf)),xf}var Yd;function Dm(){return Yd||(Yd=1,Tf.exports=Om()),Tf.exports}var Af={exports:{}},kt={};var Gd;function Um(){if(Gd)return kt;Gd=1;var o=Df();function b(O){var p="https://react.dev/errors/"+O;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(o)}catch(b){console.error(b)}}return o(),Af.exports=Um(),Af.exports}var Qd;function Cm(){if(Qd)return Nu;Qd=1;var o=Dm(),b=Df(),T=Nm();function f(t){var l="https://react.dev/errors/"+t;if(1dt||(t.current=ct[dt],ct[dt]=null,dt--)}function C(t,l){dt++,ct[dt]=t.current,t.current=l}var q=s(null),J=s(null),lt=s(null),yt=s(null);function Wt(t,l){switch(C(lt,l),C(J,t),C(q,null),l.nodeType){case 9:case 11:t=(t=l.documentElement)&&(t=t.namespaceURI)?ed(t):0;break;default:if(t=l.tagName,l=l.namespaceURI)l=ed(l),t=ad(l,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}E(q),C(q,t)}function Ut(){E(q),E(J),E(lt)}function qa(t){t.memoizedState!==null&&C(yt,t);var l=q.current,e=ad(l,t.type);l!==e&&(C(J,t),C(q,e))}function Hu(t){J.current===t&&(E(q),E(J)),yt.current===t&&(E(yt),Mu._currentValue=Q)}var ti,Nf;function Ue(t){if(ti===void 0)try{throw Error()}catch(e){var l=e.stack.trim().match(/\n( *(at )?)/);ti=l&&l[1]||"",Nf=-1)":-1u||r[a]!==g[u]){var z=` -`+r[a].replace(" at new "," at ");return t.displayName&&z.includes("")&&(z=z.replace("",t.displayName)),z}while(1<=a&&0<=u);break}}}finally{li=!1,Error.prepareStackTrace=e}return(e=t?t.displayName||t.name:"")?Ue(e):""}function e0(t,l){switch(t.tag){case 26:case 27:case 5:return Ue(t.type);case 16:return Ue("Lazy");case 13:return t.child!==l&&l!==null?Ue("Suspense Fallback"):Ue("Suspense");case 19:return Ue("SuspenseList");case 0:case 15:return ei(t.type,!1);case 11:return ei(t.type.render,!1);case 1:return ei(t.type,!0);case 31:return Ue("Activity");default:return""}}function Cf(t){try{var l="",e=null;do l+=e0(t,e),e=t,t=t.return;while(t);return l}catch(a){return` -Error generating stack: `+a.message+` -`+a.stack}}var ai=Object.prototype.hasOwnProperty,ui=o.unstable_scheduleCallback,ni=o.unstable_cancelCallback,a0=o.unstable_shouldYield,u0=o.unstable_requestPaint,rl=o.unstable_now,n0=o.unstable_getCurrentPriorityLevel,Rf=o.unstable_ImmediatePriority,Hf=o.unstable_UserBlockingPriority,ju=o.unstable_NormalPriority,i0=o.unstable_LowPriority,jf=o.unstable_IdlePriority,c0=o.log,f0=o.unstable_setDisableYieldValue,Ya=null,ol=null;function ae(t){if(typeof c0=="function"&&f0(t),ol&&typeof ol.setStrictMode=="function")try{ol.setStrictMode(Ya,t)}catch{}}var sl=Math.clz32?Math.clz32:s0,r0=Math.log,o0=Math.LN2;function s0(t){return t>>>=0,t===0?32:31-(r0(t)/o0|0)|0}var Bu=256,qu=262144,Yu=4194304;function Ne(t){var l=t&42;if(l!==0)return l;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function Gu(t,l,e){var a=t.pendingLanes;if(a===0)return 0;var u=0,n=t.suspendedLanes,i=t.pingedLanes;t=t.warmLanes;var c=a&134217727;return c!==0?(a=c&~n,a!==0?u=Ne(a):(i&=c,i!==0?u=Ne(i):e||(e=c&~t,e!==0&&(u=Ne(e))))):(c=a&~n,c!==0?u=Ne(c):i!==0?u=Ne(i):e||(e=a&~t,e!==0&&(u=Ne(e)))),u===0?0:l!==0&&l!==u&&(l&n)===0&&(n=u&-u,e=l&-l,n>=e||n===32&&(e&4194048)!==0)?l:u}function Ga(t,l){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&l)===0}function d0(t,l){switch(t){case 1:case 2:case 4:case 8:case 64:return l+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Bf(){var t=Yu;return Yu<<=1,(Yu&62914560)===0&&(Yu=4194304),t}function ii(t){for(var l=[],e=0;31>e;e++)l.push(t);return l}function Xa(t,l){t.pendingLanes|=l,l!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function y0(t,l,e,a,u,n){var i=t.pendingLanes;t.pendingLanes=e,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=e,t.entangledLanes&=e,t.errorRecoveryDisabledLanes&=e,t.shellSuspendCounter=0;var c=t.entanglements,r=t.expirationTimes,g=t.hiddenUpdates;for(e=i&~e;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var p0=/[\n"\\]/g;function Sl(t){return t.replace(p0,function(l){return"\\"+l.charCodeAt(0).toString(16)+" "})}function di(t,l,e,a,u,n,i,c){t.name="",i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?t.type=i:t.removeAttribute("type"),l!=null?i==="number"?(l===0&&t.value===""||t.value!=l)&&(t.value=""+pl(l)):t.value!==""+pl(l)&&(t.value=""+pl(l)):i!=="submit"&&i!=="reset"||t.removeAttribute("value"),l!=null?yi(t,i,pl(l)):e!=null?yi(t,i,pl(e)):a!=null&&t.removeAttribute("value"),u==null&&n!=null&&(t.defaultChecked=!!n),u!=null&&(t.checked=u&&typeof u!="function"&&typeof u!="symbol"),c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?t.name=""+pl(c):t.removeAttribute("name")}function Wf(t,l,e,a,u,n,i,c){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(t.type=n),l!=null||e!=null){if(!(n!=="submit"&&n!=="reset"||l!=null)){si(t);return}e=e!=null?""+pl(e):"",l=l!=null?""+pl(l):e,c||l===t.value||(t.value=l),t.defaultValue=l}a=a??u,a=typeof a!="function"&&typeof a!="symbol"&&!!a,t.checked=c?t.checked:!!a,t.defaultChecked=!!a,i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(t.name=i),si(t)}function yi(t,l,e){l==="number"&&Zu(t.ownerDocument)===t||t.defaultValue===""+e||(t.defaultValue=""+e)}function la(t,l,e,a){if(t=t.options,l){l={};for(var u=0;u"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),bi=!1;if(Xl)try{var wa={};Object.defineProperty(wa,"passive",{get:function(){bi=!0}}),window.addEventListener("test",wa,wa),window.removeEventListener("test",wa,wa)}catch{bi=!1}var ne=null,pi=null,wu=null;function er(){if(wu)return wu;var t,l=pi,e=l.length,a,u="value"in ne?ne.value:ne.textContent,n=u.length;for(t=0;t=Ja),fr=" ",rr=!1;function or(t,l){switch(t){case"keyup":return J0.indexOf(l.keyCode)!==-1;case"keydown":return l.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function sr(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var na=!1;function W0(t,l){switch(t){case"compositionend":return sr(l);case"keypress":return l.which!==32?null:(rr=!0,fr);case"textInput":return t=l.data,t===fr&&rr?null:t;default:return null}}function $0(t,l){if(na)return t==="compositionend"||!Ai&&or(t,l)?(t=er(),wu=pi=ne=null,na=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(l.ctrlKey||l.altKey||l.metaKey)||l.ctrlKey&&l.altKey){if(l.char&&1=l)return{node:e,offset:l-t};t=a}t:{for(;e;){if(e.nextSibling){e=e.nextSibling;break t}e=e.parentNode}e=void 0}e=pr(e)}}function zr(t,l){return t&&l?t===l?!0:t&&t.nodeType===3?!1:l&&l.nodeType===3?zr(t,l.parentNode):"contains"in t?t.contains(l):t.compareDocumentPosition?!!(t.compareDocumentPosition(l)&16):!1:!1}function Tr(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var l=Zu(t.document);l instanceof t.HTMLIFrameElement;){try{var e=typeof l.contentWindow.location.href=="string"}catch{e=!1}if(e)t=l.contentWindow;else break;l=Zu(t.document)}return l}function _i(t){var l=t&&t.nodeName&&t.nodeName.toLowerCase();return l&&(l==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||l==="textarea"||t.contentEditable==="true")}var uy=Xl&&"documentMode"in document&&11>=document.documentMode,ia=null,Oi=null,Fa=null,Di=!1;function xr(t,l,e){var a=e.window===e?e.document:e.nodeType===9?e:e.ownerDocument;Di||ia==null||ia!==Zu(a)||(a=ia,"selectionStart"in a&&_i(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Fa&&$a(Fa,a)||(Fa=a,a=Yn(Oi,"onSelect"),0>=i,u-=i,Hl=1<<32-sl(l)+u|e<$?(nt=Y,Y=null):nt=Y.sibling;var rt=h(y,Y,m[$],x);if(rt===null){Y===null&&(Y=nt);break}t&&Y&&rt.alternate===null&&l(y,Y),d=n(rt,d,$),ft===null?G=rt:ft.sibling=rt,ft=rt,Y=nt}if($===m.length)return e(y,Y),it&&Zl(y,$),G;if(Y===null){for(;$$?(nt=Y,Y=null):nt=Y.sibling;var _e=h(y,Y,rt.value,x);if(_e===null){Y===null&&(Y=nt);break}t&&Y&&_e.alternate===null&&l(y,Y),d=n(_e,d,$),ft===null?G=_e:ft.sibling=_e,ft=_e,Y=nt}if(rt.done)return e(y,Y),it&&Zl(y,$),G;if(Y===null){for(;!rt.done;$++,rt=m.next())rt=A(y,rt.value,x),rt!==null&&(d=n(rt,d,$),ft===null?G=rt:ft.sibling=rt,ft=rt);return it&&Zl(y,$),G}for(Y=a(Y);!rt.done;$++,rt=m.next())rt=v(Y,y,$,rt.value,x),rt!==null&&(t&&rt.alternate!==null&&Y.delete(rt.key===null?$:rt.key),d=n(rt,d,$),ft===null?G=rt:ft.sibling=rt,ft=rt);return t&&Y.forEach(function(Am){return l(y,Am)}),it&&Zl(y,$),G}function bt(y,d,m,x){if(typeof m=="object"&&m!==null&&m.type===X&&m.key===null&&(m=m.props.children),typeof m=="object"&&m!==null){switch(m.$$typeof){case st:t:{for(var G=m.key;d!==null;){if(d.key===G){if(G=m.type,G===X){if(d.tag===7){e(y,d.sibling),x=u(d,m.props.children),x.return=y,y=x;break t}}else if(d.elementType===G||typeof G=="object"&&G!==null&&G.$$typeof===Zt&&Ze(G)===d.type){e(y,d.sibling),x=u(d,m.props),au(x,m),x.return=y,y=x;break t}e(y,d);break}else l(y,d);d=d.sibling}m.type===X?(x=qe(m.props.children,y.mode,x,m.key),x.return=y,y=x):(x=tn(m.type,m.key,m.props,null,y.mode,x),au(x,m),x.return=y,y=x)}return i(y);case L:t:{for(G=m.key;d!==null;){if(d.key===G)if(d.tag===4&&d.stateNode.containerInfo===m.containerInfo&&d.stateNode.implementation===m.implementation){e(y,d.sibling),x=u(d,m.children||[]),x.return=y,y=x;break t}else{e(y,d);break}else l(y,d);d=d.sibling}x=Bi(m,y.mode,x),x.return=y,y=x}return i(y);case Zt:return m=Ze(m),bt(y,d,m,x)}if(ll(m))return B(y,d,m,x);if(I(m)){if(G=I(m),typeof G!="function")throw Error(f(150));return m=G.call(m),Z(y,d,m,x)}if(typeof m.then=="function")return bt(y,d,fn(m),x);if(m.$$typeof===zt)return bt(y,d,an(y,m),x);rn(y,m)}return typeof m=="string"&&m!==""||typeof m=="number"||typeof m=="bigint"?(m=""+m,d!==null&&d.tag===6?(e(y,d.sibling),x=u(d,m),x.return=y,y=x):(e(y,d),x=ji(m,y.mode,x),x.return=y,y=x),i(y)):e(y,d)}return function(y,d,m,x){try{eu=0;var G=bt(y,d,m,x);return va=null,G}catch(Y){if(Y===ha||Y===nn)throw Y;var ft=yl(29,Y,null,y.mode);return ft.lanes=x,ft.return=y,ft}}}var we=Kr(!0),Jr=Kr(!1),oe=!1;function ki(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Wi(t,l){t=t.updateQueue,l.updateQueue===t&&(l.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function se(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function de(t,l,e){var a=t.updateQueue;if(a===null)return null;if(a=a.shared,(ot&2)!==0){var u=a.pending;return u===null?l.next=l:(l.next=u.next,u.next=l),a.pending=l,l=Pu(t),Ur(t,null,e),l}return Iu(t,a,l,e),Pu(t)}function uu(t,l,e){if(l=l.updateQueue,l!==null&&(l=l.shared,(e&4194048)!==0)){var a=l.lanes;a&=t.pendingLanes,e|=a,l.lanes=e,Yf(t,e)}}function $i(t,l){var e=t.updateQueue,a=t.alternate;if(a!==null&&(a=a.updateQueue,e===a)){var u=null,n=null;if(e=e.firstBaseUpdate,e!==null){do{var i={lane:e.lane,tag:e.tag,payload:e.payload,callback:null,next:null};n===null?u=n=i:n=n.next=i,e=e.next}while(e!==null);n===null?u=n=l:n=n.next=l}else u=n=l;e={baseState:a.baseState,firstBaseUpdate:u,lastBaseUpdate:n,shared:a.shared,callbacks:a.callbacks},t.updateQueue=e;return}t=e.lastBaseUpdate,t===null?e.firstBaseUpdate=l:t.next=l,e.lastBaseUpdate=l}var Fi=!1;function nu(){if(Fi){var t=ga;if(t!==null)throw t}}function iu(t,l,e,a){Fi=!1;var u=t.updateQueue;oe=!1;var n=u.firstBaseUpdate,i=u.lastBaseUpdate,c=u.shared.pending;if(c!==null){u.shared.pending=null;var r=c,g=r.next;r.next=null,i===null?n=g:i.next=g,i=r;var z=t.alternate;z!==null&&(z=z.updateQueue,c=z.lastBaseUpdate,c!==i&&(c===null?z.firstBaseUpdate=g:c.next=g,z.lastBaseUpdate=r))}if(n!==null){var A=u.baseState;i=0,z=g=r=null,c=n;do{var h=c.lane&-536870913,v=h!==c.lane;if(v?(ut&h)===h:(a&h)===h){h!==0&&h===ma&&(Fi=!0),z!==null&&(z=z.next={lane:0,tag:c.tag,payload:c.payload,callback:null,next:null});t:{var B=t,Z=c;h=l;var bt=e;switch(Z.tag){case 1:if(B=Z.payload,typeof B=="function"){A=B.call(bt,A,h);break t}A=B;break t;case 3:B.flags=B.flags&-65537|128;case 0:if(B=Z.payload,h=typeof B=="function"?B.call(bt,A,h):B,h==null)break t;A=j({},A,h);break t;case 2:oe=!0}}h=c.callback,h!==null&&(t.flags|=64,v&&(t.flags|=8192),v=u.callbacks,v===null?u.callbacks=[h]:v.push(h))}else v={lane:h,tag:c.tag,payload:c.payload,callback:c.callback,next:null},z===null?(g=z=v,r=A):z=z.next=v,i|=h;if(c=c.next,c===null){if(c=u.shared.pending,c===null)break;v=c,c=v.next,v.next=null,u.lastBaseUpdate=v,u.shared.pending=null}}while(!0);z===null&&(r=A),u.baseState=r,u.firstBaseUpdate=g,u.lastBaseUpdate=z,n===null&&(u.shared.lanes=0),ve|=i,t.lanes=i,t.memoizedState=A}}function kr(t,l){if(typeof t!="function")throw Error(f(191,t));t.call(l)}function Wr(t,l){var e=t.callbacks;if(e!==null)for(t.callbacks=null,t=0;tn?n:8;var i=S.T,c={};S.T=c,hc(t,!1,l,e);try{var r=u(),g=S.S;if(g!==null&&g(c,r),r!==null&&typeof r=="object"&&typeof r.then=="function"){var z=yy(r,a);ru(t,l,z,bl(t))}else ru(t,l,a,bl(t))}catch(A){ru(t,l,{then:function(){},status:"rejected",reason:A},bl())}finally{N.p=n,i!==null&&c.types!==null&&(i.types=c.types),S.T=i}}function py(){}function mc(t,l,e,a){if(t.tag!==5)throw Error(f(476));var u=Oo(t).queue;_o(t,u,l,Q,e===null?py:function(){return Do(t),e(a)})}function Oo(t){var l=t.memoizedState;if(l!==null)return l;l={memoizedState:Q,baseState:Q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Kl,lastRenderedState:Q},next:null};var e={};return l.next={memoizedState:e,baseState:e,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Kl,lastRenderedState:e},next:null},t.memoizedState=l,t=t.alternate,t!==null&&(t.memoizedState=l),l}function Do(t){var l=Oo(t);l.next===null&&(l=t.alternate.memoizedState),ru(t,l.next.queue,{},bl())}function gc(){return Vt(Mu)}function Uo(){return Ct().memoizedState}function No(){return Ct().memoizedState}function Sy(t){for(var l=t.return;l!==null;){switch(l.tag){case 24:case 3:var e=bl();t=se(e);var a=de(l,t,e);a!==null&&(fl(a,l,e),uu(a,l,e)),l={cache:wi()},t.payload=l;return}l=l.return}}function zy(t,l,e){var a=bl();e={lane:a,revertLane:0,gesture:null,action:e,hasEagerState:!1,eagerState:null,next:null},pn(t)?Ro(l,e):(e=Ri(t,l,e,a),e!==null&&(fl(e,t,a),Ho(e,l,a)))}function Co(t,l,e){var a=bl();ru(t,l,e,a)}function ru(t,l,e,a){var u={lane:a,revertLane:0,gesture:null,action:e,hasEagerState:!1,eagerState:null,next:null};if(pn(t))Ro(l,u);else{var n=t.alternate;if(t.lanes===0&&(n===null||n.lanes===0)&&(n=l.lastRenderedReducer,n!==null))try{var i=l.lastRenderedState,c=n(i,e);if(u.hasEagerState=!0,u.eagerState=c,dl(c,i))return Iu(t,l,u,0),pt===null&&Fu(),!1}catch{}if(e=Ri(t,l,u,a),e!==null)return fl(e,t,a),Ho(e,l,a),!0}return!1}function hc(t,l,e,a){if(a={lane:2,revertLane:kc(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},pn(t)){if(l)throw Error(f(479))}else l=Ri(t,e,a,2),l!==null&&fl(l,t,2)}function pn(t){var l=t.alternate;return t===k||l!==null&&l===k}function Ro(t,l){pa=dn=!0;var e=t.pending;e===null?l.next=l:(l.next=e.next,e.next=l),t.pending=l}function Ho(t,l,e){if((e&4194048)!==0){var a=l.lanes;a&=t.pendingLanes,e|=a,l.lanes=e,Yf(t,e)}}var ou={readContext:Vt,use:gn,useCallback:Mt,useContext:Mt,useEffect:Mt,useImperativeHandle:Mt,useLayoutEffect:Mt,useInsertionEffect:Mt,useMemo:Mt,useReducer:Mt,useRef:Mt,useState:Mt,useDebugValue:Mt,useDeferredValue:Mt,useTransition:Mt,useSyncExternalStore:Mt,useId:Mt,useHostTransitionStatus:Mt,useFormState:Mt,useActionState:Mt,useOptimistic:Mt,useMemoCache:Mt,useCacheRefresh:Mt};ou.useEffectEvent=Mt;var jo={readContext:Vt,use:gn,useCallback:function(t,l){return $t().memoizedState=[t,l===void 0?null:l],t},useContext:Vt,useEffect:bo,useImperativeHandle:function(t,l,e){e=e!=null?e.concat([t]):null,vn(4194308,4,To.bind(null,l,t),e)},useLayoutEffect:function(t,l){return vn(4194308,4,t,l)},useInsertionEffect:function(t,l){vn(4,2,t,l)},useMemo:function(t,l){var e=$t();l=l===void 0?null:l;var a=t();if(Ve){ae(!0);try{t()}finally{ae(!1)}}return e.memoizedState=[a,l],a},useReducer:function(t,l,e){var a=$t();if(e!==void 0){var u=e(l);if(Ve){ae(!0);try{e(l)}finally{ae(!1)}}}else u=l;return a.memoizedState=a.baseState=u,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:u},a.queue=t,t=t.dispatch=zy.bind(null,k,t),[a.memoizedState,t]},useRef:function(t){var l=$t();return t={current:t},l.memoizedState=t},useState:function(t){t=rc(t);var l=t.queue,e=Co.bind(null,k,l);return l.dispatch=e,[t.memoizedState,e]},useDebugValue:dc,useDeferredValue:function(t,l){var e=$t();return yc(e,t,l)},useTransition:function(){var t=rc(!1);return t=_o.bind(null,k,t.queue,!0,!1),$t().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,l,e){var a=k,u=$t();if(it){if(e===void 0)throw Error(f(407));e=e()}else{if(e=l(),pt===null)throw Error(f(349));(ut&127)!==0||lo(a,l,e)}u.memoizedState=e;var n={value:e,getSnapshot:l};return u.queue=n,bo(ao.bind(null,a,n,t),[t]),a.flags|=2048,za(9,{destroy:void 0},eo.bind(null,a,n,e,l),null),e},useId:function(){var t=$t(),l=pt.identifierPrefix;if(it){var e=jl,a=Hl;e=(a&~(1<<32-sl(a)-1)).toString(32)+e,l="_"+l+"R_"+e,e=yn++,0<\/script>",n=n.removeChild(n.firstChild);break;case"select":n=typeof a.is=="string"?i.createElement("select",{is:a.is}):i.createElement("select"),a.multiple?n.multiple=!0:a.size&&(n.size=a.size);break;default:n=typeof a.is=="string"?i.createElement(u,{is:a.is}):i.createElement(u)}}n[Lt]=l,n[el]=a;t:for(i=l.child;i!==null;){if(i.tag===5||i.tag===6)n.appendChild(i.stateNode);else if(i.tag!==4&&i.tag!==27&&i.child!==null){i.child.return=i,i=i.child;continue}if(i===l)break t;for(;i.sibling===null;){if(i.return===null||i.return===l)break t;i=i.return}i.sibling.return=i.return,i=i.sibling}l.stateNode=n;t:switch(Jt(n,u,a),u){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break t;case"img":a=!0;break t;default:a=!1}a&&kl(l)}}return xt(l),Uc(l,l.type,t===null?null:t.memoizedProps,l.pendingProps,e),null;case 6:if(t&&l.stateNode!=null)t.memoizedProps!==a&&kl(l);else{if(typeof a!="string"&&l.stateNode===null)throw Error(f(166));if(t=lt.current,da(l)){if(t=l.stateNode,e=l.memoizedProps,a=null,u=wt,u!==null)switch(u.tag){case 27:case 5:a=u.memoizedProps}t[Lt]=l,t=!!(t.nodeValue===e||a!==null&&a.suppressHydrationWarning===!0||td(t.nodeValue,e)),t||fe(l,!0)}else t=Gn(t).createTextNode(a),t[Lt]=l,l.stateNode=t}return xt(l),null;case 31:if(e=l.memoizedState,t===null||t.memoizedState!==null){if(a=da(l),e!==null){if(t===null){if(!a)throw Error(f(318));if(t=l.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(f(557));t[Lt]=l}else Ye(),(l.flags&128)===0&&(l.memoizedState=null),l.flags|=4;xt(l),t=!1}else e=Xi(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=e),t=!0;if(!t)return l.flags&256?(gl(l),l):(gl(l),null);if((l.flags&128)!==0)throw Error(f(558))}return xt(l),null;case 13:if(a=l.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(u=da(l),a!==null&&a.dehydrated!==null){if(t===null){if(!u)throw Error(f(318));if(u=l.memoizedState,u=u!==null?u.dehydrated:null,!u)throw Error(f(317));u[Lt]=l}else Ye(),(l.flags&128)===0&&(l.memoizedState=null),l.flags|=4;xt(l),u=!1}else u=Xi(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=u),u=!0;if(!u)return l.flags&256?(gl(l),l):(gl(l),null)}return gl(l),(l.flags&128)!==0?(l.lanes=e,l):(e=a!==null,t=t!==null&&t.memoizedState!==null,e&&(a=l.child,u=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(u=a.alternate.memoizedState.cachePool.pool),n=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(n=a.memoizedState.cachePool.pool),n!==u&&(a.flags|=2048)),e!==t&&e&&(l.child.flags|=8192),An(l,l.updateQueue),xt(l),null);case 4:return Ut(),t===null&&Ic(l.stateNode.containerInfo),xt(l),null;case 10:return wl(l.type),xt(l),null;case 19:if(E(Nt),a=l.memoizedState,a===null)return xt(l),null;if(u=(l.flags&128)!==0,n=a.rendering,n===null)if(u)du(a,!1);else{if(_t!==0||t!==null&&(t.flags&128)!==0)for(t=l.child;t!==null;){if(n=sn(t),n!==null){for(l.flags|=128,du(a,!1),t=n.updateQueue,l.updateQueue=t,An(l,t),l.subtreeFlags=0,t=e,e=l.child;e!==null;)Nr(e,t),e=e.sibling;return C(Nt,Nt.current&1|2),it&&Zl(l,a.treeForkCount),l.child}t=t.sibling}a.tail!==null&&rl()>Dn&&(l.flags|=128,u=!0,du(a,!1),l.lanes=4194304)}else{if(!u)if(t=sn(n),t!==null){if(l.flags|=128,u=!0,t=t.updateQueue,l.updateQueue=t,An(l,t),du(a,!0),a.tail===null&&a.tailMode==="hidden"&&!n.alternate&&!it)return xt(l),null}else 2*rl()-a.renderingStartTime>Dn&&e!==536870912&&(l.flags|=128,u=!0,du(a,!1),l.lanes=4194304);a.isBackwards?(n.sibling=l.child,l.child=n):(t=a.last,t!==null?t.sibling=n:l.child=n,a.last=n)}return a.tail!==null?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=rl(),t.sibling=null,e=Nt.current,C(Nt,u?e&1|2:e&1),it&&Zl(l,a.treeForkCount),t):(xt(l),null);case 22:case 23:return gl(l),Pi(),a=l.memoizedState!==null,t!==null?t.memoizedState!==null!==a&&(l.flags|=8192):a&&(l.flags|=8192),a?(e&536870912)!==0&&(l.flags&128)===0&&(xt(l),l.subtreeFlags&6&&(l.flags|=8192)):xt(l),e=l.updateQueue,e!==null&&An(l,e.retryQueue),e=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),a=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(a=l.memoizedState.cachePool.pool),a!==e&&(l.flags|=2048),t!==null&&E(Qe),null;case 24:return e=null,t!==null&&(e=t.memoizedState.cache),l.memoizedState.cache!==e&&(l.flags|=2048),wl(Ht),xt(l),null;case 25:return null;case 30:return null}throw Error(f(156,l.tag))}function My(t,l){switch(Yi(l),l.tag){case 1:return t=l.flags,t&65536?(l.flags=t&-65537|128,l):null;case 3:return wl(Ht),Ut(),t=l.flags,(t&65536)!==0&&(t&128)===0?(l.flags=t&-65537|128,l):null;case 26:case 27:case 5:return Hu(l),null;case 31:if(l.memoizedState!==null){if(gl(l),l.alternate===null)throw Error(f(340));Ye()}return t=l.flags,t&65536?(l.flags=t&-65537|128,l):null;case 13:if(gl(l),t=l.memoizedState,t!==null&&t.dehydrated!==null){if(l.alternate===null)throw Error(f(340));Ye()}return t=l.flags,t&65536?(l.flags=t&-65537|128,l):null;case 19:return E(Nt),null;case 4:return Ut(),null;case 10:return wl(l.type),null;case 22:case 23:return gl(l),Pi(),t!==null&&E(Qe),t=l.flags,t&65536?(l.flags=t&-65537|128,l):null;case 24:return wl(Ht),null;case 25:return null;default:return null}}function ns(t,l){switch(Yi(l),l.tag){case 3:wl(Ht),Ut();break;case 26:case 27:case 5:Hu(l);break;case 4:Ut();break;case 31:l.memoizedState!==null&&gl(l);break;case 13:gl(l);break;case 19:E(Nt);break;case 10:wl(l.type);break;case 22:case 23:gl(l),Pi(),t!==null&&E(Qe);break;case 24:wl(Ht)}}function yu(t,l){try{var e=l.updateQueue,a=e!==null?e.lastEffect:null;if(a!==null){var u=a.next;e=u;do{if((e.tag&t)===t){a=void 0;var n=e.create,i=e.inst;a=n(),i.destroy=a}e=e.next}while(e!==u)}}catch(c){gt(l,l.return,c)}}function ge(t,l,e){try{var a=l.updateQueue,u=a!==null?a.lastEffect:null;if(u!==null){var n=u.next;a=n;do{if((a.tag&t)===t){var i=a.inst,c=i.destroy;if(c!==void 0){i.destroy=void 0,u=l;var r=e,g=c;try{g()}catch(z){gt(u,r,z)}}}a=a.next}while(a!==n)}}catch(z){gt(l,l.return,z)}}function is(t){var l=t.updateQueue;if(l!==null){var e=t.stateNode;try{Wr(l,e)}catch(a){gt(t,t.return,a)}}}function cs(t,l,e){e.props=Ke(t.type,t.memoizedProps),e.state=t.memoizedState;try{e.componentWillUnmount()}catch(a){gt(t,l,a)}}function mu(t,l){try{var e=t.ref;if(e!==null){switch(t.tag){case 26:case 27:case 5:var a=t.stateNode;break;case 30:a=t.stateNode;break;default:a=t.stateNode}typeof e=="function"?t.refCleanup=e(a):e.current=a}}catch(u){gt(t,l,u)}}function Bl(t,l){var e=t.ref,a=t.refCleanup;if(e!==null)if(typeof a=="function")try{a()}catch(u){gt(t,l,u)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof e=="function")try{e(null)}catch(u){gt(t,l,u)}else e.current=null}function fs(t){var l=t.type,e=t.memoizedProps,a=t.stateNode;try{t:switch(l){case"button":case"input":case"select":case"textarea":e.autoFocus&&a.focus();break t;case"img":e.src?a.src=e.src:e.srcSet&&(a.srcset=e.srcSet)}}catch(u){gt(t,t.return,u)}}function Nc(t,l,e){try{var a=t.stateNode;ky(a,t.type,e,l),a[el]=l}catch(u){gt(t,t.return,u)}}function rs(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&Te(t.type)||t.tag===4}function Cc(t){t:for(;;){for(;t.sibling===null;){if(t.return===null||rs(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&Te(t.type)||t.flags&2||t.child===null||t.tag===4)continue t;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Rc(t,l,e){var a=t.tag;if(a===5||a===6)t=t.stateNode,l?(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e).insertBefore(t,l):(l=e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,l.appendChild(t),e=e._reactRootContainer,e!=null||l.onclick!==null||(l.onclick=Gl));else if(a!==4&&(a===27&&Te(t.type)&&(e=t.stateNode,l=null),t=t.child,t!==null))for(Rc(t,l,e),t=t.sibling;t!==null;)Rc(t,l,e),t=t.sibling}function En(t,l,e){var a=t.tag;if(a===5||a===6)t=t.stateNode,l?e.insertBefore(t,l):e.appendChild(t);else if(a!==4&&(a===27&&Te(t.type)&&(e=t.stateNode),t=t.child,t!==null))for(En(t,l,e),t=t.sibling;t!==null;)En(t,l,e),t=t.sibling}function os(t){var l=t.stateNode,e=t.memoizedProps;try{for(var a=t.type,u=l.attributes;u.length;)l.removeAttributeNode(u[0]);Jt(l,a,e),l[Lt]=t,l[el]=e}catch(n){gt(t,t.return,n)}}var Wl=!1,qt=!1,Hc=!1,ss=typeof WeakSet=="function"?WeakSet:Set,Xt=null;function _y(t,l){if(t=t.containerInfo,lf=Kn,t=Tr(t),_i(t)){if("selectionStart"in t)var e={start:t.selectionStart,end:t.selectionEnd};else t:{e=(e=t.ownerDocument)&&e.defaultView||window;var a=e.getSelection&&e.getSelection();if(a&&a.rangeCount!==0){e=a.anchorNode;var u=a.anchorOffset,n=a.focusNode;a=a.focusOffset;try{e.nodeType,n.nodeType}catch{e=null;break t}var i=0,c=-1,r=-1,g=0,z=0,A=t,h=null;l:for(;;){for(var v;A!==e||u!==0&&A.nodeType!==3||(c=i+u),A!==n||a!==0&&A.nodeType!==3||(r=i+a),A.nodeType===3&&(i+=A.nodeValue.length),(v=A.firstChild)!==null;)h=A,A=v;for(;;){if(A===t)break l;if(h===e&&++g===u&&(c=i),h===n&&++z===a&&(r=i),(v=A.nextSibling)!==null)break;A=h,h=A.parentNode}A=v}e=c===-1||r===-1?null:{start:c,end:r}}else e=null}e=e||{start:0,end:0}}else e=null;for(ef={focusedElem:t,selectionRange:e},Kn=!1,Xt=l;Xt!==null;)if(l=Xt,t=l.child,(l.subtreeFlags&1028)!==0&&t!==null)t.return=l,Xt=t;else for(;Xt!==null;){switch(l=Xt,n=l.alternate,t=l.flags,l.tag){case 0:if((t&4)!==0&&(t=l.updateQueue,t=t!==null?t.events:null,t!==null))for(e=0;e title"))),Jt(n,a,e),n[Lt]=t,Gt(n),a=n;break t;case"link":var i=vd("link","href",u).get(a+(e.href||""));if(i){for(var c=0;cbt&&(i=bt,bt=Z,Z=i);var y=Sr(c,Z),d=Sr(c,bt);if(y&&d&&(v.rangeCount!==1||v.anchorNode!==y.node||v.anchorOffset!==y.offset||v.focusNode!==d.node||v.focusOffset!==d.offset)){var m=A.createRange();m.setStart(y.node,y.offset),v.removeAllRanges(),Z>bt?(v.addRange(m),v.extend(d.node,d.offset)):(m.setEnd(d.node,d.offset),v.addRange(m))}}}}for(A=[],v=c;v=v.parentNode;)v.nodeType===1&&A.push({element:v,left:v.scrollLeft,top:v.scrollTop});for(typeof c.focus=="function"&&c.focus(),c=0;ce?32:e,S.T=null,e=Qc,Qc=null;var n=pe,i=te;if(Yt=0,Ma=pe=null,te=0,(ot&6)!==0)throw Error(f(331));var c=ot;if(ot|=4,Ts(n.current),ps(n,n.current,i,e),ot=c,Su(0,!1),ol&&typeof ol.onPostCommitFiberRoot=="function")try{ol.onPostCommitFiberRoot(Ya,n)}catch{}return!0}finally{N.p=u,S.T=a,Xs(t,l)}}function Zs(t,l,e){l=Tl(e,l),l=Sc(t.stateNode,l,2),t=de(t,l,2),t!==null&&(Xa(t,2),ql(t))}function gt(t,l,e){if(t.tag===3)Zs(t,t,e);else for(;l!==null;){if(l.tag===3){Zs(l,t,e);break}else if(l.tag===1){var a=l.stateNode;if(typeof l.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(be===null||!be.has(a))){t=Tl(e,t),e=Lo(2),a=de(l,e,2),a!==null&&(wo(e,a,l,t),Xa(a,2),ql(a));break}}l=l.return}}function Vc(t,l,e){var a=t.pingCache;if(a===null){a=t.pingCache=new Uy;var u=new Set;a.set(l,u)}else u=a.get(l),u===void 0&&(u=new Set,a.set(l,u));u.has(e)||(qc=!0,u.add(e),t=jy.bind(null,t,l,e),l.then(t,t))}function jy(t,l,e){var a=t.pingCache;a!==null&&a.delete(l),t.pingedLanes|=t.suspendedLanes&e,t.warmLanes&=~e,pt===t&&(ut&e)===e&&(_t===4||_t===3&&(ut&62914560)===ut&&300>rl()-On?(ot&2)===0&&_a(t,0):Yc|=e,Ea===ut&&(Ea=0)),ql(t)}function Ls(t,l){l===0&&(l=Bf()),t=Be(t,l),t!==null&&(Xa(t,l),ql(t))}function By(t){var l=t.memoizedState,e=0;l!==null&&(e=l.retryLane),Ls(t,e)}function qy(t,l){var e=0;switch(t.tag){case 31:case 13:var a=t.stateNode,u=t.memoizedState;u!==null&&(e=u.retryLane);break;case 19:a=t.stateNode;break;case 22:a=t.stateNode._retryCache;break;default:throw Error(f(314))}a!==null&&a.delete(l),Ls(t,e)}function Yy(t,l){return ui(t,l)}var jn=null,Da=null,Kc=!1,Bn=!1,Jc=!1,ze=0;function ql(t){t!==Da&&t.next===null&&(Da===null?jn=Da=t:Da=Da.next=t),Bn=!0,Kc||(Kc=!0,Xy())}function Su(t,l){if(!Jc&&Bn){Jc=!0;do for(var e=!1,a=jn;a!==null;){if(t!==0){var u=a.pendingLanes;if(u===0)var n=0;else{var i=a.suspendedLanes,c=a.pingedLanes;n=(1<<31-sl(42|t)+1)-1,n&=u&~(i&~c),n=n&201326741?n&201326741|1:n?n|2:0}n!==0&&(e=!0,Js(a,n))}else n=ut,n=Gu(a,a===pt?n:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(n&3)===0||Ga(a,n)||(e=!0,Js(a,n));a=a.next}while(e);Jc=!1}}function Gy(){ws()}function ws(){Bn=Kc=!1;var t=0;ze!==0&&$y()&&(t=ze);for(var l=rl(),e=null,a=jn;a!==null;){var u=a.next,n=Vs(a,l);n===0?(a.next=null,e===null?jn=u:e.next=u,u===null&&(Da=e)):(e=a,(t!==0||(n&3)!==0)&&(Bn=!0)),a=u}Yt!==0&&Yt!==5||Su(t),ze!==0&&(ze=0)}function Vs(t,l){for(var e=t.suspendedLanes,a=t.pingedLanes,u=t.expirationTimes,n=t.pendingLanes&-62914561;0c)break;var z=r.transferSize,A=r.initiatorType;z&&ld(A)&&(r=r.responseEnd,i+=z*(r"u"?null:document;function yd(t,l,e){var a=Ua;if(a&&typeof l=="string"&&l){var u=Sl(l);u='link[rel="'+t+'"][href="'+u+'"]',typeof e=="string"&&(u+='[crossorigin="'+e+'"]'),dd.has(u)||(dd.add(u),t={rel:t,crossOrigin:e,href:l},a.querySelector(u)===null&&(l=a.createElement("link"),Jt(l,"link",t),Gt(l),a.head.appendChild(l)))}}function nm(t){le.D(t),yd("dns-prefetch",t,null)}function im(t,l){le.C(t,l),yd("preconnect",t,l)}function cm(t,l,e){le.L(t,l,e);var a=Ua;if(a&&t&&l){var u='link[rel="preload"][as="'+Sl(l)+'"]';l==="image"&&e&&e.imageSrcSet?(u+='[imagesrcset="'+Sl(e.imageSrcSet)+'"]',typeof e.imageSizes=="string"&&(u+='[imagesizes="'+Sl(e.imageSizes)+'"]')):u+='[href="'+Sl(t)+'"]';var n=u;switch(l){case"style":n=Na(t);break;case"script":n=Ca(t)}Ol.has(n)||(t=j({rel:"preload",href:l==="image"&&e&&e.imageSrcSet?void 0:t,as:l},e),Ol.set(n,t),a.querySelector(u)!==null||l==="style"&&a.querySelector(Au(n))||l==="script"&&a.querySelector(Eu(n))||(l=a.createElement("link"),Jt(l,"link",t),Gt(l),a.head.appendChild(l)))}}function fm(t,l){le.m(t,l);var e=Ua;if(e&&t){var a=l&&typeof l.as=="string"?l.as:"script",u='link[rel="modulepreload"][as="'+Sl(a)+'"][href="'+Sl(t)+'"]',n=u;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":n=Ca(t)}if(!Ol.has(n)&&(t=j({rel:"modulepreload",href:t},l),Ol.set(n,t),e.querySelector(u)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(e.querySelector(Eu(n)))return}a=e.createElement("link"),Jt(a,"link",t),Gt(a),e.head.appendChild(a)}}}function rm(t,l,e){le.S(t,l,e);var a=Ua;if(a&&t){var u=Pe(a).hoistableStyles,n=Na(t);l=l||"default";var i=u.get(n);if(!i){var c={loading:0,preload:null};if(i=a.querySelector(Au(n)))c.loading=5;else{t=j({rel:"stylesheet",href:t,"data-precedence":l},e),(e=Ol.get(n))&&of(t,e);var r=i=a.createElement("link");Gt(r),Jt(r,"link",t),r._p=new Promise(function(g,z){r.onload=g,r.onerror=z}),r.addEventListener("load",function(){c.loading|=1}),r.addEventListener("error",function(){c.loading|=2}),c.loading|=4,Qn(i,l,a)}i={type:"stylesheet",instance:i,count:1,state:c},u.set(n,i)}}}function om(t,l){le.X(t,l);var e=Ua;if(e&&t){var a=Pe(e).hoistableScripts,u=Ca(t),n=a.get(u);n||(n=e.querySelector(Eu(u)),n||(t=j({src:t,async:!0},l),(l=Ol.get(u))&&sf(t,l),n=e.createElement("script"),Gt(n),Jt(n,"link",t),e.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(u,n))}}function sm(t,l){le.M(t,l);var e=Ua;if(e&&t){var a=Pe(e).hoistableScripts,u=Ca(t),n=a.get(u);n||(n=e.querySelector(Eu(u)),n||(t=j({src:t,async:!0,type:"module"},l),(l=Ol.get(u))&&sf(t,l),n=e.createElement("script"),Gt(n),Jt(n,"link",t),e.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(u,n))}}function md(t,l,e,a){var u=(u=lt.current)?Xn(u):null;if(!u)throw Error(f(446));switch(t){case"meta":case"title":return null;case"style":return typeof e.precedence=="string"&&typeof e.href=="string"?(l=Na(e.href),e=Pe(u).hoistableStyles,a=e.get(l),a||(a={type:"style",instance:null,count:0,state:null},e.set(l,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(e.rel==="stylesheet"&&typeof e.href=="string"&&typeof e.precedence=="string"){t=Na(e.href);var n=Pe(u).hoistableStyles,i=n.get(t);if(i||(u=u.ownerDocument||u,i={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},n.set(t,i),(n=u.querySelector(Au(t)))&&!n._p&&(i.instance=n,i.state.loading=5),Ol.has(t)||(e={rel:"preload",as:"style",href:e.href,crossOrigin:e.crossOrigin,integrity:e.integrity,media:e.media,hrefLang:e.hrefLang,referrerPolicy:e.referrerPolicy},Ol.set(t,e),n||dm(u,t,e,i.state))),l&&a===null)throw Error(f(528,""));return i}if(l&&a!==null)throw Error(f(529,""));return null;case"script":return l=e.async,e=e.src,typeof e=="string"&&l&&typeof l!="function"&&typeof l!="symbol"?(l=Ca(e),e=Pe(u).hoistableScripts,a=e.get(l),a||(a={type:"script",instance:null,count:0,state:null},e.set(l,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(f(444,t))}}function Na(t){return'href="'+Sl(t)+'"'}function Au(t){return'link[rel="stylesheet"]['+t+"]"}function gd(t){return j({},t,{"data-precedence":t.precedence,precedence:null})}function dm(t,l,e,a){t.querySelector('link[rel="preload"][as="style"]['+l+"]")?a.loading=1:(l=t.createElement("link"),a.preload=l,l.addEventListener("load",function(){return a.loading|=1}),l.addEventListener("error",function(){return a.loading|=2}),Jt(l,"link",e),Gt(l),t.head.appendChild(l))}function Ca(t){return'[src="'+Sl(t)+'"]'}function Eu(t){return"script[async]"+t}function hd(t,l,e){if(l.count++,l.instance===null)switch(l.type){case"style":var a=t.querySelector('style[data-href~="'+Sl(e.href)+'"]');if(a)return l.instance=a,Gt(a),a;var u=j({},e,{"data-href":e.href,"data-precedence":e.precedence,href:null,precedence:null});return a=(t.ownerDocument||t).createElement("style"),Gt(a),Jt(a,"style",u),Qn(a,e.precedence,t),l.instance=a;case"stylesheet":u=Na(e.href);var n=t.querySelector(Au(u));if(n)return l.state.loading|=4,l.instance=n,Gt(n),n;a=gd(e),(u=Ol.get(u))&&of(a,u),n=(t.ownerDocument||t).createElement("link"),Gt(n);var i=n;return i._p=new Promise(function(c,r){i.onload=c,i.onerror=r}),Jt(n,"link",a),l.state.loading|=4,Qn(n,e.precedence,t),l.instance=n;case"script":return n=Ca(e.src),(u=t.querySelector(Eu(n)))?(l.instance=u,Gt(u),u):(a=e,(u=Ol.get(n))&&(a=j({},e),sf(a,u)),t=t.ownerDocument||t,u=t.createElement("script"),Gt(u),Jt(u,"link",a),t.head.appendChild(u),l.instance=u);case"void":return null;default:throw Error(f(443,l.type))}else l.type==="stylesheet"&&(l.state.loading&4)===0&&(a=l.instance,l.state.loading|=4,Qn(a,e.precedence,t));return l.instance}function Qn(t,l,e){for(var a=e.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),u=a.length?a[a.length-1]:null,n=u,i=0;i title"):null)}function ym(t,l,e){if(e===1||l.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof l.precedence!="string"||typeof l.href!="string"||l.href==="")break;return!0;case"link":if(typeof l.rel!="string"||typeof l.href!="string"||l.href===""||l.onLoad||l.onError)break;return l.rel==="stylesheet"?(t=l.disabled,typeof l.precedence=="string"&&t==null):!0;case"script":if(l.async&&typeof l.async!="function"&&typeof l.async!="symbol"&&!l.onLoad&&!l.onError&&l.src&&typeof l.src=="string")return!0}return!1}function pd(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function mm(t,l,e,a){if(e.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(e.state.loading&4)===0){if(e.instance===null){var u=Na(a.href),n=l.querySelector(Au(u));if(n){l=n._p,l!==null&&typeof l=="object"&&typeof l.then=="function"&&(t.count++,t=Ln.bind(t),l.then(t,t)),e.state.loading|=4,e.instance=n,Gt(n);return}n=l.ownerDocument||l,a=gd(a),(u=Ol.get(u))&&of(a,u),n=n.createElement("link"),Gt(n);var i=n;i._p=new Promise(function(c,r){i.onload=c,i.onerror=r}),Jt(n,"link",a),e.instance=n}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(e,l),(l=e.state.preload)&&(e.state.loading&3)===0&&(t.count++,e=Ln.bind(t),l.addEventListener("load",e),l.addEventListener("error",e))}}var df=0;function gm(t,l){return t.stylesheets&&t.count===0&&Vn(t,t.stylesheets),0df?50:800)+l);return t.unsuspend=e,function(){t.unsuspend=null,clearTimeout(a),clearTimeout(u)}}:null}function Ln(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Vn(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var wn=null;function Vn(t,l){t.stylesheets=null,t.unsuspend!==null&&(t.count++,wn=new Map,l.forEach(hm,t),wn=null,Ln.call(t))}function hm(t,l){if(!(l.state.loading&4)){var e=wn.get(t);if(e)var a=e.get(null);else{e=new Map,wn.set(t,e);for(var u=t.querySelectorAll("link[data-precedence],style[data-precedence]"),n=0;n"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(o)}catch(b){console.error(b)}}return o(),zf.exports=Cm(),zf.exports}var Hm=Rm();const jm=o=>o.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Kd=(...o)=>o.filter((b,T,f)=>!!b&&b.trim()!==""&&f.indexOf(b)===T).join(" ").trim();var Bm={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const qm=Ot.forwardRef(({color:o="currentColor",size:b=24,strokeWidth:T=2,absoluteStrokeWidth:f,className:_="",children:M,iconNode:D,...U},O)=>Ot.createElement("svg",{ref:O,...Bm,width:b,height:b,stroke:o,strokeWidth:f?Number(T)*24/Number(b):T,className:Kd("lucide",_),...U},[...D.map(([p,H])=>Ot.createElement(p,H)),...Array.isArray(M)?M:[M]]));const ja=(o,b)=>{const T=Ot.forwardRef(({className:f,..._},M)=>Ot.createElement(qm,{ref:M,iconNode:b,className:Kd(`lucide-${jm(o)}`,f),..._}));return T.displayName=`${o}`,T};const Ym=ja("Binary",[["rect",{x:"14",y:"14",width:"4",height:"6",rx:"2",key:"p02svl"}],["rect",{x:"6",y:"4",width:"4",height:"6",rx:"2",key:"xm4xkj"}],["path",{d:"M6 20h4",key:"1i6q5t"}],["path",{d:"M14 10h4",key:"ru81e7"}],["path",{d:"M6 14h2v6",key:"16z9wg"}],["path",{d:"M14 4h2v6",key:"1idq9u"}]]);const Gm=ja("EyeOff",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);const Xm=ja("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);const Qm=ja("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);const Zm=ja("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);const Lm=ja("LogIn",[["path",{d:"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4",key:"u53s6r"}],["polyline",{points:"10 17 15 12 10 7",key:"1ail0h"}],["line",{x1:"15",x2:"3",y1:"12",y2:"12",key:"v6grx8"}]]);function wm(){return window.__DATA__??{}}function Jd(o){var b,T,f="";if(typeof o=="string"||typeof o=="number")f+=o;else if(typeof o=="object")if(Array.isArray(o)){var _=o.length;for(b=0;b<_;b++)o[b]&&(T=Jd(o[b]))&&(f&&(f+=" "),f+=T)}else for(T in o)o[T]&&(f&&(f+=" "),f+=T);return f}function Vm(){for(var o,b,T=0,f="",_=arguments.length;T<_;T++)(o=arguments[T])&&(b=Jd(o))&&(f&&(f+=" "),f+=b);return f}const Uf="-",Km=o=>{const b=km(o),{conflictingClassGroups:T,conflictingClassGroupModifiers:f}=o;return{getClassGroupId:D=>{const U=D.split(Uf);return U[0]===""&&U.length!==1&&U.shift(),kd(U,b)||Jm(D)},getConflictingClassGroupIds:(D,U)=>{const O=T[D]||[];return U&&f[D]?[...O,...f[D]]:O}}},kd=(o,b)=>{if(o.length===0)return b.classGroupId;const T=o[0],f=b.nextPart.get(T),_=f?kd(o.slice(1),f):void 0;if(_)return _;if(b.validators.length===0)return;const M=o.join(Uf);return b.validators.find(({validator:D})=>D(M))?.classGroupId},Ld=/^\[(.+)\]$/,Jm=o=>{if(Ld.test(o)){const b=Ld.exec(o)[1],T=b?.substring(0,b.indexOf(":"));if(T)return"arbitrary.."+T}},km=o=>{const{theme:b,prefix:T}=o,f={nextPart:new Map,validators:[]};return $m(Object.entries(o.classGroups),T).forEach(([M,D])=>{_f(D,f,M,b)}),f},_f=(o,b,T,f)=>{o.forEach(_=>{if(typeof _=="string"){const M=_===""?b:wd(b,_);M.classGroupId=T;return}if(typeof _=="function"){if(Wm(_)){_f(_(f),b,T,f);return}b.validators.push({validator:_,classGroupId:T});return}Object.entries(_).forEach(([M,D])=>{_f(D,wd(b,M),T,f)})})},wd=(o,b)=>{let T=o;return b.split(Uf).forEach(f=>{T.nextPart.has(f)||T.nextPart.set(f,{nextPart:new Map,validators:[]}),T=T.nextPart.get(f)}),T},Wm=o=>o.isThemeGetter,$m=(o,b)=>b?o.map(([T,f])=>{const _=f.map(M=>typeof M=="string"?b+M:typeof M=="object"?Object.fromEntries(Object.entries(M).map(([D,U])=>[b+D,U])):M);return[T,_]}):o,Fm=o=>{if(o<1)return{get:()=>{},set:()=>{}};let b=0,T=new Map,f=new Map;const _=(M,D)=>{T.set(M,D),b++,b>o&&(b=0,f=T,T=new Map)};return{get(M){let D=T.get(M);if(D!==void 0)return D;if((D=f.get(M))!==void 0)return _(M,D),D},set(M,D){T.has(M)?T.set(M,D):_(M,D)}}},Wd="!",Im=o=>{const{separator:b,experimentalParseClassName:T}=o,f=b.length===1,_=b[0],M=b.length,D=U=>{const O=[];let p=0,H=0,j;for(let V=0;VH?j-H:void 0;return{modifiers:O,hasImportantModifier:st,baseClassName:L,maybePostfixModifierPosition:X}};return T?U=>T({className:U,parseClassName:D}):D},Pm=o=>{if(o.length<=1)return o;const b=[];let T=[];return o.forEach(f=>{f[0]==="["?(b.push(...T.sort(),f),T=[]):T.push(f)}),b.push(...T.sort()),b},tg=o=>({cache:Fm(o.cacheSize),parseClassName:Im(o),...Km(o)}),lg=/\s+/,eg=(o,b)=>{const{parseClassName:T,getClassGroupId:f,getConflictingClassGroupIds:_}=b,M=[],D=o.trim().split(lg);let U="";for(let O=D.length-1;O>=0;O-=1){const p=D[O],{modifiers:H,hasImportantModifier:j,baseClassName:w,maybePostfixModifierPosition:st}=T(p);let L=!!st,X=f(L?w.substring(0,st):w);if(!X){if(!L){U=p+(U.length>0?" "+U:U);continue}if(X=f(w),!X){U=p+(U.length>0?" "+U:U);continue}L=!1}const V=Pm(H).join(":"),tt=j?V+Wd:V,St=tt+X;if(M.includes(St))continue;M.push(St);const zt=_(X,L);for(let P=0;P0?" "+U:U)}return U};function ag(){let o=0,b,T,f="";for(;o{if(typeof o=="string")return o;let b,T="";for(let f=0;fj(H),o());return T=tg(p),f=T.cache.get,_=T.cache.set,M=U,U(O)}function U(O){const p=f(O);if(p)return p;const H=eg(O,T);return _(O,H),H}return function(){return M(ag.apply(null,arguments))}}const At=o=>{const b=T=>T[o]||[];return b.isThemeGetter=!0,b},Fd=/^\[(?:([a-z-]+):)?(.+)\]$/i,ng=/^\d+\/\d+$/,ig=new Set(["px","full","screen"]),cg=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,fg=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,rg=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,og=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,sg=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ee=o=>Ha(o)||ig.has(o)||ng.test(o),Oe=o=>Ba(o,"length",pg),Ha=o=>!!o&&!Number.isNaN(Number(o)),Ef=o=>Ba(o,"number",Ha),Cu=o=>!!o&&Number.isInteger(Number(o)),dg=o=>o.endsWith("%")&&Ha(o.slice(0,-1)),F=o=>Fd.test(o),De=o=>cg.test(o),yg=new Set(["length","size","percentage"]),mg=o=>Ba(o,yg,Id),gg=o=>Ba(o,"position",Id),hg=new Set(["image","url"]),vg=o=>Ba(o,hg,zg),bg=o=>Ba(o,"",Sg),Ru=()=>!0,Ba=(o,b,T)=>{const f=Fd.exec(o);return f?f[1]?typeof b=="string"?f[1]===b:b.has(f[1]):T(f[2]):!1},pg=o=>fg.test(o)&&!rg.test(o),Id=()=>!1,Sg=o=>og.test(o),zg=o=>sg.test(o),Tg=()=>{const o=At("colors"),b=At("spacing"),T=At("blur"),f=At("brightness"),_=At("borderColor"),M=At("borderRadius"),D=At("borderSpacing"),U=At("borderWidth"),O=At("contrast"),p=At("grayscale"),H=At("hueRotate"),j=At("invert"),w=At("gap"),st=At("gradientColorStops"),L=At("gradientColorStopPositions"),X=At("inset"),V=At("margin"),tt=At("opacity"),St=At("padding"),zt=At("saturate"),P=At("scale"),Rt=At("sepia"),Dt=At("skew"),W=At("space"),Zt=At("translate"),It=()=>["auto","contain","none"],Cl=()=>["auto","hidden","clip","visible","scroll"],Pt=()=>["auto",F,b],I=()=>[F,b],Rl=()=>["",ee,Oe],tl=()=>["auto",Ha,F],ll=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],S=()=>["solid","dashed","dotted","double","none"],N=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Q=()=>["start","end","center","between","around","evenly","stretch"],ct=()=>["","0",F],dt=()=>["auto","avoid","all","avoid-page","page","left","right","column"],s=()=>[Ha,F];return{cacheSize:500,separator:":",theme:{colors:[Ru],spacing:[ee,Oe],blur:["none","",De,F],brightness:s(),borderColor:[o],borderRadius:["none","","full",De,F],borderSpacing:I(),borderWidth:Rl(),contrast:s(),grayscale:ct(),hueRotate:s(),invert:ct(),gap:I(),gradientColorStops:[o],gradientColorStopPositions:[dg,Oe],inset:Pt(),margin:Pt(),opacity:s(),padding:I(),saturate:s(),scale:s(),sepia:ct(),skew:s(),space:I(),translate:I()},classGroups:{aspect:[{aspect:["auto","square","video",F]}],container:["container"],columns:[{columns:[De]}],"break-after":[{"break-after":dt()}],"break-before":[{"break-before":dt()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...ll(),F]}],overflow:[{overflow:Cl()}],"overflow-x":[{"overflow-x":Cl()}],"overflow-y":[{"overflow-y":Cl()}],overscroll:[{overscroll:It()}],"overscroll-x":[{"overscroll-x":It()}],"overscroll-y":[{"overscroll-y":It()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[X]}],"inset-x":[{"inset-x":[X]}],"inset-y":[{"inset-y":[X]}],start:[{start:[X]}],end:[{end:[X]}],top:[{top:[X]}],right:[{right:[X]}],bottom:[{bottom:[X]}],left:[{left:[X]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",Cu,F]}],basis:[{basis:Pt()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",F]}],grow:[{grow:ct()}],shrink:[{shrink:ct()}],order:[{order:["first","last","none",Cu,F]}],"grid-cols":[{"grid-cols":[Ru]}],"col-start-end":[{col:["auto",{span:["full",Cu,F]},F]}],"col-start":[{"col-start":tl()}],"col-end":[{"col-end":tl()}],"grid-rows":[{"grid-rows":[Ru]}],"row-start-end":[{row:["auto",{span:[Cu,F]},F]}],"row-start":[{"row-start":tl()}],"row-end":[{"row-end":tl()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",F]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",F]}],gap:[{gap:[w]}],"gap-x":[{"gap-x":[w]}],"gap-y":[{"gap-y":[w]}],"justify-content":[{justify:["normal",...Q()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...Q(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...Q(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[St]}],px:[{px:[St]}],py:[{py:[St]}],ps:[{ps:[St]}],pe:[{pe:[St]}],pt:[{pt:[St]}],pr:[{pr:[St]}],pb:[{pb:[St]}],pl:[{pl:[St]}],m:[{m:[V]}],mx:[{mx:[V]}],my:[{my:[V]}],ms:[{ms:[V]}],me:[{me:[V]}],mt:[{mt:[V]}],mr:[{mr:[V]}],mb:[{mb:[V]}],ml:[{ml:[V]}],"space-x":[{"space-x":[W]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[W]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",F,b]}],"min-w":[{"min-w":[F,b,"min","max","fit"]}],"max-w":[{"max-w":[F,b,"none","full","min","max","fit","prose",{screen:[De]},De]}],h:[{h:[F,b,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[F,b,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[F,b,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[F,b,"auto","min","max","fit"]}],"font-size":[{text:["base",De,Oe]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Ef]}],"font-family":[{font:[Ru]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",F]}],"line-clamp":[{"line-clamp":["none",Ha,Ef]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",ee,F]}],"list-image":[{"list-image":["none",F]}],"list-style-type":[{list:["none","disc","decimal",F]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[o]}],"placeholder-opacity":[{"placeholder-opacity":[tt]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[o]}],"text-opacity":[{"text-opacity":[tt]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...S(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",ee,Oe]}],"underline-offset":[{"underline-offset":["auto",ee,F]}],"text-decoration-color":[{decoration:[o]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:I()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",F]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",F]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[tt]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...ll(),gg]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",mg]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},vg]}],"bg-color":[{bg:[o]}],"gradient-from-pos":[{from:[L]}],"gradient-via-pos":[{via:[L]}],"gradient-to-pos":[{to:[L]}],"gradient-from":[{from:[st]}],"gradient-via":[{via:[st]}],"gradient-to":[{to:[st]}],rounded:[{rounded:[M]}],"rounded-s":[{"rounded-s":[M]}],"rounded-e":[{"rounded-e":[M]}],"rounded-t":[{"rounded-t":[M]}],"rounded-r":[{"rounded-r":[M]}],"rounded-b":[{"rounded-b":[M]}],"rounded-l":[{"rounded-l":[M]}],"rounded-ss":[{"rounded-ss":[M]}],"rounded-se":[{"rounded-se":[M]}],"rounded-ee":[{"rounded-ee":[M]}],"rounded-es":[{"rounded-es":[M]}],"rounded-tl":[{"rounded-tl":[M]}],"rounded-tr":[{"rounded-tr":[M]}],"rounded-br":[{"rounded-br":[M]}],"rounded-bl":[{"rounded-bl":[M]}],"border-w":[{border:[U]}],"border-w-x":[{"border-x":[U]}],"border-w-y":[{"border-y":[U]}],"border-w-s":[{"border-s":[U]}],"border-w-e":[{"border-e":[U]}],"border-w-t":[{"border-t":[U]}],"border-w-r":[{"border-r":[U]}],"border-w-b":[{"border-b":[U]}],"border-w-l":[{"border-l":[U]}],"border-opacity":[{"border-opacity":[tt]}],"border-style":[{border:[...S(),"hidden"]}],"divide-x":[{"divide-x":[U]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[U]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[tt]}],"divide-style":[{divide:S()}],"border-color":[{border:[_]}],"border-color-x":[{"border-x":[_]}],"border-color-y":[{"border-y":[_]}],"border-color-s":[{"border-s":[_]}],"border-color-e":[{"border-e":[_]}],"border-color-t":[{"border-t":[_]}],"border-color-r":[{"border-r":[_]}],"border-color-b":[{"border-b":[_]}],"border-color-l":[{"border-l":[_]}],"divide-color":[{divide:[_]}],"outline-style":[{outline:["",...S()]}],"outline-offset":[{"outline-offset":[ee,F]}],"outline-w":[{outline:[ee,Oe]}],"outline-color":[{outline:[o]}],"ring-w":[{ring:Rl()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[o]}],"ring-opacity":[{"ring-opacity":[tt]}],"ring-offset-w":[{"ring-offset":[ee,Oe]}],"ring-offset-color":[{"ring-offset":[o]}],shadow:[{shadow:["","inner","none",De,bg]}],"shadow-color":[{shadow:[Ru]}],opacity:[{opacity:[tt]}],"mix-blend":[{"mix-blend":[...N(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":N()}],filter:[{filter:["","none"]}],blur:[{blur:[T]}],brightness:[{brightness:[f]}],contrast:[{contrast:[O]}],"drop-shadow":[{"drop-shadow":["","none",De,F]}],grayscale:[{grayscale:[p]}],"hue-rotate":[{"hue-rotate":[H]}],invert:[{invert:[j]}],saturate:[{saturate:[zt]}],sepia:[{sepia:[Rt]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[T]}],"backdrop-brightness":[{"backdrop-brightness":[f]}],"backdrop-contrast":[{"backdrop-contrast":[O]}],"backdrop-grayscale":[{"backdrop-grayscale":[p]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[H]}],"backdrop-invert":[{"backdrop-invert":[j]}],"backdrop-opacity":[{"backdrop-opacity":[tt]}],"backdrop-saturate":[{"backdrop-saturate":[zt]}],"backdrop-sepia":[{"backdrop-sepia":[Rt]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[D]}],"border-spacing-x":[{"border-spacing-x":[D]}],"border-spacing-y":[{"border-spacing-y":[D]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",F]}],duration:[{duration:s()}],ease:[{ease:["linear","in","out","in-out",F]}],delay:[{delay:s()}],animate:[{animate:["none","spin","ping","pulse","bounce",F]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[P]}],"scale-x":[{"scale-x":[P]}],"scale-y":[{"scale-y":[P]}],rotate:[{rotate:[Cu,F]}],"translate-x":[{"translate-x":[Zt]}],"translate-y":[{"translate-y":[Zt]}],"skew-x":[{"skew-x":[Dt]}],"skew-y":[{"skew-y":[Dt]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",F]}],accent:[{accent:["auto",o]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",F]}],"caret-color":[{caret:[o]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":I()}],"scroll-mx":[{"scroll-mx":I()}],"scroll-my":[{"scroll-my":I()}],"scroll-ms":[{"scroll-ms":I()}],"scroll-me":[{"scroll-me":I()}],"scroll-mt":[{"scroll-mt":I()}],"scroll-mr":[{"scroll-mr":I()}],"scroll-mb":[{"scroll-mb":I()}],"scroll-ml":[{"scroll-ml":I()}],"scroll-p":[{"scroll-p":I()}],"scroll-px":[{"scroll-px":I()}],"scroll-py":[{"scroll-py":I()}],"scroll-ps":[{"scroll-ps":I()}],"scroll-pe":[{"scroll-pe":I()}],"scroll-pt":[{"scroll-pt":I()}],"scroll-pr":[{"scroll-pr":I()}],"scroll-pb":[{"scroll-pb":I()}],"scroll-pl":[{"scroll-pl":I()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",F]}],fill:[{fill:[o,"none"]}],"stroke-w":[{stroke:[ee,Oe,Ef]}],stroke:[{stroke:[o,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},xg=ug(Tg);function Qt(...o){return xg(Vm(o))}const Ag=["relative cursor-pointer","text-sm focus:z-10 focus:ring-2 font-medium focus:outline-none whitespace-nowrap shadow-sm","inline-flex gap-2 items-center justify-center transition-colors focus:ring-offset-1","disabled:opacity-40 disabled:cursor-not-allowed disabled:text-nb-gray-300 ring-offset-neutral-950/50"],Eg={default:["bg-white hover:text-black focus:ring-zinc-200/50 hover:bg-gray-100 border-gray-200 text-gray-900","dark:focus:ring-zinc-800/50 dark:bg-nb-gray dark:text-gray-400 dark:border-gray-700/30 dark:hover:text-white dark:hover:bg-zinc-800/50"],primary:["dark:focus:ring-netbird-600/50 dark:ring-offset-neutral-950/50 enabled:dark:bg-netbird disabled:dark:bg-nb-gray-910 dark:text-gray-100 enabled:dark:hover:text-white enabled:dark:hover:bg-netbird-500/80","enabled:bg-netbird enabled:text-white enabled:focus:ring-netbird-400/50 enabled:hover:bg-netbird-500"],secondary:["bg-white hover:text-black focus:ring-zinc-200/50 hover:bg-gray-100 border-gray-200 text-gray-900","dark:ring-offset-neutral-950/50 dark:focus:ring-neutral-500/20","dark:bg-nb-gray-920 dark:text-gray-400 dark:border-gray-700/40 dark:hover:text-white dark:hover:bg-nb-gray-910"],secondaryLighter:["bg-white hover:text-black focus:ring-zinc-200/50 hover:bg-gray-100 border-gray-200 text-gray-900","dark:ring-offset-neutral-950/50 dark:focus:ring-neutral-500/20","dark:bg-nb-gray-900/70 dark:text-gray-400 dark:border-gray-700/70 dark:hover:text-white dark:hover:bg-nb-gray-800/60"],input:["bg-white hover:text-black focus:ring-zinc-200/50 hover:bg-gray-100 border-neutral-200 text-gray-900","dark:ring-offset-neutral-950/50 dark:focus:ring-neutral-500/20","dark:bg-nb-gray-900 dark:text-gray-400 dark:border-nb-gray-700 dark:hover:bg-nb-gray-900/80"],dropdown:["bg-white hover:text-black focus:ring-zinc-200/50 hover:bg-gray-100 border-neutral-200 text-gray-900","dark:ring-offset-neutral-950/50 dark:focus:ring-neutral-500/20","dark:bg-nb-gray-900/40 dark:text-gray-400 dark:border-nb-gray-900 dark:hover:bg-nb-gray-900/50"],dotted:["bg-white hover:text-black focus:ring-zinc-200/50 hover:bg-gray-100 border-gray-200 text-gray-900 border-dashed","dark:ring-offset-neutral-950/50 dark:focus:ring-neutral-500/20","dark:bg-nb-gray-900/30 dark:text-gray-400 dark:border-gray-500/40 dark:hover:text-white dark:hover:bg-zinc-800/50"],tertiary:["bg-white hover:text-black focus:ring-zinc-200/50 hover:bg-gray-100 border-gray-200 text-gray-900","dark:focus:ring-zinc-800/50 dark:bg-white dark:text-gray-800 dark:border-gray-700/40 dark:hover:bg-neutral-200 disabled:dark:bg-nb-gray-920 disabled:dark:text-nb-gray-300"],white:["focus:ring-white/50 bg-white text-gray-800 border-white outline-none hover:bg-neutral-200 disabled:dark:bg-nb-gray-920 disabled:dark:text-nb-gray-300","disabled:dark:bg-nb-gray-900 disabled:dark:text-nb-gray-300 disabled:dark:border-nb-gray-900"],outline:["bg-white hover:text-black focus:ring-zinc-200/50 hover:bg-gray-100 border-gray-200 text-gray-900","dark:focus:ring-zinc-800/50 dark:bg-transparent dark:text-netbird dark:border-netbird dark:hover:bg-nb-gray-900/30"],"danger-outline":["enabled:dark:focus:ring-red-800/20 enabled:dark:focus:bg-red-950/40 enabled:hover:dark:bg-red-950/50 enabled:dark:hover:border-red-800/50 dark:bg-transparent dark:text-red-500"],"danger-text":["dark:bg-transparent dark:text-red-500 dark:hover:text-red-600 dark:border-transparent !px-0 !shadow-none !py-0 focus:ring-red-500/30 dark:ring-offset-neutral-950/50"],"default-outline":["dark:ring-offset-nb-gray-950/50 dark:focus:ring-nb-gray-500/20","dark:bg-transparent dark:text-nb-gray-400 dark:border-transparent dark:hover:text-white dark:hover:bg-nb-gray-900/30 dark:hover:border-nb-gray-800/50","data-[state=open]:dark:text-white data-[state=open]:dark:bg-nb-gray-900/30 data-[state=open]:dark:border-nb-gray-800/50"],danger:["dark:focus:ring-red-700/20 dark:focus:bg-red-700 hover:dark:bg-red-700 dark:hover:border-red-800/50 dark:bg-red-600 dark:text-red-100"]},Mg={xs:"text-xs py-2 px-4",xs2:"text-[0.78rem] py-2 px-4",sm:"text-sm py-2.5 px-4",md:"text-sm py-2.5 px-4",lg:"text-base py-2.5 px-4"},_g={0:"border",1:"border border-transparent",2:"border border-t-0 border-b-0"},Of=Ot.forwardRef(({variant:o="default",rounded:b=!0,border:T=1,size:f="md",stopPropagation:_=!0,className:M,onClick:D,children:U,...O},p)=>R.jsx("button",{type:"button",...O,ref:p,className:Qt(Ag,Eg[o],Mg[f],_g[T?1:0],b&&"rounded-md",M),onClick:H=>{_&&H.stopPropagation(),D?.(H)},children:U}));Of.displayName="Button";const Og={default:["bg-nb-gray-900 placeholder:text-neutral-400/70 border-nb-gray-700","ring-offset-neutral-950/50 focus-visible:ring-neutral-500/20"],darker:["bg-nb-gray-920 placeholder:text-neutral-400/70 border-nb-gray-800","ring-offset-neutral-950/50 focus-visible:ring-neutral-500/20"],error:["bg-nb-gray-900 placeholder:text-neutral-400/70 border-red-500 text-red-500","ring-offset-red-500/10 focus-visible:ring-red-500/10"]},Dg={default:"bg-nb-gray-900 border-nb-gray-700 text-nb-gray-300",error:"bg-nb-gray-900 border-red-500 text-nb-gray-300 text-red-500"},Pd=Ot.forwardRef(({className:o,type:b,customSuffix:T,customPrefix:f,icon:_,maxWidthClass:M="",error:D,variant:U="default",prefixClassName:O,showPasswordToggle:p=!1,...H},j)=>{const[w,st]=Ot.useState(!1),L=b==="password",X=L&&w?"text":b,tt=(L&&p?R.jsx("button",{type:"button",onClick:()=>st(!w),className:"hover:text-white transition-all","aria-label":"Toggle password visibility",children:w?R.jsx(Gm,{size:18}):R.jsx(Xm,{size:18})}):null)||T,St=D?"error":U;return R.jsxs(R.Fragment,{children:[R.jsxs("div",{className:Qt("flex relative h-[42px]",M),children:[f&&R.jsx("div",{className:Qt(Dg[D?"error":"default"],"flex h-[42px] w-auto rounded-l-md px-3 py-2 text-sm","border items-center whitespace-nowrap",H.disabled&&"opacity-40",O),children:f}),R.jsx("div",{className:Qt("absolute left-0 top-0 h-full flex items-center text-xs text-nb-gray-300 pl-3 leading-[0]",H.disabled&&"opacity-40"),children:_}),R.jsx("input",{type:X,ref:j,...H,className:Qt(Og[St],"flex h-[42px] w-full rounded-md px-3 py-2 text-sm","file:bg-transparent file:text-sm file:font-medium file:border-0","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2","disabled:cursor-not-allowed disabled:opacity-40","border",f&&"!border-l-0 !rounded-l-none",tt&&"!pr-16",_&&"!pl-10",o)}),R.jsx("div",{className:Qt("absolute right-0 top-0 h-full flex items-center text-xs text-nb-gray-300 pr-4 leading-[0] select-none",H.disabled&&"opacity-30"),children:tt})]}),D&&R.jsx("p",{className:"text-xs text-red-500 mt-2",children:D})]})});Pd.displayName="Input";const Ug=Ot.forwardRef(function({value:b,onChange:T,length:f=6,disabled:_=!1,className:M,autoFocus:D=!1},U){const O=Ot.useRef([]);Ot.useImperativeHandle(U,()=>({focus:()=>{O.current[0]?.focus()}}));const p=b.split("").concat(Array(f).fill("")).slice(0,f),H=(L,X)=>{if(!/^\d*$/.test(X))return;const V=[...p];V[L]=X.slice(-1);const tt=V.join("").replace(/\s/g,"");T(tt),X&&L{X.key==="Backspace"&&!p[L]&&L>0&&O.current[L-1]?.focus(),X.key==="ArrowLeft"&&L>0&&O.current[L-1]?.focus(),X.key==="ArrowRight"&&L{L.preventDefault();const X=L.clipboardData.getData("text").replace(/\D/g,"").slice(0,f);T(X);const V=Math.min(X.length,f-1);O.current[V]?.focus()},st=L=>{L.target.select()};return R.jsx("div",{className:Qt("flex gap-2 w-full min-w-0",M),children:p.map((L,X)=>R.jsx("input",{ref:V=>{O.current[X]=V},type:"text",inputMode:"numeric",maxLength:1,value:L,onChange:V=>H(X,V.target.value),onKeyDown:V=>j(X,V),onPaste:w,onFocus:st,disabled:_,autoFocus:D&&X===0,className:Qt("flex-1 min-w-0 h-[42px] text-center text-sm rounded-md","dark:bg-nb-gray-900 border dark:border-nb-gray-700","dark:placeholder:text-neutral-400/70","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2","ring-offset-neutral-200/20 dark:ring-offset-neutral-950/50 dark:focus-visible:ring-neutral-500/20","disabled:cursor-not-allowed disabled:opacity-40")},X))})}),t0=Ot.createContext({value:"",onChange:()=>{}}),l0=()=>Ot.useContext(t0);function We({value:o,defaultValue:b,onChange:T,children:f}){const[_,M]=Ot.useState(b||""),D=o!==void 0?o:_,U=O=>{o===void 0&&M(O),T?.(O)};return R.jsx(t0.Provider,{value:{value:D,onChange:U},children:R.jsx("div",{children:typeof f=="function"?f({value:D,onChange:U}):f})})}function Ng({children:o,className:b}){return R.jsx("div",{role:"tablist",className:Qt("bg-nb-gray-930/70 p-1.5 flex justify-center gap-1 border-nb-gray-900",b),children:o})}function Cg({children:o,value:b,disabled:T=!1,className:f,selected:_,onClick:M}){const D=l0(),U=_!==void 0?_:b===D.value,O=()=>{D.onChange(b),M?.()};return R.jsx("button",{role:"tab",type:"button",disabled:T,"aria-selected":U,onClick:O,className:Qt("px-4 py-2 text-sm rounded-md w-full transition-all cursor-pointer",T&&"opacity-30 cursor-not-allowed",U?"bg-nb-gray-900 text-white":T?"":"text-nb-gray-400 hover:bg-nb-gray-900/50",f),children:R.jsx("div",{className:"flex items-center w-full justify-center gap-2",children:o})})}function Rg({children:o,value:b,className:T,visible:f}){const _=l0();return(f!==void 0?f:b===_.value)?R.jsx("div",{role:"tabpanel",className:Qt("bg-nb-gray-930/70 px-4 pt-4 pb-5 rounded-b-md border border-t-0 border-nb-gray-900",T),children:o}):null}We.List=Ng;We.Trigger=Cg;We.Content=Rg;const Hg="/assets/netbird-full-4AdtrUIK.svg",jg="data:image/svg+xml,%3csvg%20width='31'%20height='23'%20viewBox='0%200%2031%2023'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M21.4631%200.523438C17.8173%200.857913%2016.0028%202.95675%2015.3171%204.01871L4.66406%2022.4734H17.5163L30.1929%200.523438H21.4631Z'%20fill='%23F68330'/%3e%3cpath%20d='M17.5265%2022.4737L0%203.88525C0%203.88525%2019.8177%20-1.44128%2021.7493%2015.1738L17.5265%2022.4737Z'%20fill='%23F68330'/%3e%3cpath%20d='M14.9236%204.70563L9.54688%2014.0208L17.5158%2022.4747L21.7385%2015.158C21.0696%209.44682%2018.2851%206.32784%2014.9236%204.69727'%20fill='%23F05252'/%3e%3c/svg%3e",Pn={small:{desktop:14,mobile:20},default:{desktop:22,mobile:30},large:{desktop:24,mobile:40}},Bg=({size:o="default",mobile:b=!0})=>R.jsxs(R.Fragment,{children:[R.jsx("img",{src:Hg,height:Pn[o].desktop,style:{height:Pn[o].desktop},alt:"NetBird Logo",className:Qt(b&&"hidden md:block","group-hover:opacity-80 transition-all")}),b&&R.jsx("img",{src:jg,width:Pn[o].mobile,style:{width:Pn[o].mobile},alt:"NetBird Logo",className:Qt(b&&"md:hidden ml-4")})]});function qg(){return R.jsxs("div",{className:"flex items-center justify-center mt-8 gap-2 group cursor-pointer",children:[R.jsx("span",{className:"text-sm text-nb-gray-400 font-light text-center group-hover:opacity-80 transition-all",children:"Powered by"}),R.jsx(Bg,{size:"small",mobile:!1})]})}const Yg=({className:o})=>R.jsx("div",{className:Qt("h-full w-full absolute left-0 top-0 rounded-md overflow-hidden z-0 pointer-events-none",o),children:R.jsx("div",{className:"bg-linear-to-b from-nb-gray-900/10 via-transparent to-transparent w-full h-full rounded-md"})}),Gg=({children:o,className:b})=>R.jsxs("div",{className:Qt("px-6 sm:px-10 py-10 pt-8","bg-nb-gray-940 border border-nb-gray-910 rounded-lg relative",b),children:[R.jsx(Yg,{}),o]});function Xg({children:o,className:b}){return R.jsx("h1",{className:Qt("text-xl! text-center z-10 relative",b),children:o})}function Qg({children:o,className:b}){return R.jsx("div",{className:Qt("text-sm text-nb-gray-300 font-light mt-2 block text-center z-10 relative",b),children:o})}const Zg=()=>R.jsxs("div",{className:"flex items-center justify-center relative my-4",children:[R.jsx("span",{className:"bg-nb-gray-940 relative z-10 px-4 text-xs text-nb-gray-400 font-medium",children:"OR"}),R.jsx("span",{className:"h-px bg-nb-gray-900 w-full absolute z-0"})]}),Lg=({error:o})=>R.jsx("div",{className:"text-red-400 bg-red-800/20 border border-red-800/50 rounded-lg px-4 py-3 whitespace-break-spaces text-sm",children:o});function Vd({className:o,...b}){return R.jsx("label",{className:Qt("text-sm font-medium tracking-wider leading-none","peer-disabled:cursor-not-allowed peer-disabled:opacity-70","mb-2.5 inline-block text-nb-gray-200","flex items-center gap-2 select-none",o),...b})}const Mf=wm(),Ft=Mf.methods&&Object.keys(Mf.methods).length>0?Mf.methods:{password:"password",pin:"pin",oidc:"/auth/oidc"};function wg(){const[o,b]=Ot.useState(null),[T,f]=Ot.useState(null),[_,M]=Ot.useState(""),[D,U]=Ot.useState(""),O=Ot.useRef(null),p=Ot.useRef(null),[H,j]=Ot.useState(Ft.password?"password":"pin"),w=(P,Rt)=>{b(Rt),f(null),P==="password"?(U(""),setTimeout(()=>O.current?.focus(),200)):(M(""),setTimeout(()=>p.current?.focus(),200))},st=(P,Rt)=>{b(null),f(P);const Dt=new FormData;P==="password"?Dt.append(Ft.password,Rt):Dt.append(Ft.pin,Rt),fetch(window.location.href,{method:"POST",body:Dt,redirect:"follow"}).then(W=>{W.ok||W.redirected?window.location.reload():w(P,"Authentication failed. Please try again.")}).catch(()=>{w(P,"An error occurred. Please try again.")})},L=P=>{M(P),P.length===6&&st("pin",P)},X=_.length===6,V=D.length>0,tt=T!==null||H==="password"&&!V||H==="pin"&&!X,St=Ft.password||Ft.pin,zt=Ft.password&&Ft.pin;return R.jsxs("main",{className:"mt-20",children:[R.jsxs(Gg,{className:"max-w-105 mx-auto",children:[R.jsx(Xg,{children:"Authentication Required"}),R.jsx(Qg,{children:"The service you are trying to access is protected. Please authenticate to continue."}),R.jsxs("div",{className:"flex flex-col gap-4 mt-7 z-10 relative",children:[o&&R.jsx(Lg,{error:o}),Ft.oidc&&R.jsxs(Of,{variant:"primary",className:"w-full",onClick:()=>window.location.href=Ft.oidc,children:[R.jsx(Lm,{size:16}),"Sign in with SSO"]}),Ft.oidc&&St&&R.jsx(Zg,{}),St&&R.jsxs("form",{onSubmit:P=>{P.preventDefault(),st(H,H==="password"?D:_)},children:[zt&&R.jsx(We,{value:H,onChange:P=>{j(P),setTimeout(()=>{P==="password"?O.current?.focus():p.current?.focus()},0)},children:R.jsxs(We.List,{className:"rounded-lg border mb-4",children:[R.jsxs(We.Trigger,{value:"password",children:[R.jsx(Zm,{size:14}),"Password"]}),R.jsxs(We.Trigger,{value:"pin",children:[R.jsx(Ym,{size:14}),"PIN"]})]})}),R.jsxs("div",{className:"mb-4",children:[Ft.password&&(H==="password"||!Ft.pin)&&R.jsxs(R.Fragment,{children:[!zt&&R.jsx(Vd,{children:"Password"}),R.jsx(Pd,{ref:O,type:"password",id:"password",placeholder:"Enter password",disabled:T!==null,showPasswordToggle:!0,autoFocus:!0,value:D,onChange:P=>U(P.target.value)})]}),Ft.pin&&(H==="pin"||!Ft.password)&&R.jsxs(R.Fragment,{children:[!zt&&R.jsx(Vd,{children:"Enter PIN Code"}),R.jsx(Ug,{ref:p,value:_,onChange:L,disabled:T!==null,autoFocus:!Ft.password})]})]}),R.jsx(Of,{type:"submit",disabled:tt,variant:"secondary",className:"w-full",children:T!==null?R.jsxs(R.Fragment,{children:[R.jsx(Qm,{className:"animate-spin",size:16}),"Verifying..."]}):H==="password"?"Sign in":"Submit"})]})]})]}),R.jsx(qg,{})]})}Hm.createRoot(document.getElementById("root")).render(R.jsx(Ot.StrictMode,{children:R.jsx(wg,{})})); diff --git a/proxy/web/dist/assets/style-B08XFatU.css b/proxy/web/dist/assets/style-B08XFatU.css deleted file mode 100644 index 71db8aa92..000000000 --- a/proxy/web/dist/assets/style-B08XFatU.css +++ /dev/null @@ -1 +0,0 @@ -@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-100:#fde8e8;--color-red-400:#f98080;--color-red-500:#f05252;--color-red-600:#e02424;--color-red-700:#c81e1e;--color-red-800:#9b1c1c;--color-red-950:oklch(25.8% .092 26.042);--color-gray-100:#f3f4f6;--color-gray-200:#e5e7eb;--color-gray-400:#9ca3af;--color-gray-500:#6b7280;--color-gray-700:#374151;--color-gray-800:#1f2937;--color-gray-900:#111827;--color-zinc-50:oklch(98.5% 0 0);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-800:oklch(27.4% .006 286.033);--color-neutral-200:oklch(92.2% 0 0);--color-neutral-400:oklch(70.8% 0 0);--color-neutral-500:oklch(55.6% 0 0);--color-neutral-950:oklch(14.5% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-light:300;--font-weight-medium:500;--tracking-wide:.025em;--tracking-wider:.05em;--radius-md:.375rem;--radius-lg:.5rem;--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-nb-gray:#181a1d;--color-nb-gray-100:#e4e7e9;--color-nb-gray-200:#cbd2d6;--color-nb-gray-300:#aab4bd;--color-nb-gray-400:#7c8994;--color-nb-gray-500:#616e79;--color-nb-gray-700:#474e57;--color-nb-gray-800:#3f444b;--color-nb-gray-900:#32363d;--color-nb-gray-910:#2b2f33;--color-nb-gray-920:#25282d;--color-nb-gray-930:#25282c;--color-nb-gray-940:#1c1e21;--color-nb-gray-950:#181a1d;--color-netbird:#f68330;--color-netbird-400:#f68330;--color-netbird-500:#f46d1b;--color-netbird-600:#e55311}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.static{position:static}.top-0{top:calc(var(--spacing)*0)}.right-0{right:calc(var(--spacing)*0)}.left-0{left:calc(var(--spacing)*0)}.z-0{z-index:0}.z-10{z-index:10}.mx-auto{margin-inline:auto}.my-4{margin-block:calc(var(--spacing)*4)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-7{margin-top:calc(var(--spacing)*7)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-20{margin-top:calc(var(--spacing)*20)}.mb-2\.5{margin-bottom:calc(var(--spacing)*2.5)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.ml-4{margin-left:calc(var(--spacing)*4)}.block{display:block}.flex{display:flex}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-\[42px\]{height:42px}.h-full{height:100%}.h-px{height:1px}.w-auto{width:auto}.w-full{width:100%}.max-w-105{max-width:calc(var(--spacing)*105)}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-4{gap:calc(var(--spacing)*4)}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.\!rounded-l-none{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.rounded-l-md{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-b-md{border-bottom-right-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\!border-l-0{border-left-style:var(--tw-border-style)!important;border-left-width:0!important}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-gray-200{border-color:var(--color-gray-200)}.border-nb-gray-700{border-color:var(--color-nb-gray-700)}.border-nb-gray-800{border-color:var(--color-nb-gray-800)}.border-nb-gray-900{border-color:var(--color-nb-gray-900)}.border-nb-gray-910{border-color:var(--color-nb-gray-910)}.border-neutral-200{border-color:var(--color-neutral-200)}.border-red-500{border-color:var(--color-red-500)}.border-red-800\/50{border-color:#9b1c1c80}@supports (color:color-mix(in lab,red,red)){.border-red-800\/50{border-color:color-mix(in oklab,var(--color-red-800)50%,transparent)}}.border-transparent{border-color:#0000}.border-white{border-color:var(--color-white)}.bg-nb-gray-900{background-color:var(--color-nb-gray-900)}.bg-nb-gray-920{background-color:var(--color-nb-gray-920)}.bg-nb-gray-930\/70{background-color:#25282cb3}@supports (color:color-mix(in lab,red,red)){.bg-nb-gray-930\/70{background-color:color-mix(in oklab,var(--color-nb-gray-930)70%,transparent)}}.bg-nb-gray-940{background-color:var(--color-nb-gray-940)}.bg-red-800\/20{background-color:#9b1c1c33}@supports (color:color-mix(in lab,red,red)){.bg-red-800\/20{background-color:color-mix(in oklab,var(--color-red-800)20%,transparent)}}.bg-white{background-color:var(--color-white)}.bg-linear-to-b{--tw-gradient-position:to bottom}@supports (background-image:linear-gradient(in lab,red,red)){.bg-linear-to-b{--tw-gradient-position:to bottom in oklab}}.bg-linear-to-b{background-image:linear-gradient(var(--tw-gradient-stops))}.from-nb-gray-900\/10{--tw-gradient-from:#32363d1a}@supports (color:color-mix(in lab,red,red)){.from-nb-gray-900\/10{--tw-gradient-from:color-mix(in oklab,var(--color-nb-gray-900)10%,transparent)}}.from-nb-gray-900\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-transparent{--tw-gradient-via:transparent;--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.p-1\.5{padding:calc(var(--spacing)*1.5)}.\!px-0{padding-inline:calc(var(--spacing)*0)!important}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.\!py-0{padding-block:calc(var(--spacing)*0)!important}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-10{padding-block:calc(var(--spacing)*10)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-8{padding-top:calc(var(--spacing)*8)}.\!pr-16{padding-right:calc(var(--spacing)*16)!important}.pr-4{padding-right:calc(var(--spacing)*4)}.pb-5{padding-bottom:calc(var(--spacing)*5)}.\!pl-10{padding-left:calc(var(--spacing)*10)!important}.pl-3{padding-left:calc(var(--spacing)*3)}.text-center{text-align:center}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl\!{font-size:var(--text-xl)!important;line-height:var(--tw-leading,var(--text-xl--line-height))!important}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[\.8rem\]{font-size:.8rem}.text-\[0\.78rem\]{font-size:.78rem}.leading-\[0\]{--tw-leading:0;line-height:0}.leading-none{--tw-leading:1;line-height:1}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-break-spaces{white-space:break-spaces}.whitespace-nowrap{white-space:nowrap}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-nb-gray-200{color:var(--color-nb-gray-200)}.text-nb-gray-300{color:var(--color-nb-gray-300)}.text-nb-gray-400{color:var(--color-nb-gray-400)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-white{color:var(--color-white)}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.\!shadow-none{--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-offset-neutral-200\/20{--tw-ring-offset-color:#e5e5e533}@supports (color:color-mix(in lab,red,red)){.ring-offset-neutral-200\/20{--tw-ring-offset-color:color-mix(in oklab,var(--color-neutral-200)20%,transparent)}}.ring-offset-neutral-950\/50{--tw-ring-offset-color:#0a0a0a80}@supports (color:color-mix(in lab,red,red)){.ring-offset-neutral-950\/50{--tw-ring-offset-color:color-mix(in oklab,var(--color-neutral-950)50%,transparent)}}.ring-offset-red-500\/10{--tw-ring-offset-color:#f052521a}@supports (color:color-mix(in lab,red,red)){.ring-offset-red-500\/10{--tw-ring-offset-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:opacity-80:is(:where(.group):hover *){opacity:.8}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.placeholder\:text-neutral-400\/70::placeholder{color:#a1a1a1b3}@supports (color:color-mix(in lab,red,red)){.placeholder\:text-neutral-400\/70::placeholder{color:color-mix(in oklab,var(--color-neutral-400)70%,transparent)}}@media(hover:hover){.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-nb-gray-900\/50:hover{background-color:#32363d80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-nb-gray-900\/50:hover{background-color:color-mix(in oklab,var(--color-nb-gray-900)50%,transparent)}}.hover\:bg-neutral-200:hover{background-color:var(--color-neutral-200)}.hover\:text-black:hover{color:var(--color-black)}.hover\:text-white:hover{color:var(--color-white)}}.focus\:z-10:focus{z-index:10}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-red-500\/30:focus{--tw-ring-color:#f052524d}@supports (color:color-mix(in lab,red,red)){.focus\:ring-red-500\/30:focus{--tw-ring-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.focus\:ring-white\/50:focus{--tw-ring-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.focus\:ring-white\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-white)50%,transparent)}}.focus\:ring-zinc-200\/50:focus{--tw-ring-color:#e4e4e780}@supports (color:color-mix(in lab,red,red)){.focus\:ring-zinc-200\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-zinc-200)50%,transparent)}}.focus\:ring-offset-1:focus{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-neutral-500\/20:focus-visible{--tw-ring-color:#73737333}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-neutral-500\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--color-neutral-500)20%,transparent)}}.focus-visible\:ring-red-500\/10:focus-visible{--tw-ring-color:#f052521a}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-red-500\/10:focus-visible{--tw-ring-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.enabled\:bg-netbird:enabled{background-color:var(--color-netbird)}.enabled\:text-white:enabled{color:var(--color-white)}@media(hover:hover){.enabled\:hover\:bg-netbird-500:enabled:hover{background-color:var(--color-netbird-500)}}.enabled\:focus\:ring-netbird-400\/50:enabled:focus{--tw-ring-color:#f6833080}@supports (color:color-mix(in lab,red,red)){.enabled\:focus\:ring-netbird-400\/50:enabled:focus{--tw-ring-color:color-mix(in oklab,var(--color-netbird-400)50%,transparent)}}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:text-nb-gray-300:disabled{color:var(--color-nb-gray-300)}.disabled\:opacity-40:disabled{opacity:.4}@media(min-width:40rem){.sm\:px-10{padding-inline:calc(var(--spacing)*10)}}@media(min-width:48rem){.md\:block{display:block}.md\:hidden{display:none}}@media(prefers-color-scheme:dark){.dark\:border-gray-500\/40{border-color:#6b728066}@supports (color:color-mix(in lab,red,red)){.dark\:border-gray-500\/40{border-color:color-mix(in oklab,var(--color-gray-500)40%,transparent)}}.dark\:border-gray-700\/30{border-color:#3741514d}@supports (color:color-mix(in lab,red,red)){.dark\:border-gray-700\/30{border-color:color-mix(in oklab,var(--color-gray-700)30%,transparent)}}.dark\:border-gray-700\/40{border-color:#37415166}@supports (color:color-mix(in lab,red,red)){.dark\:border-gray-700\/40{border-color:color-mix(in oklab,var(--color-gray-700)40%,transparent)}}.dark\:border-gray-700\/70{border-color:#374151b3}@supports (color:color-mix(in lab,red,red)){.dark\:border-gray-700\/70{border-color:color-mix(in oklab,var(--color-gray-700)70%,transparent)}}.dark\:border-nb-gray-700{border-color:var(--color-nb-gray-700)}.dark\:border-nb-gray-900{border-color:var(--color-nb-gray-900)}.dark\:border-netbird{border-color:var(--color-netbird)}.dark\:border-transparent{border-color:#0000}.dark\:bg-nb-gray{background-color:var(--color-nb-gray)}.dark\:bg-nb-gray-900{background-color:var(--color-nb-gray-900)}.dark\:bg-nb-gray-900\/30{background-color:#32363d4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-nb-gray-900\/30{background-color:color-mix(in oklab,var(--color-nb-gray-900)30%,transparent)}}.dark\:bg-nb-gray-900\/40{background-color:#32363d66}@supports (color:color-mix(in lab,red,red)){.dark\:bg-nb-gray-900\/40{background-color:color-mix(in oklab,var(--color-nb-gray-900)40%,transparent)}}.dark\:bg-nb-gray-900\/70{background-color:#32363db3}@supports (color:color-mix(in lab,red,red)){.dark\:bg-nb-gray-900\/70{background-color:color-mix(in oklab,var(--color-nb-gray-900)70%,transparent)}}.dark\:bg-nb-gray-920{background-color:var(--color-nb-gray-920)}.dark\:bg-red-600{background-color:var(--color-red-600)}.dark\:bg-transparent{background-color:#0000}.dark\:bg-white{background-color:var(--color-white)}.dark\:text-gray-100{color:var(--color-gray-100)}.dark\:text-gray-400{color:var(--color-gray-400)}.dark\:text-gray-800{color:var(--color-gray-800)}.dark\:text-nb-gray-400{color:var(--color-nb-gray-400)}.dark\:text-netbird{color:var(--color-netbird)}.dark\:text-red-100{color:var(--color-red-100)}.dark\:text-red-500{color:var(--color-red-500)}.dark\:ring-offset-nb-gray-950\/50{--tw-ring-offset-color:#181a1d80}@supports (color:color-mix(in lab,red,red)){.dark\:ring-offset-nb-gray-950\/50{--tw-ring-offset-color:color-mix(in oklab,var(--color-nb-gray-950)50%,transparent)}}.dark\:ring-offset-neutral-950\/50{--tw-ring-offset-color:#0a0a0a80}@supports (color:color-mix(in lab,red,red)){.dark\:ring-offset-neutral-950\/50{--tw-ring-offset-color:color-mix(in oklab,var(--color-neutral-950)50%,transparent)}}.dark\:placeholder\:text-neutral-400\/70::placeholder{color:#a1a1a1b3}@supports (color:color-mix(in lab,red,red)){.dark\:placeholder\:text-neutral-400\/70::placeholder{color:color-mix(in oklab,var(--color-neutral-400)70%,transparent)}}@media(hover:hover){.dark\:hover\:border-nb-gray-800\/50:hover{border-color:#3f444b80}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:border-nb-gray-800\/50:hover{border-color:color-mix(in oklab,var(--color-nb-gray-800)50%,transparent)}}.dark\:hover\:border-red-800\/50:hover{border-color:#9b1c1c80}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:border-red-800\/50:hover{border-color:color-mix(in oklab,var(--color-red-800)50%,transparent)}}.dark\:hover\:bg-nb-gray-800\/60:hover{background-color:#3f444b99}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-nb-gray-800\/60:hover{background-color:color-mix(in oklab,var(--color-nb-gray-800)60%,transparent)}}.dark\:hover\:bg-nb-gray-900\/30:hover{background-color:#32363d4d}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-nb-gray-900\/30:hover{background-color:color-mix(in oklab,var(--color-nb-gray-900)30%,transparent)}}.dark\:hover\:bg-nb-gray-900\/50:hover{background-color:#32363d80}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-nb-gray-900\/50:hover{background-color:color-mix(in oklab,var(--color-nb-gray-900)50%,transparent)}}.dark\:hover\:bg-nb-gray-900\/80:hover{background-color:#32363dcc}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-nb-gray-900\/80:hover{background-color:color-mix(in oklab,var(--color-nb-gray-900)80%,transparent)}}.dark\:hover\:bg-nb-gray-910:hover{background-color:var(--color-nb-gray-910)}.dark\:hover\:bg-neutral-200:hover{background-color:var(--color-neutral-200)}.dark\:hover\:bg-zinc-800\/50:hover{background-color:#27272a80}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-zinc-800\/50:hover{background-color:color-mix(in oklab,var(--color-zinc-800)50%,transparent)}}}}@media(hover:hover){@media(prefers-color-scheme:dark){.hover\:dark\:bg-red-700:hover{background-color:var(--color-red-700)}}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\:hover\:text-red-600:hover{color:var(--color-red-600)}.dark\:hover\:text-white:hover{color:var(--color-white)}}.dark\:focus\:bg-red-700:focus{background-color:var(--color-red-700)}.dark\:focus\:ring-nb-gray-500\/20:focus{--tw-ring-color:#616e7933}@supports (color:color-mix(in lab,red,red)){.dark\:focus\:ring-nb-gray-500\/20:focus{--tw-ring-color:color-mix(in oklab,var(--color-nb-gray-500)20%,transparent)}}.dark\:focus\:ring-netbird-600\/50:focus{--tw-ring-color:#e5531180}@supports (color:color-mix(in lab,red,red)){.dark\:focus\:ring-netbird-600\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-netbird-600)50%,transparent)}}.dark\:focus\:ring-neutral-500\/20:focus{--tw-ring-color:#73737333}@supports (color:color-mix(in lab,red,red)){.dark\:focus\:ring-neutral-500\/20:focus{--tw-ring-color:color-mix(in oklab,var(--color-neutral-500)20%,transparent)}}.dark\:focus\:ring-red-700\/20:focus{--tw-ring-color:#c81e1e33}@supports (color:color-mix(in lab,red,red)){.dark\:focus\:ring-red-700\/20:focus{--tw-ring-color:color-mix(in oklab,var(--color-red-700)20%,transparent)}}.dark\:focus\:ring-zinc-800\/50:focus{--tw-ring-color:#27272a80}@supports (color:color-mix(in lab,red,red)){.dark\:focus\:ring-zinc-800\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-zinc-800)50%,transparent)}}.dark\:focus-visible\:ring-neutral-500\/20:focus-visible{--tw-ring-color:#73737333}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-neutral-500\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--color-neutral-500)20%,transparent)}}.enabled\:dark\:bg-netbird:enabled{background-color:var(--color-netbird)}@media(hover:hover){.enabled\:dark\:hover\:border-red-800\/50:enabled:hover{border-color:#9b1c1c80}@supports (color:color-mix(in lab,red,red)){.enabled\:dark\:hover\:border-red-800\/50:enabled:hover{border-color:color-mix(in oklab,var(--color-red-800)50%,transparent)}}.enabled\:dark\:hover\:bg-netbird-500\/80:enabled:hover{background-color:#f46d1bcc}@supports (color:color-mix(in lab,red,red)){.enabled\:dark\:hover\:bg-netbird-500\/80:enabled:hover{background-color:color-mix(in oklab,var(--color-netbird-500)80%,transparent)}}}}@media(hover:hover){@media(prefers-color-scheme:dark){.enabled\:hover\:dark\:bg-red-950\/50:enabled:hover{background-color:#46080980}@supports (color:color-mix(in lab,red,red)){.enabled\:hover\:dark\:bg-red-950\/50:enabled:hover{background-color:color-mix(in oklab,var(--color-red-950)50%,transparent)}}}}@media(prefers-color-scheme:dark){@media(hover:hover){.enabled\:dark\:hover\:text-white:enabled:hover{color:var(--color-white)}}.enabled\:dark\:focus\:bg-red-950\/40:enabled:focus{background-color:#46080966}@supports (color:color-mix(in lab,red,red)){.enabled\:dark\:focus\:bg-red-950\/40:enabled:focus{background-color:color-mix(in oklab,var(--color-red-950)40%,transparent)}}.enabled\:dark\:focus\:ring-red-800\/20:enabled:focus{--tw-ring-color:#9b1c1c33}@supports (color:color-mix(in lab,red,red)){.enabled\:dark\:focus\:ring-red-800\/20:enabled:focus{--tw-ring-color:color-mix(in oklab,var(--color-red-800)20%,transparent)}}.disabled\:dark\:border-nb-gray-900:disabled{border-color:var(--color-nb-gray-900)}.disabled\:dark\:bg-nb-gray-900:disabled{background-color:var(--color-nb-gray-900)}.disabled\:dark\:bg-nb-gray-910:disabled{background-color:var(--color-nb-gray-910)}.disabled\:dark\:bg-nb-gray-920:disabled{background-color:var(--color-nb-gray-920)}.disabled\:dark\:text-nb-gray-300:disabled{color:var(--color-nb-gray-300)}.data-\[state\=open\]\:dark\:border-nb-gray-800\/50[data-state=open]{border-color:#3f444b80}@supports (color:color-mix(in lab,red,red)){.data-\[state\=open\]\:dark\:border-nb-gray-800\/50[data-state=open]{border-color:color-mix(in oklab,var(--color-nb-gray-800)50%,transparent)}}.data-\[state\=open\]\:dark\:bg-nb-gray-900\/30[data-state=open]{background-color:#32363d4d}@supports (color:color-mix(in lab,red,red)){.data-\[state\=open\]\:dark\:bg-nb-gray-900\/30[data-state=open]{background-color:color-mix(in oklab,var(--color-nb-gray-900)30%,transparent)}}.data-\[state\=open\]\:dark\:text-white[data-state=open]{color:var(--color-white)}}}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/Inter-VariableFont_opsz_wght-c8O0ljhh.ttf)format("truetype")}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/Inter-Italic-VariableFont_opsz_wght-B-9PvMw6.ttf)format("truetype")}:root{--nb-bg:#18191d;--nb-card-bg:#1b1f22;--nb-border:#32363d80;--nb-text:#e4e7e9;--nb-text-muted:#a7b1b9cc;--nb-primary:#f68330;--nb-primary-hover:#e5722a;--nb-input-bg:#3f444b80;--nb-input-border:#3f444bcc;--nb-error-bg:#991b1b33;--nb-error-border:#991b1b80;--nb-error-text:#f87171}html{color-scheme:dark;background-color:var(--color-nb-gray)}html.dark,:root{color-scheme:dark}body{font-family:Inter,ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji}h1{margin-block:calc(var(--spacing)*1);font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-gray-700)}@media(prefers-color-scheme:dark){h1{color:var(--color-nb-gray-100)}}h2{margin-block:calc(var(--spacing)*1);font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-gray-700)}@media(prefers-color-scheme:dark){h2{color:var(--color-nb-gray-100)}}p{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light);--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide);color:var(--color-gray-700)}@media(prefers-color-scheme:dark){p{color:var(--color-zinc-50)}}[placeholder]{text-overflow:ellipsis}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@keyframes spin{to{transform:rotate(360deg)}} diff --git a/proxy/web/dist/index.html b/proxy/web/dist/index.html index 60dd7fc2f..a57ba7ea5 100644 --- a/proxy/web/dist/index.html +++ b/proxy/web/dist/index.html @@ -4,10 +4,10 @@ - Authentication Required + NetBird Service - - + + diff --git a/proxy/web/index.html b/proxy/web/index.html index db9b290cf..e41f24f38 100644 --- a/proxy/web/index.html +++ b/proxy/web/index.html @@ -4,7 +4,7 @@ - Authentication Required + NetBird Service diff --git a/proxy/web/package-lock.json b/proxy/web/package-lock.json index 8fec50b5d..d16196d77 100644 --- a/proxy/web/package-lock.json +++ b/proxy/web/package-lock.json @@ -63,6 +63,7 @@ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -1709,6 +1710,7 @@ "integrity": "sha512-+0/4J266CBGPUq/ELg7QUHhN25WYjE0wYTPSQJn1xeu8DOlIOPxXxrNGiLmfAWl7HMMgWFWXpt9IDjMWrF5Iow==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -1719,6 +1721,7 @@ "integrity": "sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -1778,6 +1781,7 @@ "integrity": "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.54.0", "@typescript-eslint/types": "8.54.0", @@ -2029,6 +2033,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -2134,6 +2139,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -2388,6 +2394,7 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -3384,6 +3391,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -3445,6 +3453,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -3678,6 +3687,7 @@ "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" @@ -3711,6 +3721,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -3797,6 +3808,7 @@ "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -3918,6 +3930,7 @@ "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/proxy/web/src/App.tsx b/proxy/web/src/App.tsx index 4404e13ac..bd3295cb2 100644 --- a/proxy/web/src/App.tsx +++ b/proxy/web/src/App.tsx @@ -1,4 +1,4 @@ -import { useState, useRef } from "react"; +import { useState, useRef, useEffect } from "react"; import {Loader2, Lock, Binary, LogIn} from "lucide-react"; import { getData, type Data } from "@/data"; import Button from "@/components/Button"; @@ -22,6 +22,10 @@ const methods: NonNullable = : { password:"password", pin: "pin", oidc: "/auth/oidc" }; function App() { + useEffect(() => { + document.title = "Authentication Required - NetBird Service"; + }, []); + const [error, setError] = useState(null); const [submitting, setSubmitting] = useState(null); const [pin, setPin] = useState(""); diff --git a/proxy/web/src/components/PoweredByNetBird.tsx b/proxy/web/src/components/PoweredByNetBird.tsx index af31c7944..555d8a79f 100644 --- a/proxy/web/src/components/PoweredByNetBird.tsx +++ b/proxy/web/src/components/PoweredByNetBird.tsx @@ -2,11 +2,16 @@ import { NetBirdLogo } from "./NetBirdLogo"; export function PoweredByNetBird() { return ( - + ); } \ No newline at end of file diff --git a/proxy/web/src/data.ts b/proxy/web/src/data.ts index 3df76edfa..7b03e731f 100644 --- a/proxy/web/src/data.ts +++ b/proxy/web/src/data.ts @@ -1,9 +1,21 @@ // Auth method types matching Go export type AuthMethod = 'pin' | 'password' | 'oidc' | "link" +// Page types +export type PageType = 'auth' | 'error' + +// Error data structure +export interface ErrorData { + code: number + title: string + message: string +} + // Data injected by Go templates export interface Data { + page?: PageType methods?: Partial> + error?: ErrorData } declare global { diff --git a/proxy/web/src/main.tsx b/proxy/web/src/main.tsx index bef5202a3..328b31140 100644 --- a/proxy/web/src/main.tsx +++ b/proxy/web/src/main.tsx @@ -2,9 +2,17 @@ import { StrictMode } from 'react' import { createRoot } from 'react-dom/client' import './index.css' import App from './App.tsx' +import { ErrorPage } from './pages/ErrorPage.tsx' +import { getData } from '@/data' + +const data = getData() createRoot(document.getElementById('root')!).render( - + {data.page === 'error' && data.error ? ( + + ) : ( + + )} , ) diff --git a/proxy/web/src/pages/ErrorPage.tsx b/proxy/web/src/pages/ErrorPage.tsx new file mode 100644 index 000000000..a52abe1dd --- /dev/null +++ b/proxy/web/src/pages/ErrorPage.tsx @@ -0,0 +1,42 @@ +import { useEffect } from "react"; +import { BookText, RotateCw } from "lucide-react"; +import { Title } from "@/components/Title"; +import { Description } from "@/components/Description"; +import { PoweredByNetBird } from "@/components/PoweredByNetBird"; +import { Card } from "@/components/Card"; +import Button from "@/components/Button"; +import type { ErrorData } from "@/data"; + +export function ErrorPage({ code, title, message }: ErrorData) { + useEffect(() => { + document.title = `${title} - NetBird Service`; + }, [title]); + + return ( +
+ +
{code}
+ {title} + {message} +
+ + +
+
+ + +
+ ); +} diff --git a/proxy/web/web.go b/proxy/web/web.go index e0d59b121..a858e4c44 100644 --- a/proxy/web/web.go +++ b/proxy/web/web.go @@ -37,7 +37,8 @@ func init() { // ServeHTTP serves the web UI. For static assets it serves them directly, // for other paths it renders the page with the provided data. -func ServeHTTP(w http.ResponseWriter, r *http.Request, data any) { +// Optional statusCode can be passed to set a custom HTTP status code (default 200). +func ServeHTTP(w http.ResponseWriter, r *http.Request, data any, statusCode ...int) { if initErr != nil { http.Error(w, initErr.Error(), http.StatusInternalServerError) return @@ -101,5 +102,8 @@ func ServeHTTP(w http.ResponseWriter, r *http.Request, data any) { } w.Header().Set("Content-Type", "text/html") + if len(statusCode) > 0 { + w.WriteHeader(statusCode[0]) + } w.Write(buf.Bytes()) }