import type { LucideIcon } from 'lucide-react'
import {
  BarChart3,
  Globe,
  Layout,
  Layers,
  Link2,
  Mail,
  MapPin,
  PanelTop,
  Search,
  Settings2,
} from 'lucide-react'

export type GroupConfig = {
  key: string
  label: string
  description: string
  icon: LucideIcon
  subGroups?: { key: string; label: string }[]
}

export const groupsConfig: GroupConfig[] = [
  {
    key: 'general',
    label: 'Genel',
    description: 'Site adı, logo, favicon ve bakım modu ayarları',
    icon: Settings2,
  },
  {
    key: 'contact',
    label: 'İletişim',
    description: 'Telefon, e-posta, adres ve çalışma saatleri',
    icon: Mail,
  },
  {
    key: 'maps',
    label: 'Harita',
    description: 'Google Maps konum ve embed ayarları',
    icon: MapPin,
  },
  {
    key: 'social',
    label: 'Sosyal Medya',
    description: 'Sosyal medya profil linkleri ve handle\'lar',
    icon: Link2,
  },
  {
    key: 'seo',
    label: 'SEO',
    description: 'Meta etiketler, Open Graph, Twitter Card ve doğrulama kodları',
    icon: Search,
    subGroups: [
      { key: 'basic', label: 'Temel SEO' },
      { key: 'og', label: 'Open Graph' },
      { key: 'twitter', label: 'Twitter Card' },
      { key: 'verification', label: 'Doğrulama' },
    ],
  },
  {
    key: 'analytics',
    label: 'Analitik',
    description: 'Google Analytics, Tag Manager, Pixel ve script entegrasyonları',
    icon: BarChart3,
  },
  {
    key: 'header',
    label: 'Header',
    description: 'Navbar stili, CTA butonu ve üst bar görünürlük ayarları',
    icon: PanelTop,
  },
  {
    key: 'footer',
    label: 'Footer',
    description: 'Footer içerik, logo, renk ve sosyal medya gösterimi',
    icon: Layout,
  },
  {
    key: 'info_sections',
    label: 'Tanıtım Bölümleri',
    description: 'Anasayfadaki metin + görsel tanıtım bölümleri',
    icon: Layers,
  },
  {
    key: 'integrations',
    label: 'Entegrasyonlar',
    description: 'SMTP, reCAPTCHA ve bildirim ayarları',
    icon: Globe,
  },
]

const seoSubGroupKeys: Record<string, string[]> = {
  basic: [
    'meta_title_suffix', 'meta_title_separator', 'default_meta_description',
    'default_meta_keywords', 'robots', 'canonical_domain',
  ],
  og: [
    'og_title', 'og_description', 'og_image', 'og_type', 'og_locale',
    'og_site_name', 'facebook_app_id',
  ],
  twitter: [
    'twitter_card_type', 'twitter_site', 'twitter_creator',
    'twitter_title', 'twitter_description', 'twitter_image',
  ],
  verification: [
    'google_site_verification', 'bing_site_verification',
    'yandex_verification', 'pinterest_verification',
  ],
}

export function getSeoSubGroup(key: string): string {
  for (const [subGroup, keys] of Object.entries(seoSubGroupKeys)) {
    if (keys.includes(key)) return subGroup
  }
  return 'basic'
}

const sensitiveKeys = new Set([
  'smtp_password', 'recaptcha_secret_key', 'google_maps_api_key',
])

export function isSensitiveKey(key: string): boolean {
  return sensitiveKeys.has(key)
}
