import React from 'react' import { THeaderProps, THeaderVariant } from '../../interfaces' import BrandFtMastheadSvg from '../svg-components/BrandFtMasthead' import { TNavMenuItem } from '@financial-times/dotcom-types-navigation' import { AskFtButton } from '../ask-ft/askFtButton' import { DropdownNavigation, ProfessionalLabel } from '../dropdown-navigation/dropdownNavigation' import { PRO_NAVIGATION_DROPDOWN_DEFAULT_LIST } from '../dropdown-navigation/constants' import { MprButton } from '../mpr/mprButton' const HeaderWrapper = (props) => ( ) const DrawerIcon = () => ( Open side navigation menu ) const SearchIcon = () => ( Open search bar ) const MyAccountLink = ({ item, signedIn, variant }: { item: TNavMenuItem signedIn: boolean variant?: THeaderVariant }) => { const classNames = 'o-header__top-myaccount' const id = signedIn ? 'o-header-top-link-myaccount' : 'o-header-top-link-signin' const setTabIndex = variant === 'sticky' ? { tabIndex: -1 } : null return ( {item.label} ) } const TopWrapper = (props) => (
{props.children}
) const TopColumnLeft = (props: THeaderProps) => (
{props.showAskButton && ( )} {props.showMprButton && ( )}
) const TopColumnCenter = () => (
) const TopColumnCenterNoLink = () => (
) const TopColumnRightLoggedIn = (props: THeaderProps) => { const [ signInAction, subscribeAction, restartSubscriptionAction ] = props.data['navbar-top-right']?.items ?? []; const showRestartSubscriptionButton = props.showRestartSubscriptionButton && restartSubscriptionAction; return (
{showRestartSubscriptionButton && ( )} {/* We want to ensure the restart subscription button and subscribe button do not appear at the same time by any chance. */} {!showRestartSubscriptionButton && !props.userIsSubscribed && subscribeAction && ( )} {signInAction && ( )}
) } const MenuButton = ({ showProNavigation, signInAction, variant }) => { const isSticky = variant === 'sticky' return ( {showProNavigation ? ( } variant={variant} /> ) : ( )} ) } const SignInLink = ({ item, variant, className }: { item: TNavMenuItem variant?: THeaderVariant className?: string }) => { const setTabIndex = variant === 'sticky' ? { tabIndex: -1 } : null return ( {item.label} ) } const SubscribeButton = ({ item, variant, className }: { item: TNavMenuItem variant?: THeaderVariant className?: string }) => { const setTabIndex = variant === 'sticky' ? { tabIndex: -1 } : null return ( {item.label} ) } const RestartSubscriptionButton = ({ item, className, variant }: { item: TNavMenuItem, className?: string, variant?: THeaderVariant }) => { const setTabIndex = variant === 'sticky' ? { tabIndex: -1 } : null return ( {item.label} ) } const TopColumnRightAnon = ({ items, variant }: { items: TNavMenuItem[]; variant?: THeaderVariant }) => { // If user is anonymous the second list item is styled as a button const [signInAction, subscribeAction] = items return (
{subscribeAction && ( )} {signInAction && }
) } const TopColumnRight = (props: THeaderProps) => { if (props.userIsLoggedIn) { return } else { const userNavAnonItems = props.data['navbar-top-right-anon'].items return } } export { HeaderWrapper, TopWrapper, TopColumnLeft, TopColumnCenter, TopColumnCenterNoLink, TopColumnRight, TopColumnRightAnon, SubscribeButton, SignInLink }