@huma-finance/widgets 0.0.30 → 0.0.31

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 (167) 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 +145 -143
  19. package/dist/cjs/index.cjs.map +1 -1
  20. package/dist/index.d.ts +193 -193
  21. package/dist/index.js +146 -144
  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 +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/ConfirmTransferModal.tsx +153 -153
  35. package/src/components/CreditLine/borrow/1-Evaluation.tsx +157 -157
  36. package/src/components/CreditLine/borrow/2-ChooseAmount.tsx +68 -68
  37. package/src/components/CreditLine/borrow/3-Transfer.tsx +44 -44
  38. package/src/components/CreditLine/borrow/4-ApproveAllowance.tsx +29 -29
  39. package/src/components/CreditLine/borrow/5-Success.tsx +30 -30
  40. package/src/components/CreditLine/borrow/index.tsx +117 -117
  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 +132 -132
  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/HumaTable.tsx +158 -158
  52. package/src/components/InvoiceFactoring/borrow/1-Evaluation.tsx +49 -49
  53. package/src/components/InvoiceFactoring/borrow/2-ChooseAmount.tsx +88 -88
  54. package/src/components/InvoiceFactoring/borrow/3-ConfirmTransfer.tsx +37 -37
  55. package/src/components/InvoiceFactoring/borrow/4-ApproveNFT.tsx +55 -55
  56. package/src/components/InvoiceFactoring/borrow/5-Transfer.tsx +34 -34
  57. package/src/components/InvoiceFactoring/borrow/6-Success.tsx +20 -20
  58. package/src/components/InvoiceFactoring/borrow/index.tsx +94 -94
  59. package/src/components/InvoiceFactoring/payment/1-ChooseAmount.tsx +67 -67
  60. package/src/components/InvoiceFactoring/payment/2-ApproveAllowance.tsx +23 -23
  61. package/src/components/InvoiceFactoring/payment/3-Transfer.tsx +34 -34
  62. package/src/components/InvoiceFactoring/payment/4-Success.tsx +23 -23
  63. package/src/components/InvoiceFactoring/payment/index.tsx +86 -86
  64. package/src/components/Lend/supply/1-Evaluation.tsx +175 -171
  65. package/src/components/Lend/supply/2-ChooseAmount.tsx +70 -70
  66. package/src/components/Lend/supply/3-ApproveAllowance.tsx +25 -25
  67. package/src/components/Lend/supply/4-ConfirmTransfer.tsx +104 -104
  68. package/src/components/Lend/supply/6-Transfer.tsx +32 -32
  69. package/src/components/Lend/supply/7-Success.tsx +49 -49
  70. package/src/components/Lend/supply/index.tsx +144 -144
  71. package/src/components/Lend/withdraw/1-CheckWithdrawble.tsx +73 -73
  72. package/src/components/Lend/withdraw/2-ChooseAmount.tsx +50 -50
  73. package/src/components/Lend/withdraw/3-Transfer.tsx +32 -32
  74. package/src/components/Lend/withdraw/4-Success.tsx +49 -49
  75. package/src/components/Lend/withdraw/index.tsx +101 -101
  76. package/src/components/LoadingModal.tsx +49 -49
  77. package/src/components/NotifiSubscriptionModal.tsx +84 -0
  78. package/src/components/StreamFactoring/borrow/1-Evaluation.tsx +55 -55
  79. package/src/components/StreamFactoring/borrow/2-ChooseAmount.tsx +127 -127
  80. package/src/components/StreamFactoring/borrow/3-ConfirmTransfer.tsx +42 -42
  81. package/src/components/StreamFactoring/borrow/4-ApproveAllowance.tsx +33 -33
  82. package/src/components/StreamFactoring/borrow/5-Permit.tsx +144 -144
  83. package/src/components/StreamFactoring/borrow/6-Transfer.tsx +37 -37
  84. package/src/components/StreamFactoring/borrow/7-Success.tsx +20 -20
  85. package/src/components/StreamFactoring/borrow/index.tsx +94 -94
  86. package/src/components/StreamFactoring/payment/ChooseAmount.tsx +54 -54
  87. package/src/components/StreamFactoring/payment/Success.tsx +23 -23
  88. package/src/components/StreamFactoring/payment/Transfer.tsx +34 -34
  89. package/src/components/StreamFactoring/payment/index.tsx +66 -66
  90. package/src/components/SuperfluidFactoring/SuperfluidFactoredList.tsx +70 -70
  91. package/src/components/SuperfluidFactoring/SuperfluidUpcomingList.tsx +167 -167
  92. package/src/components/SuperfluidFactoring/index.tsx +1 -1
  93. package/src/components/TxDoneModal.tsx +83 -83
  94. package/src/components/TxSendModal.tsx +59 -59
  95. package/src/components/ViewOnExplorer.tsx +26 -26
  96. package/src/components/WidgetWrapper.tsx +74 -74
  97. package/src/components/WrapperModal.tsx +54 -54
  98. package/src/components/buttons/TableActionButton.tsx +36 -36
  99. package/src/components/buttons/index.ts +1 -1
  100. package/src/components/humaModal/HumaModal.tsx +68 -68
  101. package/src/components/humaModal/HumaModalHeader.tsx +70 -70
  102. package/src/components/humaModal/index.tsx +2 -2
  103. package/src/components/icons/approve-lender.svg +30 -30
  104. package/src/components/icons/auto-payback.svg +40 -40
  105. package/src/components/icons/check-circle.svg +3 -3
  106. package/src/components/icons/check-green.svg +3 -3
  107. package/src/components/icons/check.svg +10 -10
  108. package/src/components/icons/donut.svg +904 -904
  109. package/src/components/icons/ellipse.svg +3 -3
  110. package/src/components/icons/huma-full.svg +22 -22
  111. package/src/components/icons/huma.svg +15 -15
  112. package/src/components/icons/index.tsx +93 -93
  113. package/src/components/icons/loader.svg +229 -229
  114. package/src/components/icons/metamask.svg +31 -31
  115. package/src/components/icons/polygon.svg +16 -16
  116. package/src/components/icons/receipt.svg +3 -3
  117. package/src/components/icons/separator.svg +3 -3
  118. package/src/components/icons/sorry.svg +31 -31
  119. package/src/components/icons/usdc.svg +5 -5
  120. package/src/components/icons/wallet-connect.svg +11 -11
  121. package/src/cosmos/CreditLineBorrow.fixture.tsx +86 -86
  122. package/src/cosmos/CreditLinePayment.fixture.tsx +50 -50
  123. package/src/cosmos/InvoiceFactoringBorrow.fixture.tsx +111 -111
  124. package/src/cosmos/InvoiceFactoringPayment.fixture.tsx +67 -67
  125. package/src/cosmos/LendSupply.fixture.tsx +75 -75
  126. package/src/cosmos/LendWithdraw.fixture.tsx +43 -43
  127. package/src/cosmos/SDKTesting.fixture.tsx +4 -3
  128. package/src/cosmos/SuperfluidFactoringBorrow.fixture.tsx +15 -15
  129. package/src/cosmos/WalletWrapper.tsx +52 -52
  130. package/src/cosmos/abis/InvoiceNFT.json +644 -644
  131. package/src/cosmos/abis/ReceivableFactoringPool.json +1529 -1529
  132. package/src/cosmos/utils/env.ts +6 -6
  133. package/src/cosmos/utils/index.ts +169 -169
  134. package/src/fonts/Recoleta/Recoleta-Black.otf +0 -0
  135. package/src/fonts/Recoleta/Recoleta-Bold.otf +0 -0
  136. package/src/fonts/Recoleta/Recoleta-Light.otf +0 -0
  137. package/src/fonts/Recoleta/Recoleta-Medium.otf +0 -0
  138. package/src/fonts/Recoleta/Recoleta-Regular.otf +0 -0
  139. package/src/fonts/Recoleta/Recoleta-RegularDEMO.otf +0 -0
  140. package/src/fonts/Recoleta/Recoleta-SemiBold.otf +0 -0
  141. package/src/fonts/Recoleta/Recoleta-Thin.otf +0 -0
  142. package/src/hooks/useEA.ts +53 -53
  143. package/src/hooks/useRedux.ts +6 -6
  144. package/src/index.css +61 -61
  145. package/src/index.tsx +301 -301
  146. package/src/react-app-env.d.ts +1 -1
  147. package/src/reportWebVitals.ts +15 -15
  148. package/src/setupTests.ts +6 -6
  149. package/src/store/index.ts +27 -27
  150. package/src/store/widgets.reducers.ts +120 -120
  151. package/src/store/widgets.selectors.ts +3 -3
  152. package/src/store/widgets.store.ts +54 -54
  153. package/src/theme/breakpoints.ts +10 -10
  154. package/src/theme/components.ts +70 -70
  155. package/src/theme/coreThemeConstants.ts +29 -29
  156. package/src/theme/cssMixins.ts +92 -92
  157. package/src/theme/hooks/useGetSizes.ts +31 -31
  158. package/src/theme/index.ts +24 -24
  159. package/src/theme/palette.ts +150 -150
  160. package/src/theme/shape.ts +7 -7
  161. package/src/theme/theme.types.ts +80 -80
  162. package/src/theme/typography.ts +117 -117
  163. package/src/utilTypes.d.ts +31 -31
  164. package/src/utils/env.ts +10 -10
  165. package/tsconfig.build.json +7 -7
  166. package/tsconfig.json +32 -32
  167. package/webpack.cosmos.js +54 -54
@@ -1,74 +1,74 @@
1
- import { isTxFailed, sendTxAtom, txAtom } from '@huma-finance/shared'
2
- import { useAtom } from 'jotai'
3
- import { useResetAtom } from 'jotai/utils'
4
- import React, { useCallback, useEffect } from 'react'
5
-
6
- import { useAppDispatch, useAppSelector } from '../hooks/useRedux'
7
- import { resetState, setError } from '../store/widgets.reducers'
8
- import { selectWidgetState } from '../store/widgets.selectors'
9
- import { WIDGET_STEP } from '../store/widgets.store'
10
- import { WCProps } from '../utilTypes'
11
- import { HumaModal, HumaModalHeader } from './humaModal'
12
- import { LoadingModal } from './LoadingModal'
13
-
14
- type Props = {
15
- isOpen: boolean
16
- isLoading?: boolean
17
- loadingTitle?: string
18
- handleClose: () => void
19
- handleSuccess?: (blockNumber: number) => void
20
- }
21
-
22
- export function WidgetWrapper({
23
- isOpen,
24
- isLoading = false,
25
- loadingTitle = '',
26
- handleClose,
27
- handleSuccess,
28
- children,
29
- }: WCProps<Props>): React.ReactElement | null {
30
- const dispatch = useAppDispatch()
31
- const { step } = useAppSelector(selectWidgetState)
32
- const [{ state, failReason, txReceipt }] = useAtom(sendTxAtom)
33
- const reset = useResetAtom(txAtom)
34
-
35
- useEffect(() => {
36
- if (isTxFailed(state) && failReason) {
37
- dispatch(setError({ errorMessage: failReason }))
38
- }
39
- }, [dispatch, failReason, state])
40
-
41
- useEffect(() => {
42
- if (step === WIDGET_STEP.Done && txReceipt) {
43
- if (handleSuccess) {
44
- handleSuccess(txReceipt.blockNumber)
45
- }
46
- }
47
- }, [handleSuccess, step, txReceipt])
48
-
49
- const handleCloseModal = useCallback(() => {
50
- reset()
51
- dispatch(resetState())
52
- handleClose()
53
- }, [dispatch, handleClose, reset])
54
-
55
- // when close modal, return null to make sure all the states are reset
56
- if (!isOpen) {
57
- return null
58
- }
59
-
60
- return (
61
- <HumaModal
62
- isOpen={isOpen}
63
- overflowY='auto'
64
- onClose={handleCloseModal}
65
- width='480px'
66
- padding='30px 40px'
67
- disableBackdropClick
68
- >
69
- <HumaModalHeader onClose={handleCloseModal} height={0} />
70
- {isLoading && <LoadingModal title={loadingTitle} />}
71
- {!isLoading && children}
72
- </HumaModal>
73
- )
74
- }
1
+ import { isTxFailed, sendTxAtom, txAtom } from '@huma-finance/shared'
2
+ import { useAtom } from 'jotai'
3
+ import { useResetAtom } from 'jotai/utils'
4
+ import React, { useCallback, useEffect } from 'react'
5
+
6
+ import { useAppDispatch, useAppSelector } from '../hooks/useRedux'
7
+ import { resetState, setError } from '../store/widgets.reducers'
8
+ import { selectWidgetState } from '../store/widgets.selectors'
9
+ import { WIDGET_STEP } from '../store/widgets.store'
10
+ import { WCProps } from '../utilTypes'
11
+ import { HumaModal, HumaModalHeader } from './humaModal'
12
+ import { LoadingModal } from './LoadingModal'
13
+
14
+ type Props = {
15
+ isOpen: boolean
16
+ isLoading?: boolean
17
+ loadingTitle?: string
18
+ handleClose: () => void
19
+ handleSuccess?: (blockNumber: number) => void
20
+ }
21
+
22
+ export function WidgetWrapper({
23
+ isOpen,
24
+ isLoading = false,
25
+ loadingTitle = '',
26
+ handleClose,
27
+ handleSuccess,
28
+ children,
29
+ }: WCProps<Props>): React.ReactElement | null {
30
+ const dispatch = useAppDispatch()
31
+ const { step } = useAppSelector(selectWidgetState)
32
+ const [{ state, failReason, txReceipt }] = useAtom(sendTxAtom)
33
+ const reset = useResetAtom(txAtom)
34
+
35
+ useEffect(() => {
36
+ if (isTxFailed(state) && failReason) {
37
+ dispatch(setError({ errorMessage: failReason }))
38
+ }
39
+ }, [dispatch, failReason, state])
40
+
41
+ useEffect(() => {
42
+ if (step === WIDGET_STEP.Done && txReceipt) {
43
+ if (handleSuccess) {
44
+ handleSuccess(txReceipt.blockNumber)
45
+ }
46
+ }
47
+ }, [handleSuccess, step, txReceipt])
48
+
49
+ const handleCloseModal = useCallback(() => {
50
+ reset()
51
+ dispatch(resetState())
52
+ handleClose()
53
+ }, [dispatch, handleClose, reset])
54
+
55
+ // when close modal, return null to make sure all the states are reset
56
+ if (!isOpen) {
57
+ return null
58
+ }
59
+
60
+ return (
61
+ <HumaModal
62
+ isOpen={isOpen}
63
+ overflowY='auto'
64
+ onClose={handleCloseModal}
65
+ width='480px'
66
+ padding='30px 40px'
67
+ disableBackdropClick
68
+ >
69
+ <HumaModalHeader onClose={handleCloseModal} height={0} />
70
+ {isLoading && <LoadingModal title={loadingTitle} />}
71
+ {!isLoading && children}
72
+ </HumaModal>
73
+ )
74
+ }
@@ -1,54 +1,54 @@
1
- import { Box, css, Typography, useTheme } from '@mui/material'
2
- import React from 'react'
3
-
4
- type Props = {
5
- title: string
6
- subTitle?: string | React.ReactNode
7
- children: React.ReactNode
8
- }
9
-
10
- export function WrapperModal({
11
- title,
12
- subTitle,
13
- children,
14
- }: Props): React.ReactElement {
15
- const theme = useTheme()
16
-
17
- const styles = {
18
- wrapper: css`
19
- height: 518px;
20
- position: relative;
21
- `,
22
- header: css`
23
- ${theme.cssMixins.rowHCentered};
24
- font-family: 'Uni-Neue-Bold';
25
- font-size: 20px;
26
- margin-top: -5px;
27
- `,
28
- content: css`
29
- ${theme.cssMixins.rowHCentered};
30
- margin-top: 30px;
31
- font-family: 'Uni-Neue-Regular';
32
- font-size: 16px;
33
- line-height: 24px;
34
- color: #49505b;
35
- `,
36
- bottom: css`
37
- & .MuiButtonBase-root {
38
- width: 100%;
39
- position: absolute;
40
- bottom: 0;
41
- }
42
- `,
43
- }
44
-
45
- return (
46
- <Box css={styles.wrapper}>
47
- <Typography variant='h6' css={styles.header}>
48
- {title}
49
- </Typography>
50
- {subTitle && <Box css={styles.content}>{subTitle}</Box>}
51
- {children}
52
- </Box>
53
- )
54
- }
1
+ import { Box, css, Typography, useTheme } from '@mui/material'
2
+ import React from 'react'
3
+
4
+ type Props = {
5
+ title: string
6
+ subTitle?: string | React.ReactNode
7
+ children: React.ReactNode
8
+ }
9
+
10
+ export function WrapperModal({
11
+ title,
12
+ subTitle,
13
+ children,
14
+ }: Props): React.ReactElement {
15
+ const theme = useTheme()
16
+
17
+ const styles = {
18
+ wrapper: css`
19
+ height: 518px;
20
+ position: relative;
21
+ `,
22
+ header: css`
23
+ ${theme.cssMixins.rowHCentered};
24
+ font-family: 'Uni-Neue-Bold';
25
+ font-size: 20px;
26
+ margin-top: -5px;
27
+ `,
28
+ content: css`
29
+ ${theme.cssMixins.rowHCentered};
30
+ margin-top: 30px;
31
+ font-family: 'Uni-Neue-Regular';
32
+ font-size: 16px;
33
+ line-height: 24px;
34
+ color: #49505b;
35
+ `,
36
+ bottom: css`
37
+ & .MuiButtonBase-root {
38
+ width: 100%;
39
+ position: absolute;
40
+ bottom: 0;
41
+ }
42
+ `,
43
+ }
44
+
45
+ return (
46
+ <Box css={styles.wrapper}>
47
+ <Typography variant='h6' css={styles.header}>
48
+ {title}
49
+ </Typography>
50
+ {subTitle && <Box css={styles.content}>{subTitle}</Box>}
51
+ {children}
52
+ </Box>
53
+ )
54
+ }
@@ -1,36 +1,36 @@
1
- import { Box, Button, css } from '@mui/material'
2
-
3
- type Props = {
4
- title: string
5
- className?: string
6
- handleClick: () => void
7
- disabled?: boolean
8
- }
9
-
10
- export function TableActionButton({
11
- title,
12
- className,
13
- handleClick,
14
- disabled = false,
15
- }: Props): React.ReactElement {
16
- const styles = css`
17
- border: none;
18
- padding: 0;
19
- background: ${disabled ? 'unset !important' : 'inherit'};
20
- &:hover {
21
- border: none;
22
- }
23
- `
24
-
25
- return (
26
- <Button
27
- className={className}
28
- variant={disabled ? undefined : 'outlined'}
29
- onClick={handleClick}
30
- css={styles}
31
- disabled={disabled}
32
- >
33
- <Box>{title}</Box>
34
- </Button>
35
- )
36
- }
1
+ import { Box, Button, css } from '@mui/material'
2
+
3
+ type Props = {
4
+ title: string
5
+ className?: string
6
+ handleClick: () => void
7
+ disabled?: boolean
8
+ }
9
+
10
+ export function TableActionButton({
11
+ title,
12
+ className,
13
+ handleClick,
14
+ disabled = false,
15
+ }: Props): React.ReactElement {
16
+ const styles = css`
17
+ border: none;
18
+ padding: 0;
19
+ background: ${disabled ? 'unset !important' : 'inherit'};
20
+ &:hover {
21
+ border: none;
22
+ }
23
+ `
24
+
25
+ return (
26
+ <Button
27
+ className={className}
28
+ variant={disabled ? undefined : 'outlined'}
29
+ onClick={handleClick}
30
+ css={styles}
31
+ disabled={disabled}
32
+ >
33
+ <Box>{title}</Box>
34
+ </Button>
35
+ )
36
+ }
@@ -1 +1 @@
1
- export * from './TableActionButton'
1
+ export * from './TableActionButton'
@@ -1,68 +1,68 @@
1
- import { css } from '@emotion/react'
2
- import { Dialog } from '@mui/material'
3
- import { useMQ } from '@huma-finance/shared'
4
- import React from 'react'
5
-
6
- import { white } from '../../theme/palette'
7
-
8
- type HumaModalType = {
9
- children?: React.ReactNode
10
- isOpen: boolean
11
- onClose: () => void
12
- overflow?: string
13
- overflowY?: 'visible' | 'hidden' | 'clip' | 'scroll' | 'auto'
14
- width?: string
15
- padding?: string
16
- disableBackdropClick?: boolean
17
- }
18
-
19
- export function HumaModal({
20
- children,
21
- isOpen,
22
- onClose,
23
- overflow,
24
- overflowY,
25
- width = '480px',
26
- padding = '30px',
27
- disableBackdropClick = false,
28
- }: HumaModalType): React.ReactElement {
29
- const { isXsSize } = useMQ()
30
-
31
- const styles = {
32
- wrapper: css`
33
- max-width: 100vw;
34
- width: ${isXsSize ? '100%' : width};
35
- height: auto;
36
- padding: ${padding};
37
- box-sizing: border-box;
38
- `,
39
- }
40
-
41
- const handleClose = (reason: 'backdropClick' | 'escapeKeyDown') => {
42
- if (!disableBackdropClick) {
43
- onClose()
44
- } else if (reason !== 'backdropClick' && reason !== 'escapeKeyDown') {
45
- onClose()
46
- }
47
- }
48
-
49
- return (
50
- <Dialog
51
- disableScrollLock
52
- maxWidth={false}
53
- fullScreen={isXsSize}
54
- open={isOpen}
55
- PaperProps={{
56
- style: {
57
- background: white,
58
- borderRadius: '16px',
59
- overflow: overflow || 'inherit',
60
- overflowY: overflowY || 'inherit',
61
- },
62
- }}
63
- onClose={(event, reason) => handleClose(reason)}
64
- >
65
- <div css={styles.wrapper}>{children}</div>
66
- </Dialog>
67
- )
68
- }
1
+ import { css } from '@emotion/react'
2
+ import { Dialog } from '@mui/material'
3
+ import { useMQ } from '@huma-finance/shared'
4
+ import React from 'react'
5
+
6
+ import { white } from '../../theme/palette'
7
+
8
+ type HumaModalType = {
9
+ children?: React.ReactNode
10
+ isOpen: boolean
11
+ onClose: () => void
12
+ overflow?: string
13
+ overflowY?: 'visible' | 'hidden' | 'clip' | 'scroll' | 'auto'
14
+ width?: string
15
+ padding?: string
16
+ disableBackdropClick?: boolean
17
+ }
18
+
19
+ export function HumaModal({
20
+ children,
21
+ isOpen,
22
+ onClose,
23
+ overflow,
24
+ overflowY,
25
+ width = '480px',
26
+ padding = '30px',
27
+ disableBackdropClick = false,
28
+ }: HumaModalType): React.ReactElement {
29
+ const { isXsSize } = useMQ()
30
+
31
+ const styles = {
32
+ wrapper: css`
33
+ max-width: 100vw;
34
+ width: ${isXsSize ? '100%' : width};
35
+ height: auto;
36
+ padding: ${padding};
37
+ box-sizing: border-box;
38
+ `,
39
+ }
40
+
41
+ const handleClose = (reason: 'backdropClick' | 'escapeKeyDown') => {
42
+ if (!disableBackdropClick) {
43
+ onClose()
44
+ } else if (reason !== 'backdropClick' && reason !== 'escapeKeyDown') {
45
+ onClose()
46
+ }
47
+ }
48
+
49
+ return (
50
+ <Dialog
51
+ disableScrollLock
52
+ maxWidth={false}
53
+ fullScreen={isXsSize}
54
+ open={isOpen}
55
+ PaperProps={{
56
+ style: {
57
+ background: white,
58
+ borderRadius: '16px',
59
+ overflow: overflow || 'inherit',
60
+ overflowY: overflowY || 'inherit',
61
+ },
62
+ }}
63
+ onClose={(event, reason) => handleClose(reason)}
64
+ >
65
+ <div css={styles.wrapper}>{children}</div>
66
+ </Dialog>
67
+ )
68
+ }
@@ -1,70 +1,70 @@
1
- /* eslint-disable jsx-a11y/no-static-element-interactions */
2
- /* eslint-disable jsx-a11y/click-events-have-key-events */
3
- import { css } from '@emotion/react'
4
- import ChevronLeftOutlinedIcon from '@mui/icons-material/ChevronLeftOutlined'
5
- import CloseIcon from '@mui/icons-material/Close'
6
- import { useTheme } from '@mui/material'
7
- import React from 'react'
8
-
9
- type HumaModalHeaderType = {
10
- allowBack?: boolean
11
- children?: React.ReactNode
12
- hideClose?: boolean
13
- onBack?: () => void
14
- onClose: () => void
15
- title?: React.ReactNode
16
- height?: number
17
- }
18
-
19
- export function HumaModalHeader({
20
- hideClose,
21
- allowBack,
22
- onBack = (): void => {},
23
- onClose,
24
- height = 52,
25
- ...props
26
- }: HumaModalHeaderType): React.ReactElement {
27
- const theme = useTheme()
28
- const styles = {
29
- buttonBackWrapper: css`
30
- cursor: pointer;
31
- position: absolute;
32
- left: ${theme.spacing(2)};
33
- top: ${theme.spacing(3)};
34
- `,
35
- buttonClose: css`
36
- &:hover {
37
- stroke: ${theme.palette.grey[200]};
38
- }
39
- stroke: ${theme.palette.common.white};
40
- `,
41
- buttonCloseWrapper: css`
42
- cursor: pointer;
43
- position: absolute;
44
- right: ${theme.spacing(3)};
45
- top: ${theme.spacing(3)};
46
- `,
47
- headerBand: css`
48
- height: ${height}px;
49
- `,
50
- }
51
-
52
- return (
53
- <div>
54
- <div css={styles.headerBand}>
55
- {props.title}
56
- {!!allowBack && (
57
- <div css={styles.buttonBackWrapper} onClick={onBack}>
58
- <ChevronLeftOutlinedIcon height={16} width={16} />
59
- </div>
60
- )}
61
- {!hideClose && (
62
- <div css={styles.buttonCloseWrapper} onClick={onClose}>
63
- <CloseIcon css={styles.buttonClose} height={16} width={16} />
64
- </div>
65
- )}
66
- </div>
67
- <div>{props.children}</div>
68
- </div>
69
- )
70
- }
1
+ /* eslint-disable jsx-a11y/no-static-element-interactions */
2
+ /* eslint-disable jsx-a11y/click-events-have-key-events */
3
+ import { css } from '@emotion/react'
4
+ import ChevronLeftOutlinedIcon from '@mui/icons-material/ChevronLeftOutlined'
5
+ import CloseIcon from '@mui/icons-material/Close'
6
+ import { useTheme } from '@mui/material'
7
+ import React from 'react'
8
+
9
+ type HumaModalHeaderType = {
10
+ allowBack?: boolean
11
+ children?: React.ReactNode
12
+ hideClose?: boolean
13
+ onBack?: () => void
14
+ onClose: () => void
15
+ title?: React.ReactNode
16
+ height?: number
17
+ }
18
+
19
+ export function HumaModalHeader({
20
+ hideClose,
21
+ allowBack,
22
+ onBack = (): void => {},
23
+ onClose,
24
+ height = 52,
25
+ ...props
26
+ }: HumaModalHeaderType): React.ReactElement {
27
+ const theme = useTheme()
28
+ const styles = {
29
+ buttonBackWrapper: css`
30
+ cursor: pointer;
31
+ position: absolute;
32
+ left: ${theme.spacing(2)};
33
+ top: ${theme.spacing(3)};
34
+ `,
35
+ buttonClose: css`
36
+ &:hover {
37
+ stroke: ${theme.palette.grey[200]};
38
+ }
39
+ stroke: ${theme.palette.common.white};
40
+ `,
41
+ buttonCloseWrapper: css`
42
+ cursor: pointer;
43
+ position: absolute;
44
+ right: ${theme.spacing(3)};
45
+ top: ${theme.spacing(3)};
46
+ `,
47
+ headerBand: css`
48
+ height: ${height}px;
49
+ `,
50
+ }
51
+
52
+ return (
53
+ <div>
54
+ <div css={styles.headerBand}>
55
+ {props.title}
56
+ {!!allowBack && (
57
+ <div css={styles.buttonBackWrapper} onClick={onBack}>
58
+ <ChevronLeftOutlinedIcon height={16} width={16} />
59
+ </div>
60
+ )}
61
+ {!hideClose && (
62
+ <div css={styles.buttonCloseWrapper} onClick={onClose}>
63
+ <CloseIcon css={styles.buttonClose} height={16} width={16} />
64
+ </div>
65
+ )}
66
+ </div>
67
+ <div>{props.children}</div>
68
+ </div>
69
+ )
70
+ }
@@ -1,2 +1,2 @@
1
- export * from './HumaModal'
2
- export * from './HumaModalHeader'
1
+ export * from './HumaModal'
2
+ export * from './HumaModalHeader'