/** * Global terminal settings hook with localStorage persistence. * * Manages renderer, PTY backend, theme, and font size preferences * using `useSyncExternalStore` for SSR safety and cross-component sync. * * @module components/devenv/terminal/hooks/useTerminalSettings */ import type { ITerminalRendererType, ITerminalPtyBackendType } from '../Terminal.types'; /** * Persisted terminal settings. */ export interface ITerminalSettings { /** Terminal renderer engine (default: 'xterm') */ renderer: ITerminalRendererType; /** PTY backend type (default: 'nodepty') */ ptyBackend: ITerminalPtyBackendType; /** Restty built-in theme name (default: 'Synthwave Alpha') */ resttyThemeName: string; /** Font size in CSS pixels (default: 14) */ fontSize: number; /** Enable CRT shader effects (scanlines, bloom, vignette) */ crtEffect: boolean; /** Show debug panel below the terminal */ debugPanel: boolean; } /** * Return type for the useTerminalSettings hook. */ export interface IUseTerminalSettingsReturn { /** Current settings snapshot */ settings: ITerminalSettings; /** Switch terminal renderer */ setRenderer: (renderer: ITerminalRendererType) => void; /** Switch PTY backend */ setPtyBackend: (backend: ITerminalPtyBackendType) => void; /** Set restty built-in theme by name */ setResttyThemeName: (name: string) => void; /** Set font size (clamped to 10-24) */ setFontSize: (size: number) => void; /** Toggle CRT shader effects (scanlines, bloom, vignette) */ setCrtEffect: (enabled: boolean) => void; /** Toggle debug panel visibility */ setDebugPanel: (enabled: boolean) => void; /** Reset all settings to defaults */ resetToDefaults: () => void; } /** * Hook for reading and mutating global terminal settings. * * Settings persist to localStorage and sync across all components * using `useSyncExternalStore`. SSR-safe via `getServerSnapshot`. * * @returns Settings state and mutation functions * * @example * ```tsx * const { settings, setRenderer, setResttyThemeName } = useTerminalSettings(); * * // Read * console.log(settings.renderer); // 'xterm' | 'restty' * * // Mutate — triggers re-render in all consumers * setRenderer('restty'); * setResttyThemeName('Dracula'); * ``` */ export declare function useTerminalSettings(): IUseTerminalSettingsReturn; //# sourceMappingURL=useTerminalSettings.d.ts.map