import { MAIL_SETTINGS_BASE_PATH, MAIL_SETTINGS_NAV, type MailSettingsSectionId } from "@/lib/mail-settings/settings-nav"

export type MailSettingsSearchEntry = {
  id: string
  label: string
  description?: string
  sectionId: MailSettingsSectionId
  sectionLabel: string
  href: string
  keywords: string
}

function sectionHref(sectionId: MailSettingsSectionId): string {
  return MAIL_SETTINGS_NAV.find((item) => item.id === sectionId)?.href ?? MAIL_SETTINGS_BASE_PATH
}

function sectionLabel(sectionId: MailSettingsSectionId): string {
  return MAIL_SETTINGS_NAV.find((item) => item.id === sectionId)?.label ?? "Affichage"
}

function entry(
  sectionId: MailSettingsSectionId,
  id: string,
  label: string,
  keywords: string,
  description?: string
): MailSettingsSearchEntry {
  return {
    id,
    label,
    description,
    sectionId,
    sectionLabel: sectionLabel(sectionId),
    href: sectionHref(sectionId),
    keywords,
  }
}

/** Index statique des réglages recherchables (sections + sous-rubriques). */
export const MAIL_SETTINGS_SEARCH_INDEX: MailSettingsSearchEntry[] = [
  ...MAIL_SETTINGS_NAV.map((item) =>
    entry(item.id, `section-${item.id}`, item.label, `${item.description} réglages paramètres`, item.description)
  ),
  entry("display", "density", "Densité", "compact normal défaut espacement liste messages"),
  entry("display", "theme", "Thème", "clair sombre dark light mode apparence couleurs"),
  entry("display", "background", "Arrière-plan", "fond wallpaper image thème décor"),
  entry("display", "inbox-type", "Type de boîte de réception", "important non lus suivis starred tri inbox"),
  entry("display", "reading-pane", "Volet de lecture", "split panneau droite aperçu message"),
  entry("display", "conversation", "Mode Conversation", "fil discussion thread regrouper messages"),
  entry("display", "infinite-scroll", "Scroll infini", "défilement pagination liste messages bureau desktop"),
  entry("accounts", "add-account", "Ajouter un compte mail", "imap smtp oauth connecter serveur"),
  entry("accounts", "hosted-mail", "Mail hébergé Stalwart", "ultimail boîte ultisuite imap smtp stalwart hébergé"),
  entry("accounts", "identities", "Identités d'envoi", "alias from expéditeur adresse envoi"),
  entry("accounts", "imap", "IMAP", "réception serveur entrant synchronisation"),
  entry("accounts", "smtp", "SMTP", "envoi serveur sortant"),
  entry("accounts", "signature-library", "Bibliothèque de signatures", "créer modifier supprimer signature html"),
  entry("accounts", "signature-assign", "Signature par identité", "identité signature par défaut sélecteur compte mail"),
  entry("labels", "labels", "Libellés", "tags couleur étiquettes organisation"),
  entry("labels", "folders", "Dossiers", "imap unified unifiés arborescence"),
  entry("labels", "unified-folders", "Dossiers unifiés", "cross-comptes organisation partagée"),
  entry("notifications", "desktop-new", "Nouveaux messages (bureau)", "notification desktop alerte push"),
  entry("notifications", "desktop-mentions", "Mentions et réponses", "notification mention reply"),
  entry("notifications", "email-digest", "Résumé quotidien par e-mail", "digest récap quotidien"),
  entry("notifications", "sound", "Son de notification", "audio alerte sonore"),
  entry("automation", "rules", "Règles de tri", "automatisation filtre tri forward réponse"),
  entry("automation", "webhooks", "Webhooks", "http post template payload externe"),
  entry("automation", "llm", "Fournisseurs LLM", "ia openai tri intelligent llm"),
  entry("automation", "search-providers", "Fournisseurs de recherche", "web search api brave bing searxng duckduckgo ultiai contacts"),
  entry("automation", "api-tokens", "Tokens API", "agent ia accès programmatique fine-grained agenda calendrier"),
  entry("automation", "agenda-rules", "Règles agenda", "événement calendrier invitation visio participant"),
  entry("automation", "agenda-webhooks", "Webhooks agenda", "événement calendrier créé modifié supprimé réponse"),
  entry("agenda", "week-start", "Premier jour de la semaine", "lundi dimanche locale agenda"),
  entry("agenda", "video", "Visioconférence", "ultimeet zoom meet teams jitsi agenda"),
  entry("agenda", "invitations", "Invitations par mail", "ics import automatique réponses agenda"),
  entry("agenda", "calendars", "Agendas par compte", "calendriers visibles compte mail ultimail"),
  entry("agenda", "ical", "Calendriers externes", "ical url abonnement google outlook"),
  entry("agenda", "views", "Vues d'agendas", "regrouper calendriers libellés vue par défaut"),
]
