import { useTranslation } from 'react-i18next' import { AmountInput } from '../../components/AmountInput/AmountInput.js' import { AmountInputCardPair } from '../../components/AmountInputCard/AmountInputCardPair.js' import { ContractComponent } from '../../components/ContractComponent/ContractComponent.js' import { GasRefuelMessage } from '../../components/Messages/GasRefuelMessage.js' import { PageContainer } from '../../components/PageContainer.js' import { Routes } from '../../components/Routes/Routes.js' import { SelectChainAndToken } from '../../components/SelectChainAndToken.js' import { SendToWalletButton } from '../../components/SendToWallet/SendToWalletButton.js' import { SettingsPanel } from '../../components/SettingsPanel/SettingsPanel.js' import { advancedNavigationTabKeys } from '../../components/SettingsPanel/utils.js' import { useHeader } from '../../hooks/useHeader.js' import { useWideVariant } from '../../hooks/useWideVariant.js' import { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js' import { useNavigationTabsStore } from '../../stores/navigationTabs/useNavigationTabsStore.js' import { LimitPageContent } from './LimitPageContent.js' import { MainPageActions } from './MainPageActions.js' const marginSx = { marginBottom: 2 } export const MainPage: React.FC = () => { const { t } = useTranslation() const wideVariant = useWideVariant() const { mode, modeOptions, contractComponent, hiddenUI, defaultUI } = useWidgetConfig() const activeTab = useNavigationTabsStore((state) => state.activeTab) const custom = mode === 'custom' // Surface the settings panel on the main page for advanced navigation tabs. const advancedMode = !!activeTab && advancedNavigationTabKeys.includes(activeTab) const showSendReceiveCards = defaultUI?.layout === 'cards' // Custom non-deposit contract flows have no amount entry — they keep the // chain/token selectors only, in both layouts. const showAmountEntry = !custom || modeOptions?.custom?.type === 'deposit' const showGasRefuelMessage = !hiddenUI?.gasRefuelMessage const splitTitle = modeOptions?.split === 'bridge' ? t('header.bridge') : modeOptions?.split === 'swap' ? t('header.swap') : undefined const title = mode === 'limit' ? t('header.limit') : mode === 'custom' ? t(`header.${modeOptions?.custom?.type ?? 'checkout'}`) : mode === 'refuel' ? t('header.gas') : mode === 'split' && splitTitle ? splitTitle : t('header.exchange') useHeader(title) if (mode === 'limit') { return } return ( {custom ? ( {contractComponent} ) : null} {showSendReceiveCards && showAmountEntry ? ( ) : ( <> {!showSendReceiveCards && showAmountEntry ? ( ) : null} )} {advancedMode ? : null} {!wideVariant ? : null} {showGasRefuelMessage ? : null} ) }