@xyo-network/react-ethereum-gas-price-blocknative-plugin 2.40.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 (133) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +70 -0
  3. package/dist/cjs/Plugin.d.ts +3 -0
  4. package/dist/cjs/Plugin.d.ts.map +1 -0
  5. package/dist/cjs/Plugin.js +24 -0
  6. package/dist/cjs/Plugin.js.map +1 -0
  7. package/dist/cjs/components/Card/Card.d.ts +12 -0
  8. package/dist/cjs/components/Card/Card.d.ts.map +1 -0
  9. package/dist/cjs/components/Card/Card.js +15 -0
  10. package/dist/cjs/components/Card/Card.js.map +1 -0
  11. package/dist/cjs/components/Card/CardContent.d.ts +12 -0
  12. package/dist/cjs/components/Card/CardContent.d.ts.map +1 -0
  13. package/dist/cjs/components/Card/CardContent.js +24 -0
  14. package/dist/cjs/components/Card/CardContent.js.map +1 -0
  15. package/dist/cjs/components/Card/CardHeader.d.ts +22 -0
  16. package/dist/cjs/components/Card/CardHeader.d.ts.map +1 -0
  17. package/dist/cjs/components/Card/CardHeader.js +15 -0
  18. package/dist/cjs/components/Card/CardHeader.js.map +1 -0
  19. package/dist/cjs/components/Card/index.d.ts +4 -0
  20. package/dist/cjs/components/Card/index.d.ts.map +1 -0
  21. package/dist/cjs/components/Card/index.js +7 -0
  22. package/dist/cjs/components/Card/index.js.map +1 -0
  23. package/dist/cjs/components/Details/Box/BlocknativeGasPriceDetailsBox.d.ts +4 -0
  24. package/dist/cjs/components/Details/Box/BlocknativeGasPriceDetailsBox.d.ts.map +1 -0
  25. package/dist/cjs/components/Details/Box/BlocknativeGasPriceDetailsBox.js +25 -0
  26. package/dist/cjs/components/Details/Box/BlocknativeGasPriceDetailsBox.js.map +1 -0
  27. package/dist/cjs/components/Details/Box/index.d.ts +2 -0
  28. package/dist/cjs/components/Details/Box/index.d.ts.map +1 -0
  29. package/dist/cjs/components/Details/Box/index.js +5 -0
  30. package/dist/cjs/components/Details/Box/index.js.map +1 -0
  31. package/dist/cjs/components/Details/index.d.ts +2 -0
  32. package/dist/cjs/components/Details/index.d.ts.map +1 -0
  33. package/dist/cjs/components/Details/index.js +5 -0
  34. package/dist/cjs/components/Details/index.js.map +1 -0
  35. package/dist/cjs/components/hooks/index.d.ts +2 -0
  36. package/dist/cjs/components/hooks/index.d.ts.map +1 -0
  37. package/dist/cjs/components/hooks/index.js +5 -0
  38. package/dist/cjs/components/hooks/index.js.map +1 -0
  39. package/dist/cjs/components/hooks/useBlocknativeTransformer.d.ts +4 -0
  40. package/dist/cjs/components/hooks/useBlocknativeTransformer.d.ts.map +1 -0
  41. package/dist/cjs/components/hooks/useBlocknativeTransformer.js +35 -0
  42. package/dist/cjs/components/hooks/useBlocknativeTransformer.js.map +1 -0
  43. package/dist/cjs/components/index.d.ts +3 -0
  44. package/dist/cjs/components/index.d.ts.map +1 -0
  45. package/dist/cjs/components/index.js +6 -0
  46. package/dist/cjs/components/index.js.map +1 -0
  47. package/dist/cjs/components/lib/constants.d.ts +2 -0
  48. package/dist/cjs/components/lib/constants.d.ts.map +1 -0
  49. package/dist/cjs/components/lib/constants.js +5 -0
  50. package/dist/cjs/components/lib/constants.js.map +1 -0
  51. package/dist/cjs/components/lib/index.d.ts +2 -0
  52. package/dist/cjs/components/lib/index.d.ts.map +1 -0
  53. package/dist/cjs/components/lib/index.js +5 -0
  54. package/dist/cjs/components/lib/index.js.map +1 -0
  55. package/dist/cjs/index.d.ts +5 -0
  56. package/dist/cjs/index.d.ts.map +1 -0
  57. package/dist/cjs/index.js +9 -0
  58. package/dist/cjs/index.js.map +1 -0
  59. package/dist/docs.json +5352 -0
  60. package/dist/esm/Plugin.d.ts +3 -0
  61. package/dist/esm/Plugin.d.ts.map +1 -0
  62. package/dist/esm/Plugin.js +23 -0
  63. package/dist/esm/Plugin.js.map +1 -0
  64. package/dist/esm/components/Card/Card.d.ts +12 -0
  65. package/dist/esm/components/Card/Card.d.ts.map +1 -0
  66. package/dist/esm/components/Card/Card.js +10 -0
  67. package/dist/esm/components/Card/Card.js.map +1 -0
  68. package/dist/esm/components/Card/CardContent.d.ts +12 -0
  69. package/dist/esm/components/Card/CardContent.d.ts.map +1 -0
  70. package/dist/esm/components/Card/CardContent.js +18 -0
  71. package/dist/esm/components/Card/CardContent.js.map +1 -0
  72. package/dist/esm/components/Card/CardHeader.d.ts +22 -0
  73. package/dist/esm/components/Card/CardHeader.d.ts.map +1 -0
  74. package/dist/esm/components/Card/CardHeader.js +12 -0
  75. package/dist/esm/components/Card/CardHeader.js.map +1 -0
  76. package/dist/esm/components/Card/index.d.ts +4 -0
  77. package/dist/esm/components/Card/index.d.ts.map +1 -0
  78. package/dist/esm/components/Card/index.js +4 -0
  79. package/dist/esm/components/Card/index.js.map +1 -0
  80. package/dist/esm/components/Details/Box/BlocknativeGasPriceDetailsBox.d.ts +4 -0
  81. package/dist/esm/components/Details/Box/BlocknativeGasPriceDetailsBox.d.ts.map +1 -0
  82. package/dist/esm/components/Details/Box/BlocknativeGasPriceDetailsBox.js +19 -0
  83. package/dist/esm/components/Details/Box/BlocknativeGasPriceDetailsBox.js.map +1 -0
  84. package/dist/esm/components/Details/Box/index.d.ts +2 -0
  85. package/dist/esm/components/Details/Box/index.d.ts.map +1 -0
  86. package/dist/esm/components/Details/Box/index.js +2 -0
  87. package/dist/esm/components/Details/Box/index.js.map +1 -0
  88. package/dist/esm/components/Details/index.d.ts +2 -0
  89. package/dist/esm/components/Details/index.d.ts.map +1 -0
  90. package/dist/esm/components/Details/index.js +2 -0
  91. package/dist/esm/components/Details/index.js.map +1 -0
  92. package/dist/esm/components/hooks/index.d.ts +2 -0
  93. package/dist/esm/components/hooks/index.d.ts.map +1 -0
  94. package/dist/esm/components/hooks/index.js +2 -0
  95. package/dist/esm/components/hooks/index.js.map +1 -0
  96. package/dist/esm/components/hooks/useBlocknativeTransformer.d.ts +4 -0
  97. package/dist/esm/components/hooks/useBlocknativeTransformer.d.ts.map +1 -0
  98. package/dist/esm/components/hooks/useBlocknativeTransformer.js +30 -0
  99. package/dist/esm/components/hooks/useBlocknativeTransformer.js.map +1 -0
  100. package/dist/esm/components/index.d.ts +3 -0
  101. package/dist/esm/components/index.d.ts.map +1 -0
  102. package/dist/esm/components/index.js +3 -0
  103. package/dist/esm/components/index.js.map +1 -0
  104. package/dist/esm/components/lib/constants.d.ts +2 -0
  105. package/dist/esm/components/lib/constants.d.ts.map +1 -0
  106. package/dist/esm/components/lib/constants.js +2 -0
  107. package/dist/esm/components/lib/constants.js.map +1 -0
  108. package/dist/esm/components/lib/index.d.ts +2 -0
  109. package/dist/esm/components/lib/index.d.ts.map +1 -0
  110. package/dist/esm/components/lib/index.js +2 -0
  111. package/dist/esm/components/lib/index.js.map +1 -0
  112. package/dist/esm/index.d.ts +5 -0
  113. package/dist/esm/index.d.ts.map +1 -0
  114. package/dist/esm/index.js +6 -0
  115. package/dist/esm/index.js.map +1 -0
  116. package/package.json +80 -0
  117. package/src/Plugin.ts +25 -0
  118. package/src/components/Card/Card.stories.tsx +32 -0
  119. package/src/components/Card/Card.tsx +17 -0
  120. package/src/components/Card/CardContent.tsx +34 -0
  121. package/src/components/Card/CardHeader.tsx +16 -0
  122. package/src/components/Card/index.ts +3 -0
  123. package/src/components/Details/Box/BlocknativeGasPriceDetailsBox.stories.tsx +32 -0
  124. package/src/components/Details/Box/BlocknativeGasPriceDetailsBox.tsx +48 -0
  125. package/src/components/Details/Box/index.ts +1 -0
  126. package/src/components/Details/index.ts +1 -0
  127. package/src/components/hooks/index.ts +1 -0
  128. package/src/components/hooks/useBlocknativeTransformer.tsx +33 -0
  129. package/src/components/index.ts +2 -0
  130. package/src/components/lib/constants.ts +1 -0
  131. package/src/components/lib/index.ts +1 -0
  132. package/src/index.ts +7 -0
  133. package/src/types/images.d.ts +5 -0
@@ -0,0 +1,17 @@
1
+ import { Card, CardProps } from '@mui/material'
2
+ import { XyoPayloadRenderProps } from '@xyo-network/react-payload-plugin'
3
+ import { forwardRef } from 'react'
4
+
5
+ import { BlocknativeGasPriceCardContent } from './CardContent'
6
+ import { BlocknativeGasPriceCardHeader } from './CardHeader'
7
+
8
+ export const BlocknativeGasPriceCard = forwardRef<HTMLDivElement, XyoPayloadRenderProps & CardProps>(({ payload, ...props }, ref) => {
9
+ return (
10
+ <Card ref={ref} {...props}>
11
+ <BlocknativeGasPriceCardHeader payload={payload} />
12
+ <BlocknativeGasPriceCardContent payload={payload} />
13
+ </Card>
14
+ )
15
+ })
16
+
17
+ BlocknativeGasPriceCard.displayName = 'BlocknativeGasPriceCard'
@@ -0,0 +1,34 @@
1
+ import { CardContent, CardContentProps, Grid } from '@mui/material'
2
+ import { XyoEthereumGasBlocknativePayload } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'
3
+ import { GasFeeCard, ToggleRawPayloadBox } from '@xyo-network/react-gas-price'
4
+ import { XyoPayloadRenderProps } from '@xyo-network/react-payload-plugin'
5
+ import { PayloadDataMissing } from '@xyo-network/react-shared'
6
+ import isEmpty from 'lodash/isEmpty'
7
+ import { forwardRef } from 'react'
8
+
9
+ import { useBlocknativeTransformer } from '../hooks'
10
+
11
+ export const BlocknativeGasPriceCardContent = forwardRef<HTMLDivElement, XyoPayloadRenderProps & CardContentProps>(({ payload, ...props }, ref) => {
12
+ const gasPricePayload = payload ? (payload as XyoEthereumGasBlocknativePayload) : undefined
13
+ const parsedPayload = useBlocknativeTransformer(gasPricePayload)
14
+
15
+ if (isEmpty(gasPricePayload) || !gasPricePayload.blockPrices?.length) {
16
+ return <PayloadDataMissing alertBody="Payload is missing valid gas fee data." sx={{ m: 1 }} />
17
+ }
18
+
19
+ return (
20
+ <CardContent ref={ref} sx={{ display: 'flex', flexDirection: 'column', rowGap: 4 }} {...props}>
21
+ <Grid container spacing={3} columns={{ lg: 15, md: 15, sm: 12, xs: 12 }}>
22
+ {parsedPayload &&
23
+ parsedPayload?.gasPrice?.map(({ price }) => (
24
+ <Grid key={price?.label} item xs={12} sm={6} md={5} lg={3}>
25
+ <GasFeeCard gasPrice={price?.value} speed={price?.label} speedPaperElevation={4} />
26
+ </Grid>
27
+ ))}
28
+ </Grid>
29
+ <ToggleRawPayloadBox gasPricePayload={gasPricePayload} alignItems="start" pr={1} />
30
+ </CardContent>
31
+ )
32
+ })
33
+
34
+ BlocknativeGasPriceCardContent.displayName = 'BlocknativeGasPriceCardContent'
@@ -0,0 +1,16 @@
1
+ import { CardHeaderProps } from '@mui/material'
2
+ import { XyoEthereumGasBlocknativePayload } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'
3
+ import { GasPriceWitnessCardHeader } from '@xyo-network/react-gas-price'
4
+ import { XyoPayloadRenderProps } from '@xyo-network/react-payload-plugin'
5
+ import { forwardRef } from 'react'
6
+
7
+ import { useBlocknativeTransformer } from '../hooks'
8
+ import { RenderTitle } from '../lib'
9
+
10
+ export const BlocknativeGasPriceCardHeader = forwardRef<HTMLDivElement, XyoPayloadRenderProps & CardHeaderProps>(({ payload }, ref) => {
11
+ const gasPricePayload = payload ? (payload as XyoEthereumGasBlocknativePayload) : undefined
12
+ const parsedPayload = useBlocknativeTransformer(gasPricePayload)
13
+ return <GasPriceWitnessCardHeader title={RenderTitle} parsedPayload={parsedPayload} ref={ref} />
14
+ })
15
+
16
+ BlocknativeGasPriceCardHeader.displayName = 'BlocknativeGasPriceCardHeader'
@@ -0,0 +1,3 @@
1
+ export * from './Card'
2
+ export * from './CardContent'
3
+ export * from './CardHeader'
@@ -0,0 +1,32 @@
1
+ import { ComponentMeta, ComponentStory } from '@storybook/react'
2
+ import { XyoEthereumGasBlocknativeSchema } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'
3
+ import { sampleBlocknativeGasPricePayload } from '@xyo-network/react-storybook'
4
+
5
+ import { BlocknativeGasPriceDetailsBox } from './BlocknativeGasPriceDetailsBox'
6
+
7
+ const StorybookEntry = {
8
+ argTypes: {},
9
+ component: BlocknativeGasPriceDetailsBox,
10
+ parameters: {
11
+ docs: {
12
+ page: null,
13
+ },
14
+ },
15
+ title: 'plugin/blockchain/BlocknativeGasPrice/DetailsBox',
16
+ } as ComponentMeta<typeof BlocknativeGasPriceDetailsBox>
17
+
18
+ const Template: ComponentStory<typeof BlocknativeGasPriceDetailsBox> = (args) => <BlocknativeGasPriceDetailsBox {...args} />
19
+
20
+ const Default = Template.bind({})
21
+ Default.args = {}
22
+
23
+ const WithData = Template.bind({})
24
+ WithData.args = { payload: sampleBlocknativeGasPricePayload }
25
+
26
+ const WithMissingData = Template.bind({})
27
+ WithMissingData.args = { payload: { schema: XyoEthereumGasBlocknativeSchema } }
28
+
29
+ export { Default, WithData, WithMissingData }
30
+
31
+ // eslint-disable-next-line import/no-default-export
32
+ export default StorybookEntry
@@ -0,0 +1,48 @@
1
+ import { Grid } from '@mui/material'
2
+ import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'
3
+ import { XyoEthereumGasBlocknativePayload } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'
4
+ import { GasFeeCard, GasPriceWitnessHeaderBox, ToggleRawPayloadBox } from '@xyo-network/react-gas-price'
5
+ import { XyoPayloadDetailsRenderProps } from '@xyo-network/react-payload-plugin'
6
+ import { PayloadDataMissing } from '@xyo-network/react-shared'
7
+ import isEmpty from 'lodash/isEmpty'
8
+ import { forwardRef } from 'react'
9
+
10
+ import { useBlocknativeTransformer } from '../../hooks'
11
+ import { RenderTitle } from '../../lib'
12
+
13
+ export const BlocknativeGasPriceDetailsBox = forwardRef<HTMLDivElement, XyoPayloadDetailsRenderProps & FlexBoxProps>(
14
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
15
+ ({ payload, listMode, ...props }, ref) => {
16
+ const gasPricePayload: XyoEthereumGasBlocknativePayload | undefined = payload ? (payload as XyoEthereumGasBlocknativePayload) : undefined
17
+ const parsedPayload = useBlocknativeTransformer(gasPricePayload)
18
+
19
+ return (
20
+ <>
21
+ {isEmpty(gasPricePayload) || !gasPricePayload.blockPrices?.length ? (
22
+ <PayloadDataMissing alertBody="Payload is missing valid gas fee data." />
23
+ ) : (
24
+ <FlexCol alignItems="start" rowGap={4} {...props} ref={ref}>
25
+ <GasPriceWitnessHeaderBox heading={RenderTitle} parsedPayload={parsedPayload} />
26
+ <Grid container spacing={3} columns={{ lg: 15, md: 15, sm: 12, xs: 12 }}>
27
+ {parsedPayload &&
28
+ parsedPayload?.gasPrice?.map(({ price, priorityFee }) => (
29
+ <Grid key={price?.label} item xs={12} sm={6} md={5} lg={3}>
30
+ <GasFeeCard
31
+ key={price?.label}
32
+ gasPrice={price?.value}
33
+ speed={price?.label}
34
+ priorityFee={priorityFee?.value}
35
+ priorityFeeLabel={priorityFee?.label}
36
+ />
37
+ </Grid>
38
+ ))}
39
+ </Grid>
40
+ <ToggleRawPayloadBox gasPricePayload={gasPricePayload} alignItems="start" />
41
+ </FlexCol>
42
+ )}
43
+ </>
44
+ )
45
+ },
46
+ )
47
+
48
+ BlocknativeGasPriceDetailsBox.displayName = 'BlocknativeGasPriceDetailsBox'
@@ -0,0 +1 @@
1
+ export * from './BlocknativeGasPriceDetailsBox'
@@ -0,0 +1 @@
1
+ export * from './Box'
@@ -0,0 +1 @@
1
+ export * from './useBlocknativeTransformer'
@@ -0,0 +1,33 @@
1
+ import { XyoEthereumGasBlocknativePayload } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'
2
+ import { GasPriceWitnessUIBasePayload } from '@xyo-network/react-gas-price'
3
+
4
+ export const useBlocknativeTransformer = (payload?: XyoEthereumGasBlocknativePayload): GasPriceWitnessUIBasePayload | undefined => {
5
+ const blockPrices = payload?.blockPrices?.[0]
6
+ if (blockPrices && blockPrices.estimatedPrices?.length) {
7
+ const estimatedPrices = blockPrices?.estimatedPrices
8
+ const gasPrice = estimatedPrices.map((price) => ({
9
+ price: {
10
+ label: `Confidence - ${price.confidence}`,
11
+ value: price.price,
12
+ },
13
+ priorityFee: {
14
+ label: 'maxPriorityFeePerGas',
15
+ value: price.maxPriorityFeePerGas,
16
+ },
17
+ }))
18
+
19
+ return {
20
+ baseFee: {
21
+ label: 'baseFeePerGas',
22
+ value: blockPrices.baseFeePerGas,
23
+ },
24
+ blockNumber: {
25
+ label: 'blockNumber',
26
+ value: blockPrices.blockNumber,
27
+ },
28
+ gasPrice,
29
+ timestamp: payload.timestamp,
30
+ website: 'https://docs.Blocknative.io/v5/api/providers/provider/#Provider-getFeeData',
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,2 @@
1
+ export * from './Card'
2
+ export * from './Details'
@@ -0,0 +1 @@
1
+ export const RenderTitle = 'Blocknative Gas Tracker'
@@ -0,0 +1 @@
1
+ export * from './constants'
package/src/index.ts ADDED
@@ -0,0 +1,7 @@
1
+ import { EthereumGasPriceBlocknativePlugin } from './Plugin'
2
+
3
+ export * from './components'
4
+ export * from './Plugin'
5
+
6
+ // eslint-disable-next-line import/no-default-export
7
+ export default EthereumGasPriceBlocknativePlugin
@@ -0,0 +1,5 @@
1
+ declare module '*.png'
2
+ declare module '*.jpg'
3
+ declare module '*.svg'
4
+ declare module '*.gif'
5
+ declare module '*.webp'