@bosonprotocol/react-kit 0.34.0-alpha.2 → 0.34.0-alpha.20
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.
- package/dist/cjs/components/connection/utils.d.ts.map +1 -1
- package/dist/cjs/components/connection/utils.js +0 -1
- package/dist/cjs/components/connection/utils.js.map +1 -1
- package/dist/cjs/components/currencyDisplay/CurrencyDisplay.d.ts +5 -2
- package/dist/cjs/components/currencyDisplay/CurrencyDisplay.d.ts.map +1 -1
- package/dist/cjs/components/currencyDisplay/CurrencyDisplay.js +6 -7
- package/dist/cjs/components/currencyDisplay/CurrencyDisplay.js.map +1 -1
- package/dist/cjs/components/exchangeCard/ExchangeCard.d.ts +1 -1
- package/dist/cjs/components/image/Image.styles.d.ts.map +1 -1
- package/dist/cjs/components/image/Image.styles.js +0 -2
- package/dist/cjs/components/image/Image.styles.js.map +1 -1
- package/dist/cjs/components/modal/components/Redeem/MyItems/Exchange.js +1 -1
- package/dist/cjs/components/modal/components/Redeem/MyItems/Exchange.js.map +1 -1
- package/dist/cjs/components/productCard/ProductCard.d.ts +5 -2
- package/dist/cjs/components/productCard/ProductCard.d.ts.map +1 -1
- package/dist/cjs/components/productCard/ProductCard.js +42 -34
- package/dist/cjs/components/productCard/ProductCard.js.map +1 -1
- package/dist/cjs/components/productCard/ProductCard.styles.d.ts +111 -4
- package/dist/cjs/components/productCard/ProductCard.styles.d.ts.map +1 -1
- package/dist/cjs/components/productCard/ProductCard.styles.js +51 -26
- package/dist/cjs/components/productCard/ProductCard.styles.js.map +1 -1
- package/dist/cjs/components/productCard/commonStyles.d.ts.map +1 -1
- package/dist/cjs/components/productCard/commonStyles.js +0 -1
- package/dist/cjs/components/productCard/commonStyles.js.map +1 -1
- package/dist/cjs/components/queryClient/withQueryClientProvider.d.ts +0 -4
- package/dist/cjs/components/queryClient/withQueryClientProvider.d.ts.map +1 -1
- package/dist/cjs/components/queryClient/withQueryClientProvider.js +3 -26
- package/dist/cjs/components/queryClient/withQueryClientProvider.js.map +1 -1
- package/dist/cjs/components/skeleton/CollectionsCardSkeleton.d.ts.map +1 -1
- package/dist/cjs/components/skeleton/CollectionsCardSkeleton.js +39 -17
- package/dist/cjs/components/skeleton/CollectionsCardSkeleton.js.map +1 -1
- package/dist/cjs/components/skeleton/ProductCardSkeleton.d.ts.map +1 -1
- package/dist/cjs/components/skeleton/ProductCardSkeleton.js +18 -19
- package/dist/cjs/components/skeleton/ProductCardSkeleton.js.map +1 -1
- package/dist/cjs/components/wallet/wallet-connection.d.ts +9559 -9559
- package/dist/cjs/components/wallet2/accountDrawer/AuthenticatedHeader.d.ts +3 -3
- package/dist/cjs/components/wallet2/accountDrawer/AuthenticatedHeader.d.ts.map +1 -1
- package/dist/cjs/components/wallet2/accountDrawer/AuthenticatedHeader.js +2 -2
- package/dist/cjs/components/wallet2/accountDrawer/AuthenticatedHeader.js.map +1 -1
- package/dist/cjs/components/wallet2/accountDrawer/miniPortfolio/index.d.ts +3 -3
- package/dist/cjs/components/wallet2/accountDrawer/miniPortfolio/index.d.ts.map +1 -1
- package/dist/cjs/components/wallet2/accountDrawer/miniPortfolio/index.js +2 -2
- package/dist/cjs/components/wallet2/accountDrawer/miniPortfolio/index.js.map +1 -1
- package/dist/cjs/components/wallet2/accountDrawer/miniPortfolio/tokens/index.d.ts +5 -2
- package/dist/cjs/components/wallet2/accountDrawer/miniPortfolio/tokens/index.d.ts.map +1 -1
- package/dist/cjs/components/wallet2/accountDrawer/miniPortfolio/tokens/index.js +3 -2
- package/dist/cjs/components/wallet2/accountDrawer/miniPortfolio/tokens/index.js.map +1 -1
- package/dist/cjs/components/wallet2/selector/ChainSelector.d.ts +4 -1
- package/dist/cjs/components/wallet2/selector/ChainSelector.d.ts.map +1 -1
- package/dist/cjs/components/wallet2/selector/ChainSelector.js +2 -4
- package/dist/cjs/components/wallet2/selector/ChainSelector.js.map +1 -1
- package/dist/cjs/components/wallet2/walletModal/ConnectionErrorView.d.ts +6 -1
- package/dist/cjs/components/wallet2/walletModal/ConnectionErrorView.d.ts.map +1 -1
- package/dist/cjs/components/wallet2/walletModal/ConnectionErrorView.js +7 -5
- package/dist/cjs/components/wallet2/walletModal/ConnectionErrorView.js.map +1 -1
- package/dist/cjs/components/wallet2/walletModal/Option.d.ts +5 -1
- package/dist/cjs/components/wallet2/walletModal/Option.d.ts.map +1 -1
- package/dist/cjs/components/wallet2/walletModal/Option.js +5 -2
- package/dist/cjs/components/wallet2/walletModal/Option.js.map +1 -1
- package/dist/cjs/components/wallet2/walletModal/index.d.ts +5 -2
- package/dist/cjs/components/wallet2/walletModal/index.d.ts.map +1 -1
- package/dist/cjs/components/wallet2/walletModal/index.js +3 -3
- package/dist/cjs/components/wallet2/walletModal/index.js.map +1 -1
- package/dist/cjs/components/wallet2/web3Status/index.d.ts +14 -2
- package/dist/cjs/components/wallet2/web3Status/index.d.ts.map +1 -1
- package/dist/cjs/components/wallet2/web3Status/index.js +13 -5
- package/dist/cjs/components/wallet2/web3Status/index.js.map +1 -1
- package/dist/cjs/hooks/connection/useSyncChainQuery.js.map +1 -1
- package/dist/cjs/hooks/index.d.ts +5 -0
- package/dist/cjs/hooks/index.d.ts.map +1 -1
- package/dist/cjs/hooks/index.js +11 -1
- package/dist/cjs/hooks/index.js.map +1 -1
- package/dist/cjs/hooks/useCtaClickHandler.d.ts +1 -1
- package/dist/cjs/hooks/useCtaClickHandler.d.ts.map +1 -1
- package/dist/cjs/hooks/useCtaClickHandler.js.map +1 -1
- package/dist/cjs/hooks/useMetaTx.d.ts +1 -1
- package/dist/cjs/hooks/useMetaTx.d.ts.map +1 -1
- package/dist/cjs/hooks/useMetaTx.js.map +1 -1
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +4 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/signer/externalSigner.d.ts.map +1 -1
- package/dist/cjs/lib/signer/externalSigner.js +7 -0
- package/dist/cjs/lib/signer/externalSigner.js.map +1 -1
- package/dist/esm/components/connection/utils.d.ts.map +1 -1
- package/dist/esm/components/connection/utils.js +0 -1
- package/dist/esm/components/connection/utils.js.map +1 -1
- package/dist/esm/components/currencyDisplay/CurrencyDisplay.d.ts +5 -2
- package/dist/esm/components/currencyDisplay/CurrencyDisplay.d.ts.map +1 -1
- package/dist/esm/components/currencyDisplay/CurrencyDisplay.js +6 -7
- package/dist/esm/components/currencyDisplay/CurrencyDisplay.js.map +1 -1
- package/dist/esm/components/exchangeCard/ExchangeCard.d.ts +1 -1
- package/dist/esm/components/image/Image.styles.d.ts.map +1 -1
- package/dist/esm/components/image/Image.styles.js +0 -2
- package/dist/esm/components/image/Image.styles.js.map +1 -1
- package/dist/esm/components/modal/components/Redeem/MyItems/Exchange.js +1 -1
- package/dist/esm/components/modal/components/Redeem/MyItems/Exchange.js.map +1 -1
- package/dist/esm/components/productCard/ProductCard.d.ts +5 -2
- package/dist/esm/components/productCard/ProductCard.d.ts.map +1 -1
- package/dist/esm/components/productCard/ProductCard.js +20 -32
- package/dist/esm/components/productCard/ProductCard.js.map +1 -1
- package/dist/esm/components/productCard/ProductCard.styles.d.ts +111 -4
- package/dist/esm/components/productCard/ProductCard.styles.d.ts.map +1 -1
- package/dist/esm/components/productCard/ProductCard.styles.js +50 -24
- package/dist/esm/components/productCard/ProductCard.styles.js.map +1 -1
- package/dist/esm/components/productCard/commonStyles.d.ts.map +1 -1
- package/dist/esm/components/productCard/commonStyles.js +0 -1
- package/dist/esm/components/productCard/commonStyles.js.map +1 -1
- package/dist/esm/components/queryClient/withQueryClientProvider.d.ts +0 -4
- package/dist/esm/components/queryClient/withQueryClientProvider.d.ts.map +1 -1
- package/dist/esm/components/queryClient/withQueryClientProvider.js +1 -11
- package/dist/esm/components/queryClient/withQueryClientProvider.js.map +1 -1
- package/dist/esm/components/skeleton/CollectionsCardSkeleton.d.ts.map +1 -1
- package/dist/esm/components/skeleton/CollectionsCardSkeleton.js +39 -17
- package/dist/esm/components/skeleton/CollectionsCardSkeleton.js.map +1 -1
- package/dist/esm/components/skeleton/ProductCardSkeleton.d.ts.map +1 -1
- package/dist/esm/components/skeleton/ProductCardSkeleton.js +19 -20
- package/dist/esm/components/skeleton/ProductCardSkeleton.js.map +1 -1
- package/dist/esm/components/wallet/wallet-connection.d.ts +9559 -9559
- package/dist/esm/components/wallet2/accountDrawer/AuthenticatedHeader.d.ts +3 -3
- package/dist/esm/components/wallet2/accountDrawer/AuthenticatedHeader.d.ts.map +1 -1
- package/dist/esm/components/wallet2/accountDrawer/AuthenticatedHeader.js +2 -2
- package/dist/esm/components/wallet2/accountDrawer/AuthenticatedHeader.js.map +1 -1
- package/dist/esm/components/wallet2/accountDrawer/miniPortfolio/index.d.ts +3 -3
- package/dist/esm/components/wallet2/accountDrawer/miniPortfolio/index.d.ts.map +1 -1
- package/dist/esm/components/wallet2/accountDrawer/miniPortfolio/index.js +2 -2
- package/dist/esm/components/wallet2/accountDrawer/miniPortfolio/index.js.map +1 -1
- package/dist/esm/components/wallet2/accountDrawer/miniPortfolio/tokens/index.d.ts +5 -2
- package/dist/esm/components/wallet2/accountDrawer/miniPortfolio/tokens/index.d.ts.map +1 -1
- package/dist/esm/components/wallet2/accountDrawer/miniPortfolio/tokens/index.js +3 -2
- package/dist/esm/components/wallet2/accountDrawer/miniPortfolio/tokens/index.js.map +1 -1
- package/dist/esm/components/wallet2/selector/ChainSelector.d.ts +4 -1
- package/dist/esm/components/wallet2/selector/ChainSelector.d.ts.map +1 -1
- package/dist/esm/components/wallet2/selector/ChainSelector.js +3 -5
- package/dist/esm/components/wallet2/selector/ChainSelector.js.map +1 -1
- package/dist/esm/components/wallet2/walletModal/ConnectionErrorView.d.ts +6 -1
- package/dist/esm/components/wallet2/walletModal/ConnectionErrorView.d.ts.map +1 -1
- package/dist/esm/components/wallet2/walletModal/ConnectionErrorView.js +7 -5
- package/dist/esm/components/wallet2/walletModal/ConnectionErrorView.js.map +1 -1
- package/dist/esm/components/wallet2/walletModal/Option.d.ts +5 -1
- package/dist/esm/components/wallet2/walletModal/Option.d.ts.map +1 -1
- package/dist/esm/components/wallet2/walletModal/Option.js +5 -2
- package/dist/esm/components/wallet2/walletModal/Option.js.map +1 -1
- package/dist/esm/components/wallet2/walletModal/index.d.ts +5 -2
- package/dist/esm/components/wallet2/walletModal/index.d.ts.map +1 -1
- package/dist/esm/components/wallet2/walletModal/index.js +3 -3
- package/dist/esm/components/wallet2/walletModal/index.js.map +1 -1
- package/dist/esm/components/wallet2/web3Status/index.d.ts +14 -2
- package/dist/esm/components/wallet2/web3Status/index.d.ts.map +1 -1
- package/dist/esm/components/wallet2/web3Status/index.js +14 -6
- package/dist/esm/components/wallet2/web3Status/index.js.map +1 -1
- package/dist/esm/hooks/connection/useSyncChainQuery.js.map +1 -1
- package/dist/esm/hooks/index.d.ts +5 -0
- package/dist/esm/hooks/index.d.ts.map +1 -1
- package/dist/esm/hooks/index.js +5 -0
- package/dist/esm/hooks/index.js.map +1 -1
- package/dist/esm/hooks/useCtaClickHandler.d.ts +1 -1
- package/dist/esm/hooks/useCtaClickHandler.d.ts.map +1 -1
- package/dist/esm/hooks/useCtaClickHandler.js.map +1 -1
- package/dist/esm/hooks/useMetaTx.d.ts +1 -1
- package/dist/esm/hooks/useMetaTx.d.ts.map +1 -1
- package/dist/esm/hooks/useMetaTx.js.map +1 -1
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/signer/externalSigner.d.ts.map +1 -1
- package/dist/esm/lib/signer/externalSigner.js +7 -0
- package/dist/esm/lib/signer/externalSigner.js.map +1 -1
- package/package.json +5 -5
- package/src/components/connection/utils.ts +0 -1
- package/src/components/currencyDisplay/CurrencyDisplay.tsx +21 -18
- package/src/components/exchangeCard/ExchangeCard.tsx +1 -1
- package/src/components/image/Image.styles.ts +0 -2
- package/src/components/modal/components/Redeem/MyItems/Exchange.tsx +1 -1
- package/src/components/productCard/ProductCard.styles.ts +57 -26
- package/src/components/productCard/ProductCard.tsx +54 -56
- package/src/components/productCard/commonStyles.ts +0 -1
- package/src/components/queryClient/withQueryClientProvider.tsx +1 -26
- package/src/components/skeleton/CollectionsCardSkeleton.tsx +63 -39
- package/src/components/skeleton/ProductCardSkeleton.tsx +24 -37
- package/src/components/wallet2/accountDrawer/AuthenticatedHeader.tsx +5 -6
- package/src/components/wallet2/accountDrawer/miniPortfolio/index.tsx +8 -4
- package/src/components/wallet2/accountDrawer/miniPortfolio/tokens/index.tsx +8 -2
- package/src/components/wallet2/selector/ChainSelector.tsx +25 -13
- package/src/components/wallet2/walletModal/ConnectionErrorView.tsx +21 -6
- package/src/components/wallet2/walletModal/Option.tsx +9 -2
- package/src/components/wallet2/walletModal/index.tsx +11 -4
- package/src/components/wallet2/web3Status/index.tsx +43 -15
- package/src/hooks/connection/useSyncChainQuery.ts +1 -1
- package/src/hooks/index.ts +10 -0
- package/src/hooks/useCtaClickHandler.ts +4 -1
- package/src/hooks/useMetaTx.ts +3 -1
- package/src/index.tsx +4 -0
- package/src/lib/signer/externalSigner.ts +7 -0
- package/src/stories/ConnectWallet.stories.tsx +63 -6
- package/src/stories/ProductCard.stories.tsx +1 -7
- package/src/stories/buttons/Upload.stories.tsx +1 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, { ReactNode, useState } from "react";
|
|
2
2
|
import {
|
|
3
3
|
Currencies,
|
|
4
4
|
CurrencyDisplay
|
|
@@ -6,23 +6,20 @@ import {
|
|
|
6
6
|
import { IBaseImage, Image } from "../image/Image";
|
|
7
7
|
import { Tooltip, TooltipProps } from "../tooltip/Tooltip";
|
|
8
8
|
import {
|
|
9
|
-
BottomText,
|
|
10
9
|
ProductCardBottom,
|
|
11
10
|
ProductCardBottomContent,
|
|
12
|
-
ProductCardCreator,
|
|
13
|
-
ProductCardCreatorAvatar,
|
|
14
11
|
TopLeftRibbon,
|
|
15
12
|
ProductCardCreatorName,
|
|
16
|
-
ProductCardData,
|
|
17
13
|
ProductCardImageWrapper,
|
|
18
|
-
ProductCardPrice,
|
|
19
|
-
ProductCardPriceWrapper,
|
|
20
14
|
ProductCardTitle,
|
|
21
15
|
ProductCardTitleWrapper,
|
|
22
|
-
ProductCardWrapper
|
|
16
|
+
ProductCardWrapper,
|
|
17
|
+
CTAOnHoverContainer
|
|
23
18
|
} from "./ProductCard.styles";
|
|
24
19
|
|
|
25
20
|
import { ProductType } from "./const";
|
|
21
|
+
import { Grid } from "../ui/Grid";
|
|
22
|
+
|
|
26
23
|
interface IProductCard {
|
|
27
24
|
asterisk?: boolean;
|
|
28
25
|
avatar: string;
|
|
@@ -36,12 +33,15 @@ interface IProductCard {
|
|
|
36
33
|
isHoverDisabled?: boolean;
|
|
37
34
|
onAvatarNameClick?: () => void;
|
|
38
35
|
onCardClick?: (id: string | number) => void;
|
|
39
|
-
price:
|
|
36
|
+
price: string;
|
|
40
37
|
productId: string;
|
|
41
38
|
productType?: ProductType;
|
|
42
39
|
title: string;
|
|
43
40
|
tooltip?: string;
|
|
44
41
|
tooltipProps?: Omit<TooltipProps, "content">;
|
|
42
|
+
CTAOnHover?: ReactNode;
|
|
43
|
+
hideCreatorName?: boolean;
|
|
44
|
+
isImageFitCover?: boolean;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
const Wrapper = ({
|
|
@@ -62,85 +62,83 @@ const Wrapper = ({
|
|
|
62
62
|
}
|
|
63
63
|
return <>{children}</>;
|
|
64
64
|
};
|
|
65
|
+
|
|
65
66
|
export const PhygitalLabel = ({ ...rest }) => {
|
|
66
67
|
return <TopLeftRibbon {...rest} data-text="Phygital" />;
|
|
67
68
|
};
|
|
69
|
+
|
|
68
70
|
export const ProductCard = (props: IProductCard) => {
|
|
69
71
|
const {
|
|
70
|
-
asterisk = false,
|
|
71
|
-
avatar,
|
|
72
|
-
onAvatarError,
|
|
73
72
|
avatarName,
|
|
74
|
-
bottomText,
|
|
75
73
|
currency,
|
|
76
74
|
dataCard = "product-card",
|
|
77
75
|
dataTestId = "offer",
|
|
78
76
|
imageProps,
|
|
79
77
|
isHoverDisabled = false,
|
|
80
|
-
onAvatarNameClick,
|
|
81
78
|
onCardClick,
|
|
82
79
|
price,
|
|
83
80
|
productId,
|
|
84
81
|
title,
|
|
85
82
|
tooltip = "",
|
|
86
83
|
tooltipProps = {},
|
|
87
|
-
|
|
84
|
+
CTAOnHover,
|
|
85
|
+
hideCreatorName = false,
|
|
86
|
+
isImageFitCover = false
|
|
88
87
|
} = props;
|
|
89
|
-
|
|
88
|
+
|
|
89
|
+
const [isHovered, setIsHovered] = useState(false);
|
|
90
|
+
|
|
90
91
|
return (
|
|
91
92
|
<ProductCardWrapper
|
|
92
93
|
data-card={dataCard}
|
|
93
94
|
$isHoverDisabled={isHoverDisabled}
|
|
94
95
|
data-testid={dataTestId}
|
|
96
|
+
$isImageFitCover={isImageFitCover}
|
|
95
97
|
onClick={(e) => {
|
|
96
98
|
e.preventDefault();
|
|
97
99
|
onCardClick?.(productId);
|
|
98
100
|
}}
|
|
101
|
+
onMouseEnter={() => setIsHovered(true)}
|
|
102
|
+
onMouseLeave={() => setIsHovered(false)}
|
|
99
103
|
>
|
|
100
104
|
<ProductCardImageWrapper>
|
|
101
|
-
{isPhygital && <PhygitalLabel />}
|
|
102
105
|
<Image {...imageProps} />
|
|
103
106
|
</ProductCardImageWrapper>
|
|
107
|
+
{CTAOnHover && (
|
|
108
|
+
<CTAOnHoverContainer $isHovered={isHovered}>
|
|
109
|
+
{CTAOnHover}
|
|
110
|
+
</CTAOnHoverContainer>
|
|
111
|
+
)}
|
|
104
112
|
<ProductCardBottom>
|
|
105
|
-
<
|
|
106
|
-
<
|
|
107
|
-
<
|
|
108
|
-
<
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
>
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
/>
|
|
135
|
-
</>
|
|
136
|
-
</Wrapper>
|
|
137
|
-
</ProductCardPriceWrapper>
|
|
138
|
-
</ProductCardBottomContent>
|
|
139
|
-
<ProductCardTitleWrapper>
|
|
140
|
-
<ProductCardTitle>{title}</ProductCardTitle>
|
|
141
|
-
</ProductCardTitleWrapper>
|
|
142
|
-
</div>
|
|
143
|
-
{bottomText && <BottomText>{bottomText}</BottomText>}
|
|
113
|
+
<ProductCardBottomContent>
|
|
114
|
+
<Grid flexDirection="column">
|
|
115
|
+
<ProductCardTitleWrapper>
|
|
116
|
+
<ProductCardTitle fontSize={"0.75rem"} fontWeight={"600"}>
|
|
117
|
+
{title}
|
|
118
|
+
</ProductCardTitle>
|
|
119
|
+
</ProductCardTitleWrapper>
|
|
120
|
+
{!hideCreatorName && (
|
|
121
|
+
<ProductCardCreatorName data-avatarname="product-card">
|
|
122
|
+
{avatarName}
|
|
123
|
+
</ProductCardCreatorName>
|
|
124
|
+
)}
|
|
125
|
+
</Grid>
|
|
126
|
+
<Wrapper tooltip={tooltip} tooltipProps={tooltipProps}>
|
|
127
|
+
<CurrencyDisplay
|
|
128
|
+
value={price}
|
|
129
|
+
currency={currency}
|
|
130
|
+
fontSize={"0.875rem"}
|
|
131
|
+
iconSize={16}
|
|
132
|
+
gap={"0.3125rem"}
|
|
133
|
+
style={{
|
|
134
|
+
wordBreak: "break-all",
|
|
135
|
+
alignItems: "center",
|
|
136
|
+
justifyContent: "center",
|
|
137
|
+
paddingTop: "0.25rem"
|
|
138
|
+
}}
|
|
139
|
+
/>
|
|
140
|
+
</Wrapper>
|
|
141
|
+
</ProductCardBottomContent>
|
|
144
142
|
</ProductCardBottom>
|
|
145
143
|
</ProductCardWrapper>
|
|
146
144
|
);
|
|
@@ -1,30 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
QueryClient,
|
|
3
|
-
QueryClientProvider,
|
|
4
|
-
QueryClientProviderProps
|
|
5
|
-
} from "react-query";
|
|
6
|
-
|
|
7
1
|
import React from "react";
|
|
8
|
-
|
|
9
|
-
const queryClient = new QueryClient({
|
|
10
|
-
defaultOptions: {
|
|
11
|
-
queries: {
|
|
12
|
-
refetchOnWindowFocus: false
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
type QueryClientProviderCustomProps = Partial<QueryClientProviderProps>;
|
|
18
|
-
|
|
19
|
-
export const QueryClientProviderCustom: React.FC<
|
|
20
|
-
QueryClientProviderCustomProps
|
|
21
|
-
> = ({ ...props }) => {
|
|
22
|
-
return (
|
|
23
|
-
<QueryClientProvider client={queryClient} {...props}>
|
|
24
|
-
{props.children}
|
|
25
|
-
</QueryClientProvider>
|
|
26
|
-
);
|
|
27
|
-
};
|
|
2
|
+
import { QueryClientProviderCustom } from "./QueryClientProviderCustom";
|
|
28
3
|
|
|
29
4
|
export const withQueryClientProvider = <P extends object>(
|
|
30
5
|
WrappedComponent: React.ComponentType<P>
|
|
@@ -3,27 +3,45 @@ import styled from "styled-components";
|
|
|
3
3
|
import { theme } from "../../theme";
|
|
4
4
|
import { cardWrapperStyles } from "../productCard/commonStyles";
|
|
5
5
|
import { LoadingBubble } from "./common";
|
|
6
|
-
|
|
6
|
+
import { Grid } from "../ui/Grid";
|
|
7
|
+
const colors = theme.colors.light;
|
|
7
8
|
const Container = styled.div`
|
|
8
|
-
display:
|
|
9
|
-
|
|
10
|
-
grid-template-rows: repeat(2, min-content);
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-direction: column;
|
|
11
11
|
${cardWrapperStyles}
|
|
12
|
+
/* REMs gives bad height here on smaller views */
|
|
13
|
+
height: 279px;
|
|
14
|
+
min-width: 265px;
|
|
12
15
|
`;
|
|
13
16
|
|
|
14
17
|
const ImagesContainer = styled.div`
|
|
15
18
|
width: 100%;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
grid-row-gap: 1px;
|
|
19
|
+
position: relative;
|
|
20
|
+
/* REMs gives bad height here on smaller views */
|
|
21
|
+
height: 208px;
|
|
22
|
+
background-color: ${colors.lightGrey};
|
|
21
23
|
`;
|
|
22
24
|
|
|
23
25
|
const BottomCard = styled.div`
|
|
24
|
-
padding: 1rem 1.5rem 1rem
|
|
26
|
+
padding: 1rem 1.5rem 1rem 0.3125rem;
|
|
25
27
|
`;
|
|
26
28
|
|
|
29
|
+
const ImageOne = styled.div`
|
|
30
|
+
position: absolute;
|
|
31
|
+
top: 50%;
|
|
32
|
+
left: 10%;
|
|
33
|
+
transform: translateY(-50%);
|
|
34
|
+
`;
|
|
35
|
+
const ImageTwo = styled.div`
|
|
36
|
+
position: absolute;
|
|
37
|
+
right: 10%;
|
|
38
|
+
top: 5%;
|
|
39
|
+
`;
|
|
40
|
+
const ImageThree = styled.div`
|
|
41
|
+
position: absolute;
|
|
42
|
+
right: 10%;
|
|
43
|
+
bottom: 5%;
|
|
44
|
+
`;
|
|
27
45
|
type SkeletonCardProps = ButtonHTMLAttributes<HTMLDivElement> & {
|
|
28
46
|
withBottomText?: boolean;
|
|
29
47
|
};
|
|
@@ -31,36 +49,42 @@ export const CollectionsCardSkeleton = (props: SkeletonCardProps) => {
|
|
|
31
49
|
return (
|
|
32
50
|
<Container>
|
|
33
51
|
<ImagesContainer>
|
|
34
|
-
<
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
52
|
+
<ImageOne>
|
|
53
|
+
<LoadingBubble
|
|
54
|
+
$width="140px"
|
|
55
|
+
$height="102px"
|
|
56
|
+
$borderRadius="0px"
|
|
57
|
+
$backgroundColor={theme.colors.light.darkGrey}
|
|
58
|
+
/>
|
|
59
|
+
</ImageOne>
|
|
60
|
+
<ImageTwo>
|
|
61
|
+
<LoadingBubble
|
|
62
|
+
$width="60px"
|
|
63
|
+
$height="50px"
|
|
64
|
+
$borderRadius="0px"
|
|
65
|
+
$backgroundColor={theme.colors.light.darkGrey}
|
|
66
|
+
/>
|
|
67
|
+
</ImageTwo>
|
|
68
|
+
<ImageThree>
|
|
69
|
+
<LoadingBubble
|
|
70
|
+
$width="60px"
|
|
71
|
+
$height="50px"
|
|
72
|
+
$borderRadius="0px"
|
|
73
|
+
$backgroundColor={theme.colors.light.darkGrey}
|
|
74
|
+
/>
|
|
75
|
+
</ImageThree>
|
|
58
76
|
</ImagesContainer>
|
|
59
|
-
<
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
77
|
+
<Grid
|
|
78
|
+
justifyContent="flex-start"
|
|
79
|
+
align-items="center"
|
|
80
|
+
marginLeft={"1.5rem"}
|
|
81
|
+
>
|
|
82
|
+
<LoadingBubble $width="43px" $height="43px" $borderRadius={"100%"} />
|
|
83
|
+
<BottomCard>
|
|
84
|
+
<LoadingBubble $width="52px" $height="18px" $margin="0 0 4.375px 0" />
|
|
85
|
+
<LoadingBubble $width="30px" $height="25px" />
|
|
86
|
+
</BottomCard>
|
|
87
|
+
</Grid>
|
|
64
88
|
</Container>
|
|
65
89
|
);
|
|
66
90
|
};
|
|
@@ -2,72 +2,59 @@ import React, { ButtonHTMLAttributes } from "react";
|
|
|
2
2
|
import {
|
|
3
3
|
BottomText,
|
|
4
4
|
ProductCardBottom,
|
|
5
|
-
ProductCardBottomContent,
|
|
6
|
-
ProductCardCreator,
|
|
7
|
-
ProductCardCreatorAvatar,
|
|
8
|
-
ProductCardCreatorName,
|
|
9
|
-
ProductCardData,
|
|
10
5
|
ProductCardImageWrapper,
|
|
11
|
-
ProductCardPrice,
|
|
12
|
-
ProductCardPriceWrapper,
|
|
13
6
|
ProductCardTitle,
|
|
14
7
|
ProductCardTitleWrapper,
|
|
15
8
|
ProductCardWrapper
|
|
16
9
|
} from "../productCard/ProductCard.styles";
|
|
17
|
-
import { Grid } from "../ui/Grid";
|
|
18
10
|
import { theme } from "../../theme";
|
|
19
11
|
import { LoadingBubble } from "./common";
|
|
12
|
+
import styled from "styled-components";
|
|
20
13
|
|
|
21
14
|
type SkeletonCardProps = ButtonHTMLAttributes<HTMLDivElement> & {
|
|
22
15
|
withBottomText?: boolean;
|
|
23
16
|
};
|
|
17
|
+
|
|
18
|
+
const ProductCardImageWrapperStyled = styled(ProductCardImageWrapper)`
|
|
19
|
+
overflow: hidden;
|
|
20
|
+
width: 100%;
|
|
21
|
+
/* REMs gives bad height here on smaller views */
|
|
22
|
+
max-height: 210px;
|
|
23
|
+
min-height: 11.25rem;
|
|
24
|
+
`;
|
|
25
|
+
|
|
26
|
+
const ProductCardTitleWrapperStyled = styled(ProductCardTitleWrapper)`
|
|
27
|
+
margin-bottom: 5px;
|
|
28
|
+
`;
|
|
24
29
|
export const ProductCardSkeleton = (props: SkeletonCardProps) => {
|
|
25
30
|
const { withBottomText } = props;
|
|
26
31
|
|
|
27
32
|
return (
|
|
28
33
|
<ProductCardWrapper {...props} $isHoverDisabled={true}>
|
|
29
|
-
<
|
|
34
|
+
<ProductCardImageWrapperStyled>
|
|
30
35
|
<LoadingBubble
|
|
31
36
|
$width="100%"
|
|
32
37
|
$height="340px"
|
|
33
38
|
$borderRadius="0px"
|
|
34
39
|
$backgroundColor={theme.colors.light.darkGrey}
|
|
35
40
|
/>
|
|
36
|
-
</
|
|
41
|
+
</ProductCardImageWrapperStyled>
|
|
37
42
|
<ProductCardBottom>
|
|
38
43
|
<div>
|
|
39
|
-
<
|
|
40
|
-
<
|
|
41
|
-
<
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
<ProductCardCreatorName data-avatarname="product-card">
|
|
46
|
-
<LoadingBubble $width="50px" $height="12.5px" />
|
|
47
|
-
</ProductCardCreatorName>
|
|
48
|
-
</ProductCardCreator>
|
|
49
|
-
</ProductCardData>
|
|
50
|
-
<ProductCardPriceWrapper>
|
|
51
|
-
<ProductCardPrice>
|
|
52
|
-
<Grid justifyContent="flex-end">
|
|
53
|
-
<LoadingBubble $width="30px" $height="10px" />
|
|
54
|
-
</Grid>
|
|
55
|
-
</ProductCardPrice>
|
|
56
|
-
<Grid justifyContent="flex-end" gap="8px">
|
|
57
|
-
<LoadingBubble $width="24px" $height="24px" />
|
|
58
|
-
<LoadingBubble $width="calc(100% - 24px - 8px)" />
|
|
59
|
-
</Grid>
|
|
60
|
-
</ProductCardPriceWrapper>
|
|
61
|
-
</ProductCardBottomContent>
|
|
62
|
-
<ProductCardTitleWrapper>
|
|
44
|
+
<ProductCardTitleWrapperStyled>
|
|
45
|
+
<ProductCardTitle>
|
|
46
|
+
<LoadingBubble $width="50%" $height="12px" />
|
|
47
|
+
</ProductCardTitle>
|
|
48
|
+
</ProductCardTitleWrapperStyled>
|
|
49
|
+
<ProductCardTitleWrapperStyled>
|
|
63
50
|
<ProductCardTitle>
|
|
64
|
-
<LoadingBubble $width="
|
|
51
|
+
<LoadingBubble $width="20%" $height="8px" />
|
|
65
52
|
</ProductCardTitle>
|
|
66
|
-
</
|
|
53
|
+
</ProductCardTitleWrapperStyled>
|
|
67
54
|
</div>
|
|
68
55
|
{withBottomText && (
|
|
69
56
|
<BottomText>
|
|
70
|
-
<LoadingBubble $width="
|
|
57
|
+
<LoadingBubble $width="15%" $height="13px" />
|
|
71
58
|
</BottomText>
|
|
72
59
|
)}
|
|
73
60
|
</ProductCardBottom>
|
|
@@ -9,13 +9,12 @@ import {
|
|
|
9
9
|
} from "phosphor-react";
|
|
10
10
|
import React, { useCallback, useState } from "react";
|
|
11
11
|
import styled, { CSSProperties } from "styled-components";
|
|
12
|
-
|
|
13
12
|
import { Typography } from "../../ui/Typography";
|
|
14
13
|
import StatusIcon from "../identicon/StatusIcon";
|
|
15
14
|
import { FiatLink, useFiatLinkContext } from "./fiatOnrampModal/FiatLink";
|
|
16
15
|
// import FiatOnrampModal from "./fiatOnrampModal";
|
|
17
16
|
import { IconWithConfirmTextButton } from "./IconButton";
|
|
18
|
-
import MiniPortfolio from "./miniPortfolio";
|
|
17
|
+
import MiniPortfolio, { MiniPortfolioProps } from "./miniPortfolio";
|
|
19
18
|
import { Column } from "../../ui/column";
|
|
20
19
|
import { theme } from "../../../theme";
|
|
21
20
|
import { useENSName } from "../../../hooks/ens/useENSName";
|
|
@@ -131,8 +130,7 @@ export function PortfolioArrow({
|
|
|
131
130
|
<ArrowUpRight size={20} {...rest} />
|
|
132
131
|
);
|
|
133
132
|
}
|
|
134
|
-
export type AuthenticatedHeaderProps = {
|
|
135
|
-
account: string;
|
|
133
|
+
export type AuthenticatedHeaderProps = MiniPortfolioProps & {
|
|
136
134
|
onUserDisconnect?: () => unknown;
|
|
137
135
|
disconnectColor: CSSProperties["color"];
|
|
138
136
|
disconnectBackgroundColor: CSSProperties["backgroundColor"];
|
|
@@ -145,7 +143,8 @@ export function AuthenticatedHeader({
|
|
|
145
143
|
disconnectColor,
|
|
146
144
|
disconnectBackgroundColor,
|
|
147
145
|
disconnectBorderRadius,
|
|
148
|
-
buyCryptoTheme
|
|
146
|
+
buyCryptoTheme,
|
|
147
|
+
defaultTokens
|
|
149
148
|
}: AuthenticatedHeaderProps) {
|
|
150
149
|
const { connector } = useWeb3React();
|
|
151
150
|
const { ENSName } = useENSName(account);
|
|
@@ -292,7 +291,7 @@ export function AuthenticatedHeader({
|
|
|
292
291
|
</Tooltip>
|
|
293
292
|
</FiatOnrampNotAvailableText>
|
|
294
293
|
)}
|
|
295
|
-
<MiniPortfolio account={account} />
|
|
294
|
+
<MiniPortfolio account={account} defaultTokens={defaultTokens} />
|
|
296
295
|
</PortfolioDrawerContainer>
|
|
297
296
|
</AuthenticatedHeaderWrapper>
|
|
298
297
|
);
|
|
@@ -3,7 +3,7 @@ import styled from "styled-components";
|
|
|
3
3
|
|
|
4
4
|
import { Grid } from "../../../ui/Grid";
|
|
5
5
|
import { Typography } from "../../../ui/Typography";
|
|
6
|
-
import Tokens from "./tokens";
|
|
6
|
+
import Tokens, { TokensProps } from "./tokens";
|
|
7
7
|
import { breakpointNumbers } from "../../../../lib/ui/breakpoint";
|
|
8
8
|
import { Column } from "../../../ui/column";
|
|
9
9
|
|
|
@@ -41,7 +41,7 @@ const PageWrapper = styled.div`
|
|
|
41
41
|
interface Page {
|
|
42
42
|
title: React.ReactNode;
|
|
43
43
|
key: string;
|
|
44
|
-
component: ({ account }:
|
|
44
|
+
component: ({ account }: MiniPortfolioProps) => JSX.Element;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
const Pages: Array<Page> = [
|
|
@@ -52,7 +52,11 @@ const Pages: Array<Page> = [
|
|
|
52
52
|
}
|
|
53
53
|
];
|
|
54
54
|
|
|
55
|
-
export
|
|
55
|
+
export type MiniPortfolioProps = TokensProps;
|
|
56
|
+
export default function MiniPortfolio({
|
|
57
|
+
account,
|
|
58
|
+
defaultTokens
|
|
59
|
+
}: MiniPortfolioProps) {
|
|
56
60
|
const [currentPage, setCurrentPage] = useState(0);
|
|
57
61
|
|
|
58
62
|
const { component: Page } = Pages[currentPage];
|
|
@@ -72,7 +76,7 @@ export default function MiniPortfolio({ account }: { account: string }) {
|
|
|
72
76
|
})}
|
|
73
77
|
</Nav>
|
|
74
78
|
<PageWrapper data-testid="mini-portfolio-page">
|
|
75
|
-
<Page account={account} />
|
|
79
|
+
<Page account={account} defaultTokens={defaultTokens} />
|
|
76
80
|
</PageWrapper>
|
|
77
81
|
</Wrapper>
|
|
78
82
|
);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { Token as TokenType } from "@bosonprotocol/common";
|
|
2
3
|
import { Token } from "@uniswap/sdk-core";
|
|
3
4
|
import { ethers } from "ethers";
|
|
4
5
|
import styled from "styled-components";
|
|
@@ -20,11 +21,16 @@ import {
|
|
|
20
21
|
import { nativeOnChain } from "../../../../../lib/const/tokens";
|
|
21
22
|
import { PortfolioLogo } from "../../../../logo/PortfolioLogo";
|
|
22
23
|
|
|
23
|
-
export
|
|
24
|
+
export type TokensProps = {
|
|
25
|
+
account: string;
|
|
26
|
+
defaultTokens?: TokenType[];
|
|
27
|
+
};
|
|
28
|
+
export default function Tokens({ account, defaultTokens }: TokensProps) {
|
|
24
29
|
const chainId = useChainId();
|
|
25
30
|
const { data: tokenBalances, isLoading } = useTokenBalances({
|
|
26
31
|
address: account,
|
|
27
|
-
chainId
|
|
32
|
+
chainId,
|
|
33
|
+
tokens: defaultTokens
|
|
28
34
|
});
|
|
29
35
|
|
|
30
36
|
if (!chainId || isLoading) {
|
|
@@ -28,10 +28,13 @@ import {
|
|
|
28
28
|
UniWalletSupportedChains,
|
|
29
29
|
getChainPriority
|
|
30
30
|
} from "../../../lib/const/chains";
|
|
31
|
-
import {
|
|
32
|
-
import { getEnvConfigsFilteredByEnv } from "../../../lib/config/getConfigsByChainId";
|
|
31
|
+
import { getEnvConfigsFilteredByEnv as importedGetEnvConfigsFilteredByEnv } from "../../../lib/config/getConfigsByChainId";
|
|
33
32
|
import { useSelectChain } from "../../../hooks/connection/useSelectChain";
|
|
34
|
-
import {
|
|
33
|
+
import {
|
|
34
|
+
ConfigId,
|
|
35
|
+
EnvironmentType,
|
|
36
|
+
CoreProtocolConfig
|
|
37
|
+
} from "@bosonprotocol/core-sdk";
|
|
35
38
|
import { SvgImage } from "../../ui/SvgImage";
|
|
36
39
|
|
|
37
40
|
const IconAndChevron = styled.div<{
|
|
@@ -57,11 +60,6 @@ const IconAndChevron = styled.div<{
|
|
|
57
60
|
}
|
|
58
61
|
`;
|
|
59
62
|
|
|
60
|
-
export interface ChainSelectorProps {
|
|
61
|
-
leftAlign?: boolean;
|
|
62
|
-
backgroundColor: CSSProperties["backgroundColor"];
|
|
63
|
-
}
|
|
64
|
-
|
|
65
63
|
function useWalletSupportedChains({
|
|
66
64
|
NETWORK_SELECTOR_CHAINS_IDS
|
|
67
65
|
}: {
|
|
@@ -88,14 +86,25 @@ const chevronProps = {
|
|
|
88
86
|
height: 20,
|
|
89
87
|
width: 20
|
|
90
88
|
};
|
|
89
|
+
|
|
90
|
+
export interface ChainSelectorProps {
|
|
91
|
+
leftAlign?: boolean;
|
|
92
|
+
backgroundColor: CSSProperties["backgroundColor"];
|
|
93
|
+
config: CoreProtocolConfig;
|
|
94
|
+
getEnvConfigsFilteredByEnv?: (
|
|
95
|
+
envName: EnvironmentType
|
|
96
|
+
) => CoreProtocolConfig[];
|
|
97
|
+
}
|
|
98
|
+
|
|
91
99
|
export const ChainSelector = ({
|
|
92
100
|
leftAlign,
|
|
93
|
-
backgroundColor
|
|
101
|
+
backgroundColor,
|
|
102
|
+
config,
|
|
103
|
+
getEnvConfigsFilteredByEnv = importedGetEnvConfigsFilteredByEnv
|
|
94
104
|
}: ChainSelectorProps) => {
|
|
95
|
-
const { config } = useConfigContext();
|
|
96
105
|
const NETWORK_SELECTOR_CHAINS = useMemo(
|
|
97
106
|
() => getEnvConfigsFilteredByEnv(config.envName),
|
|
98
|
-
[config.envName]
|
|
107
|
+
[config.envName, getEnvConfigsFilteredByEnv]
|
|
99
108
|
);
|
|
100
109
|
const NETWORK_SELECTOR_CHAINS_IDS = NETWORK_SELECTOR_CHAINS.map(
|
|
101
110
|
(config) => config.chainId as ChainId
|
|
@@ -128,7 +137,10 @@ export const ChainSelector = ({
|
|
|
128
137
|
}
|
|
129
138
|
return acc;
|
|
130
139
|
},
|
|
131
|
-
{ supported: [], unsupported: [] } as Record<
|
|
140
|
+
{ supported: [], unsupported: [] } as Record<
|
|
141
|
+
string,
|
|
142
|
+
CoreProtocolConfig[]
|
|
143
|
+
>
|
|
132
144
|
);
|
|
133
145
|
return [supported, unsupported];
|
|
134
146
|
}, [NETWORK_SELECTOR_CHAINS, walletSupportsChain]);
|
|
@@ -148,7 +160,7 @@ export const ChainSelector = ({
|
|
|
148
160
|
|
|
149
161
|
const [pendingConfigId, setPendingConfigId] = useState<ConfigId>();
|
|
150
162
|
const onSelectChain = useCallback(
|
|
151
|
-
async (config:
|
|
163
|
+
async (config: CoreProtocolConfig) => {
|
|
152
164
|
try {
|
|
153
165
|
setPendingConfigId(config.configId);
|
|
154
166
|
await selectChain(config.configId);
|