From d473d059389430e119c40aa1df3769853eab5770 Mon Sep 17 00:00:00 2001 From: memoyil <2213635+memoyil@users.noreply.github.com> Date: Thu, 10 Oct 2024 11:50:35 +0200 Subject: [PATCH] fix: Menu active subitems and remove submenu from views (#10803) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issues Fixed: https://pancakeswap.finance/liquidity/positions doesn't highlight Earn in menu Removing the dependency between views to make treeshaking work correctly Refactors: Instead of using seperate submenu components, make everything done in menu config --- ## PR-Codex overview This PR focuses on removing the `SubMenu` component from various views across the application, while also making adjustments to how active sub-menu items are determined and displayed in the menu configuration. ### Detailed summary - Deleted `SubMenu` from `PositionManagers`, `LandingV4`, `Farms`, `Predictions`, `Pools`, `CakeStaking`, and `Lottery` views. - Updated `getActiveSubMenuItem` to include additional matching logic for sub-menu items. - Modified `ConfigMenuItemsType` to include `overrideSubNavItems` and `matchHrefs`. - Enhanced menu configuration with new `overrideSubNavItems` for various menu items. - Adjusted `IfoPageLayout` to remove `SubMenuItems` and related logic. > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` --- apps/web/src/components/Menu/config/config.ts | 61 ++++++-- apps/web/src/components/Menu/index.tsx | 12 +- apps/web/src/components/Menu/utils.ts | 14 +- apps/web/src/views/CakeStaking/index.tsx | 2 - apps/web/src/views/Farms/index.tsx | 8 +- apps/web/src/views/Ifos/index.tsx | 22 +-- .../LandingV4/components/SubMenu/index.tsx | 32 ---- apps/web/src/views/LandingV4/index.tsx | 2 - .../Lottery/components/SubMenu/index.tsx | 22 --- apps/web/src/views/Lottery/index.tsx | 138 +++++++++--------- apps/web/src/views/Pools/index.tsx | 2 - .../components/SubMenu/index.tsx | 50 ------- apps/web/src/views/PositionManagers/index.tsx | 2 - apps/web/src/views/Predictions/index.tsx | 2 - .../universalFarms/components/PoolsBanner.tsx | 74 +++++----- .../localization/src/config/translations.json | 3 - packages/uikit/src/widgets/Menu/Menu.tsx | 4 +- 17 files changed, 178 insertions(+), 272 deletions(-) delete mode 100644 apps/web/src/views/LandingV4/components/SubMenu/index.tsx delete mode 100644 apps/web/src/views/Lottery/components/SubMenu/index.tsx delete mode 100644 apps/web/src/views/PositionManagers/components/SubMenu/index.tsx diff --git a/apps/web/src/components/Menu/config/config.ts b/apps/web/src/components/Menu/config/config.ts index c2a5503a0dfe2..450155fdf56d4 100644 --- a/apps/web/src/components/Menu/config/config.ts +++ b/apps/web/src/components/Menu/config/config.ts @@ -18,9 +18,16 @@ import { SUPPORT_CAKE_STAKING, SUPPORT_FARMS, SUPPORT_ONLY_BSC } from 'config/co import { getOptionsUrl } from 'utils/getOptionsUrl' import { getPerpetualUrl } from 'utils/getPerpetualUrl' -export type ConfigMenuDropDownItemsType = DropdownMenuItems & { hideSubNav?: boolean } -export type ConfigMenuItemsType = Omit & { hideSubNav?: boolean; image?: string } & { +export type ConfigMenuDropDownItemsType = DropdownMenuItems & { + hideSubNav?: boolean + overrideSubNavItems?: DropdownMenuItems['items'] + matchHrefs?: string[] +} +export type ConfigMenuItemsType = Omit & { + hideSubNav?: boolean + image?: string items?: ConfigMenuDropDownItemsType[] + overrideSubNavItems?: ConfigMenuDropDownItemsType[] } export const addMenuItemSupported = (item, chainId) => { @@ -83,11 +90,33 @@ const config: ( fillIcon: EarnFillIcon, image: '/images/decorations/pe2.png', supportChainIds: SUPPORT_FARMS, - hideSubNav: true, + overrideSubNavItems: [ + { + label: t('Farm / Liquidity'), + href: '/liquidity/pools', + supportChainIds: SUPPORT_FARMS, + }, + { + label: t('Position Manager'), + href: '/position-managers', + supportChainIds: POSITION_MANAGERS_SUPPORTED_CHAINS, + }, + { + label: t('CAKE Staking'), + href: '/cake-staking', + supportChainIds: SUPPORT_CAKE_STAKING, + }, + { + label: t('Syrup Pools'), + href: '/pools', + supportChainIds: POOL_SUPPORTED_CHAINS, + }, + ].map((item) => addMenuItemSupported(item, chainId)), items: [ { label: t('Farm / Liquidity'), href: '/liquidity/pools', + matchHrefs: ['/liquidity/positions'], supportChainIds: SUPPORT_FARMS, }, { @@ -150,8 +179,17 @@ const config: ( { label: t('Play'), icon: GameIcon, - hideSubNav: true, href: '/prediction', + overrideSubNavItems: [ + { + label: t('Prediction'), + href: '/prediction', + }, + { + label: t('Lottery'), + href: '/lottery', + }, + ], items: [ { label: t('Prediction (BETA)'), @@ -186,6 +224,16 @@ const config: ( label: t('IFO'), href: '/ifo', image: '/images/ifos/ifo-bunny.png', + overrideSubNavItems: [ + { + label: t('Latest'), + href: '/ifo', + }, + { + label: t('Finished'), + href: '/ifo/history', + }, + ], }, { label: t('Voting'), @@ -216,11 +264,6 @@ const config: ( href: 'https://docs.pancakeswap.finance', type: DropdownMenuItemType.EXTERNAL_LINK, }, - { - label: t('v4'), - href: '/v4', - isMobileOnly: true, - }, ].map((item) => addMenuItemSupported(item, chainId)), }, ].map((item) => addMenuItemSupported(item, chainId)) diff --git a/apps/web/src/components/Menu/index.tsx b/apps/web/src/components/Menu/index.tsx index fc4872f670d5b..0807a61090265 100644 --- a/apps/web/src/components/Menu/index.tsx +++ b/apps/web/src/components/Menu/index.tsx @@ -27,8 +27,6 @@ const LinkComponent = (linkProps) => { return } -const EMPTY_ARRAY = [] - const Menu = (props) => { const { enabled } = useWebNotifications() const { chainId } = useActiveChainId() @@ -90,7 +88,7 @@ const Menu = (props) => { const activeMenuItem = useMemo(() => getActiveMenuItem({ menuConfig: menuItems, pathname }), [menuItems, pathname]) const activeSubMenuItem = useMemo( () => getActiveSubMenuItem({ menuItem: activeMenuItem, pathname }), - [menuItems, pathname], + [pathname, activeMenuItem], ) const activeSubChildMenuItem = useMemo( () => getActiveSubMenuChildItem({ menuItem: activeMenuItem, pathname }), @@ -129,7 +127,13 @@ const Menu = (props) => { setLang={setLanguage} cakePriceUsd={cakePrice.eq(BIG_ZERO) ? undefined : cakePrice} links={menuItems} - subLinks={activeMenuItem?.hideSubNav || activeSubMenuItem?.hideSubNav ? EMPTY_ARRAY : activeMenuItem?.items} + subLinks={ + activeSubMenuItem?.overrideSubNavItems ?? + activeMenuItem?.overrideSubNavItems ?? + (activeMenuItem?.hideSubNav || activeSubMenuItem?.hideSubNav + ? [] + : activeSubMenuItem?.items ?? activeMenuItem?.items) + } footerLinks={getFooterLinks} activeItem={activeMenuItem?.href} activeSubItem={activeSubMenuItem?.href} diff --git a/apps/web/src/components/Menu/utils.ts b/apps/web/src/components/Menu/utils.ts index 65d2096d60ed2..495374f985e23 100644 --- a/apps/web/src/components/Menu/utils.ts +++ b/apps/web/src/components/Menu/utils.ts @@ -11,7 +11,15 @@ export const getActiveMenuItem = ({ pathname, menuConfig }: { pathname: string; export const getActiveSubMenuItem = ({ pathname, menuItem }: { pathname: string; menuItem?: ConfigMenuItemsType }) => { const activeSubMenuItems = - menuItem?.items?.filter((subMenuItem) => subMenuItem?.href && pathname.startsWith(subMenuItem?.href)) ?? [] + menuItem?.items?.filter((subMenuItem) => { + if (subMenuItem?.href && pathname.startsWith(subMenuItem?.href)) { + return true + } + if (subMenuItem?.matchHrefs?.some((matchHref) => pathname.startsWith(matchHref))) { + return true + } + return false + }) ?? [] // Pathname doesn't include any submenu item href - return undefined if (!activeSubMenuItems || activeSubMenuItems.length === 0) { @@ -37,8 +45,8 @@ export const getActiveSubMenuChildItem = ({ menuItem?: ConfigMenuItemsType }) => { const getChildItems = menuItem?.items - ?.map((i) => i.items) - ?.filter((i) => Boolean(i)) + ?.map((i) => [...(i.items ?? []), ...(i.overrideSubNavItems ?? [])]) + ?.filter(Boolean) .flat() const activeSubMenuItems = diff --git a/apps/web/src/views/CakeStaking/index.tsx b/apps/web/src/views/CakeStaking/index.tsx index cbefbd400c374..b61846f5cac14 100644 --- a/apps/web/src/views/CakeStaking/index.tsx +++ b/apps/web/src/views/CakeStaking/index.tsx @@ -10,7 +10,6 @@ import useTheme from 'hooks/useTheme' import { useCallback, useState } from 'react' import styled from 'styled-components' import { useGauges } from 'views/GaugesVoting/hooks/useGauges' -import { SubMenu } from 'views/PositionManagers/components/SubMenu' import { BenefitCard } from './components/BenefitCard' import { CakeRewardsCard } from './components/CakeRewardsCard' import { LockCake } from './components/LockCake' @@ -36,7 +35,6 @@ const CakeStaking = () => { - diff --git a/apps/web/src/views/Farms/index.tsx b/apps/web/src/views/Farms/index.tsx index c6147dcc8f5c3..1ca6334470f78 100644 --- a/apps/web/src/views/Farms/index.tsx +++ b/apps/web/src/views/Farms/index.tsx @@ -1,6 +1,5 @@ import { ConnectorNames } from 'config/wallet' import { ExtendEthereum } from 'global' -import { SubMenu } from 'views/PositionManagers/components/SubMenu' import { useAccount } from 'wagmi' import { mainnet } from 'wagmi/chains' import FarmsV3 from './FarmsV3' @@ -19,12 +18,7 @@ export function useIsBloctoETH() { } export const FarmsV3PageLayout: React.FC> = ({ children }) => { - return ( - <> - - {children} - - ) + return {children} } export { FarmsContext, FarmsV3Context } diff --git a/apps/web/src/views/Ifos/index.tsx b/apps/web/src/views/Ifos/index.tsx index b3f1999a3782a..cc3b08fe098d4 100644 --- a/apps/web/src/views/Ifos/index.tsx +++ b/apps/web/src/views/Ifos/index.tsx @@ -1,7 +1,6 @@ -import { useEffect, useMemo } from 'react' -import { SubMenuItems, useModal } from '@pancakeswap/uikit' +import { useEffect } from 'react' +import { useModal } from '@pancakeswap/uikit' import { useTranslation } from '@pancakeswap/localization' -import { useRouter } from 'next/router' import { useUserNotUsCitizenAcknowledgement, IdType } from 'hooks/useUserIsUsCitizenAcknowledgement' import USCitizenConfirmModal from 'components/Modal/USCitizenConfirmModal' import Hero from './components/Hero' @@ -9,8 +8,6 @@ import IfoProvider from './contexts/IfoContext' export const IfoPageLayout = ({ children }) => { const { t } = useTranslation() - const router = useRouter() - const isExact = router.route === '/ifo' const [userNotUsCitizenAcknowledgement] = useUserNotUsCitizenAcknowledgement(IdType.IFO) const [onUSCitizenModalPresent] = useModal( @@ -39,23 +36,8 @@ export const IfoPageLayout = ({ children }) => { return () => clearTimeout(timer) }, [userNotUsCitizenAcknowledgement, onUSCitizenModalPresent]) - const subMenuItems = useMemo( - () => [ - { - label: t('Latest'), - href: '/ifo', - }, - { - label: t('Finished'), - href: '/ifo/history', - }, - ], - [t], - ) - return ( - {children} diff --git a/apps/web/src/views/LandingV4/components/SubMenu/index.tsx b/apps/web/src/views/LandingV4/components/SubMenu/index.tsx deleted file mode 100644 index e07075fa6218a..0000000000000 --- a/apps/web/src/views/LandingV4/components/SubMenu/index.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { useTranslation } from '@pancakeswap/localization' -import { SubMenuItems } from '@pancakeswap/uikit' -import { useRouter } from 'next/router' -import React, { useMemo } from 'react' -import { styled } from 'styled-components' - -const SubMenuItemsStyled = styled(SubMenuItems)` - > div > div ::after { - display: none; - } -` - -export const SubMenu: React.FC = () => { - const { asPath } = useRouter() - const { t } = useTranslation() - - const subMenuItems = useMemo(() => { - return [ - { label: t('Introducing v4'), href: '/v4' }, - { label: t('Features'), href: '/v4#features' }, - { label: t('Start Building'), href: '/v4#building' }, - { label: t('Hooks'), href: '/v4#hooks' }, - { label: t('Events and News'), href: '/v4#events' }, - ] - }, [t]) - - const activeSubItem = useMemo(() => { - return subMenuItems.find((subMenuItem) => subMenuItem.href === asPath)?.href - }, [subMenuItems, asPath]) - - return -} diff --git a/apps/web/src/views/LandingV4/index.tsx b/apps/web/src/views/LandingV4/index.tsx index 462eb719e3698..47b6dd2ae457a 100644 --- a/apps/web/src/views/LandingV4/index.tsx +++ b/apps/web/src/views/LandingV4/index.tsx @@ -6,7 +6,6 @@ import { ExploreHooks } from 'views/LandingV4/components/ExploreHooks' import { Features } from 'views/LandingV4/components/Features' import { NewsAndEvents } from 'views/LandingV4/components/NewsAndEvents' import { StartBuilding } from 'views/LandingV4/components/StartBuilding' -import { SubMenu } from 'views/LandingV4/components/SubMenu' export const LandingV4 = () => { const { asPath } = useRouter() @@ -22,7 +21,6 @@ export const LandingV4 = () => { return ( - diff --git a/apps/web/src/views/Lottery/components/SubMenu/index.tsx b/apps/web/src/views/Lottery/components/SubMenu/index.tsx deleted file mode 100644 index 20c1c27d5dd9c..0000000000000 --- a/apps/web/src/views/Lottery/components/SubMenu/index.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { useTranslation } from '@pancakeswap/localization' -import { SubMenuItems } from '@pancakeswap/uikit' -import { useRouter } from 'next/router' -import React, { useMemo } from 'react' - -export const SubMenu: React.FC = () => { - const { pathname } = useRouter() - const { t } = useTranslation() - - const subMenuItems = useMemo(() => { - return [ - { label: t('Prediction'), href: '/prediction' }, - { label: t('Lottery'), href: '/lottery' }, - ] - }, [t]) - - const activeSubItem = useMemo(() => { - return subMenuItems.find((subMenuItem) => subMenuItem.href === pathname)?.href - }, [subMenuItems, pathname]) - - return -} diff --git a/apps/web/src/views/Lottery/index.tsx b/apps/web/src/views/Lottery/index.tsx index 71e607966bbcc..54bb6fbf2141a 100644 --- a/apps/web/src/views/Lottery/index.tsx +++ b/apps/web/src/views/Lottery/index.tsx @@ -6,7 +6,6 @@ import useTheme from 'hooks/useTheme' import { useState } from 'react' import { useFetchLottery, useLottery } from 'state/lottery/hooks' import { styled } from 'styled-components' -import { SubMenu } from 'views/Lottery/components/SubMenu' import AllHistoryCard from './components/AllHistoryCard' import CheckPrizesSection from './components/CheckPrizesSection' import Countdown from './components/Countdown' @@ -44,81 +43,78 @@ const Lottery = () => { const { numUserRoundsRequested, handleShowMoreUserRounds } = useShowMoreUserHistory() return ( - <> - - - - - - - - {status === LotteryStatus.OPEN && ( - - {t('Get your tickets now!')} - - )} - - {nextEventTime && (postCountdownText || preCountdownText) ? ( - - ) : ( - - )} - - - - - - - - - - - {t('Finished Rounds')} + + + + + + + {status === LotteryStatus.OPEN && ( + + {t('Get your tickets now!')} - - setHistoryTabMenuIndex(index)} + )} + + {nextEventTime && (postCountdownText || preCountdownText) ? ( + - - {historyTabMenuIndex === 0 ? ( - ) : ( - + )} - - - - - - - + + + + + + + + + + {t('Finished Rounds')} + + + setHistoryTabMenuIndex(index)} + /> + + {historyTabMenuIndex === 0 ? ( + + ) : ( + + )} + + + + + + + ) } diff --git a/apps/web/src/views/Pools/index.tsx b/apps/web/src/views/Pools/index.tsx index c8be54ac3c1af..62674129ee3d1 100644 --- a/apps/web/src/views/Pools/index.tsx +++ b/apps/web/src/views/Pools/index.tsx @@ -11,7 +11,6 @@ import Page from 'components/Layout/Page' import { TokenPairImage } from 'components/TokenImage' import { useActiveChainId } from 'hooks/useActiveChainId' import { usePoolsPageFetch, usePoolsWithVault } from 'state/pools/hooks' -import { SubMenu } from 'views/PositionManagers/components/SubMenu' import { useAccount } from 'wagmi' import CakeVaultCard from './components/CakeVaultCard' @@ -50,7 +49,6 @@ const Pools: React.FC = () => { return ( <> - diff --git a/apps/web/src/views/PositionManagers/components/SubMenu/index.tsx b/apps/web/src/views/PositionManagers/components/SubMenu/index.tsx deleted file mode 100644 index c846c011ad690..0000000000000 --- a/apps/web/src/views/PositionManagers/components/SubMenu/index.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { useTranslation } from '@pancakeswap/localization' -import { SUPPORTED_CHAIN_IDS as POOL_SUPPORTED_CHAINS } from '@pancakeswap/pools' -import { SUPPORTED_CHAIN_IDS as POSITION_MANAGERS_SUPPORTED_CHAINS } from '@pancakeswap/position-managers' -import { SubMenuItems } from '@pancakeswap/uikit' -import { addMenuItemSupported } from 'components/Menu/config/config' -import { SUPPORT_CAKE_STAKING, SUPPORT_FARMS } from 'config/constants/supportChains' -import { useActiveChainId } from 'hooks/useActiveChainId' -import { useRouter } from 'next/router' -import React, { useMemo } from 'react' - -export const SubMenu: React.FC = () => { - const { pathname } = useRouter() - const { t } = useTranslation() - const { chainId } = useActiveChainId() - - const subMenuItems = useMemo(() => { - return [ - { - label: t('Farm / Liquidity'), - href: '/liquidity/pools', - supportChainIds: SUPPORT_FARMS, - }, - { - label: t('Position Manager'), - href: '/position-managers', - supportChainIds: POSITION_MANAGERS_SUPPORTED_CHAINS, - }, - { - label: t('CAKE Staking'), - href: '/cake-staking', - supportChainIds: SUPPORT_CAKE_STAKING, - }, - { - label: t('Syrup Pools'), - href: '/pools', - supportChainIds: POOL_SUPPORTED_CHAINS, - }, - ].map((item) => addMenuItemSupported(item, chainId)) - }, [chainId, t]) - - const activeSubItem = useMemo(() => { - if (pathname === '/liquidity/positions') { - return subMenuItems[0].href // liquidity - } - - return subMenuItems.find((subMenuItem) => pathname.includes(subMenuItem.href))?.href - }, [subMenuItems, pathname]) - - return -} diff --git a/apps/web/src/views/PositionManagers/index.tsx b/apps/web/src/views/PositionManagers/index.tsx index c509906ae9696..31a467805706c 100644 --- a/apps/web/src/views/PositionManagers/index.tsx +++ b/apps/web/src/views/PositionManagers/index.tsx @@ -1,12 +1,10 @@ import Page from 'components/Layout/Page' -import { SubMenu } from 'views/PositionManagers/components/SubMenu' import { Header } from './components' import { Controls, VaultContent } from './containers' export function PositionManagers() { return ( <> -
diff --git a/apps/web/src/views/Predictions/index.tsx b/apps/web/src/views/Predictions/index.tsx index 037ec96e8e5f7..4c1020e9017e0 100644 --- a/apps/web/src/views/Predictions/index.tsx +++ b/apps/web/src/views/Predictions/index.tsx @@ -4,7 +4,6 @@ import { useAccountLocalEventListener } from 'hooks/useAccountLocalEventListener import { useEffect, useRef } from 'react' import { useChartView, useIsChartPaneOpen } from 'state/predictions/hooks' import { useUserPredictionChainlinkChartDisclaimerShow, useUserPredictionChartDisclaimerShow } from 'state/user/hooks' -import { SubMenu } from 'views/Lottery/components/SubMenu' import Desktop from './Desktop' import Mobile from './Mobile' import ChainlinkChartDisclaimer from './components/ChainlinkChartDisclaimer' @@ -67,7 +66,6 @@ const Predictions = () => { return ( - diff --git a/apps/web/src/views/universalFarms/components/PoolsBanner.tsx b/apps/web/src/views/universalFarms/components/PoolsBanner.tsx index da8ea549fb1d9..e1d2068775cc6 100644 --- a/apps/web/src/views/universalFarms/components/PoolsBanner.tsx +++ b/apps/web/src/views/universalFarms/components/PoolsBanner.tsx @@ -4,49 +4,45 @@ import { Box, Button, Column, LinkExternal, PageHeader, Row, Text } from '@panca import { VerticalDivider } from '@pancakeswap/widgets-internal' import { BCakeBoosterCard } from 'views/Farms/components/YieldBooster/components/bCakeV3/BCakeBoosterCard' import { FarmFlexWrapper, FarmH1, FarmH2 } from 'views/Farms/styled' -import { SubMenu } from 'views/PositionManagers/components/SubMenu' export const PoolsBanner = ({ additionLink }: { additionLink?: React.ReactNode }) => { const { t } = useTranslation() const { theme } = useTheme() return ( - <> - - - - - - - {t('Earn from LP')} - - - {t('Liquidity Pools & Farms')} - - - - - - {!!additionLink && ( - <> - - {additionLink} - - )} - - - - - - - - - + + + + + + {t('Earn from LP')} + + + {t('Liquidity Pools & Farms')} + + + + + + {!!additionLink && ( + <> + + {additionLink} + + )} + + + + + + + + ) } diff --git a/packages/localization/src/config/translations.json b/packages/localization/src/config/translations.json index 5be7ef4964597..b7a10c86e7d9f 100644 --- a/packages/localization/src/config/translations.json +++ b/packages/localization/src/config/translations.json @@ -3046,7 +3046,6 @@ "This liquidity position is currently earning rewards on Merkl.": "This liquidity position is currently earning rewards on Merkl.", "This liquidity position will NOT earn any rewards on Merkl due to its total USD value being less than $20.": "This liquidity position will NOT earn any rewards on Merkl due to its total USD value being less than $20.", "Approve transaction filled, but Approval still not enough to fill current trade. Please try again.": "Approve transaction filled, but Approval still not enough to fill current trade. Please try again.", - "v4": "v4", "PancakeSwap v4": "PancakeSwap v4", "Innovation": "Innovation", "Empower, Build and Innovate with PancakeSwap v4": "Empower, Build and Innovate with PancakeSwap v4", @@ -3070,8 +3069,6 @@ "Read the Whitepaper": "Read the Whitepaper", "Get the Tools": "Get the Tools", "Join the Community": "Join the Community", - "Introducing v4": "Introducing v4", - "Events and News": "Events and News", "Load More": "Load More", "The Full Range Hook allows users to add liquidity across the entire price range within concentrated liquidity pools, similar to v2 pools. This hook eases liquidity position management for the LPs.": "The Full Range Hook allows users to add liquidity across the entire price range within concentrated liquidity pools, similar to v2 pools. This hook eases liquidity position management for the LPs.", "Geomean Oracle": "Geomean Oracle", diff --git a/packages/uikit/src/widgets/Menu/Menu.tsx b/packages/uikit/src/widgets/Menu/Menu.tsx index da256912640c7..83465e39a8b0a 100644 --- a/packages/uikit/src/widgets/Menu/Menu.tsx +++ b/packages/uikit/src/widgets/Menu/Menu.tsx @@ -184,14 +184,14 @@ const Menu: React.FC> = ({ {subLinksMobileOnly && subLinksMobileOnly?.length > 0 && ( )}