import ArrowBackIcon from '@mui/icons-material/ArrowBack'; import { Box, Typography } from '@mui/material'; import IconButton from '@mui/material/IconButton'; import { useTranslation } from 'react-i18next'; import { Route, Routes, useLocation } from 'react-router-dom'; import { useAccount, useNavigateBack } from '../../hooks'; import { useWidgetConfig } from '../../providers'; import { useHeaderStore } from '../../stores'; import { HiddenUI } from '../../types'; import { backButtonRoutes, navigationRoutes, navigationRoutesValues, } from '../../utils'; import { CloseDrawerButton } from './CloseDrawerButton'; import { HeaderAppBar, HeaderControlsContainer } from './Header.style'; import { NavigationTabs } from './NavigationTabs'; import { SettingsButton } from './SettingsButton'; import { TransactionHistoryButton } from './TransactionHistoryButton'; import { SplitWalletMenuButton } from './WalletHeader'; export const NavigationHeader: React.FC = () => { const { t } = useTranslation(); const { subvariant, hiddenUI, variant } = useWidgetConfig(); const { navigateBack } = useNavigateBack(); const { isConnected } = useAccount(); const { element, title } = useHeaderStore((state) => state); const { pathname } = useLocation(); const cleanedPathname = pathname.endsWith('/') ? pathname.slice(0, -1) : pathname; const path = cleanedPathname.substring(cleanedPathname.lastIndexOf('/') + 1); const hasPath = navigationRoutesValues.includes(path); const splitSubvariant = subvariant === 'split' && !hasPath; const handleHeaderTitle = () => { switch (path) { case navigationRoutes.selectWallet: return t(`header.selectWallet`); case navigationRoutes.settings: return t(`header.settings`); case navigationRoutes.bridges: return t(`settings.enabledBridges`); case navigationRoutes.exchanges: return t(`settings.enabledExchanges`); case navigationRoutes.languages: return t(`language.title`); case navigationRoutes.transactionHistory: return t(`header.transactionHistory`); case navigationRoutes.fromToken: { if (subvariant === 'nft') { return t(`header.payWith`); } return t(`header.from`); } case navigationRoutes.toToken: return t(`header.to`); case navigationRoutes.fromChain: case navigationRoutes.toChain: case navigationRoutes.toTokenNative: return t(`header.selectChain`); case navigationRoutes.routes: return t(`header.youGet`); case navigationRoutes.activeTransactions: return t(`header.activeTransactions`); case navigationRoutes.transactionExecution: { if (subvariant === 'nft') { return t(`header.purchase`); } return t(`header.exchange`); } case navigationRoutes.transactionDetails: { if (subvariant === 'nft') { return t(`header.purchaseDetails`); } return t(`header.transactionDetails`); } default: { switch (subvariant) { case 'nft': return t(`header.checkout`); case 'refuel': return t(`header.gas`); default: return t(`header.exchange`); } } } }; return ( <> {backButtonRoutes.includes(path) ? ( ) : null} {splitSubvariant ? ( ) : ( {title || handleHeaderTitle()} )} {isConnected && !hiddenUI?.includes(HiddenUI.History) ? ( ) : null} {variant === 'drawer' && subvariant === 'split' && !hiddenUI?.includes(HiddenUI.DrawerCloseButton) ? ( ) : null} } /> } /> {splitSubvariant ? : null} ); };