@burdenoff/microfe-subscriberbot 2026.626.1 → 2026.628.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 (141) hide show
  1. package/dist/index.js +4 -4
  2. package/dist/subscriberbot/SubscriberBotRoot.js +61 -133
  3. package/dist/subscriberbot/SubscriberBotRoot.js.map +1 -1
  4. package/dist/subscriberbot/SubscriberBotRoutes.js +56 -187
  5. package/dist/subscriberbot/SubscriberBotRoutes.js.map +1 -1
  6. package/dist/subscriberbot/components/StateViews.js +49 -0
  7. package/dist/subscriberbot/components/StateViews.js.map +1 -0
  8. package/dist/subscriberbot/components/StatusBadge.js +45 -47
  9. package/dist/subscriberbot/components/StatusBadge.js.map +1 -1
  10. package/dist/subscriberbot/context/SubscriberBotContext.js +22 -30
  11. package/dist/subscriberbot/context/SubscriberBotContext.js.map +1 -1
  12. package/dist/subscriberbot/hooks/useSubscriberBotApi.js +342 -195
  13. package/dist/subscriberbot/hooks/useSubscriberBotApi.js.map +1 -1
  14. package/dist/subscriberbot/index.js +1 -1
  15. package/dist/subscriberbot/pages/DashboardPage.js +269 -0
  16. package/dist/subscriberbot/pages/DashboardPage.js.map +1 -0
  17. package/dist/subscriberbot/pages/InboxPage.js +186 -0
  18. package/dist/subscriberbot/pages/InboxPage.js.map +1 -0
  19. package/dist/subscriberbot/pages/InvoicesPage.js +211 -0
  20. package/dist/subscriberbot/pages/InvoicesPage.js.map +1 -0
  21. package/dist/subscriberbot/pages/WorkflowsPage.js +236 -0
  22. package/dist/subscriberbot/pages/WorkflowsPage.js.map +1 -0
  23. package/dist/subscriberbot/pages/agents/AgentDetailPage.js +160 -0
  24. package/dist/subscriberbot/pages/agents/AgentDetailPage.js.map +1 -0
  25. package/dist/subscriberbot/pages/agents/AgentNewPage.js +140 -0
  26. package/dist/subscriberbot/pages/agents/AgentNewPage.js.map +1 -0
  27. package/dist/subscriberbot/pages/agents/AgentsListPage.js +178 -0
  28. package/dist/subscriberbot/pages/agents/AgentsListPage.js.map +1 -0
  29. package/dist/subscriberbot/pages/providers/ProviderDetailPage.js +179 -0
  30. package/dist/subscriberbot/pages/providers/ProviderDetailPage.js.map +1 -0
  31. package/dist/subscriberbot/pages/providers/ProviderNewPage.js +185 -0
  32. package/dist/subscriberbot/pages/providers/ProviderNewPage.js.map +1 -0
  33. package/dist/subscriberbot/pages/providers/ProvidersListPage.js +254 -0
  34. package/dist/subscriberbot/pages/providers/ProvidersListPage.js.map +1 -0
  35. package/dist/subscriberbot/pages/relationships/RelationshipDetailPage.js +306 -0
  36. package/dist/subscriberbot/pages/relationships/RelationshipDetailPage.js.map +1 -0
  37. package/dist/subscriberbot/pages/relationships/RelationshipNewPage.js +253 -0
  38. package/dist/subscriberbot/pages/relationships/RelationshipNewPage.js.map +1 -0
  39. package/dist/subscriberbot/pages/relationships/RelationshipsListPage.js +248 -0
  40. package/dist/subscriberbot/pages/relationships/RelationshipsListPage.js.map +1 -0
  41. package/dist/subscriberbot/utils/formatters.js +50 -32
  42. package/dist/subscriberbot/utils/formatters.js.map +1 -1
  43. package/package.json +1 -1
  44. package/dist/subscriberbot/components/InvestmentCard.js +0 -97
  45. package/dist/subscriberbot/components/InvestmentCard.js.map +0 -1
  46. package/dist/subscriberbot/components/RatingDisplay.js +0 -35
  47. package/dist/subscriberbot/components/RatingDisplay.js.map +0 -1
  48. package/dist/subscriberbot/mocks/data.js +0 -1517
  49. package/dist/subscriberbot/mocks/data.js.map +0 -1
  50. package/dist/subscriberbot/mocks/users.js +0 -34
  51. package/dist/subscriberbot/mocks/users.js.map +0 -1
  52. package/dist/subscriberbot/pages/HomePage.js +0 -930
  53. package/dist/subscriberbot/pages/HomePage.js.map +0 -1
  54. package/dist/subscriberbot/pages/admin/AdminAnalyticsPage.js +0 -651
  55. package/dist/subscriberbot/pages/admin/AdminAnalyticsPage.js.map +0 -1
  56. package/dist/subscriberbot/pages/admin/AdminDashboard.js +0 -679
  57. package/dist/subscriberbot/pages/admin/AdminDashboard.js.map +0 -1
  58. package/dist/subscriberbot/pages/admin/AdminFinancialPage.js +0 -427
  59. package/dist/subscriberbot/pages/admin/AdminFinancialPage.js.map +0 -1
  60. package/dist/subscriberbot/pages/admin/AdminOrdersPage.js +0 -665
  61. package/dist/subscriberbot/pages/admin/AdminOrdersPage.js.map +0 -1
  62. package/dist/subscriberbot/pages/admin/AdminProfilePage.js +0 -261
  63. package/dist/subscriberbot/pages/admin/AdminProfilePage.js.map +0 -1
  64. package/dist/subscriberbot/pages/admin/AdminSettingsPage.js +0 -654
  65. package/dist/subscriberbot/pages/admin/AdminSettingsPage.js.map +0 -1
  66. package/dist/subscriberbot/pages/admin/CartManagementPage.js +0 -874
  67. package/dist/subscriberbot/pages/admin/CartManagementPage.js.map +0 -1
  68. package/dist/subscriberbot/pages/admin/UserManagementPage.js +0 -898
  69. package/dist/subscriberbot/pages/admin/UserManagementPage.js.map +0 -1
  70. package/dist/subscriberbot/pages/cart-owner/AnalyticsDashboard.js +0 -839
  71. package/dist/subscriberbot/pages/cart-owner/AnalyticsDashboard.js.map +0 -1
  72. package/dist/subscriberbot/pages/cart-owner/BusinessSettingsPage.js +0 -705
  73. package/dist/subscriberbot/pages/cart-owner/BusinessSettingsPage.js.map +0 -1
  74. package/dist/subscriberbot/pages/cart-owner/CartOwnerDashboard.js +0 -802
  75. package/dist/subscriberbot/pages/cart-owner/CartOwnerDashboard.js.map +0 -1
  76. package/dist/subscriberbot/pages/cart-owner/CartOwnerProfilePage.js +0 -891
  77. package/dist/subscriberbot/pages/cart-owner/CartOwnerProfilePage.js.map +0 -1
  78. package/dist/subscriberbot/pages/cart-owner/CartServiceConfigPage.js +0 -633
  79. package/dist/subscriberbot/pages/cart-owner/CartServiceConfigPage.js.map +0 -1
  80. package/dist/subscriberbot/pages/cart-owner/InventoryManagementPage.js +0 -910
  81. package/dist/subscriberbot/pages/cart-owner/InventoryManagementPage.js.map +0 -1
  82. package/dist/subscriberbot/pages/cart-owner/OrderManagementPage.js +0 -879
  83. package/dist/subscriberbot/pages/cart-owner/OrderManagementPage.js.map +0 -1
  84. package/dist/subscriberbot/pages/cart-owner/StaffManagementPage.js +0 -838
  85. package/dist/subscriberbot/pages/cart-owner/StaffManagementPage.js.map +0 -1
  86. package/dist/subscriberbot/pages/common/HelpSupportPage.js +0 -1323
  87. package/dist/subscriberbot/pages/common/HelpSupportPage.js.map +0 -1
  88. package/dist/subscriberbot/pages/common/NotificationCenterPage.js +0 -672
  89. package/dist/subscriberbot/pages/common/NotificationCenterPage.js.map +0 -1
  90. package/dist/subscriberbot/pages/common/SettingsPage.js +0 -973
  91. package/dist/subscriberbot/pages/common/SettingsPage.js.map +0 -1
  92. package/dist/subscriberbot/pages/customer/BookingDetailsPage.js +0 -626
  93. package/dist/subscriberbot/pages/customer/BookingDetailsPage.js.map +0 -1
  94. package/dist/subscriberbot/pages/customer/CartDetailPage.js +0 -654
  95. package/dist/subscriberbot/pages/customer/CartDetailPage.js.map +0 -1
  96. package/dist/subscriberbot/pages/customer/CartDiscoveryPage.js +0 -555
  97. package/dist/subscriberbot/pages/customer/CartDiscoveryPage.js.map +0 -1
  98. package/dist/subscriberbot/pages/customer/CheckoutPage.js +0 -529
  99. package/dist/subscriberbot/pages/customer/CheckoutPage.js.map +0 -1
  100. package/dist/subscriberbot/pages/customer/CustomerDashboard.js +0 -532
  101. package/dist/subscriberbot/pages/customer/CustomerDashboard.js.map +0 -1
  102. package/dist/subscriberbot/pages/customer/CustomerProfilePage.js +0 -630
  103. package/dist/subscriberbot/pages/customer/CustomerProfilePage.js.map +0 -1
  104. package/dist/subscriberbot/pages/customer/DirectServiceBookingPage.js +0 -633
  105. package/dist/subscriberbot/pages/customer/DirectServiceBookingPage.js.map +0 -1
  106. package/dist/subscriberbot/pages/customer/FavoritesPage.js +0 -484
  107. package/dist/subscriberbot/pages/customer/FavoritesPage.js.map +0 -1
  108. package/dist/subscriberbot/pages/customer/OrderHistoryPage.js +0 -446
  109. package/dist/subscriberbot/pages/customer/OrderHistoryPage.js.map +0 -1
  110. package/dist/subscriberbot/pages/customer/OrderTrackingPage.js +0 -394
  111. package/dist/subscriberbot/pages/customer/OrderTrackingPage.js.map +0 -1
  112. package/dist/subscriberbot/pages/customer/PaymentMethodsPage.js +0 -495
  113. package/dist/subscriberbot/pages/customer/PaymentMethodsPage.js.map +0 -1
  114. package/dist/subscriberbot/pages/customer/ReviewsPage.js +0 -613
  115. package/dist/subscriberbot/pages/customer/ReviewsPage.js.map +0 -1
  116. package/dist/subscriberbot/pages/customer/SavedAddressesPage.js +0 -450
  117. package/dist/subscriberbot/pages/customer/SavedAddressesPage.js.map +0 -1
  118. package/dist/subscriberbot/pages/investor/InvestmentDetailsPage.js +0 -886
  119. package/dist/subscriberbot/pages/investor/InvestmentDetailsPage.js.map +0 -1
  120. package/dist/subscriberbot/pages/investor/InvestmentOpportunitiesPage.js +0 -947
  121. package/dist/subscriberbot/pages/investor/InvestmentOpportunitiesPage.js.map +0 -1
  122. package/dist/subscriberbot/pages/investor/InvestorAnalyticsPage.js +0 -687
  123. package/dist/subscriberbot/pages/investor/InvestorAnalyticsPage.js.map +0 -1
  124. package/dist/subscriberbot/pages/investor/InvestorDashboard.js +0 -451
  125. package/dist/subscriberbot/pages/investor/InvestorDashboard.js.map +0 -1
  126. package/dist/subscriberbot/pages/investor/InvestorInvestmentsPage.js +0 -406
  127. package/dist/subscriberbot/pages/investor/InvestorInvestmentsPage.js.map +0 -1
  128. package/dist/subscriberbot/pages/investor/InvestorPortfolioPage.js +0 -575
  129. package/dist/subscriberbot/pages/investor/InvestorPortfolioPage.js.map +0 -1
  130. package/dist/subscriberbot/pages/investor/InvestorProfilePage.js +0 -1070
  131. package/dist/subscriberbot/pages/investor/InvestorProfilePage.js.map +0 -1
  132. package/dist/subscriberbot/pages/worker/TaskDetailsPage.js +0 -535
  133. package/dist/subscriberbot/pages/worker/TaskDetailsPage.js.map +0 -1
  134. package/dist/subscriberbot/pages/worker/WorkerDashboard.js +0 -666
  135. package/dist/subscriberbot/pages/worker/WorkerDashboard.js.map +0 -1
  136. package/dist/subscriberbot/pages/worker/WorkerOrdersPage.js +0 -681
  137. package/dist/subscriberbot/pages/worker/WorkerOrdersPage.js.map +0 -1
  138. package/dist/subscriberbot/pages/worker/WorkerProfilePage.js +0 -692
  139. package/dist/subscriberbot/pages/worker/WorkerProfilePage.js.map +0 -1
  140. package/dist/subscriberbot/pages/worker/WorkerSchedulePage.js +0 -588
  141. package/dist/subscriberbot/pages/worker/WorkerSchedulePage.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"AdminAnalyticsPage.js","names":[],"sources":["../../../../src/subscriberbot/pages/admin/AdminAnalyticsPage.tsx"],"sourcesContent":["/**\n * Admin Analytics Page\n * @module subscriberbot/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 { PagePurpose, EmphasisPanel } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../../components/PageLayout';\nimport { MetricsCard } from '../../components/MetricsCard';\nimport { useSubscriberBot } from '../../context/SubscriberBotContext';\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 } = useSubscriberBot();\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 <PagePurpose icon={<BarChart3 className=\"h-4 w-4\" />} className=\"mb-6\">\n The deep-dive view of how the whole marketplace is trending. Compare revenue, order\n volume, user growth and cart activity across any time period, then switch tabs to\n break the numbers down by revenue, users, orders or providers. Use it to spot what's\n working, catch problems early and decide where to invest next.\n </PagePurpose>\n\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-seam 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 — the ONE emphasis zone */}\n <EmphasisPanel 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 </EmphasisPanel>\n\n {/* Tabs */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface mb-8\">\n <div className=\"border-b border-border-seam\">\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/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/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-status-warning-border/30 bg-status-warning-bg/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/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-status-error-border/30 bg-status-error-bg/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/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\">\n Top Performing Carts\n </h3>\n <div className=\"rounded-lg border border-border-seam overflow-hidden\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b border-border-seam 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-status-info-border/30 bg-status-info-bg/10 p-6\">\n <h4 className=\"text-sm font-medium text-status-info-text mb-2\">This Month</h4>\n <p className=\"text-2xl font-bold text-status-info-text\">\n {fmtCur(analytics.revenue.thisMonth)}\n </p>\n </div>\n <div className=\"rounded-lg border border-border-seam 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/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-seam 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-seam bg-bg-sunken/20 p-6\">\n <h3 className=\"text-lg font-semibold text-text-primary mb-4\">\n User Growth Insights\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\">New Users This Month</p>\n <p className=\"text-3xl font-bold text-status-info-text\">\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\">\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\">\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\">\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-seam 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-status-info-text\">\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\">\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\">\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-status-info-text\">\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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"}