import { BellRing, Car, ChartColumn, ChartLine, FileCheck2, GitFork, HandCoins, Package, Truck, UserCheck, Users, Wallet } from "lucide-react";
import type { ComponentType } from "react";
import type { WidgetMeta, WidgetId } from "./types";
import { DecisionInboxWidget } from "./decision-inbox";
import { ActiveDeliveriesWidget } from "./active-deliveries";
import { OrdersPulseWidget } from "./orders-pulse";
import { CaptainsPipelineWidget } from "./captains-pipeline";
import { RevenueOverviewWidget } from "./revenue-overview";
import { CaptainsConversionWidget } from "./captains-conversion";
import { FleetOverviewWidget } from "./fleet-overview";
import { FleetDocumentsWidget } from "./fleet-documents";
import { FleetTypesWidget } from "./fleet-types";
import { RecentOrdersWidget } from "./recent-orders";
import { RecentCaptainsWidget } from "./recent-captains";
import { DeliveriesTrendWidget } from "./deliveries-trend";
import { RevenueTrendWidget } from "./revenue-trend";
import { ModuleStatusWidget } from "./module-status";

export const widgetRegistry: Record<WidgetId, WidgetMeta> = {
  decision_inbox: {
    id: "decision_inbox",
    titleKey: "widgets.decisionInbox.title",
    hintKey: "widgets.decisionInbox.hint",
    icon: BellRing,
    tone: "warning",
    size: "full",
    live: true,
  },
  active_deliveries: {
    id: "active_deliveries",
    titleKey: "widgets.activeDeliveries.title",
    hintKey: "widgets.activeDeliveries.hint",
    icon: Truck,
    tone: "primary",
    size: "card",
    live: true,
  },
  orders_pulse: {
    id: "orders_pulse",
    titleKey: "widgets.ordersPulse.title",
    hintKey: "widgets.ordersPulse.hint",
    icon: Package,
    tone: "accent",
    size: "card",
    live: true,
  },
  captains_pipeline: {
    id: "captains_pipeline",
    titleKey: "widgets.captainsPipeline.title",
    hintKey: "widgets.captainsPipeline.hint",
    icon: UserCheck,
    tone: "success",
    size: "card",
    live: true,
  },
  revenue_overview: {
    id: "revenue_overview",
    titleKey: "widgets.revenueOverview.title",
    hintKey: "widgets.revenueOverview.hint",
    icon: Wallet,
    tone: "success",
    size: "card",
    live: true,
  },
  captains_conversion: {
    id: "captains_conversion",
    titleKey: "widgets.captainsConversion.title",
    hintKey: "widgets.captainsConversion.hint",
    icon: GitFork,
    tone: "primary",
    size: "card",
    live: true,
  },
  fleet_overview: {
    id: "fleet_overview",
    titleKey: "widgets.fleetOverview.title",
    hintKey: "widgets.fleetOverview.hint",
    icon: Car,
    tone: "accent",
    size: "card",
    live: true,
  },
  fleet_documents: {
    id: "fleet_documents",
    titleKey: "widgets.fleetDocuments.title",
    hintKey: "widgets.fleetDocuments.hint",
    icon: FileCheck2,
    tone: "warning",
    size: "card",
    live: true,
  },
  fleet_types: {
    id: "fleet_types",
    titleKey: "widgets.fleetTypes.title",
    hintKey: "widgets.fleetTypes.hint",
    icon: Truck,
    tone: "info",
    size: "card",
    live: true,
  },
  recent_orders: {
    id: "recent_orders",
    titleKey: "widgets.recentOrders.title",
    icon: Package,
    tone: "info",
    size: "wide",
    live: true,
  },
  recent_captains: {
    id: "recent_captains",
    titleKey: "widgets.recentCaptains.title",
    icon: Users,
    tone: "muted",
    size: "wide",
    live: true,
  },
  deliveries_trend: {
    id: "deliveries_trend",
    titleKey: "widgets.deliveriesTrend.title",
    hintKey: "widgets.deliveriesTrend.hint",
    icon: ChartColumn,
    tone: "info",
    size: "wide",
    live: true,
  },
  revenue_trend: {
    id: "revenue_trend",
    titleKey: "widgets.revenueTrend.title",
    hintKey: "widgets.revenueTrend.hint",
    icon: ChartLine,
    tone: "accent",
    size: "wide",
    live: true,
  },
  module_status: {
    id: "module_status",
    titleKey: "widgets.moduleStatus.title",
    hintKey: "widgets.moduleStatus.hint",
    icon: HandCoins,
    tone: "warning",
    size: "full",
    live: false,
  },
};

export const WIDGET_COMPONENTS: Record<WidgetId, ComponentType> = {
  decision_inbox: DecisionInboxWidget,
  active_deliveries: ActiveDeliveriesWidget,
  orders_pulse: OrdersPulseWidget,
  captains_pipeline: CaptainsPipelineWidget,
  revenue_overview: RevenueOverviewWidget,
  captains_conversion: CaptainsConversionWidget,
  fleet_overview: FleetOverviewWidget,
  fleet_documents: FleetDocumentsWidget,
  fleet_types: FleetTypesWidget,
  recent_orders: RecentOrdersWidget,
  recent_captains: RecentCaptainsWidget,
  deliveries_trend: DeliveriesTrendWidget,
  revenue_trend: RevenueTrendWidget,
  module_status: ModuleStatusWidget,
};

export function widgetMeta(id: WidgetId): WidgetMeta {
  return widgetRegistry[id];
}