@huma-finance/widgets 0.0.37 → 0.0.38-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) 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 +404 -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/jsdoc2md.json +20 -20
  19. package/package.json +5 -5
  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/Activity.tsx +128 -128
  25. package/src/components/ApolloWrapper.tsx +15 -15
  26. package/src/components/ApproveAllowanceModal.tsx +138 -138
  27. package/src/components/BottomButton.tsx +33 -33
  28. package/src/components/ChainNotSupportedModal.tsx +33 -33
  29. package/src/components/ChooseAmountModal.tsx +322 -322
  30. package/src/components/ConfirmTransferModal.tsx +153 -153
  31. package/src/components/CreditLine/approve/1-ApproveAllowance.tsx +34 -34
  32. package/src/components/CreditLine/approve/2-Success.tsx +43 -43
  33. package/src/components/CreditLine/approve/index.tsx +85 -85
  34. package/src/components/CreditLine/borrow/1-Evaluation.tsx +157 -157
  35. package/src/components/CreditLine/borrow/2-ChooseAmount.tsx +74 -74
  36. package/src/components/CreditLine/borrow/3-ApproveAllowance.tsx +29 -29
  37. package/src/components/CreditLine/borrow/4-Transfer.tsx +34 -34
  38. package/src/components/CreditLine/borrow/5-Success.tsx +38 -38
  39. package/src/components/CreditLine/borrow/6-Notifications.tsx +10 -10
  40. package/src/components/CreditLine/borrow/index.tsx +136 -136
  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 +136 -136
  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/HumaSnackBar.tsx +60 -60
  52. package/src/components/HumaTable.tsx +203 -203
  53. package/src/components/InvoiceFactoring/borrow/1-Evaluation.tsx +49 -49
  54. package/src/components/InvoiceFactoring/borrow/2-ChooseAmount.tsx +88 -88
  55. package/src/components/InvoiceFactoring/borrow/3-ConfirmTransfer.tsx +37 -37
  56. package/src/components/InvoiceFactoring/borrow/4-ApproveNFT.tsx +55 -55
  57. package/src/components/InvoiceFactoring/borrow/5-Transfer.tsx +34 -34
  58. package/src/components/InvoiceFactoring/borrow/6-Success.tsx +20 -20
  59. package/src/components/InvoiceFactoring/borrow/index.tsx +94 -94
  60. package/src/components/InvoiceFactoring/payment/1-ChooseAmount.tsx +67 -67
  61. package/src/components/InvoiceFactoring/payment/2-ApproveAllowance.tsx +23 -23
  62. package/src/components/InvoiceFactoring/payment/3-Transfer.tsx +34 -34
  63. package/src/components/InvoiceFactoring/payment/4-Success.tsx +23 -23
  64. package/src/components/InvoiceFactoring/payment/index.tsx +86 -86
  65. package/src/components/Lend/supply/1-Evaluation/EvaluationEA.tsx +90 -90
  66. package/src/components/Lend/supply/1-Evaluation/EvaluationKYC.tsx +319 -319
  67. package/src/components/Lend/supply/1-Evaluation/index.tsx +31 -31
  68. package/src/components/Lend/supply/2-ChooseAmount.tsx +69 -69
  69. package/src/components/Lend/supply/3-ApproveAllowance.tsx +25 -25
  70. package/src/components/Lend/supply/4-Transfer.tsx +32 -32
  71. package/src/components/Lend/supply/5-Success.tsx +60 -60
  72. package/src/components/Lend/supply/6-Notifications.tsx +10 -10
  73. package/src/components/Lend/supply/index.tsx +167 -167
  74. package/src/components/Lend/withdraw/1-CheckWithdrawble.tsx +73 -73
  75. package/src/components/Lend/withdraw/2-ChooseAmount.tsx +50 -50
  76. package/src/components/Lend/withdraw/3-Transfer.tsx +32 -32
  77. package/src/components/Lend/withdraw/4-Success.tsx +49 -49
  78. package/src/components/Lend/withdraw/index.tsx +101 -101
  79. package/src/components/LoadingModal.tsx +49 -49
  80. package/src/components/Notifi/NotifiSubscriptionModal.tsx +268 -268
  81. package/src/components/StreamFactoring/borrow/1-Evaluation.tsx +55 -55
  82. package/src/components/StreamFactoring/borrow/2-ChooseAmount.tsx +127 -127
  83. package/src/components/StreamFactoring/borrow/3-ConfirmTransfer.tsx +42 -42
  84. package/src/components/StreamFactoring/borrow/4-ApproveAllowance.tsx +33 -33
  85. package/src/components/StreamFactoring/borrow/5-Permit.tsx +144 -144
  86. package/src/components/StreamFactoring/borrow/6-Transfer.tsx +37 -37
  87. package/src/components/StreamFactoring/borrow/7-Success.tsx +20 -20
  88. package/src/components/StreamFactoring/borrow/index.tsx +94 -94
  89. package/src/components/StreamFactoring/payment/ChooseAmount.tsx +54 -54
  90. package/src/components/StreamFactoring/payment/Success.tsx +23 -23
  91. package/src/components/StreamFactoring/payment/Transfer.tsx +34 -34
  92. package/src/components/StreamFactoring/payment/index.tsx +66 -66
  93. package/src/components/SuperfluidFactoring/SuperfluidFactoredList.tsx +69 -69
  94. package/src/components/SuperfluidFactoring/SuperfluidUpcomingList.tsx +166 -166
  95. package/src/components/SuperfluidFactoring/index.tsx +85 -85
  96. package/src/components/TxDoneModal.tsx +85 -85
  97. package/src/components/TxSendModal.tsx +59 -59
  98. package/src/components/ViewOnExplorer.tsx +23 -23
  99. package/src/components/WidgetWrapper.tsx +74 -74
  100. package/src/components/WrapperModal.tsx +54 -54
  101. package/src/components/buttons/TableActionButton.tsx +36 -36
  102. package/src/components/buttons/index.ts +1 -1
  103. package/src/components/humaModal/HumaModal.tsx +68 -68
  104. package/src/components/humaModal/HumaModalHeader.tsx +70 -70
  105. package/src/components/humaModal/index.tsx +2 -2
  106. package/src/components/icons/approve-lender.svg +58 -58
  107. package/src/components/icons/auto-payback.svg +139 -139
  108. package/src/components/icons/check-circle.svg +3 -3
  109. package/src/components/icons/check-green.svg +3 -3
  110. package/src/components/icons/check.svg +10 -10
  111. package/src/components/icons/donut.svg +904 -904
  112. package/src/components/icons/ellipse.svg +3 -3
  113. package/src/components/icons/huma-full.svg +22 -22
  114. package/src/components/icons/huma.svg +15 -15
  115. package/src/components/icons/index.tsx +93 -93
  116. package/src/components/icons/loader.svg +229 -229
  117. package/src/components/icons/metamask.svg +31 -31
  118. package/src/components/icons/polygon.svg +16 -16
  119. package/src/components/icons/receipt.svg +3 -3
  120. package/src/components/icons/separator.svg +3 -3
  121. package/src/components/icons/sorry.svg +17 -17
  122. package/src/components/icons/usdc.svg +5 -5
  123. package/src/components/icons/wallet-connect.svg +11 -11
  124. package/src/components/images/index.ts +3 -3
  125. package/src/cosmos/CreditLineBorrow.fixture.tsx +86 -86
  126. package/src/cosmos/CreditLinePayment.fixture.tsx +50 -50
  127. package/src/cosmos/InvoiceFactoringBorrow.fixture.tsx +111 -111
  128. package/src/cosmos/InvoiceFactoringPayment.fixture.tsx +67 -67
  129. package/src/cosmos/LendSupply.fixture.tsx +75 -75
  130. package/src/cosmos/LendWithdraw.fixture.tsx +43 -43
  131. package/src/cosmos/SDKTesting.fixture.tsx +616 -616
  132. package/src/cosmos/SuperfluidFactoringBorrow.fixture.tsx +15 -15
  133. package/src/cosmos/WalletWrapper.tsx +52 -52
  134. package/src/cosmos/abis/InvoiceNFT.json +644 -644
  135. package/src/cosmos/abis/ReceivableFactoringPool.json +1529 -1529
  136. package/src/cosmos/utils/env.ts +6 -6
  137. package/src/cosmos/utils/index.ts +169 -169
  138. package/src/fonts/Recoleta/Recoleta-Black.otf +0 -0
  139. package/src/fonts/Recoleta/Recoleta-Bold.otf +0 -0
  140. package/src/fonts/Recoleta/Recoleta-Light.otf +0 -0
  141. package/src/fonts/Recoleta/Recoleta-Medium.otf +0 -0
  142. package/src/fonts/Recoleta/Recoleta-Regular.otf +0 -0
  143. package/src/fonts/Recoleta/Recoleta-RegularDEMO.otf +0 -0
  144. package/src/fonts/Recoleta/Recoleta-SemiBold.otf +0 -0
  145. package/src/fonts/Recoleta/Recoleta-Thin.otf +0 -0
  146. package/src/hooks/useEA.ts +53 -53
  147. package/src/hooks/useElementDimensions.ts +30 -30
  148. package/src/hooks/useNotifi.ts +71 -71
  149. package/src/hooks/useRedux.ts +6 -6
  150. package/src/index.css +61 -61
  151. package/src/index.tsx +283 -283
  152. package/src/react-app-env.d.ts +1 -1
  153. package/src/reportWebVitals.ts +15 -15
  154. package/src/setupTests.ts +6 -6
  155. package/src/store/index.ts +27 -27
  156. package/src/store/widgets.reducers.ts +120 -120
  157. package/src/store/widgets.selectors.ts +3 -3
  158. package/src/store/widgets.store.ts +55 -55
  159. package/src/theme/breakpoints.ts +10 -10
  160. package/src/theme/components.ts +70 -70
  161. package/src/theme/coreThemeConstants.ts +29 -29
  162. package/src/theme/cssMixins.ts +92 -92
  163. package/src/theme/hooks/useGetSizes.ts +31 -31
  164. package/src/theme/index.ts +24 -24
  165. package/src/theme/palette.ts +150 -150
  166. package/src/theme/shape.ts +7 -7
  167. package/src/theme/theme.types.ts +80 -80
  168. package/src/theme/typography.ts +117 -117
  169. package/src/utilTypes.d.ts +30 -30
  170. package/src/utils/env.ts +10 -10
  171. package/tsconfig.build.json +7 -7
  172. package/tsconfig.json +32 -32
  173. package/webpack.cosmos.js +54 -54
  174. package/dist/assets/output-15e10f9f.css +0 -44
  175. package/dist/cjs/assets/output-15e10f9f.css +0 -44
  176. package/dist/cjs/index.cjs +0 -7742
  177. package/dist/cjs/index.cjs.map +0 -1
  178. package/dist/index.d.ts +0 -246
  179. package/dist/index.js +0 -7696
  180. package/dist/index.js.map +0 -1
@@ -1,60 +1,60 @@
1
- import { css } from '@emotion/react'
2
- import { Alert, Box, Snackbar } from '@mui/material'
3
-
4
- type Props = {
5
- open: boolean
6
- title: string
7
- message: string
8
- severity: 'success' | 'info' | 'warning' | 'error'
9
- autoHideDuration?: number
10
- onClose: () => void
11
- }
12
-
13
- export function HumaSnackBar({
14
- open,
15
- autoHideDuration,
16
- title,
17
- message,
18
- severity,
19
- onClose,
20
- }: Props) {
21
- const styles = {
22
- snackbar: css`
23
- margin-top: 80px;
24
- `,
25
- alert: css`
26
- max-width: 400px;
27
- padding: 20px 35px 20px 20px;
28
- border-radius: 16px;
29
- overflow: hidden;
30
- `,
31
- title: css`
32
- margin-bottom: 10px;
33
- font-size: 16px;
34
- font-family: 'Uni-Neue-Bold';
35
- `,
36
- message: css`
37
- font-size: 15px;
38
- font-family: 'Uni-Neue-Regular';
39
- `,
40
- }
41
-
42
- return (
43
- <Snackbar
44
- open={open}
45
- autoHideDuration={autoHideDuration ?? 6000}
46
- onClose={onClose}
47
- css={styles.snackbar}
48
- >
49
- <Alert
50
- onClose={onClose}
51
- title={title}
52
- severity={severity}
53
- css={styles.alert}
54
- >
55
- <Box css={styles.title}>{title}</Box>
56
- <Box css={styles.message}>{message}</Box>
57
- </Alert>
58
- </Snackbar>
59
- )
60
- }
1
+ import { css } from '@emotion/react'
2
+ import { Alert, Box, Snackbar } from '@mui/material'
3
+
4
+ type Props = {
5
+ open: boolean
6
+ title: string
7
+ message: string
8
+ severity: 'success' | 'info' | 'warning' | 'error'
9
+ autoHideDuration?: number
10
+ onClose: () => void
11
+ }
12
+
13
+ export function HumaSnackBar({
14
+ open,
15
+ autoHideDuration,
16
+ title,
17
+ message,
18
+ severity,
19
+ onClose,
20
+ }: Props) {
21
+ const styles = {
22
+ snackbar: css`
23
+ margin-top: 80px;
24
+ `,
25
+ alert: css`
26
+ max-width: 400px;
27
+ padding: 20px 35px 20px 20px;
28
+ border-radius: 16px;
29
+ overflow: hidden;
30
+ `,
31
+ title: css`
32
+ margin-bottom: 10px;
33
+ font-size: 16px;
34
+ font-family: 'Uni-Neue-Bold';
35
+ `,
36
+ message: css`
37
+ font-size: 15px;
38
+ font-family: 'Uni-Neue-Regular';
39
+ `,
40
+ }
41
+
42
+ return (
43
+ <Snackbar
44
+ open={open}
45
+ autoHideDuration={autoHideDuration ?? 6000}
46
+ onClose={onClose}
47
+ css={styles.snackbar}
48
+ >
49
+ <Alert
50
+ onClose={onClose}
51
+ title={title}
52
+ severity={severity}
53
+ css={styles.alert}
54
+ >
55
+ <Box css={styles.title}>{title}</Box>
56
+ <Box css={styles.message}>{message}</Box>
57
+ </Alert>
58
+ </Snackbar>
59
+ )
60
+ }
@@ -1,203 +1,203 @@
1
- import { Box, css, Skeleton, 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 { useElementDimensions } from '../hooks/useElementDimensions'
11
- import { ColumnType } from '../utilTypes'
12
- import { SeparatorIcon } from './icons'
13
-
14
- type Props<T> = {
15
- columns: ColumnType<T>[]
16
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
- rows?: any[]
18
- hideRowsPerPage?: boolean
19
- }
20
-
21
- // @TODO: Move HumaTable along with Superfluid widget to Dapp package
22
- export function HumaTable<T>({
23
- columns,
24
- rows,
25
- hideRowsPerPage = false,
26
- }: Props<T>): React.ReactElement | null {
27
- const theme = useTheme()
28
- const ref = React.useRef()
29
- const [page, setPage] = React.useState(0)
30
- const [rowsPerPage, setRowsPerPage] = React.useState(5)
31
- const noPagination = rows ? rows.length <= 5 : true
32
- const rowPerPageOptions = hideRowsPerPage ? [] : [5, 10, 25]
33
- const { width } = useElementDimensions(ref)
34
- const isLoading = !columns || !rows
35
-
36
- const styles = {
37
- tableHeader: css`
38
- font-family: 'Uni-Neue-Regular';
39
- ${theme.cssMixins.rowVCentered}
40
- font-size: 14px;
41
- color: rgba(0, 0, 0, 0.87);
42
- `,
43
- tableBody: css`
44
- font-family: 'Uni-Neue-Regular';
45
- font-size: 14px;
46
- color: rgba(0, 0, 0, 0.87);
47
- `,
48
- empty: css`
49
- display: flex;
50
- flex-direction: column;
51
- align-items: center;
52
- margin-top: 20px;
53
- font-family: 'Uni-Neue-Regular';
54
- font-size: 14px;
55
- `,
56
- }
57
-
58
- const handleChangePage = (event: unknown, newPage: number) => {
59
- setPage(newPage)
60
- }
61
-
62
- const handleChangeRowsPerPage = (
63
- event: React.ChangeEvent<HTMLInputElement>,
64
- ) => {
65
- setRowsPerPage(parseInt(event.target.value, 10))
66
- setPage(0)
67
- }
68
-
69
- const getTableHeader = () => (
70
- <TableHead>
71
- <TableRow>
72
- {columns.map((column, index) => (
73
- <TableCell key={column.title} width={column.width}>
74
- <Box css={styles.tableHeader}>
75
- {index !== 0 && <SeparatorIcon />}
76
- <Box component='span' sx={{ marginLeft: index ? '12px' : '0' }}>
77
- {column.title}
78
- </Box>
79
- </Box>
80
- </TableCell>
81
- ))}
82
- </TableRow>
83
- </TableHead>
84
- )
85
-
86
- if (isLoading) {
87
- return (
88
- <Box ref={ref}>
89
- <Box sx={{ width }}>
90
- <Skeleton />
91
- <Skeleton />
92
- <Skeleton />
93
- </Box>
94
- </Box>
95
- )
96
- }
97
-
98
- if (rows.length === 0) {
99
- return (
100
- <TableContainer>
101
- <Table aria-label='simple table'>{getTableHeader()}</Table>
102
- <Box css={styles.empty}>
103
- <Box>No Data</Box>
104
- </Box>
105
- </TableContainer>
106
- )
107
- }
108
-
109
- return (
110
- <>
111
- <TableContainer>
112
- <Table aria-label='simple table'>
113
- {getTableHeader()}
114
- <TableBody>
115
- {rows
116
- .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
117
- .map((row) => (
118
- <TableRow key={row.id || row.name}>
119
- {columns.map((column, index) => (
120
- <TableCell
121
- // eslint-disable-next-line react/no-array-index-key
122
- key={`${column.dataIndex}-${index}`}
123
- component='th'
124
- scope='row'
125
- css={styles.tableBody}
126
- width={column.width}
127
- sx={column.style}
128
- >
129
- {column.dataIndex && (
130
- <Box
131
- component='span'
132
- sx={{
133
- display: 'flex',
134
- alignItems: 'center',
135
- marginLeft: index ? '12px' : '0',
136
- }}
137
- >
138
- {row[column.dataIndex]}
139
- </Box>
140
- )}
141
- {column.action && (
142
- <Box
143
- component='span'
144
- sx={{
145
- display: 'flex',
146
- alignItems: 'center',
147
- marginLeft: index ? '12px' : '0',
148
- lineHeight: 0,
149
- height: 0,
150
- }}
151
- >
152
- {column.action(row)}
153
- </Box>
154
- )}
155
- </TableCell>
156
- ))}
157
- </TableRow>
158
- ))}
159
- </TableBody>
160
- </Table>
161
- </TableContainer>
162
- {!noPagination && (
163
- <TablePagination
164
- size='small'
165
- sx={{
166
- '.MuiTablePagination-selectLabel': {
167
- fontSize: '12px',
168
- },
169
- '.MuiTablePagination-select': {
170
- fontSize: '12px',
171
- },
172
- '.MuiTablePagination-displayedRows': {
173
- fontSize: '12px',
174
- },
175
- '.MuiTablePagination-menuItem': {
176
- fontSize: '14px',
177
- },
178
- }}
179
- rowsPerPageOptions={rowPerPageOptions}
180
- component='div'
181
- count={rows ? rows.length : 0}
182
- rowsPerPage={rowsPerPage}
183
- page={page}
184
- onPageChange={handleChangePage}
185
- onRowsPerPageChange={handleChangeRowsPerPage}
186
- SelectProps={{
187
- MenuProps: {
188
- sx: {
189
- '.MuiTablePagination-menuItem': {
190
- padding: '4px 0',
191
- display: 'flex',
192
- justifyContent: 'center',
193
- fontSize: '14px',
194
- lineHeight: '1.2',
195
- },
196
- },
197
- },
198
- }}
199
- />
200
- )}
201
- </>
202
- )
203
- }
1
+ import { Box, css, Skeleton, 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 { useElementDimensions } from '../hooks/useElementDimensions'
11
+ import { ColumnType } from '../utilTypes'
12
+ import { SeparatorIcon } from './icons'
13
+
14
+ type Props<T> = {
15
+ columns: ColumnType<T>[]
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ rows?: any[]
18
+ hideRowsPerPage?: boolean
19
+ }
20
+
21
+ // @TODO: Move HumaTable along with Superfluid widget to Dapp package
22
+ export function HumaTable<T>({
23
+ columns,
24
+ rows,
25
+ hideRowsPerPage = false,
26
+ }: Props<T>): React.ReactElement | null {
27
+ const theme = useTheme()
28
+ const ref = React.useRef()
29
+ const [page, setPage] = React.useState(0)
30
+ const [rowsPerPage, setRowsPerPage] = React.useState(5)
31
+ const noPagination = rows ? rows.length <= 5 : true
32
+ const rowPerPageOptions = hideRowsPerPage ? [] : [5, 10, 25]
33
+ const { width } = useElementDimensions(ref)
34
+ const isLoading = !columns || !rows
35
+
36
+ const styles = {
37
+ tableHeader: css`
38
+ font-family: 'Uni-Neue-Regular';
39
+ ${theme.cssMixins.rowVCentered}
40
+ font-size: 14px;
41
+ color: rgba(0, 0, 0, 0.87);
42
+ `,
43
+ tableBody: css`
44
+ font-family: 'Uni-Neue-Regular';
45
+ font-size: 14px;
46
+ color: rgba(0, 0, 0, 0.87);
47
+ `,
48
+ empty: css`
49
+ display: flex;
50
+ flex-direction: column;
51
+ align-items: center;
52
+ margin-top: 20px;
53
+ font-family: 'Uni-Neue-Regular';
54
+ font-size: 14px;
55
+ `,
56
+ }
57
+
58
+ const handleChangePage = (event: unknown, newPage: number) => {
59
+ setPage(newPage)
60
+ }
61
+
62
+ const handleChangeRowsPerPage = (
63
+ event: React.ChangeEvent<HTMLInputElement>,
64
+ ) => {
65
+ setRowsPerPage(parseInt(event.target.value, 10))
66
+ setPage(0)
67
+ }
68
+
69
+ const getTableHeader = () => (
70
+ <TableHead>
71
+ <TableRow>
72
+ {columns.map((column, index) => (
73
+ <TableCell key={column.title} width={column.width}>
74
+ <Box css={styles.tableHeader}>
75
+ {index !== 0 && <SeparatorIcon />}
76
+ <Box component='span' sx={{ marginLeft: index ? '12px' : '0' }}>
77
+ {column.title}
78
+ </Box>
79
+ </Box>
80
+ </TableCell>
81
+ ))}
82
+ </TableRow>
83
+ </TableHead>
84
+ )
85
+
86
+ if (isLoading) {
87
+ return (
88
+ <Box ref={ref}>
89
+ <Box sx={{ width }}>
90
+ <Skeleton />
91
+ <Skeleton />
92
+ <Skeleton />
93
+ </Box>
94
+ </Box>
95
+ )
96
+ }
97
+
98
+ if (rows.length === 0) {
99
+ return (
100
+ <TableContainer>
101
+ <Table aria-label='simple table'>{getTableHeader()}</Table>
102
+ <Box css={styles.empty}>
103
+ <Box>No Data</Box>
104
+ </Box>
105
+ </TableContainer>
106
+ )
107
+ }
108
+
109
+ return (
110
+ <>
111
+ <TableContainer>
112
+ <Table aria-label='simple table'>
113
+ {getTableHeader()}
114
+ <TableBody>
115
+ {rows
116
+ .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
117
+ .map((row) => (
118
+ <TableRow key={row.id || row.name}>
119
+ {columns.map((column, index) => (
120
+ <TableCell
121
+ // eslint-disable-next-line react/no-array-index-key
122
+ key={`${column.dataIndex}-${index}`}
123
+ component='th'
124
+ scope='row'
125
+ css={styles.tableBody}
126
+ width={column.width}
127
+ sx={column.style}
128
+ >
129
+ {column.dataIndex && (
130
+ <Box
131
+ component='span'
132
+ sx={{
133
+ display: 'flex',
134
+ alignItems: 'center',
135
+ marginLeft: index ? '12px' : '0',
136
+ }}
137
+ >
138
+ {row[column.dataIndex]}
139
+ </Box>
140
+ )}
141
+ {column.action && (
142
+ <Box
143
+ component='span'
144
+ sx={{
145
+ display: 'flex',
146
+ alignItems: 'center',
147
+ marginLeft: index ? '12px' : '0',
148
+ lineHeight: 0,
149
+ height: 0,
150
+ }}
151
+ >
152
+ {column.action(row)}
153
+ </Box>
154
+ )}
155
+ </TableCell>
156
+ ))}
157
+ </TableRow>
158
+ ))}
159
+ </TableBody>
160
+ </Table>
161
+ </TableContainer>
162
+ {!noPagination && (
163
+ <TablePagination
164
+ size='small'
165
+ sx={{
166
+ '.MuiTablePagination-selectLabel': {
167
+ fontSize: '12px',
168
+ },
169
+ '.MuiTablePagination-select': {
170
+ fontSize: '12px',
171
+ },
172
+ '.MuiTablePagination-displayedRows': {
173
+ fontSize: '12px',
174
+ },
175
+ '.MuiTablePagination-menuItem': {
176
+ fontSize: '14px',
177
+ },
178
+ }}
179
+ rowsPerPageOptions={rowPerPageOptions}
180
+ component='div'
181
+ count={rows ? rows.length : 0}
182
+ rowsPerPage={rowsPerPage}
183
+ page={page}
184
+ onPageChange={handleChangePage}
185
+ onRowsPerPageChange={handleChangeRowsPerPage}
186
+ SelectProps={{
187
+ MenuProps: {
188
+ sx: {
189
+ '.MuiTablePagination-menuItem': {
190
+ padding: '4px 0',
191
+ display: 'flex',
192
+ justifyContent: 'center',
193
+ fontSize: '14px',
194
+ lineHeight: '1.2',
195
+ },
196
+ },
197
+ },
198
+ }}
199
+ />
200
+ )}
201
+ </>
202
+ )
203
+ }
@@ -1,49 +1,49 @@
1
- import { useWeb3React } from '@web3-react/core'
2
- import { PoolInfoType, toBigNumber } from '@huma-finance/shared'
3
- import React, { useEffect } from 'react'
4
-
5
- import useEA from '../../../hooks/useEA'
6
- import { LoadingModal } from '../../LoadingModal'
7
- import { WIDGET_STEP } from '../../../store/widgets.store'
8
-
9
- type Props = {
10
- poolInfo: PoolInfoType
11
- tokenId: string
12
- }
13
-
14
- export function Evaluation({ poolInfo, tokenId }: Props): React.ReactElement {
15
- const { checkingEA } = useEA()
16
- const { account, chainId } = useWeb3React()
17
-
18
- useEffect(() => {
19
- if (account && chainId) {
20
- checkingEA(
21
- {
22
- poolAddress: poolInfo.pool,
23
- borrowerWalletAddress: account,
24
- context: {
25
- receivable: {
26
- address: poolInfo.assetAddress!,
27
- param: toBigNumber(tokenId).toHexString(),
28
- },
29
- },
30
- },
31
- WIDGET_STEP.ChooseAmount,
32
- )
33
- }
34
- }, [
35
- account,
36
- chainId,
37
- checkingEA,
38
- poolInfo.assetAddress,
39
- poolInfo.pool,
40
- tokenId,
41
- ])
42
-
43
- return (
44
- <LoadingModal
45
- title='Checking Invoice'
46
- description='Checking if the invoice qualifies for factoring...'
47
- />
48
- )
49
- }
1
+ import { useWeb3React } from '@web3-react/core'
2
+ import { PoolInfoType, toBigNumber } from '@huma-finance/shared'
3
+ import React, { useEffect } from 'react'
4
+
5
+ import useEA from '../../../hooks/useEA'
6
+ import { LoadingModal } from '../../LoadingModal'
7
+ import { WIDGET_STEP } from '../../../store/widgets.store'
8
+
9
+ type Props = {
10
+ poolInfo: PoolInfoType
11
+ tokenId: string
12
+ }
13
+
14
+ export function Evaluation({ poolInfo, tokenId }: Props): React.ReactElement {
15
+ const { checkingEA } = useEA()
16
+ const { account, chainId } = useWeb3React()
17
+
18
+ useEffect(() => {
19
+ if (account && chainId) {
20
+ checkingEA(
21
+ {
22
+ poolAddress: poolInfo.pool,
23
+ borrowerWalletAddress: account,
24
+ context: {
25
+ receivable: {
26
+ address: poolInfo.assetAddress!,
27
+ param: toBigNumber(tokenId).toHexString(),
28
+ },
29
+ },
30
+ },
31
+ WIDGET_STEP.ChooseAmount,
32
+ )
33
+ }
34
+ }, [
35
+ account,
36
+ chainId,
37
+ checkingEA,
38
+ poolInfo.assetAddress,
39
+ poolInfo.pool,
40
+ tokenId,
41
+ ])
42
+
43
+ return (
44
+ <LoadingModal
45
+ title='Checking Invoice'
46
+ description='Checking if the invoice qualifies for factoring...'
47
+ />
48
+ )
49
+ }