@wallet-ui/react 2.0.0-canary-20250814043428 → 2.0.0-canary-20250814153001

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,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var React19 = require('react');
3
+ var React20 = require('react');
4
4
  var react$1 = require('@wallet-standard/react');
5
5
  var react$2 = require('@zag-js/react');
6
6
  var menu = require('@zag-js/menu');
@@ -32,25 +32,25 @@ function _interopNamespace(e) {
32
32
  return Object.freeze(n);
33
33
  }
34
34
 
35
- var React19__default = /*#__PURE__*/_interopDefault(React19);
35
+ var React20__default = /*#__PURE__*/_interopDefault(React20);
36
36
  var menu__namespace = /*#__PURE__*/_interopNamespace(menu);
37
37
  var dialog__namespace = /*#__PURE__*/_interopNamespace(dialog);
38
38
 
39
39
  // src/base-button.tsx
40
40
  function BaseButton({ className, label, leftSection, onClick, rightSection, size, ...props }) {
41
- return /* @__PURE__ */ React19__default.default.createElement("button", { "data-wu": "base-button", className: `${size ?? "md"} ${className ?? ""}`, onClick, ...props }, leftSection ? /* @__PURE__ */ React19__default.default.createElement("span", { "data-wu": "base-button-left-section" }, leftSection) : null, label, rightSection ? /* @__PURE__ */ React19__default.default.createElement("span", { "data-wu": "base-button-right-section" }, rightSection) : null);
41
+ return /* @__PURE__ */ React20__default.default.createElement("button", { "data-wu": "base-button", className: `${size ?? "md"} ${className ?? ""}`, onClick, ...props }, leftSection ? /* @__PURE__ */ React20__default.default.createElement("span", { "data-wu": "base-button-left-section" }, leftSection) : null, label, rightSection ? /* @__PURE__ */ React20__default.default.createElement("span", { "data-wu": "base-button-right-section" }, rightSection) : null);
42
42
  }
43
- var WalletUiContext = React19__default.default.createContext({});
43
+ var WalletUiContext = React20__default.default.createContext({});
44
44
 
45
45
  // src/use-wallet-ui.tsx
46
46
  function useWalletUi() {
47
- return React19__default.default.useContext(WalletUiContext);
47
+ return React20__default.default.useContext(WalletUiContext);
48
48
  }
49
- var WalletUiAccountContext = React19.createContext({});
49
+ var WalletUiAccountContext = React20.createContext({});
50
50
 
51
51
  // src/use-wallet-ui-account.tsx
52
52
  function useWalletUiAccount() {
53
- return React19.useContext(WalletUiAccountContext);
53
+ return React20.useContext(WalletUiAccountContext);
54
54
  }
55
55
 
56
56
  // src/use-wallet-ui-wallet.tsx
@@ -59,7 +59,7 @@ function useWalletUiWallet({ wallet }) {
59
59
  const { setAccount } = useWalletUiAccount();
60
60
  const [isConnecting, connect3] = react$1.useConnect(wallet);
61
61
  const [isDisconnecting, disconnect] = react$1.useDisconnect(wallet);
62
- React19.useEffect(() => {
62
+ React20.useEffect(() => {
63
63
  }, [isDisconnecting]);
64
64
  return {
65
65
  connect: async () => {
@@ -82,7 +82,7 @@ function WalletUiIcon({ className, size = "md", wallet, ...props }) {
82
82
  if (!wallet) {
83
83
  return null;
84
84
  }
85
- return /* @__PURE__ */ React19__default.default.createElement(
85
+ return /* @__PURE__ */ React20__default.default.createElement(
86
86
  "img",
87
87
  {
88
88
  "data-wu": "wallet-ui-icon",
@@ -105,17 +105,17 @@ var BaseDropdownItemType = /* @__PURE__ */ ((BaseDropdownItemType2) => {
105
105
  })(BaseDropdownItemType || {});
106
106
  function BaseDropdown({ buttonProps, dropdown, items, showIndicator, size = "md" }) {
107
107
  const api = dropdown.api;
108
- const trigger = /* @__PURE__ */ React19__default.default.createElement(
108
+ const trigger = /* @__PURE__ */ React20__default.default.createElement(
109
109
  BaseButton,
110
110
  {
111
111
  ...api.getTriggerProps(),
112
112
  size,
113
- rightSection: showIndicator ? /* @__PURE__ */ React19__default.default.createElement("span", { ...api.getIndicatorProps() }, /* @__PURE__ */ React19__default.default.createElement(BaseDropdownChevronDown, { size: 12 })) : null,
113
+ rightSection: showIndicator ? /* @__PURE__ */ React20__default.default.createElement("span", { ...api.getIndicatorProps() }, /* @__PURE__ */ React20__default.default.createElement(BaseDropdownChevronDown, { size: 12 })) : null,
114
114
  ...buttonProps
115
115
  }
116
116
  );
117
- return /* @__PURE__ */ React19__default.default.createElement("div", { "data-wu": "base-dropdown" }, trigger, /* @__PURE__ */ React19__default.default.createElement("div", { ...api.getPositionerProps(), "data-wu": "base-dropdown-wrapper" }, /* @__PURE__ */ React19__default.default.createElement("div", { ...api.getContentProps(), "data-wu": "base-dropdown-list", "data-part": "content" }, items.map((item) => {
118
- return /* @__PURE__ */ React19__default.default.createElement(
117
+ return /* @__PURE__ */ React20__default.default.createElement("div", { "data-wu": "base-dropdown" }, trigger, /* @__PURE__ */ React20__default.default.createElement("div", { ...api.getPositionerProps(), "data-wu": "base-dropdown-wrapper" }, /* @__PURE__ */ React20__default.default.createElement("div", { ...api.getContentProps(), "data-wu": "base-dropdown-list", "data-part": "content" }, items.map((item) => {
118
+ return /* @__PURE__ */ React20__default.default.createElement(
119
119
  BaseDropdownItem,
120
120
  {
121
121
  ...api.getItemProps({ value: item.value }),
@@ -136,17 +136,17 @@ function BaseDropdown({ buttonProps, dropdown, items, showIndicator, size = "md"
136
136
  }
137
137
  function BaseDropdownItem({ afterClick, item, size }) {
138
138
  if (!item.wallet) {
139
- return /* @__PURE__ */ React19__default.default.createElement(BaseDropdownItemRender, { afterClick, item, size });
139
+ return /* @__PURE__ */ React20__default.default.createElement(BaseDropdownItemRender, { afterClick, item, size });
140
140
  }
141
141
  switch (item.type) {
142
142
  case "Item" /* Item */:
143
- return /* @__PURE__ */ React19__default.default.createElement(BaseDropdownItemRender, { afterClick, item, size });
143
+ return /* @__PURE__ */ React20__default.default.createElement(BaseDropdownItemRender, { afterClick, item, size });
144
144
  case "WalletConnect" /* WalletConnect */:
145
- return /* @__PURE__ */ React19__default.default.createElement(BaseDropdownItemWalletConnect, { afterClick, item, size, wallet: item.wallet });
145
+ return /* @__PURE__ */ React20__default.default.createElement(BaseDropdownItemWalletConnect, { afterClick, item, size, wallet: item.wallet });
146
146
  case "WalletCopy" /* WalletCopy */:
147
- return /* @__PURE__ */ React19__default.default.createElement(BaseDropdownItemRender, { afterClick, item, size });
147
+ return /* @__PURE__ */ React20__default.default.createElement(BaseDropdownItemRender, { afterClick, item, size });
148
148
  case "WalletDisconnect" /* WalletDisconnect */:
149
- return /* @__PURE__ */ React19__default.default.createElement(
149
+ return /* @__PURE__ */ React20__default.default.createElement(
150
150
  BaseDropdownItemWalletDisconnect,
151
151
  {
152
152
  afterClick,
@@ -164,7 +164,7 @@ function BaseDropdownItemWalletConnect({
164
164
  wallet
165
165
  }) {
166
166
  const { connect: connect3 } = useWalletUiWallet({ wallet });
167
- return /* @__PURE__ */ React19__default.default.createElement(
167
+ return /* @__PURE__ */ React20__default.default.createElement(
168
168
  BaseDropdownItemRender,
169
169
  {
170
170
  afterClick,
@@ -174,7 +174,7 @@ function BaseDropdownItemWalletConnect({
174
174
  await connect3();
175
175
  return await item.handler();
176
176
  },
177
- leftSection: wallet ? /* @__PURE__ */ React19__default.default.createElement(WalletUiIcon, { wallet, size }) : void 0
177
+ leftSection: wallet ? /* @__PURE__ */ React20__default.default.createElement(WalletUiIcon, { wallet, size }) : void 0
178
178
  },
179
179
  size
180
180
  }
@@ -187,7 +187,7 @@ function BaseDropdownItemWalletDisconnect({
187
187
  wallet
188
188
  }) {
189
189
  const { disconnect } = useWalletUiWallet({ wallet });
190
- return /* @__PURE__ */ React19__default.default.createElement(
190
+ return /* @__PURE__ */ React20__default.default.createElement(
191
191
  BaseDropdownItemRender,
192
192
  {
193
193
  afterClick,
@@ -211,10 +211,10 @@ function BaseDropdownItemRender({ afterClick, item, size }) {
211
211
  afterClick();
212
212
  });
213
213
  }
214
- return /* @__PURE__ */ React19__default.default.createElement("button", { type: "button", "data-wu": "base-dropdown-item", className: size, "data-part": "item", onClick }, item.leftSection ? /* @__PURE__ */ React19__default.default.createElement("span", { "data-wu": "base-dropdown-item-left-section" }, item.leftSection) : null, item.label, item.rightSection ? /* @__PURE__ */ React19__default.default.createElement("span", { "data-wu": "base-dropdown-item-right-section" }, item.rightSection) : null);
214
+ return /* @__PURE__ */ React20__default.default.createElement("button", { type: "button", "data-wu": "base-dropdown-item", className: size, "data-part": "item", onClick }, item.leftSection ? /* @__PURE__ */ React20__default.default.createElement("span", { "data-wu": "base-dropdown-item-left-section" }, item.leftSection) : null, item.label, item.rightSection ? /* @__PURE__ */ React20__default.default.createElement("span", { "data-wu": "base-dropdown-item-right-section" }, item.rightSection) : null);
215
215
  }
216
216
  function BaseDropdownChevronDown(props) {
217
- return /* @__PURE__ */ React19__default.default.createElement(
217
+ return /* @__PURE__ */ React20__default.default.createElement(
218
218
  "svg",
219
219
  {
220
220
  xmlns: "http://www.w3.org/2000/svg",
@@ -228,17 +228,17 @@ function BaseDropdownChevronDown(props) {
228
228
  strokeLinejoin: "round",
229
229
  ...props
230
230
  },
231
- /* @__PURE__ */ React19__default.default.createElement("path", { d: "m6 9 6 6 6-6" })
231
+ /* @__PURE__ */ React20__default.default.createElement("path", { d: "m6 9 6 6 6-6" })
232
232
  );
233
233
  }
234
234
  function BaseSvg({ sizes = {}, ...props }) {
235
235
  const size = props.size ? sizes[props.size] : 12;
236
- return /* @__PURE__ */ React19__default.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, ...props }, props.children);
236
+ return /* @__PURE__ */ React20__default.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, ...props }, props.children);
237
237
  }
238
238
 
239
239
  // src/wallet-ui-icon-close.tsx
240
240
  function WalletUiIconClose({ size = "md", ...props }) {
241
- return /* @__PURE__ */ React19__default.default.createElement(
241
+ return /* @__PURE__ */ React20__default.default.createElement(
242
242
  BaseSvg,
243
243
  {
244
244
  size,
@@ -249,17 +249,17 @@ function WalletUiIconClose({ size = "md", ...props }) {
249
249
  viewBox: "0 0 14 14",
250
250
  ...props
251
251
  },
252
- /* @__PURE__ */ React19__default.default.createElement("path", { d: "M14 12.461 8.3 6.772l5.234-5.233L12.006 0 6.772 5.234 1.54 0 0 1.539l5.234 5.233L0 12.006l1.539 1.528L6.772 8.3l5.69 5.7L14 12.461z" })
252
+ /* @__PURE__ */ React20__default.default.createElement("path", { d: "M14 12.461 8.3 6.772l5.234-5.233L12.006 0 6.772 5.234 1.54 0 0 1.539l5.234 5.233L0 12.006l1.539 1.528L6.772 8.3l5.69 5.7L14 12.461z" })
253
253
  );
254
254
  }
255
255
 
256
256
  // src/base-modal.tsx
257
257
  function BaseModal({ modal, buttonLabel, buttonProps = {}, size = "md", ...props }) {
258
258
  const api = modal.api;
259
- return /* @__PURE__ */ React19__default.default.createElement(React19__default.default.Fragment, null, buttonLabel ? /* @__PURE__ */ React19__default.default.createElement(BaseButton, { label: buttonLabel, size, ...buttonProps, ...api.getTriggerProps() }) : null, api.open && /* @__PURE__ */ React19__default.default.createElement(react$2.Portal, null, /* @__PURE__ */ React19__default.default.createElement("div", { ...api.getBackdropProps() }), /* @__PURE__ */ React19__default.default.createElement("div", { ...api.getPositionerProps() }, /* @__PURE__ */ React19__default.default.createElement("div", { ...api.getContentProps(), className: size }, /* @__PURE__ */ React19__default.default.createElement("header", null, /* @__PURE__ */ React19__default.default.createElement("button", { ...api.getCloseTriggerProps() }, /* @__PURE__ */ React19__default.default.createElement(WalletUiIconClose, { size }))), props.description ? /* @__PURE__ */ React19__default.default.createElement("p", { ...api.getDescriptionProps() }, props.description) : null, /* @__PURE__ */ React19__default.default.createElement("main", null, props.children)))));
259
+ return /* @__PURE__ */ React20__default.default.createElement(React20__default.default.Fragment, null, buttonLabel ? /* @__PURE__ */ React20__default.default.createElement(BaseButton, { label: buttonLabel, size, ...buttonProps, ...api.getTriggerProps() }) : null, api.open && /* @__PURE__ */ React20__default.default.createElement(react$2.Portal, null, /* @__PURE__ */ React20__default.default.createElement("div", { ...api.getBackdropProps() }), /* @__PURE__ */ React20__default.default.createElement("div", { ...api.getPositionerProps() }, /* @__PURE__ */ React20__default.default.createElement("div", { ...api.getContentProps(), className: size }, /* @__PURE__ */ React20__default.default.createElement("header", null, /* @__PURE__ */ React20__default.default.createElement("button", { ...api.getCloseTriggerProps() }, /* @__PURE__ */ React20__default.default.createElement(WalletUiIconClose, { size }))), props.description ? /* @__PURE__ */ React20__default.default.createElement("p", { ...api.getDescriptionProps() }, props.description) : null, /* @__PURE__ */ React20__default.default.createElement("main", null, props.children)))));
260
260
  }
261
261
  function useBaseDropdown() {
262
- const service = react$2.useMachine(menu__namespace.machine, { id: React19.useId() });
262
+ const service = react$2.useMachine(menu__namespace.machine, { id: React20.useId() });
263
263
  const api = menu__namespace.connect(service, react$2.normalizeProps);
264
264
  return {
265
265
  api,
@@ -268,7 +268,7 @@ function useBaseDropdown() {
268
268
  };
269
269
  }
270
270
  function useBaseModal() {
271
- const service = react$2.useMachine(dialog__namespace.machine, { id: React19.useId(), modal: true });
271
+ const service = react$2.useMachine(dialog__namespace.machine, { id: React20.useId(), modal: true });
272
272
  const api = dialog__namespace.connect(service, react$2.normalizeProps);
273
273
  return {
274
274
  api,
@@ -276,11 +276,11 @@ function useBaseModal() {
276
276
  open: () => service.send({ type: "OPEN" })
277
277
  };
278
278
  }
279
- var WalletUiClusterContext = React19.createContext({});
279
+ var WalletUiClusterContext = React20.createContext({});
280
280
 
281
281
  // src/use-wallet-ui-cluster.tsx
282
282
  function useWalletUiCluster() {
283
- return React19.useContext(WalletUiClusterContext);
283
+ return React20.useContext(WalletUiClusterContext);
284
284
  }
285
285
  function getDropdownItemsWallets({
286
286
  wallets,
@@ -314,8 +314,8 @@ function getDropdownItemsWallets({
314
314
  function useWalletUiDropdown({ size = "md" } = {}) {
315
315
  const dropdown = useBaseDropdown();
316
316
  const { account, connect: connect3, copy, disconnect, connected, wallet, wallets } = useWalletUi();
317
- const itemsWallets = React19.useMemo(() => getDropdownItemsWallets({ connect: connect3, wallets }), [wallets, connect3]);
318
- const itemsConnected = React19.useMemo(
317
+ const itemsWallets = React20.useMemo(() => getDropdownItemsWallets({ connect: connect3, wallets }), [wallets, connect3]);
318
+ const itemsConnected = React20.useMemo(
319
319
  () => [
320
320
  {
321
321
  handler: async () => {
@@ -340,13 +340,13 @@ function useWalletUiDropdown({ size = "md" } = {}) {
340
340
  ],
341
341
  [copy, disconnect, dropdown, itemsWallets]
342
342
  );
343
- const items = React19.useMemo(() => {
343
+ const items = React20.useMemo(() => {
344
344
  return connected ? itemsConnected : itemsWallets;
345
345
  }, [connected, itemsConnected, itemsWallets]);
346
- const buttonProps = React19.useMemo(() => {
346
+ const buttonProps = React20.useMemo(() => {
347
347
  return {
348
348
  label: connected ? (account ? ellipsify(account.address) : wallet?.name) ?? "Connected" : "Select Wallet",
349
- leftSection: connected ? /* @__PURE__ */ React19__default.default.createElement(WalletUiIcon, { size, wallet }) : void 0
349
+ leftSection: connected ? /* @__PURE__ */ React20__default.default.createElement(WalletUiIcon, { size, wallet }) : void 0
350
350
  };
351
351
  }, [account, connected, size, wallet]);
352
352
  return {
@@ -365,11 +365,11 @@ function useWalletUiSigner() {
365
365
  const { account, cluster } = useWalletUi();
366
366
  return react.useWalletAccountTransactionSendingSigner(account, cluster.id);
367
367
  }
368
- var WalletUiSolanaClientContext = React19.createContext({});
368
+ var WalletUiSolanaClientContext = React20.createContext({});
369
369
 
370
370
  // src/use-wallet-ui-solana-client.tsx
371
371
  function useWalletUiSolanaClient() {
372
- return React19.useContext(WalletUiSolanaClientContext);
372
+ return React20.useContext(WalletUiSolanaClientContext);
373
373
  }
374
374
  function useWalletUiSignAndSend() {
375
375
  const { client } = useWalletUi();
@@ -387,7 +387,7 @@ function useWalletUiSignAndSend() {
387
387
  }
388
388
  function useWalletUiWallets() {
389
389
  const readonlyWallets = react$1.useWallets();
390
- return React19.useMemo(
390
+ return React20.useMemo(
391
391
  () => readonlyWallets.filter((wallet) => wallet.chains.some((i) => i.startsWith("solana:"))).sort((a, b) => a.name.localeCompare(b.name)),
392
392
  [readonlyWallets]
393
393
  );
@@ -417,7 +417,7 @@ function WalletUiAccountContextProvider({
417
417
  }) {
418
418
  const wallets = react$1.useWallets();
419
419
  const accountId = react$3.useStore(storage.value);
420
- const [account, setAccountInternal] = React19.useState(
420
+ const [account, setAccountInternal] = React20.useState(
421
421
  () => getSavedWalletAccount(wallets, accountId)
422
422
  );
423
423
  function setAccount(setStateAction) {
@@ -429,13 +429,13 @@ function WalletUiAccountContextProvider({
429
429
  return nextWalletAccount;
430
430
  });
431
431
  }
432
- React19.useEffect(() => {
432
+ React20.useEffect(() => {
433
433
  const savedWalletAccount = getSavedWalletAccount(wallets, accountId);
434
434
  if (savedWalletAccount) {
435
435
  setAccountInternal(savedWalletAccount);
436
436
  }
437
437
  }, [accountId, wallets]);
438
- const walletAccount = React19.useMemo(() => {
438
+ const walletAccount = React20.useMemo(() => {
439
439
  if (account) {
440
440
  for (const uiWallet of wallets) {
441
441
  for (const uiWalletAccount of uiWallet.accounts) {
@@ -449,12 +449,12 @@ function WalletUiAccountContextProvider({
449
449
  }
450
450
  }
451
451
  }, [account, wallets]);
452
- React19.useEffect(() => {
452
+ React20.useEffect(() => {
453
453
  if (account && !walletAccount) {
454
454
  setAccountInternal(void 0);
455
455
  }
456
456
  }, [account, walletAccount]);
457
- const wallet = React19.useMemo(() => {
457
+ const wallet = React20.useMemo(() => {
458
458
  if (!walletAccount) {
459
459
  return void 0;
460
460
  }
@@ -469,16 +469,16 @@ function WalletUiAccountContextProvider({
469
469
  }
470
470
  }
471
471
  }, [walletAccount, wallets]);
472
- const accountKeys = React19.useMemo(() => {
472
+ const accountKeys = React20.useMemo(() => {
473
473
  if (!account) {
474
474
  return [];
475
475
  }
476
476
  return [cluster.id, react$1.getUiWalletAccountStorageKey(account)].filter(Boolean);
477
477
  }, [account, cluster.id]);
478
- return /* @__PURE__ */ React19__default.default.createElement(
478
+ return /* @__PURE__ */ React20__default.default.createElement(
479
479
  WalletUiAccountContext.Provider,
480
480
  {
481
- value: React19.useMemo(
481
+ value: React20.useMemo(
482
482
  () => ({
483
483
  account: walletAccount,
484
484
  accountKeys,
@@ -514,7 +514,7 @@ function WalletUiClusterContextProvider({
514
514
  storage.set(clusterId2);
515
515
  }
516
516
  };
517
- return /* @__PURE__ */ React19__default.default.createElement(WalletUiClusterContext.Provider, { value }, render(value));
517
+ return /* @__PURE__ */ React20__default.default.createElement(WalletUiClusterContext.Provider, { value }, render(value));
518
518
  }
519
519
  function WalletUiContextProvider({ children, size = "md" }) {
520
520
  const { account, accountKeys, cluster, setAccount, wallet } = useWalletUiAccount();
@@ -546,16 +546,16 @@ function WalletUiContextProvider({ children, size = "md" }) {
546
546
  wallet,
547
547
  wallets
548
548
  };
549
- return /* @__PURE__ */ React19__default.default.createElement(WalletUiContext.Provider, { value }, children);
549
+ return /* @__PURE__ */ React20__default.default.createElement(WalletUiContext.Provider, { value }, children);
550
550
  }
551
551
  function WalletUiSolanaClientContextProvider({
552
552
  children,
553
553
  urlOrMoniker
554
554
  }) {
555
- return /* @__PURE__ */ React19__default.default.createElement(
555
+ return /* @__PURE__ */ React20__default.default.createElement(
556
556
  WalletUiSolanaClientContext.Provider,
557
557
  {
558
- value: React19.useMemo(() => gill.createSolanaClient({ urlOrMoniker }), [urlOrMoniker])
558
+ value: React20.useMemo(() => gill.createSolanaClient({ urlOrMoniker }), [urlOrMoniker])
559
559
  },
560
560
  children
561
561
  );
@@ -566,24 +566,34 @@ function createWalletUiConfig(props) {
566
566
  return { ...props };
567
567
  }
568
568
  function WalletUi({ children, config: { accountStorage, clusters, clusterStorage, ...config } }) {
569
- return /* @__PURE__ */ React19__default.default.createElement(React19__default.default.Fragment, null, /* @__PURE__ */ React19__default.default.createElement(
569
+ return /* @__PURE__ */ React20__default.default.createElement(React20__default.default.Fragment, null, /* @__PURE__ */ React20__default.default.createElement(
570
570
  WalletUiClusterContextProvider,
571
571
  {
572
572
  clusters,
573
573
  storage: clusterStorage,
574
574
  render: ({ cluster }) => {
575
- return /* @__PURE__ */ React19__default.default.createElement(WalletUiSolanaClientContextProvider, { urlOrMoniker: cluster.urlOrMoniker }, /* @__PURE__ */ React19__default.default.createElement(WalletUiAccountContextProvider, { cluster, storage: accountStorage }, /* @__PURE__ */ React19__default.default.createElement(WalletUiContextProvider, { ...config }, children)));
575
+ return /* @__PURE__ */ React20__default.default.createElement(WalletUiSolanaClientContextProvider, { urlOrMoniker: cluster.urlOrMoniker }, /* @__PURE__ */ React20__default.default.createElement(WalletUiAccountContextProvider, { cluster, storage: accountStorage }, /* @__PURE__ */ React20__default.default.createElement(WalletUiContextProvider, { ...config }, children)));
576
576
  }
577
577
  }
578
578
  ));
579
579
  }
580
+ function WalletUiDropdown({ size = "md", ...props }) {
581
+ const { buttonProps, items, dropdown } = useWalletUiDropdown({ size });
582
+ return /* @__PURE__ */ React20__default.default.createElement(BaseDropdown, { ...props, buttonProps: { ...buttonProps }, dropdown, items, size });
583
+ }
584
+
585
+ // src/wallet-ui-account-guard.tsx
586
+ function WalletUiAccountGuard({ fallback = /* @__PURE__ */ React20__default.default.createElement(WalletUiDropdown, null), render }) {
587
+ const { account, accountKeys, cluster, wallet } = useWalletUiAccount();
588
+ return account ? render({ account, accountKeys, cluster, wallet }) : fallback;
589
+ }
580
590
  function WalletUiButton({ ...props }) {
581
- return /* @__PURE__ */ React19__default.default.createElement(BaseButton, { ...props, label: "CLICK" });
591
+ return /* @__PURE__ */ React20__default.default.createElement(BaseButton, { ...props, label: "CLICK" });
582
592
  }
583
593
  function WalletUiClusterDropdown({ buttonProps, size = "md", ...props }) {
584
594
  const dropdown = useBaseDropdown();
585
595
  const { cluster, clusters, setCluster } = useWalletUiCluster();
586
- return /* @__PURE__ */ React19__default.default.createElement(
596
+ return /* @__PURE__ */ React20__default.default.createElement(
587
597
  BaseDropdown,
588
598
  {
589
599
  size,
@@ -602,12 +612,8 @@ function WalletUiClusterDropdown({ buttonProps, size = "md", ...props }) {
602
612
  }
603
613
  );
604
614
  }
605
- function WalletUiDropdown({ size = "md", ...props }) {
606
- const { buttonProps, items, dropdown } = useWalletUiDropdown({ size });
607
- return /* @__PURE__ */ React19__default.default.createElement(BaseDropdown, { ...props, buttonProps: { ...buttonProps }, dropdown, items, size });
608
- }
609
615
  function WalletUiIconNoWallet({ size, ...props }) {
610
- return /* @__PURE__ */ React19__default.default.createElement(BaseSvg, { size, sizes: { lg: 125, md: 100, sm: 75 }, fill: "none", viewBox: "0 0 97 96", ...props }, /* @__PURE__ */ React19__default.default.createElement("circle", { cx: "48.5", cy: "48", r: "48", fill: "url(#paint0_linear_880_5115)", fillOpacity: "0.1" }), /* @__PURE__ */ React19__default.default.createElement(
616
+ return /* @__PURE__ */ React20__default.default.createElement(BaseSvg, { size, sizes: { lg: 125, md: 100, sm: 75 }, fill: "none", viewBox: "0 0 97 96", ...props }, /* @__PURE__ */ React20__default.default.createElement("circle", { cx: "48.5", cy: "48", r: "48", fill: "url(#paint0_linear_880_5115)", fillOpacity: "0.1" }), /* @__PURE__ */ React20__default.default.createElement(
611
617
  "circle",
612
618
  {
613
619
  cx: "48.5",
@@ -617,19 +623,19 @@ function WalletUiIconNoWallet({ size, ...props }) {
617
623
  strokeOpacity: "0.4",
618
624
  strokeWidth: "2"
619
625
  }
620
- ), /* @__PURE__ */ React19__default.default.createElement("g", { clipPath: "url(#clip0_880_5115)" }, /* @__PURE__ */ React19__default.default.createElement(
626
+ ), /* @__PURE__ */ React20__default.default.createElement("g", { clipPath: "url(#clip0_880_5115)" }, /* @__PURE__ */ React20__default.default.createElement(
621
627
  "path",
622
628
  {
623
629
  d: "M65.5769 28.1523H31.4231C27.6057 28.1523 24.5 31.258 24.5 35.0754V60.9215C24.5 64.7389 27.6057 67.8446 31.4231 67.8446H65.5769C69.3943 67.8446 72.5 64.7389 72.5 60.9215V35.0754C72.5 31.258 69.3943 28.1523 65.5769 28.1523ZM69.7308 52.1523H59.5769C57.2865 52.1523 55.4231 50.289 55.4231 47.9985C55.4231 45.708 57.2864 43.8446 59.5769 43.8446H69.7308V52.1523ZM69.7308 41.0754H59.5769C55.7595 41.0754 52.6539 44.1811 52.6539 47.9985C52.6539 51.8159 55.7595 54.9215 59.5769 54.9215H69.7308V60.9215C69.7308 63.2119 67.8674 65.0754 65.5769 65.0754H31.4231C29.1327 65.0754 27.2692 63.212 27.2692 60.9215V35.0754C27.2692 32.785 29.1326 30.9215 31.4231 30.9215H65.5769C67.8673 30.9215 69.7308 32.7849 69.7308 35.0754V41.0754Z",
624
630
  fill: "url(#paint2_linear_880_5115)"
625
631
  }
626
- ), /* @__PURE__ */ React19__default.default.createElement(
632
+ ), /* @__PURE__ */ React20__default.default.createElement(
627
633
  "path",
628
634
  {
629
635
  d: "M61.4231 46.6172H59.577C58.8123 46.6172 58.1924 47.2371 58.1924 48.0018C58.1924 48.7665 58.8123 49.3863 59.577 49.3863H61.4231C62.1878 49.3863 62.8077 48.7664 62.8077 48.0018C62.8077 47.2371 62.1878 46.6172 61.4231 46.6172Z",
630
636
  fill: "url(#paint3_linear_880_5115)"
631
637
  }
632
- )), /* @__PURE__ */ React19__default.default.createElement("defs", null, /* @__PURE__ */ React19__default.default.createElement(
638
+ )), /* @__PURE__ */ React20__default.default.createElement("defs", null, /* @__PURE__ */ React20__default.default.createElement(
633
639
  "linearGradient",
634
640
  {
635
641
  id: "paint0_linear_880_5115",
@@ -639,13 +645,13 @@ function WalletUiIconNoWallet({ size, ...props }) {
639
645
  y2: "8.42498",
640
646
  gradientUnits: "userSpaceOnUse"
641
647
  },
642
- /* @__PURE__ */ React19__default.default.createElement("stop", { stopColor: "#9945FF" }),
643
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "0.14", stopColor: "#8A53F4" }),
644
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "0.42", stopColor: "#6377D6" }),
645
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "0.79", stopColor: "#24B0A7" }),
646
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "0.99", stopColor: "#00D18C" }),
647
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "1", stopColor: "#00D18C" })
648
- ), /* @__PURE__ */ React19__default.default.createElement(
648
+ /* @__PURE__ */ React20__default.default.createElement("stop", { stopColor: "#9945FF" }),
649
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "0.14", stopColor: "#8A53F4" }),
650
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "0.42", stopColor: "#6377D6" }),
651
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "0.79", stopColor: "#24B0A7" }),
652
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "0.99", stopColor: "#00D18C" }),
653
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "1", stopColor: "#00D18C" })
654
+ ), /* @__PURE__ */ React20__default.default.createElement(
649
655
  "linearGradient",
650
656
  {
651
657
  id: "paint1_linear_880_5115",
@@ -655,13 +661,13 @@ function WalletUiIconNoWallet({ size, ...props }) {
655
661
  y2: "8.42498",
656
662
  gradientUnits: "userSpaceOnUse"
657
663
  },
658
- /* @__PURE__ */ React19__default.default.createElement("stop", { stopColor: "#9945FF" }),
659
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "0.14", stopColor: "#8A53F4" }),
660
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "0.42", stopColor: "#6377D6" }),
661
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "0.79", stopColor: "#24B0A7" }),
662
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "0.99", stopColor: "#00D18C" }),
663
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "1", stopColor: "#00D18C" })
664
- ), /* @__PURE__ */ React19__default.default.createElement(
664
+ /* @__PURE__ */ React20__default.default.createElement("stop", { stopColor: "#9945FF" }),
665
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "0.14", stopColor: "#8A53F4" }),
666
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "0.42", stopColor: "#6377D6" }),
667
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "0.79", stopColor: "#24B0A7" }),
668
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "0.99", stopColor: "#00D18C" }),
669
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "1", stopColor: "#00D18C" })
670
+ ), /* @__PURE__ */ React20__default.default.createElement(
665
671
  "linearGradient",
666
672
  {
667
673
  id: "paint2_linear_880_5115",
@@ -671,13 +677,13 @@ function WalletUiIconNoWallet({ size, ...props }) {
671
677
  y2: "23.7879",
672
678
  gradientUnits: "userSpaceOnUse"
673
679
  },
674
- /* @__PURE__ */ React19__default.default.createElement("stop", { stopColor: "#9945FF" }),
675
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "0.14", stopColor: "#8A53F4" }),
676
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "0.42", stopColor: "#6377D6" }),
677
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "0.79", stopColor: "#24B0A7" }),
678
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "0.99", stopColor: "#00D18C" }),
679
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "1", stopColor: "#00D18C" })
680
- ), /* @__PURE__ */ React19__default.default.createElement(
680
+ /* @__PURE__ */ React20__default.default.createElement("stop", { stopColor: "#9945FF" }),
681
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "0.14", stopColor: "#8A53F4" }),
682
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "0.42", stopColor: "#6377D6" }),
683
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "0.79", stopColor: "#24B0A7" }),
684
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "0.99", stopColor: "#00D18C" }),
685
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "1", stopColor: "#00D18C" })
686
+ ), /* @__PURE__ */ React20__default.default.createElement(
681
687
  "linearGradient",
682
688
  {
683
689
  id: "paint3_linear_880_5115",
@@ -687,22 +693,22 @@ function WalletUiIconNoWallet({ size, ...props }) {
687
693
  y2: "45.4453",
688
694
  gradientUnits: "userSpaceOnUse"
689
695
  },
690
- /* @__PURE__ */ React19__default.default.createElement("stop", { stopColor: "#9945FF" }),
691
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "0.14", stopColor: "#8A53F4" }),
692
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "0.42", stopColor: "#6377D6" }),
693
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "0.79", stopColor: "#24B0A7" }),
694
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "0.99", stopColor: "#00D18C" }),
695
- /* @__PURE__ */ React19__default.default.createElement("stop", { offset: "1", stopColor: "#00D18C" })
696
- ), /* @__PURE__ */ React19__default.default.createElement("clipPath", { id: "clip0_880_5115" }, /* @__PURE__ */ React19__default.default.createElement("rect", { width: "48", height: "48", fill: "white", transform: "translate(24.5 24)" }))));
696
+ /* @__PURE__ */ React20__default.default.createElement("stop", { stopColor: "#9945FF" }),
697
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "0.14", stopColor: "#8A53F4" }),
698
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "0.42", stopColor: "#6377D6" }),
699
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "0.79", stopColor: "#24B0A7" }),
700
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "0.99", stopColor: "#00D18C" }),
701
+ /* @__PURE__ */ React20__default.default.createElement("stop", { offset: "1", stopColor: "#00D18C" })
702
+ ), /* @__PURE__ */ React20__default.default.createElement("clipPath", { id: "clip0_880_5115" }, /* @__PURE__ */ React20__default.default.createElement("rect", { width: "48", height: "48", fill: "white", transform: "translate(24.5 24)" }))));
697
703
  }
698
704
  function WalletUiLabel({ className, size, wallet, ...props }) {
699
705
  if (!wallet) {
700
706
  return null;
701
707
  }
702
- return /* @__PURE__ */ React19__default.default.createElement("span", { "data-wu": "wallet-ui-label", className: `${size ?? "md"} ${className ?? ""}`, ...props }, wallet.name);
708
+ return /* @__PURE__ */ React20__default.default.createElement("span", { "data-wu": "wallet-ui-label", className: `${size ?? "md"} ${className ?? ""}`, ...props }, wallet.name);
703
709
  }
704
710
  function WalletUiListButton({ className, select, size = "md", wallet, ...props }) {
705
- const [pending, setPending] = React19__default.default.useState(false);
711
+ const [pending, setPending] = React20__default.default.useState(false);
706
712
  function handleSelect() {
707
713
  if (!select) {
708
714
  return;
@@ -714,7 +720,7 @@ function WalletUiListButton({ className, select, size = "md", wallet, ...props }
714
720
  }
715
721
  void select(account).finally(() => setPending(false));
716
722
  }
717
- return /* @__PURE__ */ React19__default.default.createElement(
723
+ return /* @__PURE__ */ React20__default.default.createElement(
718
724
  "button",
719
725
  {
720
726
  disabled: pending,
@@ -723,20 +729,20 @@ function WalletUiListButton({ className, select, size = "md", wallet, ...props }
723
729
  onClick: handleSelect,
724
730
  ...props
725
731
  },
726
- /* @__PURE__ */ React19__default.default.createElement(WalletUiIcon, { wallet, size }),
727
- /* @__PURE__ */ React19__default.default.createElement(WalletUiLabel, { wallet, size })
732
+ /* @__PURE__ */ React20__default.default.createElement(WalletUiIcon, { wallet, size }),
733
+ /* @__PURE__ */ React20__default.default.createElement(WalletUiLabel, { wallet, size })
728
734
  );
729
735
  }
730
736
 
731
737
  // src/wallet-ui-list.tsx
732
738
  function WalletUiList({ className, select, size = "md", wallets, ...props }) {
733
- return /* @__PURE__ */ React19__default.default.createElement("div", { "data-wu": "wallet-ui-list", className: `${size} ${className ?? ""}`, ...props }, wallets.map((wallet) => /* @__PURE__ */ React19__default.default.createElement(WalletUiListButton, { key: wallet.name, select, size, wallet })));
739
+ return /* @__PURE__ */ React20__default.default.createElement("div", { "data-wu": "wallet-ui-list", className: `${size} ${className ?? ""}`, ...props }, wallets.map((wallet) => /* @__PURE__ */ React20__default.default.createElement(WalletUiListButton, { key: wallet.name, select, size, wallet })));
734
740
  }
735
741
  function WalletUiModal({ size = "md", wallets, select, ...props }) {
736
- return /* @__PURE__ */ React19__default.default.createElement(BaseModal, { description: "Connect a wallet on Solana to continue", size, ...props }, /* @__PURE__ */ React19__default.default.createElement(WalletUiList, { size, wallets, select }));
742
+ return /* @__PURE__ */ React20__default.default.createElement(BaseModal, { description: "Connect a wallet on Solana to continue", size, ...props }, /* @__PURE__ */ React20__default.default.createElement(WalletUiList, { size, wallets, select }));
737
743
  }
738
744
  function WalletUiModalTrigger({ label = "Select Wallet", modal, ...props }) {
739
- return /* @__PURE__ */ React19__default.default.createElement(BaseButton, { label, onClick: () => void modal.open(), ...props });
745
+ return /* @__PURE__ */ React20__default.default.createElement(BaseButton, { label, onClick: () => void modal.open(), ...props });
740
746
  }
741
747
 
742
748
  exports.BaseButton = BaseButton;
@@ -748,6 +754,7 @@ exports.BaseSvg = BaseSvg;
748
754
  exports.WalletUi = WalletUi;
749
755
  exports.WalletUiAccountContext = WalletUiAccountContext;
750
756
  exports.WalletUiAccountContextProvider = WalletUiAccountContextProvider;
757
+ exports.WalletUiAccountGuard = WalletUiAccountGuard;
751
758
  exports.WalletUiButton = WalletUiButton;
752
759
  exports.WalletUiClusterContext = WalletUiClusterContext;
753
760
  exports.WalletUiClusterContextProvider = WalletUiClusterContextProvider;