import { type HTMLAttributes, type ReactNode } from 'react'; import { type VariantProps } from 'class-variance-authority'; /** * Provides rail-injected actions that every descendant `PanelHeader` * appends to its action cluster, after the panel's own `actions`. The * rail (or any host) wraps the panel subtree once; standalone panels * render without a provider and inject nothing. */ export declare function PanelHeaderActionsProvider({ actions, children, }: { actions: ReactNode; children: ReactNode; }): import("react/jsx-runtime").JSX.Element; /** Reads the rail-injected actions for the current subtree (default `null`). */ export declare function usePanelHeaderActions(): ReactNode; declare const headerVariants: (props?: ({ sticky?: boolean | null | undefined; divider?: boolean | null | undefined; } & import("class-variance-authority/types").ClassProp) | undefined) => string; export interface PanelHeaderProps extends Omit, 'title'>, VariantProps { /** Heading content. Already translated upstream. */ title: ReactNode; /** Optional leading glyph — auto `aria-hidden` and sized to `--spacing` 4. */ icon?: ReactNode; /** `id` applied to the heading so panels can wire `aria-labelledby`. */ headingId?: string; /** Semantic heading level. Default `2`. */ headingLevel?: 2 | 3; /** Panel-owned actions, rendered inline-end of the title row. */ actions?: ReactNode; /** Optional second row, typically filter controls. */ filters?: ReactNode; /** Pin to the top of the scroll region. Default `false`. */ sticky?: boolean; /** Bottom hairline. Default `true`. */ divider?: boolean; /** Type scale of the heading. Default `'card'`. */ titleScale?: 'card' | 'section'; /** * Full title for the overflow tooltip when `title` is not a plain string. * A string `title` is used as-is and needs nothing here. Pass this when * the title is composed (a name plus a badge, say) and there is still a * plain-text form worth showing. */ titleTooltip?: string; /** * Move the action cluster to its own line, under the title, when the * full title and the cluster do not fit side by side. Default `false`: * the title clips with an ellipsis instead, which suits a rail panel * with a few icon buttons. Set it when the cluster is wide (a rating * summary, a text button), where clipping would leave only a letter or * two of the title. With it the title never clips: a title wider than * the row by itself wraps onto more lines. */ wrapActions?: boolean; } export declare const PanelHeader: import("react").ForwardRefExoticComponent>; export {}; //# sourceMappingURL=panel-header.d.ts.map