import { Menu } from '@prisme.ai/design-system'; import { useBlock } from '../Provider'; import { useBlocks } from '../Provider/blocksContext'; import { Action, ActionConfig, ActionProps } from './Action'; import { BaseBlockConfig } from './types'; import { BaseBlock } from './BaseBlock'; import { useMemo } from 'react'; import useLocalizedText from '../useLocalizedText'; interface HeaderConfig extends BaseBlockConfig { title?: Prismeai.LocalizedText; logo?: { src: string; alt: string; action?: Omit; }; nav: ActionConfig[]; } interface HeaderProps extends HeaderConfig, Pick {} export const Header = ({ Link, events, className, ...config }: HeaderProps) => { const { localize } = useLocalizedText(); const nav = config.nav && Array.isArray(config.nav) ? config.nav : []; const logo = useMemo( () => config.logo ? ( {config.logo.alt} ) : null, [config.logo] ); return (
{logo && (
{config.logo?.action && ( )} {!config.logo?.action && logo}
)}

{localize(config.title)}

({ label: ( ), key: `${k}`, }))} onClick={(e) => {}} className="pr-block-header_right" />
); }; const defaultStyles = `:block { display: flex; flex: 1 1 0%; justify-content: space-between; } @media (min-width:768px) { :block { align-items: center; } } .pr-block-header__left { display: flex; min-width: 6.25rem; } .pr-block-header__logo, .pr-block-header__logo a { display: flex; justify-content: center; } .pr-block-header__logo { margin-right: 1rem; } .pr-block-header__logo-image { max-height: 3rem; } .pr-block-header__title { display: flex; align-items: center; margin: 0; font-weight: 700; } .pr-block-header_right { width: 65%; justify-content: flex-end; color: var(--color-text); background-color: transparent; } `; export const HeaderInContext = () => { const { config, events } = useBlock(); const { components: { Link }, } = useBlocks(); return (
); }; HeaderInContext.styles = defaultStyles; export default HeaderInContext;