@burdenoff/microfe-adaptercloud 2026.624.1 → 2026.625.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/dist/adaptercloud/components/EmptyState.js +17 -21
  2. package/dist/adaptercloud/components/EmptyState.js.map +1 -1
  3. package/dist/adaptercloud/components/InvestmentCard.js +25 -23
  4. package/dist/adaptercloud/components/InvestmentCard.js.map +1 -1
  5. package/dist/adaptercloud/components/MetricsCard.js +18 -12
  6. package/dist/adaptercloud/components/MetricsCard.js.map +1 -1
  7. package/dist/adaptercloud/components/PageLayout.js +38 -19
  8. package/dist/adaptercloud/components/PageLayout.js.map +1 -1
  9. package/dist/adaptercloud/components/RatingDisplay.js +3 -3
  10. package/dist/adaptercloud/components/RatingDisplay.js.map +1 -1
  11. package/dist/adaptercloud/components/StatusBadge.js +36 -16
  12. package/dist/adaptercloud/components/StatusBadge.js.map +1 -1
  13. package/dist/adaptercloud/pages/HomePage.js +242 -231
  14. package/dist/adaptercloud/pages/HomePage.js.map +1 -1
  15. package/dist/adaptercloud/pages/admin/AdminAnalyticsPage.js +33 -33
  16. package/dist/adaptercloud/pages/admin/AdminAnalyticsPage.js.map +1 -1
  17. package/dist/adaptercloud/pages/admin/AdminDashboard.js +32 -32
  18. package/dist/adaptercloud/pages/admin/AdminDashboard.js.map +1 -1
  19. package/dist/adaptercloud/pages/admin/AdminFinancialPage.js +11 -11
  20. package/dist/adaptercloud/pages/admin/AdminFinancialPage.js.map +1 -1
  21. package/dist/adaptercloud/pages/admin/AdminOrdersPage.js +11 -11
  22. package/dist/adaptercloud/pages/admin/AdminOrdersPage.js.map +1 -1
  23. package/dist/adaptercloud/pages/admin/AdminProfilePage.js +3 -3
  24. package/dist/adaptercloud/pages/admin/AdminProfilePage.js.map +1 -1
  25. package/dist/adaptercloud/pages/admin/AdminSettingsPage.js +1 -1
  26. package/dist/adaptercloud/pages/admin/AdminSettingsPage.js.map +1 -1
  27. package/dist/adaptercloud/pages/admin/CartManagementPage.js +28 -28
  28. package/dist/adaptercloud/pages/admin/CartManagementPage.js.map +1 -1
  29. package/dist/adaptercloud/pages/admin/UserManagementPage.js +25 -25
  30. package/dist/adaptercloud/pages/admin/UserManagementPage.js.map +1 -1
  31. package/dist/adaptercloud/pages/cart-owner/AnalyticsDashboard.js +19 -19
  32. package/dist/adaptercloud/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  33. package/dist/adaptercloud/pages/cart-owner/BusinessSettingsPage.js +7 -7
  34. package/dist/adaptercloud/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
  35. package/dist/adaptercloud/pages/cart-owner/CartOwnerDashboard.js +40 -37
  36. package/dist/adaptercloud/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  37. package/dist/adaptercloud/pages/cart-owner/CartOwnerProfilePage.js +21 -21
  38. package/dist/adaptercloud/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  39. package/dist/adaptercloud/pages/cart-owner/CartServiceConfigPage.js +24 -24
  40. package/dist/adaptercloud/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
  41. package/dist/adaptercloud/pages/cart-owner/InventoryManagementPage.js +20 -20
  42. package/dist/adaptercloud/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  43. package/dist/adaptercloud/pages/cart-owner/OrderManagementPage.js +36 -36
  44. package/dist/adaptercloud/pages/cart-owner/OrderManagementPage.js.map +1 -1
  45. package/dist/adaptercloud/pages/cart-owner/StaffManagementPage.js +25 -25
  46. package/dist/adaptercloud/pages/cart-owner/StaffManagementPage.js.map +1 -1
  47. package/dist/adaptercloud/pages/common/HelpSupportPage.js +43 -43
  48. package/dist/adaptercloud/pages/common/HelpSupportPage.js.map +1 -1
  49. package/dist/adaptercloud/pages/common/NotificationCenterPage.js +32 -31
  50. package/dist/adaptercloud/pages/common/NotificationCenterPage.js.map +1 -1
  51. package/dist/adaptercloud/pages/common/SettingsPage.js +8 -8
  52. package/dist/adaptercloud/pages/common/SettingsPage.js.map +1 -1
  53. package/dist/adaptercloud/pages/customer/BookingDetailsPage.js +22 -21
  54. package/dist/adaptercloud/pages/customer/BookingDetailsPage.js.map +1 -1
  55. package/dist/adaptercloud/pages/customer/CartDetailPage.js +18 -17
  56. package/dist/adaptercloud/pages/customer/CartDetailPage.js.map +1 -1
  57. package/dist/adaptercloud/pages/customer/CartDiscoveryPage.js +12 -11
  58. package/dist/adaptercloud/pages/customer/CartDiscoveryPage.js.map +1 -1
  59. package/dist/adaptercloud/pages/customer/CheckoutPage.js +9 -9
  60. package/dist/adaptercloud/pages/customer/CheckoutPage.js.map +1 -1
  61. package/dist/adaptercloud/pages/customer/CustomerDashboard.js +30 -30
  62. package/dist/adaptercloud/pages/customer/CustomerDashboard.js.map +1 -1
  63. package/dist/adaptercloud/pages/customer/CustomerProfilePage.js +19 -19
  64. package/dist/adaptercloud/pages/customer/CustomerProfilePage.js.map +1 -1
  65. package/dist/adaptercloud/pages/customer/DirectServiceBookingPage.js +24 -23
  66. package/dist/adaptercloud/pages/customer/DirectServiceBookingPage.js.map +1 -1
  67. package/dist/adaptercloud/pages/customer/FavoritesPage.js +9 -8
  68. package/dist/adaptercloud/pages/customer/FavoritesPage.js.map +1 -1
  69. package/dist/adaptercloud/pages/customer/OrderHistoryPage.js +4 -3
  70. package/dist/adaptercloud/pages/customer/OrderHistoryPage.js.map +1 -1
  71. package/dist/adaptercloud/pages/customer/OrderTrackingPage.js +15 -14
  72. package/dist/adaptercloud/pages/customer/OrderTrackingPage.js.map +1 -1
  73. package/dist/adaptercloud/pages/customer/PaymentMethodsPage.js +10 -9
  74. package/dist/adaptercloud/pages/customer/PaymentMethodsPage.js.map +1 -1
  75. package/dist/adaptercloud/pages/customer/ReviewsPage.js +18 -17
  76. package/dist/adaptercloud/pages/customer/ReviewsPage.js.map +1 -1
  77. package/dist/adaptercloud/pages/customer/SavedAddressesPage.js +14 -13
  78. package/dist/adaptercloud/pages/customer/SavedAddressesPage.js.map +1 -1
  79. package/dist/adaptercloud/pages/investor/InvestmentDetailsPage.js +32 -32
  80. package/dist/adaptercloud/pages/investor/InvestmentDetailsPage.js.map +1 -1
  81. package/dist/adaptercloud/pages/investor/InvestmentOpportunitiesPage.js +14 -13
  82. package/dist/adaptercloud/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  83. package/dist/adaptercloud/pages/investor/InvestorAnalyticsPage.js +27 -27
  84. package/dist/adaptercloud/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  85. package/dist/adaptercloud/pages/investor/InvestorDashboard.js +16 -16
  86. package/dist/adaptercloud/pages/investor/InvestorDashboard.js.map +1 -1
  87. package/dist/adaptercloud/pages/investor/InvestorInvestmentsPage.js +9 -8
  88. package/dist/adaptercloud/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  89. package/dist/adaptercloud/pages/investor/InvestorPortfolioPage.js +12 -12
  90. package/dist/adaptercloud/pages/investor/InvestorPortfolioPage.js.map +1 -1
  91. package/dist/adaptercloud/pages/investor/InvestorProfilePage.js +19 -19
  92. package/dist/adaptercloud/pages/investor/InvestorProfilePage.js.map +1 -1
  93. package/dist/adaptercloud/pages/worker/TaskDetailsPage.js +26 -25
  94. package/dist/adaptercloud/pages/worker/TaskDetailsPage.js.map +1 -1
  95. package/dist/adaptercloud/pages/worker/WorkerDashboard.js +43 -43
  96. package/dist/adaptercloud/pages/worker/WorkerDashboard.js.map +1 -1
  97. package/dist/adaptercloud/pages/worker/WorkerOrdersPage.js +37 -36
  98. package/dist/adaptercloud/pages/worker/WorkerOrdersPage.js.map +1 -1
  99. package/dist/adaptercloud/pages/worker/WorkerProfilePage.js +34 -34
  100. package/dist/adaptercloud/pages/worker/WorkerProfilePage.js.map +1 -1
  101. package/dist/adaptercloud/pages/worker/WorkerSchedulePage.js +27 -25
  102. package/dist/adaptercloud/pages/worker/WorkerSchedulePage.js.map +1 -1
  103. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"AdminAnalyticsPage.js","names":[],"sources":["../../../../src/adaptercloud/pages/admin/AdminAnalyticsPage.tsx"],"sourcesContent":["/**\n * Admin Analytics Page\n * @module adaptercloud/pages/admin\n *\n * Full-featured analytics with 4 tabs (Overview/Revenue/Users/Performance),\n * time period filter, order status distribution, top performing carts,\n * revenue by city, user role distribution, growth insights, financial\n * performance, and today's performance metrics.\n */\n\nimport { useState, useEffect } from 'react';\nimport {\n Users,\n TrendingUp,\n TrendingDown,\n ShoppingBag,\n IndianRupee,\n BarChart3,\n Zap,\n Loader2,\n Star,\n Award,\n MapPin,\n Clock,\n Timer,\n} from 'lucide-react';\nimport { PageLayout } from '../../components/PageLayout';\nimport { MetricsCard } from '../../components/MetricsCard';\nimport { useAdapterCloud } from '../../context/AdapterCloudContext';\nimport { cn } from '../../utils/cn';\nimport { formatCurrency } from '../../utils/formatters';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\ninterface AnalyticsData {\n revenue: { total: number; growth: number; thisMonth: number; lastMonth: number };\n orders: {\n total: number;\n growth: number;\n pending: number;\n completed: number;\n cancelled: number;\n averageOrderValue: number;\n ordersToday: number;\n };\n users: {\n total: number;\n growth: number;\n active: number;\n newThisMonth: number;\n customers: number;\n cartOwners: number;\n workers: number;\n investors: number;\n };\n carts: {\n total: number;\n active: number;\n pending: number;\n topPerforming: Array<{\n id: string;\n name: string;\n revenue: number;\n orders: number;\n rating: number;\n }>;\n };\n performance: {\n averageDeliveryTime: number;\n customerSatisfaction: number;\n platformFee: number;\n operatingCosts: number;\n netProfit: number;\n };\n geography: { topCities: Array<{ city: string; orders: number; revenue: number }> };\n}\n\ntype TimePeriod = 'today' | 'week' | 'month' | 'quarter' | 'year';\ntype TabKey = 'overview' | 'revenue' | 'users' | 'performance';\n\n/* ------------------------------------------------------------------ */\n/* Component */\n/* ------------------------------------------------------------------ */\n\nexport function AdminAnalyticsPage() {\n const { currentUser } = useAdapterCloud();\n\n const [analytics, setAnalytics] = useState<AnalyticsData | null>(null);\n const [loading, setLoading] = useState(true);\n const [selectedPeriod, setSelectedPeriod] = useState<TimePeriod>('month');\n const [activeTab, setActiveTab] = useState<TabKey>('overview');\n\n useEffect(() => {\n setLoading(true);\n const timer = setTimeout(() => {\n setAnalytics({\n revenue: { total: 12500000, growth: 15.2, thisMonth: 2100000, lastMonth: 1850000 },\n orders: {\n total: 45230,\n growth: 8.7,\n pending: 156,\n completed: 44890,\n cancelled: 184,\n averageOrderValue: 276,\n ordersToday: 89,\n },\n users: {\n total: 12450,\n growth: 12.3,\n active: 9870,\n newThisMonth: 456,\n customers: 9850,\n cartOwners: 1240,\n workers: 890,\n investors: 470,\n },\n carts: {\n total: 1240,\n active: 1156,\n pending: 84,\n topPerforming: [\n { id: 'c1', name: 'South Indian Express', revenue: 285000, orders: 1250, rating: 4.8 },\n { id: 'c2', name: 'Mumbai Street Chaat', revenue: 245000, orders: 980, rating: 4.7 },\n { id: 'c3', name: 'Delhi Paratha Corner', revenue: 198000, orders: 876, rating: 4.6 },\n { id: 'c4', name: 'Bangalore Dosa House', revenue: 176000, orders: 743, rating: 4.9 },\n { id: 'c5', name: 'Kolkata Fish Fry', revenue: 154000, orders: 632, rating: 4.5 },\n ],\n },\n performance: {\n averageDeliveryTime: 28,\n customerSatisfaction: 4.6,\n platformFee: 8.5,\n operatingCosts: 2100000,\n netProfit: 850000,\n },\n geography: {\n topCities: [\n { city: 'Bangalore', orders: 15670, revenue: 4250000 },\n { city: 'Mumbai', orders: 12340, revenue: 3890000 },\n { city: 'Delhi', orders: 9870, revenue: 2980000 },\n { city: 'Hyderabad', orders: 7650, revenue: 2140000 },\n { city: 'Chennai', orders: 6540, revenue: 1890000 },\n ],\n },\n });\n setLoading(false);\n }, 800);\n return () => clearTimeout(timer);\n }, [selectedPeriod]);\n\n const fmtCur = (amount: number) => {\n if (amount >= 10000000) return `₹${(amount / 10000000).toFixed(1)}Cr`;\n if (amount >= 100000) return `₹${(amount / 100000).toFixed(1)}L`;\n return formatCurrency(amount, { minimumFractionDigits: 0 });\n };\n\n const fmtGrowth = (growth: number) => {\n const isPositive = growth >= 0;\n return (\n <span\n className={cn(\n 'flex items-center gap-1 text-sm font-medium',\n isPositive ? 'text-green-600 dark:text-green-400' : 'text-red-600 dark:text-red-400'\n )}\n >\n {isPositive ? (\n <TrendingUp className=\"h-3.5 w-3.5\" />\n ) : (\n <TrendingDown className=\"h-3.5 w-3.5\" />\n )}\n {Math.abs(growth).toFixed(1)}%\n </span>\n );\n };\n\n const medalIcon = (index: number) => {\n if (index === 0) return <Award className=\"h-5 w-5 text-yellow-500\" />;\n if (index === 1) return <Award className=\"h-5 w-5 text-gray-400\" />;\n if (index === 2) return <Award className=\"h-5 w-5 text-amber-700\" />;\n return <BarChart3 className=\"h-5 w-5 text-text-secondary\" />;\n };\n\n if (loading || !analytics) {\n return (\n <PageLayout title=\"Platform Analytics\" description=\"Loading analytics...\">\n <div className=\"flex flex-col items-center justify-center py-20\">\n <Loader2 className=\"h-10 w-10 animate-spin text-text-secondary mb-4\" />\n <p className=\"text-text-secondary\">Loading analytics...</p>\n </div>\n </PageLayout>\n );\n }\n\n const tabs: Array<{ key: TabKey; label: string; icon: typeof BarChart3 }> = [\n { key: 'overview', label: 'Overview', icon: BarChart3 },\n { key: 'revenue', label: 'Revenue', icon: IndianRupee },\n { key: 'users', label: 'Users', icon: Users },\n { key: 'performance', label: 'Performance', icon: Zap },\n ];\n\n return (\n <PageLayout title=\"Platform Analytics\" description=\"Comprehensive platform metrics and trends\">\n {/* Time Period Filter */}\n <div className=\"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 mb-6\">\n <select\n value={selectedPeriod}\n onChange={(e) => setSelectedPeriod(e.target.value as TimePeriod)}\n className=\"rounded-lg border border-border-subtle bg-bg-surface py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)] w-fit\"\n >\n <option value=\"today\">Today</option>\n <option value=\"week\">This Week</option>\n <option value=\"month\">This Month</option>\n <option value=\"quarter\">This Quarter</option>\n <option value=\"year\">This Year</option>\n </select>\n <span className=\"text-sm text-text-secondary\">\n Last updated: {new Date().toLocaleString('en-IN')}\n </span>\n </div>\n\n {/* Key Metrics */}\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4 mb-8\">\n <MetricsCard\n icon={<IndianRupee className=\"h-5 w-5\" />}\n value={fmtCur(analytics.revenue.total)}\n label=\"Total Revenue\"\n trend=\"up\"\n trendValue={`+${analytics.revenue.growth}%`}\n />\n <MetricsCard\n icon={<ShoppingBag className=\"h-5 w-5\" />}\n value={analytics.orders.total.toLocaleString('en-IN')}\n label=\"Total Orders\"\n trend=\"up\"\n trendValue={`+${analytics.orders.growth}%`}\n />\n <MetricsCard\n icon={<Users className=\"h-5 w-5\" />}\n value={analytics.users.active.toLocaleString('en-IN')}\n label=\"Active Users\"\n trend=\"up\"\n trendValue={`+${analytics.users.growth}%`}\n />\n <MetricsCard\n icon={<BarChart3 className=\"h-5 w-5\" />}\n value={analytics.carts.active.toLocaleString('en-IN')}\n label=\"Active Carts\"\n trendValue={`${analytics.carts.pending} pending`}\n />\n </div>\n\n {/* Tabs */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface mb-8\">\n <div className=\"border-b border-border-subtle\">\n <nav className=\"flex -mb-px overflow-x-auto\">\n {tabs.map((tab) => {\n const TabIcon = tab.icon;\n return (\n <button\n key={tab.key}\n type=\"button\"\n onClick={() => setActiveTab(tab.key)}\n className={cn(\n 'flex items-center gap-2 py-3 px-4 sm:px-6 text-sm font-medium whitespace-nowrap border-b-2 transition-colors',\n activeTab === tab.key\n ? 'border-primary text-primary'\n : 'border-transparent text-text-secondary hover:text-text-primary'\n )}\n >\n <TabIcon className=\"h-4 w-4\" />\n <span className=\"hidden sm:inline\">{tab.label}</span>\n </button>\n );\n })}\n </nav>\n </div>\n\n <div className=\"p-4 sm:p-6\">\n {/* Overview Tab */}\n {activeTab === 'overview' && (\n <div className=\"space-y-8\">\n <div>\n <h3 className=\"text-lg font-semibold text-text-primary mb-4\">\n Order Status Distribution\n </h3>\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-4\">\n <div className=\"rounded-lg border border-green-500/30 bg-green-500/10 p-4\">\n <p className=\"text-sm text-green-600 dark:text-green-400\">Completed Orders</p>\n <p className=\"text-2xl font-bold text-green-700 dark:text-green-300\">\n {analytics.orders.completed.toLocaleString('en-IN')}\n </p>\n <p className=\"text-sm text-green-600/80 dark:text-green-400/80\">\n {((analytics.orders.completed / analytics.orders.total) * 100).toFixed(1)}% of\n total\n </p>\n </div>\n <div className=\"rounded-lg border border-yellow-500/30 bg-yellow-500/10 p-4\">\n <p className=\"text-sm text-yellow-600 dark:text-yellow-400\">Pending Orders</p>\n <p className=\"text-2xl font-bold text-yellow-700 dark:text-yellow-300\">\n {analytics.orders.pending.toLocaleString('en-IN')}\n </p>\n <p className=\"text-sm text-yellow-600/80 dark:text-yellow-400/80\">\n {((analytics.orders.pending / analytics.orders.total) * 100).toFixed(1)}% of\n total\n </p>\n </div>\n <div className=\"rounded-lg border border-red-500/30 bg-red-500/10 p-4\">\n <p className=\"text-sm text-red-600 dark:text-red-400\">Cancelled Orders</p>\n <p className=\"text-2xl font-bold text-red-700 dark:text-red-300\">\n {analytics.orders.cancelled.toLocaleString('en-IN')}\n </p>\n <p className=\"text-sm text-red-600/80 dark:text-red-400/80\">\n {((analytics.orders.cancelled / analytics.orders.total) * 100).toFixed(1)}% of\n total\n </p>\n </div>\n </div>\n </div>\n\n <div>\n <h3 className=\"text-lg font-semibold text-text-primary mb-4\">Top Performing Carts</h3>\n <div className=\"rounded-lg border border-border-subtle overflow-hidden\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b border-border-subtle bg-bg-sunken/50\">\n <th className=\"px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase\">\n Cart Name\n </th>\n <th className=\"px-4 py-3 text-right text-xs font-medium text-text-secondary uppercase\">\n Revenue\n </th>\n <th className=\"px-4 py-3 text-right text-xs font-medium text-text-secondary uppercase\">\n Orders\n </th>\n <th className=\"px-4 py-3 text-right text-xs font-medium text-text-secondary uppercase\">\n Rating\n </th>\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {analytics.carts.topPerforming.map((cart, i) => (\n <tr key={cart.id} className=\"hover:bg-accent/50 transition-colors\">\n <td className=\"px-4 py-3\">\n <div className=\"flex items-center gap-2\">\n {medalIcon(i)}\n <span className=\"text-sm font-medium text-text-primary\">\n {cart.name}\n </span>\n </div>\n </td>\n <td className=\"px-4 py-3 text-sm text-right font-medium text-text-primary\">\n {fmtCur(cart.revenue)}\n </td>\n <td className=\"px-4 py-3 text-sm text-right text-text-primary\">\n {cart.orders.toLocaleString('en-IN')}\n </td>\n <td className=\"px-4 py-3 text-sm text-right text-text-primary\">\n <span className=\"flex items-center justify-end gap-1\">\n <Star className=\"h-3.5 w-3.5 fill-yellow-400 text-yellow-400\" />\n {cart.rating}\n </span>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n </div>\n )}\n\n {/* Revenue Tab */}\n {activeTab === 'revenue' && (\n <div className=\"space-y-8\">\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n <div className=\"rounded-lg border border-blue-500/30 bg-blue-500/10 p-6\">\n <h4 className=\"text-sm font-medium text-blue-600 dark:text-blue-400 mb-2\">\n This Month\n </h4>\n <p className=\"text-2xl font-bold text-blue-700 dark:text-blue-300\">\n {fmtCur(analytics.revenue.thisMonth)}\n </p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-sunken/30 p-6\">\n <h4 className=\"text-sm font-medium text-text-secondary mb-2\">Last Month</h4>\n <p className=\"text-2xl font-bold text-text-primary\">\n {fmtCur(analytics.revenue.lastMonth)}\n </p>\n </div>\n <div className=\"rounded-lg border border-green-500/30 bg-green-500/10 p-6\">\n <h4 className=\"text-sm font-medium text-green-600 dark:text-green-400 mb-2\">\n Average Order Value\n </h4>\n <p className=\"text-2xl font-bold text-green-700 dark:text-green-300\">\n ₹{analytics.orders.averageOrderValue}\n </p>\n </div>\n </div>\n\n <div>\n <h3 className=\"text-lg font-semibold text-text-primary mb-4\">Revenue by City</h3>\n <div className=\"space-y-3\">\n {analytics.geography.topCities.map((city, i) => (\n <div\n key={city.city}\n className=\"flex items-center justify-between p-4 rounded-lg border border-border-subtle bg-bg-sunken/30\"\n >\n <div className=\"flex items-center gap-3\">\n {medalIcon(i)}\n <div>\n <p className=\"font-medium text-text-primary\">{city.city}</p>\n <p className=\"text-sm text-text-secondary\">\n {city.orders.toLocaleString('en-IN')} orders\n </p>\n </div>\n </div>\n <div className=\"text-right\">\n <p className=\"font-bold text-text-primary\">{fmtCur(city.revenue)}</p>\n <p className=\"text-sm text-text-secondary\">\n {((city.revenue / analytics.revenue.total) * 100).toFixed(1)}%\n </p>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n )}\n\n {/* Users Tab */}\n {activeTab === 'users' && (\n <div className=\"space-y-8\">\n <div className=\"grid grid-cols-1 md:grid-cols-4 gap-4\">\n {[\n { label: 'Customers', value: analytics.users.customers, color: 'blue' },\n { label: 'Cart Owners', value: analytics.users.cartOwners, color: 'green' },\n { label: 'Workers', value: analytics.users.workers, color: 'yellow' },\n { label: 'Investors', value: analytics.users.investors, color: 'purple' },\n ].map((item) => (\n <div\n key={item.label}\n className={cn(\n 'rounded-lg border p-4',\n `border-${item.color}-500/30 bg-${item.color}-500/10`\n )}\n >\n <h4\n className={cn(\n 'text-sm font-medium',\n `text-${item.color}-600 dark:text-${item.color}-400`\n )}\n >\n {item.label}\n </h4>\n <p\n className={cn(\n 'text-2xl font-bold',\n `text-${item.color}-700 dark:text-${item.color}-300`\n )}\n >\n {item.value.toLocaleString('en-IN')}\n </p>\n <p\n className={cn(\n 'text-sm',\n `text-${item.color}-600/80 dark:text-${item.color}-400/80`\n )}\n >\n {((item.value / analytics.users.total) * 100).toFixed(1)}%\n </p>\n </div>\n ))}\n </div>\n\n <div className=\"rounded-lg border border-border-subtle bg-bg-sunken/20 p-6\">\n <h3 className=\"text-lg font-semibold text-text-primary mb-4\">User Growth Insights</h3>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <div>\n <p className=\"text-sm text-text-secondary mb-2\">New Users This Month</p>\n <p className=\"text-3xl font-bold text-blue-600 dark:text-blue-400\">\n {analytics.users.newThisMonth}\n </p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary mb-2\">Active Users Rate</p>\n <p className=\"text-3xl font-bold text-green-600 dark:text-green-400\">\n {((analytics.users.active / analytics.users.total) * 100).toFixed(1)}%\n </p>\n </div>\n </div>\n </div>\n </div>\n )}\n\n {/* Performance Tab */}\n {activeTab === 'performance' && (\n <div className=\"space-y-8\">\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6\">\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-6\">\n <div className=\"flex items-center gap-2 mb-2\">\n <Timer className=\"h-4 w-4 text-text-secondary\" />\n <h4 className=\"text-sm font-medium text-text-secondary\">Avg Delivery Time</h4>\n </div>\n <p className=\"text-3xl font-bold text-text-primary\">\n {analytics.performance.averageDeliveryTime} min\n </p>\n <p className=\"text-sm text-text-secondary mt-1\">Target: &lt; 30 min</p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-6\">\n <div className=\"flex items-center gap-2 mb-2\">\n <Star className=\"h-4 w-4 text-text-secondary\" />\n <h4 className=\"text-sm font-medium text-text-secondary\">\n Customer Satisfaction\n </h4>\n </div>\n <p className=\"text-3xl font-bold text-text-primary flex items-center gap-1\">\n <Star className=\"h-6 w-6 fill-yellow-400 text-yellow-400\" />\n {analytics.performance.customerSatisfaction}\n </p>\n <p className=\"text-sm text-text-secondary mt-1\">Based on ratings</p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-6\">\n <div className=\"flex items-center gap-2 mb-2\">\n <IndianRupee className=\"h-4 w-4 text-text-secondary\" />\n <h4 className=\"text-sm font-medium text-text-secondary\">Platform Fee</h4>\n </div>\n <p className=\"text-3xl font-bold text-text-primary\">\n {analytics.performance.platformFee}%\n </p>\n <p className=\"text-sm text-text-secondary mt-1\">Per transaction</p>\n </div>\n </div>\n\n <div className=\"rounded-lg border border-border-subtle bg-bg-sunken/20 p-6\">\n <h3 className=\"text-lg font-semibold text-text-primary mb-4\">\n Financial Performance\n </h3>\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6\">\n <div>\n <p className=\"text-sm text-text-secondary mb-2\">Operating Costs</p>\n <p className=\"text-2xl font-bold text-red-600 dark:text-red-400\">\n {fmtCur(analytics.performance.operatingCosts)}\n </p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary mb-2\">Total Revenue</p>\n <p className=\"text-2xl font-bold text-blue-600 dark:text-blue-400\">\n {fmtCur(analytics.revenue.total)}\n </p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary mb-2\">Net Profit</p>\n <p className=\"text-2xl font-bold text-green-600 dark:text-green-400\">\n {fmtCur(analytics.performance.netProfit)}\n </p>\n </div>\n </div>\n <div className=\"mt-4 rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <p className=\"text-sm text-text-secondary\">Profit Margin</p>\n <p className=\"text-xl font-bold text-text-primary\">\n {((analytics.performance.netProfit / analytics.revenue.total) * 100).toFixed(1)}\n %\n </p>\n </div>\n </div>\n\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-6\">\n <h3 className=\"text-lg font-semibold text-text-primary mb-4\">\n Today&apos;s Performance\n </h3>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <div>\n <p className=\"text-sm text-text-secondary mb-2\">Orders Today</p>\n <p className=\"text-3xl font-bold text-blue-600 dark:text-blue-400\">\n {analytics.orders.ordersToday}\n </p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary mb-2\">Estimated Revenue</p>\n <p className=\"text-3xl font-bold text-green-600 dark:text-green-400\">\n {fmtCur(analytics.orders.ordersToday * analytics.orders.averageOrderValue)}\n </p>\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AdminAnalyticsPage.js","names":[],"sources":["../../../../src/adaptercloud/pages/admin/AdminAnalyticsPage.tsx"],"sourcesContent":["/**\n * Admin Analytics Page\n * @module adaptercloud/pages/admin\n *\n * Full-featured analytics with 4 tabs (Overview/Revenue/Users/Performance),\n * time period filter, order status distribution, top performing carts,\n * revenue by city, user role distribution, growth insights, financial\n * performance, and today's performance metrics.\n */\n\nimport { useState, useEffect } from'react';\nimport {\n Users,\n TrendingUp,\n TrendingDown,\n ShoppingBag,\n IndianRupee,\n BarChart3,\n Zap,\n Loader2,\n Star,\n Award,\n MapPin,\n Clock,\n Timer,\n} from'lucide-react';\nimport { PageLayout } from'../../components/PageLayout';\nimport { MetricsCard } from'../../components/MetricsCard';\nimport { useAdapterCloud } from'../../context/AdapterCloudContext';\nimport { cn } from'../../utils/cn';\nimport { formatCurrency } from'../../utils/formatters';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\ninterface AnalyticsData {\n revenue: { total: number; growth: number; thisMonth: number; lastMonth: number };\n orders: {\n total: number;\n growth: number;\n pending: number;\n completed: number;\n cancelled: number;\n averageOrderValue: number;\n ordersToday: number;\n };\n users: {\n total: number;\n growth: number;\n active: number;\n newThisMonth: number;\n customers: number;\n cartOwners: number;\n workers: number;\n investors: number;\n };\n carts: {\n total: number;\n active: number;\n pending: number;\n topPerforming: Array<{\n id: string;\n name: string;\n revenue: number;\n orders: number;\n rating: number;\n }>;\n };\n performance: {\n averageDeliveryTime: number;\n customerSatisfaction: number;\n platformFee: number;\n operatingCosts: number;\n netProfit: number;\n };\n geography: { topCities: Array<{ city: string; orders: number; revenue: number }> };\n}\n\ntype TimePeriod = 'today' | 'week' | 'month' | 'quarter' | 'year';\ntype TabKey = 'overview' | 'revenue' | 'users' | 'performance';\n\n/* ------------------------------------------------------------------ */\n/* Component */\n/* ------------------------------------------------------------------ */\n\nexport function AdminAnalyticsPage() {\n const { currentUser } = useAdapterCloud();\n\n const [analytics, setAnalytics] = useState<AnalyticsData | null>(null);\n const [loading, setLoading] = useState(true);\n const [selectedPeriod, setSelectedPeriod] = useState<TimePeriod>('month');\n const [activeTab, setActiveTab] = useState<TabKey>('overview');\n\n useEffect(() => {\n setLoading(true);\n const timer = setTimeout(() => {\n setAnalytics({\n revenue: { total: 12500000, growth: 15.2, thisMonth: 2100000, lastMonth: 1850000 },\n orders: {\n total: 45230,\n growth: 8.7,\n pending: 156,\n completed: 44890,\n cancelled: 184,\n averageOrderValue: 276,\n ordersToday: 89,\n },\n users: {\n total: 12450,\n growth: 12.3,\n active: 9870,\n newThisMonth: 456,\n customers: 9850,\n cartOwners: 1240,\n workers: 890,\n investors: 470,\n },\n carts: {\n total: 1240,\n active: 1156,\n pending: 84,\n topPerforming: [\n { id: 'c1', name: 'South Indian Express', revenue: 285000, orders: 1250, rating: 4.8 },\n { id: 'c2', name: 'Mumbai Street Chaat', revenue: 245000, orders: 980, rating: 4.7 },\n { id: 'c3', name: 'Delhi Paratha Corner', revenue: 198000, orders: 876, rating: 4.6 },\n { id: 'c4', name: 'Bangalore Dosa House', revenue: 176000, orders: 743, rating: 4.9 },\n { id: 'c5', name: 'Kolkata Fish Fry', revenue: 154000, orders: 632, rating: 4.5 },\n ],\n },\n performance: {\n averageDeliveryTime: 28,\n customerSatisfaction: 4.6,\n platformFee: 8.5,\n operatingCosts: 2100000,\n netProfit: 850000,\n },\n geography: {\n topCities: [\n { city: 'Bangalore', orders: 15670, revenue: 4250000 },\n { city: 'Mumbai', orders: 12340, revenue: 3890000 },\n { city: 'Delhi', orders: 9870, revenue: 2980000 },\n { city: 'Hyderabad', orders: 7650, revenue: 2140000 },\n { city: 'Chennai', orders: 6540, revenue: 1890000 },\n ],\n },\n });\n setLoading(false);\n }, 800);\n return () => clearTimeout(timer);\n }, [selectedPeriod]);\n\n const fmtCur = (amount: number) => {\n if (amount >= 10000000) return`₹${(amount / 10000000).toFixed(1)}Cr`;\n if (amount >= 100000) return`₹${(amount / 100000).toFixed(1)}L`;\n return formatCurrency(amount, { minimumFractionDigits: 0 });\n };\n\n const fmtGrowth = (growth: number) => {\n const isPositive = growth >= 0;\n return (\n <span\n className={cn(\n 'flex items-center gap-1 text-sm font-medium',\n isPositive ? 'text-status-success-text' : 'text-status-error-text'\n )}\n >\n {isPositive ? (\n <TrendingUp className=\"h-3.5 w-3.5\" />\n ) : (\n <TrendingDown className=\"h-3.5 w-3.5\" />\n )}\n {Math.abs(growth).toFixed(1)}%\n </span>\n );\n };\n\n const medalIcon = (index: number) => {\n if (index === 0) return <Award className=\"h-5 w-5 text-status-warning-text\" />;\n if (index === 1) return <Award className=\"h-5 w-5 text-text-secondary\" />;\n if (index === 2) return <Award className=\"h-5 w-5 text-status-warning-text\" />;\n return <BarChart3 className=\"h-5 w-5 text-text-secondary\" />;\n };\n\n if (loading || !analytics) {\n return (\n <PageLayout title=\"Platform Analytics\" description=\"Loading analytics...\">\n <div className=\"flex flex-col items-center justify-center py-20\">\n <Loader2 className=\"h-10 w-10 animate-spin text-text-secondary mb-4\" />\n <p className=\"text-text-secondary\">Loading analytics...</p>\n </div>\n </PageLayout>\n );\n }\n\n const tabs: Array<{ key: TabKey; label: string; icon: typeof BarChart3 }> = [\n { key: 'overview', label: 'Overview', icon: BarChart3 },\n { key: 'revenue', label: 'Revenue', icon: IndianRupee },\n { key: 'users', label: 'Users', icon: Users },\n { key: 'performance', label: 'Performance', icon: Zap },\n ];\n\n return (\n <PageLayout title=\"Platform Analytics\" description=\"Comprehensive platform metrics and trends\">\n {/* Time Period Filter */}\n <div className=\"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 mb-6\">\n <select\n value={selectedPeriod}\n onChange={(e) => setSelectedPeriod(e.target.value as TimePeriod)}\n className=\"rounded-lg border border-border-subtle bg-bg-surface py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)] w-fit\"\n >\n <option value=\"today\">Today</option>\n <option value=\"week\">This Week</option>\n <option value=\"month\">This Month</option>\n <option value=\"quarter\">This Quarter</option>\n <option value=\"year\">This Year</option>\n </select>\n <span className=\"text-sm text-text-secondary\">\n Last updated: {new Date().toLocaleString('en-IN')}\n </span>\n </div>\n\n {/* Key Metrics */}\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4 mb-8\">\n <MetricsCard\n icon={<IndianRupee className=\"h-5 w-5\" />}\n value={fmtCur(analytics.revenue.total)}\n label=\"Total Revenue\"\n trend=\"up\"\n trendValue={`+${analytics.revenue.growth}%`}\n />\n <MetricsCard\n icon={<ShoppingBag className=\"h-5 w-5\" />}\n value={analytics.orders.total.toLocaleString('en-IN')}\n label=\"Total Orders\"\n trend=\"up\"\n trendValue={`+${analytics.orders.growth}%`}\n />\n <MetricsCard\n icon={<Users className=\"h-5 w-5\" />}\n value={analytics.users.active.toLocaleString('en-IN')}\n label=\"Active Users\"\n trend=\"up\"\n trendValue={`+${analytics.users.growth}%`}\n />\n <MetricsCard\n icon={<BarChart3 className=\"h-5 w-5\" />}\n value={analytics.carts.active.toLocaleString('en-IN')}\n label=\"Active Carts\"\n trendValue={`${analytics.carts.pending} pending`}\n />\n </div>\n\n {/* Tabs */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface mb-8\">\n <div className=\"border-b border-border-subtle\">\n <nav className=\"flex -mb-px overflow-x-auto\">\n {tabs.map((tab) => {\n const TabIcon = tab.icon;\n return (\n <button\n key={tab.key}\n type=\"button\"\n onClick={() => setActiveTab(tab.key)}\n className={cn(\n 'flex items-center gap-2 py-3 px-4 sm:px-6 text-sm font-medium whitespace-nowrap border-b-2 transition-colors',\n activeTab === tab.key\n ? 'border-primary text-primary'\n : 'border-transparent text-text-secondary hover:text-text-primary'\n )}\n >\n <TabIcon className=\"h-4 w-4\" />\n <span className=\"hidden sm:inline\">{tab.label}</span>\n </button>\n );\n })}\n </nav>\n </div>\n\n <div className=\"p-4 sm:p-6\">\n {/* Overview Tab */}\n {activeTab === 'overview' && (\n <div className=\"space-y-8\">\n <div>\n <h3 className=\"text-lg font-semibold text-text-primary mb-4\">\n Order Status Distribution\n </h3>\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-4\">\n <div className=\"rounded-lg border border-status-success-border/30 bg-status-success-bg-subtle/10 p-4\">\n <p className=\"text-sm text-status-success-text\">Completed Orders</p>\n <p className=\"text-2xl font-bold text-status-success-text\">\n {analytics.orders.completed.toLocaleString('en-IN')}\n </p>\n <p className=\"text-sm text-status-success-text\">\n {((analytics.orders.completed / analytics.orders.total) * 100).toFixed(1)}% of\n total\n </p>\n </div>\n <div className=\"rounded-lg border border-status-warning-border/30 bg-status-warning-bg-subtle/10 p-4\">\n <p className=\"text-sm text-status-warning-text\">Pending Orders</p>\n <p className=\"text-2xl font-bold text-status-warning-text\">\n {analytics.orders.pending.toLocaleString('en-IN')}\n </p>\n <p className=\"text-sm text-status-warning-text\">\n {((analytics.orders.pending / analytics.orders.total) * 100).toFixed(1)}% of\n total\n </p>\n </div>\n <div className=\"rounded-lg border border-status-error-border/30 bg-status-error-bg-subtle/10 p-4\">\n <p className=\"text-sm text-status-error-text\">Cancelled Orders</p>\n <p className=\"text-2xl font-bold text-status-error-text\">\n {analytics.orders.cancelled.toLocaleString('en-IN')}\n </p>\n <p className=\"text-sm text-status-error-text\">\n {((analytics.orders.cancelled / analytics.orders.total) * 100).toFixed(1)}% of\n total\n </p>\n </div>\n </div>\n </div>\n\n <div>\n <h3 className=\"text-lg font-semibold text-text-primary mb-4\">Top Performing Carts</h3>\n <div className=\"rounded-lg border border-border-subtle overflow-hidden\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b border-border-subtle bg-bg-sunken/50\">\n <th className=\"px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase\">\n Cart Name\n </th>\n <th className=\"px-4 py-3 text-right text-xs font-medium text-text-secondary uppercase\">\n Revenue\n </th>\n <th className=\"px-4 py-3 text-right text-xs font-medium text-text-secondary uppercase\">\n Orders\n </th>\n <th className=\"px-4 py-3 text-right text-xs font-medium text-text-secondary uppercase\">\n Rating\n </th>\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {analytics.carts.topPerforming.map((cart, i) => (\n <tr key={cart.id} className=\"hover:bg-accent/50 transition-colors\">\n <td className=\"px-4 py-3\">\n <div className=\"flex items-center gap-2\">\n {medalIcon(i)}\n <span className=\"text-sm font-medium text-text-primary\">\n {cart.name}\n </span>\n </div>\n </td>\n <td className=\"px-4 py-3 text-sm text-right font-medium text-text-primary\">\n {fmtCur(cart.revenue)}\n </td>\n <td className=\"px-4 py-3 text-sm text-right text-text-primary\">\n {cart.orders.toLocaleString('en-IN')}\n </td>\n <td className=\"px-4 py-3 text-sm text-right text-text-primary\">\n <span className=\"flex items-center justify-end gap-1\">\n <Star className=\"h-3.5 w-3.5 fill-status-warning-text text-status-warning-text\" />\n {cart.rating}\n </span>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n </div>\n )}\n\n {/* Revenue Tab */}\n {activeTab === 'revenue' && (\n <div className=\"space-y-8\">\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n <div className=\"rounded-lg border border-accent-blue-subtle/30 bg-accent-blue-subtle/10 p-6\">\n <h4 className=\"text-sm font-medium text-accent-blue mb-2\">\n This Month\n </h4>\n <p className=\"text-2xl font-bold text-accent-blue\">\n {fmtCur(analytics.revenue.thisMonth)}\n </p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-sunken/30 p-6\">\n <h4 className=\"text-sm font-medium text-text-secondary mb-2\">Last Month</h4>\n <p className=\"text-2xl font-bold text-text-primary\">\n {fmtCur(analytics.revenue.lastMonth)}\n </p>\n </div>\n <div className=\"rounded-lg border border-status-success-border/30 bg-status-success-bg-subtle/10 p-6\">\n <h4 className=\"text-sm font-medium text-status-success-text mb-2\">\n Average Order Value\n </h4>\n <p className=\"text-2xl font-bold text-status-success-text\">\n ₹{analytics.orders.averageOrderValue}\n </p>\n </div>\n </div>\n\n <div>\n <h3 className=\"text-lg font-semibold text-text-primary mb-4\">Revenue by City</h3>\n <div className=\"space-y-3\">\n {analytics.geography.topCities.map((city, i) => (\n <div\n key={city.city}\n className=\"flex items-center justify-between p-4 rounded-lg border border-border-subtle bg-bg-sunken/30\"\n >\n <div className=\"flex items-center gap-3\">\n {medalIcon(i)}\n <div>\n <p className=\"font-medium text-text-primary\">{city.city}</p>\n <p className=\"text-sm text-text-secondary\">\n {city.orders.toLocaleString('en-IN')} orders\n </p>\n </div>\n </div>\n <div className=\"text-right\">\n <p className=\"font-bold text-text-primary\">{fmtCur(city.revenue)}</p>\n <p className=\"text-sm text-text-secondary\">\n {((city.revenue / analytics.revenue.total) * 100).toFixed(1)}%\n </p>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n )}\n\n {/* Users Tab */}\n {activeTab === 'users' && (\n <div className=\"space-y-8\">\n <div className=\"grid grid-cols-1 md:grid-cols-4 gap-4\">\n {[\n { label: 'Customers', value: analytics.users.customers, color: 'blue' },\n { label: 'Cart Owners', value: analytics.users.cartOwners, color: 'green' },\n { label: 'Workers', value: analytics.users.workers, color: 'yellow' },\n { label: 'Investors', value: analytics.users.investors, color: 'purple' },\n ].map((item) => (\n <div\n key={item.label}\n className={cn(\n 'rounded-lg border p-4',\n `border-${item.color}-500/30 bg-${item.color}-500/10`\n )}\n >\n <h4\n className={cn(\n 'text-sm font-medium',\n `text-${item.color}-600 dark:text-${item.color}-400`\n )}\n >\n {item.label}\n </h4>\n <p\n className={cn(\n 'text-2xl font-bold',\n `text-${item.color}-700 dark:text-${item.color}-300`\n )}\n >\n {item.value.toLocaleString('en-IN')}\n </p>\n <p\n className={cn(\n 'text-sm',\n `text-${item.color}-600/80 dark:text-${item.color}-400/80`\n )}\n >\n {((item.value / analytics.users.total) * 100).toFixed(1)}%\n </p>\n </div>\n ))}\n </div>\n\n <div className=\"rounded-lg border border-border-subtle bg-bg-sunken/20 p-6\">\n <h3 className=\"text-lg font-semibold text-text-primary mb-4\">User Growth Insights</h3>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <div>\n <p className=\"text-sm text-text-secondary mb-2\">New Users This Month</p>\n <p className=\"text-3xl font-bold text-accent-blue\">\n {analytics.users.newThisMonth}\n </p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary mb-2\">Active Users Rate</p>\n <p className=\"text-3xl font-bold text-status-success-text\">\n {((analytics.users.active / analytics.users.total) * 100).toFixed(1)}%\n </p>\n </div>\n </div>\n </div>\n </div>\n )}\n\n {/* Performance Tab */}\n {activeTab === 'performance' && (\n <div className=\"space-y-8\">\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6\">\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-6 bg-gloss-card shadow-pop\">\n <div className=\"flex items-center gap-2 mb-2\">\n <Timer className=\"h-4 w-4 text-text-secondary\" />\n <h4 className=\"text-sm font-medium text-text-secondary\">Avg Delivery Time</h4>\n </div>\n <p className=\"text-3xl font-bold text-text-primary\">\n {analytics.performance.averageDeliveryTime} min\n </p>\n <p className=\"text-sm text-text-secondary mt-1\">Target: &lt; 30 min</p>\n </div>\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-6 bg-gloss-card shadow-pop\">\n <div className=\"flex items-center gap-2 mb-2\">\n <Star className=\"h-4 w-4 text-text-secondary\" />\n <h4 className=\"text-sm font-medium text-text-secondary\">\n Customer Satisfaction\n </h4>\n </div>\n <p className=\"text-3xl font-bold text-text-primary flex items-center gap-1\">\n <Star className=\"h-6 w-6 fill-status-warning-text text-status-warning-text\" />\n {analytics.performance.customerSatisfaction}\n </p>\n <p className=\"text-sm text-text-secondary mt-1\">Based on ratings</p>\n </div>\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-6 bg-gloss-card shadow-pop\">\n <div className=\"flex items-center gap-2 mb-2\">\n <IndianRupee className=\"h-4 w-4 text-text-secondary\" />\n <h4 className=\"text-sm font-medium text-text-secondary\">Platform Fee</h4>\n </div>\n <p className=\"text-3xl font-bold text-text-primary\">\n {analytics.performance.platformFee}%\n </p>\n <p className=\"text-sm text-text-secondary mt-1\">Per transaction</p>\n </div>\n </div>\n\n <div className=\"rounded-lg border border-border-subtle bg-bg-sunken/20 p-6\">\n <h3 className=\"text-lg font-semibold text-text-primary mb-4\">\n Financial Performance\n </h3>\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6\">\n <div>\n <p className=\"text-sm text-text-secondary mb-2\">Operating Costs</p>\n <p className=\"text-2xl font-bold text-status-error-text\">\n {fmtCur(analytics.performance.operatingCosts)}\n </p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary mb-2\">Total Revenue</p>\n <p className=\"text-2xl font-bold text-accent-blue\">\n {fmtCur(analytics.revenue.total)}\n </p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary mb-2\">Net Profit</p>\n <p className=\"text-2xl font-bold text-status-success-text\">\n {fmtCur(analytics.performance.netProfit)}\n </p>\n </div>\n </div>\n <div className=\"mt-4 rounded-lg border border-border-seam bg-bg-surface p-4 bg-gloss-card shadow-pop\">\n <p className=\"text-sm text-text-secondary\">Profit Margin</p>\n <p className=\"text-xl font-bold text-text-primary\">\n {((analytics.performance.netProfit / analytics.revenue.total) * 100).toFixed(1)}\n %\n </p>\n </div>\n </div>\n\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-6 bg-gloss-card shadow-pop\">\n <h3 className=\"text-lg font-semibold text-text-primary mb-4\">\n Today&apos;s Performance\n </h3>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <div>\n <p className=\"text-sm text-text-secondary mb-2\">Orders Today</p>\n <p className=\"text-3xl font-bold text-accent-blue\">\n {analytics.orders.ordersToday}\n </p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary mb-2\">Estimated Revenue</p>\n <p className=\"text-3xl font-bold text-status-success-text\">\n {fmtCur(analytics.orders.ordersToday * analytics.orders.averageOrderValue)}\n </p>\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
@@ -87,15 +87,15 @@ function D() {
87
87
  order: b,
88
88
  dispute: s
89
89
  }[e] ?? o, { className: "h-4 w-4" }), z = (e) => ({
90
- user_registration: "text-blue-600 dark:text-blue-400",
91
- cart_approval: "text-purple-600 dark:text-purple-400",
92
- investment: "text-emerald-600 dark:text-emerald-400",
93
- order: "text-green-600 dark:text-green-400",
94
- dispute: "text-yellow-600 dark:text-yellow-400"
90
+ user_registration: "text-accent-blue",
91
+ cart_approval: "text-accent-purple",
92
+ investment: "text-status-success-text",
93
+ order: "text-status-success-text",
94
+ dispute: "text-status-warning-text"
95
95
  })[e] ?? "text-text-secondary", B = (e) => ({
96
- completed: "bg-green-500/20 text-green-600 dark:text-green-400",
97
- pending: "bg-yellow-500/20 text-yellow-600 dark:text-yellow-400",
98
- failed: "bg-red-500/20 text-red-600 dark:text-red-400"
96
+ completed: "bg-status-success-bg-subtle/20 text-status-success-text",
97
+ pending: "bg-status-warning-bg-subtle/20 text-status-warning-text",
98
+ failed: "bg-status-error-bg-subtle/20 text-status-error-text"
99
99
  })[e] ?? "bg-secondary text-secondary-foreground";
100
100
  return I ? /* @__PURE__ */ T(n, {
101
101
  title: "Admin Dashboard",
@@ -111,9 +111,9 @@ function D() {
111
111
  title: "Admin Dashboard",
112
112
  description: `Welcome, ${k}! Monitor and manage the platform.`,
113
113
  actions: A?.pendingApprovals && A.pendingApprovals > 0 ? /* @__PURE__ */ E("div", {
114
- className: "flex items-center gap-2 rounded-lg border border-red-500/30 bg-red-500/10 px-3 py-2",
115
- children: [/* @__PURE__ */ T(s, { className: "h-4 w-4 text-red-600 dark:text-red-400" }), /* @__PURE__ */ E("span", {
116
- className: "text-sm font-medium text-red-600 dark:text-red-400",
114
+ className: "flex items-center gap-2 rounded-lg border border-status-error-border/30 bg-status-error-bg-subtle/10 px-3 py-2",
115
+ children: [/* @__PURE__ */ T(s, { className: "h-4 w-4 text-status-error-text" }), /* @__PURE__ */ E("span", {
116
+ className: "text-sm font-medium text-status-error-text",
117
117
  children: [A.pendingApprovals, " pending approvals"]
118
118
  })]
119
119
  }) : void 0,
@@ -129,7 +129,7 @@ function D() {
129
129
  /* @__PURE__ */ E("button", {
130
130
  type: "button",
131
131
  onClick: () => D("/admin/carts"),
132
- className: "flex items-center gap-3 rounded-lg bg-red-600 hover:bg-red-700 text-white p-3 text-sm font-medium transition-colors",
132
+ className: "flex items-center gap-3 rounded-lg bg-status-error-bg-subtle hover:bg-status-error-bg-subtle text-white p-3 text-sm font-medium transition-colors",
133
133
  children: [
134
134
  /* @__PURE__ */ T(s, { className: "h-5 w-5" }),
135
135
  "Approve Carts (",
@@ -226,42 +226,42 @@ function D() {
226
226
  className: "grid grid-cols-2 lg:grid-cols-4 gap-4 mt-4",
227
227
  children: [
228
228
  /* @__PURE__ */ E("div", {
229
- className: "rounded-lg border border-border-subtle bg-bg-surface p-4",
229
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4 bg-gloss-card shadow-pop",
230
230
  children: [/* @__PURE__ */ T("p", {
231
231
  className: "text-xs text-text-secondary",
232
232
  children: "Active Users (24h)"
233
233
  }), /* @__PURE__ */ T("p", {
234
- className: "text-xl font-bold text-green-600 dark:text-green-400",
234
+ className: "text-xl font-bold text-status-success-text",
235
235
  children: A.activeUsers.toLocaleString("en-IN")
236
236
  })]
237
237
  }),
238
238
  /* @__PURE__ */ E("div", {
239
- className: "rounded-lg border border-border-subtle bg-bg-surface p-4",
239
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4 bg-gloss-card shadow-pop",
240
240
  children: [/* @__PURE__ */ T("p", {
241
241
  className: "text-xs text-text-secondary",
242
242
  children: "Pending Approvals"
243
243
  }), /* @__PURE__ */ T("p", {
244
- className: "text-xl font-bold text-red-600 dark:text-red-400",
244
+ className: "text-xl font-bold text-status-error-text",
245
245
  children: A.pendingApprovals
246
246
  })]
247
247
  }),
248
248
  /* @__PURE__ */ E("div", {
249
- className: "rounded-lg border border-border-subtle bg-bg-surface p-4",
249
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4 bg-gloss-card shadow-pop",
250
250
  children: [/* @__PURE__ */ T("p", {
251
251
  className: "text-xs text-text-secondary",
252
252
  children: "Total Investments"
253
253
  }), /* @__PURE__ */ T("p", {
254
- className: "text-xl font-bold text-blue-600 dark:text-blue-400",
254
+ className: "text-xl font-bold text-accent-blue",
255
255
  children: A.totalInvestments.toLocaleString("en-IN")
256
256
  })]
257
257
  }),
258
258
  /* @__PURE__ */ E("div", {
259
- className: "rounded-lg border border-border-subtle bg-bg-surface p-4",
259
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4 bg-gloss-card shadow-pop",
260
260
  children: [/* @__PURE__ */ T("p", {
261
261
  className: "text-xs text-text-secondary",
262
262
  children: "Platform Commission"
263
263
  }), /* @__PURE__ */ E("p", {
264
- className: "text-xl font-bold text-purple-600 dark:text-purple-400",
264
+ className: "text-xl font-bold text-accent-purple",
265
265
  children: [
266
266
  "₹",
267
267
  (A.platformCommission / 1e3).toFixed(0),
@@ -279,7 +279,7 @@ function D() {
279
279
  className: "text-lg font-semibold text-text-primary mb-4",
280
280
  children: "User Distribution"
281
281
  }), /* @__PURE__ */ E("div", {
282
- className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
282
+ className: "rounded-lg border border-border-seam bg-bg-surface p-6 bg-gloss-card shadow-pop",
283
283
  children: [/* @__PURE__ */ E("div", {
284
284
  className: "grid grid-cols-2 lg:grid-cols-4 gap-6",
285
285
  children: [
@@ -287,7 +287,7 @@ function D() {
287
287
  className: "text-center",
288
288
  children: [
289
289
  /* @__PURE__ */ T("div", {
290
- className: "text-2xl sm:text-3xl font-bold text-blue-600 dark:text-blue-400",
290
+ className: "text-2xl sm:text-3xl font-bold text-accent-blue",
291
291
  children: P.customers.toLocaleString("en-IN")
292
292
  }),
293
293
  /* @__PURE__ */ T("div", {
@@ -304,7 +304,7 @@ function D() {
304
304
  className: "text-center",
305
305
  children: [
306
306
  /* @__PURE__ */ T("div", {
307
- className: "text-2xl sm:text-3xl font-bold text-green-600 dark:text-green-400",
307
+ className: "text-2xl sm:text-3xl font-bold text-status-success-text",
308
308
  children: P.cartOwners.toLocaleString("en-IN")
309
309
  }),
310
310
  /* @__PURE__ */ T("div", {
@@ -321,7 +321,7 @@ function D() {
321
321
  className: "text-center",
322
322
  children: [
323
323
  /* @__PURE__ */ T("div", {
324
- className: "text-2xl sm:text-3xl font-bold text-yellow-600 dark:text-yellow-400",
324
+ className: "text-2xl sm:text-3xl font-bold text-status-warning-text",
325
325
  children: P.workers.toLocaleString("en-IN")
326
326
  }),
327
327
  /* @__PURE__ */ T("div", {
@@ -338,7 +338,7 @@ function D() {
338
338
  className: "text-center",
339
339
  children: [
340
340
  /* @__PURE__ */ T("div", {
341
- className: "text-2xl sm:text-3xl font-bold text-purple-600 dark:text-purple-400",
341
+ className: "text-2xl sm:text-3xl font-bold text-accent-purple",
342
342
  children: P.investors.toLocaleString("en-IN")
343
343
  }),
344
344
  /* @__PURE__ */ T("div", {
@@ -360,7 +360,7 @@ function D() {
360
360
  className: "text-sm text-text-secondary",
361
361
  children: "User Growth (This Month)"
362
362
  }), /* @__PURE__ */ E("span", {
363
- className: "text-sm font-medium text-green-600 dark:text-green-400",
363
+ className: "text-sm font-medium text-status-success-text",
364
364
  children: [
365
365
  "+",
366
366
  P.growth,
@@ -427,7 +427,7 @@ function D() {
427
427
  /* @__PURE__ */ E("div", {
428
428
  className: "grid grid-cols-1 lg:grid-cols-2 gap-6 mb-8",
429
429
  children: [/* @__PURE__ */ E("div", {
430
- className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
430
+ className: "rounded-lg border border-border-seam bg-bg-surface p-6 bg-gloss-card shadow-pop",
431
431
  children: [/* @__PURE__ */ E("div", {
432
432
  className: "flex items-center gap-2 mb-4",
433
433
  children: [/* @__PURE__ */ T(y, { className: "h-5 w-5 text-text-secondary" }), /* @__PURE__ */ T("h3", {
@@ -446,7 +446,7 @@ function D() {
446
446
  children: "Server Status"
447
447
  })]
448
448
  }), /* @__PURE__ */ E("span", {
449
- className: "inline-flex items-center gap-1.5 rounded-full bg-green-500/20 px-3 py-1 text-xs font-medium text-green-600 dark:text-green-400",
449
+ className: "inline-flex items-center gap-1.5 rounded-full bg-status-success-bg-subtle/20 px-3 py-1 text-xs font-medium text-status-success-text",
450
450
  children: [/* @__PURE__ */ T(u, { className: "h-3 w-3" }), "Healthy"]
451
451
  })]
452
452
  }),
@@ -459,7 +459,7 @@ function D() {
459
459
  children: "Database Performance"
460
460
  })]
461
461
  }), /* @__PURE__ */ E("span", {
462
- className: "inline-flex items-center gap-1.5 rounded-full bg-green-500/20 px-3 py-1 text-xs font-medium text-green-600 dark:text-green-400",
462
+ className: "inline-flex items-center gap-1.5 rounded-full bg-status-success-bg-subtle/20 px-3 py-1 text-xs font-medium text-status-success-text",
463
463
  children: [/* @__PURE__ */ T(u, { className: "h-3 w-3" }), "Optimal"]
464
464
  })]
465
465
  }),
@@ -472,7 +472,7 @@ function D() {
472
472
  children: "Payment Gateway"
473
473
  })]
474
474
  }), /* @__PURE__ */ E("span", {
475
- className: "inline-flex items-center gap-1.5 rounded-full bg-green-500/20 px-3 py-1 text-xs font-medium text-green-600 dark:text-green-400",
475
+ className: "inline-flex items-center gap-1.5 rounded-full bg-status-success-bg-subtle/20 px-3 py-1 text-xs font-medium text-status-success-text",
476
476
  children: [/* @__PURE__ */ T(u, { className: "h-3 w-3" }), "Online"]
477
477
  })]
478
478
  }),
@@ -505,7 +505,7 @@ function D() {
505
505
  ]
506
506
  })]
507
507
  }), /* @__PURE__ */ E("div", {
508
- className: "rounded-lg border border-border-subtle bg-bg-surface p-6",
508
+ className: "rounded-lg border border-border-seam bg-bg-surface p-6 bg-gloss-card shadow-pop",
509
509
  children: [/* @__PURE__ */ E("div", {
510
510
  className: "flex items-center gap-2 mb-4",
511
511
  children: [/* @__PURE__ */ T(h, { className: "h-5 w-5 text-text-secondary" }), /* @__PURE__ */ T("h3", {
@@ -613,7 +613,7 @@ function D() {
613
613
  return /* @__PURE__ */ E("button", {
614
614
  type: "button",
615
615
  onClick: () => D(e.path),
616
- className: t("flex items-center gap-4 rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6 text-left shadow-sm transition-all", "hover:bg-accent hover:shadow-md"),
616
+ className: t("flex items-center gap-4 rounded-lg border border-border-seam bg-bg-surface p-4 sm:p-6 text-left transition-all bg-gloss-card shadow-pop", "hover:bg-accent hover:shadow-md"),
617
617
  children: [/* @__PURE__ */ T("div", {
618
618
  className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-bg-sunken text-text-secondary",
619
619
  children: /* @__PURE__ */ T(n, { className: "h-5 w-5" })
@@ -1 +1 @@
1
- {"version":3,"file":"AdminDashboard.js","names":[],"sources":["../../../../src/adaptercloud/pages/admin/AdminDashboard.tsx"],"sourcesContent":["/**\n * Admin Dashboard Page\n * @module adaptercloud/pages/admin\n *\n * Full-featured admin dashboard with loading state, 8 stats cards,\n * user distribution, recent activity, system health, financial overview,\n * management links, pending approvals banner, and quick actions.\n */\n\nimport { useState, useEffect } from 'react';\nimport {\n Users,\n Store,\n ShoppingBag,\n IndianRupee,\n Activity,\n ArrowRight,\n CheckCircle2,\n AlertCircle,\n Clock,\n UserPlus,\n Settings,\n BarChart3,\n ShieldCheck,\n Server,\n Database,\n Wifi,\n CreditCard,\n TrendingUp,\n FileText,\n AlertTriangle,\n Loader2,\n} from 'lucide-react';\nimport { PageLayout } from '../../components/PageLayout';\nimport { MetricsCard } from '../../components/MetricsCard';\nimport { useAdapterCloud } from '../../context/AdapterCloudContext';\nimport { cn } from '../../utils/cn';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\ninterface SystemMetrics {\n totalUsers: number;\n totalCarts: number;\n totalOrders: number;\n totalInvestments: number;\n activeUsers: number;\n pendingApprovals: number;\n totalRevenue: number;\n platformCommission: number;\n}\n\ninterface RecentActivity {\n id: string;\n type: 'user_registration' | 'cart_approval' | 'investment' | 'order' | 'dispute';\n description: string;\n timestamp: string;\n status: 'completed' | 'pending' | 'failed';\n user?: string;\n amount?: number;\n}\n\ninterface UserStats {\n customers: number;\n cartOwners: number;\n workers: number;\n investors: number;\n growth: number;\n}\n\n/* ------------------------------------------------------------------ */\n/* Component */\n/* ------------------------------------------------------------------ */\n\nexport function AdminDashboard() {\n const { navigateTo, currentUser } = useAdapterCloud();\n const firstName = currentUser?.firstName ?? currentUser?.name ?? 'Admin';\n\n const [metrics, setMetrics] = useState<SystemMetrics | null>(null);\n const [activities, setActivities] = useState<RecentActivity[]>([]);\n const [userStats, setUserStats] = useState<UserStats | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setMetrics({\n totalUsers: 12847,\n totalCarts: 2934,\n totalOrders: 45621,\n totalInvestments: 1256,\n activeUsers: 8934,\n pendingApprovals: 47,\n totalRevenue: 2450000,\n platformCommission: 122500,\n });\n\n setUserStats({\n customers: 8934,\n cartOwners: 2456,\n workers: 1245,\n investors: 212,\n growth: 15.7,\n });\n\n setActivities([\n {\n id: 'ACT-001',\n type: 'user_registration',\n description: 'New cart owner registered: Rajesh Kumar',\n timestamp: '2 minutes ago',\n status: 'completed',\n user: 'Rajesh Kumar',\n },\n {\n id: 'ACT-002',\n type: 'cart_approval',\n description: 'Cart approval request from Mumbai Chaat Corner',\n timestamp: '5 minutes ago',\n status: 'pending',\n user: 'Priya Sharma',\n },\n {\n id: 'ACT-003',\n type: 'investment',\n description: 'New investment in Dosa Express',\n timestamp: '12 minutes ago',\n status: 'completed',\n user: 'Amit Patel',\n amount: 75000,\n },\n {\n id: 'ACT-004',\n type: 'order',\n description: 'Large order placed: ₹2,500',\n timestamp: '18 minutes ago',\n status: 'completed',\n amount: 2500,\n },\n {\n id: 'ACT-005',\n type: 'dispute',\n description: 'Payment dispute raised by customer',\n timestamp: '25 minutes ago',\n status: 'pending',\n user: 'Suresh Nair',\n amount: 450,\n },\n {\n id: 'ACT-006',\n type: 'user_registration',\n description: 'New investor registered: Fatima Ali',\n timestamp: '32 minutes ago',\n status: 'completed',\n user: 'Fatima Ali',\n },\n ]);\n\n setIsLoading(false);\n }, 1000);\n\n return () => clearTimeout(timer);\n }, []);\n\n const getActivityIcon = (type: RecentActivity['type']) => {\n const iconMap = {\n user_registration: UserPlus,\n cart_approval: Store,\n investment: IndianRupee,\n order: ShoppingBag,\n dispute: AlertTriangle,\n };\n const Icon = iconMap[type] ?? Activity;\n return <Icon className=\"h-4 w-4\" />;\n };\n\n const getActivityIconColor = (type: RecentActivity['type']) => {\n const colorMap: Record<string, string> = {\n user_registration: 'text-blue-600 dark:text-blue-400',\n cart_approval: 'text-purple-600 dark:text-purple-400',\n investment: 'text-emerald-600 dark:text-emerald-400',\n order: 'text-green-600 dark:text-green-400',\n dispute: 'text-yellow-600 dark:text-yellow-400',\n };\n return colorMap[type] ?? 'text-text-secondary';\n };\n\n const getStatusBadge = (status: RecentActivity['status']) => {\n const config = {\n completed: 'bg-green-500/20 text-green-600 dark:text-green-400',\n pending: 'bg-yellow-500/20 text-yellow-600 dark:text-yellow-400',\n failed: 'bg-red-500/20 text-red-600 dark:text-red-400',\n };\n return config[status] ?? 'bg-secondary text-secondary-foreground';\n };\n\n /* ---- Loading state ---- */\n if (isLoading) {\n return (\n <PageLayout title=\"Admin Dashboard\" description=\"Loading...\">\n <div className=\"flex flex-col items-center justify-center py-20\">\n <Loader2 className=\"h-10 w-10 animate-spin text-text-secondary mb-4\" />\n <p className=\"text-text-secondary\">Loading admin dashboard...</p>\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"Admin Dashboard\"\n description={`Welcome, ${firstName}! Monitor and manage the platform.`}\n actions={\n metrics?.pendingApprovals && metrics.pendingApprovals > 0 ? (\n <div className=\"flex items-center gap-2 rounded-lg border border-red-500/30 bg-red-500/10 px-3 py-2\">\n <AlertTriangle className=\"h-4 w-4 text-red-600 dark:text-red-400\" />\n <span className=\"text-sm font-medium text-red-600 dark:text-red-400\">\n {metrics.pendingApprovals} pending approvals\n </span>\n </div>\n ) : undefined\n }\n >\n {/* Quick Actions */}\n <div className=\"mb-8\">\n <h2 className=\"text-lg font-semibold text-text-primary mb-4\">Quick Actions</h2>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-3\">\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin/carts')}\n className=\"flex items-center gap-3 rounded-lg bg-red-600 hover:bg-red-700 text-white p-3 text-sm font-medium transition-colors\"\n >\n <AlertTriangle className=\"h-5 w-5\" />\n Approve Carts ({metrics?.pendingApprovals})\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin/carts')}\n className=\"flex items-center gap-3 rounded-lg border border-border-subtle bg-bg-surface hover:bg-accent p-3 text-sm font-medium text-text-primary transition-colors\"\n >\n <Store className=\"h-5 w-5 text-text-secondary\" />\n Manage Carts\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin/users')}\n className=\"flex items-center gap-3 rounded-lg border border-border-subtle bg-bg-surface hover:bg-accent p-3 text-sm font-medium text-text-primary transition-colors\"\n >\n <Users className=\"h-5 w-5 text-text-secondary\" />\n User Management\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin/orders')}\n className=\"flex items-center gap-3 rounded-lg border border-border-subtle bg-bg-surface hover:bg-accent p-3 text-sm font-medium text-text-primary transition-colors\"\n >\n <ShoppingBag className=\"h-5 w-5 text-text-secondary\" />\n Order Management\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin/financial')}\n className=\"flex items-center gap-3 rounded-lg border border-border-subtle bg-bg-surface hover:bg-accent p-3 text-sm font-medium text-text-primary transition-colors\"\n >\n <IndianRupee className=\"h-5 w-5 text-text-secondary\" />\n Financial Analytics\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin/analytics')}\n className=\"flex items-center gap-3 rounded-lg border border-border-subtle bg-bg-surface hover:bg-accent p-3 text-sm font-medium text-text-primary transition-colors\"\n >\n <BarChart3 className=\"h-5 w-5 text-text-secondary\" />\n Analytics\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin/settings')}\n className=\"flex items-center gap-3 rounded-lg border border-border-subtle bg-bg-surface hover:bg-accent p-3 text-sm font-medium text-text-primary transition-colors\"\n >\n <Settings className=\"h-5 w-5 text-text-secondary\" />\n Settings\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin/analytics')}\n className=\"flex items-center gap-3 rounded-lg border border-border-subtle bg-bg-surface hover:bg-accent p-3 text-sm font-medium text-text-primary transition-colors\"\n >\n <FileText className=\"h-5 w-5 text-text-secondary\" />\n Reports\n </button>\n </div>\n </div>\n\n {/* Platform Overview - 4 Primary Stats */}\n {metrics && (\n <div className=\"mb-8\">\n <h2 className=\"text-lg font-semibold text-text-primary mb-4\">Platform Overview</h2>\n <div className=\"grid grid-cols-2 lg:grid-cols-4 gap-4\">\n <MetricsCard\n icon={<Users className=\"h-5 w-5\" />}\n value={metrics.totalUsers.toLocaleString('en-IN')}\n label=\"Total Users\"\n trend=\"up\"\n trendValue=\"+15.7%\"\n />\n <MetricsCard\n icon={<Store className=\"h-5 w-5\" />}\n value={metrics.totalCarts.toLocaleString('en-IN')}\n label=\"Active Carts\"\n trend=\"up\"\n trendValue=\"+8 this week\"\n />\n <MetricsCard\n icon={<ShoppingBag className=\"h-5 w-5\" />}\n value={metrics.totalOrders.toLocaleString('en-IN')}\n label=\"Total Orders\"\n trend=\"up\"\n trendValue=\"+12.3%\"\n />\n <MetricsCard\n icon={<IndianRupee className=\"h-5 w-5\" />}\n value={`₹${(metrics.totalRevenue / 100000).toFixed(1)}L`}\n label=\"Total Revenue\"\n trend=\"up\"\n trendValue=\"+8.5%\"\n />\n </div>\n\n {/* 4 Additional Metric Cards */}\n <div className=\"grid grid-cols-2 lg:grid-cols-4 gap-4 mt-4\">\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <p className=\"text-xs text-text-secondary\">Active Users (24h)</p>\n <p className=\"text-xl font-bold text-green-600 dark:text-green-400\">\n {metrics.activeUsers.toLocaleString('en-IN')}\n </p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <p className=\"text-xs text-text-secondary\">Pending Approvals</p>\n <p className=\"text-xl font-bold text-red-600 dark:text-red-400\">\n {metrics.pendingApprovals}\n </p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <p className=\"text-xs text-text-secondary\">Total Investments</p>\n <p className=\"text-xl font-bold text-blue-600 dark:text-blue-400\">\n {metrics.totalInvestments.toLocaleString('en-IN')}\n </p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <p className=\"text-xs text-text-secondary\">Platform Commission</p>\n <p className=\"text-xl font-bold text-purple-600 dark:text-purple-400\">\n ₹{(metrics.platformCommission / 1000).toFixed(0)}K\n </p>\n </div>\n </div>\n </div>\n )}\n\n {/* User Distribution */}\n {userStats && (\n <div className=\"mb-8\">\n <h2 className=\"text-lg font-semibold text-text-primary mb-4\">User Distribution</h2>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-6\">\n <div className=\"grid grid-cols-2 lg:grid-cols-4 gap-6\">\n <div className=\"text-center\">\n <div className=\"text-2xl sm:text-3xl font-bold text-blue-600 dark:text-blue-400\">\n {userStats.customers.toLocaleString('en-IN')}\n </div>\n <div className=\"text-sm text-text-secondary\">Customers</div>\n <div className=\"text-xs text-text-secondary\">69.5%</div>\n </div>\n <div className=\"text-center\">\n <div className=\"text-2xl sm:text-3xl font-bold text-green-600 dark:text-green-400\">\n {userStats.cartOwners.toLocaleString('en-IN')}\n </div>\n <div className=\"text-sm text-text-secondary\">Cart Owners</div>\n <div className=\"text-xs text-text-secondary\">19.1%</div>\n </div>\n <div className=\"text-center\">\n <div className=\"text-2xl sm:text-3xl font-bold text-yellow-600 dark:text-yellow-400\">\n {userStats.workers.toLocaleString('en-IN')}\n </div>\n <div className=\"text-sm text-text-secondary\">Workers</div>\n <div className=\"text-xs text-text-secondary\">9.7%</div>\n </div>\n <div className=\"text-center\">\n <div className=\"text-2xl sm:text-3xl font-bold text-purple-600 dark:text-purple-400\">\n {userStats.investors.toLocaleString('en-IN')}\n </div>\n <div className=\"text-sm text-text-secondary\">Investors</div>\n <div className=\"text-xs text-text-secondary\">1.7%</div>\n </div>\n </div>\n <div className=\"mt-4 pt-4 border-t border-border-subtle\">\n <div className=\"flex justify-between items-center\">\n <span className=\"text-sm text-text-secondary\">User Growth (This Month)</span>\n <span className=\"text-sm font-medium text-green-600 dark:text-green-400\">\n +{userStats.growth}%\n </span>\n </div>\n </div>\n </div>\n </div>\n )}\n\n {/* Recent Activity */}\n <div className=\"mb-8\">\n <div className=\"flex items-center justify-between mb-4\">\n <h2 className=\"text-lg font-semibold text-text-primary\">Recent Platform Activity</h2>\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin/analytics')}\n className=\"flex items-center gap-1 text-sm font-medium text-text-secondary hover:text-text-primary transition-colors\"\n >\n View all activities\n <ArrowRight className=\"h-4 w-4\" />\n </button>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface divide-y divide-border\">\n {activities.map((activity) => (\n <div key={activity.id} className=\"flex items-start gap-3 px-4 py-3\">\n <div\n className={cn(\n 'flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-bg-sunken mt-0.5',\n getActivityIconColor(activity.type)\n )}\n >\n {getActivityIcon(activity.type)}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex flex-col sm:flex-row sm:items-center justify-between gap-2\">\n <p className=\"text-sm font-medium text-text-primary\">{activity.description}</p>\n <span\n className={cn(\n 'inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium capitalize w-fit',\n getStatusBadge(activity.status)\n )}\n >\n {activity.status}\n </span>\n </div>\n <div className=\"flex flex-wrap items-center mt-1 text-xs text-text-secondary gap-3\">\n <span>{activity.timestamp}</span>\n {activity.user && (\n <span className=\"flex items-center gap-1\">\n <Users className=\"h-3 w-3\" />\n {activity.user}\n </span>\n )}\n {activity.amount && (\n <span className=\"flex items-center gap-1\">\n <IndianRupee className=\"h-3 w-3\" />₹{activity.amount.toLocaleString('en-IN')}\n </span>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n\n {/* System Health & Financial Overview */}\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6 mb-8\">\n {/* System Health */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-6\">\n <div className=\"flex items-center gap-2 mb-4\">\n <ShieldCheck className=\"h-5 w-5 text-text-secondary\" />\n <h3 className=\"text-lg font-semibold text-text-primary\">System Health</h3>\n </div>\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Server className=\"h-4 w-4 text-text-secondary\" />\n <span className=\"text-sm text-text-secondary\">Server Status</span>\n </div>\n <span className=\"inline-flex items-center gap-1.5 rounded-full bg-green-500/20 px-3 py-1 text-xs font-medium text-green-600 dark:text-green-400\">\n <CheckCircle2 className=\"h-3 w-3\" />\n Healthy\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Database className=\"h-4 w-4 text-text-secondary\" />\n <span className=\"text-sm text-text-secondary\">Database Performance</span>\n </div>\n <span className=\"inline-flex items-center gap-1.5 rounded-full bg-green-500/20 px-3 py-1 text-xs font-medium text-green-600 dark:text-green-400\">\n <CheckCircle2 className=\"h-3 w-3\" />\n Optimal\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <CreditCard className=\"h-4 w-4 text-text-secondary\" />\n <span className=\"text-sm text-text-secondary\">Payment Gateway</span>\n </div>\n <span className=\"inline-flex items-center gap-1.5 rounded-full bg-green-500/20 px-3 py-1 text-xs font-medium text-green-600 dark:text-green-400\">\n <CheckCircle2 className=\"h-3 w-3\" />\n Online\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Wifi className=\"h-4 w-4 text-text-secondary\" />\n <span className=\"text-sm text-text-secondary\">API Response Time</span>\n </div>\n <span className=\"text-sm font-medium text-text-primary\">145ms</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Clock className=\"h-4 w-4 text-text-secondary\" />\n <span className=\"text-sm text-text-secondary\">Uptime (30 days)</span>\n </div>\n <span className=\"text-sm font-medium text-text-primary\">99.8%</span>\n </div>\n </div>\n </div>\n\n {/* Financial Overview */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-6\">\n <div className=\"flex items-center gap-2 mb-4\">\n <IndianRupee className=\"h-5 w-5 text-text-secondary\" />\n <h3 className=\"text-lg font-semibold text-text-primary\">Financial Overview</h3>\n </div>\n <div className=\"space-y-3\">\n <div className=\"flex justify-between\">\n <span className=\"text-sm text-text-secondary\">Today&apos;s Revenue</span>\n <span className=\"font-medium text-text-primary\">₹1,45,230</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-sm text-text-secondary\">This Month</span>\n <span className=\"font-medium text-text-primary\">₹24,50,000</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-sm text-text-secondary\">Platform Commission</span>\n <span className=\"font-medium text-text-primary\">₹1,22,500</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-sm text-text-secondary\">Active Investments</span>\n <span className=\"font-medium text-text-primary\">₹1.52Cr</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-sm text-text-secondary\">Pending Payouts</span>\n <span className=\"font-medium text-text-primary\">₹45,600</span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Management Links */}\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4\">\n {[\n {\n icon: Store,\n label: 'Cart Management',\n desc: 'Approve, manage, and monitor carts',\n path: '/admin/carts',\n },\n {\n icon: Users,\n label: 'User Management',\n desc: 'Manage users and permissions',\n path: '/admin/users',\n },\n {\n icon: BarChart3,\n label: 'Analytics & Reports',\n desc: 'View detailed platform analytics',\n path: '/admin/analytics',\n },\n {\n icon: IndianRupee,\n label: 'Financial Analytics',\n desc: 'View revenue, investments, and financial metrics',\n path: '/admin/financial',\n },\n {\n icon: AlertTriangle,\n label: 'Order & Dispute Management',\n desc: 'Handle orders, disputes, and customer issues',\n path: '/admin/orders',\n },\n {\n icon: Settings,\n label: 'Platform Settings',\n desc: 'Configure platform-wide settings',\n path: '/admin/settings',\n },\n ].map((link) => {\n const LinkIcon = link.icon;\n return (\n <button\n key={link.label}\n type=\"button\"\n onClick={() => navigateTo(link.path)}\n className={cn(\n 'flex items-center gap-4 rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6 text-left shadow-sm transition-all',\n 'hover:bg-accent hover:shadow-md'\n )}\n >\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-bg-sunken text-text-secondary\">\n <LinkIcon className=\"h-5 w-5\" />\n </div>\n <div className=\"min-w-0\">\n <h3 className=\"font-semibold text-text-primary text-sm sm:text-base\">{link.label}</h3>\n <p className=\"text-xs sm:text-sm text-text-secondary\">{link.desc}</p>\n </div>\n </button>\n );\n })}\n </div>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AdminDashboard.js","names":[],"sources":["../../../../src/adaptercloud/pages/admin/AdminDashboard.tsx"],"sourcesContent":["/**\n * Admin Dashboard Page\n * @module adaptercloud/pages/admin\n *\n * Full-featured admin dashboard with loading state, 8 stats cards,\n * user distribution, recent activity, system health, financial overview,\n * management links, pending approvals banner, and quick actions.\n */\n\nimport { useState, useEffect } from'react';\nimport {\n Users,\n Store,\n ShoppingBag,\n IndianRupee,\n Activity,\n ArrowRight,\n CheckCircle2,\n AlertCircle,\n Clock,\n UserPlus,\n Settings,\n BarChart3,\n ShieldCheck,\n Server,\n Database,\n Wifi,\n CreditCard,\n TrendingUp,\n FileText,\n AlertTriangle,\n Loader2,\n} from'lucide-react';\nimport { PageLayout } from'../../components/PageLayout';\nimport { MetricsCard } from'../../components/MetricsCard';\nimport { useAdapterCloud } from'../../context/AdapterCloudContext';\nimport { cn } from'../../utils/cn';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\ninterface SystemMetrics {\n totalUsers: number;\n totalCarts: number;\n totalOrders: number;\n totalInvestments: number;\n activeUsers: number;\n pendingApprovals: number;\n totalRevenue: number;\n platformCommission: number;\n}\n\ninterface RecentActivity {\n id: string;\n type: 'user_registration' | 'cart_approval' | 'investment' | 'order' | 'dispute';\n description: string;\n timestamp: string;\n status: 'completed' | 'pending' | 'failed';\n user?: string;\n amount?: number;\n}\n\ninterface UserStats {\n customers: number;\n cartOwners: number;\n workers: number;\n investors: number;\n growth: number;\n}\n\n/* ------------------------------------------------------------------ */\n/* Component */\n/* ------------------------------------------------------------------ */\n\nexport function AdminDashboard() {\n const { navigateTo, currentUser } = useAdapterCloud();\n const firstName = currentUser?.firstName ?? currentUser?.name ?? 'Admin';\n\n const [metrics, setMetrics] = useState<SystemMetrics | null>(null);\n const [activities, setActivities] = useState<RecentActivity[]>([]);\n const [userStats, setUserStats] = useState<UserStats | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setMetrics({\n totalUsers: 12847,\n totalCarts: 2934,\n totalOrders: 45621,\n totalInvestments: 1256,\n activeUsers: 8934,\n pendingApprovals: 47,\n totalRevenue: 2450000,\n platformCommission: 122500,\n });\n\n setUserStats({\n customers: 8934,\n cartOwners: 2456,\n workers: 1245,\n investors: 212,\n growth: 15.7,\n });\n\n setActivities([\n {\n id: 'ACT-001',\n type: 'user_registration',\n description: 'New cart owner registered: Rajesh Kumar',\n timestamp: '2 minutes ago',\n status: 'completed',\n user: 'Rajesh Kumar',\n },\n {\n id: 'ACT-002',\n type: 'cart_approval',\n description: 'Cart approval request from Mumbai Chaat Corner',\n timestamp: '5 minutes ago',\n status: 'pending',\n user: 'Priya Sharma',\n },\n {\n id: 'ACT-003',\n type: 'investment',\n description: 'New investment in Dosa Express',\n timestamp: '12 minutes ago',\n status: 'completed',\n user: 'Amit Patel',\n amount: 75000,\n },\n {\n id: 'ACT-004',\n type: 'order',\n description: 'Large order placed: ₹2,500',\n timestamp: '18 minutes ago',\n status: 'completed',\n amount: 2500,\n },\n {\n id: 'ACT-005',\n type: 'dispute',\n description: 'Payment dispute raised by customer',\n timestamp: '25 minutes ago',\n status: 'pending',\n user: 'Suresh Nair',\n amount: 450,\n },\n {\n id: 'ACT-006',\n type: 'user_registration',\n description: 'New investor registered: Fatima Ali',\n timestamp: '32 minutes ago',\n status: 'completed',\n user: 'Fatima Ali',\n },\n ]);\n\n setIsLoading(false);\n }, 1000);\n\n return () => clearTimeout(timer);\n }, []);\n\n const getActivityIcon = (type: RecentActivity['type']) => {\n const iconMap = {\n user_registration: UserPlus,\n cart_approval: Store,\n investment: IndianRupee,\n order: ShoppingBag,\n dispute: AlertTriangle,\n };\n const Icon = iconMap[type] ?? Activity;\n return <Icon className=\"h-4 w-4\" />;\n };\n\n const getActivityIconColor = (type: RecentActivity['type']) => {\n const colorMap: Record<string, string> = {\n user_registration: 'text-accent-blue',\n cart_approval: 'text-accent-purple',\n investment: 'text-status-success-text',\n order: 'text-status-success-text',\n dispute: 'text-status-warning-text',\n };\n return colorMap[type] ?? 'text-text-secondary';\n };\n\n const getStatusBadge = (status: RecentActivity['status']) => {\n const config = {\n completed: 'bg-status-success-bg-subtle/20 text-status-success-text',\n pending: 'bg-status-warning-bg-subtle/20 text-status-warning-text',\n failed: 'bg-status-error-bg-subtle/20 text-status-error-text',\n };\n return config[status] ?? 'bg-secondary text-secondary-foreground';\n };\n\n /* ---- Loading state ---- */\n if (isLoading) {\n return (\n <PageLayout title=\"Admin Dashboard\" description=\"Loading...\">\n <div className=\"flex flex-col items-center justify-center py-20\">\n <Loader2 className=\"h-10 w-10 animate-spin text-text-secondary mb-4\" />\n <p className=\"text-text-secondary\">Loading admin dashboard...</p>\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"Admin Dashboard\"\n description={`Welcome, ${firstName}! Monitor and manage the platform.`}\n actions={\n metrics?.pendingApprovals && metrics.pendingApprovals > 0 ? (\n <div className=\"flex items-center gap-2 rounded-lg border border-status-error-border/30 bg-status-error-bg-subtle/10 px-3 py-2\">\n <AlertTriangle className=\"h-4 w-4 text-status-error-text\" />\n <span className=\"text-sm font-medium text-status-error-text\">\n {metrics.pendingApprovals} pending approvals\n </span>\n </div>\n ) : undefined\n }\n >\n {/* Quick Actions */}\n <div className=\"mb-8\">\n <h2 className=\"text-lg font-semibold text-text-primary mb-4\">Quick Actions</h2>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-3\">\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin/carts')}\n className=\"flex items-center gap-3 rounded-lg bg-status-error-bg-subtle hover:bg-status-error-bg-subtle text-white p-3 text-sm font-medium transition-colors\"\n >\n <AlertTriangle className=\"h-5 w-5\" />\n Approve Carts ({metrics?.pendingApprovals})\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin/carts')}\n className=\"flex items-center gap-3 rounded-lg border border-border-subtle bg-bg-surface hover:bg-accent p-3 text-sm font-medium text-text-primary transition-colors\"\n >\n <Store className=\"h-5 w-5 text-text-secondary\" />\n Manage Carts\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin/users')}\n className=\"flex items-center gap-3 rounded-lg border border-border-subtle bg-bg-surface hover:bg-accent p-3 text-sm font-medium text-text-primary transition-colors\"\n >\n <Users className=\"h-5 w-5 text-text-secondary\" />\n User Management\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin/orders')}\n className=\"flex items-center gap-3 rounded-lg border border-border-subtle bg-bg-surface hover:bg-accent p-3 text-sm font-medium text-text-primary transition-colors\"\n >\n <ShoppingBag className=\"h-5 w-5 text-text-secondary\" />\n Order Management\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin/financial')}\n className=\"flex items-center gap-3 rounded-lg border border-border-subtle bg-bg-surface hover:bg-accent p-3 text-sm font-medium text-text-primary transition-colors\"\n >\n <IndianRupee className=\"h-5 w-5 text-text-secondary\" />\n Financial Analytics\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin/analytics')}\n className=\"flex items-center gap-3 rounded-lg border border-border-subtle bg-bg-surface hover:bg-accent p-3 text-sm font-medium text-text-primary transition-colors\"\n >\n <BarChart3 className=\"h-5 w-5 text-text-secondary\" />\n Analytics\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin/settings')}\n className=\"flex items-center gap-3 rounded-lg border border-border-subtle bg-bg-surface hover:bg-accent p-3 text-sm font-medium text-text-primary transition-colors\"\n >\n <Settings className=\"h-5 w-5 text-text-secondary\" />\n Settings\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin/analytics')}\n className=\"flex items-center gap-3 rounded-lg border border-border-subtle bg-bg-surface hover:bg-accent p-3 text-sm font-medium text-text-primary transition-colors\"\n >\n <FileText className=\"h-5 w-5 text-text-secondary\" />\n Reports\n </button>\n </div>\n </div>\n\n {/* Platform Overview - 4 Primary Stats */}\n {metrics && (\n <div className=\"mb-8\">\n <h2 className=\"text-lg font-semibold text-text-primary mb-4\">Platform Overview</h2>\n <div className=\"grid grid-cols-2 lg:grid-cols-4 gap-4\">\n <MetricsCard\n icon={<Users className=\"h-5 w-5\" />}\n value={metrics.totalUsers.toLocaleString('en-IN')}\n label=\"Total Users\"\n trend=\"up\"\n trendValue=\"+15.7%\"\n />\n <MetricsCard\n icon={<Store className=\"h-5 w-5\" />}\n value={metrics.totalCarts.toLocaleString('en-IN')}\n label=\"Active Carts\"\n trend=\"up\"\n trendValue=\"+8 this week\"\n />\n <MetricsCard\n icon={<ShoppingBag className=\"h-5 w-5\" />}\n value={metrics.totalOrders.toLocaleString('en-IN')}\n label=\"Total Orders\"\n trend=\"up\"\n trendValue=\"+12.3%\"\n />\n <MetricsCard\n icon={<IndianRupee className=\"h-5 w-5\" />}\n value={`₹${(metrics.totalRevenue / 100000).toFixed(1)}L`}\n label=\"Total Revenue\"\n trend=\"up\"\n trendValue=\"+8.5%\"\n />\n </div>\n\n {/* 4 Additional Metric Cards */}\n <div className=\"grid grid-cols-2 lg:grid-cols-4 gap-4 mt-4\">\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-4 bg-gloss-card shadow-pop\">\n <p className=\"text-xs text-text-secondary\">Active Users (24h)</p>\n <p className=\"text-xl font-bold text-status-success-text\">\n {metrics.activeUsers.toLocaleString('en-IN')}\n </p>\n </div>\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-4 bg-gloss-card shadow-pop\">\n <p className=\"text-xs text-text-secondary\">Pending Approvals</p>\n <p className=\"text-xl font-bold text-status-error-text\">\n {metrics.pendingApprovals}\n </p>\n </div>\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-4 bg-gloss-card shadow-pop\">\n <p className=\"text-xs text-text-secondary\">Total Investments</p>\n <p className=\"text-xl font-bold text-accent-blue\">\n {metrics.totalInvestments.toLocaleString('en-IN')}\n </p>\n </div>\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-4 bg-gloss-card shadow-pop\">\n <p className=\"text-xs text-text-secondary\">Platform Commission</p>\n <p className=\"text-xl font-bold text-accent-purple\">\n ₹{(metrics.platformCommission / 1000).toFixed(0)}K\n </p>\n </div>\n </div>\n </div>\n )}\n\n {/* User Distribution */}\n {userStats && (\n <div className=\"mb-8\">\n <h2 className=\"text-lg font-semibold text-text-primary mb-4\">User Distribution</h2>\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-6 bg-gloss-card shadow-pop\">\n <div className=\"grid grid-cols-2 lg:grid-cols-4 gap-6\">\n <div className=\"text-center\">\n <div className=\"text-2xl sm:text-3xl font-bold text-accent-blue\">\n {userStats.customers.toLocaleString('en-IN')}\n </div>\n <div className=\"text-sm text-text-secondary\">Customers</div>\n <div className=\"text-xs text-text-secondary\">69.5%</div>\n </div>\n <div className=\"text-center\">\n <div className=\"text-2xl sm:text-3xl font-bold text-status-success-text\">\n {userStats.cartOwners.toLocaleString('en-IN')}\n </div>\n <div className=\"text-sm text-text-secondary\">Cart Owners</div>\n <div className=\"text-xs text-text-secondary\">19.1%</div>\n </div>\n <div className=\"text-center\">\n <div className=\"text-2xl sm:text-3xl font-bold text-status-warning-text\">\n {userStats.workers.toLocaleString('en-IN')}\n </div>\n <div className=\"text-sm text-text-secondary\">Workers</div>\n <div className=\"text-xs text-text-secondary\">9.7%</div>\n </div>\n <div className=\"text-center\">\n <div className=\"text-2xl sm:text-3xl font-bold text-accent-purple\">\n {userStats.investors.toLocaleString('en-IN')}\n </div>\n <div className=\"text-sm text-text-secondary\">Investors</div>\n <div className=\"text-xs text-text-secondary\">1.7%</div>\n </div>\n </div>\n <div className=\"mt-4 pt-4 border-t border-border-subtle\">\n <div className=\"flex justify-between items-center\">\n <span className=\"text-sm text-text-secondary\">User Growth (This Month)</span>\n <span className=\"text-sm font-medium text-status-success-text\">\n +{userStats.growth}%\n </span>\n </div>\n </div>\n </div>\n </div>\n )}\n\n {/* Recent Activity */}\n <div className=\"mb-8\">\n <div className=\"flex items-center justify-between mb-4\">\n <h2 className=\"text-lg font-semibold text-text-primary\">Recent Platform Activity</h2>\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin/analytics')}\n className=\"flex items-center gap-1 text-sm font-medium text-text-secondary hover:text-text-primary transition-colors\"\n >\n View all activities\n <ArrowRight className=\"h-4 w-4\" />\n </button>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface divide-y divide-border\">\n {activities.map((activity) => (\n <div key={activity.id} className=\"flex items-start gap-3 px-4 py-3\">\n <div\n className={cn(\n 'flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-bg-sunken mt-0.5',\n getActivityIconColor(activity.type)\n )}\n >\n {getActivityIcon(activity.type)}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex flex-col sm:flex-row sm:items-center justify-between gap-2\">\n <p className=\"text-sm font-medium text-text-primary\">{activity.description}</p>\n <span\n className={cn(\n 'inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium capitalize w-fit',\n getStatusBadge(activity.status)\n )}\n >\n {activity.status}\n </span>\n </div>\n <div className=\"flex flex-wrap items-center mt-1 text-xs text-text-secondary gap-3\">\n <span>{activity.timestamp}</span>\n {activity.user && (\n <span className=\"flex items-center gap-1\">\n <Users className=\"h-3 w-3\" />\n {activity.user}\n </span>\n )}\n {activity.amount && (\n <span className=\"flex items-center gap-1\">\n <IndianRupee className=\"h-3 w-3\" />₹{activity.amount.toLocaleString('en-IN')}\n </span>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n\n {/* System Health & Financial Overview */}\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6 mb-8\">\n {/* System Health */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-6 bg-gloss-card shadow-pop\">\n <div className=\"flex items-center gap-2 mb-4\">\n <ShieldCheck className=\"h-5 w-5 text-text-secondary\" />\n <h3 className=\"text-lg font-semibold text-text-primary\">System Health</h3>\n </div>\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Server className=\"h-4 w-4 text-text-secondary\" />\n <span className=\"text-sm text-text-secondary\">Server Status</span>\n </div>\n <span className=\"inline-flex items-center gap-1.5 rounded-full bg-status-success-bg-subtle/20 px-3 py-1 text-xs font-medium text-status-success-text\">\n <CheckCircle2 className=\"h-3 w-3\" />\n Healthy\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Database className=\"h-4 w-4 text-text-secondary\" />\n <span className=\"text-sm text-text-secondary\">Database Performance</span>\n </div>\n <span className=\"inline-flex items-center gap-1.5 rounded-full bg-status-success-bg-subtle/20 px-3 py-1 text-xs font-medium text-status-success-text\">\n <CheckCircle2 className=\"h-3 w-3\" />\n Optimal\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <CreditCard className=\"h-4 w-4 text-text-secondary\" />\n <span className=\"text-sm text-text-secondary\">Payment Gateway</span>\n </div>\n <span className=\"inline-flex items-center gap-1.5 rounded-full bg-status-success-bg-subtle/20 px-3 py-1 text-xs font-medium text-status-success-text\">\n <CheckCircle2 className=\"h-3 w-3\" />\n Online\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Wifi className=\"h-4 w-4 text-text-secondary\" />\n <span className=\"text-sm text-text-secondary\">API Response Time</span>\n </div>\n <span className=\"text-sm font-medium text-text-primary\">145ms</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Clock className=\"h-4 w-4 text-text-secondary\" />\n <span className=\"text-sm text-text-secondary\">Uptime (30 days)</span>\n </div>\n <span className=\"text-sm font-medium text-text-primary\">99.8%</span>\n </div>\n </div>\n </div>\n\n {/* Financial Overview */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-6 bg-gloss-card shadow-pop\">\n <div className=\"flex items-center gap-2 mb-4\">\n <IndianRupee className=\"h-5 w-5 text-text-secondary\" />\n <h3 className=\"text-lg font-semibold text-text-primary\">Financial Overview</h3>\n </div>\n <div className=\"space-y-3\">\n <div className=\"flex justify-between\">\n <span className=\"text-sm text-text-secondary\">Today&apos;s Revenue</span>\n <span className=\"font-medium text-text-primary\">₹1,45,230</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-sm text-text-secondary\">This Month</span>\n <span className=\"font-medium text-text-primary\">₹24,50,000</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-sm text-text-secondary\">Platform Commission</span>\n <span className=\"font-medium text-text-primary\">₹1,22,500</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-sm text-text-secondary\">Active Investments</span>\n <span className=\"font-medium text-text-primary\">₹1.52Cr</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-sm text-text-secondary\">Pending Payouts</span>\n <span className=\"font-medium text-text-primary\">₹45,600</span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Management Links */}\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4\">\n {[\n {\n icon: Store,\n label: 'Cart Management',\n desc: 'Approve, manage, and monitor carts',\n path: '/admin/carts',\n },\n {\n icon: Users,\n label: 'User Management',\n desc: 'Manage users and permissions',\n path: '/admin/users',\n },\n {\n icon: BarChart3,\n label: 'Analytics & Reports',\n desc: 'View detailed platform analytics',\n path: '/admin/analytics',\n },\n {\n icon: IndianRupee,\n label: 'Financial Analytics',\n desc: 'View revenue, investments, and financial metrics',\n path: '/admin/financial',\n },\n {\n icon: AlertTriangle,\n label: 'Order & Dispute Management',\n desc: 'Handle orders, disputes, and customer issues',\n path: '/admin/orders',\n },\n {\n icon: Settings,\n label: 'Platform Settings',\n desc: 'Configure platform-wide settings',\n path: '/admin/settings',\n },\n ].map((link) => {\n const LinkIcon = link.icon;\n return (\n <button\n key={link.label}\n type=\"button\"\n onClick={() => navigateTo(link.path)}\n className={cn(\n 'flex items-center gap-4 rounded-lg border border-border-seam bg-bg-surface p-4 sm:p-6 text-left transition-all bg-gloss-card shadow-pop',\n 'hover:bg-accent hover:shadow-md'\n )}\n >\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-bg-sunken text-text-secondary\">\n <LinkIcon className=\"h-5 w-5\" />\n </div>\n <div className=\"min-w-0\">\n <h3 className=\"font-semibold text-text-primary text-sm sm:text-base\">{link.label}</h3>\n <p className=\"text-xs sm:text-sm text-text-secondary\">{link.desc}</p>\n </div>\n </button>\n );\n })}\n </div>\n </PageLayout>\n );\n}\n"],"mappings":"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"}