@burdenoff/microfe-subscriberbot 2026.624.1 → 2026.625.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/dist/subscriberbot/components/EmptyState.js +17 -10
  2. package/dist/subscriberbot/components/EmptyState.js.map +1 -1
  3. package/dist/subscriberbot/components/InvestmentCard.js +23 -22
  4. package/dist/subscriberbot/components/InvestmentCard.js.map +1 -1
  5. package/dist/subscriberbot/components/MetricsCard.js +15 -12
  6. package/dist/subscriberbot/components/MetricsCard.js.map +1 -1
  7. package/dist/subscriberbot/components/PageLayout.js +27 -15
  8. package/dist/subscriberbot/components/PageLayout.js.map +1 -1
  9. package/dist/subscriberbot/components/RatingDisplay.js +3 -3
  10. package/dist/subscriberbot/components/RatingDisplay.js.map +1 -1
  11. package/dist/subscriberbot/components/StatusBadge.js +25 -13
  12. package/dist/subscriberbot/components/StatusBadge.js.map +1 -1
  13. package/dist/subscriberbot/context/SubscriberBotContext.js.map +1 -1
  14. package/dist/subscriberbot/pages/HomePage.js +67 -63
  15. package/dist/subscriberbot/pages/HomePage.js.map +1 -1
  16. package/dist/subscriberbot/pages/admin/AdminAnalyticsPage.js +42 -42
  17. package/dist/subscriberbot/pages/admin/AdminAnalyticsPage.js.map +1 -1
  18. package/dist/subscriberbot/pages/admin/AdminDashboard.js +42 -41
  19. package/dist/subscriberbot/pages/admin/AdminDashboard.js.map +1 -1
  20. package/dist/subscriberbot/pages/admin/AdminFinancialPage.js +14 -14
  21. package/dist/subscriberbot/pages/admin/AdminFinancialPage.js.map +1 -1
  22. package/dist/subscriberbot/pages/admin/AdminOrdersPage.js +24 -24
  23. package/dist/subscriberbot/pages/admin/AdminOrdersPage.js.map +1 -1
  24. package/dist/subscriberbot/pages/admin/AdminProfilePage.js +11 -11
  25. package/dist/subscriberbot/pages/admin/AdminProfilePage.js.map +1 -1
  26. package/dist/subscriberbot/pages/admin/AdminSettingsPage.js +14 -14
  27. package/dist/subscriberbot/pages/admin/AdminSettingsPage.js.map +1 -1
  28. package/dist/subscriberbot/pages/admin/CartManagementPage.js +41 -41
  29. package/dist/subscriberbot/pages/admin/CartManagementPage.js.map +1 -1
  30. package/dist/subscriberbot/pages/admin/UserManagementPage.js +47 -47
  31. package/dist/subscriberbot/pages/admin/UserManagementPage.js.map +1 -1
  32. package/dist/subscriberbot/pages/cart-owner/AnalyticsDashboard.js +44 -44
  33. package/dist/subscriberbot/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  34. package/dist/subscriberbot/pages/cart-owner/BusinessSettingsPage.js +17 -17
  35. package/dist/subscriberbot/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
  36. package/dist/subscriberbot/pages/cart-owner/CartOwnerDashboard.js +94 -89
  37. package/dist/subscriberbot/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  38. package/dist/subscriberbot/pages/cart-owner/CartOwnerProfilePage.js +58 -58
  39. package/dist/subscriberbot/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  40. package/dist/subscriberbot/pages/cart-owner/CartServiceConfigPage.js +51 -51
  41. package/dist/subscriberbot/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
  42. package/dist/subscriberbot/pages/cart-owner/InventoryManagementPage.js +54 -54
  43. package/dist/subscriberbot/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  44. package/dist/subscriberbot/pages/cart-owner/OrderManagementPage.js +54 -53
  45. package/dist/subscriberbot/pages/cart-owner/OrderManagementPage.js.map +1 -1
  46. package/dist/subscriberbot/pages/cart-owner/StaffManagementPage.js +51 -51
  47. package/dist/subscriberbot/pages/cart-owner/StaffManagementPage.js.map +1 -1
  48. package/dist/subscriberbot/pages/common/HelpSupportPage.js +65 -65
  49. package/dist/subscriberbot/pages/common/HelpSupportPage.js.map +1 -1
  50. package/dist/subscriberbot/pages/common/NotificationCenterPage.js +46 -45
  51. package/dist/subscriberbot/pages/common/NotificationCenterPage.js.map +1 -1
  52. package/dist/subscriberbot/pages/common/SettingsPage.js +46 -46
  53. package/dist/subscriberbot/pages/common/SettingsPage.js.map +1 -1
  54. package/dist/subscriberbot/pages/customer/BookingDetailsPage.js +24 -23
  55. package/dist/subscriberbot/pages/customer/BookingDetailsPage.js.map +1 -1
  56. package/dist/subscriberbot/pages/customer/CartDetailPage.js +31 -30
  57. package/dist/subscriberbot/pages/customer/CartDetailPage.js.map +1 -1
  58. package/dist/subscriberbot/pages/customer/CartDiscoveryPage.js +25 -23
  59. package/dist/subscriberbot/pages/customer/CartDiscoveryPage.js.map +1 -1
  60. package/dist/subscriberbot/pages/customer/CheckoutPage.js +26 -26
  61. package/dist/subscriberbot/pages/customer/CheckoutPage.js.map +1 -1
  62. package/dist/subscriberbot/pages/customer/CustomerDashboard.js +39 -38
  63. package/dist/subscriberbot/pages/customer/CustomerDashboard.js.map +1 -1
  64. package/dist/subscriberbot/pages/customer/CustomerProfilePage.js +36 -36
  65. package/dist/subscriberbot/pages/customer/CustomerProfilePage.js.map +1 -1
  66. package/dist/subscriberbot/pages/customer/DirectServiceBookingPage.js +37 -36
  67. package/dist/subscriberbot/pages/customer/DirectServiceBookingPage.js.map +1 -1
  68. package/dist/subscriberbot/pages/customer/FavoritesPage.js +16 -15
  69. package/dist/subscriberbot/pages/customer/FavoritesPage.js.map +1 -1
  70. package/dist/subscriberbot/pages/customer/OrderHistoryPage.js +19 -17
  71. package/dist/subscriberbot/pages/customer/OrderHistoryPage.js.map +1 -1
  72. package/dist/subscriberbot/pages/customer/OrderTrackingPage.js +21 -20
  73. package/dist/subscriberbot/pages/customer/OrderTrackingPage.js.map +1 -1
  74. package/dist/subscriberbot/pages/customer/PaymentMethodsPage.js +22 -21
  75. package/dist/subscriberbot/pages/customer/PaymentMethodsPage.js.map +1 -1
  76. package/dist/subscriberbot/pages/customer/ReviewsPage.js +29 -28
  77. package/dist/subscriberbot/pages/customer/ReviewsPage.js.map +1 -1
  78. package/dist/subscriberbot/pages/customer/SavedAddressesPage.js +26 -25
  79. package/dist/subscriberbot/pages/customer/SavedAddressesPage.js.map +1 -1
  80. package/dist/subscriberbot/pages/investor/InvestmentDetailsPage.js +46 -46
  81. package/dist/subscriberbot/pages/investor/InvestmentDetailsPage.js.map +1 -1
  82. package/dist/subscriberbot/pages/investor/InvestmentOpportunitiesPage.js +34 -32
  83. package/dist/subscriberbot/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  84. package/dist/subscriberbot/pages/investor/InvestorAnalyticsPage.js +38 -38
  85. package/dist/subscriberbot/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  86. package/dist/subscriberbot/pages/investor/InvestorDashboard.js +26 -25
  87. package/dist/subscriberbot/pages/investor/InvestorDashboard.js.map +1 -1
  88. package/dist/subscriberbot/pages/investor/InvestorInvestmentsPage.js +12 -11
  89. package/dist/subscriberbot/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  90. package/dist/subscriberbot/pages/investor/InvestorPortfolioPage.js +25 -25
  91. package/dist/subscriberbot/pages/investor/InvestorPortfolioPage.js.map +1 -1
  92. package/dist/subscriberbot/pages/investor/InvestorProfilePage.js +58 -58
  93. package/dist/subscriberbot/pages/investor/InvestorProfilePage.js.map +1 -1
  94. package/dist/subscriberbot/pages/worker/TaskDetailsPage.js +26 -25
  95. package/dist/subscriberbot/pages/worker/TaskDetailsPage.js.map +1 -1
  96. package/dist/subscriberbot/pages/worker/WorkerDashboard.js +48 -47
  97. package/dist/subscriberbot/pages/worker/WorkerDashboard.js.map +1 -1
  98. package/dist/subscriberbot/pages/worker/WorkerOrdersPage.js +41 -40
  99. package/dist/subscriberbot/pages/worker/WorkerOrdersPage.js.map +1 -1
  100. package/dist/subscriberbot/pages/worker/WorkerProfilePage.js +44 -44
  101. package/dist/subscriberbot/pages/worker/WorkerProfilePage.js.map +1 -1
  102. package/dist/subscriberbot/pages/worker/WorkerSchedulePage.js +32 -30
  103. package/dist/subscriberbot/pages/worker/WorkerSchedulePage.js.map +1 -1
  104. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"CartManagementPage.js","names":[],"sources":["../../../../src/subscriberbot/pages/admin/CartManagementPage.tsx"],"sourcesContent":["/**\n * Cart Management Page\n * @module subscriberbot/pages/admin\n *\n * Full-featured cart management with 8 stats cards, 6 filter controls,\n * dual layout (mobile cards + desktop table), cart action modal\n * (view/approve/reject with reason/suspend/inspect), loading state.\n */\n\nimport { useState, useEffect, useCallback, useMemo } from 'react';\nimport {\n Search,\n Store,\n CheckCircle2,\n XCircle,\n Pause,\n Star,\n Eye,\n ClipboardCheck,\n Loader2,\n X,\n AlertTriangle,\n} from 'lucide-react';\nimport { PageLayout } from '../../components/PageLayout';\nimport { useSubscriberBot } from '../../context/SubscriberBotContext';\nimport { cn } from '../../utils/cn';\nimport { formatCurrency } from '../../utils/formatters';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\ninterface ExtendedCart {\n id: string;\n name: string;\n description: string;\n category: string;\n image: string;\n ownerName: string;\n ownerEmail: string;\n ownerPhone: string;\n address: string;\n city: string;\n isActive: boolean;\n isVerified: boolean;\n rating: number;\n reviewCount: number;\n monthlyRevenue: number;\n monthlyOrders: number;\n complianceScore: number;\n documentsSubmitted: number;\n documentsRequired: number;\n inspectionStatus: 'pending' | 'scheduled' | 'completed' | 'failed';\n inspectionDate?: string;\n rejectionReason?: string;\n applicationDate: string;\n licenseNumber?: string;\n}\n\ninterface CartFilters {\n searchQuery: string;\n status: string;\n verificationStatus: string;\n category: string;\n location: string;\n sortBy: string;\n}\n\ninterface CartStats {\n totalCarts: number;\n activeCarts: number;\n pendingApproval: number;\n rejectedCarts: number;\n totalRevenue: number;\n averageRating: number;\n complianceRate: number;\n newApplications: number;\n}\n\ntype CartActionType = 'view' | 'approve' | 'reject' | 'suspend' | 'inspect';\n\n/* ------------------------------------------------------------------ */\n/* Mock data */\n/* ------------------------------------------------------------------ */\n\nconst mockCarts: ExtendedCart[] = [\n {\n id: 'cart-001',\n name: 'South Indian Express',\n description: 'Authentic South Indian breakfast and snacks',\n category: 'Food & Beverage',\n image: 'https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=200',\n ownerName: 'Rajesh Kumar',\n ownerEmail: 'rajesh@gmail.com',\n ownerPhone: '+91 98765 43210',\n address: 'MG Road, Bangalore',\n city: 'Bangalore',\n isActive: true,\n isVerified: true,\n rating: 4.8,\n reviewCount: 342,\n monthlyRevenue: 185000,\n monthlyOrders: 1250,\n complianceScore: 95,\n documentsSubmitted: 8,\n documentsRequired: 8,\n inspectionStatus: 'completed',\n inspectionDate: '2023-07-01T10:00:00Z',\n applicationDate: '2023-06-15T09:30:00Z',\n licenseNumber: 'BBMP/2023/001234',\n },\n {\n id: 'cart-002',\n name: 'Fresh Juice Corner',\n description: 'Fresh fruit juices and smoothies',\n category: 'Beverages',\n image: 'https://images.unsplash.com/photo-1600271886742-f049cd451bba?w=200',\n ownerName: 'Priya Sharma',\n ownerEmail: 'priya@gmail.com',\n ownerPhone: '+91 98765 43211',\n address: 'Koramangala, Bangalore',\n city: 'Bangalore',\n isActive: false,\n isVerified: false,\n rating: 0,\n reviewCount: 0,\n monthlyRevenue: 0,\n monthlyOrders: 0,\n complianceScore: 78,\n documentsSubmitted: 6,\n documentsRequired: 8,\n inspectionStatus: 'pending',\n applicationDate: '2024-06-20T11:15:00Z',\n },\n {\n id: 'cart-003',\n name: 'Street Chaat Masters',\n description: 'Authentic Indian street food and chaat',\n category: 'Street Food',\n image: 'https://images.unsplash.com/photo-1601050690597-df0568f70950?w=200',\n ownerName: 'Amit Patel',\n ownerEmail: 'amit@gmail.com',\n ownerPhone: '+91 98765 43212',\n address: 'Brigade Road, Bangalore',\n city: 'Bangalore',\n isActive: false,\n isVerified: false,\n rating: 4.2,\n reviewCount: 89,\n monthlyRevenue: 45000,\n monthlyOrders: 450,\n complianceScore: 65,\n documentsSubmitted: 5,\n documentsRequired: 8,\n inspectionStatus: 'failed',\n inspectionDate: '2024-06-15T11:00:00Z',\n applicationDate: '2024-05-10T14:20:00Z',\n rejectionReason: 'Hygiene standards not met, missing food safety certification',\n },\n];\n\n/* ------------------------------------------------------------------ */\n/* Component */\n/* ------------------------------------------------------------------ */\n\nexport function CartManagementPage() {\n const { navigateTo } = useSubscriberBot();\n\n const [carts, setCarts] = useState<ExtendedCart[]>([]);\n const [loading, setLoading] = useState(true);\n const [selectedCart, setSelectedCart] = useState<ExtendedCart | null>(null);\n const [showCartModal, setShowCartModal] = useState(false);\n const [actionType, setActionType] = useState<CartActionType>('view');\n const [rejectionReason, setRejectionReason] = useState('');\n\n const [filters, setFilters] = useState<CartFilters>({\n searchQuery: '',\n status: '',\n verificationStatus: '',\n category: '',\n location: '',\n sortBy: 'recent',\n });\n\n const [stats] = useState<CartStats>({\n totalCarts: 156,\n activeCarts: 134,\n pendingApproval: 18,\n rejectedCarts: 4,\n totalRevenue: 12500000,\n averageRating: 4.6,\n complianceRate: 89,\n newApplications: 8,\n });\n\n const loadCarts = useCallback(() => {\n setLoading(true);\n setTimeout(() => {\n let filtered = [...mockCarts];\n\n if (filters.searchQuery) {\n const q = filters.searchQuery.toLowerCase();\n filtered = filtered.filter(\n (c) =>\n c.name.toLowerCase().includes(q) ||\n c.ownerName.toLowerCase().includes(q) ||\n c.description.toLowerCase().includes(q) ||\n c.address.toLowerCase().includes(q)\n );\n }\n if (filters.status) {\n if (filters.status === 'active') filtered = filtered.filter((c) => c.isActive);\n if (filters.status === 'inactive') filtered = filtered.filter((c) => !c.isActive);\n }\n if (filters.verificationStatus) {\n if (filters.verificationStatus === 'verified')\n filtered = filtered.filter((c) => c.isVerified);\n if (filters.verificationStatus === 'pending')\n filtered = filtered.filter((c) => !c.isVerified && c.inspectionStatus !== 'failed');\n if (filters.verificationStatus === 'rejected')\n filtered = filtered.filter((c) => c.inspectionStatus === 'failed');\n }\n if (filters.category) filtered = filtered.filter((c) => c.category === filters.category);\n if (filters.location)\n filtered = filtered.filter((c) =>\n c.city.toLowerCase().includes(filters.location.toLowerCase())\n );\n\n switch (filters.sortBy) {\n case 'name':\n filtered.sort((a, b) => a.name.localeCompare(b.name));\n break;\n case 'rating':\n filtered.sort((a, b) => b.rating - a.rating);\n break;\n case 'revenue':\n filtered.sort((a, b) => b.monthlyRevenue - a.monthlyRevenue);\n break;\n case 'compliance':\n filtered.sort((a, b) => b.complianceScore - a.complianceScore);\n break;\n default:\n filtered.sort(\n (a, b) => new Date(b.applicationDate).getTime() - new Date(a.applicationDate).getTime()\n );\n }\n\n setCarts(filtered);\n setLoading(false);\n }, 800);\n }, [filters]);\n\n useEffect(() => {\n loadCarts();\n }, [loadCarts]);\n\n const handleFilterChange = (key: keyof CartFilters, value: string) => {\n setFilters((prev) => ({ ...prev, [key]: value }));\n };\n\n const handleCartAction = (cart: ExtendedCart, action: CartActionType) => {\n setSelectedCart(cart);\n setActionType(action);\n setRejectionReason('');\n setShowCartModal(true);\n };\n\n const executeCartAction = () => {\n if (!selectedCart) return;\n let message = '';\n switch (actionType) {\n case 'approve':\n message = `Cart \"${selectedCart.name}\" approved successfully`;\n break;\n case 'reject':\n if (!rejectionReason.trim()) {\n alert('Please provide a rejection reason');\n return;\n }\n message = `Cart \"${selectedCart.name}\" rejected`;\n break;\n case 'suspend':\n message = `Cart \"${selectedCart.name}\" suspended`;\n break;\n case 'inspect':\n message = `Inspection scheduled for \"${selectedCart.name}\"`;\n break;\n }\n alert(message);\n setShowCartModal(false);\n setRejectionReason('');\n loadCarts();\n };\n\n const formatDate = (d: string) =>\n new Date(d).toLocaleDateString('en-IN', { year: 'numeric', month: 'short', day: 'numeric' });\n\n const verificationBadge = (cart: ExtendedCart) => {\n if (cart.isVerified)\n return (\n <span className=\"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium bg-green-500/20 text-green-600 dark:text-green-400\">\n Verified\n </span>\n );\n if (cart.inspectionStatus === 'pending')\n return (\n <span className=\"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium bg-yellow-500/20 text-yellow-600 dark:text-yellow-400\">\n Pending Review\n </span>\n );\n if (cart.inspectionStatus === 'scheduled')\n return (\n <span className=\"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium bg-blue-500/20 text-blue-600 dark:text-blue-400\">\n Inspection Scheduled\n </span>\n );\n if (cart.inspectionStatus === 'failed')\n return (\n <span className=\"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium bg-red-500/20 text-red-600 dark:text-red-400\">\n Rejected\n </span>\n );\n return (\n <span className=\"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium bg-secondary text-secondary-foreground\">\n Under Review\n </span>\n );\n };\n\n const statusBadge = (isActive: boolean) =>\n isActive ? (\n <span className=\"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium bg-green-500/20 text-green-600 dark:text-green-400\">\n Active\n </span>\n ) : (\n <span className=\"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium bg-secondary text-secondary-foreground\">\n Inactive\n </span>\n );\n\n const complianceBar = (score: number) => (\n <div className=\"w-full bg-bg-sunken rounded-full h-2\">\n <div\n className={cn(\n 'h-2 rounded-full',\n score >= 80 ? 'bg-green-500' : score >= 60 ? 'bg-yellow-500' : 'bg-red-500'\n )}\n style={{ width: `${score}%` }}\n />\n </div>\n );\n\n if (loading) {\n return (\n <PageLayout title=\"Cart Management\" description=\"Loading carts...\">\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 carts...</p>\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"Cart Management\"\n description={`${stats.totalCarts} service providers on the platform`}\n actions={\n <span className=\"text-sm text-text-secondary\">\n {stats.pendingApproval} pending approval\n </span>\n }\n >\n {/* 8 Stats Cards */}\n <div className=\"grid grid-cols-2 sm:grid-cols-4 lg:grid-cols-8 gap-3 mb-6\">\n {[\n { label: 'Total Carts', value: stats.totalCarts, cls: '' },\n { label: 'Active', value: stats.activeCarts, cls: 'bg-green-500/10 border-green-500/30' },\n {\n label: 'Pending',\n value: stats.pendingApproval,\n cls: 'bg-yellow-500/10 border-yellow-500/30',\n },\n { label: 'Rejected', value: stats.rejectedCarts, cls: 'bg-red-500/10 border-red-500/30' },\n {\n label: 'Total Revenue',\n value: formatCurrency(stats.totalRevenue, { minimumFractionDigits: 0 }),\n cls: 'col-span-2 min-w-fit',\n },\n { label: 'Avg Rating', value: `${stats.averageRating}`, cls: '' },\n {\n label: 'New Apps',\n value: stats.newApplications,\n cls: 'bg-blue-500/10 border-blue-500/30',\n },\n ].map((s) => (\n <div key={s.label} className={cn('rounded-lg border border-border-subtle bg-bg-surface p-3', s.cls)}>\n <p className=\"text-xs text-text-secondary\">{s.label}</p>\n <p className=\"text-lg font-bold text-text-primary\">{s.value}</p>\n </div>\n ))}\n </div>\n\n {/* 6 Filter Controls */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 mb-6\">\n <div className=\"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-3\">\n <div className=\"relative\">\n <Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary\" />\n <input\n type=\"text\"\n placeholder=\"Search carts...\"\n value={filters.searchQuery}\n onChange={(e) => handleFilterChange('searchQuery', e.target.value)}\n className=\"w-full rounded-lg border border-border-subtle bg-bg-surface py-2 pl-10 pr-4 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]\"\n />\n </div>\n <select\n value={filters.status}\n onChange={(e) => handleFilterChange('status', e.target.value)}\n className=\"rounded-lg border border-border-subtle bg-bg-surface py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]\"\n >\n <option value=\"\">All Status</option>\n <option value=\"active\">Active</option>\n <option value=\"inactive\">Inactive</option>\n </select>\n <select\n value={filters.verificationStatus}\n onChange={(e) => handleFilterChange('verificationStatus', e.target.value)}\n className=\"rounded-lg border border-border-subtle bg-bg-surface py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]\"\n >\n <option value=\"\">All Verification</option>\n <option value=\"verified\">Verified</option>\n <option value=\"pending\">Pending</option>\n <option value=\"rejected\">Rejected</option>\n </select>\n <select\n value={filters.category}\n onChange={(e) => handleFilterChange('category', e.target.value)}\n className=\"rounded-lg border border-border-subtle bg-bg-surface py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]\"\n >\n <option value=\"\">All Categories</option>\n <option value=\"Food & Beverage\">Food & Beverage</option>\n <option value=\"Beverages\">Beverages</option>\n <option value=\"Street Food\">Street Food</option>\n <option value=\"Fast Food\">Fast Food</option>\n </select>\n <input\n type=\"text\"\n placeholder=\"Location...\"\n value={filters.location}\n onChange={(e) => handleFilterChange('location', e.target.value)}\n className=\"rounded-lg border border-border-subtle bg-bg-surface py-2 px-3 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]\"\n />\n <select\n value={filters.sortBy}\n onChange={(e) => handleFilterChange('sortBy', e.target.value)}\n className=\"rounded-lg border border-border-subtle bg-bg-surface py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]\"\n >\n <option value=\"recent\">Most Recent</option>\n <option value=\"name\">Name A-Z</option>\n <option value=\"rating\">Highest Rated</option>\n <option value=\"revenue\">Highest Revenue</option>\n <option value=\"compliance\">Best Compliance</option>\n </select>\n </div>\n </div>\n\n {/* Dual Layout */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface overflow-hidden\">\n {/* Mobile Card View */}\n <div className=\"block md:hidden space-y-4 p-4\">\n {carts.map((cart) => (\n <div key={cart.id} className=\"rounded-lg border border-border-subtle bg-bg-sunken/30 p-4\">\n <div className=\"flex items-center mb-3\">\n <img\n src={cart.image}\n alt={cart.name}\n className=\"w-16 h-16 rounded-lg object-cover mr-3\"\n />\n <div className=\"flex-1 min-w-0\">\n <h3 className=\"font-medium text-text-primary text-lg truncate\">{cart.name}</h3>\n <p className=\"text-sm text-text-secondary truncate\">{cart.category}</p>\n <p className=\"text-sm text-text-secondary truncate\">{cart.address}</p>\n </div>\n </div>\n <div className=\"grid grid-cols-2 gap-4 mb-3 text-sm\">\n <div>\n <p className=\"text-text-secondary font-medium\">Owner</p>\n <p className=\"text-text-primary\">{cart.ownerName}</p>\n <p className=\"text-text-secondary text-xs\">{cart.ownerPhone}</p>\n </div>\n <div>\n <p className=\"text-text-secondary font-medium\">Performance</p>\n <p className=\"text-text-primary\">\n {formatCurrency(cart.monthlyRevenue, { minimumFractionDigits: 0 })}/mo\n </p>\n <p className=\"text-text-secondary text-xs\">{cart.monthlyOrders} orders</p>\n </div>\n </div>\n <div className=\"flex flex-wrap gap-2 mb-3\">\n {statusBadge(cart.isActive)}\n {verificationBadge(cart)}\n {cart.rating > 0 && (\n <span className=\"inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium bg-yellow-500/20 text-yellow-600 dark:text-yellow-400\">\n <Star className=\"h-3 w-3 fill-current\" />\n {cart.rating} ({cart.reviewCount})\n </span>\n )}\n </div>\n <div className=\"mb-3\">\n <div className=\"flex items-center justify-between text-sm mb-1\">\n <span className=\"text-text-secondary\">Compliance</span>\n <span className=\"font-medium text-text-primary\">{cart.complianceScore}%</span>\n </div>\n {complianceBar(cart.complianceScore)}\n <p className=\"text-xs text-text-secondary mt-1\">\n Docs: {cart.documentsSubmitted}/{cart.documentsRequired} &bull; Applied:{' '}\n {formatDate(cart.applicationDate)}\n </p>\n </div>\n <div className=\"flex flex-wrap gap-2\">\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'view')}\n className=\"flex-1 rounded-lg border border-border-subtle px-3 py-1.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n View Details\n </button>\n {!cart.isVerified && cart.inspectionStatus !== 'failed' && (\n <>\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'approve')}\n className=\"rounded-lg bg-action-primary-bg px-3 py-1.5 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors\"\n >\n Approve\n </button>\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'reject')}\n className=\"rounded-lg border border-border-subtle px-3 py-1.5 text-sm font-medium text-red-600 hover:bg-red-500/10 transition-colors\"\n >\n Reject\n </button>\n </>\n )}\n {cart.inspectionStatus === 'pending' && (\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'inspect')}\n className=\"rounded-lg border border-border-subtle px-3 py-1.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n Inspect\n </button>\n )}\n {cart.isActive && (\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'suspend')}\n className=\"rounded-lg border border-border-subtle px-3 py-1.5 text-sm font-medium text-red-600 hover:bg-red-500/10 transition-colors\"\n >\n Suspend\n </button>\n )}\n </div>\n </div>\n ))}\n </div>\n\n {/* Desktop Table View */}\n <div className=\"hidden md:block overflow-x-auto\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b border-border-subtle bg-bg-sunken/50\">\n <th className=\"px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Cart\n </th>\n <th className=\"px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Owner\n </th>\n <th className=\"px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Status\n </th>\n <th className=\"px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Performance\n </th>\n <th className=\"px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Compliance\n </th>\n <th className=\"px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Actions\n </th>\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {carts.map((cart) => (\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-3\">\n <img\n src={cart.image}\n alt={cart.name}\n className=\"w-12 h-12 rounded-lg object-cover\"\n />\n <div className=\"min-w-0\">\n <p className=\"text-sm font-medium text-text-primary truncate\">{cart.name}</p>\n <p className=\"text-xs text-text-secondary truncate\">{cart.category}</p>\n <p className=\"text-xs text-text-secondary truncate\">{cart.address}</p>\n </div>\n </div>\n </td>\n <td className=\"px-4 py-3 text-sm\">\n <p className=\"font-medium text-text-primary\">{cart.ownerName}</p>\n <p className=\"text-xs text-text-secondary\">{cart.ownerEmail}</p>\n <p className=\"text-xs text-text-secondary\">{cart.ownerPhone}</p>\n </td>\n <td className=\"px-4 py-3\">\n <div className=\"space-y-1\">\n {statusBadge(cart.isActive)}\n <br />\n {verificationBadge(cart)}\n {cart.rating > 0 && (\n <div className=\"text-sm flex items-center gap-1 mt-1\">\n <Star className=\"h-3 w-3 fill-yellow-400 text-yellow-400\" />\n {cart.rating}{' '}\n <span className=\"text-text-secondary\">({cart.reviewCount})</span>\n </div>\n )}\n </div>\n </td>\n <td className=\"px-4 py-3 text-sm\">\n <p className=\"text-text-primary\">\n {formatCurrency(cart.monthlyRevenue, { minimumFractionDigits: 0 })}/mo\n </p>\n <p className=\"text-text-secondary\">{cart.monthlyOrders} orders/mo</p>\n </td>\n <td className=\"px-4 py-3 text-sm\">\n <div className=\"flex items-center gap-2 mb-1\">\n <div className=\"w-16\">{complianceBar(cart.complianceScore)}</div>\n <span className=\"font-medium text-text-primary\">{cart.complianceScore}%</span>\n </div>\n <p className=\"text-xs text-text-secondary\">\n Docs: {cart.documentsSubmitted}/{cart.documentsRequired}\n </p>\n <p className=\"text-xs text-text-secondary\">\n Applied: {formatDate(cart.applicationDate)}\n </p>\n </td>\n <td className=\"px-4 py-3\">\n <div className=\"flex flex-col gap-1\">\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'view')}\n className=\"rounded p-1.5 text-text-secondary hover:text-text-primary hover:bg-accent transition-colors inline-flex items-center gap-1 text-xs\"\n >\n <Eye className=\"h-4 w-4\" /> View\n </button>\n {!cart.isVerified && cart.inspectionStatus !== 'failed' && (\n <div className=\"flex gap-1\">\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'approve')}\n className=\"rounded p-1.5 text-text-secondary hover:text-green-600 hover:bg-green-500/10 transition-colors\"\n >\n <CheckCircle2 className=\"h-4 w-4\" />\n </button>\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'reject')}\n className=\"rounded p-1.5 text-text-secondary hover:text-red-600 hover:bg-red-500/10 transition-colors\"\n >\n <XCircle className=\"h-4 w-4\" />\n </button>\n </div>\n )}\n {cart.inspectionStatus === 'pending' && (\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'inspect')}\n className=\"rounded p-1.5 text-text-secondary hover:text-blue-600 hover:bg-blue-500/10 transition-colors inline-flex items-center gap-1 text-xs\"\n >\n <ClipboardCheck className=\"h-4 w-4\" /> Inspect\n </button>\n )}\n {cart.isActive && (\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'suspend')}\n className=\"rounded p-1.5 text-text-secondary hover:text-red-600 hover:bg-red-500/10 transition-colors\"\n >\n <Pause className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n\n {carts.length === 0 && (\n <div className=\"flex flex-col items-center justify-center py-12 px-4\">\n <Store className=\"h-10 w-10 text-text-secondary/50 mb-3\" />\n <p className=\"text-sm text-text-secondary\">No carts found matching your criteria</p>\n </div>\n )}\n </div>\n\n {/* Cart Action Modal */}\n {showCartModal && selectedCart && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4\">\n <div className=\"w-full max-w-2xl rounded-lg border border-border-subtle bg-bg-surface shadow-lg max-h-[90vh] overflow-y-auto\">\n <div className=\"flex items-center justify-between p-4 border-b border-border-subtle\">\n <h3 className=\"text-lg font-semibold text-text-primary\">\n {actionType === 'view'\n ? 'Cart Details'\n : actionType === 'approve'\n ? 'Approve Cart'\n : actionType === 'reject'\n ? 'Reject Cart'\n : actionType === 'suspend'\n ? 'Suspend Cart'\n : 'Schedule Inspection'}\n </h3>\n <button\n type=\"button\"\n onClick={() => setShowCartModal(false)}\n className=\"rounded p-1.5 text-text-secondary hover:text-text-primary hover:bg-accent transition-colors\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n </div>\n <div className=\"p-4 space-y-4\">\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">Cart Name</p>\n <p className=\"font-medium text-text-primary\">{selectedCart.name}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Category</p>\n <p className=\"font-medium text-text-primary\">{selectedCart.category}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Owner</p>\n <p className=\"font-medium text-text-primary\">{selectedCart.ownerName}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Contact</p>\n <p className=\"font-medium text-text-primary\">{selectedCart.ownerPhone}</p>\n </div>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Description</p>\n <p className=\"font-medium text-text-primary\">{selectedCart.description}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Location</p>\n <p className=\"font-medium text-text-primary\">{selectedCart.address}</p>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">Compliance Score</p>\n <p className=\"font-medium text-text-primary\">{selectedCart.complianceScore}%</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Documents</p>\n <p className=\"font-medium text-text-primary\">\n {selectedCart.documentsSubmitted}/{selectedCart.documentsRequired}\n </p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Monthly Revenue</p>\n <p className=\"font-medium text-text-primary\">\n {formatCurrency(selectedCart.monthlyRevenue, { minimumFractionDigits: 0 })}\n </p>\n </div>\n </div>\n\n {selectedCart.rejectionReason && (\n <div className=\"rounded-lg border border-red-500/30 bg-red-500/10 p-4\">\n <p className=\"text-sm font-medium text-red-600 dark:text-red-400\">\n Previous Rejection Reason:\n </p>\n <p className=\"text-sm text-red-600/80 dark:text-red-400/80\">\n {selectedCart.rejectionReason}\n </p>\n </div>\n )}\n\n {actionType === 'reject' && (\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-2\">\n Rejection Reason *\n </label>\n <textarea\n className=\"w-full rounded-lg border border-border-subtle bg-bg-surface p-3 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)] min-h-[100px]\"\n rows={4}\n value={rejectionReason}\n onChange={(e) => setRejectionReason(e.target.value)}\n placeholder=\"Please provide a detailed reason for rejection...\"\n />\n </div>\n )}\n\n {actionType === 'approve' && (\n <div className=\"rounded-lg border border-green-500/30 bg-green-500/10 p-4\">\n <p className=\"text-sm text-green-600 dark:text-green-400\">\n This will approve the cart for operation on the platform. The cart owner will be\n notified and the cart will become active.\n </p>\n </div>\n )}\n\n <div className=\"flex gap-3 pt-2\">\n <button\n type=\"button\"\n onClick={() => setShowCartModal(false)}\n className=\"flex-1 rounded-lg border border-border-subtle py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n Cancel\n </button>\n {actionType !== 'view' && (\n <button\n type=\"button\"\n onClick={executeCartAction}\n disabled={actionType === 'reject' && !rejectionReason.trim()}\n className=\"flex-1 rounded-lg bg-action-primary-bg py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n {actionType === 'approve'\n ? 'Approve Cart'\n : actionType === 'reject'\n ? 'Reject Cart'\n : actionType === 'suspend'\n ? 'Suspend Cart'\n : 'Schedule Inspection'}\n </button>\n )}\n </div>\n </div>\n </div>\n </div>\n )}\n </PageLayout>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CartManagementPage.js","names":[],"sources":["../../../../src/subscriberbot/pages/admin/CartManagementPage.tsx"],"sourcesContent":["/**\n * Cart Management Page\n * @module subscriberbot/pages/admin\n *\n * Full-featured cart management with 8 stats cards, 6 filter controls,\n * dual layout (mobile cards + desktop table), cart action modal\n * (view/approve/reject with reason/suspend/inspect), loading state.\n */\n\nimport { useState, useEffect, useCallback, useMemo } from 'react';\nimport {\n Search,\n Store,\n CheckCircle2,\n XCircle,\n Pause,\n Star,\n Eye,\n ClipboardCheck,\n Loader2,\n X,\n AlertTriangle,\n} from 'lucide-react';\nimport { PageLayout } from '../../components/PageLayout';\nimport { useSubscriberBot } from '../../context/SubscriberBotContext';\nimport { cn } from '../../utils/cn';\nimport { formatCurrency } from '../../utils/formatters';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\ninterface ExtendedCart {\n id: string;\n name: string;\n description: string;\n category: string;\n image: string;\n ownerName: string;\n ownerEmail: string;\n ownerPhone: string;\n address: string;\n city: string;\n isActive: boolean;\n isVerified: boolean;\n rating: number;\n reviewCount: number;\n monthlyRevenue: number;\n monthlyOrders: number;\n complianceScore: number;\n documentsSubmitted: number;\n documentsRequired: number;\n inspectionStatus: 'pending' | 'scheduled' | 'completed' | 'failed';\n inspectionDate?: string;\n rejectionReason?: string;\n applicationDate: string;\n licenseNumber?: string;\n}\n\ninterface CartFilters {\n searchQuery: string;\n status: string;\n verificationStatus: string;\n category: string;\n location: string;\n sortBy: string;\n}\n\ninterface CartStats {\n totalCarts: number;\n activeCarts: number;\n pendingApproval: number;\n rejectedCarts: number;\n totalRevenue: number;\n averageRating: number;\n complianceRate: number;\n newApplications: number;\n}\n\ntype CartActionType = 'view' | 'approve' | 'reject' | 'suspend' | 'inspect';\n\n/* ------------------------------------------------------------------ */\n/* Mock data */\n/* ------------------------------------------------------------------ */\n\nconst mockCarts: ExtendedCart[] = [\n {\n id: 'cart-001',\n name: 'South Indian Express',\n description: 'Authentic South Indian breakfast and snacks',\n category: 'Food & Beverage',\n image: 'https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=200',\n ownerName: 'Rajesh Kumar',\n ownerEmail: 'rajesh@gmail.com',\n ownerPhone: '+91 98765 43210',\n address: 'MG Road, Bangalore',\n city: 'Bangalore',\n isActive: true,\n isVerified: true,\n rating: 4.8,\n reviewCount: 342,\n monthlyRevenue: 185000,\n monthlyOrders: 1250,\n complianceScore: 95,\n documentsSubmitted: 8,\n documentsRequired: 8,\n inspectionStatus: 'completed',\n inspectionDate: '2023-07-01T10:00:00Z',\n applicationDate: '2023-06-15T09:30:00Z',\n licenseNumber: 'BBMP/2023/001234',\n },\n {\n id: 'cart-002',\n name: 'Fresh Juice Corner',\n description: 'Fresh fruit juices and smoothies',\n category: 'Beverages',\n image: 'https://images.unsplash.com/photo-1600271886742-f049cd451bba?w=200',\n ownerName: 'Priya Sharma',\n ownerEmail: 'priya@gmail.com',\n ownerPhone: '+91 98765 43211',\n address: 'Koramangala, Bangalore',\n city: 'Bangalore',\n isActive: false,\n isVerified: false,\n rating: 0,\n reviewCount: 0,\n monthlyRevenue: 0,\n monthlyOrders: 0,\n complianceScore: 78,\n documentsSubmitted: 6,\n documentsRequired: 8,\n inspectionStatus: 'pending',\n applicationDate: '2024-06-20T11:15:00Z',\n },\n {\n id: 'cart-003',\n name: 'Street Chaat Masters',\n description: 'Authentic Indian street food and chaat',\n category: 'Street Food',\n image: 'https://images.unsplash.com/photo-1601050690597-df0568f70950?w=200',\n ownerName: 'Amit Patel',\n ownerEmail: 'amit@gmail.com',\n ownerPhone: '+91 98765 43212',\n address: 'Brigade Road, Bangalore',\n city: 'Bangalore',\n isActive: false,\n isVerified: false,\n rating: 4.2,\n reviewCount: 89,\n monthlyRevenue: 45000,\n monthlyOrders: 450,\n complianceScore: 65,\n documentsSubmitted: 5,\n documentsRequired: 8,\n inspectionStatus: 'failed',\n inspectionDate: '2024-06-15T11:00:00Z',\n applicationDate: '2024-05-10T14:20:00Z',\n rejectionReason: 'Hygiene standards not met, missing food safety certification',\n },\n];\n\n/* ------------------------------------------------------------------ */\n/* Component */\n/* ------------------------------------------------------------------ */\n\nexport function CartManagementPage() {\n const { navigateTo } = useSubscriberBot();\n\n const [carts, setCarts] = useState<ExtendedCart[]>([]);\n const [loading, setLoading] = useState(true);\n const [selectedCart, setSelectedCart] = useState<ExtendedCart | null>(null);\n const [showCartModal, setShowCartModal] = useState(false);\n const [actionType, setActionType] = useState<CartActionType>('view');\n const [rejectionReason, setRejectionReason] = useState('');\n\n const [filters, setFilters] = useState<CartFilters>({\n searchQuery: '',\n status: '',\n verificationStatus: '',\n category: '',\n location: '',\n sortBy: 'recent',\n });\n\n const [stats] = useState<CartStats>({\n totalCarts: 156,\n activeCarts: 134,\n pendingApproval: 18,\n rejectedCarts: 4,\n totalRevenue: 12500000,\n averageRating: 4.6,\n complianceRate: 89,\n newApplications: 8,\n });\n\n const loadCarts = useCallback(() => {\n setLoading(true);\n setTimeout(() => {\n let filtered = [...mockCarts];\n\n if (filters.searchQuery) {\n const q = filters.searchQuery.toLowerCase();\n filtered = filtered.filter(\n (c) =>\n c.name.toLowerCase().includes(q) ||\n c.ownerName.toLowerCase().includes(q) ||\n c.description.toLowerCase().includes(q) ||\n c.address.toLowerCase().includes(q)\n );\n }\n if (filters.status) {\n if (filters.status === 'active') filtered = filtered.filter((c) => c.isActive);\n if (filters.status === 'inactive') filtered = filtered.filter((c) => !c.isActive);\n }\n if (filters.verificationStatus) {\n if (filters.verificationStatus === 'verified')\n filtered = filtered.filter((c) => c.isVerified);\n if (filters.verificationStatus === 'pending')\n filtered = filtered.filter((c) => !c.isVerified && c.inspectionStatus !== 'failed');\n if (filters.verificationStatus === 'rejected')\n filtered = filtered.filter((c) => c.inspectionStatus === 'failed');\n }\n if (filters.category) filtered = filtered.filter((c) => c.category === filters.category);\n if (filters.location)\n filtered = filtered.filter((c) =>\n c.city.toLowerCase().includes(filters.location.toLowerCase())\n );\n\n switch (filters.sortBy) {\n case 'name':\n filtered.sort((a, b) => a.name.localeCompare(b.name));\n break;\n case 'rating':\n filtered.sort((a, b) => b.rating - a.rating);\n break;\n case 'revenue':\n filtered.sort((a, b) => b.monthlyRevenue - a.monthlyRevenue);\n break;\n case 'compliance':\n filtered.sort((a, b) => b.complianceScore - a.complianceScore);\n break;\n default:\n filtered.sort(\n (a, b) => new Date(b.applicationDate).getTime() - new Date(a.applicationDate).getTime()\n );\n }\n\n setCarts(filtered);\n setLoading(false);\n }, 800);\n }, [filters]);\n\n useEffect(() => {\n loadCarts();\n }, [loadCarts]);\n\n const handleFilterChange = (key: keyof CartFilters, value: string) => {\n setFilters((prev) => ({ ...prev, [key]: value }));\n };\n\n const handleCartAction = (cart: ExtendedCart, action: CartActionType) => {\n setSelectedCart(cart);\n setActionType(action);\n setRejectionReason('');\n setShowCartModal(true);\n };\n\n const executeCartAction = () => {\n if (!selectedCart) return;\n let message = '';\n switch (actionType) {\n case 'approve':\n message = `Cart \"${selectedCart.name}\" approved successfully`;\n break;\n case 'reject':\n if (!rejectionReason.trim()) {\n alert('Please provide a rejection reason');\n return;\n }\n message = `Cart \"${selectedCart.name}\" rejected`;\n break;\n case 'suspend':\n message = `Cart \"${selectedCart.name}\" suspended`;\n break;\n case 'inspect':\n message = `Inspection scheduled for \"${selectedCart.name}\"`;\n break;\n }\n alert(message);\n setShowCartModal(false);\n setRejectionReason('');\n loadCarts();\n };\n\n const formatDate = (d: string) =>\n new Date(d).toLocaleDateString('en-IN', { year: 'numeric', month: 'short', day: 'numeric' });\n\n const verificationBadge = (cart: ExtendedCart) => {\n if (cart.isVerified)\n return (\n <span className=\"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium bg-status-success-bg/20 text-status-success-text\">\n Verified\n </span>\n );\n if (cart.inspectionStatus === 'pending')\n return (\n <span className=\"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium bg-status-warning-bg/20 text-status-warning-text\">\n Pending Review\n </span>\n );\n if (cart.inspectionStatus === 'scheduled')\n return (\n <span className=\"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium bg-status-info-bg/20 text-status-info-text\">\n Inspection Scheduled\n </span>\n );\n if (cart.inspectionStatus === 'failed')\n return (\n <span className=\"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium bg-status-error-bg/20 text-status-error-text\">\n Rejected\n </span>\n );\n return (\n <span className=\"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium bg-secondary text-secondary-foreground\">\n Under Review\n </span>\n );\n };\n\n const statusBadge = (isActive: boolean) =>\n isActive ? (\n <span className=\"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium bg-status-success-bg/20 text-status-success-text\">\n Active\n </span>\n ) : (\n <span className=\"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium bg-secondary text-secondary-foreground\">\n Inactive\n </span>\n );\n\n const complianceBar = (score: number) => (\n <div className=\"w-full bg-bg-sunken rounded-full h-2\">\n <div\n className={cn(\n 'h-2 rounded-full',\n score >= 80\n ? 'bg-status-success-text'\n : score >= 60\n ? 'bg-status-warning-text'\n : 'bg-status-error-text'\n )}\n style={{ width: `${score}%` }}\n />\n </div>\n );\n\n if (loading) {\n return (\n <PageLayout title=\"Cart Management\" description=\"Loading carts...\">\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 carts...</p>\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"Cart Management\"\n description={`${stats.totalCarts} service providers on the platform`}\n actions={\n <span className=\"text-sm text-text-secondary\">\n {stats.pendingApproval} pending approval\n </span>\n }\n >\n {/* 8 Stats Cards */}\n <div className=\"grid grid-cols-2 sm:grid-cols-4 lg:grid-cols-8 gap-3 mb-6\">\n {[\n { label: 'Total Carts', value: stats.totalCarts, cls: '' },\n {\n label: 'Active',\n value: stats.activeCarts,\n cls: 'bg-status-success-bg/10 border-status-success-border/30',\n },\n {\n label: 'Pending',\n value: stats.pendingApproval,\n cls: 'bg-status-warning-bg/10 border-status-warning-border/30',\n },\n {\n label: 'Rejected',\n value: stats.rejectedCarts,\n cls: 'bg-status-error-bg/10 border-status-error-border/30',\n },\n {\n label: 'Total Revenue',\n value: formatCurrency(stats.totalRevenue, { minimumFractionDigits: 0 }),\n cls: 'col-span-2 min-w-fit',\n },\n { label: 'Avg Rating', value: `${stats.averageRating}`, cls: '' },\n {\n label: 'New Apps',\n value: stats.newApplications,\n cls: 'bg-status-info-bg/10 border-status-info-border/30',\n },\n ].map((s) => (\n <div\n key={s.label}\n className={cn('rounded-lg border border-border-seam bg-bg-surface p-3', s.cls)}\n >\n <p className=\"text-xs text-text-secondary\">{s.label}</p>\n <p className=\"text-lg font-bold text-text-primary\">{s.value}</p>\n </div>\n ))}\n </div>\n\n {/* 6 Filter Controls */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-4 mb-6\">\n <div className=\"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-3\">\n <div className=\"relative\">\n <Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary\" />\n <input\n type=\"text\"\n placeholder=\"Search carts...\"\n value={filters.searchQuery}\n onChange={(e) => handleFilterChange('searchQuery', e.target.value)}\n className=\"w-full rounded-lg border border-border-seam bg-bg-surface py-2 pl-10 pr-4 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]\"\n />\n </div>\n <select\n value={filters.status}\n onChange={(e) => handleFilterChange('status', e.target.value)}\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)]\"\n >\n <option value=\"\">All Status</option>\n <option value=\"active\">Active</option>\n <option value=\"inactive\">Inactive</option>\n </select>\n <select\n value={filters.verificationStatus}\n onChange={(e) => handleFilterChange('verificationStatus', e.target.value)}\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)]\"\n >\n <option value=\"\">All Verification</option>\n <option value=\"verified\">Verified</option>\n <option value=\"pending\">Pending</option>\n <option value=\"rejected\">Rejected</option>\n </select>\n <select\n value={filters.category}\n onChange={(e) => handleFilterChange('category', e.target.value)}\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)]\"\n >\n <option value=\"\">All Categories</option>\n <option value=\"Food & Beverage\">Food & Beverage</option>\n <option value=\"Beverages\">Beverages</option>\n <option value=\"Street Food\">Street Food</option>\n <option value=\"Fast Food\">Fast Food</option>\n </select>\n <input\n type=\"text\"\n placeholder=\"Location...\"\n value={filters.location}\n onChange={(e) => handleFilterChange('location', e.target.value)}\n className=\"rounded-lg border border-border-seam bg-bg-surface py-2 px-3 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]\"\n />\n <select\n value={filters.sortBy}\n onChange={(e) => handleFilterChange('sortBy', e.target.value)}\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)]\"\n >\n <option value=\"recent\">Most Recent</option>\n <option value=\"name\">Name A-Z</option>\n <option value=\"rating\">Highest Rated</option>\n <option value=\"revenue\">Highest Revenue</option>\n <option value=\"compliance\">Best Compliance</option>\n </select>\n </div>\n </div>\n\n {/* Dual Layout */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface overflow-hidden\">\n {/* Mobile Card View */}\n <div className=\"block md:hidden space-y-4 p-4\">\n {carts.map((cart) => (\n <div key={cart.id} className=\"rounded-lg border border-border-seam bg-bg-sunken/30 p-4\">\n <div className=\"flex items-center mb-3\">\n <img\n src={cart.image}\n alt={cart.name}\n className=\"w-16 h-16 rounded-lg object-cover mr-3\"\n />\n <div className=\"flex-1 min-w-0\">\n <h3 className=\"font-medium text-text-primary text-lg truncate\">{cart.name}</h3>\n <p className=\"text-sm text-text-secondary truncate\">{cart.category}</p>\n <p className=\"text-sm text-text-secondary truncate\">{cart.address}</p>\n </div>\n </div>\n <div className=\"grid grid-cols-2 gap-4 mb-3 text-sm\">\n <div>\n <p className=\"text-text-secondary font-medium\">Owner</p>\n <p className=\"text-text-primary\">{cart.ownerName}</p>\n <p className=\"text-text-secondary text-xs\">{cart.ownerPhone}</p>\n </div>\n <div>\n <p className=\"text-text-secondary font-medium\">Performance</p>\n <p className=\"text-text-primary\">\n {formatCurrency(cart.monthlyRevenue, { minimumFractionDigits: 0 })}/mo\n </p>\n <p className=\"text-text-secondary text-xs\">{cart.monthlyOrders} orders</p>\n </div>\n </div>\n <div className=\"flex flex-wrap gap-2 mb-3\">\n {statusBadge(cart.isActive)}\n {verificationBadge(cart)}\n {cart.rating > 0 && (\n <span className=\"inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium bg-status-warning-bg/20 text-status-warning-text\">\n <Star className=\"h-3 w-3 fill-current\" />\n {cart.rating} ({cart.reviewCount})\n </span>\n )}\n </div>\n <div className=\"mb-3\">\n <div className=\"flex items-center justify-between text-sm mb-1\">\n <span className=\"text-text-secondary\">Compliance</span>\n <span className=\"font-medium text-text-primary\">{cart.complianceScore}%</span>\n </div>\n {complianceBar(cart.complianceScore)}\n <p className=\"text-xs text-text-secondary mt-1\">\n Docs: {cart.documentsSubmitted}/{cart.documentsRequired} &bull; Applied:{' '}\n {formatDate(cart.applicationDate)}\n </p>\n </div>\n <div className=\"flex flex-wrap gap-2\">\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'view')}\n className=\"flex-1 rounded-lg border border-border-seam px-3 py-1.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n View Details\n </button>\n {!cart.isVerified && cart.inspectionStatus !== 'failed' && (\n <>\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'approve')}\n className=\"rounded-lg bg-action-primary-bg px-3 py-1.5 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors\"\n >\n Approve\n </button>\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'reject')}\n className=\"rounded-lg border border-border-seam px-3 py-1.5 text-sm font-medium text-status-error-text hover:bg-status-error-bg/10 transition-colors\"\n >\n Reject\n </button>\n </>\n )}\n {cart.inspectionStatus === 'pending' && (\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'inspect')}\n className=\"rounded-lg border border-border-seam px-3 py-1.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n Inspect\n </button>\n )}\n {cart.isActive && (\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'suspend')}\n className=\"rounded-lg border border-border-seam px-3 py-1.5 text-sm font-medium text-status-error-text hover:bg-status-error-bg/10 transition-colors\"\n >\n Suspend\n </button>\n )}\n </div>\n </div>\n ))}\n </div>\n\n {/* Desktop Table View */}\n <div className=\"hidden md:block overflow-x-auto\">\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 tracking-wider\">\n Cart\n </th>\n <th className=\"px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Owner\n </th>\n <th className=\"px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Status\n </th>\n <th className=\"px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Performance\n </th>\n <th className=\"px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Compliance\n </th>\n <th className=\"px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Actions\n </th>\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {carts.map((cart) => (\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-3\">\n <img\n src={cart.image}\n alt={cart.name}\n className=\"w-12 h-12 rounded-lg object-cover\"\n />\n <div className=\"min-w-0\">\n <p className=\"text-sm font-medium text-text-primary truncate\">\n {cart.name}\n </p>\n <p className=\"text-xs text-text-secondary truncate\">{cart.category}</p>\n <p className=\"text-xs text-text-secondary truncate\">{cart.address}</p>\n </div>\n </div>\n </td>\n <td className=\"px-4 py-3 text-sm\">\n <p className=\"font-medium text-text-primary\">{cart.ownerName}</p>\n <p className=\"text-xs text-text-secondary\">{cart.ownerEmail}</p>\n <p className=\"text-xs text-text-secondary\">{cart.ownerPhone}</p>\n </td>\n <td className=\"px-4 py-3\">\n <div className=\"space-y-1\">\n {statusBadge(cart.isActive)}\n <br />\n {verificationBadge(cart)}\n {cart.rating > 0 && (\n <div className=\"text-sm flex items-center gap-1 mt-1\">\n <Star className=\"h-3 w-3 fill-status-warning-text text-status-warning-text\" />\n {cart.rating}{' '}\n <span className=\"text-text-secondary\">({cart.reviewCount})</span>\n </div>\n )}\n </div>\n </td>\n <td className=\"px-4 py-3 text-sm\">\n <p className=\"text-text-primary\">\n {formatCurrency(cart.monthlyRevenue, { minimumFractionDigits: 0 })}/mo\n </p>\n <p className=\"text-text-secondary\">{cart.monthlyOrders} orders/mo</p>\n </td>\n <td className=\"px-4 py-3 text-sm\">\n <div className=\"flex items-center gap-2 mb-1\">\n <div className=\"w-16\">{complianceBar(cart.complianceScore)}</div>\n <span className=\"font-medium text-text-primary\">{cart.complianceScore}%</span>\n </div>\n <p className=\"text-xs text-text-secondary\">\n Docs: {cart.documentsSubmitted}/{cart.documentsRequired}\n </p>\n <p className=\"text-xs text-text-secondary\">\n Applied: {formatDate(cart.applicationDate)}\n </p>\n </td>\n <td className=\"px-4 py-3\">\n <div className=\"flex flex-col gap-1\">\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'view')}\n className=\"rounded p-1.5 text-text-secondary hover:text-text-primary hover:bg-accent transition-colors inline-flex items-center gap-1 text-xs\"\n >\n <Eye className=\"h-4 w-4\" /> View\n </button>\n {!cart.isVerified && cart.inspectionStatus !== 'failed' && (\n <div className=\"flex gap-1\">\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'approve')}\n className=\"rounded p-1.5 text-text-secondary hover:text-status-success-text hover:bg-status-success-bg/10 transition-colors\"\n >\n <CheckCircle2 className=\"h-4 w-4\" />\n </button>\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'reject')}\n className=\"rounded p-1.5 text-text-secondary hover:text-status-error-text hover:bg-status-error-bg/10 transition-colors\"\n >\n <XCircle className=\"h-4 w-4\" />\n </button>\n </div>\n )}\n {cart.inspectionStatus === 'pending' && (\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'inspect')}\n className=\"rounded p-1.5 text-text-secondary hover:text-status-info-text hover:bg-status-info-bg/10 transition-colors inline-flex items-center gap-1 text-xs\"\n >\n <ClipboardCheck className=\"h-4 w-4\" /> Inspect\n </button>\n )}\n {cart.isActive && (\n <button\n type=\"button\"\n onClick={() => handleCartAction(cart, 'suspend')}\n className=\"rounded p-1.5 text-text-secondary hover:text-status-error-text hover:bg-status-error-bg/10 transition-colors\"\n >\n <Pause className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n\n {carts.length === 0 && (\n <div className=\"flex flex-col items-center justify-center py-12 px-4\">\n <Store className=\"h-10 w-10 text-text-secondary/50 mb-3\" />\n <p className=\"text-sm text-text-secondary\">No carts found matching your criteria</p>\n </div>\n )}\n </div>\n\n {/* Cart Action Modal */}\n {showCartModal && selectedCart && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-bg-canvas/50 p-4\">\n <div className=\"w-full max-w-2xl rounded-lg border border-border-seam bg-bg-surface shadow-lg max-h-[90vh] overflow-y-auto\">\n <div className=\"flex items-center justify-between p-4 border-b border-border-seam\">\n <h3 className=\"text-lg font-semibold text-text-primary\">\n {actionType === 'view'\n ? 'Cart Details'\n : actionType === 'approve'\n ? 'Approve Cart'\n : actionType === 'reject'\n ? 'Reject Cart'\n : actionType === 'suspend'\n ? 'Suspend Cart'\n : 'Schedule Inspection'}\n </h3>\n <button\n type=\"button\"\n onClick={() => setShowCartModal(false)}\n className=\"rounded p-1.5 text-text-secondary hover:text-text-primary hover:bg-accent transition-colors\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n </div>\n <div className=\"p-4 space-y-4\">\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">Cart Name</p>\n <p className=\"font-medium text-text-primary\">{selectedCart.name}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Category</p>\n <p className=\"font-medium text-text-primary\">{selectedCart.category}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Owner</p>\n <p className=\"font-medium text-text-primary\">{selectedCart.ownerName}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Contact</p>\n <p className=\"font-medium text-text-primary\">{selectedCart.ownerPhone}</p>\n </div>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Description</p>\n <p className=\"font-medium text-text-primary\">{selectedCart.description}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Location</p>\n <p className=\"font-medium text-text-primary\">{selectedCart.address}</p>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">Compliance Score</p>\n <p className=\"font-medium text-text-primary\">{selectedCart.complianceScore}%</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Documents</p>\n <p className=\"font-medium text-text-primary\">\n {selectedCart.documentsSubmitted}/{selectedCart.documentsRequired}\n </p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Monthly Revenue</p>\n <p className=\"font-medium text-text-primary\">\n {formatCurrency(selectedCart.monthlyRevenue, { minimumFractionDigits: 0 })}\n </p>\n </div>\n </div>\n\n {selectedCart.rejectionReason && (\n <div className=\"rounded-lg border border-status-error-border/30 bg-status-error-bg/10 p-4\">\n <p className=\"text-sm font-medium text-status-error-text\">\n Previous Rejection Reason:\n </p>\n <p className=\"text-sm text-status-error-text/80\">\n {selectedCart.rejectionReason}\n </p>\n </div>\n )}\n\n {actionType === 'reject' && (\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-2\">\n Rejection Reason *\n </label>\n <textarea\n className=\"w-full rounded-lg border border-border-seam bg-bg-surface p-3 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)] min-h-[100px]\"\n rows={4}\n value={rejectionReason}\n onChange={(e) => setRejectionReason(e.target.value)}\n placeholder=\"Please provide a detailed reason for rejection...\"\n />\n </div>\n )}\n\n {actionType === 'approve' && (\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\">\n This will approve the cart for operation on the platform. The cart owner will be\n notified and the cart will become active.\n </p>\n </div>\n )}\n\n <div className=\"flex gap-3 pt-2\">\n <button\n type=\"button\"\n onClick={() => setShowCartModal(false)}\n className=\"flex-1 rounded-lg border border-border-seam py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n Cancel\n </button>\n {actionType !== 'view' && (\n <button\n type=\"button\"\n onClick={executeCartAction}\n disabled={actionType === 'reject' && !rejectionReason.trim()}\n className=\"flex-1 rounded-lg bg-action-primary-bg py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n {actionType === 'approve'\n ? 'Approve Cart'\n : actionType === 'reject'\n ? 'Reject Cart'\n : actionType === 'suspend'\n ? 'Suspend Cart'\n : 'Schedule Inspection'}\n </button>\n )}\n </div>\n </div>\n </div>\n </div>\n )}\n </PageLayout>\n );\n}\n"],"mappings":"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"}
@@ -171,11 +171,11 @@ function C() {
171
171
  return w.slice(e, e + 10);
172
172
  }, [w, I]), Y = (e) => /* @__PURE__ */ b("span", {
173
173
  className: t("inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium", {
174
- customer: "bg-blue-500/20 text-blue-600 dark:text-blue-400",
175
- cart_owner: "bg-green-500/20 text-green-600 dark:text-green-400",
176
- worker: "bg-yellow-500/20 text-yellow-600 dark:text-yellow-400",
177
- investor: "bg-purple-500/20 text-purple-600 dark:text-purple-400",
178
- admin: "bg-red-500/20 text-red-600 dark:text-red-400"
174
+ customer: "bg-status-info-bg/20 text-status-info-text",
175
+ cart_owner: "bg-status-success-bg/20 text-status-success-text",
176
+ worker: "bg-status-warning-bg/20 text-status-warning-text",
177
+ investor: "bg-accent-purple-subtle text-accent-purple",
178
+ admin: "bg-status-error-bg/20 text-status-error-text"
179
179
  }[e]),
180
180
  children: {
181
181
  customer: "Customer",
@@ -186,10 +186,10 @@ function C() {
186
186
  }[e] ?? e
187
187
  }), X = (e) => /* @__PURE__ */ b("span", {
188
188
  className: t("inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium capitalize", {
189
- active: "bg-green-500/20 text-green-600 dark:text-green-400",
189
+ active: "bg-status-success-bg/20 text-status-success-text",
190
190
  inactive: "bg-secondary text-secondary-foreground",
191
- suspended: "bg-red-500/20 text-red-600 dark:text-red-400",
192
- pending: "bg-yellow-500/20 text-yellow-600 dark:text-yellow-400"
191
+ suspended: "bg-status-error-bg/20 text-status-error-text",
192
+ pending: "bg-status-warning-bg/20 text-status-warning-text"
193
193
  }[e]),
194
194
  children: e
195
195
  });
@@ -218,17 +218,17 @@ function C() {
218
218
  {
219
219
  label: "Active",
220
220
  value: B.activeUsers.toLocaleString("en-IN"),
221
- cls: "bg-green-500/10 border-green-500/30"
221
+ cls: "bg-status-success-bg/10 border-status-success-border/30"
222
222
  },
223
223
  {
224
224
  label: "New (30d)",
225
225
  value: B.newUsers.toString(),
226
- cls: "bg-blue-500/10 border-blue-500/30"
226
+ cls: "bg-status-info-bg/10 border-status-info-border/30"
227
227
  },
228
228
  {
229
229
  label: "Verified",
230
230
  value: B.verifiedUsers.toLocaleString("en-IN"),
231
- cls: "bg-purple-500/10 border-purple-500/30"
231
+ cls: "bg-accent-purple-subtle border-accent-purple/30"
232
232
  },
233
233
  {
234
234
  label: "Customers",
@@ -251,7 +251,7 @@ function C() {
251
251
  cls: ""
252
252
  }
253
253
  ].map((e) => /* @__PURE__ */ x("div", {
254
- className: t("rounded-lg border border-border-subtle bg-bg-surface p-3", e.cls),
254
+ className: t("rounded-lg border border-border-seam bg-bg-surface p-3", e.cls),
255
255
  children: [/* @__PURE__ */ b("p", {
256
256
  className: "text-xs text-text-secondary",
257
257
  children: e.label
@@ -262,7 +262,7 @@ function C() {
262
262
  }, e.label))
263
263
  }),
264
264
  /* @__PURE__ */ b("div", {
265
- className: "rounded-lg border border-border-subtle bg-bg-surface p-4 mb-6",
265
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4 mb-6",
266
266
  children: /* @__PURE__ */ x("div", {
267
267
  className: "grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5 gap-3",
268
268
  children: [
@@ -273,13 +273,13 @@ function C() {
273
273
  placeholder: "Search users...",
274
274
  value: R.searchQuery,
275
275
  onChange: (e) => H("searchQuery", e.target.value),
276
- className: "w-full rounded-lg border border-border-subtle bg-bg-surface py-2 pl-10 pr-4 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]"
276
+ className: "w-full rounded-lg border border-border-seam bg-bg-surface py-2 pl-10 pr-4 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]"
277
277
  })]
278
278
  }),
279
279
  /* @__PURE__ */ x("select", {
280
280
  value: R.role,
281
281
  onChange: (e) => H("role", e.target.value),
282
- className: "rounded-lg border border-border-subtle bg-bg-surface py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]",
282
+ 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)]",
283
283
  children: [
284
284
  /* @__PURE__ */ b("option", {
285
285
  value: "",
@@ -306,7 +306,7 @@ function C() {
306
306
  /* @__PURE__ */ x("select", {
307
307
  value: R.status,
308
308
  onChange: (e) => H("status", e.target.value),
309
- className: "rounded-lg border border-border-subtle bg-bg-surface py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]",
309
+ 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)]",
310
310
  children: [
311
311
  /* @__PURE__ */ b("option", {
312
312
  value: "",
@@ -333,7 +333,7 @@ function C() {
333
333
  /* @__PURE__ */ x("select", {
334
334
  value: R.registrationDate,
335
335
  onChange: (e) => H("registrationDate", e.target.value),
336
- className: "rounded-lg border border-border-subtle bg-bg-surface py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]",
336
+ 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)]",
337
337
  children: [
338
338
  /* @__PURE__ */ b("option", {
339
339
  value: "",
@@ -360,7 +360,7 @@ function C() {
360
360
  /* @__PURE__ */ x("select", {
361
361
  value: R.sortBy,
362
362
  onChange: (e) => H("sortBy", e.target.value),
363
- className: "rounded-lg border border-border-subtle bg-bg-surface py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]",
363
+ 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)]",
364
364
  children: [
365
365
  /* @__PURE__ */ b("option", {
366
366
  value: "recent",
@@ -380,12 +380,12 @@ function C() {
380
380
  })
381
381
  }),
382
382
  /* @__PURE__ */ x("div", {
383
- className: "rounded-lg border border-border-subtle bg-bg-surface overflow-hidden",
383
+ className: "rounded-lg border border-border-seam bg-bg-surface overflow-hidden",
384
384
  children: [
385
385
  /* @__PURE__ */ b("div", {
386
386
  className: "block md:hidden space-y-4 p-4",
387
387
  children: J.map((e) => /* @__PURE__ */ x("div", {
388
- className: "rounded-lg border border-border-subtle bg-bg-sunken/30 p-4",
388
+ className: "rounded-lg border border-border-seam bg-bg-sunken/30 p-4",
389
389
  children: [
390
390
  /* @__PURE__ */ x("div", {
391
391
  className: "flex items-center mb-3",
@@ -443,21 +443,21 @@ function C() {
443
443
  children: [
444
444
  /* @__PURE__ */ x("div", {
445
445
  className: "flex items-center",
446
- children: [/* @__PURE__ */ b("span", { className: t("w-2 h-2 rounded-full mr-2", e.isEmailVerified ? "bg-green-500" : "bg-red-500") }), /* @__PURE__ */ b("span", {
446
+ children: [/* @__PURE__ */ b("span", { className: t("w-2 h-2 rounded-full mr-2", e.isEmailVerified ? "bg-status-success-text" : "bg-status-error-text") }), /* @__PURE__ */ b("span", {
447
447
  className: "text-sm text-text-secondary",
448
448
  children: "Email"
449
449
  })]
450
450
  }),
451
451
  /* @__PURE__ */ x("div", {
452
452
  className: "flex items-center",
453
- children: [/* @__PURE__ */ b("span", { className: t("w-2 h-2 rounded-full mr-2", e.isPhoneVerified ? "bg-green-500" : "bg-red-500") }), /* @__PURE__ */ b("span", {
453
+ children: [/* @__PURE__ */ b("span", { className: t("w-2 h-2 rounded-full mr-2", e.isPhoneVerified ? "bg-status-success-text" : "bg-status-error-text") }), /* @__PURE__ */ b("span", {
454
454
  className: "text-sm text-text-secondary",
455
455
  children: "Phone"
456
456
  })]
457
457
  }),
458
458
  e.kycStatus && /* @__PURE__ */ x("div", {
459
459
  className: "flex items-center",
460
- children: [/* @__PURE__ */ b("span", { className: t("w-2 h-2 rounded-full mr-2", e.kycStatus === "verified" ? "bg-green-500" : e.kycStatus === "pending" ? "bg-yellow-500" : "bg-red-500") }), /* @__PURE__ */ b("span", {
460
+ children: [/* @__PURE__ */ b("span", { className: t("w-2 h-2 rounded-full mr-2", e.kycStatus === "verified" ? "bg-status-success-text" : e.kycStatus === "pending" ? "bg-status-warning-text" : "bg-status-error-text") }), /* @__PURE__ */ b("span", {
461
461
  className: "text-sm text-text-secondary",
462
462
  children: "KYC"
463
463
  })]
@@ -470,18 +470,18 @@ function C() {
470
470
  /* @__PURE__ */ b("button", {
471
471
  type: "button",
472
472
  onClick: () => U(e, "edit"),
473
- className: "rounded-lg border border-border-subtle px-3 py-1.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
473
+ className: "rounded-lg border border-border-seam px-3 py-1.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
474
474
  children: "Edit"
475
475
  }),
476
476
  e.status === "active" ? /* @__PURE__ */ b("button", {
477
477
  type: "button",
478
478
  onClick: () => U(e, "suspend"),
479
- className: "rounded-lg border border-border-subtle px-3 py-1.5 text-sm font-medium text-red-600 hover:bg-red-500/10 transition-colors",
479
+ className: "rounded-lg border border-border-seam px-3 py-1.5 text-sm font-medium text-status-error-text hover:bg-status-error-bg/10 transition-colors",
480
480
  children: "Suspend"
481
481
  }) : /* @__PURE__ */ b("button", {
482
482
  type: "button",
483
483
  onClick: () => U(e, "activate"),
484
- className: "rounded-lg border border-border-subtle px-3 py-1.5 text-sm font-medium text-green-600 hover:bg-green-500/10 transition-colors",
484
+ className: "rounded-lg border border-border-seam px-3 py-1.5 text-sm font-medium text-status-success-text hover:bg-status-success-bg/10 transition-colors",
485
485
  children: "Activate"
486
486
  }),
487
487
  e.kycStatus === "pending" && /* @__PURE__ */ b("button", {
@@ -500,7 +500,7 @@ function C() {
500
500
  children: /* @__PURE__ */ x("table", {
501
501
  className: "w-full",
502
502
  children: [/* @__PURE__ */ b("thead", { children: /* @__PURE__ */ x("tr", {
503
- className: "border-b border-border-subtle bg-bg-sunken/50",
503
+ className: "border-b border-border-seam bg-bg-sunken/50",
504
504
  children: [
505
505
  /* @__PURE__ */ b("th", {
506
506
  className: "px-4 py-3 text-left text-xs font-medium text-text-secondary uppercase tracking-wider",
@@ -622,21 +622,21 @@ function C() {
622
622
  children: [
623
623
  /* @__PURE__ */ x("div", {
624
624
  className: "flex items-center gap-2",
625
- children: [/* @__PURE__ */ b("span", { className: t("w-2 h-2 rounded-full", e.isEmailVerified ? "bg-green-500" : "bg-red-500") }), /* @__PURE__ */ b("span", {
625
+ children: [/* @__PURE__ */ b("span", { className: t("w-2 h-2 rounded-full", e.isEmailVerified ? "bg-status-success-text" : "bg-status-error-text") }), /* @__PURE__ */ b("span", {
626
626
  className: "text-sm text-text-secondary",
627
627
  children: "Email"
628
628
  })]
629
629
  }),
630
630
  /* @__PURE__ */ x("div", {
631
631
  className: "flex items-center gap-2",
632
- children: [/* @__PURE__ */ b("span", { className: t("w-2 h-2 rounded-full", e.isPhoneVerified ? "bg-green-500" : "bg-red-500") }), /* @__PURE__ */ b("span", {
632
+ children: [/* @__PURE__ */ b("span", { className: t("w-2 h-2 rounded-full", e.isPhoneVerified ? "bg-status-success-text" : "bg-status-error-text") }), /* @__PURE__ */ b("span", {
633
633
  className: "text-sm text-text-secondary",
634
634
  children: "Phone"
635
635
  })]
636
636
  }),
637
637
  e.kycStatus && /* @__PURE__ */ x("div", {
638
638
  className: "flex items-center gap-2",
639
- children: [/* @__PURE__ */ b("span", { className: t("w-2 h-2 rounded-full", e.kycStatus === "verified" ? "bg-green-500" : e.kycStatus === "pending" ? "bg-yellow-500" : "bg-red-500") }), /* @__PURE__ */ b("span", {
639
+ children: [/* @__PURE__ */ b("span", { className: t("w-2 h-2 rounded-full", e.kycStatus === "verified" ? "bg-status-success-text" : e.kycStatus === "pending" ? "bg-status-warning-text" : "bg-status-error-text") }), /* @__PURE__ */ b("span", {
640
640
  className: "text-sm text-text-secondary",
641
641
  children: "KYC"
642
642
  })]
@@ -660,20 +660,20 @@ function C() {
660
660
  type: "button",
661
661
  onClick: () => U(e, "suspend"),
662
662
  title: "Suspend",
663
- className: "rounded p-1.5 text-text-secondary hover:text-red-600 hover:bg-red-500/10 transition-colors",
663
+ className: "rounded p-1.5 text-text-secondary hover:text-status-error-text hover:bg-status-error-bg/10 transition-colors",
664
664
  children: /* @__PURE__ */ b(g, { className: "h-4 w-4" })
665
665
  }) : /* @__PURE__ */ b("button", {
666
666
  type: "button",
667
667
  onClick: () => U(e, "activate"),
668
668
  title: "Activate",
669
- className: "rounded p-1.5 text-text-secondary hover:text-green-600 hover:bg-green-500/10 transition-colors",
669
+ className: "rounded p-1.5 text-text-secondary hover:text-status-success-text hover:bg-status-success-bg/10 transition-colors",
670
670
  children: /* @__PURE__ */ b(h, { className: "h-4 w-4" })
671
671
  }),
672
672
  e.kycStatus === "pending" && /* @__PURE__ */ b("button", {
673
673
  type: "button",
674
674
  onClick: () => U(e, "verify"),
675
675
  title: "Verify",
676
- className: "rounded p-1.5 text-text-secondary hover:text-blue-600 hover:bg-blue-500/10 transition-colors",
676
+ className: "rounded p-1.5 text-text-secondary hover:text-status-info-text hover:bg-status-info-bg/10 transition-colors",
677
677
  children: /* @__PURE__ */ b(f, { className: "h-4 w-4" })
678
678
  })
679
679
  ]
@@ -725,23 +725,23 @@ function C() {
725
725
  type: "button",
726
726
  disabled: I === 1,
727
727
  onClick: () => L((e) => Math.max(1, e - 1)),
728
- className: "flex items-center gap-1.5 rounded-lg border border-border-subtle px-3 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
728
+ className: "flex items-center gap-1.5 rounded-lg border border-border-seam px-3 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
729
729
  children: [/* @__PURE__ */ b(s, { className: "h-4 w-4" }), "Previous"]
730
730
  }), /* @__PURE__ */ x("button", {
731
731
  type: "button",
732
732
  disabled: I * 10 >= w.length,
733
733
  onClick: () => L((e) => e + 1),
734
- className: "flex items-center gap-1.5 rounded-lg border border-border-subtle px-3 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
734
+ className: "flex items-center gap-1.5 rounded-lg border border-border-seam px-3 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
735
735
  children: ["Next", /* @__PURE__ */ b(c, { className: "h-4 w-4" })]
736
736
  })]
737
737
  })]
738
738
  }),
739
739
  A && O && /* @__PURE__ */ b("div", {
740
- className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
740
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-bg-canvas/50 p-4",
741
741
  children: /* @__PURE__ */ x("div", {
742
- className: "w-full max-w-md rounded-lg border border-border-subtle bg-bg-surface shadow-lg max-h-[90vh] overflow-y-auto",
742
+ className: "w-full max-w-md rounded-lg border border-border-seam bg-bg-surface shadow-lg max-h-[90vh] overflow-y-auto",
743
743
  children: [/* @__PURE__ */ x("div", {
744
- className: "flex items-center justify-between p-4 border-b border-border-subtle",
744
+ className: "flex items-center justify-between p-4 border-b border-border-seam",
745
745
  children: [/* @__PURE__ */ b("h3", {
746
746
  className: "text-lg font-semibold text-text-primary",
747
747
  children: M === "edit" ? "Edit User" : "Delete User"
@@ -767,12 +767,12 @@ function C() {
767
767
  children: [/* @__PURE__ */ b("button", {
768
768
  type: "button",
769
769
  onClick: () => j(!1),
770
- className: "flex-1 rounded-lg border border-border-subtle py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
770
+ className: "flex-1 rounded-lg border border-border-seam py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
771
771
  children: "Cancel"
772
772
  }), /* @__PURE__ */ b("button", {
773
773
  type: "button",
774
774
  onClick: W,
775
- className: "flex-1 rounded-lg bg-red-600 hover:bg-red-700 py-2 text-sm font-medium text-white transition-colors",
775
+ className: "flex-1 rounded-lg bg-status-error-text hover:bg-status-error-text py-2 text-sm font-medium text-text-inverse transition-colors",
776
776
  children: "Delete User"
777
777
  })]
778
778
  })] }) : /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ x("div", {
@@ -790,7 +790,7 @@ function C() {
790
790
  ...t,
791
791
  firstName: e.target.value
792
792
  })),
793
- className: "w-full rounded-lg border border-border-subtle bg-bg-surface py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]"
793
+ className: "w-full 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)]"
794
794
  })] }), /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("label", {
795
795
  className: "block text-sm font-medium text-text-secondary mb-1",
796
796
  children: "Last Name"
@@ -801,7 +801,7 @@ function C() {
801
801
  ...t,
802
802
  lastName: e.target.value
803
803
  })),
804
- className: "w-full rounded-lg border border-border-subtle bg-bg-surface py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]"
804
+ className: "w-full 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)]"
805
805
  })] })]
806
806
  }),
807
807
  /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("label", {
@@ -814,7 +814,7 @@ function C() {
814
814
  ...t,
815
815
  email: e.target.value
816
816
  })),
817
- className: "w-full rounded-lg border border-border-subtle bg-bg-surface py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]"
817
+ className: "w-full 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)]"
818
818
  })] }),
819
819
  /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("label", {
820
820
  className: "block text-sm font-medium text-text-secondary mb-1",
@@ -826,7 +826,7 @@ function C() {
826
826
  ...t,
827
827
  phone: e.target.value
828
828
  })),
829
- className: "w-full rounded-lg border border-border-subtle bg-bg-surface py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]"
829
+ className: "w-full 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)]"
830
830
  })] }),
831
831
  /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("label", {
832
832
  className: "block text-sm font-medium text-text-secondary mb-1",
@@ -837,7 +837,7 @@ function C() {
837
837
  ...t,
838
838
  role: e.target.value
839
839
  })),
840
- className: "w-full rounded-lg border border-border-subtle bg-bg-surface py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]",
840
+ className: "w-full 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)]",
841
841
  children: [
842
842
  /* @__PURE__ */ b("option", {
843
843
  value: "customer",
@@ -864,7 +864,7 @@ function C() {
864
864
  /* @__PURE__ */ b("button", {
865
865
  type: "button",
866
866
  onClick: () => j(!1),
867
- className: "flex-1 rounded-lg border border-border-subtle py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
867
+ className: "flex-1 rounded-lg border border-border-seam py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
868
868
  children: "Cancel"
869
869
  }),
870
870
  /* @__PURE__ */ b("button", {
@@ -876,7 +876,7 @@ function C() {
876
876
  /* @__PURE__ */ b("button", {
877
877
  type: "button",
878
878
  onClick: () => N("delete"),
879
- className: "rounded-lg border border-border-subtle py-2 px-3 text-sm font-medium text-red-600 hover:bg-red-500/10 transition-colors",
879
+ className: "rounded-lg border border-border-seam py-2 px-3 text-sm font-medium text-status-error-text hover:bg-status-error-bg/10 transition-colors",
880
880
  children: /* @__PURE__ */ b(m, { className: "h-4 w-4" })
881
881
  })
882
882
  ]