import { darkTheme } from "./dark"; import { draculaTheme } from "./dracula"; import { lightTheme } from "./light"; import { nordTheme } from "./nord"; import { solarizedDarkTheme } from "./solarized-dark"; import type { ThemeDefinition } from "./types"; /** All built-in themes, ordered for display */ const builtInThemes: ThemeDefinition[] = [ darkTheme, lightTheme, nordTheme, draculaTheme, solarizedDarkTheme, ]; const themeMap = new Map(builtInThemes.map((t) => [t.id, t])); /** Default theme when no preference is set */ export const DEFAULT_THEME_ID = "dark"; /** Get all registered themes */ export function getAllThemes(): ThemeDefinition[] { return [...builtInThemes]; } /** Get a theme by ID, or undefined if not found */ export function getTheme(id: string): ThemeDefinition | undefined { return themeMap.get(id); } /** Get a theme by ID, falling back to the default dark theme */ export function getThemeOrDefault(id: string): ThemeDefinition { return themeMap.get(id) ?? darkTheme; } /** Get only dark themes */ export function getDarkThemes(): ThemeDefinition[] { return builtInThemes.filter((t) => t.isDark); } /** Get only light themes */ export function getLightThemes(): ThemeDefinition[] { return builtInThemes.filter((t) => !t.isDark); } /** Check if a theme ID is valid */ export function isValidThemeId(id: string): boolean { return themeMap.has(id); }