@wallet-ui/react 1.2.0-canary-20250814042231 → 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.
- package/dist/index.browser.cjs +107 -100
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.mjs +84 -78
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.native.mjs +84 -78
- package/dist/index.native.mjs.map +1 -1
- package/dist/index.node.cjs +107 -100
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.mjs +84 -78
- package/dist/index.node.mjs.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/wallet-ui-account-guard.d.ts +8 -0
- package/dist/types/wallet-ui-account-guard.d.ts.map +1 -0
- package/package.json +2 -2
package/dist/index.browser.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
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
|
|
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__ */
|
|
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 =
|
|
43
|
+
var WalletUiContext = React20__default.default.createContext({});
|
|
44
44
|
|
|
45
45
|
// src/use-wallet-ui.tsx
|
|
46
46
|
function useWalletUi() {
|
|
47
|
-
return
|
|
47
|
+
return React20__default.default.useContext(WalletUiContext);
|
|
48
48
|
}
|
|
49
|
-
var WalletUiAccountContext =
|
|
49
|
+
var WalletUiAccountContext = React20.createContext({});
|
|
50
50
|
|
|
51
51
|
// src/use-wallet-ui-account.tsx
|
|
52
52
|
function useWalletUiAccount() {
|
|
53
|
-
return
|
|
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
|
-
|
|
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__ */
|
|
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__ */
|
|
108
|
+
const trigger = /* @__PURE__ */ React20__default.default.createElement(
|
|
109
109
|
BaseButton,
|
|
110
110
|
{
|
|
111
111
|
...api.getTriggerProps(),
|
|
112
112
|
size,
|
|
113
|
-
rightSection: showIndicator ? /* @__PURE__ */
|
|
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__ */
|
|
118
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
143
|
+
return /* @__PURE__ */ React20__default.default.createElement(BaseDropdownItemRender, { afterClick, item, size });
|
|
144
144
|
case "WalletConnect" /* WalletConnect */:
|
|
145
|
-
return /* @__PURE__ */
|
|
145
|
+
return /* @__PURE__ */ React20__default.default.createElement(BaseDropdownItemWalletConnect, { afterClick, item, size, wallet: item.wallet });
|
|
146
146
|
case "WalletCopy" /* WalletCopy */:
|
|
147
|
-
return /* @__PURE__ */
|
|
147
|
+
return /* @__PURE__ */ React20__default.default.createElement(BaseDropdownItemRender, { afterClick, item, size });
|
|
148
148
|
case "WalletDisconnect" /* WalletDisconnect */:
|
|
149
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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:
|
|
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:
|
|
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 =
|
|
279
|
+
var WalletUiClusterContext = React20.createContext({});
|
|
280
280
|
|
|
281
281
|
// src/use-wallet-ui-cluster.tsx
|
|
282
282
|
function useWalletUiCluster() {
|
|
283
|
-
return
|
|
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 =
|
|
318
|
-
const itemsConnected =
|
|
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 =
|
|
343
|
+
const items = React20.useMemo(() => {
|
|
344
344
|
return connected ? itemsConnected : itemsWallets;
|
|
345
345
|
}, [connected, itemsConnected, itemsWallets]);
|
|
346
|
-
const buttonProps =
|
|
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__ */
|
|
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 =
|
|
368
|
+
var WalletUiSolanaClientContext = React20.createContext({});
|
|
369
369
|
|
|
370
370
|
// src/use-wallet-ui-solana-client.tsx
|
|
371
371
|
function useWalletUiSolanaClient() {
|
|
372
|
-
return
|
|
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
|
|
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] =
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
452
|
+
React20.useEffect(() => {
|
|
453
453
|
if (account && !walletAccount) {
|
|
454
454
|
setAccountInternal(void 0);
|
|
455
455
|
}
|
|
456
456
|
}, [account, walletAccount]);
|
|
457
|
-
const wallet =
|
|
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 =
|
|
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__ */
|
|
478
|
+
return /* @__PURE__ */ React20__default.default.createElement(
|
|
479
479
|
WalletUiAccountContext.Provider,
|
|
480
480
|
{
|
|
481
|
-
value:
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
555
|
+
return /* @__PURE__ */ React20__default.default.createElement(
|
|
556
556
|
WalletUiSolanaClientContext.Provider,
|
|
557
557
|
{
|
|
558
|
-
value:
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
643
|
-
/* @__PURE__ */
|
|
644
|
-
/* @__PURE__ */
|
|
645
|
-
/* @__PURE__ */
|
|
646
|
-
/* @__PURE__ */
|
|
647
|
-
/* @__PURE__ */
|
|
648
|
-
), /* @__PURE__ */
|
|
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__ */
|
|
659
|
-
/* @__PURE__ */
|
|
660
|
-
/* @__PURE__ */
|
|
661
|
-
/* @__PURE__ */
|
|
662
|
-
/* @__PURE__ */
|
|
663
|
-
/* @__PURE__ */
|
|
664
|
-
), /* @__PURE__ */
|
|
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__ */
|
|
675
|
-
/* @__PURE__ */
|
|
676
|
-
/* @__PURE__ */
|
|
677
|
-
/* @__PURE__ */
|
|
678
|
-
/* @__PURE__ */
|
|
679
|
-
/* @__PURE__ */
|
|
680
|
-
), /* @__PURE__ */
|
|
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__ */
|
|
691
|
-
/* @__PURE__ */
|
|
692
|
-
/* @__PURE__ */
|
|
693
|
-
/* @__PURE__ */
|
|
694
|
-
/* @__PURE__ */
|
|
695
|
-
/* @__PURE__ */
|
|
696
|
-
), /* @__PURE__ */
|
|
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__ */
|
|
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] =
|
|
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__ */
|
|
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__ */
|
|
727
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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;
|