@huma-finance/widgets 0.0.7 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/.env.example +2 -2
  2. package/.eslintignore +2 -2
  3. package/.eslintrc.js +64 -64
  4. package/.prettierignore +4 -4
  5. package/.prettierrc.js +16 -16
  6. package/API.md +331 -331
  7. package/LICENSE +660 -660
  8. package/README.md +48 -48
  9. package/babel.config.js +15 -15
  10. package/config-overrides.js +9 -9
  11. package/cosmos.config.json +7 -7
  12. package/cypress/e2e/01-invoice-factoring-borrow.test.ts +62 -62
  13. package/cypress/support/e2e.ts +76 -76
  14. package/cypress/support/ethereum.ts +142 -142
  15. package/cypress/tsconfig.json +9 -9
  16. package/cypress/utils/index.ts +54 -54
  17. package/cypress.config.ts +20 -20
  18. package/jsdoc2md.json +20 -20
  19. package/package.json +4 -4
  20. package/public/index.html +40 -40
  21. package/public/manifest.json +25 -25
  22. package/public/robots.txt +3 -3
  23. package/rollup.config.js +81 -81
  24. package/src/components/ApolloWrapper.tsx +15 -15
  25. package/src/components/BottomButton.tsx +31 -31
  26. package/src/components/Factoring/index.ts +2 -2
  27. package/src/components/HumaLoading.tsx +68 -68
  28. package/src/components/HumaTable.tsx +158 -158
  29. package/src/components/InvoiceFactoring/borrow/3-ChooseAmount.tsx +13 -19
  30. package/src/components/InvoiceFactoring/borrow/4-ConfirmTransfer.tsx +3 -3
  31. package/src/components/InvoiceFactoring/borrow/7-Success.tsx +20 -20
  32. package/src/components/Lend/supply/4-ConfirmTransfer.tsx +3 -3
  33. package/src/components/LoadingModal.tsx +49 -49
  34. package/src/components/StreamFactoring/borrow/2-ChooseAmount.tsx +11 -11
  35. package/src/components/StreamFactoring/borrow/3-ConfirmTransfer.tsx +3 -3
  36. package/src/components/StreamFactoring/borrow/4-ApproveAllowance.tsx +2 -2
  37. package/src/components/StreamFactoring/borrow/7-Success.tsx +20 -20
  38. package/src/components/SuperfluidFactoring/SuperfluidUpcomingList.tsx +1 -1
  39. package/src/components/SuperfluidFactoring/index.tsx +1 -1
  40. package/src/components/WrapperModal.tsx +54 -54
  41. package/src/components/buttons/TableActionButton.tsx +36 -36
  42. package/src/components/buttons/index.ts +1 -1
  43. package/src/components/humaModal/HumaModalHeader.tsx +70 -70
  44. package/src/components/humaModal/index.tsx +2 -2
  45. package/src/components/icons/approve-lender.svg +30 -30
  46. package/src/components/icons/auto-payback.svg +40 -40
  47. package/src/components/icons/check-circle.svg +3 -3
  48. package/src/components/icons/check-green.svg +3 -3
  49. package/src/components/icons/check.svg +10 -10
  50. package/src/components/icons/donut.svg +904 -904
  51. package/src/components/icons/ellipse.svg +3 -3
  52. package/src/components/icons/huma-full.svg +22 -22
  53. package/src/components/icons/huma.svg +15 -15
  54. package/src/components/icons/index.tsx +93 -93
  55. package/src/components/icons/loader.svg +229 -229
  56. package/src/components/icons/metamask.svg +31 -31
  57. package/src/components/icons/polygon.svg +16 -16
  58. package/src/components/icons/receipt.svg +3 -3
  59. package/src/components/icons/separator.svg +3 -3
  60. package/src/components/icons/sorry.svg +31 -31
  61. package/src/components/icons/usdc.svg +5 -5
  62. package/src/components/icons/wallet-connect.svg +11 -11
  63. package/src/cosmos/CreditLineBorrow.fixture.tsx +85 -85
  64. package/src/cosmos/CreditLinePayment.fixture.tsx +49 -49
  65. package/src/cosmos/InvoiceFactoringBorrow.fixture.tsx +111 -111
  66. package/src/cosmos/InvoiceFactoringPayment.fixture.tsx +67 -67
  67. package/src/cosmos/LendSupply.fixture.tsx +75 -75
  68. package/src/cosmos/LendWithdraw.fixture.tsx +43 -43
  69. package/src/cosmos/SDKTesting.fixture.tsx +32 -23
  70. package/src/cosmos/SuperfluidFactoringBorrow.fixture.tsx +12 -12
  71. package/src/cosmos/WalletWrapper.tsx +52 -52
  72. package/src/cosmos/abis/InvoiceNFT.json +644 -644
  73. package/src/cosmos/abis/ReceivableFactoringPool.json +1529 -1529
  74. package/src/cosmos/utils/index.ts +169 -169
  75. package/src/fonts/Recoleta/Recoleta-Black.otf +0 -0
  76. package/src/fonts/Recoleta/Recoleta-Bold.otf +0 -0
  77. package/src/fonts/Recoleta/Recoleta-Light.otf +0 -0
  78. package/src/fonts/Recoleta/Recoleta-Medium.otf +0 -0
  79. package/src/fonts/Recoleta/Recoleta-Regular.otf +0 -0
  80. package/src/fonts/Recoleta/Recoleta-RegularDEMO.otf +0 -0
  81. package/src/fonts/Recoleta/Recoleta-SemiBold.otf +0 -0
  82. package/src/fonts/Recoleta/Recoleta-Thin.otf +0 -0
  83. package/src/hooks/useEA.ts +11 -9
  84. package/src/hooks/useRedux.ts +6 -6
  85. package/src/index.css +61 -61
  86. package/src/index.tsx +1 -7
  87. package/src/react-app-env.d.ts +1 -1
  88. package/src/reportWebVitals.ts +15 -15
  89. package/src/setupTests.ts +6 -6
  90. package/src/store/index.ts +27 -27
  91. package/src/store/widgets.reducers.ts +7 -7
  92. package/src/store/widgets.selectors.ts +3 -3
  93. package/src/store/widgets.store.ts +2 -2
  94. package/src/theme/breakpoints.ts +10 -10
  95. package/src/theme/components.ts +70 -70
  96. package/src/theme/coreThemeConstants.ts +29 -29
  97. package/src/theme/cssMixins.ts +92 -92
  98. package/src/theme/hooks/useGetSizes.ts +31 -34
  99. package/src/theme/index.ts +24 -24
  100. package/src/theme/palette.ts +150 -150
  101. package/src/theme/shape.ts +7 -7
  102. package/src/theme/theme.types.ts +80 -80
  103. package/src/theme/typography.ts +117 -117
  104. package/src/utilTypes.d.ts +29 -29
  105. package/src/utils/env.ts +9 -9
  106. package/tsconfig.build.json +7 -7
  107. package/tsconfig.json +32 -32
  108. package/webpack.cosmos.js +54 -54
  109. package/dist/assets/output-15e10f9f.css +0 -44
  110. package/dist/cjs/assets/output-15e10f9f.css +0 -44
  111. package/dist/cjs/index.cjs +0 -17576
  112. package/dist/cjs/index.cjs.map +0 -1
  113. package/dist/index.d.ts +0 -211
  114. package/dist/index.js +0 -17529
  115. package/dist/index.js.map +0 -1
@@ -13,7 +13,7 @@ export function ConfirmTransfer(): React.ReactElement | null {
13
13
  const theme = useTheme()
14
14
  const dispatch = useAppDispatch()
15
15
  const { chainId } = useWeb3React()
16
- const { borrowAmount, approveInfo } = useAppSelector(selectWidgetState)
16
+ const { borrowAmount, approval } = useAppSelector(selectWidgetState)
17
17
 
18
18
  const styles = {
19
19
  wrapper: css`
@@ -70,7 +70,7 @@ export function ConfirmTransfer(): React.ReactElement | null {
70
70
  dispatch(setStep(step))
71
71
  }
72
72
 
73
- if (isEmpty(borrowAmount) || isEmpty(approveInfo)) {
73
+ if (isEmpty(borrowAmount) || isEmpty(approval)) {
74
74
  return null
75
75
  }
76
76
 
@@ -90,7 +90,7 @@ export function ConfirmTransfer(): React.ReactElement | null {
90
90
  </Box>
91
91
  <Box css={styles.transfer}>
92
92
  <Box>
93
- {borrowAmount!.toFixed(2)} {approveInfo?.tokenSymbol}
93
+ {borrowAmount!.toFixed(2)} {approval?.token.symbol}
94
94
  </Box>
95
95
  <ArrowForwardIosIcon css={styles.arrow} />
96
96
  <Box>You</Box>
@@ -24,7 +24,7 @@ export function ApproveAllowance({
24
24
  }: Props): React.ReactElement | null {
25
25
  const dispatch = useDispatch()
26
26
  const { account } = useWeb3React()
27
- const { borrowAmount, approveInfo } = useAppSelector(selectWidgetState)
27
+ const { borrowAmount, approval } = useAppSelector(selectWidgetState)
28
28
  const { allowance, loaded } = usePoolAllowance(
29
29
  poolInfo.poolName,
30
30
  poolInfo.poolType,
@@ -49,7 +49,7 @@ export function ApproveAllowance({
49
49
  if (!newAllowance) {
50
50
  return (
51
51
  <LoadingModal
52
- title={`Approve ${approveInfo?.tokenSymbol}`}
52
+ title={`Approve ${approval?.token?.symbol}`}
53
53
  description='Waiting for approval confirmation...'
54
54
  />
55
55
  )
@@ -1,20 +1,20 @@
1
- import React from 'react'
2
- import { useAppSelector } from '../../../hooks/useRedux'
3
- import { selectWidgetState } from '../../../store/widgets.selectors'
4
- import { TxDoneModal } from '../../TxDoneModal'
5
-
6
- type Props = {
7
- handleAction: () => void
8
- }
9
-
10
- export function Success({ handleAction }: Props): React.ReactElement {
11
- const { borrowAmount, approveInfo } = useAppSelector(selectWidgetState)
12
-
13
- const content = [
14
- `${borrowAmount?.toFixed(2)} ${
15
- approveInfo?.tokenSymbol
16
- } is now in your wallet.`,
17
- ]
18
-
19
- return <TxDoneModal handleAction={handleAction} content={content} />
20
- }
1
+ import React from 'react'
2
+ import { useAppSelector } from '../../../hooks/useRedux'
3
+ import { selectWidgetState } from '../../../store/widgets.selectors'
4
+ import { TxDoneModal } from '../../TxDoneModal'
5
+
6
+ type Props = {
7
+ handleAction: () => void
8
+ }
9
+
10
+ export function Success({ handleAction }: Props): React.ReactElement {
11
+ const { borrowAmount, approval } = useAppSelector(selectWidgetState)
12
+
13
+ const content = [
14
+ `${borrowAmount?.toFixed(2)} ${
15
+ approval?.token.symbol
16
+ } is now in your wallet.`,
17
+ ]
18
+
19
+ return <TxDoneModal handleAction={handleAction} content={content} />
20
+ }
@@ -124,7 +124,7 @@ export function SuperfluidUpcomingList({
124
124
  const { data } = useQuery<{ streams: Stream[] }>(GET_RECEIVED_STREAMS, {
125
125
  variables: {
126
126
  receiver: account ? account.toLowerCase() : undefined,
127
- tokenIds: poolInfo?.extra?.superTokens.map((item) => item.id) ?? [],
127
+ tokenIds: poolInfo?.extra?.superTokens?.map((item) => item.id) ?? [],
128
128
  },
129
129
  })
130
130
 
@@ -38,7 +38,7 @@ export function SuperfluidFactoring(): React.ReactElement {
38
38
  <Box css={styles.wrapper}>
39
39
  <Box css={styles.title}>Stream Factoring</Box>
40
40
  <Box css={styles.description} marginBottom='47px'>
41
- {PoolMap.Stream[poolName].borrowDesc}
41
+ {PoolMap.Stream[poolName]?.borrowDesc}
42
42
  </Box>
43
43
  {poolInfo && (
44
44
  <SuperfluidFactoredList
@@ -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,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'
@@ -1,30 +1,30 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="246" height="231" fill="none" viewBox="0 0 246 231">
2
- <path stroke="#000" d="M217.875 117.345a.487.487 0 1 0 0-.974.487.487 0 0 0 0 .974ZM61.268 163.38a.487.487 0 1 0 0-.974.487.487 0 0 0 0 .974Zm-36.873 14.304a.487.487 0 1 0 0-.974.487.487 0 0 0 0 .974Zm-.908-162.709a.487.487 0 1 0 0-.975.487.487 0 0 0 0 .975Zm135.609 15.076a.488.488 0 1 0 0-.976.488.488 0 0 0 0 .976ZM93.62 189.508a.487.487 0 1 0 0-.975.487.487 0 0 0 0 .975Z"/>
3
- <path stroke="#000" stroke-linecap="round" d="m214.338 44.34 2.684 1.952"/>
4
- <path stroke="#A363F4" stroke-linecap="round" d="M15.164 171c-2.998 4.153-6.873 11.115-7.164 16.646m32.208 31.238a29.811 29.811 0 0 1-4.524-.062m-27.66-29.566c.055.609.165 1.193.338 1.745m.348.892c.29.607.671 1.165 1.158 1.66m.485.444c.735.607 1.662 1.097 2.808 1.446 10.258 3.126 17.831-7.246 20.335-12.822 1.761-4.303 1.703-10.9-5.51-6.812-7.212 4.086-9.55 17.53-9.817 23.742-.022 4.682 1.991 12.432 8.867 16.574m1.411.764c.33.16.67.312 1.019.455m.776.299c.603.218 1.233.411 1.892.577m.791.185c.651.139 1.33.252 2.035.339"/>
5
- <path stroke="#000" stroke-linecap="round" d="M171 36.624c7.505-11.578 22.634-31.055 23.108-16.338.594 18.395-5.272 9.529-3.431 4.138 2.297-6.723 9.495-11.486 17.612-7.198m-46.81 52.681 2.684 1.953M115 2.626 117.893 1M76.568 210.462l2.684 1.952m-75.505-80.7-2.723 1.897m159.434 68.13-2.723 1.897m70.875-48.419-2.724 1.898M14.323 50.414l-1.925-2.704m217.698-31.277 3.089-1.213M211 5l1.806 2.785M1 204.976l1.805 2.784"/>
6
- <path stroke="#A363F4" d="m153.061 80.582 19.053.451m-40.582 107.563 44.841.879m10.574-108.09 19.94.474v108.197l-21.926-.425"/>
7
- <path stroke="#A363F4" stroke-linecap="round" d="M172.855 93.715h19.711m-31.083 12.003h27.799m-36.012 12.13h37.275m-35.885 11.246h32.473m-33.863 14.784h33.863m-29.946 13.773 23.123 1.39"/>
8
- <path stroke="#000" d="m39.007 39.073 23.1-23.686m-23.1 23.686 2.154 136.638H99.9M39.007 39.073l23.1 4.11V15.388m0 0h91.026v142.48m-10.536 17.844h-15.049"/>
9
- <path stroke="#000" stroke-linecap="round" d="m52.5 113 4.684 6.127L69.5 105.5m-17-21c.254.635 2.5 4 4.684 6.387L68 77.085M52.5 55.5l4.684 6.037 4.124-6.037m3.967 6.989h50.648m18.364 0H119.41M66.703 89.777h11.105m-11.106 27.922h37.918"/>
10
- <path fill="#000" d="M82.439 111.271c-10.332-6.935-12.36-34.654-12.22-48.7 2.774 10.675 9.102 33.31 12.22 38.451 3.119 5.141 9.797 2.984 12.746 1.263l12.326-5.583-1.42 11.537c-5.878 4.306-17.587 7.102-23.652 3.032Zm58.592-4.658 12.008 51.485-7.925-58.605 7.925 6.259v3.174c2.955 1.85 7.132 2.875 11.835 2.468 12.346-1.066 15.158-17.043 18.675-25.652l6.547-4.686h-2.417l-5.452 3.364-1.146 2.115c-2.978 5.326-10.388 16.796-16.207 20.078-5.819 3.283-10.314-1.367-11.835-4.102l-12.008-12.345v16.447Z"/>
11
- <path stroke="#000" stroke-linecap="round" d="M105.467 110.895c-1.692 13.658-5.128 43.751-5.73 55.781-.6 12.029 2.256 34.333 3.759 43.982l33.269-3.196-11.465-39.095 1.599-21.217m1.22-16.187-1.22 16.187m0 0c.407 7.698 5.619 25.089 23.211 33.058 17.593 7.969 30.387 10.464 34.585 10.714l6.766-22.555-38.72-10.526-10.697-50.524"/>
12
- <path fill="#000" d="M126.49 229.746h7.797l-3.936-21.82-14.189 1.567 1.251 3.96-31.537 16.293H122.3l3.492-4.772.698 4.772Zm83.397-45.501 2.365-7.429-22.188-2.953-4.259 14.079 5.804.01 5.956 34.994 11.052-34.709-3.488-4.774 4.758.782Z"/>
13
- <path stroke="#000" d="m115.14 68.176-.054-.298-.303-.004a19.468 19.468 0 0 1-1.257-.065c.905-.818 1.457-1.875 1.758-3.093a9.582 9.582 0 0 1 .539-1.573c.83-1.88 2.162-3.313 3.631-4.115 1.468-.801 3.052-.966 4.423-.36 1.373.606 2.319 1.887 2.716 3.511.396 1.626.236 3.575-.594 5.456-.83 1.882-2.163 3.313-3.631 4.115-1.467.802-3.052.967-4.424.36-1.488-.657-2.477-2.11-2.804-3.934Z" clip-rule="evenodd"/>
14
- <path fill="#000" d="M121.125 66.359c-2.728-2.343-2.709-5.886-2.41-7.142 4.517-4.153 10.992-1.8 11.644 3.331 0 3.115.34 4.73 1.447 5.528 2.598 1.353 2.535 4.133 2.374 5.715l-9.096.541-.591-4.732c-.911-.178-1.564-.846-1.806-1.216.904-.447 1.989-1.7 1.094-2.72-.896-1.023-2.778.588-2.656.695Z"/>
15
- <path stroke="#000" stroke-linecap="round" d="M116.521 64.11c.455-.443 1.657-1.07 2.835-.04m-2.432 5.632c.355.026 1.17-.112 1.587-.865m-1.852-3.151c.382-.544 1.434-1.334 2.594-.143"/>
16
- <path fill="#000" d="M117.981 66.08a.531.531 0 1 0-.059-1.061.531.531 0 0 0 .059 1.06Z"/>
17
- <path stroke="#000" stroke-linecap="round" d="M121.541 67.269c.17-.312.726-.923 1.586-.867"/>
18
- <path stroke="#000" stroke-linecap="round" d="M122.324 66.642c.234.063.613.359.251 1.043m-3.537 5.037.22 2.24m5.353-4.649.492 4.24"/>
19
- <path fill="#000" d="m119.549 74.485-.642-2.155c2.057.197 4.117-.67 4.891-1.13-1.549 2.072-3.479 3.053-4.249 3.285Z"/>
20
- <path stroke="#000" stroke-linecap="round" d="M14.943 230h229.992"/>
21
- <path stroke="#000" d="m180.362 87.471 1.694-2.987 14.07-8.565c1.385-.793 1.391-1.613.104-1.803 1.109-.264 2.164-2.151.098-2.991.883-.424 1.342-1.813-.052-2.425-.144-.064-.549-.168-1.01-.078-.461.091-1.765.544-2.36.76l2.409-2.255c.746-.699.088-2.47-1.531-1.637l-10.001 6.718 2.258-5.695c.346-1.129-.823-3.052-2.559-1.186-.873.816-7.142 9.072-10.167 13.098l-1.499 4.046"/>
22
- <path stroke="#000" stroke-linecap="round" d="m196.293 74.098-7.753 3.785m7.881-6.8-8.428 4.077m5.222-6.013-5.167 3.768"/>
23
- <path stroke="#000" d="M82.297 58.438c-.149-.2-7.991-14.531-11.894-21.672-.737-1.349-2.491-.922-1.744 1.868a77.534 77.534 0 0 0 2.118 6.601c-3.903 1.35-11.198 6.029-9.155 13.95 2.117 8.407 2.678-3.052 4.172-3.114 1.196-.05 5.647 6.705 7.723 10.089"/>
24
- <path fill="#000" d="M118.822 72.413c-1.906-.158-3.156-2.239-3.544-3.26.294-.142.21-.153-2.467.936-2.676 1.088-2.645 3.95-2.295 5.244l8.646-.68-.34-2.24Z"/>
25
- <path fill="#A363F4" d="m108.855 75.05 28.279-1.54c4.59.573 9.197 4.569 10.926 6.495l13.057 15.42 10.694-15.42 10.197 6.058c-2.528 5.359-9.078 17.022-15.046 20.802-5.969 3.78-11.357-.083-13.306-2.488L141.47 91.196l1.367 17.907-37.802 2.238 1.492-13.679-12.433 6.715c-5.258 2.488-10.026 1.652-14.427-5.222-4.239-6.622-8.487-27.382-9.684-37.218l13.626-4.294 5.227 28.42c1.897-1.09 5.775-3.86 7.716-5.167 5.712-4.144 9.307-5.595 12.303-5.846Z"/>
26
- <path stroke="#000" stroke-linecap="round" d="m106.595 96.192.181-6.024m34.632-.643.181-6.023m19.279 18.713.181-6.023m-77.904-6.226 4.84-3.589"/>
27
- <path fill="#000" d="m104.823 115.177.416-3.865 10.194-.603v3.941l-10.61.527Zm37.637-6.066.9 4.154-6.466.32-.357-4.123 5.923-.351Zm-24.019 5.39v-3.969l15.575-.922v4.118l-15.575.773Z"/>
28
- <path stroke="#000" stroke-linecap="round" d="M107.275 116.857c.274 2.189 1.79 6.023 5.613 8.526m6.525 2.28c-2.688-.327-4.832-1.173-6.525-2.28m0 0-8.869 39.138 17.023 44.407"/>
29
- <path stroke="#000" d="m127.554 140.837 21.167 31.677 41.595-.889"/>
30
- </svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="246" height="231" fill="none" viewBox="0 0 246 231">
2
+ <path stroke="#000" d="M217.875 117.345a.487.487 0 1 0 0-.974.487.487 0 0 0 0 .974ZM61.268 163.38a.487.487 0 1 0 0-.974.487.487 0 0 0 0 .974Zm-36.873 14.304a.487.487 0 1 0 0-.974.487.487 0 0 0 0 .974Zm-.908-162.709a.487.487 0 1 0 0-.975.487.487 0 0 0 0 .975Zm135.609 15.076a.488.488 0 1 0 0-.976.488.488 0 0 0 0 .976ZM93.62 189.508a.487.487 0 1 0 0-.975.487.487 0 0 0 0 .975Z"/>
3
+ <path stroke="#000" stroke-linecap="round" d="m214.338 44.34 2.684 1.952"/>
4
+ <path stroke="#A363F4" stroke-linecap="round" d="M15.164 171c-2.998 4.153-6.873 11.115-7.164 16.646m32.208 31.238a29.811 29.811 0 0 1-4.524-.062m-27.66-29.566c.055.609.165 1.193.338 1.745m.348.892c.29.607.671 1.165 1.158 1.66m.485.444c.735.607 1.662 1.097 2.808 1.446 10.258 3.126 17.831-7.246 20.335-12.822 1.761-4.303 1.703-10.9-5.51-6.812-7.212 4.086-9.55 17.53-9.817 23.742-.022 4.682 1.991 12.432 8.867 16.574m1.411.764c.33.16.67.312 1.019.455m.776.299c.603.218 1.233.411 1.892.577m.791.185c.651.139 1.33.252 2.035.339"/>
5
+ <path stroke="#000" stroke-linecap="round" d="M171 36.624c7.505-11.578 22.634-31.055 23.108-16.338.594 18.395-5.272 9.529-3.431 4.138 2.297-6.723 9.495-11.486 17.612-7.198m-46.81 52.681 2.684 1.953M115 2.626 117.893 1M76.568 210.462l2.684 1.952m-75.505-80.7-2.723 1.897m159.434 68.13-2.723 1.897m70.875-48.419-2.724 1.898M14.323 50.414l-1.925-2.704m217.698-31.277 3.089-1.213M211 5l1.806 2.785M1 204.976l1.805 2.784"/>
6
+ <path stroke="#A363F4" d="m153.061 80.582 19.053.451m-40.582 107.563 44.841.879m10.574-108.09 19.94.474v108.197l-21.926-.425"/>
7
+ <path stroke="#A363F4" stroke-linecap="round" d="M172.855 93.715h19.711m-31.083 12.003h27.799m-36.012 12.13h37.275m-35.885 11.246h32.473m-33.863 14.784h33.863m-29.946 13.773 23.123 1.39"/>
8
+ <path stroke="#000" d="m39.007 39.073 23.1-23.686m-23.1 23.686 2.154 136.638H99.9M39.007 39.073l23.1 4.11V15.388m0 0h91.026v142.48m-10.536 17.844h-15.049"/>
9
+ <path stroke="#000" stroke-linecap="round" d="m52.5 113 4.684 6.127L69.5 105.5m-17-21c.254.635 2.5 4 4.684 6.387L68 77.085M52.5 55.5l4.684 6.037 4.124-6.037m3.967 6.989h50.648m18.364 0H119.41M66.703 89.777h11.105m-11.106 27.922h37.918"/>
10
+ <path fill="#000" d="M82.439 111.271c-10.332-6.935-12.36-34.654-12.22-48.7 2.774 10.675 9.102 33.31 12.22 38.451 3.119 5.141 9.797 2.984 12.746 1.263l12.326-5.583-1.42 11.537c-5.878 4.306-17.587 7.102-23.652 3.032Zm58.592-4.658 12.008 51.485-7.925-58.605 7.925 6.259v3.174c2.955 1.85 7.132 2.875 11.835 2.468 12.346-1.066 15.158-17.043 18.675-25.652l6.547-4.686h-2.417l-5.452 3.364-1.146 2.115c-2.978 5.326-10.388 16.796-16.207 20.078-5.819 3.283-10.314-1.367-11.835-4.102l-12.008-12.345v16.447Z"/>
11
+ <path stroke="#000" stroke-linecap="round" d="M105.467 110.895c-1.692 13.658-5.128 43.751-5.73 55.781-.6 12.029 2.256 34.333 3.759 43.982l33.269-3.196-11.465-39.095 1.599-21.217m1.22-16.187-1.22 16.187m0 0c.407 7.698 5.619 25.089 23.211 33.058 17.593 7.969 30.387 10.464 34.585 10.714l6.766-22.555-38.72-10.526-10.697-50.524"/>
12
+ <path fill="#000" d="M126.49 229.746h7.797l-3.936-21.82-14.189 1.567 1.251 3.96-31.537 16.293H122.3l3.492-4.772.698 4.772Zm83.397-45.501 2.365-7.429-22.188-2.953-4.259 14.079 5.804.01 5.956 34.994 11.052-34.709-3.488-4.774 4.758.782Z"/>
13
+ <path stroke="#000" d="m115.14 68.176-.054-.298-.303-.004a19.468 19.468 0 0 1-1.257-.065c.905-.818 1.457-1.875 1.758-3.093a9.582 9.582 0 0 1 .539-1.573c.83-1.88 2.162-3.313 3.631-4.115 1.468-.801 3.052-.966 4.423-.36 1.373.606 2.319 1.887 2.716 3.511.396 1.626.236 3.575-.594 5.456-.83 1.882-2.163 3.313-3.631 4.115-1.467.802-3.052.967-4.424.36-1.488-.657-2.477-2.11-2.804-3.934Z" clip-rule="evenodd"/>
14
+ <path fill="#000" d="M121.125 66.359c-2.728-2.343-2.709-5.886-2.41-7.142 4.517-4.153 10.992-1.8 11.644 3.331 0 3.115.34 4.73 1.447 5.528 2.598 1.353 2.535 4.133 2.374 5.715l-9.096.541-.591-4.732c-.911-.178-1.564-.846-1.806-1.216.904-.447 1.989-1.7 1.094-2.72-.896-1.023-2.778.588-2.656.695Z"/>
15
+ <path stroke="#000" stroke-linecap="round" d="M116.521 64.11c.455-.443 1.657-1.07 2.835-.04m-2.432 5.632c.355.026 1.17-.112 1.587-.865m-1.852-3.151c.382-.544 1.434-1.334 2.594-.143"/>
16
+ <path fill="#000" d="M117.981 66.08a.531.531 0 1 0-.059-1.061.531.531 0 0 0 .059 1.06Z"/>
17
+ <path stroke="#000" stroke-linecap="round" d="M121.541 67.269c.17-.312.726-.923 1.586-.867"/>
18
+ <path stroke="#000" stroke-linecap="round" d="M122.324 66.642c.234.063.613.359.251 1.043m-3.537 5.037.22 2.24m5.353-4.649.492 4.24"/>
19
+ <path fill="#000" d="m119.549 74.485-.642-2.155c2.057.197 4.117-.67 4.891-1.13-1.549 2.072-3.479 3.053-4.249 3.285Z"/>
20
+ <path stroke="#000" stroke-linecap="round" d="M14.943 230h229.992"/>
21
+ <path stroke="#000" d="m180.362 87.471 1.694-2.987 14.07-8.565c1.385-.793 1.391-1.613.104-1.803 1.109-.264 2.164-2.151.098-2.991.883-.424 1.342-1.813-.052-2.425-.144-.064-.549-.168-1.01-.078-.461.091-1.765.544-2.36.76l2.409-2.255c.746-.699.088-2.47-1.531-1.637l-10.001 6.718 2.258-5.695c.346-1.129-.823-3.052-2.559-1.186-.873.816-7.142 9.072-10.167 13.098l-1.499 4.046"/>
22
+ <path stroke="#000" stroke-linecap="round" d="m196.293 74.098-7.753 3.785m7.881-6.8-8.428 4.077m5.222-6.013-5.167 3.768"/>
23
+ <path stroke="#000" d="M82.297 58.438c-.149-.2-7.991-14.531-11.894-21.672-.737-1.349-2.491-.922-1.744 1.868a77.534 77.534 0 0 0 2.118 6.601c-3.903 1.35-11.198 6.029-9.155 13.95 2.117 8.407 2.678-3.052 4.172-3.114 1.196-.05 5.647 6.705 7.723 10.089"/>
24
+ <path fill="#000" d="M118.822 72.413c-1.906-.158-3.156-2.239-3.544-3.26.294-.142.21-.153-2.467.936-2.676 1.088-2.645 3.95-2.295 5.244l8.646-.68-.34-2.24Z"/>
25
+ <path fill="#A363F4" d="m108.855 75.05 28.279-1.54c4.59.573 9.197 4.569 10.926 6.495l13.057 15.42 10.694-15.42 10.197 6.058c-2.528 5.359-9.078 17.022-15.046 20.802-5.969 3.78-11.357-.083-13.306-2.488L141.47 91.196l1.367 17.907-37.802 2.238 1.492-13.679-12.433 6.715c-5.258 2.488-10.026 1.652-14.427-5.222-4.239-6.622-8.487-27.382-9.684-37.218l13.626-4.294 5.227 28.42c1.897-1.09 5.775-3.86 7.716-5.167 5.712-4.144 9.307-5.595 12.303-5.846Z"/>
26
+ <path stroke="#000" stroke-linecap="round" d="m106.595 96.192.181-6.024m34.632-.643.181-6.023m19.279 18.713.181-6.023m-77.904-6.226 4.84-3.589"/>
27
+ <path fill="#000" d="m104.823 115.177.416-3.865 10.194-.603v3.941l-10.61.527Zm37.637-6.066.9 4.154-6.466.32-.357-4.123 5.923-.351Zm-24.019 5.39v-3.969l15.575-.922v4.118l-15.575.773Z"/>
28
+ <path stroke="#000" stroke-linecap="round" d="M107.275 116.857c.274 2.189 1.79 6.023 5.613 8.526m6.525 2.28c-2.688-.327-4.832-1.173-6.525-2.28m0 0-8.869 39.138 17.023 44.407"/>
29
+ <path stroke="#000" d="m127.554 140.837 21.167 31.677 41.595-.889"/>
30
+ </svg>