@huma-finance/widgets 0.0.29 → 0.0.31

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 (167) hide show
  1. package/.env.example +2 -2
  2. package/.eslintignore +2 -2
  3. package/.eslintrc.js +64 -64
  4. package/.prettierignore +4 -4
  5. package/.prettierrc.js +16 -16
  6. package/API.md +332 -332
  7. package/LICENSE +660 -660
  8. package/README.md +48 -48
  9. package/babel.config.js +15 -15
  10. package/config-overrides.js +9 -9
  11. package/cosmos.config.json +7 -7
  12. package/cypress/e2e/01-invoice-factoring-borrow.test.ts +62 -62
  13. package/cypress/support/e2e.ts +76 -76
  14. package/cypress/support/ethereum.ts +142 -142
  15. package/cypress/tsconfig.json +9 -9
  16. package/cypress/utils/index.ts +54 -54
  17. package/cypress.config.ts +20 -20
  18. package/dist/cjs/index.cjs +144 -142
  19. package/dist/cjs/index.cjs.map +1 -1
  20. package/dist/index.d.ts +193 -193
  21. package/dist/index.js +145 -143
  22. package/dist/index.js.map +1 -1
  23. package/jsdoc2md.json +20 -20
  24. package/package.json +5 -4
  25. package/public/index.html +40 -40
  26. package/public/manifest.json +25 -25
  27. package/public/robots.txt +3 -3
  28. package/rollup.config.js +81 -81
  29. package/src/components/Activity.tsx +132 -132
  30. package/src/components/ApolloWrapper.tsx +15 -15
  31. package/src/components/ApproveAllowanceModal.tsx +121 -121
  32. package/src/components/BottomButton.tsx +33 -33
  33. package/src/components/ChainNotSupportedModal.tsx +33 -33
  34. package/src/components/ConfirmTransferModal.tsx +153 -153
  35. package/src/components/CreditLine/borrow/1-Evaluation.tsx +157 -157
  36. package/src/components/CreditLine/borrow/2-ChooseAmount.tsx +68 -68
  37. package/src/components/CreditLine/borrow/3-Transfer.tsx +44 -44
  38. package/src/components/CreditLine/borrow/4-ApproveAllowance.tsx +29 -29
  39. package/src/components/CreditLine/borrow/5-Success.tsx +30 -30
  40. package/src/components/CreditLine/borrow/index.tsx +117 -117
  41. package/src/components/CreditLine/payment/1-ChooseAmount.tsx +67 -67
  42. package/src/components/CreditLine/payment/2-ApproveAllowance.tsx +23 -23
  43. package/src/components/CreditLine/payment/3-Transfer.tsx +34 -34
  44. package/src/components/CreditLine/payment/4-Success.tsx +39 -39
  45. package/src/components/CreditLine/payment/index.tsx +94 -94
  46. package/src/components/ErrorModal.tsx +132 -132
  47. package/src/components/Factoring/FactoredList.tsx +143 -143
  48. package/src/components/Factoring/UpcomingList.tsx +90 -90
  49. package/src/components/Factoring/index.ts +2 -2
  50. package/src/components/HumaLoading.tsx +68 -68
  51. package/src/components/HumaTable.tsx +158 -158
  52. package/src/components/InvoiceFactoring/borrow/1-Evaluation.tsx +49 -49
  53. package/src/components/InvoiceFactoring/borrow/2-ChooseAmount.tsx +88 -88
  54. package/src/components/InvoiceFactoring/borrow/3-ConfirmTransfer.tsx +37 -37
  55. package/src/components/InvoiceFactoring/borrow/4-ApproveNFT.tsx +55 -55
  56. package/src/components/InvoiceFactoring/borrow/5-Transfer.tsx +34 -34
  57. package/src/components/InvoiceFactoring/borrow/6-Success.tsx +20 -20
  58. package/src/components/InvoiceFactoring/borrow/index.tsx +94 -94
  59. package/src/components/InvoiceFactoring/payment/1-ChooseAmount.tsx +67 -67
  60. package/src/components/InvoiceFactoring/payment/2-ApproveAllowance.tsx +23 -23
  61. package/src/components/InvoiceFactoring/payment/3-Transfer.tsx +34 -34
  62. package/src/components/InvoiceFactoring/payment/4-Success.tsx +23 -23
  63. package/src/components/InvoiceFactoring/payment/index.tsx +86 -86
  64. package/src/components/Lend/supply/1-Evaluation.tsx +175 -171
  65. package/src/components/Lend/supply/2-ChooseAmount.tsx +70 -70
  66. package/src/components/Lend/supply/3-ApproveAllowance.tsx +25 -25
  67. package/src/components/Lend/supply/4-ConfirmTransfer.tsx +104 -104
  68. package/src/components/Lend/supply/6-Transfer.tsx +32 -32
  69. package/src/components/Lend/supply/7-Success.tsx +49 -49
  70. package/src/components/Lend/supply/index.tsx +144 -144
  71. package/src/components/Lend/withdraw/1-CheckWithdrawble.tsx +73 -73
  72. package/src/components/Lend/withdraw/2-ChooseAmount.tsx +50 -50
  73. package/src/components/Lend/withdraw/3-Transfer.tsx +32 -32
  74. package/src/components/Lend/withdraw/4-Success.tsx +49 -49
  75. package/src/components/Lend/withdraw/index.tsx +101 -101
  76. package/src/components/LoadingModal.tsx +49 -49
  77. package/src/components/NotifiSubscriptionModal.tsx +84 -0
  78. package/src/components/StreamFactoring/borrow/1-Evaluation.tsx +55 -55
  79. package/src/components/StreamFactoring/borrow/2-ChooseAmount.tsx +127 -127
  80. package/src/components/StreamFactoring/borrow/3-ConfirmTransfer.tsx +42 -42
  81. package/src/components/StreamFactoring/borrow/4-ApproveAllowance.tsx +33 -33
  82. package/src/components/StreamFactoring/borrow/5-Permit.tsx +144 -144
  83. package/src/components/StreamFactoring/borrow/6-Transfer.tsx +37 -37
  84. package/src/components/StreamFactoring/borrow/7-Success.tsx +20 -20
  85. package/src/components/StreamFactoring/borrow/index.tsx +94 -94
  86. package/src/components/StreamFactoring/payment/ChooseAmount.tsx +54 -54
  87. package/src/components/StreamFactoring/payment/Success.tsx +23 -23
  88. package/src/components/StreamFactoring/payment/Transfer.tsx +34 -34
  89. package/src/components/StreamFactoring/payment/index.tsx +66 -66
  90. package/src/components/SuperfluidFactoring/SuperfluidFactoredList.tsx +70 -70
  91. package/src/components/SuperfluidFactoring/SuperfluidUpcomingList.tsx +167 -167
  92. package/src/components/SuperfluidFactoring/index.tsx +85 -85
  93. package/src/components/TxDoneModal.tsx +83 -83
  94. package/src/components/TxSendModal.tsx +59 -59
  95. package/src/components/ViewOnExplorer.tsx +26 -26
  96. package/src/components/WidgetWrapper.tsx +74 -74
  97. package/src/components/WrapperModal.tsx +54 -54
  98. package/src/components/buttons/TableActionButton.tsx +36 -36
  99. package/src/components/buttons/index.ts +1 -1
  100. package/src/components/humaModal/HumaModal.tsx +68 -68
  101. package/src/components/humaModal/HumaModalHeader.tsx +70 -70
  102. package/src/components/humaModal/index.tsx +2 -2
  103. package/src/components/icons/approve-lender.svg +30 -30
  104. package/src/components/icons/auto-payback.svg +40 -40
  105. package/src/components/icons/check-circle.svg +3 -3
  106. package/src/components/icons/check-green.svg +3 -3
  107. package/src/components/icons/check.svg +10 -10
  108. package/src/components/icons/donut.svg +904 -904
  109. package/src/components/icons/ellipse.svg +3 -3
  110. package/src/components/icons/huma-full.svg +22 -22
  111. package/src/components/icons/huma.svg +15 -15
  112. package/src/components/icons/index.tsx +93 -93
  113. package/src/components/icons/loader.svg +229 -229
  114. package/src/components/icons/metamask.svg +31 -31
  115. package/src/components/icons/polygon.svg +16 -16
  116. package/src/components/icons/receipt.svg +3 -3
  117. package/src/components/icons/separator.svg +3 -3
  118. package/src/components/icons/sorry.svg +31 -31
  119. package/src/components/icons/usdc.svg +5 -5
  120. package/src/components/icons/wallet-connect.svg +11 -11
  121. package/src/cosmos/CreditLineBorrow.fixture.tsx +86 -86
  122. package/src/cosmos/CreditLinePayment.fixture.tsx +50 -50
  123. package/src/cosmos/InvoiceFactoringBorrow.fixture.tsx +111 -111
  124. package/src/cosmos/InvoiceFactoringPayment.fixture.tsx +67 -67
  125. package/src/cosmos/LendSupply.fixture.tsx +75 -75
  126. package/src/cosmos/LendWithdraw.fixture.tsx +43 -43
  127. package/src/cosmos/SDKTesting.fixture.tsx +4 -3
  128. package/src/cosmos/SuperfluidFactoringBorrow.fixture.tsx +15 -15
  129. package/src/cosmos/WalletWrapper.tsx +52 -52
  130. package/src/cosmos/abis/InvoiceNFT.json +644 -644
  131. package/src/cosmos/abis/ReceivableFactoringPool.json +1529 -1529
  132. package/src/cosmos/utils/env.ts +6 -6
  133. package/src/cosmos/utils/index.ts +169 -169
  134. package/src/fonts/Recoleta/Recoleta-Black.otf +0 -0
  135. package/src/fonts/Recoleta/Recoleta-Bold.otf +0 -0
  136. package/src/fonts/Recoleta/Recoleta-Light.otf +0 -0
  137. package/src/fonts/Recoleta/Recoleta-Medium.otf +0 -0
  138. package/src/fonts/Recoleta/Recoleta-Regular.otf +0 -0
  139. package/src/fonts/Recoleta/Recoleta-RegularDEMO.otf +0 -0
  140. package/src/fonts/Recoleta/Recoleta-SemiBold.otf +0 -0
  141. package/src/fonts/Recoleta/Recoleta-Thin.otf +0 -0
  142. package/src/hooks/useEA.ts +53 -53
  143. package/src/hooks/useRedux.ts +6 -6
  144. package/src/index.css +61 -61
  145. package/src/index.tsx +301 -301
  146. package/src/react-app-env.d.ts +1 -1
  147. package/src/reportWebVitals.ts +15 -15
  148. package/src/setupTests.ts +6 -6
  149. package/src/store/index.ts +27 -27
  150. package/src/store/widgets.reducers.ts +120 -120
  151. package/src/store/widgets.selectors.ts +3 -3
  152. package/src/store/widgets.store.ts +54 -54
  153. package/src/theme/breakpoints.ts +10 -10
  154. package/src/theme/components.ts +70 -70
  155. package/src/theme/coreThemeConstants.ts +29 -29
  156. package/src/theme/cssMixins.ts +92 -92
  157. package/src/theme/hooks/useGetSizes.ts +31 -31
  158. package/src/theme/index.ts +24 -24
  159. package/src/theme/palette.ts +150 -150
  160. package/src/theme/shape.ts +7 -7
  161. package/src/theme/theme.types.ts +80 -80
  162. package/src/theme/typography.ts +117 -117
  163. package/src/utilTypes.d.ts +31 -31
  164. package/src/utils/env.ts +10 -10
  165. package/tsconfig.build.json +7 -7
  166. package/tsconfig.json +32 -32
  167. package/webpack.cosmos.js +54 -54
@@ -1,70 +1,70 @@
1
- import { BigNumber } from 'ethers'
2
- import {
3
- PoolInfoType,
4
- timeUtil,
5
- toBigNumber,
6
- upScale,
7
- } from '@huma-finance/shared'
8
- import React, { useCallback, useState } from 'react'
9
-
10
- import { useAppDispatch } from '../../../hooks/useRedux'
11
- import { setStep, setSupplyAmount } from '../../../store/widgets.reducers'
12
- import { WIDGET_STEP } from '../../../store/widgets.store'
13
- import { ChooseAmountModal } from '../../ChooseAmountModal'
14
- import { getIcon } from '../../icons'
15
-
16
- type Props = {
17
- allowance: BigNumber
18
- withdrawlLockoutSeconds: number | undefined
19
- underlyingTokenBalance: string
20
- poolInfo: PoolInfoType
21
- }
22
-
23
- export function ChooseAmount({
24
- allowance,
25
- withdrawlLockoutSeconds,
26
- underlyingTokenBalance,
27
- poolInfo,
28
- }: Props): React.ReactElement | null {
29
- const dispatch = useAppDispatch()
30
- const { poolUnderlyingToken } = poolInfo
31
- const { symbol, decimals } = poolUnderlyingToken
32
- const [currentAmount, setCurrentAmount] = useState(0)
33
- const depositAmount = upScale<number>(currentAmount, decimals)
34
- const needApprove = toBigNumber(depositAmount).gt(allowance)
35
- const withdrawlLockoutDays = timeUtil.secondsToDays(withdrawlLockoutSeconds)
36
-
37
- const handleChangeAmount = useCallback(
38
- (newAmount: number) => {
39
- setCurrentAmount(newAmount)
40
- dispatch(setSupplyAmount(newAmount))
41
- },
42
- [dispatch],
43
- )
44
-
45
- const handleAction = useCallback(() => {
46
- const step = needApprove
47
- ? WIDGET_STEP.ApproveAllowance
48
- : WIDGET_STEP.Transfer
49
- dispatch(setStep(step))
50
- }, [dispatch, needApprove])
51
-
52
- return (
53
- <ChooseAmountModal
54
- title={`Supply ${symbol}`}
55
- description1='Choose Amount'
56
- description2={`Depositors need to wait for ${withdrawlLockoutDays.toFixed(
57
- 0,
58
- )} days before withdrawal`}
59
- sliderMax={Number(underlyingTokenBalance)}
60
- currentAmount={currentAmount}
61
- tokenSymbol={symbol}
62
- handleChangeAmount={handleChangeAmount}
63
- handleAction={handleAction}
64
- actionText={needApprove ? 'approve allowance' : 'supply'}
65
- type='input'
66
- tokenIcon={getIcon(poolInfo.poolUnderlyingToken.icon)!}
67
- hideTerms
68
- />
69
- )
70
- }
1
+ import { BigNumber } from 'ethers'
2
+ import {
3
+ PoolInfoType,
4
+ timeUtil,
5
+ toBigNumber,
6
+ upScale,
7
+ } from '@huma-finance/shared'
8
+ import React, { useCallback, useState } from 'react'
9
+
10
+ import { useAppDispatch } from '../../../hooks/useRedux'
11
+ import { setStep, setSupplyAmount } from '../../../store/widgets.reducers'
12
+ import { WIDGET_STEP } from '../../../store/widgets.store'
13
+ import { ChooseAmountModal } from '../../ChooseAmountModal'
14
+ import { getIcon } from '../../icons'
15
+
16
+ type Props = {
17
+ allowance: BigNumber
18
+ withdrawlLockoutSeconds: number | undefined
19
+ underlyingTokenBalance: string
20
+ poolInfo: PoolInfoType
21
+ }
22
+
23
+ export function ChooseAmount({
24
+ allowance,
25
+ withdrawlLockoutSeconds,
26
+ underlyingTokenBalance,
27
+ poolInfo,
28
+ }: Props): React.ReactElement | null {
29
+ const dispatch = useAppDispatch()
30
+ const { poolUnderlyingToken } = poolInfo
31
+ const { symbol, decimals } = poolUnderlyingToken
32
+ const [currentAmount, setCurrentAmount] = useState(0)
33
+ const depositAmount = upScale<number>(currentAmount, decimals)
34
+ const needApprove = toBigNumber(depositAmount).gt(allowance)
35
+ const withdrawlLockoutDays = timeUtil.secondsToDays(withdrawlLockoutSeconds)
36
+
37
+ const handleChangeAmount = useCallback(
38
+ (newAmount: number) => {
39
+ setCurrentAmount(newAmount)
40
+ dispatch(setSupplyAmount(newAmount))
41
+ },
42
+ [dispatch],
43
+ )
44
+
45
+ const handleAction = useCallback(() => {
46
+ const step = needApprove
47
+ ? WIDGET_STEP.ApproveAllowance
48
+ : WIDGET_STEP.Transfer
49
+ dispatch(setStep(step))
50
+ }, [dispatch, needApprove])
51
+
52
+ return (
53
+ <ChooseAmountModal
54
+ title={`Supply ${symbol}`}
55
+ description1='Choose Amount'
56
+ description2={`Depositors need to wait for ${withdrawlLockoutDays.toFixed(
57
+ 0,
58
+ )} days before withdrawal`}
59
+ sliderMax={Number(underlyingTokenBalance)}
60
+ currentAmount={currentAmount}
61
+ tokenSymbol={symbol}
62
+ handleChangeAmount={handleChangeAmount}
63
+ handleAction={handleAction}
64
+ actionText={needApprove ? 'approve allowance' : 'supply'}
65
+ type='input'
66
+ tokenIcon={getIcon(poolInfo.poolUnderlyingToken.icon)!}
67
+ hideTerms
68
+ />
69
+ )
70
+ }
@@ -1,25 +1,25 @@
1
- import { PoolInfoType } from '@huma-finance/shared'
2
- import React, { useCallback } from 'react'
3
-
4
- import { useAppDispatch } from '../../../hooks/useRedux'
5
- import { setStep } from '../../../store/widgets.reducers'
6
- import { WIDGET_STEP } from '../../../store/widgets.store'
7
- import { ApproveAllowanceModal } from '../../ApproveAllowanceModal'
8
-
9
- type Props = {
10
- poolInfo: PoolInfoType
11
- }
12
-
13
- export function ApproveAllowance({
14
- poolInfo,
15
- }: Props): React.ReactElement | null {
16
- const dispatch = useAppDispatch()
17
-
18
- const handleSuccess = useCallback(() => {
19
- dispatch(setStep(WIDGET_STEP.Transfer))
20
- }, [dispatch])
21
-
22
- return (
23
- <ApproveAllowanceModal poolInfo={poolInfo} handleSuccess={handleSuccess} />
24
- )
25
- }
1
+ import { PoolInfoType } from '@huma-finance/shared'
2
+ import React, { useCallback } from 'react'
3
+
4
+ import { useAppDispatch } from '../../../hooks/useRedux'
5
+ import { setStep } from '../../../store/widgets.reducers'
6
+ import { WIDGET_STEP } from '../../../store/widgets.store'
7
+ import { ApproveAllowanceModal } from '../../ApproveAllowanceModal'
8
+
9
+ type Props = {
10
+ poolInfo: PoolInfoType
11
+ }
12
+
13
+ export function ApproveAllowance({
14
+ poolInfo,
15
+ }: Props): React.ReactElement | null {
16
+ const dispatch = useAppDispatch()
17
+
18
+ const handleSuccess = useCallback(() => {
19
+ dispatch(setStep(WIDGET_STEP.Transfer))
20
+ }, [dispatch])
21
+
22
+ return (
23
+ <ApproveAllowanceModal poolInfo={poolInfo} handleSuccess={handleSuccess} />
24
+ )
25
+ }
@@ -1,104 +1,104 @@
1
- import ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos'
2
- import { Box, Button, css, Typography, useTheme } from '@mui/material'
3
- import { isEmpty } from '@huma-finance/shared'
4
- import React from 'react'
5
-
6
- import { useAppDispatch, useAppSelector } from '../../../hooks/useRedux'
7
- import { setStep } from '../../../store/widgets.reducers'
8
- import { selectWidgetState } from '../../../store/widgets.selectors'
9
- import { WIDGET_STEP } from '../../../store/widgets.store'
10
-
11
- export function ConfirmTransfer(): React.ReactElement | null {
12
- const theme = useTheme()
13
- const dispatch = useAppDispatch()
14
- const { borrowAmountNet, approval } = useAppSelector(selectWidgetState)
15
-
16
- const styles = {
17
- wrapper: css`
18
- height: 518px;
19
- position: relative;
20
- ${theme.cssMixins.colStretch};
21
- `,
22
- header: css`
23
- font-family: 'Uni-Neue-Bold';
24
- ${theme.cssMixins.rowHCentered};
25
- margin-top: -5px;
26
- `,
27
- description: css`
28
- font-family: 'Uni-Neue-Regular';
29
- font-weight: 500;
30
- font-size: 16px;
31
- color: #49505b;
32
- margin-top: 30px;
33
- text-align: center;
34
- `,
35
- transferWrapper: css`
36
- margin-top: 75px;
37
- `,
38
- transfer: css`
39
- font-family: 'Uni-Neue-Regular';
40
- ${theme.cssMixins.rowSpaceBetweened}
41
- ${theme.cssMixins.rowVCentered}
42
- height: 72px;
43
- background: #f9f8fa;
44
- border-radius: 4px;
45
- font-weight: 500;
46
- font-size: 16px;
47
- color: #49505b;
48
- padding: 24px 32px;
49
- margin-bottom: 9px;
50
- position: relative;
51
- box-sizing: border-box;
52
- `,
53
- arrow: css`
54
- color: #d2d0d6;
55
- position: absolute;
56
- margin: auto;
57
- top: 0;
58
- left: 0;
59
- bottom: 0;
60
- right: 0;
61
- `,
62
- okButton: css`
63
- width: 100%;
64
- position: absolute;
65
- bottom: 0;
66
- `,
67
- }
68
-
69
- const handleAction = () => {
70
- dispatch(setStep(WIDGET_STEP.ApproveNFT))
71
- }
72
-
73
- if (isEmpty(borrowAmountNet) || isEmpty(approval)) {
74
- return null
75
- }
76
-
77
- return (
78
- <Box css={styles.wrapper}>
79
- <Typography variant='h6' css={styles.header}>
80
- Confirm transaction details
81
- </Typography>
82
- <Box css={styles.description}>
83
- Huma keeps your Invoice NFT as collateral until it's fully paid.
84
- </Box>
85
- <Box css={styles.transferWrapper}>
86
- <Box css={styles.transfer}>
87
- <Box>Invoice NFT</Box>
88
- <ArrowForwardIosIcon css={styles.arrow} />
89
- <Box>Huma</Box>
90
- </Box>
91
- <Box css={styles.transfer}>
92
- <Box>
93
- {borrowAmountNet!} {approval?.token.symbol}
94
- </Box>
95
- <ArrowForwardIosIcon css={styles.arrow} />
96
- <Box>You</Box>
97
- </Box>
98
- </Box>
99
- <Button variant='contained' css={styles.okButton} onClick={handleAction}>
100
- APPROVE TRANSFER
101
- </Button>
102
- </Box>
103
- )
104
- }
1
+ import ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos'
2
+ import { Box, Button, css, Typography, useTheme } from '@mui/material'
3
+ import { isEmpty } from '@huma-finance/shared'
4
+ import React from 'react'
5
+
6
+ import { useAppDispatch, useAppSelector } from '../../../hooks/useRedux'
7
+ import { setStep } from '../../../store/widgets.reducers'
8
+ import { selectWidgetState } from '../../../store/widgets.selectors'
9
+ import { WIDGET_STEP } from '../../../store/widgets.store'
10
+
11
+ export function ConfirmTransfer(): React.ReactElement | null {
12
+ const theme = useTheme()
13
+ const dispatch = useAppDispatch()
14
+ const { borrowAmountNet, approval } = useAppSelector(selectWidgetState)
15
+
16
+ const styles = {
17
+ wrapper: css`
18
+ height: 518px;
19
+ position: relative;
20
+ ${theme.cssMixins.colStretch};
21
+ `,
22
+ header: css`
23
+ font-family: 'Uni-Neue-Bold';
24
+ ${theme.cssMixins.rowHCentered};
25
+ margin-top: -5px;
26
+ `,
27
+ description: css`
28
+ font-family: 'Uni-Neue-Regular';
29
+ font-weight: 500;
30
+ font-size: 16px;
31
+ color: #49505b;
32
+ margin-top: 30px;
33
+ text-align: center;
34
+ `,
35
+ transferWrapper: css`
36
+ margin-top: 75px;
37
+ `,
38
+ transfer: css`
39
+ font-family: 'Uni-Neue-Regular';
40
+ ${theme.cssMixins.rowSpaceBetweened}
41
+ ${theme.cssMixins.rowVCentered}
42
+ height: 72px;
43
+ background: #f9f8fa;
44
+ border-radius: 4px;
45
+ font-weight: 500;
46
+ font-size: 16px;
47
+ color: #49505b;
48
+ padding: 24px 32px;
49
+ margin-bottom: 9px;
50
+ position: relative;
51
+ box-sizing: border-box;
52
+ `,
53
+ arrow: css`
54
+ color: #d2d0d6;
55
+ position: absolute;
56
+ margin: auto;
57
+ top: 0;
58
+ left: 0;
59
+ bottom: 0;
60
+ right: 0;
61
+ `,
62
+ okButton: css`
63
+ width: 100%;
64
+ position: absolute;
65
+ bottom: 0;
66
+ `,
67
+ }
68
+
69
+ const handleAction = () => {
70
+ dispatch(setStep(WIDGET_STEP.ApproveNFT))
71
+ }
72
+
73
+ if (isEmpty(borrowAmountNet) || isEmpty(approval)) {
74
+ return null
75
+ }
76
+
77
+ return (
78
+ <Box css={styles.wrapper}>
79
+ <Typography variant='h6' css={styles.header}>
80
+ Confirm transaction details
81
+ </Typography>
82
+ <Box css={styles.description}>
83
+ Huma keeps your Invoice NFT as collateral until it's fully paid.
84
+ </Box>
85
+ <Box css={styles.transferWrapper}>
86
+ <Box css={styles.transfer}>
87
+ <Box>Invoice NFT</Box>
88
+ <ArrowForwardIosIcon css={styles.arrow} />
89
+ <Box>Huma</Box>
90
+ </Box>
91
+ <Box css={styles.transfer}>
92
+ <Box>
93
+ {borrowAmountNet!} {approval?.token.symbol}
94
+ </Box>
95
+ <ArrowForwardIosIcon css={styles.arrow} />
96
+ <Box>You</Box>
97
+ </Box>
98
+ </Box>
99
+ <Button variant='contained' css={styles.okButton} onClick={handleAction}>
100
+ APPROVE TRANSFER
101
+ </Button>
102
+ </Box>
103
+ )
104
+ }
@@ -1,32 +1,32 @@
1
- import { PoolInfoType, toBigNumber, upScale } from '@huma-finance/shared'
2
- import React, { useCallback } from 'react'
3
-
4
- import { useAppDispatch, useAppSelector } from '../../../hooks/useRedux'
5
- import { setStep } from '../../../store/widgets.reducers'
6
- import { selectWidgetState } from '../../../store/widgets.selectors'
7
- import { WIDGET_STEP } from '../../../store/widgets.store'
8
- import { TxSendModal } from '../../TxSendModal'
9
-
10
- type Props = {
11
- poolInfo: PoolInfoType
12
- }
13
-
14
- export function Transfer({ poolInfo }: Props): React.ReactElement {
15
- const dispatch = useAppDispatch()
16
- const { supplyAmount } = useAppSelector(selectWidgetState)
17
- const { decimals } = poolInfo.poolUnderlyingToken
18
- const supplyBigNumber = toBigNumber(upScale(supplyAmount!, decimals))
19
-
20
- const handleSuccess = useCallback(() => {
21
- dispatch(setStep(WIDGET_STEP.Done))
22
- }, [dispatch])
23
-
24
- return (
25
- <TxSendModal
26
- poolInfo={poolInfo}
27
- method='deposit'
28
- params={[supplyBigNumber]}
29
- handleSuccess={handleSuccess}
30
- />
31
- )
32
- }
1
+ import { PoolInfoType, toBigNumber, upScale } from '@huma-finance/shared'
2
+ import React, { useCallback } from 'react'
3
+
4
+ import { useAppDispatch, useAppSelector } from '../../../hooks/useRedux'
5
+ import { setStep } from '../../../store/widgets.reducers'
6
+ import { selectWidgetState } from '../../../store/widgets.selectors'
7
+ import { WIDGET_STEP } from '../../../store/widgets.store'
8
+ import { TxSendModal } from '../../TxSendModal'
9
+
10
+ type Props = {
11
+ poolInfo: PoolInfoType
12
+ }
13
+
14
+ export function Transfer({ poolInfo }: Props): React.ReactElement {
15
+ const dispatch = useAppDispatch()
16
+ const { supplyAmount } = useAppSelector(selectWidgetState)
17
+ const { decimals } = poolInfo.poolUnderlyingToken
18
+ const supplyBigNumber = toBigNumber(upScale(supplyAmount!, decimals))
19
+
20
+ const handleSuccess = useCallback(() => {
21
+ dispatch(setStep(WIDGET_STEP.Done))
22
+ }, [dispatch])
23
+
24
+ return (
25
+ <TxSendModal
26
+ poolInfo={poolInfo}
27
+ method='deposit'
28
+ params={[supplyBigNumber]}
29
+ handleSuccess={handleSuccess}
30
+ />
31
+ )
32
+ }
@@ -1,49 +1,49 @@
1
- import { useWeb3React } from '@web3-react/core'
2
- import {
3
- decodeLogs,
4
- downScale,
5
- formatMoney,
6
- PoolInfoType,
7
- sendTxAtom,
8
- } from '@huma-finance/shared'
9
- import transferAbi from '@huma-finance/shared/dist/abis/Transfer.json'
10
- import { useAtom } from 'jotai'
11
- import React, { useEffect, useState } from 'react'
12
-
13
- import { TxDoneModal } from '../../TxDoneModal'
14
-
15
- type Props = {
16
- poolInfo: PoolInfoType
17
- handleAction: () => void
18
- }
19
-
20
- export function Success({ poolInfo, handleAction }: Props): React.ReactElement {
21
- const { account } = useWeb3React()
22
- const { poolUnderlyingToken } = poolInfo
23
- const [{ txReceipt }] = useAtom(sendTxAtom)
24
- const { symbol, decimals, address } = poolUnderlyingToken
25
- const [supplyAmount, setSupplyAmount] = useState<string | undefined>()
26
-
27
- useEffect(() => {
28
- if (txReceipt) {
29
- const events = decodeLogs(txReceipt.logs, transferAbi)
30
- if (events) {
31
- events.forEach((event) => {
32
- const { from, to, value } = event.args
33
- if (
34
- from.toLowerCase() === account?.toLowerCase() &&
35
- to.toLowerCase() === poolInfo.pool.toLowerCase()
36
- ) {
37
- setSupplyAmount(downScale(value.toString(), decimals))
38
- }
39
- })
40
- }
41
- }
42
- }, [account, address, decimals, poolInfo.pool, txReceipt])
43
-
44
- const content = [
45
- `You successfully supplied ${formatMoney(supplyAmount)} ${symbol}.`,
46
- ]
47
-
48
- return <TxDoneModal handleAction={handleAction} content={content} />
49
- }
1
+ import { useWeb3React } from '@web3-react/core'
2
+ import {
3
+ decodeLogs,
4
+ downScale,
5
+ formatMoney,
6
+ PoolInfoType,
7
+ sendTxAtom,
8
+ } from '@huma-finance/shared'
9
+ import transferAbi from '@huma-finance/shared/dist/abis/Transfer.json'
10
+ import { useAtom } from 'jotai'
11
+ import React, { useEffect, useState } from 'react'
12
+
13
+ import { TxDoneModal } from '../../TxDoneModal'
14
+
15
+ type Props = {
16
+ poolInfo: PoolInfoType
17
+ handleAction: () => void
18
+ }
19
+
20
+ export function Success({ poolInfo, handleAction }: Props): React.ReactElement {
21
+ const { account } = useWeb3React()
22
+ const { poolUnderlyingToken } = poolInfo
23
+ const [{ txReceipt }] = useAtom(sendTxAtom)
24
+ const { symbol, decimals, address } = poolUnderlyingToken
25
+ const [supplyAmount, setSupplyAmount] = useState<string | undefined>()
26
+
27
+ useEffect(() => {
28
+ if (txReceipt) {
29
+ const events = decodeLogs(txReceipt.logs, transferAbi)
30
+ if (events) {
31
+ events.forEach((event) => {
32
+ const { from, to, value } = event.args
33
+ if (
34
+ from.toLowerCase() === account?.toLowerCase() &&
35
+ to.toLowerCase() === poolInfo.pool.toLowerCase()
36
+ ) {
37
+ setSupplyAmount(downScale(value.toString(), decimals))
38
+ }
39
+ })
40
+ }
41
+ }
42
+ }, [account, address, decimals, poolInfo.pool, txReceipt])
43
+
44
+ const content = [
45
+ `You successfully supplied ${formatMoney(supplyAmount)} ${symbol}.`,
46
+ ]
47
+
48
+ return <TxDoneModal handleAction={handleAction} content={content} />
49
+ }