@xrpl-wallet-kit/browser 0.1.7 → 0.1.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.
@@ -1,4 +1,4 @@
1
- /*! @xrpl-wallet-kit/browser v0.1.7 | MIT | https://github.com/XRPDomains/xrpl-wallet-kit */
1
+ /*! @xrpl-wallet-kit/browser v0.1.8 | MIT | https://github.com/XRPDomains/xrpl-wallet-kit */
2
2
  var __defProp = Object.defineProperty;
3
3
  var __typeError = (msg) => {
4
4
  throw TypeError(msg);
@@ -4402,7 +4402,7 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
4402
4402
  async connect(options) {
4403
4403
  var _a2;
4404
4404
  const signInAndWait = this.requireMethod("signInAndWait");
4405
- const result = await signInAndWait(this.randomHex());
4405
+ const result = await this.withAbort(signInAndWait(this.randomHex()), options.signal);
4406
4406
  const address = this.pickString(result, ["response.data.address", "response.address", "address"]);
4407
4407
  if (!address)
4408
4408
  throw new Error("Crossmark did not return an XRPL address");
@@ -4511,6 +4511,37 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
4511
4511
  const value = pickPath(source, paths);
4512
4512
  return typeof value === "string" && value.trim() ? value : void 0;
4513
4513
  }
4514
+ withAbort(promise, signal) {
4515
+ if (!signal)
4516
+ return promise;
4517
+ if (signal.aborted)
4518
+ return Promise.reject(createWalletError.connectionRejected(this.metadata.name, new Error("Connection was cancelled")));
4519
+ return new Promise((resolve, reject) => {
4520
+ let settled = false;
4521
+ const cleanup = () => signal.removeEventListener("abort", abort);
4522
+ const abort = () => {
4523
+ if (settled)
4524
+ return;
4525
+ settled = true;
4526
+ cleanup();
4527
+ reject(createWalletError.connectionRejected(this.metadata.name, new Error("Connection was cancelled")));
4528
+ };
4529
+ signal.addEventListener("abort", abort, { once: true });
4530
+ promise.then((value) => {
4531
+ if (settled)
4532
+ return;
4533
+ settled = true;
4534
+ cleanup();
4535
+ resolve(value);
4536
+ }, (error) => {
4537
+ if (settled)
4538
+ return;
4539
+ settled = true;
4540
+ cleanup();
4541
+ reject(error);
4542
+ });
4543
+ });
4544
+ }
4514
4545
  }
4515
4546
  function createCrossmarkAdapter(options) {
4516
4547
  return new CrossmarkAdapter(options);
@@ -4537,14 +4568,14 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
4537
4568
  async connect(options) {
4538
4569
  var _a2;
4539
4570
  const provider = this.provider();
4540
- const state2 = await this.initialize(provider);
4541
- const connected = await this.resolveConnected(provider, state2);
4571
+ const state2 = await this.withAbort(this.initialize(provider), options.signal);
4572
+ const connected = await this.withAbort(this.resolveConnected(provider, state2), options.signal);
4542
4573
  if (!connected)
4543
4574
  throw new Error("DropFi connection was rejected");
4544
- const address = await this.resolveAddress(provider, connected, state2);
4575
+ const address = await this.withAbort(this.resolveAddress(provider, connected, state2), options.signal);
4545
4576
  if (!address)
4546
4577
  throw new Error("DropFi did not return an XRPL address");
4547
- const publicKey = await this.resolvePublicKey(provider, connected, state2);
4578
+ const publicKey = await this.withAbort(this.resolvePublicKey(provider, connected, state2), options.signal);
4548
4579
  this.activeAddress = address;
4549
4580
  return { account: { address, publicKey, network: options.network, networkType: (_a2 = options.network) == null ? void 0 : _a2.networkType }, raw: { connected, address, publicKey } };
4550
4581
  }
@@ -4639,6 +4670,37 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
4639
4670
  clearTimeout(timer);
4640
4671
  }
4641
4672
  }
4673
+ withAbort(promise, signal) {
4674
+ if (!signal)
4675
+ return promise;
4676
+ if (signal.aborted)
4677
+ return Promise.reject(createWalletError.connectionRejected(this.metadata.name, new Error("Connection was cancelled")));
4678
+ return new Promise((resolve, reject) => {
4679
+ let settled = false;
4680
+ const cleanup = () => signal.removeEventListener("abort", abort);
4681
+ const abort = () => {
4682
+ if (settled)
4683
+ return;
4684
+ settled = true;
4685
+ cleanup();
4686
+ reject(createWalletError.connectionRejected(this.metadata.name, new Error("Connection was cancelled")));
4687
+ };
4688
+ signal.addEventListener("abort", abort, { once: true });
4689
+ promise.then((value) => {
4690
+ if (settled)
4691
+ return;
4692
+ settled = true;
4693
+ cleanup();
4694
+ resolve(value);
4695
+ }, (error) => {
4696
+ if (settled)
4697
+ return;
4698
+ settled = true;
4699
+ cleanup();
4700
+ reject(error);
4701
+ });
4702
+ });
4703
+ }
4642
4704
  provider(required = true) {
4643
4705
  const host = globalThis;
4644
4706
  const provider = this.options.provider ?? host.__xwk_dropfi ?? host.dropfi ?? this.resolveLegacyXrplProvider(host.xrpl);
@@ -8855,7 +8917,7 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
8855
8917
  throw new Error("Please install GemWallet Extension");
8856
8918
  if (!provider.getAddress)
8857
8919
  throw new Error("GemWallet provider is missing getAddress()");
8858
- const [address, publicKey, network] = await Promise.all([provider.getAddress(), this.getPublicKey(provider), (_a2 = provider.getNetwork) == null ? void 0 : _a2.call(provider)]);
8920
+ const [address, publicKey, network] = await this.withAbort(Promise.all([provider.getAddress(), this.getPublicKey(provider), (_a2 = provider.getNetwork) == null ? void 0 : _a2.call(provider)]), options.signal);
8859
8921
  const accountAddress = (_b = address.result) == null ? void 0 : _b.address;
8860
8922
  if (!accountAddress)
8861
8923
  throw new Error("GemWallet did not return an XRPL address");
@@ -9031,6 +9093,37 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
9031
9093
  networkName(network) {
9032
9094
  return typeof network === "string" ? network : network == null ? void 0 : network.name;
9033
9095
  }
9096
+ withAbort(promise, signal) {
9097
+ if (!signal)
9098
+ return promise;
9099
+ if (signal.aborted)
9100
+ return Promise.reject(createWalletError.connectionRejected(this.metadata.name, new Error("Connection was cancelled")));
9101
+ return new Promise((resolve, reject) => {
9102
+ let settled = false;
9103
+ const cleanup = () => signal.removeEventListener("abort", abort);
9104
+ const abort = () => {
9105
+ if (settled)
9106
+ return;
9107
+ settled = true;
9108
+ cleanup();
9109
+ reject(createWalletError.connectionRejected(this.metadata.name, new Error("Connection was cancelled")));
9110
+ };
9111
+ signal.addEventListener("abort", abort, { once: true });
9112
+ promise.then((value) => {
9113
+ if (settled)
9114
+ return;
9115
+ settled = true;
9116
+ cleanup();
9117
+ resolve(value);
9118
+ }, (error) => {
9119
+ if (settled)
9120
+ return;
9121
+ settled = true;
9122
+ cleanup();
9123
+ reject(error);
9124
+ });
9125
+ });
9126
+ }
9034
9127
  }
9035
9128
  function createGemWalletAdapter(options) {
9036
9129
  return new GemWalletAdapter(options);
@@ -10546,9 +10639,10 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
10546
10639
  }
10547
10640
  }
10548
10641
  function createWalletConnectMetadata(metadata2) {
10642
+ var _a2;
10549
10643
  return {
10550
10644
  ...metadata2,
10551
- icons: [WALLETCONNECT_ICON]
10645
+ icons: ((_a2 = metadata2.icons) == null ? void 0 : _a2.length) ? metadata2.icons : [WALLETCONNECT_ICON]
10552
10646
  };
10553
10647
  }
10554
10648
  function createWalletConnectAdapter(options) {
@@ -15525,6 +15619,7 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
15525
15619
  var distExports = requireDist$4();
15526
15620
  const XAMAN_ICON = "data:image/png;base64,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";
15527
15621
  const XAMAN_PENDING_RECOVERY_TTL_MS = 18e4;
15622
+ const XAMAN_RESTORE_READY_TIMEOUT_MS = 2500;
15528
15623
  class XamanAdapter extends BaseWalletAdapter {
15529
15624
  constructor(options) {
15530
15625
  super();
@@ -15548,7 +15643,7 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
15548
15643
  async connect(options) {
15549
15644
  await this.setPendingRecoveryMarker();
15550
15645
  try {
15551
- const result = await this.authorize();
15646
+ const result = await this.withAbort(this.authorize(), options.signal);
15552
15647
  if (result instanceof Error)
15553
15648
  throw result;
15554
15649
  const connectResult = await this.createConnectResultFromAuth(result, options);
@@ -15578,7 +15673,7 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
15578
15673
  if (!await this.hasPendingRecoveryMarker())
15579
15674
  return null;
15580
15675
  try {
15581
- const result = await this.authorize();
15676
+ const result = await this.withAbort(this.authorize(), options.signal);
15582
15677
  if (!result || result instanceof Error) {
15583
15678
  this.clearPendingRecoveryMarker();
15584
15679
  return null;
@@ -15642,19 +15737,24 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
15642
15737
  });
15643
15738
  }
15644
15739
  async checkXamanState(options = {}) {
15645
- var _a2, _b, _c, _d, _e2, _f;
15646
- if (!((_b = (_a2 = this.sdk) == null ? void 0 : _a2.state) == null ? void 0 : _b.signedIn) && !((_d = (_c = this.sdk) == null ? void 0 : _c.state) == null ? void 0 : _d.account))
15740
+ var _a2, _b, _c, _d;
15741
+ if (!this.sdk)
15647
15742
  return null;
15648
- const accountAddress = await this.resolveSdkValue((_e2 = this.sdk.user) == null ? void 0 : _e2.account) ?? this.sdk.state.account;
15743
+ await this.waitForSdkReady(this.sdk);
15744
+ const openid = await this.resolveSdkValue((_a2 = this.sdk.environment) == null ? void 0 : _a2.openid);
15745
+ const accountAddress = await this.resolveSdkValue((_b = this.sdk.user) == null ? void 0 : _b.account) ?? ((_c = this.sdk.state) == null ? void 0 : _c.account) ?? (openid == null ? void 0 : openid.account) ?? (openid == null ? void 0 : openid.sub);
15649
15746
  if (!accountAddress)
15650
15747
  return null;
15651
15748
  return {
15652
15749
  account: {
15653
15750
  address: accountAddress,
15654
15751
  network: options.network,
15655
- networkType: await this.resolveSdkValue((_f = this.sdk.user) == null ? void 0 : _f.networkType)
15752
+ networkType: await this.resolveSdkValue((_d = this.sdk.user) == null ? void 0 : _d.networkType) ?? (openid == null ? void 0 : openid.networkType)
15656
15753
  },
15657
- raw: this.sdk.state
15754
+ raw: {
15755
+ state: this.sdk.state,
15756
+ openid
15757
+ }
15658
15758
  };
15659
15759
  }
15660
15760
  requireSdk() {
@@ -15730,6 +15830,20 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
15730
15830
  async resolveSdkValue(value) {
15731
15831
  return value instanceof Promise ? value : value;
15732
15832
  }
15833
+ async waitForSdkReady(sdk) {
15834
+ var _a2, _b, _c;
15835
+ const readySignals = [
15836
+ (_a2 = sdk.environment) == null ? void 0 : _a2.ready,
15837
+ (_b = sdk.environment) == null ? void 0 : _b.retrieved,
15838
+ (_c = sdk.environment) == null ? void 0 : _c.success
15839
+ ].filter((signal) => Boolean(signal));
15840
+ if (!readySignals.length)
15841
+ return;
15842
+ await Promise.race([
15843
+ Promise.race(readySignals).then(() => void 0),
15844
+ new Promise((resolve) => setTimeout(resolve, XAMAN_RESTORE_READY_TIMEOUT_MS))
15845
+ ]);
15846
+ }
15733
15847
  clearPkceStorage() {
15734
15848
  var _a2;
15735
15849
  if (typeof window === "undefined")
@@ -15739,6 +15853,37 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
15739
15853
  } catch {
15740
15854
  }
15741
15855
  }
15856
+ withAbort(promise, signal) {
15857
+ if (!signal)
15858
+ return promise;
15859
+ if (signal.aborted)
15860
+ return Promise.reject(createWalletError.connectionRejected(this.metadata.name, new Error("Connection was cancelled")));
15861
+ return new Promise((resolve, reject) => {
15862
+ let settled = false;
15863
+ const cleanup = () => signal.removeEventListener("abort", abort);
15864
+ const abort = () => {
15865
+ if (settled)
15866
+ return;
15867
+ settled = true;
15868
+ cleanup();
15869
+ reject(createWalletError.connectionRejected(this.metadata.name, new Error("Connection was cancelled")));
15870
+ };
15871
+ signal.addEventListener("abort", abort, { once: true });
15872
+ promise.then((value) => {
15873
+ if (settled)
15874
+ return;
15875
+ settled = true;
15876
+ cleanup();
15877
+ resolve(value);
15878
+ }, (error) => {
15879
+ if (settled)
15880
+ return;
15881
+ settled = true;
15882
+ cleanup();
15883
+ reject(error);
15884
+ });
15885
+ });
15886
+ }
15742
15887
  getPendingRecoveryKey() {
15743
15888
  return `xwk.xaman.pending.${this.options.apiKey ?? "injected"}`;
15744
15889
  }
@@ -15795,8 +15940,8 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
15795
15940
  async connect(options) {
15796
15941
  var _a2;
15797
15942
  const ethereum = this.ethereum();
15798
- await ethereum.request({ method: "wallet_requestSnaps", params: { [this.snapId]: {} } });
15799
- const snap = await ethereum.request({ method: "wallet_invokeSnap", params: { snapId: this.snapId, request: { method: "xrpl_getAccount" } } });
15943
+ await this.withAbort(ethereum.request({ method: "wallet_requestSnaps", params: { [this.snapId]: {} } }), options.signal);
15944
+ const snap = await this.withAbort(ethereum.request({ method: "wallet_invokeSnap", params: { snapId: this.snapId, request: { method: "xrpl_getAccount" } } }), options.signal);
15800
15945
  const address = snap.account;
15801
15946
  if (!address)
15802
15947
  throw new Error("XRPL Snap did not return an XRPL address");
@@ -15938,6 +16083,37 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
15938
16083
  throw new Error("No MetaMask provider installed");
15939
16084
  return ethereum;
15940
16085
  }
16086
+ withAbort(promise, signal) {
16087
+ if (!signal)
16088
+ return promise;
16089
+ if (signal.aborted)
16090
+ return Promise.reject(createWalletError.connectionRejected(this.metadata.name, new Error("Connection was cancelled")));
16091
+ return new Promise((resolve, reject) => {
16092
+ let settled = false;
16093
+ const cleanup = () => signal.removeEventListener("abort", abort);
16094
+ const abort = () => {
16095
+ if (settled)
16096
+ return;
16097
+ settled = true;
16098
+ cleanup();
16099
+ reject(createWalletError.connectionRejected(this.metadata.name, new Error("Connection was cancelled")));
16100
+ };
16101
+ signal.addEventListener("abort", abort, { once: true });
16102
+ promise.then((value) => {
16103
+ if (settled)
16104
+ return;
16105
+ settled = true;
16106
+ cleanup();
16107
+ resolve(value);
16108
+ }, (error) => {
16109
+ if (settled)
16110
+ return;
16111
+ settled = true;
16112
+ cleanup();
16113
+ reject(error);
16114
+ });
16115
+ });
16116
+ }
15941
16117
  }
15942
16118
  function createXrplSnapAdapter(options) {
15943
16119
  return new XrplSnapAdapter(options);
@@ -15951,11 +16127,11 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
15951
16127
  error: "#b45309",
15952
16128
  success: "#059669",
15953
16129
  muted: "#64748b",
15954
- border: "#e5e7eb",
16130
+ border: "rgba(17,24,39,.08)",
15955
16131
  overlay: "rgba(15,23,42,.46)",
15956
16132
  overlayBlur: 0,
15957
16133
  surface: "#f8fafc",
15958
- surfaceHover: "#f1f5f9",
16134
+ surfaceHover: "rgba(17,24,39,.04)",
15959
16135
  fallbackIconBackground: "rgba(15,23,42,.06)",
15960
16136
  fallbackIconColor: "#111827",
15961
16137
  shadow: "0 8px 40px rgba(15,23,42,.12), 0 0 0 1px rgba(15,23,42,.04)",
@@ -15973,7 +16149,7 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
15973
16149
  error: "#fbbf24",
15974
16150
  success: "#34d399",
15975
16151
  muted: "#94a3b8",
15976
- border: "#334155",
16152
+ border: "rgba(248,250,252,.10)",
15977
16153
  overlay: "rgba(2,6,23,.72)",
15978
16154
  overlayBlur: 0,
15979
16155
  surface: "#1f2937",
@@ -16036,12 +16212,12 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
16036
16212
  muted: "#64748b",
16037
16213
  border: "rgba(255,255,255,.50)",
16038
16214
  overlay: "rgba(15,23,42,.30)",
16039
- overlayBlur: 20,
16215
+ overlayBlur: 24,
16040
16216
  surface: "rgba(255,255,255,.52)",
16041
16217
  surfaceHover: "rgba(255,255,255,.66)",
16042
16218
  fallbackIconBackground: "rgba(99,102,241,.15)",
16043
16219
  fallbackIconColor: "#6366f1",
16044
- shadow: "0 8px 40px rgba(99,102,241,.15), 0 0 0 1px rgba(255,255,255,.30)",
16220
+ shadow: "0 0 0 1px rgba(255,255,255,.08), 0 12px 40px rgba(15,23,42,.24)",
16045
16221
  radius: "20px",
16046
16222
  walletRadius: "14px",
16047
16223
  spinnerTrail: "rgba(99,102,241,.15)",
@@ -16268,15 +16444,18 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
16268
16444
  const accountPanel = ui.accountPanel ?? {};
16269
16445
  const identity2 = ui.identity ?? {};
16270
16446
  const { accountPanelMode: overrideAccountPanelMode, ...restOverrides } = overrides;
16447
+ const themeMode = ui.mode ?? ui.themeMode ?? overrides.themeMode ?? "light";
16271
16448
  const theme = {
16272
- ...resolveWalletTheme({ mode: ui.mode ?? overrides.themeMode ?? "light", themeName: ui.themeName }),
16449
+ ...resolveWalletTheme({ mode: themeMode, themeName: ui.themeName }),
16450
+ ...ui.theme ?? {},
16273
16451
  ...ui.customTheme ?? {},
16274
16452
  ...overrides.theme ?? {}
16275
16453
  };
16276
- return createDefaultWalletButtonConfig({
16454
+ return createDefaultWalletButtonConfig(compactWalletButtonConfig({
16277
16455
  language: ui.language,
16278
16456
  messages: resolveWalletUiMessages(ui.language, ui.messages),
16279
16457
  label: connectButton.label,
16458
+ icon: connectButton.icon,
16280
16459
  showAdapterIcon: connectButton.showAdapterIcon,
16281
16460
  showChevron: connectButton.showChevron,
16282
16461
  showBalance: connectButton.showBalance,
@@ -16291,18 +16470,19 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
16291
16470
  showWeb3Name: identity2.enabled ?? true,
16292
16471
  fallbackToAddress: identity2.fallbackToAddress,
16293
16472
  identityResolver: identity2.resolver,
16294
- themeMode: ui.mode,
16473
+ themeMode,
16295
16474
  themeName: ui.themeName,
16296
16475
  ...restOverrides,
16297
16476
  accountPanelMode: overrideAccountPanelMode ?? accountPanel.mode ?? "modal",
16298
16477
  theme
16299
- });
16478
+ }));
16300
16479
  }
16301
16480
  function createDefaultWalletButtonConfig(overrides = {}) {
16302
16481
  const { theme, ...rest } = overrides;
16303
16482
  const messages = resolveWalletUiMessages(overrides.language, overrides.messages);
16304
- return {
16483
+ return compactWalletButtonConfig({
16305
16484
  showWeb3Name: true,
16485
+ icon: { type: "default" },
16306
16486
  showAdapterIcon: true,
16307
16487
  showChevron: true,
16308
16488
  showBalance: false,
@@ -16324,7 +16504,10 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
16324
16504
  ...resolveWalletTheme({ mode: rest.themeMode ?? "light", themeName: rest.themeName }),
16325
16505
  ...theme ?? {}
16326
16506
  }
16327
- };
16507
+ });
16508
+ }
16509
+ function compactWalletButtonConfig(config) {
16510
+ return Object.fromEntries(Object.entries(config).filter(([, value]) => value !== void 0));
16328
16511
  }
16329
16512
  var qrCodeStyling$1 = { exports: {} };
16330
16513
  var qrCodeStyling = qrCodeStyling$1.exports;
@@ -19620,13 +19803,6 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
19620
19803
  window.scrollTo(0, savedScrollY);
19621
19804
  savedScrollY = 0;
19622
19805
  }
19623
- function getWalletStyleId(prefix, styles2) {
19624
- let hash2 = 5381;
19625
- for (let index2 = 0; index2 < styles2.length; index2 += 1) {
19626
- hash2 = (hash2 << 5) + hash2 ^ styles2.charCodeAt(index2);
19627
- }
19628
- return `${prefix}-${(hash2 >>> 0).toString(36)}`;
19629
- }
19630
19806
  function ensureWalletStyle(id2, styles2) {
19631
19807
  if (typeof document === "undefined")
19632
19808
  return;
@@ -19636,6 +19812,8 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
19636
19812
  element = document.createElement("style");
19637
19813
  element.dataset.xwkStyle = id2;
19638
19814
  document.head.appendChild(element);
19815
+ } else if (element.nextSibling) {
19816
+ document.head.appendChild(element);
19639
19817
  }
19640
19818
  if (element.textContent !== styles2)
19641
19819
  element.textContent = styles2;
@@ -19654,6 +19832,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
19654
19832
  this.qrCopied = false;
19655
19833
  this.qrLightMode = false;
19656
19834
  this.availability = {};
19835
+ this.availabilityLoading = false;
19657
19836
  this.offEvents = [];
19658
19837
  this.openHandlers = /* @__PURE__ */ new Set();
19659
19838
  this.closeHandlers = /* @__PURE__ */ new Set();
@@ -19672,6 +19851,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
19672
19851
  }
19673
19852
  open() {
19674
19853
  this.activeGroupId = void 0;
19854
+ this.availabilityLoading = true;
19675
19855
  this.lastFocusedElement = document.activeElement instanceof HTMLElement ? document.activeElement : null;
19676
19856
  this.renderView("list");
19677
19857
  this.openHandlers.forEach((handler) => handler());
@@ -20073,7 +20253,11 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
20073
20253
  }
20074
20254
  async refreshAvailability() {
20075
20255
  var _a2;
20076
- this.availability = await this.options.manager.getWalletAvailability();
20256
+ try {
20257
+ this.availability = await this.options.manager.getWalletAvailability();
20258
+ } finally {
20259
+ this.availabilityLoading = false;
20260
+ }
20077
20261
  if (((_a2 = this.root) == null ? void 0 : _a2.dataset.xwkView) !== "list")
20078
20262
  return;
20079
20263
  const grid = this.root.querySelector(".xwk-grid");
@@ -20403,7 +20587,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
20403
20587
  this.bindChrome();
20404
20588
  }
20405
20589
  renderQrLoading() {
20406
- return `<span class="xwk-qr-loading" role="status" aria-live="polite"><span class="xwk-qr-loading-spinner"></span><span>${this.escapeHtml(this.messages().generatingQr)}</span></span>`;
20590
+ return `<span class="xwk-qr-loading xwk-qr-loading-skeleton" role="status" aria-live="polite"><span class="xwk-skeleton xwk-skeleton-qr xwk-qr-skeleton" aria-hidden="true"></span><span class="xwk-sr-only">${this.escapeHtml(this.messages().generatingQr)}</span></span>`;
20407
20591
  }
20408
20592
  renderQrCopyButtonContent() {
20409
20593
  const messages = this.messages();
@@ -20479,11 +20663,12 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
20479
20663
  }
20480
20664
  ensureStyles(theme, layout, size2, textSize) {
20481
20665
  const styles2 = `${this.renderStyles(theme, layout, size2, textSize)}${this.renderMobileSheetOverrides(theme)}`;
20482
- ensureWalletStyle(getWalletStyleId("xwk-modal", styles2), styles2);
20666
+ ensureWalletStyle("xwk-modal", styles2);
20483
20667
  }
20484
20668
  renderMobileSheetOverrides(theme) {
20485
20669
  const inlineOverrides = `.xwk-inline{background:transparent!important;display:block!important;inset:auto!important;opacity:1!important;overflow:visible!important;padding:0!important;place-items:initial!important;position:relative!important;z-index:auto!important}.xwk-inline .xwk-modal{border:1px solid ${theme.border}!important;border-radius:${theme.radius}!important;box-shadow:none!important;max-height:none!important;max-width:none!important;opacity:1!important;transform:none!important;transition:none!important;width:100%!important}.xwk-inline .xwk-body{max-height:none!important}.xwk-inline .xwk-header-spacer{display:block;height:44px;width:44px}.xwk-inline[data-xwk-state="closing"] .xwk-modal{opacity:1!important;transform:none!important}`;
20486
- return `.xwk-modal:focus{outline:none}.xwk-sr-only{border:0!important;clip:rect(0 0 0 0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.xwk-error-text,.xwk-connect-status.xwk-error-text,.xwk-qr-loading.xwk-error-text{color:${theme.error}!important}.xwk-close,.xwk-back{-webkit-appearance:none;-webkit-tap-highlight-color:transparent;appearance:none;background:transparent!important;border:0!important;box-shadow:none!important;margin:0;outline:none!important}.xwk-close:focus-visible,.xwk-back:focus-visible{outline:2px solid ${theme.accent}!important;outline-offset:0}@media(max-width:640px){.xwk-overlay{padding:max(12px,env(safe-area-inset-top)) 0 0!important;place-items:end center!important}.xwk-modal{align-self:end!important;border-bottom:0!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important;border-left:0!important;border-right:0!important;border-top-left-radius:${theme.radius}!important;border-top-right-radius:${theme.radius}!important;height:auto!important;max-height:calc(100dvh - env(safe-area-inset-top))!important;max-width:none!important;width:100vw!important}.xwk-header{border-top-left-radius:${theme.radius};border-top-right-radius:${theme.radius}}.xwk-body{padding-bottom:max(6px,calc(6px + env(safe-area-inset-bottom)))!important}.xwk-overlay[data-xwk-view="list"] .xwk-body{padding-bottom:max(2px,calc(2px + env(safe-area-inset-bottom)))!important}.xwk-network-row{margin:-4px 0 8px!important}.xwk-overlay[data-xwk-view="list"] .xwk-footer{padding-top:6px!important}}${inlineOverrides}`;
20670
+ const skeletonOverrides = `.xwk-skeleton{animation:xwk-qr-skeleton-pulse 1.4s ease-in-out infinite;background:linear-gradient(90deg,${theme.surface} 25%,${theme.surfaceHover} 50%,${theme.surface} 75%);background-size:200% 100%;display:inline-block}.xwk-skeleton-circle{border-radius:999px}.xwk-skeleton-line{height:14px;border-radius:4px}.xwk-skeleton-pill{border-radius:999px}.xwk-skeleton-card,.xwk-skeleton-button{border-radius:${theme.walletRadius}}.xwk-skeleton-row{align-items:center;display:flex;gap:12px;width:100%}.xwk-qr-loading-skeleton{display:grid;height:100%;place-items:center;width:100%}.xwk-qr-skeleton{border-radius:12px;box-sizing:border-box;display:block;height:calc(100% - 16px);overflow:hidden;position:relative;width:calc(100% - 16px)}.xwk-qr-skeleton:before{background-image:radial-gradient(circle,${theme.muted} 0 2px,transparent 2.8px);background-size:14px 14px;content:"";inset:24px;opacity:.26;position:absolute}.xwk-wallet-badge-loading{color:transparent;min-width:72px;visibility:visible}.xwk-wallet-badge-loading:before{display:none}@keyframes xwk-qr-skeleton-pulse{0%{background-position:200% 0}100%{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.xwk-skeleton,.xwk-qr-skeleton{animation:none!important;background:${theme.surfaceHover}!important}}`;
20671
+ return `${skeletonOverrides}.xwk-modal:focus{outline:none}.xwk-sr-only{border:0!important;clip:rect(0 0 0 0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.xwk-error-text,.xwk-connect-status.xwk-error-text,.xwk-qr-loading.xwk-error-text{color:${theme.error}!important}.xwk-close,.xwk-back{-webkit-appearance:none;-webkit-tap-highlight-color:transparent;appearance:none;background:transparent!important;border:0!important;box-shadow:none!important;margin:0;outline:none!important}.xwk-close:focus-visible,.xwk-back:focus-visible{outline:2px solid ${theme.accent}!important;outline-offset:0}@media(max-width:640px){.xwk-overlay{padding:max(12px,env(safe-area-inset-top)) 0 0!important;place-items:end center!important}.xwk-modal{align-self:end!important;border-bottom:0!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important;border-left:0!important;border-right:0!important;border-top-left-radius:${theme.radius}!important;border-top-right-radius:${theme.radius}!important;height:auto!important;max-height:calc(100dvh - env(safe-area-inset-top))!important;max-width:none!important;width:100vw!important}.xwk-header{border-top-left-radius:${theme.radius};border-top-right-radius:${theme.radius}}.xwk-body{padding-bottom:max(6px,calc(6px + env(safe-area-inset-bottom)))!important}.xwk-overlay[data-xwk-view="list"] .xwk-body{padding-bottom:max(2px,calc(2px + env(safe-area-inset-bottom)))!important}.xwk-network-row{margin:-4px 0 8px!important}.xwk-overlay[data-xwk-view="list"] .xwk-footer{padding-top:6px!important}}${inlineOverrides}`;
20487
20672
  }
20488
20673
  renderWalletList(layout) {
20489
20674
  const groups = this.getGroups();
@@ -20521,8 +20706,12 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
20521
20706
  if (wallet.recommended)
20522
20707
  badges.push(`<span class="xwk-wallet-badge xwk-recommended">${this.escapeHtml(messages.recommended || "Recommended")}</span>`);
20523
20708
  if (isExtensionLike) {
20524
- const className = this.availability[wallet.id] ? "xwk-wallet-badge xwk-installed" : "xwk-wallet-badge";
20525
- badges.push(`<span class="${className}">${this.escapeHtml(messages.installed || "Installed")}</span>`);
20709
+ if (this.availabilityLoading) {
20710
+ badges.push(`<span class="xwk-wallet-badge xwk-wallet-badge-loading xwk-skeleton xwk-skeleton-pill" aria-hidden="true"></span>`);
20711
+ } else {
20712
+ const className = this.availability[wallet.id] ? "xwk-wallet-badge xwk-installed" : "xwk-wallet-badge";
20713
+ badges.push(`<span class="${className}">${this.escapeHtml(messages.installed || "Installed")}</span>`);
20714
+ }
20526
20715
  }
20527
20716
  if (!badges.length)
20528
20717
  return "";
@@ -20821,10 +21010,11 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
20821
21010
  this.balanceLoading = false;
20822
21011
  this.activationStatus = "unknown";
20823
21012
  this.balanceRequest = 0;
21013
+ this.balanceDebounceSession = null;
20824
21014
  this.balanceRefreshTimers = /* @__PURE__ */ new Set();
20825
21015
  this.panelOpen = false;
20826
21016
  this.addressQrOpen = false;
20827
- this.txSectionOpen = true;
21017
+ this.historyOpen = false;
20828
21018
  this.panelScrollLocked = false;
20829
21019
  this.connecting = false;
20830
21020
  this.copied = false;
@@ -20839,6 +21029,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
20839
21029
  language: options.language,
20840
21030
  messages,
20841
21031
  label: messages.connectWallet,
21032
+ icon: { type: "default" },
20842
21033
  showAdapterIcon: true,
20843
21034
  showChevron: true,
20844
21035
  showWeb3Name: true,
@@ -20860,7 +21051,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
20860
21051
  balanceResolver: options.balanceResolver ?? createXrpBalanceResolver(),
20861
21052
  explorerUrl: options.explorerUrl,
20862
21053
  formatAddress: options.formatAddress,
20863
- ...options
21054
+ ...compactButtonOptions(options)
20864
21055
  };
20865
21056
  this.offEvents.push(options.manager.on("connecting", () => {
20866
21057
  this.connecting = true;
@@ -20870,6 +21061,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
20870
21061
  this.connecting = false;
20871
21062
  this.panelOpen = false;
20872
21063
  this.addressQrOpen = false;
21064
+ this.historyOpen = false;
20873
21065
  this.renderConnectedState(session ?? options.manager.getSession());
20874
21066
  void this.resolveBalance(session ?? options.manager.getSession());
20875
21067
  }));
@@ -20890,12 +21082,14 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
20890
21082
  this.connecting = false;
20891
21083
  this.panelOpen = false;
20892
21084
  this.addressQrOpen = false;
21085
+ this.historyOpen = false;
20893
21086
  this.identityName = null;
20894
21087
  this.identityAvatar = null;
20895
21088
  this.identityRequest += 1;
20896
21089
  this.identityResolvingKey = void 0;
20897
21090
  this.clearIdentitySettleTimer();
20898
21091
  this.clearBalanceRefreshTimers();
21092
+ this.clearBalanceDebounce();
20899
21093
  this.balanceRequest += 1;
20900
21094
  this.balance = null;
20901
21095
  this.balanceLoading = false;
@@ -20908,7 +21102,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
20908
21102
  }));
20909
21103
  this.offEvents.push(options.manager.on("tx_confirmed", () => {
20910
21104
  this.clearBalanceRefreshTimers();
20911
- void this.resolveBalance(options.manager.getSession());
21105
+ this.queueBalanceRefresh(options.manager.getSession());
20912
21106
  this.render();
20913
21107
  }));
20914
21108
  this.offEvents.push(options.manager.on("tx_failed", () => {
@@ -20918,13 +21112,13 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
20918
21112
  this.clearBalanceRefreshTimers();
20919
21113
  const session = options.manager.getSession();
20920
21114
  this.renderConnectedState(session);
20921
- void this.resolveBalance(session);
21115
+ this.queueBalanceRefresh(session);
20922
21116
  }));
20923
21117
  this.offEvents.push(options.manager.on("networkChanged", () => {
20924
21118
  this.clearBalanceRefreshTimers();
20925
21119
  const session = options.manager.getSession();
20926
21120
  this.renderConnectedState(session);
20927
- void this.resolveBalance(session);
21121
+ this.queueBalanceRefresh(session);
20928
21122
  }));
20929
21123
  this.offEvents.push(options.manager.on("error", () => {
20930
21124
  this.connecting = false;
@@ -20975,6 +21169,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
20975
21169
  this.identityRequest += 1;
20976
21170
  this.identityResolvingKey = void 0;
20977
21171
  this.clearBalanceRefreshTimers();
21172
+ this.clearBalanceDebounce();
20978
21173
  if (this.copyResetTimer)
20979
21174
  window.clearTimeout(this.copyResetTimer);
20980
21175
  if (this.identitySettleTimer)
@@ -20988,9 +21183,15 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
20988
21183
  if (!this.target)
20989
21184
  return;
20990
21185
  this.target.innerHTML = "";
20991
- this.target.appendChild(this.createRoot());
20992
- this.syncAccountPanelPortal();
20993
- this.syncPanelListeners();
21186
+ try {
21187
+ this.target.appendChild(this.createRoot());
21188
+ this.syncAccountPanelPortal();
21189
+ this.syncPanelListeners();
21190
+ } catch (error) {
21191
+ this.removeAccountPanelPortal();
21192
+ this.syncPanelScrollLock(false);
21193
+ this.target.appendChild(this.createRenderFallback(error));
21194
+ }
20994
21195
  }
20995
21196
  createRoot() {
20996
21197
  var _a2;
@@ -21008,6 +21209,25 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21008
21209
  this.renderAddressQrIfNeeded(root);
21009
21210
  return root;
21010
21211
  }
21212
+ createRenderFallback(_error) {
21213
+ var _a2;
21214
+ const root = document.createElement("div");
21215
+ root.className = "xwk-button-root";
21216
+ try {
21217
+ this.ensureStyles();
21218
+ } catch {
21219
+ }
21220
+ root.innerHTML = `<button class="xwk-account-button" data-xwk-wallet-reset type="button"><span class="xwk-button-label">${this.escapeHtml("Reset wallet")}</span></button>`;
21221
+ (_a2 = root.querySelector("[data-xwk-wallet-reset]")) == null ? void 0 : _a2.addEventListener("click", (event) => {
21222
+ event.stopPropagation();
21223
+ this.connecting = false;
21224
+ this.panelOpen = false;
21225
+ this.addressQrOpen = false;
21226
+ this.historyOpen = false;
21227
+ void this.options.manager.disconnect();
21228
+ });
21229
+ return root;
21230
+ }
21011
21231
  onButtonClick() {
21012
21232
  const session = this.options.manager.getSession();
21013
21233
  if (!session) {
@@ -21022,6 +21242,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21022
21242
  closePanel() {
21023
21243
  this.panelOpen = false;
21024
21244
  this.addressQrOpen = false;
21245
+ this.historyOpen = false;
21025
21246
  this.render();
21026
21247
  }
21027
21248
  handleDocumentPointerDown(event) {
@@ -21034,6 +21255,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21034
21255
  return;
21035
21256
  this.panelOpen = false;
21036
21257
  this.addressQrOpen = false;
21258
+ this.historyOpen = false;
21037
21259
  this.render();
21038
21260
  }
21039
21261
  handleDocumentKeyDown(event) {
@@ -21042,6 +21264,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21042
21264
  if (event.key === "Escape") {
21043
21265
  this.panelOpen = false;
21044
21266
  this.addressQrOpen = false;
21267
+ this.historyOpen = false;
21045
21268
  this.render();
21046
21269
  return;
21047
21270
  }
@@ -21106,7 +21329,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21106
21329
  (_a2 = root.querySelector("[data-xwk-account-close]")) == null ? void 0 : _a2.addEventListener("click", () => this.closePanel());
21107
21330
  (_b = root.querySelector("[data-xwk-account-back]")) == null ? void 0 : _b.addEventListener("click", (event) => {
21108
21331
  event.stopPropagation();
21109
- this.closeAddressQr();
21332
+ this.closeSubView();
21110
21333
  });
21111
21334
  (_c = root.querySelector("[data-xwk-account-overlay]")) == null ? void 0 : _c.addEventListener("click", (event) => {
21112
21335
  if (event.target === event.currentTarget)
@@ -21120,10 +21343,9 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21120
21343
  event.stopPropagation();
21121
21344
  this.openAddressQr();
21122
21345
  });
21123
- (_f = root.querySelector("[data-xwk-tx-toggle]")) == null ? void 0 : _f.addEventListener("click", (event) => {
21346
+ (_f = root.querySelector("[data-xwk-tx-history]")) == null ? void 0 : _f.addEventListener("click", (event) => {
21124
21347
  event.stopPropagation();
21125
- this.txSectionOpen = !this.txSectionOpen;
21126
- this.render();
21348
+ this.openTransactionHistory();
21127
21349
  });
21128
21350
  (_g = root.querySelector("[data-xwk-disconnect]")) == null ? void 0 : _g.addEventListener("click", () => void this.disconnect());
21129
21351
  }
@@ -21132,10 +21354,20 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21132
21354
  return;
21133
21355
  this.panelOpen = true;
21134
21356
  this.addressQrOpen = true;
21357
+ this.historyOpen = false;
21358
+ this.render();
21359
+ }
21360
+ openTransactionHistory() {
21361
+ if (!this.options.manager.getSession())
21362
+ return;
21363
+ this.panelOpen = true;
21364
+ this.addressQrOpen = false;
21365
+ this.historyOpen = true;
21135
21366
  this.render();
21136
21367
  }
21137
- closeAddressQr() {
21368
+ closeSubView() {
21138
21369
  this.addressQrOpen = false;
21370
+ this.historyOpen = false;
21139
21371
  this.panelOpen = true;
21140
21372
  this.render();
21141
21373
  }
@@ -21357,9 +21589,13 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21357
21589
  const messages = this.messages();
21358
21590
  const session = this.options.manager.getSession();
21359
21591
  const connected = Boolean(session);
21592
+ if (this.connecting && !session) {
21593
+ const icon2 = this.options.showAdapterIcon ? `<span class="xwk-button-icon xwk-button-icon-loading" aria-hidden="true"><span class="xwk-skeleton xwk-skeleton-circle xwk-skeleton-button-icon"></span></span>` : "";
21594
+ return `<button class="xwk-account-button xwk-account-button-loading" data-xwk-wallet-button type="button" aria-busy="true" aria-label="${this.escapeHtml(messages.connecting)}">${icon2}<span class="xwk-button-label xwk-button-label-loading" aria-hidden="true"><span class="xwk-skeleton xwk-skeleton-line xwk-skeleton-button-label"></span></span></button>`;
21595
+ }
21360
21596
  const label = this.connecting ? messages.connecting : session ? this.getAccountLabel(session) : this.options.label;
21361
- const balance = session && this.options.showBalance && this.balanceLoading ? `<span class="xwk-button-balance xwk-button-balance-loading">${this.balanceSpinnerIcon()}</span>` : session && this.options.showBalance && this.activationStatus === "unfunded" ? `<span class="xwk-button-balance">(${this.escapeHtml(messages.notActivated)})</span>` : session && this.options.showBalance && ((_a2 = this.balance) == null ? void 0 : _a2.formatted) ? `<span class="xwk-button-balance">(${this.escapeHtml(this.balance.formatted)})</span>` : "";
21362
- const icon = this.options.showAdapterIcon ? this.renderWalletIcon(connected ? session == null ? void 0 : session.wallet : void 0) : "";
21597
+ const balance = session && this.options.showBalance && this.balanceLoading ? `<span class="xwk-button-balance xwk-button-balance-loading" aria-hidden="true"><span class="xwk-skeleton xwk-skeleton-button-balance"></span></span>` : session && this.options.showBalance && this.activationStatus === "unfunded" ? `<span class="xwk-button-balance">(${this.escapeHtml(messages.notActivated)})</span>` : session && this.options.showBalance && ((_a2 = this.balance) == null ? void 0 : _a2.formatted) ? `<span class="xwk-button-balance">(${this.escapeHtml(this.balance.formatted)})</span>` : "";
21598
+ const icon = this.options.showAdapterIcon ? connected ? this.renderWalletIcon(session == null ? void 0 : session.wallet) : this.renderPreConnectIcon() : "";
21363
21599
  const pendingDot = connected && this.options.showRecentTransactions && this.getPendingTransactionCount() > 0 ? `<span class="xwk-button-pending-dot" aria-hidden="true"></span>` : "";
21364
21600
  const chevron = connected && this.options.showChevron && this.options.accountPanel ? `<span class="xwk-button-chevron" aria-hidden="true">${this.chevronIcon()}</span>` : "";
21365
21601
  return `<button class="xwk-account-button" data-xwk-wallet-button type="button">${icon}${pendingDot}<span class="xwk-button-label">${this.escapeHtml(label)}${balance}</span>${chevron}</button>`;
@@ -21369,15 +21605,15 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21369
21605
  const session = this.options.manager.getSession();
21370
21606
  if (!session)
21371
21607
  return "";
21372
- const content = this.addressQrOpen ? this.renderAddressQrPanelContent(session) : this.renderPanelContent(session);
21373
- const title = this.addressQrOpen ? messages.addressQr : messages.connected;
21374
- const hasTransactions = !this.addressQrOpen && this.options.showRecentTransactions && this.getVisibleTransactions(session).length > 0;
21375
- const panelStateClass = `${this.addressQrOpen ? " xwk-account-panel-address-qr" : ""}${hasTransactions ? " xwk-account-panel-with-transactions" : ""}`;
21376
- const leading = this.addressQrOpen ? `<button class="xwk-account-back" type="button" data-xwk-account-back aria-label="${this.escapeHtml(messages.back)}">${this.backIcon()}</button>` : `<span></span>`;
21608
+ const content = this.addressQrOpen ? this.renderAddressQrPanelContent(session) : this.historyOpen ? this.renderTransactionHistoryPanelContent(session) : this.renderPanelContent(session);
21609
+ const title = this.addressQrOpen ? messages.addressQr : this.historyOpen ? messages.recentTransactions : messages.connected;
21610
+ const hasTransactions = !this.addressQrOpen && !this.historyOpen && this.options.showRecentTransactions && this.getVisibleTransactions(session).length > 0;
21611
+ const panelStateClass = `${this.addressQrOpen ? " xwk-account-panel-address-qr" : ""}${this.historyOpen ? " xwk-account-panel-history" : ""}${hasTransactions ? " xwk-account-panel-with-transactions" : ""}`;
21612
+ const leading = this.addressQrOpen || this.historyOpen ? `<button class="xwk-account-back" type="button" data-xwk-account-back aria-label="${this.escapeHtml(messages.back)}">${this.backIcon()}</button>` : `<span></span>`;
21377
21613
  if (this.options.accountPanelMode === "modal") {
21378
21614
  return `<div class="xwk-account-overlay" data-xwk-account-overlay role="presentation"><section class="xwk-account-panel xwk-account-panel-modal${panelStateClass}" role="dialog" aria-modal="true" aria-label="${this.escapeHtml(title)}" tabindex="-1"><div class="xwk-account-modal-header">${leading}<h2>${this.escapeHtml(title)}</h2><button class="xwk-account-close" type="button" data-xwk-account-close aria-label="${this.escapeHtml(messages.close)}">&times;</button></div><div class="xwk-account-modal-body">${content}</div></section></div>`;
21379
21615
  }
21380
- const dropdownBack = this.addressQrOpen ? `<div class="xwk-account-dropdown-header"><button class="xwk-account-back" type="button" data-xwk-account-back aria-label="${this.escapeHtml(messages.back)}">${this.backIcon()}</button><strong>${this.escapeHtml(title)}</strong></div>` : "";
21616
+ const dropdownBack = this.addressQrOpen || this.historyOpen ? `<div class="xwk-account-dropdown-header"><button class="xwk-account-back" type="button" data-xwk-account-back aria-label="${this.escapeHtml(messages.back)}">${this.backIcon()}</button><strong>${this.escapeHtml(title)}</strong></div>` : "";
21381
21617
  return `<div class="xwk-account-panel xwk-account-panel-dropdown${panelStateClass}" role="dialog" aria-label="${this.escapeHtml(title)}">${dropdownBack}${content}</div>`;
21382
21618
  }
21383
21619
  renderPanelContent(session) {
@@ -21394,15 +21630,17 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21394
21630
  const disconnect = this.options.disconnect ? `<button type="button" data-xwk-disconnect${this.copyInProgress || disconnectBusy ? " disabled" : ""}>${disconnectIcon}<span>${disconnectBusy ? this.escapeHtml(messages.disconnecting) : this.escapeHtml(messages.disconnect)}</span></button>` : "";
21395
21631
  const nativeAsset = getNativeAsset(session.account.network);
21396
21632
  const notActivated = this.options.showBalance && this.activationStatus === "unfunded" ? `<div class="xwk-account-warning">${this.escapeHtml(messages.accountNotActivated(nativeAsset))}</div>` : "";
21397
- const balance = this.options.showBalance && this.balanceLoading ? `<div class="xwk-account-balance xwk-account-balance-loading">${this.balanceSpinnerIcon()}<span>${this.escapeHtml(messages.connecting)}</span></div>` : this.options.showBalance && this.activationStatus !== "unfunded" && ((_a2 = this.balance) == null ? void 0 : _a2.formatted) ? `<div class="xwk-account-balance">${this.escapeHtml(this.balance.formatted)}</div>` : "";
21398
- const metaRow = balance ? `<div class="xwk-account-meta-row">${balance}</div>` : "";
21633
+ const balance = this.options.showBalance && this.balanceLoading ? `<span class="xwk-pill-balance xwk-account-balance-loading" role="status" aria-label="${this.escapeHtml(messages.connecting)}"><span class="xwk-skeleton xwk-skeleton-balance"></span></span>` : this.options.showBalance && this.activationStatus !== "unfunded" && ((_a2 = this.balance) == null ? void 0 : _a2.formatted) ? `<span class="xwk-pill-balance">${this.escapeHtml(this.balance.formatted)}</span>` : "";
21399
21634
  const addressQrButton = this.renderAddressQrButton(address);
21635
+ const identityResolving = this.isIdentityResolving(session);
21400
21636
  const hasIdentity = this.shouldShowWeb3Name() && this.identityName;
21401
- const addressLabel = hasIdentity && address ? `<div class="xwk-account-address">${this.escapeHtml(this.formatAddress(address))}${addressQrButton}</div>` : "";
21637
+ const addressLabel = address ? `<span class="xwk-pill-address">${this.escapeHtml(this.formatAddress(address))}</span>` : "";
21638
+ const divider = addressLabel && balance ? `<span class="xwk-pill-divider" aria-hidden="true"></span>` : "";
21639
+ const metaPill = addressLabel || balance || addressQrButton ? `<div class="xwk-account-meta-pill">${addressLabel}${divider}${balance}${addressQrButton}</div>` : "";
21402
21640
  const actions = `<div class="xwk-account-panel-actions">${copy}${explorer}${disconnect}</div>`;
21403
- const accountName = !hasIdentity && addressQrButton && this.options.fallbackToAddress ? `<div class="xwk-account-name xwk-account-name-with-qr xwk-account-name-address"><span>${this.escapeHtml(label)}</span>${addressQrButton}</div>` : `<div class="xwk-account-name">${this.escapeHtml(label)}</div>`;
21641
+ const accountName = identityResolving ? `<div class="xwk-account-name xwk-account-name-skeleton" role="status" aria-label="${this.escapeHtml(messages.connecting)}"><span class="xwk-skeleton xwk-skeleton-name"></span></div>` : hasIdentity ? `<div class="xwk-account-name">${this.escapeHtml(label)}</div>` : "";
21404
21642
  const transactions2 = this.renderTransactionHistory(session);
21405
- return `<div class="xwk-account-hero">${this.renderAccountAvatar(session)}</div>${accountName}${addressLabel}${metaRow}${notActivated}${transactions2}${actions}`;
21643
+ return `<div class="xwk-account-hero">${this.renderAccountAvatar(session, identityResolving)}</div>${accountName}${metaPill}${notActivated}${transactions2}${actions}`;
21406
21644
  }
21407
21645
  renderAddressQrPanelContent(session) {
21408
21646
  const messages = this.messages();
@@ -21422,15 +21660,22 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21422
21660
  renderTransactionHistory(session) {
21423
21661
  if (!this.options.showRecentTransactions)
21424
21662
  return "";
21425
- const transactions2 = this.getVisibleTransactions(session);
21426
- if (!transactions2.length)
21663
+ const allTransactions = this.getVisibleTransactions(session);
21664
+ if (!allTransactions.length)
21427
21665
  return "";
21666
+ const transactions2 = allTransactions.slice(0, Math.min(3, allTransactions.length));
21667
+ const messages = this.messages();
21668
+ const count = allTransactions.length > 9 ? "9+" : String(allTransactions.length);
21669
+ const historyAction = allTransactions.length > transactions2.length ? `<button class="xwk-tx-header-link" type="button" data-xwk-tx-history>${this.escapeHtml(messages.view)}${this.chevronRightIcon()}</button>` : "";
21670
+ const list = `<div class="xwk-tx-list" role="list"><div class="xwk-tx-list-inner">${transactions2.map((transaction2) => this.renderTransactionRow(transaction2)).join("")}</div></div>`;
21671
+ return `<section class="xwk-tx-section" aria-label="${this.escapeHtml(messages.recentTransactions)}"><div class="xwk-tx-header"><span>${this.escapeHtml(messages.recentTransactions)}</span><span class="xwk-tx-count">${this.escapeHtml(count)}</span>${historyAction}</div>${list}</section>`;
21672
+ }
21673
+ renderTransactionHistoryPanelContent(session) {
21428
21674
  const messages = this.messages();
21429
- const count = transactions2.length > 9 ? "9+" : String(transactions2.length);
21430
- const chevronClass = this.txSectionOpen ? "open" : "closed";
21431
- const listClass = this.txSectionOpen ? "open" : "closed";
21432
- const list = `<div class="xwk-tx-list ${listClass}" role="list" aria-hidden="${this.txSectionOpen ? "false" : "true"}"><div class="xwk-tx-list-inner">${transactions2.map((transaction2) => this.renderTransactionRow(transaction2)).join("")}</div></div>`;
21433
- return `<section class="xwk-tx-section" aria-label="${this.escapeHtml(messages.recentTransactions)}"><button class="xwk-tx-header" type="button" data-xwk-tx-toggle aria-expanded="${this.txSectionOpen ? "true" : "false"}"><span>${this.escapeHtml(messages.recentTransactions)}</span><span class="xwk-tx-count">${this.escapeHtml(count)}</span><span class="xwk-tx-chevron ${chevronClass}" aria-hidden="true">${this.chevronUpIcon()}</span></button>${list}</section>`;
21675
+ const transactions2 = this.getVisibleTransactions(session, Math.max(10, this.options.maxVisibleTransactions));
21676
+ if (!transactions2.length)
21677
+ return `<div class="xwk-tx-empty">${this.escapeHtml(messages.noRecentTransactions)}</div>`;
21678
+ return `<section class="xwk-tx-history-view" aria-label="${this.escapeHtml(messages.recentTransactions)}"><div class="xwk-tx-list" role="list"><div class="xwk-tx-list-inner">${transactions2.map((transaction2) => this.renderTransactionRow(transaction2)).join("")}</div></div></section>`;
21434
21679
  }
21435
21680
  renderTransactionRow(transaction2) {
21436
21681
  const messages = this.messages();
@@ -21458,9 +21703,9 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21458
21703
  return this.questionIcon();
21459
21704
  return `<span class="xwk-tx-spinner" aria-hidden="true"></span>`;
21460
21705
  }
21461
- getVisibleTransactions(session) {
21706
+ getVisibleTransactions(session, limit = this.options.maxVisibleTransactions) {
21462
21707
  const address = this.getSessionAddress(session);
21463
- const max = Math.max(1, Math.floor(this.options.maxVisibleTransactions));
21708
+ const max = Math.max(1, Math.floor(limit));
21464
21709
  return this.getRecentTransactions(session).filter((transaction2) => {
21465
21710
  var _a2;
21466
21711
  return !address || !((_a2 = transaction2.account) == null ? void 0 : _a2.address) || transaction2.account.address === address;
@@ -21517,7 +21762,10 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21517
21762
  const address = this.getSessionAddress(session);
21518
21763
  return address ? (this.options.formatAddress ?? this.formatAddress)(address) : ((_b = session.wallet) == null ? void 0 : _b.name) ?? session.adapterId;
21519
21764
  }
21520
- renderAccountAvatar(session) {
21765
+ renderAccountAvatar(session, identityResolving = false) {
21766
+ if (identityResolving) {
21767
+ return `<div class="xwk-account-art xwk-account-avatar-skeleton" role="status" aria-label="${this.escapeHtml(this.messages().connecting)}"><span class="xwk-skeleton xwk-skeleton-circle"></span></div>`;
21768
+ }
21521
21769
  if (this.identityAvatar) {
21522
21770
  return `<img class="xwk-account-avatar" src="${this.escapeHtml(this.identityAvatar)}" alt="">`;
21523
21771
  }
@@ -21548,6 +21796,14 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21548
21796
  return address;
21549
21797
  return typeof (account == null ? void 0 : account.classicAddress) === "string" ? account.classicAddress : "";
21550
21798
  }
21799
+ isIdentityResolving(session) {
21800
+ if (!session || !this.shouldShowWeb3Name() || this.identityName)
21801
+ return false;
21802
+ const address = this.getSessionAddress(session);
21803
+ if (!address || !this.options.identityResolver)
21804
+ return false;
21805
+ return this.identityResolvingKey === this.identityCacheKey(session);
21806
+ }
21551
21807
  shouldShowWeb3Name() {
21552
21808
  return this.options.showWeb3Name ?? true;
21553
21809
  }
@@ -21563,6 +21819,20 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21563
21819
  const label = wallet.name.slice(0, 1).toUpperCase();
21564
21820
  return `<span class="xwk-button-icon xwk-button-icon-fallback xwk-button-icon-initial" aria-hidden="true">${this.escapeHtml(label)}</span>`;
21565
21821
  }
21822
+ renderPreConnectIcon() {
21823
+ const icon = this.options.icon;
21824
+ if (!icon || icon.type === "default")
21825
+ return this.renderWalletIcon(void 0);
21826
+ if (icon.type === "image") {
21827
+ const aria = icon.alt ? ` role="img" aria-label="${this.escapeHtml(icon.alt)}"` : ` aria-hidden="true"`;
21828
+ return `<span class="xwk-button-icon xwk-button-icon-custom xwk-button-icon-custom-image"${aria}><img src="${this.escapeHtml(icon.src)}" alt="" decoding="async"></span>`;
21829
+ }
21830
+ return this.renderCustomHtmlIcon(icon);
21831
+ }
21832
+ renderCustomHtmlIcon(icon) {
21833
+ const aria = icon.ariaLabel ? ` role="img" aria-label="${this.escapeHtml(icon.ariaLabel)}"` : ` aria-hidden="true"`;
21834
+ return `<span class="xwk-button-icon xwk-button-icon-custom xwk-button-icon-custom-html"${aria}>${icon.html}</span>`;
21835
+ }
21566
21836
  repairFallbackIcon(root) {
21567
21837
  root.querySelectorAll(".xwk-button-icon-svg-fallback").forEach((icon) => {
21568
21838
  if (icon.querySelector("svg"))
@@ -21665,7 +21935,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21665
21935
  let timer = 0;
21666
21936
  timer = window.setTimeout(() => {
21667
21937
  this.balanceRefreshTimers.delete(timer);
21668
- void this.resolveBalance(this.options.manager.getSession());
21938
+ this.queueBalanceRefresh(this.options.manager.getSession(), 0);
21669
21939
  }, delay2);
21670
21940
  this.balanceRefreshTimers.add(timer);
21671
21941
  });
@@ -21674,11 +21944,33 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21674
21944
  this.balanceRefreshTimers.forEach((timer) => window.clearTimeout(timer));
21675
21945
  this.balanceRefreshTimers.clear();
21676
21946
  }
21947
+ queueBalanceRefresh(session, delay2 = 300) {
21948
+ if (!this.options.showBalance || !this.options.balanceResolver)
21949
+ return;
21950
+ this.balanceDebounceSession = session;
21951
+ this.clearBalanceDebounce();
21952
+ if (typeof window === "undefined") {
21953
+ void this.resolveBalance(this.balanceDebounceSession);
21954
+ return;
21955
+ }
21956
+ this.balanceDebounceTimer = window.setTimeout(() => {
21957
+ this.balanceDebounceTimer = void 0;
21958
+ const nextSession = this.balanceDebounceSession;
21959
+ this.balanceDebounceSession = null;
21960
+ void this.resolveBalance(nextSession);
21961
+ }, delay2);
21962
+ }
21963
+ clearBalanceDebounce() {
21964
+ if (this.balanceDebounceTimer && typeof window !== "undefined") {
21965
+ window.clearTimeout(this.balanceDebounceTimer);
21966
+ }
21967
+ this.balanceDebounceTimer = void 0;
21968
+ }
21677
21969
  chevronIcon() {
21678
21970
  return `<svg width="14" height="14" viewBox="0 0 24 24" fill="none"><path d="m6 9 6 6 6-6" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg>`;
21679
21971
  }
21680
- chevronUpIcon() {
21681
- return `<svg width="14" height="14" viewBox="0 0 24 24" fill="none"><path d="m18 15-6-6-6 6" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg>`;
21972
+ chevronRightIcon() {
21973
+ return `<svg width="13" height="13" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="m9 6 6 6-6 6" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg>`;
21682
21974
  }
21683
21975
  checkIcon() {
21684
21976
  return `<svg width="15" height="15" viewBox="0 0 24 24" fill="none"><path d="m5 12.5 4.2 4.2L19 7" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg>`;
@@ -21709,7 +22001,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21709
22001
  }
21710
22002
  ensureStyles() {
21711
22003
  const styles2 = this.renderStyles();
21712
- ensureWalletStyle(getWalletStyleId("xwk-button", styles2), styles2);
22004
+ ensureWalletStyle("xwk-button", styles2);
21713
22005
  }
21714
22006
  renderStyles() {
21715
22007
  const theme = this.resolveTheme();
@@ -21724,7 +22016,11 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21724
22016
  const fallbackIconBackground = theme.fallbackIconBackground;
21725
22017
  const fallbackIconColor = theme.fallbackIconColor;
21726
22018
  const overlayBlur = theme.overlayBlur > 0 ? `blur(${theme.overlayBlur}px)` : "none";
21727
- return `.xwk-button-root{display:inline-block;max-width:100%;position:relative;font-family:${theme.fontFamily};font-size:14px}.xwk-account-button{align-items:center;background:${background};border:1px solid ${border};border-radius:${radius};box-shadow:none;box-sizing:border-box;color:${theme.foreground};cursor:pointer;display:inline-flex;gap:8px;font:inherit;font-weight:560;max-width:100%;min-height:${height};overflow:hidden;padding:0 12px 0 10px;touch-action:manipulation;transition:background-color .16s ease,border-color .16s ease;white-space:nowrap;-webkit-tap-highlight-color:transparent;transform:none}.xwk-account-button:hover{background:${hoverBackground};box-shadow:none;opacity:1;transform:none}.xwk-account-button:active{background:${hoverBackground};opacity:1;transform:none}.xwk-account-button:focus-visible,.xwk-button-chevron:focus-visible,.xwk-account-panel-actions button:focus-visible,.xwk-account-panel-actions a:focus-visible,.xwk-address-qr-trigger:focus-visible,.xwk-tx-header:focus-visible,.xwk-tx-link:focus-visible{outline:2px solid ${theme.accent};outline-offset:2px;text-decoration:none}.xwk-button-icon{background:${theme.background};border:1px solid ${iconBorder};border-radius:10px;box-sizing:border-box;display:inline-flex;flex:0 0 28px;height:28px;isolation:isolate;line-height:0;max-width:28px;min-width:28px;object-fit:contain;overflow:hidden;position:relative;width:28px}.xwk-button-icon-fallback{align-items:center;background:${fallbackIconBackground};color:${fallbackIconColor};justify-content:center}.xwk-button-icon-initial{font-size:12px;line-height:1}.xwk-button-icon-svg-fallback{font-size:0}.xwk-button-icon-svg-fallback svg{display:block;flex:0 0 17px;height:17px;max-height:17px;max-width:17px;min-height:17px;min-width:17px;width:17px}.xwk-button-pending-dot{background:${theme.accent};border:2px solid ${background};border-radius:999px;box-sizing:border-box;flex:0 0 9px;height:9px;margin-left:-13px;margin-right:4px;position:relative;width:9px;z-index:1}.xwk-button-label{display:inline-block;flex:1 1 0;font-size:13px;font-weight:560;line-height:1.1;max-width:220px;min-width:0;overflow:hidden;padding-right:2px;text-overflow:ellipsis;white-space:nowrap}.xwk-button-balance{color:${theme.muted};font-weight:500;margin-left:4px}.xwk-button-balance-loading{display:inline-flex;vertical-align:-2px}.xwk-balance-spinner{animation:xwk-action-spin .8s linear infinite;border:2px solid ${theme.spinnerTrail};border-top-color:${theme.muted};border-radius:999px;box-sizing:border-box;display:inline-block;flex:0 0 13px;height:13px;width:13px}.xwk-button-chevron{align-items:center;background:${theme.background};border:1px solid ${iconBorder};border-radius:999px;color:${theme.muted};display:inline-flex;flex:0 0 26px;height:26px;justify-content:center;line-height:1;touch-action:manipulation;width:26px}.xwk-button-chevron:hover{background:${theme.surfaceHover};color:${theme.foreground}}.xwk-account-overlay{align-items:center;background:${theme.overlay};-webkit-backdrop-filter:${overlayBlur};backdrop-filter:${overlayBlur};display:flex;inset:0;justify-content:center;overscroll-behavior:contain;padding:max(24px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left));position:fixed;z-index:2147483647}.xwk-account-portal[data-xwk-entering="true"] .xwk-account-overlay{animation:xwk-account-overlay-in .18s ease-out}.xwk-account-panel{background:${theme.background};border:1px solid ${theme.border};border-radius:${theme.radius};box-shadow:${theme.shadow};box-sizing:border-box;color:${theme.foreground};display:grid;gap:12px;overflow:hidden;z-index:2147483647}.xwk-account-panel:focus{outline:none}.xwk-account-panel-dropdown{box-shadow:none;justify-items:center;margin-top:10px;min-width:320px;padding:18px;position:absolute;right:0;top:100%;width:min(360px,calc(100vw - 32px))}.xwk-account-dropdown-header{align-items:center;display:grid;grid-template-columns:44px minmax(0,1fr) 44px;margin:-4px 0 0;width:100%}.xwk-account-dropdown-header strong{font-size:14px;font-weight:600;line-height:1.2;min-width:0;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.xwk-account-panel-modal{gap:0;grid-template-rows:auto minmax(0,1fr);height:min(527px,calc(100dvh - 48px - env(safe-area-inset-top) - env(safe-area-inset-bottom)));max-width:520px;position:relative;transform-origin:center bottom;width:min(520px,100%)}.xwk-account-panel-modal.xwk-account-panel-with-transactions{height:min(650px,calc(100dvh - 48px - env(safe-area-inset-top) - env(safe-area-inset-bottom)))}.xwk-account-portal[data-xwk-entering="true"] .xwk-account-panel-modal{animation:xwk-account-panel-in .22s cubic-bezier(.22,1,.36,1)}.xwk-account-modal-header{align-items:center;background:${theme.headerBackground};border-bottom:1px solid ${theme.border};display:grid;grid-template-columns:44px minmax(0,1fr) 44px;column-gap:8px;padding:8px 18px}.xwk-account-modal-header h2{color:${theme.foreground};font-size:16px;font-weight:500;line-height:1.2;margin:0;min-width:0;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.xwk-account-modal-body{-webkit-overflow-scrolling:touch;align-items:center;display:flex;flex-direction:column;gap:12px;min-height:0;overflow:hidden;overscroll-behavior:contain;padding:22px 28px 28px}.xwk-account-panel-with-transactions .xwk-account-modal-body{overflow:auto;padding-top:14px}.xwk-account-modal-body>.xwk-account-hero,.xwk-account-modal-body>.xwk-account-name,.xwk-account-modal-body>.xwk-account-address,.xwk-account-modal-body>.xwk-account-meta-row,.xwk-account-modal-body>.xwk-account-warning,.xwk-account-modal-body>.xwk-tx-section,.xwk-account-modal-body>.xwk-account-panel-actions{flex-shrink:0}.xwk-account-close,.xwk-account-back{-webkit-appearance:none;-webkit-tap-highlight-color:transparent;align-items:center;appearance:none;background:transparent!important;border:0!important;border-radius:999px;box-shadow:none!important;color:${theme.muted};cursor:pointer;display:inline-flex;font:inherit;font-size:26px;font-weight:500;height:44px;justify-content:center;line-height:1;margin:0;min-height:0;outline:none!important;padding:0;touch-action:manipulation;transform:none;width:44px}.xwk-account-back{font-size:0;justify-self:start}.xwk-account-close{justify-self:end}.xwk-account-close:hover,.xwk-account-back:hover{background:${theme.surfaceHover}!important;box-shadow:none!important;color:${theme.foreground};transform:none}.xwk-account-close:focus-visible,.xwk-account-back:focus-visible{outline:2px solid ${theme.accent}!important;outline-offset:0}.xwk-account-hero{height:154px;margin-top:4px;position:relative;width:180px}.xwk-account-panel-with-transactions .xwk-account-hero{height:126px;margin-bottom:0}.xwk-account-panel-with-transactions .xwk-account-art,.xwk-account-panel-with-transactions .xwk-account-avatar{top:0}.xwk-account-panel-dropdown .xwk-account-hero{height:132px;width:160px}.xwk-account-art,.xwk-account-avatar{border-radius:999px;height:118px;left:31px;position:absolute;top:8px;width:118px}.xwk-account-panel-dropdown .xwk-account-art,.xwk-account-panel-dropdown .xwk-account-avatar{height:104px;left:28px;width:104px}.xwk-account-art{align-items:center;background:radial-gradient(circle at 58% 38%,var(--xwk-avatar-spot),transparent 0 22%,transparent 23%),linear-gradient(160deg,var(--xwk-avatar-from),var(--xwk-avatar-to));display:flex;justify-content:center}.xwk-account-art span{background:rgba(255,255,255,.18);border-radius:999px;height:50px;width:50px}.xwk-account-panel-dropdown .xwk-account-art span{height:42px;width:42px}.xwk-account-avatar{background:${theme.surface};border:1px solid ${iconBorder};box-sizing:border-box;display:block;object-fit:cover;overflow:hidden}.xwk-account-panel-with-transactions .xwk-account-name{position:relative;z-index:1}.xwk-account-name{color:${theme.foreground};font-size:21px;font-weight:650;line-height:1.2;max-width:100%;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.xwk-account-panel-dropdown .xwk-account-name{font-size:18px}.xwk-account-name-with-qr,.xwk-account-address{align-items:center;display:inline-flex;gap:6px;justify-content:center}.xwk-account-name-with-qr span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.xwk-account-name-address{background:${theme.surface};border:1px solid ${theme.border};border-radius:14px;color:${theme.muted};font-size:16px;font-weight:600;line-height:1.2;max-width:min(260px,100%);padding:7px 6px 7px 14px}.xwk-account-address{background:${theme.surface};border:1px solid ${theme.border};border-radius:12px;color:${theme.muted};font-size:14px;font-weight:520;line-height:1.25;max-width:100%;overflow:hidden;padding:8px 8px 8px 12px;text-align:center;text-overflow:ellipsis;white-space:nowrap}.xwk-address-qr-trigger{-webkit-appearance:none;-webkit-tap-highlight-color:transparent;align-items:center;appearance:none;background:transparent;border:0;border-radius:10px;box-shadow:none;color:currentColor;cursor:pointer;display:inline-flex;flex:0 0 40px;height:40px;justify-content:center;margin:-7px -6px -7px 0;min-height:40px;outline:none;overflow:visible;padding:0;touch-action:manipulation;transform:none;width:40px}.xwk-address-qr-trigger svg{display:block;height:17px;overflow:visible;width:17px}.xwk-address-qr-trigger:hover{background:${theme.surfaceHover};box-shadow:none;transform:none}.xwk-account-meta-row{align-items:center;display:flex;gap:8px;justify-content:center;max-width:100%;min-height:42px}.xwk-account-balance{align-items:center;background:${theme.surface};border:1px solid ${actionBorder};border-radius:999px;box-sizing:border-box;color:${theme.muted};display:inline-flex;font-size:13px;font-weight:560;height:42px;justify-content:center;letter-spacing:0;line-height:1;padding:0 14px;text-align:center}.xwk-account-balance-loading{align-items:center;display:inline-flex;gap:6px}.xwk-account-warning{align-items:center;background:${theme.surface};border:1px solid ${actionBorder};border-radius:12px;box-sizing:border-box;color:${theme.muted};display:flex;font-size:13px;font-weight:520;justify-content:center;line-height:1.25;min-height:54px;padding:0 14px;text-align:center;width:100%}.xwk-address-qr-content{align-content:center;display:grid;gap:14px;justify-items:center;min-height:100%;width:100%}.xwk-address-qr-code{aspect-ratio:1/1;background:${theme.surface};border:1px solid ${theme.border};border-radius:14px;box-sizing:border-box;display:grid;max-width:304px;padding:12px;place-items:center;width:min(304px,100%)}.xwk-address-qr-code svg,.xwk-address-qr-code canvas,.xwk-address-qr-code img{aspect-ratio:1/1;display:block;height:auto;max-width:100%;width:100%}.xwk-address-qr-chip{background:${theme.surface};border:1px solid ${theme.border};border-radius:12px;box-sizing:border-box;color:${theme.muted};font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;font-weight:520;line-height:1.45;max-width:100%;overflow-wrap:anywhere;padding:9px 11px;text-align:center;width:100%}.xwk-address-qr-fallback{color:${theme.muted};font-size:12px;line-height:1.45;overflow-wrap:anywhere}.xwk-tx-section{background:${theme.surface};border:1px solid ${actionBorder};border-radius:${theme.walletRadius};box-sizing:border-box;display:grid;overflow:hidden;width:100%}.xwk-tx-header{-webkit-appearance:none;-webkit-tap-highlight-color:transparent;align-items:center;appearance:none;background:${theme.surface}!important;border:0!important;box-shadow:none!important;color:${theme.muted};cursor:pointer;display:flex;font:inherit;font-size:10px;font-weight:650;gap:6px;letter-spacing:.07em;line-height:1.2;margin:0;min-height:34px;outline:none;padding:0 12px;text-align:left;text-transform:uppercase;touch-action:manipulation;transform:none;transition:background-color .16s ease,color .16s ease;width:100%}.xwk-tx-header:hover,.xwk-tx-header:active{background:${theme.surfaceHover}!important;border:0!important;box-shadow:none!important;color:${theme.foreground};opacity:1;text-decoration:none;transform:none}.xwk-tx-count{align-items:center;background:${theme.background};border:1px solid ${actionBorder};border-radius:999px;box-sizing:border-box;color:${theme.muted};display:inline-flex;font-size:10px;font-weight:650;height:16px;justify-content:center;letter-spacing:0;line-height:1;min-width:18px;padding:0 5px;text-transform:none}.xwk-tx-chevron{align-items:center;color:${theme.muted};display:inline-flex;flex:0 0 16px;height:16px;justify-content:center;margin-left:auto;transition:transform .18s ease;width:16px}.xwk-tx-chevron.closed{transform:rotate(-90deg)}.xwk-tx-chevron svg{display:block;height:12px;width:12px}.xwk-tx-list{display:grid;grid-template-rows:1fr;overflow:hidden;transition:grid-template-rows .18s ease}.xwk-tx-list.closed{grid-template-rows:0fr}.xwk-tx-list-inner{min-height:0;overflow:hidden}.xwk-tx-row{align-items:center;background:${theme.surface};border-top:1px solid ${actionBorder};box-sizing:border-box;display:grid;gap:8px;grid-template-columns:24px minmax(0,1fr) auto;min-height:42px;padding:7px 10px;transition:background-color .16s ease}.xwk-tx-row:hover{background:${theme.surface};box-shadow:none;transform:none}.xwk-tx-row:first-child{border-top:0}.xwk-tx-status{align-items:center;background:${theme.background};border-radius:999px;color:${theme.accent};display:inline-flex;height:24px;justify-content:center;width:24px}.xwk-tx-row-confirmed .xwk-tx-status{color:${theme.success}}.xwk-tx-row-failed .xwk-tx-status{color:${theme.error}}.xwk-tx-row-unknown .xwk-tx-status{color:${theme.muted}}.xwk-tx-main{display:grid;gap:2px;min-width:0}.xwk-tx-label{color:${theme.foreground};font-size:12px;font-weight:600;line-height:1.15;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.xwk-tx-hash{color:${theme.muted};font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.15;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.xwk-tx-link{align-items:center;border-radius:9px;color:${theme.accent};display:inline-flex;font:inherit;font-size:12px;font-weight:650;gap:3px;line-height:1.2;min-height:28px;padding:0 6px;text-decoration:none}.xwk-tx-link:hover{background:${theme.surfaceHover};box-shadow:none;text-decoration:none;transform:none}.xwk-tx-link svg{height:12px;width:12px}.xwk-tx-empty{background:${theme.surface};border:1px solid ${actionBorder};border-radius:${theme.walletRadius};box-sizing:border-box;color:${theme.muted};font-size:13px;line-height:1.35;padding:14px;text-align:center;width:100%}.xwk-tx-spinner{animation:xwk-action-spin .8s linear infinite;border:2px solid ${theme.spinnerTrail};border-top-color:${theme.accent};border-radius:999px;box-sizing:border-box;display:block;height:14px;width:14px}.xwk-account-panel-actions{display:grid;gap:10px;grid-template-columns:1fr;width:100%}.xwk-account-modal-body .xwk-account-panel-actions{margin-top:auto}.xwk-account-panel-with-transactions .xwk-account-modal-body .xwk-account-panel-actions{margin-top:0}.xwk-account-panel-actions button,.xwk-account-panel-actions a{-webkit-appearance:none;-webkit-tap-highlight-color:transparent;align-items:center;appearance:none;background:${theme.surface};border:1px solid ${actionBorder};border-radius:${theme.walletRadius};box-shadow:none;box-sizing:border-box;color:${theme.foreground};cursor:pointer;display:flex;font:inherit;font-size:14px;font-weight:560;gap:8px;justify-content:center;line-height:1.2;min-height:46px;min-width:0;outline:none;overflow:hidden;padding:0 12px;text-decoration:none;touch-action:manipulation;transform:none;transition:background-color .16s ease,border-color .16s ease;width:100%}.xwk-account-panel-actions button:disabled{cursor:wait;opacity:1}.xwk-account-panel-actions svg{flex:0 0 auto;opacity:.58}.xwk-account-panel-actions span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.xwk-account-panel-actions button:hover,.xwk-account-panel-actions a:hover{background:${theme.surfaceHover};border-color:${actionBorder};box-shadow:none;text-decoration:none;transform:none}.xwk-account-panel-actions button:active,.xwk-account-panel-actions a:active{background:${theme.surfaceHover};opacity:1;text-decoration:none;transform:none}.xwk-copied-icon{color:${theme.success};opacity:1!important}.xwk-action-spinner{animation:xwk-action-spin .8s linear infinite;border:2px solid ${theme.spinnerTrail};border-top-color:${theme.muted};border-radius:999px;box-sizing:border-box;display:inline-block;height:17px;width:17px}@keyframes xwk-action-spin{to{transform:rotate(360deg)}}@keyframes xwk-account-overlay-in{from{opacity:0}to{opacity:1}}@keyframes xwk-account-panel-in{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media(prefers-reduced-motion:reduce){.xwk-account-button,.xwk-tx-list,.xwk-tx-chevron,.xwk-account-panel-actions button,.xwk-account-panel-actions a{transition:none}.xwk-account-portal[data-xwk-entering="true"] .xwk-account-overlay,.xwk-account-portal[data-xwk-entering="true"] .xwk-account-panel-modal{animation-duration:1ms!important}.xwk-action-spinner,.xwk-balance-spinner,.xwk-tx-spinner{animation:none}}@media(max-width:520px){.xwk-account-panel-dropdown{bottom:0;left:0;margin-top:0;min-width:0;position:fixed;right:0;top:auto;width:100vw}.xwk-account-overlay{align-items:flex-end;padding:max(12px,env(safe-area-inset-top)) 0 0}.xwk-account-panel-modal{align-self:flex-end;border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0;border-left:0;border-right:0;border-top-left-radius:${theme.radius};border-top-right-radius:${theme.radius};height:min(527px,calc(100dvh - env(safe-area-inset-top)));max-width:none;width:100vw}.xwk-account-panel-modal.xwk-account-panel-with-transactions{height:min(650px,calc(100dvh - env(safe-area-inset-top)))}.xwk-account-portal[data-xwk-entering="true"] .xwk-account-panel-modal{animation:xwk-account-sheet-in .28s cubic-bezier(.32,.72,0,1)}.xwk-account-modal-header{border-top-left-radius:${theme.radius};border-top-right-radius:${theme.radius};grid-template-columns:44px minmax(0,1fr) 44px;padding:10px 16px}.xwk-account-modal-body{min-height:0;padding:18px 20px max(22px,calc(22px + env(safe-area-inset-bottom)))}.xwk-button-label{max-width:min(150px,calc(100vw - 140px))}}@keyframes xwk-account-sheet-in{from{opacity:1;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}`;
22019
+ const baseStyles = `.xwk-button-root{display:inline-block;max-width:100%;position:relative;font-family:${theme.fontFamily};font-size:14px}.xwk-account-button{align-items:center;background:${background};border:1px solid ${border};border-radius:${radius};box-shadow:none;box-sizing:border-box;color:${theme.foreground};cursor:pointer;display:inline-flex;gap:8px;font:inherit;font-weight:560;max-width:100%;min-height:${height};overflow:hidden;padding:0 12px 0 10px;touch-action:manipulation;transition:background-color .16s ease,border-color .16s ease;white-space:nowrap;-webkit-tap-highlight-color:transparent;transform:none}.xwk-account-button:hover{background:${hoverBackground};box-shadow:none;opacity:1;transform:none}.xwk-account-button:active{background:${hoverBackground};opacity:1;transform:none}.xwk-account-button:focus-visible,.xwk-button-chevron:focus-visible,.xwk-account-panel-actions button:focus-visible,.xwk-account-panel-actions a:focus-visible,.xwk-address-qr-trigger:focus-visible,.xwk-tx-header-link:focus-visible,.xwk-tx-link:focus-visible{outline:2px solid ${theme.accent};outline-offset:2px;text-decoration:none}.xwk-button-icon{background:${theme.background};border:1px solid ${iconBorder};border-radius:10px;box-sizing:border-box;display:inline-flex;flex:0 0 28px;height:28px;isolation:isolate;line-height:0;max-width:28px;min-width:28px;object-fit:contain;overflow:hidden;position:relative;width:28px}.xwk-button-icon-fallback{align-items:center;background:${fallbackIconBackground};color:${fallbackIconColor};justify-content:center}.xwk-button-icon-initial{font-size:12px;line-height:1}.xwk-button-icon-svg-fallback{font-size:0}.xwk-button-icon-svg-fallback svg{display:block;flex:0 0 17px;height:17px;max-height:17px;max-width:17px;min-height:17px;min-width:17px;width:17px}.xwk-button-icon-custom{align-items:center;justify-content:center}.xwk-button-icon-custom img,.xwk-button-icon-custom svg{display:block;max-height:18px;max-width:18px}.xwk-button-icon-custom img{height:18px;object-fit:contain;width:18px}.xwk-button-icon-custom-html>*{max-height:18px;max-width:18px}.xwk-skeleton{animation:xwk-skeleton-pulse 1.4s ease-in-out infinite;background:linear-gradient(90deg,${theme.surface} 25%,${theme.surfaceHover} 50%,${theme.surface} 75%);background-size:200% 100%;border-radius:999px;display:inline-block}.xwk-skeleton-button-balance{height:12px;width:44px}.xwk-skeleton-balance{height:14px;width:70px}.xwk-skeleton-name{height:24px;width:132px}.xwk-account-name-skeleton{align-items:center;display:flex;justify-content:center;min-height:26px}.xwk-button-pending-dot{background:${theme.accent};border:2px solid ${background};border-radius:999px;box-sizing:border-box;flex:0 0 9px;height:9px;margin-left:-13px;margin-right:4px;position:relative;width:9px;z-index:1}.xwk-button-label{display:inline-block;flex:1 1 0;font-size:13px;font-weight:560;line-height:1.1;max-width:220px;min-width:0;overflow:hidden;padding-right:2px;text-overflow:ellipsis;white-space:nowrap}.xwk-button-balance{color:${theme.muted};font-weight:500;margin-left:4px}.xwk-button-balance-loading{display:inline-flex;vertical-align:-2px}.xwk-balance-spinner{animation:xwk-action-spin .8s linear infinite;border:2px solid ${theme.spinnerTrail};border-top-color:${theme.muted};border-radius:999px;box-sizing:border-box;display:inline-block;flex:0 0 13px;height:13px;width:13px}.xwk-button-chevron{align-items:center;background:${theme.background};border:1px solid ${iconBorder};border-radius:999px;color:${theme.muted};display:inline-flex;flex:0 0 26px;height:26px;justify-content:center;line-height:1;touch-action:manipulation;width:26px}.xwk-button-chevron:hover{background:${theme.surfaceHover};color:${theme.foreground}}.xwk-account-overlay{align-items:center;background:${theme.overlay};-webkit-backdrop-filter:${overlayBlur};backdrop-filter:${overlayBlur};display:flex;inset:0;justify-content:center;overscroll-behavior:contain;padding:max(24px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left));position:fixed;z-index:2147483647}.xwk-account-portal[data-xwk-entering="true"] .xwk-account-overlay{animation:xwk-account-overlay-in .18s ease-out}.xwk-account-panel{background:${theme.background};border:1px solid ${theme.border};border-radius:${theme.radius};box-shadow:${theme.shadow};box-sizing:border-box;color:${theme.foreground};display:grid;gap:12px;overflow:hidden;z-index:2147483647}.xwk-account-panel:focus{outline:none}.xwk-account-panel-dropdown{box-shadow:none;justify-items:center;margin-top:10px;min-width:320px;padding:18px;position:absolute;right:0;top:100%;width:min(360px,calc(100vw - 32px))}.xwk-account-dropdown-header{align-items:center;display:grid;grid-template-columns:44px minmax(0,1fr) 44px;margin:-4px 0 0;width:100%}.xwk-account-dropdown-header strong{font-size:14px;font-weight:600;line-height:1.2;min-width:0;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.xwk-account-panel-modal{gap:0;grid-template-rows:auto minmax(0,1fr);height:min(527px,calc(100dvh - 48px - env(safe-area-inset-top) - env(safe-area-inset-bottom)));max-width:520px;position:relative;transform-origin:center bottom;width:min(520px,100%)}.xwk-account-panel-modal.xwk-account-panel-with-transactions,.xwk-account-panel-modal.xwk-account-panel-history{height:min(650px,calc(100dvh - 48px - env(safe-area-inset-top) - env(safe-area-inset-bottom)))}.xwk-account-portal[data-xwk-entering="true"] .xwk-account-panel-modal{animation:xwk-account-panel-in .22s cubic-bezier(.22,1,.36,1)}.xwk-account-modal-header{align-items:center;background:${theme.headerBackground};border-bottom:1px solid ${theme.border};display:grid;grid-template-columns:44px minmax(0,1fr) 44px;column-gap:8px;padding:8px 18px}.xwk-account-modal-header h2{color:${theme.foreground};font-size:16px;font-weight:500;line-height:1.2;margin:0;min-width:0;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.xwk-account-modal-body{-webkit-overflow-scrolling:touch;align-items:center;display:flex;flex-direction:column;gap:12px;min-height:0;overflow:hidden;overscroll-behavior:contain;padding:22px 28px 28px}.xwk-account-panel-with-transactions .xwk-account-modal-body,.xwk-account-panel-history .xwk-account-modal-body{overflow:auto;padding-top:14px}.xwk-account-modal-body>.xwk-account-hero,.xwk-account-modal-body>.xwk-account-name,.xwk-account-modal-body>.xwk-account-meta-pill,.xwk-account-modal-body>.xwk-account-warning,.xwk-account-modal-body>.xwk-tx-section,.xwk-account-modal-body>.xwk-tx-history-view,.xwk-account-modal-body>.xwk-account-panel-actions{flex-shrink:0}.xwk-account-close,.xwk-account-back{-webkit-appearance:none;-webkit-tap-highlight-color:transparent;align-items:center;appearance:none;background:transparent!important;border:0!important;border-radius:999px;box-shadow:none!important;color:${theme.muted};cursor:pointer;display:inline-flex;font:inherit;font-size:26px;font-weight:500;height:44px;justify-content:center;line-height:1;margin:0;min-height:0;outline:none!important;padding:0;touch-action:manipulation;transform:none;width:44px}.xwk-account-back{font-size:0;justify-self:start}.xwk-account-close{justify-self:end}.xwk-account-close:hover,.xwk-account-back:hover{background:${theme.surfaceHover}!important;box-shadow:none!important;color:${theme.foreground};transform:none}.xwk-account-close:focus-visible,.xwk-account-back:focus-visible{outline:2px solid ${theme.accent}!important;outline-offset:0}.xwk-account-hero{height:154px;margin-top:4px;position:relative;width:180px}.xwk-account-panel-with-transactions .xwk-account-hero{height:126px;margin-bottom:0}.xwk-account-panel-with-transactions .xwk-account-art,.xwk-account-panel-with-transactions .xwk-account-avatar{top:0}.xwk-account-panel-dropdown .xwk-account-hero{height:132px;width:160px}.xwk-account-art,.xwk-account-avatar{border-radius:999px;height:118px;left:31px;position:absolute;top:8px;width:118px}.xwk-account-panel-dropdown .xwk-account-art,.xwk-account-panel-dropdown .xwk-account-avatar{height:104px;left:28px;width:104px}.xwk-account-art{align-items:center;background:radial-gradient(circle at 58% 38%,var(--xwk-avatar-spot),transparent 0 22%,transparent 23%),linear-gradient(160deg,var(--xwk-avatar-from),var(--xwk-avatar-to));display:flex;justify-content:center}.xwk-account-art span{background:rgba(255,255,255,.18);border-radius:999px;height:50px;width:50px}.xwk-account-panel-dropdown .xwk-account-art span{height:42px;width:42px}.xwk-account-avatar{background:${theme.surface};border:1px solid ${iconBorder};box-sizing:border-box;display:block;object-fit:cover;overflow:hidden}.xwk-account-panel-with-transactions .xwk-account-name{position:relative;z-index:1}.xwk-account-name{color:${theme.foreground};font-size:21px;font-weight:650;line-height:1.2;max-width:100%;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.xwk-account-panel-dropdown .xwk-account-name{font-size:18px}.xwk-account-meta-pill{align-items:center;background:${theme.surface};border:1px solid ${actionBorder};border-radius:14px;box-sizing:border-box;color:${theme.muted};display:inline-flex;font-size:13px;font-weight:560;gap:8px;justify-content:center;line-height:1.2;max-width:100%;min-height:44px;overflow:hidden;padding:2px 4px 2px 12px}.xwk-pill-address{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.xwk-pill-divider{background:${actionBorder};display:inline-block;flex:0 0 1px;height:18px;opacity:.8}.xwk-pill-balance{color:${theme.foreground};white-space:nowrap}.xwk-account-name-with-qr,.xwk-account-address{align-items:center;display:inline-flex;gap:6px;justify-content:center}.xwk-account-name-with-qr span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.xwk-account-name-address{background:${theme.surface};border:1px solid ${theme.border};border-radius:14px;color:${theme.muted};font-size:16px;font-weight:600;line-height:1.2;max-width:min(260px,100%);padding:7px 6px 7px 14px}.xwk-account-address{background:${theme.surface};border:1px solid ${theme.border};border-radius:12px;color:${theme.muted};font-size:14px;font-weight:520;line-height:1.25;max-width:100%;overflow:hidden;padding:8px 8px 8px 12px;text-align:center;text-overflow:ellipsis;white-space:nowrap}.xwk-address-qr-trigger{-webkit-appearance:none;-webkit-tap-highlight-color:transparent;align-items:center;appearance:none;background:transparent;border:0;border-radius:10px;box-shadow:none;color:currentColor;cursor:pointer;display:inline-flex;flex:0 0 40px;height:40px;justify-content:center;margin:0 -2px 0 0;min-height:40px;outline:none;overflow:visible;padding:0;touch-action:manipulation;transform:none;width:40px}.xwk-address-qr-trigger svg{display:block;height:17px;overflow:visible;width:17px}.xwk-address-qr-trigger:hover{background:${theme.surfaceHover};box-shadow:none;transform:none}.xwk-account-meta-row{align-items:center;display:flex;gap:8px;justify-content:center;max-width:100%;min-height:42px}.xwk-account-balance{align-items:center;background:${theme.surface};border:1px solid ${actionBorder};border-radius:999px;box-sizing:border-box;color:${theme.muted};display:inline-flex;font-size:13px;font-weight:560;height:42px;justify-content:center;letter-spacing:0;line-height:1;padding:0 14px;text-align:center}.xwk-account-balance-loading{align-items:center;display:inline-flex;gap:6px}.xwk-account-warning{align-items:center;background:${theme.surface};border:1px solid ${actionBorder};border-radius:12px;box-sizing:border-box;color:${theme.muted};display:flex;font-size:13px;font-weight:520;justify-content:center;line-height:1.25;min-height:54px;padding:0 14px;text-align:center;width:100%}.xwk-address-qr-content{align-content:center;display:grid;gap:14px;justify-items:center;min-height:100%;width:100%}.xwk-address-qr-code{aspect-ratio:1/1;background:${theme.surface};border:1px solid ${theme.border};border-radius:14px;box-sizing:border-box;display:grid;max-width:304px;padding:12px;place-items:center;width:min(304px,100%)}.xwk-address-qr-code svg,.xwk-address-qr-code canvas,.xwk-address-qr-code img{aspect-ratio:1/1;display:block;height:auto;max-width:100%;width:100%}.xwk-address-qr-chip{background:${theme.surface};border:1px solid ${theme.border};border-radius:12px;box-sizing:border-box;color:${theme.muted};font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;font-weight:520;line-height:1.45;max-width:100%;overflow-wrap:anywhere;padding:9px 11px;text-align:center;width:100%}.xwk-address-qr-fallback{color:${theme.muted};font-size:12px;line-height:1.45;overflow-wrap:anywhere}.xwk-tx-section{background:${theme.surface};border:1px solid ${actionBorder};border-radius:${theme.walletRadius};box-sizing:border-box;display:grid;overflow:hidden;width:100%}.xwk-tx-header{-webkit-tap-highlight-color:transparent;align-items:center;background:${theme.surface};border:0;box-shadow:none;color:${theme.muted};display:flex;font:inherit;font-size:10px;font-weight:650;gap:6px;letter-spacing:.07em;line-height:1.2;margin:0;min-height:34px;outline:none;padding:0 12px;text-align:left;text-transform:uppercase;transform:none;width:100%}.xwk-tx-header-link{-webkit-appearance:none;-webkit-tap-highlight-color:transparent;align-items:center;appearance:none;background:transparent;border:0;border-radius:9px;box-shadow:none;color:${theme.accent};cursor:pointer;display:inline-flex;font:inherit;font-size:11px;font-weight:650;gap:2px;line-height:1;margin-left:auto;min-height:28px;padding:0 6px;text-decoration:none;text-transform:none;touch-action:manipulation;transform:none}.xwk-tx-header-link:hover,.xwk-tx-header-link:active{background:${theme.surfaceHover};box-shadow:none;color:${theme.accent};opacity:1;text-decoration:none;transform:none}.xwk-tx-header-link svg{display:block;height:13px;width:13px}.xwk-tx-count{align-items:center;background:${theme.background};border:1px solid ${actionBorder};border-radius:999px;box-sizing:border-box;color:${theme.muted};display:inline-flex;font-size:10px;font-weight:650;height:16px;justify-content:center;letter-spacing:0;line-height:1;min-width:18px;padding:0 5px;text-transform:none}.xwk-tx-list{display:grid;overflow:hidden}.xwk-tx-list-inner{min-height:0;overflow:hidden}.xwk-tx-history-view{background:${theme.surface};border:1px solid ${actionBorder};border-radius:${theme.walletRadius};box-sizing:border-box;display:grid;overflow:hidden;width:100%}.xwk-tx-history-view .xwk-tx-list-inner{max-height:468px;overflow:auto}.xwk-tx-row{align-items:center;background:${theme.surface};border-top:1px solid ${actionBorder};box-sizing:border-box;display:grid;gap:8px;grid-template-columns:24px minmax(0,1fr) auto;min-height:42px;padding:7px 10px;transition:background-color .16s ease}.xwk-tx-row:hover{background:${theme.surface};box-shadow:none;transform:none}.xwk-tx-row:first-child{border-top:0}.xwk-tx-status{align-items:center;background:${theme.background};border-radius:999px;color:${theme.accent};display:inline-flex;height:24px;justify-content:center;position:relative;width:24px}.xwk-tx-row-submitted .xwk-tx-status:before{animation:xwk-pulse-ring 1.4s ease-out infinite;border:1px solid currentColor;border-radius:999px;content:"";inset:2px;opacity:.42;position:absolute}.xwk-tx-row-confirmed .xwk-tx-status{color:${theme.success}}.xwk-tx-row-failed .xwk-tx-status{color:${theme.error}}.xwk-tx-row-unknown .xwk-tx-status{color:${theme.muted}}.xwk-tx-main{display:grid;gap:2px;min-width:0}.xwk-tx-label{color:${theme.foreground};font-size:12px;font-weight:600;line-height:1.15;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.xwk-tx-hash{color:${theme.muted};font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.15;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.xwk-tx-link{align-items:center;border-radius:9px;color:${theme.accent};display:inline-flex;font:inherit;font-size:12px;font-weight:650;gap:3px;line-height:1.2;min-height:28px;padding:0 6px;text-decoration:none}.xwk-tx-link:hover{background:${theme.surfaceHover};box-shadow:none;text-decoration:none;transform:none}.xwk-tx-link svg{height:12px;width:12px}.xwk-tx-empty{background:${theme.surface};border:1px solid ${actionBorder};border-radius:${theme.walletRadius};box-sizing:border-box;color:${theme.muted};font-size:13px;line-height:1.35;padding:14px;text-align:center;width:100%}.xwk-tx-spinner{animation:xwk-action-spin .8s linear infinite;border:2px solid ${theme.spinnerTrail};border-top-color:${theme.accent};border-radius:999px;box-sizing:border-box;display:block;height:14px;width:14px}.xwk-account-panel-actions{display:grid;gap:10px;grid-template-columns:1fr;width:100%}.xwk-account-modal-body .xwk-account-panel-actions{margin-top:auto}.xwk-account-panel-with-transactions .xwk-account-modal-body .xwk-account-panel-actions{margin-top:0}.xwk-account-panel-actions button,.xwk-account-panel-actions a{-webkit-appearance:none;-webkit-tap-highlight-color:transparent;align-items:center;appearance:none;background:${theme.surface};border:1px solid ${actionBorder};border-radius:${theme.walletRadius};box-shadow:none;box-sizing:border-box;color:${theme.foreground};cursor:pointer;display:flex;font:inherit;font-size:14px;font-weight:560;gap:8px;justify-content:center;line-height:1.2;min-height:46px;min-width:0;outline:none;overflow:hidden;padding:0 12px;text-decoration:none;touch-action:manipulation;transform:none;transition:background-color .16s ease,border-color .16s ease;width:100%}.xwk-account-panel-actions button:disabled{cursor:wait;opacity:1}.xwk-account-panel-actions svg{flex:0 0 auto;opacity:.58}.xwk-account-panel-actions span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.xwk-account-panel-actions button:hover,.xwk-account-panel-actions a:hover{background:${theme.surfaceHover};border-color:${actionBorder};box-shadow:none;text-decoration:none;transform:none}.xwk-account-panel-actions button:active,.xwk-account-panel-actions a:active{background:${theme.surfaceHover};opacity:1;text-decoration:none;transform:none}.xwk-copied-icon{color:${theme.success};opacity:1!important}.xwk-action-spinner{animation:xwk-action-spin .8s linear infinite;border:2px solid ${theme.spinnerTrail};border-top-color:${theme.muted};border-radius:999px;box-sizing:border-box;display:inline-block;height:17px;width:17px}@keyframes xwk-action-spin{to{transform:rotate(360deg)}}@keyframes xwk-skeleton-pulse{0%{background-position:200% 0}100%{background-position:-200% 0}}@keyframes xwk-pulse-ring{0%{opacity:.42;transform:scale(.8)}80%,100%{opacity:0;transform:scale(1.45)}}@keyframes xwk-account-overlay-in{from{opacity:0}to{opacity:1}}@keyframes xwk-account-panel-in{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media(prefers-reduced-motion:reduce){.xwk-account-button,.xwk-tx-header-link,.xwk-account-panel-actions button,.xwk-account-panel-actions a{transition:none}.xwk-account-portal[data-xwk-entering="true"] .xwk-account-overlay,.xwk-account-portal[data-xwk-entering="true"] .xwk-account-panel-modal{animation-duration:1ms!important}.xwk-action-spinner,.xwk-balance-spinner,.xwk-tx-spinner,.xwk-skeleton,.xwk-tx-row-submitted .xwk-tx-status:before{animation:none}}@media(max-width:520px){.xwk-account-panel-dropdown{bottom:0;left:0;margin-top:0;min-width:0;position:fixed;right:0;top:auto;width:100vw}.xwk-account-overlay{align-items:flex-end;padding:max(12px,env(safe-area-inset-top)) 0 0}.xwk-account-panel-modal{align-self:flex-end;border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0;border-left:0;border-right:0;border-top-left-radius:${theme.radius};border-top-right-radius:${theme.radius};height:min(527px,calc(100dvh - env(safe-area-inset-top)));max-width:none;width:100vw}.xwk-account-panel-modal.xwk-account-panel-with-transactions,.xwk-account-panel-modal.xwk-account-panel-history{height:min(650px,calc(100dvh - env(safe-area-inset-top)))}.xwk-account-portal[data-xwk-entering="true"] .xwk-account-panel-modal{animation:xwk-account-sheet-in .28s cubic-bezier(.32,.72,0,1)}.xwk-account-modal-header{border-top-left-radius:${theme.radius};border-top-right-radius:${theme.radius};grid-template-columns:44px minmax(0,1fr) 44px;padding:10px 16px}.xwk-account-modal-body{min-height:0;padding:18px 20px max(22px,calc(22px + env(safe-area-inset-bottom)))}.xwk-button-label{max-width:min(150px,calc(100vw - 140px))}}@keyframes xwk-account-sheet-in{from{opacity:1;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}`;
22020
+ return `${baseStyles}${this.renderSkeletonPrimitiveStyles(theme, iconBorder)}`;
22021
+ }
22022
+ renderSkeletonPrimitiveStyles(theme, iconBorder) {
22023
+ return `.xwk-skeleton-circle{border-radius:999px}.xwk-skeleton-line{height:14px;border-radius:4px}.xwk-skeleton-pill{border-radius:999px}.xwk-skeleton-card,.xwk-skeleton-button{border-radius:${theme.walletRadius}}.xwk-skeleton-row{align-items:center;display:flex;gap:12px;width:100%}.xwk-skeleton-button-icon{height:28px;width:28px}.xwk-skeleton-button-label{height:14px;width:92px}.xwk-account-button-loading .xwk-button-label{align-items:center;display:inline-flex}.xwk-button-icon-loading{background:transparent;border-color:${iconBorder};padding:0}.xwk-account-avatar-skeleton{background:${theme.surface};border:1px solid ${iconBorder};box-sizing:border-box;overflow:hidden}.xwk-account-avatar-skeleton>span{height:100%;width:100%}.xwk-tx-skeleton-row{grid-template-columns:24px minmax(0,1fr) auto}.xwk-tx-skeleton-main{display:grid;gap:6px;min-width:0}.xwk-tx-skeleton-label{height:13px;width:86px}.xwk-tx-skeleton-hash{height:11px;width:132px}@media(prefers-reduced-motion:reduce){.xwk-skeleton{animation:none!important;background:${theme.surfaceHover}!important}}`;
21728
22024
  }
21729
22025
  resolveTheme() {
21730
22026
  return resolveWalletTheme({
@@ -21869,6 +22165,9 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21869
22165
  return value;
21870
22166
  }
21871
22167
  }
22168
+ function compactButtonOptions(options) {
22169
+ return Object.fromEntries(Object.entries(options).filter(([, value]) => value !== void 0));
22170
+ }
21872
22171
  function createWalletButton(options) {
21873
22172
  const button = new WalletButtonController(options);
21874
22173
  if (options.target)
@@ -22003,7 +22302,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
22003
22302
  }
22004
22303
  ensureStyles() {
22005
22304
  const styles2 = this.renderStyles();
22006
- ensureWalletStyle(getWalletStyleId("xwk-toast", styles2), styles2);
22305
+ ensureWalletStyle("xwk-toast", styles2);
22007
22306
  }
22008
22307
  getExplorerUrl(hash2, network) {
22009
22308
  var _a2, _b;
@@ -22100,6 +22399,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
22100
22399
  if (modal && modalOptions.autoOpen) {
22101
22400
  modal.autoOpen();
22102
22401
  }
22402
+ const subscribe2 = createKitSubscriber(manager);
22103
22403
  return {
22104
22404
  manager,
22105
22405
  modal,
@@ -22112,11 +22412,52 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
22112
22412
  refreshBalance: () => button == null ? void 0 : button.refreshBalance(),
22113
22413
  refreshAccount: () => button == null ? void 0 : button.refreshAccount(),
22114
22414
  getSession: () => manager.getSession(),
22415
+ on: manager.on.bind(manager),
22416
+ off: manager.off.bind(manager),
22417
+ once: manager.once.bind(manager),
22418
+ subscribe: subscribe2,
22115
22419
  signAndSubmit: manager.signAndSubmit.bind(manager),
22116
22420
  signTransaction: manager.signTransaction.bind(manager),
22117
22421
  signMessage: manager.signMessage.bind(manager)
22118
22422
  };
22119
22423
  }
22424
+ function createKitSubscriber(manager) {
22425
+ function snapshot2(eventName, event) {
22426
+ const status = eventName === "connecting" ? "connecting" : manager.getSession() ? "connected" : "disconnected";
22427
+ return {
22428
+ status,
22429
+ session: manager.getSession(),
22430
+ account: manager.getAccount(),
22431
+ eventName,
22432
+ event
22433
+ };
22434
+ }
22435
+ function subscribe2(eventNameOrHandler, maybeHandler) {
22436
+ if (typeof eventNameOrHandler === "function") {
22437
+ const handler = eventNameOrHandler;
22438
+ const eventNames = [
22439
+ "connecting",
22440
+ "connected",
22441
+ "disconnected",
22442
+ "session_restored",
22443
+ "session_stale",
22444
+ "session_expired",
22445
+ "accountChanged",
22446
+ "networkChanged"
22447
+ ];
22448
+ const unsubs = eventNames.map((eventName) => manager.on(eventName, (event) => {
22449
+ handler(snapshot2(eventName, event));
22450
+ }));
22451
+ handler(snapshot2());
22452
+ return () => unsubs.forEach((unsubscribe) => unsubscribe());
22453
+ }
22454
+ if (!maybeHandler) {
22455
+ throw new TypeError("kit.subscribe(eventName, handler) requires a handler.");
22456
+ }
22457
+ return manager.on(eventNameOrHandler, maybeHandler);
22458
+ }
22459
+ return subscribe2;
22460
+ }
22120
22461
  function scheduleAutoReconnect(manager) {
22121
22462
  const run = () => {
22122
22463
  const requestFrame = typeof globalThis.requestAnimationFrame === "function" ? globalThis.requestAnimationFrame.bind(globalThis) : (callback) => globalThis.setTimeout(() => callback(Date.now()), 16);
@@ -22163,16 +22504,12 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
22163
22504
  adapters.push(createXrplSnapAdapter());
22164
22505
  if (options.walletConnectProjectId && shouldIncludeWalletConnect(ids)) {
22165
22506
  const walletConnectUiMode = getWalletConnectUiMode(options);
22507
+ const appMetadata = resolveAppMetadata(options);
22166
22508
  adapters.push(...createWalletConnectAdapters({
22167
22509
  projectId: options.walletConnectProjectId,
22168
22510
  mode: walletConnectUiMode === "default" ? "default" : "details",
22169
22511
  wallets: resolveWalletConnectWallets(ids),
22170
- metadata: createWalletConnectMetadata({
22171
- name: options.appName,
22172
- description: options.appDescription ?? `${options.appName} XRPL wallet connection`,
22173
- url: options.appUrl ?? getCurrentOrigin(),
22174
- icons: options.appIcons ?? []
22175
- }),
22512
+ metadata: createWalletConnectMetadata(appMetadata),
22176
22513
  onQr,
22177
22514
  signMessageDestination: options.walletConnectSignMessageDestination,
22178
22515
  useModal: walletConnectUiMode === "default" ? true : void 0,
@@ -22289,6 +22626,24 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
22289
22626
  function getCurrentOrigin() {
22290
22627
  return typeof window !== "undefined" ? window.location.origin : "https://xrpl.org";
22291
22628
  }
22629
+ function resolveAppMetadata(options) {
22630
+ var _a2, _b, _c, _d;
22631
+ const name = nonEmptyString((_a2 = options.metadata) == null ? void 0 : _a2.name) ?? nonEmptyString(options.appName) ?? "XRPL dApp";
22632
+ return {
22633
+ name,
22634
+ description: nonEmptyString((_b = options.metadata) == null ? void 0 : _b.description) ?? nonEmptyString(options.appDescription) ?? `${name} XRPL wallet connection`,
22635
+ url: nonEmptyString((_c = options.metadata) == null ? void 0 : _c.url) ?? nonEmptyString(options.appUrl) ?? getCurrentOrigin(),
22636
+ icons: normalizeIcons(((_d = options.metadata) == null ? void 0 : _d.icons) ?? options.appIcons)
22637
+ };
22638
+ }
22639
+ function nonEmptyString(value) {
22640
+ return typeof value === "string" && value.trim() ? value.trim() : void 0;
22641
+ }
22642
+ function normalizeIcons(icons) {
22643
+ if (!Array.isArray(icons))
22644
+ return [];
22645
+ return icons.filter((icon) => typeof icon === "string" && icon.trim().length > 0);
22646
+ }
22292
22647
  function withoutKitOnlyOptions(options) {
22293
22648
  const { adapters: _adapters, storage: _storage, walletConnectProjectId: _walletConnectProjectId, walletConnectSignMessageDestination: _walletConnectSignMessageDestination, xamanClientId: _xamanClientId, wallets: _wallets, ui: _ui, ...managerConfig } = options;
22294
22649
  return managerConfig;