@iota/dapp-kit 0.2.0 → 0.3.1

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 (460) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +14 -12
  3. package/dist/cjs/components/AccountDropdownMenu.css +26 -54
  4. package/dist/cjs/components/AccountDropdownMenu.css.css +18 -27
  5. package/dist/cjs/components/AccountDropdownMenu.css.css.map +3 -3
  6. package/dist/cjs/components/AccountDropdownMenu.css.d.ts +0 -1
  7. package/dist/cjs/components/AccountDropdownMenu.css.js +4 -6
  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.d.ts +3 -1
  11. package/dist/cjs/components/AccountDropdownMenu.js +25 -21
  12. package/dist/cjs/components/AccountDropdownMenu.js.map +3 -3
  13. package/dist/cjs/components/ConnectButton.css +181 -190
  14. package/dist/cjs/components/ConnectButton.css.map +3 -3
  15. package/dist/cjs/components/ConnectButton.d.ts +5 -3
  16. package/dist/cjs/components/ConnectButton.js +345 -664
  17. package/dist/cjs/components/ConnectButton.js.map +4 -4
  18. package/dist/cjs/components/IotaClientProvider.d.ts +0 -1
  19. package/dist/cjs/components/IotaClientProvider.js +1 -1
  20. package/dist/cjs/components/IotaClientProvider.js.map +2 -2
  21. package/dist/cjs/components/WalletProvider.d.ts +3 -3
  22. package/dist/cjs/components/WalletProvider.js +108 -153
  23. package/dist/cjs/components/WalletProvider.js.map +3 -3
  24. package/dist/cjs/components/connect-modal/ConnectModal.css +214 -172
  25. package/dist/cjs/components/connect-modal/ConnectModal.css.css +69 -32
  26. package/dist/cjs/components/connect-modal/ConnectModal.css.css.map +3 -3
  27. package/dist/cjs/components/connect-modal/ConnectModal.css.d.ts +5 -1
  28. package/dist/cjs/components/connect-modal/ConnectModal.css.js +15 -7
  29. package/dist/cjs/components/connect-modal/ConnectModal.css.js.map +2 -2
  30. package/dist/cjs/components/connect-modal/ConnectModal.css.map +3 -3
  31. package/dist/cjs/components/connect-modal/ConnectModal.js +412 -702
  32. package/dist/cjs/components/connect-modal/ConnectModal.js.map +4 -4
  33. package/dist/cjs/components/connect-modal/InfoSection.css +7 -11
  34. package/dist/cjs/components/connect-modal/InfoSection.css.css.map +1 -1
  35. package/dist/cjs/components/connect-modal/InfoSection.css.map +3 -3
  36. package/dist/cjs/components/connect-modal/InfoSection.js +1 -1
  37. package/dist/cjs/components/connect-modal/InfoSection.js.map +2 -2
  38. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css +145 -0
  39. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.css +32 -0
  40. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.css.map +7 -0
  41. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.d.ts +5 -0
  42. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.js +35 -0
  43. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.js.map +7 -0
  44. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.map +7 -0
  45. package/dist/cjs/components/connect-modal/views/ConnectionStatus.d.ts +8 -0
  46. package/dist/cjs/components/connect-modal/views/ConnectionStatus.js +173 -0
  47. package/dist/cjs/components/connect-modal/views/ConnectionStatus.js.map +7 -0
  48. package/dist/cjs/components/connect-modal/views/GetTheWallet.css.css.map +1 -1
  49. package/dist/cjs/components/connect-modal/views/GetTheWallet.css.map +1 -1
  50. package/dist/cjs/components/connect-modal/views/GetTheWallet.js +11 -384
  51. package/dist/cjs/components/connect-modal/views/GetTheWallet.js.map +2 -2
  52. package/dist/cjs/components/connect-modal/views/GettingStarted.css +144 -0
  53. package/dist/cjs/components/connect-modal/views/GettingStarted.css.css +23 -0
  54. package/dist/cjs/components/connect-modal/views/GettingStarted.css.css.map +7 -0
  55. package/dist/cjs/components/connect-modal/views/GettingStarted.css.d.ts +3 -0
  56. package/dist/cjs/components/connect-modal/views/GettingStarted.css.js +31 -0
  57. package/dist/cjs/components/connect-modal/views/GettingStarted.css.js.map +7 -0
  58. package/dist/cjs/components/connect-modal/views/GettingStarted.css.map +7 -0
  59. package/dist/cjs/components/connect-modal/views/GettingStarted.d.ts +1 -0
  60. package/dist/cjs/components/connect-modal/views/GettingStarted.js +172 -0
  61. package/dist/cjs/components/connect-modal/views/GettingStarted.js.map +7 -0
  62. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css +95 -0
  63. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.css +17 -0
  64. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.css.map +7 -0
  65. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.d.ts +2 -0
  66. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.js +29 -0
  67. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.js.map +7 -0
  68. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.map +7 -0
  69. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.d.ts +1 -0
  70. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.js +135 -0
  71. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.js.map +7 -0
  72. package/dist/cjs/components/connect-modal/views/index.css +115 -124
  73. package/dist/cjs/components/connect-modal/views/index.css.map +3 -3
  74. package/dist/cjs/components/connect-modal/views/index.d.ts +2 -1
  75. package/dist/cjs/components/connect-modal/views/index.js +135 -633
  76. package/dist/cjs/components/connect-modal/views/index.js.map +4 -4
  77. package/dist/cjs/components/connect-modal/wallet-list/WalletList.css +10 -22
  78. package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.css +2 -5
  79. package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.css.map +3 -3
  80. package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.js.map +1 -1
  81. package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.map +3 -3
  82. package/dist/cjs/components/connect-modal/wallet-list/WalletList.d.ts +4 -4
  83. package/dist/cjs/components/connect-modal/wallet-list/WalletList.js +67 -38
  84. package/dist/cjs/components/connect-modal/wallet-list/WalletList.js.map +4 -4
  85. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css +8 -17
  86. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.css +8 -17
  87. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.css.map +3 -3
  88. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.d.ts +0 -1
  89. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.js +2 -4
  90. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.js.map +2 -2
  91. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.map +3 -3
  92. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.js +5 -32
  93. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.js.map +4 -4
  94. package/dist/cjs/components/icons/BackIcon.d.ts +2 -0
  95. package/dist/cjs/components/icons/BackIcon.js +36 -0
  96. package/dist/cjs/components/icons/BackIcon.js.map +7 -0
  97. package/dist/cjs/components/icons/IotaIcon.js +11 -384
  98. package/dist/cjs/components/icons/IotaIcon.js.map +2 -2
  99. package/dist/cjs/components/styling/InjectedThemeStyles.js +2 -0
  100. package/dist/cjs/components/styling/InjectedThemeStyles.js.map +2 -2
  101. package/dist/cjs/components/styling/StyleMarker.css +1 -16
  102. package/dist/cjs/components/styling/StyleMarker.css.css +1 -16
  103. package/dist/cjs/components/styling/StyleMarker.css.css.map +3 -3
  104. package/dist/cjs/components/styling/StyleMarker.css.map +3 -3
  105. package/dist/cjs/components/styling/StyleMarker.d.ts +0 -1
  106. package/dist/cjs/components/styling/StyleMarker.js +4 -4
  107. package/dist/cjs/components/styling/StyleMarker.js.map +3 -3
  108. package/dist/cjs/components/ui/Button.css.css.map +1 -1
  109. package/dist/cjs/components/ui/Button.css.map +1 -1
  110. package/dist/cjs/components/ui/Button.d.ts +1 -1
  111. package/dist/cjs/components/ui/Heading.css.css.map +1 -1
  112. package/dist/cjs/components/ui/Heading.css.map +1 -1
  113. package/dist/cjs/components/ui/Heading.d.ts +0 -1
  114. package/dist/cjs/components/ui/IconButton.css.css.map +1 -1
  115. package/dist/cjs/components/ui/IconButton.css.map +1 -1
  116. package/dist/cjs/components/ui/IconButton.d.ts +1 -1
  117. package/dist/cjs/components/ui/Text.css +7 -11
  118. package/dist/cjs/components/ui/Text.css.css +7 -11
  119. package/dist/cjs/components/ui/Text.css.css.map +3 -3
  120. package/dist/cjs/components/ui/Text.css.d.ts +0 -3
  121. package/dist/cjs/components/ui/Text.css.js +1 -1
  122. package/dist/cjs/components/ui/Text.css.js.map +2 -2
  123. package/dist/cjs/components/ui/Text.css.map +3 -3
  124. package/dist/cjs/components/ui/Text.d.ts +0 -1
  125. package/dist/cjs/components/ui/Text.js +1 -1
  126. package/dist/cjs/components/ui/Text.js.map +2 -2
  127. package/dist/cjs/constants/styleDataAttribute.js.map +1 -1
  128. package/dist/cjs/constants/walletDefaults.d.ts +2 -2
  129. package/dist/cjs/constants/walletDefaults.js +4 -5
  130. package/dist/cjs/constants/walletDefaults.js.map +2 -2
  131. package/dist/cjs/constants/walletMutationKeys.d.ts +3 -2
  132. package/dist/cjs/constants/walletMutationKeys.js +4 -3
  133. package/dist/cjs/constants/walletMutationKeys.js.map +2 -2
  134. package/dist/cjs/contexts/walletContext.d.ts +1 -2
  135. package/dist/cjs/hooks/networkConfig.js +1 -1
  136. package/dist/cjs/hooks/networkConfig.js.map +2 -2
  137. package/dist/cjs/hooks/useIotaClient.js +1 -1
  138. package/dist/cjs/hooks/useIotaClient.js.map +2 -2
  139. package/dist/cjs/hooks/useIotaClientInfiniteQuery.js +1 -1
  140. package/dist/cjs/hooks/useIotaClientInfiniteQuery.js.map +2 -2
  141. package/dist/cjs/hooks/useIotaClientMutation.js +1 -1
  142. package/dist/cjs/hooks/useIotaClientMutation.js.map +2 -2
  143. package/dist/cjs/hooks/useIotaClientQueries.js +1 -1
  144. package/dist/cjs/hooks/useIotaClientQueries.js.map +2 -2
  145. package/dist/cjs/hooks/useIotaClientQuery.js +4 -2
  146. package/dist/cjs/hooks/useIotaClientQuery.js.map +2 -2
  147. package/dist/cjs/hooks/wallet/useAutoConnectWallet.js +17 -7
  148. package/dist/cjs/hooks/wallet/useAutoConnectWallet.js.map +2 -2
  149. package/dist/cjs/hooks/wallet/useConnectWallet.js +10 -4
  150. package/dist/cjs/hooks/wallet/useConnectWallet.js.map +2 -2
  151. package/dist/cjs/hooks/wallet/useCurrentWallet.d.ts +3 -0
  152. package/dist/cjs/hooks/wallet/useCurrentWallet.js +7 -3
  153. package/dist/cjs/hooks/wallet/useCurrentWallet.js.map +2 -2
  154. package/dist/cjs/hooks/wallet/useDisconnectWallet.js +11 -6
  155. package/dist/cjs/hooks/wallet/useDisconnectWallet.js.map +2 -2
  156. package/dist/cjs/hooks/wallet/useReportTransactionEffects.d.ts +15 -0
  157. package/dist/cjs/hooks/wallet/{useSignTransactionBlock.js → useReportTransactionEffects.js} +41 -37
  158. package/dist/cjs/hooks/wallet/useReportTransactionEffects.js.map +7 -0
  159. package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.d.ts +29 -0
  160. package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.js +252 -0
  161. package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.js.map +7 -0
  162. package/dist/cjs/hooks/wallet/useSignPersonalMessage.js +21 -27
  163. package/dist/cjs/hooks/wallet/useSignPersonalMessage.js.map +2 -2
  164. package/dist/cjs/hooks/wallet/useSignTransaction.d.ts +18 -0
  165. package/dist/cjs/hooks/wallet/{useSignAndExecuteTransactionBlock.js → useSignTransaction.js} +87 -47
  166. package/dist/cjs/hooks/wallet/useSignTransaction.js.map +7 -0
  167. package/dist/cjs/hooks/wallet/useSwitchAccount.js +11 -6
  168. package/dist/cjs/hooks/wallet/useSwitchAccount.js.map +2 -2
  169. package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.js +46 -34
  170. package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.js.map +2 -2
  171. package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js +7 -3
  172. package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js.map +2 -2
  173. package/dist/cjs/hooks/wallet/useWalletsChanged.d.ts +1 -1
  174. package/dist/cjs/hooks/wallet/useWalletsChanged.js +7 -6
  175. package/dist/cjs/hooks/wallet/useWalletsChanged.js.map +2 -2
  176. package/dist/cjs/index.css +232 -241
  177. package/dist/cjs/index.css.map +3 -3
  178. package/dist/cjs/index.d.ts +4 -3
  179. package/dist/cjs/index.js +818 -1038
  180. package/dist/cjs/index.js.map +4 -4
  181. package/dist/cjs/themes/lightTheme.js +19 -19
  182. package/dist/cjs/themes/lightTheme.js.map +1 -1
  183. package/dist/cjs/themes/themeContract.js.map +1 -1
  184. package/dist/cjs/types.d.ts +1 -1
  185. package/dist/cjs/types.js.map +1 -1
  186. package/dist/cjs/utils/assertUnreachable.js.map +1 -1
  187. package/dist/cjs/utils/walletUtils.d.ts +2 -2
  188. package/dist/cjs/utils/walletUtils.js +2 -2
  189. package/dist/cjs/utils/walletUtils.js.map +2 -2
  190. package/dist/cjs/walletStore.d.ts +3 -2
  191. package/dist/cjs/walletStore.js +8 -4
  192. package/dist/cjs/walletStore.js.map +2 -2
  193. package/dist/esm/components/AccountDropdownMenu.css +26 -54
  194. package/dist/esm/components/AccountDropdownMenu.css.css +18 -27
  195. package/dist/esm/components/AccountDropdownMenu.css.css.map +3 -3
  196. package/dist/esm/components/AccountDropdownMenu.css.d.ts +0 -1
  197. package/dist/esm/components/AccountDropdownMenu.css.js +4 -6
  198. package/dist/esm/components/AccountDropdownMenu.css.js.map +2 -2
  199. package/dist/esm/components/AccountDropdownMenu.css.map +3 -3
  200. package/dist/esm/components/AccountDropdownMenu.d.ts +3 -1
  201. package/dist/esm/components/AccountDropdownMenu.js +25 -21
  202. package/dist/esm/components/AccountDropdownMenu.js.map +3 -3
  203. package/dist/esm/components/ConnectButton.css +181 -190
  204. package/dist/esm/components/ConnectButton.css.map +3 -3
  205. package/dist/esm/components/ConnectButton.d.ts +5 -3
  206. package/dist/esm/components/ConnectButton.js +346 -665
  207. package/dist/esm/components/ConnectButton.js.map +4 -4
  208. package/dist/esm/components/IotaClientProvider.d.ts +0 -1
  209. package/dist/esm/components/IotaClientProvider.js +1 -1
  210. package/dist/esm/components/IotaClientProvider.js.map +2 -2
  211. package/dist/esm/components/WalletProvider.d.ts +3 -3
  212. package/dist/esm/components/WalletProvider.js +107 -152
  213. package/dist/esm/components/WalletProvider.js.map +3 -3
  214. package/dist/esm/components/connect-modal/ConnectModal.css +214 -172
  215. package/dist/esm/components/connect-modal/ConnectModal.css.css +69 -32
  216. package/dist/esm/components/connect-modal/ConnectModal.css.css.map +3 -3
  217. package/dist/esm/components/connect-modal/ConnectModal.css.d.ts +5 -1
  218. package/dist/esm/components/connect-modal/ConnectModal.css.js +15 -7
  219. package/dist/esm/components/connect-modal/ConnectModal.css.js.map +2 -2
  220. package/dist/esm/components/connect-modal/ConnectModal.css.map +3 -3
  221. package/dist/esm/components/connect-modal/ConnectModal.js +408 -698
  222. package/dist/esm/components/connect-modal/ConnectModal.js.map +4 -4
  223. package/dist/esm/components/connect-modal/InfoSection.css +7 -11
  224. package/dist/esm/components/connect-modal/InfoSection.css.css.map +1 -1
  225. package/dist/esm/components/connect-modal/InfoSection.css.map +3 -3
  226. package/dist/esm/components/connect-modal/InfoSection.js +1 -1
  227. package/dist/esm/components/connect-modal/InfoSection.js.map +2 -2
  228. package/dist/esm/components/connect-modal/views/ConnectionStatus.css +145 -0
  229. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.css +32 -0
  230. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.css.map +7 -0
  231. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.d.ts +5 -0
  232. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.js +14 -0
  233. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.js.map +7 -0
  234. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.map +7 -0
  235. package/dist/esm/components/connect-modal/views/ConnectionStatus.d.ts +8 -0
  236. package/dist/esm/components/connect-modal/views/ConnectionStatus.js +140 -0
  237. package/dist/esm/components/connect-modal/views/ConnectionStatus.js.map +7 -0
  238. package/dist/esm/components/connect-modal/views/GetTheWallet.css.css.map +1 -1
  239. package/dist/esm/components/connect-modal/views/GetTheWallet.css.map +1 -1
  240. package/dist/esm/components/connect-modal/views/GetTheWallet.js +16 -389
  241. package/dist/esm/components/connect-modal/views/GetTheWallet.js.map +3 -3
  242. package/dist/esm/components/connect-modal/views/GettingStarted.css +144 -0
  243. package/dist/esm/components/connect-modal/views/GettingStarted.css.css +23 -0
  244. package/dist/esm/components/connect-modal/views/GettingStarted.css.css.map +7 -0
  245. package/dist/esm/components/connect-modal/views/GettingStarted.css.d.ts +3 -0
  246. package/dist/esm/components/connect-modal/views/GettingStarted.css.js +10 -0
  247. package/dist/esm/components/connect-modal/views/GettingStarted.css.js.map +7 -0
  248. package/dist/esm/components/connect-modal/views/GettingStarted.css.map +7 -0
  249. package/dist/esm/components/connect-modal/views/GettingStarted.d.ts +1 -0
  250. package/dist/esm/components/connect-modal/views/GettingStarted.js +139 -0
  251. package/dist/esm/components/connect-modal/views/GettingStarted.js.map +7 -0
  252. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css +95 -0
  253. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.css +17 -0
  254. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.css.map +7 -0
  255. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.d.ts +2 -0
  256. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.js +8 -0
  257. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.js.map +7 -0
  258. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.map +7 -0
  259. package/dist/esm/components/connect-modal/views/WhatIsAWallet.d.ts +1 -0
  260. package/dist/esm/components/connect-modal/views/WhatIsAWallet.js +102 -0
  261. package/dist/esm/components/connect-modal/views/WhatIsAWallet.js.map +7 -0
  262. package/dist/esm/components/connect-modal/views/index.css +115 -124
  263. package/dist/esm/components/connect-modal/views/index.css.map +3 -3
  264. package/dist/esm/components/connect-modal/views/index.d.ts +2 -1
  265. package/dist/esm/components/connect-modal/views/index.js +137 -635
  266. package/dist/esm/components/connect-modal/views/index.js.map +4 -4
  267. package/dist/esm/components/connect-modal/wallet-list/WalletList.css +10 -22
  268. package/dist/esm/components/connect-modal/wallet-list/WalletList.css.css +2 -5
  269. package/dist/esm/components/connect-modal/wallet-list/WalletList.css.css.map +3 -3
  270. package/dist/esm/components/connect-modal/wallet-list/WalletList.css.js.map +1 -1
  271. package/dist/esm/components/connect-modal/wallet-list/WalletList.css.map +3 -3
  272. package/dist/esm/components/connect-modal/wallet-list/WalletList.d.ts +4 -4
  273. package/dist/esm/components/connect-modal/wallet-list/WalletList.js +65 -36
  274. package/dist/esm/components/connect-modal/wallet-list/WalletList.js.map +4 -4
  275. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css +8 -17
  276. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.css +8 -17
  277. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.css.map +3 -3
  278. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.d.ts +0 -1
  279. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.js +2 -4
  280. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.js.map +2 -2
  281. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.map +3 -3
  282. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.js +5 -32
  283. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.js.map +4 -4
  284. package/dist/esm/components/icons/BackIcon.d.ts +2 -0
  285. package/dist/esm/components/icons/BackIcon.js +15 -0
  286. package/dist/esm/components/icons/BackIcon.js.map +7 -0
  287. package/dist/esm/components/icons/IotaIcon.js +12 -385
  288. package/dist/esm/components/icons/IotaIcon.js.map +2 -2
  289. package/dist/esm/components/styling/InjectedThemeStyles.js +2 -0
  290. package/dist/esm/components/styling/InjectedThemeStyles.js.map +2 -2
  291. package/dist/esm/components/styling/StyleMarker.css +1 -16
  292. package/dist/esm/components/styling/StyleMarker.css.css +1 -16
  293. package/dist/esm/components/styling/StyleMarker.css.css.map +3 -3
  294. package/dist/esm/components/styling/StyleMarker.css.js +4 -4
  295. package/dist/esm/components/styling/StyleMarker.css.js.map +3 -3
  296. package/dist/esm/components/styling/StyleMarker.css.map +3 -3
  297. package/dist/esm/components/styling/StyleMarker.d.ts +0 -1
  298. package/dist/esm/components/styling/StyleMarker.js +4 -4
  299. package/dist/esm/components/styling/StyleMarker.js.map +3 -3
  300. package/dist/esm/components/ui/Button.css.css.map +1 -1
  301. package/dist/esm/components/ui/Button.css.map +1 -1
  302. package/dist/esm/components/ui/Button.d.ts +1 -1
  303. package/dist/esm/components/ui/Heading.css.css.map +1 -1
  304. package/dist/esm/components/ui/Heading.css.map +1 -1
  305. package/dist/esm/components/ui/Heading.d.ts +0 -1
  306. package/dist/esm/components/ui/IconButton.css.css.map +1 -1
  307. package/dist/esm/components/ui/IconButton.css.map +1 -1
  308. package/dist/esm/components/ui/IconButton.d.ts +1 -1
  309. package/dist/esm/components/ui/Text.css +7 -11
  310. package/dist/esm/components/ui/Text.css.css +7 -11
  311. package/dist/esm/components/ui/Text.css.css.map +3 -3
  312. package/dist/esm/components/ui/Text.css.d.ts +0 -3
  313. package/dist/esm/components/ui/Text.css.js +1 -1
  314. package/dist/esm/components/ui/Text.css.js.map +2 -2
  315. package/dist/esm/components/ui/Text.css.map +3 -3
  316. package/dist/esm/components/ui/Text.d.ts +0 -1
  317. package/dist/esm/components/ui/Text.js +1 -1
  318. package/dist/esm/components/ui/Text.js.map +2 -2
  319. package/dist/esm/constants/styleDataAttribute.js.map +1 -1
  320. package/dist/esm/constants/walletDefaults.d.ts +2 -2
  321. package/dist/esm/constants/walletDefaults.js +4 -5
  322. package/dist/esm/constants/walletDefaults.js.map +2 -2
  323. package/dist/esm/constants/walletMutationKeys.d.ts +3 -2
  324. package/dist/esm/constants/walletMutationKeys.js +4 -3
  325. package/dist/esm/constants/walletMutationKeys.js.map +2 -2
  326. package/dist/esm/contexts/walletContext.d.ts +1 -2
  327. package/dist/esm/hooks/networkConfig.js +1 -1
  328. package/dist/esm/hooks/networkConfig.js.map +2 -2
  329. package/dist/esm/hooks/useIotaClient.js +1 -1
  330. package/dist/esm/hooks/useIotaClient.js.map +2 -2
  331. package/dist/esm/hooks/useIotaClientInfiniteQuery.js +1 -1
  332. package/dist/esm/hooks/useIotaClientInfiniteQuery.js.map +2 -2
  333. package/dist/esm/hooks/useIotaClientMutation.js +1 -1
  334. package/dist/esm/hooks/useIotaClientMutation.js.map +2 -2
  335. package/dist/esm/hooks/useIotaClientQueries.js +1 -1
  336. package/dist/esm/hooks/useIotaClientQueries.js.map +2 -2
  337. package/dist/esm/hooks/useIotaClientQuery.js +4 -2
  338. package/dist/esm/hooks/useIotaClientQuery.js.map +2 -2
  339. package/dist/esm/hooks/wallet/useAutoConnectWallet.js +17 -7
  340. package/dist/esm/hooks/wallet/useAutoConnectWallet.js.map +2 -2
  341. package/dist/esm/hooks/wallet/useConnectWallet.js +10 -4
  342. package/dist/esm/hooks/wallet/useConnectWallet.js.map +2 -2
  343. package/dist/esm/hooks/wallet/useCurrentWallet.d.ts +3 -0
  344. package/dist/esm/hooks/wallet/useCurrentWallet.js +7 -3
  345. package/dist/esm/hooks/wallet/useCurrentWallet.js.map +2 -2
  346. package/dist/esm/hooks/wallet/useDisconnectWallet.js +11 -6
  347. package/dist/esm/hooks/wallet/useDisconnectWallet.js.map +2 -2
  348. package/dist/esm/hooks/wallet/useReportTransactionEffects.d.ts +15 -0
  349. package/dist/esm/hooks/wallet/{useSignTransactionBlock.js → useReportTransactionEffects.js} +38 -34
  350. package/dist/esm/hooks/wallet/useReportTransactionEffects.js.map +7 -0
  351. package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.d.ts +29 -0
  352. package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.js +231 -0
  353. package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.js.map +7 -0
  354. package/dist/esm/hooks/wallet/useSignPersonalMessage.js +21 -27
  355. package/dist/esm/hooks/wallet/useSignPersonalMessage.js.map +2 -2
  356. package/dist/esm/hooks/wallet/useSignTransaction.d.ts +18 -0
  357. package/dist/esm/hooks/wallet/{useSignAndExecuteTransactionBlock.js → useSignTransaction.js} +84 -44
  358. package/dist/esm/hooks/wallet/useSignTransaction.js.map +7 -0
  359. package/dist/esm/hooks/wallet/useSwitchAccount.js +11 -6
  360. package/dist/esm/hooks/wallet/useSwitchAccount.js.map +2 -2
  361. package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.js +45 -33
  362. package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.js.map +2 -2
  363. package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js +7 -3
  364. package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js.map +2 -2
  365. package/dist/esm/hooks/wallet/useWalletsChanged.d.ts +1 -1
  366. package/dist/esm/hooks/wallet/useWalletsChanged.js +7 -6
  367. package/dist/esm/hooks/wallet/useWalletsChanged.js.map +2 -2
  368. package/dist/esm/index.css +232 -241
  369. package/dist/esm/index.css.map +3 -3
  370. package/dist/esm/index.d.ts +4 -3
  371. package/dist/esm/index.js +821 -1041
  372. package/dist/esm/index.js.map +4 -4
  373. package/dist/esm/themes/lightTheme.js +19 -19
  374. package/dist/esm/themes/lightTheme.js.map +1 -1
  375. package/dist/esm/themes/themeContract.js.map +1 -1
  376. package/dist/esm/types.d.ts +1 -1
  377. package/dist/esm/utils/assertUnreachable.js.map +1 -1
  378. package/dist/esm/utils/walletUtils.d.ts +2 -2
  379. package/dist/esm/utils/walletUtils.js +2 -2
  380. package/dist/esm/utils/walletUtils.js.map +2 -2
  381. package/dist/esm/walletStore.d.ts +3 -2
  382. package/dist/esm/walletStore.js +8 -4
  383. package/dist/esm/walletStore.js.map +2 -2
  384. package/dist/index.css/package.json +5 -0
  385. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  386. package/dist/tsconfig.tsbuildinfo +1 -1
  387. package/package.json +28 -28
  388. package/src/components/AccountDropdownMenu.css.ts +11 -17
  389. package/src/components/AccountDropdownMenu.tsx +10 -5
  390. package/src/components/ConnectButton.tsx +12 -5
  391. package/src/components/IotaClientProvider.tsx +1 -1
  392. package/src/components/WalletProvider.tsx +11 -22
  393. package/src/components/connect-modal/ConnectModal.css.ts +58 -17
  394. package/src/components/connect-modal/ConnectModal.tsx +101 -16
  395. package/src/components/connect-modal/views/ConnectionStatus.css.ts +36 -0
  396. package/src/components/connect-modal/views/ConnectionStatus.tsx +55 -0
  397. package/src/components/connect-modal/views/GettingStarted.css.ts +26 -0
  398. package/src/components/connect-modal/views/GettingStarted.tsx +40 -0
  399. package/src/components/connect-modal/views/WhatIsAWallet.css.ts +20 -0
  400. package/src/components/connect-modal/views/WhatIsAWallet.tsx +24 -0
  401. package/src/components/connect-modal/views/index.ts +2 -1
  402. package/src/components/connect-modal/wallet-list/WalletList.css.ts +1 -5
  403. package/src/components/connect-modal/wallet-list/WalletList.tsx +25 -11
  404. package/src/components/connect-modal/wallet-list/WalletListItem.css.ts +6 -14
  405. package/src/components/connect-modal/wallet-list/WalletListItem.tsx +9 -12
  406. package/src/components/icons/BackIcon.tsx +18 -0
  407. package/src/components/icons/IotaIcon.tsx +5 -217
  408. package/src/components/styling/InjectedThemeStyles.tsx +4 -0
  409. package/src/components/styling/StyleMarker.css.ts +0 -15
  410. package/src/components/ui/Text.css.ts +1 -1
  411. package/src/constants/walletDefaults.ts +6 -5
  412. package/src/constants/walletMutationKeys.ts +3 -2
  413. package/src/hooks/useIotaClientInfiniteQuery.ts +2 -1
  414. package/src/hooks/useIotaClientQuery.ts +3 -1
  415. package/src/hooks/wallet/useAutoConnectWallet.ts +1 -1
  416. package/src/hooks/wallet/useConnectWallet.ts +6 -1
  417. package/src/hooks/wallet/useCurrentWallet.ts +4 -0
  418. package/src/hooks/wallet/useReportTransactionEffects.ts +87 -0
  419. package/src/hooks/wallet/useSignAndExecuteTransaction.ts +165 -0
  420. package/src/hooks/wallet/useSignPersonalMessage.ts +11 -25
  421. package/src/hooks/wallet/useSignTransaction.ts +117 -0
  422. package/src/hooks/wallet/useUnsafeBurnerWallet.ts +41 -18
  423. package/src/hooks/wallet/useWalletsChanged.ts +5 -4
  424. package/src/index.ts +4 -3
  425. package/src/themes/lightTheme.ts +19 -19
  426. package/src/types.ts +1 -1
  427. package/src/utils/walletUtils.ts +8 -3
  428. package/src/walletStore.ts +12 -1
  429. package/dist/cjs/components/connect-modal/views/WalletConnect.css +0 -179
  430. package/dist/cjs/components/connect-modal/views/WalletConnect.css.css +0 -51
  431. package/dist/cjs/components/connect-modal/views/WalletConnect.css.css.map +0 -7
  432. package/dist/cjs/components/connect-modal/views/WalletConnect.css.d.ts +0 -8
  433. package/dist/cjs/components/connect-modal/views/WalletConnect.css.js +0 -41
  434. package/dist/cjs/components/connect-modal/views/WalletConnect.css.js.map +0 -7
  435. package/dist/cjs/components/connect-modal/views/WalletConnect.css.map +0 -7
  436. package/dist/cjs/components/connect-modal/views/WalletConnect.d.ts +0 -7
  437. package/dist/cjs/components/connect-modal/views/WalletConnect.js +0 -325
  438. package/dist/cjs/components/connect-modal/views/WalletConnect.js.map +0 -7
  439. package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.d.ts +0 -15
  440. package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.js.map +0 -7
  441. package/dist/cjs/hooks/wallet/useSignTransactionBlock.d.ts +0 -13
  442. package/dist/cjs/hooks/wallet/useSignTransactionBlock.js.map +0 -7
  443. package/dist/esm/components/connect-modal/views/WalletConnect.css +0 -179
  444. package/dist/esm/components/connect-modal/views/WalletConnect.css.css +0 -51
  445. package/dist/esm/components/connect-modal/views/WalletConnect.css.css.map +0 -7
  446. package/dist/esm/components/connect-modal/views/WalletConnect.css.d.ts +0 -8
  447. package/dist/esm/components/connect-modal/views/WalletConnect.css.js +0 -20
  448. package/dist/esm/components/connect-modal/views/WalletConnect.css.js.map +0 -7
  449. package/dist/esm/components/connect-modal/views/WalletConnect.css.map +0 -7
  450. package/dist/esm/components/connect-modal/views/WalletConnect.d.ts +0 -7
  451. package/dist/esm/components/connect-modal/views/WalletConnect.js +0 -294
  452. package/dist/esm/components/connect-modal/views/WalletConnect.js.map +0 -7
  453. package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.d.ts +0 -15
  454. package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.js.map +0 -7
  455. package/dist/esm/hooks/wallet/useSignTransactionBlock.d.ts +0 -13
  456. package/dist/esm/hooks/wallet/useSignTransactionBlock.js.map +0 -7
  457. package/src/components/connect-modal/views/WalletConnect.css.ts +0 -55
  458. package/src/components/connect-modal/views/WalletConnect.tsx +0 -79
  459. package/src/hooks/wallet/useSignAndExecuteTransactionBlock.ts +0 -117
  460. package/src/hooks/wallet/useSignTransactionBlock.ts +0 -85
@@ -40,7 +40,7 @@ export type IotaClientProviderProps<T extends NetworkConfigs> = {
40
40
  );
41
41
 
42
42
  const DEFAULT_NETWORKS = {
43
- localnet: { url: getNetwork(Network.Local).url },
43
+ localnet: { url: getNetwork(Network.Localnet).url },
44
44
  };
45
45
 
46
46
  const DEFAULT_CREATE_CLIENT = function createClient(
@@ -9,9 +9,9 @@ import type { StateStorage } from 'zustand/middleware';
9
9
 
10
10
  import {
11
11
  DEFAULT_PREFERRED_WALLETS,
12
- DEFAULT_REQUIRED_FEATURES,
13
12
  DEFAULT_STORAGE,
14
13
  DEFAULT_STORAGE_KEY,
14
+ DEFAULT_WALLET_FILTER,
15
15
  } from '../constants/walletDefaults.js';
16
16
  import { WalletContext } from '../contexts/walletContext.js';
17
17
  import { useAutoConnectWallet } from '../hooks/wallet/useAutoConnectWallet.js';
@@ -19,29 +19,18 @@ import { useUnsafeBurnerWallet } from '../hooks/wallet/useUnsafeBurnerWallet.js'
19
19
  import { useWalletPropertiesChanged } from '../hooks/wallet/useWalletPropertiesChanged.js';
20
20
  import { useWalletsChanged } from '../hooks/wallet/useWalletsChanged.js';
21
21
  import { lightTheme } from '../themes/lightTheme.js';
22
- import type { DynamicTheme, Theme } from '../themes/themeContract.js';
22
+ import type { Theme } from '../themes/themeContract.js';
23
23
  import { createInMemoryStore } from '../utils/stateStorage.js';
24
24
  import { getRegisteredWallets } from '../utils/walletUtils.js';
25
25
  import { createWalletStore } from '../walletStore.js';
26
26
  import { InjectedThemeStyles } from './styling/InjectedThemeStyles.js';
27
- import { darkTheme } from '../themes/darkTheme.js';
28
-
29
- const themeWithSelectorAndMediaQuery: DynamicTheme[] = [
30
- {
31
- selector: '.dark',
32
- variables: darkTheme,
33
- },
34
- {
35
- variables: lightTheme,
36
- },
37
- ];
38
27
 
39
28
  export type WalletProviderProps = {
40
29
  /** A list of wallets that are sorted to the top of the wallet list, if they are available to connect to. By default, wallets are sorted by the order they are loaded in. */
41
30
  preferredWallets?: string[];
42
31
 
43
- /** A list of features that are required for the dApp to function. This filters the list of wallets presented to users when selecting a wallet to connect from, ensuring that only wallets that meet the dApps requirements can connect. */
44
- requiredFeatures?: (keyof WalletWithRequiredFeatures['features'])[];
32
+ /** A filter function to select wallets that support features required for the dApp to function. This filters the list of wallets presented to users when selecting a wallet to connect from, ensuring that only wallets that meet the dApps requirements can connect. */
33
+ walletFilter?: (wallet: WalletWithRequiredFeatures) => boolean;
45
34
 
46
35
  /** Enables the development-only unsafe burner wallet, which can be useful for testing. */
47
36
  enableUnsafeBurner?: boolean;
@@ -65,18 +54,18 @@ export type { WalletWithFeatures };
65
54
 
66
55
  export function WalletProvider({
67
56
  preferredWallets = DEFAULT_PREFERRED_WALLETS,
68
- requiredFeatures = DEFAULT_REQUIRED_FEATURES,
57
+ walletFilter = DEFAULT_WALLET_FILTER,
69
58
  storage = DEFAULT_STORAGE,
70
59
  storageKey = DEFAULT_STORAGE_KEY,
71
60
  enableUnsafeBurner = false,
72
61
  autoConnect = false,
73
- theme = themeWithSelectorAndMediaQuery,
62
+ theme = lightTheme,
74
63
  children,
75
64
  }: WalletProviderProps) {
76
65
  const storeRef = useRef(
77
66
  createWalletStore({
78
67
  autoConnectEnabled: autoConnect,
79
- wallets: getRegisteredWallets(preferredWallets, requiredFeatures),
68
+ wallets: getRegisteredWallets(preferredWallets, walletFilter),
80
69
  storage: storage || createInMemoryStore(),
81
70
  storageKey,
82
71
  }),
@@ -86,7 +75,7 @@ export function WalletProvider({
86
75
  <WalletContext.Provider value={storeRef.current}>
87
76
  <WalletConnectionManager
88
77
  preferredWallets={preferredWallets}
89
- requiredFeatures={requiredFeatures}
78
+ walletFilter={walletFilter}
90
79
  enableUnsafeBurner={enableUnsafeBurner}
91
80
  >
92
81
  {/* TODO: We ideally don't want to inject styles if people aren't using the UI components */}
@@ -99,16 +88,16 @@ export function WalletProvider({
99
88
 
100
89
  type WalletConnectionManagerProps = Pick<
101
90
  WalletProviderProps,
102
- 'preferredWallets' | 'requiredFeatures' | 'enableUnsafeBurner' | 'children'
91
+ 'preferredWallets' | 'walletFilter' | 'enableUnsafeBurner' | 'children'
103
92
  >;
104
93
 
105
94
  function WalletConnectionManager({
106
95
  preferredWallets = DEFAULT_PREFERRED_WALLETS,
107
- requiredFeatures = DEFAULT_REQUIRED_FEATURES,
96
+ walletFilter = DEFAULT_WALLET_FILTER,
108
97
  enableUnsafeBurner = false,
109
98
  children,
110
99
  }: WalletConnectionManagerProps) {
111
- useWalletsChanged(preferredWallets, requiredFeatures);
100
+ useWalletsChanged(preferredWallets, walletFilter);
112
101
  useWalletPropertiesChanged();
113
102
  useUnsafeBurnerWallet(enableUnsafeBurner);
114
103
  useAutoConnectWallet();
@@ -15,16 +15,7 @@ export const overlay = style({
15
15
  });
16
16
 
17
17
  export const title = style({
18
- color: themeVars.colors.body,
19
- fontSize: themeVars.fontSizes.xlarge,
20
- fontWeight: themeVars.fontWeights.medium,
21
- margin: 0,
22
- });
23
-
24
- export const separator = style({
25
- height: 1,
26
- backgroundColor: themeVars.backgroundColors.dropdownMenuSeparator,
27
- width: '100%',
18
+ paddingLeft: 8,
28
19
  });
29
20
 
30
21
  export const content = style({
@@ -32,18 +23,20 @@ export const content = style({
32
23
  borderRadius: themeVars.radii.xlarge,
33
24
  color: themeVars.colors.body,
34
25
  position: 'fixed',
35
- top: 0,
36
- left: '50%',
26
+ bottom: 16,
27
+ left: 16,
28
+ right: 16,
37
29
  display: 'flex',
38
30
  flexDirection: 'column',
31
+ justifyContent: 'space-between',
39
32
  overflow: 'hidden',
40
33
  minHeight: '50vh',
41
34
  maxHeight: '85vh',
42
- width: '330px',
43
- transform: 'translate(-50%, 100%)',
35
+ maxWidth: 700,
44
36
  '@media': {
45
37
  'screen and (min-width: 768px)': {
46
38
  flexDirection: 'row',
39
+ width: '100%',
47
40
  top: '50%',
48
41
  left: '50%',
49
42
  transform: 'translate(-50%, -50%)',
@@ -51,6 +44,31 @@ export const content = style({
51
44
  },
52
45
  });
53
46
 
47
+ export const whatIsAWalletButton = style({
48
+ backgroundColor: themeVars.backgroundColors.modalSecondary,
49
+ padding: 16,
50
+ '@media': {
51
+ 'screen and (min-width: 768px)': {
52
+ display: 'none',
53
+ },
54
+ },
55
+ });
56
+
57
+ export const viewContainer = style({
58
+ display: 'none',
59
+ padding: 20,
60
+ flexGrow: 1,
61
+ '@media': {
62
+ 'screen and (min-width: 768px)': {
63
+ display: 'flex',
64
+ },
65
+ },
66
+ });
67
+
68
+ export const selectedViewContainer = style({
69
+ display: 'flex',
70
+ });
71
+
54
72
  export const backButtonContainer = style({
55
73
  position: 'absolute',
56
74
  top: 20,
@@ -71,10 +89,9 @@ export const closeButtonContainer = style({
71
89
  export const walletListContent = style({
72
90
  display: 'flex',
73
91
  flexDirection: 'column',
74
- width: '100%',
75
92
  flexGrow: 1,
76
- gap: themeVars.spacing.medium,
77
- padding: themeVars.spacing.medium,
93
+ gap: 24,
94
+ padding: 20,
78
95
  backgroundColor: themeVars.backgroundColors.modalPrimary,
79
96
  '@media': {
80
97
  'screen and (min-width: 768px)': {
@@ -82,3 +99,27 @@ export const walletListContent = style({
82
99
  },
83
100
  },
84
101
  });
102
+
103
+ export const walletListContainer = style({
104
+ display: 'flex',
105
+ justifyContent: 'space-between',
106
+ flexDirection: 'column',
107
+ flexGrow: 1,
108
+ '@media': {
109
+ 'screen and (min-width: 768px)': {
110
+ flexDirection: 'row',
111
+ flexBasis: 240,
112
+ flexGrow: 0,
113
+ flexShrink: 0,
114
+ },
115
+ },
116
+ });
117
+
118
+ export const walletListContainerWithViewSelected = style({
119
+ display: 'none',
120
+ '@media': {
121
+ 'screen and (min-width: 768px)': {
122
+ display: 'flex',
123
+ },
124
+ },
125
+ });
@@ -2,17 +2,26 @@
2
2
  // Modifications Copyright (c) 2024 IOTA Stiftung
3
3
  // SPDX-License-Identifier: Apache-2.0
4
4
 
5
+ import type { WalletWithRequiredFeatures } from '@iota/wallet-standard';
5
6
  import * as Dialog from '@radix-ui/react-dialog';
7
+ import clsx from 'clsx';
6
8
  import { useState } from 'react';
7
9
  import type { ReactNode } from 'react';
10
+
11
+ import { useConnectWallet } from '../../hooks/wallet/useConnectWallet.js';
12
+ import { getWalletUniqueIdentifier } from '../../utils/walletUtils.js';
13
+ import { BackIcon } from '../icons/BackIcon.js';
8
14
  import { CloseIcon } from '../icons/CloseIcon.js';
9
15
  import { StyleMarker } from '../styling/StyleMarker.js';
10
16
  import { Heading } from '../ui/Heading.js';
11
17
  import { IconButton } from '../ui/IconButton.js';
12
18
  import * as styles from './ConnectModal.css.js';
13
- import { useWallets } from '../../hooks/wallet/useWallets.js';
14
- import { WalletConnectListView } from './views/WalletConnect.js';
15
- import { GetTheWalletView } from './views/GetTheWallet.js';
19
+ import { ConnectionStatus } from './views/ConnectionStatus.js';
20
+ import { GettingStarted } from './views/GettingStarted.js';
21
+ import { WhatIsAWallet } from './views/WhatIsAWallet.js';
22
+ import { WalletList } from './wallet-list/WalletList.js';
23
+
24
+ type ConnectModalView = 'getting-started' | 'what-is-a-wallet' | 'connection-status';
16
25
 
17
26
  type ControlledModalProps = {
18
27
  /** The controlled open state of the dialog. */
@@ -39,14 +48,55 @@ type ConnectModalProps = {
39
48
  } & (ControlledModalProps | UncontrolledModalProps);
40
49
 
41
50
  export function ConnectModal({ trigger, open, defaultOpen, onOpenChange }: ConnectModalProps) {
42
- const wallets = useWallets();
43
51
  const [isModalOpen, setModalOpen] = useState(open ?? defaultOpen);
52
+ const [currentView, setCurrentView] = useState<ConnectModalView>();
53
+ const [selectedWallet, setSelectedWallet] = useState<WalletWithRequiredFeatures>();
54
+ const { mutate, isError } = useConnectWallet();
55
+
56
+ const resetSelection = () => {
57
+ setSelectedWallet(undefined);
58
+ setCurrentView(undefined);
59
+ };
44
60
 
45
61
  const handleOpenChange = (open: boolean) => {
62
+ if (!open) {
63
+ resetSelection();
64
+ }
46
65
  setModalOpen(open);
47
66
  onOpenChange?.(open);
48
67
  };
49
68
 
69
+ const connectWallet = (wallet: WalletWithRequiredFeatures) => {
70
+ setCurrentView('connection-status');
71
+ mutate(
72
+ { wallet },
73
+ {
74
+ onSuccess: () => handleOpenChange(false),
75
+ },
76
+ );
77
+ };
78
+
79
+ let modalContent: ReactNode | undefined;
80
+ switch (currentView) {
81
+ case 'what-is-a-wallet':
82
+ modalContent = <WhatIsAWallet />;
83
+ break;
84
+ case 'getting-started':
85
+ modalContent = <GettingStarted />;
86
+ break;
87
+ case 'connection-status':
88
+ modalContent = (
89
+ <ConnectionStatus
90
+ selectedWallet={selectedWallet!}
91
+ hadConnectionError={isError}
92
+ onRetryConnection={connectWallet}
93
+ />
94
+ );
95
+ break;
96
+ default:
97
+ modalContent = <WhatIsAWallet />;
98
+ }
99
+
50
100
  return (
51
101
  <Dialog.Root open={open ?? isModalOpen} onOpenChange={handleOpenChange}>
52
102
  <Dialog.Trigger asChild>{trigger}</Dialog.Trigger>
@@ -54,19 +104,54 @@ export function ConnectModal({ trigger, open, defaultOpen, onOpenChange }: Conne
54
104
  <StyleMarker>
55
105
  <Dialog.Overlay className={styles.overlay}>
56
106
  <Dialog.Content className={styles.content} aria-describedby={undefined}>
57
- <div className={styles.walletListContent}>
58
- <Dialog.Title className={styles.title} asChild>
59
- <Heading as="h2">Connect a Wallet</Heading>
60
- </Dialog.Title>
61
- <div className={styles.separator} />
62
- {wallets?.length ? (
63
- <WalletConnectListView
64
- wallets={wallets}
65
- onOpenChange={handleOpenChange}
107
+ <div
108
+ className={clsx(styles.walletListContainer, {
109
+ [styles.walletListContainerWithViewSelected]: !!currentView,
110
+ })}
111
+ >
112
+ <div className={styles.walletListContent}>
113
+ <Dialog.Title className={styles.title} asChild>
114
+ <Heading as="h2">Connect a Wallet</Heading>
115
+ </Dialog.Title>
116
+ <WalletList
117
+ selectedWalletName={getWalletUniqueIdentifier(
118
+ selectedWallet,
119
+ )}
120
+ onPlaceholderClick={() => setCurrentView('getting-started')}
121
+ onSelect={(wallet) => {
122
+ if (
123
+ getWalletUniqueIdentifier(selectedWallet) !==
124
+ getWalletUniqueIdentifier(wallet)
125
+ ) {
126
+ setSelectedWallet(wallet);
127
+ connectWallet(wallet);
128
+ }
129
+ }}
66
130
  />
67
- ) : (
68
- <GetTheWalletView />
69
- )}
131
+ </div>
132
+ <button
133
+ className={styles.whatIsAWalletButton}
134
+ onClick={() => setCurrentView('what-is-a-wallet')}
135
+ type="button"
136
+ >
137
+ What is a Wallet?
138
+ </button>
139
+ </div>
140
+ <div
141
+ className={clsx(styles.viewContainer, {
142
+ [styles.selectedViewContainer]: !!currentView,
143
+ })}
144
+ >
145
+ <div className={styles.backButtonContainer}>
146
+ <IconButton
147
+ type="button"
148
+ aria-label="Back"
149
+ onClick={() => resetSelection()}
150
+ >
151
+ <BackIcon />
152
+ </IconButton>
153
+ </div>
154
+ {modalContent}
70
155
  </div>
71
156
  <Dialog.Close className={styles.closeButtonContainer} asChild>
72
157
  <IconButton type="button" aria-label="Close">
@@ -0,0 +1,36 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // Modifications Copyright (c) 2024 IOTA Stiftung
3
+ // SPDX-License-Identifier: Apache-2.0
4
+
5
+ import { style } from '@vanilla-extract/css';
6
+
7
+ import { themeVars } from '../../../themes/themeContract.js';
8
+
9
+ export const container = style({
10
+ display: 'flex',
11
+ flexDirection: 'column',
12
+ justifyContent: 'center',
13
+ alignItems: 'center',
14
+ width: '100%',
15
+ });
16
+
17
+ export const walletIcon = style({
18
+ objectFit: 'cover',
19
+ width: 72,
20
+ height: 72,
21
+ borderRadius: themeVars.radii.large,
22
+ });
23
+
24
+ export const title = style({
25
+ marginTop: 12,
26
+ });
27
+
28
+ export const connectionStatus = style({
29
+ marginTop: 4,
30
+ });
31
+
32
+ export const retryButtonContainer = style({
33
+ position: 'absolute',
34
+ bottom: 20,
35
+ right: 20,
36
+ });
@@ -0,0 +1,55 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // Modifications Copyright (c) 2024 IOTA Stiftung
3
+ // SPDX-License-Identifier: Apache-2.0
4
+
5
+ import type { WalletWithRequiredFeatures } from '@iota/wallet-standard';
6
+
7
+ import { Button } from '../../ui/Button.js';
8
+ import { Heading } from '../../ui/Heading.js';
9
+ import { Text } from '../../ui/Text.js';
10
+ import * as styles from './ConnectionStatus.css.js';
11
+
12
+ type ConnectionStatusProps = {
13
+ selectedWallet: WalletWithRequiredFeatures;
14
+ hadConnectionError: boolean;
15
+ onRetryConnection: (selectedWallet: WalletWithRequiredFeatures) => void;
16
+ };
17
+
18
+ export function ConnectionStatus({
19
+ selectedWallet,
20
+ hadConnectionError,
21
+ onRetryConnection,
22
+ }: ConnectionStatusProps) {
23
+ return (
24
+ <div className={styles.container}>
25
+ <img
26
+ className={styles.walletIcon}
27
+ src={selectedWallet.icon}
28
+ alt={`${selectedWallet.name} logo`}
29
+ />
30
+ <div className={styles.title}>
31
+ <Heading as="h2" size="xl">
32
+ Opening {selectedWallet.name}
33
+ </Heading>
34
+ </div>
35
+ <div className={styles.connectionStatus}>
36
+ {hadConnectionError ? (
37
+ <Text color="danger">Connection failed</Text>
38
+ ) : (
39
+ <Text color="muted">Confirm connection in the wallet...</Text>
40
+ )}
41
+ </div>
42
+ {hadConnectionError ? (
43
+ <div className={styles.retryButtonContainer}>
44
+ <Button
45
+ type="button"
46
+ variant="outline"
47
+ onClick={() => onRetryConnection(selectedWallet)}
48
+ >
49
+ Retry Connection
50
+ </Button>
51
+ </div>
52
+ ) : null}
53
+ </div>
54
+ );
55
+ }
@@ -0,0 +1,26 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // Modifications Copyright (c) 2024 IOTA Stiftung
3
+ // SPDX-License-Identifier: Apache-2.0
4
+
5
+ import { style } from '@vanilla-extract/css';
6
+
7
+ export const container = style({
8
+ display: 'flex',
9
+ flexDirection: 'column',
10
+ alignItems: 'center',
11
+ });
12
+
13
+ export const content = style({
14
+ display: 'flex',
15
+ flexDirection: 'column',
16
+ justifyContent: 'center',
17
+ flexGrow: 1,
18
+ gap: 20,
19
+ padding: 40,
20
+ });
21
+
22
+ export const installButtonContainer = style({
23
+ position: 'absolute',
24
+ bottom: 20,
25
+ right: 20,
26
+ });
@@ -0,0 +1,40 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // Modifications Copyright (c) 2024 IOTA Stiftung
3
+ // SPDX-License-Identifier: Apache-2.0
4
+
5
+ import { Button } from '../../ui/Button.js';
6
+ import { Heading } from '../../ui/Heading.js';
7
+ import { InfoSection } from '../InfoSection.js';
8
+ import * as styles from './GettingStarted.css.js';
9
+
10
+ export function GettingStarted() {
11
+ return (
12
+ <div className={styles.container}>
13
+ <Heading as="h2">Get Started with IOTA</Heading>
14
+ <div className={styles.content}>
15
+ <InfoSection title="Install the IOTA Wallet Extension">
16
+ We recommend pinning IOTA Wallet to your taskbar for quicker access.
17
+ </InfoSection>
18
+ <InfoSection title="Create or Import a Wallet">
19
+ Be sure to back up your wallet using a secure method. Never share your secret
20
+ phrase with anyone.
21
+ </InfoSection>
22
+ <InfoSection title="Refresh Your Browser">
23
+ Once you set up your wallet, refresh this window browser to load up the
24
+ extension.
25
+ </InfoSection>
26
+ <div className={styles.installButtonContainer}>
27
+ <Button variant="outline" asChild>
28
+ <a
29
+ href="https://chrome.google.com/webstore/detail/iota-wallet/iidjkmdceolghepehaaddojmnjnkkija"
30
+ target="_blank"
31
+ rel="noreferrer"
32
+ >
33
+ Install Wallet Extension
34
+ </a>
35
+ </Button>
36
+ </div>
37
+ </div>
38
+ </div>
39
+ );
40
+ }
@@ -0,0 +1,20 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // Modifications Copyright (c) 2024 IOTA Stiftung
3
+ // SPDX-License-Identifier: Apache-2.0
4
+
5
+ import { style } from '@vanilla-extract/css';
6
+
7
+ export const container = style({
8
+ display: 'flex',
9
+ flexDirection: 'column',
10
+ alignItems: 'center',
11
+ });
12
+
13
+ export const content = style({
14
+ display: 'flex',
15
+ flexDirection: 'column',
16
+ justifyContent: 'center',
17
+ flexGrow: 1,
18
+ gap: 20,
19
+ padding: 40,
20
+ });
@@ -0,0 +1,24 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // Modifications Copyright (c) 2024 IOTA Stiftung
3
+ // SPDX-License-Identifier: Apache-2.0
4
+
5
+ import { Heading } from '../../ui/Heading.js';
6
+ import { InfoSection } from '../InfoSection.js';
7
+ import * as styles from './WhatIsAWallet.css.js';
8
+
9
+ export function WhatIsAWallet() {
10
+ return (
11
+ <div className={styles.container}>
12
+ <Heading as="h2">What is a Wallet</Heading>
13
+ <div className={styles.content}>
14
+ <InfoSection title="Easy Login">
15
+ No need to create new accounts and passwords for every website. Just connect
16
+ your wallet and get going.
17
+ </InfoSection>
18
+ <InfoSection title="Store your Digital Assets">
19
+ Send, receive, store, and display your digital assets like NFTs & coins.
20
+ </InfoSection>
21
+ </div>
22
+ </div>
23
+ );
24
+ }
@@ -1,5 +1,6 @@
1
1
  // Copyright (c) 2024 IOTA Stiftung
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
- export * from './WalletConnect.js';
4
+ export * from './ConnectionStatus.js';
5
+ export * from './WhatIsAWallet.js';
5
6
  export * from './GetTheWallet.js';
@@ -3,13 +3,9 @@
3
3
  // SPDX-License-Identifier: Apache-2.0
4
4
 
5
5
  import { style } from '@vanilla-extract/css';
6
- import { themeVars } from '../../../themes/themeContract.js';
7
6
 
8
7
  export const container = style({
9
8
  display: 'flex',
10
9
  flexDirection: 'column',
11
- gap: themeVars.spacing.xsmall,
12
- height: '100%',
13
- width: '100%',
14
- maxHeight: '330px',
10
+ gap: 4,
15
11
  });
@@ -3,27 +3,41 @@
3
3
  // SPDX-License-Identifier: Apache-2.0
4
4
 
5
5
  import type { WalletWithRequiredFeatures } from '@iota/wallet-standard';
6
+
7
+ import { useWallets } from '../../../hooks/wallet/useWallets.js';
6
8
  import { getWalletUniqueIdentifier } from '../../../utils/walletUtils.js';
9
+ import { IotaIcon } from '../../icons/IotaIcon.js';
7
10
  import * as styles from './WalletList.css.js';
8
11
  import { WalletListItem } from './WalletListItem.js';
9
12
 
10
- interface WalletListProps {
13
+ type WalletListProps = {
11
14
  selectedWalletName?: string;
15
+ onPlaceholderClick: () => void;
12
16
  onSelect: (wallet: WalletWithRequiredFeatures) => void;
13
- wallets: WalletWithRequiredFeatures[];
14
- }
15
- export function WalletList({ selectedWalletName, onSelect, wallets }: WalletListProps) {
17
+ };
18
+
19
+ export function WalletList({ selectedWalletName, onPlaceholderClick, onSelect }: WalletListProps) {
20
+ const wallets = useWallets();
16
21
  return (
17
22
  <ul className={styles.container}>
18
- {wallets.map((wallet) => (
23
+ {wallets.length > 0 ? (
24
+ wallets.map((wallet) => (
25
+ <WalletListItem
26
+ key={getWalletUniqueIdentifier(wallet)}
27
+ name={wallet.name}
28
+ icon={wallet.icon}
29
+ isSelected={getWalletUniqueIdentifier(wallet) === selectedWalletName}
30
+ onClick={() => onSelect(wallet)}
31
+ />
32
+ ))
33
+ ) : (
19
34
  <WalletListItem
20
- key={getWalletUniqueIdentifier(wallet)}
21
- name={wallet.name}
22
- icon={wallet.icon}
23
- isSelected={getWalletUniqueIdentifier(wallet) === selectedWalletName}
24
- onClick={() => onSelect(wallet)}
35
+ name="IOTA Wallet"
36
+ icon={<IotaIcon />}
37
+ onClick={onPlaceholderClick}
38
+ isSelected
25
39
  />
26
- ))}
40
+ )}
27
41
  </ul>
28
42
  );
29
43
  }