@mysten/dapp-kit 0.1.0 → 0.2.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 (320) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/cjs/components/AccountDropdownMenu.css +86 -21
  3. package/dist/cjs/components/AccountDropdownMenu.css.css +19 -21
  4. package/dist/cjs/components/AccountDropdownMenu.css.css.map +3 -3
  5. package/dist/cjs/components/AccountDropdownMenu.css.d.ts +3 -3
  6. package/dist/cjs/components/AccountDropdownMenu.css.js +6 -6
  7. package/dist/cjs/components/AccountDropdownMenu.css.js.map +2 -2
  8. package/dist/cjs/components/AccountDropdownMenu.css.map +3 -3
  9. package/dist/cjs/components/AccountDropdownMenu.js +89 -27
  10. package/dist/cjs/components/AccountDropdownMenu.js.map +4 -4
  11. package/dist/cjs/components/ConnectButton.css +174 -80
  12. package/dist/cjs/components/ConnectButton.css.map +3 -3
  13. package/dist/cjs/components/ConnectButton.js +250 -148
  14. package/dist/cjs/components/ConnectButton.js.map +4 -4
  15. package/dist/cjs/components/WalletProvider.d.ts +4 -1
  16. package/dist/cjs/components/WalletProvider.js +173 -8
  17. package/dist/cjs/components/WalletProvider.js.map +4 -4
  18. package/dist/cjs/components/connect-modal/ConnectModal.css +155 -59
  19. package/dist/cjs/components/connect-modal/ConnectModal.css.css +22 -33
  20. package/dist/cjs/components/connect-modal/ConnectModal.css.css.map +3 -3
  21. package/dist/cjs/components/connect-modal/ConnectModal.css.d.ts +2 -3
  22. package/dist/cjs/components/connect-modal/ConnectModal.css.js +7 -9
  23. package/dist/cjs/components/connect-modal/ConnectModal.css.js.map +2 -2
  24. package/dist/cjs/components/connect-modal/ConnectModal.css.map +3 -3
  25. package/dist/cjs/components/connect-modal/ConnectModal.js +216 -114
  26. package/dist/cjs/components/connect-modal/ConnectModal.js.map +4 -4
  27. package/dist/cjs/components/connect-modal/InfoSection.css +56 -0
  28. package/dist/cjs/components/connect-modal/InfoSection.css.d.ts +0 -2
  29. package/dist/cjs/components/connect-modal/InfoSection.css.js +1 -5
  30. package/dist/cjs/components/connect-modal/InfoSection.css.js.map +2 -2
  31. package/dist/cjs/components/connect-modal/InfoSection.css.map +3 -3
  32. package/dist/cjs/components/connect-modal/InfoSection.js +85 -6
  33. package/dist/cjs/components/connect-modal/InfoSection.js.map +4 -4
  34. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css +99 -6
  35. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.css +7 -6
  36. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.css.map +3 -3
  37. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.d.ts +2 -2
  38. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.js +5 -5
  39. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.js.map +2 -2
  40. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.map +3 -3
  41. package/dist/cjs/components/connect-modal/views/ConnectionStatus.js +105 -17
  42. package/dist/cjs/components/connect-modal/views/ConnectionStatus.js.map +4 -4
  43. package/dist/cjs/components/connect-modal/views/GettingStarted.css +99 -2
  44. package/dist/cjs/components/connect-modal/views/GettingStarted.css.css +7 -2
  45. package/dist/cjs/components/connect-modal/views/GettingStarted.css.css.map +3 -3
  46. package/dist/cjs/components/connect-modal/views/GettingStarted.css.d.ts +1 -2
  47. package/dist/cjs/components/connect-modal/views/GettingStarted.css.js +3 -5
  48. package/dist/cjs/components/connect-modal/views/GettingStarted.css.js.map +2 -2
  49. package/dist/cjs/components/connect-modal/views/GettingStarted.css.map +3 -3
  50. package/dist/cjs/components/connect-modal/views/GettingStarted.js +123 -20
  51. package/dist/cjs/components/connect-modal/views/GettingStarted.js.map +4 -4
  52. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css +58 -2
  53. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.css +2 -2
  54. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.css.map +2 -2
  55. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.d.ts +0 -1
  56. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.js +2 -4
  57. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.js.map +2 -2
  58. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.map +3 -3
  59. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.js +93 -15
  60. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.js.map +4 -4
  61. package/dist/cjs/components/connect-modal/wallet-list/WalletList.css +39 -16
  62. package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.map +3 -3
  63. package/dist/cjs/components/connect-modal/wallet-list/WalletList.js +66 -14
  64. package/dist/cjs/components/connect-modal/wallet-list/WalletList.js.map +4 -4
  65. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css +39 -16
  66. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.css +14 -16
  67. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.css.map +3 -3
  68. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.d.ts +2 -3
  69. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.js +5 -7
  70. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.js.map +2 -2
  71. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.map +3 -3
  72. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.js +62 -10
  73. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.js.map +4 -4
  74. package/dist/cjs/components/icons/BackIcon.js +1 -1
  75. package/dist/cjs/components/icons/BackIcon.js.map +2 -2
  76. package/dist/cjs/components/icons/CheckIcon.js +1 -1
  77. package/dist/cjs/components/icons/CheckIcon.js.map +1 -1
  78. package/dist/cjs/components/styling/InjectedThemeStyles.d.ts +6 -0
  79. package/dist/cjs/components/styling/InjectedThemeStyles.js +123 -0
  80. package/dist/cjs/components/styling/InjectedThemeStyles.js.map +7 -0
  81. package/dist/cjs/components/styling/StyleMarker.css.css +8 -2
  82. package/dist/cjs/components/styling/StyleMarker.css.css.map +3 -3
  83. package/dist/cjs/components/ui/Button.css +36 -0
  84. package/dist/cjs/components/ui/Button.css.css +36 -0
  85. package/dist/cjs/components/ui/Button.css.css.map +7 -0
  86. package/dist/cjs/components/ui/Button.css.d.ts +33 -0
  87. package/dist/cjs/components/ui/Button.css.js +28 -0
  88. package/dist/cjs/components/ui/Button.css.js.map +7 -0
  89. package/dist/cjs/components/ui/Button.css.map +7 -0
  90. package/dist/cjs/components/ui/Button.d.ts +8 -0
  91. package/dist/cjs/components/ui/Button.js +60 -0
  92. package/dist/cjs/components/ui/Button.js.map +7 -0
  93. package/dist/cjs/components/ui/Heading.css +25 -0
  94. package/dist/cjs/components/ui/Heading.css.css +25 -0
  95. package/dist/cjs/components/ui/Heading.css.css.map +7 -0
  96. package/dist/cjs/components/ui/Heading.css.d.ts +33 -0
  97. package/dist/cjs/components/ui/Heading.css.js +28 -0
  98. package/dist/cjs/components/ui/Heading.css.js.map +7 -0
  99. package/dist/cjs/components/ui/Heading.css.map +7 -0
  100. package/dist/cjs/components/ui/Heading.d.ts +13 -0
  101. package/dist/cjs/components/ui/Heading.js +69 -0
  102. package/dist/cjs/components/ui/Heading.js.map +7 -0
  103. package/dist/cjs/components/ui/IconButton.css +11 -0
  104. package/dist/cjs/components/ui/IconButton.css.css +11 -0
  105. package/dist/cjs/components/ui/IconButton.css.css.map +7 -0
  106. package/dist/cjs/components/ui/IconButton.css.d.ts +1 -0
  107. package/dist/cjs/components/ui/IconButton.css.js +27 -0
  108. package/dist/cjs/components/ui/IconButton.css.js.map +7 -0
  109. package/dist/cjs/components/ui/IconButton.css.map +7 -0
  110. package/dist/cjs/components/ui/IconButton.d.ts +6 -0
  111. package/dist/cjs/components/ui/IconButton.js +52 -0
  112. package/dist/cjs/components/ui/IconButton.js.map +7 -0
  113. package/dist/cjs/components/ui/Text.css +31 -0
  114. package/dist/cjs/components/ui/Text.css.css +31 -0
  115. package/dist/cjs/components/ui/Text.css.css.map +7 -0
  116. package/dist/cjs/components/ui/Text.css.d.ts +33 -0
  117. package/dist/cjs/components/ui/Text.css.js +28 -0
  118. package/dist/cjs/components/ui/Text.css.js.map +7 -0
  119. package/dist/cjs/components/ui/Text.css.map +7 -0
  120. package/dist/cjs/components/ui/Text.d.ts +13 -0
  121. package/dist/cjs/components/ui/Text.js +70 -0
  122. package/dist/cjs/components/ui/Text.js.map +7 -0
  123. package/dist/cjs/hooks/wallet/useAutoConnectWallet.js +6 -3
  124. package/dist/cjs/hooks/wallet/useAutoConnectWallet.js.map +2 -2
  125. package/dist/cjs/hooks/wallet/useConnectWallet.d.ts +4 -2
  126. package/dist/cjs/hooks/wallet/useConnectWallet.js +6 -3
  127. package/dist/cjs/hooks/wallet/useConnectWallet.js.map +2 -2
  128. package/dist/cjs/index.css +174 -80
  129. package/dist/cjs/index.css.map +3 -3
  130. package/dist/cjs/index.d.ts +1 -0
  131. package/dist/cjs/index.js +423 -163
  132. package/dist/cjs/index.js.map +4 -4
  133. package/dist/cjs/themes/lightTheme.d.ts +2 -0
  134. package/dist/cjs/themes/lightTheme.js +83 -0
  135. package/dist/cjs/themes/lightTheme.js.map +7 -0
  136. package/dist/cjs/themes/themeContract.d.ts +140 -0
  137. package/dist/cjs/themes/themeContract.js +88 -0
  138. package/dist/cjs/themes/themeContract.js.map +7 -0
  139. package/dist/cjs/walletStore.d.ts +1 -1
  140. package/dist/cjs/walletStore.js +2 -2
  141. package/dist/cjs/walletStore.js.map +2 -2
  142. package/dist/esm/components/AccountDropdownMenu.css +86 -21
  143. package/dist/esm/components/AccountDropdownMenu.css.css +19 -21
  144. package/dist/esm/components/AccountDropdownMenu.css.css.map +3 -3
  145. package/dist/esm/components/AccountDropdownMenu.css.d.ts +3 -3
  146. package/dist/esm/components/AccountDropdownMenu.css.js +6 -6
  147. package/dist/esm/components/AccountDropdownMenu.css.js.map +2 -2
  148. package/dist/esm/components/AccountDropdownMenu.css.map +3 -3
  149. package/dist/esm/components/AccountDropdownMenu.js +88 -26
  150. package/dist/esm/components/AccountDropdownMenu.js.map +4 -4
  151. package/dist/esm/components/ConnectButton.css +174 -80
  152. package/dist/esm/components/ConnectButton.css.map +3 -3
  153. package/dist/esm/components/ConnectButton.js +238 -136
  154. package/dist/esm/components/ConnectButton.js.map +4 -4
  155. package/dist/esm/components/WalletProvider.d.ts +4 -1
  156. package/dist/esm/components/WalletProvider.js +173 -8
  157. package/dist/esm/components/WalletProvider.js.map +4 -4
  158. package/dist/esm/components/connect-modal/ConnectModal.css +155 -59
  159. package/dist/esm/components/connect-modal/ConnectModal.css.css +22 -33
  160. package/dist/esm/components/connect-modal/ConnectModal.css.css.map +3 -3
  161. package/dist/esm/components/connect-modal/ConnectModal.css.d.ts +2 -3
  162. package/dist/esm/components/connect-modal/ConnectModal.css.js +7 -9
  163. package/dist/esm/components/connect-modal/ConnectModal.css.js.map +2 -2
  164. package/dist/esm/components/connect-modal/ConnectModal.css.map +3 -3
  165. package/dist/esm/components/connect-modal/ConnectModal.js +205 -103
  166. package/dist/esm/components/connect-modal/ConnectModal.js.map +4 -4
  167. package/dist/esm/components/connect-modal/InfoSection.css +56 -0
  168. package/dist/esm/components/connect-modal/InfoSection.css.d.ts +0 -2
  169. package/dist/esm/components/connect-modal/InfoSection.css.js +1 -5
  170. package/dist/esm/components/connect-modal/InfoSection.css.js.map +2 -2
  171. package/dist/esm/components/connect-modal/InfoSection.css.map +3 -3
  172. package/dist/esm/components/connect-modal/InfoSection.js +74 -5
  173. package/dist/esm/components/connect-modal/InfoSection.js.map +4 -4
  174. package/dist/esm/components/connect-modal/views/ConnectionStatus.css +99 -6
  175. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.css +7 -6
  176. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.css.map +3 -3
  177. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.d.ts +2 -2
  178. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.js +5 -5
  179. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.js.map +2 -2
  180. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.map +3 -3
  181. package/dist/esm/components/connect-modal/views/ConnectionStatus.js +103 -17
  182. package/dist/esm/components/connect-modal/views/ConnectionStatus.js.map +4 -4
  183. package/dist/esm/components/connect-modal/views/GettingStarted.css +99 -2
  184. package/dist/esm/components/connect-modal/views/GettingStarted.css.css +7 -2
  185. package/dist/esm/components/connect-modal/views/GettingStarted.css.css.map +3 -3
  186. package/dist/esm/components/connect-modal/views/GettingStarted.css.d.ts +1 -2
  187. package/dist/esm/components/connect-modal/views/GettingStarted.css.js +3 -5
  188. package/dist/esm/components/connect-modal/views/GettingStarted.css.js.map +2 -2
  189. package/dist/esm/components/connect-modal/views/GettingStarted.css.map +3 -3
  190. package/dist/esm/components/connect-modal/views/GettingStarted.js +110 -17
  191. package/dist/esm/components/connect-modal/views/GettingStarted.js.map +4 -4
  192. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css +58 -2
  193. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.css +2 -2
  194. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.css.map +2 -2
  195. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.d.ts +0 -1
  196. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.js +2 -4
  197. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.js.map +2 -2
  198. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.map +3 -3
  199. package/dist/esm/components/connect-modal/views/WhatIsAWallet.js +80 -12
  200. package/dist/esm/components/connect-modal/views/WhatIsAWallet.js.map +4 -4
  201. package/dist/esm/components/connect-modal/wallet-list/WalletList.css +39 -16
  202. package/dist/esm/components/connect-modal/wallet-list/WalletList.css.map +3 -3
  203. package/dist/esm/components/connect-modal/wallet-list/WalletList.js +56 -14
  204. package/dist/esm/components/connect-modal/wallet-list/WalletList.js.map +4 -4
  205. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css +39 -16
  206. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.css +14 -16
  207. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.css.map +3 -3
  208. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.d.ts +2 -3
  209. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.js +5 -7
  210. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.js.map +2 -2
  211. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.map +3 -3
  212. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.js +52 -10
  213. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.js.map +4 -4
  214. package/dist/esm/components/icons/BackIcon.js +1 -1
  215. package/dist/esm/components/icons/BackIcon.js.map +2 -2
  216. package/dist/esm/components/icons/CheckIcon.js +1 -1
  217. package/dist/esm/components/icons/CheckIcon.js.map +1 -1
  218. package/dist/esm/components/styling/InjectedThemeStyles.d.ts +6 -0
  219. package/dist/esm/components/styling/InjectedThemeStyles.js +102 -0
  220. package/dist/esm/components/styling/InjectedThemeStyles.js.map +7 -0
  221. package/dist/esm/components/styling/StyleMarker.css.css +8 -2
  222. package/dist/esm/components/styling/StyleMarker.css.css.map +3 -3
  223. package/dist/esm/components/styling/StyleMarker.css.js +2 -2
  224. package/dist/esm/components/styling/StyleMarker.css.js.map +1 -1
  225. package/dist/esm/components/ui/Button.css +36 -0
  226. package/dist/esm/components/ui/Button.css.css +36 -0
  227. package/dist/esm/components/ui/Button.css.css.map +7 -0
  228. package/dist/esm/components/ui/Button.css.d.ts +33 -0
  229. package/dist/esm/components/ui/Button.css.js +7 -0
  230. package/dist/esm/components/ui/Button.css.js.map +7 -0
  231. package/dist/esm/components/ui/Button.css.map +7 -0
  232. package/dist/esm/components/ui/Button.d.ts +8 -0
  233. package/dist/esm/components/ui/Button.js +29 -0
  234. package/dist/esm/components/ui/Button.js.map +7 -0
  235. package/dist/esm/components/ui/Heading.css +25 -0
  236. package/dist/esm/components/ui/Heading.css.css +25 -0
  237. package/dist/esm/components/ui/Heading.css.css.map +7 -0
  238. package/dist/esm/components/ui/Heading.css.d.ts +33 -0
  239. package/dist/esm/components/ui/Heading.css.js +7 -0
  240. package/dist/esm/components/ui/Heading.css.js.map +7 -0
  241. package/dist/esm/components/ui/Heading.css.map +7 -0
  242. package/dist/esm/components/ui/Heading.d.ts +13 -0
  243. package/dist/esm/components/ui/Heading.js +38 -0
  244. package/dist/esm/components/ui/Heading.js.map +7 -0
  245. package/dist/esm/components/ui/IconButton.css +11 -0
  246. package/dist/esm/components/ui/IconButton.css.css +11 -0
  247. package/dist/esm/components/ui/IconButton.css.css.map +7 -0
  248. package/dist/esm/components/ui/IconButton.css.d.ts +1 -0
  249. package/dist/esm/components/ui/IconButton.css.js +6 -0
  250. package/dist/esm/components/ui/IconButton.css.js.map +7 -0
  251. package/dist/esm/components/ui/IconButton.css.map +7 -0
  252. package/dist/esm/components/ui/IconButton.d.ts +6 -0
  253. package/dist/esm/components/ui/IconButton.js +21 -0
  254. package/dist/esm/components/ui/IconButton.js.map +7 -0
  255. package/dist/esm/components/ui/Text.css +31 -0
  256. package/dist/esm/components/ui/Text.css.css +31 -0
  257. package/dist/esm/components/ui/Text.css.css.map +7 -0
  258. package/dist/esm/components/ui/Text.css.d.ts +33 -0
  259. package/dist/esm/components/ui/Text.css.js +7 -0
  260. package/dist/esm/components/ui/Text.css.js.map +7 -0
  261. package/dist/esm/components/ui/Text.css.map +7 -0
  262. package/dist/esm/components/ui/Text.d.ts +13 -0
  263. package/dist/esm/components/ui/Text.js +39 -0
  264. package/dist/esm/components/ui/Text.js.map +7 -0
  265. package/dist/esm/hooks/wallet/useAutoConnectWallet.js +6 -3
  266. package/dist/esm/hooks/wallet/useAutoConnectWallet.js.map +2 -2
  267. package/dist/esm/hooks/wallet/useConnectWallet.d.ts +4 -2
  268. package/dist/esm/hooks/wallet/useConnectWallet.js +6 -3
  269. package/dist/esm/hooks/wallet/useConnectWallet.js.map +2 -2
  270. package/dist/esm/index.css +174 -80
  271. package/dist/esm/index.css.map +3 -3
  272. package/dist/esm/index.d.ts +1 -0
  273. package/dist/esm/index.js +401 -141
  274. package/dist/esm/index.js.map +4 -4
  275. package/dist/esm/themes/lightTheme.d.ts +2 -0
  276. package/dist/esm/themes/lightTheme.js +62 -0
  277. package/dist/esm/themes/lightTheme.js.map +7 -0
  278. package/dist/esm/themes/themeContract.d.ts +140 -0
  279. package/dist/esm/themes/themeContract.js +67 -0
  280. package/dist/esm/themes/themeContract.js.map +7 -0
  281. package/dist/esm/walletStore.d.ts +1 -1
  282. package/dist/esm/walletStore.js +2 -2
  283. package/dist/esm/walletStore.js.map +2 -2
  284. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  285. package/dist/tsconfig.tsbuildinfo +1 -1
  286. package/package.json +3 -1
  287. package/src/components/AccountDropdownMenu.css.ts +20 -20
  288. package/src/components/AccountDropdownMenu.tsx +22 -20
  289. package/src/components/ConnectButton.tsx +2 -1
  290. package/src/components/WalletProvider.tsx +9 -0
  291. package/src/components/connect-modal/ConnectModal.css.ts +15 -26
  292. package/src/components/connect-modal/ConnectModal.tsx +18 -14
  293. package/src/components/connect-modal/InfoSection.css.ts +0 -4
  294. package/src/components/connect-modal/InfoSection.tsx +8 -2
  295. package/src/components/connect-modal/views/ConnectionStatus.css.ts +8 -5
  296. package/src/components/connect-modal/views/ConnectionStatus.tsx +19 -11
  297. package/src/components/connect-modal/views/GettingStarted.css.ts +5 -3
  298. package/src/components/connect-modal/views/GettingStarted.tsx +14 -9
  299. package/src/components/connect-modal/views/WhatIsAWallet.css.ts +0 -2
  300. package/src/components/connect-modal/views/WhatIsAWallet.tsx +2 -1
  301. package/src/components/connect-modal/wallet-list/WalletList.css.ts +1 -1
  302. package/src/components/connect-modal/wallet-list/WalletListItem.css.ts +15 -16
  303. package/src/components/connect-modal/wallet-list/WalletListItem.tsx +10 -3
  304. package/src/components/icons/BackIcon.tsx +3 -1
  305. package/src/components/icons/CheckIcon.tsx +1 -1
  306. package/src/components/styling/InjectedThemeStyles.tsx +49 -0
  307. package/src/components/styling/StyleMarker.css.ts +8 -1
  308. package/src/components/ui/Button.css.ts +50 -0
  309. package/src/components/ui/Button.tsx +31 -0
  310. package/src/components/ui/Heading.css.ts +43 -0
  311. package/src/components/ui/Heading.tsx +52 -0
  312. package/src/components/ui/IconButton.css.ts +16 -0
  313. package/src/components/ui/IconButton.tsx +24 -0
  314. package/src/components/ui/Text.css.ts +38 -0
  315. package/src/components/ui/Text.tsx +50 -0
  316. package/src/hooks/wallet/useConnectWallet.ts +6 -3
  317. package/src/index.ts +1 -0
  318. package/src/themes/lightTheme.ts +63 -0
  319. package/src/themes/themeContract.ts +97 -0
  320. package/src/walletStore.ts +3 -2
@@ -6,6 +6,7 @@ import type { ButtonHTMLAttributes, ReactNode } from 'react';
6
6
  import { useCurrentAccount } from '../hooks/wallet/useCurrentAccount.js';
7
7
  import { AccountDropdownMenu } from './AccountDropdownMenu.js';
8
8
  import { ConnectModal } from './connect-modal/ConnectModal.js';
9
+ import { Button } from './ui/Button.js';
9
10
 
10
11
  type ConnectButtonProps = {
11
12
  connectText?: ReactNode;
@@ -19,6 +20,6 @@ export function ConnectButton({
19
20
  return currentAccount ? (
20
21
  <AccountDropdownMenu currentAccount={currentAccount} />
21
22
  ) : (
22
- <ConnectModal trigger={<button {...buttonProps}>{connectText}</button>} />
23
+ <ConnectModal trigger={<Button {...buttonProps}>{connectText}</Button>} />
23
24
  );
24
25
  }
@@ -11,8 +11,11 @@ import { useAutoConnectWallet } from '../hooks/wallet/useAutoConnectWallet.js';
11
11
  import { useUnsafeBurnerWallet } from '../hooks/wallet/useUnsafeBurnerWallet.js';
12
12
  import { useWalletPropertiesChanged } from '../hooks/wallet/useWalletPropertiesChanged.js';
13
13
  import { useWalletsChanged } from '../hooks/wallet/useWalletsChanged.js';
14
+ import { lightTheme } from '../themes/lightTheme.js';
15
+ import type { Theme } from '../themes/themeContract.js';
14
16
  import { getRegisteredWallets } from '../utils/walletUtils.js';
15
17
  import { createWalletStore } from '../walletStore.js';
18
+ import { InjectedThemeStyles } from './styling/InjectedThemeStyles.js';
16
19
 
17
20
  type WalletProviderProps = {
18
21
  /** 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. */
@@ -33,6 +36,9 @@ type WalletProviderProps = {
33
36
  /** The key to use to store the most recently connected wallet account. */
34
37
  storageKey?: string;
35
38
 
39
+ /** The theme to use for styling UI components. Defaults to using the light theme. */
40
+ theme?: Theme | null;
41
+
36
42
  children: ReactNode;
37
43
  };
38
44
 
@@ -51,6 +57,7 @@ export function WalletProvider({
51
57
  storageKey = DEFUALT_STORAGE_KEY,
52
58
  enableUnsafeBurner = false,
53
59
  autoConnect = false,
60
+ theme = lightTheme,
54
61
  children,
55
62
  }: WalletProviderProps) {
56
63
  const storeRef = useRef(
@@ -69,6 +76,8 @@ export function WalletProvider({
69
76
  enableUnsafeBurner={enableUnsafeBurner}
70
77
  autoConnect={autoConnect}
71
78
  >
79
+ {/* TODO: We ideally don't want to inject styles if people aren't using the UI components */}
80
+ {theme ? <InjectedThemeStyles theme={theme} /> : null}
72
81
  {children}
73
82
  </WalletConnectionManager>
74
83
  </WalletContext.Provider>
@@ -3,8 +3,11 @@
3
3
 
4
4
  import { style } from '@vanilla-extract/css';
5
5
 
6
+ import { themeVars } from '../../themes/themeContract.js';
7
+
6
8
  export const overlay = style({
7
- backgroundColor: 'rgba(24 36 53 / 20%)',
9
+ backgroundColor: themeVars.backgroundColors.modalOverlay,
10
+ backdropFilter: themeVars.blurs.modalOverlay,
8
11
  position: 'fixed',
9
12
  inset: 0,
10
13
  zIndex: 999999999,
@@ -15,7 +18,8 @@ export const title = style({
15
18
  });
16
19
 
17
20
  export const content = style({
18
- backgroundColor: 'white',
21
+ backgroundColor: themeVars.backgroundColors.modalPrimary,
22
+ borderRadius: themeVars.radii.xlarge,
19
23
  position: 'fixed',
20
24
  bottom: 16,
21
25
  left: 16,
@@ -24,7 +28,6 @@ export const content = style({
24
28
  flexDirection: 'column',
25
29
  justifyContent: 'space-between',
26
30
  overflow: 'hidden',
27
- borderRadius: 16,
28
31
  minHeight: '50vh',
29
32
  maxHeight: '85vh',
30
33
  maxWidth: 700,
@@ -40,7 +43,7 @@ export const content = style({
40
43
  });
41
44
 
42
45
  export const whatIsAWalletButton = style({
43
- backgroundColor: '#F7F8F8',
46
+ backgroundColor: themeVars.backgroundColors.modalSecondary,
44
47
  padding: 16,
45
48
  '@media': {
46
49
  'screen and (min-width: 768px)': {
@@ -64,21 +67,7 @@ export const selectedViewContainer = style({
64
67
  display: 'flex',
65
68
  });
66
69
 
67
- export const triggerButton = style({
68
- backgroundColor: '#0284AD',
69
- boxShadow: '0px 4px 12px rgba(0, 0, 0, 0.1)',
70
- color: 'white',
71
- borderRadius: 12,
72
- paddingLeft: 24,
73
- paddingRight: 24,
74
- paddingTop: 16,
75
- paddingBottom: 16,
76
- ':hover': {
77
- backgroundColor: '#007194',
78
- },
79
- });
80
-
81
- export const backButton = style({
70
+ export const backButtonContainer = style({
82
71
  position: 'absolute',
83
72
  top: 20,
84
73
  left: 20,
@@ -89,24 +78,22 @@ export const backButton = style({
89
78
  },
90
79
  });
91
80
 
92
- export const closeButton = style({
81
+ export const closeButtonContainer = style({
93
82
  position: 'absolute',
94
- padding: 7,
95
83
  top: 16,
96
84
  right: 16,
97
- borderRadius: 9999,
98
- backgroundColor: '#F0F1F2',
99
85
  });
100
86
 
101
87
  export const walletListContent = style({
102
- padding: 20,
103
- minWidth: 240,
104
88
  display: 'flex',
105
89
  flexDirection: 'column',
90
+ flexGrow: 1,
106
91
  gap: 24,
92
+ padding: 20,
93
+ backgroundColor: themeVars.backgroundColors.modalPrimary,
107
94
  '@media': {
108
95
  'screen and (min-width: 768px)': {
109
- backgroundColor: '#F7F8F8',
96
+ backgroundColor: themeVars.backgroundColors.modalSecondary,
110
97
  },
111
98
  },
112
99
  });
@@ -119,7 +106,9 @@ export const walletListContainer = style({
119
106
  '@media': {
120
107
  'screen and (min-width: 768px)': {
121
108
  flexDirection: 'row',
109
+ flexBasis: 240,
122
110
  flexGrow: 0,
111
+ flexShrink: 0,
123
112
  },
124
113
  },
125
114
  });
@@ -11,6 +11,8 @@ import { useConnectWallet } from '../../hooks/wallet/useConnectWallet.js';
11
11
  import { BackIcon } from '../icons/BackIcon.js';
12
12
  import { CloseIcon } from '../icons/CloseIcon.js';
13
13
  import { StyleMarker } from '../styling/StyleMarker.js';
14
+ import { Heading } from '../ui/Heading.js';
15
+ import { IconButton } from '../ui/IconButton.js';
14
16
  import * as styles from './ConnectModal.css.js';
15
17
  import { ConnectionStatus } from './views/ConnectionStatus.js';
16
18
  import { GettingStarted } from './views/GettingStarted.js';
@@ -108,13 +110,17 @@ export function ConnectModal({ trigger, open, defaultOpen, onOpenChange }: Conne
108
110
  })}
109
111
  >
110
112
  <div className={styles.walletListContent}>
111
- <Dialog.Title className={styles.title}>Connect a Wallet</Dialog.Title>
113
+ <Dialog.Title className={styles.title} asChild>
114
+ <Heading as="h2">Connect a Wallet</Heading>
115
+ </Dialog.Title>
112
116
  <WalletList
113
117
  selectedWalletName={selectedWallet?.name}
114
118
  onPlaceholderClick={() => setCurrentView('getting-started')}
115
119
  onSelect={(wallet) => {
116
- setSelectedWallet(wallet);
117
- connectWallet(wallet);
120
+ if (selectedWallet?.name !== wallet.name) {
121
+ setSelectedWallet(wallet);
122
+ connectWallet(wallet);
123
+ }
118
124
  }}
119
125
  />
120
126
  </div>
@@ -126,24 +132,22 @@ export function ConnectModal({ trigger, open, defaultOpen, onOpenChange }: Conne
126
132
  What is a Wallet?
127
133
  </button>
128
134
  </div>
129
-
130
135
  <div
131
136
  className={clsx(styles.viewContainer, {
132
137
  [styles.selectedViewContainer]: !!currentView,
133
138
  })}
134
139
  >
135
- <button
136
- className={styles.backButton}
137
- onClick={() => resetSelection()}
138
- type="button"
139
- aria-label="Back"
140
- >
141
- <BackIcon />
142
- </button>
140
+ <div className={styles.backButtonContainer}>
141
+ <IconButton type="button" aria-label="Back" onClick={() => resetSelection()}>
142
+ <BackIcon />
143
+ </IconButton>
144
+ </div>
143
145
  {modalContent}
144
146
  </div>
145
- <Dialog.Close className={styles.closeButton} aria-label="Close">
146
- <CloseIcon />
147
+ <Dialog.Close className={styles.closeButtonContainer} asChild>
148
+ <IconButton type="button" aria-label="Close">
149
+ <CloseIcon />
150
+ </IconButton>
147
151
  </Dialog.Close>
148
152
  </Dialog.Content>
149
153
  </Dialog.Overlay>
@@ -8,7 +8,3 @@ export const container = style({
8
8
  flexDirection: 'column',
9
9
  gap: 4,
10
10
  });
11
-
12
- export const heading = style({});
13
-
14
- export const description = style({});
@@ -1,6 +1,8 @@
1
1
  // Copyright (c) Mysten Labs, Inc.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
+ import { Heading } from '../ui/Heading.js';
5
+ import { Text } from '../ui/Text.js';
4
6
  import * as styles from './InfoSection.css.js';
5
7
 
6
8
  type InfoSectionProps = {
@@ -11,8 +13,12 @@ type InfoSectionProps = {
11
13
  export function InfoSection({ title, children }: InfoSectionProps) {
12
14
  return (
13
15
  <section className={styles.container}>
14
- <h3 className={styles.heading}>{title}</h3>
15
- <div className={styles.description}>{children}</div>
16
+ <Heading as="h3" size="sm" weight="normal">
17
+ {title}
18
+ </Heading>
19
+ <Text weight="medium" color="muted">
20
+ {children}
21
+ </Text>
16
22
  </section>
17
23
  );
18
24
  }
@@ -3,6 +3,8 @@
3
3
 
4
4
  import { style } from '@vanilla-extract/css';
5
5
 
6
+ import { themeVars } from '../../../themes/themeContract.js';
7
+
6
8
  export const container = style({
7
9
  display: 'flex',
8
10
  flexDirection: 'column',
@@ -12,14 +14,13 @@ export const container = style({
12
14
  });
13
15
 
14
16
  export const walletIcon = style({
15
- backgroundColor: 'white',
16
17
  objectFit: 'cover',
17
18
  width: 72,
18
19
  height: 72,
19
- borderRadius: 16,
20
+ borderRadius: themeVars.radii.large,
20
21
  });
21
22
 
22
- export const walletName = style({
23
+ export const title = style({
23
24
  marginTop: 12,
24
25
  });
25
26
 
@@ -27,6 +28,8 @@ export const connectionStatus = style({
27
28
  marginTop: 4,
28
29
  });
29
30
 
30
- export const connectionStatusWithError = style({
31
- color: 'red',
31
+ export const retryButtonContainer = style({
32
+ position: 'absolute',
33
+ bottom: 20,
34
+ right: 20,
32
35
  });
@@ -2,8 +2,10 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  import type { WalletWithRequiredFeatures } from '@mysten/wallet-standard';
5
- import clsx from 'clsx';
6
5
 
6
+ import { Button } from '../../ui/Button.js';
7
+ import { Heading } from '../../ui/Heading.js';
8
+ import { Text } from '../../ui/Text.js';
7
9
  import * as styles from './ConnectionStatus.css.js';
8
10
 
9
11
  type ConnectionStatusProps = {
@@ -24,18 +26,24 @@ export function ConnectionStatus({
24
26
  src={selectedWallet.icon}
25
27
  alt={`${selectedWallet.name} logo`}
26
28
  />
27
- <div className={styles.walletName}>Opening {selectedWallet.name}</div>
28
- <div
29
- className={clsx(styles.connectionStatus, {
30
- [styles.connectionStatusWithError]: hadConnectionError,
31
- })}
32
- >
33
- {hadConnectionError ? 'Connection failed' : 'Confirm connection in the wallet...'}
29
+ <div className={styles.title}>
30
+ <Heading as="h2" size="xl">
31
+ Opening {selectedWallet.name}
32
+ </Heading>
33
+ </div>
34
+ <div className={styles.connectionStatus}>
35
+ {hadConnectionError ? (
36
+ <Text color="danger">Connection failed</Text>
37
+ ) : (
38
+ <Text color="muted">Confirm connection in the wallet...</Text>
39
+ )}
34
40
  </div>
35
41
  {hadConnectionError ? (
36
- <button type="button" onClick={() => onRetryConnection(selectedWallet)}>
37
- Retry Connection
38
- </button>
42
+ <div className={styles.retryButtonContainer}>
43
+ <Button type="button" variant="outline" onClick={() => onRetryConnection(selectedWallet)}>
44
+ Retry Connection
45
+ </Button>
46
+ </div>
39
47
  ) : null}
40
48
  </div>
41
49
  );
@@ -9,8 +9,6 @@ export const container = style({
9
9
  alignItems: 'center',
10
10
  });
11
11
 
12
- export const title = style({});
13
-
14
12
  export const content = style({
15
13
  display: 'flex',
16
14
  flexDirection: 'column',
@@ -20,4 +18,8 @@ export const content = style({
20
18
  padding: 40,
21
19
  });
22
20
 
23
- export const installLink = style({});
21
+ export const installButtonContainer = style({
22
+ position: 'absolute',
23
+ bottom: 20,
24
+ right: 20,
25
+ });
@@ -1,13 +1,15 @@
1
1
  // Copyright (c) Mysten Labs, Inc.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
+ import { Button } from '../../ui/Button.js';
5
+ import { Heading } from '../../ui/Heading.js';
4
6
  import { InfoSection } from '../InfoSection.js';
5
7
  import * as styles from './GettingStarted.css.js';
6
8
 
7
9
  export function GettingStarted() {
8
10
  return (
9
11
  <div className={styles.container}>
10
- <h2 className={styles.title}>Get Started with Sui</h2>
12
+ <Heading as="h2">Get Started with Sui</Heading>
11
13
  <div className={styles.content}>
12
14
  <InfoSection title="Install the Sui Wallet Extension">
13
15
  We recommend pinning Sui Wallet to your taskbar for quicker access.
@@ -19,14 +21,17 @@ export function GettingStarted() {
19
21
  <InfoSection title="Refresh Your Browser">
20
22
  Once you set up your wallet, refresh this window browser to load up the extension.
21
23
  </InfoSection>
22
- <a
23
- className={styles.installLink}
24
- href="https://chrome.google.com/webstore/detail/sui-wallet/opcgpfmipidbgpenhmajoajpbobppdil"
25
- target="_blank"
26
- rel="noreferrer"
27
- >
28
- Install Wallet Extension
29
- </a>
24
+ <div className={styles.installButtonContainer}>
25
+ <Button variant="outline" asChild>
26
+ <a
27
+ href="https://chrome.google.com/webstore/detail/sui-wallet/opcgpfmipidbgpenhmajoajpbobppdil"
28
+ target="_blank"
29
+ rel="noreferrer"
30
+ >
31
+ Install Wallet Extension
32
+ </a>
33
+ </Button>
34
+ </div>
30
35
  </div>
31
36
  </div>
32
37
  );
@@ -9,8 +9,6 @@ export const container = style({
9
9
  alignItems: 'center',
10
10
  });
11
11
 
12
- export const title = style({});
13
-
14
12
  export const content = style({
15
13
  display: 'flex',
16
14
  flexDirection: 'column',
@@ -1,13 +1,14 @@
1
1
  // Copyright (c) Mysten Labs, Inc.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
+ import { Heading } from '../../ui/Heading.js';
4
5
  import { InfoSection } from '../InfoSection.js';
5
6
  import * as styles from './WhatIsAWallet.css.js';
6
7
 
7
8
  export function WhatIsAWallet() {
8
9
  return (
9
10
  <div className={styles.container}>
10
- <h2 className={styles.title}>What is a Wallet</h2>
11
+ <Heading as="h2">What is a Wallet</Heading>
11
12
  <div className={styles.content}>
12
13
  <InfoSection title="Easy Login">
13
14
  No need to create new accounts and passwords for every website. Just connect your wallet
@@ -6,5 +6,5 @@ import { style } from '@vanilla-extract/css';
6
6
  export const container = style({
7
7
  display: 'flex',
8
8
  flexDirection: 'column',
9
- gap: '4px',
9
+ gap: 4,
10
10
  });
@@ -3,34 +3,33 @@
3
3
 
4
4
  import { style } from '@vanilla-extract/css';
5
5
 
6
- export const container = style({
7
- padding: 8,
8
- borderRadius: 8,
9
- });
6
+ import { themeVars } from '../../../themes/themeContract.js';
10
7
 
11
- export const selectedContainer = style({
12
- background: '#FFFFFF',
13
- boxShadow: '0px 2px 6px rgba(0, 0, 0, 0.05)',
8
+ export const container = style({
9
+ display: 'flex',
14
10
  });
15
11
 
16
- export const buttonContainer = style({
17
- width: '100%',
12
+ export const walletItem = style({
18
13
  display: 'flex',
19
14
  alignItems: 'center',
20
- gap: '8px',
15
+ flexGrow: 1,
16
+ padding: 8,
17
+ gap: 8,
18
+ borderRadius: themeVars.radii.large,
19
+ ':hover': {
20
+ backgroundColor: themeVars.backgroundColors.walletItemHover,
21
+ },
21
22
  });
22
23
 
23
- export const walletName = style({
24
- overflow: 'hidden',
25
- textOverflow: 'ellipsis',
26
- whiteSpace: 'nowrap',
24
+ export const selectedWalletItem = style({
25
+ backgroundColor: themeVars.backgroundColors.walletItemSelected,
26
+ boxShadow: '0px 2px 6px rgba(0, 0, 0, 0.05)',
27
27
  });
28
28
 
29
29
  export const walletIcon = style({
30
30
  width: 28,
31
31
  height: 28,
32
- borderRadius: 6,
33
32
  flexShrink: 0,
34
- background: 'white',
35
33
  objectFit: 'cover',
34
+ borderRadius: themeVars.radii.small,
36
35
  });
@@ -4,6 +4,7 @@
4
4
  import { clsx } from 'clsx';
5
5
  import type { ReactNode } from 'react';
6
6
 
7
+ import { Heading } from '../../ui/Heading.js';
7
8
  import * as styles from './WalletListItem.css.js';
8
9
 
9
10
  type WalletListItemProps = {
@@ -15,14 +16,20 @@ type WalletListItemProps = {
15
16
 
16
17
  export function WalletListItem({ name, icon, onClick, isSelected = false }: WalletListItemProps) {
17
18
  return (
18
- <li className={clsx(styles.container, { [styles.selectedContainer]: isSelected })}>
19
- <button className={styles.buttonContainer} type="button" onClick={onClick}>
19
+ <li className={styles.container}>
20
+ <button
21
+ className={clsx(styles.walletItem, { [styles.selectedWalletItem]: isSelected })}
22
+ type="button"
23
+ onClick={onClick}
24
+ >
20
25
  {typeof icon === 'string' ? (
21
26
  <img className={styles.walletIcon} src={icon} alt={`${name} logo`} />
22
27
  ) : (
23
28
  icon
24
29
  )}
25
- <div className={styles.walletName}>{name}</div>
30
+ <Heading size="md" truncate asChild>
31
+ <div>{name}</div>
32
+ </Heading>
26
33
  </button>
27
34
  </li>
28
35
  );
@@ -3,12 +3,14 @@
3
3
 
4
4
  import type { ComponentProps } from 'react';
5
5
 
6
+ // FIXME: Replace this with a 10x10 icon to match the CheckIcon, or alternatively make the CheckIcon bigger
7
+ // Right now, the icons don't align on mobile :(
6
8
  export function BackIcon(props: ComponentProps<'svg'>) {
7
9
  return (
8
10
  <svg width={24} height={24} fill="none" xmlns="http://www.w3.org/2000/svg" {...props}>
9
11
  <path
10
12
  d="M7.57 12.262c0 .341.13.629.403.895l5.175 5.059c.204.205.45.307.751.307.609 0 1.101-.485 1.101-1.087 0-.293-.123-.574-.349-.8L10.14 12.27l4.511-4.375A1.13 1.13 0 0 0 15 7.087C15 6.485 14.508 6 13.9 6c-.295 0-.54.103-.752.308l-5.175 5.058c-.28.28-.404.56-.404.896Z"
11
- fill="#383F47"
13
+ fill="currentColor"
12
14
  />
13
15
  </svg>
14
16
  );
@@ -7,7 +7,7 @@ export function CheckIcon(props: ComponentProps<'svg'>) {
7
7
  return (
8
8
  <svg xmlns="http://www.w3.org/2000/svg" width={16} height={16} fill="none" {...props}>
9
9
  <path
10
- fill="#007195"
10
+ fill="currentColor"
11
11
  d="m11.726 5.048-4.73 5.156-1.722-1.879a.72.72 0 0 0-.529-.23.722.722 0 0 0-.525.24.858.858 0 0 0-.22.573.86.86 0 0 0 .211.576l2.255 2.458c.14.153.332.24.53.24.2 0 .391-.087.532-.24l5.261-5.735A.86.86 0 0 0 13 5.63a.858.858 0 0 0-.22-.572.722.722 0 0 0-.525-.24.72.72 0 0 0-.529.23Z"
12
12
  />
13
13
  </svg>
@@ -0,0 +1,49 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { assignInlineVars } from '@vanilla-extract/dynamic';
5
+
6
+ import { styleDataAttributeSelector } from '../../constants/styleDataAttribute.js';
7
+ import { themeVars } from '../../themes/themeContract.js';
8
+ import type { DynamicTheme, Theme, ThemeVars } from '../../themes/themeContract.js';
9
+
10
+ type InjectedThemeStylesProps = {
11
+ theme: Theme;
12
+ };
13
+
14
+ export function InjectedThemeStyles({ theme }: InjectedThemeStylesProps) {
15
+ const themeStyles = Array.isArray(theme)
16
+ ? getDynamicThemeStyles(theme)
17
+ : getStaticThemeStyles(theme);
18
+
19
+ return (
20
+ <style
21
+ dangerouslySetInnerHTML={{
22
+ __html: themeStyles,
23
+ }}
24
+ />
25
+ );
26
+ }
27
+
28
+ function getDynamicThemeStyles(themes: DynamicTheme[]) {
29
+ return themes
30
+ .map(({ mediaQuery, selector, variables }) => {
31
+ const themeStyles = getStaticThemeStyles(variables);
32
+ const themeStylesWithSelectorPrefix = selector ? `${selector} ${themeStyles}` : themeStyles;
33
+
34
+ return mediaQuery
35
+ ? `@media ${mediaQuery}{${themeStylesWithSelectorPrefix}}`
36
+ : themeStylesWithSelectorPrefix;
37
+ })
38
+ .join(' ');
39
+ }
40
+
41
+ function getStaticThemeStyles(theme: ThemeVars) {
42
+ return `${styleDataAttributeSelector} {${cssStringFromTheme(theme)}}`;
43
+ }
44
+
45
+ function cssStringFromTheme(theme: ThemeVars) {
46
+ return Object.entries(assignInlineVars(themeVars, theme))
47
+ .map(([key, value]) => `${key}:${value};`)
48
+ .join('');
49
+ }
@@ -4,9 +4,17 @@
4
4
  import { globalStyle } from '@vanilla-extract/css';
5
5
 
6
6
  import { styleDataAttributeSelector } from '../../constants/styleDataAttribute.js';
7
+ import { themeVars } from '../../themes/themeContract.js';
7
8
 
8
9
  globalStyle(createScopedSelector('*'), {
9
10
  boxSizing: 'border-box',
11
+ color: themeVars.colors.body,
12
+ fontFamily: themeVars.typography.fontFamily,
13
+ fontSize: themeVars.fontWeights.normal,
14
+ fontStyle: themeVars.typography.fontStyle,
15
+ fontWeight: themeVars.fontWeights.normal,
16
+ lineHeight: themeVars.typography.lineHeight,
17
+ letterSpacing: themeVars.typography.letterSpacing,
10
18
  });
11
19
 
12
20
  globalStyle(createScopedSelector('button'), {
@@ -16,7 +24,6 @@ globalStyle(createScopedSelector('button'), {
16
24
  fontFamily: 'inherit',
17
25
  lineHeight: 'inherit',
18
26
  letterSpacing: 'inherit',
19
- outline: 'none',
20
27
  color: 'inherit',
21
28
  border: 0,
22
29
  padding: 0,
@@ -0,0 +1,50 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { RecipeVariants } from '@vanilla-extract/recipes';
5
+ import { recipe } from '@vanilla-extract/recipes';
6
+
7
+ import { themeVars } from '../../themes/themeContract.js';
8
+
9
+ export const buttonVariants = recipe({
10
+ base: {
11
+ display: 'inline-flex',
12
+ alignItems: 'center',
13
+ justifyContent: 'center',
14
+ fontWeight: themeVars.fontWeights.medium,
15
+ ':disabled': {
16
+ opacity: 0.5,
17
+ },
18
+ },
19
+ variants: {
20
+ variant: {
21
+ primary: {
22
+ backgroundColor: themeVars.backgroundColors.primaryButton,
23
+ color: themeVars.colors.primaryButton,
24
+ boxShadow: themeVars.shadows.primaryButton,
25
+ ':hover': {
26
+ backgroundColor: themeVars.backgroundColors.primaryButtonHover,
27
+ },
28
+ },
29
+ outline: {
30
+ borderWidth: 1,
31
+ borderStyle: 'solid',
32
+ borderColor: themeVars.borderColors.outlineButton,
33
+ color: themeVars.colors.outlineButton,
34
+ ':hover': {
35
+ backgroundColor: themeVars.backgroundColors.outlineButtonHover,
36
+ },
37
+ },
38
+ },
39
+ size: {
40
+ md: { borderRadius: themeVars.radii.medium, padding: '8px 16px' },
41
+ lg: { borderRadius: themeVars.radii.large, padding: '16px 24px ' },
42
+ },
43
+ },
44
+ defaultVariants: {
45
+ variant: 'primary',
46
+ size: 'md',
47
+ },
48
+ });
49
+
50
+ export type ButtonVariants = RecipeVariants<typeof buttonVariants>;