// src/lib/vendor-nav.ts

import type { IconName } from '@/components/ui/icons/Icon/Icon';

export interface VendorNavTab {
  path: string;
  titleHe: string;
  titleEn: string;
}

export interface VendorNavPage {
  path: string;
  titleHe: string;
  titleEn: string;
  group: string;
  icon: IconName;
  tabs: readonly VendorNavTab[];
  bottomNav?: {
    slot: number;
    prominent?: boolean;
  };
}

export interface VendorNavGroup {
  key: string;
  titleHe: string;
  titleEn: string;
  items: readonly VendorNavPage[];
}

const groupOverview: VendorNavGroup = {
  key: 'overview',
  titleHe: 'סקירה',
  titleEn: 'Overview',
  items: [
    {
      path: '/vendor/dashboard',
      titleHe: 'לוח בקרה',
      titleEn: 'Dashboard',
      group: 'overview',
      icon: 'LayoutDashboard',
      tabs: [],
      bottomNav: { slot: 0 },
    },
  ],
};

const groupDeals: VendorNavGroup = {
  key: 'deals',
  titleHe: 'עסקאות',
  titleEn: 'Deals',
  items: [
    {
      path: '/vendor/deals',
      titleHe: 'העסקאות שלי',
      titleEn: 'My Deals',
      group: 'deals',
      icon: 'Tag',
      tabs: [
        { path: '/vendor/deals', titleHe: 'כל העסקאות', titleEn: 'All Deals' },
        { path: '/vendor/deals/new', titleHe: 'עסקה חדשה', titleEn: 'New Deal' },
        { path: '/vendor/deals/drafts', titleHe: 'טיוטות', titleEn: 'Drafts' },
        { path: '/vendor/deals/closed', titleHe: 'עסקאות שנסגרו', titleEn: 'Closed Deals' },
      ],
      bottomNav: { slot: 1 },
    },
    {
      path: '/vendor/scan',
      titleHe: 'סריקה',
      titleEn: 'Scan',
      group: 'deals',
      icon: 'ScanLine',
      tabs: [],
      bottomNav: { slot: 2, prominent: true },
    },
  ],
};

const groupInsights: VendorNavGroup = {
  key: 'insights',
  titleHe: 'תובנות',
  titleEn: 'Insights',
  items: [
    {
      path: '/vendor/analytics',
      titleHe: 'אנליטיקה',
      titleEn: 'Analytics',
      group: 'insights',
      icon: 'BarChart3',
      tabs: [],
      bottomNav: { slot: 3 },
    },
    {
      path: '/vendor/earnings',
      titleHe: 'הכנסות',
      titleEn: 'Earnings',
      group: 'insights',
      icon: 'TrendingUp',
      tabs: [],
    },
    {
      path: '/vendor/customers',
      titleHe: 'לקוחות',
      titleEn: 'Customers',
      group: 'insights',
      icon: 'User',
      tabs: [],
    },
  ],
};

const groupOperations: VendorNavGroup = {
  key: 'operations',
  titleHe: 'פעולות',
  titleEn: 'Operations',
  items: [
    {
      path: '/vendor/orders',
      titleHe: 'הזמנות',
      titleEn: 'Orders',
      group: 'operations',
      icon: 'ShoppingBag',
      tabs: [],
    },
    {
      path: '/vendor/returns',
      titleHe: 'החזרות',
      titleEn: 'Returns',
      group: 'operations',
      icon: 'RotateCcw',
      tabs: [],
    },
    {
      path: '/vendor/promo-codes',
      titleHe: 'קודי הנחה',
      titleEn: 'Promo Codes',
      group: 'operations',
      icon: 'Percent',
      tabs: [],
    },
    {
      path: '/vendor/personal-deals',
      titleHe: 'בקשות עסקה אישית',
      titleEn: 'Personal deal requests',
      group: 'operations',
      icon: 'Users',
      tabs: [],
    },
    {
      path: '/vendor/messages',
      titleHe: 'הודעות',
      titleEn: 'Messages',
      group: 'operations',
      icon: 'MessageCircle',
      tabs: [],
    },
  ],
};

const groupShop: VendorNavGroup = {
  key: 'shop',
  titleHe: 'חנות',
  titleEn: 'Shop',
  items: [
    {
      path: '/vendor/profile',
      titleHe: 'פרופיל',
      titleEn: 'Profile',
      group: 'shop',
      icon: 'Store',
      tabs: [],
    },
    {
      path: '/vendor/settings',
      titleHe: 'הגדרות',
      titleEn: 'Settings',
      group: 'shop',
      icon: 'Settings',
      tabs: [
        { path: '/vendor/settings', titleHe: 'כללי', titleEn: 'General' },
        { path: '/vendor/settings/payments', titleHe: 'תשלומים', titleEn: 'Payments' },
        { path: '/vendor/settings/notifications', titleHe: 'התראות', titleEn: 'Notifications' },
        { path: '/vendor/settings/invoicing', titleHe: 'חשבוניות', titleEn: 'Invoicing' },
      ],
      bottomNav: { slot: 4 },
    },
  ],
};

export const VENDOR_NAV: readonly VendorNavGroup[] = [
  groupOverview,
  groupDeals,
  groupInsights,
  groupOperations,
  groupShop,
];

export function findVendorNavContext(pathname: string): {
  group: VendorNavGroup;
  page: VendorNavPage;
  tabPath?: string;
} | null {
  for (const group of VENDOR_NAV) {
    for (const page of group.items) {
      if (page.tabs.length > 0) {
        const matchedTab = page.tabs.find((tab) => tab.path === pathname);
        if (matchedTab) {
          return { group, page, tabPath: matchedTab.path };
        }
      }

      const pageMatches =
        page.path === '/vendor/dashboard'
          ? pathname === page.path
          : pathname === page.path || pathname.startsWith(page.path + '/');

      if (pageMatches) {
        return { group, page };
      }
    }
  }

  return null;
}
