@mysten/dapp-kit 0.10.2 → 0.11.0

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.
Files changed (92) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +3 -4
  3. package/dist/cjs/components/AccountDropdownMenu.css +15 -11
  4. package/dist/cjs/components/AccountDropdownMenu.css.css +15 -11
  5. package/dist/cjs/components/AccountDropdownMenu.css.css.map +3 -3
  6. package/dist/cjs/components/AccountDropdownMenu.css.d.ts +1 -0
  7. package/dist/cjs/components/AccountDropdownMenu.css.js +6 -4
  8. package/dist/cjs/components/AccountDropdownMenu.css.js.map +2 -2
  9. package/dist/cjs/components/AccountDropdownMenu.css.map +3 -3
  10. package/dist/cjs/components/AccountDropdownMenu.js +6 -5
  11. package/dist/cjs/components/AccountDropdownMenu.js.map +2 -2
  12. package/dist/cjs/components/ConnectButton.css +15 -11
  13. package/dist/cjs/components/ConnectButton.css.map +3 -3
  14. package/dist/cjs/components/ConnectButton.js +16 -9
  15. package/dist/cjs/components/ConnectButton.js.map +3 -3
  16. package/dist/cjs/components/WalletProvider.d.ts +5 -5
  17. package/dist/cjs/components/WalletProvider.js +54 -32
  18. package/dist/cjs/components/WalletProvider.js.map +4 -4
  19. package/dist/cjs/components/connect-modal/ConnectModal.js +10 -4
  20. package/dist/cjs/components/connect-modal/ConnectModal.js.map +3 -3
  21. package/dist/cjs/components/connect-modal/wallet-list/WalletList.js +8 -2
  22. package/dist/cjs/components/connect-modal/wallet-list/WalletList.js.map +3 -3
  23. package/dist/cjs/constants/walletDefaults.d.ts +5 -0
  24. package/dist/cjs/constants/walletDefaults.js +53 -0
  25. package/dist/cjs/constants/walletDefaults.js.map +7 -0
  26. package/dist/cjs/hooks/wallet/useAutoConnectWallet.js +9 -1
  27. package/dist/cjs/hooks/wallet/useAutoConnectWallet.js.map +3 -3
  28. package/dist/cjs/hooks/wallet/useWalletsChanged.js.map +1 -1
  29. package/dist/cjs/index.css +15 -11
  30. package/dist/cjs/index.css.map +3 -3
  31. package/dist/cjs/index.js +64 -41
  32. package/dist/cjs/index.js.map +4 -4
  33. package/dist/cjs/utils/stateStorage.d.ts +2 -0
  34. package/dist/cjs/utils/stateStorage.js +40 -0
  35. package/dist/cjs/utils/stateStorage.js.map +7 -0
  36. package/dist/cjs/utils/walletUtils.d.ts +1 -0
  37. package/dist/cjs/utils/walletUtils.js +5 -1
  38. package/dist/cjs/utils/walletUtils.js.map +2 -2
  39. package/dist/cjs/walletStore.d.ts +2 -2
  40. package/dist/cjs/walletStore.js +9 -1
  41. package/dist/cjs/walletStore.js.map +3 -3
  42. package/dist/esm/components/AccountDropdownMenu.css +15 -11
  43. package/dist/esm/components/AccountDropdownMenu.css.css +15 -11
  44. package/dist/esm/components/AccountDropdownMenu.css.css.map +3 -3
  45. package/dist/esm/components/AccountDropdownMenu.css.d.ts +1 -0
  46. package/dist/esm/components/AccountDropdownMenu.css.js +6 -4
  47. package/dist/esm/components/AccountDropdownMenu.css.js.map +2 -2
  48. package/dist/esm/components/AccountDropdownMenu.css.map +3 -3
  49. package/dist/esm/components/AccountDropdownMenu.js +6 -5
  50. package/dist/esm/components/AccountDropdownMenu.js.map +2 -2
  51. package/dist/esm/components/ConnectButton.css +15 -11
  52. package/dist/esm/components/ConnectButton.css.map +3 -3
  53. package/dist/esm/components/ConnectButton.js +16 -9
  54. package/dist/esm/components/ConnectButton.js.map +3 -3
  55. package/dist/esm/components/WalletProvider.d.ts +5 -5
  56. package/dist/esm/components/WalletProvider.js +52 -30
  57. package/dist/esm/components/WalletProvider.js.map +4 -4
  58. package/dist/esm/components/connect-modal/ConnectModal.js +10 -4
  59. package/dist/esm/components/connect-modal/ConnectModal.js.map +3 -3
  60. package/dist/esm/components/connect-modal/wallet-list/WalletList.js +8 -2
  61. package/dist/esm/components/connect-modal/wallet-list/WalletList.js.map +3 -3
  62. package/dist/esm/constants/walletDefaults.d.ts +5 -0
  63. package/dist/esm/constants/walletDefaults.js +30 -0
  64. package/dist/esm/constants/walletDefaults.js.map +7 -0
  65. package/dist/esm/hooks/wallet/useAutoConnectWallet.js +9 -1
  66. package/dist/esm/hooks/wallet/useAutoConnectWallet.js.map +3 -3
  67. package/dist/esm/hooks/wallet/useWalletsChanged.js.map +1 -1
  68. package/dist/esm/index.css +15 -11
  69. package/dist/esm/index.css.map +3 -3
  70. package/dist/esm/index.js +62 -39
  71. package/dist/esm/index.js.map +4 -4
  72. package/dist/esm/utils/stateStorage.d.ts +2 -0
  73. package/dist/esm/utils/stateStorage.js +19 -0
  74. package/dist/esm/utils/stateStorage.js.map +7 -0
  75. package/dist/esm/utils/walletUtils.d.ts +1 -0
  76. package/dist/esm/utils/walletUtils.js +5 -1
  77. package/dist/esm/utils/walletUtils.js.map +2 -2
  78. package/dist/esm/walletStore.js +9 -1
  79. package/dist/esm/walletStore.js.map +3 -3
  80. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  81. package/dist/tsconfig.tsbuildinfo +1 -1
  82. package/package.json +4 -5
  83. package/src/components/AccountDropdownMenu.css.ts +4 -0
  84. package/src/components/AccountDropdownMenu.tsx +1 -1
  85. package/src/components/WalletProvider.tsx +14 -13
  86. package/src/components/connect-modal/ConnectModal.tsx +6 -2
  87. package/src/components/connect-modal/wallet-list/WalletList.tsx +3 -2
  88. package/src/constants/walletDefaults.ts +17 -0
  89. package/src/hooks/wallet/useAutoConnectWallet.ts +4 -1
  90. package/src/utils/stateStorage.ts +19 -0
  91. package/src/utils/walletUtils.ts +4 -0
  92. package/src/walletStore.ts +4 -2
package/dist/esm/index.js CHANGED
@@ -136,6 +136,25 @@ function getSelectedAccount(connectedAccounts, accountAddress) {
136
136
  return connectedAccounts[0];
137
137
  }
138
138
 
139
+ // src/utils/walletUtils.ts
140
+ import { getWallets, isWalletWithRequiredFeatureSet } from "@mysten/wallet-standard";
141
+ function getRegisteredWallets(preferredWallets, requiredFeatures) {
142
+ const walletsApi = getWallets();
143
+ const wallets = walletsApi.get();
144
+ const suiWallets = wallets.filter(
145
+ (wallet) => isWalletWithRequiredFeatureSet(wallet, requiredFeatures)
146
+ );
147
+ return [
148
+ // Preferred wallets, in order:
149
+ ...preferredWallets.map((name) => suiWallets.find((wallet) => wallet.name === name)).filter(Boolean),
150
+ // Wallets in default order:
151
+ ...suiWallets.filter((wallet) => !preferredWallets.includes(wallet.name))
152
+ ];
153
+ }
154
+ function getWalletUniqueIdentifier(wallet) {
155
+ return wallet?.id ?? wallet?.name;
156
+ }
157
+
139
158
  // src/components/icons/BackIcon.tsx
140
159
  import { jsx } from "react/jsx-runtime";
141
160
  function BackIcon(props) {
@@ -450,10 +469,10 @@ function WalletList({ selectedWalletName, onPlaceholderClick, onSelect }) {
450
469
  {
451
470
  name: wallet.name,
452
471
  icon: wallet.icon,
453
- isSelected: wallet.name === selectedWalletName,
472
+ isSelected: getWalletUniqueIdentifier(wallet) === selectedWalletName,
454
473
  onClick: () => onSelect(wallet)
455
474
  },
456
- wallet.name
475
+ getWalletUniqueIdentifier(wallet)
457
476
  )) : /* @__PURE__ */ jsx14(
458
477
  WalletListItem,
459
478
  {
@@ -528,10 +547,10 @@ function ConnectModal({ trigger, open, defaultOpen, onOpenChange }) {
528
547
  /* @__PURE__ */ jsx15(
529
548
  WalletList,
530
549
  {
531
- selectedWalletName: selectedWallet?.name,
550
+ selectedWalletName: getWalletUniqueIdentifier(selectedWallet),
532
551
  onPlaceholderClick: () => setCurrentView("getting-started"),
533
552
  onSelect: (wallet) => {
534
- if (selectedWallet?.name !== wallet.name) {
553
+ if (getWalletUniqueIdentifier(selectedWallet) !== getWalletUniqueIdentifier(wallet)) {
535
554
  setSelectedWallet(wallet);
536
555
  connectWallet(wallet);
537
556
  }
@@ -779,10 +798,11 @@ function useSwitchAccount({
779
798
 
780
799
  // src/components/AccountDropdownMenu.css.ts
781
800
  var connectedAccount = "AccountDropdownMenu_connectedAccount__div2ql0";
782
- var menuContent = "AccountDropdownMenu_menuContent__div2ql1";
783
- var menuItem = "AccountDropdownMenu_menuItem__div2ql2";
784
- var separator = "AccountDropdownMenu_separator__div2ql4";
785
- var switchAccountMenuItem = "AccountDropdownMenu_switchAccountMenuItem__div2ql3";
801
+ var menuContainer = "AccountDropdownMenu_menuContainer__div2ql1";
802
+ var menuContent = "AccountDropdownMenu_menuContent__div2ql2";
803
+ var menuItem = "AccountDropdownMenu_menuItem__div2ql3";
804
+ var separator = "AccountDropdownMenu_separator__div2ql5";
805
+ var switchAccountMenuItem = "AccountDropdownMenu_switchAccountMenuItem__div2ql4";
786
806
 
787
807
  // src/components/icons/CheckIcon.tsx
788
808
  import { jsx as jsx17 } from "react/jsx-runtime";
@@ -824,7 +844,7 @@ function AccountDropdownMenu({ currentAccount }) {
824
844
  /* @__PURE__ */ jsx19(Text, { mono: true, weight: "bold", children: currentAccount.label ?? domain ?? formatAddress(currentAccount.address) }),
825
845
  /* @__PURE__ */ jsx19(ChevronIcon, {})
826
846
  ] }) }) }),
827
- /* @__PURE__ */ jsx19(DropdownMenu.Portal, { children: /* @__PURE__ */ jsx19(StyleMarker, { children: /* @__PURE__ */ jsxs8(DropdownMenu.Content, { className: menuContent, children: [
847
+ /* @__PURE__ */ jsx19(DropdownMenu.Portal, { children: /* @__PURE__ */ jsx19(StyleMarker, { className: menuContainer, children: /* @__PURE__ */ jsxs8(DropdownMenu.Content, { className: menuContent, children: [
828
848
  accounts.map((account) => /* @__PURE__ */ jsx19(
829
849
  AccountDropdownMenuItem,
830
850
  {
@@ -882,6 +902,30 @@ function ConnectButton({
882
902
  // src/components/WalletProvider.tsx
883
903
  import { useRef } from "react";
884
904
 
905
+ // src/utils/stateStorage.ts
906
+ function createInMemoryStore() {
907
+ const store = /* @__PURE__ */ new Map();
908
+ return {
909
+ getItem(key) {
910
+ return store.get(key);
911
+ },
912
+ setItem(key, value) {
913
+ store.set(key, value);
914
+ },
915
+ removeItem(key) {
916
+ store.delete(key);
917
+ }
918
+ };
919
+ }
920
+
921
+ // src/constants/walletDefaults.ts
922
+ var SUI_WALLET_NAME = "Sui Wallet";
923
+ var DEFAULT_STORAGE = typeof window !== "undefined" && window.localStorage ? localStorage : createInMemoryStore();
924
+ var DEFAULT_STORAGE_KEY = "sui-dapp-kit:wallet-connection-info";
925
+ var DEFAULT_REQUIRED_FEATURES = [
926
+ "sui:signTransactionBlock"
927
+ ];
928
+
885
929
  // src/hooks/wallet/useAutoConnectWallet.ts
886
930
  import { useQuery as useQuery2 } from "@tanstack/react-query";
887
931
  import { useLayoutEffect, useState as useState3 } from "react";
@@ -915,7 +959,9 @@ function useAutoConnectWallet() {
915
959
  if (!lastConnectedWalletName || !lastConnectedAccountAddress || isConnected) {
916
960
  return "attempted";
917
961
  }
918
- const wallet = wallets.find((wallet2) => wallet2.name === lastConnectedWalletName);
962
+ const wallet = wallets.find(
963
+ (wallet2) => getWalletUniqueIdentifier(wallet2) === lastConnectedWalletName
964
+ );
919
965
  if (wallet) {
920
966
  await connectWallet({
921
967
  wallet,
@@ -955,7 +1001,7 @@ function useAutoConnectWallet() {
955
1001
 
956
1002
  // src/hooks/wallet/useUnsafeBurnerWallet.ts
957
1003
  import { Ed25519Keypair } from "@mysten/sui.js/keypairs/ed25519";
958
- import { getWallets, ReadonlyWalletAccount, SUI_CHAINS } from "@mysten/wallet-standard";
1004
+ import { getWallets as getWallets2, ReadonlyWalletAccount, SUI_CHAINS } from "@mysten/wallet-standard";
959
1005
  import { useEffect } from "react";
960
1006
  var WALLET_NAME = "Unsafe Burner Wallet";
961
1007
  function useUnsafeBurnerWallet(enabled) {
@@ -970,7 +1016,7 @@ function useUnsafeBurnerWallet(enabled) {
970
1016
  }
971
1017
  function registerUnsafeBurnerWallet(suiClient) {
972
1018
  var _on, _connect, _signPersonalMessage, _signTransactionBlock, _signAndExecuteTransactionBlock;
973
- const walletsApi = getWallets();
1019
+ const walletsApi = getWallets2();
974
1020
  const registeredWallets = walletsApi.get();
975
1021
  if (registeredWallets.find((wallet) => wallet.name === WALLET_NAME)) {
976
1022
  console.warn(
@@ -1090,24 +1136,6 @@ function useWalletPropertiesChanged() {
1090
1136
  // src/hooks/wallet/useWalletsChanged.ts
1091
1137
  import { getWallets as getWallets3 } from "@mysten/wallet-standard";
1092
1138
  import { useEffect as useEffect3 } from "react";
1093
-
1094
- // src/utils/walletUtils.ts
1095
- import { getWallets as getWallets2, isWalletWithRequiredFeatureSet } from "@mysten/wallet-standard";
1096
- function getRegisteredWallets(preferredWallets, requiredFeatures) {
1097
- const walletsApi = getWallets2();
1098
- const wallets = walletsApi.get();
1099
- const suiWallets = wallets.filter(
1100
- (wallet) => isWalletWithRequiredFeatureSet(wallet, requiredFeatures)
1101
- );
1102
- return [
1103
- // Preferred wallets, in order:
1104
- ...preferredWallets.map((name) => suiWallets.find((wallet) => wallet.name === name)).filter(Boolean),
1105
- // Wallets in default order:
1106
- ...suiWallets.filter((wallet) => !preferredWallets.includes(wallet.name))
1107
- ];
1108
- }
1109
-
1110
- // src/hooks/wallet/useWalletsChanged.ts
1111
1139
  function useWalletsChanged(preferredWallets, requiredFeatures) {
1112
1140
  const setWalletRegistered = useWalletStore((state) => state.setWalletRegistered);
1113
1141
  const setWalletUnregistered = useWalletStore((state) => state.setWalletUnregistered);
@@ -1218,7 +1246,7 @@ function createWalletStore({
1218
1246
  accounts: connectedAccounts,
1219
1247
  currentWallet: wallet,
1220
1248
  currentAccount: selectedAccount,
1221
- lastConnectedWalletName: wallet.name,
1249
+ lastConnectedWalletName: getWalletUniqueIdentifier(wallet),
1222
1250
  lastConnectedAccountAddress: selectedAccount?.address,
1223
1251
  connectionStatus: "connected"
1224
1252
  }));
@@ -1373,15 +1401,10 @@ function cssStringFromTheme(theme) {
1373
1401
 
1374
1402
  // src/components/WalletProvider.tsx
1375
1403
  import { jsx as jsx22, jsxs as jsxs9 } from "react/jsx-runtime";
1376
- var SUI_WALLET_NAME = "Sui Wallet";
1377
- var DEFAULT_STORAGE_KEY = "sui-dapp-kit:wallet-connection-info";
1378
- var DEFAULT_REQUIRED_FEATURES = [
1379
- "sui:signTransactionBlock"
1380
- ];
1381
1404
  function WalletProvider({
1382
1405
  preferredWallets = [SUI_WALLET_NAME],
1383
1406
  requiredFeatures = DEFAULT_REQUIRED_FEATURES,
1384
- storage = localStorage,
1407
+ storage = DEFAULT_STORAGE,
1385
1408
  storageKey = DEFAULT_STORAGE_KEY,
1386
1409
  enableUnsafeBurner = false,
1387
1410
  autoConnect = false,
@@ -1392,8 +1415,8 @@ function WalletProvider({
1392
1415
  createWalletStore({
1393
1416
  autoConnectEnabled: autoConnect,
1394
1417
  wallets: getRegisteredWallets(preferredWallets, requiredFeatures),
1395
- storageKey,
1396
- storage
1418
+ storage: storage || createInMemoryStore(),
1419
+ storageKey
1397
1420
  })
1398
1421
  );
1399
1422
  return /* @__PURE__ */ jsx22(WalletContext.Provider, { value: storeRef.current, children: /* @__PURE__ */ jsxs9(