/**
 * Central module registry (modular monolith).
 * Each future business module is declared here with its authorization requirement and
 * implementation status — the dashboard renders from this registry, never from mock data.
 */
export type ModuleStatus = "ready" | "in_development" | "planned";

export interface ModuleDef {
  code: string;
  nameAr: string;
  nameEn: string;
  description: string;
  descriptionEn: string;
  permission: string;
  href: string;
  status: ModuleStatus;
  color: string;
}

export const MODULES: ModuleDef[] = [
  {
    code: "members",
    nameAr: "العضوية",
    nameEn: "Members",
    description: "سجلات الأعضاء، بيانات الاتصال المقيدة، وتاريخ حالة العضوية",
    descriptionEn: "Member records, restricted contact data, and membership status history",
    permission: "members.view",
    href: "/dashboard/members",
    status: "ready",
    color: "emerald",
  },
  {
    code: "structure",
    nameAr: "الهيكل التنظيمي",
    nameEn: "Organization",
    description: "المحافظات، الوحدات، المناصب الموثقة، الجهوزية التشغيلية",
    descriptionEn: "Governorates, units, documented positions, operational readiness",
    permission: "structure.view",
    href: "/dashboard/structure",
    status: "ready",
    color: "sky",
  },
  {
    code: "plans",
    nameAr: "الخطط والمهام",
    nameEn: "Plans & Tasks",
    description: "الدورة، الخطط السنوية والربعية، المهام والاعتمادات",
    descriptionEn: "Cycles, annual and quarterly plans, tasks and approvals",
    permission: "plans.view",
    href: "/dashboard/plans",
    status: "planned",
    color: "violet",
  },
  {
    code: "activities",
    nameAr: "الأنشطة",
    nameEn: "Activities",
    description: "دورة حياة النشاط، الحضور، الأدلة، التكاليف",
    descriptionEn: "Activity lifecycle, attendance, evidence, costs",
    permission: "activities.view",
    href: "/dashboard/activities",
    status: "planned",
    color: "amber",
  },
  {
    code: "meetings",
    nameAr: "الاجتماعات والقرارات",
    nameEn: "Meetings & Decisions",
    description: "الاجتماعات، المحاضر، القرارات المقترحة والمتخذة",
    descriptionEn: "Meetings, minutes, proposed and adopted decisions",
    permission: "meetings.view",
    href: "/dashboard/meetings",
    status: "planned",
    color: "rose",
  },
  {
    code: "training",
    nameAr: "التدريب",
    nameEn: "Training",
    description: "البرامج، الجلسات، التسجيل، الحضور والتقييم",
    descriptionEn: "Programs, sessions, enrollment, attendance and evaluation",
    permission: "training.view",
    href: "/dashboard/training",
    status: "planned",
    color: "teal",
  },
  {
    code: "kpis",
    nameAr: "المؤشرات والأداء",
    nameEn: "KPIs & Performance",
    description: "تعريفات المؤشرات، الأهداف المعتمدة، القياسات",
    descriptionEn: "Indicator definitions, approved targets, measurements",
    permission: "kpis.view",
    href: "/dashboard/kpis",
    status: "ready",
    color: "indigo",
  },
];

export function moduleByCode(code: string): ModuleDef | undefined {
  return MODULES.find((m) => m.code === code);
}
