/**
 * Platform theme definitions — single source of truth shared with frontend.
 * Theme IDs must match apps/web-platform-admin/src/lib/themes.ts
 *
 * The `colors` object provides all 13 CSS custom properties that frontends
 * use for theming.  The `fonts` object specifies heading/body font families
 * and an optional Google Fonts import URL.
 */

export interface ThemeColors {
  '--primary': string;
  '--primary-foreground': string;
  '--background': string;
  '--card': string;
  '--error': string;
  '--success': string;
  '--warning': string;
  '--muted': string;
  '--border': string;
  '--sidebar-bg': string;
  '--sidebar-text': string;
  '--sidebar-active': string;
  '--text': string;
}

export interface ThemeFonts {
  heading: string;
  body: string;
  importUrl?: string;
}

export interface ThemeDefinition {
  id: string;
  name: string;
  style: string;
  isDark: boolean;
  primaryColor: string;
  colors: ThemeColors;
  fonts: ThemeFonts;
}

export const AVAILABLE_THEMES: ThemeDefinition[] = [
  {
    id: 'fitpulse-orange',
    name: 'FitPulse Orange',
    style: 'Энергичный минимализм',
    isDark: false,
    primaryColor: '#FF6B00',
    fonts: { heading: 'Inter', body: 'Inter' },
    colors: {
      '--primary': '#FF6B00',
      '--primary-foreground': '#FFFFFF',
      '--background': '#F5F5F5',
      '--card': '#FFFFFF',
      '--error': '#E53935',
      '--success': '#43A047',
      '--warning': '#FF9800',
      '--muted': '#6B7280',
      '--border': '#E5E7EB',
      '--sidebar-bg': '#1B1B3A',
      '--sidebar-text': '#CBD5E1',
      '--sidebar-active': '#FF6B00',
      '--text': '#111827',
    },
  },
  {
    id: 'crimson-power',
    name: 'Crimson Power',
    style: 'Бело-красная динамика',
    isDark: false,
    primaryColor: '#DC2626',
    fonts: { heading: 'Inter', body: 'Inter' },
    colors: {
      '--primary': '#DC2626',
      '--primary-foreground': '#FFFFFF',
      '--background': '#FAFAFA',
      '--card': '#FFFFFF',
      '--error': '#B91C1C',
      '--success': '#16A34A',
      '--warning': '#F59E0B',
      '--muted': '#6B7280',
      '--border': '#E5E7EB',
      '--sidebar-bg': '#1C1917',
      '--sidebar-text': '#D6D3D1',
      '--sidebar-active': '#EF4444',
      '--text': '#171717',
    },
  },
  {
    id: 'royal-blue',
    name: 'Royal Blue',
    style: 'Бело-синяя корпоративная',
    isDark: false,
    primaryColor: '#2563EB',
    fonts: {
      heading: 'Plus Jakarta Sans',
      body: 'Plus Jakarta Sans',
      importUrl: 'https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap',
    },
    colors: {
      '--primary': '#2563EB',
      '--primary-foreground': '#FFFFFF',
      '--background': '#F8FAFC',
      '--card': '#FFFFFF',
      '--error': '#DC2626',
      '--success': '#16A34A',
      '--warning': '#F59E0B',
      '--muted': '#64748B',
      '--border': '#E2E8F0',
      '--sidebar-bg': '#1E293B',
      '--sidebar-text': '#CBD5E1',
      '--sidebar-active': '#3B82F6',
      '--text': '#0F172A',
    },
  },
  {
    id: 'emerald-wellness',
    name: 'Emerald Wellness',
    style: 'Зелёная свежесть',
    isDark: false,
    primaryColor: '#059669',
    fonts: {
      heading: 'Nunito',
      body: 'Nunito',
      importUrl: 'https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap',
    },
    colors: {
      '--primary': '#059669',
      '--primary-foreground': '#FFFFFF',
      '--background': '#F8FAF8',
      '--card': '#FFFFFF',
      '--error': '#DC2626',
      '--success': '#16A34A',
      '--warning': '#EA580C',
      '--muted': '#6B8068',
      '--border': '#D1E7D3',
      '--sidebar-bg': '#14532D',
      '--sidebar-text': '#BBF7D0',
      '--sidebar-active': '#34D399',
      '--text': '#14532D',
    },
  },
  {
    id: 'nordic-frost',
    name: 'Nordic Frost',
    style: 'Скандинавский минимализм',
    isDark: false,
    primaryColor: '#18181B',
    fonts: {
      heading: 'DM Sans',
      body: 'DM Sans',
      importUrl: 'https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&display=swap',
    },
    colors: {
      '--primary': '#18181B',
      '--primary-foreground': '#FFFFFF',
      '--background': '#FAFAFA',
      '--card': '#FFFFFF',
      '--error': '#DC2626',
      '--success': '#16A34A',
      '--warning': '#F59E0B',
      '--muted': '#A1A1AA',
      '--border': '#E4E4E7',
      '--sidebar-bg': '#18181B',
      '--sidebar-text': '#D4D4D8',
      '--sidebar-active': '#F97316',
      '--text': '#18181B',
    },
  },
  {
    id: 'pacific-teal',
    name: 'Pacific Teal',
    style: 'Бирюзовая свежесть',
    isDark: false,
    primaryColor: '#0891B2',
    fonts: {
      heading: 'Poppins',
      body: 'Poppins',
      importUrl: 'https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap',
    },
    colors: {
      '--primary': '#0891B2',
      '--primary-foreground': '#FFFFFF',
      '--background': '#F0FDFA',
      '--card': '#FFFFFF',
      '--error': '#DC2626',
      '--success': '#0D9488',
      '--warning': '#F59E0B',
      '--muted': '#64748B',
      '--border': '#A5F3FC',
      '--sidebar-bg': '#164E63',
      '--sidebar-text': '#CFFAFE',
      '--sidebar-active': '#22D3EE',
      '--text': '#134E4A',
    },
  },
  {
    id: 'amethyst-light',
    name: 'Amethyst Light',
    style: 'Фиолетовая элегантность',
    isDark: false,
    primaryColor: '#7C3AED',
    fonts: {
      heading: 'Outfit',
      body: 'Outfit',
      importUrl: 'https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap',
    },
    colors: {
      '--primary': '#7C3AED',
      '--primary-foreground': '#FFFFFF',
      '--background': '#FAFAFF',
      '--card': '#FFFFFF',
      '--error': '#DC2626',
      '--success': '#16A34A',
      '--warning': '#F59E0B',
      '--muted': '#8B8599',
      '--border': '#E9E5F5',
      '--sidebar-bg': '#2E1065',
      '--sidebar-text': '#DDD6FE',
      '--sidebar-active': '#A78BFA',
      '--text': '#1E1B4B',
    },
  },
  {
    id: 'rose-garden',
    name: 'Rose Garden',
    style: 'Розовая утончённость',
    isDark: false,
    primaryColor: '#E11D48',
    fonts: {
      heading: 'Playfair Display',
      body: 'Lato',
      importUrl: 'https://fonts.googleapis.com/css2?family=Playfair+Display:wght@600;700&family=Lato:wght@400;700&display=swap',
    },
    colors: {
      '--primary': '#E11D48',
      '--primary-foreground': '#FFFFFF',
      '--background': '#FFF7F8',
      '--card': '#FFFFFF',
      '--error': '#BE123C',
      '--success': '#16A34A',
      '--warning': '#F59E0B',
      '--muted': '#9F7B88',
      '--border': '#FFE4E6',
      '--sidebar-bg': '#4C0519',
      '--sidebar-text': '#FECDD3',
      '--sidebar-active': '#FB7185',
      '--text': '#1C1917',
    },
  },
  {
    id: 'sunset-coral',
    name: 'Sunset Coral',
    style: 'Коралловый закат',
    isDark: false,
    primaryColor: '#EA580C',
    fonts: {
      heading: 'Manrope',
      body: 'Manrope',
      importUrl: 'https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;700;800&display=swap',
    },
    colors: {
      '--primary': '#EA580C',
      '--primary-foreground': '#FFFFFF',
      '--background': '#FFFBF5',
      '--card': '#FFFFFF',
      '--error': '#DC2626',
      '--success': '#16A34A',
      '--warning': '#F59E0B',
      '--muted': '#92714D',
      '--border': '#FED7AA',
      '--sidebar-bg': '#431407',
      '--sidebar-text': '#FFEDD5',
      '--sidebar-active': '#FB923C',
      '--text': '#431407',
    },
  },
  {
    id: 'cloud-professional',
    name: 'Cloud Professional',
    style: 'Нейтральная деловая',
    isDark: false,
    primaryColor: '#475569',
    fonts: { heading: 'Inter', body: 'Inter' },
    colors: {
      '--primary': '#475569',
      '--primary-foreground': '#FFFFFF',
      '--background': '#F8FAFC',
      '--card': '#FFFFFF',
      '--error': '#DC2626',
      '--success': '#16A34A',
      '--warning': '#F59E0B',
      '--muted': '#94A3B8',
      '--border': '#E2E8F0',
      '--sidebar-bg': '#0F172A',
      '--sidebar-text': '#CBD5E1',
      '--sidebar-active': '#64748B',
      '--text': '#0F172A',
    },
  },
];

export const DEFAULT_THEME_ID = 'fitpulse-orange';

export const VALID_THEME_IDS = AVAILABLE_THEMES.map((t) => t.id);

export function isValidThemeId(id: string): boolean {
  return VALID_THEME_IDS.includes(id);
}
