@burdenoff/microfe-subscriberbot 2026.626.2 → 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":"CartOwnerDashboard.js","names":[],"sources":["../../../../src/subscriberbot/pages/cart-owner/CartOwnerDashboard.tsx"],"sourcesContent":["/**\n * Cart Owner Dashboard Page\n *\n * Full business overview with time-of-day greeting, stats cards, cart status banner,\n * revenue table, recent orders with full details and actions, quick actions,\n * top selling items, staff overview, notifications sidebar, and monthly summary.\n *\n * @module subscriberbot/pages/cart-owner\n */\n\nimport { useState } from 'react';\nimport {\n IndianRupee,\n ShoppingCart,\n Store,\n Users,\n Star,\n TrendingUp,\n TrendingDown,\n Clock,\n ArrowRight,\n Plus,\n Settings,\n BarChart3,\n Package,\n MapPin,\n AlertCircle,\n Eye,\n Edit,\n UserCheck,\n Activity,\n Bell,\n ChevronRight,\n CheckCircle,\n XCircle,\n Flame,\n} from 'lucide-react';\nimport { EmphasisPanel, GradientText, PagePurpose, NextSteps } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../../components/PageLayout';\nimport { useSubscriberBot } from '../../context/SubscriberBotContext';\nimport { mockAdminAnalytics } from '../../mocks/data';\nimport { cn } from '../../utils/cn';\nimport { formatCurrency } from '../../utils/formatters';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ninterface BusinessMetrics {\n totalRevenue: number;\n dailyRevenue: number;\n ordersToday: number;\n totalOrders: number;\n activeOfferings: number;\n averageOrderValue: number;\n customerCount: number;\n rating: number;\n}\n\ninterface RecentOrder {\n id: string;\n customerName: string;\n items: string[];\n total: number;\n status: 'pending' | 'preparing' | 'ready' | 'delivered' | 'cancelled';\n timestamp: string;\n priority: 'normal' | 'urgent';\n}\n\ninterface CartStatus {\n isOpen: boolean;\n currentLocation: string;\n lastUpdate: string;\n operatingHours: string;\n}\n\ninterface TopSellingItem {\n name: string;\n quantity: number;\n revenue: number;\n}\n\ninterface StaffOverview {\n name: string;\n role: string;\n status: 'active' | 'on-break' | 'off-duty';\n}\n\ninterface Notification {\n id: string;\n message: string;\n type: 'info' | 'warning' | 'success';\n time: string;\n}\n\n// ============================================================================\n// Mock Data\n// ============================================================================\n\nconst metrics: BusinessMetrics = {\n totalRevenue: 45230,\n dailyRevenue: 1850,\n ordersToday: 23,\n totalOrders: 1247,\n activeOfferings: 68,\n averageOrderValue: 80,\n customerCount: 342,\n rating: 4.2,\n};\n\nconst initialOrders: RecentOrder[] = [\n {\n id: 'ORD-001',\n customerName: 'Rahul Sharma',\n items: ['Masala Dosa', 'Filter Coffee', 'Vada'],\n total: 180,\n status: 'preparing',\n timestamp: '10 mins ago',\n priority: 'urgent',\n },\n {\n id: 'ORD-002',\n customerName: 'Priya Patel',\n items: ['Idli Sambar (2)', 'Coconut Chutney'],\n total: 80,\n status: 'ready',\n timestamp: '15 mins ago',\n priority: 'normal',\n },\n {\n id: 'ORD-003',\n customerName: 'Amit Kumar',\n items: ['Rava Dosa', 'Sambar', 'Coffee'],\n total: 160,\n status: 'delivered',\n timestamp: '25 mins ago',\n priority: 'normal',\n },\n {\n id: 'ORD-004',\n customerName: 'Sneha Singh',\n items: ['Upma', 'Coffee'],\n total: 60,\n status: 'pending',\n timestamp: '2 mins ago',\n priority: 'urgent',\n },\n];\n\nconst topSellingItems: TopSellingItem[] = [\n { name: 'Masala Dosa', quantity: 245, revenue: 19600 },\n { name: 'Filter Coffee', quantity: 312, revenue: 9360 },\n { name: 'Idli Sambar', quantity: 189, revenue: 7560 },\n { name: 'Vada', quantity: 156, revenue: 4680 },\n { name: 'Rava Dosa', quantity: 98, revenue: 8820 },\n];\n\nconst staffOverview: StaffOverview[] = [\n { name: 'Ramesh Kumar', role: 'Chef', status: 'active' },\n { name: 'Priya Sharma', role: 'Server', status: 'active' },\n { name: 'Amit Patel', role: 'Delivery', status: 'on-break' },\n { name: 'Sneha Reddy', role: 'Manager', status: 'active' },\n];\n\nconst notifications: Notification[] = [\n { id: '1', message: 'New order #ORD-004 received', type: 'info', time: '2 min ago' },\n {\n id: '2',\n message: 'Low stock alert: Vada batter running low',\n type: 'warning',\n time: '15 min ago',\n },\n {\n id: '3',\n message: 'Order #ORD-003 delivered successfully',\n type: 'success',\n time: '25 min ago',\n },\n { id: '4', message: 'New 5-star review from Priya Patel', type: 'success', time: '1 hr ago' },\n { id: '5', message: 'Peak hours approaching (12-2 PM)', type: 'warning', time: '1 hr ago' },\n];\n\nconst revenueData = mockAdminAnalytics.orderTrends.slice(0, 7);\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nconst getGreeting = (): string => {\n const hour = new Date().getHours();\n if (hour < 12) return 'Good Morning';\n if (hour < 17) return 'Good Afternoon';\n return 'Good Evening';\n};\n\nconst statusStyles: Record<string, string> = {\n pending: 'bg-status-error-bg/15 text-status-error-text',\n preparing: 'bg-status-warning-bg/15 text-status-warning-text',\n ready: 'bg-status-info-bg/15 text-status-info-text',\n delivered: 'bg-status-success-bg/15 text-status-success-text',\n cancelled: 'bg-bg-sunken text-text-secondary',\n};\n\nconst staffStatusStyles: Record<string, string> = {\n active: 'bg-status-success-text',\n 'on-break': 'bg-status-warning-text',\n 'off-duty': 'bg-muted-foreground',\n};\n\nconst notificationTypeStyles: Record<string, string> = {\n info: 'text-status-info-text',\n warning: 'text-status-warning-text',\n success: 'text-status-success-text',\n};\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const CartOwnerDashboard = () => {\n const { navigateTo } = useSubscriberBot();\n const [recentOrders, setRecentOrders] = useState<RecentOrder[]>(initialOrders);\n const [cartStatus, setCartStatus] = useState<CartStatus>({\n isOpen: true,\n currentLocation: 'Koramangala 5th Block, Near BDA Complex',\n lastUpdate: new Date().toLocaleTimeString(),\n operatingHours: '9:00 AM - 9:00 PM',\n });\n\n const handleAcceptOrder = (orderId: string) => {\n setRecentOrders((prev) =>\n prev.map((o) => (o.id === orderId ? { ...o, status: 'preparing' as const } : o))\n );\n };\n\n const handleMarkReady = (orderId: string) => {\n setRecentOrders((prev) =>\n prev.map((o) => (o.id === orderId ? { ...o, status: 'ready' as const } : o))\n );\n };\n\n const toggleCartStatus = () => {\n setCartStatus((prev) => (prev ? { ...prev, isOpen: !prev.isOpen } : prev));\n };\n\n return (\n <PageLayout\n title={\n <span>\n <GradientText as=\"span\">{getGreeting()}</GradientText>,{' '}\n <span className=\"text-text-secondary font-normal\">Rajesh</span>\n </span>\n }\n description=\"Manage your service provider operations\"\n actions={\n <button\n type=\"button\"\n onClick={() => navigateTo('/cart-owner/orders')}\n className=\"inline-flex items-center gap-2 rounded-md bg-accent px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent/80 transition-colors\"\n >\n View All Orders\n <ArrowRight className=\"h-4 w-4\" />\n </button>\n }\n >\n <div className=\"space-y-6\">\n <PagePurpose icon={<Store className=\"h-4 w-4\" />}>\n Your daily command center for running the cart. Open or close service, see\n live orders as they come in, accept and mark them ready, and track today's\n revenue against yesterday. Glance at top-selling items and staff status, then\n drill into analytics or inventory when you want to dig deeper.\n </PagePurpose>\n\n <NextSteps\n storageKey=\"subscriberbot-cart-owner-dashboard\"\n steps={[\n {\n id: 'manage-orders',\n label: 'Work through incoming orders',\n description: 'Accept, prepare and mark orders ready so customers stay informed.',\n icon: <ShoppingCart className=\"h-4 w-4\" />,\n onClick: () => navigateTo('/cart-owner/orders'),\n },\n {\n id: 'update-inventory',\n label: 'Update your offerings & stock',\n description: 'Add items, set prices and flag anything out of stock.',\n icon: <Package className=\"h-4 w-4\" />,\n onClick: () => navigateTo('/cart-owner/inventory'),\n },\n {\n id: 'review-analytics',\n label: 'Review your analytics',\n description: 'Understand revenue, peak hours and what sells best.',\n icon: <BarChart3 className=\"h-4 w-4\" />,\n onClick: () => navigateTo('/cart-owner/analytics'),\n },\n {\n id: 'manage-staff',\n label: 'Manage your staff',\n description: 'Assign roles and keep your team roster up to date.',\n icon: <Users className=\"h-4 w-4\" />,\n onClick: () => navigateTo('/cart-owner/staff'),\n },\n ]}\n />\n\n {/* Cart Status Banner — the ONE primary insight zone for this page */}\n <EmphasisPanel\n className={cn(\n 'border-l-4',\n cartStatus.isOpen ? 'border-l-status-success-border' : 'border-l-status-error-border'\n )}\n >\n <div className=\"flex flex-col lg:flex-row lg:items-center lg:justify-between gap-4\">\n <div className=\"flex items-start gap-3\">\n <div\n className={cn(\n 'w-3 h-3 rounded-full mt-1 shrink-0',\n cartStatus.isOpen ? 'bg-status-success-text' : 'bg-status-error-text'\n )}\n />\n <div>\n <h3 className=\"font-semibold text-text-primary text-sm\">\n Service Status: {cartStatus.isOpen ? 'Open' : 'Closed'}\n </h3>\n <div className=\"flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-4 mt-1 text-xs text-text-secondary\">\n <span className=\"flex items-center gap-1\">\n <MapPin className=\"h-3 w-3 shrink-0\" />\n {cartStatus.currentLocation}\n </span>\n <span className=\"flex items-center gap-1\">\n <Clock className=\"h-3 w-3 shrink-0\" />\n {cartStatus.operatingHours}\n </span>\n </div>\n </div>\n </div>\n <div className=\"flex gap-2\">\n <button\n type=\"button\"\n onClick={() => navigateTo('/cart-owner/settings')}\n className=\"inline-flex items-center gap-1 rounded-md border border-border-seam px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors\"\n >\n <MapPin className=\"h-3 w-3\" />\n Update Location\n </button>\n <button\n type=\"button\"\n onClick={toggleCartStatus}\n className={cn(\n 'inline-flex items-center gap-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors',\n cartStatus.isOpen\n ? 'bg-status-error-bg/10 text-status-error-text hover:bg-status-error-bg/20'\n : 'bg-status-success-bg/10 text-status-success-text hover:bg-status-success-bg/20'\n )}\n >\n {cartStatus.isOpen ? 'Close Service' : 'Open Service'}\n </button>\n </div>\n </div>\n </EmphasisPanel>\n\n {/* Today's Performance - Stat Cards */}\n <div>\n <h2 className=\"text-base font-semibold text-text-primary mb-3\">Today's Performance</h2>\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n {[\n {\n label: 'Daily Revenue',\n value: formatCurrency(metrics.dailyRevenue, { minimumFractionDigits: 0 }),\n icon: IndianRupee,\n trend: '+15.2% vs yesterday',\n trendUp: true,\n },\n {\n label: 'Orders Today',\n value: String(metrics.ordersToday),\n icon: ShoppingCart,\n trend: '+8.5% vs yesterday',\n trendUp: true,\n },\n {\n label: 'Avg Order Value',\n value: formatCurrency(metrics.averageOrderValue, { minimumFractionDigits: 0 }),\n icon: TrendingUp,\n trend: '+3.2% vs last week',\n trendUp: true,\n },\n {\n label: 'Service Rating',\n value: metrics.rating.toFixed(1),\n icon: Star,\n trend: 'Based on 342 reviews',\n trendUp: true,\n },\n ].map((stat) => {\n const Icon = stat.icon;\n return (\n <div\n key={stat.label}\n className=\"rounded-lg border border-border-seam bg-bg-surface p-5 shadow-sm\"\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"rounded-md bg-accent p-2\">\n <Icon className=\"h-5 w-5 text-text-secondary\" />\n </div>\n <div className=\"flex items-center gap-1 text-xs text-text-secondary\">\n {stat.trendUp ? (\n <TrendingUp className=\"h-3 w-3 text-status-success-text\" />\n ) : (\n <TrendingDown className=\"h-3 w-3 text-status-error-text\" />\n )}\n <span>{stat.trend}</span>\n </div>\n </div>\n <p className=\"mt-3 text-2xl font-bold text-text-primary\">{stat.value}</p>\n <p className=\"mt-1 text-sm text-text-secondary\">{stat.label}</p>\n </div>\n );\n })}\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 gap-6 lg:grid-cols-3\">\n {/* Main Content (2/3) */}\n <div className=\"lg:col-span-2 space-y-6\">\n {/* Quick Actions */}\n <div>\n <h3 className=\"text-base font-semibold mb-3 text-text-primary\">Quick Actions</h3>\n <div className=\"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-3\">\n {[\n {\n label: 'Service Config',\n icon: Settings,\n color: 'bg-status-warning-bg/10 text-status-warning-text',\n path: '/cart-owner/service-config',\n },\n {\n label: 'Manage Offerings',\n icon: Package,\n color: 'bg-status-info-bg/10 text-status-info-text',\n path: '/cart-owner/inventory',\n },\n {\n label: 'View Orders',\n icon: ShoppingCart,\n color: 'bg-status-success-bg/10 text-status-success-text',\n path: '/cart-owner/orders',\n },\n {\n label: 'Analytics',\n icon: BarChart3,\n color: 'bg-accent-purple-subtle text-accent-purple',\n path: '/cart-owner/analytics',\n },\n {\n label: 'Staff',\n icon: UserCheck,\n color: 'bg-accent-purple-subtle text-accent-purple',\n path: '/cart-owner/staff',\n },\n ].map((action) => {\n const Icon = action.icon;\n return (\n <button\n key={action.label}\n type=\"button\"\n onClick={() => navigateTo(action.path)}\n className={cn(\n 'flex flex-col items-center gap-2 rounded-lg p-4 transition-colors hover:opacity-80',\n action.color\n )}\n >\n <Icon className=\"h-5 w-5\" />\n <span className=\"text-xs font-medium text-center\">{action.label}</span>\n </button>\n );\n })}\n </div>\n </div>\n\n {/* Recent Orders */}\n <div>\n <div className=\"flex items-center justify-between mb-3\">\n <h3 className=\"text-base font-semibold text-text-primary\">Recent Orders</h3>\n <button\n type=\"button\"\n onClick={() => navigateTo('/cart-owner/orders')}\n className=\"text-xs text-text-secondary hover:text-text-primary transition-colors\"\n >\n View All Orders\n </button>\n </div>\n\n <div className=\"space-y-3\">\n {recentOrders.map((order) => (\n <div\n key={order.id}\n className=\"rounded-lg border border-border-seam bg-bg-surface p-4 shadow-sm\"\n >\n <div className=\"flex flex-col lg:flex-row lg:items-start lg:justify-between gap-3\">\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex flex-wrap items-center gap-2 mb-1\">\n <h4 className=\"font-semibold text-text-primary text-sm\">#{order.id}</h4>\n <span\n className={cn(\n 'inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium capitalize',\n statusStyles[order.status] || 'bg-bg-sunken text-text-secondary'\n )}\n >\n {order.status}\n </span>\n {order.priority === 'urgent' && (\n <AlertCircle className=\"h-4 w-4 text-status-error-text\" />\n )}\n </div>\n <p className=\"text-xs text-text-secondary mb-1\">\n Customer: {order.customerName}\n </p>\n <p className=\"text-xs text-text-secondary mb-1 truncate\">\n Items: {order.items.join(', ')}\n </p>\n <div className=\"flex flex-wrap items-center gap-3 text-xs text-text-secondary\">\n <span className=\"font-semibold text-text-primary\">\n {formatCurrency(order.total, { minimumFractionDigits: 0 })}\n </span>\n <span className=\"flex items-center gap-1\">\n <Clock className=\"h-3 w-3\" />\n {order.timestamp}\n </span>\n </div>\n </div>\n <div className=\"flex gap-2\">\n <button\n type=\"button\"\n onClick={() => navigateTo('/cart-owner/orders')}\n className=\"inline-flex items-center gap-1 rounded-md border border-border-seam px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors\"\n >\n <Eye className=\"h-3 w-3\" />\n View\n </button>\n {order.status === 'pending' && (\n <button\n type=\"button\"\n onClick={() => handleAcceptOrder(order.id)}\n className=\"inline-flex items-center gap-1 rounded-md bg-status-success-bg/10 px-3 py-1.5 text-xs font-medium text-status-success-text hover:bg-status-success-bg/20 transition-colors\"\n >\n <CheckCircle className=\"h-3 w-3\" />\n Accept\n </button>\n )}\n {order.status === 'preparing' && (\n <button\n type=\"button\"\n onClick={() => handleMarkReady(order.id)}\n className=\"inline-flex items-center gap-1 rounded-md bg-status-info-bg/10 px-3 py-1.5 text-xs font-medium text-status-info-text hover:bg-status-info-bg/20 transition-colors\"\n >\n <CheckCircle className=\"h-3 w-3\" />\n Mark Ready\n </button>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n\n {/* Revenue Table (Last 7 Days) */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface shadow-sm\">\n <div className=\"flex items-center justify-between border-b border-border-seam px-5 py-4\">\n <h3 className=\"text-base font-semibold text-text-primary\">Revenue (Last 7 Days)</h3>\n <button\n type=\"button\"\n onClick={() => navigateTo('/cart-owner/analytics')}\n className=\"text-xs text-text-secondary hover:text-text-primary transition-colors\"\n >\n View Analytics\n </button>\n </div>\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b border-border-seam\">\n <th className=\"px-5 py-3 text-left font-medium text-text-secondary\">Date</th>\n <th className=\"px-5 py-3 text-right font-medium text-text-secondary\">\n Orders\n </th>\n <th className=\"px-5 py-3 text-right font-medium text-text-secondary\">\n Revenue\n </th>\n <th className=\"px-5 py-3 text-left font-medium text-text-secondary\">Trend</th>\n </tr>\n </thead>\n <tbody>\n {revenueData.map((day, idx) => {\n const maxRevenue = Math.max(...revenueData.map((d) => d.revenue));\n const width = (day.revenue / maxRevenue) * 100;\n return (\n <tr key={day.date} className=\"border-b border-border-seam last:border-0\">\n <td className=\"px-5 py-3 text-text-primary text-xs\">\n {new Date(day.date).toLocaleDateString('en-IN', {\n day: '2-digit',\n month: 'short',\n weekday: 'short',\n })}\n </td>\n <td className=\"px-5 py-3 text-right text-text-primary\">{day.orders}</td>\n <td className=\"px-5 py-3 text-right font-medium text-text-primary\">\n {formatCurrency(day.revenue, { minimumFractionDigits: 0 })}\n </td>\n <td className=\"px-5 py-3 w-40\">\n <div className=\"h-4 rounded bg-bg-sunken overflow-hidden\">\n <div\n className=\"h-full rounded bg-status-info-bg/60\"\n style={{ width: `${width}%` }}\n />\n </div>\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n </div>\n\n {/* This Month Summary */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-5 shadow-sm\">\n <h3 className=\"text-base font-semibold text-text-primary mb-4\">This Month Summary</h3>\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-4\">\n <div className=\"text-center p-3 rounded-lg bg-bg-sunken/50\">\n <div className=\"text-xl font-bold text-text-primary\">\n {formatCurrency(metrics.totalRevenue, { minimumFractionDigits: 0 })}\n </div>\n <div className=\"text-xs text-text-secondary mt-1\">Total Revenue</div>\n </div>\n <div className=\"text-center p-3 rounded-lg bg-bg-sunken/50\">\n <div className=\"text-xl font-bold text-text-primary\">{metrics.totalOrders}</div>\n <div className=\"text-xs text-text-secondary mt-1\">Total Orders</div>\n </div>\n <div className=\"text-center p-3 rounded-lg bg-bg-sunken/50\">\n <div className=\"text-xl font-bold text-text-primary\">{metrics.customerCount}</div>\n <div className=\"text-xs text-text-secondary mt-1\">Unique Customers</div>\n </div>\n </div>\n </div>\n </div>\n\n {/* Sidebar (1/3) */}\n <div className=\"space-y-6\">\n {/* Notifications */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-5 shadow-sm\">\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-base font-semibold text-text-primary flex items-center gap-2\">\n <Bell className=\"h-4 w-4\" />\n Notifications\n </h3>\n <span className=\"inline-flex items-center justify-center rounded-full bg-status-error-text text-text-inverse text-[10px] font-bold h-5 w-5\">\n {notifications.length}\n </span>\n </div>\n <div className=\"space-y-3\">\n {notifications.map((notif) => (\n <div key={notif.id} className=\"flex items-start gap-2\">\n <Activity\n className={cn('h-4 w-4 mt-0.5 shrink-0', notificationTypeStyles[notif.type])}\n />\n <div className=\"min-w-0\">\n <p className=\"text-xs text-text-primary leading-tight\">{notif.message}</p>\n <p className=\"text-[10px] text-text-secondary mt-0.5\">{notif.time}</p>\n </div>\n </div>\n ))}\n </div>\n </div>\n\n {/* Top Selling Items */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-5 shadow-sm\">\n <h3 className=\"text-base font-semibold text-text-primary mb-4 flex items-center gap-2\">\n <Flame className=\"h-4 w-4 text-status-warning-text\" />\n Top Selling Items\n </h3>\n <div className=\"space-y-3\">\n {topSellingItems.map((item, idx) => (\n <div key={item.name} className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2 min-w-0\">\n <span className=\"text-sm font-bold text-text-secondary w-5\">{idx + 1}</span>\n <div className=\"min-w-0\">\n <p className=\"text-xs font-medium text-text-primary truncate\">\n {item.name}\n </p>\n <p className=\"text-[10px] text-text-secondary\">{item.quantity} sold</p>\n </div>\n </div>\n <span className=\"text-xs font-semibold text-text-primary\">\n {formatCurrency(item.revenue, { minimumFractionDigits: 0 })}\n </span>\n </div>\n ))}\n </div>\n </div>\n\n {/* Staff Overview */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-5 shadow-sm\">\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-base font-semibold text-text-primary flex items-center gap-2\">\n <Users className=\"h-4 w-4\" />\n Staff Overview\n </h3>\n <button\n type=\"button\"\n onClick={() => navigateTo('/cart-owner/staff')}\n className=\"text-xs text-text-secondary hover:text-text-primary transition-colors\"\n >\n Manage\n </button>\n </div>\n <div className=\"space-y-3\">\n {staffOverview.map((member) => (\n <div key={member.name} className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <div\n className={cn('w-2 h-2 rounded-full', staffStatusStyles[member.status])}\n />\n <div>\n <p className=\"text-xs font-medium text-text-primary\">{member.name}</p>\n <p className=\"text-[10px] text-text-secondary\">{member.role}</p>\n </div>\n </div>\n <span className=\"text-[10px] capitalize text-text-secondary\">\n {member.status.replace('-', ' ')}\n </span>\n </div>\n ))}\n </div>\n </div>\n\n {/* Quick Stats */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-5 shadow-sm\">\n <h3 className=\"text-base font-semibold text-text-primary mb-4\">Quick Stats</h3>\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs text-text-secondary\">Active Offerings</span>\n <span className=\"text-sm font-semibold text-text-primary\">\n {metrics.activeOfferings}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs text-text-secondary\">Customer Rating</span>\n <span className=\"text-sm font-semibold text-text-primary flex items-center gap-1\">\n <Star className=\"h-3 w-3 text-status-warning-text fill-status-warning-text\" />\n {metrics.rating}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs text-text-secondary\">Total Customers</span>\n <span className=\"text-sm font-semibold text-text-primary\">\n {metrics.customerCount}\n </span>\n </div>\n </div>\n </div>\n\n {/* Business Settings Links */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-5 shadow-sm\">\n <h3 className=\"text-base font-semibold text-text-primary mb-3\">Business Settings</h3>\n <div className=\"space-y-2\">\n {[\n { label: 'Service Settings', icon: Settings, path: '/cart-owner/settings' },\n { label: 'Business Profile', icon: Edit, path: '/cart-owner/profile' },\n { label: 'Add Offerings', icon: Plus, path: '/cart-owner/inventory' },\n ].map((link) => {\n const Icon = link.icon;\n return (\n <button\n key={link.label}\n type=\"button\"\n onClick={() => navigateTo(link.path)}\n className=\"w-full flex items-center justify-between rounded-md border border-border-seam px-3 py-2 text-xs font-medium text-text-primary hover:bg-bg-sunken transition-colors\"\n >\n <span className=\"flex items-center gap-2\">\n <Icon className=\"h-3.5 w-3.5\" />\n {link.label}\n </span>\n <ChevronRight className=\"h-3 w-3 text-text-secondary\" />\n </button>\n );\n })}\n </div>\n </div>\n\n {/* Recent Activity */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-5 shadow-sm\">\n <h3 className=\"text-base font-semibold text-text-primary mb-3\">Recent Activity</h3>\n <div className=\"space-y-2 text-xs\">\n <div className=\"flex items-center gap-2\">\n <Activity className=\"h-3.5 w-3.5 text-status-success-text\" />\n <span className=\"text-text-secondary\">Order #ORD-003 delivered</span>\n </div>\n <div className=\"flex items-center gap-2\">\n <Activity className=\"h-3.5 w-3.5 text-status-info-text\" />\n <span className=\"text-text-secondary\">Inventory updated</span>\n </div>\n <div className=\"flex items-center gap-2\">\n <Activity className=\"h-3.5 w-3.5 text-status-warning-text\" />\n <span className=\"text-text-secondary\">New customer review</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}