@huma-finance/widgets 0.0.34 → 0.0.36

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 (181) 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 +1939 -1866
  19. package/dist/cjs/index.cjs.map +1 -1
  20. package/dist/index.d.ts +227 -195
  21. package/dist/index.js +1942 -1870
  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 +128 -132
  30. package/src/components/ApolloWrapper.tsx +15 -15
  31. package/src/components/ApproveAllowanceModal.tsx +138 -121
  32. package/src/components/BottomButton.tsx +33 -33
  33. package/src/components/ChainNotSupportedModal.tsx +33 -33
  34. package/src/components/ChooseAmountModal.tsx +322 -322
  35. package/src/components/ConfirmTransferModal.tsx +153 -153
  36. package/src/components/CreditLine/approve/1-ApproveAllowance.tsx +34 -0
  37. package/src/components/CreditLine/approve/2-Success.tsx +43 -0
  38. package/src/components/CreditLine/approve/index.tsx +85 -0
  39. package/src/components/CreditLine/borrow/1-Evaluation.tsx +157 -157
  40. package/src/components/CreditLine/borrow/2-ChooseAmount.tsx +74 -68
  41. package/src/components/CreditLine/borrow/{4-ApproveAllowance.tsx → 3-ApproveAllowance.tsx} +29 -29
  42. package/src/components/CreditLine/borrow/{3-Transfer.tsx → 4-Transfer.tsx} +34 -44
  43. package/src/components/CreditLine/borrow/5-Success.tsx +38 -38
  44. package/src/components/CreditLine/borrow/6-Notifications.tsx +10 -10
  45. package/src/components/CreditLine/borrow/index.tsx +136 -136
  46. package/src/components/CreditLine/payment/1-ChooseAmount.tsx +67 -67
  47. package/src/components/CreditLine/payment/2-ApproveAllowance.tsx +23 -23
  48. package/src/components/CreditLine/payment/3-Transfer.tsx +34 -34
  49. package/src/components/CreditLine/payment/4-Success.tsx +39 -39
  50. package/src/components/CreditLine/payment/index.tsx +94 -94
  51. package/src/components/ErrorModal.tsx +136 -132
  52. package/src/components/Factoring/FactoredList.tsx +143 -143
  53. package/src/components/Factoring/UpcomingList.tsx +90 -90
  54. package/src/components/Factoring/index.ts +2 -2
  55. package/src/components/HumaLoading.tsx +68 -68
  56. package/src/components/HumaSnackBar.tsx +60 -60
  57. package/src/components/HumaTable.tsx +203 -158
  58. package/src/components/InvoiceFactoring/borrow/1-Evaluation.tsx +49 -49
  59. package/src/components/InvoiceFactoring/borrow/2-ChooseAmount.tsx +88 -88
  60. package/src/components/InvoiceFactoring/borrow/3-ConfirmTransfer.tsx +37 -37
  61. package/src/components/InvoiceFactoring/borrow/4-ApproveNFT.tsx +55 -55
  62. package/src/components/InvoiceFactoring/borrow/5-Transfer.tsx +34 -34
  63. package/src/components/InvoiceFactoring/borrow/6-Success.tsx +20 -20
  64. package/src/components/InvoiceFactoring/borrow/index.tsx +94 -94
  65. package/src/components/InvoiceFactoring/payment/1-ChooseAmount.tsx +67 -67
  66. package/src/components/InvoiceFactoring/payment/2-ApproveAllowance.tsx +23 -23
  67. package/src/components/InvoiceFactoring/payment/3-Transfer.tsx +34 -34
  68. package/src/components/InvoiceFactoring/payment/4-Success.tsx +23 -23
  69. package/src/components/InvoiceFactoring/payment/index.tsx +86 -86
  70. package/src/components/Lend/supply/1-Evaluation/EvaluationEA.tsx +90 -86
  71. package/src/components/Lend/supply/1-Evaluation/EvaluationKYC.tsx +319 -287
  72. package/src/components/Lend/supply/1-Evaluation/index.tsx +31 -31
  73. package/src/components/Lend/supply/2-ChooseAmount.tsx +69 -69
  74. package/src/components/Lend/supply/3-ApproveAllowance.tsx +25 -25
  75. package/src/components/Lend/supply/4-Transfer.tsx +32 -32
  76. package/src/components/Lend/supply/5-Success.tsx +60 -60
  77. package/src/components/Lend/supply/6-Notifications.tsx +10 -10
  78. package/src/components/Lend/supply/index.tsx +167 -167
  79. package/src/components/Lend/withdraw/1-CheckWithdrawble.tsx +73 -73
  80. package/src/components/Lend/withdraw/2-ChooseAmount.tsx +50 -50
  81. package/src/components/Lend/withdraw/3-Transfer.tsx +32 -32
  82. package/src/components/Lend/withdraw/4-Success.tsx +49 -49
  83. package/src/components/Lend/withdraw/index.tsx +101 -101
  84. package/src/components/LoadingModal.tsx +49 -49
  85. package/src/components/Notifi/NotifiSubscriptionModal.tsx +268 -264
  86. package/src/components/StreamFactoring/borrow/1-Evaluation.tsx +55 -55
  87. package/src/components/StreamFactoring/borrow/2-ChooseAmount.tsx +127 -127
  88. package/src/components/StreamFactoring/borrow/3-ConfirmTransfer.tsx +42 -42
  89. package/src/components/StreamFactoring/borrow/4-ApproveAllowance.tsx +33 -33
  90. package/src/components/StreamFactoring/borrow/5-Permit.tsx +144 -144
  91. package/src/components/StreamFactoring/borrow/6-Transfer.tsx +37 -37
  92. package/src/components/StreamFactoring/borrow/7-Success.tsx +20 -20
  93. package/src/components/StreamFactoring/borrow/index.tsx +94 -94
  94. package/src/components/StreamFactoring/payment/ChooseAmount.tsx +54 -54
  95. package/src/components/StreamFactoring/payment/Success.tsx +23 -23
  96. package/src/components/StreamFactoring/payment/Transfer.tsx +34 -34
  97. package/src/components/StreamFactoring/payment/index.tsx +66 -66
  98. package/src/components/SuperfluidFactoring/SuperfluidFactoredList.tsx +69 -70
  99. package/src/components/SuperfluidFactoring/SuperfluidUpcomingList.tsx +166 -167
  100. package/src/components/SuperfluidFactoring/index.tsx +85 -85
  101. package/src/components/TxDoneModal.tsx +85 -85
  102. package/src/components/TxSendModal.tsx +59 -59
  103. package/src/components/ViewOnExplorer.tsx +23 -26
  104. package/src/components/WidgetWrapper.tsx +74 -74
  105. package/src/components/WrapperModal.tsx +54 -54
  106. package/src/components/buttons/TableActionButton.tsx +36 -36
  107. package/src/components/buttons/index.ts +1 -1
  108. package/src/components/humaModal/HumaModal.tsx +68 -68
  109. package/src/components/humaModal/HumaModalHeader.tsx +70 -70
  110. package/src/components/humaModal/index.tsx +2 -2
  111. package/src/components/icons/approve-lender.svg +58 -30
  112. package/src/components/icons/auto-payback.svg +139 -40
  113. package/src/components/icons/check-circle.svg +3 -3
  114. package/src/components/icons/check-green.svg +3 -3
  115. package/src/components/icons/check.svg +10 -10
  116. package/src/components/icons/donut.svg +904 -904
  117. package/src/components/icons/ellipse.svg +3 -3
  118. package/src/components/icons/huma-full.svg +22 -22
  119. package/src/components/icons/huma.svg +15 -15
  120. package/src/components/icons/index.tsx +93 -93
  121. package/src/components/icons/loader.svg +229 -229
  122. package/src/components/icons/metamask.svg +31 -31
  123. package/src/components/icons/polygon.svg +16 -16
  124. package/src/components/icons/receipt.svg +3 -3
  125. package/src/components/icons/separator.svg +3 -3
  126. package/src/components/icons/sorry.svg +17 -31
  127. package/src/components/icons/usdc.svg +5 -5
  128. package/src/components/icons/wallet-connect.svg +11 -11
  129. package/src/components/images/approve-lender.png +0 -0
  130. package/src/components/images/auto-payback.png +0 -0
  131. package/src/components/images/index.ts +3 -0
  132. package/src/components/images/sorry.png +0 -0
  133. package/src/cosmos/CreditLineBorrow.fixture.tsx +86 -86
  134. package/src/cosmos/CreditLinePayment.fixture.tsx +50 -50
  135. package/src/cosmos/InvoiceFactoringBorrow.fixture.tsx +111 -111
  136. package/src/cosmos/InvoiceFactoringPayment.fixture.tsx +67 -67
  137. package/src/cosmos/LendSupply.fixture.tsx +75 -75
  138. package/src/cosmos/LendWithdraw.fixture.tsx +43 -43
  139. package/src/cosmos/SDKTesting.fixture.tsx +616 -616
  140. package/src/cosmos/SuperfluidFactoringBorrow.fixture.tsx +15 -15
  141. package/src/cosmos/WalletWrapper.tsx +52 -52
  142. package/src/cosmos/abis/InvoiceNFT.json +644 -644
  143. package/src/cosmos/abis/ReceivableFactoringPool.json +1529 -1529
  144. package/src/cosmos/utils/env.ts +6 -6
  145. package/src/cosmos/utils/index.ts +169 -169
  146. package/src/fonts/Recoleta/Recoleta-Black.otf +0 -0
  147. package/src/fonts/Recoleta/Recoleta-Bold.otf +0 -0
  148. package/src/fonts/Recoleta/Recoleta-Light.otf +0 -0
  149. package/src/fonts/Recoleta/Recoleta-Medium.otf +0 -0
  150. package/src/fonts/Recoleta/Recoleta-Regular.otf +0 -0
  151. package/src/fonts/Recoleta/Recoleta-RegularDEMO.otf +0 -0
  152. package/src/fonts/Recoleta/Recoleta-SemiBold.otf +0 -0
  153. package/src/fonts/Recoleta/Recoleta-Thin.otf +0 -0
  154. package/src/hooks/useEA.ts +53 -53
  155. package/src/hooks/useElementDimensions.ts +30 -0
  156. package/src/hooks/useNotifi.ts +71 -71
  157. package/src/hooks/useRedux.ts +6 -6
  158. package/src/index.css +61 -61
  159. package/src/index.tsx +283 -301
  160. package/src/react-app-env.d.ts +1 -1
  161. package/src/reportWebVitals.ts +15 -15
  162. package/src/setupTests.ts +6 -6
  163. package/src/store/index.ts +27 -27
  164. package/src/store/widgets.reducers.ts +120 -120
  165. package/src/store/widgets.selectors.ts +3 -3
  166. package/src/store/widgets.store.ts +55 -55
  167. package/src/theme/breakpoints.ts +10 -10
  168. package/src/theme/components.ts +70 -70
  169. package/src/theme/coreThemeConstants.ts +29 -29
  170. package/src/theme/cssMixins.ts +92 -92
  171. package/src/theme/hooks/useGetSizes.ts +31 -31
  172. package/src/theme/index.ts +24 -24
  173. package/src/theme/palette.ts +150 -150
  174. package/src/theme/shape.ts +7 -7
  175. package/src/theme/theme.types.ts +80 -80
  176. package/src/theme/typography.ts +117 -117
  177. package/src/utilTypes.d.ts +30 -31
  178. package/src/utils/env.ts +10 -10
  179. package/tsconfig.build.json +7 -7
  180. package/tsconfig.json +32 -32
  181. package/webpack.cosmos.js +54 -54
package/src/index.tsx CHANGED
@@ -1,301 +1,283 @@
1
- import './index.css'
2
-
3
- import { JsonRpcProvider } from '@ethersproject/providers'
4
- import {
5
- Provider as Web3Provider,
6
- ProviderProps as Web3Props,
7
- supportedChainId,
8
- } from '@huma-finance/shared'
9
- import { ThemeProvider } from '@mui/material'
10
- import { Provider as Eip1193Provider } from '@web3-react/types'
11
- import { Provider as AtomProvider } from 'jotai'
12
- import { useCallback, useEffect, useState } from 'react'
13
- import { Provider as ReduxProvider } from 'react-redux'
14
-
15
- import { ChainNotSupportedModal } from './components/ChainNotSupportedModal'
16
- import {
17
- CreditLineBorrow,
18
- CreditLineBorrowProps,
19
- } from './components/CreditLine/borrow'
20
- import {
21
- CreditLinePayment,
22
- CreditLinePaymentProps,
23
- } from './components/CreditLine/payment'
24
- import {
25
- InvoiceFactoringBorrow,
26
- InvoiceFactoringBorrowProps,
27
- } from './components/InvoiceFactoring/borrow'
28
- import {
29
- InvoiceFactoringPayment,
30
- InvoiceFactoringPaymentProps,
31
- } from './components/InvoiceFactoring/payment'
32
- import { LendSupply, LendSupplyProps } from './components/Lend/supply'
33
- import { LendWithdraw, LendWithdrawProps } from './components/Lend/withdraw'
34
- import { SuperfluidFactoring } from './components/SuperfluidFactoring'
35
- import { store } from './store'
36
- import { themeHuma } from './theme'
37
- import { WCProps } from './utilTypes'
38
-
39
- /**
40
- * Mapping of your JSON-RPC connections indexed by chainId
41
- * @typedef {Object} JsonRpcConnectionMap
42
- * @property {Object.<number, string|Array<string>|JsonRpcProvider|Array<JsonRpcProvider>>} chainId Chain id to map the JSON-RPC URL/URLs or JsonRpcProvider/JsonRpcProviders
43
- */
44
- type JsonRpcConnectionMap = {
45
- [chainId: number]: string | string[] | JsonRpcProvider | JsonRpcProvider[]
46
- }
47
-
48
- /**
49
- * Object representing the props passed to web3 provider
50
- * @typedef {Object} WidgetProps
51
- * @property {desiredChainId|undefined} desiredChainId Optional desired chain id, will trigger the switch network action if different from the current chain id
52
- * @property {JsonRpcConnectionMap|undefined} jsonRpcUrlMap Optional mapping of your JSON-RPC connections indexed by chainId
53
- * @property {Eip1193Provider|JsonRpcProvider|null|undefined} provider Optional EIP-1193 provider or JsonRpc Provider
54
- */
55
- type WidgetProps = {
56
- handleClose?: () => void
57
- desiredChainId?: number
58
- jsonRpcUrlMap?: JsonRpcConnectionMap
59
- provider?: Eip1193Provider | JsonRpcProvider | null
60
- }
61
-
62
- function Widget(props: WCProps<WidgetProps>) {
63
- const { children, desiredChainId } = props
64
- const { ethereum } = window
65
- // @ts-ignore
66
- const netWorkVersion = ethereum?.networkVersion || ethereum?.chainId
67
- const [currentChainId, setCurrentChainId] = useState<number | undefined>(
68
- netWorkVersion ? Number(netWorkVersion) : undefined,
69
- )
70
- const chainSupported = !!supportedChainId(currentChainId)
71
- const [chainNotSupportedOpen, setChainNotSupportedOpen] = useState(false)
72
-
73
- useEffect(() => {
74
- setCurrentChainId(netWorkVersion ? Number(netWorkVersion) : undefined)
75
- }, [netWorkVersion])
76
-
77
- useEffect(() => {
78
- if (chainSupported) {
79
- setChainNotSupportedOpen(false)
80
- } else {
81
- setChainNotSupportedOpen(true)
82
- }
83
- }, [chainSupported])
84
-
85
- useEffect(() => {
86
- const chainChangeListener = (chainId: number) => {
87
- setCurrentChainId(chainId)
88
- }
89
-
90
- if (window.ethereum) {
91
- // @ts-ignore
92
- window.ethereum?.on('chainChanged', chainChangeListener)
93
- }
94
- return () => {
95
- if (window.ethereum) {
96
- // @ts-ignore
97
- window.ethereum?.removeListener('chainChanged', chainChangeListener)
98
- }
99
- }
100
- }, [])
101
-
102
- useEffect(() => {
103
- if (
104
- window.ethereum &&
105
- desiredChainId &&
106
- currentChainId !== desiredChainId
107
- ) {
108
- const changeNetwork = async () => {
109
- try {
110
- // @ts-ignore
111
- await window.ethereum.request({
112
- method: 'wallet_switchEthereumChain',
113
- params: [{ chainId: `0x${Number(desiredChainId).toString(16)}` }],
114
- })
115
- } catch (error) {
116
- console.error(error)
117
- }
118
- }
119
- changeNetwork()
120
- }
121
- }, [currentChainId, desiredChainId])
122
-
123
- const handleCloseCallback = useCallback(() => {
124
- setChainNotSupportedOpen(false)
125
- }, [])
126
-
127
- if (!chainSupported) {
128
- return (
129
- <ThemeProvider theme={themeHuma}>
130
- <ReduxProvider store={store}>
131
- <ChainNotSupportedModal
132
- isOpen={chainNotSupportedOpen}
133
- handleClose={handleCloseCallback}
134
- />
135
- </ReduxProvider>
136
- </ThemeProvider>
137
- )
138
- }
139
-
140
- return (
141
- <ThemeProvider theme={themeHuma}>
142
- <ReduxProvider store={store}>
143
- <Web3Provider {...(props as Web3Props)}>
144
- <AtomProvider>{children}</AtomProvider>
145
- </Web3Provider>
146
- </ReduxProvider>
147
- </ThemeProvider>
148
- )
149
- }
150
-
151
- /**
152
- * Invoice factoring pool borrow widget props
153
- * @typedef {Object} InvoiceFactoringBorrowWidgetProps
154
- * @property {InvoiceFactoringBorrowProps} InvoiceFactoringBorrowProps - Invoice factoring pool borrow props.
155
- * @property {WidgetProps} WidgetProps - Widget general props.
156
- */
157
- type InvoiceFactoringBorrowWidgetProps = InvoiceFactoringBorrowProps &
158
- WidgetProps
159
-
160
- /**
161
- * Invoice factoring borrow widget
162
- *
163
- * @param {InvoiceFactoringBorrowProps | WidgetProps} props - The invoice factoring pool borrow widget props.
164
- * @returns Invoice factoring pool borrow widget component
165
- */
166
- export function InvoiceFactoringBorrowWidget(
167
- props: InvoiceFactoringBorrowWidgetProps,
168
- ) {
169
- return (
170
- <Widget {...props}>
171
- <InvoiceFactoringBorrow {...props} />
172
- </Widget>
173
- )
174
- }
175
-
176
- /**
177
- * Invoice factoring pool payment widget props
178
- * @typedef {Object} InvoiceFactoringPaymentWidgetProps
179
- * @property {InvoiceFactoringPaymentProps} InvoiceFactoringPaymentProps - Invoice factoring pool payment props.
180
- * @property {WidgetProps} WidgetProps - Widget general props.
181
- */
182
- type InvoiceFactoringPaymentWidgetProps = InvoiceFactoringPaymentProps &
183
- WidgetProps
184
-
185
- /**
186
- * Invoice factoring payment widget
187
- *
188
- * @param {InvoiceFactoringPaymentProps | WidgetProps} props - The invoice factoring pool payment widget props.
189
- * @returns Invoice factoring pool payment widget component
190
- */
191
- export function InvoiceFactoringPaymentWidget(
192
- props: InvoiceFactoringPaymentWidgetProps,
193
- ) {
194
- return (
195
- <Widget {...props}>
196
- <InvoiceFactoringPayment {...props} />
197
- </Widget>
198
- )
199
- }
200
-
201
- /**
202
- * Credit line pool borrow widget props
203
- * @typedef {Object} CreditLineBorrowWidgetProps
204
- * @property {CreditLineBorrowProps} CreditLineBorrowProps - Credit line pool borrow props.
205
- * @property {WidgetProps} WidgetProps - Widget general props.
206
- */
207
- type CreditLineBorrowWidgetProps = CreditLineBorrowProps & WidgetProps
208
-
209
- /**
210
- * Credit line borrow widget
211
- *
212
- * @param {CreditLineBorrowProps | WidgetProps} props - The credit line pool borrow widget props.
213
- * @returns Credit line pool borrow widget component
214
- */
215
- export function CreditLineBorrowWidget(props: CreditLineBorrowWidgetProps) {
216
- return (
217
- <Widget {...props}>
218
- <CreditLineBorrow {...props} />
219
- </Widget>
220
- )
221
- }
222
-
223
- /**
224
- * Credit line pool payment widget props
225
- * @typedef {Object} CreditLinePaymentWidgetProps
226
- * @property {CreditLinePaymentProps} CreditLinePaymentProps - Credit line pool payment props.
227
- * @property {WidgetProps} WidgetProps - Widget general props.
228
- */
229
- type CreditLinePaymentWidgetProps = CreditLinePaymentProps & WidgetProps
230
-
231
- /**
232
- * Credit line payment widget
233
- *
234
- * @param {CreditLinePaymentProps | WidgetProps} props - The credit line pool payment widget props.
235
- * @returns Credit line pool payment widget component
236
- */
237
- export function CreditLinePaymentWidget(props: CreditLinePaymentWidgetProps) {
238
- return (
239
- <Widget {...props}>
240
- <CreditLinePayment {...props} />
241
- </Widget>
242
- )
243
- }
244
-
245
- /**
246
- * Lend pool supply widget props
247
- * @typedef {Object} LendSupplyWidgetProps
248
- * @property {LendSupplyProps} LendSupplyProps - Lend pool supply props.
249
- * @property {WidgetProps} WidgetProps - Widget general props.
250
- */
251
- type LendSupplyWidgetProps = LendSupplyProps & WidgetProps
252
-
253
- /**
254
- * Lend supply widget
255
- *
256
- * @param {LendSupplyProps | WidgetProps} props - The lend pool supply widget props.
257
- * @returns Lend pool supply widget component
258
- */
259
- export function LendSupplyWidget(props: LendSupplyWidgetProps) {
260
- return (
261
- <Widget {...props}>
262
- <LendSupply {...props} />
263
- </Widget>
264
- )
265
- }
266
-
267
- /**
268
- * Lend pool withdraw widget props
269
- * @typedef {Object} LendWithdrawWidgetProps
270
- * @property {LendWithdrawProps} LendWithdrawProps - Lend pool withdraw props.
271
- * @property {WidgetProps} WidgetProps - Widget general props.
272
- */
273
- type LendWithdrawWidgetProps = LendWithdrawProps & WidgetProps
274
-
275
- /**
276
- * Lend withdraw widget
277
- *
278
- * @param {LendWithdrawProps | WidgetProps} props The lend pool withdraw widget props
279
- * @returns Lend pool withdraw widget component
280
- */
281
- export function LendWithdrawWidget(props: LendWithdrawWidgetProps) {
282
- return (
283
- <Widget {...props}>
284
- <LendWithdraw {...props} />
285
- </Widget>
286
- )
287
- }
288
-
289
- /**
290
- * Superfluid factoring widget
291
- *
292
- * @param {WidgetProps} props - The superfluid factoring widget props.
293
- * @returns Superfluid factoring widget component
294
- */
295
- export function SuperfluidFactoringWidget(props: WidgetProps) {
296
- return (
297
- <Widget {...props}>
298
- <SuperfluidFactoring />
299
- </Widget>
300
- )
301
- }
1
+ import './index.css'
2
+
3
+ import { JsonRpcProvider } from '@ethersproject/providers'
4
+ import {
5
+ Provider as Web3Provider,
6
+ ProviderProps as Web3Props,
7
+ supportedChainId,
8
+ } from '@huma-finance/shared'
9
+ import { ThemeProvider } from '@mui/material'
10
+ import { Provider as Eip1193Provider } from '@web3-react/types'
11
+ import { Provider as AtomProvider } from 'jotai'
12
+ import { useCallback, useEffect, useState } from 'react'
13
+ import { Provider as ReduxProvider } from 'react-redux'
14
+
15
+ import { useWeb3React } from '@web3-react/core'
16
+ import { ChainNotSupportedModal } from './components/ChainNotSupportedModal'
17
+ import {
18
+ CreditLineApprove,
19
+ CreditLineApproveProps,
20
+ } from './components/CreditLine/approve'
21
+ import {
22
+ CreditLineBorrow,
23
+ CreditLineBorrowProps,
24
+ } from './components/CreditLine/borrow'
25
+ import {
26
+ CreditLinePayment,
27
+ CreditLinePaymentProps,
28
+ } from './components/CreditLine/payment'
29
+ import {
30
+ InvoiceFactoringBorrow,
31
+ InvoiceFactoringBorrowProps,
32
+ } from './components/InvoiceFactoring/borrow'
33
+ import {
34
+ InvoiceFactoringPayment,
35
+ InvoiceFactoringPaymentProps,
36
+ } from './components/InvoiceFactoring/payment'
37
+ import { LendSupply, LendSupplyProps } from './components/Lend/supply'
38
+ import { LendWithdraw, LendWithdrawProps } from './components/Lend/withdraw'
39
+ import { SuperfluidFactoring } from './components/SuperfluidFactoring'
40
+ import { store } from './store'
41
+ import { themeHuma } from './theme'
42
+ import { WCProps } from './utilTypes'
43
+
44
+ /**
45
+ * Mapping of your JSON-RPC connections indexed by chainId
46
+ * @typedef {Object} JsonRpcConnectionMap
47
+ * @property {Object.<number, string|Array<string>|JsonRpcProvider|Array<JsonRpcProvider>>} chainId Chain id to map the JSON-RPC URL/URLs or JsonRpcProvider/JsonRpcProviders
48
+ */
49
+ type JsonRpcConnectionMap = {
50
+ [chainId: number]: string | string[] | JsonRpcProvider | JsonRpcProvider[]
51
+ }
52
+
53
+ /**
54
+ * Object representing the props passed to web3 provider
55
+ * @typedef {Object} WidgetProps
56
+ * @property {desiredChainId|undefined} desiredChainId Optional desired chain id, will trigger the switch network action if different from the current chain id
57
+ * @property {JsonRpcConnectionMap|undefined} jsonRpcUrlMap Optional mapping of your JSON-RPC connections indexed by chainId
58
+ * @property {Eip1193Provider|JsonRpcProviderl} provider EIP-1193 provider or JsonRpc Provider
59
+ */
60
+ type WidgetProps = {
61
+ handleClose?: () => void
62
+ desiredChainId?: number
63
+ jsonRpcUrlMap?: JsonRpcConnectionMap
64
+ provider: Eip1193Provider | JsonRpcProvider
65
+ }
66
+
67
+ function Widget(props: WCProps<WidgetProps>) {
68
+ const { children } = props
69
+ const { chainId } = useWeb3React()
70
+
71
+ const chainSupported = !!supportedChainId(chainId)
72
+ const [chainNotSupportedOpen, setChainNotSupportedOpen] = useState(false)
73
+
74
+ useEffect(() => {
75
+ if (chainSupported) {
76
+ setChainNotSupportedOpen(false)
77
+ } else {
78
+ setChainNotSupportedOpen(true)
79
+ }
80
+ }, [chainSupported])
81
+
82
+ const handleCloseCallback = useCallback(() => {
83
+ setChainNotSupportedOpen(false)
84
+ }, [])
85
+
86
+ if (!chainSupported) {
87
+ return (
88
+ <ThemeProvider theme={themeHuma}>
89
+ <ReduxProvider store={store}>
90
+ <ChainNotSupportedModal
91
+ isOpen={chainNotSupportedOpen}
92
+ handleClose={handleCloseCallback}
93
+ />
94
+ </ReduxProvider>
95
+ </ThemeProvider>
96
+ )
97
+ }
98
+
99
+ return (
100
+ <ThemeProvider theme={themeHuma}>
101
+ <ReduxProvider store={store}>
102
+ <Web3Provider {...(props as Web3Props)}>
103
+ <AtomProvider>{children}</AtomProvider>
104
+ </Web3Provider>
105
+ </ReduxProvider>
106
+ </ThemeProvider>
107
+ )
108
+ }
109
+
110
+ /**
111
+ * Invoice factoring pool borrow widget props
112
+ * @typedef {Object} InvoiceFactoringBorrowWidgetProps
113
+ * @property {InvoiceFactoringBorrowProps} InvoiceFactoringBorrowProps - Invoice factoring pool borrow props.
114
+ * @property {WidgetProps} WidgetProps - Widget general props.
115
+ */
116
+ type InvoiceFactoringBorrowWidgetProps = InvoiceFactoringBorrowProps &
117
+ WidgetProps
118
+
119
+ /**
120
+ * Invoice factoring borrow widget
121
+ *
122
+ * @param {InvoiceFactoringBorrowWidgetProps} props - The invoice factoring pool borrow widget props.
123
+ * @returns Invoice factoring pool borrow widget component
124
+ */
125
+ export function InvoiceFactoringBorrowWidget(
126
+ props: InvoiceFactoringBorrowWidgetProps,
127
+ ) {
128
+ return (
129
+ <Widget {...props}>
130
+ <InvoiceFactoringBorrow {...props} />
131
+ </Widget>
132
+ )
133
+ }
134
+
135
+ /**
136
+ * Invoice factoring pool payment widget props
137
+ * @typedef {Object} InvoiceFactoringPaymentWidgetProps
138
+ * @property {InvoiceFactoringPaymentProps} InvoiceFactoringPaymentProps - Invoice factoring pool payment props.
139
+ * @property {WidgetProps} WidgetProps - Widget general props.
140
+ */
141
+ type InvoiceFactoringPaymentWidgetProps = InvoiceFactoringPaymentProps &
142
+ WidgetProps
143
+
144
+ /**
145
+ * Invoice factoring payment widget
146
+ *
147
+ * @param {InvoiceFactoringPaymentWidgetProps} props - The invoice factoring pool payment widget props.
148
+ * @returns Invoice factoring pool payment widget component
149
+ */
150
+ export function InvoiceFactoringPaymentWidget(
151
+ props: InvoiceFactoringPaymentWidgetProps,
152
+ ) {
153
+ return (
154
+ <Widget {...props}>
155
+ <InvoiceFactoringPayment {...props} />
156
+ </Widget>
157
+ )
158
+ }
159
+
160
+ /**
161
+ * Credit line pool borrow widget props
162
+ * @typedef {Object} CreditLineBorrowWidgetProps
163
+ * @property {CreditLineBorrowProps} CreditLineBorrowProps - Credit line pool borrow props.
164
+ * @property {WidgetProps} WidgetProps - Widget general props.
165
+ */
166
+ type CreditLineBorrowWidgetProps = CreditLineBorrowProps & WidgetProps
167
+
168
+ /**
169
+ * Credit line borrow widget
170
+ *
171
+ * @param {CreditLineBorrowWidgetProps} props - The credit line pool borrow widget props.
172
+ * @returns Credit line pool borrow widget component
173
+ */
174
+ export function CreditLineBorrowWidget(props: CreditLineBorrowWidgetProps) {
175
+ return (
176
+ <Widget {...props}>
177
+ <CreditLineBorrow {...props} />
178
+ </Widget>
179
+ )
180
+ }
181
+
182
+ /**
183
+ * Credit line pool payment widget props
184
+ * @typedef {Object} CreditLinePaymentWidgetProps
185
+ * @property {CreditLinePaymentProps} CreditLinePaymentProps - Credit line pool payment props.
186
+ * @property {WidgetProps} WidgetProps - Widget general props.
187
+ */
188
+ type CreditLinePaymentWidgetProps = CreditLinePaymentProps & WidgetProps
189
+
190
+ /**
191
+ * Credit line payment widget
192
+ *
193
+ * @param {CreditLinePaymentWidgetProps} props - The credit line pool payment widget props.
194
+ * @returns Credit line pool payment widget component
195
+ */
196
+ export function CreditLinePaymentWidget(props: CreditLinePaymentWidgetProps) {
197
+ return (
198
+ <Widget {...props}>
199
+ <CreditLinePayment {...props} />
200
+ </Widget>
201
+ )
202
+ }
203
+
204
+ /**
205
+ * Credit line allowance approval widget props
206
+ * @typedef {Object} CreditLinePaymentWidgetProps
207
+ * @property {CreditLineApproveProps} CreditLineApproveProps - Credit line allowance approve props.
208
+ * @property {WidgetProps} WidgetProps - Widget general props.
209
+ */
210
+ type CreditLineApproveWidgetProps = CreditLineApproveProps & WidgetProps
211
+
212
+ /**
213
+ * Credit line allowance approve widget to top up a pool's ERC20 token allowance.
214
+ * To be used when re-enabling autopay and other pool actions that require allowance.
215
+ *
216
+ * @param {CreditLineApproveWidgetProps} props - The credit line pool approve widget props.
217
+ * @returns Credit line pool approve widget component
218
+ */
219
+ export function CreditLineApproveWidget(props: CreditLineApproveWidgetProps) {
220
+ return (
221
+ <Widget {...props}>
222
+ <CreditLineApprove {...props} />
223
+ </Widget>
224
+ )
225
+ }
226
+
227
+ /**
228
+ * Lend pool supply widget props
229
+ * @typedef {Object} LendSupplyWidgetProps
230
+ * @property {LendSupplyProps} LendSupplyProps - Lend pool supply props.
231
+ * @property {WidgetProps} WidgetProps - Widget general props.
232
+ */
233
+ type LendSupplyWidgetProps = LendSupplyProps & WidgetProps
234
+
235
+ /**
236
+ * Lend supply widget
237
+ *
238
+ * @param {LendSupplyWidgetProps} props - The lend pool supply widget props.
239
+ * @returns Lend pool supply widget component
240
+ */
241
+ export function LendSupplyWidget(props: LendSupplyWidgetProps) {
242
+ return (
243
+ <Widget {...props}>
244
+ <LendSupply {...props} />
245
+ </Widget>
246
+ )
247
+ }
248
+
249
+ /**
250
+ * Lend pool withdraw widget props
251
+ * @typedef {Object} LendWithdrawWidgetProps
252
+ * @property {LendWithdrawProps} LendWithdrawProps - Lend pool withdraw props.
253
+ * @property {WidgetProps} WidgetProps - Widget general props.
254
+ */
255
+ type LendWithdrawWidgetProps = LendWithdrawProps & WidgetProps
256
+
257
+ /**
258
+ * Lend withdraw widget
259
+ *
260
+ * @param {LendWithdrawWidgetProps} props The lend pool withdraw widget props
261
+ * @returns Lend pool withdraw widget component
262
+ */
263
+ export function LendWithdrawWidget(props: LendWithdrawWidgetProps) {
264
+ return (
265
+ <Widget {...props}>
266
+ <LendWithdraw {...props} />
267
+ </Widget>
268
+ )
269
+ }
270
+
271
+ /**
272
+ * Superfluid factoring widget
273
+ *
274
+ * @param {WidgetProps} props - The superfluid factoring widget props.
275
+ * @returns Superfluid factoring widget component
276
+ */
277
+ export function SuperfluidFactoringWidget(props: WidgetProps) {
278
+ return (
279
+ <Widget {...props}>
280
+ <SuperfluidFactoring />
281
+ </Widget>
282
+ )
283
+ }
@@ -1 +1 @@
1
- /// <reference types="react-scripts" />
1
+ /// <reference types="react-scripts" />
@@ -1,15 +1,15 @@
1
- import { ReportHandler } from 'web-vitals'
2
-
3
- const reportWebVitals = (onPerfEntry?: ReportHandler) => {
4
- if (onPerfEntry && onPerfEntry instanceof Function) {
5
- import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
6
- getCLS(onPerfEntry)
7
- getFID(onPerfEntry)
8
- getFCP(onPerfEntry)
9
- getLCP(onPerfEntry)
10
- getTTFB(onPerfEntry)
11
- })
12
- }
13
- }
14
-
15
- export default reportWebVitals
1
+ import { ReportHandler } from 'web-vitals'
2
+
3
+ const reportWebVitals = (onPerfEntry?: ReportHandler) => {
4
+ if (onPerfEntry && onPerfEntry instanceof Function) {
5
+ import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
6
+ getCLS(onPerfEntry)
7
+ getFID(onPerfEntry)
8
+ getFCP(onPerfEntry)
9
+ getLCP(onPerfEntry)
10
+ getTTFB(onPerfEntry)
11
+ })
12
+ }
13
+ }
14
+
15
+ export default reportWebVitals
package/src/setupTests.ts CHANGED
@@ -1,6 +1,6 @@
1
- /* eslint-disable import/no-extraneous-dependencies */
2
- // jest-dom adds custom jest matchers for asserting on DOM nodes.
3
- // allows you to do things like:
4
- // expect(element).toHaveTextContent(/react/i)
5
- // learn more: https://github.com/testing-library/jest-dom
6
- import '@testing-library/jest-dom/extend-expect'
1
+ /* eslint-disable import/no-extraneous-dependencies */
2
+ // jest-dom adds custom jest matchers for asserting on DOM nodes.
3
+ // allows you to do things like:
4
+ // expect(element).toHaveTextContent(/react/i)
5
+ // learn more: https://github.com/testing-library/jest-dom
6
+ import '@testing-library/jest-dom/extend-expect'