@burdenoff/microfe-coolandlovely 2026.625.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 (165) hide show
  1. package/dist/coolandlovely/CoolAndLovelyRoot.js +66 -122
  2. package/dist/coolandlovely/CoolAndLovelyRoot.js.map +1 -1
  3. package/dist/coolandlovely/CoolAndLovelyRoutes.js +87 -175
  4. package/dist/coolandlovely/CoolAndLovelyRoutes.js.map +1 -1
  5. package/dist/coolandlovely/components/Field.js +81 -0
  6. package/dist/coolandlovely/components/Field.js.map +1 -0
  7. package/dist/coolandlovely/components/StateViews.js +34 -0
  8. package/dist/coolandlovely/components/StateViews.js.map +1 -0
  9. package/dist/coolandlovely/components/StatusBadge.js +25 -22
  10. package/dist/coolandlovely/components/StatusBadge.js.map +1 -1
  11. package/dist/coolandlovely/components/TagList.js +21 -0
  12. package/dist/coolandlovely/components/TagList.js.map +1 -0
  13. package/dist/coolandlovely/components/Thumbnail.js +29 -0
  14. package/dist/coolandlovely/components/Thumbnail.js.map +1 -0
  15. package/dist/coolandlovely/context/CoolAndLovelyContext.js +10 -10
  16. package/dist/coolandlovely/context/CoolAndLovelyContext.js.map +1 -1
  17. package/dist/coolandlovely/hooks/index.js +1 -0
  18. package/dist/coolandlovely/hooks/useCoolAndLovelyApi.js +462 -169
  19. package/dist/coolandlovely/hooks/useCoolAndLovelyApi.js.map +1 -1
  20. package/dist/coolandlovely/pages/HomePage.js +251 -845
  21. package/dist/coolandlovely/pages/HomePage.js.map +1 -1
  22. package/dist/coolandlovely/pages/brands/BrandDetailPage.js +319 -0
  23. package/dist/coolandlovely/pages/brands/BrandDetailPage.js.map +1 -0
  24. package/dist/coolandlovely/pages/brands/BrandFormPage.js +190 -0
  25. package/dist/coolandlovely/pages/brands/BrandFormPage.js.map +1 -0
  26. package/dist/coolandlovely/pages/brands/BrandsListPage.js +158 -0
  27. package/dist/coolandlovely/pages/brands/BrandsListPage.js.map +1 -0
  28. package/dist/coolandlovely/pages/collaborations/CollaborationDetailPage.js +253 -0
  29. package/dist/coolandlovely/pages/collaborations/CollaborationDetailPage.js.map +1 -0
  30. package/dist/coolandlovely/pages/collaborations/CollaborationFormPage.js +206 -0
  31. package/dist/coolandlovely/pages/collaborations/CollaborationFormPage.js.map +1 -0
  32. package/dist/coolandlovely/pages/collaborations/CollaborationsListPage.js +129 -0
  33. package/dist/coolandlovely/pages/collaborations/CollaborationsListPage.js.map +1 -0
  34. package/dist/coolandlovely/pages/collections/CollectionDetailPage.js +217 -0
  35. package/dist/coolandlovely/pages/collections/CollectionDetailPage.js.map +1 -0
  36. package/dist/coolandlovely/pages/collections/CollectionFormPage.js +217 -0
  37. package/dist/coolandlovely/pages/collections/CollectionFormPage.js.map +1 -0
  38. package/dist/coolandlovely/pages/collections/CollectionsListPage.js +122 -0
  39. package/dist/coolandlovely/pages/collections/CollectionsListPage.js.map +1 -0
  40. package/dist/coolandlovely/pages/items/StyleItemDetailPage.js +230 -0
  41. package/dist/coolandlovely/pages/items/StyleItemDetailPage.js.map +1 -0
  42. package/dist/coolandlovely/pages/items/StyleItemFormPage.js +276 -0
  43. package/dist/coolandlovely/pages/items/StyleItemFormPage.js.map +1 -0
  44. package/dist/coolandlovely/pages/items/StyleItemsListPage.js +170 -0
  45. package/dist/coolandlovely/pages/items/StyleItemsListPage.js.map +1 -0
  46. package/dist/coolandlovely/pages/lookbooks/LookbookDetailPage.js +124 -0
  47. package/dist/coolandlovely/pages/lookbooks/LookbookDetailPage.js.map +1 -0
  48. package/dist/coolandlovely/pages/lookbooks/LookbooksListPage.js +156 -0
  49. package/dist/coolandlovely/pages/lookbooks/LookbooksListPage.js.map +1 -0
  50. package/dist/coolandlovely/pages/looks/LookDetailPage.js +238 -0
  51. package/dist/coolandlovely/pages/looks/LookDetailPage.js.map +1 -0
  52. package/dist/coolandlovely/pages/looks/LookFormPage.js +209 -0
  53. package/dist/coolandlovely/pages/looks/LookFormPage.js.map +1 -0
  54. package/dist/coolandlovely/pages/looks/LooksListPage.js +181 -0
  55. package/dist/coolandlovely/pages/looks/LooksListPage.js.map +1 -0
  56. package/dist/coolandlovely/pages/profile/StyleProfilePage.js +224 -0
  57. package/dist/coolandlovely/pages/profile/StyleProfilePage.js.map +1 -0
  58. package/dist/coolandlovely/pages/wardrobe/WardrobeFormPage.js +173 -0
  59. package/dist/coolandlovely/pages/wardrobe/WardrobeFormPage.js.map +1 -0
  60. package/dist/coolandlovely/pages/wardrobe/WardrobeListPage.js +172 -0
  61. package/dist/coolandlovely/pages/wardrobe/WardrobeListPage.js.map +1 -0
  62. package/dist/coolandlovely/store/coolandlovelyStore.js +2 -6
  63. package/dist/coolandlovely/store/coolandlovelyStore.js.map +1 -1
  64. package/dist/coolandlovely/utils/formatters.js +31 -23
  65. package/dist/coolandlovely/utils/formatters.js.map +1 -1
  66. package/dist/coolandlovely/utils/icons.js +34 -0
  67. package/dist/coolandlovely/utils/icons.js.map +1 -0
  68. package/dist/index.js +4 -4
  69. package/package.json +1 -1
  70. package/dist/coolandlovely/components/InvestmentCard.js +0 -98
  71. package/dist/coolandlovely/components/InvestmentCard.js.map +0 -1
  72. package/dist/coolandlovely/components/RatingDisplay.js +0 -35
  73. package/dist/coolandlovely/components/RatingDisplay.js.map +0 -1
  74. package/dist/coolandlovely/mocks/data.js +0 -1517
  75. package/dist/coolandlovely/mocks/data.js.map +0 -1
  76. package/dist/coolandlovely/mocks/users.js +0 -34
  77. package/dist/coolandlovely/mocks/users.js.map +0 -1
  78. package/dist/coolandlovely/pages/admin/AdminAnalyticsPage.js +0 -651
  79. package/dist/coolandlovely/pages/admin/AdminAnalyticsPage.js.map +0 -1
  80. package/dist/coolandlovely/pages/admin/AdminDashboard.js +0 -673
  81. package/dist/coolandlovely/pages/admin/AdminDashboard.js.map +0 -1
  82. package/dist/coolandlovely/pages/admin/AdminFinancialPage.js +0 -427
  83. package/dist/coolandlovely/pages/admin/AdminFinancialPage.js.map +0 -1
  84. package/dist/coolandlovely/pages/admin/AdminOrdersPage.js +0 -665
  85. package/dist/coolandlovely/pages/admin/AdminOrdersPage.js.map +0 -1
  86. package/dist/coolandlovely/pages/admin/AdminProfilePage.js +0 -264
  87. package/dist/coolandlovely/pages/admin/AdminProfilePage.js.map +0 -1
  88. package/dist/coolandlovely/pages/admin/AdminSettingsPage.js +0 -654
  89. package/dist/coolandlovely/pages/admin/AdminSettingsPage.js.map +0 -1
  90. package/dist/coolandlovely/pages/admin/CartManagementPage.js +0 -874
  91. package/dist/coolandlovely/pages/admin/CartManagementPage.js.map +0 -1
  92. package/dist/coolandlovely/pages/admin/UserManagementPage.js +0 -898
  93. package/dist/coolandlovely/pages/admin/UserManagementPage.js.map +0 -1
  94. package/dist/coolandlovely/pages/cart-owner/AnalyticsDashboard.js +0 -842
  95. package/dist/coolandlovely/pages/cart-owner/AnalyticsDashboard.js.map +0 -1
  96. package/dist/coolandlovely/pages/cart-owner/BusinessSettingsPage.js +0 -705
  97. package/dist/coolandlovely/pages/cart-owner/BusinessSettingsPage.js.map +0 -1
  98. package/dist/coolandlovely/pages/cart-owner/CartOwnerDashboard.js +0 -802
  99. package/dist/coolandlovely/pages/cart-owner/CartOwnerDashboard.js.map +0 -1
  100. package/dist/coolandlovely/pages/cart-owner/CartOwnerProfilePage.js +0 -891
  101. package/dist/coolandlovely/pages/cart-owner/CartOwnerProfilePage.js.map +0 -1
  102. package/dist/coolandlovely/pages/cart-owner/CartServiceConfigPage.js +0 -639
  103. package/dist/coolandlovely/pages/cart-owner/CartServiceConfigPage.js.map +0 -1
  104. package/dist/coolandlovely/pages/cart-owner/InventoryManagementPage.js +0 -914
  105. package/dist/coolandlovely/pages/cart-owner/InventoryManagementPage.js.map +0 -1
  106. package/dist/coolandlovely/pages/cart-owner/OrderManagementPage.js +0 -882
  107. package/dist/coolandlovely/pages/cart-owner/OrderManagementPage.js.map +0 -1
  108. package/dist/coolandlovely/pages/cart-owner/StaffManagementPage.js +0 -831
  109. package/dist/coolandlovely/pages/cart-owner/StaffManagementPage.js.map +0 -1
  110. package/dist/coolandlovely/pages/common/HelpSupportPage.js +0 -1325
  111. package/dist/coolandlovely/pages/common/HelpSupportPage.js.map +0 -1
  112. package/dist/coolandlovely/pages/common/NotificationCenterPage.js +0 -671
  113. package/dist/coolandlovely/pages/common/NotificationCenterPage.js.map +0 -1
  114. package/dist/coolandlovely/pages/common/SettingsPage.js +0 -973
  115. package/dist/coolandlovely/pages/common/SettingsPage.js.map +0 -1
  116. package/dist/coolandlovely/pages/customer/BookingDetailsPage.js +0 -630
  117. package/dist/coolandlovely/pages/customer/BookingDetailsPage.js.map +0 -1
  118. package/dist/coolandlovely/pages/customer/CartDetailPage.js +0 -623
  119. package/dist/coolandlovely/pages/customer/CartDetailPage.js.map +0 -1
  120. package/dist/coolandlovely/pages/customer/CartDiscoveryPage.js +0 -558
  121. package/dist/coolandlovely/pages/customer/CartDiscoveryPage.js.map +0 -1
  122. package/dist/coolandlovely/pages/customer/CheckoutPage.js +0 -529
  123. package/dist/coolandlovely/pages/customer/CheckoutPage.js.map +0 -1
  124. package/dist/coolandlovely/pages/customer/CustomerDashboard.js +0 -538
  125. package/dist/coolandlovely/pages/customer/CustomerDashboard.js.map +0 -1
  126. package/dist/coolandlovely/pages/customer/CustomerProfilePage.js +0 -658
  127. package/dist/coolandlovely/pages/customer/CustomerProfilePage.js.map +0 -1
  128. package/dist/coolandlovely/pages/customer/DirectServiceBookingPage.js +0 -632
  129. package/dist/coolandlovely/pages/customer/DirectServiceBookingPage.js.map +0 -1
  130. package/dist/coolandlovely/pages/customer/FavoritesPage.js +0 -487
  131. package/dist/coolandlovely/pages/customer/FavoritesPage.js.map +0 -1
  132. package/dist/coolandlovely/pages/customer/OrderHistoryPage.js +0 -447
  133. package/dist/coolandlovely/pages/customer/OrderHistoryPage.js.map +0 -1
  134. package/dist/coolandlovely/pages/customer/OrderTrackingPage.js +0 -425
  135. package/dist/coolandlovely/pages/customer/OrderTrackingPage.js.map +0 -1
  136. package/dist/coolandlovely/pages/customer/PaymentMethodsPage.js +0 -494
  137. package/dist/coolandlovely/pages/customer/PaymentMethodsPage.js.map +0 -1
  138. package/dist/coolandlovely/pages/customer/ReviewsPage.js +0 -616
  139. package/dist/coolandlovely/pages/customer/ReviewsPage.js.map +0 -1
  140. package/dist/coolandlovely/pages/customer/SavedAddressesPage.js +0 -449
  141. package/dist/coolandlovely/pages/customer/SavedAddressesPage.js.map +0 -1
  142. package/dist/coolandlovely/pages/investor/InvestmentDetailsPage.js +0 -887
  143. package/dist/coolandlovely/pages/investor/InvestmentDetailsPage.js.map +0 -1
  144. package/dist/coolandlovely/pages/investor/InvestmentOpportunitiesPage.js +0 -945
  145. package/dist/coolandlovely/pages/investor/InvestmentOpportunitiesPage.js.map +0 -1
  146. package/dist/coolandlovely/pages/investor/InvestorAnalyticsPage.js +0 -687
  147. package/dist/coolandlovely/pages/investor/InvestorAnalyticsPage.js.map +0 -1
  148. package/dist/coolandlovely/pages/investor/InvestorDashboard.js +0 -455
  149. package/dist/coolandlovely/pages/investor/InvestorDashboard.js.map +0 -1
  150. package/dist/coolandlovely/pages/investor/InvestorInvestmentsPage.js +0 -405
  151. package/dist/coolandlovely/pages/investor/InvestorInvestmentsPage.js.map +0 -1
  152. package/dist/coolandlovely/pages/investor/InvestorPortfolioPage.js +0 -602
  153. package/dist/coolandlovely/pages/investor/InvestorPortfolioPage.js.map +0 -1
  154. package/dist/coolandlovely/pages/investor/InvestorProfilePage.js +0 -1070
  155. package/dist/coolandlovely/pages/investor/InvestorProfilePage.js.map +0 -1
  156. package/dist/coolandlovely/pages/worker/TaskDetailsPage.js +0 -533
  157. package/dist/coolandlovely/pages/worker/TaskDetailsPage.js.map +0 -1
  158. package/dist/coolandlovely/pages/worker/WorkerDashboard.js +0 -671
  159. package/dist/coolandlovely/pages/worker/WorkerDashboard.js.map +0 -1
  160. package/dist/coolandlovely/pages/worker/WorkerOrdersPage.js +0 -680
  161. package/dist/coolandlovely/pages/worker/WorkerOrdersPage.js.map +0 -1
  162. package/dist/coolandlovely/pages/worker/WorkerProfilePage.js +0 -692
  163. package/dist/coolandlovely/pages/worker/WorkerProfilePage.js.map +0 -1
  164. package/dist/coolandlovely/pages/worker/WorkerSchedulePage.js +0 -583
  165. package/dist/coolandlovely/pages/worker/WorkerSchedulePage.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"AnalyticsDashboard.js","names":[],"sources":["../../../../src/coolandlovely/pages/cart-owner/AnalyticsDashboard.tsx"],"sourcesContent":["/**\n * Analytics Dashboard Page\n *\n * Revenue overview (today/week/month/year with growth), order statistics,\n * popular times progress bars, performance metrics, top selling offerings,\n * category performance, customer overview with top customers table,\n * peak hours/days, date range selector.\n *\n * @module coolandlovely/pages/cart-owner\n */\n\nimport { useState } from'react';\nimport {\n IndianRupee,\n ShoppingCart,\n Users,\n TrendingUp,\n BarChart3,\n Clock,\n Star,\n ArrowUpRight,\n ArrowDownRight,\n Download,\n Target,\n Percent,\n ThumbsUp,\n CalendarDays,\n} from'lucide-react';\nimport { EmphasisPanel, PagePurpose } from'@burdenoff/fe-libs/ui';\nimport { PageLayout } from'../../components/PageLayout';\nimport { useCoolAndLovely } from'../../context/CoolAndLovelyContext';\nimport { mockAdminAnalytics, mockDashboardStats } from'../../mocks/data';\nimport { formatCurrency, formatNumber } from'../../utils/formatters';\nimport { cn } from'../../utils/cn';\n\n// ============================================================================\n// Mock Analytics Data (full from legacy)\n// ============================================================================\n\nconst analyticsData = {\n revenue: {\n today: 12450,\n week: 87150,\n month: 348600,\n year: 4183200,\n growth: { daily: 12.5, weekly: 8.3, monthly: 15.2 },\n },\n orders: {\n total: 156,\n pending: 3,\n completed: 145,\n cancelled: 8,\n averageValue: 285,\n averagePreparationTime: 18,\n popularTimes: [\n { hour: 8, orders: 12 },\n { hour: 9, orders: 15 },\n { hour: 10, orders: 18 },\n { hour: 11, orders: 22 },\n { hour: 12, orders: 28 },\n { hour: 13, orders: 32 },\n { hour: 14, orders: 16 },\n { hour: 15, orders: 12 },\n { hour: 16, orders: 14 },\n { hour: 17, orders: 18 },\n { hour: 18, orders: 20 },\n { hour: 19, orders: 25 },\n { hour: 20, orders: 22 },\n { hour: 21, orders: 15 },\n ],\n },\n offerings: {\n topSelling: [\n { id: '1', name: 'Masala Dosa', quantity: 245, revenue: 19600, category: 'Food & Beverage' },\n {\n id: '2',\n name: 'Haircut Service',\n quantity: 89,\n revenue: 11340,\n category: 'Personal Care & Beauty',\n },\n { id: '3', name: 'Filter Coffee', quantity: 312, revenue: 9360, category: 'Food & Beverage' },\n {\n id: '4',\n name: 'Mobile Repair',\n quantity: 67,\n revenue: 6680,\n category: 'Repair & Maintenance',\n },\n { id: '5', name: 'Pongal', quantity: 98, revenue: 5880, category: 'Food & Beverage' },\n ],\n leastSelling: [\n { id: '6', name: 'Bisi Bele Bath', quantity: 12, revenue: 1440, category: 'Food & Beverage' },\n { id: '7', name: 'Cleaning Service', quantity: 8, revenue: 640, category: 'Home Services' },\n { id: '8', name: 'Kosambari', quantity: 15, revenue: 450, category: 'Food & Beverage' },\n ],\n categories: [\n { category: 'Food & Beverage', revenue: 45000, orders: 450 },\n { category: 'Personal Care & Beauty', revenue: 25000, orders: 180 },\n { category: 'Repair & Maintenance', revenue: 15000, orders: 120 },\n { category: 'Home Services', revenue: 8000, orders: 80 },\n ],\n },\n customers: {\n total: 342,\n new: 45,\n returning: 297,\n topCustomers: [\n { id: '1', name: 'Rahul Sharma', orders: 23, totalSpent: 6555 },\n { id: '2', name: 'Priya Patel', orders: 19, totalSpent: 5415 },\n { id: '3', name: 'Amit Kumar', orders: 17, totalSpent: 4845 },\n { id: '4', name: 'Sneha Reddy', orders: 15, totalSpent: 4275 },\n { id: '5', name: 'Vijay Singh', orders: 14, totalSpent: 3990 },\n ],\n satisfaction: { rating: 4.6, reviews: 89, positiveReviews: 78 },\n },\n performance: {\n acceptanceRate: 94,\n cancellationRate: 6,\n onTimeDeliveryRate: 88,\n averageRating: 4.6,\n peakHours: [\n { hour: '12-1 PM', orders: 32 },\n { hour: '1-2 PM', orders: 28 },\n { hour: '7-8 PM', orders: 25 },\n { hour: '8-9 PM', orders: 22 },\n ],\n peakDays: [\n { day: 'Sunday', orders: 45 },\n { day: 'Saturday', orders: 42 },\n { day: 'Friday', orders: 38 },\n ],\n },\n};\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const AnalyticsDashboard = () => {\n const { navigateTo } = useCoolAndLovely();\n const [dateRange, setDateRange] = useState('week');\n\n const maxPopularTime = Math.max(...analyticsData.orders.popularTimes.map((t) => t.orders));\n const maxCategoryRevenue = Math.max(...analyticsData.offerings.categories.map((c) => c.revenue));\n const maxPeakHourOrders = Math.max(...analyticsData.performance.peakHours.map((h) => h.orders));\n const maxPeakDayOrders = Math.max(...analyticsData.performance.peakDays.map((d) => d.orders));\n\n const formatPct = (v: number) => `${v > 0 ? '+' : ''}${v}%`;\n\n return (\n <PageLayout\n title=\"Analytics Dashboard\"\n description=\"Business performance insights and data\"\n actions={\n <div className=\"flex items-center gap-2\">\n <select\n value={dateRange}\n onChange={(e) => setDateRange(e.target.value)}\n className=\"rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n >\n <option value=\"today\">Today</option>\n <option value=\"week\">This Week</option>\n <option value=\"month\">This Month</option>\n <option value=\"year\">This Year</option>\n </select>\n <button\n type=\"button\"\n onClick={() => alert('Export feature coming soon!')}\n className=\"inline-flex items-center gap-1.5 rounded-md border border-border-subtle px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken transition-colors\"\n >\n <Download className=\"h-4 w-4\" />\n Export\n </button>\n </div>\n }\n >\n <PagePurpose className=\"mb-6\" icon={<BarChart3 className=\"h-4 w-4\" />}>\n See how your business is actually doing. Track revenue across day, week,\n month and year, understand your order patterns and busiest times, and\n export the numbers — turning raw sales into decisions about staffing,\n stock and hours.\n </PagePurpose>\n\n <div className=\"space-y-6\">\n {/* Revenue Overview — primary emphasis zone */}\n <EmphasisPanel className=\"p-5\">\n <h2 className=\"text-base font-semibold text-text-primary mb-3\">Revenue Overview</h2>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4\">\n {[\n {\n label: \"Today's Revenue\",\n value: analyticsData.revenue.today,\n growth: analyticsData.revenue.growth.daily,\n },\n {\n label: 'This Week',\n value: analyticsData.revenue.week,\n growth: analyticsData.revenue.growth.weekly,\n },\n {\n label: 'This Month',\n value: analyticsData.revenue.month,\n growth: analyticsData.revenue.growth.monthly,\n },\n { label: 'This Year', value: analyticsData.revenue.year, growth: null },\n ].map((card) => (\n <div\n key={card.label}\n className=\"rounded-lg border border-border-seam bg-bg-surface p-5 bg-gloss-card shadow-pop\"\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"rounded-md bg-accent p-2\">\n <IndianRupee className=\"h-5 w-5 text-text-secondary\" />\n </div>\n {card.growth !== null && (\n <div\n className={cn(\n 'flex items-center gap-1 text-xs font-medium',\n card.growth >= 0\n ? 'text-status-success-text'\n : 'text-status-error-text'\n )}\n >\n {card.growth >= 0 ? (\n <ArrowUpRight className=\"h-3.5 w-3.5\" />\n ) : (\n <ArrowDownRight className=\"h-3.5 w-3.5\" />\n )}\n {formatPct(card.growth)}\n </div>\n )}\n </div>\n <p className=\"mt-3 text-2xl font-bold text-text-primary\">\n {formatCurrency(card.value, { minimumFractionDigits: 0 })}\n </p>\n <p className=\"mt-1 text-sm text-text-secondary\">{card.label}</p>\n </div>\n ))}\n </div>\n </EmphasisPanel>\n\n {/* Order Statistics + Popular Times */}\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n {/* Order Statistics */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface shadow-sm\">\n <div className=\"border-b border-border-subtle px-5 py-4\">\n <h2 className=\"text-base font-semibold text-text-primary flex items-center gap-2\">\n <ShoppingCart className=\"h-4 w-4 text-text-secondary\" />\n Order Statistics\n </h2>\n </div>\n <div className=\"p-5\">\n <div className=\"grid grid-cols-2 gap-4 mb-5\">\n <div>\n <p className=\"text-xs text-text-secondary\">Total Orders</p>\n <p className=\"text-2xl font-bold text-text-primary\">{analyticsData.orders.total}</p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Avg. Order Value</p>\n <p className=\"text-2xl font-bold text-text-primary\">\n {formatCurrency(analyticsData.orders.averageValue, {\n minimumFractionDigits: 0,\n })}\n </p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Completed</p>\n <p className=\"text-xl font-bold text-status-success-text\">\n {analyticsData.orders.completed}\n </p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Cancelled</p>\n <p className=\"text-xl font-bold text-status-error-text\">\n {analyticsData.orders.cancelled}\n </p>\n </div>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary mb-1\">Avg. Preparation Time</p>\n <p className=\"text-sm font-medium text-text-primary\">\n {analyticsData.orders.averagePreparationTime} minutes\n </p>\n </div>\n </div>\n </div>\n\n {/* Popular Times */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface shadow-sm\">\n <div className=\"border-b border-border-subtle px-5 py-4\">\n <h2 className=\"text-base font-semibold text-text-primary flex items-center gap-2\">\n <Clock className=\"h-4 w-4 text-text-secondary\" />\n Popular Times\n </h2>\n </div>\n <div className=\"p-5 space-y-2\">\n {analyticsData.orders.popularTimes.map((t) => {\n const pct = (t.orders / maxPopularTime) * 100;\n const label = `${t.hour}:00`;\n return (\n <div key={t.hour}>\n <div className=\"flex items-center justify-between text-xs mb-0.5\">\n <span className=\"text-text-primary w-14\">{label}</span>\n <span className=\"text-text-secondary\">{t.orders} orders</span>\n </div>\n <div className=\"h-2 rounded-full bg-bg-sunken overflow-hidden\">\n <div\n className={cn(\n 'h-full rounded-full transition-all',\n t.orders > 25\n ? 'bg-status-error-bg-subtle/60'\n : t.orders > 18\n ? 'bg-status-warning-bg-subtle/60'\n : 'bg-status-success-bg-subtle/60'\n )}\n style={{ width: `${pct}%` }}\n />\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n\n {/* Performance Metrics */}\n <section>\n <h2 className=\"text-base font-semibold text-text-primary mb-3\">Performance Metrics</h2>\n <div className=\"grid grid-cols-2 lg:grid-cols-4 gap-4\">\n {[\n {\n label: 'Acceptance Rate',\n value: `${analyticsData.performance.acceptanceRate}%`,\n icon: Target,\n color: 'text-status-success-text',\n },\n {\n label: 'Cancellation Rate',\n value: `${analyticsData.performance.cancellationRate}%`,\n icon: Percent,\n color: 'text-status-error-text',\n },\n {\n label: 'On-Time Delivery',\n value: `${analyticsData.performance.onTimeDeliveryRate}%`,\n icon: Clock,\n color: 'text-accent-blue',\n },\n {\n label: 'Average Rating',\n value: `${analyticsData.performance.averageRating}`,\n icon: Star,\n color: 'text-status-warning-text',\n },\n ].map((metric) => {\n const Icon = metric.icon;\n return (\n <div\n key={metric.label}\n className=\"rounded-lg border border-border-seam bg-bg-surface p-5 bg-gloss-card shadow-pop\"\n >\n <div className=\"flex items-center gap-2 mb-2\">\n <Icon className={cn('h-5 w-5', metric.color)} />\n <span className=\"text-xs text-text-secondary\">{metric.label}</span>\n </div>\n <p className={cn('text-2xl font-bold', metric.color)}>{metric.value}</p>\n </div>\n );\n })}\n </div>\n </section>\n\n {/* Top Selling + Category Performance */}\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n {/* Top Selling Offerings */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface shadow-sm\">\n <div className=\"border-b border-border-subtle px-5 py-4\">\n <h2 className=\"text-base font-semibold text-text-primary flex items-center gap-2\">\n <TrendingUp className=\"h-4 w-4 text-text-secondary\" />\n Top Selling Offerings\n </h2>\n </div>\n <div className=\"divide-y divide-border\">\n {analyticsData.offerings.topSelling.map((item, i) => (\n <div key={item.id} className=\"flex items-center justify-between px-5 py-3\">\n <div className=\"flex items-center gap-3\">\n <span className=\"flex h-6 w-6 items-center justify-center rounded-full bg-bg-sunken text-xs font-medium text-text-secondary\">\n {i + 1}\n </span>\n <div>\n <p className=\"text-sm font-medium text-text-primary\">{item.name}</p>\n <p className=\"text-xs text-text-secondary\">\n {item.category} | {item.quantity} sold\n </p>\n </div>\n </div>\n <span className=\"text-sm font-medium text-text-primary\">\n {formatCurrency(item.revenue, { minimumFractionDigits: 0 })}\n </span>\n </div>\n ))}\n </div>\n {/* Least Selling */}\n <div className=\"border-t border-border-subtle px-5 py-3\">\n <p className=\"text-xs font-medium text-text-secondary mb-2\">Least Selling</p>\n {analyticsData.offerings.leastSelling.map((item) => (\n <div key={item.id} className=\"flex items-center justify-between py-1.5\">\n <span className=\"text-xs text-text-secondary\">{item.name}</span>\n <span className=\"text-xs text-text-secondary\">\n {item.quantity} sold |{' '}\n {formatCurrency(item.revenue, { minimumFractionDigits: 0 })}\n </span>\n </div>\n ))}\n </div>\n </div>\n\n {/* Category Performance */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface shadow-sm\">\n <div className=\"border-b border-border-subtle px-5 py-4\">\n <h2 className=\"text-base font-semibold text-text-primary flex items-center gap-2\">\n <BarChart3 className=\"h-4 w-4 text-text-secondary\" />\n Category Performance\n </h2>\n </div>\n <div className=\"p-5 space-y-4\">\n {analyticsData.offerings.categories.map((cat) => {\n const pct = (cat.revenue / maxCategoryRevenue) * 100;\n return (\n <div key={cat.category}>\n <div className=\"flex items-center justify-between text-sm mb-1\">\n <span className=\"text-text-primary\">{cat.category}</span>\n <span className=\"text-text-secondary\">\n {formatCurrency(cat.revenue, { minimumFractionDigits: 0 })} ({cat.orders}{' '}\n orders)\n </span>\n </div>\n <div className=\"h-2.5 rounded-full bg-bg-sunken overflow-hidden\">\n <div\n className=\"h-full rounded-full bg-accent-blue-subtle/60\"\n style={{ width: `${pct}%` }}\n />\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n\n {/* Customer Overview + Peak Hours/Days */}\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n {/* Customer Overview */}\n <div className=\"lg:col-span-2 rounded-lg border border-border-subtle bg-bg-surface shadow-sm\">\n <div className=\"border-b border-border-subtle px-5 py-4\">\n <h2 className=\"text-base font-semibold text-text-primary flex items-center gap-2\">\n <Users className=\"h-4 w-4 text-text-secondary\" />\n Customer Overview\n </h2>\n </div>\n <div className=\"p-5\">\n {/* Customer Stats */}\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-4 mb-5\">\n <div>\n <p className=\"text-xs text-text-secondary\">Total Customers</p>\n <p className=\"text-xl font-bold text-text-primary\">\n {analyticsData.customers.total}\n </p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">New This Month</p>\n <p className=\"text-xl font-bold text-accent-blue\">\n {analyticsData.customers.new}\n </p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Returning</p>\n <p className=\"text-xl font-bold text-status-success-text\">\n {analyticsData.customers.returning}\n </p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Satisfaction</p>\n <p className=\"text-xl font-bold text-status-warning-text flex items-center gap-1\">\n <Star className=\"h-4 w-4 fill-status-warning-text text-status-warning-text\" />\n {analyticsData.customers.satisfaction.rating}\n </p>\n </div>\n </div>\n\n {/* Top Customers Table */}\n <p className=\"text-sm font-medium text-text-primary mb-2\">Top Customers</p>\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b border-border-subtle\">\n <th className=\"py-2 text-left font-medium text-text-secondary\">#</th>\n <th className=\"py-2 text-left font-medium text-text-secondary\">Customer</th>\n <th className=\"py-2 text-right font-medium text-text-secondary\">Orders</th>\n <th className=\"py-2 text-right font-medium text-text-secondary\">\n Total Spent\n </th>\n </tr>\n </thead>\n <tbody>\n {analyticsData.customers.topCustomers.map((cust, i) => (\n <tr key={cust.id} className=\"border-b border-border-subtle last:border-0\">\n <td className=\"py-2.5 text-text-secondary\">{i + 1}</td>\n <td className=\"py-2.5 font-medium text-text-primary\">{cust.name}</td>\n <td className=\"py-2.5 text-right text-text-primary\">{cust.orders}</td>\n <td className=\"py-2.5 text-right font-medium text-text-primary\">\n {formatCurrency(cust.totalSpent, { minimumFractionDigits: 0 })}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n\n {/* Reviews Summary */}\n <div className=\"mt-4 flex items-center gap-4 text-sm\">\n <div className=\"flex items-center gap-1.5\">\n <ThumbsUp className=\"h-4 w-4 text-status-success-text\" />\n <span className=\"text-text-secondary\">\n {analyticsData.customers.satisfaction.positiveReviews}/\n {analyticsData.customers.satisfaction.reviews} positive reviews\n </span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Peak Hours & Days */}\n <div className=\"space-y-6\">\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface shadow-sm\">\n <div className=\"border-b border-border-subtle px-5 py-4\">\n <h2 className=\"text-base font-semibold text-text-primary flex items-center gap-2\">\n <Clock className=\"h-4 w-4 text-text-secondary\" />\n Peak Hours\n </h2>\n </div>\n <div className=\"p-5 space-y-3\">\n {analyticsData.performance.peakHours.map((h) => {\n const pct = (h.orders / maxPeakHourOrders) * 100;\n return (\n <div key={h.hour}>\n <div className=\"flex items-center justify-between text-xs mb-1\">\n <span className=\"text-text-primary\">{h.hour}</span>\n <span className=\"text-text-secondary\">{h.orders} orders</span>\n </div>\n <div className=\"h-2 rounded-full bg-bg-sunken overflow-hidden\">\n <div\n className={cn(\n 'h-full rounded-full',\n h.orders > 28\n ? 'bg-status-error-bg-subtle/60'\n : h.orders > 22\n ? 'bg-status-warning-bg-subtle/60'\n : 'bg-status-success-bg-subtle/60'\n )}\n style={{ width: `${pct}%` }}\n />\n </div>\n </div>\n );\n })}\n </div>\n </div>\n\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface shadow-sm\">\n <div className=\"border-b border-border-subtle px-5 py-4\">\n <h2 className=\"text-base font-semibold text-text-primary flex items-center gap-2\">\n <CalendarDays className=\"h-4 w-4 text-text-secondary\" />\n Peak Days\n </h2>\n </div>\n <div className=\"p-5 space-y-3\">\n {analyticsData.performance.peakDays.map((d) => {\n const pct = (d.orders / maxPeakDayOrders) * 100;\n return (\n <div key={d.day}>\n <div className=\"flex items-center justify-between text-xs mb-1\">\n <span className=\"text-text-primary\">{d.day}</span>\n <span className=\"text-text-secondary\">{d.orders} orders</span>\n </div>\n <div className=\"h-2 rounded-full bg-bg-sunken overflow-hidden\">\n <div\n className=\"h-full rounded-full bg-accent-blue-subtle/60\"\n style={{ width: `${pct}%` }}\n />\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </div>\n\n {/* Order Trends Table (from mockAdminAnalytics) */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface shadow-sm\">\n <div className=\"border-b border-border-subtle px-5 py-4\">\n <h2 className=\"text-base font-semibold text-text-primary flex items-center gap-2\">\n <TrendingUp className=\"h-4 w-4 text-text-secondary\" />\n Daily Order Trends\n </h2>\n </div>\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b border-border-subtle\">\n <th className=\"px-5 py-2.5 text-left font-medium text-text-secondary\">Date</th>\n <th className=\"px-5 py-2.5 text-right font-medium text-text-secondary\">\n Orders\n </th>\n <th className=\"px-5 py-2.5 text-right font-medium text-text-secondary\">\n Revenue\n </th>\n </tr>\n </thead>\n <tbody>\n {mockAdminAnalytics.orderTrends.map((day) => (\n <tr key={day.date} className=\"border-b border-border-subtle last:border-0\">\n <td className=\"px-5 py-2.5 text-text-primary\">\n {new Date(day.date).toLocaleDateString('en-IN', {\n day: '2-digit',\n month: 'short',\n })}\n </td>\n <td className=\"px-5 py-2.5 text-right text-text-primary\">{day.orders}</td>\n <td className=\"px-5 py-2.5 text-right font-medium text-text-primary\">\n {formatCurrency(day.revenue, { minimumFractionDigits: 0 })}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n\n {/* Customer Growth Mini Chart (from mockAdminAnalytics) */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface shadow-sm\">\n <div className=\"border-b border-border-subtle px-5 py-4\">\n <h2 className=\"text-base font-semibold text-text-primary flex items-center gap-2\">\n <Users className=\"h-4 w-4 text-text-secondary\" />\n Monthly Customer Growth\n </h2>\n </div>\n <div className=\"p-5\">\n <div className=\"flex items-end gap-1.5 h-20\">\n {mockAdminAnalytics.customerGrowth.map((month) => {\n const maxNew = Math.max(\n ...mockAdminAnalytics.customerGrowth.map((m) => m.newCustomers)\n );\n const height = (month.newCustomers / maxNew) * 100;\n return (\n <div\n key={month.month}\n className=\"flex-1 rounded-t bg-accent-blue-subtle/40 hover:bg-accent-blue-subtle/60 transition-colors cursor-default\"\n style={{ height: `${height}%` }}\n title={`${month.month}: ${month.newCustomers} new customers`}\n />\n );\n })}\n </div>\n <div className=\"flex justify-between mt-2 text-xs text-text-secondary\">\n {mockAdminAnalytics.customerGrowth.length > 0 && (\n <>\n <span>{mockAdminAnalytics.customerGrowth[0].month}</span>\n <span>\n {\n mockAdminAnalytics.customerGrowth[\n mockAdminAnalytics.customerGrowth.length - 1\n ].month\n }\n </span>\n </>\n )}\n </div>\n </div>\n </div>\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}