import type { HTMLAttributes, ReactNode } from "react";
/** Page title block per DESIGN-GUIDE ยง6; other `
` attributes (id, className, style, data-*, aria-*) land on the root. */
export interface PageHeaderProps extends Omit, "title" | "color" | "children" | "dangerouslySetInnerHTML"> {
/** Rendered as the page's h1. */
title: ReactNode;
/** Muted small line under the title. */
subtitle?: ReactNode;
/** Right-aligned button row; wraps under the title on narrow screens. */
actions?: ReactNode;
/** Rendered above the title; a descendant with aria-current="page" gets the stronger text colour. */
breadcrumbs?: ReactNode;
/** Avatar or icon left of the title; `titleAddon` sits inline after it (status Tag). */
leading?: ReactNode;
/** Rendered inline right after the h1, e.g. a status Tag; wraps under a long title. */
titleAddon?: ReactNode;
/** Wrapping row of muted xs items under the subtitle (owner, updated-at, etc.). */
meta?: ReactNode;
/** Rendered full-width below the whole header, e.g. a Tabs list. */
tabs?: ReactNode;
/** "md" = 18px/600 (default); "lg" = 24px/700; "xl" = 24px, 30px from `md`, 700, tighter tracking. */
titleSize?: PageHeaderTitleSize;
/** "auto" (default) wraps actions below the title whenever they don't fit beside it; "stacked" always stacks; "inline" never wraps from `md` up. */
actionsLayout?: PageHeaderActionsLayout;
"data-testid"?: string;
}
/** Title ramp step. */
export type PageHeaderTitleSize = "md" | "lg" | "xl";
/** How the actions row sits against the title block. */
export type PageHeaderActionsLayout = "auto" | "stacked" | "inline";