import type React from 'react'; import { type ThemeName } from '../theme.js'; export interface ThemePreviewProps { /** Preset whose palette this preview renders. Must exist in `themePresets`. */ presetId: ThemeName; /** Whether this preset is the currently applied one (`[active]` marker). */ active: boolean; /** * Preview column width in terminal columns. The component hides the * full sample and falls back to a compact header when the caller has less * than this much room (narrow terminals with the sidebar open). */ columns: number; /** * Vertical budget for the whole preview box, matching the picker's * `maxRows`. The sample is trimmed from the bottom (diff → syntax → * status → palette) until it fits, so the preview can never be taller * than the list it sits beside on a short terminal. */ maxRows?: number | undefined; } /** * Live palette preview for the `/theme` picker's split-screen layout. * * This is a PRESENTATIONAL snapshot renderer: it reads the frozen preset * object from `themePresets` and draws a miniature of the TUI's own chrome * (bordered frame, USER/assistant/tool lines, status chips, diff wash) using * that preset's hex tokens. It deliberately never touches the live `theme` * bag and never calls `setActiveTheme` — navigating the list must only * *show* a candidate palette; Enter alone applies it (see * `onThemePickerEnter` in app.tsx). That keeps previewing side-effect free * and lets the picker re-render on every arrow key without state churn. * * Color tokens from a preset are hex strings, so they are passed straight to * Ink's `color` / `backgroundColor` — the `softColor` shim in ink.tsx * passes hex through untouched. */ export declare function ThemePreview({ presetId, active, columns, maxRows, }: ThemePreviewProps): React.ReactElement; //# sourceMappingURL=theme-preview.d.ts.map