@verified-network/verified-custody 0.1.9 → 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.
package/package.json CHANGED
@@ -1,54 +1,43 @@
1
1
  {
2
2
  "name": "@verified-network/verified-custody",
3
- "version": "0.1.9",
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": [
11
- "dist"
12
- ],
13
11
  "keywords": [],
14
12
  "author": "",
15
13
  "license": "MIT",
16
- "devDependencies": {
17
- "@babel/core": "^7.24.5",
18
- "@babel/preset-env": "^7.24.5",
19
- "@babel/preset-react": "^7.24.1",
20
- "@types/webextension-polyfill": "^0.12.3",
21
- "webextension-polyfill": "^0.12.0",
22
- "webpack": "^5.90.3",
23
- "webpack-cli": "^5.1.4"
24
- },
14
+ "description": "React submodule for Custody of digital assets",
25
15
  "dependencies": {
26
- "@verified-network/verified-sdk": "^1.8.9",
27
- "assert": "^2.1.0",
28
- "axios": "^1.7.2",
29
- "babel-loader": "^9.1.3",
30
- "browserify-zlib": "^0.2.0",
31
- "buffer": "^6.0.3",
32
- "constants-browserify": "^1.0.0",
33
- "crypto-browserify": "^3.12.0",
16
+ "@biconomy/account": "^4.5.7",
17
+ "@verified-network/verified-sdk": "^1.9.5",
18
+ "axios": "^1.8.4",
34
19
  "crypto-js": "^4.2.0",
35
- "ethers": "^6.12.1",
36
- "firebase": "^10.12.0",
37
- "https-browserify": "^1.0.0",
38
- "husky": "^9.0.11",
39
- "node-polyfill-webpack-plugin": "^4.0.0",
40
- "os-browserify": "^0.3.0",
41
- "path-browserify": "^1.0.1",
42
- "process": "^0.11.10",
43
- "react-native-web": "^0.19.11",
44
- "shamir-secret-sharing": "^0.0.3",
45
- "shamirs-secret-sharing": "^2.0.0",
46
- "stream-browserify": "^3.0.0",
47
- "stream-http": "^3.2.0",
48
- "url": "^0.11.3",
49
- "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"
50
24
  },
51
25
  "peerDependencies": {
52
- "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"
53
42
  }
54
- }
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;