/** * The **Theme Manager panel** — a "Theme" launcher in the top-right tools strip * that lets users manage AI-generated themes: apply a saved theme, export the * current one, import a theme file, and reset to the base look. It is a pure-UI * component in the same mould as {@link import('./import-menu').ImportMenu}: it * owns no theme logic and drives everything through the public * {@link import('../types/theme-ai.types').PhotonThemeApi} (`gridApi.photonAI`). * * All styling is class-driven (see `theme-manager.css.ts`); the component sets * no inline styles. * * @packageDocumentation */ import type { IconRenderer } from '../icons/icon-renderer'; import type { ToastService } from '../toast/toast-service'; import type { PhotonThemeApi } from '../types/theme-ai.types'; /** Collaborators the {@link ThemeManagerPanel} needs, injected as a DI bag. */ export interface ThemeManagerDeps { /** Renders themed, registry-backed icons. */ readonly iconRenderer: IconRenderer; /** Lazily resolves the live theme API (the engine is created after the renderer). */ readonly getThemeApi: () => PhotonThemeApi; /** Lazily resolves the grid's toast service, used to surface action feedback. */ readonly getToasts: () => ToastService; } /** Top-right "Theme" launcher + dropdown for managing saved/exported/imported themes. */ export declare class ThemeManagerPanel { private readonly deps; private wrapperEl; private launcherEl; private menuEl; private listEl; private fileInputEl; private isOpen; private readonly boundOutsideDown; private readonly boundKeydown; constructor(deps: ThemeManagerDeps); /** Builds the launcher, dropdown and hidden file input. Call once per grid. */ mount(wrapperEl: HTMLElement, toolsBarEl: HTMLElement): void; /** Opens the dropdown, refreshing the saved-themes list from the engine. */ open(): void; /** Closes the dropdown. */ close(): void; /** Toggles the dropdown. */ toggle(): void; /** Tears down DOM and listeners. */ destroy(): void; private buildLauncher; private buildMenu; private buildActionButton; private buildFileInput; /** Rebuilds the saved-themes list from the engine's history. */ private refreshList; private onExport; private onReset; private onFileChosen; private download; /** * Surfaces an action result as a transient toast rather than inline panel * text, so feedback stays visible after the dropdown closes and never shifts * the menu layout. Errors are shown assertively; everything else as success. */ private notify; } //# sourceMappingURL=theme-manager-panel.d.ts.map