@web3jskit/walletkit 0.0.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 (209) hide show
  1. package/README.md +1 -0
  2. package/dist/package.json +42 -0
  3. package/dist/src/assets/svg/dataBase.d.ts +6 -0
  4. package/dist/src/assets/svg/dataBase.js +7 -0
  5. package/dist/src/assets/svg/dataBase.js.map +1 -0
  6. package/dist/src/assets/svg/metaMaskWallet.d.ts +1 -0
  7. package/dist/src/assets/svg/metaMaskWallet.js +35 -0
  8. package/dist/src/assets/svg/metaMaskWallet.js.map +1 -0
  9. package/dist/src/components/ConnectButton/ConnectedInfo.d.ts +1 -0
  10. package/dist/src/components/ConnectButton/ConnectedInfo.js +12 -0
  11. package/dist/src/components/ConnectButton/ConnectedInfo.js.map +1 -0
  12. package/dist/src/components/ConnectButton/index.d.ts +8 -0
  13. package/dist/src/components/ConnectButton/index.js +15 -0
  14. package/dist/src/components/ConnectButton/index.js.map +1 -0
  15. package/dist/src/components/Connecting/index.d.ts +5 -0
  16. package/dist/src/components/Connecting/index.js +10 -0
  17. package/dist/src/components/Connecting/index.js.map +1 -0
  18. package/dist/src/components/Connecting/style.d.ts +2 -0
  19. package/dist/src/components/Connecting/style.js +52 -0
  20. package/dist/src/components/Connecting/style.js.map +1 -0
  21. package/dist/src/components/GetWallet/index.d.ts +6 -0
  22. package/dist/src/components/GetWallet/index.js +38 -0
  23. package/dist/src/components/GetWallet/index.js.map +1 -0
  24. package/dist/src/components/GetWallet/style.d.ts +2 -0
  25. package/dist/src/components/GetWallet/style.js +115 -0
  26. package/dist/src/components/GetWallet/style.js.map +1 -0
  27. package/dist/src/components/Header/ModalHeader.d.ts +7 -0
  28. package/dist/src/components/Header/ModalHeader.js +10 -0
  29. package/dist/src/components/Header/ModalHeader.js.map +1 -0
  30. package/dist/src/components/Header/style.d.ts +2 -0
  31. package/dist/src/components/Header/style.js +73 -0
  32. package/dist/src/components/Header/style.js.map +1 -0
  33. package/dist/src/components/Icon/index.d.ts +23 -0
  34. package/dist/src/components/Icon/index.js +47 -0
  35. package/dist/src/components/Icon/index.js.map +1 -0
  36. package/dist/src/components/Introduce/index.d.ts +5 -0
  37. package/dist/src/components/Introduce/index.js +9 -0
  38. package/dist/src/components/Introduce/index.js.map +1 -0
  39. package/dist/src/components/Introduce/style.d.ts +2 -0
  40. package/dist/src/components/Introduce/style.js +72 -0
  41. package/dist/src/components/Introduce/style.js.map +1 -0
  42. package/dist/src/components/Modal/ConnectModal.d.ts +8 -0
  43. package/dist/src/components/Modal/ConnectModal.js +82 -0
  44. package/dist/src/components/Modal/ConnectModal.js.map +1 -0
  45. package/dist/src/components/Modal/WalletInfoModal.d.ts +5 -0
  46. package/dist/src/components/Modal/WalletInfoModal.js +40 -0
  47. package/dist/src/components/Modal/WalletInfoModal.js.map +1 -0
  48. package/dist/src/components/Modal/index.d.ts +12 -0
  49. package/dist/src/components/Modal/index.js +53 -0
  50. package/dist/src/components/Modal/index.js.map +1 -0
  51. package/dist/src/components/Modal/style.d.ts +5 -0
  52. package/dist/src/components/Modal/style.js +156 -0
  53. package/dist/src/components/Modal/style.js.map +1 -0
  54. package/dist/src/components/SVGs/backArrowSvg.d.ts +2 -0
  55. package/dist/src/components/SVGs/backArrowSvg.js +4 -0
  56. package/dist/src/components/SVGs/backArrowSvg.js.map +1 -0
  57. package/dist/src/components/SVGs/closeSvg.d.ts +2 -0
  58. package/dist/src/components/SVGs/closeSvg.js +4 -0
  59. package/dist/src/components/SVGs/closeSvg.js.map +1 -0
  60. package/dist/src/components/SVGs/copiedSvg.d.ts +2 -0
  61. package/dist/src/components/SVGs/copiedSvg.js +4 -0
  62. package/dist/src/components/SVGs/copiedSvg.js.map +1 -0
  63. package/dist/src/components/SVGs/copySvg.d.ts +2 -0
  64. package/dist/src/components/SVGs/copySvg.js +4 -0
  65. package/dist/src/components/SVGs/copySvg.js.map +1 -0
  66. package/dist/src/components/SVGs/exitSvg.d.ts +2 -0
  67. package/dist/src/components/SVGs/exitSvg.js +4 -0
  68. package/dist/src/components/SVGs/exitSvg.js.map +1 -0
  69. package/dist/src/components/SVGs/metamaskQrCode.d.ts +2 -0
  70. package/dist/src/components/SVGs/metamaskQrCode.js +4 -0
  71. package/dist/src/components/SVGs/metamaskQrCode.js.map +1 -0
  72. package/dist/src/components/SVGs/spinSvg.d.ts +4 -0
  73. package/dist/src/components/SVGs/spinSvg.js +4 -0
  74. package/dist/src/components/SVGs/spinSvg.js.map +1 -0
  75. package/dist/src/components/Text/index.d.ts +18 -0
  76. package/dist/src/components/Text/index.js +23 -0
  77. package/dist/src/components/Text/index.js.map +1 -0
  78. package/dist/src/components/WalletKitProvider/ChainProvider.d.ts +9 -0
  79. package/dist/src/components/WalletKitProvider/ChainProvider.js +21 -0
  80. package/dist/src/components/WalletKitProvider/ChainProvider.js.map +1 -0
  81. package/dist/src/components/WalletKitProvider/I18nProvider.d.ts +13 -0
  82. package/dist/src/components/WalletKitProvider/I18nProvider.js +41 -0
  83. package/dist/src/components/WalletKitProvider/I18nProvider.js.map +1 -0
  84. package/dist/src/components/WalletKitProvider/ThemeProvider.d.ts +8 -0
  85. package/dist/src/components/WalletKitProvider/ThemeProvider.js +12 -0
  86. package/dist/src/components/WalletKitProvider/ThemeProvider.js.map +1 -0
  87. package/dist/src/components/WalletKitProvider/index.d.ts +11 -0
  88. package/dist/src/components/WalletKitProvider/index.js +14 -0
  89. package/dist/src/components/WalletKitProvider/index.js.map +1 -0
  90. package/dist/src/components/WalletList/index.d.ts +7 -0
  91. package/dist/src/components/WalletList/index.js +9 -0
  92. package/dist/src/components/WalletList/index.js.map +1 -0
  93. package/dist/src/components/WalletList/style.d.ts +2 -0
  94. package/dist/src/components/WalletList/style.js +101 -0
  95. package/dist/src/components/WalletList/style.js.map +1 -0
  96. package/dist/src/components/WalletTriggerButton/index.d.ts +10 -0
  97. package/dist/src/components/WalletTriggerButton/index.js +27 -0
  98. package/dist/src/components/WalletTriggerButton/index.js.map +1 -0
  99. package/dist/src/components/WalletTriggerButton/style.d.ts +2 -0
  100. package/dist/src/components/WalletTriggerButton/style.js +50 -0
  101. package/dist/src/components/WalletTriggerButton/style.js.map +1 -0
  102. package/dist/src/hooks/useWalletKit.d.ts +6 -0
  103. package/dist/src/hooks/useWalletKit.js +20 -0
  104. package/dist/src/hooks/useWalletKit.js.map +1 -0
  105. package/dist/src/index.d.ts +8 -0
  106. package/dist/src/index.js +9 -0
  107. package/dist/src/index.js.map +1 -0
  108. package/dist/src/locals/i18n.d.ts +2 -0
  109. package/dist/src/locals/i18n.js +17 -0
  110. package/dist/src/locals/i18n.js.map +1 -0
  111. package/dist/src/locals/languages/en.json +27 -0
  112. package/dist/src/locals/languages/zh.json +27 -0
  113. package/dist/src/locals/resources.d.ts +60 -0
  114. package/dist/src/locals/resources.js +11 -0
  115. package/dist/src/locals/resources.js.map +1 -0
  116. package/dist/src/stores/SlotsWalletStore.d.ts +18 -0
  117. package/dist/src/stores/SlotsWalletStore.js +33 -0
  118. package/dist/src/stores/SlotsWalletStore.js.map +1 -0
  119. package/dist/src/stores/index.d.ts +34 -0
  120. package/dist/src/stores/index.js +41 -0
  121. package/dist/src/stores/index.js.map +1 -0
  122. package/dist/src/styled/index.d.ts +17 -0
  123. package/dist/src/styled/index.js +76 -0
  124. package/dist/src/styled/index.js.map +1 -0
  125. package/dist/src/test/getwalletprovider.test.d.ts +1 -0
  126. package/dist/src/test/getwalletprovider.test.js +10 -0
  127. package/dist/src/test/getwalletprovider.test.js.map +1 -0
  128. package/dist/src/test/setup.d.ts +1 -0
  129. package/dist/src/test/setup.js +7 -0
  130. package/dist/src/test/setup.js.map +1 -0
  131. package/dist/src/theme/index.d.ts +53 -0
  132. package/dist/src/theme/index.js +92 -0
  133. package/dist/src/theme/index.js.map +1 -0
  134. package/dist/src/types/configType.d.ts +2 -0
  135. package/dist/src/types/configType.js +2 -0
  136. package/dist/src/types/configType.js.map +1 -0
  137. package/dist/src/types/slotsType.d.ts +23 -0
  138. package/dist/src/types/slotsType.js +2 -0
  139. package/dist/src/types/slotsType.js.map +1 -0
  140. package/dist/src/utils/formatter.d.ts +1 -0
  141. package/dist/src/utils/formatter.js +6 -0
  142. package/dist/src/utils/formatter.js.map +1 -0
  143. package/dist/src/utils/generateAvatar.d.ts +4 -0
  144. package/dist/src/utils/generateAvatar.js +32 -0
  145. package/dist/src/utils/generateAvatar.js.map +1 -0
  146. package/dist/src/wallets/GelWallet/index.d.ts +0 -0
  147. package/dist/src/wallets/GelWallet/index.js +2 -0
  148. package/dist/src/wallets/GelWallet/index.js.map +1 -0
  149. package/dist/src/wallets/SlotsWallets/index.d.ts +3 -0
  150. package/dist/src/wallets/SlotsWallets/index.js +26 -0
  151. package/dist/src/wallets/SlotsWallets/index.js.map +1 -0
  152. package/dist/tsconfig.build.tsbuildinfo +1 -0
  153. package/package.json +42 -0
  154. package/src/assets/svg/dataBase.ts +17 -0
  155. package/src/assets/svg/metaMaskWallet.ts +35 -0
  156. package/src/components/ConnectButton/ConnectedInfo.tsx +17 -0
  157. package/src/components/ConnectButton/index.tsx +41 -0
  158. package/src/components/Connecting/index.tsx +26 -0
  159. package/src/components/Connecting/style.ts +53 -0
  160. package/src/components/GetWallet/index.tsx +88 -0
  161. package/src/components/GetWallet/style.ts +116 -0
  162. package/src/components/Header/ModalHeader.tsx +24 -0
  163. package/src/components/Header/style.ts +74 -0
  164. package/src/components/Icon/index.tsx +120 -0
  165. package/src/components/Introduce/index.tsx +30 -0
  166. package/src/components/Introduce/style.ts +73 -0
  167. package/src/components/Modal/ConnectModal.tsx +131 -0
  168. package/src/components/Modal/WalletInfoModal.tsx +82 -0
  169. package/src/components/Modal/index.tsx +80 -0
  170. package/src/components/Modal/style.ts +160 -0
  171. package/src/components/SVGs/backArrowSvg.tsx +10 -0
  172. package/src/components/SVGs/closeSvg.tsx +11 -0
  173. package/src/components/SVGs/copiedSvg.tsx +11 -0
  174. package/src/components/SVGs/copySvg.tsx +11 -0
  175. package/src/components/SVGs/exitSvg.tsx +11 -0
  176. package/src/components/SVGs/metamaskQrCode.tsx +393 -0
  177. package/src/components/SVGs/spinSvg.tsx +10 -0
  178. package/src/components/Text/index.tsx +59 -0
  179. package/src/components/WalletKitProvider/ChainProvider.tsx +34 -0
  180. package/src/components/WalletKitProvider/I18nProvider.tsx +52 -0
  181. package/src/components/WalletKitProvider/ThemeProvider.tsx +16 -0
  182. package/src/components/WalletKitProvider/index.tsx +40 -0
  183. package/src/components/WalletList/index.tsx +35 -0
  184. package/src/components/WalletList/style.ts +101 -0
  185. package/src/components/WalletTriggerButton/index.tsx +50 -0
  186. package/src/components/WalletTriggerButton/style.ts +51 -0
  187. package/src/default.d.ts +18 -0
  188. package/src/hooks/useWalletKit.ts +38 -0
  189. package/src/index.ts +8 -0
  190. package/src/locals/i18n.ts +19 -0
  191. package/src/locals/languages/en.json +27 -0
  192. package/src/locals/languages/zh.json +27 -0
  193. package/src/locals/resources.ts +11 -0
  194. package/src/stores/SlotsWalletStore.ts +48 -0
  195. package/src/stores/index.ts +74 -0
  196. package/src/styled/index.ts +79 -0
  197. package/src/test/getwalletprovider.test.ts +9 -0
  198. package/src/test/setup.ts +7 -0
  199. package/src/theme/index.ts +93 -0
  200. package/src/theme/styled.d.ts +30 -0
  201. package/src/types/configType.ts +2 -0
  202. package/src/types/slotsType.ts +23 -0
  203. package/src/utils/formatter.ts +4 -0
  204. package/src/utils/generateAvatar.ts +35 -0
  205. package/src/wallets/GelWallet/index.ts +0 -0
  206. package/src/wallets/SlotsWallets/index.ts +30 -0
  207. package/tsconfig.build.json +4 -0
  208. package/tsconfig.json +55 -0
  209. package/vitest.config.ts +10 -0
@@ -0,0 +1,40 @@
1
+ import { type ReactNode } from 'react';
2
+ import { ChainProvider } from './ChainProvider';
3
+
4
+ import { ConnectModal } from '../Modal/ConnectModal';
5
+ import { walletKitStore, AppModal } from '../../stores';
6
+ import { I18nProvider } from './I18nProvider';
7
+ import type { Locals, Theme } from '../../types/configType';
8
+ import { WalletKitThemeProvider } from './ThemeProvider';
9
+ import { ThemedGlobalStyle } from '../../theme';
10
+ import { WalletInfoModal } from '../Modal/WalletInfoModal';
11
+
12
+ interface IWalletKitProvider {
13
+ children: ReactNode;
14
+ language?: Locals;
15
+ defaultChain?: number | any;
16
+ theme?: Theme;
17
+ connectButtonSlots?: ReactNode[];
18
+ }
19
+
20
+ export function WalletKitProvider({ children, language, defaultChain, theme, connectButtonSlots }: IWalletKitProvider) {
21
+ // console.log('theme::', theme);
22
+ // console.log('language::', language);
23
+ // console.log('defaultChain::', defaultChain);
24
+
25
+ const modalType = walletKitStore((state: any) => state.modalType);
26
+ return (
27
+ <>
28
+ <ChainProvider defaultChain={defaultChain}>
29
+ <I18nProvider language={language}>
30
+ <WalletKitThemeProvider theme={theme}>
31
+ <ThemedGlobalStyle />
32
+ <ConnectModal slots={connectButtonSlots} isOpen={modalType === AppModal.ConnectModal} />
33
+ <WalletInfoModal isOpen={modalType === AppModal.InfoModal} />
34
+ <div>{children}</div>
35
+ </WalletKitThemeProvider>
36
+ </I18nProvider>
37
+ </ChainProvider>
38
+ </>
39
+ );
40
+ }
@@ -0,0 +1,35 @@
1
+ import { useTranslation } from 'react-i18next';
2
+ import ModalHeader from '../Header/ModalHeader';
3
+ import WalletListContainer from './style';
4
+
5
+ interface WalletListProps {
6
+ list?: any[];
7
+ onBack?: () => void;
8
+ onGetWallet?: (wallet: any) => void;
9
+ }
10
+
11
+ export function WalletList({ list, onBack, onGetWallet }: WalletListProps) {
12
+ const { t } = useTranslation();
13
+
14
+ return (
15
+ <WalletListContainer>
16
+ <ModalHeader title={t('getWalletTitle')} onBack={onBack} />
17
+ <div className="walletList">
18
+ {list?.map((item, index) => (
19
+ <div className="walletItem" key={index + item.name}>
20
+ <img src={item.icon} alt={item.name} />
21
+ <div>
22
+ <div className="name">{item.name}</div>
23
+ {item.name !== 'GelWallet' && <div className="description">{t('getWalletTips')}</div>}
24
+ </div>
25
+ <div className="button" onClick={() => onGetWallet?.(item)}>
26
+ {t('getWallet')}
27
+ </div>
28
+ </div>
29
+ ))}
30
+ </div>
31
+ <div className="question">{t('getWalletQuestion')}</div>
32
+ <div className="answer">{t('getWalletAnswer')}</div>
33
+ </WalletListContainer>
34
+ );
35
+ }
@@ -0,0 +1,101 @@
1
+ import { styled } from 'styled-components';
2
+
3
+ const WalletListContainer = styled.div`
4
+ display: flex;
5
+ flex-direction: column;
6
+ font-family: Manrope;
7
+ color: ${({ theme }) => theme.textColor1};
8
+ height: 100%;
9
+
10
+ .walletList {
11
+ display: flex;
12
+ flex-direction: column;
13
+ padding: 10px 20px 0;
14
+ gap: 20px;
15
+ flex: 1;
16
+
17
+ .walletItem {
18
+ display: flex;
19
+ align-items: center;
20
+ }
21
+
22
+ img {
23
+ width: 28px;
24
+ height: 28px;
25
+ flex-shrink: 0;
26
+ margin-right: 10px;
27
+ border-radius: 6px;
28
+ }
29
+
30
+ .name {
31
+ font-size: 14px;
32
+ font-weight: 700;
33
+ line-height: 14px;
34
+ color: ${({ theme }) => theme.textColor};
35
+ }
36
+
37
+ .description {
38
+ margin-top: 10px;
39
+ font-size: 12px;
40
+ font-weight: 500;
41
+ line-height: 14px;
42
+ color: ${({ theme }) => theme.textColor3};
43
+ }
44
+
45
+ .button {
46
+ display: inline-block;
47
+ margin-left: auto;
48
+ padding: 11px 16px;
49
+ color: ${({ theme }) => theme.buttonColor};
50
+ background: ${({ theme }) => theme.buttonBg};
51
+ font-size: 14px;
52
+ font-weight: 700;
53
+ line-height: 14px;
54
+ text-align: center;
55
+ border-radius: 8px;
56
+ box-sizing: border-box;
57
+ cursor: pointer;
58
+ height: 36px;
59
+ }
60
+ }
61
+
62
+ .question {
63
+ margin-left: 42px;
64
+ margin-bottom: 10px;
65
+ font-size: 16px;
66
+ font-weight: 700;
67
+ line-height: 16px;
68
+ color: ${({ theme }) => theme.textColor4};
69
+ }
70
+
71
+ .answer {
72
+ margin-left: 42px;
73
+ margin-bottom: 47px;
74
+ font-size: 16px;
75
+ font-weight: 400;
76
+ line-height: 16px;
77
+ color: ${({ theme }) => theme.textColor4};
78
+ }
79
+
80
+ @media (max-width: 768px) {
81
+ .walletList {
82
+ padding: 10px 28px 0;
83
+ min-height: 237px;
84
+ max-height: 237px;
85
+ overflow: auto;
86
+
87
+ .button {
88
+ font-size: 12px;
89
+ }
90
+ }
91
+
92
+ .question {
93
+ margin: 10px 25px;
94
+ }
95
+
96
+ .answer {
97
+ margin: 0 25px 75px;
98
+ }
99
+ }
100
+ `;
101
+ export default WalletListContainer;
@@ -0,0 +1,50 @@
1
+ import React, { useMemo } from 'react';
2
+ import Text from '../Text';
3
+ import { FlexBox } from '../../styled';
4
+ import Icon from '../Icon';
5
+ import useSlotsWalletStore from '../../stores/SlotsWalletStore';
6
+ import type { ISlotsConnector } from '../../types/slotsType';
7
+ import WalletItem from './style';
8
+ import { useWalletKit } from '../../hooks/useWalletKit';
9
+
10
+ export interface IWalletTriggerButton {
11
+ connector: any;
12
+ }
13
+ export interface IWalletSlotTriggerButton {
14
+ slotsConnector: ISlotsConnector;
15
+ }
16
+
17
+ export const WalletTriggerButton: React.FC<IWalletTriggerButton> = ({ connector }) => {
18
+ const { connectStatus } = useWalletKit();
19
+
20
+ const disabled = useMemo(() => {
21
+ return connectStatus === 'connected' || connectStatus === 'connecting';
22
+ }, [connectStatus]);
23
+
24
+ const handleConnect = async () => {
25
+ if (disabled) return;
26
+ console.log('connector', connector);
27
+ await connector.connect();
28
+ };
29
+ return (
30
+ <WalletItem onClick={handleConnect} className={disabled ? 'disabled' : ''}>
31
+ <FlexBox className={'gap-10'}>
32
+ <Icon src={connector.icon || ''} />
33
+ <Text text={connector.name} />
34
+ </FlexBox>
35
+ </WalletItem>
36
+ );
37
+ };
38
+
39
+ export const WalletSlotTriggerButton: React.FC<IWalletSlotTriggerButton> = ({ slotsConnector }) => {
40
+ const useAddConnector = useSlotsWalletStore((state: any) => state.addConnector);
41
+ useAddConnector(slotsConnector);
42
+ return (
43
+ <WalletItem>
44
+ <FlexBox className={'gap-10'}>
45
+ <Icon src={slotsConnector.walletIcon} />
46
+ <Text text={slotsConnector.walletName} />
47
+ </FlexBox>
48
+ </WalletItem>
49
+ );
50
+ };
@@ -0,0 +1,51 @@
1
+ import { styled } from 'styled-components';
2
+
3
+ const WalletItem = styled.div`
4
+ display: flex;
5
+ padding: 12px;
6
+ border-radius: 12px;
7
+ cursor: pointer;
8
+ flex-shrink: 0;
9
+ box-sizing: border-box;
10
+ user-select: none;
11
+
12
+ img {
13
+ border-radius: 6px;
14
+ }
15
+
16
+ &:hover {
17
+ background: ${({ theme }) => theme.itemHoverBg};
18
+ }
19
+
20
+ &.disabled {
21
+ pointer-events: none;
22
+ background: none;
23
+ }
24
+
25
+ @media (max-width: 768px) {
26
+ width: 86px;
27
+ justify-content: center;
28
+
29
+ > div {
30
+ box-sizing: border-box;
31
+ flex-direction: column;
32
+ align-items: center;
33
+
34
+ img {
35
+ width: 36px;
36
+ height: 36px;
37
+ }
38
+
39
+ > div {
40
+ line-height: 14px;
41
+ text-align: center;
42
+
43
+ span {
44
+ font-size: 12px;
45
+ }
46
+ }
47
+ }
48
+ }
49
+ `;
50
+
51
+ export default WalletItem;
@@ -0,0 +1,18 @@
1
+ declare module '*.svg' {
2
+ const dataUrl: string;
3
+ export default dataUrl;
4
+ }
5
+
6
+ declare module '*.png' {
7
+ const dataUrl: string;
8
+ export default dataUrl;
9
+ }
10
+
11
+ declare module 'content-hash' {
12
+ declare function decode(x: string): string;
13
+ declare function getCodec(x: string): string;
14
+ }
15
+ declare module '*.json' {
16
+ const value: any;
17
+ export default value;
18
+ }
@@ -0,0 +1,38 @@
1
+ import { walletHelperStore, type WalletHelperState } from '@web3jskit/wallethelper';
2
+ import { walletKitStore, AppModal, type WalletKitState } from '../stores';
3
+
4
+ type WalletKit = WalletHelperState & WalletKitState;
5
+
6
+ // use for react component
7
+ export const useWalletKit = () => {
8
+ const walletHelperStates = walletHelperStore((states: any) => states);
9
+
10
+ const walletKitStates = walletKitStore((states: any) => states);
11
+
12
+ // const provider = currentConnector?.provider || null;
13
+
14
+ return {
15
+ ...walletHelperStates,
16
+ // provider,
17
+
18
+ ...walletKitStates
19
+ } as WalletKit;
20
+ };
21
+
22
+ // use for pure js
23
+ export const getWalletKit = () => {
24
+ const walletHelperStates = walletHelperStore.getState();
25
+
26
+ const walletKitStates = walletKitStore.getState();
27
+
28
+ // const provider = currentConnector?.provider || null;
29
+
30
+ return {
31
+ ...walletHelperStates,
32
+ // provider,
33
+
34
+ ...walletKitStates
35
+ } as WalletKit;
36
+ };
37
+
38
+ export { AppModal };
package/src/index.ts ADDED
@@ -0,0 +1,8 @@
1
+ export * from './components/WalletKitProvider';
2
+ export * from './components/ConnectButton';
3
+ export * from './types/configType';
4
+ export * from './types/slotsType';
5
+ export { createSlots } from './wallets/SlotsWallets/index';
6
+ export { WalletSlotTriggerButton } from './components/WalletTriggerButton/index';
7
+ export { useWalletKit, getWalletKit } from './hooks/useWalletKit';
8
+ export { AppModal } from './stores';
@@ -0,0 +1,19 @@
1
+ import i18n from 'i18next';
2
+ import { initReactI18next } from 'react-i18next';
3
+ import { resources } from './resources';
4
+
5
+ // i18n.use(LanguageDetector)
6
+ i18n.use(initReactI18next).init({
7
+ resources,
8
+ react: {
9
+ useSuspense: true
10
+ },
11
+ fallbackLng: 'en',
12
+ preload: ['zh-CN', 'en', 'zh', 'en-US'],
13
+ keySeparator: false,
14
+ interpolation: {
15
+ escapeValue: false
16
+ }
17
+ });
18
+
19
+ export default i18n;
@@ -0,0 +1,27 @@
1
+ {
2
+ "title": "wallet",
3
+ "connectWallet": "Connect Wallet",
4
+ "introduceQuestion": "What is a wallet?",
5
+ "introduceAnswer": "Your Digital Asset Home",
6
+ "introduceDetail": "Wallets are used to send, receive, store, and display digital assets such as Ethereum and NFTs.",
7
+ "getWallet": "Get Wallet",
8
+ "learnMore": "Learn More",
9
+ "getWalletTitle": "Get a wallet",
10
+ "getWalletTips": "Mobile Wallet and Expansion,",
11
+ "getWalletQuestion": "Isn't that what you're looking for?",
12
+ "getWalletAnswer": "Select a wallet on the left to start using different wallet providers.",
13
+ "forChrome": "for Chrome",
14
+ "chromeDescription": "Access your wallet directly from your favorite web browser.",
15
+ "addToChrome": "Add to Chrome",
16
+ "forMobile": "for Mobile",
17
+ "mobileDescription": "Explore the world of Ethereum with a mobile wallet.",
18
+ "getMobileApp": "Get the App",
19
+ "getAppTip": "Scan with your phone to download for iOS or Android",
20
+ "get": "Get",
21
+ "continue": "Continue",
22
+ "opening": "Opening",
23
+ "confirmConnection": "Confirm connection in extension",
24
+ "copyAddress": "Copy Address",
25
+ "copied": "Copied!",
26
+ "disConnect": "Disconnect"
27
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "title": "钱包",
3
+ "connectWallet": "连接钱包",
4
+ "introduceQuestion": "什么是钱包?",
5
+ "introduceAnswer": "您的数字资产之家",
6
+ "introduceDetail": "钱包用于发送、接收、存储和展示数字资产,例如以太坊和 NFT。",
7
+ "getWallet": "获取钱包",
8
+ "learnMore": "了解更多",
9
+ "getWalletTitle": "获取钱包",
10
+ "getWalletTips": "移动钱包和扩展程序",
11
+ "getWalletQuestion": "不是你要找的吗?",
12
+ "getWalletAnswer": "在左侧选择一个钱包以开始使用不同的钱包提供商。",
13
+ "forChrome": "为 Chrome",
14
+ "chromeDescription": "从您最喜欢的网络浏览器直接访问您的钱包。",
15
+ "addToChrome": "添加到 Chrome",
16
+ "forMobile": "用于移动",
17
+ "mobileDescription": "使用移动钱包探索以太坊的世界。",
18
+ "getMobileApp": "获取应用",
19
+ "getAppTip": "用手机扫描下载 iOS 或 Android",
20
+ "get": "获取",
21
+ "continue": "继续",
22
+ "opening": "打开",
23
+ "confirmConnection": "在扩展程序中确认连接",
24
+ "copyAddress": "复制地址",
25
+ "copied": "已复制!",
26
+ "disConnect": "断开连接"
27
+ }
@@ -0,0 +1,11 @@
1
+ import en from './languages/en.json';
2
+ import zh from './languages/zh.json';
3
+
4
+ export const resources = {
5
+ en: {
6
+ translation: en
7
+ },
8
+ zh: {
9
+ translation: zh
10
+ }
11
+ };
@@ -0,0 +1,48 @@
1
+ import { create } from 'zustand';
2
+ import { persist, createJSONStorage } from 'zustand/middleware';
3
+ import type { ISlotsConnector } from '../types/slotsType';
4
+
5
+ export interface ISlotsWallets {
6
+ walletConnectors: {
7
+ [key: string]: ISlotsConnector;
8
+ };
9
+ }
10
+
11
+ const useSlotsWalletStore = create(
12
+ persist(
13
+ (set, get: () => ISlotsWallets) => ({
14
+ walletConnectors: {},
15
+ addConnector({ walletName, walletIcon, connector, uuid, connectorNamespace }: ISlotsConnector) {
16
+ return set(state => {
17
+ return {
18
+ walletConnectors: {
19
+ ...state.walletConnectors,
20
+ [uuid]: { walletName, walletIcon, connector, uuid, connectorNamespace }
21
+ }
22
+ };
23
+ });
24
+ },
25
+
26
+ removeConnector(uuid: string) {
27
+ return set(state => {
28
+ if (get().walletConnectors[uuid]) {
29
+ return {
30
+ walletConnectors: Object.fromEntries(Object.entries(state.walletConnectors).filter(([k]) => k !== uuid))
31
+ };
32
+ }
33
+ return { walletConnectors: { ...state.walletConnectors } };
34
+ });
35
+ },
36
+
37
+ clearConnectors() {
38
+ return set(() => ({ walletConnectors: {} }));
39
+ }
40
+ }),
41
+ {
42
+ name: 'WALLET_KIT_SLOTS',
43
+ storage: createJSONStorage(() => localStorage)
44
+ }
45
+ )
46
+ );
47
+
48
+ export default useSlotsWalletStore;
@@ -0,0 +1,74 @@
1
+ import { create } from 'zustand';
2
+ import { persist, createJSONStorage } from 'zustand/middleware';
3
+ import type { Locals, Theme } from '../types/configType';
4
+
5
+ export enum AppModal {
6
+ ConnectModal,
7
+ InfoModal
8
+ }
9
+
10
+ type Avatar = {
11
+ text: string;
12
+ bg: string;
13
+ };
14
+
15
+ export interface WalletKitState {
16
+ chains: Array<any>;
17
+ setChains: (chains: Array<any>) => void;
18
+
19
+ language: Locals | null;
20
+ setLanguage: (language: Locals) => void;
21
+
22
+ theme: Theme | null;
23
+ toggleTheme: (theme: Theme) => void;
24
+
25
+ modalType: AppModal | null;
26
+ openModal: (modal: AppModal) => void;
27
+ closeModal: () => void;
28
+
29
+ avatar: Avatar | null;
30
+ setAvatar: (avatar: Avatar) => void;
31
+ }
32
+
33
+ export const walletKitStore = create<WalletKitState>()(
34
+ persist(
35
+ set => ({
36
+ chains: [],
37
+ setChains(chains: Array<any>) {
38
+ return set(() => ({ chains }));
39
+ },
40
+
41
+ language: null,
42
+ setLanguage(language: Locals) {
43
+ return set(() => ({ language }));
44
+ },
45
+
46
+ theme: null,
47
+ toggleTheme(theme: Theme) {
48
+ return set(() => ({ theme: theme === 'darkMode' ? 'lightMode' : 'darkMode' }));
49
+ },
50
+
51
+ modalType: null,
52
+ openModal(modal: AppModal) {
53
+ return set(() => ({ modalType: modal }));
54
+ },
55
+ closeModal() {
56
+ return set(() => ({ modalType: null }));
57
+ },
58
+
59
+ avatar: null,
60
+ setAvatar(avatar: Avatar) {
61
+ return set(() => ({ avatar }));
62
+ }
63
+ }),
64
+ {
65
+ name: 'WALLET_KIT_STORE',
66
+ storage: createJSONStorage(() => localStorage),
67
+ onRehydrateStorage: () => state => {
68
+ if (state) {
69
+ state.closeModal();
70
+ }
71
+ }
72
+ }
73
+ )
74
+ );
@@ -0,0 +1,79 @@
1
+ import { styled } from 'styled-components';
2
+
3
+ export const FlexBox = styled.div`
4
+ display: flex;
5
+ position: relative;
6
+ `;
7
+ export const FlexCenter = styled.div`
8
+ display: flex;
9
+ align-items: center;
10
+ justify-content: center;
11
+ `;
12
+ export const FlexAICenter = styled.div`
13
+ display: flex;
14
+ align-items: center;
15
+ `;
16
+ export const FlexJCCenter = styled.div`
17
+ display: flex;
18
+ justify-content: center;
19
+ `;
20
+ export const FlexJCSpaceBetween = styled.div`
21
+ display: flex;
22
+ justify-content: space-between;
23
+ `;
24
+
25
+ export const FlexJCEnd = styled.div`
26
+ display: flex;
27
+ justify-content: flex-end;
28
+ `;
29
+ export const FlexJCStart = styled.div`
30
+ display: flex;
31
+ justify-content: flex-start;
32
+ `;
33
+ export const FlexWrap = styled.div`
34
+ display: flex;
35
+ flex-wrap: wrap;
36
+ `;
37
+ export const FlexCol = styled.div`
38
+ display: flex;
39
+ flex-direction: column;
40
+ `;
41
+ export const FlexColAIEnd = styled.div`
42
+ display: flex;
43
+ flex-direction: column;
44
+ align-items: end;
45
+ `;
46
+ export const FlexColJCEnd = styled.div`
47
+ display: flex;
48
+ flex-direction: column;
49
+ justify-content: end;
50
+ `;
51
+ export const FlexCenterCol = styled.div`
52
+ display: flex;
53
+ flex-direction: column;
54
+ align-items: center;
55
+ justify-content: center;
56
+ `;
57
+ export const FlexJCCenterCol = styled.div`
58
+ display: flex;
59
+ flex-direction: column;
60
+ justify-content: center;
61
+ `;
62
+
63
+ export const FlexJCSBCol = styled.div`
64
+ display: flex;
65
+ flex-direction: column;
66
+ justify-content: space-between;
67
+ `;
68
+ export const FlexJCSBCenter = styled.div`
69
+ display: flex;
70
+ align-items: center;
71
+ justify-content: space-between;
72
+ `;
73
+ export const FlexAICenterCol = styled.div`
74
+ display: flex;
75
+ flex-direction: column;
76
+ justify-content: center;
77
+ `;
78
+
79
+ export const SlotWrapper = styled.div``;
@@ -0,0 +1,9 @@
1
+ import { describe, it } from 'vitest';
2
+ describe('getInjectedProvider', () => {
3
+ it('metamask provider', () => {
4
+ console.log('connector');
5
+ });
6
+ it('getInjectedConnector', () => {
7
+ console.log('connector');
8
+ });
9
+ });
@@ -0,0 +1,7 @@
1
+ import '@testing-library/jest-dom';
2
+ import { cleanup } from '@testing-library/react';
3
+ import { afterEach } from 'vitest';
4
+
5
+ afterEach(() => {
6
+ cleanup();
7
+ });