@huma-finance/widgets 0.0.31 → 0.0.33

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 (176) 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 +1026 -296
  19. package/dist/cjs/index.cjs.map +1 -1
  20. package/dist/index.d.ts +193 -193
  21. package/dist/index.js +1028 -299
  22. package/dist/index.js.map +1 -1
  23. package/jsdoc2md.json +20 -20
  24. package/package.json +4 -4
  25. package/public/index.html +40 -40
  26. package/public/manifest.json +25 -25
  27. package/public/robots.txt +3 -3
  28. package/rollup.config.js +81 -81
  29. package/src/components/Activity.tsx +132 -132
  30. package/src/components/ApolloWrapper.tsx +15 -15
  31. package/src/components/ApproveAllowanceModal.tsx +121 -121
  32. package/src/components/BottomButton.tsx +33 -33
  33. package/src/components/ChainNotSupportedModal.tsx +33 -33
  34. package/src/components/ChooseAmountModal.tsx +322 -322
  35. package/src/components/ConfirmTransferModal.tsx +153 -153
  36. package/src/components/CreditLine/borrow/1-Evaluation.tsx +157 -157
  37. package/src/components/CreditLine/borrow/2-ChooseAmount.tsx +68 -68
  38. package/src/components/CreditLine/borrow/3-Transfer.tsx +44 -44
  39. package/src/components/CreditLine/borrow/4-ApproveAllowance.tsx +29 -29
  40. package/src/components/CreditLine/borrow/5-Success.tsx +38 -30
  41. package/src/components/CreditLine/borrow/6-Notifications.tsx +10 -0
  42. package/src/components/CreditLine/borrow/index.tsx +136 -117
  43. package/src/components/CreditLine/payment/1-ChooseAmount.tsx +67 -67
  44. package/src/components/CreditLine/payment/2-ApproveAllowance.tsx +23 -23
  45. package/src/components/CreditLine/payment/3-Transfer.tsx +34 -34
  46. package/src/components/CreditLine/payment/4-Success.tsx +39 -39
  47. package/src/components/CreditLine/payment/index.tsx +94 -94
  48. package/src/components/ErrorModal.tsx +132 -132
  49. package/src/components/Factoring/FactoredList.tsx +143 -143
  50. package/src/components/Factoring/UpcomingList.tsx +90 -90
  51. package/src/components/Factoring/index.ts +2 -2
  52. package/src/components/HumaLoading.tsx +68 -68
  53. package/src/components/HumaSnackBar.tsx +60 -0
  54. package/src/components/HumaTable.tsx +158 -158
  55. package/src/components/InvoiceFactoring/borrow/1-Evaluation.tsx +49 -49
  56. package/src/components/InvoiceFactoring/borrow/2-ChooseAmount.tsx +88 -88
  57. package/src/components/InvoiceFactoring/borrow/3-ConfirmTransfer.tsx +37 -37
  58. package/src/components/InvoiceFactoring/borrow/4-ApproveNFT.tsx +55 -55
  59. package/src/components/InvoiceFactoring/borrow/5-Transfer.tsx +34 -34
  60. package/src/components/InvoiceFactoring/borrow/6-Success.tsx +20 -20
  61. package/src/components/InvoiceFactoring/borrow/index.tsx +94 -94
  62. package/src/components/InvoiceFactoring/payment/1-ChooseAmount.tsx +67 -67
  63. package/src/components/InvoiceFactoring/payment/2-ApproveAllowance.tsx +23 -23
  64. package/src/components/InvoiceFactoring/payment/3-Transfer.tsx +34 -34
  65. package/src/components/InvoiceFactoring/payment/4-Success.tsx +23 -23
  66. package/src/components/InvoiceFactoring/payment/index.tsx +86 -86
  67. package/src/components/Lend/supply/1-Evaluation/EvaluationEA.tsx +86 -0
  68. package/src/components/Lend/supply/1-Evaluation/EvaluationKYC.tsx +287 -0
  69. package/src/components/Lend/supply/1-Evaluation/index.tsx +31 -0
  70. package/src/components/Lend/supply/2-ChooseAmount.tsx +69 -70
  71. package/src/components/Lend/supply/3-ApproveAllowance.tsx +25 -25
  72. package/src/components/Lend/supply/{6-Transfer.tsx → 4-Transfer.tsx} +32 -32
  73. package/src/components/Lend/supply/{7-Success.tsx → 5-Success.tsx} +60 -49
  74. package/src/components/Lend/supply/6-Notifications.tsx +10 -0
  75. package/src/components/Lend/supply/index.tsx +167 -144
  76. package/src/components/Lend/withdraw/1-CheckWithdrawble.tsx +73 -73
  77. package/src/components/Lend/withdraw/2-ChooseAmount.tsx +50 -50
  78. package/src/components/Lend/withdraw/3-Transfer.tsx +32 -32
  79. package/src/components/Lend/withdraw/4-Success.tsx +49 -49
  80. package/src/components/Lend/withdraw/index.tsx +101 -101
  81. package/src/components/LoadingModal.tsx +49 -49
  82. package/src/components/Notifi/NotifiSubscriptionModal.tsx +264 -0
  83. package/src/components/StreamFactoring/borrow/1-Evaluation.tsx +55 -55
  84. package/src/components/StreamFactoring/borrow/2-ChooseAmount.tsx +127 -127
  85. package/src/components/StreamFactoring/borrow/3-ConfirmTransfer.tsx +42 -42
  86. package/src/components/StreamFactoring/borrow/4-ApproveAllowance.tsx +33 -33
  87. package/src/components/StreamFactoring/borrow/5-Permit.tsx +144 -144
  88. package/src/components/StreamFactoring/borrow/6-Transfer.tsx +37 -37
  89. package/src/components/StreamFactoring/borrow/7-Success.tsx +20 -20
  90. package/src/components/StreamFactoring/borrow/index.tsx +94 -94
  91. package/src/components/StreamFactoring/payment/ChooseAmount.tsx +54 -54
  92. package/src/components/StreamFactoring/payment/Success.tsx +23 -23
  93. package/src/components/StreamFactoring/payment/Transfer.tsx +34 -34
  94. package/src/components/StreamFactoring/payment/index.tsx +66 -66
  95. package/src/components/SuperfluidFactoring/SuperfluidFactoredList.tsx +70 -70
  96. package/src/components/SuperfluidFactoring/SuperfluidUpcomingList.tsx +167 -167
  97. package/src/components/SuperfluidFactoring/index.tsx +85 -85
  98. package/src/components/TxDoneModal.tsx +85 -83
  99. package/src/components/TxSendModal.tsx +59 -59
  100. package/src/components/ViewOnExplorer.tsx +26 -26
  101. package/src/components/WidgetWrapper.tsx +74 -74
  102. package/src/components/WrapperModal.tsx +54 -54
  103. package/src/components/buttons/TableActionButton.tsx +36 -36
  104. package/src/components/buttons/index.ts +1 -1
  105. package/src/components/humaModal/HumaModal.tsx +68 -68
  106. package/src/components/humaModal/HumaModalHeader.tsx +70 -70
  107. package/src/components/humaModal/index.tsx +2 -2
  108. package/src/components/icons/approve-lender.svg +30 -30
  109. package/src/components/icons/auto-payback.svg +40 -40
  110. package/src/components/icons/check-circle.svg +3 -3
  111. package/src/components/icons/check-green.svg +3 -3
  112. package/src/components/icons/check.svg +10 -10
  113. package/src/components/icons/donut.svg +904 -904
  114. package/src/components/icons/ellipse.svg +3 -3
  115. package/src/components/icons/huma-full.svg +22 -22
  116. package/src/components/icons/huma.svg +15 -15
  117. package/src/components/icons/index.tsx +93 -93
  118. package/src/components/icons/loader.svg +229 -229
  119. package/src/components/icons/metamask.svg +31 -31
  120. package/src/components/icons/polygon.svg +16 -16
  121. package/src/components/icons/receipt.svg +3 -3
  122. package/src/components/icons/separator.svg +3 -3
  123. package/src/components/icons/sorry.svg +31 -31
  124. package/src/components/icons/usdc.svg +5 -5
  125. package/src/components/icons/wallet-connect.svg +11 -11
  126. package/src/cosmos/CreditLineBorrow.fixture.tsx +86 -86
  127. package/src/cosmos/CreditLinePayment.fixture.tsx +50 -50
  128. package/src/cosmos/InvoiceFactoringBorrow.fixture.tsx +111 -111
  129. package/src/cosmos/InvoiceFactoringPayment.fixture.tsx +67 -67
  130. package/src/cosmos/LendSupply.fixture.tsx +75 -75
  131. package/src/cosmos/LendWithdraw.fixture.tsx +43 -43
  132. package/src/cosmos/SDKTesting.fixture.tsx +616 -616
  133. package/src/cosmos/SuperfluidFactoringBorrow.fixture.tsx +15 -15
  134. package/src/cosmos/WalletWrapper.tsx +52 -52
  135. package/src/cosmos/abis/InvoiceNFT.json +644 -644
  136. package/src/cosmos/abis/ReceivableFactoringPool.json +1529 -1529
  137. package/src/cosmos/utils/env.ts +6 -6
  138. package/src/cosmos/utils/index.ts +169 -169
  139. package/src/fonts/Recoleta/Recoleta-Black.otf +0 -0
  140. package/src/fonts/Recoleta/Recoleta-Bold.otf +0 -0
  141. package/src/fonts/Recoleta/Recoleta-Light.otf +0 -0
  142. package/src/fonts/Recoleta/Recoleta-Medium.otf +0 -0
  143. package/src/fonts/Recoleta/Recoleta-Regular.otf +0 -0
  144. package/src/fonts/Recoleta/Recoleta-RegularDEMO.otf +0 -0
  145. package/src/fonts/Recoleta/Recoleta-SemiBold.otf +0 -0
  146. package/src/fonts/Recoleta/Recoleta-Thin.otf +0 -0
  147. package/src/hooks/useEA.ts +53 -53
  148. package/src/hooks/useNotifi.ts +71 -0
  149. package/src/hooks/useRedux.ts +6 -6
  150. package/src/index.css +61 -61
  151. package/src/index.tsx +301 -301
  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 -54
  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 +31 -31
  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/src/components/Lend/supply/1-Evaluation.tsx +0 -175
  175. package/src/components/Lend/supply/4-ConfirmTransfer.tsx +0 -104
  176. package/src/components/NotifiSubscriptionModal.tsx +0 -84
package/src/index.tsx CHANGED
@@ -1,301 +1,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 { 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 { 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 +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'