export interface TourStep {
  element: string;
  title: string;
  description: string;
  side?: "top" | "bottom" | "left" | "right";
  /** Dispatch this custom window event before showing this step (form open/close) */
  triggerEvent?: string;
  /** ms to wait after triggerEvent fires (default 700) */
  triggerDelay?: number;
  /** Click this CSS selector before showing this step (form wizard navigation) */
  clickBefore?: string;
  /** ms to wait after clickBefore (default 350) */
  clickDelay?: number;
}

export interface AcademyModule {
  id: string;
  title: string;
  description: string;
  url: string;
  icon: string;
  /** Event dispatched onDestroyed to clean up open form */
  closeEvent?: string;
  steps: TourStep[];
}

export const ACADEMY_MODULES: AcademyModule[] = [
  {
    id: "dashboard",
    title: "Genel Bakış",
    description: "Ofisinizin anlık durumunu, son aktiviteleri ve önemli metrikleri görün.",
    url: "/dashboard",
    icon: "🏠",
    steps: [
      {
        element: "[data-tour='dashboard-stats']",
        title: "Özet Kartlar",
        description: "Toplam ilan sayısı, aktif müşteri, bekleyen aktivite ve aylık komisyon gelirini buradan takip edersiniz.",
        side: "bottom",
      },
      {
        element: "[data-tour='dashboard-activity']",
        title: "Son Aktiviteler",
        description: "Ekibinizin son görüşme, teklif ve ziyaret notları burada akış halinde görünür.",
        side: "left",
      },
      {
        element: "[data-tour='dashboard-matches']",
        title: "Takip & Eşleşmeler",
        description: "Bugün takip edilmesi gereken müşteriler ve yeni ilan eşleşmeleri burada bildirim olarak çıkar.",
        side: "left",
      },
    ],
  },
  {
    id: "properties",
    title: "İlanlar",
    description: "Satılık ve kiralık portföyünüzü yönetin, fotoğraf ekleyin, konum belirleyin.",
    url: "/properties",
    icon: "🏢",
    closeEvent: "kovak:close-form-properties",
    steps: [
      {
        element: "[data-tour='properties-filters']",
        title: "Durum Filtreleri",
        description: "Aktif, rezerve, satıldı, kiralık gibi durumlara tıklayarak portföyünüzü filtreleyin. Her filtrenin yanında ilan sayısı görünür.",
        side: "bottom",
      },
      {
        element: "[data-tour='properties-table']",
        title: "İlan Tablosu",
        description: "Tüm ilanlar burada listelenir. Her satırın solunda ilan görseli yer alır — görsele tıklayınca tam ekran galeri açılır. Satırın herhangi bir yerine tıklayarak detay sayfasına geçebilir, sağdaki menüden düzenleyebilir veya silebilirsiniz.",
        side: "top",
      },
      {
        element: "[data-tour='properties-add']",
        title: "Görünüm Modları & Yeni İlan",
        description: "Sağ üstteki Liste / Galeri / Harita düğmeleriyle portföyü farklı görünümlerde inceleyebilirsiniz. Galeri modunda her ilanın fotoğraflarını doğrudan listeden gezebilirsiniz. 'Yeni İlan' ile 4 adımlı form açılır.",
        side: "bottom",
      },
      {
        element: "[data-tour='form-step-nav']",
        title: "Form Adımları — Genel Bakış",
        description: "Form 4 adımdan oluşur: İlan Bilgileri → Konum → Özellikler → Medya. Dairelere tıklayarak adımlar arasında serbestçe geçiş yapabilirsiniz.",
        side: "bottom",
        triggerEvent: "kovak:open-form-properties",
        triggerDelay: 750,
      },
      {
        element: "[data-tour='form-step-content-0']",
        title: "1. Adım — İlan Bilgileri",
        description: "Başlık (zorunlu), emlak tipi (daire/villa/arsa…), ilan türü (satılık/kiralık), fiyat ve durum bilgilerini girin.",
        side: "bottom",
      },
      {
        element: "[data-tour='form-step-content-1']",
        title: "2. Adım — Konum",
        description: "Şehir, ilçe, mahalle ve adres girin. Haritadan pin bırakarak tam koordinat ekleyebilirsiniz — müşteriye sunum yaparken haritada gösterilebilir.",
        side: "bottom",
        clickBefore: "[data-tour='form-circle-1']",
        clickDelay: 350,
      },
      {
        element: "[data-tour='form-step-content-2']",
        title: "3. Adım — Özellikler",
        description: "Oda sayısı, net m², kat, toplam kat ve bina yaşını girin. Bu bilgiler müşteri arama kriterlerine otomatik eşleşmede kullanılır.",
        side: "bottom",
        clickBefore: "[data-tour='form-circle-2']",
        clickDelay: 350,
      },
      {
        element: "[data-tour='form-step-content-3']",
        title: "4. Adım — Medya",
        description: "İlan açıklamasını yazın ve fotoğraf yükleyin. Fotoğrafları sürükle-bırak ile ekleyebilirsiniz — yükleme sırasında otomatik sıkıştırılır (maks. 1920px). Son adımda 'Oluştur' ile kaydedilir.",
        side: "bottom",
        clickBefore: "[data-tour='form-circle-3']",
        clickDelay: 350,
      },
    ],
  },
  {
    id: "customers",
    title: "Müşteriler",
    description: "Alıcı ve kiracı adaylarınızı takip edin, arama kriterleri tanımlayın, eşleşmeleri görün.",
    url: "/customers",
    icon: "👥",
    closeEvent: "kovak:close-form-customers",
    steps: [
      {
        element: "[data-tour='customers-table']",
        title: "Müşteri Listesi",
        description: "Tüm müşterileriniz burada. Tip (alıcı/kiracı/yatırımcı) ve aşama (sıcak/soğuk/kapandı) bilgileriyle takip edebilirsiniz.",
        side: "top",
      },
      {
        element: "[href='/customers/searches']",
        title: "Arama Kriterleri",
        description: "Sidebar'daki bu bağlantıdan her müşteri için fiyat aralığı, oda sayısı, konum gibi kriterler tanımlayabilirsiniz. Yeni bir ilan eklendiğinde bu kriterlere uyan müşteriler otomatik eşleşir.",
        side: "right",
      },
      {
        element: "[data-tour='customers-add']",
        title: "Yeni Müşteri Ekle",
        description: "3 adımlı form açılır: Kimlik bilgileri, İletişim ve Not. Şimdi formun içini inceleyelim.",
        side: "bottom",
      },
      {
        element: "[data-tour='form-step-nav']",
        title: "Form Adımları — Genel Bakış",
        description: "Form 3 adımdan oluşur: Kimlik, İletişim ve Not. Adımlar arasında serbestçe geçiş yapılabilir.",
        side: "bottom",
        triggerEvent: "kovak:open-form-customers",
        triggerDelay: 750,
      },
      {
        element: "[data-tour='form-step-content-0']",
        title: "1. Adım — Kimlik",
        description: "Müşterinin adı (zorunlu), tipi (alıcı/kiracı/yatırımcı) ve CRM'deki aşamasını (yeni/sıcak/soğuk/kapandı) girin.",
        side: "bottom",
      },
      {
        element: "[data-tour='form-step-content-1']",
        title: "2. Adım — İletişim",
        description: "Telefon, e-posta, nasıl bulduğu (kaynak) ve takip tarihini girin. Takip tarihi geldiğinde dashboard'da hatırlatma olarak görünür.",
        side: "bottom",
        clickBefore: "[data-tour='form-circle-1']",
        clickDelay: 350,
      },
      {
        element: "[data-tour='form-step-content-2']",
        title: "3. Adım — Not",
        description: "Müşteriyle ilgili özel notlar, tercihler veya hatırlatmalar buraya girilir. Son adımda 'Oluştur' ile kaydedilir.",
        side: "bottom",
        clickBefore: "[data-tour='form-circle-2']",
        clickDelay: 350,
      },
    ],
  },
  {
    id: "activities",
    title: "Aktiviteler",
    description: "Görüşme, teklif, ziyaret ve notlarınızı takip altında tutun.",
    url: "/activities",
    icon: "📋",
    closeEvent: "kovak:close-form-activities",
    steps: [
      {
        element: "[data-tour='activities-table']",
        title: "Aktivite Geçmişi",
        description: "Tüm görüşme, teklif, ziyaret ve arama notları burada tarihe göre listelenir. Durum değiştirerek tamamlandı olarak işaretleyebilirsiniz.",
        side: "top",
      },
      {
        element: "[data-tour='activities-add']",
        title: "Yeni Aktivite Ekle",
        description: "3 adımlı form açılır: Aktivite tipi ve başlık, Bağlantı (müşteri/ilan), Detay açıklaması.",
        side: "bottom",
      },
      {
        element: "[data-tour='form-step-nav']",
        title: "Form Adımları — Genel Bakış",
        description: "Form 3 adımdan oluşur: Aktivite, Bağlantı ve Detay.",
        side: "bottom",
        triggerEvent: "kovak:open-form-activities",
        triggerDelay: 750,
      },
      {
        element: "[data-tour='form-step-content-0']",
        title: "1. Adım — Aktivite",
        description: "Aktivite tipini seçin (görüşme, teklif, ziyaret, arama, not), başlık girin ve tarihi belirleyin.",
        side: "bottom",
      },
      {
        element: "[data-tour='form-step-content-1']",
        title: "2. Adım — Bağlantı",
        description: "Aktivitenin hangi müşteri ve hangi ilanla ilişkili olduğunu seçin. Bu sayede müşteri ve ilan detay sayfalarında aktivite geçmişi görünür.",
        side: "bottom",
        clickBefore: "[data-tour='form-circle-1']",
        clickDelay: 350,
      },
      {
        element: "[data-tour='form-step-content-2']",
        title: "3. Adım — Detay",
        description: "Görüşmenin veya aktivitenin ayrıntılı açıklamasını girin. Son adımda 'Oluştur' ile kaydedilir.",
        side: "bottom",
        clickBefore: "[data-tour='form-circle-2']",
        clickDelay: 350,
      },
    ],
  },
  {
    id: "finance",
    title: "Finans",
    description: "Komisyon gelirlerinizi, ofis ve danışman paylarını takip edin.",
    url: "/finance",
    icon: "💰",
    closeEvent: "kovak:close-form-finance",
    steps: [
      {
        element: "[data-tour='finance-stats']",
        title: "Komisyon Özeti",
        description: "Toplam tahsil edilen komisyon, bekleyen tutar ve danışman bazlı gelir dağılımını buradan görürsünüz. Owner/Admin tüm ekibin verilerini görür.",
        side: "bottom",
      },
      {
        element: "[data-tour='finance-table']",
        title: "İşlem Tablosu",
        description: "Tüm satış ve kiralama işlemleri burada. Durum kolonundan 'Tahsil Edildi' veya 'İptal' olarak güncelleyebilirsiniz.",
        side: "top",
      },
      {
        element: "[data-tour='finance-add']",
        title: "Yeni İşlem Ekle",
        description: "3 adımlı form açılır: İşlem bilgileri, Komisyon hesaplama ve Kapanış tarihi.",
        side: "bottom",
      },
      {
        element: "[data-tour='form-step-nav']",
        title: "Form Adımları — Genel Bakış",
        description: "Form 3 adımdan oluşur: İşlem, Komisyon ve Kapanış.",
        side: "bottom",
        triggerEvent: "kovak:open-form-finance",
        triggerDelay: 750,
      },
      {
        element: "[data-tour='form-step-content-0']",
        title: "1. Adım — İşlem",
        description: "Satış veya kiralama tipini, opsiyonel ilan başlığı ve müşteri adını, son olarak satış/kira bedelini girin.",
        side: "bottom",
      },
      {
        element: "[data-tour='form-step-content-1']",
        title: "2. Adım — Komisyon",
        description: "Komisyon oranını (%) ve tutarını girin. Ofis ve danışman payı yüzdelerini belirleyerek net kazancı hesaplayabilirsiniz.",
        side: "bottom",
        clickBefore: "[data-tour='form-circle-1']",
        clickDelay: 350,
      },
      {
        element: "[data-tour='form-step-content-2']",
        title: "3. Adım — Kapanış",
        description: "Kapanış tarihini ve işlemle ilgili özel notları girin. Son adımda 'Kaydet' ile bekleyen olarak kaydedilir.",
        side: "bottom",
        clickBefore: "[data-tour='form-circle-2']",
        clickDelay: 350,
      },
    ],
  },
  {
    id: "presentations",
    title: "Sunumlar",
    description: "Seçtiğiniz ilanları birleştirip müşterinize özel bir sunum linki oluşturun.",
    url: "/presentations",
    icon: "📊",
    closeEvent: "kovak:close-form-presentations",
    steps: [
      {
        element: "[data-tour='presentations-table']",
        title: "Sunum Listesi",
        description: "Oluşturulan sunumlar burada. Her sunumun benzersiz bir paylaşım linki vardır. Linki kopyalayıp WhatsApp veya e-posta ile gönderebilirsiniz.",
        side: "top",
      },
      {
        element: "[data-tour='presentations-add']",
        title: "Yeni Sunum Oluştur",
        description: "Tek ekranlı form açılır. Başlık, müşteri seçimi, ilan listesi ve geçerlilik tarihi girerek müşteriye özel sunum hazırlarsınız.",
        side: "bottom",
      },
      {
        element: "[data-tour='form-presentations-title']",
        title: "Sunum Başlığı",
        description: "Müşterinin göreceği sunum adı. Örn: 'Kadıköy 3+1 Seçenekleri' gibi açıklayıcı bir başlık girin.",
        side: "bottom",
        triggerEvent: "kovak:open-form-presentations",
        triggerDelay: 750,
      },
      {
        element: "[data-tour='form-presentations-properties']",
        title: "İlan Seçimi",
        description: "Sunuma dahil etmek istediğiniz ilanları işaretleyin. Birden fazla ilan seçebilirsiniz. Müşteri linki açtığında seçili ilanları güzel bir galeri olarak görür.",
        side: "top",
      },
    ],
  },
];
