import { RadiantElement } from '@ecopages/radiant'; export type RuiTocProps = { /** CSS selector for the content root that contains headings. */ target?: string; /** Selector for headings to include. Default: `h2,h3`. */ headingSelector?: string; /** Visible label above the link list. Default: `On this page`. */ label?: string; /** Pixel offset from the viewport top when tracking the active section. Default: `120`. */ scrollOffset?: number; /** * Extra document event names (comma-separated) that trigger a rebuild, e.g. * `eco:page-load,eco:after-swap`. */ navigationEvents?: string; }; type RuiTocBindings = { target: string; headingSelector: string; label: string; scrollOffset: number; navigationEvents: string; }; /** * `` — table of contents that tracks in-page headings and highlights the * section currently in view while scrolling. * * @remarks * Resolves the nearest overflow scroll ancestor of the target (not always * `window`) so nested layout scrollers — e.g. docs inset content — drive * active-section tracking correctly. * * @element rui-toc * @attr {string} target - CSS selector for the content root that contains headings. Default: the parent element. * @attr {string} heading-selector - Selector for headings to include. Default: `h2,h3`. * @attr {string} label - Visible label above the link list. Default: `On this page`. * @attr {number} scroll-offset - Pixel offset from the viewport top when tracking the active section. Default: `120`. * @attr {string} navigation-events - Extra document event names (comma-separated) that trigger a rebuild, e.g. `eco:page-load,eco:after-swap`. * @cssclass rui-toc - Root `nav` landmark. * @cssclass rui-toc__label - Section label above the list. * @cssclass rui-toc__list - Link list. * @cssclass rui-toc__item - List item. * @cssclass rui-toc__item--depth-3 - Indented item for `h3` headings. * @cssclass rui-toc__link - Heading jump link. * @cssclass rui-toc__link--active - Link for the section currently in view. */ export declare class RuiToc extends RadiantElement { target: string; headingSelector: string; label: string; scrollOffset: number; navigationEvents: string; private entries; private activeId; private headings; private scrollRoot; private scrollCleanup; private navigationCleanups; private pendingScrollTargetId; private scrollRafPending; private readonly scrollOffsetTolerance; private readConfiguredProp; private readConfiguredNumber; connectedCallback(): void; protected onConnected(): void; disconnectedCallback(): void; onScanSettingsUpdated(): void; private rebuild; private resolveTarget; private resolvedScrollOffset; /** * Nearest ancestor (including the target) that scrolls vertically, else `window`. */ private resolveScrollRoot; private headingDepth; private attachNavigationListeners; private detachNavigationListeners; private attachScrollListener; private detachScrollListener; private isScrollAtBottom; private activeLineY; private updateActiveHeading; private setActiveId; private findHeadingById; private hasPendingScrollReachedTarget; private onLinkClick; private scrollToHeading; render(): import("@ecopages/jsx").JsxRenderable; } export {};