/** * @module tui/zen/zen-panes-ctx * * Shared contract for the EXTENDED pane renderers (charts, time, learning, * play, communication). zen-surface assembles a PaneCtx per pane and the * extended modules draw into it — same painter, theme, scroll and click * machinery as the built-in types, zero coupling to the layout engine. */ import type { TuiPane } from "../surfaces/surface-schema.js"; import type { Rgb, ZenPainter } from "./zen-surface.js"; export interface PaneTheme { bg: Rgb; tile: Rgb; zebra: Rgb; hover: Rgb; accent: Rgb; } export interface PaneOut { endY: number; /** Scroll window (omit for non-scrolling panes). */ total?: number; shown?: number; off?: number; } export interface PaneCtx { p: ZenPainter; pane: TuiPane; /** Pane content, sanitized (text-over-source already resolved). */ raw: string; /** Content-area left edge and width. */ x: number; w: number; /** Pane column bounds (for row washes). */ px: number; pw: number; /** First content row; hard bottom. */ y: number; yMax: number; budget: number; clipAt: number; hue: Rgb; T: PaneTheme; now: number; mountT0: number; scrollOff: (total: number, window: number) => number; rowHover: (y: number) => boolean; pushRow: (y: number, text: string) => void; /** Narrow click target inside a row — cells, stars, days, options. */ pushRegion: (y: number, x1: number, x2: number, text: string) => void; } /** Series palette — stable, vivid, distinct on the dark card tint. */ export declare const SERIES: Rgb[]; export declare const splitBar: (l: string) => string[]; export declare const fmtNum: (v: number) => string; export declare const hashIdx: (s: string, mod: number) => number; /** Eased 0→1 reveal since mount — the draw-in every chart shares. */ export declare const revealSince: (now: number, mountT0: number, ms: number) => number;