@nexus-cross/dapp-ui 1.5.0-beta.3 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- function Bc(e){try{return import.meta.env?.[e]}catch{return}}function zc(e){if(!(typeof process>"u"))return process.env?.[e]}function at(e){if(e)return Fc(e);let t=Bc("VITE_CROSSX_ENVIRONMENT")??Bc("NEXT_PUBLIC_CROSSX_ENVIRONMENT")??zc("NEXT_PUBLIC_CROSSX_ENVIRONMENT")??zc("CROSSX_ENVIRONMENT");return Fc(t)}function Fc(e){switch(e?.toLowerCase()){case"dev":case"development":return"dev";case"stage":case"staging":case"stg":return"stage";default:return"production"}}import*as wr from"react";var wa="eip155";function jn(e){return`${wa}:${e}`}function Uc(e){let t=e.indexOf(":");return t>0?e.slice(0,t):void 0}function jc(e){let t=Uc(e);return t===void 0||t===wa}function bi(e){if(typeof e=="number")return Number.isSafeInteger(e)&&e>0?e:void 0;if(typeof e!="string")return;let t=e.trim(),n=Uc(t);if(n!==void 0&&n!==wa)return;let r=n===wa?t.slice(wa.length+1):t;if(!/^\d+$/.test(r))return;let o=Number(r);return Number.isSafeInteger(o)&&o>0?o:void 0}function Wc(e){let t=bi(e);return t===void 0?void 0:jn(t)}var gb={dev:"https://stg-contents.crosstoken.io/frontend/common/app-launcher",stage:"https://stg-contents.crosstoken.io/frontend/common/app-launcher",production:"https://contents.crosstoken.io/frontend/common/app-launcher"},hb=3e3;function Wn(e,t){if(e!=null)return typeof e=="object"&&!Array.isArray(e)&&("dev"in e||"stage"in e||"production"in e)?e[t]:e}var Pl=new Map;function Mr(e,t){let n=`${gb[t]}/${e}`,r=Pl.get(n);return r||(r=(async()=>{let o=new AbortController,a=setTimeout(()=>o.abort(),hb);try{let i=await fetch(n,{cache:"no-store",signal:o.signal});return i.ok?await i.json():null}catch{return null}finally{clearTimeout(a)}})().then(o=>(o===null&&Pl.delete(n),o)),Pl.set(n,r)),r}function bb(e){return typeof e=="string"&&e.startsWith("https://")}async function Se(e,t){let n=await Mr("endpoints.json",t),r=Wn(n?.apis?.[e],t);if(!bb(r))throw new Error(`[remote-config] endpoints.json missing or invalid api base: ${e} (${t})`);return r}var wi="apps.json";function yi(e,t){let n=Wn(e?.relay?.forwarderFactories,t),r=[n?.standingForwarderFactory,n?.depositorForwarderFactory].filter(o=>typeof o=="string");return r.length>0?r:void 0}var Fo="chains.json";function Ol(e,t){return e?e[jn(t)]??e[String(t)]??{}:{}}async function wb(e,t){let n=await Mr(Fo,t);return Ol(n?.chains,e)}function bo(e,t){let[n,r]=wr.useState({});return wr.useEffect(()=>{if(e==null){r({});return}let o=!0;return Mr(Fo,t).then(a=>{o&&r(Ol(a?.chains,e))}),()=>{o=!1}},[e,t]),n}function yb(e){let[t,n]=wr.useState({});return wr.useEffect(()=>{let r=!0;return Mr(Fo,e).then(o=>{r&&n(o?.chains??{})}),()=>{r=!1}},[e]),t}function Ut(e,t,n){let[r,o]=wr.useState(void 0),a=wr.useRef(n);return a.current=n,wr.useEffect(()=>{let i=!0;return Mr(e,t).then(s=>{if(!i)return;let l=a.current(s);l!==void 0&&o(l)}),()=>{i=!1}},[e,t]),r}var wo="1.5.0-beta.3";var xi="__nexusCrossAppLauncherRuntime";function xb(){if(typeof window>"u")return null;let e=window;return e[xi]??(e[xi]={mode:"dapp-ui"}),e[xi]}function vb(e){if(e.scheduled)return;e.scheduled=!0;let t=()=>{if(e.scheduled=!1,e.loggedMode!==e.mode){if(e.mode==="connect-kit-react"){let n=e.connectKitVersion??"unknown";console.info(`[CROSSx App Launcher] connect-kit-react v${n} \uCD08\uAE30\uD654 \uC644\uB8CC (dapp-ui v${wo}, \uC0AC\uC6A9 \uBAA8\uB4DC: connect-kit)`)}else console.info(`[CROSSx App Launcher] dapp-ui v${wo} \uCD08\uAE30\uD654 \uC644\uB8CC (\uC0AC\uC6A9 \uBAA8\uB4DC: dapp-ui only)`);e.loggedMode=e.mode}};typeof queueMicrotask=="function"?queueMicrotask(t):Promise.resolve().then(t)}function Bl(e){let t=xb();t&&(e?.mode==="connect-kit-react"?t.mode="connect-kit-react":t.mode||(t.mode="dapp-ui"),e?.connectKitVersion&&(t.connectKitVersion=e.connectKitVersion),vb(t))}import{BrowserClient as kb,Scope as Cb,defaultStackParser as Rb,linkedErrorsIntegration as Nb,makeFetchTransport as Sb}from"@sentry/react";var Tb="https://5c82aeb32da33b5a0a14b7c5393992ca@o4511668907081728.ingest.de.sentry.io/4511705324126289",Ib=`dapp-ui@${wo}`,Uo=null,Gc=.1;function Hc(){return Gc}function Eb(e){switch(e){case"dev":return"dev";case"stage":return"stg";default:return"prod"}}function ya(e){if(Uo)return Uo;if(typeof window>"u")return null;let t=Eb(at(e?.environment));typeof e?.analyticsSampleRate=="number"&&(Gc=Math.min(1,Math.max(0,e.analyticsSampleRate)));let n=new kb({dsn:e?.dsn??Tb,transport:Sb,stackParser:Rb,integrations:[Nb()],environment:t,release:Ib,enabled:e?.enabled??t==="prod"}),r=new Cb;return r.setClient(n),r.setTags({package:"dapp-ui",framework:"react",source:"dapp-ui"}),n.init(),Uo=r,Uo}function vi(){return Uo}function ki(e,t){let n=Uo??ya();if(n)return n.captureException(e,t?{captureContext:{extra:t}}:void 0)}import{Component as Ab}from"react";var Ci=class extends Ab{constructor(){super(...arguments);this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(n,r){ki(n,{componentStack:r.componentStack??void 0,boundary:this.props.name??"dapp-ui"})}render(){return this.state.hasError?this.props.fallback??null:this.props.children}};function ye(...e){return e.filter(Boolean).join(" ")}var Mb=/CROSSx|ONE\s?wallet|ONE\s?pocket/i;function jo(){return typeof window>"u"?!1:Mb.test(window.navigator.userAgent)}var _c="__nexus_dapp_ui_uid",zl=null;function Lb(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Array.from({length:32},()=>Math.floor(Math.random()*16).toString(16)).join("")}function Fl(){if(zl)return zl;let e=null;try{e=window.localStorage.getItem(_c)}catch{}if(!e||!e.startsWith("anon_")){e=`anon_${Lb()}`;try{window.localStorage.setItem(_c,e)}catch{}}return zl=e,e}async function Vc(e){if(typeof crypto>"u"||!crypto.subtle)return null;try{let t=new TextEncoder().encode(e.trim().toLowerCase()),n=await crypto.subtle.digest("SHA-256",t);return`wallet_${Array.from(new Uint8Array(n),o=>o.toString(16).padStart(2,"0")).join("").slice(0,16)}`}catch{return null}}function Db(){let e=window.navigator.userAgent;return/ipad|tablet|(android(?!.*mobile))/i.test(e)?"tablet":/mobile|iphone|ipod|android/i.test(e)?"mobile":"desktop"}function Yc(){return{host:window.location.hostname,device_type:Db(),is_cross_inapp:String(jo())}}var Qc=!1;function Ul(){if(typeof window>"u")return null;let e=vi()??ya();return e?(Qc||(Qc=!0,e.setUser({id:Fl()})),e):null}function Kc(){return Math.random()>=Hc()}var qc=0;function Wo(e){let t=Ul();if(!t)return;let n=++qc;if(!e){t.setUser({id:Fl()});return}Vc(e).then(r=>{r&&n===qc&&t.setUser({id:r})})}function Ri(e,t,n){let r=Ul();!r||Kc()||r.captureMessage(`ui: ${e}_${t}`,"info",{captureContext:{tags:{...Yc(),feature:e,action:t,...n}}})}function Ye(e,t,n){let r=Ul();if(!r||Kc())return;let o=n?.status??"success";r.captureMessage(`funnel: ${e}_${t}`,"info",{captureContext:{tags:{...Yc(),flow:e,funnel_step:`${e}_${t}`,funnel_status:o,...o==="failure"?{failure_reason:n?.reason??"unknown"}:{},...n?.tags}}})}function Dn(e){let t=e,n=String((t&&typeof t=="object"&&"message"in t?t.message:e)??"").toLowerCase();return t?.code===4001||/reject|denied|declin|cancel/i.test(n)?"user-rejected":/insufficient (funds|gas|balance)|exceeds balance/i.test(n)?"insufficient-gas":/timeout|timed out|deadline/i.test(n)?"timeout":/revert|execution failed/i.test(n)?"contract-reverted":/network|fetch|connection|disconnected|offline/i.test(n)?"network":"unknown"}import{useCallback as Pb}from"react";import{jsx as Ob}from"react/jsx-runtime";function xe({feature:e,children:t}){let n=Pb(r=>{let o=r.nativeEvent;if(o.__dappUiTracked)return;let i=r.target?.closest?.("[data-track]");if(!i)return;let s=i.getAttribute("data-track");if(!s)return;o.__dappUiTracked=!0;let l=i.getAttribute("data-track-id");Ri(e,s,l?{item_id:l}:void 0)},[e]);return Ob("div",{style:{display:"contents"},onClick:n,children:t})}import*as _o from"react";import*as Xc from"@radix-ui/react-popover";import{Drawer as _b}from"vaul";import{createContext as Bb,useContext as zb}from"react";var jl=Bb(null);function Ni(){let e=zb(jl);if(!e)throw new Error("AppLauncher compound components must be used within <AppLauncher>");return e}import*as Ti from"react";var Fb="__dappUiOverlay",yo=[],Go=0,Gl=0,Si=!1,Wl=!1;function Zc(){if(Gl>0){Gl-=1;return}Go=Math.max(0,Go-1),yo.pop()?.close(),Hl()}function Ub(){Si||(window.addEventListener("popstate",Zc),Si=!0)}function Hl(){yo.length>0||!Si||(window.removeEventListener("popstate",Zc),Si=!1)}function jb(){Wl||(Wl=!0,queueMicrotask(()=>{Wl=!1;let e=Go-yo.length;if(e<=0){Hl();return}Go-=e,Gl+=1,window.history.go(-e),Hl()}))}function or(e,t){let n=Ti.useRef(t);n.current=t,Ti.useEffect(()=>{if(!(!e||typeof window>"u"))return Wb(()=>n.current())},[e])}function Wb(e){let t={close:e};return yo.push(t),Go<yo.length&&(window.history.pushState({[Fb]:!0},""),Go+=1),Ub(),()=>{let n=yo.lastIndexOf(t);n!==-1&&(yo.splice(n,1),jb())}}import{useState as Gb,useEffect as Hb}from"react";function Ho(e){let[t,n]=Gb(!1);return Hb(()=>{let r=window.matchMedia(e);n(r.matches);let o=a=>n(a.matches);return r.addEventListener("change",o),()=>r.removeEventListener("change",o)},[e]),t}function ce(e,{insertAt:t}={}){if(!e||typeof document>"u")return;let n=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css",t==="top"&&n.firstChild?n.insertBefore(r,n.firstChild):n.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}ce(`[data-theme=dark]{--al-bg: var(--ds-surface-default, #1e232e);--al-bg-hover: var(--ds-surface-medium, #252b39);--al-text: var(--ds-content-highest, #ffffff);--al-text-secondary: var(--ds-content-medium, #ffffffa6);--al-border: var(--ds-border-default, #ffffff12);--al-shadow: var(--ds-shadow-modal, 0px 4px 30px -1px rgba(0, 0, 0, .7));--al-primary: #f3742e;--al-primary-hover: #ff8a4a;--al-primary-soft: #3a261f;--al-new-ribbon-bg: #ed0a72;--al-badge-bg: var(--ds-accent-primary-low, #2e2854);--al-badge-text: var(--ds-accent-primary-default, #a392ff);--al-drawer-overlay: var(--ds-overlay-dim, #000000b3)}[data-theme=light]{--al-bg: var(--ds-surface-default, #ffffff);--al-bg-hover: var(--ds-surface-medium, #f5f7fa);--al-text: var(--ds-content-highest, #000000);--al-text-secondary: var(--ds-content-medium, #000000a6);--al-border: var(--ds-border-default, #00000012);--al-shadow: var(--ds-shadow-modal, 0px 4px 30px -1px rgba(0, 0, 0, .15));--al-primary: #f3742e;--al-primary-hover: #ff8a4a;--al-primary-soft: #fff1eb;--al-new-ribbon-bg: #ed0a72;--al-badge-bg: var(--ds-accent-primary-low, #f5f3ff);--al-badge-text: var(--ds-accent-primary-default, #7e54f4);--al-drawer-overlay: var(--ds-overlay-dim, #00000080)}
1
+ function Bc(e){try{return import.meta.env?.[e]}catch{return}}function zc(e){if(!(typeof process>"u"))return process.env?.[e]}function at(e){if(e)return Fc(e);let t=Bc("VITE_CROSSX_ENVIRONMENT")??Bc("NEXT_PUBLIC_CROSSX_ENVIRONMENT")??zc("NEXT_PUBLIC_CROSSX_ENVIRONMENT")??zc("CROSSX_ENVIRONMENT");return Fc(t)}function Fc(e){switch(e?.toLowerCase()){case"dev":case"development":return"dev";case"stage":case"staging":case"stg":return"stage";default:return"production"}}import*as wr from"react";var wa="eip155";function jn(e){return`${wa}:${e}`}function Uc(e){let t=e.indexOf(":");return t>0?e.slice(0,t):void 0}function jc(e){let t=Uc(e);return t===void 0||t===wa}function bi(e){if(typeof e=="number")return Number.isSafeInteger(e)&&e>0?e:void 0;if(typeof e!="string")return;let t=e.trim(),n=Uc(t);if(n!==void 0&&n!==wa)return;let r=n===wa?t.slice(wa.length+1):t;if(!/^\d+$/.test(r))return;let o=Number(r);return Number.isSafeInteger(o)&&o>0?o:void 0}function Wc(e){let t=bi(e);return t===void 0?void 0:jn(t)}var gb={dev:"https://stg-contents.crosstoken.io/frontend/common/app-launcher",stage:"https://stg-contents.crosstoken.io/frontend/common/app-launcher",production:"https://contents.crosstoken.io/frontend/common/app-launcher"},hb=3e3;function Wn(e,t){if(e!=null)return typeof e=="object"&&!Array.isArray(e)&&("dev"in e||"stage"in e||"production"in e)?e[t]:e}var Pl=new Map;function Mr(e,t){let n=`${gb[t]}/${e}`,r=Pl.get(n);return r||(r=(async()=>{let o=new AbortController,a=setTimeout(()=>o.abort(),hb);try{let i=await fetch(n,{cache:"no-store",signal:o.signal});return i.ok?await i.json():null}catch{return null}finally{clearTimeout(a)}})().then(o=>(o===null&&Pl.delete(n),o)),Pl.set(n,r)),r}function bb(e){return typeof e=="string"&&e.startsWith("https://")}async function Se(e,t){let n=await Mr("endpoints.json",t),r=Wn(n?.apis?.[e],t);if(!bb(r))throw new Error(`[remote-config] endpoints.json missing or invalid api base: ${e} (${t})`);return r}var wi="apps.json";function yi(e,t){let n=Wn(e?.relay?.forwarderFactories,t),r=[n?.standingForwarderFactory,n?.depositorForwarderFactory].filter(o=>typeof o=="string");return r.length>0?r:void 0}var Fo="chains.json";function Ol(e,t){return e?e[jn(t)]??e[String(t)]??{}:{}}async function wb(e,t){let n=await Mr(Fo,t);return Ol(n?.chains,e)}function bo(e,t){let[n,r]=wr.useState({});return wr.useEffect(()=>{if(e==null){r({});return}let o=!0;return Mr(Fo,t).then(a=>{o&&r(Ol(a?.chains,e))}),()=>{o=!1}},[e,t]),n}function yb(e){let[t,n]=wr.useState({});return wr.useEffect(()=>{let r=!0;return Mr(Fo,e).then(o=>{r&&n(o?.chains??{})}),()=>{r=!1}},[e]),t}function Ut(e,t,n){let[r,o]=wr.useState(void 0),a=wr.useRef(n);return a.current=n,wr.useEffect(()=>{let i=!0;return Mr(e,t).then(s=>{if(!i)return;let l=a.current(s);l!==void 0&&o(l)}),()=>{i=!1}},[e,t]),r}var wo="1.5.0";var xi="__nexusCrossAppLauncherRuntime";function xb(){if(typeof window>"u")return null;let e=window;return e[xi]??(e[xi]={mode:"dapp-ui"}),e[xi]}function vb(e){if(e.scheduled)return;e.scheduled=!0;let t=()=>{if(e.scheduled=!1,e.loggedMode!==e.mode){if(e.mode==="connect-kit-react"){let n=e.connectKitVersion??"unknown";console.info(`[CROSSx App Launcher] connect-kit-react v${n} \uCD08\uAE30\uD654 \uC644\uB8CC (dapp-ui v${wo}, \uC0AC\uC6A9 \uBAA8\uB4DC: connect-kit)`)}else console.info(`[CROSSx App Launcher] dapp-ui v${wo} \uCD08\uAE30\uD654 \uC644\uB8CC (\uC0AC\uC6A9 \uBAA8\uB4DC: dapp-ui only)`);e.loggedMode=e.mode}};typeof queueMicrotask=="function"?queueMicrotask(t):Promise.resolve().then(t)}function Bl(e){let t=xb();t&&(e?.mode==="connect-kit-react"?t.mode="connect-kit-react":t.mode||(t.mode="dapp-ui"),e?.connectKitVersion&&(t.connectKitVersion=e.connectKitVersion),vb(t))}import{BrowserClient as kb,Scope as Cb,defaultStackParser as Rb,linkedErrorsIntegration as Nb,makeFetchTransport as Sb}from"@sentry/react";var Tb="https://5c82aeb32da33b5a0a14b7c5393992ca@o4511668907081728.ingest.de.sentry.io/4511705324126289",Ib=`dapp-ui@${wo}`,Uo=null,Gc=.1;function Hc(){return Gc}function Eb(e){switch(e){case"dev":return"dev";case"stage":return"stg";default:return"prod"}}function ya(e){if(Uo)return Uo;if(typeof window>"u")return null;let t=Eb(at(e?.environment));typeof e?.analyticsSampleRate=="number"&&(Gc=Math.min(1,Math.max(0,e.analyticsSampleRate)));let n=new kb({dsn:e?.dsn??Tb,transport:Sb,stackParser:Rb,integrations:[Nb()],environment:t,release:Ib,enabled:e?.enabled??t==="prod"}),r=new Cb;return r.setClient(n),r.setTags({package:"dapp-ui",framework:"react",source:"dapp-ui"}),n.init(),Uo=r,Uo}function vi(){return Uo}function ki(e,t){let n=Uo??ya();if(n)return n.captureException(e,t?{captureContext:{extra:t}}:void 0)}import{Component as Ab}from"react";var Ci=class extends Ab{constructor(){super(...arguments);this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(n,r){ki(n,{componentStack:r.componentStack??void 0,boundary:this.props.name??"dapp-ui"})}render(){return this.state.hasError?this.props.fallback??null:this.props.children}};function ye(...e){return e.filter(Boolean).join(" ")}var Mb=/CROSSx|ONE\s?wallet|ONE\s?pocket/i;function jo(){return typeof window>"u"?!1:Mb.test(window.navigator.userAgent)}var _c="__nexus_dapp_ui_uid",zl=null;function Lb(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Array.from({length:32},()=>Math.floor(Math.random()*16).toString(16)).join("")}function Fl(){if(zl)return zl;let e=null;try{e=window.localStorage.getItem(_c)}catch{}if(!e||!e.startsWith("anon_")){e=`anon_${Lb()}`;try{window.localStorage.setItem(_c,e)}catch{}}return zl=e,e}async function Vc(e){if(typeof crypto>"u"||!crypto.subtle)return null;try{let t=new TextEncoder().encode(e.trim().toLowerCase()),n=await crypto.subtle.digest("SHA-256",t);return`wallet_${Array.from(new Uint8Array(n),o=>o.toString(16).padStart(2,"0")).join("").slice(0,16)}`}catch{return null}}function Db(){let e=window.navigator.userAgent;return/ipad|tablet|(android(?!.*mobile))/i.test(e)?"tablet":/mobile|iphone|ipod|android/i.test(e)?"mobile":"desktop"}function Yc(){return{host:window.location.hostname,device_type:Db(),is_cross_inapp:String(jo())}}var Qc=!1;function Ul(){if(typeof window>"u")return null;let e=vi()??ya();return e?(Qc||(Qc=!0,e.setUser({id:Fl()})),e):null}function Kc(){return Math.random()>=Hc()}var qc=0;function Wo(e){let t=Ul();if(!t)return;let n=++qc;if(!e){t.setUser({id:Fl()});return}Vc(e).then(r=>{r&&n===qc&&t.setUser({id:r})})}function Ri(e,t,n){let r=Ul();!r||Kc()||r.captureMessage(`ui: ${e}_${t}`,"info",{captureContext:{tags:{...Yc(),feature:e,action:t,...n}}})}function Ye(e,t,n){let r=Ul();if(!r||Kc())return;let o=n?.status??"success";r.captureMessage(`funnel: ${e}_${t}`,"info",{captureContext:{tags:{...Yc(),flow:e,funnel_step:`${e}_${t}`,funnel_status:o,...o==="failure"?{failure_reason:n?.reason??"unknown"}:{},...n?.tags}}})}function Dn(e){let t=e,n=String((t&&typeof t=="object"&&"message"in t?t.message:e)??"").toLowerCase();return t?.code===4001||/reject|denied|declin|cancel/i.test(n)?"user-rejected":/insufficient (funds|gas|balance)|exceeds balance/i.test(n)?"insufficient-gas":/timeout|timed out|deadline/i.test(n)?"timeout":/revert|execution failed/i.test(n)?"contract-reverted":/network|fetch|connection|disconnected|offline/i.test(n)?"network":"unknown"}import{useCallback as Pb}from"react";import{jsx as Ob}from"react/jsx-runtime";function xe({feature:e,children:t}){let n=Pb(r=>{let o=r.nativeEvent;if(o.__dappUiTracked)return;let i=r.target?.closest?.("[data-track]");if(!i)return;let s=i.getAttribute("data-track");if(!s)return;o.__dappUiTracked=!0;let l=i.getAttribute("data-track-id");Ri(e,s,l?{item_id:l}:void 0)},[e]);return Ob("div",{style:{display:"contents"},onClick:n,children:t})}import*as _o from"react";import*as Xc from"@radix-ui/react-popover";import{Drawer as _b}from"vaul";import{createContext as Bb,useContext as zb}from"react";var jl=Bb(null);function Ni(){let e=zb(jl);if(!e)throw new Error("AppLauncher compound components must be used within <AppLauncher>");return e}import*as Ti from"react";var Fb="__dappUiOverlay",yo=[],Go=0,Gl=0,Si=!1,Wl=!1;function Zc(){if(Gl>0){Gl-=1;return}Go=Math.max(0,Go-1),yo.pop()?.close(),Hl()}function Ub(){Si||(window.addEventListener("popstate",Zc),Si=!0)}function Hl(){yo.length>0||!Si||(window.removeEventListener("popstate",Zc),Si=!1)}function jb(){Wl||(Wl=!0,queueMicrotask(()=>{Wl=!1;let e=Go-yo.length;if(e<=0){Hl();return}Go-=e,Gl+=1,window.history.go(-e),Hl()}))}function or(e,t){let n=Ti.useRef(t);n.current=t,Ti.useEffect(()=>{if(!(!e||typeof window>"u"))return Wb(()=>n.current())},[e])}function Wb(e){let t={close:e};return yo.push(t),Go<yo.length&&(window.history.pushState({[Fb]:!0},""),Go+=1),Ub(),()=>{let n=yo.lastIndexOf(t);n!==-1&&(yo.splice(n,1),jb())}}import{useState as Gb,useEffect as Hb}from"react";function Ho(e){let[t,n]=Gb(!1);return Hb(()=>{let r=window.matchMedia(e);n(r.matches);let o=a=>n(a.matches);return r.addEventListener("change",o),()=>r.removeEventListener("change",o)},[e]),t}function ce(e,{insertAt:t}={}){if(!e||typeof document>"u")return;let n=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css",t==="top"&&n.firstChild?n.insertBefore(r,n.firstChild):n.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}ce(`[data-theme=dark]{--al-bg: var(--ds-surface-default, #1e232e);--al-bg-hover: var(--ds-surface-medium, #252b39);--al-text: var(--ds-content-highest, #ffffff);--al-text-secondary: var(--ds-content-medium, #ffffffa6);--al-border: var(--ds-border-default, #ffffff12);--al-shadow: var(--ds-shadow-modal, 0px 4px 30px -1px rgba(0, 0, 0, .7));--al-primary: #f3742e;--al-primary-hover: #ff8a4a;--al-primary-soft: #3a261f;--al-new-ribbon-bg: #ed0a72;--al-badge-bg: var(--ds-accent-primary-low, #2e2854);--al-badge-text: var(--ds-accent-primary-default, #a392ff);--al-drawer-overlay: var(--ds-overlay-dim, #000000b3)}[data-theme=light]{--al-bg: var(--ds-surface-default, #ffffff);--al-bg-hover: var(--ds-surface-medium, #f5f7fa);--al-text: var(--ds-content-highest, #000000);--al-text-secondary: var(--ds-content-medium, #000000a6);--al-border: var(--ds-border-default, #00000012);--al-shadow: var(--ds-shadow-modal, 0px 4px 30px -1px rgba(0, 0, 0, .15));--al-primary: #f3742e;--al-primary-hover: #ff8a4a;--al-primary-soft: #fff1eb;--al-new-ribbon-bg: #ed0a72;--al-badge-bg: var(--ds-accent-primary-low, #f5f3ff);--al-badge-text: var(--ds-accent-primary-default, #7e54f4);--al-drawer-overlay: var(--ds-overlay-dim, #00000080)}
2
2
  `);ce(`.al-trigger-btn{--at-bg: transparent;--at-bg-hover: #eaedf1;--at-color: var(--ds-content-high, rgba(0, 0, 0, .85));--at-border: none;--at-border-radius: 8px;--at-size: 36px;--at-padding: 0;--at-press-scale: .95;--at-transition: background-color .15s ease;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:var(--at-size);height:var(--at-size);padding:var(--at-padding);border:var(--at-border);background:var(--at-bg);border-radius:var(--at-border-radius);color:var(--at-color);cursor:pointer;transition:var(--at-transition)}.al-trigger-btn:hover,.al-trigger-btn[data-state=open]{background:var(--at-bg-hover)}.al-trigger-btn:active:not(:disabled){background:var(--at-bg-hover);transform:scale(var(--at-press-scale))}.al-trigger-btn[data-theme=dark]{--at-color: var(--ds-content-high, rgba(255, 255, 255, .85));--at-bg-hover: #252b39}.al-trigger-btn[data-theme=light]{--at-color: var(--ds-content-high, rgba(0, 0, 0, .85))}
3
3
  `);ce(`@keyframes al-fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
4
4
  `);ce(`.al-popover-content{-webkit-font-smoothing:antialiased;z-index:100001;border-radius:24px;background:var(--al-bg);border:1px solid var(--al-popover-border, var(--al-border));box-shadow:var(--al-popover-shadow, var(--al-shadow));animation:al-fade-in .15s ease-out;max-height:80vh;overflow-x:hidden;overflow-y:auto;padding:20px 4px;box-sizing:border-box}.al-popover-content .al-menu{display:flex;flex-direction:column;width:424px;max-width:calc(100vw - 32px);padding:0 12px;box-sizing:border-box}.al-popover-content .al-grid{display:grid;grid-template-columns:repeat(4,100px);row-gap:12px;column-gap:0;justify-content:center;align-items:start}.al-popover-content .al-grid-item{position:relative;flex-direction:column;justify-content:flex-start;align-items:center;gap:6px;padding:12px 0;width:100px;min-width:0;border-radius:10px}.al-popover-content .al-grid-item-left{flex-direction:column;align-items:center;gap:8px;width:100%;overflow:visible}.al-popover-content .al-grid-item-icon{width:50px;height:50px;border-radius:10.125px;overflow:visible}.al-popover-content .al-grid-item-icon img{object-fit:cover}.al-popover-content .al-grid-item-label{font-family:Inter,sans-serif;font-size:12px;font-weight:500;line-height:1.1;letter-spacing:0;text-align:center;color:var(--al-text);max-width:100%;white-space:normal;overflow-wrap:anywhere}.al-popover-content .al-grid-item-text{flex-direction:column;align-items:center;justify-content:center;gap:2px;max-width:100%;min-height:26px}.al-popover-content .al-grid-item-status-text{font-size:10px;line-height:1.1}.al-popover-content .al-badge-list{display:none}.al-drawer-overlay{position:fixed;inset:0;z-index:100000;background:var(--al-drawer-overlay)}.al-drawer-content{-webkit-font-smoothing:antialiased;position:fixed;top:0;right:0;bottom:0;z-index:100001;width:100vw;background:var(--al-bg);overflow-x:hidden;overflow-y:hidden;display:flex;flex-direction:column;box-sizing:border-box}.al-drawer-body{flex:1;overflow-y:auto;overscroll-behavior-y:contain;min-height:0}.al-drawer-content .al-menu{display:flex;flex-direction:column;min-height:0}.al-drawer-content .al-grid{display:flex;flex-direction:column;grid-template-columns:none;max-width:100%;overflow:hidden;flex-shrink:0;gap:0;row-gap:0;column-gap:0;padding:8px 16px}.al-drawer-content .al-grid-item{width:100%;max-width:100%;gap:8px;padding:16px 12px;border-radius:8px;overflow:hidden;background:transparent}.al-drawer-content .al-grid-item:hover,.al-drawer-content .al-grid-item[data-active=true]{background:var(--al-bg-hover)}.al-drawer-content .al-grid-item-left{gap:8px;flex:1 1 auto;min-width:0;overflow:visible}.al-drawer-content .al-grid-item-icon{width:32px;height:32px;border-radius:6.75px;overflow:visible}.al-drawer-content .al-grid-item-icon img{width:100%;height:100%;object-fit:cover;border-radius:6.75px}.al-drawer-content .al-grid-item-label{font-size:16px;line-height:1.35;letter-spacing:0;font-weight:400}.al-drawer-content .al-grid-item[data-active=true] .al-grid-item-label{font-weight:500}.al-drawer-header{display:flex;align-items:center;justify-content:space-between;padding:16px;flex-shrink:0}.al-drawer-title{font-family:Inter,sans-serif;font-size:16px;font-weight:500;line-height:1.5;letter-spacing:0;color:var(--al-text);margin:0}.al-drawer-close{display:inline-flex;align-items:center;justify-content:center;padding:4px;border:none;background:transparent;border-radius:4px;cursor:pointer;color:var(--al-text-secondary);transition:opacity .15s ease}.al-drawer-close:hover{opacity:.7}.al-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px;padding:8px}.al-grid-item{display:flex;align-items:center;justify-content:flex-start;gap:10px;padding:16px 12px;border:none;background:var(--al-bg);border-radius:8px;cursor:pointer;transition:none;color:var(--al-text);text-align:left;font-family:Inter,sans-serif;flex-shrink:0}.al-grid-item:hover,.al-grid-item[data-active=true]{background:var(--al-bg-hover)!important}.al-grid-item-left{display:flex;align-items:center;gap:8px;min-width:0;overflow:visible}.al-grid-item-text{display:flex;flex-direction:column;align-items:flex-start;gap:1px;max-width:100%;min-width:0}.al-grid-item-icon{display:flex;align-items:center;justify-content:center;position:relative;width:24px;height:24px;overflow:visible;border-radius:5px;flex-shrink:0}.al-grid-item-icon img{width:100%;height:100%;object-fit:contain;border-radius:inherit}.al-grid-item-label{font-family:Inter,sans-serif;font-size:16px;font-weight:500;line-height:150%;letter-spacing:0;color:var(--al-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.al-grid-item-status-text{font-family:Inter,sans-serif;font-size:12px;font-weight:400;line-height:1.15;letter-spacing:0;color:var(--al-text);white-space:nowrap}.al-status-ribbon{position:absolute;top:-6px;right:-6px;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;box-sizing:border-box;border-radius:999px;color:#fff;font-family:Pretendard,Inter,sans-serif;font-size:12px;font-weight:800;line-height:1;pointer-events:none;box-shadow:0 1px 3px #0000002e}.al-status-ribbon-new{background:var(--al-new-ribbon-bg)}.al-badge{display:flex;padding:1px 4px 2px;justify-content:center;align-items:center;gap:2px;border-radius:3px;background:var(--al-badge-bg);color:var(--al-badge-text);font-family:Pretendard,Inter,sans-serif;font-size:10px;font-weight:600;line-height:150%;letter-spacing:0;white-space:nowrap;flex-shrink:0}