import type { ReactNode } from 'react' import UserMenu, { useSidebarToggle } from './UserMenu' import { wideEnough } from '../breakpoints' /** * Die Kopfleiste jeder Ansicht. * * Vorher gab es zwei Muster nebeneinander: Dateien, Papierkorb und * Freigabe-Links hatten eine feste Leiste, „Geteilt mit mir", Admin und Profil * dagegen eine große Überschrift im Scrollbereich. Beim Umschalten sprang * dadurch der Inhalt – und schon zwischen den drei Leisten war die Höhe * unterschiedlich, weil sie sich aus dem jeweils höchsten Bedienelement ergab. * * Deshalb hier eine feste Höhe statt einer gewachsenen: Die Leiste ist überall * gleich hoch, egal was darin steht. */ export const headerHeight = 57 /** * Ab dieser Breite passt alles in eine Zeile. * * Darunter wird umgebrochen statt gequetscht: Auf 390 px stand die Brotkrume * als einzelner Strich da, das Suchfeld schob sich über die Sortierauswahl, der * Ansichts-Umschalter war ganz verschwunden und der Nutzerbereich am rechten * Rand abgeschnitten. Eine Zeile, die nicht umbrechen kann, quetscht – und * ausgerechnet auf dem Gerät, mit dem man unterwegs einen Beleg sucht. * * Dieselbe Grenze schaltet die Seitenleiste um; sie steht deshalb in * `breakpoints.ts` und nicht mehr hier. Re-exportiert, weil sie hier gesucht * wird. */ export { wideEnough } interface Props { /** Strichsymbol, 18 × 18 – dasselbe wie in der Seitenleiste. */ icon?: ReactNode title?: string /** Nebenangabe in gedämpfter Schrift, etwa „12 items". */ meta?: ReactNode /** Statt Symbol und Titel: eigener Inhalt links, z. B. die Brotkrumen. */ left?: ReactNode /** Bedienelemente – sitzen rechts. */ children?: ReactNode } export default function PageHeader({ icon, title, meta, left, children }: Props) { const openSidebar = useSidebarToggle() return (