diff --git a/dist/assets/index-BVKNc3Mv.js b/dist/assets/index-BVKNc3Mv.js new file mode 100644 index 0000000..340da61 --- /dev/null +++ b/dist/assets/index-BVKNc3Mv.js @@ -0,0 +1,161 @@ +var Um=a=>{throw TypeError(a)};var _d=(a,s,i)=>s.has(a)||Um("Cannot "+i);var T=(a,s,i)=>(_d(a,s,"read from private field"),i?i.call(a):s.get(a)),se=(a,s,i)=>s.has(a)?Um("Cannot add the same private member more than once"):s instanceof WeakSet?s.add(a):s.set(a,i),Z=(a,s,i,c)=>(_d(a,s,"write to private field"),c?c.call(a,i):s.set(a,i),i),je=(a,s,i)=>(_d(a,s,"access private method"),i);var yr=(a,s,i,c)=>({set _(d){Z(a,s,d,i)},get _(){return T(a,s,c)}});(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))c(d);new MutationObserver(d=>{for(const f of d)if(f.type==="childList")for(const m of f.addedNodes)m.tagName==="LINK"&&m.rel==="modulepreload"&&c(m)}).observe(document,{childList:!0,subtree:!0});function i(d){const f={};return d.integrity&&(f.integrity=d.integrity),d.referrerPolicy&&(f.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?f.credentials="include":d.crossOrigin==="anonymous"?f.credentials="omit":f.credentials="same-origin",f}function c(d){if(d.ep)return;d.ep=!0;const f=i(d);fetch(d.href,f)}})();function S3(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}var vd={exports:{}},Ro={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var $m;function _y(){if($m)return Ro;$m=1;var a=Symbol.for("react.transitional.element"),s=Symbol.for("react.fragment");function i(c,d,f){var m=null;if(f!==void 0&&(m=""+f),d.key!==void 0&&(m=""+d.key),"key"in d){f={};for(var _ in d)_!=="key"&&(f[_]=d[_])}else f=d;return d=f.ref,{$$typeof:a,type:c,key:m,ref:d!==void 0?d:null,props:f}}return Ro.Fragment=s,Ro.jsx=i,Ro.jsxs=i,Ro}var Hm;function vy(){return Hm||(Hm=1,vd.exports=_y()),vd.exports}var o=vy(),yd={exports:{}},ye={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var qm;function yy(){if(qm)return ye;qm=1;var a=Symbol.for("react.transitional.element"),s=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),c=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),f=Symbol.for("react.consumer"),m=Symbol.for("react.context"),_=Symbol.for("react.forward_ref"),h=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),v=Symbol.for("react.lazy"),y=Symbol.for("react.activity"),x=Symbol.iterator;function j(R){return R===null||typeof R!="object"?null:(R=x&&R[x]||R["@@iterator"],typeof R=="function"?R:null)}var w={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},N=Object.assign,C={};function A(R,V,K){this.props=R,this.context=V,this.refs=C,this.updater=K||w}A.prototype.isReactComponent={},A.prototype.setState=function(R,V){if(typeof R!="object"&&typeof R!="function"&&R!=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,R,V,"setState")},A.prototype.forceUpdate=function(R){this.updater.enqueueForceUpdate(this,R,"forceUpdate")};function D(){}D.prototype=A.prototype;function O(R,V,K){this.props=R,this.context=V,this.refs=C,this.updater=K||w}var q=O.prototype=new D;q.constructor=O,N(q,A.prototype),q.isPureReactComponent=!0;var Y=Array.isArray;function X(){}var U={H:null,A:null,T:null,S:null},P=Object.prototype.hasOwnProperty;function W(R,V,K){var J=K.ref;return{$$typeof:a,type:R,key:V,ref:J!==void 0?J:null,props:K}}function re(R,V){return W(R.type,V,R.props)}function ie(R){return typeof R=="object"&&R!==null&&R.$$typeof===a}function ue(R){var V={"=":"=0",":":"=2"};return"$"+R.replace(/[=:]/g,function(K){return V[K]})}var te=/\/+/g;function he(R,V){return typeof R=="object"&&R!==null&&R.key!=null?ue(""+R.key):V.toString(36)}function le(R){switch(R.status){case"fulfilled":return R.value;case"rejected":throw R.reason;default:switch(typeof R.status=="string"?R.then(X,X):(R.status="pending",R.then(function(V){R.status==="pending"&&(R.status="fulfilled",R.value=V)},function(V){R.status==="pending"&&(R.status="rejected",R.reason=V)})),R.status){case"fulfilled":return R.value;case"rejected":throw R.reason}}throw R}function H(R,V,K,J,_e){var xe=typeof R;(xe==="undefined"||xe==="boolean")&&(R=null);var Me=!1;if(R===null)Me=!0;else switch(xe){case"bigint":case"string":case"number":Me=!0;break;case"object":switch(R.$$typeof){case a:case s:Me=!0;break;case v:return Me=R._init,H(Me(R._payload),V,K,J,_e)}}if(Me)return _e=_e(R),Me=J===""?"."+he(R,0):J,Y(_e)?(K="",Me!=null&&(K=Me.replace(te,"$&/")+"/"),H(_e,V,K,"",function(aa){return aa})):_e!=null&&(ie(_e)&&(_e=re(_e,K+(_e.key==null||R&&R.key===_e.key?"":(""+_e.key).replace(te,"$&/")+"/")+Me)),V.push(_e)),1;Me=0;var Ct=J===""?".":J+":";if(Y(R))for(var We=0;We>>1,ge=H[fe];if(0>>1;fed(K,ne))Jd(_e,K)?(H[fe]=_e,H[J]=ne,fe=J):(H[fe]=K,H[V]=ne,fe=V);else if(Jd(_e,ne))H[fe]=_e,H[J]=ne,fe=J;else break e}}return I}function d(H,I){var ne=H.sortIndex-I.sortIndex;return ne!==0?ne:H.id-I.id}if(a.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var f=performance;a.unstable_now=function(){return f.now()}}else{var m=Date,_=m.now();a.unstable_now=function(){return m.now()-_}}var h=[],p=[],v=1,y=null,x=3,j=!1,w=!1,N=!1,C=!1,A=typeof setTimeout=="function"?setTimeout:null,D=typeof clearTimeout=="function"?clearTimeout:null,O=typeof setImmediate<"u"?setImmediate:null;function q(H){for(var I=i(p);I!==null;){if(I.callback===null)c(p);else if(I.startTime<=H)c(p),I.sortIndex=I.expirationTime,s(h,I);else break;I=i(p)}}function Y(H){if(N=!1,q(H),!w)if(i(h)!==null)w=!0,X||(X=!0,ue());else{var I=i(p);I!==null&&le(Y,I.startTime-H)}}var X=!1,U=-1,P=5,W=-1;function re(){return C?!0:!(a.unstable_now()-WH&&re());){var fe=y.callback;if(typeof fe=="function"){y.callback=null,x=y.priorityLevel;var ge=fe(y.expirationTime<=H);if(H=a.unstable_now(),typeof ge=="function"){y.callback=ge,q(H),I=!0;break t}y===i(h)&&c(h),q(H)}else c(h);y=i(h)}if(y!==null)I=!0;else{var R=i(p);R!==null&&le(Y,R.startTime-H),I=!1}}break e}finally{y=null,x=ne,j=!1}I=void 0}}finally{I?ue():X=!1}}}var ue;if(typeof O=="function")ue=function(){O(ie)};else if(typeof MessageChannel<"u"){var te=new MessageChannel,he=te.port2;te.port1.onmessage=ie,ue=function(){he.postMessage(null)}}else ue=function(){A(ie,0)};function le(H,I){U=A(function(){H(a.unstable_now())},I)}a.unstable_IdlePriority=5,a.unstable_ImmediatePriority=1,a.unstable_LowPriority=4,a.unstable_NormalPriority=3,a.unstable_Profiling=null,a.unstable_UserBlockingPriority=2,a.unstable_cancelCallback=function(H){H.callback=null},a.unstable_forceFrameRate=function(H){0>H||125fe?(H.sortIndex=ne,s(p,H),i(h)===null&&H===i(p)&&(N?(D(U),U=-1):N=!0,le(Y,ne-fe))):(H.sortIndex=ge,s(h,H),w||j||(w=!0,X||(X=!0,ue()))),H},a.unstable_shouldYield=re,a.unstable_wrapCallback=function(H){var I=x;return function(){var ne=x;x=I;try{return H.apply(this,arguments)}finally{x=ne}}}})(Sd)),Sd}var Vm;function xy(){return Vm||(Vm=1,xd.exports=by()),xd.exports}var jd={exports:{}},Vt={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Qm;function Sy(){if(Qm)return Vt;Qm=1;var a=g2();function s(h){var p="https://react.dev/errors/"+h;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(a)}catch(s){console.error(s)}}return a(),jd.exports=Sy(),jd.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Pm;function wy(){if(Pm)return ko;Pm=1;var a=xy(),s=g2(),i=jy();function c(e){var t="https://react.dev/errors/"+e;if(1ge||(e.current=fe[ge],fe[ge]=null,ge--)}function K(e,t){ge++,fe[ge]=e.current,e.current=t}var J=R(null),_e=R(null),xe=R(null),Me=R(null);function Ct(e,t){switch(K(xe,t),K(_e,e),K(J,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?om(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=om(t),e=cm(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}V(J),K(J,e)}function We(){V(J),V(_e),V(xe)}function aa(e){e.memoizedState!==null&&K(Me,e);var t=J.current,n=cm(t,e.type);t!==n&&(K(_e,e),K(J,n))}function _a(e){_e.current===e&&(V(J),V(_e)),Me.current===e&&(V(Me),No._currentValue=ne)}var Ya,Pa;function Ne(e){if(Ya===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);Ya=t&&t[1]||"",Pa=-1)":-1r||E[l]!==z[r]){var F=` +`+E[l].replace(" at new "," at ");return e.displayName&&F.includes("")&&(F=F.replace("",e.displayName)),F}while(1<=l&&0<=r);break}}}finally{It=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?Ne(n):""}function Ke(e,t){switch(e.tag){case 26:case 27:case 5:return Ne(e.type);case 16:return Ne("Lazy");case 13:return e.child!==t&&t!==null?Ne("Suspense Fallback"):Ne("Suspense");case 19:return Ne("SuspenseList");case 0:case 15:return va(e.type,!1);case 11:return va(e.type.render,!1);case 1:return va(e.type,!0);case 31:return Ne("Activity");default:return""}}function an(e){try{var t="",n=null;do t+=Ke(e,n),n=e,e=e.return;while(e);return t}catch(l){return` +Error generating stack: `+l.message+` +`+l.stack}}var xs=Object.prototype.hasOwnProperty,Ss=a.unstable_scheduleCallback,lu=a.unstable_cancelCallback,Xg=a.unstable_shouldYield,Kg=a.unstable_requestPaint,gn=a.unstable_now,Zg=a.unstable_getCurrentPriorityLevel,U2=a.unstable_ImmediatePriority,$2=a.unstable_UserBlockingPriority,nc=a.unstable_NormalPriority,Wg=a.unstable_LowPriority,H2=a.unstable_IdlePriority,Jg=a.log,e_=a.unstable_setDisableYieldValue,Di=null,_n=null;function Ia(e){if(typeof Jg=="function"&&e_(e),_n&&typeof _n.setStrictMode=="function")try{_n.setStrictMode(Di,e)}catch{}}var vn=Math.clz32?Math.clz32:a_,t_=Math.log,n_=Math.LN2;function a_(e){return e>>>=0,e===0?32:31-(t_(e)/n_|0)|0}var ac=256,lc=262144,sc=4194304;function Ll(e){var t=e&42;if(t!==0)return t;switch(e&-e){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 e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function ic(e,t,n){var l=e.pendingLanes;if(l===0)return 0;var r=0,u=e.suspendedLanes,g=e.pingedLanes;e=e.warmLanes;var b=l&134217727;return b!==0?(l=b&~u,l!==0?r=Ll(l):(g&=b,g!==0?r=Ll(g):n||(n=b&~e,n!==0&&(r=Ll(n))))):(b=l&~u,b!==0?r=Ll(b):g!==0?r=Ll(g):n||(n=l&~e,n!==0&&(r=Ll(n)))),r===0?0:t!==0&&t!==r&&(t&u)===0&&(u=r&-r,n=t&-t,u>=n||u===32&&(n&4194048)!==0)?t:r}function Bi(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function l_(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+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 t+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 q2(){var e=sc;return sc<<=1,(sc&62914560)===0&&(sc=4194304),e}function su(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Ui(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function s_(e,t,n,l,r,u){var g=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var b=e.entanglements,E=e.expirationTimes,z=e.hiddenUpdates;for(n=g&~n;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var d_=/[\n"\\]/g;function Ln(e){return e.replace(d_,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function du(e,t,n,l,r,u,g,b){e.name="",g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"?e.type=g:e.removeAttribute("type"),t!=null?g==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+On(t)):e.value!==""+On(t)&&(e.value=""+On(t)):g!=="submit"&&g!=="reset"||e.removeAttribute("value"),t!=null?fu(e,g,On(t)):n!=null?fu(e,g,On(n)):l!=null&&e.removeAttribute("value"),r==null&&u!=null&&(e.defaultChecked=!!u),r!=null&&(e.checked=r&&typeof r!="function"&&typeof r!="symbol"),b!=null&&typeof b!="function"&&typeof b!="symbol"&&typeof b!="boolean"?e.name=""+On(b):e.removeAttribute("name")}function ef(e,t,n,l,r,u,g,b){if(u!=null&&typeof u!="function"&&typeof u!="symbol"&&typeof u!="boolean"&&(e.type=u),t!=null||n!=null){if(!(u!=="submit"&&u!=="reset"||t!=null)){uu(e);return}n=n!=null?""+On(n):"",t=t!=null?""+On(t):n,b||t===e.value||(e.value=t),e.defaultValue=t}l=l??r,l=typeof l!="function"&&typeof l!="symbol"&&!!l,e.checked=b?e.checked:!!l,e.defaultChecked=!!l,g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"&&(e.name=g),uu(e)}function fu(e,t,n){t==="number"&&rc(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function Ts(e,t,n,l){if(e=e.options,t){t={};for(var r=0;r"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),_u=!1;if(xa)try{var Fi={};Object.defineProperty(Fi,"passive",{get:function(){_u=!0}}),window.addEventListener("test",Fi,Fi),window.removeEventListener("test",Fi,Fi)}catch{_u=!1}var Ka=null,vu=null,dc=null;function cf(){if(dc)return dc;var e,t=vu,n=t.length,l,r="value"in Ka?Ka.value:Ka.textContent,u=r.length;for(e=0;e=Qi),mf=" ",pf=!1;function gf(e,t){switch(e){case"keyup":return $_.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function _f(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ms=!1;function q_(e,t){switch(e){case"compositionend":return _f(t);case"keypress":return t.which!==32?null:(pf=!0,mf);case"textInput":return e=t.data,e===mf&&pf?null:e;default:return null}}function F_(e,t){if(Ms)return e==="compositionend"||!ju&&gf(e,t)?(e=cf(),dc=vu=Ka=null,Ms=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=l}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Nf(n)}}function Ef(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Ef(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Tf(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=rc(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=rc(e.document)}return t}function Cu(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var K_=xa&&"documentMode"in document&&11>=document.documentMode,Os=null,Eu=null,Xi=null,Tu=!1;function Rf(e,t,n){var l=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Tu||Os==null||Os!==rc(l)||(l=Os,"selectionStart"in l&&Cu(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),Xi&&Ii(Xi,l)||(Xi=l,l=lr(Eu,"onSelect"),0>=g,r-=g,la=1<<32-vn(t)+r|n<Se?(Ae=ae,ae=null):Ae=ae.sibling;var Ue=B(M,ae,L[Se],G);if(Ue===null){ae===null&&(ae=Ae);break}e&&ae&&Ue.alternate===null&&t(M,ae),k=u(Ue,k,Se),Be===null?ce=Ue:Be.sibling=Ue,Be=Ue,ae=Ae}if(Se===L.length)return n(M,ae),Oe&&ja(M,Se),ce;if(ae===null){for(;SeSe?(Ae=ae,ae=null):Ae=ae.sibling;var vl=B(M,ae,Ue.value,G);if(vl===null){ae===null&&(ae=Ae);break}e&&ae&&vl.alternate===null&&t(M,ae),k=u(vl,k,Se),Be===null?ce=vl:Be.sibling=vl,Be=vl,ae=Ae}if(Ue.done)return n(M,ae),Oe&&ja(M,Se),ce;if(ae===null){for(;!Ue.done;Se++,Ue=L.next())Ue=Q(M,Ue.value,G),Ue!==null&&(k=u(Ue,k,Se),Be===null?ce=Ue:Be.sibling=Ue,Be=Ue);return Oe&&ja(M,Se),ce}for(ae=l(ae);!Ue.done;Se++,Ue=L.next())Ue=$(ae,M,Se,Ue.value,G),Ue!==null&&(e&&Ue.alternate!==null&&ae.delete(Ue.key===null?Se:Ue.key),k=u(Ue,k,Se),Be===null?ce=Ue:Be.sibling=Ue,Be=Ue);return e&&ae.forEach(function(gy){return t(M,gy)}),Oe&&ja(M,Se),ce}function Ye(M,k,L,G){if(typeof L=="object"&&L!==null&&L.type===N&&L.key===null&&(L=L.props.children),typeof L=="object"&&L!==null){switch(L.$$typeof){case j:e:{for(var ce=L.key;k!==null;){if(k.key===ce){if(ce=L.type,ce===N){if(k.tag===7){n(M,k.sibling),G=r(k,L.props.children),G.return=M,M=G;break e}}else if(k.elementType===ce||typeof ce=="object"&&ce!==null&&ce.$$typeof===P&&Ql(ce)===k.type){n(M,k.sibling),G=r(k,L.props),to(G,L),G.return=M,M=G;break e}n(M,k);break}else t(M,k);k=k.sibling}L.type===N?(G=Hl(L.props.children,M.mode,G,L.key),G.return=M,M=G):(G=xc(L.type,L.key,L.props,null,M.mode,G),to(G,L),G.return=M,M=G)}return g(M);case w:e:{for(ce=L.key;k!==null;){if(k.key===ce)if(k.tag===4&&k.stateNode.containerInfo===L.containerInfo&&k.stateNode.implementation===L.implementation){n(M,k.sibling),G=r(k,L.children||[]),G.return=M,M=G;break e}else{n(M,k);break}else t(M,k);k=k.sibling}G=zu(L,M.mode,G),G.return=M,M=G}return g(M);case P:return L=Ql(L),Ye(M,k,L,G)}if(le(L))return ee(M,k,L,G);if(ue(L)){if(ce=ue(L),typeof ce!="function")throw Error(c(150));return L=ce.call(L),me(M,k,L,G)}if(typeof L.then=="function")return Ye(M,k,Tc(L),G);if(L.$$typeof===O)return Ye(M,k,wc(M,L),G);Rc(M,L)}return typeof L=="string"&&L!==""||typeof L=="number"||typeof L=="bigint"?(L=""+L,k!==null&&k.tag===6?(n(M,k.sibling),G=r(k,L),G.return=M,M=G):(n(M,k),G=Lu(L,M.mode,G),G.return=M,M=G),g(M)):n(M,k)}return function(M,k,L,G){try{eo=0;var ce=Ye(M,k,L,G);return Vs=null,ce}catch(ae){if(ae===Gs||ae===Cc)throw ae;var Be=bn(29,ae,null,M.mode);return Be.lanes=G,Be.return=M,Be}finally{}}}var Pl=Wf(!0),Jf=Wf(!1),tl=!1;function Pu(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Iu(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function nl(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function al(e,t,n){var l=e.updateQueue;if(l===null)return null;if(l=l.shared,($e&2)!==0){var r=l.pending;return r===null?t.next=t:(t.next=r.next,r.next=t),l.pending=t,t=bc(e),Df(e,null,n),t}return yc(e,l,t,n),bc(e)}function no(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194048)!==0)){var l=t.lanes;l&=e.pendingLanes,n|=l,t.lanes=n,G2(e,n)}}function Xu(e,t){var n=e.updateQueue,l=e.alternate;if(l!==null&&(l=l.updateQueue,n===l)){var r=null,u=null;if(n=n.firstBaseUpdate,n!==null){do{var g={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};u===null?r=u=g:u=u.next=g,n=n.next}while(n!==null);u===null?r=u=t:u=u.next=t}else r=u=t;n={baseState:l.baseState,firstBaseUpdate:r,lastBaseUpdate:u,shared:l.shared,callbacks:l.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Ku=!1;function ao(){if(Ku){var e=Fs;if(e!==null)throw e}}function lo(e,t,n,l){Ku=!1;var r=e.updateQueue;tl=!1;var u=r.firstBaseUpdate,g=r.lastBaseUpdate,b=r.shared.pending;if(b!==null){r.shared.pending=null;var E=b,z=E.next;E.next=null,g===null?u=z:g.next=z,g=E;var F=e.alternate;F!==null&&(F=F.updateQueue,b=F.lastBaseUpdate,b!==g&&(b===null?F.firstBaseUpdate=z:b.next=z,F.lastBaseUpdate=E))}if(u!==null){var Q=r.baseState;g=0,F=z=E=null,b=u;do{var B=b.lane&-536870913,$=B!==b.lane;if($?(ke&B)===B:(l&B)===B){B!==0&&B===qs&&(Ku=!0),F!==null&&(F=F.next={lane:0,tag:b.tag,payload:b.payload,callback:null,next:null});e:{var ee=e,me=b;B=t;var Ye=n;switch(me.tag){case 1:if(ee=me.payload,typeof ee=="function"){Q=ee.call(Ye,Q,B);break e}Q=ee;break e;case 3:ee.flags=ee.flags&-65537|128;case 0:if(ee=me.payload,B=typeof ee=="function"?ee.call(Ye,Q,B):ee,B==null)break e;Q=y({},Q,B);break e;case 2:tl=!0}}B=b.callback,B!==null&&(e.flags|=64,$&&(e.flags|=8192),$=r.callbacks,$===null?r.callbacks=[B]:$.push(B))}else $={lane:B,tag:b.tag,payload:b.payload,callback:b.callback,next:null},F===null?(z=F=$,E=Q):F=F.next=$,g|=B;if(b=b.next,b===null){if(b=r.shared.pending,b===null)break;$=b,b=$.next,$.next=null,r.lastBaseUpdate=$,r.shared.pending=null}}while(!0);F===null&&(E=Q),r.baseState=E,r.firstBaseUpdate=z,r.lastBaseUpdate=F,u===null&&(r.shared.lanes=0),cl|=g,e.lanes=g,e.memoizedState=Q}}function eh(e,t){if(typeof e!="function")throw Error(c(191,e));e.call(t)}function th(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;eu?u:8;var g=H.T,b={};H.T=b,p0(e,!1,t,n);try{var E=r(),z=H.S;if(z!==null&&z(b,E),E!==null&&typeof E=="object"&&typeof E.then=="function"){var F=sv(E,l);oo(e,t,F,Nn(e))}else oo(e,t,l,Nn(e))}catch(Q){oo(e,t,{then:function(){},status:"rejected",reason:Q},Nn())}finally{I.p=u,g!==null&&b.types!==null&&(g.types=b.types),H.T=g}}function dv(){}function h0(e,t,n,l){if(e.tag!==5)throw Error(c(476));var r=Oh(e).queue;Mh(e,r,t,ne,n===null?dv:function(){return Lh(e),n(l)})}function Oh(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:ne,baseState:ne,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ea,lastRenderedState:ne},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ea,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Lh(e){var t=Oh(e);t.next===null&&(t=e.alternate.memoizedState),oo(e,t.next.queue,{},Nn())}function m0(){return Ht(No)}function zh(){return pt().memoizedState}function Dh(){return pt().memoizedState}function fv(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=Nn();e=nl(n);var l=al(t,e,n);l!==null&&(dn(l,t,n),no(l,t,n)),t={cache:Gu()},e.payload=t;return}t=t.return}}function hv(e,t,n){var l=Nn();n={lane:l,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},$c(e)?Uh(t,n):(n=Mu(e,t,n,l),n!==null&&(dn(n,e,l),$h(n,t,l)))}function Bh(e,t,n){var l=Nn();oo(e,t,n,l)}function oo(e,t,n,l){var r={lane:l,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if($c(e))Uh(t,r);else{var u=e.alternate;if(e.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var g=t.lastRenderedState,b=u(g,n);if(r.hasEagerState=!0,r.eagerState=b,yn(b,g))return yc(e,t,r,0),Ie===null&&vc(),!1}catch{}finally{}if(n=Mu(e,t,r,l),n!==null)return dn(n,e,l),$h(n,t,l),!0}return!1}function p0(e,t,n,l){if(l={lane:2,revertLane:P0(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},$c(e)){if(t)throw Error(c(479))}else t=Mu(e,n,l,2),t!==null&&dn(t,e,2)}function $c(e){var t=e.alternate;return e===be||t!==null&&t===be}function Uh(e,t){Ys=Mc=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function $h(e,t,n){if((n&4194048)!==0){var l=t.lanes;l&=e.pendingLanes,n|=l,t.lanes=n,G2(e,n)}}var co={readContext:Ht,use:zc,useCallback:ut,useContext:ut,useEffect:ut,useImperativeHandle:ut,useLayoutEffect:ut,useInsertionEffect:ut,useMemo:ut,useReducer:ut,useRef:ut,useState:ut,useDebugValue:ut,useDeferredValue:ut,useTransition:ut,useSyncExternalStore:ut,useId:ut,useHostTransitionStatus:ut,useFormState:ut,useActionState:ut,useOptimistic:ut,useMemoCache:ut,useCacheRefresh:ut};co.useEffectEvent=ut;var Hh={readContext:Ht,use:zc,useCallback:function(e,t){return Xt().memoizedState=[e,t===void 0?null:t],e},useContext:Ht,useEffect:jh,useImperativeHandle:function(e,t,n){n=n!=null?n.concat([e]):null,Bc(4194308,4,Eh.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Bc(4194308,4,e,t)},useInsertionEffect:function(e,t){Bc(4,2,e,t)},useMemo:function(e,t){var n=Xt();t=t===void 0?null:t;var l=e();if(Il){Ia(!0);try{e()}finally{Ia(!1)}}return n.memoizedState=[l,t],l},useReducer:function(e,t,n){var l=Xt();if(n!==void 0){var r=n(t);if(Il){Ia(!0);try{n(t)}finally{Ia(!1)}}}else r=t;return l.memoizedState=l.baseState=r,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:r},l.queue=e,e=e.dispatch=hv.bind(null,be,e),[l.memoizedState,e]},useRef:function(e){var t=Xt();return e={current:e},t.memoizedState=e},useState:function(e){e=c0(e);var t=e.queue,n=Bh.bind(null,be,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:d0,useDeferredValue:function(e,t){var n=Xt();return f0(n,e,t)},useTransition:function(){var e=c0(!1);return e=Mh.bind(null,be,e.queue,!0,!1),Xt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var l=be,r=Xt();if(Oe){if(n===void 0)throw Error(c(407));n=n()}else{if(n=t(),Ie===null)throw Error(c(349));(ke&127)!==0||oh(l,t,n)}r.memoizedState=n;var u={value:n,getSnapshot:t};return r.queue=u,jh(rh.bind(null,l,u,e),[e]),l.flags|=2048,Is(9,{destroy:void 0},ch.bind(null,l,u,n,t),null),n},useId:function(){var e=Xt(),t=Ie.identifierPrefix;if(Oe){var n=sa,l=la;n=(l&~(1<<32-vn(l)-1)).toString(32)+n,t="_"+t+"R_"+n,n=Oc++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof l.is=="string"?g.createElement("select",{is:l.is}):g.createElement("select"),l.multiple?u.multiple=!0:l.size&&(u.size=l.size);break;default:u=typeof l.is=="string"?g.createElement(r,{is:l.is}):g.createElement(r)}}u[Ut]=t,u[ln]=l;e:for(g=t.child;g!==null;){if(g.tag===5||g.tag===6)u.appendChild(g.stateNode);else if(g.tag!==4&&g.tag!==27&&g.child!==null){g.child.return=g,g=g.child;continue}if(g===t)break e;for(;g.sibling===null;){if(g.return===null||g.return===t)break e;g=g.return}g.sibling.return=g.return,g=g.sibling}t.stateNode=u;e:switch(Ft(u,r,l),r){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&Ra(t)}}return et(t),R0(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==l&&Ra(t);else{if(typeof l!="string"&&t.stateNode===null)throw Error(c(166));if(e=xe.current,$s(t)){if(e=t.stateNode,n=t.memoizedProps,l=null,r=$t,r!==null)switch(r.tag){case 27:case 5:l=r.memoizedProps}e[Ut]=t,e=!!(e.nodeValue===n||l!==null&&l.suppressHydrationWarning===!0||sm(e.nodeValue,n)),e||Ja(t,!0)}else e=sr(e).createTextNode(l),e[Ut]=t,t.stateNode=e}return et(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(l=$s(t),n!==null){if(e===null){if(!l)throw Error(c(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(c(557));e[Ut]=t}else ql(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;et(t),e=!1}else n=$u(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Sn(t),t):(Sn(t),null);if((t.flags&128)!==0)throw Error(c(558))}return et(t),null;case 13:if(l=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(r=$s(t),l!==null&&l.dehydrated!==null){if(e===null){if(!r)throw Error(c(318));if(r=t.memoizedState,r=r!==null?r.dehydrated:null,!r)throw Error(c(317));r[Ut]=t}else ql(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;et(t),r=!1}else r=$u(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=r),r=!0;if(!r)return t.flags&256?(Sn(t),t):(Sn(t),null)}return Sn(t),(t.flags&128)!==0?(t.lanes=n,t):(n=l!==null,e=e!==null&&e.memoizedState!==null,n&&(l=t.child,r=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(r=l.alternate.memoizedState.cachePool.pool),u=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(u=l.memoizedState.cachePool.pool),u!==r&&(l.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Vc(t,t.updateQueue),et(t),null);case 4:return We(),e===null&&Z0(t.stateNode.containerInfo),et(t),null;case 10:return Na(t.type),et(t),null;case 19:if(V(mt),l=t.memoizedState,l===null)return et(t),null;if(r=(t.flags&128)!==0,u=l.rendering,u===null)if(r)uo(l,!1);else{if(dt!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(u=Ac(e),u!==null){for(t.flags|=128,uo(l,!1),e=u.updateQueue,t.updateQueue=e,Vc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Bf(n,e),n=n.sibling;return K(mt,mt.current&1|2),Oe&&ja(t,l.treeForkCount),t.child}e=e.sibling}l.tail!==null&&gn()>Xc&&(t.flags|=128,r=!0,uo(l,!1),t.lanes=4194304)}else{if(!r)if(e=Ac(u),e!==null){if(t.flags|=128,r=!0,e=e.updateQueue,t.updateQueue=e,Vc(t,e),uo(l,!0),l.tail===null&&l.tailMode==="hidden"&&!u.alternate&&!Oe)return et(t),null}else 2*gn()-l.renderingStartTime>Xc&&n!==536870912&&(t.flags|=128,r=!0,uo(l,!1),t.lanes=4194304);l.isBackwards?(u.sibling=t.child,t.child=u):(e=l.last,e!==null?e.sibling=u:t.child=u,l.last=u)}return l.tail!==null?(e=l.tail,l.rendering=e,l.tail=e.sibling,l.renderingStartTime=gn(),e.sibling=null,n=mt.current,K(mt,r?n&1|2:n&1),Oe&&ja(t,l.treeForkCount),e):(et(t),null);case 22:case 23:return Sn(t),Wu(),l=t.memoizedState!==null,e!==null?e.memoizedState!==null!==l&&(t.flags|=8192):l&&(t.flags|=8192),l?(n&536870912)!==0&&(t.flags&128)===0&&(et(t),t.subtreeFlags&6&&(t.flags|=8192)):et(t),n=t.updateQueue,n!==null&&Vc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),l=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),l!==n&&(t.flags|=2048),e!==null&&V(Vl),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Na(bt),et(t),null;case 25:return null;case 30:return null}throw Error(c(156,t.tag))}function vv(e,t){switch(Bu(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Na(bt),We(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return _a(t),null;case 31:if(t.memoizedState!==null){if(Sn(t),t.alternate===null)throw Error(c(340));ql()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Sn(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(c(340));ql()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return V(mt),null;case 4:return We(),null;case 10:return Na(t.type),null;case 22:case 23:return Sn(t),Wu(),e!==null&&V(Vl),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Na(bt),null;case 25:return null;default:return null}}function u1(e,t){switch(Bu(t),t.tag){case 3:Na(bt),We();break;case 26:case 27:case 5:_a(t);break;case 4:We();break;case 31:t.memoizedState!==null&&Sn(t);break;case 13:Sn(t);break;case 19:V(mt);break;case 10:Na(t.type);break;case 22:case 23:Sn(t),Wu(),e!==null&&V(Vl);break;case 24:Na(bt)}}function fo(e,t){try{var n=t.updateQueue,l=n!==null?n.lastEffect:null;if(l!==null){var r=l.next;n=r;do{if((n.tag&e)===e){l=void 0;var u=n.create,g=n.inst;l=u(),g.destroy=l}n=n.next}while(n!==r)}}catch(b){Fe(t,t.return,b)}}function il(e,t,n){try{var l=t.updateQueue,r=l!==null?l.lastEffect:null;if(r!==null){var u=r.next;l=u;do{if((l.tag&e)===e){var g=l.inst,b=g.destroy;if(b!==void 0){g.destroy=void 0,r=t;var E=n,z=b;try{z()}catch(F){Fe(r,E,F)}}}l=l.next}while(l!==u)}}catch(F){Fe(t,t.return,F)}}function d1(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{th(t,n)}catch(l){Fe(e,e.return,l)}}}function f1(e,t,n){n.props=Xl(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(l){Fe(e,t,l)}}function ho(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var l=e.stateNode;break;case 30:l=e.stateNode;break;default:l=e.stateNode}typeof n=="function"?e.refCleanup=n(l):n.current=l}}catch(r){Fe(e,t,r)}}function ia(e,t){var n=e.ref,l=e.refCleanup;if(n!==null)if(typeof l=="function")try{l()}catch(r){Fe(e,t,r)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(r){Fe(e,t,r)}else n.current=null}function h1(e){var t=e.type,n=e.memoizedProps,l=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&l.focus();break e;case"img":n.src?l.src=n.src:n.srcSet&&(l.srcset=n.srcSet)}}catch(r){Fe(e,e.return,r)}}function k0(e,t,n){try{var l=e.stateNode;Hv(l,e.type,n,t),l[ln]=t}catch(r){Fe(e,e.return,r)}}function m1(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&hl(e.type)||e.tag===4}function A0(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||m1(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&hl(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function M0(e,t,n){var l=e.tag;if(l===5||l===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=ba));else if(l!==4&&(l===27&&hl(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(M0(e,t,n),e=e.sibling;e!==null;)M0(e,t,n),e=e.sibling}function Qc(e,t,n){var l=e.tag;if(l===5||l===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(l!==4&&(l===27&&hl(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Qc(e,t,n),e=e.sibling;e!==null;)Qc(e,t,n),e=e.sibling}function p1(e){var t=e.stateNode,n=e.memoizedProps;try{for(var l=e.type,r=t.attributes;r.length;)t.removeAttributeNode(r[0]);Ft(t,l,n),t[Ut]=e,t[ln]=n}catch(u){Fe(e,e.return,u)}}var ka=!1,jt=!1,O0=!1,g1=typeof WeakSet=="function"?WeakSet:Set,Mt=null;function yv(e,t){if(e=e.containerInfo,ed=fr,e=Tf(e),Cu(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var l=n.getSelection&&n.getSelection();if(l&&l.rangeCount!==0){n=l.anchorNode;var r=l.anchorOffset,u=l.focusNode;l=l.focusOffset;try{n.nodeType,u.nodeType}catch{n=null;break e}var g=0,b=-1,E=-1,z=0,F=0,Q=e,B=null;t:for(;;){for(var $;Q!==n||r!==0&&Q.nodeType!==3||(b=g+r),Q!==u||l!==0&&Q.nodeType!==3||(E=g+l),Q.nodeType===3&&(g+=Q.nodeValue.length),($=Q.firstChild)!==null;)B=Q,Q=$;for(;;){if(Q===e)break t;if(B===n&&++z===r&&(b=g),B===u&&++F===l&&(E=g),($=Q.nextSibling)!==null)break;Q=B,B=Q.parentNode}Q=$}n=b===-1||E===-1?null:{start:b,end:E}}else n=null}n=n||{start:0,end:0}}else n=null;for(td={focusedElem:e,selectionRange:n},fr=!1,Mt=t;Mt!==null;)if(t=Mt,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Mt=e;else for(;Mt!==null;){switch(t=Mt,u=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(n=0;n title"))),Ft(u,l,n),u[Ut]=e,At(u),l=u;break e;case"link":var g=Sm("link","href",r).get(l+(n.href||""));if(g){for(var b=0;bYe&&(g=Ye,Ye=me,me=g);var M=Cf(b,me),k=Cf(b,Ye);if(M&&k&&($.rangeCount!==1||$.anchorNode!==M.node||$.anchorOffset!==M.offset||$.focusNode!==k.node||$.focusOffset!==k.offset)){var L=Q.createRange();L.setStart(M.node,M.offset),$.removeAllRanges(),me>Ye?($.addRange(L),$.extend(k.node,k.offset)):(L.setEnd(k.node,k.offset),$.addRange(L))}}}}for(Q=[],$=b;$=$.parentNode;)$.nodeType===1&&Q.push({element:$,left:$.scrollLeft,top:$.scrollTop});for(typeof b.focus=="function"&&b.focus(),b=0;bn?32:n,H.T=null,n=H0,H0=null;var u=ul,g=za;if(Et=0,Js=ul=null,za=0,($e&6)!==0)throw Error(c(331));var b=$e;if($e|=4,E1(u.current),w1(u,u.current,g,n),$e=b,yo(0,!1),_n&&typeof _n.onPostCommitFiberRoot=="function")try{_n.onPostCommitFiberRoot(Di,u)}catch{}return!0}finally{I.p=r,H.T=l,Q1(e,t)}}function P1(e,t,n){t=Dn(n,t),t=y0(e.stateNode,t,2),e=al(e,t,2),e!==null&&(Ui(e,2),oa(e))}function Fe(e,t,n){if(e.tag===3)P1(e,e,n);else for(;t!==null;){if(t.tag===3){P1(t,e,n);break}else if(t.tag===1){var l=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(rl===null||!rl.has(l))){e=Dn(n,e),n=Ih(2),l=al(t,n,2),l!==null&&(Xh(n,l,t,e),Ui(l,2),oa(l));break}}t=t.return}}function V0(e,t,n){var l=e.pingCache;if(l===null){l=e.pingCache=new Sv;var r=new Set;l.set(t,r)}else r=l.get(t),r===void 0&&(r=new Set,l.set(t,r));r.has(n)||(D0=!0,r.add(n),e=Ev.bind(null,e,t,n),t.then(e,e))}function Ev(e,t,n){var l=e.pingCache;l!==null&&l.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Ie===e&&(ke&n)===n&&(dt===4||dt===3&&(ke&62914560)===ke&&300>gn()-Ic?($e&2)===0&&ei(e,0):B0|=n,Ws===ke&&(Ws=0)),oa(e)}function I1(e,t){t===0&&(t=q2()),e=$l(e,t),e!==null&&(Ui(e,t),oa(e))}function Tv(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),I1(e,n)}function Rv(e,t){var n=0;switch(e.tag){case 31:case 13:var l=e.stateNode,r=e.memoizedState;r!==null&&(n=r.retryLane);break;case 19:l=e.stateNode;break;case 22:l=e.stateNode._retryCache;break;default:throw Error(c(314))}l!==null&&l.delete(t),I1(e,n)}function kv(e,t){return Ss(e,t)}var tr=null,ni=null,Q0=!1,nr=!1,Y0=!1,fl=0;function oa(e){e!==ni&&e.next===null&&(ni===null?tr=ni=e:ni=ni.next=e),nr=!0,Q0||(Q0=!0,Mv())}function yo(e,t){if(!Y0&&nr){Y0=!0;do for(var n=!1,l=tr;l!==null;){if(e!==0){var r=l.pendingLanes;if(r===0)var u=0;else{var g=l.suspendedLanes,b=l.pingedLanes;u=(1<<31-vn(42|e)+1)-1,u&=r&~(g&~b),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(n=!0,W1(l,u))}else u=ke,u=ic(l,l===Ie?u:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(u&3)===0||Bi(l,u)||(n=!0,W1(l,u));l=l.next}while(n);Y0=!1}}function Av(){X1()}function X1(){nr=Q0=!1;var e=0;fl!==0&&Fv()&&(e=fl);for(var t=gn(),n=null,l=tr;l!==null;){var r=l.next,u=K1(l,t);u===0?(l.next=null,n===null?tr=r:n.next=r,r===null&&(ni=n)):(n=l,(e!==0||(u&3)!==0)&&(nr=!0)),l=r}Et!==0&&Et!==5||yo(e),fl!==0&&(fl=0)}function K1(e,t){for(var n=e.suspendedLanes,l=e.pingedLanes,r=e.expirationTimes,u=e.pendingLanes&-62914561;0b)break;var F=E.transferSize,Q=E.initiatorType;F&&im(Q)&&(E=E.responseEnd,g+=F*(E"u"?null:document;function vm(e,t,n){var l=ai;if(l&&typeof t=="string"&&t){var r=Ln(t);r='link[rel="'+e+'"][href="'+r+'"]',typeof n=="string"&&(r+='[crossorigin="'+n+'"]'),_m.has(r)||(_m.add(r),e={rel:e,crossOrigin:n,href:t},l.querySelector(r)===null&&(t=l.createElement("link"),Ft(t,"link",e),At(t),l.head.appendChild(t)))}}function Zv(e){Da.D(e),vm("dns-prefetch",e,null)}function Wv(e,t){Da.C(e,t),vm("preconnect",e,t)}function Jv(e,t,n){Da.L(e,t,n);var l=ai;if(l&&e&&t){var r='link[rel="preload"][as="'+Ln(t)+'"]';t==="image"&&n&&n.imageSrcSet?(r+='[imagesrcset="'+Ln(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(r+='[imagesizes="'+Ln(n.imageSizes)+'"]')):r+='[href="'+Ln(e)+'"]';var u=r;switch(t){case"style":u=li(e);break;case"script":u=si(e)}Fn.has(u)||(e=y({rel:"preload",href:t==="image"&&n&&n.imageSrcSet?void 0:e,as:t},n),Fn.set(u,e),l.querySelector(r)!==null||t==="style"&&l.querySelector(jo(u))||t==="script"&&l.querySelector(wo(u))||(t=l.createElement("link"),Ft(t,"link",e),At(t),l.head.appendChild(t)))}}function ey(e,t){Da.m(e,t);var n=ai;if(n&&e){var l=t&&typeof t.as=="string"?t.as:"script",r='link[rel="modulepreload"][as="'+Ln(l)+'"][href="'+Ln(e)+'"]',u=r;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=si(e)}if(!Fn.has(u)&&(e=y({rel:"modulepreload",href:e},t),Fn.set(u,e),n.querySelector(r)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(wo(u)))return}l=n.createElement("link"),Ft(l,"link",e),At(l),n.head.appendChild(l)}}}function ty(e,t,n){Da.S(e,t,n);var l=ai;if(l&&e){var r=Cs(l).hoistableStyles,u=li(e);t=t||"default";var g=r.get(u);if(!g){var b={loading:0,preload:null};if(g=l.querySelector(jo(u)))b.loading=5;else{e=y({rel:"stylesheet",href:e,"data-precedence":t},n),(n=Fn.get(u))&&cd(e,n);var E=g=l.createElement("link");At(E),Ft(E,"link",e),E._p=new Promise(function(z,F){E.onload=z,E.onerror=F}),E.addEventListener("load",function(){b.loading|=1}),E.addEventListener("error",function(){b.loading|=2}),b.loading|=4,or(g,t,l)}g={type:"stylesheet",instance:g,count:1,state:b},r.set(u,g)}}}function ny(e,t){Da.X(e,t);var n=ai;if(n&&e){var l=Cs(n).hoistableScripts,r=si(e),u=l.get(r);u||(u=n.querySelector(wo(r)),u||(e=y({src:e,async:!0},t),(t=Fn.get(r))&&rd(e,t),u=n.createElement("script"),At(u),Ft(u,"link",e),n.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},l.set(r,u))}}function ay(e,t){Da.M(e,t);var n=ai;if(n&&e){var l=Cs(n).hoistableScripts,r=si(e),u=l.get(r);u||(u=n.querySelector(wo(r)),u||(e=y({src:e,async:!0,type:"module"},t),(t=Fn.get(r))&&rd(e,t),u=n.createElement("script"),At(u),Ft(u,"link",e),n.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},l.set(r,u))}}function ym(e,t,n,l){var r=(r=xe.current)?ir(r):null;if(!r)throw Error(c(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(t=li(n.href),n=Cs(r).hoistableStyles,l=n.get(t),l||(l={type:"style",instance:null,count:0,state:null},n.set(t,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=li(n.href);var u=Cs(r).hoistableStyles,g=u.get(e);if(g||(r=r.ownerDocument||r,g={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(e,g),(u=r.querySelector(jo(e)))&&!u._p&&(g.instance=u,g.state.loading=5),Fn.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},Fn.set(e,n),u||ly(r,e,n,g.state))),t&&l===null)throw Error(c(528,""));return g}if(t&&l!==null)throw Error(c(529,""));return null;case"script":return t=n.async,n=n.src,typeof n=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=si(n),n=Cs(r).hoistableScripts,l=n.get(t),l||(l={type:"script",instance:null,count:0,state:null},n.set(t,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(c(444,e))}}function li(e){return'href="'+Ln(e)+'"'}function jo(e){return'link[rel="stylesheet"]['+e+"]"}function bm(e){return y({},e,{"data-precedence":e.precedence,precedence:null})}function ly(e,t,n,l){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?l.loading=1:(t=e.createElement("link"),l.preload=t,t.addEventListener("load",function(){return l.loading|=1}),t.addEventListener("error",function(){return l.loading|=2}),Ft(t,"link",n),At(t),e.head.appendChild(t))}function si(e){return'[src="'+Ln(e)+'"]'}function wo(e){return"script[async]"+e}function xm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case"style":var l=e.querySelector('style[data-href~="'+Ln(n.href)+'"]');if(l)return t.instance=l,At(l),l;var r=y({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return l=(e.ownerDocument||e).createElement("style"),At(l),Ft(l,"style",r),or(l,n.precedence,e),t.instance=l;case"stylesheet":r=li(n.href);var u=e.querySelector(jo(r));if(u)return t.state.loading|=4,t.instance=u,At(u),u;l=bm(n),(r=Fn.get(r))&&cd(l,r),u=(e.ownerDocument||e).createElement("link"),At(u);var g=u;return g._p=new Promise(function(b,E){g.onload=b,g.onerror=E}),Ft(u,"link",l),t.state.loading|=4,or(u,n.precedence,e),t.instance=u;case"script":return u=si(n.src),(r=e.querySelector(wo(u)))?(t.instance=r,At(r),r):(l=n,(r=Fn.get(u))&&(l=y({},n),rd(l,r)),e=e.ownerDocument||e,r=e.createElement("script"),At(r),Ft(r,"link",l),e.head.appendChild(r),t.instance=r);case"void":return null;default:throw Error(c(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(l=t.instance,t.state.loading|=4,or(l,n.precedence,e));return t.instance}function or(e,t,n){for(var l=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),r=l.length?l[l.length-1]:null,u=r,g=0;g title"):null)}function sy(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function wm(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function iy(e,t,n,l){if(n.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var r=li(l.href),u=t.querySelector(jo(r));if(u){t=u._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=rr.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=u,At(u);return}u=t.ownerDocument||t,l=bm(l),(r=Fn.get(r))&&cd(l,r),u=u.createElement("link"),At(u);var g=u;g._p=new Promise(function(b,E){g.onload=b,g.onerror=E}),Ft(u,"link",l),n.instance=u}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&(n.state.loading&3)===0&&(e.count++,n=rr.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}var ud=0;function oy(e,t){return e.stylesheets&&e.count===0&&dr(e,e.stylesheets),0ud?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(l),clearTimeout(r)}}:null}function rr(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)dr(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var ur=null;function dr(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,ur=new Map,t.forEach(cy,e),ur=null,rr.call(e))}function cy(e,t){if(!(t.state.loading&4)){var n=ur.get(e);if(n)var l=n.get(null);else{n=new Map,ur.set(e,n);for(var r=e.querySelectorAll("link[data-precedence],style[data-precedence]"),u=0;u"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(a)}catch(s){console.error(s)}}return a(),bd.exports=wy(),bd.exports}var Cy=Ny();/** + * react-router v7.14.2 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */var Xm="popstate";function Km(a){return typeof a=="object"&&a!=null&&"pathname"in a&&"search"in a&&"hash"in a&&"state"in a&&"key"in a}function Ey(a={}){function s(c,d){var p;let f=(p=d.state)==null?void 0:p.masked,{pathname:m,search:_,hash:h}=f||c.location;return Vd("",{pathname:m,search:_,hash:h},d.state&&d.state.usr||null,d.state&&d.state.key||"default",f?{pathname:c.location.pathname,search:c.location.search,hash:c.location.hash}:void 0)}function i(c,d){return typeof d=="string"?d:Ho(d)}return Ry(s,i,null,a)}function ot(a,s){if(a===!1||a===null||typeof a>"u")throw new Error(s)}function Wn(a,s){if(!a){typeof console<"u"&&console.warn(s);try{throw new Error(s)}catch{}}}function Ty(){return Math.random().toString(36).substring(2,10)}function Zm(a,s){return{usr:a.state,key:a.key,idx:s,masked:a.unstable_mask?{pathname:a.pathname,search:a.search,hash:a.hash}:void 0}}function Vd(a,s,i=null,c,d){return{pathname:typeof a=="string"?a:a.pathname,search:"",hash:"",...typeof s=="string"?Ai(s):s,state:i,key:s&&s.key||c||Ty(),unstable_mask:d}}function Ho({pathname:a="/",search:s="",hash:i=""}){return s&&s!=="?"&&(a+=s.charAt(0)==="?"?s:"?"+s),i&&i!=="#"&&(a+=i.charAt(0)==="#"?i:"#"+i),a}function Ai(a){let s={};if(a){let i=a.indexOf("#");i>=0&&(s.hash=a.substring(i),a=a.substring(0,i));let c=a.indexOf("?");c>=0&&(s.search=a.substring(c),a=a.substring(0,c)),a&&(s.pathname=a)}return s}function Ry(a,s,i,c={}){let{window:d=document.defaultView,v5Compat:f=!1}=c,m=d.history,_="POP",h=null,p=v();p==null&&(p=0,m.replaceState({...m.state,idx:p},""));function v(){return(m.state||{idx:null}).idx}function y(){_="POP";let C=v(),A=C==null?null:C-p;p=C,h&&h({action:_,location:N.location,delta:A})}function x(C,A){_="PUSH";let D=Km(C)?C:Vd(N.location,C,A);p=v()+1;let O=Zm(D,p),q=N.createHref(D.unstable_mask||D);try{m.pushState(O,"",q)}catch(Y){if(Y instanceof DOMException&&Y.name==="DataCloneError")throw Y;d.location.assign(q)}f&&h&&h({action:_,location:N.location,delta:1})}function j(C,A){_="REPLACE";let D=Km(C)?C:Vd(N.location,C,A);p=v();let O=Zm(D,p),q=N.createHref(D.unstable_mask||D);m.replaceState(O,"",q),f&&h&&h({action:_,location:N.location,delta:0})}function w(C){return ky(C)}let N={get action(){return _},get location(){return a(d,m)},listen(C){if(h)throw new Error("A history only accepts one active listener");return d.addEventListener(Xm,y),h=C,()=>{d.removeEventListener(Xm,y),h=null}},createHref(C){return s(d,C)},createURL:w,encodeLocation(C){let A=w(C);return{pathname:A.pathname,search:A.search,hash:A.hash}},push:x,replace:j,go(C){return m.go(C)}};return N}function ky(a,s=!1){let i="http://localhost";typeof window<"u"&&(i=window.location.origin!=="null"?window.location.origin:window.location.href),ot(i,"No window.location.(origin|href) available to create URL");let c=typeof a=="string"?a:Ho(a);return c=c.replace(/ $/,"%20"),!s&&c.startsWith("//")&&(c=i+c),new URL(c,i)}function j3(a,s,i="/"){return Ay(a,s,i,!1)}function Ay(a,s,i,c){let d=typeof s=="string"?Ai(s):s,f=Qa(d.pathname||"/",i);if(f==null)return null;let m=w3(a);My(m);let _=null;for(let h=0;_==null&&h{let v={relativePath:p===void 0?m.path||"":p,caseSensitive:m.caseSensitive===!0,childrenIndex:_,route:m};if(v.relativePath.startsWith("/")){if(!v.relativePath.startsWith(c)&&h)return;ot(v.relativePath.startsWith(c),`Absolute route path "${v.relativePath}" nested under path "${c}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),v.relativePath=v.relativePath.slice(c.length)}let y=Zn([c,v.relativePath]),x=i.concat(v);m.children&&m.children.length>0&&(ot(m.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${y}".`),w3(m.children,s,x,y,h)),!(m.path==null&&!m.index)&&s.push({path:y,score:$y(y,m.index),routesMeta:x})};return a.forEach((m,_)=>{var h;if(m.path===""||!((h=m.path)!=null&&h.includes("?")))f(m,_);else for(let p of N3(m.path))f(m,_,!0,p)}),s}function N3(a){let s=a.split("/");if(s.length===0)return[];let[i,...c]=s,d=i.endsWith("?"),f=i.replace(/\?$/,"");if(c.length===0)return d?[f,""]:[f];let m=N3(c.join("/")),_=[];return _.push(...m.map(h=>h===""?f:[f,h].join("/"))),d&&_.push(...m),_.map(h=>a.startsWith("/")&&h===""?"/":h)}function My(a){a.sort((s,i)=>s.score!==i.score?i.score-s.score:Hy(s.routesMeta.map(c=>c.childrenIndex),i.routesMeta.map(c=>c.childrenIndex)))}var Oy=/^:[\w-]+$/,Ly=3,zy=2,Dy=1,By=10,Uy=-2,Wm=a=>a==="*";function $y(a,s){let i=a.split("/"),c=i.length;return i.some(Wm)&&(c+=Uy),s&&(c+=zy),i.filter(d=>!Wm(d)).reduce((d,f)=>d+(Oy.test(f)?Ly:f===""?Dy:By),c)}function Hy(a,s){return a.length===s.length&&a.slice(0,-1).every((c,d)=>c===s[d])?a[a.length-1]-s[s.length-1]:0}function qy(a,s,i=!1){let{routesMeta:c}=a,d={},f="/",m=[];for(let _=0;_{if(v==="*"){let w=_[x]||"";m=f.slice(0,f.length-w.length).replace(/(.)\/+$/,"$1")}const j=_[x];return y&&!j?p[v]=void 0:p[v]=(j||"").replace(/%2F/g,"/"),p},{}),pathname:f,pathnameBase:m,pattern:a}}function Fy(a,s=!1,i=!0){Wn(a==="*"||!a.endsWith("*")||a.endsWith("/*"),`Route path "${a}" will be treated as if it were "${a.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${a.replace(/\*$/,"/*")}".`);let c=[],d="^"+a.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(m,_,h,p,v)=>{if(c.push({paramName:_,isOptional:h!=null}),h){let y=v.charAt(p+m.length);return y&&y!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return a.endsWith("*")?(c.push({paramName:"*"}),d+=a==="*"||a==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):i?d+="\\/*$":a!==""&&a!=="/"&&(d+="(?:(?=\\/|$))"),[new RegExp(d,s?void 0:"i"),c]}function Gy(a){try{return a.split("/").map(s=>decodeURIComponent(s).replace(/\//g,"%2F")).join("/")}catch(s){return Wn(!1,`The URL path "${a}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${s}).`),a}}function Qa(a,s){if(s==="/")return a;if(!a.toLowerCase().startsWith(s.toLowerCase()))return null;let i=s.endsWith("/")?s.length-1:s.length,c=a.charAt(i);return c&&c!=="/"?null:a.slice(i)||"/"}var Vy=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function Qy(a,s="/"){let{pathname:i,search:c="",hash:d=""}=typeof a=="string"?Ai(a):a,f;return i?(i=C3(i),i.startsWith("/")?f=Jm(i.substring(1),"/"):f=Jm(i,s)):f=s,{pathname:f,search:Iy(c),hash:Xy(d)}}function Jm(a,s){let i=Br(s).split("/");return a.split("/").forEach(d=>{d===".."?i.length>1&&i.pop():d!=="."&&i.push(d)}),i.length>1?i.join("/"):"/"}function wd(a,s,i,c){return`Cannot include a '${a}' character in a manually specified \`to.${s}\` field [${JSON.stringify(c)}]. Please separate it out to the \`to.${i}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function Yy(a){return a.filter((s,i)=>i===0||s.route.path&&s.route.path.length>0)}function _2(a){let s=Yy(a);return s.map((i,c)=>c===s.length-1?i.pathname:i.pathnameBase)}function Vr(a,s,i,c=!1){let d;typeof a=="string"?d=Ai(a):(d={...a},ot(!d.pathname||!d.pathname.includes("?"),wd("?","pathname","search",d)),ot(!d.pathname||!d.pathname.includes("#"),wd("#","pathname","hash",d)),ot(!d.search||!d.search.includes("#"),wd("#","search","hash",d)));let f=a===""||d.pathname==="",m=f?"/":d.pathname,_;if(m==null)_=i;else{let y=s.length-1;if(!c&&m.startsWith("..")){let x=m.split("/");for(;x[0]==="..";)x.shift(),y-=1;d.pathname=x.join("/")}_=y>=0?s[y]:"/"}let h=Qy(d,_),p=m&&m!=="/"&&m.endsWith("/"),v=(f||m===".")&&i.endsWith("/");return!h.pathname.endsWith("/")&&(p||v)&&(h.pathname+="/"),h}var C3=a=>a.replace(/\/\/+/g,"/"),Zn=a=>C3(a.join("/")),Br=a=>a.replace(/\/+$/,""),Py=a=>Br(a).replace(/^\/*/,"/"),Iy=a=>!a||a==="?"?"":a.startsWith("?")?a:"?"+a,Xy=a=>!a||a==="#"?"":a.startsWith("#")?a:"#"+a,Ky=class{constructor(a,s,i,c=!1){this.status=a,this.statusText=s||"",this.internal=c,i instanceof Error?(this.data=i.toString(),this.error=i):this.data=i}};function Zy(a){return a!=null&&typeof a.status=="number"&&typeof a.statusText=="string"&&typeof a.internal=="boolean"&&"data"in a}function Wy(a){let s=a.map(i=>i.route.path).filter(Boolean);return Zn(s)||"/"}var E3=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function T3(a,s){let i=a;if(typeof i!="string"||!Vy.test(i))return{absoluteURL:void 0,isExternal:!1,to:i};let c=i,d=!1;if(E3)try{let f=new URL(window.location.href),m=i.startsWith("//")?new URL(f.protocol+i):new URL(i),_=Qa(m.pathname,s);m.origin===f.origin&&_!=null?i=_+m.search+m.hash:d=!0}catch{Wn(!1,` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:c,isExternal:d,to:i}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var R3=["POST","PUT","PATCH","DELETE"];new Set(R3);var Jy=["GET",...R3];new Set(Jy);var Mi=S.createContext(null);Mi.displayName="DataRouter";var Qr=S.createContext(null);Qr.displayName="DataRouterState";var k3=S.createContext(!1);function e4(){return S.useContext(k3)}var A3=S.createContext({isTransitioning:!1});A3.displayName="ViewTransition";var t4=S.createContext(new Map);t4.displayName="Fetchers";var n4=S.createContext(null);n4.displayName="Await";var kn=S.createContext(null);kn.displayName="Navigation";var Ko=S.createContext(null);Ko.displayName="Location";var Yn=S.createContext({outlet:null,matches:[],isDataRoute:!1});Yn.displayName="Route";var v2=S.createContext(null);v2.displayName="RouteError";var M3="REACT_ROUTER_ERROR",a4="REDIRECT",l4="ROUTE_ERROR_RESPONSE";function s4(a){if(a.startsWith(`${M3}:${a4}:{`))try{let s=JSON.parse(a.slice(28));if(typeof s=="object"&&s&&typeof s.status=="number"&&typeof s.statusText=="string"&&typeof s.location=="string"&&typeof s.reloadDocument=="boolean"&&typeof s.replace=="boolean")return s}catch{}}function i4(a){if(a.startsWith(`${M3}:${l4}:{`))try{let s=JSON.parse(a.slice(40));if(typeof s=="object"&&s&&typeof s.status=="number"&&typeof s.statusText=="string")return new Ky(s.status,s.statusText,s.data)}catch{}}function o4(a,{relative:s}={}){ot(Oi(),"useHref() may be used only in the context of a component.");let{basename:i,navigator:c}=S.useContext(kn),{hash:d,pathname:f,search:m}=Zo(a,{relative:s}),_=f;return i!=="/"&&(_=f==="/"?i:Zn([i,f])),c.createHref({pathname:_,search:m,hash:d})}function Oi(){return S.useContext(Ko)!=null}function An(){return ot(Oi(),"useLocation() may be used only in the context of a component."),S.useContext(Ko).location}var O3="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function L3(a){S.useContext(kn).static||S.useLayoutEffect(a)}function Mn(){let{isDataRoute:a}=S.useContext(Yn);return a?j4():c4()}function c4(){ot(Oi(),"useNavigate() may be used only in the context of a component.");let a=S.useContext(Mi),{basename:s,navigator:i}=S.useContext(kn),{matches:c}=S.useContext(Yn),{pathname:d}=An(),f=JSON.stringify(_2(c)),m=S.useRef(!1);return L3(()=>{m.current=!0}),S.useCallback((h,p={})=>{if(Wn(m.current,O3),!m.current)return;if(typeof h=="number"){i.go(h);return}let v=Vr(h,JSON.parse(f),d,p.relative==="path");a==null&&s!=="/"&&(v.pathname=v.pathname==="/"?s:Zn([s,v.pathname])),(p.replace?i.replace:i.push)(v,p.state,p)},[s,i,f,d,a])}var r4=S.createContext(null);function u4(a){let s=S.useContext(Yn).outlet;return S.useMemo(()=>s&&S.createElement(r4.Provider,{value:a},s),[s,a])}function d4(){let{matches:a}=S.useContext(Yn),s=a[a.length-1];return(s==null?void 0:s.params)??{}}function Zo(a,{relative:s}={}){let{matches:i}=S.useContext(Yn),{pathname:c}=An(),d=JSON.stringify(_2(i));return S.useMemo(()=>Vr(a,JSON.parse(d),c,s==="path"),[a,d,c,s])}function f4(a,s){return z3(a,s)}function z3(a,s,i){var C;ot(Oi(),"useRoutes() may be used only in the context of a component.");let{navigator:c}=S.useContext(kn),{matches:d}=S.useContext(Yn),f=d[d.length-1],m=f?f.params:{},_=f?f.pathname:"/",h=f?f.pathnameBase:"/",p=f&&f.route;{let A=p&&p.path||"";B3(_,!p||A.endsWith("*")||A.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${_}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. + +Please change the parent to .`)}let v=An(),y;if(s){let A=typeof s=="string"?Ai(s):s;ot(h==="/"||((C=A.pathname)==null?void 0:C.startsWith(h)),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${h}" but pathname "${A.pathname}" was given in the \`location\` prop.`),y=A}else y=v;let x=y.pathname||"/",j=x;if(h!=="/"){let A=h.replace(/^\//,"").split("/");j="/"+x.replace(/^\//,"").split("/").slice(A.length).join("/")}let w=j3(a,{pathname:j});Wn(p||w!=null,`No routes matched location "${y.pathname}${y.search}${y.hash}" `),Wn(w==null||w[w.length-1].route.element!==void 0||w[w.length-1].route.Component!==void 0||w[w.length-1].route.lazy!==void 0,`Matched leaf route at location "${y.pathname}${y.search}${y.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let N=_4(w&&w.map(A=>Object.assign({},A,{params:Object.assign({},m,A.params),pathname:Zn([h,c.encodeLocation?c.encodeLocation(A.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:A.pathname]),pathnameBase:A.pathnameBase==="/"?h:Zn([h,c.encodeLocation?c.encodeLocation(A.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:A.pathnameBase])})),d,i);return s&&N?S.createElement(Ko.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",unstable_mask:void 0,...y},navigationType:"POP"}},N):N}function h4(){let a=S4(),s=Zy(a)?`${a.status} ${a.statusText}`:a instanceof Error?a.message:JSON.stringify(a),i=a instanceof Error?a.stack:null,c="rgba(200,200,200, 0.5)",d={padding:"0.5rem",backgroundColor:c},f={padding:"2px 4px",backgroundColor:c},m=null;return console.error("Error handled by React Router default ErrorBoundary:",a),m=S.createElement(S.Fragment,null,S.createElement("p",null,"💿 Hey developer 👋"),S.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",S.createElement("code",{style:f},"ErrorBoundary")," or"," ",S.createElement("code",{style:f},"errorElement")," prop on your route.")),S.createElement(S.Fragment,null,S.createElement("h2",null,"Unexpected Application Error!"),S.createElement("h3",{style:{fontStyle:"italic"}},s),i?S.createElement("pre",{style:d},i):null,m)}var m4=S.createElement(h4,null),D3=class extends S.Component{constructor(a){super(a),this.state={location:a.location,revalidation:a.revalidation,error:a.error}}static getDerivedStateFromError(a){return{error:a}}static getDerivedStateFromProps(a,s){return s.location!==a.location||s.revalidation!=="idle"&&a.revalidation==="idle"?{error:a.error,location:a.location,revalidation:a.revalidation}:{error:a.error!==void 0?a.error:s.error,location:s.location,revalidation:a.revalidation||s.revalidation}}componentDidCatch(a,s){this.props.onError?this.props.onError(a,s):console.error("React Router caught the following error during render",a)}render(){let a=this.state.error;if(this.context&&typeof a=="object"&&a&&"digest"in a&&typeof a.digest=="string"){const i=i4(a.digest);i&&(a=i)}let s=a!==void 0?S.createElement(Yn.Provider,{value:this.props.routeContext},S.createElement(v2.Provider,{value:a,children:this.props.component})):this.props.children;return this.context?S.createElement(p4,{error:a},s):s}};D3.contextType=k3;var Nd=new WeakMap;function p4({children:a,error:s}){let{basename:i}=S.useContext(kn);if(typeof s=="object"&&s&&"digest"in s&&typeof s.digest=="string"){let c=s4(s.digest);if(c){let d=Nd.get(s);if(d)throw d;let f=T3(c.location,i);if(E3&&!Nd.get(s))if(f.isExternal||c.reloadDocument)window.location.href=f.absoluteURL||f.to;else{const m=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(f.to,{replace:c.replace}));throw Nd.set(s,m),m}return S.createElement("meta",{httpEquiv:"refresh",content:`0;url=${f.absoluteURL||f.to}`})}}return a}function g4({routeContext:a,match:s,children:i}){let c=S.useContext(Mi);return c&&c.static&&c.staticContext&&(s.route.errorElement||s.route.ErrorBoundary)&&(c.staticContext._deepestRenderedBoundaryId=s.route.id),S.createElement(Yn.Provider,{value:a},i)}function _4(a,s=[],i){let c=i==null?void 0:i.state;if(a==null){if(!c)return null;if(c.errors)a=c.matches;else if(s.length===0&&!c.initialized&&c.matches.length>0)a=c.matches;else return null}let d=a,f=c==null?void 0:c.errors;if(f!=null){let v=d.findIndex(y=>y.route.id&&(f==null?void 0:f[y.route.id])!==void 0);ot(v>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(f).join(",")}`),d=d.slice(0,Math.min(d.length,v+1))}let m=!1,_=-1;if(i&&c){m=c.renderFallback;for(let v=0;v=0?d=d.slice(0,_+1):d=[d[0]];break}}}}let h=i==null?void 0:i.onError,p=c&&h?(v,y)=>{var x,j;h(v,{location:c.location,params:((j=(x=c.matches)==null?void 0:x[0])==null?void 0:j.params)??{},unstable_pattern:Wy(c.matches),errorInfo:y})}:void 0;return d.reduceRight((v,y,x)=>{let j,w=!1,N=null,C=null;c&&(j=f&&y.route.id?f[y.route.id]:void 0,N=y.route.errorElement||m4,m&&(_<0&&x===0?(B3("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),w=!0,C=null):_===x&&(w=!0,C=y.route.hydrateFallbackElement||null)));let A=s.concat(d.slice(0,x+1)),D=()=>{let O;return j?O=N:w?O=C:y.route.Component?O=S.createElement(y.route.Component,null):y.route.element?O=y.route.element:O=v,S.createElement(g4,{match:y,routeContext:{outlet:v,matches:A,isDataRoute:c!=null},children:O})};return c&&(y.route.ErrorBoundary||y.route.errorElement||x===0)?S.createElement(D3,{location:c.location,revalidation:c.revalidation,component:N,error:j,children:D(),routeContext:{outlet:null,matches:A,isDataRoute:!0},onError:p}):D()},null)}function y2(a){return`${a} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function v4(a){let s=S.useContext(Mi);return ot(s,y2(a)),s}function y4(a){let s=S.useContext(Qr);return ot(s,y2(a)),s}function b4(a){let s=S.useContext(Yn);return ot(s,y2(a)),s}function b2(a){let s=b4(a),i=s.matches[s.matches.length-1];return ot(i.route.id,`${a} can only be used on routes that contain a unique "id"`),i.route.id}function x4(){return b2("useRouteId")}function S4(){var c;let a=S.useContext(v2),s=y4("useRouteError"),i=b2("useRouteError");return a!==void 0?a:(c=s.errors)==null?void 0:c[i]}function j4(){let{router:a}=v4("useNavigate"),s=b2("useNavigate"),i=S.useRef(!1);return L3(()=>{i.current=!0}),S.useCallback(async(d,f={})=>{Wn(i.current,O3),i.current&&(typeof d=="number"?await a.navigate(d):await a.navigate(d,{fromRouteId:s,...f}))},[a,s])}var ep={};function B3(a,s,i){!s&&!ep[a]&&(ep[a]=!0,Wn(!1,i))}S.memo(w4);function w4({routes:a,future:s,state:i,isStatic:c,onError:d}){return z3(a,void 0,{state:i,isStatic:c,onError:d})}function Yr({to:a,replace:s,state:i,relative:c}){ot(Oi()," may be used only in the context of a component.");let{static:d}=S.useContext(kn);Wn(!d," must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.");let{matches:f}=S.useContext(Yn),{pathname:m}=An(),_=Mn(),h=Vr(a,_2(f),m,c==="path"),p=JSON.stringify(h);return S.useEffect(()=>{_(JSON.parse(p),{replace:s,state:i,relative:c})},[_,p,c,s,i]),null}function x2(a){return u4(a.context)}function Xe(a){ot(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function N4({basename:a="/",children:s=null,location:i,navigationType:c="POP",navigator:d,static:f=!1,unstable_useTransitions:m}){ot(!Oi(),"You cannot render a inside another . You should never have more than one in your app.");let _=a.replace(/^\/*/,"/"),h=S.useMemo(()=>({basename:_,navigator:d,static:f,unstable_useTransitions:m,future:{}}),[_,d,f,m]);typeof i=="string"&&(i=Ai(i));let{pathname:p="/",search:v="",hash:y="",state:x=null,key:j="default",unstable_mask:w}=i,N=S.useMemo(()=>{let C=Qa(p,_);return C==null?null:{location:{pathname:C,search:v,hash:y,state:x,key:j,unstable_mask:w},navigationType:c}},[_,p,v,y,x,j,c,w]);return Wn(N!=null,` is not able to match the URL "${p}${v}${y}" because it does not start with the basename, so the won't render anything.`),N==null?null:S.createElement(kn.Provider,{value:h},S.createElement(Ko.Provider,{children:s,value:N}))}function C4({children:a,location:s}){return f4(Qd(a),s)}function Qd(a,s=[]){let i=[];return S.Children.forEach(a,(c,d)=>{if(!S.isValidElement(c))return;let f=[...s,d];if(c.type===S.Fragment){i.push.apply(i,Qd(c.props.children,f));return}ot(c.type===Xe,`[${typeof c.type=="string"?c.type:c.type.name}] is not a component. All component children of must be a or `),ot(!c.props.index||!c.props.children,"An index route cannot have child routes.");let m={id:c.props.id||f.join("-"),caseSensitive:c.props.caseSensitive,element:c.props.element,Component:c.props.Component,index:c.props.index,path:c.props.path,middleware:c.props.middleware,loader:c.props.loader,action:c.props.action,hydrateFallbackElement:c.props.hydrateFallbackElement,HydrateFallback:c.props.HydrateFallback,errorElement:c.props.errorElement,ErrorBoundary:c.props.ErrorBoundary,hasErrorBoundary:c.props.hasErrorBoundary===!0||c.props.ErrorBoundary!=null||c.props.errorElement!=null,shouldRevalidate:c.props.shouldRevalidate,handle:c.props.handle,lazy:c.props.lazy};c.props.children&&(m.children=Qd(c.props.children,f)),i.push(m)}),i}var Or="get",Lr="application/x-www-form-urlencoded";function Pr(a){return typeof HTMLElement<"u"&&a instanceof HTMLElement}function E4(a){return Pr(a)&&a.tagName.toLowerCase()==="button"}function T4(a){return Pr(a)&&a.tagName.toLowerCase()==="form"}function R4(a){return Pr(a)&&a.tagName.toLowerCase()==="input"}function k4(a){return!!(a.metaKey||a.altKey||a.ctrlKey||a.shiftKey)}function A4(a,s){return a.button===0&&(!s||s==="_self")&&!k4(a)}var br=null;function M4(){if(br===null)try{new FormData(document.createElement("form"),0),br=!1}catch{br=!0}return br}var O4=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Cd(a){return a!=null&&!O4.has(a)?(Wn(!1,`"${a}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${Lr}"`),null):a}function L4(a,s){let i,c,d,f,m;if(T4(a)){let _=a.getAttribute("action");c=_?Qa(_,s):null,i=a.getAttribute("method")||Or,d=Cd(a.getAttribute("enctype"))||Lr,f=new FormData(a)}else if(E4(a)||R4(a)&&(a.type==="submit"||a.type==="image")){let _=a.form;if(_==null)throw new Error('Cannot submit a + + {notice && ( + + )} + + ) +} diff --git a/src/widgets/profile/index.ts b/src/widgets/profile/index.ts index dc881b0..bdcd6aa 100644 --- a/src/widgets/profile/index.ts +++ b/src/widgets/profile/index.ts @@ -1,2 +1,7 @@ export { ProfileAvatar } from './ui/ProfileAvatar' export { ProfileSection } from './ui/ProfileSection' +export { ProfileSummary } from './ui/ProfileSummary' +export { ProfileDetails } from './ui/ProfileDetails' +export { SecuritySection } from './ui/SecuritySection' +export { MnemonicSection } from './ui/MnemonicSection' +export { KycBanner } from './ui/KycBanner' diff --git a/src/widgets/profile/model/usePhoneField.ts b/src/widgets/profile/model/usePhoneField.ts new file mode 100644 index 0000000..ada624f --- /dev/null +++ b/src/widgets/profile/model/usePhoneField.ts @@ -0,0 +1,47 @@ +import { useEffect, useState } from 'react' +import { useUpdatePhone } from '@features/auth' + +type PhoneNotification = { message: string; status: 'success' | 'error' } + +// Owns the editable phone field: local value synced from the server, input +// sanitization, save-on-blur, and the resulting success/error notification. +// The notification has no meaning outside this flow, so it lives here too. +export function usePhoneField(serverPhone: string | null) { + const updatePhone = useUpdatePhone() + const [phone, setPhone] = useState('') + const [savedPhone, setSavedPhone] = useState('') + const [notification, setNotification] = useState(null) + + useEffect(() => { + if (serverPhone != null) { + setPhone(serverPhone) + setSavedPhone(serverPhone) + } + }, [serverPhone]) + + function onPhoneChange(value: string) { + setPhone(value.replace(/[^\d+\s()-]/g, '')) + } + + function onPhoneBlur() { + const next = phone.trim() + if (next === savedPhone || updatePhone.isPending) return + updatePhone.mutate(next, { + onSuccess: () => { + setSavedPhone(next) + setNotification({ status: 'success', message: 'Номер телефона обновлён' }) + }, + onError: () => { + setNotification({ status: 'error', message: 'Не удалось обновить номер телефона' }) + }, + }) + } + + return { + phone, + onPhoneChange, + onPhoneBlur, + notification, + dismissNotification: () => setNotification(null), + } +} diff --git a/src/pages/profile/ui/IndividualFields.tsx b/src/widgets/profile/ui/IndividualFields.tsx similarity index 66% rename from src/pages/profile/ui/IndividualFields.tsx rename to src/widgets/profile/ui/IndividualFields.tsx index e7d3f36..637ebfe 100644 --- a/src/pages/profile/ui/IndividualFields.tsx +++ b/src/widgets/profile/ui/IndividualFields.tsx @@ -1,17 +1,17 @@ -import type { MeResponse } from '@features/auth' -import { FormField } from '@shared/ui' -import { ProfileSection } from '@widgets/profile' -import styles from './ProfilePage.module.css' +import { type MeResponse, getFullName } from '@features/auth' +import { FormField, Notification } from '@shared/ui' +import { ProfileSection } from './ProfileSection' +import { usePhoneField } from '../model/usePhoneField' +import styles from './fieldsGrid.module.css' interface Props { data: MeResponse - fullName: string - phone: string - onPhoneChange: (value: string) => void - onPhoneBlur: () => void } -export function IndividualFields({ data, fullName, phone, onPhoneChange, onPhoneBlur }: Props) { +export function IndividualFields({ data }: Props) { + const fullName = getFullName(data) + const { phone, onPhoneChange, onPhoneBlur, notification, dismissNotification } = usePhoneField(data.phone) + return ( <> @@ -29,6 +29,10 @@ export function IndividualFields({ data, fullName, phone, onPhoneChange, onPhone + + {notification && ( + + )} ) } diff --git a/src/widgets/profile/ui/KycBanner.module.css b/src/widgets/profile/ui/KycBanner.module.css new file mode 100644 index 0000000..7117bdb --- /dev/null +++ b/src/widgets/profile/ui/KycBanner.module.css @@ -0,0 +1,10 @@ +.kycBanner { + width: 100%; + padding: 10px 24px; + background: var(--error, #ff4466); + color: #fff; + font-size: 13px; + font-weight: 500; + text-align: center; + line-height: 1.4; +} diff --git a/src/widgets/profile/ui/KycBanner.tsx b/src/widgets/profile/ui/KycBanner.tsx new file mode 100644 index 0000000..f5a8a78 --- /dev/null +++ b/src/widgets/profile/ui/KycBanner.tsx @@ -0,0 +1,14 @@ +import { useMe } from '@features/auth' +import styles from './KycBanner.module.css' + +// Shown until the account passes identity verification (KYC). +export function KycBanner() { + const { data } = useMe() + if (!data || data.kyc_verified) return null + + return ( +
+ Для полного доступа к платформе необходимо пройти верификацию личности (KYC) +
+ ) +} diff --git a/src/pages/profile/ui/LegalEntityFields.tsx b/src/widgets/profile/ui/LegalEntityFields.tsx similarity index 96% rename from src/pages/profile/ui/LegalEntityFields.tsx rename to src/widgets/profile/ui/LegalEntityFields.tsx index a3ea814..1c33471 100644 --- a/src/pages/profile/ui/LegalEntityFields.tsx +++ b/src/widgets/profile/ui/LegalEntityFields.tsx @@ -1,7 +1,7 @@ import type { MeResponse } from '@features/auth' import { FormField } from '@shared/ui' -import { ProfileSection } from '@widgets/profile' -import styles from './ProfilePage.module.css' +import { ProfileSection } from './ProfileSection' +import styles from './fieldsGrid.module.css' interface Props { data: MeResponse diff --git a/src/widgets/profile/ui/MnemonicSection.module.css b/src/widgets/profile/ui/MnemonicSection.module.css new file mode 100644 index 0000000..146e566 --- /dev/null +++ b/src/widgets/profile/ui/MnemonicSection.module.css @@ -0,0 +1,31 @@ +.mnemonicRow { + display: flex; + align-items: center; + justify-content: space-between; + margin-top: 16px; +} + +.mnemonicInfo { + display: flex; + align-items: center; + gap: 12px; +} + +.mnemonicIcon { + font-size: 16px; +} + +.mnemonicText { + color: var(--text-secondary); + font-size: 14px; + font-weight: 400; +} + +/* < 650px: кнопка мнемоники — 100% ширины */ +@media (max-width: 649px) { + .mnemonicRow { + flex-direction: column; + align-items: stretch; + gap: 16px; + } +} diff --git a/src/widgets/profile/ui/MnemonicSection.tsx b/src/widgets/profile/ui/MnemonicSection.tsx new file mode 100644 index 0000000..1d9a4e8 --- /dev/null +++ b/src/widgets/profile/ui/MnemonicSection.tsx @@ -0,0 +1,21 @@ +import { useNavigate } from 'react-router-dom' +import { ROUTES } from '@shared/config/routes' +import { Button } from '@shared/ui' +import { ProfileSection } from './ProfileSection' +import styles from './MnemonicSection.module.css' + +export function MnemonicSection() { + const navigate = useNavigate() + + return ( + +
+
+ 🔑 + Сид-фраза из 12 слов для восстановления кошелька +
+ +
+
+ ) +} diff --git a/src/widgets/profile/ui/ProfileDetails.tsx b/src/widgets/profile/ui/ProfileDetails.tsx new file mode 100644 index 0000000..ab021d9 --- /dev/null +++ b/src/widgets/profile/ui/ProfileDetails.tsx @@ -0,0 +1,12 @@ +import { useMe, isLegalEntity } from '@features/auth' +import { IndividualFields } from './IndividualFields' +import { LegalEntityFields } from './LegalEntityFields' + +// Picks the right field set for the account type. Phone editing lives inside +// IndividualFields (the only branch with an editable phone). +export function ProfileDetails() { + const { data } = useMe() + if (!data) return null + + return isLegalEntity(data) ? : +} diff --git a/src/widgets/profile/ui/ProfileSummary.module.css b/src/widgets/profile/ui/ProfileSummary.module.css new file mode 100644 index 0000000..f0038e4 --- /dev/null +++ b/src/widgets/profile/ui/ProfileSummary.module.css @@ -0,0 +1,67 @@ +/* Desktop: avatar is the left column, sections grow to its right */ +.profileTop { + flex-shrink: 0; +} + +.userInfo { + display: none; +} + +/* < 1024px: avatar + userInfo side by side at the top */ +@media (max-width: 1023px) { + .profileTop { + display: flex; + flex-direction: row; + align-items: flex-start; + gap: 24px; + } + + .userInfo { + display: flex; + flex-direction: column; + gap: 6px; + justify-content: center; + } + + .userName { + font-size: 28px; + font-weight: 700; + color: var(--text-primary); + line-height: 1.2; + } + + .userBalance { + font-size: 32px; + font-weight: 800; + color: var(--text-primary); + } + + .userBalanceRub { + font-size: 13px; + color: var(--text-secondary); + } +} + +/* < 550px: меньше текст и аватар */ +@media (max-width: 549px) { + .profileTop { + gap: 16px; + } + + .userInfo { + padding-top: 8px; + } + + .userName { + font-size: 18px; + } + + .userBalance { + font-size: 22px; + margin-top: 4px; + } + + .userBalanceRub { + font-size: 12px; + } +} diff --git a/src/widgets/profile/ui/ProfileSummary.tsx b/src/widgets/profile/ui/ProfileSummary.tsx new file mode 100644 index 0000000..8719621 --- /dev/null +++ b/src/widgets/profile/ui/ProfileSummary.tsx @@ -0,0 +1,23 @@ +import { useMe, getDisplayName } from '@features/auth' +import { usePortfolio } from '@features/wallet' +import { formatUsd } from '@shared/lib/utils/formatUsd' +import { ProfileAvatar } from './ProfileAvatar' +import styles from './ProfileSummary.module.css' + +export function ProfileSummary() { + const { data } = useMe() + const { data: portfolio } = usePortfolio() + + const displayName = data ? getDisplayName(data) : '' + + return ( +
+ +
+ {displayName} + {formatUsd(portfolio?.totalUsd)} + {/* ≈ 22 340,50 ₽ */} +
+
+ ) +} diff --git a/src/widgets/profile/ui/SecuritySection.tsx b/src/widgets/profile/ui/SecuritySection.tsx new file mode 100644 index 0000000..b3e31d7 --- /dev/null +++ b/src/widgets/profile/ui/SecuritySection.tsx @@ -0,0 +1,33 @@ +import { useWalletAddresses } from '@features/wallet' +import { Button, FormField } from '@shared/ui' +import { ProfileSection } from './ProfileSection' +import styles from './fieldsGrid.module.css' + +export function SecuritySection() { + const { data: walletAddresses } = useWalletAddresses() + + return ( + + + + + } + > +
+ {walletAddresses?.map(({ chain, address }) => ( + + ))} +
+
+ ) +} diff --git a/src/widgets/profile/ui/fieldsGrid.module.css b/src/widgets/profile/ui/fieldsGrid.module.css new file mode 100644 index 0000000..612e048 --- /dev/null +++ b/src/widgets/profile/ui/fieldsGrid.module.css @@ -0,0 +1,25 @@ +.grid2 { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 16px; +} + +.grid1 { + display: grid; + grid-template-columns: 1fr; + gap: 16px; +} + +/* < 1024px: tighter gap */ +@media (max-width: 1023px) { + .grid2 { + gap: 12px; + } +} + +/* < 640px: инпуты в колонку */ +@media (max-width: 639px) { + .grid2 { + grid-template-columns: 1fr; + } +} diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo index 5d5d384..0596bbe 100644 --- a/tsconfig.tsbuildinfo +++ b/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"root":["./src/main.tsx","./src/vite-env.d.ts","./src/app/app.tsx","./src/app/providers/guestroute.tsx","./src/app/providers/protectedroute.tsx","./src/app/providers/queryprovider.tsx","./src/app/providers/routerprovider.tsx","./src/app/providers/scrolltotop.tsx","./src/app/providers/index.ts","./src/entities/commission/index.ts","./src/entities/commission/model/tiers.ts","./src/entities/commission/ui/commissiontable.tsx","./src/features/auth/index.ts","./src/features/auth/api/profileapi.ts","./src/features/auth/api/registrationapi.ts","./src/features/auth/hooks/useauth.ts","./src/features/auth/hooks/useisauthenticated.ts","./src/features/auth/hooks/useme.ts","./src/features/auth/hooks/useupdatephone.ts","./src/features/auth/hooks/useuploadavatar.ts","./src/features/b2b/index.ts","./src/features/b2b/api/b2bapi.ts","./src/features/b2b/hooks/usecreatepurchaserequest.ts","./src/features/b2b/hooks/usemypurchaserequests.ts","./src/features/kyc/api/kycapi.ts","./src/features/payment/index.ts","./src/features/payment/api/paymentapi.ts","./src/features/payment/hooks/usecreateorder.ts","./src/features/payment/hooks/useorders.ts","./src/features/payment/hooks/usepaymentconfig.ts","./src/features/payment/hooks/usepaymentquote.ts","./src/features/payment/hooks/usepaymentquotebyrub.ts","./src/features/payment/model/usecurrencyconversion.ts","./src/features/pools/index.ts","./src/features/pools/api/poolsapi.ts","./src/features/pools/model/usepools.ts","./src/features/staking/index.ts","./src/features/staking/api/stakingapi.ts","./src/features/staking/model/usestaking.ts","./src/features/wallet/index.ts","./src/features/wallet/api/walletapi.ts","./src/features/wallet/model/usewalletdata.ts","./src/pages/bridge/index.ts","./src/pages/bridge/ui/bridgepage.tsx","./src/pages/converter/index.ts","./src/pages/converter/ui/converterpage.tsx","./src/pages/converter/ui/legalconverterpage.tsx","./src/pages/converter-test/index.ts","./src/pages/converter-test/ui/convertertestpage.tsx","./src/pages/home/index.ts","./src/pages/home/ui/homepage.tsx","./src/pages/kyc/index.ts","./src/pages/kyc/ui/kycpage.tsx","./src/pages/login/index.ts","./src/pages/login/ui/loginpage.tsx","./src/pages/politika-cookie/index.ts","./src/pages/politika-cookie/ui/politikacookiepage.tsx","./src/pages/politika-personalnyh-dannyh/index.ts","./src/pages/politika-personalnyh-dannyh/ui/politikapage.tsx","./src/pages/pools/index.ts","./src/pages/pools/ui/poolspage.tsx","./src/pages/profile/index.ts","./src/pages/profile/ui/individualfields.tsx","./src/pages/profile/ui/legalentityfields.tsx","./src/pages/profile/ui/profilepage.tsx","./src/pages/publichnaya-oferta/index.ts","./src/pages/publichnaya-oferta/ui/publichnayaofertapage.tsx","./src/pages/reestr-pd-rkn/index.ts","./src/pages/reestr-pd-rkn/ui/reestrypage.tsx","./src/pages/register/index.ts","./src/pages/register/ui/registerpage.tsx","./src/pages/register-test/index.ts","./src/pages/register-test/ui/registertestpage.tsx","./src/pages/restore-password/index.ts","./src/pages/restore-password/ui/restorepasswordpage.tsx","./src/pages/seed-phrase/index.ts","./src/pages/seed-phrase/ui/seedphrasepage.tsx","./src/pages/soglasie-personalnyh-dannyh/index.ts","./src/pages/soglasie-personalnyh-dannyh/ui/soglasiepage.tsx","./src/pages/staking/index.ts","./src/pages/staking/ui/stakingpage.tsx","./src/pages/swap/index.ts","./src/pages/swap/ui/swappage.tsx","./src/pages/transactions/index.ts","./src/pages/transactions/ui/transactionspage.tsx","./src/pages/wallet/index.ts","./src/pages/wallet/ui/walletpage.tsx","./src/shared/api/base.ts","./src/shared/api/csrf.ts","./src/shared/api/tokenstore.ts","./src/shared/api/types.ts","./src/shared/assets/coins/index.ts","./src/shared/config/constants.ts","./src/shared/config/env.ts","./src/shared/config/routes.ts","./src/shared/lib/hooks/usedebounce.ts","./src/shared/lib/hooks/uselocalstorage.ts","./src/shared/lib/utils/baseunits.ts","./src/shared/lib/utils/cn.ts","./src/shared/lib/utils/truncatedecimals.ts","./src/shared/types/index.ts","./src/shared/ui/index.ts","./src/shared/ui/button/button.tsx","./src/shared/ui/button/index.ts","./src/shared/ui/convertfield/convertfield.tsx","./src/shared/ui/convertfield/index.ts","./src/shared/ui/directionswapbutton/directionswapbutton.tsx","./src/shared/ui/directionswapbutton/index.ts","./src/shared/ui/formfield/formfield.tsx","./src/shared/ui/formfield/index.ts","./src/shared/ui/notification/notification.tsx","./src/shared/ui/notification/index.ts","./src/shared/ui/pill/pill.tsx","./src/shared/ui/pill/index.ts","./src/shared/ui/primarybutton/primarybutton.tsx","./src/shared/ui/primarybutton/index.ts","./src/shared/ui/select/select.tsx","./src/shared/ui/select/index.ts","./src/shared/ui/spinner/spinner.tsx","./src/shared/ui/spinner/index.ts","./src/shared/ui/title/title.tsx","./src/shared/ui/tokenicon/tokenicon.tsx","./src/shared/ui/tokenicon/index.ts","./src/widgets/about/index.ts","./src/widgets/about/ui/about.tsx","./src/widgets/balance-card/index.ts","./src/widgets/balance-card/ui/balancecard.tsx","./src/widgets/bridge-form/index.ts","./src/widgets/bridge-form/ui/bridgeconfirmmodal.tsx","./src/widgets/bridge-form/ui/bridgeform.tsx","./src/widgets/bridge-form/ui/networkselect.tsx","./src/widgets/converter-page/index.ts","./src/widgets/converter-page/model/useconvertersection.ts","./src/widgets/converter-page/ui/agreementcheck.tsx","./src/widgets/converter-page/ui/convertersection.tsx","./src/widgets/currency-converter/index.ts","./src/widgets/currency-converter/ui/agreementcheckbox.tsx","./src/widgets/currency-converter/ui/converter.tsx","./src/widgets/footer/index.ts","./src/widgets/footer/ui/footer.tsx","./src/widgets/header/index.ts","./src/widgets/header/ui/header.tsx","./src/widgets/hero/index.ts","./src/widgets/hero/lib/usecountdown.ts","./src/widgets/hero/ui/conversionflow.tsx","./src/widgets/hero/ui/countdown.tsx","./src/widgets/hero/ui/exchangecard.tsx","./src/widgets/hero/ui/hero.tsx","./src/widgets/kyc-verification/index.ts","./src/widgets/kyc-verification/model/usekyc.ts","./src/widgets/kyc-verification/ui/kycmodal.tsx","./src/widgets/kyc-verification/ui/kycwidget.tsx","./src/widgets/login-form/index.ts","./src/widgets/login-form/model/useloginform.ts","./src/widgets/login-form/ui/loginform.tsx","./src/widgets/networks-table/index.ts","./src/widgets/networks-table/model/networks.ts","./src/widgets/networks-table/ui/networkstable.tsx","./src/widgets/pools/index.ts","./src/widgets/pools/model/meta.ts","./src/widgets/pools/ui/lpdepositcard.tsx","./src/widgets/pools/ui/lppositionspanel.tsx","./src/widgets/pools/ui/lpremovemodal.tsx","./src/widgets/pools/ui/poolstable.tsx","./src/widgets/pools/ui/poolswidget.tsx","./src/widgets/profile/index.ts","./src/widgets/profile/ui/avatarcropmodal.tsx","./src/widgets/profile/ui/profileavatar.tsx","./src/widgets/profile/ui/profilesection.tsx","./src/widgets/profile/ui/getcroppedimg.ts","./src/widgets/purchase-requests-list/index.ts","./src/widgets/purchase-requests-list/ui/purchaserequestslist.tsx","./src/widgets/receive-modal/index.ts","./src/widgets/receive-modal/ui/receivemodal.tsx","./src/widgets/register-form/index.ts","./src/widgets/register-form/model/useregisterform.ts","./src/widgets/register-form/ui/individualform.tsx","./src/widgets/register-form/ui/legalregisterinfo.tsx","./src/widgets/register-form/ui/registerform.tsx","./src/widgets/restore-password-form/index.ts","./src/widgets/restore-password-form/ui/restorepasswordform.tsx","./src/widgets/seed-phrase/index.ts","./src/widgets/seed-phrase/model/useseedphrase.ts","./src/widgets/seed-phrase/ui/seedphrasewidget.tsx","./src/widgets/send-modal/index.ts","./src/widgets/send-modal/model/sendtypes.ts","./src/widgets/send-modal/ui/sendmodal.tsx","./src/widgets/staking/index.ts","./src/widgets/staking/model/meta.ts","./src/widgets/staking/ui/chaintoggle.tsx","./src/widgets/staking/ui/positionspanel.tsx","./src/widgets/staking/ui/stakecard.tsx","./src/widgets/staking/ui/stakequotepanel.tsx","./src/widgets/staking/ui/stakingwidget.tsx","./src/widgets/staking/ui/unstakemodal.tsx","./src/widgets/staking/ui/withdrawnotice.tsx","./src/widgets/swap-bridge-tabs/index.ts","./src/widgets/swap-bridge-tabs/ui/swapbridgetabs.tsx","./src/widgets/swap-form/index.ts","./src/widgets/swap-form/model/useswapform.ts","./src/widgets/swap-form/ui/raterow.tsx","./src/widgets/swap-form/ui/swapcard.tsx","./src/widgets/swap-form/ui/swapconfirmmodal.tsx","./src/widgets/swap-form/ui/swapdirectionbutton.tsx","./src/widgets/swap-form/ui/swapform.tsx","./src/widgets/swap-form/ui/swapinfopanel.tsx","./src/widgets/swap-form/ui/tokenselect.tsx","./src/widgets/swap-form/ui/trxconfirmmodal.tsx","./src/widgets/token-table/index.ts","./src/widgets/token-table/model/tokens.ts","./src/widgets/token-table/model/usechaintokenrows.ts","./src/widgets/token-table/ui/tokentable.tsx","./src/widgets/transactions-list/index.ts","./src/widgets/transactions-list/model/format.ts","./src/widgets/transactions-list/model/paymentstatuslabels.ts","./src/widgets/transactions-list/ui/copybutton.tsx","./src/widgets/transactions-list/ui/orderaccordion.tsx","./src/widgets/transactions-list/ui/statusbadge.tsx","./src/widgets/transactions-list/ui/transactionslist.tsx","./src/widgets/wallet-chain-tabs/index.ts","./src/widgets/wallet-chain-tabs/ui/walletchaintabs.tsx","./src/widgets/wallet-header/index.ts","./src/widgets/wallet-header/ui/walletheader.tsx","./src/widgets/wallet-layout/index.ts","./src/widgets/wallet-layout/ui/walletlayout.tsx"],"version":"5.6.3"} \ No newline at end of file +{"root":["./src/main.tsx","./src/vite-env.d.ts","./src/app/app.tsx","./src/app/providers/guestroute.tsx","./src/app/providers/protectedroute.tsx","./src/app/providers/queryprovider.tsx","./src/app/providers/routerprovider.tsx","./src/app/providers/scrolltotop.tsx","./src/app/providers/index.ts","./src/entities/commission/index.ts","./src/entities/commission/model/tiers.ts","./src/entities/commission/ui/commissiontable.tsx","./src/entities/legal-doc/index.ts","./src/entities/legal-doc/model/types.ts","./src/entities/legal-doc/ui/legaldoc.tsx","./src/features/auth/index.ts","./src/features/auth/api/profileapi.ts","./src/features/auth/api/registrationapi.ts","./src/features/auth/hooks/useauth.ts","./src/features/auth/hooks/useisauthenticated.ts","./src/features/auth/hooks/useme.ts","./src/features/auth/hooks/useupdatephone.ts","./src/features/auth/hooks/useuploadavatar.ts","./src/features/auth/lib/profile.ts","./src/features/b2b/index.ts","./src/features/b2b/api/b2bapi.ts","./src/features/b2b/hooks/usecreatepurchaserequest.ts","./src/features/b2b/hooks/usemypurchaserequests.ts","./src/features/b2b/lib/purchaserequest.ts","./src/features/kyc/api/kycapi.ts","./src/features/payment/index.ts","./src/features/payment/api/paymentapi.ts","./src/features/payment/hooks/usecreateorder.ts","./src/features/payment/hooks/useorders.ts","./src/features/payment/hooks/usepaymentconfig.ts","./src/features/payment/hooks/usepaymentquote.ts","./src/features/payment/hooks/usepaymentquotebyrub.ts","./src/features/payment/model/usecurrencyconversion.ts","./src/features/pools/index.ts","./src/features/pools/api/poolsapi.ts","./src/features/pools/model/usepools.ts","./src/features/staking/index.ts","./src/features/staking/api/stakingapi.ts","./src/features/staking/model/usestaking.ts","./src/features/wallet/index.ts","./src/features/wallet/api/walletapi.ts","./src/features/wallet/model/usewalletdata.ts","./src/pages/bridge/index.ts","./src/pages/bridge/ui/bridgepage.tsx","./src/pages/converter/index.ts","./src/pages/converter/ui/converterpage.tsx","./src/pages/converter-test/index.ts","./src/pages/converter-test/ui/convertertestpage.tsx","./src/pages/home/index.ts","./src/pages/home/ui/homepage.tsx","./src/pages/kyc/index.ts","./src/pages/kyc/ui/kycpage.tsx","./src/pages/login/index.ts","./src/pages/login/ui/loginpage.tsx","./src/pages/politika-cookie/index.ts","./src/pages/politika-cookie/model/content.ts","./src/pages/politika-cookie/ui/politikacookiepage.tsx","./src/pages/politika-personalnyh-dannyh/index.ts","./src/pages/politika-personalnyh-dannyh/model/content.ts","./src/pages/politika-personalnyh-dannyh/ui/politikapage.tsx","./src/pages/pools/index.ts","./src/pages/pools/ui/poolspage.tsx","./src/pages/profile/index.ts","./src/pages/profile/ui/profilepage.tsx","./src/pages/publichnaya-oferta/index.ts","./src/pages/publichnaya-oferta/model/content.ts","./src/pages/publichnaya-oferta/ui/publichnayaofertapage.tsx","./src/pages/reestr-pd-rkn/index.ts","./src/pages/reestr-pd-rkn/model/content.ts","./src/pages/reestr-pd-rkn/ui/reestrypage.tsx","./src/pages/register/index.ts","./src/pages/register/ui/registerpage.tsx","./src/pages/register-test/index.ts","./src/pages/register-test/ui/registertestpage.tsx","./src/pages/restore-password/index.ts","./src/pages/restore-password/ui/restorepasswordpage.tsx","./src/pages/seed-phrase/index.ts","./src/pages/seed-phrase/ui/seedphrasepage.tsx","./src/pages/soglasie-personalnyh-dannyh/index.ts","./src/pages/soglasie-personalnyh-dannyh/model/content.ts","./src/pages/soglasie-personalnyh-dannyh/ui/soglasiepage.tsx","./src/pages/staking/index.ts","./src/pages/staking/ui/stakingpage.tsx","./src/pages/swap/index.ts","./src/pages/swap/ui/swappage.tsx","./src/pages/transactions/index.ts","./src/pages/transactions/ui/transactionspage.tsx","./src/pages/wallet/index.ts","./src/pages/wallet/ui/walletpage.tsx","./src/shared/api/base.ts","./src/shared/api/csrf.ts","./src/shared/api/tokenstore.ts","./src/shared/api/types.ts","./src/shared/assets/coins/index.ts","./src/shared/config/constants.ts","./src/shared/config/env.ts","./src/shared/config/routes.ts","./src/shared/lib/hooks/usedebounce.ts","./src/shared/lib/hooks/uselocalstorage.ts","./src/shared/lib/utils/baseunits.ts","./src/shared/lib/utils/cn.ts","./src/shared/lib/utils/formatusd.ts","./src/shared/lib/utils/truncatedecimals.ts","./src/shared/types/index.ts","./src/shared/ui/index.ts","./src/shared/ui/button/button.tsx","./src/shared/ui/button/index.ts","./src/shared/ui/convertfield/convertfield.tsx","./src/shared/ui/convertfield/index.ts","./src/shared/ui/directionswapbutton/directionswapbutton.tsx","./src/shared/ui/directionswapbutton/index.ts","./src/shared/ui/formfield/formfield.tsx","./src/shared/ui/formfield/index.ts","./src/shared/ui/notification/notification.tsx","./src/shared/ui/notification/index.ts","./src/shared/ui/pill/pill.tsx","./src/shared/ui/pill/index.ts","./src/shared/ui/primarybutton/primarybutton.tsx","./src/shared/ui/primarybutton/index.ts","./src/shared/ui/select/select.tsx","./src/shared/ui/select/index.ts","./src/shared/ui/spinner/spinner.tsx","./src/shared/ui/spinner/index.ts","./src/shared/ui/title/title.tsx","./src/shared/ui/tokenicon/tokenicon.tsx","./src/shared/ui/tokenicon/index.ts","./src/widgets/about/index.ts","./src/widgets/about/ui/about.tsx","./src/widgets/balance-card/index.ts","./src/widgets/balance-card/ui/balancecard.tsx","./src/widgets/bridge-form/index.ts","./src/widgets/bridge-form/ui/bridgeconfirmmodal.tsx","./src/widgets/bridge-form/ui/bridgeform.tsx","./src/widgets/bridge-form/ui/networkselect.tsx","./src/widgets/converter-page/index.ts","./src/widgets/converter-page/model/useconvertersection.ts","./src/widgets/converter-page/ui/agreementcheck.tsx","./src/widgets/converter-page/ui/convertersection.tsx","./src/widgets/currency-converter/index.ts","./src/widgets/currency-converter/ui/agreementcheckbox.tsx","./src/widgets/currency-converter/ui/converter.tsx","./src/widgets/footer/index.ts","./src/widgets/footer/ui/footer.tsx","./src/widgets/header/index.ts","./src/widgets/header/ui/header.tsx","./src/widgets/hero/index.ts","./src/widgets/hero/lib/usecountdown.ts","./src/widgets/hero/ui/conversionflow.tsx","./src/widgets/hero/ui/countdown.tsx","./src/widgets/hero/ui/exchangecard.tsx","./src/widgets/hero/ui/hero.tsx","./src/widgets/kyc-verification/index.ts","./src/widgets/kyc-verification/model/usekyc.ts","./src/widgets/kyc-verification/ui/kycmodal.tsx","./src/widgets/kyc-verification/ui/kycwidget.tsx","./src/widgets/legal-converter/index.ts","./src/widgets/legal-converter/model/uselegalconverterform.ts","./src/widgets/legal-converter/ui/legalconverterform.tsx","./src/widgets/login-form/index.ts","./src/widgets/login-form/model/useloginform.ts","./src/widgets/login-form/ui/loginform.tsx","./src/widgets/networks-table/index.ts","./src/widgets/networks-table/model/networks.ts","./src/widgets/networks-table/ui/networkstable.tsx","./src/widgets/pools/index.ts","./src/widgets/pools/model/meta.ts","./src/widgets/pools/ui/lpdepositcard.tsx","./src/widgets/pools/ui/lppositionspanel.tsx","./src/widgets/pools/ui/lpremovemodal.tsx","./src/widgets/pools/ui/poolstable.tsx","./src/widgets/pools/ui/poolswidget.tsx","./src/widgets/profile/index.ts","./src/widgets/profile/model/usephonefield.ts","./src/widgets/profile/ui/avatarcropmodal.tsx","./src/widgets/profile/ui/individualfields.tsx","./src/widgets/profile/ui/kycbanner.tsx","./src/widgets/profile/ui/legalentityfields.tsx","./src/widgets/profile/ui/mnemonicsection.tsx","./src/widgets/profile/ui/profileavatar.tsx","./src/widgets/profile/ui/profiledetails.tsx","./src/widgets/profile/ui/profilesection.tsx","./src/widgets/profile/ui/profilesummary.tsx","./src/widgets/profile/ui/securitysection.tsx","./src/widgets/profile/ui/getcroppedimg.ts","./src/widgets/purchase-requests-list/index.ts","./src/widgets/purchase-requests-list/ui/purchaserequestslist.tsx","./src/widgets/receive-modal/index.ts","./src/widgets/receive-modal/ui/receivemodal.tsx","./src/widgets/register-form/index.ts","./src/widgets/register-form/model/useregisterform.ts","./src/widgets/register-form/ui/individualform.tsx","./src/widgets/register-form/ui/legalregisterinfo.tsx","./src/widgets/register-form/ui/registerform.tsx","./src/widgets/restore-password-form/index.ts","./src/widgets/restore-password-form/ui/restorepasswordform.tsx","./src/widgets/seed-phrase/index.ts","./src/widgets/seed-phrase/model/useseedphrase.ts","./src/widgets/seed-phrase/ui/seedphrasewidget.tsx","./src/widgets/send-modal/index.ts","./src/widgets/send-modal/model/sendtypes.ts","./src/widgets/send-modal/ui/sendmodal.tsx","./src/widgets/staking/index.ts","./src/widgets/staking/model/meta.ts","./src/widgets/staking/ui/chaintoggle.tsx","./src/widgets/staking/ui/positionspanel.tsx","./src/widgets/staking/ui/stakecard.tsx","./src/widgets/staking/ui/stakequotepanel.tsx","./src/widgets/staking/ui/stakingwidget.tsx","./src/widgets/staking/ui/unstakemodal.tsx","./src/widgets/staking/ui/withdrawnotice.tsx","./src/widgets/swap-bridge-tabs/index.ts","./src/widgets/swap-bridge-tabs/ui/swapbridgetabs.tsx","./src/widgets/swap-form/index.ts","./src/widgets/swap-form/model/useswapform.ts","./src/widgets/swap-form/ui/raterow.tsx","./src/widgets/swap-form/ui/swapcard.tsx","./src/widgets/swap-form/ui/swapconfirmmodal.tsx","./src/widgets/swap-form/ui/swapdirectionbutton.tsx","./src/widgets/swap-form/ui/swapform.tsx","./src/widgets/swap-form/ui/swapinfopanel.tsx","./src/widgets/swap-form/ui/tokenselect.tsx","./src/widgets/swap-form/ui/trxconfirmmodal.tsx","./src/widgets/token-table/index.ts","./src/widgets/token-table/model/tokens.ts","./src/widgets/token-table/model/usechaintokenrows.ts","./src/widgets/token-table/ui/tokentable.tsx","./src/widgets/transactions-list/index.ts","./src/widgets/transactions-list/model/format.ts","./src/widgets/transactions-list/model/paymentstatuslabels.ts","./src/widgets/transactions-list/ui/copybutton.tsx","./src/widgets/transactions-list/ui/orderaccordion.tsx","./src/widgets/transactions-list/ui/statusbadge.tsx","./src/widgets/transactions-list/ui/transactionslist.tsx","./src/widgets/wallet-chain-tabs/index.ts","./src/widgets/wallet-chain-tabs/ui/walletchaintabs.tsx","./src/widgets/wallet-header/index.ts","./src/widgets/wallet-header/ui/walletheader.tsx","./src/widgets/wallet-layout/index.ts","./src/widgets/wallet-layout/ui/walletlayout.tsx"],"version":"5.6.3"} \ No newline at end of file