import * as React from 'react';
import { ScrollableContainerCommonProps } from '../common';
export { usePageContext } from './PageContext';
export type PageProps = {
/** Accepts compound components as child items:
* - ``
* - ``
* - ``
* - ``
* - ``
* */
children?: React.ReactNode;
/** Applies a data-hook HTML attribute that can be used in the tests. */
dataHook?: string;
/** Provides a link to the background image source (URL). The image is displayed at the top of the page, underneath the \. */
backgroundImageUrl?: string;
/** Sets the maximum width of the page (paddings excluded) */
maxWidth?: number;
/** Sets the minimum width of the page (paddings excluded). When `mobile` is enabled on ``, the default minimum width is removed, but an explicitly provided value is still applied. */
minWidth?: number;
/** Sets the height of the page in pixels (px), viewport height (vh), etc. */
height?: string;
/** Sets the side paddings of a page. Also applies when `` is `fullScreen`. */
sidePadding?: number;
/** Sets the top and bottom paddings of the page content in pixels. The top padding applies only when the page has no `` or ``, and the bottom padding only when it has no ``. When not set, the content has no top padding and a 48px bottom padding. */
verticalPadding?: number;
/** Specifies a CSS class name to be appended to the component's root element.
* @internal
*/
className?: string;
/** Specifies a CSS class name that defines a gradient background for \. */
gradientClassName?: string;
/** Defines a reference called together with page scrollable content ref after page mount.
*
* **Note** - if you need this ref only for listening to scroll events on the scrollable content then use this prop instead:
* `scrollProps = {onScrollChanged/onScrollAreaChanged}` */
scrollableContentRef?: (ref: HTMLElement | null) => void;
/** Specifies the stack order (z-index) of a page. */
zIndex?: number;
/** Enables page content to scroll horizontally when its width exceed maximum allowed width. */
horizontalScroll?: boolean;
/** Pass properties related to the scrollable content of the page.
*
* **onScrollAreaChanged** - defines a handler function for scroll area changes.
* Function is triggered when the user scrolls to a different area of the scrollable content. See signature for possible areas:
* `function({area: {y: AreaY, x: AreaX}, target: HTMLElement}) => void`
* `AreaY`: top | middle | bottom | none
* `AreaX`: start | middle | end | none (not implemented yet)
*
* **onScrollAreaChanged** - defines a general handler for scroll changes with throttling (100ms):
* `function({target: HTMLElement}) => void`
* */
scrollProps?: ScrollableContainerCommonProps;
};
export interface ContentProps {
/** Sets the content of the page. */
children: React.ReactNode;
className?: string;
/** Removes the page's maximum and minimum width limits and its default side paddings so the content spans the full width. A `sidePadding` set on the page still applies. */
fullScreen?: boolean;
/** Specifies whether the content stretches to fill the visible height of the page below its header, so a child with `height="100%"` or a `` spans it. Content taller than the page still scrolls. */
stretchVertically?: boolean;
stickyStyle?: React.CSSProperties;
}
export interface FixedContentProps {
/** Sets the content that stays in place while the rest of the page scrolls. */
children: React.ReactElement;
}
export interface FixedFooterProps {
/** Sets the footer content, which stays at the bottom of the page while the content scrolls. */
children: React.ReactElement;
}
export interface TailProps {
/** Sets the content rendered directly under the page header, such as a `` element. */
children: React.ReactElement;
/** Forwards a minimized flag to the child element, so it can render a condensed variant while the header is collapsed. */
minimized?: boolean;
}
export interface StickyProps {
/** Sets the content that sticks below the header as the page scrolls. Accepts a function that receives `style` and `className` to apply to an element of your own. */
children: React.ReactElement | StickyChildrenRenderFn;
/** Sets inline styles on the sticky wrapper, merged over the offset the page calculates. */
style?: React.CSSProperties;
/** Specifies a CSS class name to be appended to the component's root element. */
className?: string;
}
type StickyChildrenRenderFn = (data: {
style: string | React.CSSProperties;
className: string;
}) => React.ReactElement;
//# sourceMappingURL=Page.types.d.ts.map