@nexus-cross/dapp-ui 1.3.8-beta.1 → 1.3.8

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 va(e){try{return import.meta.env?.[e]}catch{return}}function ka(e){if(!(typeof process>"u"))return process.env?.[e]}function Me(e){if(e)return Sa(e);let t=va("VITE_CROSSX_ENVIRONMENT")??va("NEXT_PUBLIC_CROSSX_ENVIRONMENT")??ka("NEXT_PUBLIC_CROSSX_ENVIRONMENT")??ka("CROSSX_ENVIRONMENT");return Sa(t)}function Sa(e){switch(e?.toLowerCase()){case"dev":case"development":return"dev";case"stage":case"staging":case"stg":return"stage";default:return"production"}}import*as en from"react";var Md={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"},Dd=3e3;function Bn(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 di=new Map;function Mn(e,t){let n=`${Md[t]}/${e}`,o=di.get(n);return o||(o=(async()=>{let r=new AbortController,i=setTimeout(()=>r.abort(),Dd);try{let a=await fetch(n,{cache:"no-store",signal:r.signal});return a.ok?await a.json():null}catch{return null}finally{clearTimeout(i)}})().then(r=>(r===null&&di.delete(n),r)),di.set(n,o)),o}function Od(e){return typeof e=="string"&&e.startsWith("https://")}async function ae(e,t){let n=await Mn("endpoints.json",t),o=Bn(n?.apis?.[e],t);if(!Od(o))throw new Error(`[remote-config] endpoints.json missing or invalid api base: ${e} (${t})`);return o}var Zo="chains.json";async function Wd(e,t){return(await Mn(Zo,t))?.chains?.[String(e)]??{}}function So(e,t){let[n,o]=en.useState({});return en.useEffect(()=>{if(e==null){o({});return}let r=!0;return Mn(Zo,t).then(i=>{r&&o(i?.chains?.[String(e)]??{})}),()=>{r=!1}},[e,t]),n}function Ud(e){let[t,n]=en.useState({});return en.useEffect(()=>{let o=!0;return Mn(Zo,e).then(r=>{o&&n(r?.chains??{})}),()=>{o=!1}},[e]),t}function Dn(e,t,n){let[o,r]=en.useState(void 0),i=en.useRef(n);return i.current=n,en.useEffect(()=>{let a=!0;return Mn(e,t).then(s=>{if(!a)return;let l=i.current(s);l!==void 0&&r(l)}),()=>{a=!1}},[e,t]),o}var Ro="1.3.8-beta.1";var Xo="__nexusCrossAppLauncherRuntime";function Gd(){if(typeof window>"u")return null;let e=window;return e[Xo]??(e[Xo]={mode:"dapp-ui"}),e[Xo]}function zd(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${Ro}, \uC0AC\uC6A9 \uBAA8\uB4DC: connect-kit)`)}else console.info(`[CROSSx App Launcher] dapp-ui v${Ro} \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 pi(e){let t=Gd();t&&(e?.mode==="connect-kit-react"?t.mode="connect-kit-react":t.mode||(t.mode="dapp-ui"),e?.connectKitVersion&&(t.connectKitVersion=e.connectKitVersion),zd(t))}import{BrowserClient as $d,Scope as Hd,defaultStackParser as jd,linkedErrorsIntegration as Vd,makeFetchTransport as qd}from"@sentry/react";var Kd="https://5c82aeb32da33b5a0a14b7c5393992ca@o4511668907081728.ingest.de.sentry.io/4511705324126289",Yd=`dapp-ui@${Ro}`,Jn=null,Ra=1;function Ca(){return Ra}function Qd(e){switch(e){case"dev":return"dev";case"stage":return"stg";default:return"prod"}}function Co(e){if(Jn)return Jn;if(typeof window>"u")return null;let t=Qd(Me(e?.environment));typeof e?.analyticsSampleRate=="number"&&(Ra=Math.min(1,Math.max(0,e.analyticsSampleRate)));let n=new $d({dsn:e?.dsn??Kd,transport:qd,stackParser:jd,integrations:[Vd()],environment:t,release:Yd,enabled:e?.enabled??t==="prod"}),o=new Hd;return o.setClient(n),o.setTags({package:"dapp-ui",framework:"react",source:"dapp-ui"}),n.init(),Jn=o,Jn}function Jo(){return Jn}function er(e,t){let n=Jn??Co();if(n)return n.captureException(e,t?{captureContext:{extra:t}}:void 0)}import{Component as Zd}from"react";var tr=class extends Zd{constructor(){super(...arguments);this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(n,o){er(n,{componentStack:o.componentStack??void 0,boundary:this.props.name??"dapp-ui"})}render(){return this.state.hasError?this.props.fallback??null:this.props.children}};function ue(...e){return e.filter(Boolean).join(" ")}function Ta(){return typeof window>"u"?!1:window.navigator.userAgent.includes("CROSSx")}var Na="__nexus_dapp_ui_uid",ui=null;function Xd(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Array.from({length:32},()=>Math.floor(Math.random()*16).toString(16)).join("")}function fi(){if(ui)return ui;let e=null;try{e=window.localStorage.getItem(Na)}catch{}if(!e||!e.startsWith("anon_")){e=`anon_${Xd()}`;try{window.localStorage.setItem(Na,e)}catch{}}return ui=e,e}async function Ea(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),r=>r.toString(16).padStart(2,"0")).join("").slice(0,16)}`}catch{return null}}function Jd(){let e=window.navigator.userAgent;return/ipad|tablet|(android(?!.*mobile))/i.test(e)?"tablet":/mobile|iphone|ipod|android/i.test(e)?"mobile":"desktop"}function Pa(){return{host:window.location.hostname,device_type:Jd(),is_cross_inapp:String(Ta())}}var Ia=!1;function mi(){if(typeof window>"u")return null;let e=Jo()??Co();return e?(Ia||(Ia=!0,e.setUser({id:fi()})),e):null}function La(){return Math.random()>=Ca()}var _a=0;function eo(e){let t=mi();if(!t)return;let n=++_a;if(!e){t.setUser({id:fi()});return}Ea(e).then(o=>{o&&n===_a&&t.setUser({id:o})})}function nr(e,t,n){let o=mi();!o||La()||o.captureMessage(`ui: ${e}_${t}`,"info",{captureContext:{tags:{...Pa(),feature:e,action:t,...n}}})}function Ce(e,t,n){let o=mi();if(!o||La())return;let r=n?.status??"success";o.captureMessage(`funnel: ${e}_${t}`,"info",{captureContext:{tags:{...Pa(),flow:e,funnel_step:`${e}_${t}`,funnel_status:r,...r==="failure"?{failure_reason:n?.reason??"unknown"}:{},...n?.tags}}})}function Tt(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 ep}from"react";import{jsx as tp}from"react/jsx-runtime";function xe({feature:e,children:t}){let n=ep(o=>{let r=o.nativeEvent;if(r.__dappUiTracked)return;let a=o.target?.closest?.("[data-track]");if(!a)return;let s=a.getAttribute("data-track");if(!s)return;r.__dappUiTracked=!0;let l=a.getAttribute("data-track-id");nr(e,s,l?{item_id:l}:void 0)},[e]);return tp("div",{style:{display:"contents"},onClick:n,children:t})}import*as no from"react";import*as Aa from"@radix-ui/react-popover";import{Drawer as ap}from"vaul";import{createContext as np,useContext as op}from"react";var gi=np(null);function or(){let e=op(gi);if(!e)throw new Error("AppLauncher compound components must be used within <AppLauncher>");return e}import{useState as rp,useEffect as ip}from"react";function to(e){let[t,n]=rp(!1);return ip(()=>{let o=window.matchMedia(e);n(o.matches);let r=i=>n(i.matches);return o.addEventListener("change",r),()=>o.removeEventListener("change",r)},[e]),t}function te(e,{insertAt:t}={}){if(!e||typeof document>"u")return;let n=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",t==="top"&&n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}te(`[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, #123235);--al-badge-text: var(--ds-accent-primary-default, #00ceb2);--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, #e7f9f8);--al-badge-text: var(--ds-accent-primary-default, #00b4b7);--al-drawer-overlay: var(--ds-overlay-dim, #00000080)}
1
+ function va(e){try{return import.meta.env?.[e]}catch{return}}function ka(e){if(!(typeof process>"u"))return process.env?.[e]}function Me(e){if(e)return Sa(e);let t=va("VITE_CROSSX_ENVIRONMENT")??va("NEXT_PUBLIC_CROSSX_ENVIRONMENT")??ka("NEXT_PUBLIC_CROSSX_ENVIRONMENT")??ka("CROSSX_ENVIRONMENT");return Sa(t)}function Sa(e){switch(e?.toLowerCase()){case"dev":case"development":return"dev";case"stage":case"staging":case"stg":return"stage";default:return"production"}}import*as en from"react";var Md={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"},Dd=3e3;function Bn(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 di=new Map;function Mn(e,t){let n=`${Md[t]}/${e}`,o=di.get(n);return o||(o=(async()=>{let r=new AbortController,i=setTimeout(()=>r.abort(),Dd);try{let a=await fetch(n,{cache:"no-store",signal:r.signal});return a.ok?await a.json():null}catch{return null}finally{clearTimeout(i)}})().then(r=>(r===null&&di.delete(n),r)),di.set(n,o)),o}function Od(e){return typeof e=="string"&&e.startsWith("https://")}async function ae(e,t){let n=await Mn("endpoints.json",t),o=Bn(n?.apis?.[e],t);if(!Od(o))throw new Error(`[remote-config] endpoints.json missing or invalid api base: ${e} (${t})`);return o}var Zo="chains.json";async function Wd(e,t){return(await Mn(Zo,t))?.chains?.[String(e)]??{}}function So(e,t){let[n,o]=en.useState({});return en.useEffect(()=>{if(e==null){o({});return}let r=!0;return Mn(Zo,t).then(i=>{r&&o(i?.chains?.[String(e)]??{})}),()=>{r=!1}},[e,t]),n}function Ud(e){let[t,n]=en.useState({});return en.useEffect(()=>{let o=!0;return Mn(Zo,e).then(r=>{o&&n(r?.chains??{})}),()=>{o=!1}},[e]),t}function Dn(e,t,n){let[o,r]=en.useState(void 0),i=en.useRef(n);return i.current=n,en.useEffect(()=>{let a=!0;return Mn(e,t).then(s=>{if(!a)return;let l=i.current(s);l!==void 0&&r(l)}),()=>{a=!1}},[e,t]),o}var Ro="1.3.8";var Xo="__nexusCrossAppLauncherRuntime";function Gd(){if(typeof window>"u")return null;let e=window;return e[Xo]??(e[Xo]={mode:"dapp-ui"}),e[Xo]}function zd(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${Ro}, \uC0AC\uC6A9 \uBAA8\uB4DC: connect-kit)`)}else console.info(`[CROSSx App Launcher] dapp-ui v${Ro} \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 pi(e){let t=Gd();t&&(e?.mode==="connect-kit-react"?t.mode="connect-kit-react":t.mode||(t.mode="dapp-ui"),e?.connectKitVersion&&(t.connectKitVersion=e.connectKitVersion),zd(t))}import{BrowserClient as $d,Scope as Hd,defaultStackParser as jd,linkedErrorsIntegration as Vd,makeFetchTransport as qd}from"@sentry/react";var Kd="https://5c82aeb32da33b5a0a14b7c5393992ca@o4511668907081728.ingest.de.sentry.io/4511705324126289",Yd=`dapp-ui@${Ro}`,Jn=null,Ra=1;function Ca(){return Ra}function Qd(e){switch(e){case"dev":return"dev";case"stage":return"stg";default:return"prod"}}function Co(e){if(Jn)return Jn;if(typeof window>"u")return null;let t=Qd(Me(e?.environment));typeof e?.analyticsSampleRate=="number"&&(Ra=Math.min(1,Math.max(0,e.analyticsSampleRate)));let n=new $d({dsn:e?.dsn??Kd,transport:qd,stackParser:jd,integrations:[Vd()],environment:t,release:Yd,enabled:e?.enabled??t==="prod"}),o=new Hd;return o.setClient(n),o.setTags({package:"dapp-ui",framework:"react",source:"dapp-ui"}),n.init(),Jn=o,Jn}function Jo(){return Jn}function er(e,t){let n=Jn??Co();if(n)return n.captureException(e,t?{captureContext:{extra:t}}:void 0)}import{Component as Zd}from"react";var tr=class extends Zd{constructor(){super(...arguments);this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(n,o){er(n,{componentStack:o.componentStack??void 0,boundary:this.props.name??"dapp-ui"})}render(){return this.state.hasError?this.props.fallback??null:this.props.children}};function ue(...e){return e.filter(Boolean).join(" ")}function Ta(){return typeof window>"u"?!1:window.navigator.userAgent.includes("CROSSx")}var Na="__nexus_dapp_ui_uid",ui=null;function Xd(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Array.from({length:32},()=>Math.floor(Math.random()*16).toString(16)).join("")}function fi(){if(ui)return ui;let e=null;try{e=window.localStorage.getItem(Na)}catch{}if(!e||!e.startsWith("anon_")){e=`anon_${Xd()}`;try{window.localStorage.setItem(Na,e)}catch{}}return ui=e,e}async function Ea(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),r=>r.toString(16).padStart(2,"0")).join("").slice(0,16)}`}catch{return null}}function Jd(){let e=window.navigator.userAgent;return/ipad|tablet|(android(?!.*mobile))/i.test(e)?"tablet":/mobile|iphone|ipod|android/i.test(e)?"mobile":"desktop"}function Pa(){return{host:window.location.hostname,device_type:Jd(),is_cross_inapp:String(Ta())}}var Ia=!1;function mi(){if(typeof window>"u")return null;let e=Jo()??Co();return e?(Ia||(Ia=!0,e.setUser({id:fi()})),e):null}function La(){return Math.random()>=Ca()}var _a=0;function eo(e){let t=mi();if(!t)return;let n=++_a;if(!e){t.setUser({id:fi()});return}Ea(e).then(o=>{o&&n===_a&&t.setUser({id:o})})}function nr(e,t,n){let o=mi();!o||La()||o.captureMessage(`ui: ${e}_${t}`,"info",{captureContext:{tags:{...Pa(),feature:e,action:t,...n}}})}function Ce(e,t,n){let o=mi();if(!o||La())return;let r=n?.status??"success";o.captureMessage(`funnel: ${e}_${t}`,"info",{captureContext:{tags:{...Pa(),flow:e,funnel_step:`${e}_${t}`,funnel_status:r,...r==="failure"?{failure_reason:n?.reason??"unknown"}:{},...n?.tags}}})}function Tt(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 ep}from"react";import{jsx as tp}from"react/jsx-runtime";function xe({feature:e,children:t}){let n=ep(o=>{let r=o.nativeEvent;if(r.__dappUiTracked)return;let a=o.target?.closest?.("[data-track]");if(!a)return;let s=a.getAttribute("data-track");if(!s)return;r.__dappUiTracked=!0;let l=a.getAttribute("data-track-id");nr(e,s,l?{item_id:l}:void 0)},[e]);return tp("div",{style:{display:"contents"},onClick:n,children:t})}import*as no from"react";import*as Aa from"@radix-ui/react-popover";import{Drawer as ap}from"vaul";import{createContext as np,useContext as op}from"react";var gi=np(null);function or(){let e=op(gi);if(!e)throw new Error("AppLauncher compound components must be used within <AppLauncher>");return e}import{useState as rp,useEffect as ip}from"react";function to(e){let[t,n]=rp(!1);return ip(()=>{let o=window.matchMedia(e);n(o.matches);let r=i=>n(i.matches);return o.addEventListener("change",r),()=>o.removeEventListener("change",r)},[e]),t}function te(e,{insertAt:t}={}){if(!e||typeof document>"u")return;let n=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",t==="top"&&n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}te(`[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, #123235);--al-badge-text: var(--ds-accent-primary-default, #00ceb2);--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, #e7f9f8);--al-badge-text: var(--ds-accent-primary-default, #00b4b7);--al-drawer-overlay: var(--ds-overlay-dim, #00000080)}
2
2
  `);te(`.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
  `);te(`@keyframes al-fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
4
4
  `);te(`.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}