From eb8745e3b31a2408e8611ac4104a87f8b235b2e8 Mon Sep 17 00:00:00 2001 From: clegirar <33428384+clegirar@users.noreply.github.com> Date: Mon, 13 Jan 2025 18:24:38 +0100 Subject: [PATCH 1/2] fix: fontWeight and fullWidth for Wallet manager screen (#1473) Signed-off-by: clegirar --- packages/components/Menu.tsx | 4 +- packages/components/buttons/MaxButton.tsx | 4 +- packages/components/hub/MyNFTs.tsx | 29 +++----- .../components/hub/WalletDashboardHeader.tsx | 55 ++++------------ .../modals/DepositWithdrawModal.tsx | 25 ++++--- packages/screens/WalletManager/Assets.tsx | 41 ++++-------- packages/screens/WalletManager/WalletItem.tsx | 66 ++++++------------- .../WalletManager/WalletManagerScreen.tsx | 9 ++- .../screens/WalletManager/WalletsScreen.tsx | 16 ++--- packages/utils/style/fonts.ts | 7 ++ 10 files changed, 93 insertions(+), 163 deletions(-) diff --git a/packages/components/Menu.tsx b/packages/components/Menu.tsx index 5b4b85e7c4..92534995ca 100644 --- a/packages/components/Menu.tsx +++ b/packages/components/Menu.tsx @@ -6,7 +6,7 @@ import { PrimaryBox } from "./boxes/PrimaryBox"; import { useDropdowns } from "@/hooks/useDropdowns"; import { neutral33 } from "@/utils/style/colors"; -import { fontSemibold13 } from "@/utils/style/fonts"; +import { fontRegular13 } from "@/utils/style/fonts"; import { layout } from "@/utils/style/layout"; const DEFAULT_WIDTH = 164; @@ -62,7 +62,7 @@ export const Menu: React.FC = ({ ]} > {item.label} diff --git a/packages/components/buttons/MaxButton.tsx b/packages/components/buttons/MaxButton.tsx index 3eff1c6978..d99c9ebce0 100644 --- a/packages/components/buttons/MaxButton.tsx +++ b/packages/components/buttons/MaxButton.tsx @@ -2,7 +2,7 @@ import React from "react"; import { Pressable, StyleSheet } from "react-native"; import { neutral22, primaryColor } from "../../utils/style/colors"; -import { fontSemibold12 } from "../../utils/style/fonts"; +import { fontRegular12 } from "../../utils/style/fonts"; import { layout } from "../../utils/style/layout"; import { BrandText } from "../BrandText"; @@ -22,7 +22,7 @@ export const MaxButton = ({ onPress }: MaxButtonProps) => { // eslint-disable-next-line no-restricted-syntax const styles = StyleSheet.create({ maxText: { - ...StyleSheet.flatten(fontSemibold12), + ...StyleSheet.flatten(fontRegular12), backgroundColor: primaryColor, color: neutral22, borderRadius: layout.borderRadius, diff --git a/packages/components/hub/MyNFTs.tsx b/packages/components/hub/MyNFTs.tsx index 42f6102a1e..ee411c6201 100644 --- a/packages/components/hub/MyNFTs.tsx +++ b/packages/components/hub/MyNFTs.tsx @@ -10,6 +10,8 @@ import { OmniLink } from "../OmniLink"; import { SVG } from "../SVG"; import { NFTView } from "../nfts/NFTView"; +import { fontRegular14, fontRegular20 } from "@/utils/style/fonts"; + export const MyNFTs: React.FC = () => { const selectedWallet = useSelectedWallet(); @@ -25,11 +27,7 @@ export const MyNFTs: React.FC = () => { priceRange: undefined, }); return ( - + { marginBottom: 24, }} > - My NFTs + + My NFTs + - + See All - + = ({ = ({ position: "relative", }} > - - {title} - - - {data} - + {title} + {data} {!!actionButton && ( )} @@ -129,12 +115,7 @@ export const WalletDashboardHeader: React.FC = () => { marginTop: -layout.spacing_x3, }} > - + { - + Hello {userInfo.metadata?.tokenId || diff --git a/packages/components/modals/DepositWithdrawModal.tsx b/packages/components/modals/DepositWithdrawModal.tsx index 8056d5e59a..340be21ed0 100644 --- a/packages/components/modals/DepositWithdrawModal.tsx +++ b/packages/components/modals/DepositWithdrawModal.tsx @@ -18,7 +18,11 @@ import { keplrCurrencyFromNativeCurrencyInfo, } from "../../networks"; import { neutral77, primaryColor } from "../../utils/style/colors"; -import { fontSemibold13, fontSemibold14 } from "../../utils/style/fonts"; +import { + fontRegular13, + fontRegular14, + fontRegular16, +} from "../../utils/style/fonts"; import { layout } from "../../utils/style/layout"; import { capitalize, tinyAddress } from "../../utils/text"; import { BrandText } from "../BrandText"; @@ -83,7 +87,7 @@ export const DepositWithdrawModal: React.FC = ({ - + {variation === "deposit" ? "Deposit on" : "Withdraw from"}{" "} {getNetwork(networkId)?.displayName || "Unknown"} @@ -110,7 +114,7 @@ export const DepositWithdrawModal: React.FC = ({ width={460} > - + {capitalize(variation)} {nativeTargetCurrency?.displayName} @@ -120,7 +124,7 @@ export const DepositWithdrawModal: React.FC = ({ - + From {sourceNetwork?.displayName || "Unknown"} @@ -149,7 +153,7 @@ export const DepositWithdrawModal: React.FC = ({ /> - + To {destinationNetwork?.displayName || "Unknown"} @@ -175,9 +179,9 @@ export const DepositWithdrawModal: React.FC = ({ rules={{ required: true, max }} placeHolder="0" subtitle={ - + Available:{" "} - + {max} @@ -329,12 +333,7 @@ const styles = StyleSheet.create({ container: { paddingBottom: layout.spacing_x3, }, - estimatedText: StyleSheet.flatten([ - fontSemibold14, - { - color: neutral77, - }, - ]), + estimatedText: StyleSheet.flatten([fontRegular14, { color: neutral77 }]), }); const convertCosmosAddress = ( diff --git a/packages/screens/WalletManager/Assets.tsx b/packages/screens/WalletManager/Assets.tsx index 4a4e70d736..b38c18536a 100644 --- a/packages/screens/WalletManager/Assets.tsx +++ b/packages/screens/WalletManager/Assets.tsx @@ -14,6 +14,11 @@ import { useIsMobile } from "@/hooks/useIsMobile"; import { parseUserId } from "@/networks"; import { prettyPrice } from "@/utils/coins"; import { neutral22, neutral33 } from "@/utils/style/colors"; +import { + fontRegular14, + fontRegular18, + fontRegular20, +} from "@/utils/style/fonts"; const collapsedCount = 5; @@ -81,7 +86,7 @@ export const Assets: React.FC<{ alignItems: "center", }} > - + Assets on {network.displayName} @@ -92,13 +97,7 @@ export const Assets: React.FC<{ alignItems: "center", }} > - + {expanded ? "Collapse" : "Expand"} All Items - + - + {prettyPrice( network.id, balance?.amount || "0", currency.denom, )} - + {balance?.usdAmount ? `≈ $${balance.usdAmount.toFixed(2)}` : " "} - + {!readOnly && currency.kind === "ibc" && ( <> {currency.deprecated || ( diff --git a/packages/screens/WalletManager/WalletItem.tsx b/packages/screens/WalletManager/WalletItem.tsx index 94d616d8c3..d1a96acdb4 100644 --- a/packages/screens/WalletManager/WalletItem.tsx +++ b/packages/screens/WalletManager/WalletItem.tsx @@ -29,6 +29,12 @@ import { } from "@/store/slices/settings"; import { useAppDispatch } from "@/store/store"; import { neutral33, neutral77 } from "@/utils/style/colors"; +import { + fontRegular12, + fontRegular14, + fontRegular16, + fontRegular18, +} from "@/utils/style/fonts"; import { modalMarginPadding } from "@/utils/style/modals"; interface WalletItemProps { @@ -75,12 +81,7 @@ export const WalletItem: React.FC = ({ zIndex, }} > - + {selectable && ( = ({ - {item.provider} + {item.provider} = ({ marginTop: 8, }} > - - {item.address} - + {item.address} { Clipboard.setStringAsync(item.address); @@ -149,12 +144,7 @@ export const WalletItem: React.FC = ({ - + = ({ }} > Staked - + {`$${delegationsUsdBalance.toFixed(2)}`} - + Pending rewards - + {`$${claimableUSD.toFixed(2)}`} @@ -272,7 +244,7 @@ const DetailsModal: React.FC<{ visible={visible} onClose={onClose} > - + {JSON.stringify(wallet, null, 4)} diff --git a/packages/screens/WalletManager/WalletManagerScreen.tsx b/packages/screens/WalletManager/WalletManagerScreen.tsx index 959f45fae7..21b0a4dee2 100644 --- a/packages/screens/WalletManager/WalletManagerScreen.tsx +++ b/packages/screens/WalletManager/WalletManagerScreen.tsx @@ -15,19 +15,22 @@ import { useAreThereWallets } from "@/hooks/useAreThereWallets"; import { useMaxResolution } from "@/hooks/useMaxResolution"; import { ScreenFC } from "@/utils/navigation"; import { neutral33 } from "@/utils/style/colors"; +import { fontRegular20 } from "@/utils/style/fonts"; import { layout } from "@/utils/style/layout"; export const WalletManagerScreen: ScreenFC<"WalletManager"> = () => { const selectedWallet = useSelectedWallet(); const areThereWallets = useAreThereWallets(); - const { height } = useMaxResolution(); + const { height, width } = useMaxResolution({ isLarge: true }); return ( - }> + }> {areThereWallets ? ( @@ -49,7 +52,7 @@ export const WalletManagerScreen: ScreenFC<"WalletManager"> = () => { zIndex: 99, }} > - + Wallet {!!selectedWallet && ( diff --git a/packages/screens/WalletManager/WalletsScreen.tsx b/packages/screens/WalletManager/WalletsScreen.tsx index 56fdf2ec09..811a66eebd 100644 --- a/packages/screens/WalletManager/WalletsScreen.tsx +++ b/packages/screens/WalletManager/WalletsScreen.tsx @@ -10,20 +10,25 @@ import { ScreenContainer } from "@/components/ScreenContainer"; import { PrimaryButton } from "@/components/buttons/PrimaryButton"; import { ConnectWalletModal } from "@/components/modals/ConnectWalletModal"; import { useWallets } from "@/context/WalletsProvider"; +import { useMaxResolution } from "@/hooks/useMaxResolution"; import { ScreenFC } from "@/utils/navigation"; import { neutral33, neutralA3 } from "@/utils/style/colors"; +import { fontRegular14, fontRegular20 } from "@/utils/style/fonts"; export const WalletManagerWalletsScreen: ScreenFC< "WalletManagerWallets" | "WalletManagerChains" > = () => { const [showConnectModal, setShowConnectModal] = useState(false); const { wallets: allWallets } = useWallets(); + const { width } = useMaxResolution({ isLarge: true }); return ( - }> + }> - + All Wallets - + Manage your wallets diff --git a/packages/utils/style/fonts.ts b/packages/utils/style/fonts.ts index 662240ad18..4b791bbc77 100644 --- a/packages/utils/style/fonts.ts +++ b/packages/utils/style/fonts.ts @@ -243,6 +243,13 @@ export const fontRegular20: TextStyle = { fontFamily: "Exo_400Regular", fontWeight: "400", }; +export const fontRegular18: TextStyle = { + fontSize: 18, + letterSpacing: -(18 * 0.02), + lineHeight: 20, + fontFamily: "Exo_400Regular", + fontWeight: "400", +}; export const fontRegular16: TextStyle = { fontSize: 16, letterSpacing: -(16 * 0.02), From 427a33c484cbbbcbb3d0f9e10e2714fe2207da00 Mon Sep 17 00:00:00 2001 From: clegirar <33428384+clegirar@users.noreply.github.com> Date: Tue, 14 Jan 2025 12:15:03 +0100 Subject: [PATCH 2/2] fix: fontWeight and fullWidth on marketplace screen (#1474) Signed-off-by: clegirar --- packages/components/DropdownOption.tsx | 4 +- packages/components/ImageWithTextInsert.tsx | 18 ++++--- packages/components/SideFilters.tsx | 5 +- packages/components/badges/TertiaryBadge.tsx | 4 +- .../buttons/SocialButtonSecondary.tsx | 4 +- .../collections/CollectionHeader.tsx | 4 +- .../components/collections/CollectionStat.tsx | 16 ++----- packages/components/nfts/NFTView.tsx | 48 +++++-------------- packages/components/sorts/SortButton.tsx | 4 +- .../screens/Marketplace/CollectionScreen.tsx | 7 +-- .../screens/Marketplace/MarketplaceScreen.tsx | 14 ++---- packages/screens/Marketplace/PeriodFilter.tsx | 11 +++-- packages/screens/Marketplace/SideCart.tsx | 46 +++++------------- 13 files changed, 64 insertions(+), 121 deletions(-) diff --git a/packages/components/DropdownOption.tsx b/packages/components/DropdownOption.tsx index 86ee666c88..f914e1b4a8 100644 --- a/packages/components/DropdownOption.tsx +++ b/packages/components/DropdownOption.tsx @@ -7,7 +7,7 @@ import { SVG } from "./SVG"; import { CustomPressable } from "./buttons/CustomPressable"; import { SpacerRow } from "./spacer"; import { secondaryColor } from "../utils/style/colors"; -import { fontSemibold14 } from "../utils/style/fonts"; +import { fontRegular14 } from "../utils/style/fonts"; import { layout } from "../utils/style/layout"; interface DropdownOptionProps { @@ -32,7 +32,7 @@ export const DropdownOption: React.FC = ({ <> - + {hovered && isComingSoon ? "Coming Soon" : label} diff --git a/packages/components/ImageWithTextInsert.tsx b/packages/components/ImageWithTextInsert.tsx index 336e630e1e..062aeef06d 100644 --- a/packages/components/ImageWithTextInsert.tsx +++ b/packages/components/ImageWithTextInsert.tsx @@ -4,6 +4,8 @@ import { View, ViewStyle, StyleProp, StyleSheet } from "react-native"; import { BrandText } from "./BrandText"; import { OptimizedImage } from "./OptimizedImage"; +import { fontRegular16 } from "@/utils/style/fonts"; + export const ImageWithTextInsert: React.FC<{ imageURL?: string; textInsert?: string; @@ -26,13 +28,15 @@ export const ImageWithTextInsert: React.FC<{ /> {!!textInsert && ( {textInsert} diff --git a/packages/components/SideFilters.tsx b/packages/components/SideFilters.tsx index 58e00ff679..2e2601e26e 100644 --- a/packages/components/SideFilters.tsx +++ b/packages/components/SideFilters.tsx @@ -66,6 +66,7 @@ import { import { fontBold11, fontMedium14, + fontRegular14, fontSemibold12, fontSemibold14, } from "../utils/style/fonts"; @@ -92,7 +93,7 @@ const Header: React.FC = () => { marginBottom: layout.spacing_x1, }} > - Filters + Filters
- Buy Now + Buy Now { diff --git a/packages/components/badges/TertiaryBadge.tsx b/packages/components/badges/TertiaryBadge.tsx index 421b67f2c2..c9093fad5b 100644 --- a/packages/components/badges/TertiaryBadge.tsx +++ b/packages/components/badges/TertiaryBadge.tsx @@ -8,7 +8,7 @@ import { paddingHorizontalBadge, } from "../../utils/style/badges"; import { neutral33 } from "../../utils/style/colors"; -import { fontSemibold14 } from "../../utils/style/fonts"; +import { fontRegular14 } from "../../utils/style/fonts"; import { layout } from "../../utils/style/layout"; import { BrandText } from "../BrandText"; import { SVG } from "../SVG"; @@ -34,7 +34,7 @@ export const TertiaryBadge: React.FC<{ style, ]} > - + {label} {!!iconSVG && ( diff --git a/packages/components/buttons/SocialButtonSecondary.tsx b/packages/components/buttons/SocialButtonSecondary.tsx index f850c5b62f..f49de84346 100644 --- a/packages/components/buttons/SocialButtonSecondary.tsx +++ b/packages/components/buttons/SocialButtonSecondary.tsx @@ -13,7 +13,7 @@ import { primaryTextColor, withAlpha, } from "@/utils/style/colors"; -import { fontMedium14 } from "@/utils/style/fonts"; +import { fontRegular14 } from "@/utils/style/fonts"; export const SocialButtonSecondary: React.FC<{ text?: string; @@ -53,7 +53,7 @@ export const SocialButtonSecondary: React.FC<{ {!!text && ( diff --git a/packages/components/collections/CollectionHeader.tsx b/packages/components/collections/CollectionHeader.tsx index ab2cf45630..f431f6c68f 100644 --- a/packages/components/collections/CollectionHeader.tsx +++ b/packages/components/collections/CollectionHeader.tsx @@ -15,7 +15,7 @@ import { contractExplorerLink, parseCollectionId } from "../../networks"; import { prettyPrice } from "../../utils/coins"; import { CollectionInfo } from "../../utils/collection"; import { codGrayColor, neutral33 } from "../../utils/style/colors"; -import { fontSemibold28 } from "../../utils/style/fonts"; +import { fontRegular28 } from "../../utils/style/fonts"; import { layout } from "../../utils/style/layout"; import { BrandText } from "../BrandText"; import { SocialButtonSecondary } from "../buttons/SocialButtonSecondary"; @@ -117,7 +117,7 @@ export const CollectionHeader: React.FC<{ {value} @@ -70,12 +67,7 @@ const styles = StyleSheet.create({ borderWidth: 1, borderColor: neutral22, }, - labelText: StyleSheet.flatten([ - fontSemibold12, - { - color: neutralA3, - }, - ]), + labelText: StyleSheet.flatten([fontRegular12, { color: neutralA3 }]), rowCenter: { flexDirection: "row", justifyContent: "center", diff --git a/packages/components/nfts/NFTView.tsx b/packages/components/nfts/NFTView.tsx index 91ec93c1e8..1802c69a4c 100644 --- a/packages/components/nfts/NFTView.tsx +++ b/packages/components/nfts/NFTView.tsx @@ -59,6 +59,11 @@ import { nftBurnerUserCountQueryKey } from "@/hooks/nft-burner/useNFTBurnerUserC import { collectionStatsQueryKey } from "@/hooks/useCollectionStats"; import { nftsQueryKey } from "@/hooks/useNFTs"; import { getKeplrSigningCosmWasmClient } from "@/networks/signer"; +import { + fontRegular10, + fontRegular12, + fontRegular14, +} from "@/utils/style/fonts"; // NOTE: we put content in a memoized component to only rerender the container when the window width changes @@ -186,10 +191,7 @@ const NFTViewContent: React.FC<{ }} /> @@ -203,19 +205,12 @@ const NFTViewContent: React.FC<{ }} > {nft.collectionName} @@ -269,20 +264,10 @@ const NFTViewHeader: React.FC<{ params: { id: nft.ownerId }, }} > - + Owned by - + {userInfo.metadata?.tokenId || shortUserAddressFromID(nft.ownerId, 10)} @@ -463,22 +448,13 @@ const NFTViewFooter: React.FC<{ nft: NFT; localSelected: boolean }> = memo( /> {/* FIXME: should come from price denom */} Price ) : ( - + Not listed )} diff --git a/packages/components/sorts/SortButton.tsx b/packages/components/sorts/SortButton.tsx index 4a6f85163a..d664e215f6 100644 --- a/packages/components/sorts/SortButton.tsx +++ b/packages/components/sorts/SortButton.tsx @@ -6,7 +6,7 @@ import chevronUpSVG from "../../../assets/icons/chevron-up.svg"; import sortSVG from "../../../assets/icons/sort.svg"; import { SortDirection } from "../../api/marketplace/v1/marketplace"; import { neutral11, secondaryColor } from "../../utils/style/colors"; -import { fontSemibold14 } from "../../utils/style/fonts"; +import { fontRegular14 } from "../../utils/style/fonts"; import { BrandText } from "../BrandText"; import { SVG } from "../SVG"; import { LegacyTertiaryBox } from "../boxes/LegacyTertiaryBox"; @@ -55,7 +55,7 @@ export const SortButton: React.FC<{ width={16} style={{ marginRight: 8 }} /> - + Price{" "} {sortDirection === SortDirection.SORT_DIRECTION_ASCENDING ? "Ascending" diff --git a/packages/screens/Marketplace/CollectionScreen.tsx b/packages/screens/Marketplace/CollectionScreen.tsx index 3d76a0a447..45f2508cc6 100644 --- a/packages/screens/Marketplace/CollectionScreen.tsx +++ b/packages/screens/Marketplace/CollectionScreen.tsx @@ -56,12 +56,7 @@ export const CollectionScreen: ScreenFC<"Collection"> = ({ route }) => { onBackPress={() => navigation.navigate("Marketplace")} forceNetworkId={network?.id} > - + = () => { headerChildren={NFT Marketplace} responsive > - + = () => { alignItems: "center", }} > - Popular Collections + Popular Collections = () => { }} > diff --git a/packages/screens/Marketplace/PeriodFilter.tsx b/packages/screens/Marketplace/PeriodFilter.tsx index 6fdfe470c0..57815e3869 100644 --- a/packages/screens/Marketplace/PeriodFilter.tsx +++ b/packages/screens/Marketplace/PeriodFilter.tsx @@ -1,5 +1,5 @@ import React, { FC, Fragment, useState } from "react"; -import { TouchableOpacity, useWindowDimensions, View } from "react-native"; +import { TouchableOpacity, View } from "react-native"; import { useSelector } from "react-redux"; import chevronDownSVG from "../../../assets/icons/chevron-down.svg"; @@ -10,6 +10,7 @@ import { BrandText } from "@/components/BrandText"; import { SVG } from "@/components/SVG"; import { SpacerColumn, SpacerRow } from "@/components/spacer"; import { useDropdowns } from "@/hooks/useDropdowns"; +import { useMaxResolution } from "@/hooks/useMaxResolution"; import { marketplacePeriodItems, PeriodItem, @@ -18,11 +19,11 @@ import { } from "@/store/slices/marketplaceFilters"; import { useAppDispatch } from "@/store/store"; import { neutral33, secondaryColor } from "@/utils/style/colors"; -import { fontSemibold14 } from "@/utils/style/fonts"; +import { fontRegular14 } from "@/utils/style/fonts"; import { layout, RESPONSIVE_BREAKPOINT_S } from "@/utils/style/layout"; export const PeriodFilter: FC = () => { - const { width } = useWindowDimensions(); + const { width } = useMaxResolution({ isLarge: true }); const [isDropdownOpen, setDropdownState, dropdownRef] = useDropdowns(); const timePeriod = useSelector(selectTimePeriod); @@ -52,7 +53,7 @@ export const PeriodFilter: FC = () => { - + {width < RESPONSIVE_BREAKPOINT_S ? selectedItem.shortLabel : selectedItem.label} @@ -84,7 +85,7 @@ export const PeriodFilter: FC = () => { .map((periodItem, index) => ( onPressPeriodItem(periodItem)}> - + {width < RESPONSIVE_BREAKPOINT_S ? periodItem.shortLabel : periodItem.label} diff --git a/packages/screens/Marketplace/SideCart.tsx b/packages/screens/Marketplace/SideCart.tsx index 7c33718564..5370d741fd 100644 --- a/packages/screens/Marketplace/SideCart.tsx +++ b/packages/screens/Marketplace/SideCart.tsx @@ -53,9 +53,9 @@ import { primaryColor, } from "@/utils/style/colors"; import { - fontMedium10, - fontSemibold12, - fontSemibold14, + fontRegular10, + fontRegular12, + fontRegular14, } from "@/utils/style/fonts"; import { layout } from "@/utils/style/layout"; import { modalMarginPadding } from "@/utils/style/modals"; @@ -83,15 +83,8 @@ const Header: React.FC<{ flexDirection: "row", }} > - Cart - + Cart + {items.length} @@ -111,7 +104,7 @@ const Header: React.FC<{ paddingBottom: 2, paddingLeft: 6, }, - fontMedium10, + fontRegular10, ]} onPress={onPressClear} > @@ -165,7 +158,7 @@ const CartItems: React.FC<{ id: EntityId }> = ({ id }) => { marginRight: 6, }} /> - {nft?.name} + {nft?.name} { dispatch(removeSelected(id)); @@ -184,22 +177,13 @@ const CartItems: React.FC<{ id: EntityId }> = ({ id }) => { marginTop: layout.spacing_x1, }} > - + {userInfo.metadata?.tokenId || shortUserAddressFromID(nft.ownerId, 10)} - + {prettyPrice(nft.networkId, nft.price, nft.denom)} @@ -232,7 +216,7 @@ const ItemTotal: React.FC<{ marginTop: layout.spacing_x1, }} > - + {textLeft} {typeof textRight === "number" ? textRight.toFixed(2) : textRight} @@ -404,11 +388,7 @@ const Footer: React.FC<{ items: any[] }> = ({ items }) => { })} - +