import { type ReactNode } from 'react';
import { type IconButtonProps } from '../IconButton';
import { type ResponsiveSlot } from '../types/responsive';
export type PageHeaderRenderOptions = {
/**
* The original heading element wrapped in
tag.
* This ensures proper semantic HTML structure and accessibility.
*/
headingNode: ReactNode;
};
export type PageHeaderProps = {
/**
* It's for rendering the content of the heading.
* It should be just a string in most cases.
* Note that it can be any element, but it should be allowed in the element.
*/
headingSlot?: ReactNode;
/**
* Custom render function for the heading area.
* Provides the original headingNode wrapped in tag for flexible layout composition.
* When provided, this takes precedence over the default headingSlot rendering.
*
* @param options - Contains the headingNode for layout composition
*
* @returns ReactNode - Custom layout containing the headingNode
*
* @example
* ```tsx
* (
*
* {headingNode}
* Live
*
* )}
* />
* ```
*/
renderHeading?: (options: PageHeaderRenderOptions) => ReactNode;
/**
* It's for rendering the back button on the left side of the component.
*/
showBackButton?: boolean;
/**
* It's for controlling the back button.
*/
backButtonProps?: Omit;
/**
* It's for rendering any interactions on the right side of the component.
*/
actionSlot?: ResponsiveSlot | ReactNode;
/**
* It's for overriding the root styles of the component.
*/
className?: string;
};