import React, { FC, useContext, useMemo } from 'react'; import { DocumentSizeContext } from '../../context/DocumentSizeContext'; import { ITopNavItem, TopNav } from '../../layout/TopNav'; import { NavItemWrapper, NavLink, NavSubmenu, NavSubmenuItem, NavSubmenuLabel, } from '../../layout/TopNav/styles'; import { ITopNavCategory, ITopNavLink, ITopNavLinkItem, ITopNavRendererItem, ITopNavRendererProps, TopNavItemType, } from './types'; export const TopNavRenderer: FC = ({ items }) => { const [documentResizeObserverEntry] = useContext( DocumentSizeContext, ); const topNavItems = useMemo( () => items.map(({ item, ...rest }: ITopNavRendererItem) => { switch (item.type) { case TopNavItemType.Category: { const { name, items }: ITopNavCategory = item.value; return { ...rest, element: ( {name} {items.map( ({ value: { label, href } }: ITopNavLinkItem) => ( {label} ), )} ), }; } case TopNavItemType.Link: { const { label, href }: ITopNavLink = item.value; return { ...rest, element: ( {label} ), }; } } }), [items], ); return ( ); };