@tokenflight/swap 0.0.3 → 0.1.1

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.
@@ -0,0 +1,333 @@
1
+ import { QuoteResponse } from '@tokenflight/api';
2
+ import { SwapStrategy } from '@tokenflight/api';
3
+
4
+ /** Amount change data */
5
+ declare interface AmountChangedData {
6
+ amount: string;
7
+ direction: "from" | "to";
8
+ }
9
+
10
+ /**
11
+ * Boolean HTML attribute — accepts both native booleans and the
12
+ * string equivalents that `parseBooleanProp()` understands.
13
+ */
14
+ declare type BooleanAttribute = boolean | "true" | "false" | "1" | "0" | "yes" | "no" | "";
15
+
16
+ /** Callback interfaces for widget events */
17
+ export declare interface Callbacks {
18
+ onSwapSuccess?(data: SwapSuccessData): void;
19
+ onSwapError?(data: SwapErrorData): void;
20
+ onWalletConnected?(data: WalletConnectedData): void;
21
+ onQuoteReceived?(data: QuoteResponse): void;
22
+ onAmountChanged?(data: AmountChangedData): void;
23
+ /** Called when user clicks Connect Wallet and no walletAdapter is provided */
24
+ onConnectWallet?(): void;
25
+ /** Called when user clicks the connected wallet address (for custom account modal handling) */
26
+ onAccountModal?(): void;
27
+ /** Called when a fiat order is created and the payment widget URL is available */
28
+ onFiatOrderCreated?(data: {
29
+ orderId: string;
30
+ widgetUrl: string;
31
+ }): void;
32
+ /** Called when a fiat order reaches a terminal status */
33
+ onFiatOrderCompleted?(data: {
34
+ orderId: string;
35
+ status: string;
36
+ txHash?: string;
37
+ }): void;
38
+ /** Called when a deposit completes successfully */
39
+ onDepositSuccess?(data: SwapSuccessData): void;
40
+ /** Called when a deposit fails */
41
+ onDepositError?(data: SwapErrorData): void;
42
+ }
43
+
44
+ /** Chain type for multi-chain support */
45
+ declare type ChainType = "evm" | "solana";
46
+
47
+ /**
48
+ * Custom color overrides — keys are CSS variable names.
49
+ * Typed keys provide autocomplete; arbitrary `--tf-*` strings are also accepted.
50
+ *
51
+ * ```ts
52
+ * customColors: {
53
+ * "--tf-primary": "#FF6B00",
54
+ * "--tf-bg": "#1A1A2E",
55
+ * "--tf-button-radius": "4px",
56
+ * "--tf-widget-max-width": "480px",
57
+ * }
58
+ * ```
59
+ */
60
+ export declare type CustomColors = Partial<Record<TfCssVar, string>> & Record<string, string>;
61
+
62
+ /** Payment methods available in `<tokenflight-deposit>` */
63
+ declare type DepositMethod = "wallet" | "card";
64
+
65
+ /** EVM wallet action via EIP-1193 */
66
+ declare interface EvmWalletAction {
67
+ type: "eip1193_request";
68
+ chainId: number;
69
+ method: string;
70
+ params: unknown[];
71
+ }
72
+
73
+ /** How the fiat payment provider UI is opened. */
74
+ declare type FiatPaymentMode = "overlay" | "popup";
75
+
76
+ declare interface ImperativeWidgetOptions<TConfig> {
77
+ container: string | HTMLElement;
78
+ config: TConfig;
79
+ walletAdapter?: IWalletAdapter;
80
+ callbacks?: Callbacks;
81
+ }
82
+
83
+ /** Wallet adapter interface that all adapters must implement */
84
+ export declare interface IWalletAdapter {
85
+ /** Human-readable name */
86
+ readonly name: string;
87
+ /** Icon URL */
88
+ readonly icon?: string;
89
+ /** Supported action types */
90
+ readonly supportedActionTypes: WalletActionType[];
91
+ /** Optional: supported chain IDs — when set, the widget only shows tokens on these chains */
92
+ readonly supportedChainIds?: number[];
93
+ /** Connect the wallet */
94
+ connect(chainType?: ChainType): Promise<void>;
95
+ /** Disconnect the wallet */
96
+ disconnect(): Promise<void>;
97
+ /** Check if connected */
98
+ isConnected(chainType?: ChainType): boolean;
99
+ /** Get the current address */
100
+ getAddress(chainType?: ChainType): Promise<string | null>;
101
+ /** Execute a wallet action */
102
+ executeWalletAction(action: WalletAction): Promise<WalletActionResult>;
103
+ /** Optional: sign a message */
104
+ signMessage?(message: string, chainType?: ChainType): Promise<string>;
105
+ /** Optional: open the wallet's native account/connected modal */
106
+ openAccountModal?(): Promise<void>;
107
+ /** Optional: clean up internal subscriptions and watchers */
108
+ destroy?(): void;
109
+ /** Subscribe to wallet events */
110
+ on(event: WalletEventType, handler: (event: WalletEvent) => void): void;
111
+ /** Unsubscribe from wallet events */
112
+ off(event: WalletEventType, handler: (event: WalletEvent) => void): void;
113
+ }
114
+
115
+ /** Receive component mode: crypto-only, fiat-only, or both */
116
+ export declare type ReceiveMode = "crypto" | "fiat" | "all";
117
+
118
+ export declare interface RegisterElementsOptions {
119
+ walletAdapter?: IWalletAdapter;
120
+ callbacks?: Callbacks;
121
+ /** Custom CSS variable overrides merged on top of the active theme.
122
+ * Keys are CSS variable names, e.g. `"--tf-primary"`, `"--tf-font-family"`. */
123
+ customColors?: CustomColors;
124
+ /** Default API endpoint for all widget instances. */
125
+ apiEndpoint?: string;
126
+ /** Default theme for all widget instances. */
127
+ theme?: Theme;
128
+ /** Default locale for all widget instances. */
129
+ locale?: SupportedLocale;
130
+ }
131
+
132
+ export declare function registerReceiveElement(options?: RegisterElementsOptions): void;
133
+
134
+ /** Solana sign and send transaction action */
135
+ declare interface SolanaSignAndSendAction {
136
+ type: "solana_signAndSendTransaction";
137
+ transaction: string;
138
+ }
139
+
140
+ /** Solana sign transaction action */
141
+ declare interface SolanaSignTransactionAction {
142
+ type: "solana_signTransaction";
143
+ transaction: string;
144
+ }
145
+
146
+ /** Supported locale identifiers. Accepts any string for forward-compat; known values get bundled translations. */
147
+ export declare type SupportedLocale = "en-US" | "zh-CN" | "zh-TW" | "ja-JP" | "ko-KR" | (string & {});
148
+
149
+ /** Data emitted on swap error */
150
+ declare interface SwapErrorData {
151
+ code: string;
152
+ message: string;
153
+ details?: unknown;
154
+ }
155
+
156
+ export { SwapStrategy }
157
+
158
+ /** Data emitted on swap success */
159
+ declare interface SwapSuccessData {
160
+ orderId: string;
161
+ fromToken: string;
162
+ toToken: string;
163
+ fromAmount: string;
164
+ toAmount: string;
165
+ txHash: string;
166
+ }
167
+
168
+ /** All first-party CSS custom properties exposed for theming. */
169
+ declare type TfCssVar = "--tf-bg" | "--tf-bg-secondary" | "--tf-bg-elevated" | "--tf-surface" | "--tf-surface-hover" | "--tf-input-bg" | "--tf-glass" | "--tf-text" | "--tf-text-secondary" | "--tf-text-tertiary" | "--tf-text-on-primary" | "--tf-border" | "--tf-border-light" | "--tf-primary" | "--tf-primary-alpha" | "--tf-primary-light" | "--tf-primary-glow" | "--tf-success" | "--tf-success-bg" | "--tf-error" | "--tf-error-bg" | "--tf-error-alpha" | "--tf-warning" | "--tf-warning-bg" | "--tf-shadow" | "--tf-shadow-lg" | "--tf-skeleton" | "--tf-radius-xs" | "--tf-radius-sm" | "--tf-radius" | "--tf-radius-lg" | "--tf-radius-xl" | "--tf-button-radius" | "--tf-widget-max-width" | "--tf-font-family" | "--tf-font-family-mono";
170
+
171
+ /** Visual theme mode. */
172
+ export declare type Theme = "light" | "dark" | "auto";
173
+
174
+ /** Shared configuration fields for both widgets */
175
+ declare interface TokenFlightConfigBase {
176
+ /** HyperStream API endpoint */
177
+ apiEndpoint?: string;
178
+ /** Fiat on-ramp API endpoint (default: https://fiat-preview.hyperstream.dev) */
179
+ fiatApiEndpoint?: string;
180
+ /** Visual theme */
181
+ theme?: Theme;
182
+ /** Locale for i18n */
183
+ locale?: SupportedLocale;
184
+ /** Custom CSS color overrides */
185
+ customColors?: CustomColors;
186
+ /** Optional custom widget title text */
187
+ titleText?: string;
188
+ /** Optional custom widget title image URL */
189
+ titleImageUrl?: string;
190
+ /** Hide top title/header area */
191
+ hideTitle?: boolean;
192
+ /** Hide "Powered by TokenFlight" footer */
193
+ hidePoweredBy?: boolean;
194
+ /** Remove container background (transparent) */
195
+ noBackground?: boolean;
196
+ /** Remove container border and shadow */
197
+ noBorder?: boolean;
198
+ }
199
+
200
+ /** Configuration for `<tokenflight-deposit>` */
201
+ declare interface TokenFlightDepositConfig extends TokenFlightConfigBase {
202
+ /** Target token(s) to deposit into. When omitted, user selects via TokenSelector. */
203
+ target?: TokenIdentifier | TokenIdentifier[];
204
+ /** Optional: fixed amount for the target token */
205
+ amount?: string;
206
+ /** Optional: recipient address */
207
+ recipient?: string;
208
+ /** Payment methods to offer (default: ["wallet"]) */
209
+ methods?: DepositMethod[];
210
+ /** Optional source token to pay with */
211
+ fromToken?: TokenIdentifier;
212
+ /** Optional icon URL for the target token */
213
+ targetIcon?: string;
214
+ /** Fiat currency code for card payments (default: "USD") */
215
+ fiatCurrency?: string;
216
+ /** How to open the fiat payment provider (default: "overlay") */
217
+ fiatPaymentMode?: FiatPaymentMode;
218
+ }
219
+
220
+ export declare const TokenFlightReceive: {
221
+ new (options: ImperativeWidgetOptions<TokenFlightDepositConfig>): {
222
+ #dispose: (() => void) | null;
223
+ #unwatchTheme: (() => void) | null;
224
+ #container: HTMLElement;
225
+ #shadowRoot: ShadowRoot | null;
226
+ #config: TokenFlightDepositConfig;
227
+ #walletAdapter?: IWalletAdapter;
228
+ #callbacks?: Callbacks;
229
+ initialize(): void;
230
+ destroy(): void;
231
+ setTheme(theme: Theme): void;
232
+ setCustomColors(colors: CustomColors): void;
233
+ #applyThemeStyles(style: HTMLStyleElement, theme: string): void;
234
+ #setupAutoThemeWatch(style: HTMLStyleElement): void;
235
+ };
236
+ };
237
+
238
+ /** Attributes accepted by `<tokenflight-receive>`. */
239
+ export declare interface TokenFlightReceiveAttributes {
240
+ "api-endpoint"?: string;
241
+ target?: string;
242
+ amount?: string;
243
+ "from-token"?: string;
244
+ recipient?: string;
245
+ "title-text"?: string;
246
+ "title-image"?: string;
247
+ theme?: Theme;
248
+ locale?: SupportedLocale;
249
+ "csp-nonce"?: string;
250
+ icon?: string;
251
+ "hide-title"?: BooleanAttribute;
252
+ "hide-powered-by"?: BooleanAttribute;
253
+ "no-background"?: BooleanAttribute;
254
+ "no-border"?: BooleanAttribute;
255
+ }
256
+
257
+ /** Configuration for the Receive component (EXACT_OUTPUT UX) */
258
+ export declare interface TokenFlightReceiveConfig extends TokenFlightConfigBase {
259
+ /** Target token to receive (optional — user can select via TokenSelector if omitted) */
260
+ target?: TokenIdentifier;
261
+ /** Amount to receive (optional when amountEditable is true) */
262
+ amount?: string;
263
+ /** Optional source token to pay with */
264
+ fromToken?: TokenIdentifier;
265
+ /** Optional recipient address (for cross-chain swaps to a different address) */
266
+ recipient?: string;
267
+ /** Optional icon URL for the target token */
268
+ icon?: string;
269
+ /** Payment methods to offer (default: ["crypto"]) */
270
+ methods?: ("crypto" | "card")[];
271
+ /** Fiat currency code for card payments (default: "USD") */
272
+ fiatCurrency?: string;
273
+ /** How to open the fiat payment provider (default: "overlay") */
274
+ fiatPaymentMode?: FiatPaymentMode;
275
+ /** Allow user to edit the receive amount */
276
+ amountEditable?: boolean;
277
+ /** Whitelist of allowed source tokens (CAIP-10) */
278
+ fromTokens?: TokenIdentifier[];
279
+ /** Whitelist of allowed destination tokens (CAIP-10) */
280
+ toTokens?: TokenIdentifier[];
281
+ }
282
+
283
+ export declare interface TokenFlightReceiveOptions {
284
+ container: string | HTMLElement;
285
+ config: TokenFlightReceiveConfig;
286
+ walletAdapter?: IWalletAdapter;
287
+ callbacks?: Callbacks;
288
+ }
289
+
290
+ /**
291
+ * Flexible token identifier supporting:
292
+ * - Direct object: { chainId: 1, address: "0x..." }
293
+ * - CAIP-10 string: "eip155:1:0x..."
294
+ * - JSON string: '{"chainId":1,"address":"0x..."}'
295
+ */
296
+ declare type TokenIdentifier = string | TokenTarget;
297
+
298
+ /** Token target as chain + address pair */
299
+ declare interface TokenTarget {
300
+ chainId: number;
301
+ address: string;
302
+ }
303
+
304
+ /** Union of all wallet action types */
305
+ declare type WalletAction = EvmWalletAction | SolanaSignTransactionAction | SolanaSignAndSendAction;
306
+
307
+ /** Result of executing a wallet action */
308
+ declare interface WalletActionResult {
309
+ success: boolean;
310
+ data?: unknown;
311
+ error?: string;
312
+ txHash?: string;
313
+ }
314
+
315
+ /** Wallet action types */
316
+ declare type WalletActionType = "eip1193_request" | "solana_signTransaction" | "solana_signAndSendTransaction";
317
+
318
+ /** Data emitted when wallet is connected */
319
+ declare interface WalletConnectedData {
320
+ address: string;
321
+ chainType: string;
322
+ }
323
+
324
+ /** Wallet event payload */
325
+ declare interface WalletEvent {
326
+ type: WalletEventType;
327
+ data?: unknown;
328
+ }
329
+
330
+ /** Wallet event types */
331
+ declare type WalletEventType = "connect" | "disconnect" | "chainChanged" | "accountsChanged";
332
+
333
+ export { }
@@ -0,0 +1 @@
1
+ import"./dist-QzDwShnx.js";import"./widget-Bf9MCT78.js";import{n as e,t}from"./register-deposit-TIxgJ8p6.js";export{e as TokenFlightReceive,t as registerReceiveElement};
@@ -0,0 +1 @@
1
+ import{$t as e,Cn as t,On as n,Tn as r,a as i,an as a,c as o,dn as s,en as c,i as l,in as u,l as d,ln as f,mn as p,n as m,nn as h,o as g,r as _,rn as v,s as y,t as b,tn as x,xn as S}from"./dist-QzDwShnx.js";import{n as C,t as w}from"./widget-Bf9MCT78.js";function T(e){if(e)return e.map(e=>e===`wallet`?`crypto`:`card`)}var E=e((e,t,n)=>S(C,{config:{apiEndpoint:e.apiEndpoint,fiatApiEndpoint:e.fiatApiEndpoint,theme:e.theme,locale:e.locale,customColors:e.customColors,titleText:e.titleText,titleImageUrl:e.titleImageUrl,hideTitle:e.hideTitle,hidePoweredBy:e.hidePoweredBy,noBackground:e.noBackground,noBorder:e.noBorder,toToken:e.target,fromToken:e.fromToken,tradeType:e.amount?`EXACT_OUTPUT`:`EXACT_INPUT`,amount:e.amount,recipient:e.recipient,methods:T(e.methods),icon:e.targetIcon,fiatCurrency:e.fiatCurrency,fiatPaymentMode:e.fiatPaymentMode},walletAdapter:t,callbacks:n}),()=>w),D=p(`<style>`);function O(e){if(!e)return``;let t=e.trim();if(t.startsWith(`[`))try{let e=JSON.parse(t);if(Array.isArray(e))return e}catch{}return t}function k(e){if(e)try{let t=JSON.parse(e.trim());if(Array.isArray(t))return t}catch{}}function A(e){if(e)return e.map(e=>e===`wallet`?`crypto`:`card`)}function j(e){e&&m(e),!(typeof customElements>`u`)&&(customElements.get(`tokenflight-deposit`)||b(`tokenflight-deposit`,{"api-endpoint":``,target:``,amount:``,"from-token":``,recipient:``,methods:``,"target-icon":``,"fiat-currency":``,"fiat-payment-mode":``,"title-text":``,"title-image":``,theme:``,locale:``,"csp-nonce":``,"hide-title":!1,"hide-powered-by":!1,"no-background":!1,"no-border":!1},(e,{element:p})=>{let m=k(e.methods),b={apiEndpoint:e[`api-endpoint`]||_()||void 0,toToken:O(e.target),fromToken:e[`from-token`]||void 0,tradeType:e.amount?`EXACT_OUTPUT`:`EXACT_INPUT`,amount:e.amount||void 0,recipient:e.recipient||void 0,methods:A(m),icon:e[`target-icon`]||void 0,fiatCurrency:e[`fiat-currency`]||void 0,fiatPaymentMode:e[`fiat-payment-mode`]||void 0,titleText:e[`title-text`]||void 0,titleImageUrl:e[`title-image`]||void 0,theme:e.theme||y()||`light`,locale:e.locale||g()||`en-US`,hideTitle:d(e[`hide-title`]),hidePoweredBy:d(e[`hide-powered-by`]),noBackground:d(e[`no-background`]),noBorder:d(e[`no-border`])},T=e[`csp-nonce`]||void 0,[E,j]=r(typeof window<`u`&&window.matchMedia?.(`(prefers-color-scheme: dark)`).matches===!0);n(u(e=>{j(e===h)}));let M=p.__customColors,N=t(()=>{let t=e.theme||y()||`light`,n=(t===`auto`?E():t===`dark`)?h:v,r=i();return`:host { ${x(r||M?{...n,...r,...M}:n)} }\n${w}`}),P=p.__walletAdapter,F=p.__callbacks;return[(()=>{var e=D();return s(e,`nonce`,T),f(e,N),e})(),S(a,{client:c,get children(){return S(C,{config:b,get walletAdapter(){return P??o()},get callbacks(){return F?{...l(),...F}:l()}})}})]}))}export{E as n,j as t};
@@ -0,0 +1,2 @@
1
+ import{$ as e,$t as t,A as n,An as r,At as i,B as a,C as o,Cn as s,Ct as c,Dn as l,Et as u,Ft as d,G as f,H as p,It as m,J as h,K as ee,L as te,Ln as g,Lt as ne,M as re,Mt as ie,N as ae,Nt as oe,On as _,Ot as se,P as v,Pt as ce,Q as le,Rt as ue,S as y,Sn as de,St as b,Tn as x,Tt as fe,Vt as pe,W as me,Yt as S,Zt as he,_ as C,a as ge,an as w,b as T,bn as _e,bt as ve,c as E,cn as D,d as O,dn as k,en as ye,f as be,ft as xe,g as Se,h as A,i as j,in as Ce,j as we,jn as Te,jt as Ee,kn as De,kt as Oe,l as M,ln as N,m as ke,mn as P,n as Ae,nn as F,nt as je,o as I,p as L,pt as Me,q as Ne,r as Pe,rn as R,rt as Fe,s as z,sn as B,st as Ie,t as V,tn as Le,tt as Re,u as ze,un as H,v as Be,vn as U,vt as Ve,w as He,wn as W,x as G,xn as K,xt as Ue,y as q}from"./dist-QzDwShnx.js";var We=P(`<div>`),Ge=P(`<div part=container><div part=accent-line data-testid=accent-line>`),Ke=P(`<img width=22 height=22>`),qe=P(`<button part=wallet-info><div data-testid=wallet-dot></div><span data-testid=wallet-address>`),Je=P(`<div part=header><div><span data-testid=header-title>`),Ye=P(`<div part=breadcrumb><button type=button></button><span>›</span><span>`),Xe=P(`<div><span part=balance data-testid=panel-balance></span><button data-testid=max-btn>`),J=P(`<span data-testid=caret>`),Ze=P(`<div part=token-display data-testid=token-btn><div data-testid=token-icon-wrap><div data-testid=token-chain-dot></div></div><span data-testid=token-name>`),Qe=P(`<div part=panel-from><div><div><span data-testid=panel-label></span></div><div></div><div><span data-testid=fiat>`),$e=P(`<div part=swap-arrow><button type=button data-testid=swap-arrow-inner>`),et=P(`<button part=recipient-badge data-testid=recipient-badge><span>`),tt=P(`<span part=amount-display data-testid=amount style=cursor:default>`),nt=P(`<div part=panel-to data-testid=panel-wrapper-to><div><div><span data-testid=panel-label></span></div><div></div><div><span data-testid=fiat>`),rt=P(`<div part=price-preview data-testid=quote>`),it=P(`<div part=no-offer><div><svg width=28 height=28 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round><circle cx=11 cy=11 r=8></circle><path d="m21 21-4.35-4.35"></path><path d="M8 11h6"></path></svg></div><span>`),at=P(`<div part=cta-wrapper>`),ot=P(`<span>Flight`),st=P(`<button data-testid=token-btn><span data-testid=token-name>`),ct=P(`<div style=width:120px;height:28px>`);function lt(e){return K(v,{get children(){return K(Y,e)}})}function Y(t){let{t:_}=oe(),v=p(),[y,C]=x(null),[ge,w]=x(!1),{isConnected:T,walletAddress:E,handleConnect:O}=ae({walletAdapter:()=>t.walletAdapter,callbacks:()=>t.callbacks,onAddressChange:e=>v.setWalletAddress(e),onConnectError:(e,t)=>{v.setError(e),v.setErrorCode(t)}}),[ye,be,Se]=Ne(``,300),A=s(()=>new Te({baseUrl:t.config.apiEndpoint??`https://api.hyperstream.dev`})),j=e(A,E,()=>T()&&!!E(),()=>t.walletAdapter?.supportedChainIds),Ce=s(()=>{let e=v.fromToken();if(!e||typeof e.decimals!=`number`||!j.data)return null;let t=j.data.find(t=>t.address.toLowerCase()===e.address.toLowerCase()&&t.chainId===e.chainId);return t?.extensions?.balance?u(se(i(t.extensions.balance,t.decimals),2)):`0`}),M=s(()=>{let e=v.fromToken();return!e||typeof e.decimals!=`number`||!j.data?null:j.data.find(t=>t.address.toLowerCase()===e.address.toLowerCase()&&t.chainId===e.chainId)?.extensions?.balance??`0`}),ke=s(()=>{let e=v.inputAmount(),t=v.fromToken(),n=M();if(!t||typeof t.decimals!=`number`||!n||!e||e===`0`||e===``)return!1;try{return BigInt(Oe(e,t.decimals))>BigInt(n)}catch{return!1}}),P=s(()=>{let e=v.fromToken();if(!e)return null;if(typeof e.priceUsd==`number`&&Number.isFinite(e.priceUsd))return e.priceUsd;let t=j.data?.find(t=>t.address.toLowerCase()===e.address.toLowerCase()&&t.chainId===e.chainId),n=Number(t?.extensions?.price?.usd??``);return Number.isFinite(n)?n:null}),Ae=s(()=>{let e=v.toToken();return e&&typeof e.priceUsd==`number`&&Number.isFinite(e.priceUsd)?e.priceUsd:null}),F=e=>!Number.isFinite(e)||e<=0?`0`:e<.01?`<0.01`:u(e.toFixed(2).replace(/\.?0+$/,``)),{needRecipient:I,recipientDisplay:L,handleRecipientChange:Pe}=we({fromToken:v.fromToken,toToken:v.toToken,recipient:v.recipient,isConnected:T,walletAddress:E,walletAdapter:()=>t.walletAdapter,setRecipient:v.setRecipient}),R=s(()=>{let e=ye(),t=v.fromToken(),n=v.toToken(),r=v.recipient();return!e||parseFloat(e)<=0||!t||typeof t.decimals!=`number`||!n||!A()||I()&&!r?null:{tradeType:`EXACT_INPUT`,fromChainId:t.chainId,fromToken:t.address,toChainId:n.chainId,toToken:n.address,amount:Oe(e,t.decimals),fromAddress:E()??Me(t.chainId),...r&&{recipient:r}}}),z=le(A,R,s(()=>!!R()&&!v.execPhase())),V=s(()=>{let e=v.inputAmount();return!e||parseFloat(e)<=0||!v.fromToken()||!v.toToken()?[]:z.data?.routes??[]}),Le=s(()=>z.data?.quoteId??null),ze=s(()=>{let e=V();return e.length>0?te(e):null}),Be=s(()=>{let e=V(),t=ze();return e.find(e=>e.routeId===t)??e[0]??null}),G=s(()=>{let e=Be(),t=v.toToken();return!e||!t||typeof t.decimals!=`number`?``:se(i(e.quote.amountOut,t.decimals))}),q=s(()=>me(v.execPhase(),v.error(),z.isFetching,V().length,!!R())),lt=s(()=>v.execPhase()||!R()?!1:!z.isFetching&&z.isSuccess&&V().length===0),Y=s(()=>{let e=q();return e===`quoted`||e===`building`||e===`awaiting-wallet`||e===`submitting`||e===`tracking`||e===`success`}),X=s(()=>{let e=q();return e===`building`||e===`awaiting-wallet`||e===`submitting`||e===`tracking`}),Z=s(()=>!v.fromToken()||!v.toToken()?!1:q()===`quoting`&&parseFloat(v.inputAmount())>0&&V().length===0),Q=s(()=>{let e=Number(v.inputAmount()),t=P();return!Number.isFinite(e)||e<=0||t===null?null:_({id:`188897k`,message:"≈ ${formatUsd}"},{formatUsd:F(e*t)})}),$=s(()=>{let e=Number(G()||`0`),t=Ae();return!Y()||!Number.isFinite(e)||e<=0||t===null?null:_({id:`188897k`,message:"≈ ${formatUsd}"},{formatUsd:F(e*t)})}),{trackingOrderId:ut,trackingProviderName:dt,trackingProviderIcon:ft,executionError:pt,handleConfirm:mt,handleRetry:ht,handleNewSwap:gt}=He({client:A,walletAdapter:()=>t.walletAdapter,callbacks:()=>t.callbacks,apiEndpoint:()=>t.config.apiEndpoint,fromToken:v.fromToken,recipient:v.recipient,needRecipient:I,walletAddress:E,routes:V,quoteId:Le,selectedRouteId:ze,setExecPhase:v.setExecPhase,setError:v.setError,setErrorCode:v.setErrorCode,storeReset:v.reset,onReset:()=>Se(``)});n({client:A,walletAddress:E,trackingOrderId:ut,phase:q,execPhase:v.execPhase,setOrder:v.setOrder,setExecPhase:v.setExecPhase,onOrderFilled:e=>{t.callbacks?.onSwapSuccess?.({orderId:e.id,fromToken:v.fromToken().symbol??v.fromToken().address,toToken:v.toToken().symbol??v.toToken().address,fromAmount:e.srcAmount,toAmount:e.destAmount,txHash:e.depositTxHash})},onOrderFailed:e=>{t.callbacks?.onSwapError?.({code:g.ORDER_FAILED,message:`Order `+e.status})}}),de(l(()=>z.data,e=>{e&&t.callbacks?.onQuoteReceived?.(e)})),de(l(()=>({isError:z.isError,error:z.error,data:z.data}),({isError:e,error:t,data:n})=>{v.execPhase()||(e&&!n?t instanceof r?(v.setError(t.message),v.setErrorCode(t.code)):(v.setError(String(t)),v.setErrorCode(null)):v.error()&&!e&&v.clearError())}));let{countdownSeconds:_t}=re({phase:q,onExpired:()=>{z.refetch()}}),vt=h(A,()=>!0),yt=s(()=>{let e=vt.data;return e?je(e):new Map});De(async()=>{let e=A();if(t.config.fromToken)try{let n=a(t.config.fromToken),i=await Re(n.chainId,n.address,t.config.apiEndpoint,e);if(typeof i.decimals!=`number`)throw new r(g.INVALID_TOKEN_IDENTIFIER,`Failed to resolve fromToken metadata`);v.setFromToken(i)}catch(e){t.callbacks?.onSwapError?.({code:g.INVALID_TOKEN_IDENTIFIER,message:`Failed to resolve fromToken: ${e instanceof Error?e.message:String(e)}`})}if(t.config.toToken)try{let n=a(t.config.toToken),i=await Re(n.chainId,n.address,t.config.apiEndpoint,e);if(typeof i.decimals!=`number`)throw new r(g.INVALID_TOKEN_IDENTIFIER,`Failed to resolve toToken metadata`);v.setToToken(i)}catch(e){t.callbacks?.onSwapError?.({code:g.INVALID_TOKEN_IDENTIFIER,message:`Failed to resolve toToken: ${e instanceof Error?e.message:String(e)}`})}}),De(()=>{t.config.recipient&&v.setRecipient(t.config.recipient),t.initialAmount&&(v.setInputAmount(t.initialAmount),Se(t.initialAmount))});let bt=e=>{v.setInputAmount(e),t.callbacks?.onAmountChanged?.({amount:e,direction:`from`}),v.error()&&v.clearError(),be(e)},xt=e=>{let t={chainId:e.chainId,address:e.address??``,symbol:e.symbol,name:e.name,decimals:e.decimals,logoURI:e.logoURI,priceUsd:e.priceUsd};y()===`from`?v.setFromToken(t):v.setToToken(t),C(null)},St=()=>{if(X()||!v.fromToken()||!v.toToken())return;let e=v.fromToken(),t=v.toToken();_e(()=>{v.setFromToken(t),v.setToToken(e),v.execPhase()===`success`&&v.setExecPhase(null)})},Ct=()=>{let e=v.fromToken(),t=M();if(!e||typeof e.decimals!=`number`||!t||t===`0`)return;let n=i(t,e.decimals);n&&n!==`0`&&bt(n)},wt=async()=>{t.walletAdapter?.openAccountModal?await t.walletAdapter.openAccountModal():t.callbacks?.onAccountModal?.()},Tt=e=>`${e.slice(0,6)}...${e.slice(-4)}`,Et=s(()=>{let e=Be();return!e||!v.fromToken()||!v.toToken()?null:q()===`quoting`||Y()?e:null}),Dt=s(()=>{let e=t.config.titleText?.trim();return e&&e.length>0?e:`TokenFlight`}),Ot=s(()=>{let e=t.config.titleText?.trim();return!!e&&e.length>0}),kt=s(()=>{let e=t.config.titleImageUrl?.trim();return e&&e.length>0?e:null});return(()=>{var e=Ge(),n=e.firstChild;return N(e,K(U,{get when(){return H(()=>q()===`success`)()&&v.order()},get fallback(){return K(U,{get when(){return X()},get fallback(){return[(()=>{var e=Je(),n=e.firstChild,r=n.firstChild;return N(n,K(U,{get when(){return kt()},get fallback(){return K(ce,{size:22})},get children(){var e=Ke();return W(t=>{var n=kt(),r=Dt(),i=o.headerLogoImage;return n!==t.e&&k(e,`src`,t.e=n),r!==t.t&&k(e,`alt`,t.t=r),i!==t.a&&D(e,t.a=i),t},{e:void 0,t:void 0,a:void 0}),e}}),r),N(r,K(U,{get when(){return Ot()},get fallback(){return[`Token`,(()=>{var e=ot();return W(()=>D(e,o.headerTitleAccent)),e})()]},get children(){return Dt()}})),N(e,K(U,{get when(){return H(()=>!!T())()&&E()},get children(){var e=qe(),t=e.firstChild,n=t.nextSibling;return B(e,`click`,wt),N(n,()=>Tt(E())),W(r=>{var i=o.headerRight,a=_({id:`xphk5n`,message:`Wallet account`}),s=o.walletDot,c=o.walletAddress;return i!==r.e&&D(e,r.e=i),a!==r.t&&k(e,`aria-label`,r.t=a),s!==r.a&&D(t,r.a=s),c!==r.o&&D(n,r.o=c),r},{e:void 0,t:void 0,a:void 0,o:void 0}),e}}),null),W(i=>{var a=o.header,s=`${o.headerLeft} ${t.config.hideTitle?o[`headerLeft--hidden`]:``}`,c=t.config.hideTitle?`true`:void 0,l=o.headerTitle;return a!==i.e&&D(e,i.e=a),s!==i.t&&D(n,i.t=s),c!==i.a&&k(n,`aria-hidden`,i.a=c),l!==i.o&&D(r,i.o=l),i},{e:void 0,t:void 0,a:void 0,o:void 0}),e})(),K(U,{get when(){return t.onBack},get children(){var e=Ye(),n=e.firstChild,r=n.nextSibling,i=r.nextSibling;return B(n,`click`,()=>t.onBack?.()),N(n,()=>_({id:`15lz1at`,message:`Deposit`})),N(i,()=>_({id:`1o1b4a8`,message:`Crypto`})),W(t=>{var a=o.breadcrumb,s=o.breadcrumbLink,c=o.breadcrumbSep,l=o.breadcrumbCurrent;return a!==t.e&&D(e,t.e=a),s!==t.t&&D(n,t.t=s),c!==t.a&&D(r,t.a=c),l!==t.o&&D(i,t.o=l),t},{e:void 0,t:void 0,a:void 0,o:void 0}),e}}),(()=>{var e=Qe(),n=e.firstChild,r=n.firstChild,i=r.firstChild,a=r.nextSibling,s=a.nextSibling,c=s.firstChild;return N(i,()=>_({id:`17kq51m`,message:`You pay`})),N(r,K(U,{get when(){return H(()=>!!T())()&&Ce()},get children(){var e=Xe(),t=e.firstChild,n=t.nextSibling;return N(t,()=>_({id:`y6jqu9`,message:`Balance: {fromBalance}`},{fromBalance:Ce()})),B(n,`click`,Ct),N(n,()=>_({id:`7v6g6x`,message:`MAX`})),W(r=>{var i=o.panelHeaderRight,a=o.panelBalance,s=o.maxBtn;return i!==r.e&&D(e,r.e=i),a!==r.t&&D(t,r.t=a),s!==r.a&&D(n,r.a=s),r},{e:void 0,t:void 0,a:void 0}),e}}),null),N(a,K(Ee,{get value(){return v.inputAmount()},onChange:bt,get disabled(){return X()}}),null),N(a,K(U,{get when(){return v.fromToken()},get fallback(){return(()=>{var e=st(),n=e.firstChild;return B(e,`click`,()=>t.lockFromToken?void 0:T()?C(`from`):O()),N(n,()=>_({id:`zz4mrw`,message:`Select token`})),N(e,K(U,{get when(){return!t.lockFromToken},get children(){var e=J();return N(e,K(S,{size:14})),W(()=>D(e,o.caret)),e}}),null),W(t=>{var r=`${o.tokenBtn} ${o[`tokenBtn--select`]}`,i=o.tokenNameAccent;return r!==t.e&&D(e,t.e=r),i!==t.t&&D(n,t.t=i),t},{e:void 0,t:void 0}),e})()},get children(){var e=Ze(),n=e.firstChild,r=n.firstChild,i=n.nextSibling;return B(e,`click`,()=>!t.lockFromToken&&C(`from`)),N(n,K(ne,{get symbol(){return v.fromToken().symbol??`?`},color:`#2775CA`,size:24,get logoURI(){return v.fromToken().logoURI}}),r),N(r,K(d,{size:10,get iconUrl(){return ue(A().baseUrl,v.fromToken().chainId)}})),N(i,()=>v.fromToken().symbol),N(e,K(U,{get when(){return!t.lockFromToken},get children(){var e=J();return N(e,K(S,{size:14})),W(()=>D(e,o.caret)),e}}),null),W(a=>{var s=`${o.tokenBtn} ${t.lockFromToken?o[`tokenBtn--locked`]:``}`,c=t.lockFromToken?void 0:`button`,l=o.tokenIconWrap,u=o.tokenChainDot,d=o.tokenName;return s!==a.e&&D(e,a.e=s),c!==a.t&&k(e,`role`,a.t=c),l!==a.a&&D(n,a.a=l),u!==a.o&&D(r,a.o=u),d!==a.i&&D(i,a.i=d),a},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),e}}),null),N(c,()=>Q()??` `),W(t=>{var l=o.panelWrapper,u=o.panel,d=o.panelHeader,f=o.panelLabel,p=o.panelRow,m=o.panelFooter,h=`${o.fiat} ${Q()?``:o[`fiat--hidden`]}`;return l!==t.e&&D(e,t.e=l),u!==t.t&&D(n,t.t=u),d!==t.a&&D(r,t.a=d),f!==t.o&&D(i,t.o=f),p!==t.i&&D(a,t.i=p),m!==t.n&&D(s,t.n=m),h!==t.s&&D(c,t.s=h),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),e})(),K(U,{get when(){return!t.hideSwapArrow},get children(){var e=$e(),t=e.firstChild;return B(t,`click`,St),N(t,K(he,{size:14})),W(n=>{var r=o.swapArrow,i=o.swapArrowInner,a=_({id:`2eikro`,message:`Swap tokens`});return r!==n.e&&D(e,n.e=r),i!==n.t&&D(t,n.t=i),a!==n.a&&k(t,`aria-label`,n.a=a),n},{e:void 0,t:void 0,a:void 0}),e}}),(()=>{var e=nt(),n=e.firstChild,r=n.firstChild,i=r.firstChild,a=r.nextSibling,s=a.nextSibling,c=s.firstChild;return N(i,()=>_({id:`va18uh`,message:`You receive`})),N(r,K(U,{get when(){return H(()=>!!T())()&&v.toToken()},get children(){var e=et(),n=e.firstChild;return B(e,`click`,()=>!X()&&!t.lockRecipient&&w(!0)),N(n,(()=>{var e=H(()=>!!L());return()=>e()?Tt(L()):_({id:`fpand1`,message:`Enter destination address`})})()),N(e,K(U,{get when(){return!t.lockRecipient},get children(){return K(pe,{size:10})}}),null),W(r=>{var i=`${b.recipientBadge} ${L()?``:b.recipientBadgeEmpty}${t.lockRecipient?` ${b.recipientBadgeLocked}`:``}`,a=t.lockRecipient,o=b.recipientBadgeText;return i!==r.e&&D(e,r.e=i),a!==r.t&&(e.disabled=r.t=a),o!==r.a&&D(n,r.a=o),r},{e:void 0,t:void 0,a:void 0}),e}}),null),N(a,K(U,{get when(){return!Z()},get fallback(){return(()=>{var e=ct();return W(()=>D(e,b.skeleton)),e})()},get children(){var e=tt();return N(e,K(fe,{get value(){return H(()=>!!(Y()||q()===`quoting`))()&&G()||`0`},digits:8})),W(()=>D(e,`${ie.amount} ${!Y()&&q()!==`quoting`?ie.muted:``}`)),e}}),null),N(a,K(U,{get when(){return v.toToken()},get fallback(){return(()=>{var e=st(),n=e.firstChild;return B(e,`click`,()=>t.lockToToken?void 0:T()?C(`to`):O()),N(n,()=>_({id:`zz4mrw`,message:`Select token`})),N(e,K(U,{get when(){return!t.lockToToken},get children(){var e=J();return N(e,K(S,{size:14})),W(()=>D(e,o.caret)),e}}),null),W(t=>{var r=`${o.tokenBtn} ${o[`tokenBtn--select`]}`,i=o.tokenNameAccent;return r!==t.e&&D(e,t.e=r),i!==t.t&&D(n,t.t=i),t},{e:void 0,t:void 0}),e})()},get children(){var e=Ze(),n=e.firstChild,r=n.firstChild,i=n.nextSibling;return B(e,`click`,()=>!t.lockToToken&&C(`to`)),N(n,K(ne,{get symbol(){return v.toToken().symbol??`?`},color:`#0052FF`,size:24,get logoURI(){return v.toToken().logoURI}}),r),N(r,K(d,{size:10,get iconUrl(){return ue(A().baseUrl,v.toToken().chainId)}})),N(i,()=>v.toToken().symbol),N(e,K(U,{get when(){return!t.lockToToken},get children(){var e=J();return N(e,K(S,{size:14})),W(()=>D(e,o.caret)),e}}),null),W(a=>{var s=`${o.tokenBtn} ${t.lockToToken?o[`tokenBtn--locked`]:``}`,c=t.lockToToken?void 0:`button`,l=o.tokenIconWrap,u=o.tokenChainDot,d=o.tokenName;return s!==a.e&&D(e,a.e=s),c!==a.t&&k(e,`role`,a.t=c),l!==a.a&&D(n,a.a=l),u!==a.o&&D(r,a.o=u),d!==a.i&&D(i,a.i=d),a},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),e}}),null),N(c,()=>$()??` `),W(l=>{var u=`${o[`panelWrapper--to`]}${t.hideSwapArrow?` ${o[`panelWrapper--noArrow`]}`:``}`,d=o.panel,f=o.panelHeader,p=o.panelLabel,m=o.panelRow,h=o.panelFiatRow,ee=`${o.fiat} ${$()?``:o[`fiat--hidden`]}`;return u!==l.e&&D(e,l.e=u),d!==l.t&&D(n,l.t=d),f!==l.a&&D(r,l.a=f),p!==l.o&&D(i,l.o=p),m!==l.i&&D(a,l.i=m),h!==l.n&&D(s,l.n=h),ee!==l.s&&D(c,l.s=ee),l},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),e})(),K(U,{get when(){return Z()},get children(){return K(Ue,{})}}),K(U,{get when(){return H(()=>!!(Et()&&v.fromToken()))()&&v.toToken()},get children(){var e=rt();return N(e,K(ve,{get route(){return Et()},get fromToken(){return v.fromToken()},get toToken(){return v.toToken()},inline:!0,countdownSeconds:_t,countdownTotal:30,showCountdown:()=>q()===`quoted`})),W(()=>D(e,c.quote)),e}}),K(U,{get when(){return H(()=>!!lt())()&&!Z()},get children(){var e=it(),t=e.firstChild,n=t.nextSibling;return N(n,()=>_({id:`ln9xiv`,message:`No routes available`})),W(r=>{var i=b.noOffer,a=b.noOfferIcon,o=b.noOfferText;return i!==r.e&&D(e,r.e=i),a!==r.t&&D(t,r.t=a),o!==r.a&&D(n,r.a=o),r},{e:void 0,t:void 0,a:void 0}),e}}),(()=>{var e=at();return N(e,K(Ve,{get phase(){return q()},get isConnected(){return T()},get hasQuote(){return Y()},onConnect:O,onConfirm:mt,onRetry:ht,get errorLabel(){return v.error()??void 0},get needsRecipient(){return H(()=>!!I())()&&!v.recipient()},onEnterRecipient:()=>w(!0),get insufficientBalance(){return ke()}})),W(()=>D(e,b.ctaWrapper)),e})()]},get children(){return K(Ie,{get order(){return v.order()},get fromToken(){return v.fromToken()},get toToken(){return v.toToken()},get providerName(){return dt()},get providerIcon(){return ft()},get apiEndpoint(){return t.config.apiEndpoint??`https://api.hyperstream.dev`},get inputAmount(){return v.inputAmount()},get outputAmount(){return G()},onNewSwap:gt,onRetry:ht,get executionError(){return pt()},mode:`swap`,get phase(){return q()},get chainMap(){return yt()}})}})},get children(){return K(Fe,{get order(){return v.order()},get fromToken(){return v.fromToken()},get toToken(){return v.toToken()},onNewSwap:gt,get apiEndpoint(){return t.config.apiEndpoint??`https://api.hyperstream.dev`},get providerName(){return dt()},mode:`swap`,get chainMap(){return yt()}})}}),null),N(e,K(U,{get when(){return!t.config.hidePoweredBy},get children(){return K(m,{})}}),null),N(e,K(U,{get when(){return y()!==null},get children(){return K(ee,{get client(){return A()},get walletAddress(){return E()},get selectingFor(){return y()},onSelect:xt,onClose:()=>C(null),get supportedChainIds(){return t.walletAdapter?.supportedChainIds},get noBorder(){return t.config.noBorder}})}}),null),N(e,K(U,{get when(){return H(()=>!!ge())()&&v.toToken()},get children(){var e=We();return N(e,K(f,{get initialValue(){return v.recipient()??``},get chainType(){return xe(v.toToken().chainId)},onConfirm:e=>{Pe(e),w(!1)},onClose:()=>w(!1)})),W(()=>D(e,b.selectorOverlay)),e}}),null),W(r=>{var i=`${b.container}${t.config.noBackground?` ${b.noBg}`:``}${t.config.noBorder?` ${b.noBorder}`:``}`,a=b.accentLine;return i!==r.e&&D(e,r.e=i),a!==r.t&&D(n,r.t=a),r},{e:void 0,t:void 0}),e})()}var X=[y,G,T,q,Be,C,Se,A,ke,L,be,O,ze].join(`
2
+ `),Z=t((e,t,n)=>K(lt,{config:e,walletAdapter:t,callbacks:n}),()=>X),Q=P(`<style>`);function $(e){e&&Ae(e),!(typeof customElements>`u`)&&(customElements.get(`tokenflight-swap`)||V(`tokenflight-swap`,{"api-endpoint":``,"from-token":``,"to-token":``,recipient:``,"title-text":``,"title-image":``,theme:``,locale:``,"csp-nonce":``,"hide-title":!1,"hide-powered-by":!1,"no-background":!1,"no-border":!1},(e,{element:t})=>{let n={apiEndpoint:e[`api-endpoint`]||Pe()||void 0,fromToken:e[`from-token`]||void 0,toToken:e[`to-token`]||void 0,recipient:e.recipient||void 0,titleText:e[`title-text`]||void 0,titleImageUrl:e[`title-image`]||void 0,theme:e.theme||z()||`light`,locale:e.locale||I()||`en-US`,hideTitle:M(e[`hide-title`]),hidePoweredBy:M(e[`hide-powered-by`]),noBackground:M(e[`no-background`]),noBorder:M(e[`no-border`])},r=e[`csp-nonce`]||void 0,[i,a]=x(typeof window<`u`&&window.matchMedia?.(`(prefers-color-scheme: dark)`).matches===!0);_(Ce(e=>{a(e===F)}));let o=t.__customColors,c=s(()=>{let t=e.theme||z()||`light`,n=(t===`auto`?i():t===`dark`)?F:R,r=ge();return`:host { ${Le(r||o?{...n,...r,...o}:n)} }\n${X}`}),l=t.__walletAdapter,u=t.__callbacks;return[(()=>{var e=Q();return k(e,`nonce`,r),N(e,c),e})(),K(w,{client:ye,get children(){return K(lt,{config:n,get walletAdapter(){return l??E()},get callbacks(){return u?{...j(),...u}:j()}})}})]}))}export{Z as n,$ as t};
@@ -0,0 +1 @@
1
+ import{$t as e,Cn as t,On as n,Tn as r,a as i,an as a,c as o,dn as s,en as c,i as l,in as u,l as d,ln as f,mn as p,n as m,nn as h,o as g,r as _,rn as v,s as y,t as b,tn as x,xn as S}from"./dist-QzDwShnx.js";import{n as C,t as w}from"./widget-Bf9MCT78.js";var T=e((e,t,n)=>S(C,{config:e,walletAdapter:t,callbacks:n}),()=>w),E=p(`<style>`);function D(e){if(!e)return``;let t=e.trim();if(t.startsWith(`[`))try{let e=JSON.parse(t);if(Array.isArray(e))return e}catch{}return t}function O(e){if(e)try{let t=JSON.parse(e.trim());if(Array.isArray(t))return t}catch{}}function k(e){if(e)try{let t=JSON.parse(e.trim());if(Array.isArray(t))return t}catch{}}function A(e){e&&m(e),!(typeof customElements>`u`)&&(customElements.get(`tokenflight-widget`)||b(`tokenflight-widget`,{"api-endpoint":``,"fiat-api-endpoint":``,"to-token":``,"from-token":``,"trade-type":``,amount:``,recipient:``,icon:``,"lock-from-token":!1,"lock-to-token":!1,"fiat-currency":``,"fiat-payment-mode":``,methods:``,"default-pay-method":``,"from-tokens":``,"to-tokens":``,"title-text":``,"title-image":``,theme:``,locale:``,"csp-nonce":``,"hide-title":!1,"hide-powered-by":!1,"no-background":!1,"no-border":!1},(e,{element:p})=>{let m={apiEndpoint:e[`api-endpoint`]||_()||void 0,fiatApiEndpoint:e[`fiat-api-endpoint`]||void 0,toToken:D(e[`to-token`]),fromToken:e[`from-token`]||void 0,tradeType:e[`trade-type`]||void 0,amount:e.amount||void 0,recipient:e.recipient||void 0,icon:e.icon||void 0,lockFromToken:d(e[`lock-from-token`]),lockToToken:d(e[`lock-to-token`]),fiatCurrency:e[`fiat-currency`]||void 0,fiatPaymentMode:e[`fiat-payment-mode`]||void 0,methods:k(e.methods),defaultPayMethod:e[`default-pay-method`]||void 0,fromTokens:O(e[`from-tokens`]),toTokens:O(e[`to-tokens`]),titleText:e[`title-text`]||void 0,titleImageUrl:e[`title-image`]||void 0,theme:e.theme||y()||`light`,locale:e.locale||g()||`en-US`,hideTitle:d(e[`hide-title`]),hidePoweredBy:d(e[`hide-powered-by`]),noBackground:d(e[`no-background`]),noBorder:d(e[`no-border`])},b=e[`csp-nonce`]||void 0,[T,A]=r(typeof window<`u`&&window.matchMedia?.(`(prefers-color-scheme: dark)`).matches===!0);n(u(e=>{A(e===h)}));let j=p.__customColors,M=t(()=>{let t=e.theme||y()||`light`,n=(t===`auto`?T():t===`dark`)?h:v,r=i();return`:host { ${x(r||j?{...n,...r,...j}:n)} }\n${w}`}),N=p.__walletAdapter,P=p.__callbacks;return[(()=>{var e=E();return s(e,`nonce`,b),f(e,M),e})(),S(a,{client:c,get children(){return S(C,{config:m,get walletAdapter(){return N??o()},get callbacks(){return P?{...l(),...P}:l()}})}})]}))}export{T as n,A as t};
package/dist/swap.css ADDED
@@ -0,0 +1,2 @@
1
+ .tf-c63ac0{color:var(--tf-text-on-primary);font-weight:700;font-family:var(--tf-font-family);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex;overflow:hidden}.tf-59aca7{object-fit:cover;border-radius:50%;width:100%;height:100%}.tf-dbfbb3{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex;overflow:hidden}.tf-f89395{object-fit:cover;border-radius:50%;width:100%;height:100%;display:block}.tf-cdfe94{justify-content:center;align-items:center;gap:6px;margin:8px 20px 0;padding:12px 0 14px;text-decoration:none;display:flex}.tf-7c0c36{font-size:var(--tf-font-sm);color:var(--tf-text-tertiary)}.tf-26d5ea{font-size:var(--tf-font-base);line-height:1}.tf-8b1e15{font-size:var(--tf-font-sm);letter-spacing:.02em;color:var(--tf-text-secondary);font-weight:600}.tf-3852e5,.tf-b35860{color:var(--tf-primary)}.tf-59b76a{font-size:var(--tf-font-amount);letter-spacing:-.02em;color:var(--tf-text);font-weight:700;line-height:100%;font-family:var(--tf-font-family);text-align:left;background:0 0;border:none;outline:none;width:100%;min-width:0}.tf-59b76a::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.tf-59b76a::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.tf-59b76a{-moz-appearance:textfield}.tf-59b76a::placeholder,.tf-a859d8{color:var(--tf-text-tertiary)}@keyframes tf-6887ec{0%{opacity:.6}to{opacity:1}}.tf-ba406b{align-items:baseline;transition:opacity .15s;display:inline-flex}.tf-9d81a4{opacity:.85;font-size:.7em;line-height:1}.tf-7977ef{cursor:help}.tf-216412{align-items:center;gap:4px;display:inline-flex}.tf-40ee76{cursor:pointer;border-radius:4px;margin:-2px -4px;padding:2px 4px;transition:background .15s}.tf-40ee76:hover{background:var(--tf-surface-hover)}.tf-52dc68{flex-shrink:0}.tf-25c5c8{animation:.8s linear infinite tf-27c522}@keyframes tf-27c522{to{transform:rotate(360deg)}}.tf-fd32be{font-size:var(--tf-font-sm);color:var(--tf-text-secondary);min-width:20px}.tf-1019c2{background:var(--tf-bg-secondary);border-radius:var(--tf-radius-lg);border:1px solid var(--tf-border-light);min-height:80px;font-size:var(--tf-font-base);color:var(--tf-text-secondary);box-sizing:border-box;flex-direction:column;margin:12px 20px 0;padding:14px;animation:.25s both tf-42889f;display:flex}.tf-4922f1{flex:1;justify-content:space-between;align-items:center;display:flex}.tf-57f45f{font-family:var(--tf-font-family-mono);font-size:var(--tf-font-sm)}.tf-a57ec8{box-sizing:border-box;height:80px}.tf-d74ccc{flex:1;justify-content:space-between;align-items:center;display:flex}.tf-92e7a8{width:68px;height:14px}.tf-d20f50{width:56px}.tf-a9a96f{width:150px;height:14px}.tf-0134eb{width:126px}.tf-91635c{width:80px}.tf-ca1291{cursor:pointer;border-bottom:1px solid var(--tf-border-light);margin-bottom:10px;transition:opacity .15s}.tf-ca1291:hover{opacity:.7}.tf-ca1291 .tf-57f45f{align-items:center;gap:4px;display:inline-flex}.tf-ca1291 .tf-57f45f svg{opacity:.35;flex-shrink:0;transition:opacity .15s}.tf-ca1291:hover .tf-57f45f svg{opacity:.7}.tf-a249b3 .tf-recipient-placeholder{color:var(--tf-error)}.tf-adeddd{border:1px dashed var(--tf-primary);border-radius:var(--tf-radius);margin-bottom:10px;padding:8px 12px;animation:2s ease-in-out infinite tf-d990e5}.tf-adeddd .tf-recipient-placeholder{color:var(--tf-primary);font-style:normal}@keyframes tf-90e981{0%,to{opacity:1}50%{opacity:.4}}.tf-1ac2ef{border-radius:var(--tf-radius-xs);background:var(--tf-skeleton);animation:1.5s ease-in-out infinite tf-90e981}.tf-68a980{border-radius:var(--tf-radius-xl);z-index:10;background:#0009;align-items:flex-end;animation:.2s both tf-ed0355;display:flex;position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.tf-e7b9c7{width:100%;min-height:500px;max-width:var(--tf-widget-max-width,400px);border-radius:var(--tf-radius-xl);background:var(--tf-bg);border:1px solid var(--tf-border);min-width:360px;box-shadow:var(--tf-shadow-lg);font-family:var(--tf-font-family);color:var(--tf-text);flex-direction:column;transition:background .25s,border-color .25s,box-shadow .25s;display:flex;position:relative;overflow:hidden}.tf-b4f391{background:0 0}.tf-118b57{box-shadow:none;border:none}.tf-118b57 .tf-07225e{display:none}.tf-07225e{background:linear-gradient(90deg, transparent, var(--tf-primary), transparent);opacity:.6;height:2px}.tf-d01dff{padding:12px 20px 0;animation:.3s .1s both tf-ed0355}.tf-5bb68c{padding:12px 20px 0}.tf-04e1e2{background:var(--tf-bg-secondary);border-radius:var(--tf-radius-lg);border:1px solid var(--tf-border-light);box-sizing:border-box;flex-direction:column;justify-content:center;align-items:center;gap:8px;min-height:120px;margin:12px 20px 0;padding:14px;animation:.25s both tf-b61e63;display:flex}.tf-d01908{color:var(--tf-text-tertiary);opacity:.4}.tf-1cc72b{font-size:var(--tf-font-base);color:var(--tf-text-secondary)}.tf-480f1a{text-align:center;padding:0 20px 16px}.tf-480f1a a{font-size:var(--tf-font-base);color:var(--tf-primary);font-family:var(--tf-font-family-mono);text-decoration:none}.tf-bc7950{text-align:center;margin-top:8px;margin-bottom:10px}.tf-bc7950 a{font-size:var(--tf-font-sm);color:var(--tf-primary);font-family:var(--tf-font-family-mono);text-decoration:none}.tf-d9b7b4{background:var(--tf-surface);border:1px solid var(--tf-border);border-radius:var(--tf-radius-xs);cursor:pointer;font-size:var(--tf-font-sm);font-family:var(--tf-font-family-mono);color:var(--tf-text-secondary);align-items:center;gap:4px;padding:2px 8px;transition:background .15s,border-color .15s;display:inline-flex}.tf-d9b7b4:hover{background:var(--tf-surface-hover)}.tf-d9b7b4 svg{opacity:.4;transition:opacity .15s}.tf-d9b7b4:hover svg{opacity:.7}.tf-9398ea{border-style:dashed;border-color:var(--tf-primary)}.tf-9398ea .tf-2d9323{color:var(--tf-primary);font-style:italic;font-family:var(--tf-font-family)}.tf-4567e1{cursor:default;opacity:.8}.tf-4567e1:hover{background:var(--tf-surface)}.tf-58881e{color:var(--tf-text-tertiary);font-style:italic}.tf-c7b4d2{justify-content:center;align-items:center;display:flex}.tf-771a48{flex-direction:column;display:flex}.tf-e2b7ba{align-items:center;display:flex}.tf-6f7fab{justify-content:space-between;align-items:center;display:flex}.tf-b15cde{animation:.2s both tf-ed0355}.tf-52678c{flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex}.tf-25f74d{background:linear-gradient(180deg, color-mix(in srgb, var(--tf-primary) 12%, transparent) 0%, color-mix(in srgb, var(--tf-primary) 3%, transparent) 100%);width:40px;height:40px;color:var(--tf-primary);border-radius:50%;justify-content:center;align-items:center;display:flex}.tf-b385cd{color:var(--tf-text-secondary);font-size:13px;font-weight:600}.tf-dc46f6{color:var(--tf-text-tertiary);font-size:11px}.tf-58158c{background:color-mix(in srgb, var(--tf-surface) 60%, var(--tf-bg));border-radius:var(--tf-radius-sm);gap:2px;padding:3px;display:flex}.tf-6f8fbb{border-radius:var(--tf-radius-sm);color:color-mix(in srgb, var(--tf-text-tertiary) 65%, transparent);font-size:var(--tf-font-sm);cursor:pointer;font-weight:500;font-family:var(--tf-font-family);background:0 0;border:none;padding:5px 14px;transition:background .15s,color .15s,box-shadow .15s}.tf-6f8fbb:hover{color:var(--tf-text-secondary)}.tf-2a2ad5{background:var(--tf-surface);color:var(--tf-text);font-weight:600;box-shadow:0 1px 3px #00000026}.tf-2de115{border-radius:var(--tf-button-radius);background:linear-gradient(135deg, var(--tf-primary), color-mix(in srgb, var(--tf-primary) 80%, #000));width:100%;color:var(--tf-text-on-primary);font-weight:600;font-size:var(--tf-font-xl);cursor:pointer;box-shadow:0 4px 16px var(--tf-primary-glow);letter-spacing:-.01em;font-family:var(--tf-font-family);border:none;padding:14px 0;transition:transform .15s,opacity .15s,box-shadow .15s}.tf-2de115:hover{opacity:.95;box-shadow:0 6px 20px var(--tf-primary-glow);transform:translateY(-1px)}.tf-2de115:active{transform:translateY(0)}.tf-47dc2a{background:var(--tf-primary);cursor:wait;opacity:.85}.tf-44b8f1{border-radius:var(--tf-button-radius);border:1px solid var(--tf-primary);background:var(--tf-primary-light);width:100%;color:var(--tf-primary);font-weight:600;font-size:var(--tf-font-xl);cursor:pointer;font-family:var(--tf-font-family);padding:14px 0;transition:transform .15s,background .15s}.tf-44b8f1:hover{transform:translateY(-1px)}.tf-44b8f1:active{transform:translateY(0)}.tf-04fe16{border-radius:var(--tf-button-radius);border:1.5px dashed var(--tf-primary);background:var(--tf-primary-light);width:100%;color:var(--tf-primary);font-weight:600;font-size:var(--tf-font-xl);cursor:pointer;font-family:var(--tf-font-family);padding:14px 0;transition:transform .15s,background .15s;animation:2s ease-in-out infinite tf-d53743}.tf-04fe16:hover{background:var(--tf-primary-glow);transform:translateY(-1px)}.tf-04fe16:active{transform:translateY(0)}.tf-65cf23{border-radius:var(--tf-button-radius);text-align:center;background:var(--tf-success-bg);width:100%;color:var(--tf-success);font-weight:600;font-size:var(--tf-font-xl);border:none;justify-content:center;align-items:center;gap:8px;padding:14px 0;display:flex}.tf-2f0314{border-radius:var(--tf-button-radius);text-align:center;background:var(--tf-error-bg);width:100%;color:var(--tf-error);font-weight:600;font-size:var(--tf-font-xl);cursor:pointer;border:none;justify-content:center;align-items:center;gap:8px;padding:14px 0;display:flex}.tf-20b1ac{justify-content:center;align-items:center;gap:8px;display:flex}.tf-e6dae0{border:2px solid #ffffff4d;border-top-color:var(--tf-text-on-primary,#fff);border-radius:50%;width:16px;height:16px;animation:.8s linear infinite tf-8a3bc2;display:inline-block}.tf-90e712{width:14px;height:14px}@keyframes tf-8a3bc2{to{transform:rotate(360deg)}}@keyframes tf-d36961{to{transform:rotate(360deg)}}@keyframes tf-3cfd5b{0%{transform:scale(1)}50%{transform:scale(1.15)}to{transform:scale(1)}}.tf-5835df{box-sizing:border-box;width:100%;min-width:0;padding:24px 20px 16px;animation:.3s both tf-e061c9;overflow:hidden}.tf-9322ae{border-bottom:1px solid var(--tf-border-light);justify-content:center;align-items:center;gap:12px;margin-bottom:4px;padding-bottom:20px;display:flex}.tf-7d5519{flex:1;justify-content:flex-start;align-items:center;min-width:0;display:flex}.tf-0b8d30{justify-content:flex-end}.tf-bfbd0b{align-items:center;gap:8px;min-width:0;display:flex}.tf-7e8fdf{flex-shrink:0;width:32px;height:32px;position:relative}.tf-37f3cf{background:var(--tf-bg);border:1.5px solid var(--tf-bg);border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;display:flex;position:absolute;bottom:-2px;right:-2px}.tf-9401fd{flex-direction:column;min-width:0;display:flex;overflow:hidden}.tf-832fae{font-family:var(--tf-font-family-mono);font-weight:600;font-size:var(--tf-font-lg);color:var(--tf-text);white-space:nowrap;line-height:1.2}.tf-b557fc{font-size:var(--tf-font-sm);color:var(--tf-text-tertiary);font-weight:500;line-height:1.2}.tf-2b42d5{background:var(--tf-primary-light);border:1px solid color-mix(in srgb, var(--tf-primary) 30%, transparent);width:32px;height:32px;font-size:var(--tf-font-lg);color:var(--tf-primary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:flex}.tf-5953e8{color:var(--tf-text-tertiary);flex-shrink:0}.tf-a168c7{text-align:center;font-size:var(--tf-font-sm);color:var(--tf-text-tertiary);justify-content:center;align-items:center;gap:6px;padding-bottom:16px;display:flex}.tf-062404{object-fit:contain;border-radius:4px;width:16px;height:16px}.tf-26af4c{flex-direction:column;display:flex}.tf-4b9be7{gap:12px;display:flex}.tf-036db2{width:28px;height:28px;font-size:var(--tf-font-base);z-index:1;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:flex}.tf-09b7bb{background:var(--tf-success-bg);color:var(--tf-success);animation:.4s tf-3cfd5b}.tf-aef7e0{background:var(--tf-primary-light)}.tf-5c628c{background:var(--tf-input-bg);color:var(--tf-text-tertiary);border:1px solid var(--tf-border-light)}.tf-a5abdf{background:var(--tf-error-bg);color:var(--tf-error)}.tf-9efe7c{border:2px solid var(--tf-primary-light);border-top-color:var(--tf-primary);border-radius:50%;width:14px;height:14px;animation:.8s linear infinite tf-d36961}.tf-5c7806{border-color:color-mix(in srgb, var(--tf-error) 20%, transparent);border-top-color:var(--tf-error)}.tf-185719{flex:1;min-width:0;padding-bottom:20px;position:relative}.tf-185719:before{content:"";background:var(--tf-border-light);width:2px;position:absolute;top:28px;bottom:0;left:-26px}.tf-4b9be7:last-child .tf-185719:before{display:none}.tf-4b9be7:last-child .tf-185719{padding-bottom:4px}.tf-84527b .tf-185719:before{background:var(--tf-success)}.tf-417d35 .tf-185719:before{background:var(--tf-error)}.tf-aad7e9{font-size:var(--tf-font-md);color:var(--tf-text);font-weight:600;line-height:28px}.tf-8de1c6 .tf-aad7e9{color:var(--tf-text-tertiary)}.tf-417d35 .tf-aad7e9{color:var(--tf-error)}.tf-bcb46a{font-size:var(--tf-font-sm);color:var(--tf-text-tertiary);word-break:break-word;overflow-wrap:break-word;flex-wrap:wrap;align-items:center;gap:6px;margin-top:2px;display:flex}.tf-16cfdc .tf-bcb46a{color:var(--tf-primary)}.tf-0aa291{font-size:var(--tf-font-sm);color:var(--tf-primary);align-items:center;gap:3px;text-decoration:none;transition:opacity .15s;display:inline-flex}.tf-0aa291:hover{opacity:.7}.tf-234e31{border-radius:var(--tf-radius);background:var(--tf-error-alpha,#ef44440f);border:1px solid var(--tf-error-bg);text-align:center;margin-top:20px;padding:16px}.tf-adb588{font-size:var(--tf-font-md);color:var(--tf-text-secondary);margin-bottom:12px;line-height:1.5}.tf-11fa21{font-size:var(--tf-font-base);color:var(--tf-primary);align-items:center;gap:4px;margin-bottom:12px;text-decoration:none;transition:opacity .15s;display:inline-flex}.tf-11fa21:hover{opacity:.7}.tf-4f7573{border-radius:var(--tf-radius);background:linear-gradient(135deg, var(--tf-success), color-mix(in srgb, var(--tf-success) 80%, #000));width:100%;color:var(--tf-text-on-primary);font-size:var(--tf-font-lg);cursor:pointer;border:none;padding:12px;font-weight:600;transition:opacity .2s,transform .15s}.tf-4f7573:hover{opacity:.9;transform:translateY(-1px)}.tf-4f7573:active{transform:scale(.98)}.tf-c918a2{text-align:center;margin-top:16px}.tf-ad7aab{visibility:hidden;pointer-events:none}.tf-603d2e{font-size:var(--tf-font-sm);color:var(--tf-text-tertiary);margin-bottom:8px}.tf-1e22cb{border-radius:var(--tf-radius);background:var(--tf-bg-secondary);width:100%;color:var(--tf-text);font-size:var(--tf-font-lg);cursor:pointer;border:1px solid var(--tf-border);padding:12px;font-weight:600;transition:opacity .2s,transform .15s}.tf-1e22cb:hover{opacity:.85;transform:translateY(-1px)}.tf-1e22cb:active{transform:scale(.98)}@keyframes tf-36c468{0%{opacity:0;transform:scale(.3)}to{opacity:1;transform:scale(1)}}@keyframes tf-dc4326{0%{stroke-dashoffset:24px}to{stroke-dashoffset:0}}@keyframes tf-13e6cd{0%{opacity:.5;transform:scale(1)}to{opacity:0;transform:scale(1.6)}}@keyframes tf-2b6de5{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes tf-5b8ef8{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.tf-e98a9a{box-sizing:border-box;flex-direction:column;align-items:center;width:100%;min-width:0;padding:28px 20px 24px;animation:.35s both tf-2b6de5;display:flex}.tf-1f9019{background:linear-gradient(145deg, var(--tf-success), color-mix(in srgb, var(--tf-success) 80%, white));width:64px;height:64px;box-shadow:0 2px 8px color-mix(in srgb, var(--tf-success) 30%, transparent), 0 8px 32px color-mix(in srgb, var(--tf-success) 20%, transparent);border-radius:50%;justify-content:center;align-items:center;margin-bottom:16px;padding:2px;animation:.5s cubic-bezier(.34,1.56,.64,1) both tf-36c468;display:flex;position:relative}.tf-1f9019:before{content:"";border:2px solid var(--tf-success);pointer-events:none;border-radius:50%;animation:3s ease-out infinite tf-13e6cd;position:absolute;top:-2px;bottom:-2px;left:-2px;right:-2px}.tf-fd4d56{background:var(--tf-bg);border-radius:50%;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.tf-d3c8df{color:var(--tf-success);display:flex}.tf-d3c8df svg{stroke-dasharray:24;stroke-dashoffset:24px;animation:.4s .35s forwards tf-dc4326}.tf-9e3a66{font-size:var(--tf-font-heading);color:var(--tf-text);letter-spacing:-.01em;margin-bottom:4px;font-weight:700}.tf-db06d4{font-size:var(--tf-font-md);color:var(--tf-text-secondary);margin-bottom:20px}.tf-c9a5e1{border-radius:var(--tf-radius-lg);background:linear-gradient(135deg, color-mix(in srgb, var(--tf-success) 8%, transparent), color-mix(in srgb, var(--tf-success) 4%, transparent));border:1px solid color-mix(in srgb, var(--tf-success) 15%, transparent);flex-direction:column;align-items:center;gap:6px;width:100%;margin-bottom:16px;padding:20px;animation:.4s .2s both tf-2b6de5;display:flex;position:relative;overflow:hidden}.tf-c9a5e1:after{content:"";background:radial-gradient(ellipse at center, color-mix(in srgb, var(--tf-success) 12%, transparent), transparent 70%);pointer-events:none;width:60%;height:40px;position:absolute;bottom:-20px;left:50%;transform:translate(-50%)}.tf-7b3b5b{width:40px;height:40px;margin-bottom:4px;animation:.3s .1s both tf-5b8ef8;position:relative}.tf-651299{background:var(--tf-bg);border:1.5px solid color-mix(in srgb, var(--tf-success) 15%, transparent);border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;display:flex;position:absolute;bottom:-2px;right:-2px}.tf-f52291{font-size:var(--tf-font-amount-lg);color:var(--tf-text);font-weight:700;font-family:var(--tf-font-family-mono);letter-spacing:-.02em;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:8px;animation:.3s .2s both tf-5b8ef8;display:flex}.tf-8cfc86{font-size:var(--tf-font-lg);color:var(--tf-text-secondary);font-weight:500;animation:.3s .25s both tf-5b8ef8}.tf-5f768d{font-size:var(--tf-font-sm);font-weight:500;font-family:var(--tf-font-family);color:var(--tf-text-tertiary);letter-spacing:0;animation:.3s .3s both tf-5b8ef8}.tf-75f592{width:100%;margin-bottom:16px}.tf-73910d{background:var(--tf-input-bg);border:1px solid var(--tf-border-light);border-radius:var(--tf-radius-sm);cursor:pointer;width:100%;font-size:var(--tf-font-base);color:var(--tf-text-secondary);font-weight:500;font-family:var(--tf-font-family);justify-content:space-between;align-items:center;padding:10px 14px;transition:background .15s;display:flex}.tf-73910d:hover{background:var(--tf-bg-secondary)}.tf-ae94a0{border-radius:var(--tf-radius-sm) var(--tf-radius-sm) 0 0}.tf-1afb0a{color:var(--tf-text-tertiary);justify-content:center;align-items:center;transition:transform .2s;display:flex}.tf-7737cf{transform:rotate(180deg)}.tf-92a530{border:1px solid var(--tf-border-light);border-radius:0 0 var(--tf-radius-sm) var(--tf-radius-sm);background:var(--tf-input-bg);border-top:none;padding:8px 14px 12px;animation:.15s both tf-5b8ef8}.tf-6e8c3e{font-size:var(--tf-font-sm);justify-content:space-between;align-items:center;padding:5px 0;display:flex}.tf-4b5396{color:var(--tf-text-tertiary);font-weight:500}.tf-63cca1{color:var(--tf-text-secondary);font-family:var(--tf-font-family-mono);font-size:var(--tf-font-sm);align-items:center;gap:4px;display:flex}.tf-18c122{color:var(--tf-primary);font-size:var(--tf-font-sm);font-family:var(--tf-font-family-mono);align-items:center;gap:3px;text-decoration:none;transition:opacity .15s;display:inline-flex}.tf-18c122:hover{opacity:.7}.tf-d7e813{border-radius:var(--tf-radius-lg);background:var(--tf-primary);width:100%;color:var(--tf-text-on-primary);font-weight:600;font-size:var(--tf-font-xl);cursor:pointer;font-family:var(--tf-font-family);box-shadow:0 4px 16px color-mix(in srgb, var(--tf-primary) 25%, transparent);border:none;padding:14px 0;transition:transform .15s,opacity .15s}.tf-d7e813:hover{opacity:.95;transform:translateY(-1px)}.tf-d7e813:active{transform:translateY(0)}.tf-9b9575{border-radius:var(--tf-radius-xl);z-index:10;background:#00000059;align-items:flex-end;animation:.2s both tf-9e8870;display:flex;position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}@keyframes tf-9e8870{0%{opacity:0}to{opacity:1}}@keyframes tf-c66348{0%{transform:translateY(100%)}to{transform:translateY(0)}}.tf-140273{border-radius:var(--tf-radius-xl) var(--tf-radius-xl) 0 0;background:var(--tf-bg);width:100%;font-family:var(--tf-font-family);color:var(--tf-text);flex-direction:column;height:calc(100% - 45px);animation:.3s cubic-bezier(.32,.72,0,1) both tf-c66348;display:flex;overflow:hidden;box-shadow:0 -4px 24px #00000026}.tf-fce59b{box-shadow:none}.tf-45030f{flex-shrink:0;padding:18px 20px 0}.tf-ce0622{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.tf-0c1692{font-size:var(--tf-font-xl);font-weight:600}.tf-64aa3f{border-radius:var(--tf-radius-sm);cursor:pointer;width:28px;height:28px;color:var(--tf-text-tertiary);font-size:var(--tf-font-2xl);background:var(--tf-input-bg);font-weight:300;font-family:var(--tf-font-family);border:none;justify-content:center;align-items:center;display:flex}.tf-9819ca{background:var(--tf-input-bg);border-radius:var(--tf-radius);border:1px solid var(--tf-border-light);align-items:center;gap:10px;padding:10px 14px;transition:border-color .15s;display:flex}.tf-9819ca.tf-d9fcd6{border-color:var(--tf-primary)}.tf-4ad0e7{color:var(--tf-text-tertiary);font-size:var(--tf-font-lg);flex-shrink:0}.tf-9ea859{font-size:var(--tf-font-lg);color:var(--tf-text);font-family:var(--tf-font-family);background:0 0;border:none;outline:none;flex:1;transition:border-color .15s}.tf-9ea859:focus{outline:none}.tf-9ea859::placeholder{color:var(--tf-text-tertiary)}.tf-25e112{gap:4px;margin-top:12px;padding-bottom:14px;display:flex;overflow-x:auto}.tf-478cb9{border-radius:var(--tf-radius-sm);font-size:var(--tf-font-sm);cursor:pointer;white-space:nowrap;font-weight:500;font-family:var(--tf-font-family);background:var(--tf-input-bg);color:var(--tf-text-secondary);border:none;align-items:center;gap:5px;padding:4px 10px;display:flex}.tf-478cb9.tf-125be5{background:var(--tf-primary-light);color:var(--tf-primary);outline:1px solid var(--tf-primary);outline-offset:-1px}.tf-bb4fb1{border-radius:var(--tf-radius-sm);flex-shrink:0;height:24px}.tf-ad5703{background:var(--tf-border);flex-shrink:0;height:1px;margin:0 20px}.tf-de9986{flex:1;min-height:0;padding:6px 8px 16px;overflow-y:auto}.tf-7ac0fe{flex-direction:column;display:flex}.tf-c6ef08{border-radius:var(--tf-radius);justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.tf-3643cf{align-items:center;gap:12px;display:flex}.tf-9b3d59{border-radius:50%;width:36px;height:36px}.tf-a4cc17{flex-direction:column;gap:6px;display:flex}.tf-7f1baf{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.tf-9171a2{height:10px}.tf-9171a2.tf-71ea5d{width:88px}.tf-9171a2.tf-dfb33a{width:64px}.tf-9171a2.tf-43fbf4{width:56px}.tf-9171a2.tf-61ca3c{width:44px}.tf-512365{border-radius:var(--tf-radius);cursor:pointer;width:100%;font-family:var(--tf-font-family);background:0 0;border:none;justify-content:space-between;align-items:center;padding:10px 12px;transition:background .1s;display:flex}.tf-512365:hover{background:var(--tf-surface-hover)}.tf-512365:active{transform:scale(.98)}.tf-512365.tf-9f601f{background:var(--tf-primary-light)}.tf-a0b0d9{align-items:center;gap:12px;display:flex}.tf-1e7a62{position:relative}.tf-67f18a{background:var(--tf-surface);border:1px solid var(--tf-border);border-radius:50%;justify-content:center;align-items:center;width:13px;height:13px;display:flex;position:absolute;bottom:-1px;right:-1px}.tf-cd76b9{text-align:left;flex-direction:column;align-items:flex-start;display:flex}.tf-189814{align-items:center;gap:5px;display:flex}.tf-8f4efd{font-size:var(--tf-font-lg);color:var(--tf-text);font-weight:600;line-height:20px}.tf-6d4840{font-size:var(--tf-font-2xs);background:var(--tf-success-bg);color:var(--tf-success);letter-spacing:.03em;border-radius:3px;padding:1px 4px;font-weight:700}.tf-51bf2b{font-size:var(--tf-font-sm);color:var(--tf-text-tertiary);line-height:16px}.tf-87740a{text-align:right}.tf-43fbf4{color:var(--tf-text);font-size:var(--tf-font-md);font-weight:500;font-family:var(--tf-font-family-mono)}.tf-43fbf4.tf-2ee375{color:var(--tf-text-tertiary)}.tf-61ca3c{font-size:var(--tf-font-sm);color:var(--tf-text-tertiary);font-family:var(--tf-font-family-mono)}.tf-0afeec{flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:200px;padding:40px 32px;display:flex}.tf-ea8b28{background:var(--tf-primary-light);width:64px;height:64px;color:var(--tf-text-tertiary);border-radius:50%;justify-content:center;align-items:center;margin-bottom:4px;display:flex}.tf-74f38a{font-size:var(--tf-font-lg);color:var(--tf-text);font-weight:600}.tf-d9b5e6{font-size:var(--tf-font-sm);color:var(--tf-text-tertiary);text-align:center;max-width:280px;line-height:1.5}.tf-635e96{background:var(--tf-primary-light);color:var(--tf-primary);font-size:var(--tf-font-sm);font-weight:600;font-family:var(--tf-font-family);cursor:pointer;border:none;border-radius:10px;align-items:center;gap:6px;margin-top:4px;padding:10px 20px;transition:background .15s;display:flex}.tf-635e96:hover{background:var(--tf-primary-alpha)}.tf-636daf{background:var(--tf-bg);border-radius:var(--tf-radius-xl) var(--tf-radius-xl) 0 0;flex-direction:column;width:100%;height:300px;animation:.3s cubic-bezier(.32,.72,0,1) both tf-6933ac;display:flex;overflow:hidden;box-shadow:0 -4px 24px #00000026}@keyframes tf-6933ac{0%{transform:translateY(100%)}to{transform:translateY(0)}}.tf-fddfab{border-bottom:1px solid var(--tf-border-light);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.tf-970eb9{font-size:var(--tf-font-2xl);color:var(--tf-text);font-weight:600}.tf-de123a{cursor:pointer;color:var(--tf-text-secondary);border-radius:var(--tf-radius-xs);background:0 0;border:none;justify-content:center;align-items:center;padding:4px;transition:background .15s;display:flex}.tf-de123a:hover{background:var(--tf-bg-elevated)}.tf-0445e3{flex-direction:column;flex:1;gap:8px;padding:16px 20px;display:flex}.tf-9a65ec{background:var(--tf-input-bg);border:1px solid var(--tf-border-light);border-radius:var(--tf-radius);width:100%;min-height:80px;font-size:var(--tf-font-lg);font-family:var(--tf-font-family-mono);color:var(--tf-text);resize:none;box-sizing:border-box;outline:none;padding:12px 14px;transition:border-color .2s,box-shadow .2s}.tf-9a65ec::placeholder{color:var(--tf-text-tertiary)}.tf-9a65ec:focus{border-color:var(--tf-primary);box-shadow:0 0 0 3px var(--tf-primary-alpha)}.tf-c5ea21{border-color:var(--tf-error)}.tf-c5ea21:focus{border-color:var(--tf-error);box-shadow:0 0 0 3px var(--tf-error-alpha)}.tf-9d4bba{font-size:var(--tf-font-base);color:var(--tf-error);padding:0 2px}.tf-cb9b60{padding:16px 20px 20px}.tf-2cba65{width:100%}.tf-2cba65:disabled{opacity:.5;cursor:not-allowed}@keyframes tf-07c947{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.tf-dc5721{box-sizing:border-box;justify-content:space-between;align-items:center;height:65px;padding:0 20px;display:flex}.tf-68123c{align-items:center;gap:7px;display:flex}.tf-43dda9{visibility:hidden}.tf-532d07{object-fit:contain;flex-shrink:0;width:22px;height:22px}.tf-b7936a{font-size:var(--tf-font-xl);letter-spacing:-.01em;font-weight:600}.tf-883305{color:var(--tf-primary)}.tf-bc1b05{font-size:var(--tf-font-sm);align-items:center;gap:5px;padding:12px 20px 0;display:flex}.tf-bc1b05+.tf-98d625{padding-top:10px}.tf-dd09ea{cursor:pointer;font-family:var(--tf-font-family);font-size:var(--tf-font-sm);color:var(--tf-primary);background:0 0;border:none;padding:0;font-weight:500;transition:opacity .15s}.tf-dd09ea:hover{opacity:.8}.tf-018710{color:var(--tf-text-tertiary);font-weight:400}.tf-21456c{color:var(--tf-text-secondary);font-weight:500}.tf-6da3db{cursor:pointer;border-radius:var(--tf-radius-sm);background:0 0;border:none;align-items:center;gap:6px;padding:4px 8px;font-family:inherit;transition:background .15s;display:flex}.tf-6da3db:hover{background:var(--tf-surface-hover)}.tf-6da3db:focus-visible{outline:2px solid var(--tf-primary);outline-offset:2px}.tf-d25568{background:var(--tf-primary);width:8px;height:8px;box-shadow:0 0 8px var(--tf-primary-glow);border-radius:50%}.tf-16ce7d{background:var(--tf-success);box-shadow:0 0 8px var(--tf-success)}.tf-11bb1d{font-size:var(--tf-font-base);color:var(--tf-text-secondary);font-family:var(--tf-font-family-mono)}.tf-98d625,.tf-8b7743{padding:0 20px}.tf-fdf8be{margin-top:6px}.tf-677ece{background:var(--tf-input-bg);border-radius:var(--tf-radius-lg);border:1px solid var(--tf-border-light);padding:14px 16px;transition:border-color .2s,background .25s,box-shadow .2s}.tf-635915{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.tf-b8a04a{align-items:center;gap:8px;display:inline-flex}.tf-0d1ef8{font-size:var(--tf-font-base);color:var(--tf-text-tertiary);text-align:left;font-weight:500}.tf-d04a4e{font-size:var(--tf-font-sm);color:var(--tf-text-tertiary);font-family:var(--tf-font-family-mono)}.tf-d7140f{justify-content:space-between;align-items:center;display:flex}.tf-dcd620{background:var(--tf-surface);border-radius:var(--tf-radius-sm);box-sizing:border-box;border:1px solid var(--tf-border);cursor:pointer;height:36px;font-family:var(--tf-font-family);flex-shrink:0;align-items:center;gap:8px;padding:6px 12px 6px 8px;transition:background .15s,border-color .15s,transform .1s;display:flex}.tf-dcd620:hover{background:var(--tf-surface-hover);transform:scale(1.02)}.tf-6859a9{cursor:default;pointer-events:none}.tf-6859a9:hover{background:var(--tf-surface);transform:none}.tf-e25a5c{padding:0 12px}.tf-038cf1{font-size:var(--tf-font-lg);color:var(--tf-text);font-weight:600}.tf-33c9cb{font-size:var(--tf-font-md);color:var(--tf-primary);font-weight:600}.tf-b1e4a6{font-size:var(--tf-font-xs);color:var(--tf-text-tertiary);align-items:center;display:inline-flex}.tf-d168ae{min-height:16px;font-size:var(--tf-font-base);justify-content:space-between;align-items:center;margin-top:6px;line-height:100%;display:flex}.tf-b2b098{justify-content:space-between;align-items:center;height:16px;margin-top:6px;display:flex}.tf-92acfd{min-height:16px;font-size:var(--tf-font-base);color:var(--tf-text-tertiary);line-height:100%;display:inline-block}.tf-bd2f5c{visibility:hidden}.tf-5f8805{font-size:var(--tf-font-sm);color:var(--tf-primary);background:var(--tf-primary-light);border-radius:var(--tf-radius-xs);cursor:pointer;font-weight:600;font-family:var(--tf-font-family);border:none;padding:2px 8px}.tf-5f8805:hover{opacity:.8}.tf-af41ab{z-index:2;justify-content:center;margin:-6px 0;display:flex;position:relative}.tf-18c3f4{-webkit-appearance:none;appearance:none;border-radius:var(--tf-radius-sm);background:var(--tf-surface);border:3px solid var(--tf-bg);cursor:pointer;width:36px;height:36px;font-size:var(--tf-font-lg);color:var(--tf-text-secondary);justify-content:center;align-items:center;padding:0;transition:transform .2s,background .15s,color .15s,border-color .15s;display:flex;box-shadow:0 2px 8px #0000000f}.tf-18c3f4:hover{color:var(--tf-primary);background:color-mix(in srgb, var(--tf-primary) 12%, var(--tf-surface));border-color:var(--tf-primary);transform:scale(1.1)}.tf-18c3f4:active{transform:scale(.95)rotate(180deg)}.tf-194ce7{cursor:default;color:var(--tf-text-tertiary)}.tf-194ce7:hover{color:var(--tf-text-tertiary);background:var(--tf-surface);border-color:var(--tf-bg);transform:none}.tf-194ce7:active{transform:none}.tf-85dacd{background:var(--tf-input-bg);border-radius:var(--tf-radius-lg);border:1px solid var(--tf-border-light);transition:border-color .2s,background .25s,box-shadow .2s}.tf-8a93b8{padding:14px 16px}.tf-ae3eb4{background:var(--tf-border-light);height:1px;margin:0 16px;position:relative}.tf-93effc{-webkit-appearance:none;appearance:none;background:var(--tf-input-bg);border:1px solid var(--tf-border-light);cursor:pointer;width:28px;height:28px;color:var(--tf-text-secondary);z-index:1;border-radius:50%;justify-content:center;align-items:center;padding:0;font-family:inherit;transition:transform .2s,background .15s,color .15s,border-color .15s;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%)translateY(-50%)}.tf-93effc:hover{color:var(--tf-primary);border-color:var(--tf-primary);transform:translate(-50%)translateY(-50%)scale(1.1)}.tf-93effc:active{transform:translate(-50%)translateY(-50%)scale(.95)rotate(180deg)}.tf-cede4f{cursor:default;color:var(--tf-text-tertiary)}.tf-cede4f:hover{color:var(--tf-text-tertiary);border-color:var(--tf-border-light);transform:translate(-50%)translateY(-50%)}.tf-cede4f:active{transform:translate(-50%)translateY(-50%)}.tf-a04b23{flex-shrink:0;position:relative}.tf-57762e{position:absolute;bottom:-2px;right:-2px}.tf-28b876{border-radius:var(--tf-radius-xl);background:var(--tf-bg);border:1px solid var(--tf-border);width:100%;max-width:400px;box-shadow:var(--tf-shadow-lg);font-family:var(--tf-font-family);color:var(--tf-text);flex-direction:column;height:100%;display:flex;overflow:hidden}.tf-2aa545{flex-shrink:0;padding:18px 20px 14px}.tf-bcba74{justify-content:space-between;align-items:center;display:flex}.tf-a974e8{font-size:var(--tf-font-xl);font-weight:600}.tf-14447c{align-items:center;gap:10px;display:flex}.tf-527e42{border-radius:var(--tf-radius-sm);cursor:pointer;width:28px;height:28px;color:var(--tf-text-tertiary);background:var(--tf-input-bg);font-family:var(--tf-font-family);border:none;justify-content:center;align-items:center;display:flex}.tf-527e42:hover{background:var(--tf-surface-hover)}.tf-a5a3ce{background:var(--tf-border);flex-shrink:0;height:1px;margin:0 20px}.tf-211bfe{flex:1;min-height:0;padding:6px 8px;overflow-y:auto}.tf-fd33c1{border-radius:var(--tf-radius);cursor:pointer;width:100%;font-family:var(--tf-font-family);background:0 0;border:1px solid #0000;justify-content:space-between;align-items:center;padding:12px;transition:background .1s;display:flex}.tf-fd33c1:hover{background:var(--tf-surface-hover)}.tf-a0382b{background:var(--tf-primary-light);border-color:var(--tf-primary)}.tf-a0382b:hover{background:var(--tf-primary-light)}.tf-2aece4{align-items:center;gap:12px;display:flex}.tf-949870{border-radius:var(--tf-radius-xs);object-fit:contain;flex-shrink:0;width:32px;height:32px}.tf-13e09e{border-radius:var(--tf-radius-xs);background:var(--tf-input-bg);width:32px;height:32px;font-size:var(--tf-font-lg);color:var(--tf-text-secondary);flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:flex}.tf-2387c4{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.tf-74069b{font-size:var(--tf-font-lg);color:var(--tf-text);align-items:center;gap:8px;font-weight:600;display:flex}.tf-113a28{letter-spacing:.03em;text-transform:uppercase;color:var(--tf-primary);background:var(--tf-primary-light);border-radius:4px;padding:2px 6px;font-size:10px;font-weight:700;line-height:1.2}.tf-69fe0b{font-size:var(--tf-font-sm);color:var(--tf-text-tertiary)}.tf-cb2799{align-items:center;gap:8px;display:flex}.tf-d4ce76{font-size:var(--tf-font-md);color:var(--tf-text-secondary);font-weight:500;font-family:var(--tf-font-family-mono);text-align:right}.tf-b3b747{color:var(--tf-primary);flex-shrink:0}.tf-bdf976{z-index:50;border-radius:var(--tf-radius);border:1px solid var(--tf-border);background:var(--tf-bg);min-width:200px;max-height:300px;box-shadow:var(--tf-shadow-lg);flex-direction:column;margin-top:6px;animation:.15s both tf-c88647;display:flex;position:absolute;top:100%;right:0}.tf-0d4452{padding:8px 8px 4px}.tf-7e8f39{border-radius:var(--tf-radius-sm);border:1px solid var(--tf-border-light);background:var(--tf-input-bg);width:100%;color:var(--tf-text);font-size:var(--tf-font-sm);font-family:var(--tf-font-family);box-sizing:border-box;outline:none;padding:8px 10px;transition:border-color .15s}.tf-7e8f39::placeholder{color:var(--tf-text-tertiary)}.tf-7e8f39:focus{border-color:var(--tf-primary)}.tf-7b9980{overscroll-behavior:contain;scrollbar-width:none;flex:1;padding:4px;overflow-y:auto}.tf-7b9980::-webkit-scrollbar{display:none}.tf-6a97ad{border-radius:var(--tf-radius-sm);width:100%;color:var(--tf-text);font-size:var(--tf-font-sm);cursor:pointer;font-weight:500;font-family:var(--tf-font-family);text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:8px 10px;transition:background .1s;display:flex}.tf-6a97ad:hover{background:var(--tf-surface-hover)}.tf-c939b4{background:var(--tf-primary-light);color:var(--tf-primary)}.tf-1e672b{text-align:center;flex-shrink:0;width:22px;font-size:16px;line-height:1}.tf-63111f{min-width:32px;font-weight:600}.tf-5c9e1e{color:var(--tf-text-tertiary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-weight:400;overflow:hidden}.tf-cabaa6{color:var(--tf-primary);flex-shrink:0}.tf-efb45d{text-align:center;color:var(--tf-text-tertiary);font-size:var(--tf-font-sm);padding:16px}.tf-062e26{flex:1;align-items:baseline;min-width:0;display:flex}.tf-8f452a{font-size:var(--tf-font-amount);color:var(--tf-text-tertiary);flex-shrink:0;margin-right:2px;font-weight:700;line-height:1}.tf-1a6365{font-size:var(--tf-font-amount);letter-spacing:-.02em;font-weight:700;font-family:var(--tf-font-family);width:100%;min-width:0;color:var(--tf-text);text-align:left;background:0 0;border:none;outline:none;line-height:1}.tf-1a6365::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.tf-1a6365::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.tf-1a6365{-moz-appearance:textfield}.tf-1a6365::placeholder{color:var(--tf-text-tertiary)}.tf-991c0d{background:var(--tf-surface);border-radius:var(--tf-radius-sm);box-sizing:border-box;border:1px solid var(--tf-border);cursor:pointer;height:36px;font-family:var(--tf-font-family);flex-shrink:0;align-items:center;gap:6px;padding:6px 12px;transition:background .15s,border-color .15s,transform .1s;display:flex;position:relative}.tf-991c0d:hover{background:var(--tf-surface-hover);transform:scale(1.02)}.tf-a9a7d7{cursor:default;pointer-events:none}.tf-a9a7d7:hover{background:var(--tf-surface);transform:none}.tf-991c0d:focus-within{outline:2px solid var(--tf-primary);outline-offset:2px}.tf-dc8a7b{font-size:var(--tf-font-lg);color:var(--tf-text);font-weight:600}.tf-4bb83d{opacity:0;cursor:pointer;-webkit-appearance:none;appearance:none;border:none;width:100%;height:100%;position:absolute;top:0;left:0}.tf-19de08{font-size:var(--tf-font-amount);color:var(--tf-text);letter-spacing:-.02em;flex:1;min-width:0;font-weight:700;line-height:1}.tf-2ee659{color:var(--tf-text-tertiary)}.tf-cbd017{font-size:var(--tf-font-sm);color:var(--tf-text-tertiary)}.tf-36561c{color:var(--tf-error)}.tf-f78710{margin:10px 20px 0}.tf-b584f9{background:var(--tf-surface);border:1px solid var(--tf-border-light);border-radius:var(--tf-radius-lg);padding:14px 16px;animation:.25s both tf-7df115}.tf-d8fd5c{background:var(--tf-surface);border:1px solid var(--tf-border-light);border-radius:var(--tf-radius-lg);margin:12px 20px 0;padding:14px 16px;animation:.25s both tf-7df115}.tf-96a148{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.tf-4337e5{font-size:var(--tf-font-sm);color:var(--tf-text-tertiary);font-weight:500}.tf-1bf9bf{border-radius:var(--tf-radius-sm);background:var(--tf-success-bg);color:var(--tf-success);letter-spacing:.5px;text-transform:uppercase;align-items:center;padding:2px 8px;font-size:10px;font-weight:700;display:inline-flex}.tf-2e8f34{font-size:var(--tf-font-lg);color:var(--tf-text);margin-bottom:8px;font-weight:700}.tf-2fa202{justify-content:space-between;align-items:baseline;display:flex}.tf-45bc49{font-size:var(--tf-font-lg);color:var(--tf-text);font-weight:600;font-family:var(--tf-font-family-mono)}.tf-fdf611{font-size:var(--tf-font-sm);color:var(--tf-text-tertiary)}.tf-0e3026{font-size:var(--tf-font-sm);color:var(--tf-text-tertiary);margin-top:8px}.tf-fb4397{margin:6px 20px 0;overflow:hidden}.tf-2db646{background:color-mix(in srgb, var(--tf-primary) 6%, transparent);border:1px solid color-mix(in srgb, var(--tf-primary) 12%, transparent);border-radius:var(--tf-radius-sm);flex-direction:column;gap:10px;margin:10px 0 0;padding:14px 16px;animation:.25s both tf-7df115;display:flex}.tf-c78adb{font-size:var(--tf-font-sm);color:var(--tf-text-secondary);text-align:center;font-weight:500}.tf-b84c90{cursor:pointer;color:var(--tf-text-tertiary);opacity:.6;align-items:center;transition:opacity .15s;display:inline-flex}.tf-b84c90:hover{opacity:1}.tf-bb0779{background:var(--tf-bg-elevated,var(--tf-bg));border:1px solid var(--tf-border);border-radius:var(--tf-radius-sm);width:240px;color:var(--tf-text-secondary);font-size:var(--tf-font-sm,12px);text-align:center;z-index:10;pointer-events:none;padding:8px 10px;font-weight:400;line-height:1.45;animation:.15s tf-4bb2f7;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);box-shadow:0 4px 12px #00000040}.tf-306e03{justify-content:center;align-items:center;gap:6px;display:flex}.tf-5602d3{flex-direction:column;align-items:center;gap:4px;min-width:0;display:flex}.tf-78593f{justify-content:center;align-items:center;display:flex;position:relative}.tf-5527d4{background:var(--tf-surface);border:1px solid var(--tf-border);width:28px;height:28px;font-size:var(--tf-font-md);color:var(--tf-text);border-radius:50%;justify-content:center;align-items:center;font-weight:700;display:flex}.tf-0e800e{background:color-mix(in srgb, var(--tf-success) 15%, transparent);width:28px;height:28px;color:var(--tf-success);border-radius:50%;justify-content:center;align-items:center;display:flex}.tf-ade349{color:var(--tf-text-tertiary);white-space:nowrap;text-overflow:ellipsis;text-align:center;max-width:64px;font-size:10px;font-weight:500;overflow:hidden}.tf-ba22f3{color:var(--tf-text-tertiary);flex-shrink:0;margin-top:-16px}.tf-64436e{justify-content:center;margin-top:4px;padding:4px 20px;display:flex}.tf-df7635{border-radius:var(--tf-radius-xl);border:1px solid var(--tf-border-light);background:var(--tf-surface);color:var(--tf-primary);font-size:var(--tf-font-sm);cursor:pointer;font-weight:500;font-family:var(--tf-font-family);align-items:center;gap:8px;padding:6px 14px;transition:background .15s,border-color .15s;display:inline-flex}.tf-df7635:hover{background:var(--tf-surface-hover);border-color:var(--tf-primary)}.tf-aae089{align-items:center;display:flex}.tf-b211ea{border:1.5px solid var(--tf-surface);background:var(--tf-input-bg);object-fit:contain;width:20px;height:20px;color:var(--tf-text-secondary);border-radius:50%;justify-content:center;align-items:center;font-size:10px;font-weight:700;display:flex;overflow:hidden}.tf-b211ea+.tf-b211ea{margin-left:-6px}.tf-b211ea img{object-fit:contain;width:100%;height:100%}.tf-e99a74{flex-direction:column;gap:6px;margin:6px 20px 0;animation:.2s both tf-7df115;display:flex}.tf-839279{background:var(--tf-surface);border:1px solid var(--tf-border-light);border-radius:var(--tf-radius);cursor:pointer;font-family:var(--tf-font-family);justify-content:space-between;align-items:center;padding:12px 14px;transition:border-color .15s,background .15s;display:flex}.tf-839279:hover{border-color:var(--tf-border);background:var(--tf-surface-hover)}.tf-b68773{border-color:var(--tf-primary);background:color-mix(in srgb, var(--tf-primary) 6%, var(--tf-surface))}.tf-845c61{font-size:var(--tf-font-sm);align-items:center;gap:4px;font-weight:500;display:inline-flex}.tf-a514cb{color:var(--tf-success)}.tf-35e95b{color:var(--tf-warning)}.tf-57fdcd{font-size:var(--tf-font-sm);color:var(--tf-text-tertiary);align-items:center;gap:6px;display:flex}.tf-e10cfb{object-fit:contain;border-radius:4px;width:16px;height:16px}.tf-4386a3{justify-content:center;align-items:center;margin:10px 20px 0;display:flex}.tf-96a3b0{background:var(--tf-error-alpha,#ef44440f);border:1px solid var(--tf-error-bg);border-radius:var(--tf-radius-sm);text-align:center;width:100%;padding:14px;animation:.25s both tf-7df115}.tf-539af2{font-size:var(--tf-font-md);color:var(--tf-error);margin-bottom:12px}.tf-002628{background:var(--tf-error-alpha,#ef44440f);border:1px solid var(--tf-error-bg);border-radius:var(--tf-radius-sm);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;height:100%;padding:20px 16px;animation:.25s both tf-7df115;display:flex;overflow-y:auto}.tf-8ddccf{color:var(--tf-error);opacity:.8;flex-shrink:0}.tf-0ebcc2{font-size:var(--tf-font-lg);color:var(--tf-error);font-weight:600}.tf-c6db08{font-size:var(--tf-font-sm);color:var(--tf-text-secondary);max-width:280px;line-height:1.5}.tf-4f9afa{border-radius:var(--tf-radius);background:var(--tf-bg-secondary);width:100%;color:var(--tf-text);font-size:var(--tf-font-lg);cursor:pointer;border:1px solid var(--tf-border);font-weight:600;font-family:var(--tf-font-family);padding:12px;transition:opacity .2s,transform .15s}.tf-4f9afa:hover{opacity:.85;transform:translateY(-1px)}.tf-4f9afa:active{transform:scale(.98)}.tf-3e82ef{padding:12px 20px 0}@keyframes tf-a108b2{0%,to{opacity:1}50%{opacity:.4}}.tf-2f01a5{border-radius:var(--tf-radius-xs);animation:1.5s ease-in-out infinite tf-a108b2;overflow:hidden;background:var(--tf-skeleton)!important;color:#0000!important}.tf-9b71d6{box-sizing:border-box;justify-content:space-between;align-items:center;gap:7px;height:65px;padding:0 20px;display:flex}.tf-4c9136{padding:0 20px 10px}.tf-febe61{font-size:var(--tf-font-sm);color:var(--tf-text-tertiary);text-align:left;box-sizing:border-box;height:22px;font-weight:500}.tf-b8cb88{cursor:pointer;color:var(--tf-text-tertiary);height:36px;font-family:var(--tf-font-family);font-size:var(--tf-font-sm);border-radius:var(--tf-radius-sm);background:0 0;border:none;align-items:center;gap:6px;padding:0 8px;font-weight:500;transition:color .15s,background .15s;display:flex}.tf-b8cb88:hover{color:var(--tf-text-secondary);background:var(--tf-input-bg)}.tf-bf5d6c{pointer-events:none}.tf-0d09cf{animation:.3s both tf-398c5c;display:inline-flex}@keyframes tf-398c5c{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.tf-2368bf{animation:.3s both tf-86d030;display:inline}@keyframes tf-86d030{0%{transform:translate(-20px)}to{transform:translate(0)}}.tf-b31fd2{animation:.25s reverse both tf-398c5c;display:inline-flex}.tf-f55867{animation:.25s reverse both tf-86d030;display:inline}.tf-a27aab{background:var(--tf-input-bg);border-radius:var(--tf-radius);border:1px solid var(--tf-border-light);box-sizing:border-box;flex-direction:column;gap:8px;padding:12px 14px 14px;display:flex}.tf-d62361{align-items:center;gap:10px;height:48px;display:flex}.tf-f0b3f5{flex-shrink:0;position:relative}.tf-7a6fbc{width:12px;height:12px;position:absolute;bottom:-1px;right:-1px}.tf-e9e9a1{font-size:var(--tf-font-amount-sm);letter-spacing:-.02em;font-weight:700}.tf-f3baad{font-size:var(--tf-font-lg);color:var(--tf-text);font-weight:600;line-height:20px}.tf-0131e4{font-size:var(--tf-font-sm);color:var(--tf-text-tertiary);font-family:var(--tf-font-family-mono);margin-left:auto}.tf-e8980b{font-size:var(--tf-font-amount-sm);letter-spacing:-.02em;font-weight:700;font-family:var(--tf-font-family);width:80px;min-width:0;color:var(--tf-text);text-align:left;background:0 0;border:none;outline:none;line-height:1}.tf-e8980b::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.tf-e8980b::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.tf-e8980b{-moz-appearance:textfield}.tf-e8980b::placeholder{color:var(--tf-text-tertiary)}.tf-81181d{border-radius:var(--tf-radius);border:1px solid var(--tf-border-light);background:var(--tf-input-bg);cursor:pointer;width:100%;font-family:var(--tf-font-family);align-items:center;padding:10px 14px;transition:background .15s,border-color .15s;display:flex}.tf-81181d:hover{border-color:var(--tf-primary);background:var(--tf-primary-light)}.tf-81181d:active{transform:scale(.98)}.tf-a274dd{align-items:center;gap:9px;display:flex}.tf-0039f9{position:relative}.tf-2ee752{background:var(--tf-surface);border:1px solid var(--tf-border);border-radius:50%;justify-content:center;align-items:center;width:11px;height:11px;display:flex;position:absolute;bottom:-1px;right:-1px}.tf-96714d{text-align:left}.tf-619747{align-items:center;gap:5px;display:flex}.tf-cd221a{font-size:var(--tf-font-base);color:var(--tf-text);font-weight:600}.tf-2c683f{font-size:var(--tf-font-2xs);background:var(--tf-success-bg);color:var(--tf-success);letter-spacing:.03em;border-radius:3px;padding:1px 4px;font-weight:700}.tf-c839a0{font-size:var(--tf-font-xs);color:var(--tf-text-tertiary)}.tf-0b0d52{text-align:right;margin-left:auto;margin-right:8px}.tf-19df0d{font-size:var(--tf-font-lg);font-weight:500;font-family:var(--tf-font-family-mono);color:var(--tf-text);letter-spacing:-.02em}.tf-c7d33a{font-size:var(--tf-font-xs);color:var(--tf-text-tertiary);font-family:var(--tf-font-family-mono)}.tf-e51789{color:var(--tf-text-tertiary);flex-shrink:0;align-items:center;transition:transform .2s;display:flex}.tf-8a3107{border-radius:4px;width:60px;height:16px}.tf-e255df{border-radius:var(--tf-radius);border:1px solid var(--tf-border-light);background:var(--tf-input-bg);cursor:default;pointer-events:none;align-items:center;padding:11px 14px;display:flex}.tf-fb2771{border-radius:50%;width:32px;height:32px}.tf-1b1e61{flex-direction:column;gap:6px;margin-left:9px;display:flex}.tf-18dcca{height:10px}.tf-a5c85b{width:52px}.tf-12a725{width:40px}.tf-df9ebb{flex-direction:column;align-items:flex-end;gap:6px;margin-left:auto;display:flex}.tf-3547fa{width:60px}.tf-a46696{width:44px}.tf-1d40de{background:var(--tf-surface);border:1px solid var(--tf-border-light);border-radius:var(--tf-radius);flex-direction:column;justify-content:center;align-items:center;gap:10px;min-height:180px;padding:14px 16px;display:flex}.tf-5d25d7{font-size:var(--tf-font-md);color:var(--tf-text-secondary);font-weight:600}.tf-5cc2e5{flex-direction:column;gap:8px;margin:4px 20px 12px;display:flex}.tf-292b5c{background:var(--tf-input-bg);border:1px solid var(--tf-border-light);border-radius:var(--tf-radius);color:var(--tf-text);font-size:var(--tf-font-base);cursor:pointer;align-items:center;gap:14px;padding:14px 16px;font-family:inherit;font-weight:500;transition:all .15s;display:flex}.tf-292b5c:hover{background:var(--tf-surface-hover);border-color:var(--tf-border)}.tf-4ceb2d{border-radius:var(--tf-radius-sm);flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.tf-0f5916{background:linear-gradient(225deg, color-mix(in srgb, var(--tf-primary) 10%, transparent), color-mix(in srgb, var(--tf-primary) 3%, transparent));border:1px solid color-mix(in srgb, var(--tf-primary) 19%, transparent);color:var(--tf-primary)}.tf-4aaad9{background:linear-gradient(225deg, color-mix(in srgb, var(--tf-success) 10%, transparent), color-mix(in srgb, var(--tf-success) 3%, transparent));border:1px solid color-mix(in srgb, var(--tf-success) 19%, transparent);color:var(--tf-success)}.tf-0fbb44{text-align:left;flex-direction:column;flex:1;gap:2px;display:flex}.tf-47c991{font-size:var(--tf-font-md);color:var(--tf-text);font-weight:600}.tf-474f21{font-size:var(--tf-font-xs);color:var(--tf-text-tertiary);font-weight:400}.tf-16f0ec{color:var(--tf-text-tertiary);align-items:center;display:flex}.tf-612245{flex-direction:column;flex:1;display:flex}.tf-541e3b{margin-top:auto}.tf-bcbc56{background:color-mix(in srgb, var(--tf-error) 10%, transparent);border:1px solid color-mix(in srgb, var(--tf-error) 30%, transparent);border-radius:var(--tf-radius-sm);color:var(--tf-error);font-size:var(--tf-font-sm);text-align:center;margin:0 20px 12px;padding:12px 14px}
2
+ /*$vite$:1*/