import { IEquatable, IRouteLink, getClassNames } from '@websolutespa/bom-core'; import { useDrawer, useLayout } from '@websolutespa/bom-mixer-hooks'; import { IconChevronDown, IconWebhook } from '@websolutespa/bom-mixer-icons'; import { useState } from 'react'; import styled, { css } from 'styled-components'; import { Button, Container, Flex, Nav, NavLink, Text, UIComponentProps, getCssResponsive } from '../../components'; import { MarketsAndLanguagesDrawer } from '../markets-and-languages/markets-and-languages-drawer'; export type HeaderProps = UIComponentProps<{ fixed?: boolean; sticky?: boolean; scrolled?: boolean; }>; const HeaderContainer = styled.header` display: flex; align-items: center; min-height: 120px; background: var(--color-neutral-900); color: var(--color-neutral-100); ${props => props.fixed ? css` position: fixed; top: 0; left: 0; right: var(--locked-padding-right, 0); z-index: 1000; transition: background-color ease-in-out 350ms; background: ${props.scrolled ? 'var(--color-neutral-900)' : 'transparent'}; // color: ${props.scrolled ? 'var(--color-neutral-100)' : 'var(--color-neutral-100)'}; ` : ''}; ${props => props.sticky ? css` position: sticky; min-height: 80px; top: 0; right: var(--locked-padding-right, 0); z-index: 1000; transition: background-color ease-in-out 350ms; background: ${props.scrolled ? 'var(--color-neutral-900)' : 'var(--color-neutral-100)'}; color: ${props.scrolled ? 'var(--color-neutral-100)' : 'var(--color-neutral-900)'}; border-bottom: 1px solid ${props.scrolled ? 'var(--color-neutral-900)' : 'var(--color-neutral-300)'}; ` : ''}; ${props => getCssResponsive(props)} `; export const Header: React.FC = (props: HeaderProps) => { const layout = useLayout(); const [drawer, openDrawer, closeDrawer] = useDrawer(); const [nav, setNav] = useState(null); const onNav = (item?: IRouteLink) => { // console.log('onNav', item); const href = item?.href || null; setNav(href !== nav ? href : null); }; const classNames = getClassNames('header', { fixed: props.fixed, sticky: props.sticky }); return ( <> {layout.tree?.items && {layout.tree.items.map((x, i) => ( ) )} } {props.children} ); };