@huma-finance/widgets 0.0.8 → 0.0.10

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 (115) 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 +331 -331
  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/jsdoc2md.json +20 -20
  19. package/package.json +4 -4
  20. package/public/index.html +40 -40
  21. package/public/manifest.json +25 -25
  22. package/public/robots.txt +3 -3
  23. package/rollup.config.js +81 -81
  24. package/src/components/ApolloWrapper.tsx +15 -15
  25. package/src/components/BottomButton.tsx +31 -31
  26. package/src/components/Factoring/index.ts +2 -2
  27. package/src/components/HumaLoading.tsx +68 -68
  28. package/src/components/HumaTable.tsx +158 -158
  29. package/src/components/InvoiceFactoring/borrow/3-ChooseAmount.tsx +13 -19
  30. package/src/components/InvoiceFactoring/borrow/4-ConfirmTransfer.tsx +3 -3
  31. package/src/components/InvoiceFactoring/borrow/7-Success.tsx +20 -20
  32. package/src/components/Lend/supply/4-ConfirmTransfer.tsx +3 -3
  33. package/src/components/LoadingModal.tsx +49 -49
  34. package/src/components/StreamFactoring/borrow/2-ChooseAmount.tsx +11 -11
  35. package/src/components/StreamFactoring/borrow/3-ConfirmTransfer.tsx +3 -3
  36. package/src/components/StreamFactoring/borrow/4-ApproveAllowance.tsx +2 -2
  37. package/src/components/StreamFactoring/borrow/7-Success.tsx +20 -20
  38. package/src/components/SuperfluidFactoring/SuperfluidUpcomingList.tsx +1 -1
  39. package/src/components/SuperfluidFactoring/index.tsx +1 -1
  40. package/src/components/WrapperModal.tsx +54 -54
  41. package/src/components/buttons/TableActionButton.tsx +36 -36
  42. package/src/components/buttons/index.ts +1 -1
  43. package/src/components/humaModal/HumaModalHeader.tsx +70 -70
  44. package/src/components/humaModal/index.tsx +2 -2
  45. package/src/components/icons/approve-lender.svg +30 -30
  46. package/src/components/icons/auto-payback.svg +40 -40
  47. package/src/components/icons/check-circle.svg +3 -3
  48. package/src/components/icons/check-green.svg +3 -3
  49. package/src/components/icons/check.svg +10 -10
  50. package/src/components/icons/donut.svg +904 -904
  51. package/src/components/icons/ellipse.svg +3 -3
  52. package/src/components/icons/huma-full.svg +22 -22
  53. package/src/components/icons/huma.svg +15 -15
  54. package/src/components/icons/index.tsx +93 -93
  55. package/src/components/icons/loader.svg +229 -229
  56. package/src/components/icons/metamask.svg +31 -31
  57. package/src/components/icons/polygon.svg +16 -16
  58. package/src/components/icons/receipt.svg +3 -3
  59. package/src/components/icons/separator.svg +3 -3
  60. package/src/components/icons/sorry.svg +31 -31
  61. package/src/components/icons/usdc.svg +5 -5
  62. package/src/components/icons/wallet-connect.svg +11 -11
  63. package/src/cosmos/CreditLineBorrow.fixture.tsx +85 -85
  64. package/src/cosmos/CreditLinePayment.fixture.tsx +49 -49
  65. package/src/cosmos/InvoiceFactoringBorrow.fixture.tsx +111 -111
  66. package/src/cosmos/InvoiceFactoringPayment.fixture.tsx +67 -67
  67. package/src/cosmos/LendSupply.fixture.tsx +75 -75
  68. package/src/cosmos/LendWithdraw.fixture.tsx +43 -43
  69. package/src/cosmos/SDKTesting.fixture.tsx +1 -0
  70. package/src/cosmos/SuperfluidFactoringBorrow.fixture.tsx +12 -12
  71. package/src/cosmos/WalletWrapper.tsx +52 -52
  72. package/src/cosmos/abis/InvoiceNFT.json +644 -644
  73. package/src/cosmos/abis/ReceivableFactoringPool.json +1529 -1529
  74. package/src/cosmos/utils/index.ts +169 -169
  75. package/src/fonts/Recoleta/Recoleta-Black.otf +0 -0
  76. package/src/fonts/Recoleta/Recoleta-Bold.otf +0 -0
  77. package/src/fonts/Recoleta/Recoleta-Light.otf +0 -0
  78. package/src/fonts/Recoleta/Recoleta-Medium.otf +0 -0
  79. package/src/fonts/Recoleta/Recoleta-Regular.otf +0 -0
  80. package/src/fonts/Recoleta/Recoleta-RegularDEMO.otf +0 -0
  81. package/src/fonts/Recoleta/Recoleta-SemiBold.otf +0 -0
  82. package/src/fonts/Recoleta/Recoleta-Thin.otf +0 -0
  83. package/src/hooks/useEA.ts +11 -9
  84. package/src/hooks/useRedux.ts +6 -6
  85. package/src/index.css +61 -61
  86. package/src/index.tsx +1 -7
  87. package/src/react-app-env.d.ts +1 -1
  88. package/src/reportWebVitals.ts +15 -15
  89. package/src/setupTests.ts +6 -6
  90. package/src/store/index.ts +27 -27
  91. package/src/store/widgets.reducers.ts +7 -7
  92. package/src/store/widgets.selectors.ts +3 -3
  93. package/src/store/widgets.store.ts +2 -2
  94. package/src/theme/breakpoints.ts +10 -10
  95. package/src/theme/components.ts +70 -70
  96. package/src/theme/coreThemeConstants.ts +29 -29
  97. package/src/theme/cssMixins.ts +92 -92
  98. package/src/theme/hooks/useGetSizes.ts +31 -34
  99. package/src/theme/index.ts +24 -24
  100. package/src/theme/palette.ts +150 -150
  101. package/src/theme/shape.ts +7 -7
  102. package/src/theme/theme.types.ts +80 -80
  103. package/src/theme/typography.ts +117 -117
  104. package/src/utilTypes.d.ts +29 -29
  105. package/src/utils/env.ts +9 -9
  106. package/tsconfig.build.json +7 -7
  107. package/tsconfig.json +32 -32
  108. package/webpack.cosmos.js +54 -54
  109. package/dist/assets/output-15e10f9f.css +0 -44
  110. package/dist/cjs/assets/output-15e10f9f.css +0 -44
  111. package/dist/cjs/index.cjs +0 -7723
  112. package/dist/cjs/index.cjs.map +0 -1
  113. package/dist/index.d.ts +0 -211
  114. package/dist/index.js +0 -7679
  115. package/dist/index.js.map +0 -1
@@ -1,158 +1,158 @@
1
- import { Box, css, TablePagination, useTheme } from '@mui/material'
2
- import Table from '@mui/material/Table'
3
- import TableBody from '@mui/material/TableBody'
4
- import TableCell from '@mui/material/TableCell'
5
- import TableContainer from '@mui/material/TableContainer'
6
- import TableHead from '@mui/material/TableHead'
7
- import TableRow from '@mui/material/TableRow'
8
- import * as React from 'react'
9
-
10
- import { ColumnType } from '../utilTypes'
11
- import { SeparatorIcon } from './icons'
12
-
13
- type Props<T> = {
14
- columns: ColumnType<T>[]
15
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
- rows?: any[]
17
- hideRowsPerPage?: boolean
18
- }
19
-
20
- export function HumaTable<T>({
21
- columns,
22
- rows,
23
- hideRowsPerPage = false,
24
- }: Props<T>): React.ReactElement | null {
25
- const theme = useTheme()
26
- const [page, setPage] = React.useState(0)
27
- const [rowsPerPage, setRowsPerPage] = React.useState(5)
28
- const noPagination = rows ? rows.length <= 5 : true
29
- const rowperPageOptions = hideRowsPerPage ? [] : [5, 10, 25]
30
-
31
- const styles = {
32
- tableHeader: css`
33
- font-family: 'Uni-Neue-Regular';
34
- ${theme.cssMixins.rowVCentered}
35
- font-size: 14px;
36
- color: rgba(0, 0, 0, 0.87);
37
- `,
38
- tableBody: css`
39
- font-family: 'Uni-Neue-Regular';
40
- font-size: 14px;
41
- color: rgba(0, 0, 0, 0.87);
42
- `,
43
- }
44
-
45
- const handleChangePage = (event: unknown, newPage: number) => {
46
- setPage(newPage)
47
- }
48
-
49
- const handleChangeRowsPerPage = (
50
- event: React.ChangeEvent<HTMLInputElement>,
51
- ) => {
52
- setRowsPerPage(parseInt(event.target.value, 10))
53
- setPage(0)
54
- }
55
-
56
- if (!columns) {
57
- return null
58
- }
59
-
60
- return (
61
- <>
62
- <TableContainer>
63
- <Table aria-label='simple table'>
64
- <TableHead>
65
- <TableRow>
66
- {columns.map((column) => (
67
- <TableCell key={column.title} width={column.width}>
68
- <Box css={styles.tableHeader}>
69
- {!column.noSeparator && <SeparatorIcon />}
70
- <Box
71
- component='span'
72
- sx={{ marginLeft: column.noSeparator ? '0' : '12px' }}
73
- >
74
- {column.title}
75
- </Box>
76
- </Box>
77
- </TableCell>
78
- ))}
79
- </TableRow>
80
- </TableHead>
81
- <TableBody>
82
- {rows &&
83
- rows
84
- .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
85
- .map((row) => (
86
- <TableRow key={row.id || row.name}>
87
- {columns.map((column, index) => (
88
- <TableCell
89
- // eslint-disable-next-line react/no-array-index-key
90
- key={`${column.dataIndex}-${index}`}
91
- component='th'
92
- scope='row'
93
- css={styles.tableBody}
94
- width={column.width}
95
- sx={column.style}
96
- >
97
- {column.dataIndex && (
98
- <Box
99
- component='span'
100
- sx={{
101
- display: 'flex',
102
- alignItems: 'center',
103
- marginLeft: column.noSeparator ? '0' : '12px',
104
- }}
105
- >
106
- {row[column.dataIndex]}
107
- </Box>
108
- )}
109
- {column.action && (
110
- <Box
111
- component='span'
112
- sx={{
113
- display: 'flex',
114
- alignItems: 'center',
115
- marginLeft: column.noSeparator ? '0' : '12px',
116
- lineHeight: 0,
117
- height: 0,
118
- }}
119
- >
120
- {column.action(row)}
121
- </Box>
122
- )}
123
- </TableCell>
124
- ))}
125
- </TableRow>
126
- ))}
127
- </TableBody>
128
- </Table>
129
- </TableContainer>
130
- {!noPagination && (
131
- <TablePagination
132
- size='small'
133
- sx={{
134
- '.MuiTablePagination-selectLabel': {
135
- fontSize: '12px',
136
- },
137
- '.MuiTablePagination-select': {
138
- fontSize: '12px',
139
- },
140
- '.MuiTablePagination-displayedRows': {
141
- fontSize: '12px',
142
- },
143
- '.MuiTablePagination-menuItem': {
144
- fontSize: '14px',
145
- },
146
- }}
147
- rowsPerPageOptions={rowperPageOptions}
148
- component='div'
149
- count={rows ? rows.length : 0}
150
- rowsPerPage={rowsPerPage}
151
- page={page}
152
- onPageChange={handleChangePage}
153
- onRowsPerPageChange={handleChangeRowsPerPage}
154
- />
155
- )}
156
- </>
157
- )
158
- }
1
+ import { Box, css, TablePagination, useTheme } from '@mui/material'
2
+ import Table from '@mui/material/Table'
3
+ import TableBody from '@mui/material/TableBody'
4
+ import TableCell from '@mui/material/TableCell'
5
+ import TableContainer from '@mui/material/TableContainer'
6
+ import TableHead from '@mui/material/TableHead'
7
+ import TableRow from '@mui/material/TableRow'
8
+ import * as React from 'react'
9
+
10
+ import { ColumnType } from '../utilTypes'
11
+ import { SeparatorIcon } from './icons'
12
+
13
+ type Props<T> = {
14
+ columns: ColumnType<T>[]
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ rows?: any[]
17
+ hideRowsPerPage?: boolean
18
+ }
19
+
20
+ export function HumaTable<T>({
21
+ columns,
22
+ rows,
23
+ hideRowsPerPage = false,
24
+ }: Props<T>): React.ReactElement | null {
25
+ const theme = useTheme()
26
+ const [page, setPage] = React.useState(0)
27
+ const [rowsPerPage, setRowsPerPage] = React.useState(5)
28
+ const noPagination = rows ? rows.length <= 5 : true
29
+ const rowperPageOptions = hideRowsPerPage ? [] : [5, 10, 25]
30
+
31
+ const styles = {
32
+ tableHeader: css`
33
+ font-family: 'Uni-Neue-Regular';
34
+ ${theme.cssMixins.rowVCentered}
35
+ font-size: 14px;
36
+ color: rgba(0, 0, 0, 0.87);
37
+ `,
38
+ tableBody: css`
39
+ font-family: 'Uni-Neue-Regular';
40
+ font-size: 14px;
41
+ color: rgba(0, 0, 0, 0.87);
42
+ `,
43
+ }
44
+
45
+ const handleChangePage = (event: unknown, newPage: number) => {
46
+ setPage(newPage)
47
+ }
48
+
49
+ const handleChangeRowsPerPage = (
50
+ event: React.ChangeEvent<HTMLInputElement>,
51
+ ) => {
52
+ setRowsPerPage(parseInt(event.target.value, 10))
53
+ setPage(0)
54
+ }
55
+
56
+ if (!columns) {
57
+ return null
58
+ }
59
+
60
+ return (
61
+ <>
62
+ <TableContainer>
63
+ <Table aria-label='simple table'>
64
+ <TableHead>
65
+ <TableRow>
66
+ {columns.map((column) => (
67
+ <TableCell key={column.title} width={column.width}>
68
+ <Box css={styles.tableHeader}>
69
+ {!column.noSeparator && <SeparatorIcon />}
70
+ <Box
71
+ component='span'
72
+ sx={{ marginLeft: column.noSeparator ? '0' : '12px' }}
73
+ >
74
+ {column.title}
75
+ </Box>
76
+ </Box>
77
+ </TableCell>
78
+ ))}
79
+ </TableRow>
80
+ </TableHead>
81
+ <TableBody>
82
+ {rows &&
83
+ rows
84
+ .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
85
+ .map((row) => (
86
+ <TableRow key={row.id || row.name}>
87
+ {columns.map((column, index) => (
88
+ <TableCell
89
+ // eslint-disable-next-line react/no-array-index-key
90
+ key={`${column.dataIndex}-${index}`}
91
+ component='th'
92
+ scope='row'
93
+ css={styles.tableBody}
94
+ width={column.width}
95
+ sx={column.style}
96
+ >
97
+ {column.dataIndex && (
98
+ <Box
99
+ component='span'
100
+ sx={{
101
+ display: 'flex',
102
+ alignItems: 'center',
103
+ marginLeft: column.noSeparator ? '0' : '12px',
104
+ }}
105
+ >
106
+ {row[column.dataIndex]}
107
+ </Box>
108
+ )}
109
+ {column.action && (
110
+ <Box
111
+ component='span'
112
+ sx={{
113
+ display: 'flex',
114
+ alignItems: 'center',
115
+ marginLeft: column.noSeparator ? '0' : '12px',
116
+ lineHeight: 0,
117
+ height: 0,
118
+ }}
119
+ >
120
+ {column.action(row)}
121
+ </Box>
122
+ )}
123
+ </TableCell>
124
+ ))}
125
+ </TableRow>
126
+ ))}
127
+ </TableBody>
128
+ </Table>
129
+ </TableContainer>
130
+ {!noPagination && (
131
+ <TablePagination
132
+ size='small'
133
+ sx={{
134
+ '.MuiTablePagination-selectLabel': {
135
+ fontSize: '12px',
136
+ },
137
+ '.MuiTablePagination-select': {
138
+ fontSize: '12px',
139
+ },
140
+ '.MuiTablePagination-displayedRows': {
141
+ fontSize: '12px',
142
+ },
143
+ '.MuiTablePagination-menuItem': {
144
+ fontSize: '14px',
145
+ },
146
+ }}
147
+ rowsPerPageOptions={rowperPageOptions}
148
+ component='div'
149
+ count={rows ? rows.length : 0}
150
+ rowsPerPage={rowsPerPage}
151
+ page={page}
152
+ onPageChange={handleChangePage}
153
+ onRowsPerPageChange={handleChangeRowsPerPage}
154
+ />
155
+ )}
156
+ </>
157
+ )
158
+ }
@@ -25,51 +25,45 @@ export function ChooseAmount({
25
25
  const { creditRecord } = accountStats
26
26
  const [chargedFees, setChargedFees] = useState(0)
27
27
  const [currentAmount, setCurrentAmount] = useState(0)
28
- const { approveInfo } = useAppSelector(selectWidgetState)
28
+ const { approval } = useAppSelector(selectWidgetState)
29
29
  const { getFeesCharged } = useFeeManager(poolInfo.poolName, poolInfo.poolType)
30
- const [remainder, setRemainder] = useState(approveInfo!.receivableAmount)
30
+ const [remainder, setRemainder] = useState(approval!.receivable?.amount)
31
31
 
32
32
  const getAvailableCreditLimit = () => {
33
- if (approveInfo && creditRecord) {
33
+ if (approval && creditRecord) {
34
34
  const principal = creditRecord.unbilledPrincipal
35
35
  .add(creditRecord.totalDue)
36
36
  .sub(creditRecord.feesAndInterestDue)
37
37
  .toNumber()
38
- return Number(approveInfo.creditLimit) - principal
38
+ return Number(approval.terms.creditLimit) - principal
39
39
  }
40
40
  return 0
41
41
  }
42
42
 
43
43
  const handleChangeAmount = useCallback(
44
44
  (newAmount: number) => {
45
- if (approveInfo) {
45
+ if (approval) {
46
46
  setCurrentAmount(newAmount)
47
47
  setChargedFees(getFeesCharged(newAmount))
48
- setRemainder(Number(approveInfo.receivableAmount) - newAmount)
48
+ setRemainder(Number(approval.receivable!.amount) - newAmount)
49
49
  }
50
50
  },
51
- [approveInfo, getFeesCharged],
51
+ [approval, getFeesCharged],
52
52
  )
53
53
 
54
54
  const handleAction = useCallback(() => {
55
55
  dispatch(
56
56
  setBorrowInfo({
57
57
  borrowAmount: currentAmount,
58
- borrowAmountBN: upScale(currentAmount, approveInfo?.tokenDecimal),
58
+ borrowAmountBN: upScale(currentAmount, approval?.token.decimal),
59
59
  chargedFees,
60
60
  remainder: Number(remainder!),
61
61
  nextStep: WIDGET_STEP.ConfirmTransfer,
62
62
  }),
63
63
  )
64
- }, [
65
- approveInfo?.tokenDecimal,
66
- chargedFees,
67
- currentAmount,
68
- dispatch,
69
- remainder,
70
- ])
64
+ }, [approval?.token.decimal, chargedFees, currentAmount, dispatch, remainder])
71
65
 
72
- if (!approveInfo) {
66
+ if (!approval) {
73
67
  return null
74
68
  }
75
69
 
@@ -80,11 +74,11 @@ export function ChooseAmount({
80
74
  description2='The remainder will be sent to your wallet when the invoice is paid'
81
75
  sliderMax={getAvailableCreditLimit()}
82
76
  currentAmount={currentAmount}
83
- tokenSymbol={approveInfo.tokenSymbol}
77
+ tokenSymbol={approval.token.symbol}
84
78
  topLeft='Fees'
85
- topRight={`${chargedFees} ${approveInfo.tokenSymbol}`}
79
+ topRight={`${chargedFees} ${approval.token.symbol}`}
86
80
  downLeft='Remainder'
87
- downRight={`${remainder} ${approveInfo.tokenSymbol}`}
81
+ downRight={`${remainder} ${approval.token.symbol}`}
88
82
  handleChangeAmount={handleChangeAmount}
89
83
  handleAction={handleAction}
90
84
  />
@@ -11,7 +11,7 @@ import { WIDGET_STEP } from '../../../store/widgets.store'
11
11
  export function ConfirmTransfer(): React.ReactElement | null {
12
12
  const theme = useTheme()
13
13
  const dispatch = useAppDispatch()
14
- const { borrowAmountNet, approveInfo } = useAppSelector(selectWidgetState)
14
+ const { borrowAmountNet, approval } = useAppSelector(selectWidgetState)
15
15
 
16
16
  const styles = {
17
17
  wrapper: css`
@@ -70,7 +70,7 @@ export function ConfirmTransfer(): React.ReactElement | null {
70
70
  dispatch(setStep(WIDGET_STEP.ApproveNFT))
71
71
  }
72
72
 
73
- if (isEmpty(borrowAmountNet) || isEmpty(approveInfo)) {
73
+ if (isEmpty(borrowAmountNet) || isEmpty(approval)) {
74
74
  return null
75
75
  }
76
76
 
@@ -90,7 +90,7 @@ export function ConfirmTransfer(): React.ReactElement | null {
90
90
  </Box>
91
91
  <Box css={styles.transfer}>
92
92
  <Box>
93
- {borrowAmountNet!} {approveInfo?.tokenSymbol}
93
+ {borrowAmountNet!} {approval?.token.symbol}
94
94
  </Box>
95
95
  <ArrowForwardIosIcon css={styles.arrow} />
96
96
  <Box>You</Box>
@@ -1,20 +1,20 @@
1
- import React from 'react'
2
- import { useAppSelector } from '../../../hooks/useRedux'
3
- import { selectWidgetState } from '../../../store/widgets.selectors'
4
- import { TxDoneModal } from '../../TxDoneModal'
5
-
6
- type Props = {
7
- handleAction: () => void
8
- }
9
-
10
- export function Success({ handleAction }: Props): React.ReactElement {
11
- const { borrowAmountNet, remainder, approveInfo } =
12
- useAppSelector(selectWidgetState)
13
-
14
- const content = [
15
- `${borrowAmountNet} ${approveInfo?.tokenSymbol} is now in your wallet.`,
16
- `The remaining ${remainder} ${approveInfo?.tokenSymbol} will be sent to your wallet when the invoice is paid.`,
17
- ]
18
-
19
- return <TxDoneModal handleAction={handleAction} content={content} />
20
- }
1
+ import React from 'react'
2
+ import { useAppSelector } from '../../../hooks/useRedux'
3
+ import { selectWidgetState } from '../../../store/widgets.selectors'
4
+ import { TxDoneModal } from '../../TxDoneModal'
5
+
6
+ type Props = {
7
+ handleAction: () => void
8
+ }
9
+
10
+ export function Success({ handleAction }: Props): React.ReactElement {
11
+ const { borrowAmountNet, remainder, approval } =
12
+ useAppSelector(selectWidgetState)
13
+
14
+ const content = [
15
+ `${borrowAmountNet} ${approval?.token.symbol} is now in your wallet.`,
16
+ `The remaining ${remainder} ${approval?.token.symbol} will be sent to your wallet when the invoice is paid.`,
17
+ ]
18
+
19
+ return <TxDoneModal handleAction={handleAction} content={content} />
20
+ }
@@ -11,7 +11,7 @@ import { WIDGET_STEP } from '../../../store/widgets.store'
11
11
  export function ConfirmTransfer(): React.ReactElement | null {
12
12
  const theme = useTheme()
13
13
  const dispatch = useAppDispatch()
14
- const { borrowAmountNet, approveInfo } = useAppSelector(selectWidgetState)
14
+ const { borrowAmountNet, approval } = useAppSelector(selectWidgetState)
15
15
 
16
16
  const styles = {
17
17
  wrapper: css`
@@ -70,7 +70,7 @@ export function ConfirmTransfer(): React.ReactElement | null {
70
70
  dispatch(setStep(WIDGET_STEP.ApproveNFT))
71
71
  }
72
72
 
73
- if (isEmpty(borrowAmountNet) || isEmpty(approveInfo)) {
73
+ if (isEmpty(borrowAmountNet) || isEmpty(approval)) {
74
74
  return null
75
75
  }
76
76
 
@@ -90,7 +90,7 @@ export function ConfirmTransfer(): React.ReactElement | null {
90
90
  </Box>
91
91
  <Box css={styles.transfer}>
92
92
  <Box>
93
- {borrowAmountNet!} {approveInfo?.tokenSymbol}
93
+ {borrowAmountNet!} {approval?.token.symbol}
94
94
  </Box>
95
95
  <ArrowForwardIosIcon css={styles.arrow} />
96
96
  <Box>You</Box>
@@ -1,49 +1,49 @@
1
- import { Box, css, useTheme } from '@mui/material'
2
- import React from 'react'
3
- import { HumaLoading } from './HumaLoading'
4
-
5
- import { WrapperModal } from './WrapperModal'
6
-
7
- type Props = {
8
- title: string
9
- description?: string
10
- hideLoader?: boolean
11
- children?: React.ReactNode
12
- }
13
-
14
- export function LoadingModal({
15
- title,
16
- description,
17
- hideLoader = false,
18
- children,
19
- }: Props): React.ReactElement {
20
- const theme = useTheme()
21
-
22
- const styles = {
23
- loader: css`
24
- width: 100%;
25
- ${theme.cssMixins.rowHCentered};
26
- position: absolute;
27
- top: 50%;
28
- transform: translateY(-50%);
29
- `,
30
- bottom: css`
31
- & .MuiButtonBase-root {
32
- width: 100%;
33
- position: absolute;
34
- bottom: 0;
35
- }
36
- `,
37
- }
38
-
39
- return (
40
- <WrapperModal title={title} subTitle={description}>
41
- {!hideLoader && (
42
- <Box css={styles.loader}>
43
- <HumaLoading />
44
- </Box>
45
- )}
46
- <Box css={styles.bottom}>{children}</Box>
47
- </WrapperModal>
48
- )
49
- }
1
+ import { Box, css, useTheme } from '@mui/material'
2
+ import React from 'react'
3
+ import { HumaLoading } from './HumaLoading'
4
+
5
+ import { WrapperModal } from './WrapperModal'
6
+
7
+ type Props = {
8
+ title: string
9
+ description?: string
10
+ hideLoader?: boolean
11
+ children?: React.ReactNode
12
+ }
13
+
14
+ export function LoadingModal({
15
+ title,
16
+ description,
17
+ hideLoader = false,
18
+ children,
19
+ }: Props): React.ReactElement {
20
+ const theme = useTheme()
21
+
22
+ const styles = {
23
+ loader: css`
24
+ width: 100%;
25
+ ${theme.cssMixins.rowHCentered};
26
+ position: absolute;
27
+ top: 50%;
28
+ transform: translateY(-50%);
29
+ `,
30
+ bottom: css`
31
+ & .MuiButtonBase-root {
32
+ width: 100%;
33
+ position: absolute;
34
+ bottom: 0;
35
+ }
36
+ `,
37
+ }
38
+
39
+ return (
40
+ <WrapperModal title={title} subTitle={description}>
41
+ {!hideLoader && (
42
+ <Box css={styles.loader}>
43
+ <HumaLoading />
44
+ </Box>
45
+ )}
46
+ <Box css={styles.bottom}>{children}</Box>
47
+ </WrapperModal>
48
+ )
49
+ }
@@ -23,17 +23,17 @@ export function ChooseAmount({
23
23
  currentFlowRate,
24
24
  }: Props): React.ReactElement | null {
25
25
  const dispatch = useAppDispatch()
26
- const { approveInfo } = useAppSelector(selectWidgetState)
26
+ const { approval } = useAppSelector(selectWidgetState)
27
27
  const { getFeesCharged } = useFeeManager(poolInfo.poolName, poolInfo.poolType)
28
28
  const [chargedFees, setChargedFees] = useState(0)
29
29
  const [currentAmount, setCurrentAmount] = useState(0)
30
- const borrowPeriodInSeconds = approveInfo!.intervalInDays * 24 * 60 * 60
30
+ const borrowPeriodInSeconds = approval!.terms.intervalInDays * 24 * 60 * 60
31
31
 
32
32
  const getBorrowFlowrateAndAmount = useCallback(
33
33
  (borrowAmount: number) => {
34
34
  const currentFlowRateBN = toBigNumber(currentFlowRate)
35
35
  const borrowAmountBN = toBigNumber(
36
- upScale(borrowAmount, approveInfo!.tokenDecimal),
36
+ upScale(borrowAmount, approval!.token.decimal),
37
37
  )
38
38
 
39
39
  const totalAmountInBorrowPeriod = currentFlowRateBN.mul(
@@ -56,7 +56,7 @@ export function ChooseAmount({
56
56
  .div(currentFlowRateBN)
57
57
  const newBorrowAmount = downScale(
58
58
  newBorrowAmountBN,
59
- approveInfo!.tokenDecimal,
59
+ approval!.token.decimal,
60
60
  )
61
61
 
62
62
  return {
@@ -65,17 +65,17 @@ export function ChooseAmount({
65
65
  borrowAmountBN: newBorrowAmountBN.toString(),
66
66
  }
67
67
  },
68
- [approveInfo, borrowPeriodInSeconds, currentFlowRate],
68
+ [approval, borrowPeriodInSeconds, currentFlowRate],
69
69
  )
70
70
 
71
71
  const handleChangeAmount = useCallback(
72
72
  (newAmount: number) => {
73
- if (approveInfo) {
73
+ if (approval) {
74
74
  setCurrentAmount(newAmount)
75
75
  setChargedFees(getFeesCharged(newAmount))
76
76
  }
77
77
  },
78
- [approveInfo, getFeesCharged],
78
+ [approval, getFeesCharged],
79
79
  )
80
80
  const handleAction = useCallback(() => {
81
81
  const { borrowFlowrate, borrowAmount, borrowAmountBN } =
@@ -103,7 +103,7 @@ export function ChooseAmount({
103
103
  getBorrowFlowrateAndAmount,
104
104
  ])
105
105
 
106
- if (!approveInfo) {
106
+ if (!approval) {
107
107
  return null
108
108
  }
109
109
 
@@ -111,11 +111,11 @@ export function ChooseAmount({
111
111
  <ChooseAmountModal
112
112
  title='Choose Amount'
113
113
  description1='Access up to 100% of your stream flowrate'
114
- sliderMax={Number(approveInfo.creditLimit)}
114
+ sliderMax={Number(approval.terms.creditLimit)}
115
115
  currentAmount={currentAmount}
116
- tokenSymbol={approveInfo.tokenSymbol}
116
+ tokenSymbol={approval.token.symbol}
117
117
  topLeft='Fees'
118
- topRight={`${chargedFees} ${approveInfo.tokenSymbol}`}
118
+ topRight={`${chargedFees} ${approval.token.symbol}`}
119
119
  handleChangeAmount={handleChangeAmount}
120
120
  handleAction={handleAction}
121
121
  actionText='Confirm Transfer'