import { TNode, Value } from '@tempots/dom'; /** * Configuration options for the {@link ScrollablePanel} component. */ export type ScrollablePanelOptions = { /** * Optional header content rendered above the scrollable body. * Remains fixed while the body scrolls. */ header?: TNode; /** * Optional footer content rendered below the scrollable body. * Remains fixed while the body scrolls. */ footer?: TNode; /** * The main scrollable content area of the panel. */ body: TNode; /** * Whether to display scroll shadow indicators at the top/bottom edges * when the body content overflows. Shadows help indicate scrollable content * that is currently out of view. * @default true */ shadowOnScroll?: Value; }; /** * Renders a panel with a scrollable body and optional fixed header/footer. * Automatically displays scroll shadow indicators at the top and bottom * edges when content overflows, providing a visual cue that more content * is available. * * The shadow state updates reactively based on the scroll position: * - No shadow when content fits without scrolling * - Bottom shadow when scrolled to top (more content below) * - Top shadow when scrolled to bottom (more content above) * - Both shadows when scrolled to the middle * * @param options - Configuration options for the scrollable panel. * @param children - Additional content nodes appended after the footer. * @returns A scrollable panel element with shadow indicators. * * @example * ```typescript * // Panel with header and scrollable body * ScrollablePanel({ * header: html.h2('File Browser'), * body: html.div( * ...files.map(file => html.div(file.name)) * ), * footer: html.div('10 files'), * }) * * // Panel without scroll shadows * ScrollablePanel({ * body: html.div('Content here'), * shadowOnScroll: false, * }) * ``` */ export declare function ScrollablePanel({ header, footer, body, shadowOnScroll }: ScrollablePanelOptions, ...children: TNode[]): import("@tempots/dom").Renderable;