@xrpl-wallet-kit/browser 0.1.6 → 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.6 | 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", () => {
@@ -20916,11 +21110,15 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
20916
21110
  }));
20917
21111
  this.offEvents.push(options.manager.on("accountChanged", () => {
20918
21112
  this.clearBalanceRefreshTimers();
20919
- void this.resolveBalance(options.manager.getSession());
21113
+ const session = options.manager.getSession();
21114
+ this.renderConnectedState(session);
21115
+ this.queueBalanceRefresh(session);
20920
21116
  }));
20921
21117
  this.offEvents.push(options.manager.on("networkChanged", () => {
20922
21118
  this.clearBalanceRefreshTimers();
20923
- void this.resolveBalance(options.manager.getSession());
21119
+ const session = options.manager.getSession();
21120
+ this.renderConnectedState(session);
21121
+ this.queueBalanceRefresh(session);
20924
21122
  }));
20925
21123
  this.offEvents.push(options.manager.on("error", () => {
20926
21124
  this.connecting = false;
@@ -20971,6 +21169,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
20971
21169
  this.identityRequest += 1;
20972
21170
  this.identityResolvingKey = void 0;
20973
21171
  this.clearBalanceRefreshTimers();
21172
+ this.clearBalanceDebounce();
20974
21173
  if (this.copyResetTimer)
20975
21174
  window.clearTimeout(this.copyResetTimer);
20976
21175
  if (this.identitySettleTimer)
@@ -20984,9 +21183,15 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
20984
21183
  if (!this.target)
20985
21184
  return;
20986
21185
  this.target.innerHTML = "";
20987
- this.target.appendChild(this.createRoot());
20988
- this.syncAccountPanelPortal();
20989
- 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
+ }
20990
21195
  }
20991
21196
  createRoot() {
20992
21197
  var _a2;
@@ -21004,6 +21209,25 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21004
21209
  this.renderAddressQrIfNeeded(root);
21005
21210
  return root;
21006
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
+ }
21007
21231
  onButtonClick() {
21008
21232
  const session = this.options.manager.getSession();
21009
21233
  if (!session) {
@@ -21018,6 +21242,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21018
21242
  closePanel() {
21019
21243
  this.panelOpen = false;
21020
21244
  this.addressQrOpen = false;
21245
+ this.historyOpen = false;
21021
21246
  this.render();
21022
21247
  }
21023
21248
  handleDocumentPointerDown(event) {
@@ -21030,6 +21255,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21030
21255
  return;
21031
21256
  this.panelOpen = false;
21032
21257
  this.addressQrOpen = false;
21258
+ this.historyOpen = false;
21033
21259
  this.render();
21034
21260
  }
21035
21261
  handleDocumentKeyDown(event) {
@@ -21038,6 +21264,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21038
21264
  if (event.key === "Escape") {
21039
21265
  this.panelOpen = false;
21040
21266
  this.addressQrOpen = false;
21267
+ this.historyOpen = false;
21041
21268
  this.render();
21042
21269
  return;
21043
21270
  }
@@ -21102,7 +21329,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21102
21329
  (_a2 = root.querySelector("[data-xwk-account-close]")) == null ? void 0 : _a2.addEventListener("click", () => this.closePanel());
21103
21330
  (_b = root.querySelector("[data-xwk-account-back]")) == null ? void 0 : _b.addEventListener("click", (event) => {
21104
21331
  event.stopPropagation();
21105
- this.closeAddressQr();
21332
+ this.closeSubView();
21106
21333
  });
21107
21334
  (_c = root.querySelector("[data-xwk-account-overlay]")) == null ? void 0 : _c.addEventListener("click", (event) => {
21108
21335
  if (event.target === event.currentTarget)
@@ -21116,10 +21343,9 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21116
21343
  event.stopPropagation();
21117
21344
  this.openAddressQr();
21118
21345
  });
21119
- (_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) => {
21120
21347
  event.stopPropagation();
21121
- this.txSectionOpen = !this.txSectionOpen;
21122
- this.render();
21348
+ this.openTransactionHistory();
21123
21349
  });
21124
21350
  (_g = root.querySelector("[data-xwk-disconnect]")) == null ? void 0 : _g.addEventListener("click", () => void this.disconnect());
21125
21351
  }
@@ -21128,10 +21354,20 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21128
21354
  return;
21129
21355
  this.panelOpen = true;
21130
21356
  this.addressQrOpen = true;
21357
+ this.historyOpen = false;
21131
21358
  this.render();
21132
21359
  }
21133
- closeAddressQr() {
21360
+ openTransactionHistory() {
21361
+ if (!this.options.manager.getSession())
21362
+ return;
21363
+ this.panelOpen = true;
21364
+ this.addressQrOpen = false;
21365
+ this.historyOpen = true;
21366
+ this.render();
21367
+ }
21368
+ closeSubView() {
21134
21369
  this.addressQrOpen = false;
21370
+ this.historyOpen = false;
21135
21371
  this.panelOpen = true;
21136
21372
  this.render();
21137
21373
  }
@@ -21299,6 +21535,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21299
21535
  if (session)
21300
21536
  delete session.balance;
21301
21537
  (_b = (_a2 = this.options).onBalanceChange) == null ? void 0 : _b.call(_a2, null, session);
21538
+ this.render();
21302
21539
  return;
21303
21540
  }
21304
21541
  const requestId = ++this.balanceRequest;
@@ -21309,6 +21546,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21309
21546
  this.activationStatus = "unknown";
21310
21547
  delete session.balance;
21311
21548
  (_d = (_c = this.options).onBalanceChange) == null ? void 0 : _d.call(_c, null, session);
21549
+ this.render();
21312
21550
  return;
21313
21551
  }
21314
21552
  this.balanceLoading = true;
@@ -21351,9 +21589,13 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21351
21589
  const messages = this.messages();
21352
21590
  const session = this.options.manager.getSession();
21353
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
+ }
21354
21596
  const label = this.connecting ? messages.connecting : session ? this.getAccountLabel(session) : this.options.label;
21355
- 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>` : "";
21356
- 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() : "";
21357
21599
  const pendingDot = connected && this.options.showRecentTransactions && this.getPendingTransactionCount() > 0 ? `<span class="xwk-button-pending-dot" aria-hidden="true"></span>` : "";
21358
21600
  const chevron = connected && this.options.showChevron && this.options.accountPanel ? `<span class="xwk-button-chevron" aria-hidden="true">${this.chevronIcon()}</span>` : "";
21359
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>`;
@@ -21363,15 +21605,16 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21363
21605
  const session = this.options.manager.getSession();
21364
21606
  if (!session)
21365
21607
  return "";
21366
- const content = this.addressQrOpen ? this.renderAddressQrPanelContent(session) : this.renderPanelContent(session);
21367
- const title = this.addressQrOpen ? messages.addressQr : messages.connected;
21368
- const hasTransactions = !this.addressQrOpen && this.options.showRecentTransactions && this.getVisibleTransactions(session).length > 0;
21369
- const panelStateClass = `${this.addressQrOpen ? " xwk-account-panel-address-qr" : ""}${hasTransactions ? " xwk-account-panel-with-transactions" : ""}`;
21370
- 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>`;
21371
21613
  if (this.options.accountPanelMode === "modal") {
21372
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>`;
21373
21615
  }
21374
- return `<div class="xwk-account-panel xwk-account-panel-dropdown${panelStateClass}" role="dialog" aria-label="${this.escapeHtml(title)}">${content}</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>` : "";
21617
+ return `<div class="xwk-account-panel xwk-account-panel-dropdown${panelStateClass}" role="dialog" aria-label="${this.escapeHtml(title)}">${dropdownBack}${content}</div>`;
21375
21618
  }
21376
21619
  renderPanelContent(session) {
21377
21620
  var _a2;
@@ -21387,15 +21630,17 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21387
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>` : "";
21388
21631
  const nativeAsset = getNativeAsset(session.account.network);
21389
21632
  const notActivated = this.options.showBalance && this.activationStatus === "unfunded" ? `<div class="xwk-account-warning">${this.escapeHtml(messages.accountNotActivated(nativeAsset))}</div>` : "";
21390
- 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>` : "";
21391
- 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>` : "";
21392
21634
  const addressQrButton = this.renderAddressQrButton(address);
21635
+ const identityResolving = this.isIdentityResolving(session);
21393
21636
  const hasIdentity = this.shouldShowWeb3Name() && this.identityName;
21394
- 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>` : "";
21395
21640
  const actions = `<div class="xwk-account-panel-actions">${copy}${explorer}${disconnect}</div>`;
21396
- 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>` : "";
21397
21642
  const transactions2 = this.renderTransactionHistory(session);
21398
- 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}`;
21399
21644
  }
21400
21645
  renderAddressQrPanelContent(session) {
21401
21646
  const messages = this.messages();
@@ -21415,14 +21660,22 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21415
21660
  renderTransactionHistory(session) {
21416
21661
  if (!this.options.showRecentTransactions)
21417
21662
  return "";
21418
- const transactions2 = this.getVisibleTransactions(session);
21419
- if (!transactions2.length)
21663
+ const allTransactions = this.getVisibleTransactions(session);
21664
+ if (!allTransactions.length)
21420
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) {
21421
21674
  const messages = this.messages();
21422
- const count = transactions2.length > 9 ? "9+" : String(transactions2.length);
21423
- const chevronClass = this.txSectionOpen ? "open" : "closed";
21424
- const list = this.txSectionOpen ? `<div class="xwk-tx-list" role="list">${transactions2.map((transaction2) => this.renderTransactionRow(transaction2)).join("")}</div>` : "";
21425
- 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>`;
21426
21679
  }
21427
21680
  renderTransactionRow(transaction2) {
21428
21681
  const messages = this.messages();
@@ -21450,9 +21703,9 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21450
21703
  return this.questionIcon();
21451
21704
  return `<span class="xwk-tx-spinner" aria-hidden="true"></span>`;
21452
21705
  }
21453
- getVisibleTransactions(session) {
21706
+ getVisibleTransactions(session, limit = this.options.maxVisibleTransactions) {
21454
21707
  const address = this.getSessionAddress(session);
21455
- const max = Math.max(1, Math.floor(this.options.maxVisibleTransactions));
21708
+ const max = Math.max(1, Math.floor(limit));
21456
21709
  return this.getRecentTransactions(session).filter((transaction2) => {
21457
21710
  var _a2;
21458
21711
  return !address || !((_a2 = transaction2.account) == null ? void 0 : _a2.address) || transaction2.account.address === address;
@@ -21509,7 +21762,10 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21509
21762
  const address = this.getSessionAddress(session);
21510
21763
  return address ? (this.options.formatAddress ?? this.formatAddress)(address) : ((_b = session.wallet) == null ? void 0 : _b.name) ?? session.adapterId;
21511
21764
  }
21512
- 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
+ }
21513
21769
  if (this.identityAvatar) {
21514
21770
  return `<img class="xwk-account-avatar" src="${this.escapeHtml(this.identityAvatar)}" alt="">`;
21515
21771
  }
@@ -21540,6 +21796,14 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21540
21796
  return address;
21541
21797
  return typeof (account == null ? void 0 : account.classicAddress) === "string" ? account.classicAddress : "";
21542
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
+ }
21543
21807
  shouldShowWeb3Name() {
21544
21808
  return this.options.showWeb3Name ?? true;
21545
21809
  }
@@ -21555,6 +21819,20 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21555
21819
  const label = wallet.name.slice(0, 1).toUpperCase();
21556
21820
  return `<span class="xwk-button-icon xwk-button-icon-fallback xwk-button-icon-initial" aria-hidden="true">${this.escapeHtml(label)}</span>`;
21557
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
+ }
21558
21836
  repairFallbackIcon(root) {
21559
21837
  root.querySelectorAll(".xwk-button-icon-svg-fallback").forEach((icon) => {
21560
21838
  if (icon.querySelector("svg"))
@@ -21657,7 +21935,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21657
21935
  let timer = 0;
21658
21936
  timer = window.setTimeout(() => {
21659
21937
  this.balanceRefreshTimers.delete(timer);
21660
- void this.resolveBalance(this.options.manager.getSession());
21938
+ this.queueBalanceRefresh(this.options.manager.getSession(), 0);
21661
21939
  }, delay2);
21662
21940
  this.balanceRefreshTimers.add(timer);
21663
21941
  });
@@ -21666,11 +21944,33 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21666
21944
  this.balanceRefreshTimers.forEach((timer) => window.clearTimeout(timer));
21667
21945
  this.balanceRefreshTimers.clear();
21668
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
+ }
21669
21969
  chevronIcon() {
21670
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>`;
21671
21971
  }
21672
- chevronUpIcon() {
21673
- 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>`;
21674
21974
  }
21675
21975
  checkIcon() {
21676
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>`;
@@ -21701,7 +22001,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21701
22001
  }
21702
22002
  ensureStyles() {
21703
22003
  const styles2 = this.renderStyles();
21704
- ensureWalletStyle(getWalletStyleId("xwk-button", styles2), styles2);
22004
+ ensureWalletStyle("xwk-button", styles2);
21705
22005
  }
21706
22006
  renderStyles() {
21707
22007
  const theme = this.resolveTheme();
@@ -21716,7 +22016,11 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21716
22016
  const fallbackIconBackground = theme.fallbackIconBackground;
21717
22017
  const fallbackIconColor = theme.fallbackIconColor;
21718
22018
  const overlayBlur = theme.overlayBlur > 0 ? `blur(${theme.overlayBlur}px)` : "none";
21719
- 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-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 34px;height:34px;justify-content:center;margin:-4px -3px -4px 0;min-height:0;outline:none;overflow:visible;padding:0;touch-action:manipulation;transform:none;width:34px}.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{-webkit-overflow-scrolling:touch;display:grid;gap:0;max-height:86px;overflow:auto;overscroll-behavior:contain;scrollbar-color:${theme.muted} transparent;scrollbar-width:thin}.xwk-tx-list::-webkit-scrollbar{width:6px}.xwk-tx-list::-webkit-scrollbar-track{background:transparent}.xwk-tx-list::-webkit-scrollbar-thumb{background:${theme.muted};border-radius:999px}.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-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-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}}`;
21720
22024
  }
21721
22025
  resolveTheme() {
21722
22026
  return resolveWalletTheme({
@@ -21861,6 +22165,9 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21861
22165
  return value;
21862
22166
  }
21863
22167
  }
22168
+ function compactButtonOptions(options) {
22169
+ return Object.fromEntries(Object.entries(options).filter(([, value]) => value !== void 0));
22170
+ }
21864
22171
  function createWalletButton(options) {
21865
22172
  const button = new WalletButtonController(options);
21866
22173
  if (options.target)
@@ -21995,7 +22302,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
21995
22302
  }
21996
22303
  ensureStyles() {
21997
22304
  const styles2 = this.renderStyles();
21998
- ensureWalletStyle(getWalletStyleId("xwk-toast", styles2), styles2);
22305
+ ensureWalletStyle("xwk-toast", styles2);
21999
22306
  }
22000
22307
  getExplorerUrl(hash2, network) {
22001
22308
  var _a2, _b;
@@ -22092,6 +22399,7 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
22092
22399
  if (modal && modalOptions.autoOpen) {
22093
22400
  modal.autoOpen();
22094
22401
  }
22402
+ const subscribe2 = createKitSubscriber(manager);
22095
22403
  return {
22096
22404
  manager,
22097
22405
  modal,
@@ -22104,11 +22412,52 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
22104
22412
  refreshBalance: () => button == null ? void 0 : button.refreshBalance(),
22105
22413
  refreshAccount: () => button == null ? void 0 : button.refreshAccount(),
22106
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,
22107
22419
  signAndSubmit: manager.signAndSubmit.bind(manager),
22108
22420
  signTransaction: manager.signTransaction.bind(manager),
22109
22421
  signMessage: manager.signMessage.bind(manager)
22110
22422
  };
22111
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
+ }
22112
22461
  function scheduleAutoReconnect(manager) {
22113
22462
  const run = () => {
22114
22463
  const requestFrame = typeof globalThis.requestAnimationFrame === "function" ? globalThis.requestAnimationFrame.bind(globalThis) : (callback) => globalThis.setTimeout(() => callback(Date.now()), 16);
@@ -22155,16 +22504,12 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
22155
22504
  adapters.push(createXrplSnapAdapter());
22156
22505
  if (options.walletConnectProjectId && shouldIncludeWalletConnect(ids)) {
22157
22506
  const walletConnectUiMode = getWalletConnectUiMode(options);
22507
+ const appMetadata = resolveAppMetadata(options);
22158
22508
  adapters.push(...createWalletConnectAdapters({
22159
22509
  projectId: options.walletConnectProjectId,
22160
22510
  mode: walletConnectUiMode === "default" ? "default" : "details",
22161
22511
  wallets: resolveWalletConnectWallets(ids),
22162
- metadata: createWalletConnectMetadata({
22163
- name: options.appName,
22164
- description: options.appDescription ?? `${options.appName} XRPL wallet connection`,
22165
- url: options.appUrl ?? getCurrentOrigin(),
22166
- icons: options.appIcons ?? []
22167
- }),
22512
+ metadata: createWalletConnectMetadata(appMetadata),
22168
22513
  onQr,
22169
22514
  signMessageDestination: options.walletConnectSignMessageDestination,
22170
22515
  useModal: walletConnectUiMode === "default" ? true : void 0,
@@ -22281,6 +22626,24 @@ ${new this._window.XMLSerializer().serializeToString(e4)}`;
22281
22626
  function getCurrentOrigin() {
22282
22627
  return typeof window !== "undefined" ? window.location.origin : "https://xrpl.org";
22283
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
+ }
22284
22647
  function withoutKitOnlyOptions(options) {
22285
22648
  const { adapters: _adapters, storage: _storage, walletConnectProjectId: _walletConnectProjectId, walletConnectSignMessageDestination: _walletConnectSignMessageDestination, xamanClientId: _xamanClientId, wallets: _wallets, ui: _ui, ...managerConfig } = options;
22286
22649
  return managerConfig;