import type { ElementType, ReactNode } from "react"; /** * PageShell — page-level scaffold composite. * * Renders title + optional description + optional ActionBar, then * one of four mutually-exclusive content states: * 1. loading (highest precedence) * 2. error * 3. empty * 4. children (default) * * Scope-narrowed per Brief #5 D3: PageShell does NOT manage * `document.title`. Use the optional `onTitleChange` callback to * wire your own hook (e.g. useSetPageTitle, react-helmet, * next/head). * * @example * * * */ export interface PageShellProps { title: string; description?: ReactNode; /** Optional callback invoked when `title` changes — wire to your own document.title hook. */ onTitleChange?: (title: string) => void; primaryAction?: { label: ReactNode; icon?: ElementType; onClick: () => void; loading?: boolean; }; search?: { placeholder: string; value: string; onChange: (v: string) => void; }; onFilterClick?: () => void; loading?: boolean; /** Custom loading UI. Defaults to a centered spinner card. */ loadingNode?: ReactNode; error?: { message: string; onRetry?: () => void; docsHref?: string; }; empty?: { icon?: ElementType; title: string; description?: ReactNode; action?: { label: string; onClick: () => void; }; }; children?: ReactNode; className?: string; } declare const PageShell: import("react").ForwardRefExoticComponent>; export { PageShell };