forked from Loopring/loopring-web-v2
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtItem
More file actions
509 lines (509 loc) · 24 KB
/
tItem
File metadata and controls
509 lines (509 loc) · 24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
[1mdiff --git a/.gitpod.yml b/.gitpod.yml[m
[1mnew file mode 100644[m
[1mindex 000000000..6b0bf3c6f[m
[1m--- /dev/null[m
[1m+++ b/.gitpod.yml[m
[36m@@ -0,0 +1,9 @@[m
[32m+[m[32m# This configuration file was automatically generated by Gitpod.[m
[32m+[m[32m# Please adjust to your needs (see https://www.gitpod.io/docs/config-gitpod-file)[m
[32m+[m[32m# and commit this file to your remote git repository to share the goodness with others.[m
[32m+[m
[32m+[m[32mtasks:[m
[32m+[m[32m - init: yarn install && yarn run build[m
[32m+[m[32m command: yarn run dev[m
[32m+[m
[32m+[m
[1mdiff --git a/package.json b/package.json[m
[1mindex 6fc5402e0..f217644c6 100644[m
[1m--- a/package.json[m
[1m+++ b/package.json[m
[36m@@ -11,7 +11,7 @@[m
"dependencies": {[m
"@emotion/react": "^11.4.1",[m
"@emotion/styled": "^11.3.0",[m
[31m- "@loopring-web/loopring-sdk": "2.0.19-io-pro",[m
[32m+[m[32m "@loopring-web/loopring-sdk": "2.0.21-io-1",[m
"@loopring-web/recharts": "^2.0.10",[m
"@loopring-web/web3-provider": "^1.1.0",[m
"@mui/lab": "^5.0.0-alpha.45",[m
[36m@@ -37,7 +37,7 @@[m
"query-string": "^7.0.1",[m
"react": "^17.0.2",[m
"react-beautiful-dnd": "^13.1.0",[m
[31m- "react-data-grid": "^7.0.0-canary.49",[m
[32m+[m[32m "react-data-grid": "^7.0.0-beta.13",[m
"react-dom": "^17.0.2",[m
"react-dropzone": "^12.0.4",[m
"react-grid-layout": "^1.3.0",[m
[1mdiff --git a/packages/common-resources/static-resources/src/constant/router.ts b/packages/common-resources/static-resources/src/constant/router.ts[m
[1mindex 3f0ffefb4..5c83f0d29 100644[m
[1m--- a/packages/common-resources/static-resources/src/constant/router.ts[m
[1m+++ b/packages/common-resources/static-resources/src/constant/router.ts[m
[36m@@ -5,7 +5,6 @@[m [mimport {[m
MintIcon,[m
ProfileIcon,[m
RecordIcon,[m
[31m- // NFTIcon,[m
SecurityIcon,[m
VipIcon,[m
WaitApproveIcon,[m
[36m@@ -14,7 +13,9 @@[m [mimport * as sdk from "@loopring-web/loopring-sdk";[m
import {[m
HeaderMenuItemInterface,[m
HeaderMenuTabStatus,[m
[32m+[m[32m InvestAdvice,[m
} from "../loopring-interface";[m
[32m+[m[32mimport { InvestMapType } from "./trade";[m
[m
export const FEED_BACK_LINK = "https://desk.zoho.com/portal/loopring/en/home";[m
export const headerRoot = "Landing-page";[m
[36m@@ -195,6 +196,15 @@[m [mexport const subMenuLayer2 = {[m
};[m
[m
export const subMenuInvest = [[m
[32m+[m[32m {[m
[32m+[m[32m icon: L2MyLiquidityIcon,[m
[32m+[m[32m router: { path: "/invest" },[m
[32m+[m[32m label: {[m
[32m+[m[32m id: "overview",[m
[32m+[m[32m i18nKey: "labelInvestOverview",[m
[32m+[m[32m description: "labelInvestOverviewDes",[m
[32m+[m[32m },[m
[32m+[m[32m },[m
{[m
icon: L2MyLiquidityIcon,[m
router: { path: "/invest/ammpool" },[m
[36m@@ -204,15 +214,15 @@[m [mexport const subMenuInvest = [[m
description: "labelInvestAmmDes",[m
},[m
},[m
[31m- // {[m
[31m- // icon: L2MyLiquidityIcon,[m
[31m- // router: { path: "/invest/defi" },[m
[31m- // label: {[m
[31m- // id: "defi",[m
[31m- // i18nKey: "labelInvestDefi",[m
[31m- // description: "labelInvestDefiDes",[m
[31m- // },[m
[31m- // },[m
[32m+[m[32m {[m
[32m+[m[32m icon: L2MyLiquidityIcon,[m
[32m+[m[32m router: { path: "/invest/defi" },[m
[32m+[m[32m label: {[m
[32m+[m[32m id: "defi",[m
[32m+[m[32m i18nKey: "labelInvestDefi",[m
[32m+[m[32m description: "labelInvestDefiDes",[m
[32m+[m[32m },[m
[32m+[m[32m },[m
];[m
[m
export const subMenuNFT = {[m
[36m@@ -414,3 +424,22 @@[m [mexport const headerMenuData: Array<HeaderMenuItemInterface> = [[m
child: subMenuNFT,[m
},[m
];[m
[32m+[m
[32m+[m[32mexport const ammAdvice: InvestAdvice = {[m
[32m+[m[32m type: InvestMapType.AMM,[m
[32m+[m[32m router: "/invest/ammpool",[m
[32m+[m[32m banner: SoursURL + "images/icon-default.png",[m
[32m+[m[32m titleI18n: "labelInvestAmm",[m
[32m+[m[32m desI18n: "labelInvestAmmDes",[m
[32m+[m[32m notification: "",[m
[32m+[m[32m enable: true,[m
[32m+[m[32m};[m
[32m+[m[32mexport const defiAdvice: InvestAdvice = {[m
[32m+[m[32m type: InvestMapType.DEFI,[m
[32m+[m[32m router: "/invest/defi",[m
[32m+[m[32m notification: "",[m
[32m+[m[32m banner: SoursURL + "images/icon-default.png",[m
[32m+[m[32m titleI18n: "labelInvestDefi",[m
[32m+[m[32m desI18n: "labelInvestDefiDes",[m
[32m+[m[32m enable: true,[m
[32m+[m[32m};[m
[1mdiff --git a/packages/common-resources/static-resources/src/constant/setting.ts b/packages/common-resources/static-resources/src/constant/setting.ts[m
[1mindex d8fda4e25..0eba309b4 100644[m
[1m--- a/packages/common-resources/static-resources/src/constant/setting.ts[m
[1m+++ b/packages/common-resources/static-resources/src/constant/setting.ts[m
[36m@@ -11,6 +11,10 @@[m [mexport const RowConfig = {[m
rowHeight: IsMobile.any() ? 48 : 44,[m
rowHeaderHeight: IsMobile.any() ? 48 : 44,[m
};[m
[32m+[m[32mexport const RowInvestConfig = {[m
[32m+[m[32m rowHeight: IsMobile.any() ? 48 : 56,[m
[32m+[m[32m rowHeaderHeight: IsMobile.any() ? 48 : 56,[m
[32m+[m[32m};[m
export const DirectionTag = "\u2192";[m
export const FeeChargeOrderDefault = ["ETH", "USDT", "LRC", "DAI", "USDC"];[m
[m
[1mdiff --git a/packages/common-resources/static-resources/src/constant/trade.ts b/packages/common-resources/static-resources/src/constant/trade.ts[m
[1mindex 0aa0e0fdd..57cb7708c 100644[m
[1m--- a/packages/common-resources/static-resources/src/constant/trade.ts[m
[1m+++ b/packages/common-resources/static-resources/src/constant/trade.ts[m
[36m@@ -1,6 +1,7 @@[m
import {[m
ChainId,[m
NFTTokenInfo,[m
[32m+[m[32m TokenInfo,[m
UserNFTBalanceInfo,[m
} from "@loopring-web/loopring-sdk";[m
import { FeeInfo, IBData } from "../loopring-interface";[m
[36m@@ -329,3 +330,28 @@[m [mexport const useAddressTypeLists = <[m
[m
export const defalutSlipage = 0.1;[m
export type ForexMap<C> = { [k in keyof C]?: number };[m
[32m+[m
[32m+[m[32mexport const enum InvestMapType {[m
[32m+[m[32m Token = "Token",[m
[32m+[m[32m AMM = "AMM",[m
[32m+[m[32m DEFI = "DEFI",[m
[32m+[m[32m}[m
[32m+[m[32mexport const InvestOpenType = [InvestMapType.AMM, InvestMapType.DEFI];[m
[32m+[m[32mexport const enum InvestDuration {[m
[32m+[m[32m Flexible = "Flexible",[m
[32m+[m[32m Duration = "Duration",[m
[32m+[m[32m All = "All",[m
[32m+[m[32m}[m
[32m+[m[32mexport type InvestItem = {[m
[32m+[m[32m type: InvestMapType;[m
[32m+[m[32m i18nKey: `labelInvestType_${InvestMapType}` | "";[m
[32m+[m[32m apr: [start: number, end: number];[m
[32m+[m[32m durationType: InvestDuration;[m
[32m+[m[32m duration: string;[m
[32m+[m[32m};[m
[32m+[m[32mexport type InvestDetail = {[m
[32m+[m[32m token: TokenInfo;[m
[32m+[m[32m apr: [start: number, end: number];[m
[32m+[m[32m durationType: InvestDuration;[m
[32m+[m[32m duration: string;[m
[32m+[m[32m};[m
[1mdiff --git a/packages/common-resources/static-resources/src/error/index.ts b/packages/common-resources/static-resources/src/error/index.ts[m
[1mindex 6d9bef224..64fbe7a7f 100644[m
[1m--- a/packages/common-resources/static-resources/src/error/index.ts[m
[1m+++ b/packages/common-resources/static-resources/src/error/index.ts[m
[36m@@ -1,46 +1,98 @@[m
[31m-export * from './errorMap'[m
[32m+[m[32mexport * from "./errorMap";[m
[m
export type ErrorType = {[m
[31m- id: string,[m
[31m- messageKey: string,[m
[31m- options?: any[m
[31m-}[m
[32m+[m[32m id: string;[m
[32m+[m[32m messageKey: string;[m
[32m+[m[32m options?: any;[m
[32m+[m[32m};[m
[32m+[m[32mexport type ErrorWithCodeType = {[m
[32m+[m[32m id: string;[m
[32m+[m[32m code: number;[m
[32m+[m[32m message: string;[m
[32m+[m[32m messageKey?: string;[m
[32m+[m[32m options?: any;[m
[32m+[m[32m};[m
[m
export class CustomError extends Error {[m
[31m- constructor(error: ErrorType) {[m
[31m- // Pass remaining arguments (including vendor specific ones) to parent constructor[m
[31m- super(error.id)[m
[31m-[m
[31m- // Maintains proper stack trace for where our error was thrown (only available on V8)[m
[31m- if (Error.captureStackTrace) {[m
[31m- Error.captureStackTrace(this, CustomError)[m
[31m- }[m
[31m-[m
[31m- this.name = error.id;[m
[31m- this.message = error.id;[m
[31m- this._date = Date.now();[m
[31m- this._messageKey = error.messageKey;[m
[31m- this._options = error.options[m
[31m- // Custom debugging information[m
[31m- // this.foo = foo[m
[31m- // this.date = new Date()[m
[32m+[m[32m constructor(error: ErrorType) {[m
[32m+[m[32m // Pass remaining arguments (including vendor specific ones) to parent constructor[m
[32m+[m[32m super(error.id);[m
[32m+[m
[32m+[m[32m // Maintains proper stack trace for where our error was thrown (only available on V8)[m
[32m+[m[32m if (Error.captureStackTrace) {[m
[32m+[m[32m Error.captureStackTrace(this, CustomError);[m
}[m
[m
[31m- private _options: any;[m
[32m+[m[32m this.name = error.id;[m
[32m+[m[32m this.message = error.id;[m
[32m+[m[32m this._date = Date.now();[m
[32m+[m[32m this._messageKey = error.messageKey;[m
[32m+[m[32m this._options = error.options;[m
[32m+[m[32m // Custom debugging information[m
[32m+[m[32m // this.foo = foo[m
[32m+[m[32m // this.date = new Date()[m
[32m+[m[32m }[m
[m
[31m- get options(): any {[m
[31m- return this._options;[m
[31m- }[m
[32m+[m[32m private _options: any;[m
[m
[31m- private _date: number;[m
[32m+[m[32m get options(): any {[m
[32m+[m[32m return this._options;[m
[32m+[m[32m }[m
[m
[31m- get date(): number {[m
[31m- return this._date;[m
[31m- }[m
[32m+[m[32m private _date: number;[m
[32m+[m
[32m+[m[32m get date(): number {[m
[32m+[m[32m return this._date;[m
[32m+[m[32m }[m
[32m+[m
[32m+[m[32m private _messageKey: string;[m
[32m+[m
[32m+[m[32m get messageKey(): string {[m
[32m+[m[32m return this._messageKey;[m
[32m+[m[32m }[m
[32m+[m[32m}[m
[m
[31m- private _messageKey: string;[m
[32m+[m[32mexport class CustomErrorWithCode extends Error {[m
[32m+[m[32m constructor(error: ErrorWithCodeType) {[m
[32m+[m[32m // Pass remaining arguments (including vendor specific ones) to parent constructor[m
[32m+[m[32m super(error.id);[m
[m
[31m- get messageKey(): string {[m
[31m- return this._messageKey;[m
[32m+[m[32m // Maintains proper stack trace for where our error was thrown (only available on V8)[m
[32m+[m[32m if (Error.captureStackTrace) {[m
[32m+[m[32m Error.captureStackTrace(this, CustomError);[m
}[m
[32m+[m
[32m+[m[32m this.name = error.id;[m
[32m+[m[32m this._code = error.code;[m
[32m+[m[32m this.message = error.message;[m
[32m+[m[32m this._date = Date.now();[m
[32m+[m[32m this._messageKey = error.messageKey ?? error.message;[m
[32m+[m[32m // this._options = error.options;[m
[32m+[m[32m // Custom debugging information '[m
[32m+[m[32m // this.foo = foo[m
[32m+[m[32m // this.date = new Date()[m
[32m+[m[32m }[m
[32m+[m[32m private _code: number;[m
[32m+[m
[32m+[m[32m get code(): number {[m
[32m+[m[32m return this._code;[m
[32m+[m[32m }[m
[32m+[m
[32m+[m[32m private _options: any;[m
[32m+[m
[32m+[m[32m get options(): any {[m
[32m+[m[32m return this._options;[m
[32m+[m[32m }[m
[32m+[m
[32m+[m[32m private _date: number;[m
[32m+[m
[32m+[m[32m get date(): number {[m
[32m+[m[32m return this._date;[m
[32m+[m[32m }[m
[32m+[m
[32m+[m[32m private _messageKey: string;[m
[32m+[m
[32m+[m[32m get messageKey(): string {[m
[32m+[m[32m return this._messageKey;[m
[32m+[m[32m }[m
}[m
[1mdiff --git a/packages/common-resources/static-resources/src/i18n/en_US/common.ts b/packages/common-resources/static-resources/src/i18n/en_US/common.ts[m
[1mindex 03651ac40..23ce14973 100644[m
[1m--- a/packages/common-resources/static-resources/src/i18n/en_US/common.ts[m
[1m+++ b/packages/common-resources/static-resources/src/i18n/en_US/common.ts[m
[36m@@ -108,7 +108,7 @@[m [mexport default {[m
labelAssetsTitle: "Assets",[m
labelVolume: "volume",[m
labelAmount: "Amount",[m
[31m- labelLiquidityDeposit: "Invest",[m
[32m+[m[32m labelLiquidityDeposit: "Subscribe",[m
labelLiquidityWithdraw: "Redeem",[m
labelAvailable: "Available:",[m
labelTokenAmount: "Amount",[m
[36m@@ -146,7 +146,7 @@[m [mexport default {[m
labelMyAmmRecord: "My AMM Records",[m
labelCurrentActivities: "Current Activities",[m
labelPastActivities: "Past Activities",[m
[31m- labelTotalPositionValue: "Total Invest",[m
[32m+[m[32m labelTotalPositionValue: "Total Investment",[m
labelFeeRewards: "Fee Rewards",[m
labelMiningRewards: "Mining Rewards",[m
labelLiquidityValue: "Liquidity Value",[m
[36m@@ -314,6 +314,7 @@[m [mexport default {[m
labelCreateAccountDepositDenied: "Signature request was rejected",[m
labelSlippageAlert:[m
"Your slippage tolerance is rather high which could result in less tokens received.",[m
[32m+[m[32m labelOrderGroup: "Order Records",[m
labelOrderTableOpenOrder: "Open Order",[m
labelOrderTableOrderHistory: "Order History",[m
labelResetLayout: "Reset Layout",[m
[36m@@ -490,7 +491,7 @@[m [mexport default {[m
labelVendor: "Buy with Card",[m
labelLock: "Lock",[m
labelWalletToWallet:[m
[31m- "The connected wallet is a contract address which cannot be used. If you are connecting a mobile Loopring Smart Wallet, you can protect it and manage guardians within the app.",[m
[32m+[m[32m "The connected wallet is a contract address which cannot be used (Except Recover Wallet). If you are connecting a mobile Loopring Smart Wallet, you can protect it and manage guardians within the app.",[m
labelWalletAddAsGuardian: "Add a guardian",[m
labelWalletInputGuardianCode: "Input 6 digital Code and Approve",[m
labelWalletScanQRCode: "Please use your Loopring wallet to scan the QR code",[m
[36m@@ -792,7 +793,7 @@[m [mexport default {[m
labelLayerSwapUnderstandDes:[m
"LayerSwap is a 3rd party App service provider to help move tokens from exchange to Loopring L2 directly. If you have any concerns regarding their service, please check out their <1>TOS</1>.",[m
labelInvestAmmTitle: "AMM Pools",[m
[31m- labelInvestBalanceTitle: "My Investment",[m
[32m+[m[32m labelInvestBalanceTitle: "My Investments",[m
labelTransactionsLink: "Transactions",[m
labelAMMTransactionsLink: "View Pool Transactions",[m
labelNFTMintWrongCIDBtn: "Wrong MetaData format",[m
[36m@@ -825,20 +826,47 @@[m [mexport default {[m
labelForceWithdrawNoToken:[m
"No token is detected from this address to operate",[m
labelForceWithdrawBtn: "Force Withdraw",[m
[31m- labelInvestDefiTitle: "Defi Invest",[m
[31m- labelInvestDefDeposit: "Invest",[m
[32m+[m[32m labelInvestDefiTitle: "ETH Staking",[m
[32m+[m[32m labelInvestDefDeposit: "Subscribe",[m
labelInvestDefWithdraw: "Redeem",[m
labelNFTDepositLabel: "Receive NFT",[m
labelDefiFee: "Fee",[m
labelDefiMin: "Minimum of {{arg}}",[m
labelDefiNoEnough: "Not enough {{arg}}",[m
labelDefiMaxBalance:[m
[31m- "Your Redeem order is too large and cannot be withdrawn immediately, you can only redeem {{ maxValue }}",[m
[32m+[m[32m "Loopring rebalance pool can't satisfy your complete request. You can only redeem {{maxValue}} now. For the remaining investment, you can choose one of the approaches",[m
labelDefiMaxBalance1:[m
[31m- "or you can<1><2>Withdraw to L1 and redeem through crv or lido</2><3>Wait some time and wait for pool liquidity</3></1>",[m
[31m- labelInvestBtn: "Invest",[m
[32m+[m[32m "<0><1>Withdraw wSTETH to L1 and trade through CRV or LIDO directly</1><2>Wait some time for Loopring to setup the rebalance pool again, then revist the page for redeem</2></0>",[m
[32m+[m[32m labelDefiNoBalance:[m
[32m+[m[32m "<0>Loopring rebalance pool can't satisfy your complete request now.</0>"+[m
[32m+[m[32m "<1>For the remaining investment, you can choose one of the approaches</1>"+[m[41m [m
[32m+[m[32m "<2><3>Withdraw wSTETH to L1 and trade through CRV or LIDO directly</3>"+[m
[32m+[m[32m "<4>Wait some time for Loopring to setup the rebalance pool again, then revist the page for redeem</4></2>",[m
[32m+[m[32m labelDefiMaxBalanceJoin:"The quota is almost sold out and can't fulfil your complete order. You can only subscribe {{ maxValue }} now. Loopring will setup the pool soon, please revisit for subscription later.",[m
[32m+[m[32m labelDefiNoBalanceJoin:"No quota available. Loopring will setup the pool soon, please revisit for subscription later.",[m
[32m+[m[32m labelInvestBtn: "Subscribe",[m
labelRedeemBtn: "Redeem",[m
labelVipTitle: "VIP",[m
labelSecurity: "Security",[m
labelFeeTitleList: "Fee",[m
[31m-};[m
[32m+[m[32m labelInvestOverviewTitle: "Overview",[m
[32m+[m[32m labelTitleOverviewToken: "Total Investment Tokens",[m
[32m+[m[32m labelInvestType_AMM: "AMM Pool",[m
[32m+[m[32m labelInvestType_DEFI: "ETH Staking",[m
[32m+[m[32m labelInvestFlexible: "Flexible",[m
[32m+[m[32m labelInvestDuration: "Duration",[m
[32m+[m[32m labelDefiOrderTable: "ETH Staking",[m
[32m+[m[32m labelTitleMyInvestAvaiable: "My Holding Tokens",[m
[32m+[m[32m labelViewMore: "View more",[m
[32m+[m[32m labelInvestSuccess: "Successfully {{type}} {{symbol}}",[m
[32m+[m[32m labelInvestFailed: "Subscribe Failed",[m
[32m+[m[32m labelDefiRiskTitle: "What is ETH Staking via Lido?",[m
[32m+[m[32m labelDefiRisk:[m
[32m+[m[32m "<0>Lido is a liquid staking solution for ETH 2.0 backed by industry-leading staking providers. Lido lets users stake their ETH - without locking assets or maintaining infrastructure.</0>\n" +[m
[32m+[m[32m "<1>When using Lido to stake your ETH on the Ethereum beacon chain, users will receive a token (stETH), which represents their ETH on the Ethereum beacon chain on a 1:1 basis. It effectively acts as a bridge bringing ETH 2.0’s staking rewards to ETH 1.0.</1>\n" +[m
[32m+[m[32m "<2>wstETH is the wrapped version of stETH. The total amount of wstETH doesn’t change after users receive the token. Instead, the token’s value increase over time to reflect ETH staking rewards earned.</2>\n",[m
[32m+[m[32m labelDefiRisk2:[m
[32m+[m[32m "<0>It is important to note that users can't redeem wstETH for ETH until phase 2 of Ethereum 2.0. However, users are able to trade wstETH for ETH on various exchanges at market prices.</0>"+[m
[32m+[m[32m "<1>Loopring will provide a pool to allow users to trade wstETH for ETH directly on Layer 2. The pool will rebalance periodically when it reaches a specific threshold. If there is not enough inventory on Layer 2, user can always withdraw their wstETH tokens to Layer 1 and swap for ETH in Lido, Curve, or 1inch.</1>",[m[41m [m
[32m+[m[32m labelDefiAgree:"I have read risk warning",[m
[32m+[m[32m };[m
[1mdiff --git a/packages/common-resources/static-resources/src/i18n/en_US/layout.ts b/packages/common-resources/static-resources/src/i18n/en_US/layout.ts[m
[1mindex b48f47b3b..f6423f864 100644[m
[1m--- a/packages/common-resources/static-resources/src/i18n/en_US/layout.ts[m
[1m+++ b/packages/common-resources/static-resources/src/i18n/en_US/layout.ts[m
[36m@@ -97,9 +97,11 @@[m [mexport default {[m
labelInvestBalance: "My Investment",[m
labelInvestBalanceDes: "The deposition you hold",[m
labelInvestAmm: "AMM Pool",[m
[32m+[m[32m labelInvestOverview: "Overview",[m
[32m+[m[32m labelInvestOverviewDes: "A variety of financial investments",[m
labelInvestAmmDes: "Add liquidity and earn rewards",[m
[31m- labelInvestDefi: "Defi Invest",[m
[31m- labelInvestDefiDes: "More investments, higher returns",[m
[32m+[m[32m labelInvestDefi: "ETH Staking",[m
[32m+[m[32m labelInvestDefiDes: "Easy stake, stable returns",[m
labelDepositNFT: "Receive NFT",[m
// labelDepositNFTDes:"Receive NFT"[m
};[m
[1mdiff --git a/packages/common-resources/static-resources/src/i18n/en_US/tables.ts b/packages/common-resources/static-resources/src/i18n/en_US/tables.ts[m
[1mindex f10f473c5..0d7c65e15 100644[m
[1m--- a/packages/common-resources/static-resources/src/i18n/en_US/tables.ts[m
[1m+++ b/packages/common-resources/static-resources/src/i18n/en_US/tables.ts[m
[36m@@ -87,7 +87,7 @@[m [mexport default {[m
label24TradeVolume: "24h Volume",[m
label24Reward: "24h Reward",[m
labelAPR: "APR",[m
[31m- labelTradePool: "Invest",[m
[32m+[m[32m labelTradePool: "Subscribe",[m
labelAction: "Action",[m
labelFilter: "Filter",[m
labelFilterAllPairs: "All pairs",[m
[36m@@ -100,17 +100,17 @@[m [mexport default {[m
labelFeeEarned: "Fees Earned",[m
labelBuy: "Buy",[m
labelSell: "Sell",[m
[31m- labelAmmSide: "Invest/Redeem",[m
[32m+[m[32m labelAmmSide: "Subscribe/Redeem",[m
labelAmmAmount: "Amount",[m
labelAmmLpTokenAmount: "LP Token Amount",[m
labelAmmFee: "Fee",[m
labelAmmRecordTime: "Time",[m
labelAmmExit: "Redeem",[m
[31m- labelAmmJoin: "Invest",[m
[32m+[m[32m labelAmmJoin: "Subscribe",[m
labelAmmFilterTypes: "All Types",[m
[31m- labelAmmFilterJoin: "Invest",[m
[32m+[m[32m labelAmmFilterJoin: "Subscribe",[m
labelAmmFilterExit: "Redeem",[m
[31m- labelPoolTableAddLiqudity: "Invest",[m
[32m+[m[32m labelPoolTableAddLiqudity: "Subscribe",[m
labelPoolTableRemoveLiqudity: "Redeem",[m
labelEmptyDefault: "No data to display",[m
labelAmmTableType: "Type",[m
[36m@@ -196,6 +196,12 @@[m [mexport default {[m
labelForceWithdrawTotalDes: "All {{symbol}}",[m
labelForceWithdrawDes:[m
"{{address}} (Address that the token is withdrawn from L2 to L1)",[m
[31m- labelDefiInvest: "Invest",[m
[32m+[m[32m labelDefiInvest: "Subscribe",[m
labelDefiRedeem: "Redeem",[m
[32m+[m[32m labelSelect: "Select",[m
[32m+[m[32m labelDuration: "Duration",[m
[32m+[m
[32m+[m[32m labelInvestAll: "Both",[m
[32m+[m[32m labelDefiExit: "Redeem",[m
[32m+[m[32m labelDefiJoin: "Subscribe",[m
};[m
[1mdiff --git a/packages/common-resources/static-resources/src/i18n/zh_CN/common.ts b/packages/common-resources/static-resources/src/i18n/zh_CN/common.ts[m
[1mindex 7ad3212d9..ad1b5ab7f 100644[m
[1m--- a/packages/common-resources/static-resources/src/i18n/zh_CN/common.ts[m
[1m+++ b/packages/common-resources/static-resources/src/i18n/zh_CN/common.ts[m
[36m@@ -302,6 +302,7 @@[m [mexport default {[m
labelCreateAccountDepositDenied:[m
"您以拒绝充值 {{value}} {{symbol}}, 账户未激活",[m
labelSlippageAlert: "滑点过大将会影响您出金后收到的token数量",[m
[32m+[m[32m labelOrderGroup: "Order Records",[m
labelOrderTableOpenOrder: "当前委托",[m
labelOrderTableOrderHistory: "历史委托",[m
labelResetLayout: "重置布局",[m
[36m@@ -813,8 +814,8 @@[m [mexport default {[m
labelForceWithdrawNoToken:[m
"No token is detected from this address to operate",[m
labelForceWithdrawBtn: "Force Withdraw",[m
[31m- labelInvestDefiTitle: "Defi Invest",[m
[31m- labelInvestDefDeposit: "Invest",[m
[32m+[m[32m labelInvestDefiTitle: "ETH Staking",[m
[32m+[m[32m labelInvestDefDeposit: "Subscribe",[m
labelInvestDefWithdraw: "Redeem",[m
labelNFTDepositLabel: "Receive NFT",[m
labelDefiFee: "Fee",[m
[36m@@ -824,9 +825,31 @@[m [mexport default {[m
"Your Redeem order is too large a