@web3jskit/walletkit 0.0.1 → 0.0.3

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 (56) hide show
  1. package/README.md +235 -1
  2. package/dist/package.json +4 -4
  3. package/dist/src/assets/svg/dataBase.d.ts +0 -2
  4. package/dist/src/assets/svg/dataBase.js +0 -2
  5. package/dist/src/assets/svg/dataBase.js.map +1 -1
  6. package/dist/src/components/ConnectButton/index.d.ts +2 -0
  7. package/dist/src/components/ConnectButton/index.js +7 -2
  8. package/dist/src/components/ConnectButton/index.js.map +1 -1
  9. package/dist/src/components/GetWallet/index.js +9 -22
  10. package/dist/src/components/GetWallet/index.js.map +1 -1
  11. package/dist/src/components/GetWallet/style.js +2 -0
  12. package/dist/src/components/GetWallet/style.js.map +1 -1
  13. package/dist/src/components/Modal/ConnectModal.js +26 -6
  14. package/dist/src/components/Modal/ConnectModal.js.map +1 -1
  15. package/dist/src/components/Modal/style.js +32 -2
  16. package/dist/src/components/Modal/style.js.map +1 -1
  17. package/dist/src/components/Text/index.js +15 -7
  18. package/dist/src/components/Text/index.js.map +1 -1
  19. package/dist/src/components/WalletList/index.js +6 -1
  20. package/dist/src/components/WalletList/index.js.map +1 -1
  21. package/dist/src/components/WalletList/style.js +2 -1
  22. package/dist/src/components/WalletList/style.js.map +1 -1
  23. package/dist/src/components/WalletTriggerButton/index.js +1 -1
  24. package/dist/src/components/WalletTriggerButton/index.js.map +1 -1
  25. package/dist/src/components/WalletTriggerButton/style.js +3 -1
  26. package/dist/src/components/WalletTriggerButton/style.js.map +1 -1
  27. package/dist/src/hooks/useWalletKit.js +7 -1
  28. package/dist/src/hooks/useWalletKit.js.map +1 -1
  29. package/dist/src/index.d.ts +1 -0
  30. package/dist/src/index.js +1 -0
  31. package/dist/src/index.js.map +1 -1
  32. package/dist/src/locals/languages/en.json +4 -1
  33. package/dist/src/locals/languages/zh.json +4 -1
  34. package/dist/src/locals/resources.d.ts +6 -0
  35. package/dist/src/stores/index.d.ts +3 -3
  36. package/dist/src/stores/index.js +5 -4
  37. package/dist/src/stores/index.js.map +1 -1
  38. package/dist/tsconfig.build.tsbuildinfo +1 -1
  39. package/package.json +4 -4
  40. package/src/assets/svg/dataBase.ts +0 -6
  41. package/src/components/ConnectButton/index.tsx +9 -2
  42. package/src/components/GetWallet/index.tsx +18 -24
  43. package/src/components/GetWallet/style.ts +2 -0
  44. package/src/components/Modal/ConnectModal.tsx +34 -10
  45. package/src/components/Modal/style.ts +32 -2
  46. package/src/components/Text/index.tsx +15 -7
  47. package/src/components/WalletList/index.tsx +8 -1
  48. package/src/components/WalletList/style.ts +2 -1
  49. package/src/components/WalletTriggerButton/index.tsx +1 -1
  50. package/src/components/WalletTriggerButton/style.ts +3 -1
  51. package/src/hooks/useWalletKit.ts +10 -6
  52. package/src/index.ts +1 -0
  53. package/src/locals/languages/en.json +4 -1
  54. package/src/locals/languages/zh.json +4 -1
  55. package/src/stores/index.ts +8 -7
  56. package/src/components/SVGs/metamaskQrCode.tsx +0 -393
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@web3jskit/walletkit",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "walletkit",
5
5
  "license": "MIT",
6
6
  "scripts": {
@@ -11,18 +11,18 @@
11
11
  "dependencies": {
12
12
  "@reach/dialog": "^0.18.0",
13
13
  "@react-spring/web": "^9.7.1",
14
- "@web3jskit/wallethelper": "^0.0.1",
14
+ "@web3jskit/wallethelper": "0.0.3",
15
15
  "copy-to-clipboard": "^3.3.3",
16
16
  "i18next": "^22.4.13",
17
17
  "i18next-browser-languagedetector": "^7.0.1",
18
18
  "i18next-xhr-backend": "^3.2.2",
19
19
  "lit": "^3.2.1",
20
+ "qrcode.react": "^4.2.0",
20
21
  "react": "^18.3.1",
21
22
  "react-dom": "^18.3.1",
22
23
  "react-i18next": "^12.2.0",
23
24
  "styled-components": "^6.1.13",
24
- "zustand": "^4.3.9",
25
- "typescript": "5.5.2"
25
+ "zustand": "^4.3.9"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@testing-library/jest-dom": "^6.2.0",
@@ -9,9 +9,3 @@ export const chromeIcon =
9
9
 
10
10
  export const gel =
11
11
  'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALDSURBVHgB1Zg/aBNRHMe/1kIrRHJDwbSDSQbTrSkKupmDglOhzSDoolMGBzV0cRPpKFJI1w6tVbGLhEC7uIS4KbYmHSNyyVLtYhMSIRVB3++Sd17i3buX1z85P/C7u7z3cu97v/d7v3f3AGd0ZqvMDGa/j9k+de49DwkizPInIMLNjE6fjkwzOzhFMdwOOn3/45lBiLGLitgFGQMUwy3Pxcz7QAw3/Sw7PILDGA6KYSiKGY9omL0zhfPaKALBUau8WW9hY/kD9io1KKCfQdtVffNqO4VL8QuOdduFKu7NvIAKQ1AkoI241k2ENahCMfREpiENzVgoYJ5vPbiKxNyksG2j1sL3/R/mNfGz9QsySA0ZxcvLjyl28xGoQOJoCMulfc+2w5CgHbzdYlYW35nBS531srB0w/Qih7wUmw5JCVKOoa31XUcxxGsmtJdAUM67Qg/F4iFcToQxezfeVd6oHbqKIZqsjtrYvXr74TXTU/QgopQgjKHcl/sYDwctEVvrJXazOnbYtC6XvkEExd2VxEXmmXNIPb5uiaMHmRl75vo/oYe4GGJlsWDGDEfTNOi6jmKxiEql4li22fHERCRoxRSfdUqC7DTrh12/s9ms2Tl1HI1GXcsI0fD2ohzU5A2Zsn5RFpRMJpHJZMyzqKxfpIesFxqWdDrtWdYv0h6SzSNHReihzee7LAdNmdeURz6zTPu1WrfqG2a+6Q7YGHsDsM8kuuZ5jKcOEZ5rmc4W0advbrrWLy28tdIB5RsyN2g9o1cTEZ5D5jVlJ1k251BWPyrKs+yk+P8Eeb0y7FX/LpQ7gviggLZPCDcoqA0IPmcJWvUTczHHTjaW33eV0Yyyr4GcQq7suSAzinRYg3++y1aHOoL8Qo5f5DF47xh2ZRH4bLOB8NV2jN1TximKycNjhnNoR2QN7e234xZhoL2lpzt1/AfLekgsXhgSgQAAAABJRU5ErkJggg==';
12
-
13
- export const phantomQrCode =
14
- 'data:image/png;base64,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';
15
-
16
- export const tronLinkQrCode =
17
- 'data:image/png;base64,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';
@@ -1,19 +1,26 @@
1
1
  import { useTranslation } from 'react-i18next';
2
2
  import { useWalletKit, AppModal } from '../../hooks/useWalletKit';
3
3
  import { ConnectedInfo } from './ConnectedInfo';
4
+ import { SupportWallet } from '@web3jskit/wallethelper';
5
+ import { useEffect } from 'react';
4
6
 
5
7
  interface ConnectButtonProps {
6
8
  text?: string;
7
9
  showAvatar?: boolean;
8
10
  buttonClass?: string;
9
11
  infoClass?: string;
12
+ supportWallets?: SupportWallet[];
10
13
  }
11
14
 
12
15
  export function ConnectButton(props: ConnectButtonProps) {
13
16
  const { t } = useTranslation();
14
17
 
15
- const { text = t('connectWallet'), showAvatar = true, buttonClass, infoClass } = props;
16
- const { connectStatus, walletAddress, openModal, avatar } = useWalletKit();
18
+ const { text = t('connectWallet'), showAvatar = true, buttonClass, infoClass, supportWallets = [] } = props;
19
+ const { avatar, connectStatus, walletAddress, openModal, setSupportWallets } = useWalletKit();
20
+
21
+ useEffect(() => {
22
+ setSupportWallets(supportWallets);
23
+ }, []);
17
24
 
18
25
  return (
19
26
  <div>
@@ -1,40 +1,21 @@
1
1
  import { useTranslation } from 'react-i18next';
2
- import { useMemo, useState } from 'react';
2
+ import { useState } from 'react';
3
3
  import ModalHeader from '../Header/ModalHeader';
4
4
  import GetWalletContainer from './style';
5
5
  import { chromeIcon } from '../../assets/svg/dataBase';
6
- import MetamaskQrCode from '../SVGs/metamaskQrCode';
7
- import { phantomQrCode, tronLinkQrCode } from '../../assets/svg/dataBase';
6
+ // import QRCode from 'react-qr-code';
7
+ import { QRCodeSVG } from 'qrcode.react';
8
8
 
9
9
  interface GetWalletProps {
10
10
  wallet: any;
11
11
  onBack?: () => void;
12
12
  }
13
13
 
14
- const downloadConfig = {
15
- MetaMask: {
16
- extension: 'https://chromewebstore.google.com/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn',
17
- qrCode: <MetamaskQrCode />
18
- },
19
- Phantom: {
20
- extension: 'https://chromewebstore.google.com/detail/phantom/bfnaelmomeimhlpmgjnjophhpkkoljpa',
21
- qrCode: <img src={phantomQrCode} />
22
- },
23
- TronLink: {
24
- extension: 'https://chromewebstore.google.com/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec',
25
- qrCode: <img src={tronLinkQrCode} />
26
- }
27
- };
28
-
29
14
  export function GetWallet({ wallet, onBack }: GetWalletProps) {
30
15
  const { t } = useTranslation();
31
16
 
32
17
  const [showQRCode, setShowQRCode] = useState(false);
33
18
 
34
- const currentDownloadConfig = useMemo(() => {
35
- return downloadConfig[wallet.name as keyof typeof downloadConfig];
36
- }, [wallet]);
37
-
38
19
  return (
39
20
  <GetWalletContainer>
40
21
  <ModalHeader
@@ -49,7 +30,20 @@ export function GetWallet({ wallet, onBack }: GetWalletProps) {
49
30
  {showQRCode ? (
50
31
  <div className="qrCodeBox">
51
32
  <div className="downloadTip">{t('getAppTip')}</div>
52
- <div className="qrCode">{currentDownloadConfig.qrCode}</div>
33
+ <div className="qrCode">
34
+ {/* <QRCode value={wallet.downloadUrl} /> */}
35
+ <QRCodeSVG
36
+ value={wallet.downloadUrl}
37
+ size={270}
38
+ imageSettings={{
39
+ src: wallet.icon,
40
+ height: 24,
41
+ width: 24,
42
+ excavate: true
43
+ }}
44
+ />
45
+ ,
46
+ </div>
53
47
  <div className="button" onClick={() => setShowQRCode(false)}>
54
48
  {t('continue')}
55
49
  </div>
@@ -64,7 +58,7 @@ export function GetWallet({ wallet, onBack }: GetWalletProps) {
64
58
  <div
65
59
  className="button"
66
60
  onClick={() => {
67
- window.open(currentDownloadConfig.extension, '_blank');
61
+ window.open(wallet.extension, '_blank');
68
62
  }}
69
63
  >
70
64
  {t('addToChrome')}
@@ -88,6 +88,8 @@ const GetWalletContainer = styled.div`
88
88
  height: 270px;
89
89
  border-radius: 12px;
90
90
  border: 1px solid ${({ theme }) => theme.borderColor};
91
+ font-size: 0;
92
+ overflow: hidden;
91
93
  }
92
94
 
93
95
  .button {
@@ -3,7 +3,7 @@ import Modal from './index';
3
3
  import { SlotWrapper } from '../../styled';
4
4
  import { SupportWallets } from '@web3jskit/wallethelper';
5
5
  import { useTranslation } from 'react-i18next';
6
- import { useCallback, useEffect, useState, type ReactNode } from 'react';
6
+ import { useCallback, useEffect, useMemo, useState, type ReactNode } from 'react';
7
7
  import { WalletTriggerButton } from '../WalletTriggerButton';
8
8
  import { Introduce } from '../Introduce';
9
9
  import { WalletList } from '../WalletList';
@@ -39,6 +39,26 @@ export function ConnectModal({ isOpen, slots }: ModalProps) {
39
39
  setConnectors(list);
40
40
  };
41
41
 
42
+ const connectorsGroupByType = useMemo(() => {
43
+ const result = connectors.reduce((acc, connector) => {
44
+ if (!acc[connector.connectorType]) {
45
+ acc[connector.connectorType] = [];
46
+ }
47
+ acc[connector.connectorType].push(connector);
48
+ return acc;
49
+ }, {});
50
+ return result;
51
+ }, [connectors]);
52
+
53
+ const sortedKeys = useMemo(() => {
54
+ const keys = Object.keys(connectorsGroupByType);
55
+ const sortedKeys = keys.sort((a, b) => {
56
+ const order = ['installed', 'run', 'more'];
57
+ return order.indexOf(a) - order.indexOf(b);
58
+ });
59
+ return sortedKeys;
60
+ }, [connectorsGroupByType]);
61
+
42
62
  useEffect(() => {
43
63
  if (isOpen) {
44
64
  requestConnectors();
@@ -77,8 +97,8 @@ export function ConnectModal({ isOpen, slots }: ModalProps) {
77
97
  setStep(0);
78
98
  }}
79
99
  onGetWallet={wallet => {
80
- if (wallet.name === 'GelWallet') {
81
- window.open('https://gelwallet.com', '_blank');
100
+ if (wallet.name === 'Gel Wallet') {
101
+ window.open(wallet.webUrl, '_blank');
82
102
  return;
83
103
  }
84
104
  setSelectedWallet(wallet);
@@ -106,13 +126,17 @@ export function ConnectModal({ isOpen, slots }: ModalProps) {
106
126
  <ModalAside className={step !== 0 ? 'hidden' : ''}>
107
127
  <ModalHeader title={t('connectWallet')} className="asideTitle" />
108
128
  <AsideList>
109
- {connectors.length ? (
110
- connectors.map((connector: any, index: number) => {
111
- return <WalletTriggerButton key={index} connector={connector} />;
112
- })
113
- ) : (
114
- <></>
115
- )}
129
+ {sortedKeys.map(connectorType => {
130
+ return (
131
+ <div className="typeBox" key={connectorType}>
132
+ <div className={`typeHeader ${connectorType}`}>{t(connectorType)}</div>
133
+ {connectorsGroupByType[connectorType].map((connector: any) => {
134
+ return <WalletTriggerButton key={connectorType + connector.name} connector={connector} />;
135
+ })}
136
+ </div>
137
+ );
138
+ })}
139
+
116
140
  {slots ? (
117
141
  slots.map((Slot: ReactNode, index: number) => {
118
142
  return <SlotWrapper key={index}>{Slot}</SlotWrapper>;
@@ -34,14 +34,44 @@ export const ModalAside = styled.div`
34
34
  `;
35
35
 
36
36
  export const AsideList = styled.div`
37
- overflow: auto;
37
+ overflow-y: auto;
38
+ overflow-x: hidden;
38
39
  display: flex;
39
40
  flex-direction: column;
40
41
  gap: 16px;
41
- padding: 0 20px;
42
+ padding: 0 20px 20px;
43
+
44
+ .typeBox {
45
+ display: flex;
46
+ flex-direction: column;
47
+ gap: 4px;
48
+ }
49
+
50
+ .typeHeader {
51
+ font-size: 14px;
52
+ line-height: 14px;
53
+ font-weight: 700;
54
+ color: ${({ theme }) => theme.gray};
55
+ margin-bottom: 14px;
56
+
57
+ &.installed {
58
+ color: ${({ theme }) => theme.blue};
59
+ }
60
+ }
42
61
 
43
62
  @media (max-width: 768px) {
63
+ overflow-x: auto;
64
+ overflow-y: hidden;
44
65
  flex-direction: row;
66
+ padding: 0 20px;
67
+
68
+ .typeBox {
69
+ flex-direction: row;
70
+
71
+ .typeHeader {
72
+ display: none;
73
+ }
74
+ }
45
75
 
46
76
  // &::-webkit-scrollbar {
47
77
  // display: none;
@@ -18,13 +18,21 @@ interface TextOrg {
18
18
  }
19
19
 
20
20
  const TextStyled = styled.div`
21
- color: ${({ theme }) => theme.textColor2};
22
- font-family: 'Manrope', serif;
23
- height: inherit;
24
- left: inherit;
25
- white-space: pre-wrap;
26
- //word-break: break-all;
21
+ display: flex;
27
22
  align-items: center;
23
+
24
+ .text {
25
+ max-width: 120px;
26
+ color: ${({ theme }) => theme.textColor2};
27
+ font-family: 'Manrope';
28
+ white-space: nowrap;
29
+ overflow: hidden;
30
+ text-overflow: ellipsis;
31
+
32
+ @media (max-width: 768px) {
33
+ white-space: wrap;
34
+ }
35
+ }
28
36
  `;
29
37
 
30
38
  export const Text: React.FC<TextOrg> = ({
@@ -50,7 +58,7 @@ export const Text: React.FC<TextOrg> = ({
50
58
  }}
51
59
  >
52
60
  {prefix ? <span>{prefix}</span> : <></>}
53
- <span dangerouslySetInnerHTML={{ __html: text }} />
61
+ <span className="text" dangerouslySetInnerHTML={{ __html: text }} />
54
62
  {suffix ? <span>{suffix}</span> : <></>}
55
63
  </TextStyled>
56
64
  );
@@ -1,6 +1,7 @@
1
1
  import { useTranslation } from 'react-i18next';
2
2
  import ModalHeader from '../Header/ModalHeader';
3
3
  import WalletListContainer from './style';
4
+ import { useMemo } from 'react';
4
5
 
5
6
  interface WalletListProps {
6
7
  list?: any[];
@@ -11,11 +12,17 @@ interface WalletListProps {
11
12
  export function WalletList({ list, onBack, onGetWallet }: WalletListProps) {
12
13
  const { t } = useTranslation();
13
14
 
15
+ // random three wallets in the list
16
+ const randomList = useMemo(() => {
17
+ const randomList = list?.sort(() => Math.random() - 0.5).slice(0, 3);
18
+ return randomList;
19
+ }, [list]);
20
+
14
21
  return (
15
22
  <WalletListContainer>
16
23
  <ModalHeader title={t('getWalletTitle')} onBack={onBack} />
17
24
  <div className="walletList">
18
- {list?.map((item, index) => (
25
+ {randomList?.map((item, index) => (
19
26
  <div className="walletItem" key={index + item.name}>
20
27
  <img src={item.icon} alt={item.name} />
21
28
  <div>
@@ -10,9 +10,10 @@ const WalletListContainer = styled.div`
10
10
  .walletList {
11
11
  display: flex;
12
12
  flex-direction: column;
13
- padding: 10px 20px 0;
13
+ padding: 10px 20px;
14
14
  gap: 20px;
15
15
  flex: 1;
16
+ overflow: auto;
16
17
 
17
18
  .walletItem {
18
19
  display: flex;
@@ -18,7 +18,7 @@ export const WalletTriggerButton: React.FC<IWalletTriggerButton> = ({ connector
18
18
  const { connectStatus } = useWalletKit();
19
19
 
20
20
  const disabled = useMemo(() => {
21
- return connectStatus === 'connected' || connectStatus === 'connecting';
21
+ return connectStatus === 'connected';
22
22
  }, [connectStatus]);
23
23
 
24
24
  const handleConnect = async () => {
@@ -2,7 +2,7 @@ import { styled } from 'styled-components';
2
2
 
3
3
  const WalletItem = styled.div`
4
4
  display: flex;
5
- padding: 12px;
5
+ padding: 4px 12px;
6
6
  border-radius: 12px;
7
7
  cursor: pointer;
8
8
  flex-shrink: 0;
@@ -10,6 +10,8 @@ const WalletItem = styled.div`
10
10
  user-select: none;
11
11
 
12
12
  img {
13
+ width: 28px;
14
+ height: 28px;
13
15
  border-radius: 6px;
14
16
  }
15
17
 
@@ -2,6 +2,7 @@ import { walletHelperStore, type WalletHelperState } from '@web3jskit/wallethelp
2
2
  import { walletKitStore, AppModal, type WalletKitState } from '../stores';
3
3
 
4
4
  type WalletKit = WalletHelperState & WalletKitState;
5
+ type WalletKitKeys = keyof WalletKit;
5
6
 
6
7
  // use for react component
7
8
  export const useWalletKit = () => {
@@ -22,17 +23,20 @@ export const useWalletKit = () => {
22
23
  // use for pure js
23
24
  export const getWalletKit = () => {
24
25
  const walletHelperStates = walletHelperStore.getState();
25
-
26
26
  const walletKitStates = walletKitStore.getState();
27
27
 
28
- // const provider = currentConnector?.provider || null;
29
-
30
- return {
28
+ const exportStates = {
31
29
  ...walletHelperStates,
32
- // provider,
33
-
34
30
  ...walletKitStates
35
31
  } as WalletKit;
32
+ // only export get/set methods
33
+ Object.keys(exportStates).forEach((key: string) => {
34
+ if (typeof exportStates[key as WalletKitKeys] !== 'function') {
35
+ delete exportStates[key as WalletKitKeys];
36
+ }
37
+ });
38
+
39
+ return exportStates as WalletKit;
36
40
  };
37
41
 
38
42
  export { AppModal };
package/src/index.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export { SupportWallet } from '@web3jskit/wallethelper';
1
2
  export * from './components/WalletKitProvider';
2
3
  export * from './components/ConnectButton';
3
4
  export * from './types/configType';
@@ -23,5 +23,8 @@
23
23
  "confirmConnection": "Confirm connection in extension",
24
24
  "copyAddress": "Copy Address",
25
25
  "copied": "Copied!",
26
- "disConnect": "Disconnect"
26
+ "disConnect": "Disconnect",
27
+ "installed": "Installed",
28
+ "run": "Run",
29
+ "more": "More"
27
30
  }
@@ -23,5 +23,8 @@
23
23
  "confirmConnection": "在扩展程序中确认连接",
24
24
  "copyAddress": "复制地址",
25
25
  "copied": "已复制!",
26
- "disConnect": "断开连接"
26
+ "disConnect": "断开连接",
27
+ "installed": "已安装",
28
+ "run": "流行",
29
+ "more": "更多"
27
30
  }
@@ -16,11 +16,11 @@ export interface WalletKitState {
16
16
  chains: Array<any>;
17
17
  setChains: (chains: Array<any>) => void;
18
18
 
19
- language: Locals | null;
19
+ language: Locals;
20
20
  setLanguage: (language: Locals) => void;
21
21
 
22
- theme: Theme | null;
23
- toggleTheme: (theme: Theme) => void;
22
+ theme: Theme;
23
+ toggleTheme: () => void;
24
24
 
25
25
  modalType: AppModal | null;
26
26
  openModal: (modal: AppModal) => void;
@@ -32,19 +32,20 @@ export interface WalletKitState {
32
32
 
33
33
  export const walletKitStore = create<WalletKitState>()(
34
34
  persist(
35
- set => ({
35
+ (set, get) => ({
36
36
  chains: [],
37
37
  setChains(chains: Array<any>) {
38
38
  return set(() => ({ chains }));
39
39
  },
40
40
 
41
- language: null,
41
+ language: 'en',
42
42
  setLanguage(language: Locals) {
43
43
  return set(() => ({ language }));
44
44
  },
45
45
 
46
- theme: null,
47
- toggleTheme(theme: Theme) {
46
+ theme: 'lightMode',
47
+ toggleTheme() {
48
+ const { theme } = get();
48
49
  return set(() => ({ theme: theme === 'darkMode' ? 'lightMode' : 'darkMode' }));
49
50
  },
50
51