import * as react_jsx_runtime from 'react/jsx-runtime'; import * as React from 'react'; /** * Library access role for shared hubs. Mirrors * `apps/web/lib/collaborator-access.ts > CollaboratorAccessRole` — kept * structurally identical so the apps/web type and this type are mutually * assignable wherever consumers pass collaborator rosters to `PageHeader`. */ type PageHeaderCollaboratorAccessRole = "owner" | "editor" | "commenter" | "viewer"; type PageHeaderVariant = "default" | "collaboration"; declare const PAGE_HEADER_MAX_VISIBLE_ACTIONS = 3; declare const PAGE_HEADER_COMPACT_ACTIONS_MAX_WIDTH_PX = 640; declare const PAGE_HEADER_OVERFLOW_ONLY_MAX_WIDTH_PX = 520; interface PageHeaderActionItem { id: string; label: string; /** Static Font Awesome class, for example `fa-plus`. */ icon: string; onSelect: () => void; /** * `"default"` is the filled primary CTA — **`shortcut` is required** * (inline bare `Kbd` + ``). Prefer ⌘⌥ / Ctrl+Alt chords; see * `exxat-primary-button-shortcuts.mdc` and `exxat-kbd-shortcuts.mdc`. */ variant?: "default" | "outline" | "secondary" | "ghost" | "destructive"; /** * Keyboard chord. Required when `variant="default"`. Shown inline on the * primary button; Tip for icon-only / secondary. Build with * `useModKeyLabel()` + `useAltKeyLabel()`. */ shortcut?: string; disabled?: boolean; } interface PageHeaderCollaborator { id: string; name: string; imageUrl?: string | null; initials?: string; email?: string; access?: PageHeaderCollaboratorAccessRole; /** Org / directory role tags (e.g. Faculty, Program coordinator). */ roles?: string[]; } interface PageHeaderProps { /** Primary page title — rendered as `

` in Ivy Presto serif, or pass a custom node (e.g. record switcher). */ title: React.ReactNode; /** Short descriptor or date shown below the title (and below `accessInfo` when set). */ subtitle?: React.ReactNode; /** Layout preset — `collaboration` enables access line + face row ahead of `actions`. */ variant?: PageHeaderVariant; /** * Role / access copy or badges — rendered between the title and subtitle * when `variant="collaboration"` (e.g. lock icon + "Editors can modify"). */ accessInfo?: React.ReactNode; /** People with access — shown as a horizontal row of faces when `variant="collaboration"`. */ collaborators?: PageHeaderCollaborator[]; /** Max faces before a `+N` chip — default 3. */ collaboratorDisplayLimit?: number; /** Opens the invite collaborators sheet when a face, overflow chip, or empty-state CTA is activated. */ onCollaboratorsOpen?: () => void; /** Label for the empty-roster header control — default `"Add collaborator"`. */ addCollaboratorLabel?: string; /** Optional slot for right-aligned actions (buttons, selectors, etc.). */ actions?: React.ReactNode; /** * Responsive page actions. At most three render beside the title, secondary * actions become icon-only below `md`, and every action moves into More * during WCAG reflow (320 CSS px / browser zoom at 200%+). * * Prefer this over `actions` when the controls can be represented as * labelled commands. `actions` remains for custom composites. */ actionItems?: PageHeaderActionItem[]; /** Extra className for the outer wrapper. */ className?: string; /** When false, the title + subtitle are visually hidden (actions remain). */ showTitleBlock?: boolean; } declare function PageHeader({ title, subtitle, variant, accessInfo, collaborators, collaboratorDisplayLimit, onCollaboratorsOpen, addCollaboratorLabel, actions, actionItems, className, showTitleBlock, }: PageHeaderProps): react_jsx_runtime.JSX.Element; export { PAGE_HEADER_COMPACT_ACTIONS_MAX_WIDTH_PX, PAGE_HEADER_MAX_VISIBLE_ACTIONS, PAGE_HEADER_OVERFLOW_ONLY_MAX_WIDTH_PX, PageHeader, type PageHeaderActionItem, type PageHeaderCollaborator, type PageHeaderCollaboratorAccessRole, type PageHeaderProps, type PageHeaderVariant };