@verified-network/verified-custody 0.1.8 → 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 (65) hide show
  1. package/babel.config.json +12 -0
  2. package/dist/index.d.mts +165 -0
  3. package/dist/index.d.ts +165 -0
  4. package/dist/index.js +3 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/index.mjs +3 -0
  7. package/dist/index.mjs.map +1 -0
  8. package/package.json +31 -38
  9. package/src/components/overlays.tsx +61 -0
  10. package/src/components/search.tsx +381 -0
  11. package/src/components/slider.tsx +29 -0
  12. package/src/components/success.tsx +142 -0
  13. package/src/customTypes.d.ts +37 -0
  14. package/src/index.ts +17 -0
  15. package/src/pages/addCosigners.tsx +1014 -0
  16. package/src/pages/contact.tsx +280 -0
  17. package/src/pages/createPin.tsx +693 -0
  18. package/src/pages/enterPin.tsx +821 -0
  19. package/src/pages/ftu.tsx +244 -0
  20. package/src/pages/index.tsx +170 -0
  21. package/src/pages/otp.tsx +410 -0
  22. package/src/services/contracts.ts +817 -0
  23. package/src/services/store.tsx +65 -0
  24. package/src/style.css +2030 -0
  25. package/src/utils/config.ts +103 -0
  26. package/src/utils/constants.ts +1966 -0
  27. package/src/utils/helpers.tsx +334 -0
  28. package/src/utils/types.ts +85 -0
  29. package/tsconfig.json +16 -0
  30. package/tsup.config.ts +36 -0
  31. package/README.md +0 -93
  32. package/dist/assets/icon128.png +0 -0
  33. package/dist/assets/icon16.png +0 -0
  34. package/dist/assets/icon32.png +0 -0
  35. package/dist/assets/icon48.png +0 -0
  36. package/dist/autoreload-bg.1777342b.js +0 -392
  37. package/dist/autoreload.af9e0afa.js +0 -393
  38. package/dist/main.js +0 -2
  39. package/dist/main.js.LICENSE.txt +0 -190
  40. package/dist/manifest.json +0 -39
  41. package/dist/src/scripts/background.js +0 -866
  42. package/dist/src/scripts/content.js +0 -22029
  43. package/dist/src/static/options.b1269179.js +0 -22033
  44. package/dist/src/static/options.html +0 -9
  45. package/dist/src/static/popup.e3c8c7b7.js +0 -22043
  46. package/dist/src/static/popup.html +0 -9
  47. package/dist/webext-prod/assets/icon128.png +0 -0
  48. package/dist/webext-prod/assets/icon16.png +0 -0
  49. package/dist/webext-prod/assets/icon32.png +0 -0
  50. package/dist/webext-prod/assets/icon48.png +0 -0
  51. package/dist/webext-prod/manifest.json +0 -36
  52. package/dist/webext-prod/src/scripts/background.js +0 -2
  53. package/dist/webext-prod/src/scripts/background.js.map +0 -1
  54. package/dist/webext-prod/src/scripts/content.js +0 -35
  55. package/dist/webext-prod/src/scripts/content.js.map +0 -1
  56. package/dist/webext-prod/src/static/options.a111dcd9.js +0 -2
  57. package/dist/webext-prod/src/static/options.a111dcd9.js.map +0 -1
  58. package/dist/webext-prod/src/static/options.html +0 -1
  59. package/dist/webext-prod/src/static/popup.70071e3e.js +0 -35
  60. package/dist/webext-prod/src/static/popup.70071e3e.js.map +0 -1
  61. package/dist/webext-prod/src/static/popup.cc04f56e.js +0 -2
  62. package/dist/webext-prod/src/static/popup.cc04f56e.js.map +0 -1
  63. package/dist/webext-prod/src/static/popup.e8a65b8a.js +0 -35
  64. package/dist/webext-prod/src/static/popup.e8a65b8a.js.map +0 -1
  65. package/dist/webext-prod/src/static/popup.html +0 -1
package/package.json CHANGED
@@ -1,50 +1,43 @@
1
1
  {
2
2
  "name": "@verified-network/verified-custody",
3
- "version": "0.1.8",
4
- "description": "React submodule for Custody of digital assets",
5
- "main": "dist/main.js",
3
+ "version": "0.2.0",
4
+ "main": "dist/index.js",
5
+ "module": "dist/index.mjs",
6
+ "types": "dist/index.d.ts",
6
7
  "scripts": {
7
- "test": "echo \"Error: no test specified\" && exit 1",
8
- "build": "webpack"
8
+ "build": "tsup",
9
+ "test": "echo \"Error: no test specified\" && exit 1"
9
10
  },
10
- "files": ["dist"],
11
11
  "keywords": [],
12
12
  "author": "",
13
13
  "license": "MIT",
14
- "devDependencies": {
15
- "@babel/core": "^7.24.5",
16
- "@babel/preset-env": "^7.24.5",
17
- "@babel/preset-react": "^7.24.1",
18
- "webpack": "^5.90.3",
19
- "webpack-cli": "^5.1.4"
20
- },
14
+ "description": "React submodule for Custody of digital assets",
21
15
  "dependencies": {
22
- "@verified-network/verified-sdk": "^1.8.9",
23
- "assert": "^2.1.0",
24
- "axios": "^1.7.2",
25
- "babel-loader": "^9.1.3",
26
- "browserify-zlib": "^0.2.0",
27
- "buffer": "^6.0.3",
28
- "constants-browserify": "^1.0.0",
29
- "crypto-browserify": "^3.12.0",
16
+ "@biconomy/account": "^4.5.7",
17
+ "@verified-network/verified-sdk": "^1.9.5",
18
+ "axios": "^1.8.4",
30
19
  "crypto-js": "^4.2.0",
31
- "ethers": "^6.12.1",
32
- "firebase": "^10.12.0",
33
- "https-browserify": "^1.0.0",
34
- "husky": "^9.0.11",
35
- "node-polyfill-webpack-plugin": "^4.0.0",
36
- "os-browserify": "^0.3.0",
37
- "path-browserify": "^1.0.1",
38
- "process": "^0.11.10",
39
- "react-native-web": "^0.19.11",
40
- "shamir-secret-sharing": "^0.0.3",
41
- "shamirs-secret-sharing": "^2.0.0",
42
- "stream-browserify": "^3.0.0",
43
- "stream-http": "^3.2.0",
44
- "url": "^0.11.3",
45
- "viem": "^2.12.5"
20
+ "ethers": "^6.13.5",
21
+ "lodash": "^4.17.21",
22
+ "react-toastify": "^11.0.5",
23
+ "shamir-secret-sharing": "^0.0.4"
46
24
  },
47
25
  "peerDependencies": {
48
- "react": ">=18.0.0"
26
+ "react": "^19.1.0",
27
+ "react-dom": "^19.1.0",
28
+ "react-native": "^0.78.2"
29
+ },
30
+ "devDependencies": {
31
+ "@babel/core": "^7.26.10",
32
+ "@babel/plugin-transform-runtime": "^7.26.10",
33
+ "@babel/preset-env": "^7.26.9",
34
+ "@babel/preset-react": "^7.26.3",
35
+ "@types/chrome": "^0.0.313",
36
+ "@types/crypto-js": "^4.2.2",
37
+ "@types/lodash": "^4.17.16",
38
+ "@types/react": "^19.1.0",
39
+ "node-libs-browser": "^2.2.1",
40
+ "tsup": "^8.4.0",
41
+ "typescript": "^5.8.2"
49
42
  }
50
- }
43
+ }
@@ -0,0 +1,61 @@
1
+ import React from "react";
2
+ import { imageAssets } from "../utils/constants";
3
+
4
+ export const TermsAndConditionsOverlay = () => {
5
+ return (
6
+ <p className="verified-custd-mdl-terms-and-condition">
7
+ By proceeding, you agree with Verified Wallet{" "}
8
+ <span style={{ color: "#603FF4", cursor: "pointer" }}>T&C</span> and{" "}
9
+ <span style={{ color: "#603FF4", cursor: "pointer" }}>
10
+ Privacy Policy.
11
+ </span>
12
+ </p>
13
+ );
14
+ };
15
+
16
+ export const LogoutOverlay = (props: {
17
+ setIsLoading: (isLoading: boolean) => void;
18
+ setisOnboard?: (isOnboard: boolean) => void;
19
+ }) => {
20
+ return (
21
+ <p
22
+ style={{ fontSize: "0.7rem" }}
23
+ className="verified-custd-mdl-terms-and-condition"
24
+ >
25
+ Want to access a different account? Click{" "}
26
+ <span
27
+ style={{ color: "#603FF4", cursor: "pointer" }}
28
+ onClick={async () => {
29
+ props.setIsLoading(true);
30
+ if (chrome?.storage?.local) {
31
+ await chrome.storage.local.remove("myVault");
32
+ } else if (localStorage) {
33
+ localStorage.removeItem("myVault");
34
+ }
35
+ if (props.setisOnboard) {
36
+ props.setisOnboard(false);
37
+ }
38
+ props.setIsLoading(false);
39
+ }}
40
+ >
41
+ Logout
42
+ </span>{" "}
43
+ to logout and login/create another account
44
+ </p>
45
+ );
46
+ };
47
+
48
+ export const PrivacyOverlay = () => {
49
+ return (
50
+ <div className="verified-custd-mdl-privacy">
51
+ <img
52
+ alt="Privacy Icon"
53
+ src={imageAssets.privacyTip}
54
+ className="verified-custd-mdl-privacy-icon"
55
+ />
56
+ <p className="verified-custd-mdl-privacy-text">
57
+ Trusted by 10M+ Investors globally
58
+ </p>
59
+ </div>
60
+ );
61
+ };
@@ -0,0 +1,381 @@
1
+ import React, { useState } from "react";
2
+ import { imageAssets } from "../utils/constants";
3
+
4
+ const SearchBox = (props: any) => {
5
+ const [newSearchContent, setNewSearchContent] = useState<null | [Object]>(
6
+ null
7
+ );
8
+
9
+ return (
10
+ <div className="verified-custd-mdl-startup-language-content-container">
11
+ <div className="verified-custd-mdl-st-language-content">
12
+ {props.headerText && (
13
+ <p className="verified-custd-mdl-st-language-text">
14
+ {props.headerText}
15
+ </p>
16
+ )}
17
+ <div className="verified-custd-mdl-mobille-startup-search-box-container">
18
+ <div className="verified-custd-mdl-mobile-startup-search-box">
19
+ <img
20
+ style={{ paddingLeft: "6px" }}
21
+ src={imageAssets.search}
22
+ alt="Search Icon"
23
+ className="verified-custd-mdl-mobile-search-icon"
24
+ />
25
+ <input
26
+ onInputCapture={() => {
27
+ if (props.type === "language") {
28
+ props.setSelected("");
29
+ }
30
+ }}
31
+ onInput={(e: any) => {
32
+ if (e.target.value === "") {
33
+ setNewSearchContent(null);
34
+ } else {
35
+ if (props.type === "language") {
36
+ setNewSearchContent(
37
+ // eslint-disable-next-line array-callback-return
38
+ props.searchContent.filter((src: any) => {
39
+ if (
40
+ src.name
41
+ .toLowerCase()
42
+ .includes(e.target.value.toLowerCase())
43
+ ) {
44
+ src.searched = e.target.value.toLowerCase();
45
+ src.nameArray = src.name.split("");
46
+ return src;
47
+ }
48
+ })
49
+ );
50
+ } else if (props.type === "area-code") {
51
+ setNewSearchContent(
52
+ // eslint-disable-next-line array-callback-return
53
+
54
+ props.searchContent.filter((src: any) => {
55
+ if (
56
+ src?.name
57
+ ?.toLowerCase()
58
+ .includes(e.target.value.toLowerCase())
59
+ ) {
60
+ src.searched = e.target.value.toLowerCase();
61
+ src.nameArray = src?.name?.split("");
62
+ return src;
63
+ }
64
+ })
65
+ );
66
+ }
67
+ }
68
+
69
+ props.handleButtonDisplay();
70
+ }}
71
+ type="text"
72
+ className="verified-custd-mdl-ms-search-box-content"
73
+ placeholder="Search"
74
+ />
75
+ </div>
76
+ <div className="verified-custd-mdl-mobile-startup-search-content">
77
+ <div
78
+ style={
79
+ props.contentMaxHeight
80
+ ? { maxHeight: `${props.contentMaxHeight}px` }
81
+ : {}
82
+ }
83
+ className="verified-custd-mdl-ms-search-content-container"
84
+ >
85
+ {!newSearchContent &&
86
+ props?.searchContent?.length > 0 &&
87
+ props.searchContent.map((src: any, idx: number) => (
88
+ <React.Fragment key={idx}>
89
+ {props.type === "area-code" && (
90
+ <div
91
+ key={idx}
92
+ onClickCapture={() => {
93
+ props.setSelected({
94
+ area: src.phone_code,
95
+ flag: src.flag,
96
+ name: src.name,
97
+ });
98
+ }}
99
+ onClick={() => {
100
+ if (props.setSearchActive) {
101
+ props.setSearchActive(!props.setSearchActive);
102
+ }
103
+ props.handleButtonDisplay();
104
+ }}
105
+ className="verified-custd-mdl-ms-search-content"
106
+ >
107
+ <img
108
+ src={src.flag}
109
+ alt="Search Result Icon"
110
+ className="verified-custd-mdl-ms-search-content-icon"
111
+ />
112
+ <p className="verified-custd-mdl-ms-search-content-text">
113
+ {src.name}
114
+ </p>
115
+ </div>
116
+ )}
117
+ {props.type === "language" && (
118
+ <React.Fragment>
119
+ {window.location.search !== `?${idx}` && (
120
+ <div
121
+ key={idx}
122
+ onClickCapture={() => {
123
+ props.setSelected(src.name);
124
+ }}
125
+ onClick={() => {
126
+ props.setSelected(src.name);
127
+ if (props.setSearchActive) {
128
+ props.setSearchActive(!props.setSearchActive);
129
+ }
130
+ props.handleButtonDisplay();
131
+ }}
132
+ className="verified-custd-mdl-ms-search-content"
133
+ >
134
+ <img
135
+ src={src.icon}
136
+ alt="Search Result Icon"
137
+ className="verified-custd-mdl-ms-search-content-icon"
138
+ />
139
+ {src.label && (
140
+ <p className="verified-custd-mdl-ms-search-content-text">
141
+ {src.name} {`(${src.label})`}
142
+ </p>
143
+ )}
144
+ {!src.label && (
145
+ <p className="verified-custd-mdl-ms-search-content-text">
146
+ {src.name}
147
+ </p>
148
+ )}
149
+ </div>
150
+ )}
151
+ {window.location.search === `?${idx}` && (
152
+ <div
153
+ key={idx}
154
+ onClickCapture={() => {
155
+ props.setSelected(src.name);
156
+ }}
157
+ onClick={() => {
158
+ props.setSelected(src.name);
159
+ if (props.setSearchActive) {
160
+ props.setSearchActive(!props.setSearchActive);
161
+ }
162
+ props.handleButtonDisplay();
163
+ }}
164
+ className="verified-custd-mdl-ms-search-content-active"
165
+ >
166
+ <div className="verified-custd-mdl-ms-search-content-text-container">
167
+ <img
168
+ src={src.icon}
169
+ alt="Search Result Icon"
170
+ className="verified-custd-mdl-ms-search-content-icon"
171
+ />
172
+ {src.label && (
173
+ <p className="verified-custd-mdl-ms-search-content-text">
174
+ {src.name} {`(${src.label})`}
175
+ </p>
176
+ )}
177
+ {!src.label && (
178
+ <p className="verified-custd-mdl-ms-search-content-text">
179
+ {src.name}
180
+ </p>
181
+ )}
182
+ </div>
183
+ {props.selected && props.selected.length > 0 && (
184
+ <img
185
+ src={imageAssets.circleClicked}
186
+ alt="Clicked Icon"
187
+ />
188
+ )}
189
+ </div>
190
+ )}
191
+ </React.Fragment>
192
+ )}
193
+ </React.Fragment>
194
+ ))}
195
+
196
+ {newSearchContent &&
197
+ newSearchContent.length > 0 &&
198
+ newSearchContent.map((src: any, idx: number) => (
199
+ <React.Fragment key={idx}>
200
+ {props.type === "area-code" && (
201
+ <div
202
+ key={idx}
203
+ onClickCapture={() => {
204
+ props.setSelected({
205
+ area: src?.phone_code,
206
+ flag: src?.flag,
207
+ name: src?.name,
208
+ });
209
+ }}
210
+ onClick={() => {
211
+ if (props.setSearchActive) {
212
+ props.setSearchActive(!props.setSearchActive);
213
+ }
214
+ props.handleButtonDisplay();
215
+ }}
216
+ className="verified-custd-mdl-ms-search-content"
217
+ >
218
+ <img
219
+ src={src?.flag}
220
+ alt="Search Result Icon"
221
+ className="verified-custd-mdl-ms-search-content-icon"
222
+ />
223
+ <p className="verified-custd-mdl-ms-search-content-text">
224
+ {src?.nameArray?.length > 0 &&
225
+ src?.nameArray.map((nm: any, idx: number) => (
226
+ <React.Fragment key={idx}>
227
+ {!src.searched.includes(nm.toLowerCase()) && (
228
+ <span
229
+ key={idx}
230
+ style={{
231
+ color: "#B6B7C3",
232
+ }}
233
+ >
234
+ {nm}
235
+ </span>
236
+ )}
237
+ {src.searched.includes(nm.toLowerCase()) && (
238
+ <span key={idx}>{nm}</span>
239
+ )}
240
+ </React.Fragment>
241
+ ))}
242
+ </p>
243
+ </div>
244
+ )}
245
+ {props.type === "language" && (
246
+ <React.Fragment key={idx}>
247
+ {window.location.search !== `?${idx}` && (
248
+ <div
249
+ onClickCapture={() => {
250
+ props.setSelected(src.name);
251
+ }}
252
+ onClick={() => {
253
+ props.setSelected(src.name);
254
+ if (props.setSearchActive) {
255
+ props.setSearchActive(!props.setSearchActive);
256
+ }
257
+ props.handleButtonDisplay();
258
+ }}
259
+ className="verified-custd-mdl-ms-search-content"
260
+ >
261
+ <img
262
+ src={src.icon}
263
+ alt="Search Result Icon"
264
+ className="verified-custd-mdl-ms-search-content-icon"
265
+ />
266
+ {!src.label && (
267
+ <p className="verified-custd-mdl-ms-search-content-text">
268
+ {src.nameArray?.length > 0 &&
269
+ src.nameArray.map((nm: any, idx: number) => (
270
+ <React.Fragment key={idx}>
271
+ {!src.searched.includes(
272
+ nm.toLowerCase()
273
+ ) && (
274
+ <span
275
+ key={idx}
276
+ style={{
277
+ color: "#B6B7C3",
278
+ }}
279
+ >
280
+ {nm}
281
+ </span>
282
+ )}
283
+ {src.searched.includes(
284
+ nm.toLowerCase()
285
+ ) && <span key={idx}>{nm}</span>}
286
+ </React.Fragment>
287
+ ))}
288
+ </p>
289
+ )}
290
+ {src.label && (
291
+ <p className="verified-custd-mdl-ms-search-content-text">
292
+ {src.nameArray?.length > 0 &&
293
+ src.nameArray.map((nm: any, idx: number) => (
294
+ <React.Fragment key={idx}>
295
+ {!src.searched.includes(
296
+ nm.toLowerCase()
297
+ ) && (
298
+ <span
299
+ key={idx}
300
+ style={{
301
+ color: "#B6B7C3",
302
+ }}
303
+ >
304
+ {nm}
305
+ </span>
306
+ )}
307
+ {src.searched.includes(
308
+ nm.toLowerCase()
309
+ ) && <span key={idx}>{nm}</span>}
310
+ </React.Fragment>
311
+ ))}
312
+ {!src.searched.includes(
313
+ src.label.toLowerCase()
314
+ ) && (
315
+ <span
316
+ style={{
317
+ color: "#B6B7C3",
318
+ }}
319
+ >{` (${src.label})`}</span>
320
+ )}
321
+ {src.searched.includes(
322
+ src.label.toLowerCase()
323
+ ) && <span>{` (${src.label})`}</span>}
324
+ </p>
325
+ )}
326
+ </div>
327
+ )}
328
+ {window.location.search === `?${idx}` && (
329
+ <div
330
+ key={idx}
331
+ onClickCapture={() => {
332
+ props.setSelected(src.name);
333
+ }}
334
+ onClick={() => {
335
+ props.setSelected(src.name);
336
+ if (props.setSearchActive) {
337
+ props.setSearchActive(!props.setSearchActive);
338
+ }
339
+ props.handleButtonDisplay();
340
+ }}
341
+ className="verified-custd-mdl-ms-search-content-active"
342
+ >
343
+ <div className="verified-custd-mdl-ms-search-content-text-container">
344
+ <img
345
+ src={src.icon}
346
+ alt="Search Result Icon"
347
+ className="verified-custd-mdl-ms-search-content-icon"
348
+ />
349
+ {src.label && (
350
+ <p className="verified-custd-mdl-ms-search-content-text">
351
+ {src.name} {`(${src.label})`}
352
+ </p>
353
+ )}
354
+ {!src.label && (
355
+ <p className="verified-custd-mdl-ms-search-content-text">
356
+ {src.name}
357
+ </p>
358
+ )}
359
+ </div>
360
+
361
+ {props.selected && props.selected.length > 0 && (
362
+ <img
363
+ src={imageAssets.circleClicked}
364
+ alt="Clicked Icon"
365
+ />
366
+ )}
367
+ </div>
368
+ )}
369
+ </React.Fragment>
370
+ )}
371
+ </React.Fragment>
372
+ ))}
373
+ </div>
374
+ </div>
375
+ </div>
376
+ </div>
377
+ </div>
378
+ );
379
+ };
380
+
381
+ export default SearchBox;
@@ -0,0 +1,29 @@
1
+ import React from "react";
2
+
3
+ const PageSlider = (props: any) => {
4
+ return (
5
+ <div className="verified-custd-mdl-startup-slider">
6
+ {props.sliderCount?.length > 0 &&
7
+ props.sliderCount.map((_: any, idx: number) => (
8
+ <React.Fragment key={idx}>
9
+ {idx <= Number(props.currentSlider) && (
10
+ <div
11
+ key={`active-${idx}`}
12
+ style={{ width: `${100 / props.sliderCount.length}%` }}
13
+ className="verified-custd-mdl-startup-slider-line-active"
14
+ ></div>
15
+ )}
16
+ {idx > Number(props.currentSlider) && (
17
+ <div
18
+ key={`inactive-${idx}`}
19
+ style={{ width: `${100 / props.sliderCount.length}%` }}
20
+ className="verified-custd-mdl-startup-slider-line"
21
+ ></div>
22
+ )}
23
+ </React.Fragment>
24
+ ))}
25
+ </div>
26
+ );
27
+ };
28
+
29
+ export default PageSlider;