import { Box, Center, Flex, Group, Header, Text, UnstyledButton, useMantineTheme, } from '@mantine/core'; import { useMediaQuery } from '@mantine/hooks'; import { IconAlertTriangle } from '@tabler/icons-react'; import Link from 'next/link'; import { useScreenLargerThan } from '~/hooks/useScreenLargerThan'; import { Logo } from '../Logo'; import { AvatarMenu } from './AvatarMenu'; import { Search } from './search'; type MainHeaderProps = { logoHref?: string; showExperimental?: boolean; headerActions?: React.ReactNode; leftIcon?: React.ReactNode; }; export const MainHeader = ({ showExperimental = false, logoHref = '/', headerActions, leftIcon, }: MainHeaderProps) => { const { breakpoints } = useMantineTheme(); const isSmallerThanMd = useMediaQuery(`(max-width: ${breakpoints.sm})`); const experimentalHeaderNoteHeight = isSmallerThanMd ? 50 : 30; const headerBaseHeight = isSmallerThanMd ? 60 + 46 : 60; const headerHeight = showExperimental ? headerBaseHeight + experimentalHeaderNoteHeight : headerBaseHeight; return (
{leftIcon} {!isSmallerThanMd && } {headerActions} {isSmallerThanMd && (
)}
); }; type ExperimentalHeaderNoteProps = { height?: 30 | 50; visible?: boolean; }; const ExperimentalHeaderNote = ({ visible = false, height = 30 }: ExperimentalHeaderNoteProps) => { if (!visible) return null; return ( This is an experimental feature of Homarr. Please report any issues to the official Homarr team. ); };