@burdenoff/microfe-subscriberbot 2026.615.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 (111) hide show
  1. package/dist/node_modules/{.bun/clsx@2.1.1/node_modules/clsx → clsx}/dist/clsx.js +1 -1
  2. package/dist/node_modules/clsx/dist/clsx.js.map +1 -0
  3. package/dist/node_modules/{.bun/tailwind-merge@3.5.0/node_modules/tailwind-merge → tailwind-merge}/dist/bundle-mjs.js +212 -170
  4. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
  5. package/dist/subscriberbot/components/EmptyState.js +20 -13
  6. package/dist/subscriberbot/components/EmptyState.js.map +1 -1
  7. package/dist/subscriberbot/components/InvestmentCard.js +29 -28
  8. package/dist/subscriberbot/components/InvestmentCard.js.map +1 -1
  9. package/dist/subscriberbot/components/MetricsCard.js +18 -15
  10. package/dist/subscriberbot/components/MetricsCard.js.map +1 -1
  11. package/dist/subscriberbot/components/PageLayout.js +27 -15
  12. package/dist/subscriberbot/components/PageLayout.js.map +1 -1
  13. package/dist/subscriberbot/components/RatingDisplay.js +3 -3
  14. package/dist/subscriberbot/components/RatingDisplay.js.map +1 -1
  15. package/dist/subscriberbot/components/StatusBadge.js +26 -14
  16. package/dist/subscriberbot/components/StatusBadge.js.map +1 -1
  17. package/dist/subscriberbot/context/SubscriberBotContext.js.map +1 -1
  18. package/dist/subscriberbot/pages/HomePage.js +109 -105
  19. package/dist/subscriberbot/pages/HomePage.js.map +1 -1
  20. package/dist/subscriberbot/pages/admin/AdminAnalyticsPage.js +87 -87
  21. package/dist/subscriberbot/pages/admin/AdminAnalyticsPage.js.map +1 -1
  22. package/dist/subscriberbot/pages/admin/AdminDashboard.js +102 -101
  23. package/dist/subscriberbot/pages/admin/AdminDashboard.js.map +1 -1
  24. package/dist/subscriberbot/pages/admin/AdminFinancialPage.js +48 -48
  25. package/dist/subscriberbot/pages/admin/AdminFinancialPage.js.map +1 -1
  26. package/dist/subscriberbot/pages/admin/AdminOrdersPage.js +96 -96
  27. package/dist/subscriberbot/pages/admin/AdminOrdersPage.js.map +1 -1
  28. package/dist/subscriberbot/pages/admin/AdminProfilePage.js +34 -34
  29. package/dist/subscriberbot/pages/admin/AdminProfilePage.js.map +1 -1
  30. package/dist/subscriberbot/pages/admin/AdminSettingsPage.js +40 -40
  31. package/dist/subscriberbot/pages/admin/AdminSettingsPage.js.map +1 -1
  32. package/dist/subscriberbot/pages/admin/CartManagementPage.js +104 -104
  33. package/dist/subscriberbot/pages/admin/CartManagementPage.js.map +1 -1
  34. package/dist/subscriberbot/pages/admin/UserManagementPage.js +99 -99
  35. package/dist/subscriberbot/pages/admin/UserManagementPage.js.map +1 -1
  36. package/dist/subscriberbot/pages/cart-owner/AnalyticsDashboard.js +117 -117
  37. package/dist/subscriberbot/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  38. package/dist/subscriberbot/pages/cart-owner/BusinessSettingsPage.js +34 -34
  39. package/dist/subscriberbot/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
  40. package/dist/subscriberbot/pages/cart-owner/CartOwnerDashboard.js +158 -153
  41. package/dist/subscriberbot/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  42. package/dist/subscriberbot/pages/cart-owner/CartOwnerProfilePage.js +117 -117
  43. package/dist/subscriberbot/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  44. package/dist/subscriberbot/pages/cart-owner/CartServiceConfigPage.js +89 -89
  45. package/dist/subscriberbot/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
  46. package/dist/subscriberbot/pages/cart-owner/InventoryManagementPage.js +109 -109
  47. package/dist/subscriberbot/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  48. package/dist/subscriberbot/pages/cart-owner/OrderManagementPage.js +90 -89
  49. package/dist/subscriberbot/pages/cart-owner/OrderManagementPage.js.map +1 -1
  50. package/dist/subscriberbot/pages/cart-owner/StaffManagementPage.js +97 -97
  51. package/dist/subscriberbot/pages/cart-owner/StaffManagementPage.js.map +1 -1
  52. package/dist/subscriberbot/pages/common/HelpSupportPage.js +138 -138
  53. package/dist/subscriberbot/pages/common/HelpSupportPage.js.map +1 -1
  54. package/dist/subscriberbot/pages/common/NotificationCenterPage.js +67 -66
  55. package/dist/subscriberbot/pages/common/NotificationCenterPage.js.map +1 -1
  56. package/dist/subscriberbot/pages/common/SettingsPage.js +116 -116
  57. package/dist/subscriberbot/pages/common/SettingsPage.js.map +1 -1
  58. package/dist/subscriberbot/pages/customer/BookingDetailsPage.js +73 -72
  59. package/dist/subscriberbot/pages/customer/BookingDetailsPage.js.map +1 -1
  60. package/dist/subscriberbot/pages/customer/CartDetailPage.js +89 -88
  61. package/dist/subscriberbot/pages/customer/CartDetailPage.js.map +1 -1
  62. package/dist/subscriberbot/pages/customer/CartDiscoveryPage.js +68 -66
  63. package/dist/subscriberbot/pages/customer/CartDiscoveryPage.js.map +1 -1
  64. package/dist/subscriberbot/pages/customer/CheckoutPage.js +80 -80
  65. package/dist/subscriberbot/pages/customer/CheckoutPage.js.map +1 -1
  66. package/dist/subscriberbot/pages/customer/CustomerDashboard.js +89 -88
  67. package/dist/subscriberbot/pages/customer/CustomerDashboard.js.map +1 -1
  68. package/dist/subscriberbot/pages/customer/CustomerProfilePage.js +84 -84
  69. package/dist/subscriberbot/pages/customer/CustomerProfilePage.js.map +1 -1
  70. package/dist/subscriberbot/pages/customer/DirectServiceBookingPage.js +92 -91
  71. package/dist/subscriberbot/pages/customer/DirectServiceBookingPage.js.map +1 -1
  72. package/dist/subscriberbot/pages/customer/FavoritesPage.js +34 -33
  73. package/dist/subscriberbot/pages/customer/FavoritesPage.js.map +1 -1
  74. package/dist/subscriberbot/pages/customer/OrderHistoryPage.js +45 -43
  75. package/dist/subscriberbot/pages/customer/OrderHistoryPage.js.map +1 -1
  76. package/dist/subscriberbot/pages/customer/OrderTrackingPage.js +61 -60
  77. package/dist/subscriberbot/pages/customer/OrderTrackingPage.js.map +1 -1
  78. package/dist/subscriberbot/pages/customer/PaymentMethodsPage.js +59 -58
  79. package/dist/subscriberbot/pages/customer/PaymentMethodsPage.js.map +1 -1
  80. package/dist/subscriberbot/pages/customer/ReviewsPage.js +49 -48
  81. package/dist/subscriberbot/pages/customer/ReviewsPage.js.map +1 -1
  82. package/dist/subscriberbot/pages/customer/SavedAddressesPage.js +47 -46
  83. package/dist/subscriberbot/pages/customer/SavedAddressesPage.js.map +1 -1
  84. package/dist/subscriberbot/pages/investor/InvestmentDetailsPage.js +129 -129
  85. package/dist/subscriberbot/pages/investor/InvestmentDetailsPage.js.map +1 -1
  86. package/dist/subscriberbot/pages/investor/InvestmentOpportunitiesPage.js +90 -88
  87. package/dist/subscriberbot/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  88. package/dist/subscriberbot/pages/investor/InvestorAnalyticsPage.js +88 -88
  89. package/dist/subscriberbot/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  90. package/dist/subscriberbot/pages/investor/InvestorDashboard.js +63 -62
  91. package/dist/subscriberbot/pages/investor/InvestorDashboard.js.map +1 -1
  92. package/dist/subscriberbot/pages/investor/InvestorInvestmentsPage.js +39 -38
  93. package/dist/subscriberbot/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  94. package/dist/subscriberbot/pages/investor/InvestorPortfolioPage.js +66 -66
  95. package/dist/subscriberbot/pages/investor/InvestorPortfolioPage.js.map +1 -1
  96. package/dist/subscriberbot/pages/investor/InvestorProfilePage.js +154 -154
  97. package/dist/subscriberbot/pages/investor/InvestorProfilePage.js.map +1 -1
  98. package/dist/subscriberbot/pages/worker/TaskDetailsPage.js +80 -79
  99. package/dist/subscriberbot/pages/worker/TaskDetailsPage.js.map +1 -1
  100. package/dist/subscriberbot/pages/worker/WorkerDashboard.js +107 -106
  101. package/dist/subscriberbot/pages/worker/WorkerDashboard.js.map +1 -1
  102. package/dist/subscriberbot/pages/worker/WorkerOrdersPage.js +73 -72
  103. package/dist/subscriberbot/pages/worker/WorkerOrdersPage.js.map +1 -1
  104. package/dist/subscriberbot/pages/worker/WorkerProfilePage.js +108 -108
  105. package/dist/subscriberbot/pages/worker/WorkerProfilePage.js.map +1 -1
  106. package/dist/subscriberbot/pages/worker/WorkerSchedulePage.js +71 -69
  107. package/dist/subscriberbot/pages/worker/WorkerSchedulePage.js.map +1 -1
  108. package/dist/subscriberbot/utils/cn.js +2 -2
  109. package/package.json +3 -3
  110. package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js.map +0 -1
  111. package/dist/node_modules/.bun/tailwind-merge@3.5.0/node_modules/tailwind-merge/dist/bundle-mjs.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"InvestorAnalyticsPage.js","names":[],"sources":["../../../../src/subscriberbot/pages/investor/InvestorAnalyticsPage.tsx"],"sourcesContent":["/**\n * Investor Analytics Page\n * @module subscriberbot/pages/investor\n *\n * Date range selector, export button, metrics grid, performance by cart\n * with rankings, category distribution with progress bars, monthly\n * performance table, risk analysis with scores, diversification score,\n * and recommendations list.\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport {\n TrendingUp,\n PieChart,\n BarChart3,\n Calendar,\n Download,\n Target,\n Activity,\n Wallet,\n IndianRupee,\n Lightbulb,\n Shield,\n AlertTriangle,\n ArrowUp,\n ArrowDown,\n} from 'lucide-react';\nimport { PageLayout } from '../../components/PageLayout';\nimport { MetricsCard } from '../../components/MetricsCard';\nimport { useSubscriberBot } from '../../context/SubscriberBotContext';\nimport { cn } from '../../utils/cn';\nimport { formatCurrency, formatNumber } from '../../utils/formatters';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ninterface AnalyticsData {\n portfolioMetrics: {\n totalValue: number;\n totalInvested: number;\n totalReturns: number;\n averageRoi: number;\n portfolioGrowth: number;\n bestPerforming: string;\n worstPerforming: string;\n };\n performanceByCart: Array<{\n cartName: string;\n investedAmount: number;\n currentValue: number;\n returns: number;\n roi: number;\n }>;\n performanceByCategory: Array<{\n category: string;\n investedAmount: number;\n returns: number;\n percentage: number;\n }>;\n monthlyPerformance: Array<{\n month: string;\n invested: number;\n value: number;\n returns: number;\n }>;\n riskAnalysis: {\n riskScore: number;\n diversificationScore: number;\n volatilityScore: number;\n recommendations: string[];\n };\n}\n\n// ---------------------------------------------------------------------------\n// Mock data\n// ---------------------------------------------------------------------------\n\nconst mockAnalytics: AnalyticsData = {\n portfolioMetrics: {\n totalValue: 283700,\n totalInvested: 255000,\n totalReturns: 28700,\n averageRoi: 19.6,\n portfolioGrowth: 11.3,\n bestPerforming: 'Biryani House',\n worstPerforming: 'Healthy Bites',\n },\n performanceByCart: [\n {\n cartName: 'Biryani House',\n investedAmount: 60000,\n currentValue: 72000,\n returns: 12000,\n roi: 20.0,\n },\n {\n cartName: 'South Indian Express',\n investedAmount: 50000,\n currentValue: 58500,\n returns: 8500,\n roi: 17.0,\n },\n {\n cartName: 'Pizza Corner',\n investedAmount: 75000,\n currentValue: 82000,\n returns: 7000,\n roi: 9.3,\n },\n {\n cartName: 'Healthy Bites',\n investedAmount: 30000,\n currentValue: 31200,\n returns: 1200,\n roi: 4.0,\n },\n {\n cartName: 'Street Food Junction',\n investedAmount: 40000,\n currentValue: 40000,\n returns: 0,\n roi: 0,\n },\n ],\n performanceByCategory: [\n {\n category: 'South Indian',\n investedAmount: 110000,\n returns: 20500,\n percentage: 43.1,\n },\n {\n category: 'Fast Food',\n investedAmount: 75000,\n returns: 7000,\n percentage: 29.4,\n },\n {\n category: 'Street Food',\n investedAmount: 40000,\n returns: 0,\n percentage: 15.7,\n },\n {\n category: 'Healthy Food',\n investedAmount: 30000,\n returns: 1200,\n percentage: 11.8,\n },\n ],\n monthlyPerformance: [\n { month: 'Jun 2024', invested: 195000, value: 202000, returns: 7000 },\n { month: 'Jul 2024', invested: 215000, value: 228000, returns: 13000 },\n { month: 'Aug 2024', invested: 255000, value: 265000, returns: 10000 },\n { month: 'Sep 2024', invested: 255000, value: 275000, returns: 20000 },\n { month: 'Oct 2024', invested: 255000, value: 280000, returns: 25000 },\n { month: 'Nov 2024', invested: 255000, value: 283700, returns: 28700 },\n ],\n riskAnalysis: {\n riskScore: 3.2,\n diversificationScore: 7.8,\n volatilityScore: 2.5,\n recommendations: [\n 'Consider diversifying into more food categories',\n 'Your portfolio shows good risk distribution',\n 'Consider investing in carts from different locations',\n 'Monitor underperforming investments closely',\n 'Explore premium segment opportunities for higher returns',\n ],\n },\n};\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction getRiskLevel(score: number): { label: string; color: string } {\n if (score <= 2) return { label: 'Low Risk', color: 'text-green-600 dark:text-green-400' };\n if (score <= 4) return { label: 'Moderate Risk', color: 'text-yellow-600 dark:text-yellow-400' };\n return { label: 'High Risk', color: 'text-red-600 dark:text-red-400' };\n}\n\nfunction getRiskBgColor(score: number): string {\n if (score <= 2) return 'bg-green-500';\n if (score <= 4) return 'bg-yellow-500';\n return 'bg-red-500';\n}\n\nfunction getDiversificationLevel(score: number): { label: string; color: string } {\n if (score >= 8) return { label: 'Well Diversified', color: 'text-green-600 dark:text-green-400' };\n if (score >= 6)\n return { label: 'Moderately Diversified', color: 'text-yellow-600 dark:text-yellow-400' };\n return { label: 'Poorly Diversified', color: 'text-red-600 dark:text-red-400' };\n}\n\nfunction getDiversificationBgColor(score: number): string {\n if (score >= 8) return 'bg-green-500';\n if (score >= 6) return 'bg-yellow-500';\n return 'bg-red-500';\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport function InvestorAnalyticsPage() {\n const { navigateTo } = useSubscriberBot();\n const [isLoading, setIsLoading] = useState(true);\n const [dateRange, setDateRange] = useState('6m');\n const [analytics, setAnalytics] = useState<AnalyticsData | null>(null);\n const [exportStatus, setExportStatus] = useState<'idle' | 'exporting' | 'done'>('idle');\n\n useEffect(() => {\n setIsLoading(true);\n const timer = setTimeout(() => {\n setAnalytics(mockAnalytics);\n setIsLoading(false);\n }, 600);\n return () => clearTimeout(timer);\n }, [dateRange]);\n\n const handleExportReport = useCallback(() => {\n setExportStatus('exporting');\n setTimeout(() => {\n setExportStatus('done');\n setTimeout(() => setExportStatus('idle'), 2000);\n }, 1200);\n }, []);\n\n if (isLoading || !analytics) {\n return (\n <PageLayout title=\"Investment Analytics\" description=\"Loading analytics...\">\n <div className=\"flex items-center justify-center py-20\">\n <div className=\"text-center\">\n <div className=\"mx-auto mb-4 h-12 w-12 animate-spin rounded-full border-b-2 border-primary\" />\n <p className=\"text-sm text-muted-foreground\">Loading analytics data...</p>\n </div>\n </div>\n </PageLayout>\n );\n }\n\n const riskLevel = getRiskLevel(analytics.riskAnalysis.riskScore);\n const diversificationLevel = getDiversificationLevel(analytics.riskAnalysis.diversificationScore);\n\n // Sort carts by ROI for ranking\n const sortedCarts = [...analytics.performanceByCart].sort((a, b) => b.roi - a.roi);\n\n return (\n <PageLayout\n title=\"Investment Analytics\"\n description=\"Comprehensive analysis of your portfolio performance\"\n actions={\n <div className=\"flex items-center gap-3\">\n {/* Date Range Selector */}\n <select\n value={dateRange}\n onChange={(e) => setDateRange(e.target.value)}\n className=\"rounded-lg border border-border bg-card px-3 py-2 text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-ring\"\n >\n <option value=\"1m\">Last Month</option>\n <option value=\"3m\">Last 3 Months</option>\n <option value=\"6m\">Last 6 Months</option>\n <option value=\"1y\">Last Year</option>\n <option value=\"all\">All Time</option>\n </select>\n\n {/* Export Button */}\n <button\n type=\"button\"\n onClick={handleExportReport}\n disabled={exportStatus === 'exporting'}\n className={cn(\n 'flex items-center gap-2 rounded-lg px-4 py-2 text-sm font-medium transition-colors',\n exportStatus === 'exporting'\n ? 'cursor-not-allowed bg-muted text-muted-foreground'\n : exportStatus === 'done'\n ? 'bg-green-600 text-white'\n : 'bg-primary text-primary-foreground hover:bg-primary/90'\n )}\n >\n <Download className=\"h-4 w-4\" />\n {exportStatus === 'exporting'\n ? 'Exporting...'\n : exportStatus === 'done'\n ? 'Exported!'\n : 'Export Report'}\n </button>\n </div>\n }\n >\n {/* Key Metrics */}\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n <MetricsCard\n icon={<Wallet className=\"h-5 w-5\" />}\n value={formatCurrency(analytics.portfolioMetrics.totalValue, {\n minimumFractionDigits: 0,\n })}\n label=\"Portfolio Value\"\n trend=\"up\"\n trendValue={`+${analytics.portfolioMetrics.portfolioGrowth}% total growth`}\n />\n <MetricsCard\n icon={<TrendingUp className=\"h-5 w-5\" />}\n value={formatCurrency(analytics.portfolioMetrics.totalReturns, {\n minimumFractionDigits: 0,\n })}\n label=\"Total Returns\"\n trend=\"up\"\n trendValue=\"Profit earned so far\"\n />\n <MetricsCard\n icon={<Target className=\"h-5 w-5\" />}\n value={`${analytics.portfolioMetrics.averageRoi}%`}\n label=\"Average ROI\"\n trend=\"up\"\n trendValue=\"Across all investments\"\n />\n <MetricsCard\n icon={<Activity className=\"h-5 w-5\" />}\n value={`${analytics.riskAnalysis.riskScore}/5`}\n label=\"Risk Score\"\n trend=\"neutral\"\n trendValue={riskLevel.label}\n />\n </div>\n\n {/* Best / Worst Performers */}\n <div className=\"mt-4 grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <div className=\"flex items-center gap-3 rounded-lg border border-border bg-card p-4\">\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-green-500/10\">\n <ArrowUp className=\"h-5 w-5 text-green-600 dark:text-green-400\" />\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Best Performing</p>\n <p className=\"text-sm font-semibold text-green-600 dark:text-green-400\">\n {analytics.portfolioMetrics.bestPerforming}\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-3 rounded-lg border border-border bg-card p-4\">\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-red-500/10\">\n <ArrowDown className=\"h-5 w-5 text-red-600 dark:text-red-400\" />\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Worst Performing</p>\n <p className=\"text-sm font-semibold text-foreground\">\n {analytics.portfolioMetrics.worstPerforming}\n </p>\n </div>\n </div>\n </div>\n\n {/* Performance by Cart & Category Distribution */}\n <div className=\"mt-6 grid grid-cols-1 gap-6 lg:grid-cols-2\">\n {/* Performance by Cart */}\n <section>\n <div className=\"mb-4 flex items-center gap-2\">\n <BarChart3 className=\"h-5 w-5 text-muted-foreground\" />\n <h2 className=\"text-lg font-semibold text-foreground\">Performance by Cart</h2>\n </div>\n\n <div className=\"space-y-3\">\n {sortedCarts.map((cart, index) => (\n <div\n key={cart.cartName}\n className=\"flex items-center justify-between rounded-lg border border-border bg-card p-3\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-primary text-xs font-bold text-primary-foreground\">\n {index + 1}\n </div>\n <div>\n <p className=\"text-sm font-medium text-foreground\">{cart.cartName}</p>\n <p className=\"text-xs text-muted-foreground\">\n {formatCurrency(cart.investedAmount, { minimumFractionDigits: 0 })} invested\n </p>\n </div>\n </div>\n <div className=\"text-right\">\n <p\n className={cn(\n 'text-sm font-semibold',\n cart.returns >= 0\n ? 'text-green-600 dark:text-green-400'\n : 'text-red-600 dark:text-red-400'\n )}\n >\n {cart.returns >= 0 ? '+' : ''}\n {formatCurrency(cart.returns, { minimumFractionDigits: 0 })}\n </p>\n <p\n className={cn(\n 'text-xs',\n cart.roi >= 0\n ? 'text-green-600 dark:text-green-400'\n : 'text-red-600 dark:text-red-400'\n )}\n >\n {cart.roi >= 0 ? '+' : ''}\n {cart.roi}% ROI\n </p>\n </div>\n </div>\n ))}\n </div>\n </section>\n\n {/* Category Distribution */}\n <section>\n <div className=\"mb-4 flex items-center gap-2\">\n <PieChart className=\"h-5 w-5 text-muted-foreground\" />\n <h2 className=\"text-lg font-semibold text-foreground\">Category Distribution</h2>\n </div>\n\n <div className=\"space-y-4\">\n {analytics.performanceByCategory.map((category) => (\n <div key={category.category} className=\"rounded-lg border border-border bg-card p-3\">\n <div className=\"mb-2 flex items-center justify-between\">\n <span className=\"text-sm font-medium text-foreground\">{category.category}</span>\n <span className=\"text-sm text-muted-foreground\">{category.percentage}%</span>\n </div>\n <div className=\"mb-2 h-2 w-full overflow-hidden rounded-full bg-muted\">\n <div\n className=\"h-full rounded-full bg-primary transition-all duration-300\"\n style={{ width: `${category.percentage}%` }}\n />\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs text-muted-foreground\">\n {formatCurrency(category.investedAmount, { minimumFractionDigits: 0 })} invested\n </span>\n <span\n className={cn(\n 'text-xs font-semibold',\n category.returns >= 0\n ? 'text-green-600 dark:text-green-400'\n : 'text-red-600 dark:text-red-400'\n )}\n >\n {category.returns >= 0 ? '+' : ''}\n {formatCurrency(category.returns, { minimumFractionDigits: 0 })}\n </span>\n </div>\n </div>\n ))}\n </div>\n </section>\n </div>\n\n {/* Monthly Performance Table */}\n <section className=\"mt-8\">\n <div className=\"mb-4 flex items-center gap-2\">\n <Calendar className=\"h-5 w-5 text-muted-foreground\" />\n <h2 className=\"text-lg font-semibold text-foreground\">Portfolio Growth Trend</h2>\n </div>\n\n <div className=\"overflow-hidden rounded-lg border border-border bg-card\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b border-border bg-muted/50\">\n <th className=\"px-4 py-3 text-left text-xs font-medium uppercase tracking-wider text-muted-foreground sm:px-6\">\n Month\n </th>\n <th className=\"px-4 py-3 text-left text-xs font-medium uppercase tracking-wider text-muted-foreground sm:px-6\">\n Invested\n </th>\n <th className=\"px-4 py-3 text-left text-xs font-medium uppercase tracking-wider text-muted-foreground sm:px-6\">\n Portfolio Value\n </th>\n <th className=\"px-4 py-3 text-left text-xs font-medium uppercase tracking-wider text-muted-foreground sm:px-6\">\n Returns\n </th>\n <th className=\"px-4 py-3 text-left text-xs font-medium uppercase tracking-wider text-muted-foreground sm:px-6\">\n Growth %\n </th>\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {analytics.monthlyPerformance.map((month) => {\n const growthPct =\n month.invested > 0\n ? (((month.value - month.invested) / month.invested) * 100).toFixed(1)\n : '0.0';\n\n return (\n <tr key={month.month} className=\"hover:bg-accent/50 transition-colors\">\n <td className=\"whitespace-nowrap px-4 py-4 text-sm font-medium text-foreground sm:px-6\">\n {month.month}\n </td>\n <td className=\"whitespace-nowrap px-4 py-4 text-sm text-foreground sm:px-6\">\n {formatCurrency(month.invested, { minimumFractionDigits: 0 })}\n </td>\n <td className=\"whitespace-nowrap px-4 py-4 text-sm text-foreground sm:px-6\">\n {formatCurrency(month.value, { minimumFractionDigits: 0 })}\n </td>\n <td className=\"whitespace-nowrap px-4 py-4 text-sm sm:px-6\">\n <span\n className={cn(\n 'font-semibold',\n month.returns >= 0\n ? 'text-green-600 dark:text-green-400'\n : 'text-red-600 dark:text-red-400'\n )}\n >\n {month.returns >= 0 ? '+' : ''}\n {formatCurrency(month.returns, { minimumFractionDigits: 0 })}\n </span>\n </td>\n <td className=\"whitespace-nowrap px-4 py-4 text-sm sm:px-6\">\n <span\n className={cn(\n 'font-medium',\n parseFloat(growthPct) >= 0\n ? 'text-green-600 dark:text-green-400'\n : 'text-red-600 dark:text-red-400'\n )}\n >\n {parseFloat(growthPct) >= 0 ? '+' : ''}\n {growthPct}%\n </span>\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n </div>\n </section>\n\n {/* Risk Analysis & Diversification */}\n <div className=\"mt-8 grid grid-cols-1 gap-6 lg:grid-cols-2\">\n {/* Risk Analysis */}\n <section>\n <div className=\"mb-4 flex items-center gap-2\">\n <Shield className=\"h-5 w-5 text-muted-foreground\" />\n <h2 className=\"text-lg font-semibold text-foreground\">Risk Analysis</h2>\n </div>\n\n <div className=\"rounded-lg border border-border bg-card p-4 sm:p-6\">\n <div className=\"space-y-5\">\n {/* Risk Score */}\n <div>\n <div className=\"mb-2 flex items-center justify-between\">\n <span className=\"text-sm text-foreground\">Risk Score</span>\n <span className={cn('text-sm font-semibold', riskLevel.color)}>\n {analytics.riskAnalysis.riskScore}/5 ({riskLevel.label})\n </span>\n </div>\n <div className=\"h-3 w-full overflow-hidden rounded-full bg-muted\">\n <div\n className={cn(\n 'h-full rounded-full transition-all duration-300',\n getRiskBgColor(analytics.riskAnalysis.riskScore)\n )}\n style={{ width: `${(analytics.riskAnalysis.riskScore / 5) * 100}%` }}\n />\n </div>\n </div>\n\n {/* Diversification Score */}\n <div>\n <div className=\"mb-2 flex items-center justify-between\">\n <span className=\"text-sm text-foreground\">Diversification</span>\n <span className={cn('text-sm font-semibold', diversificationLevel.color)}>\n {analytics.riskAnalysis.diversificationScore}/10 ({diversificationLevel.label})\n </span>\n </div>\n <div className=\"h-3 w-full overflow-hidden rounded-full bg-muted\">\n <div\n className={cn(\n 'h-full rounded-full transition-all duration-300',\n getDiversificationBgColor(analytics.riskAnalysis.diversificationScore)\n )}\n style={{\n width: `${(analytics.riskAnalysis.diversificationScore / 10) * 100}%`,\n }}\n />\n </div>\n </div>\n\n {/* Volatility Score */}\n <div>\n <div className=\"mb-2 flex items-center justify-between\">\n <span className=\"text-sm text-foreground\">Volatility</span>\n <span\n className={cn(\n 'text-sm font-semibold',\n getRiskLevel(analytics.riskAnalysis.volatilityScore).color\n )}\n >\n {analytics.riskAnalysis.volatilityScore}/5\n </span>\n </div>\n <div className=\"h-3 w-full overflow-hidden rounded-full bg-muted\">\n <div\n className={cn(\n 'h-full rounded-full transition-all duration-300',\n getRiskBgColor(analytics.riskAnalysis.volatilityScore)\n )}\n style={{ width: `${(analytics.riskAnalysis.volatilityScore / 5) * 100}%` }}\n />\n </div>\n </div>\n\n {/* Quick Stats */}\n <div className=\"grid grid-cols-2 gap-3 border-t border-border pt-4\">\n <div className=\"rounded-lg bg-muted/50 p-3 text-center\">\n <p className=\"text-lg font-bold text-foreground\">\n {analytics.performanceByCart.length}\n </p>\n <p className=\"text-xs text-muted-foreground\">Active Investments</p>\n </div>\n <div className=\"rounded-lg bg-muted/50 p-3 text-center\">\n <p className=\"text-lg font-bold text-foreground\">\n {analytics.performanceByCategory.length}\n </p>\n <p className=\"text-xs text-muted-foreground\">Sectors Covered</p>\n </div>\n </div>\n </div>\n </div>\n </section>\n\n {/* Recommendations */}\n <section>\n <div className=\"mb-4 flex items-center gap-2\">\n <Lightbulb className=\"h-5 w-5 text-yellow-500\" />\n <h2 className=\"text-lg font-semibold text-foreground\">Recommendations</h2>\n </div>\n\n <div className=\"rounded-lg border border-border bg-card p-4 sm:p-6\">\n <div className=\"space-y-3\">\n {analytics.riskAnalysis.recommendations.map((recommendation, index) => (\n <div\n key={index}\n className=\"flex items-start gap-3 rounded-lg border border-border bg-muted/30 p-3\"\n >\n <div className=\"flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-primary text-xs font-bold text-primary-foreground\">\n {index + 1}\n </div>\n <p className=\"text-sm leading-relaxed text-foreground\">{recommendation}</p>\n </div>\n ))}\n </div>\n\n {/* Overall Assessment */}\n <div className=\"mt-5 rounded-lg border border-border bg-muted/50 p-4\">\n <h4 className=\"mb-2 text-sm font-semibold text-foreground\">Overall Assessment</h4>\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs text-muted-foreground\">Portfolio Health</span>\n <div className=\"flex items-center gap-2\">\n <div className=\"flex gap-0.5\">\n {[1, 2, 3, 4, 5].map((i) => (\n <div\n key={i}\n className={cn('h-2 w-4 rounded-sm', i <= 4 ? 'bg-green-500' : 'bg-muted')}\n />\n ))}\n </div>\n <span className=\"text-xs font-medium text-foreground\">4/5</span>\n </div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs text-muted-foreground\">Growth Potential</span>\n <div className=\"flex items-center gap-2\">\n <div className=\"flex gap-0.5\">\n {[1, 2, 3, 4, 5].map((i) => (\n <div\n key={i}\n className={cn(\n 'h-2 w-4 rounded-sm',\n i <= 3 ? 'bg-yellow-500' : 'bg-muted'\n )}\n />\n ))}\n </div>\n <span className=\"text-xs font-medium text-foreground\">3/5</span>\n </div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs text-muted-foreground\">Income Stability</span>\n <div className=\"flex items-center gap-2\">\n <div className=\"flex gap-0.5\">\n {[1, 2, 3, 4, 5].map((i) => (\n <div\n key={i}\n className={cn('h-2 w-4 rounded-sm', i <= 4 ? 'bg-green-500' : 'bg-muted')}\n />\n ))}\n </div>\n <span className=\"text-xs font-medium text-foreground\">4/5</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n </div>\n\n {/* Quick Navigation */}\n <div className=\"mt-8 flex flex-wrap gap-3\">\n <button\n type=\"button\"\n onClick={() => navigateTo('/investor/portfolio')}\n className=\"flex items-center gap-2 rounded-lg border border-border px-4 py-2 text-sm font-medium text-foreground hover:bg-accent transition-colors\"\n >\n <PieChart className=\"h-4 w-4\" />\n View Portfolio\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/investor/opportunities')}\n className=\"flex items-center gap-2 rounded-lg border border-border px-4 py-2 text-sm font-medium text-foreground hover:bg-accent transition-colors\"\n >\n <Target className=\"h-4 w-4\" />\n Browse Opportunities\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/investor/investments')}\n className=\"flex items-center gap-2 rounded-lg border border-border px-4 py-2 text-sm font-medium text-foreground hover:bg-accent transition-colors\"\n >\n <Wallet className=\"h-4 w-4\" />\n My Investments\n </button>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"InvestorAnalyticsPage.js","names":[],"sources":["../../../../src/subscriberbot/pages/investor/InvestorAnalyticsPage.tsx"],"sourcesContent":["/**\n * Investor Analytics Page\n * @module subscriberbot/pages/investor\n *\n * Date range selector, export button, metrics grid, performance by cart\n * with rankings, category distribution with progress bars, monthly\n * performance table, risk analysis with scores, diversification score,\n * and recommendations list.\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport {\n TrendingUp,\n PieChart,\n BarChart3,\n Calendar,\n Download,\n Target,\n Activity,\n Wallet,\n IndianRupee,\n Lightbulb,\n Shield,\n AlertTriangle,\n ArrowUp,\n ArrowDown,\n} from 'lucide-react';\nimport { PageLayout } from '../../components/PageLayout';\nimport { MetricsCard } from '../../components/MetricsCard';\nimport { useSubscriberBot } from '../../context/SubscriberBotContext';\nimport { cn } from '../../utils/cn';\nimport { formatCurrency, formatNumber } from '../../utils/formatters';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ninterface AnalyticsData {\n portfolioMetrics: {\n totalValue: number;\n totalInvested: number;\n totalReturns: number;\n averageRoi: number;\n portfolioGrowth: number;\n bestPerforming: string;\n worstPerforming: string;\n };\n performanceByCart: Array<{\n cartName: string;\n investedAmount: number;\n currentValue: number;\n returns: number;\n roi: number;\n }>;\n performanceByCategory: Array<{\n category: string;\n investedAmount: number;\n returns: number;\n percentage: number;\n }>;\n monthlyPerformance: Array<{\n month: string;\n invested: number;\n value: number;\n returns: number;\n }>;\n riskAnalysis: {\n riskScore: number;\n diversificationScore: number;\n volatilityScore: number;\n recommendations: string[];\n };\n}\n\n// ---------------------------------------------------------------------------\n// Mock data\n// ---------------------------------------------------------------------------\n\nconst mockAnalytics: AnalyticsData = {\n portfolioMetrics: {\n totalValue: 283700,\n totalInvested: 255000,\n totalReturns: 28700,\n averageRoi: 19.6,\n portfolioGrowth: 11.3,\n bestPerforming: 'Biryani House',\n worstPerforming: 'Healthy Bites',\n },\n performanceByCart: [\n {\n cartName: 'Biryani House',\n investedAmount: 60000,\n currentValue: 72000,\n returns: 12000,\n roi: 20.0,\n },\n {\n cartName: 'South Indian Express',\n investedAmount: 50000,\n currentValue: 58500,\n returns: 8500,\n roi: 17.0,\n },\n {\n cartName: 'Pizza Corner',\n investedAmount: 75000,\n currentValue: 82000,\n returns: 7000,\n roi: 9.3,\n },\n {\n cartName: 'Healthy Bites',\n investedAmount: 30000,\n currentValue: 31200,\n returns: 1200,\n roi: 4.0,\n },\n {\n cartName: 'Street Food Junction',\n investedAmount: 40000,\n currentValue: 40000,\n returns: 0,\n roi: 0,\n },\n ],\n performanceByCategory: [\n {\n category: 'South Indian',\n investedAmount: 110000,\n returns: 20500,\n percentage: 43.1,\n },\n {\n category: 'Fast Food',\n investedAmount: 75000,\n returns: 7000,\n percentage: 29.4,\n },\n {\n category: 'Street Food',\n investedAmount: 40000,\n returns: 0,\n percentage: 15.7,\n },\n {\n category: 'Healthy Food',\n investedAmount: 30000,\n returns: 1200,\n percentage: 11.8,\n },\n ],\n monthlyPerformance: [\n { month: 'Jun 2024', invested: 195000, value: 202000, returns: 7000 },\n { month: 'Jul 2024', invested: 215000, value: 228000, returns: 13000 },\n { month: 'Aug 2024', invested: 255000, value: 265000, returns: 10000 },\n { month: 'Sep 2024', invested: 255000, value: 275000, returns: 20000 },\n { month: 'Oct 2024', invested: 255000, value: 280000, returns: 25000 },\n { month: 'Nov 2024', invested: 255000, value: 283700, returns: 28700 },\n ],\n riskAnalysis: {\n riskScore: 3.2,\n diversificationScore: 7.8,\n volatilityScore: 2.5,\n recommendations: [\n 'Consider diversifying into more food categories',\n 'Your portfolio shows good risk distribution',\n 'Consider investing in carts from different locations',\n 'Monitor underperforming investments closely',\n 'Explore premium segment opportunities for higher returns',\n ],\n },\n};\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction getRiskLevel(score: number): { label: string; color: string } {\n if (score <= 2) return { label: 'Low Risk', color: 'text-status-success-text' };\n if (score <= 4) return { label: 'Moderate Risk', color: 'text-status-warning-text' };\n return { label: 'High Risk', color: 'text-status-error-text' };\n}\n\nfunction getRiskBgColor(score: number): string {\n if (score <= 2) return 'bg-status-success-text';\n if (score <= 4) return 'bg-status-warning-text';\n return 'bg-status-error-text';\n}\n\nfunction getDiversificationLevel(score: number): { label: string; color: string } {\n if (score >= 8) return { label: 'Well Diversified', color: 'text-status-success-text' };\n if (score >= 6) return { label: 'Moderately Diversified', color: 'text-status-warning-text' };\n return { label: 'Poorly Diversified', color: 'text-status-error-text' };\n}\n\nfunction getDiversificationBgColor(score: number): string {\n if (score >= 8) return 'bg-status-success-text';\n if (score >= 6) return 'bg-status-warning-text';\n return 'bg-status-error-text';\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport function InvestorAnalyticsPage() {\n const { navigateTo } = useSubscriberBot();\n const [isLoading, setIsLoading] = useState(true);\n const [dateRange, setDateRange] = useState('6m');\n const [analytics, setAnalytics] = useState<AnalyticsData | null>(null);\n const [exportStatus, setExportStatus] = useState<'idle' | 'exporting' | 'done'>('idle');\n\n useEffect(() => {\n setIsLoading(true);\n const timer = setTimeout(() => {\n setAnalytics(mockAnalytics);\n setIsLoading(false);\n }, 600);\n return () => clearTimeout(timer);\n }, [dateRange]);\n\n const handleExportReport = useCallback(() => {\n setExportStatus('exporting');\n setTimeout(() => {\n setExportStatus('done');\n setTimeout(() => setExportStatus('idle'), 2000);\n }, 1200);\n }, []);\n\n if (isLoading || !analytics) {\n return (\n <PageLayout title=\"Investment Analytics\" description=\"Loading analytics...\">\n <div className=\"flex items-center justify-center py-20\">\n <div className=\"text-center\">\n <div className=\"mx-auto mb-4 h-12 w-12 animate-spin rounded-full border-b-2 border-primary\" />\n <p className=\"text-sm text-text-secondary\">Loading analytics data...</p>\n </div>\n </div>\n </PageLayout>\n );\n }\n\n const riskLevel = getRiskLevel(analytics.riskAnalysis.riskScore);\n const diversificationLevel = getDiversificationLevel(analytics.riskAnalysis.diversificationScore);\n\n // Sort carts by ROI for ranking\n const sortedCarts = [...analytics.performanceByCart].sort((a, b) => b.roi - a.roi);\n\n return (\n <PageLayout\n title=\"Investment Analytics\"\n description=\"Comprehensive analysis of your portfolio performance\"\n actions={\n <div className=\"flex items-center gap-3\">\n {/* Date Range Selector */}\n <select\n value={dateRange}\n onChange={(e) => setDateRange(e.target.value)}\n className=\"rounded-lg border border-border-seam bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]\"\n >\n <option value=\"1m\">Last Month</option>\n <option value=\"3m\">Last 3 Months</option>\n <option value=\"6m\">Last 6 Months</option>\n <option value=\"1y\">Last Year</option>\n <option value=\"all\">All Time</option>\n </select>\n\n {/* Export Button */}\n <button\n type=\"button\"\n onClick={handleExportReport}\n disabled={exportStatus === 'exporting'}\n className={cn(\n 'flex items-center gap-2 rounded-lg px-4 py-2 text-sm font-medium transition-colors',\n exportStatus === 'exporting'\n ? 'cursor-not-allowed bg-bg-sunken text-text-secondary'\n : exportStatus === 'done'\n ? 'bg-status-success-text text-text-inverse'\n : 'bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg/90'\n )}\n >\n <Download className=\"h-4 w-4\" />\n {exportStatus === 'exporting'\n ? 'Exporting...'\n : exportStatus === 'done'\n ? 'Exported!'\n : 'Export Report'}\n </button>\n </div>\n }\n >\n {/* Key Metrics */}\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n <MetricsCard\n icon={<Wallet className=\"h-5 w-5\" />}\n value={formatCurrency(analytics.portfolioMetrics.totalValue, {\n minimumFractionDigits: 0,\n })}\n label=\"Portfolio Value\"\n trend=\"up\"\n trendValue={`+${analytics.portfolioMetrics.portfolioGrowth}% total growth`}\n />\n <MetricsCard\n icon={<TrendingUp className=\"h-5 w-5\" />}\n value={formatCurrency(analytics.portfolioMetrics.totalReturns, {\n minimumFractionDigits: 0,\n })}\n label=\"Total Returns\"\n trend=\"up\"\n trendValue=\"Profit earned so far\"\n />\n <MetricsCard\n icon={<Target className=\"h-5 w-5\" />}\n value={`${analytics.portfolioMetrics.averageRoi}%`}\n label=\"Average ROI\"\n trend=\"up\"\n trendValue=\"Across all investments\"\n />\n <MetricsCard\n icon={<Activity className=\"h-5 w-5\" />}\n value={`${analytics.riskAnalysis.riskScore}/5`}\n label=\"Risk Score\"\n trend=\"neutral\"\n trendValue={riskLevel.label}\n />\n </div>\n\n {/* Best / Worst Performers */}\n <div className=\"mt-4 grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <div className=\"flex items-center gap-3 rounded-lg border border-border-seam bg-bg-surface p-4\">\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-status-success-bg/10\">\n <ArrowUp className=\"h-5 w-5 text-status-success-text\" />\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Best Performing</p>\n <p className=\"text-sm font-semibold text-status-success-text\">\n {analytics.portfolioMetrics.bestPerforming}\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-3 rounded-lg border border-border-seam bg-bg-surface p-4\">\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-status-error-bg/10\">\n <ArrowDown className=\"h-5 w-5 text-status-error-text\" />\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Worst Performing</p>\n <p className=\"text-sm font-semibold text-text-primary\">\n {analytics.portfolioMetrics.worstPerforming}\n </p>\n </div>\n </div>\n </div>\n\n {/* Performance by Cart & Category Distribution */}\n <div className=\"mt-6 grid grid-cols-1 gap-6 lg:grid-cols-2\">\n {/* Performance by Cart */}\n <section>\n <div className=\"mb-4 flex items-center gap-2\">\n <BarChart3 className=\"h-5 w-5 text-text-secondary\" />\n <h2 className=\"text-lg font-semibold text-text-primary\">Performance by Cart</h2>\n </div>\n\n <div className=\"space-y-3\">\n {sortedCarts.map((cart, index) => (\n <div\n key={cart.cartName}\n className=\"flex items-center justify-between rounded-lg border border-border-seam bg-bg-surface p-3\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-action-primary-bg text-xs font-bold text-action-primary-text\">\n {index + 1}\n </div>\n <div>\n <p className=\"text-sm font-medium text-text-primary\">{cart.cartName}</p>\n <p className=\"text-xs text-text-secondary\">\n {formatCurrency(cart.investedAmount, { minimumFractionDigits: 0 })} invested\n </p>\n </div>\n </div>\n <div className=\"text-right\">\n <p\n className={cn(\n 'text-sm font-semibold',\n cart.returns >= 0 ? 'text-status-success-text' : 'text-status-error-text'\n )}\n >\n {cart.returns >= 0 ? '+' : ''}\n {formatCurrency(cart.returns, { minimumFractionDigits: 0 })}\n </p>\n <p\n className={cn(\n 'text-xs',\n cart.roi >= 0 ? 'text-status-success-text' : 'text-status-error-text'\n )}\n >\n {cart.roi >= 0 ? '+' : ''}\n {cart.roi}% ROI\n </p>\n </div>\n </div>\n ))}\n </div>\n </section>\n\n {/* Category Distribution */}\n <section>\n <div className=\"mb-4 flex items-center gap-2\">\n <PieChart className=\"h-5 w-5 text-text-secondary\" />\n <h2 className=\"text-lg font-semibold text-text-primary\">Category Distribution</h2>\n </div>\n\n <div className=\"space-y-4\">\n {analytics.performanceByCategory.map((category) => (\n <div\n key={category.category}\n className=\"rounded-lg border border-border-seam bg-bg-surface p-3\"\n >\n <div className=\"mb-2 flex items-center justify-between\">\n <span className=\"text-sm font-medium text-text-primary\">{category.category}</span>\n <span className=\"text-sm text-text-secondary\">{category.percentage}%</span>\n </div>\n <div className=\"mb-2 h-2 w-full overflow-hidden rounded-full bg-bg-sunken\">\n <div\n className=\"h-full rounded-full bg-action-primary-bg transition-all duration-300\"\n style={{ width: `${category.percentage}%` }}\n />\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs text-text-secondary\">\n {formatCurrency(category.investedAmount, { minimumFractionDigits: 0 })} invested\n </span>\n <span\n className={cn(\n 'text-xs font-semibold',\n category.returns >= 0 ? 'text-status-success-text' : 'text-status-error-text'\n )}\n >\n {category.returns >= 0 ? '+' : ''}\n {formatCurrency(category.returns, { minimumFractionDigits: 0 })}\n </span>\n </div>\n </div>\n ))}\n </div>\n </section>\n </div>\n\n {/* Monthly Performance Table */}\n <section className=\"mt-8\">\n <div className=\"mb-4 flex items-center gap-2\">\n <Calendar className=\"h-5 w-5 text-text-secondary\" />\n <h2 className=\"text-lg font-semibold text-text-primary\">Portfolio Growth Trend</h2>\n </div>\n\n <div className=\"overflow-hidden rounded-lg border border-border-seam bg-bg-surface\">\n <div className=\"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 uppercase tracking-wider text-text-secondary sm:px-6\">\n Month\n </th>\n <th className=\"px-4 py-3 text-left text-xs font-medium uppercase tracking-wider text-text-secondary sm:px-6\">\n Invested\n </th>\n <th className=\"px-4 py-3 text-left text-xs font-medium uppercase tracking-wider text-text-secondary sm:px-6\">\n Portfolio Value\n </th>\n <th className=\"px-4 py-3 text-left text-xs font-medium uppercase tracking-wider text-text-secondary sm:px-6\">\n Returns\n </th>\n <th className=\"px-4 py-3 text-left text-xs font-medium uppercase tracking-wider text-text-secondary sm:px-6\">\n Growth %\n </th>\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {analytics.monthlyPerformance.map((month) => {\n const growthPct =\n month.invested > 0\n ? (((month.value - month.invested) / month.invested) * 100).toFixed(1)\n : '0.0';\n\n return (\n <tr key={month.month} className=\"hover:bg-accent/50 transition-colors\">\n <td className=\"whitespace-nowrap px-4 py-4 text-sm font-medium text-text-primary sm:px-6\">\n {month.month}\n </td>\n <td className=\"whitespace-nowrap px-4 py-4 text-sm text-text-primary sm:px-6\">\n {formatCurrency(month.invested, { minimumFractionDigits: 0 })}\n </td>\n <td className=\"whitespace-nowrap px-4 py-4 text-sm text-text-primary sm:px-6\">\n {formatCurrency(month.value, { minimumFractionDigits: 0 })}\n </td>\n <td className=\"whitespace-nowrap px-4 py-4 text-sm sm:px-6\">\n <span\n className={cn(\n 'font-semibold',\n month.returns >= 0\n ? 'text-status-success-text'\n : 'text-status-error-text'\n )}\n >\n {month.returns >= 0 ? '+' : ''}\n {formatCurrency(month.returns, { minimumFractionDigits: 0 })}\n </span>\n </td>\n <td className=\"whitespace-nowrap px-4 py-4 text-sm sm:px-6\">\n <span\n className={cn(\n 'font-medium',\n parseFloat(growthPct) >= 0\n ? 'text-status-success-text'\n : 'text-status-error-text'\n )}\n >\n {parseFloat(growthPct) >= 0 ? '+' : ''}\n {growthPct}%\n </span>\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n </div>\n </section>\n\n {/* Risk Analysis & Diversification */}\n <div className=\"mt-8 grid grid-cols-1 gap-6 lg:grid-cols-2\">\n {/* Risk Analysis */}\n <section>\n <div className=\"mb-4 flex items-center gap-2\">\n <Shield className=\"h-5 w-5 text-text-secondary\" />\n <h2 className=\"text-lg font-semibold text-text-primary\">Risk Analysis</h2>\n </div>\n\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-4 sm:p-6\">\n <div className=\"space-y-5\">\n {/* Risk Score */}\n <div>\n <div className=\"mb-2 flex items-center justify-between\">\n <span className=\"text-sm text-text-primary\">Risk Score</span>\n <span className={cn('text-sm font-semibold', riskLevel.color)}>\n {analytics.riskAnalysis.riskScore}/5 ({riskLevel.label})\n </span>\n </div>\n <div className=\"h-3 w-full overflow-hidden rounded-full bg-bg-sunken\">\n <div\n className={cn(\n 'h-full rounded-full transition-all duration-300',\n getRiskBgColor(analytics.riskAnalysis.riskScore)\n )}\n style={{ width: `${(analytics.riskAnalysis.riskScore / 5) * 100}%` }}\n />\n </div>\n </div>\n\n {/* Diversification Score */}\n <div>\n <div className=\"mb-2 flex items-center justify-between\">\n <span className=\"text-sm text-text-primary\">Diversification</span>\n <span className={cn('text-sm font-semibold', diversificationLevel.color)}>\n {analytics.riskAnalysis.diversificationScore}/10 ({diversificationLevel.label})\n </span>\n </div>\n <div className=\"h-3 w-full overflow-hidden rounded-full bg-bg-sunken\">\n <div\n className={cn(\n 'h-full rounded-full transition-all duration-300',\n getDiversificationBgColor(analytics.riskAnalysis.diversificationScore)\n )}\n style={{\n width: `${(analytics.riskAnalysis.diversificationScore / 10) * 100}%`,\n }}\n />\n </div>\n </div>\n\n {/* Volatility Score */}\n <div>\n <div className=\"mb-2 flex items-center justify-between\">\n <span className=\"text-sm text-text-primary\">Volatility</span>\n <span\n className={cn(\n 'text-sm font-semibold',\n getRiskLevel(analytics.riskAnalysis.volatilityScore).color\n )}\n >\n {analytics.riskAnalysis.volatilityScore}/5\n </span>\n </div>\n <div className=\"h-3 w-full overflow-hidden rounded-full bg-bg-sunken\">\n <div\n className={cn(\n 'h-full rounded-full transition-all duration-300',\n getRiskBgColor(analytics.riskAnalysis.volatilityScore)\n )}\n style={{ width: `${(analytics.riskAnalysis.volatilityScore / 5) * 100}%` }}\n />\n </div>\n </div>\n\n {/* Quick Stats */}\n <div className=\"grid grid-cols-2 gap-3 border-t border-border-seam pt-4\">\n <div className=\"rounded-lg bg-bg-sunken/50 p-3 text-center\">\n <p className=\"text-lg font-bold text-text-primary\">\n {analytics.performanceByCart.length}\n </p>\n <p className=\"text-xs text-text-secondary\">Active Investments</p>\n </div>\n <div className=\"rounded-lg bg-bg-sunken/50 p-3 text-center\">\n <p className=\"text-lg font-bold text-text-primary\">\n {analytics.performanceByCategory.length}\n </p>\n <p className=\"text-xs text-text-secondary\">Sectors Covered</p>\n </div>\n </div>\n </div>\n </div>\n </section>\n\n {/* Recommendations */}\n <section>\n <div className=\"mb-4 flex items-center gap-2\">\n <Lightbulb className=\"h-5 w-5 text-status-warning-text\" />\n <h2 className=\"text-lg font-semibold text-text-primary\">Recommendations</h2>\n </div>\n\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-4 sm:p-6\">\n <div className=\"space-y-3\">\n {analytics.riskAnalysis.recommendations.map((recommendation, index) => (\n <div\n key={index}\n className=\"flex items-start gap-3 rounded-lg border border-border-seam bg-bg-sunken/30 p-3\"\n >\n <div className=\"flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-action-primary-bg text-xs font-bold text-action-primary-text\">\n {index + 1}\n </div>\n <p className=\"text-sm leading-relaxed text-text-primary\">{recommendation}</p>\n </div>\n ))}\n </div>\n\n {/* Overall Assessment */}\n <div className=\"mt-5 rounded-lg border border-border-seam bg-bg-sunken/50 p-4\">\n <h4 className=\"mb-2 text-sm font-semibold text-text-primary\">Overall Assessment</h4>\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs text-text-secondary\">Portfolio Health</span>\n <div className=\"flex items-center gap-2\">\n <div className=\"flex gap-0.5\">\n {[1, 2, 3, 4, 5].map((i) => (\n <div\n key={i}\n className={cn(\n 'h-2 w-4 rounded-sm',\n i <= 4 ? 'bg-status-success-text' : 'bg-bg-sunken'\n )}\n />\n ))}\n </div>\n <span className=\"text-xs font-medium text-text-primary\">4/5</span>\n </div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs text-text-secondary\">Growth Potential</span>\n <div className=\"flex items-center gap-2\">\n <div className=\"flex gap-0.5\">\n {[1, 2, 3, 4, 5].map((i) => (\n <div\n key={i}\n className={cn(\n 'h-2 w-4 rounded-sm',\n i <= 3 ? 'bg-status-warning-text' : 'bg-bg-sunken'\n )}\n />\n ))}\n </div>\n <span className=\"text-xs font-medium text-text-primary\">3/5</span>\n </div>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs text-text-secondary\">Income Stability</span>\n <div className=\"flex items-center gap-2\">\n <div className=\"flex gap-0.5\">\n {[1, 2, 3, 4, 5].map((i) => (\n <div\n key={i}\n className={cn(\n 'h-2 w-4 rounded-sm',\n i <= 4 ? 'bg-status-success-text' : 'bg-bg-sunken'\n )}\n />\n ))}\n </div>\n <span className=\"text-xs font-medium text-text-primary\">4/5</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n </div>\n\n {/* Quick Navigation */}\n <div className=\"mt-8 flex flex-wrap gap-3\">\n <button\n type=\"button\"\n onClick={() => navigateTo('/investor/portfolio')}\n className=\"flex items-center gap-2 rounded-lg border border-border-seam px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n <PieChart className=\"h-4 w-4\" />\n View Portfolio\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/investor/opportunities')}\n className=\"flex items-center gap-2 rounded-lg border border-border-seam px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n <Target className=\"h-4 w-4\" />\n Browse Opportunities\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/investor/investments')}\n className=\"flex items-center gap-2 rounded-lg border border-border-seam px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n <Wallet className=\"h-4 w-4\" />\n My Investments\n </button>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
@@ -63,9 +63,9 @@ var T = [
63
63
  ];
64
64
  function D(e) {
65
65
  switch (e) {
66
- case "active": return "bg-green-500/20 text-green-600 dark:text-green-400";
67
- case "pending": return "bg-yellow-500/20 text-yellow-600 dark:text-yellow-400";
68
- case "completed": return "bg-blue-500/20 text-blue-600 dark:text-blue-400";
66
+ case "active": return "bg-status-success-bg/20 text-status-success-text";
67
+ case "pending": return "bg-status-warning-bg/20 text-status-warning-text";
68
+ case "completed": return "bg-status-info-bg/20 text-status-info-text";
69
69
  default: return "bg-secondary text-secondary-foreground";
70
70
  }
71
71
  }
@@ -88,7 +88,7 @@ function O() {
88
88
  children: /* @__PURE__ */ w("div", {
89
89
  className: "text-center",
90
90
  children: [/* @__PURE__ */ C("div", { className: "mx-auto mb-4 h-12 w-12 animate-spin rounded-full border-b-2 border-primary" }), /* @__PURE__ */ C("p", {
91
- className: "text-sm text-muted-foreground",
91
+ className: "text-sm text-text-secondary",
92
92
  children: "Loading your portfolio..."
93
93
  })]
94
94
  })
@@ -96,8 +96,9 @@ function O() {
96
96
  }) : /* @__PURE__ */ w(n, {
97
97
  title: `Welcome back, ${I}!`,
98
98
  description: "Here's your investment portfolio overview.",
99
+ titleGradient: !0,
99
100
  children: [/* @__PURE__ */ w("section", { children: [/* @__PURE__ */ C("h2", {
100
- className: "mb-4 text-lg font-semibold text-foreground",
101
+ className: "mb-4 text-lg font-semibold text-text-primary",
101
102
  children: "Portfolio Overview"
102
103
  }), /* @__PURE__ */ w("div", {
103
104
  className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",
@@ -137,16 +138,16 @@ function O() {
137
138
  className: "lg:col-span-2",
138
139
  children: [
139
140
  /* @__PURE__ */ w("div", {
140
- className: "mb-6 flex rounded-lg bg-muted p-1",
141
+ className: "mb-6 flex rounded-lg bg-bg-sunken p-1",
141
142
  children: [/* @__PURE__ */ C("button", {
142
143
  type: "button",
143
144
  onClick: () => j("portfolio"),
144
- className: t("flex-1 rounded-md px-4 py-2 text-sm font-medium transition-colors", A === "portfolio" ? "bg-card text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground"),
145
+ className: t("flex-1 rounded-md px-4 py-2 text-sm font-medium transition-colors", A === "portfolio" ? "bg-bg-surface text-text-primary shadow-sm" : "text-text-secondary hover:text-text-primary"),
145
146
  children: "My Investments"
146
147
  }), /* @__PURE__ */ C("button", {
147
148
  type: "button",
148
149
  onClick: () => j("opportunities"),
149
- className: t("flex-1 rounded-md px-4 py-2 text-sm font-medium transition-colors", A === "opportunities" ? "bg-card text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground"),
150
+ className: t("flex-1 rounded-md px-4 py-2 text-sm font-medium transition-colors", A === "opportunities" ? "bg-bg-surface text-text-primary shadow-sm" : "text-text-secondary hover:text-text-primary"),
150
151
  children: "New Opportunities"
151
152
  })]
152
153
  }),
@@ -155,20 +156,20 @@ function O() {
155
156
  children: [/* @__PURE__ */ w("div", {
156
157
  className: "flex items-center justify-between",
157
158
  children: [/* @__PURE__ */ C("h3", {
158
- className: "text-base font-semibold text-foreground",
159
+ className: "text-base font-semibold text-text-primary",
159
160
  children: "Active Investments"
160
161
  }), /* @__PURE__ */ w("button", {
161
162
  type: "button",
162
163
  onClick: () => alert("Filter functionality coming soon!"),
163
- className: "flex items-center gap-2 rounded-lg border border-border px-3 py-2 text-sm font-medium text-foreground hover:bg-accent transition-colors",
164
+ className: "flex items-center gap-2 rounded-lg border border-border-seam px-3 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
164
165
  children: [/* @__PURE__ */ C(h, { className: "h-4 w-4" }), "Filter"]
165
166
  })]
166
167
  }), P.length === 0 ? /* @__PURE__ */ w("div", {
167
- className: "rounded-lg border border-dashed border-border p-8 text-center",
168
+ className: "rounded-lg border border-dashed border-border-seam p-8 text-center",
168
169
  children: [
169
- /* @__PURE__ */ C(p, { className: "mx-auto h-12 w-12 text-muted-foreground opacity-20" }),
170
+ /* @__PURE__ */ C(p, { className: "mx-auto h-12 w-12 text-text-secondary opacity-20" }),
170
171
  /* @__PURE__ */ C("p", {
171
- className: "mt-2 text-sm text-muted-foreground",
172
+ className: "mt-2 text-sm text-text-secondary",
172
173
  children: "No active investments found."
173
174
  }),
174
175
  /* @__PURE__ */ C("button", {
@@ -179,7 +180,7 @@ function O() {
179
180
  })
180
181
  ]
181
182
  }) : P.map((e) => /* @__PURE__ */ w("div", {
182
- className: "rounded-lg border border-border bg-card p-4 shadow-sm hover:shadow-md transition-shadow",
183
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4 shadow-sm hover:shadow-md transition-shadow",
183
184
  children: [/* @__PURE__ */ w("div", {
184
185
  className: "flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",
185
186
  children: [/* @__PURE__ */ w("div", {
@@ -187,14 +188,14 @@ function O() {
187
188
  children: [/* @__PURE__ */ w("div", {
188
189
  className: "mb-2 flex flex-wrap items-center gap-2",
189
190
  children: [/* @__PURE__ */ C("h4", {
190
- className: "text-base font-semibold text-foreground",
191
+ className: "text-base font-semibold text-text-primary",
191
192
  children: e.cartName
192
193
  }), /* @__PURE__ */ C("span", {
193
194
  className: t("rounded-full px-2 py-0.5 text-xs font-medium", D(e.status)),
194
195
  children: e.status
195
196
  })]
196
197
  }), /* @__PURE__ */ w("div", {
197
- className: "mb-3 flex flex-wrap items-center gap-3 text-xs text-muted-foreground",
198
+ className: "mb-3 flex flex-wrap items-center gap-3 text-xs text-text-secondary",
198
199
  children: [/* @__PURE__ */ w("span", {
199
200
  className: "flex items-center gap-1",
200
201
  children: [/* @__PURE__ */ C(v, { className: "h-3.5 w-3.5" }), "India"]
@@ -203,38 +204,38 @@ function O() {
203
204
  }), /* @__PURE__ */ w("button", {
204
205
  type: "button",
205
206
  onClick: () => O(`/investor/investments/${e.id}`),
206
- className: "flex items-center gap-2 rounded-lg border border-border px-3 py-2 text-sm font-medium text-foreground hover:bg-accent transition-colors",
207
+ className: "flex items-center gap-2 rounded-lg border border-border-seam px-3 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
207
208
  children: [/* @__PURE__ */ C(m, { className: "h-4 w-4" }), "View Details"]
208
209
  })]
209
210
  }), /* @__PURE__ */ w("div", {
210
211
  className: "grid grid-cols-2 gap-3 sm:grid-cols-4",
211
212
  children: [
212
213
  /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
213
- className: "text-xs text-muted-foreground",
214
+ className: "text-xs text-text-secondary",
214
215
  children: "Invested"
215
216
  }), /* @__PURE__ */ C("p", {
216
- className: "text-sm font-semibold text-foreground",
217
+ className: "text-sm font-semibold text-text-primary",
217
218
  children: o(e.investedAmount, { minimumFractionDigits: 0 })
218
219
  })] }),
219
220
  /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
220
- className: "text-xs text-muted-foreground",
221
+ className: "text-xs text-text-secondary",
221
222
  children: "Current Value"
222
223
  }), /* @__PURE__ */ C("p", {
223
- className: "text-sm font-semibold text-green-600 dark:text-green-400",
224
+ className: "text-sm font-semibold text-status-success-text",
224
225
  children: o(e.currentValue, { minimumFractionDigits: 0 })
225
226
  })] }),
226
227
  /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
227
- className: "text-xs text-muted-foreground",
228
+ className: "text-xs text-text-secondary",
228
229
  children: "Returns"
229
230
  }), /* @__PURE__ */ C("p", {
230
- className: "text-sm font-semibold text-foreground",
231
+ className: "text-sm font-semibold text-text-primary",
231
232
  children: o(e.returns, { minimumFractionDigits: 0 })
232
233
  })] }),
233
234
  /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
234
- className: "text-xs text-muted-foreground",
235
+ className: "text-xs text-text-secondary",
235
236
  children: "Growth"
236
237
  }), /* @__PURE__ */ w("p", {
237
- className: "text-sm font-semibold text-green-600 dark:text-green-400",
238
+ className: "text-sm font-semibold text-status-success-text",
238
239
  children: [e.returnsPercentage, "%"]
239
240
  })] })
240
241
  ]
@@ -246,12 +247,12 @@ function O() {
246
247
  children: [/* @__PURE__ */ w("div", {
247
248
  className: "flex items-center justify-between",
248
249
  children: [/* @__PURE__ */ C("h3", {
249
- className: "text-base font-semibold text-foreground",
250
+ className: "text-base font-semibold text-text-primary",
250
251
  children: "Investment Opportunities"
251
252
  }), /* @__PURE__ */ w("button", {
252
253
  type: "button",
253
254
  onClick: () => O("/investor/opportunities"),
254
- className: "flex items-center gap-2 rounded-lg bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 transition-colors",
255
+ className: "flex items-center gap-2 rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors",
255
256
  children: [/* @__PURE__ */ C(b, { className: "h-4 w-4" }), "Browse All"]
256
257
  })]
257
258
  }), /* @__PURE__ */ C("div", {
@@ -271,22 +272,22 @@ function O() {
271
272
  /* @__PURE__ */ w("section", {
272
273
  className: "mt-8",
273
274
  children: [/* @__PURE__ */ C("h2", {
274
- className: "mb-4 text-lg font-semibold text-foreground",
275
+ className: "mb-4 text-lg font-semibold text-text-primary",
275
276
  children: "Recent Activity"
276
277
  }), /* @__PURE__ */ C("div", {
277
- className: "divide-y divide-border rounded-lg border border-border bg-card",
278
+ className: "divide-y divide-border rounded-lg border border-border-seam bg-bg-surface",
278
279
  children: E.map((e) => /* @__PURE__ */ w("div", {
279
280
  className: "flex items-center justify-between px-4 py-3",
280
281
  children: [/* @__PURE__ */ w("div", {
281
282
  className: "flex items-center gap-3",
282
283
  children: [/* @__PURE__ */ C("div", {
283
- className: t("flex h-8 w-8 items-center justify-center rounded-full", e.amount > 0 ? "bg-green-500/10" : "bg-muted"),
284
- children: /* @__PURE__ */ C(u, { className: t("h-4 w-4", e.amount > 0 ? "text-green-600 dark:text-green-400" : "text-muted-foreground") })
284
+ className: t("flex h-8 w-8 items-center justify-center rounded-full", e.amount > 0 ? "bg-status-success-bg/10" : "bg-bg-sunken"),
285
+ children: /* @__PURE__ */ C(u, { className: t("h-4 w-4", e.amount > 0 ? "text-status-success-text" : "text-text-secondary") })
285
286
  }), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
286
- className: "text-sm font-medium text-foreground",
287
+ className: "text-sm font-medium text-text-primary",
287
288
  children: e.description
288
289
  }), /* @__PURE__ */ C("p", {
289
- className: "text-xs text-muted-foreground",
290
+ className: "text-xs text-text-secondary",
290
291
  children: new Date(e.date).toLocaleDateString("en-IN", {
291
292
  day: "numeric",
292
293
  month: "short",
@@ -294,7 +295,7 @@ function O() {
294
295
  })
295
296
  })] })]
296
297
  }), /* @__PURE__ */ w("span", {
297
- className: t("text-sm font-semibold", e.amount > 0 ? "text-green-600 dark:text-green-400" : "text-foreground"),
298
+ className: t("text-sm font-semibold", e.amount > 0 ? "text-status-success-text" : "text-text-primary"),
298
299
  children: [e.amount > 0 ? "+" : "", o(Math.abs(e.amount), { minimumFractionDigits: 0 })]
299
300
  })]
300
301
  }, e.id))
@@ -305,37 +306,37 @@ function O() {
305
306
  className: "space-y-6",
306
307
  children: [
307
308
  /* @__PURE__ */ w("div", {
308
- className: "rounded-lg border border-border bg-card p-4",
309
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4",
309
310
  children: [/* @__PURE__ */ w("div", {
310
311
  className: "mb-3 flex items-center gap-2",
311
- children: [/* @__PURE__ */ C(_, { className: "h-5 w-5 text-yellow-500" }), /* @__PURE__ */ C("h3", {
312
- className: "text-base font-semibold text-foreground",
312
+ children: [/* @__PURE__ */ C(_, { className: "h-5 w-5 text-status-warning-text" }), /* @__PURE__ */ C("h3", {
313
+ className: "text-base font-semibold text-text-primary",
313
314
  children: "AI Insights"
314
315
  })]
315
316
  }), /* @__PURE__ */ C("div", {
316
317
  className: "space-y-3",
317
318
  children: T.map((e) => /* @__PURE__ */ w("div", {
318
- className: "rounded-lg border border-border bg-muted/50 p-3",
319
+ className: "rounded-lg border border-border-seam bg-bg-sunken/50 p-3",
319
320
  children: [/* @__PURE__ */ w("div", {
320
321
  className: "mb-1 flex items-center justify-between",
321
322
  children: [/* @__PURE__ */ C("h4", {
322
- className: "text-xs font-semibold text-foreground",
323
+ className: "text-xs font-semibold text-text-primary",
323
324
  children: e.title
324
325
  }), /* @__PURE__ */ w("span", {
325
- className: "rounded-full bg-primary/10 px-2 py-0.5 text-xs font-medium text-primary",
326
+ className: "rounded-full bg-action-primary-bg/10 px-2 py-0.5 text-xs font-medium text-primary",
326
327
  children: [e.confidence, "%"]
327
328
  })]
328
329
  }), /* @__PURE__ */ C("p", {
329
- className: "text-xs leading-relaxed text-muted-foreground",
330
+ className: "text-xs leading-relaxed text-text-secondary",
330
331
  children: e.description
331
332
  })]
332
333
  }, e.id))
333
334
  })]
334
335
  }),
335
336
  /* @__PURE__ */ w("div", {
336
- className: "rounded-lg border border-border bg-card p-4",
337
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4",
337
338
  children: [/* @__PURE__ */ C("h3", {
338
- className: "mb-3 text-base font-semibold text-foreground",
339
+ className: "mb-3 text-base font-semibold text-text-primary",
339
340
  children: "Quick Actions"
340
341
  }), /* @__PURE__ */ w("div", {
341
342
  className: "space-y-2",
@@ -343,65 +344,65 @@ function O() {
343
344
  /* @__PURE__ */ w("button", {
344
345
  type: "button",
345
346
  onClick: () => O("/investor/portfolio"),
346
- className: "flex w-full items-center gap-2 rounded-lg border border-border px-3 py-2.5 text-left text-sm font-medium text-foreground hover:bg-accent transition-colors",
347
- children: [/* @__PURE__ */ C(y, { className: "h-4 w-4 text-muted-foreground" }), "View Full Portfolio"]
347
+ className: "flex w-full items-center gap-2 rounded-lg border border-border-seam px-3 py-2.5 text-left text-sm font-medium text-text-primary hover:bg-accent transition-colors",
348
+ children: [/* @__PURE__ */ C(y, { className: "h-4 w-4 text-text-secondary" }), "View Full Portfolio"]
348
349
  }),
349
350
  /* @__PURE__ */ w("button", {
350
351
  type: "button",
351
352
  onClick: () => O("/investor/opportunities"),
352
- className: "flex w-full items-center gap-2 rounded-lg border border-border px-3 py-2.5 text-left text-sm font-medium text-foreground hover:bg-accent transition-colors",
353
- children: [/* @__PURE__ */ C(x, { className: "h-4 w-4 text-muted-foreground" }), "Browse Opportunities"]
353
+ className: "flex w-full items-center gap-2 rounded-lg border border-border-seam px-3 py-2.5 text-left text-sm font-medium text-text-primary hover:bg-accent transition-colors",
354
+ children: [/* @__PURE__ */ C(x, { className: "h-4 w-4 text-text-secondary" }), "Browse Opportunities"]
354
355
  }),
355
356
  /* @__PURE__ */ w("button", {
356
357
  type: "button",
357
358
  onClick: () => O("/investor/analytics"),
358
- className: "flex w-full items-center gap-2 rounded-lg border border-border px-3 py-2.5 text-left text-sm font-medium text-foreground hover:bg-accent transition-colors",
359
- children: [/* @__PURE__ */ C(f, { className: "h-4 w-4 text-muted-foreground" }), "Investment Analytics"]
359
+ className: "flex w-full items-center gap-2 rounded-lg border border-border-seam px-3 py-2.5 text-left text-sm font-medium text-text-primary hover:bg-accent transition-colors",
360
+ children: [/* @__PURE__ */ C(f, { className: "h-4 w-4 text-text-secondary" }), "Investment Analytics"]
360
361
  }),
361
362
  /* @__PURE__ */ w("button", {
362
363
  type: "button",
363
364
  onClick: () => O("/investor/profile"),
364
- className: "flex w-full items-center gap-2 rounded-lg border border-border px-3 py-2.5 text-left text-sm font-medium text-foreground hover:bg-accent transition-colors",
365
- children: [/* @__PURE__ */ C(d, { className: "h-4 w-4 text-muted-foreground" }), "View Profile"]
365
+ className: "flex w-full items-center gap-2 rounded-lg border border-border-seam px-3 py-2.5 text-left text-sm font-medium text-text-primary hover:bg-accent transition-colors",
366
+ children: [/* @__PURE__ */ C(d, { className: "h-4 w-4 text-text-secondary" }), "View Profile"]
366
367
  })
367
368
  ]
368
369
  })]
369
370
  }),
370
371
  /* @__PURE__ */ w("div", {
371
- className: "rounded-lg border border-border bg-card p-4",
372
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4",
372
373
  children: [/* @__PURE__ */ C("h3", {
373
- className: "mb-3 text-base font-semibold text-foreground",
374
+ className: "mb-3 text-base font-semibold text-text-primary",
374
375
  children: "Market Updates"
375
376
  }), /* @__PURE__ */ w("div", {
376
377
  className: "space-y-3",
377
378
  children: [
378
379
  /* @__PURE__ */ w("div", {
379
- className: "border-l-4 border-green-500 pl-3",
380
+ className: "border-l-4 border-status-success-border pl-3",
380
381
  children: [/* @__PURE__ */ C("h4", {
381
- className: "text-xs font-semibold text-foreground",
382
+ className: "text-xs font-semibold text-text-primary",
382
383
  children: "Mobile Services Market Growing"
383
384
  }), /* @__PURE__ */ C("p", {
384
- className: "mt-1 text-xs leading-relaxed text-muted-foreground",
385
+ className: "mt-1 text-xs leading-relaxed text-text-secondary",
385
386
  children: "Mobile service industry shows 35% growth in Q4 2024"
386
387
  })]
387
388
  }),
388
389
  /* @__PURE__ */ w("div", {
389
- className: "border-l-4 border-blue-500 pl-3",
390
+ className: "border-l-4 border-status-info-border pl-3",
390
391
  children: [/* @__PURE__ */ C("h4", {
391
- className: "text-xs font-semibold text-foreground",
392
+ className: "text-xs font-semibold text-text-primary",
392
393
  children: "New Investment Tax Benefits"
393
394
  }), /* @__PURE__ */ C("p", {
394
- className: "mt-1 text-xs leading-relaxed text-muted-foreground",
395
+ className: "mt-1 text-xs leading-relaxed text-text-secondary",
395
396
  children: "Government announces SME investment incentives"
396
397
  })]
397
398
  }),
398
399
  /* @__PURE__ */ w("div", {
399
- className: "border-l-4 border-yellow-500 pl-3",
400
+ className: "border-l-4 border-status-warning-border pl-3",
400
401
  children: [/* @__PURE__ */ C("h4", {
401
- className: "text-xs font-semibold text-foreground",
402
+ className: "text-xs font-semibold text-text-primary",
402
403
  children: "Home Services Demand Surge"
403
404
  }), /* @__PURE__ */ C("p", {
404
- className: "mt-1 text-xs leading-relaxed text-muted-foreground",
405
+ className: "mt-1 text-xs leading-relaxed text-text-secondary",
405
406
  children: "Cleaning and maintenance businesses up 25% this quarter"
406
407
  })]
407
408
  })