// src/server/admin/_shared/admin-nav.ts

import { findNavContext } from '@/lib/nav/nav-types';
import type { NavGroup, NavPage, NavTab, NavContext } from '@/lib/nav/nav-types';

export type AdminRouteGroup =
  | 'general'
  | 'operation'
  | 'support'
  | 'moderation'
  | 'content'
  | 'finances'
  | 'marketing'
  | 'system';

export type AdminNavGroup = NavGroup<AdminRouteGroup>;
export type AdminNavPage = NavPage<AdminRouteGroup>;
export type AdminNavTab = NavTab;
export type AdminNavContext = NavContext<AdminRouteGroup>;

// Backward-compat aliases (importers of route-manifest.ts used these names)
export type AdminRoute = AdminNavPage;

export const ADMIN_NAV: readonly AdminNavGroup[] = [
  {
    id: 'general',
    labelHe: 'כללי',
    labelEn: 'General',
    pages: [
      { path: '/admin', titleHe: 'לוח בקרה', titleEn: 'Dashboard', group: 'general', tabs: [] },
      {
        path: '/admin/inbox',
        titleHe: 'תיבת דואר מנהל',
        titleEn: 'Admin Inbox',
        group: 'general',
        tabs: [],
      },
      { path: '/admin/users', titleHe: 'משתמשים', titleEn: 'Users', group: 'general', tabs: [] },
    ],
  },
  {
    id: 'operation',
    labelHe: 'פעילות',
    labelEn: 'Operation',
    pages: [
      {
        path: '/admin/vendors',
        titleHe: 'ספקים',
        titleEn: 'Vendors',
        group: 'operation',
        tabs: [
          { path: '/admin/vendors', titleHe: 'סקירה', titleEn: 'Overview' },
          { path: '/admin/vendors/all', titleHe: 'כל הספקים', titleEn: 'All Vendors' },
        ],
      },
      {
        path: '/admin/deals',
        titleHe: 'עסקאות',
        titleEn: 'Deals',
        group: 'operation',
        tabs: [
          { path: '/admin/deals', titleHe: 'סקירה', titleEn: 'Overview' },
          { path: '/admin/deals/active', titleHe: 'כל העסקאות', titleEn: 'All Deals' },
          { path: '/admin/deals/group', titleHe: 'קבוצתי', titleEn: 'Group' },
        ],
      },
      {
        path: '/admin/purchases',
        titleHe: 'רכישות',
        titleEn: 'Purchases',
        group: 'operation',
        tabs: [
          { path: '/admin/purchases', titleHe: 'סקירה', titleEn: 'Overview' },
          { path: '/admin/purchases/orders', titleHe: 'הזמנות', titleEn: 'Orders' },
          { path: '/admin/purchases/returns', titleHe: 'החזרות', titleEn: 'Returns' },
        ],
      },
    ],
  },
  {
    id: 'support',
    labelHe: 'מרכז תמיכה',
    labelEn: 'Support Center',
    pages: [
      {
        path: '/admin/support',
        titleHe: 'תיבת פניות',
        titleEn: 'Support Inbox',
        group: 'support',
        tabs: [],
      },
      {
        path: '/admin/support/kb',
        titleHe: 'מאגר ידע',
        titleEn: 'Knowledge Base',
        group: 'support',
        tabs: [],
      },
      {
        path: '/admin/support/definitions',
        titleHe: 'סוכני AI',
        titleEn: 'AI Agents',
        group: 'support',
        tabs: [],
      },
      {
        path: '/admin/support/metrics',
        titleHe: 'מדדים',
        titleEn: 'Metrics',
        group: 'support',
        tabs: [],
      },
      {
        path: '/admin/support/config',
        titleHe: 'הגדרות תמיכה',
        titleEn: 'Support Settings',
        group: 'support',
        tabs: [],
      },
    ],
  },
  {
    id: 'moderation',
    labelHe: 'מודרציה',
    labelEn: 'Moderation',
    pages: [
      {
        path: '/admin/vendors/approval',
        titleHe: 'תור אישורי תוכן',
        titleEn: 'Content Approvals',
        group: 'moderation',
        tabs: [],
      },
      {
        path: '/admin/moderation',
        titleHe: 'סקירת מודרציה',
        titleEn: 'Moderation Overview',
        group: 'moderation',
        tabs: [
          { path: '/admin/moderation', titleHe: 'סקירה', titleEn: 'Overview' },
          { path: '/admin/moderation/reviews', titleHe: 'ביקורות', titleEn: 'Reviews' },
          { path: '/admin/moderation/reports', titleHe: 'דיווחים', titleEn: 'Reports' },
          { path: '/admin/moderation/images', titleHe: 'תמונות', titleEn: 'Images' },
        ],
      },
      {
        path: '/admin/moderation/jobs',
        titleHe: 'משימות AI ומעקב עלויות',
        titleEn: 'AI Jobs & Cost Tracking',
        group: 'moderation',
        tabs: [],
      },
      {
        path: '/admin/moderation/settings',
        titleHe: 'תורי AI',
        titleEn: 'AI Queues',
        group: 'moderation',
        tabs: [],
      },
    ],
  },
  {
    id: 'content',
    labelHe: 'תוכן',
    labelEn: 'Content',
    pages: [
      {
        path: '/admin/categories',
        titleHe: 'קטגוריות',
        titleEn: 'Categories',
        group: 'content',
        tabs: [
          { path: '/admin/categories', titleHe: 'סקירה', titleEn: 'Overview' },
          { path: '/admin/categories/list', titleHe: 'קטגוריות', titleEn: 'Categories' },
          { path: '/admin/categories/tags', titleHe: 'תגיות', titleEn: 'Tags' },
        ],
      },
      {
        path: '/admin/translations',
        titleHe: 'תרגומים',
        titleEn: 'Translations',
        group: 'content',
        tabs: [
          { path: '/admin/translations', titleHe: 'עסקאות', titleEn: 'Deals' },
          {
            path: '/admin/translations/memory',
            titleHe: 'זיכרון תרגום',
            titleEn: 'Translation memory',
          },
        ],
      },
      {
        path: '/admin/layout',
        titleHe: 'פריסת עמוד',
        titleEn: 'Page Layout',
        group: 'content',
        tabs: [],
      },
      {
        path: '/admin/languages',
        titleHe: 'שפות',
        titleEn: 'Languages',
        group: 'content',
        tabs: [],
      },
    ],
  },
  {
    id: 'finances',
    labelHe: 'פיננסים',
    labelEn: 'Finances',
    pages: [
      {
        path: '/admin/earnings',
        titleHe: 'הכנסות',
        titleEn: 'Earnings',
        group: 'finances',
        tabs: [
          { path: '/admin/earnings', titleHe: 'סקירה', titleEn: 'Overview' },
          { path: '/admin/earnings/detail', titleHe: 'פירוט', titleEn: 'Detail' },
        ],
      },
      {
        path: '/admin/settlements',
        titleHe: 'התחשבנויות ספקים',
        titleEn: 'Vendor Settlements',
        group: 'finances',
        tabs: [],
      },
      {
        path: '/admin/vat-rates',
        titleHe: 'שיעורי מע"מ',
        titleEn: 'VAT Rates',
        group: 'finances',
        tabs: [],
      },
      {
        path: '/admin/promo-codes',
        titleHe: 'קודי הנחה',
        titleEn: 'Promo Codes',
        group: 'finances',
        tabs: [],
      },
    ],
  },
  {
    id: 'marketing',
    labelHe: 'שיווק',
    labelEn: 'Marketing',
    pages: [
      {
        path: '/admin/campaigns',
        titleHe: 'קמפיינים',
        titleEn: 'Campaigns',
        group: 'marketing',
        tabs: [],
      },
      {
        path: '/admin/affiliates',
        titleHe: 'שותפים',
        titleEn: 'Affiliates',
        group: 'marketing',
        tabs: [
          { path: '/admin/affiliates', titleHe: 'סקירה', titleEn: 'Overview' },
          { path: '/admin/affiliates/list', titleHe: 'רשימה', titleEn: 'List' },
          { path: '/admin/affiliates/fraud', titleHe: 'הונאה', titleEn: 'Fraud' },
          { path: '/admin/affiliates/settings', titleHe: 'הגדרות', titleEn: 'Settings' },
        ],
      },
      {
        path: '/admin/sharing',
        titleHe: 'שיתוף',
        titleEn: 'Sharing',
        group: 'marketing',
        tabs: [],
      },
    ],
  },
  {
    id: 'system',
    labelHe: 'מערכת',
    labelEn: 'System',
    pages: [
      {
        path: '/admin/platform',
        titleHe: 'פלטפורמה',
        titleEn: 'Platform',
        group: 'system',
        tabs: [
          { path: '/admin/platform/general', titleHe: 'כללי', titleEn: 'General' },
          {
            path: '/admin/platform/image-limits',
            titleHe: 'מגבלות תמונות',
            titleEn: 'Image Limits',
          },
        ],
      },
      {
        path: '/admin/system',
        titleHe: 'תפעול מערכת',
        titleEn: 'System operations',
        group: 'system',
        tabs: [
          { path: '/admin/system/overview', titleHe: 'סקירה', titleEn: 'Overview' },
          {
            path: '/admin/system/outbox',
            titleHe: 'תור אירועים (Outbox)',
            titleEn: 'Event queue (Outbox)',
          },
          { path: '/admin/system/audit', titleHe: 'יומן ביקורת', titleEn: 'Audit log' },
          { path: '/admin/system/health', titleHe: 'תקינות', titleEn: 'Health checks' },
          { path: '/admin/system/email-log', titleHe: 'יומן דוא"ל', titleEn: 'Email log' },
          {
            path: '/admin/system/address-cache',
            titleHe: 'מטמון כתובות',
            titleEn: 'Address cache',
          },
          {
            path: '/admin/system/monitoring',
            titleHe: 'ניטור והתראות',
            titleEn: 'Monitoring & alerts',
          },
        ],
      },
    ],
  },
];

// Flat list for any code that iterates all pages
export const ADMIN_ROUTES: readonly AdminNavPage[] = ADMIN_NAV.flatMap((g) => g.pages);

/** Convenience wrapper bound to ADMIN_NAV. */
export function findAdminNavContext(pathname: string): AdminNavContext | undefined {
  return findNavContext(pathname, ADMIN_NAV);
}
