export type MarketplaceLanguage = 'en' | 'fr' | 'ar'

export type MarketplaceHomepageMetric = {
  value: string
  label: string
}

export type MarketplaceHomepagePillar = {
  title: string
  body: string
}

export type MarketplaceHomepageStep = {
  step: string
  title: string
  body: string
}

export type MarketplaceHomepageSectionType =
  | 'hero'
  | 'surface'
  | 'pillars'
  | 'audiences'
  | 'features'
  | 'steps'
  | 'closing'

export type MarketplaceHomepageContent = {
  sections: MarketplaceHomepageSectionType[]
  heroKicker: string
  heroTitle: string
  heroBody: string
  startTrial: string
  exploreVehicles: string
  surfaceLabel: string
  surfaceTitle: string
  surfaceBody: string
  liveLabel: string
  trustedFleets: string
  brandedFlows: string
  multiTenant: string
  companyKicker: string
  companyTitle: string
  companyBody: string
  renterKicker: string
  renterTitle: string
  renterBody: string
  pillars: MarketplaceHomepagePillar[]
  metrics: MarketplaceHomepageMetric[]
  featureLabel: string
  features: string[]
  stepsTitle: string
  steps: MarketplaceHomepageStep[]
  stepLabel: string
  readyKicker: string
  readyTitle: string
  readyBody: string
  viewPricing: string
  createWorkspace: string
}

export type MarketplaceHomepageConfig = Record<MarketplaceLanguage, MarketplaceHomepageContent>

export const defaultMarketplaceHomepageSections: MarketplaceHomepageSectionType[] = [
  'hero',
  'surface',
  'pillars',
  'audiences',
  'features',
  'steps',
  'closing',
]

export const defaultMarketplaceHomepageContent: MarketplaceHomepageConfig = {
  en: {
    sections: defaultMarketplaceHomepageSections,
    heroKicker: 'RentalDriveGo',
    heroTitle: 'Marketplace discovery with a sharper front door.',
    heroBody:
      'Rental companies run private operations, renters browse a shared marketplace, and every booking ends on the company’s own branded checkout.',
    startTrial: 'Start free trial',
    exploreVehicles: 'Explore vehicles',
    surfaceLabel: 'Marketplace surface',
    surfaceTitle: 'Designed for two audiences at once.',
    surfaceBody:
      'Operators need control, renters need confidence. The marketplace should show both without feeling like a template.',
    liveLabel: 'Live network',
    trustedFleets: 'Trusted fleets',
    brandedFlows: 'Branded booking flows',
    multiTenant: 'Multi-tenant operations',
    companyKicker: 'Operator workflow',
    companyTitle: 'Manage inventory, offers, billing, and staff from one control layer.',
    companyBody:
      'Publish inventory once, decide what appears publicly, and keep contracts, payments, and reporting isolated per company.',
    renterKicker: 'Renter experience',
    renterTitle: 'Let renters compare quickly, then hand them off to the right company site.',
    renterBody:
      'The marketplace works as a discovery engine, not a dead-end aggregator. Search here, reserve there, and pay direct.',
    pillars: [
      ['Unified publishing', 'Vehicle photos, pricing, and offers flow from one admin workflow into marketplace discovery and branded booking pages.'],
      ['Qualified discovery', 'Featured offers, location-aware browsing, and company reputation signals help renters narrow options fast.'],
      ['Direct revenue path', 'Bookings move into the company’s own payment flow, so customer ownership and cash collection stay with the business.'],
    ].map(([title, body]) => ({ title: title!, body: body! })),
    metrics: [
      ['01', 'Shared marketplace visibility'],
      ['02', 'Direct company checkout'],
      ['03', 'Company-owned payments'],
    ].map(([value, label]) => ({ value: value!, label: label! })),
    featureLabel: 'What the product covers',
    features: [
      'Fleet management with multi-photo uploads',
      'Marketplace offers and redirect booking flow',
      'Branded public booking site per company',
      'Customer CRM, analytics, and billing controls',
    ],
    stepsTitle: 'How companies launch',
    steps: [
      ['1', 'Create your company workspace', 'Pick a plan, launch your 90-day trial, and verify the owner account.'],
      ['2', 'Publish vehicles and offers', 'Upload photos once and control what appears on the marketplace and branded site.'],
      ['3', 'Accept bookings on your own site', 'Renters discover your fleet on RentalDriveGo, then pay you directly on your branded booking flow.'],
    ].map(([step, title, body]) => ({ step: step!, title: title!, body: body! })),
    stepLabel: 'Step',
    readyKicker: 'Ready to launch',
    readyTitle: 'The marketplace homepage should explain the product in seconds.',
    readyBody:
      'Use the marketplace to attract demand, then move renters into a branded experience that keeps pricing, payments, and trust tied to your company.',
    viewPricing: 'View pricing',
    createWorkspace: 'Create workspace',
  },
  fr: {
    sections: defaultMarketplaceHomepageSections,
    heroKicker: 'RentalDriveGo',
    heroTitle: 'Une vitrine marketplace plus claire et plus percutante.',
    heroBody:
      "Les entreprises de location gèrent leurs opérations en privé, les clients parcourent une marketplace commune et chaque réservation se finalise sur le parcours de paiement aux couleurs de l'entreprise.",
    startTrial: 'Commencer l’essai gratuit',
    exploreVehicles: 'Explorer les véhicules',
    surfaceLabel: 'Vitrine marketplace',
    surfaceTitle: 'Pensée pour deux audiences à la fois.',
    surfaceBody:
      'Les opérateurs veulent du contrôle, les clients veulent de la confiance. La marketplace doit montrer les deux sans ressembler à un modèle générique.',
    liveLabel: 'Réseau actif',
    trustedFleets: 'Flottes fiables',
    brandedFlows: 'Parcours de marque',
    multiTenant: 'Opérations multi-tenant',
    companyKicker: 'Flux opérateur',
    companyTitle: 'Pilotez l’inventaire, les offres, la facturation et l’équipe depuis un seul centre de contrôle.',
    companyBody:
      'Publiez une seule fois, choisissez ce qui apparaît publiquement, et gardez contrats, paiements et rapports isolés par entreprise.',
    renterKicker: 'Expérience client',
    renterTitle: 'Laissez les clients comparer rapidement, puis redirigez-les vers le bon site d’entreprise.',
    renterBody:
      'La marketplace sert de moteur de découverte, pas d’agrégateur sans suite. Recherche ici, réservation là-bas, paiement direct.',
    pillars: [
      ['Publication unifiée', 'Les photos, tarifs et offres circulent depuis un seul flux d’administration vers la découverte marketplace et les pages de réservation de marque.'],
      ['Découverte qualifiée', 'Offres mises en avant, navigation par localisation et signaux de réputation aident les clients à filtrer rapidement.'],
      ['Revenus en direct', 'Les réservations basculent vers le paiement propre à l’entreprise afin de préserver la relation client et l’encaissement.'],
    ].map(([title, body]) => ({ title: title!, body: body! })),
    metrics: [
      ['01', 'Visibilité marketplace partagée'],
      ['02', 'Paiement direct entreprise'],
      ['03', 'Paiements gérés par l’entreprise'],
    ].map(([value, label]) => ({ value: value!, label: label! })),
    featureLabel: 'Ce que couvre le produit',
    features: [
      'Gestion de flotte avec téléversement de plusieurs photos',
      'Offres marketplace et redirection vers la réservation',
      'Site public de réservation par entreprise',
      'CRM client, analytics et contrôle de facturation',
    ],
    stepsTitle: 'Comment les entreprises démarrent',
    steps: [
      ['1', 'Créez votre espace entreprise', 'Choisissez un plan, lancez votre essai de 90 jours et vérifiez le compte propriétaire.'],
      ['2', 'Publiez véhicules et offres', 'Téléversez une seule fois et contrôlez ce qui apparaît sur la marketplace et le site de marque.'],
      ['3', 'Acceptez les réservations sur votre site', 'Les clients découvrent votre flotte sur RentalDriveGo puis paient directement via votre parcours de réservation.'],
    ].map(([step, title, body]) => ({ step: step!, title: title!, body: body! })),
    stepLabel: 'Étape',
    readyKicker: 'Prêt à démarrer',
    readyTitle: 'La page d’accueil marketplace doit présenter le produit en quelques secondes.',
    readyBody:
      'Utilisez la marketplace pour capter la demande, puis orientez les clients vers une expérience de marque où les prix, les paiements et la confiance restent attachés à votre entreprise.',
    viewPricing: 'Voir les tarifs',
    createWorkspace: 'Créer l’espace',
  },
  ar: {
    sections: defaultMarketplaceHomepageSections,
    heroKicker: 'RentalDriveGo',
    heroTitle: 'واجهة سوق أكثر وضوحاً وتأثيراً.',
    heroBody:
      'شركات التأجير تدير عملياتها بشكل خاص، والمستأجرون يتصفحون سوقاً مشتركاً، وكل حجز ينتهي في صفحة دفع تحمل هوية الشركة ذاتها.',
    startTrial: 'ابدأ التجربة المجانية',
    exploreVehicles: 'استكشف السيارات',
    surfaceLabel: 'واجهة السوق',
    surfaceTitle: 'مصممة لجمهورين في الوقت نفسه.',
    surfaceBody:
      'المشغلون يريدون التحكم، والمستأجرون يريدون الثقة. يجب أن تُظهر المنصة الأمرين معاً من دون أن تبدو كقالب عادي.',
    liveLabel: 'شبكة نشطة',
    trustedFleets: 'أساطيل موثوقة',
    brandedFlows: 'مسارات حجز مخصصة',
    multiTenant: 'عمليات متعددة الشركات',
    companyKicker: 'سير عمل المشغل',
    companyTitle: 'تحكم في المخزون والعروض والفوترة والفريق من طبقة تشغيل واحدة.',
    companyBody:
      'انشر المخزون مرة واحدة، وحدد ما يظهر للعامة، واحتفظ بالعقود والمدفوعات والتقارير معزولة لكل شركة.',
    renterKicker: 'تجربة المستأجر',
    renterTitle: 'دع المستأجرين يقارنون بسرعة ثم وجّههم إلى موقع الشركة المناسب.',
    renterBody:
      'هذه المنصة محرك لاكتشاف الخيارات، وليست مُجمِّعاً بلا مسار واضح. ابحث هنا، احجز هناك، وادفع مباشرة للشركة.',
    pillars: [
      ['نشر موحد', 'صور السيارات والأسعار والعروض تنتقل من سير إدارة واحد إلى السوق وصفحات الحجز ذات الهوية الخاصة.'],
      ['اكتشاف مؤهل', 'تساعد العروض المميزة، والتصفح حسب الموقع، وإشارات السمعة المستأجرين على تحديد خياراتهم بسرعة.'],
      ['مسار إيراد مباشر', 'تنتقل الحجوزات إلى صفحة الدفع الخاصة بالشركة حتى تبقى علاقة العميل والتحصيل المالي بيد الشركة نفسها.'],
    ].map(([title, body]) => ({ title: title!, body: body! })),
    metrics: [
      ['01', 'ظهور مشترك في السوق'],
      ['02', 'دفع مباشر للشركة'],
      ['03', 'مدفوعات مملوكة للشركة'],
    ].map(([value, label]) => ({ value: value!, label: label! })),
    featureLabel: 'ما الذي يقدمه المنتج',
    features: [
      'إدارة الأسطول مع رفع عدة صور',
      'عروض السوق والتحويل إلى مسار الحجز',
      'موقع حجز عام مخصص لكل شركة',
      'إدارة العملاء والتحليلات والفوترة',
    ],
    stepsTitle: 'كيف تبدأ الشركات',
    steps: [
      ['1', 'أنشئ مساحة عمل شركتك', 'اختر الخطة وابدأ تجربتك لمدة 14 يوماً ثم فعّل حساب المالك.'],
      ['2', 'انشر السيارات والعروض', 'ارفع الصور مرة واحدة وتحكم فيما يظهر في السوق وفي الموقع المخصص.'],
      ['3', 'استقبل الحجوزات على موقعك', 'يكتشف المستأجرون أسطولك على RentalDriveGo ثم يدفعون مباشرة عبر مسار الحجز الخاص بك.'],
    ].map(([step, title, body]) => ({ step: step!, title: title!, body: body! })),
    stepLabel: 'الخطوة',
    readyKicker: 'جاهز للانطلاق',
    readyTitle: 'يجب أن تشرح الصفحة الرئيسية قيمة المنصة خلال ثوانٍ.',
    readyBody:
      'استخدم السوق لجذب الطلب، ثم انقل المستأجرين إلى تجربة تحمل هوية شركتك، بحيث تبقى الأسعار والمدفوعات والثقة مرتبطة بنشاطك.',
    viewPricing: 'عرض الأسعار',
    createWorkspace: 'إنشاء المساحة',
  },
}

export function cloneMarketplaceHomepageContent(): MarketplaceHomepageConfig {
  return JSON.parse(JSON.stringify(defaultMarketplaceHomepageContent)) as MarketplaceHomepageConfig
}

export function resolveMarketplaceHomepageSections(
  sections?: MarketplaceHomepageSectionType[] | null,
): MarketplaceHomepageSectionType[] {
  const source = sections?.length ? sections : defaultMarketplaceHomepageSections
  return source.filter((section, index) => source.indexOf(section) === index)
}
