@huma-finance/widgets 0.0.8 → 0.0.11

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 (76) hide show
  1. package/dist/cjs/index.cjs +139 -131
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/index.js +139 -131
  4. package/dist/index.js.map +1 -1
  5. package/package.json +4 -4
  6. package/src/components/Activity.tsx +123 -123
  7. package/src/components/AllowListModal.tsx +113 -113
  8. package/src/components/ApproveAllowanceModal.tsx +118 -118
  9. package/src/components/ChooseAmountModal.tsx +315 -315
  10. package/src/components/CreditLine/borrow/1-Evaluation.tsx +158 -159
  11. package/src/components/CreditLine/borrow/2-AllowList.tsx +34 -34
  12. package/src/components/CreditLine/borrow/3-ChooseAmount.tsx +74 -74
  13. package/src/components/CreditLine/borrow/4-ApproveAllowance.tsx +29 -29
  14. package/src/components/CreditLine/borrow/5-Transfer.tsx +30 -30
  15. package/src/components/CreditLine/borrow/6-Success.tsx +30 -30
  16. package/src/components/CreditLine/borrow/index.tsx +119 -119
  17. package/src/components/CreditLine/payment/1-ChooseAmount.tsx +67 -67
  18. package/src/components/CreditLine/payment/2-ApproveAllowance.tsx +23 -23
  19. package/src/components/CreditLine/payment/3-Transfer.tsx +34 -34
  20. package/src/components/CreditLine/payment/4-Success.tsx +39 -39
  21. package/src/components/CreditLine/payment/index.tsx +94 -94
  22. package/src/components/ErrorModal.tsx +132 -132
  23. package/src/components/Factoring/FactoredList.tsx +143 -143
  24. package/src/components/Factoring/UpcomingList.tsx +90 -90
  25. package/src/components/InvoiceFactoring/borrow/1-Evaluation.tsx +52 -46
  26. package/src/components/InvoiceFactoring/borrow/2-AllowList.tsx +34 -34
  27. package/src/components/InvoiceFactoring/borrow/3-ChooseAmount.tsx +86 -92
  28. package/src/components/InvoiceFactoring/borrow/4-ConfirmTransfer.tsx +104 -104
  29. package/src/components/InvoiceFactoring/borrow/5-ApproveNFT.tsx +55 -55
  30. package/src/components/InvoiceFactoring/borrow/6-Transfer.tsx +34 -34
  31. package/src/components/InvoiceFactoring/borrow/7-Success.tsx +3 -3
  32. package/src/components/InvoiceFactoring/borrow/index.tsx +96 -96
  33. package/src/components/InvoiceFactoring/payment/1-ChooseAmount.tsx +67 -67
  34. package/src/components/InvoiceFactoring/payment/2-ApproveAllowance.tsx +23 -23
  35. package/src/components/InvoiceFactoring/payment/3-Transfer.tsx +34 -34
  36. package/src/components/InvoiceFactoring/payment/4-Success.tsx +23 -23
  37. package/src/components/InvoiceFactoring/payment/index.tsx +86 -86
  38. package/src/components/Lend/supply/1-Evaluation.tsx +86 -86
  39. package/src/components/Lend/supply/2-ChooseAmount.tsx +70 -70
  40. package/src/components/Lend/supply/3-ApproveAllowance.tsx +25 -25
  41. package/src/components/Lend/supply/4-ConfirmTransfer.tsx +104 -104
  42. package/src/components/Lend/supply/6-Transfer.tsx +32 -32
  43. package/src/components/Lend/supply/7-Success.tsx +49 -49
  44. package/src/components/Lend/supply/index.tsx +144 -144
  45. package/src/components/Lend/withdraw/1-CheckWithdrawble.tsx +73 -73
  46. package/src/components/Lend/withdraw/2-ChooseAmount.tsx +50 -50
  47. package/src/components/Lend/withdraw/3-Transfer.tsx +32 -32
  48. package/src/components/Lend/withdraw/4-Success.tsx +49 -49
  49. package/src/components/Lend/withdraw/index.tsx +101 -101
  50. package/src/components/StreamFactoring/borrow/1-Evaluation.tsx +47 -57
  51. package/src/components/StreamFactoring/borrow/2-ChooseAmount.tsx +124 -124
  52. package/src/components/StreamFactoring/borrow/3-ConfirmTransfer.tsx +104 -104
  53. package/src/components/StreamFactoring/borrow/4-ApproveAllowance.tsx +65 -65
  54. package/src/components/StreamFactoring/borrow/5-Permit.tsx +144 -144
  55. package/src/components/StreamFactoring/borrow/6-Transfer.tsx +37 -37
  56. package/src/components/StreamFactoring/borrow/7-Success.tsx +2 -2
  57. package/src/components/StreamFactoring/borrow/index.tsx +94 -95
  58. package/src/components/StreamFactoring/payment/ChooseAmount.tsx +54 -54
  59. package/src/components/StreamFactoring/payment/Success.tsx +23 -23
  60. package/src/components/StreamFactoring/payment/Transfer.tsx +34 -34
  61. package/src/components/StreamFactoring/payment/index.tsx +66 -66
  62. package/src/components/SuperfluidFactoring/SuperfluidFactoredList.tsx +61 -61
  63. package/src/components/SuperfluidFactoring/SuperfluidUpcomingList.tsx +185 -185
  64. package/src/components/SuperfluidFactoring/index.tsx +85 -85
  65. package/src/components/TxDoneModal.tsx +83 -83
  66. package/src/components/TxSendModal.tsx +59 -59
  67. package/src/components/ViewOnExplorer.tsx +26 -26
  68. package/src/components/WidgetWrapper.tsx +74 -74
  69. package/src/components/humaModal/HumaModal.tsx +68 -68
  70. package/src/cosmos/SDKTesting.fixture.tsx +557 -515
  71. package/src/hooks/useEA.ts +72 -70
  72. package/src/index.tsx +219 -219
  73. package/src/store/widgets.reducers.ts +120 -120
  74. package/src/store/widgets.store.ts +55 -55
  75. package/src/theme/components.ts +1 -1
  76. package/src/theme/hooks/useGetSizes.ts +0 -3
@@ -1,86 +1,86 @@
1
- import { Box, css, useTheme } from '@mui/material'
2
- import { useWeb3React } from '@web3-react/core'
3
- import { EAService, PoolInfoType } from '@huma-finance/shared'
4
- import React, { useState } from 'react'
5
-
6
- import { useAppDispatch } from '../../../hooks/useRedux'
7
- import { setError, setStep } from '../../../store/widgets.reducers'
8
- import { WIDGET_STEP } from '../../../store/widgets.store'
9
- import { CustomError } from '../../../utilTypes'
10
- import { BottomButton } from '../../BottomButton'
11
- import { ApproveLenderIcon } from '../../icons'
12
- import { LoadingModal } from '../../LoadingModal'
13
- import { WrapperModal } from '../../WrapperModal'
14
-
15
- type Props = {
16
- poolInfo: PoolInfoType
17
- handleApproveSuccess: () => void
18
- }
19
-
20
- export function Evaluation({
21
- poolInfo,
22
- handleApproveSuccess,
23
- }: Props): React.ReactElement | null {
24
- const theme = useTheme()
25
- const dispatch = useAppDispatch()
26
- const { account, chainId } = useWeb3React()
27
- const [loading, setLoading] = useState(false)
28
-
29
- const styles = {
30
- iconWrapper: css`
31
- ${theme.cssMixins.rowCentered};
32
- margin-top: 30px;
33
- `,
34
- description: css`
35
- ${theme.cssMixins.rowCentered};
36
- margin-top: 50px;
37
- font-family: 'Uni-Neue-Regular';
38
- font-size: 16px;
39
- color: #a8a1b2;
40
- `,
41
- }
42
-
43
- const approveLender = async () => {
44
- if (account) {
45
- try {
46
- setLoading(true)
47
- const payload = {
48
- poolAddress: poolInfo.pool,
49
- lenderWalletAddress: account,
50
- }
51
- await EAService.approveLender(payload, chainId!)
52
- handleApproveSuccess()
53
- setLoading(false)
54
- dispatch(setStep(WIDGET_STEP.ChooseAmount))
55
- } catch (e: unknown) {
56
- const error = e as CustomError
57
- setLoading(false)
58
- dispatch(setError({ errorMessage: error.message }))
59
- }
60
- }
61
- }
62
-
63
- if (!loading) {
64
- return (
65
- <WrapperModal
66
- title='Lender Approval'
67
- subTitle='This pool requires lender approval'
68
- >
69
- <Box css={styles.iconWrapper}>
70
- <ApproveLenderIcon />
71
- </Box>
72
- <Box css={styles.description} />
73
- <BottomButton variant='contained' onClick={approveLender}>
74
- GET APPROVED
75
- </BottomButton>
76
- </WrapperModal>
77
- )
78
- }
79
-
80
- return (
81
- <LoadingModal
82
- title='Approval Pending'
83
- description='Waiting for approval confirmation...'
84
- />
85
- )
86
- }
1
+ import { Box, css, useTheme } from '@mui/material'
2
+ import { useWeb3React } from '@web3-react/core'
3
+ import { EAService, PoolInfoType } from '@huma-finance/shared'
4
+ import React, { useState } from 'react'
5
+
6
+ import { useAppDispatch } from '../../../hooks/useRedux'
7
+ import { setError, setStep } from '../../../store/widgets.reducers'
8
+ import { WIDGET_STEP } from '../../../store/widgets.store'
9
+ import { CustomError } from '../../../utilTypes'
10
+ import { BottomButton } from '../../BottomButton'
11
+ import { ApproveLenderIcon } from '../../icons'
12
+ import { LoadingModal } from '../../LoadingModal'
13
+ import { WrapperModal } from '../../WrapperModal'
14
+
15
+ type Props = {
16
+ poolInfo: PoolInfoType
17
+ handleApproveSuccess: () => void
18
+ }
19
+
20
+ export function Evaluation({
21
+ poolInfo,
22
+ handleApproveSuccess,
23
+ }: Props): React.ReactElement | null {
24
+ const theme = useTheme()
25
+ const dispatch = useAppDispatch()
26
+ const { account, chainId } = useWeb3React()
27
+ const [loading, setLoading] = useState(false)
28
+
29
+ const styles = {
30
+ iconWrapper: css`
31
+ ${theme.cssMixins.rowCentered};
32
+ margin-top: 30px;
33
+ `,
34
+ description: css`
35
+ ${theme.cssMixins.rowCentered};
36
+ margin-top: 50px;
37
+ font-family: 'Uni-Neue-Regular';
38
+ font-size: 16px;
39
+ color: #a8a1b2;
40
+ `,
41
+ }
42
+
43
+ const approveLender = async () => {
44
+ if (account) {
45
+ try {
46
+ setLoading(true)
47
+ const payload = {
48
+ poolAddress: poolInfo.pool,
49
+ lenderWalletAddress: account,
50
+ }
51
+ await EAService.approveLender(payload, chainId!)
52
+ handleApproveSuccess()
53
+ setLoading(false)
54
+ dispatch(setStep(WIDGET_STEP.ChooseAmount))
55
+ } catch (e: unknown) {
56
+ const error = e as CustomError
57
+ setLoading(false)
58
+ dispatch(setError({ errorMessage: error.message }))
59
+ }
60
+ }
61
+ }
62
+
63
+ if (!loading) {
64
+ return (
65
+ <WrapperModal
66
+ title='Lender Approval'
67
+ subTitle='This pool requires lender approval'
68
+ >
69
+ <Box css={styles.iconWrapper}>
70
+ <ApproveLenderIcon />
71
+ </Box>
72
+ <Box css={styles.description} />
73
+ <BottomButton variant='contained' onClick={approveLender}>
74
+ GET APPROVED
75
+ </BottomButton>
76
+ </WrapperModal>
77
+ )
78
+ }
79
+
80
+ return (
81
+ <LoadingModal
82
+ title='Approval Pending'
83
+ description='Waiting for approval confirmation...'
84
+ />
85
+ )
86
+ }
@@ -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, approveInfo } = 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(approveInfo)) {
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!} {approveInfo?.tokenSymbol}
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
+ }