@burdenoff/microfe-atheletebridge 2026.625.2 → 2026.628.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/dist/atheletebridge/AthleteBridgeRoot.js +49 -129
  2. package/dist/atheletebridge/AthleteBridgeRoot.js.map +1 -1
  3. package/dist/atheletebridge/AthleteBridgeRoutes.js +65 -184
  4. package/dist/atheletebridge/AthleteBridgeRoutes.js.map +1 -1
  5. package/dist/atheletebridge/components/CursorPager.js +34 -0
  6. package/dist/atheletebridge/components/CursorPager.js.map +1 -0
  7. package/dist/atheletebridge/components/FilterSelect.js +22 -0
  8. package/dist/atheletebridge/components/FilterSelect.js.map +1 -0
  9. package/dist/atheletebridge/components/FixtureCard.js +76 -0
  10. package/dist/atheletebridge/components/FixtureCard.js.map +1 -0
  11. package/dist/atheletebridge/components/LoadingState.js +36 -0
  12. package/dist/atheletebridge/components/LoadingState.js.map +1 -0
  13. package/dist/atheletebridge/components/ProgramCard.js +69 -0
  14. package/dist/atheletebridge/components/ProgramCard.js.map +1 -0
  15. package/dist/atheletebridge/components/SessionCard.js +76 -0
  16. package/dist/atheletebridge/components/SessionCard.js.map +1 -0
  17. package/dist/atheletebridge/components/StatusBadge.js +44 -35
  18. package/dist/atheletebridge/components/StatusBadge.js.map +1 -1
  19. package/dist/atheletebridge/components/TeamCard.js +81 -0
  20. package/dist/atheletebridge/components/TeamCard.js.map +1 -0
  21. package/dist/atheletebridge/components/domain.js +47 -0
  22. package/dist/atheletebridge/components/domain.js.map +1 -0
  23. package/dist/atheletebridge/components/form.js +29 -0
  24. package/dist/atheletebridge/components/form.js.map +1 -0
  25. package/dist/atheletebridge/context/AthleteBridgeContext.js +6 -6
  26. package/dist/atheletebridge/context/AthleteBridgeContext.js.map +1 -1
  27. package/dist/atheletebridge/hooks/useAthleteBridgeApi.js +342 -165
  28. package/dist/atheletebridge/hooks/useAthleteBridgeApi.js.map +1 -1
  29. package/dist/atheletebridge/index.js +1 -1
  30. package/dist/atheletebridge/pages/DashboardPage.js +169 -0
  31. package/dist/atheletebridge/pages/DashboardPage.js.map +1 -0
  32. package/dist/atheletebridge/pages/StandingsPage.js +166 -0
  33. package/dist/atheletebridge/pages/StandingsPage.js.map +1 -0
  34. package/dist/atheletebridge/pages/fixtures/FixtureDetailPage.js +201 -0
  35. package/dist/atheletebridge/pages/fixtures/FixtureDetailPage.js.map +1 -0
  36. package/dist/atheletebridge/pages/fixtures/FixtureFormPage.js +205 -0
  37. package/dist/atheletebridge/pages/fixtures/FixtureFormPage.js.map +1 -0
  38. package/dist/atheletebridge/pages/fixtures/FixturesListPage.js +92 -0
  39. package/dist/atheletebridge/pages/fixtures/FixturesListPage.js.map +1 -0
  40. package/dist/atheletebridge/pages/programs/ProgramDetailPage.js +374 -0
  41. package/dist/atheletebridge/pages/programs/ProgramDetailPage.js.map +1 -0
  42. package/dist/atheletebridge/pages/programs/ProgramFormPage.js +207 -0
  43. package/dist/atheletebridge/pages/programs/ProgramFormPage.js.map +1 -0
  44. package/dist/atheletebridge/pages/programs/ProgramsListPage.js +113 -0
  45. package/dist/atheletebridge/pages/programs/ProgramsListPage.js.map +1 -0
  46. package/dist/atheletebridge/pages/sessions/SessionDetailPage.js +224 -0
  47. package/dist/atheletebridge/pages/sessions/SessionDetailPage.js.map +1 -0
  48. package/dist/atheletebridge/pages/sessions/SessionFormPage.js +206 -0
  49. package/dist/atheletebridge/pages/sessions/SessionFormPage.js.map +1 -0
  50. package/dist/atheletebridge/pages/sessions/SessionsListPage.js +92 -0
  51. package/dist/atheletebridge/pages/sessions/SessionsListPage.js.map +1 -0
  52. package/dist/atheletebridge/pages/teams/TeamDetailPage.js +350 -0
  53. package/dist/atheletebridge/pages/teams/TeamDetailPage.js.map +1 -0
  54. package/dist/atheletebridge/pages/teams/TeamFormPage.js +222 -0
  55. package/dist/atheletebridge/pages/teams/TeamFormPage.js.map +1 -0
  56. package/dist/atheletebridge/pages/teams/TeamsListPage.js +101 -0
  57. package/dist/atheletebridge/pages/teams/TeamsListPage.js.map +1 -0
  58. package/dist/atheletebridge/store/atheletebridgeStore.js +2 -13
  59. package/dist/atheletebridge/store/atheletebridgeStore.js.map +1 -1
  60. package/dist/atheletebridge/utils/datetime.js +10 -0
  61. package/dist/atheletebridge/utils/datetime.js.map +1 -0
  62. package/dist/atheletebridge/utils/formatters.js +1 -4
  63. package/dist/atheletebridge/utils/formatters.js.map +1 -1
  64. package/package.json +1 -1
  65. package/dist/atheletebridge/components/InvestmentCard.js +0 -96
  66. package/dist/atheletebridge/components/InvestmentCard.js.map +0 -1
  67. package/dist/atheletebridge/components/RatingDisplay.js +0 -35
  68. package/dist/atheletebridge/components/RatingDisplay.js.map +0 -1
  69. package/dist/atheletebridge/mocks/data.js +0 -1517
  70. package/dist/atheletebridge/mocks/data.js.map +0 -1
  71. package/dist/atheletebridge/mocks/users.js +0 -34
  72. package/dist/atheletebridge/mocks/users.js.map +0 -1
  73. package/dist/atheletebridge/pages/HomePage.js +0 -936
  74. package/dist/atheletebridge/pages/HomePage.js.map +0 -1
  75. package/dist/atheletebridge/pages/admin/AdminAnalyticsPage.js +0 -653
  76. package/dist/atheletebridge/pages/admin/AdminAnalyticsPage.js.map +0 -1
  77. package/dist/atheletebridge/pages/admin/AdminDashboard.js +0 -671
  78. package/dist/atheletebridge/pages/admin/AdminDashboard.js.map +0 -1
  79. package/dist/atheletebridge/pages/admin/AdminFinancialPage.js +0 -429
  80. package/dist/atheletebridge/pages/admin/AdminFinancialPage.js.map +0 -1
  81. package/dist/atheletebridge/pages/admin/AdminOrdersPage.js +0 -667
  82. package/dist/atheletebridge/pages/admin/AdminOrdersPage.js.map +0 -1
  83. package/dist/atheletebridge/pages/admin/AdminProfilePage.js +0 -261
  84. package/dist/atheletebridge/pages/admin/AdminProfilePage.js.map +0 -1
  85. package/dist/atheletebridge/pages/admin/AdminSettingsPage.js +0 -653
  86. package/dist/atheletebridge/pages/admin/AdminSettingsPage.js.map +0 -1
  87. package/dist/atheletebridge/pages/admin/CartManagementPage.js +0 -876
  88. package/dist/atheletebridge/pages/admin/CartManagementPage.js.map +0 -1
  89. package/dist/atheletebridge/pages/admin/UserManagementPage.js +0 -900
  90. package/dist/atheletebridge/pages/admin/UserManagementPage.js.map +0 -1
  91. package/dist/atheletebridge/pages/cart-owner/AnalyticsDashboard.js +0 -839
  92. package/dist/atheletebridge/pages/cart-owner/AnalyticsDashboard.js.map +0 -1
  93. package/dist/atheletebridge/pages/cart-owner/BusinessSettingsPage.js +0 -704
  94. package/dist/atheletebridge/pages/cart-owner/BusinessSettingsPage.js.map +0 -1
  95. package/dist/atheletebridge/pages/cart-owner/CartOwnerDashboard.js +0 -792
  96. package/dist/atheletebridge/pages/cart-owner/CartOwnerDashboard.js.map +0 -1
  97. package/dist/atheletebridge/pages/cart-owner/CartOwnerProfilePage.js +0 -891
  98. package/dist/atheletebridge/pages/cart-owner/CartOwnerProfilePage.js.map +0 -1
  99. package/dist/atheletebridge/pages/cart-owner/CartServiceConfigPage.js +0 -633
  100. package/dist/atheletebridge/pages/cart-owner/CartServiceConfigPage.js.map +0 -1
  101. package/dist/atheletebridge/pages/cart-owner/InventoryManagementPage.js +0 -913
  102. package/dist/atheletebridge/pages/cart-owner/InventoryManagementPage.js.map +0 -1
  103. package/dist/atheletebridge/pages/cart-owner/OrderManagementPage.js +0 -881
  104. package/dist/atheletebridge/pages/cart-owner/OrderManagementPage.js.map +0 -1
  105. package/dist/atheletebridge/pages/cart-owner/StaffManagementPage.js +0 -841
  106. package/dist/atheletebridge/pages/cart-owner/StaffManagementPage.js.map +0 -1
  107. package/dist/atheletebridge/pages/common/HelpSupportPage.js +0 -1319
  108. package/dist/atheletebridge/pages/common/HelpSupportPage.js.map +0 -1
  109. package/dist/atheletebridge/pages/common/NotificationCenterPage.js +0 -674
  110. package/dist/atheletebridge/pages/common/NotificationCenterPage.js.map +0 -1
  111. package/dist/atheletebridge/pages/common/SettingsPage.js +0 -972
  112. package/dist/atheletebridge/pages/common/SettingsPage.js.map +0 -1
  113. package/dist/atheletebridge/pages/customer/BookingDetailsPage.js +0 -602
  114. package/dist/atheletebridge/pages/customer/BookingDetailsPage.js.map +0 -1
  115. package/dist/atheletebridge/pages/customer/CartDetailPage.js +0 -656
  116. package/dist/atheletebridge/pages/customer/CartDetailPage.js.map +0 -1
  117. package/dist/atheletebridge/pages/customer/CartDiscoveryPage.js +0 -558
  118. package/dist/atheletebridge/pages/customer/CartDiscoveryPage.js.map +0 -1
  119. package/dist/atheletebridge/pages/customer/CheckoutPage.js +0 -536
  120. package/dist/atheletebridge/pages/customer/CheckoutPage.js.map +0 -1
  121. package/dist/atheletebridge/pages/customer/CustomerDashboard.js +0 -539
  122. package/dist/atheletebridge/pages/customer/CustomerDashboard.js.map +0 -1
  123. package/dist/atheletebridge/pages/customer/CustomerProfilePage.js +0 -657
  124. package/dist/atheletebridge/pages/customer/CustomerProfilePage.js.map +0 -1
  125. package/dist/atheletebridge/pages/customer/DirectServiceBookingPage.js +0 -635
  126. package/dist/atheletebridge/pages/customer/DirectServiceBookingPage.js.map +0 -1
  127. package/dist/atheletebridge/pages/customer/FavoritesPage.js +0 -486
  128. package/dist/atheletebridge/pages/customer/FavoritesPage.js.map +0 -1
  129. package/dist/atheletebridge/pages/customer/OrderHistoryPage.js +0 -447
  130. package/dist/atheletebridge/pages/customer/OrderHistoryPage.js.map +0 -1
  131. package/dist/atheletebridge/pages/customer/OrderTrackingPage.js +0 -393
  132. package/dist/atheletebridge/pages/customer/OrderTrackingPage.js.map +0 -1
  133. package/dist/atheletebridge/pages/customer/PaymentMethodsPage.js +0 -494
  134. package/dist/atheletebridge/pages/customer/PaymentMethodsPage.js.map +0 -1
  135. package/dist/atheletebridge/pages/customer/ReviewsPage.js +0 -615
  136. package/dist/atheletebridge/pages/customer/ReviewsPage.js.map +0 -1
  137. package/dist/atheletebridge/pages/customer/SavedAddressesPage.js +0 -451
  138. package/dist/atheletebridge/pages/customer/SavedAddressesPage.js.map +0 -1
  139. package/dist/atheletebridge/pages/investor/InvestmentDetailsPage.js +0 -881
  140. package/dist/atheletebridge/pages/investor/InvestmentDetailsPage.js.map +0 -1
  141. package/dist/atheletebridge/pages/investor/InvestmentOpportunitiesPage.js +0 -945
  142. package/dist/atheletebridge/pages/investor/InvestmentOpportunitiesPage.js.map +0 -1
  143. package/dist/atheletebridge/pages/investor/InvestorAnalyticsPage.js +0 -686
  144. package/dist/atheletebridge/pages/investor/InvestorAnalyticsPage.js.map +0 -1
  145. package/dist/atheletebridge/pages/investor/InvestorDashboard.js +0 -453
  146. package/dist/atheletebridge/pages/investor/InvestorDashboard.js.map +0 -1
  147. package/dist/atheletebridge/pages/investor/InvestorInvestmentsPage.js +0 -405
  148. package/dist/atheletebridge/pages/investor/InvestorInvestmentsPage.js.map +0 -1
  149. package/dist/atheletebridge/pages/investor/InvestorPortfolioPage.js +0 -577
  150. package/dist/atheletebridge/pages/investor/InvestorPortfolioPage.js.map +0 -1
  151. package/dist/atheletebridge/pages/investor/InvestorProfilePage.js +0 -1069
  152. package/dist/atheletebridge/pages/investor/InvestorProfilePage.js.map +0 -1
  153. package/dist/atheletebridge/pages/worker/TaskDetailsPage.js +0 -530
  154. package/dist/atheletebridge/pages/worker/TaskDetailsPage.js.map +0 -1
  155. package/dist/atheletebridge/pages/worker/WorkerDashboard.js +0 -669
  156. package/dist/atheletebridge/pages/worker/WorkerDashboard.js.map +0 -1
  157. package/dist/atheletebridge/pages/worker/WorkerOrdersPage.js +0 -681
  158. package/dist/atheletebridge/pages/worker/WorkerOrdersPage.js.map +0 -1
  159. package/dist/atheletebridge/pages/worker/WorkerProfilePage.js +0 -691
  160. package/dist/atheletebridge/pages/worker/WorkerProfilePage.js.map +0 -1
  161. package/dist/atheletebridge/pages/worker/WorkerSchedulePage.js +0 -588
  162. package/dist/atheletebridge/pages/worker/WorkerSchedulePage.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"InvestmentDetailsPage.js","names":[],"sources":["../../../../src/atheletebridge/pages/investor/InvestmentDetailsPage.tsx"],"sourcesContent":["/**\n * Investment Details Page\n * @module atheletebridge/pages/investor\n *\n * 4-tab UI (overview/financials/documents/updates), manage investment modal,\n * growth indicators with progress bars, document status badges\n * (verified/pending/rejected), investment summary sidebar, back navigation.\n */\n\nimport { useState, useMemo, useEffect } from 'react';\nimport {\n ArrowLeft,\n TrendingUp,\n Shield,\n AlertTriangle,\n Users,\n FileText,\n Clock,\n Building2,\n IndianRupee,\n Calendar,\n Download,\n BarChart3,\n PieChart,\n Activity,\n Package,\n Star,\n CheckCircle2,\n AlertCircle,\n X,\n} from 'lucide-react';\nimport { EmphasisPanel, PagePurpose, NextSteps } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../../components/PageLayout';\nimport { StatusBadge } from '../../components/StatusBadge';\nimport { useAthleteBridge } from '../../context/AthleteBridgeContext';\nimport { cn } from '../../utils/cn';\nimport { formatCurrency, formatDate } from '../../utils/formatters';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ninterface InvestmentDetails {\n id: string;\n cartName: string;\n cartOwner: string;\n location: string;\n businessType: string;\n establishedDate: string;\n\n investmentAmount: number;\n investmentDate: string;\n equityPercentage: number;\n valuationAtInvestment: number;\n currentValuation: number;\n investmentType: string;\n\n monthlyRevenue: number;\n monthlyOrders: number;\n averageOrderValue: number;\n customerRating: number;\n activeCustomers: number;\n\n revenueGrowth: number;\n profitMargin: number;\n returnOnInvestment: number;\n paybackPeriod: string;\n\n documents: Array<{\n type: string;\n name: string;\n uploadDate: string;\n status: 'verified' | 'pending' | 'rejected';\n }>;\n\n recentUpdates: Array<{\n date: string;\n type: string;\n description: string;\n }>;\n}\n\ntype TabKey = 'overview' | 'financials' | 'documents' | 'updates';\n\n// ---------------------------------------------------------------------------\n// Mock data\n// ---------------------------------------------------------------------------\n\nconst mockInvestmentDetails: InvestmentDetails = {\n id: 'INV-001',\n cartName: 'Dosa Express - Koramangala',\n cartOwner: 'Suresh Rao',\n location: 'Koramangala 6th Block, Bangalore',\n businessType: 'South Indian Cuisine',\n establishedDate: '2022-06-15',\n\n investmentAmount: 500000,\n investmentDate: '2023-03-10',\n equityPercentage: 15,\n valuationAtInvestment: 3333333,\n currentValuation: 4333333,\n investmentType: 'Equity Investment',\n\n monthlyRevenue: 280000,\n monthlyOrders: 1850,\n averageOrderValue: 151,\n customerRating: 4.6,\n activeCustomers: 450,\n\n revenueGrowth: 18.5,\n profitMargin: 22,\n returnOnInvestment: 30,\n paybackPeriod: '2.5 years',\n\n documents: [\n {\n type: 'Investment Agreement',\n name: 'investment_agreement_dosa_express.pdf',\n uploadDate: '2023-03-10',\n status: 'verified',\n },\n {\n type: 'Financial Statement',\n name: 'financial_statement_q4_2023.pdf',\n uploadDate: '2024-01-05',\n status: 'verified',\n },\n {\n type: 'Tax Returns',\n name: 'tax_returns_2023.pdf',\n uploadDate: '2024-01-10',\n status: 'pending',\n },\n {\n type: 'Business License',\n name: 'fssai_license.pdf',\n uploadDate: '2023-03-08',\n status: 'verified',\n },\n ],\n\n recentUpdates: [\n {\n date: '2024-01-12',\n type: 'Performance',\n description: 'Monthly revenue exceeded target by 15%',\n },\n {\n date: '2024-01-08',\n type: 'Operations',\n description: 'Expanded menu with 5 new items',\n },\n {\n date: '2024-01-01',\n type: 'Financial',\n description: 'Q4 2023 profit distribution completed',\n },\n {\n date: '2023-12-20',\n type: 'Growth',\n description: 'Opened second location in BTM Layout',\n },\n ],\n};\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction getDocStatusConfig(status: string) {\n switch (status) {\n case 'verified':\n return {\n color: 'text-green-600 dark:text-green-400',\n Icon: CheckCircle2,\n label: 'Verified',\n };\n case 'pending':\n return {\n color: 'text-yellow-600 dark:text-yellow-400',\n Icon: Clock,\n label: 'Pending',\n };\n case 'rejected':\n return {\n color: 'text-red-600 dark:text-red-400',\n Icon: AlertCircle,\n label: 'Rejected',\n };\n default:\n return {\n color: 'text-text-secondary',\n Icon: AlertCircle,\n label: status,\n };\n }\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport function InvestmentDetailsPage() {\n const { navigateTo } = useAthleteBridge();\n const [activeTab, setActiveTab] = useState<TabKey>('overview');\n const [isLoading, setIsLoading] = useState(true);\n const [showManageModal, setShowManageModal] = useState(false);\n const [investment, setInvestment] = useState<InvestmentDetails | null>(null);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setInvestment(mockInvestmentDetails);\n setIsLoading(false);\n }, 600);\n return () => clearTimeout(timer);\n }, []);\n\n const tabs: Array<{ id: TabKey; label: string; Icon: typeof BarChart3 }> = [\n { id: 'overview', label: 'Overview', Icon: BarChart3 },\n { id: 'financials', label: 'Financials', Icon: IndianRupee },\n { id: 'documents', label: 'Documents', Icon: FileText },\n { id: 'updates', label: 'Updates', Icon: Activity },\n ];\n\n if (isLoading) {\n return (\n <PageLayout title=\"Investment Details\" description=\"Loading...\">\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 investment details...</p>\n </div>\n </div>\n </PageLayout>\n );\n }\n\n if (!investment) {\n return (\n <PageLayout title=\"Investment Not Found\">\n <div className=\"flex flex-col items-center justify-center py-12\">\n <AlertCircle className=\"mb-4 h-12 w-12 text-red-500\" />\n <p className=\"text-text-primary\">Investment not found</p>\n </div>\n </PageLayout>\n );\n }\n\n const currentReturns =\n investment.currentValuation * (investment.equityPercentage / 100) - investment.investmentAmount;\n const returnsPercentage = (currentReturns / investment.investmentAmount) * 100;\n\n return (\n <PageLayout\n title={investment.cartName}\n description=\"Investment Details & Performance\"\n actions={\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={() => navigateTo('/investor/portfolio')}\n 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\"\n >\n <ArrowLeft className=\"h-4 w-4\" />\n <span className=\"hidden sm:inline\">Back to Portfolio</span>\n <span className=\"sm:hidden\">Back</span>\n </button>\n <button\n type=\"button\"\n onClick={() => alert('Report export initiated')}\n 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\"\n >\n <Download className=\"h-4 w-4\" />\n <span className=\"hidden sm:inline\">Export Report</span>\n <span className=\"sm:hidden\">Export</span>\n </button>\n <button\n type=\"button\"\n onClick={() => setShowManageModal(true)}\n className=\"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\"\n >\n <span className=\"hidden sm:inline\">Manage Investment</span>\n <span className=\"sm:hidden\">Manage</span>\n </button>\n </div>\n }\n >\n <PagePurpose className=\"mb-6\">\n A deep dive into one of your investments. Track your stake, returns and equity, follow the\n business&apos;s performance over time, export a report, or manage your position. Everything\n about this holding lives on this page.\n </PagePurpose>\n\n <NextSteps\n className=\"mb-6\"\n storageKey=\"atheletebridge-investment-details\"\n steps={[\n {\n id: 'manage',\n label: 'Manage this investment',\n description: 'Top up, withdraw or adjust your position.',\n icon: <PieChart className=\"h-4 w-4\" />,\n onClick: () => setShowManageModal(true),\n },\n {\n id: 'export',\n label: 'Export a performance report',\n description: 'Download the numbers for your records.',\n icon: <Download className=\"h-4 w-4\" />,\n onClick: () => alert('Report export initiated'),\n },\n {\n id: 'portfolio',\n label: 'Back to your portfolio',\n description: 'Compare this holding against the rest of your investments.',\n icon: <ArrowLeft className=\"h-4 w-4\" />,\n onClick: () => navigateTo('/investor/portfolio'),\n },\n ]}\n />\n\n {/* Investment Summary Cards */}\n <EmphasisPanel>\n <div className=\"grid grid-cols-2 gap-4 lg:grid-cols-4\">\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 text-center\">\n <IndianRupee className=\"mx-auto mb-2 h-6 w-6 text-primary sm:h-8 sm:w-8\" />\n <div className=\"text-lg font-bold text-text-primary sm:text-2xl\">\n {formatCurrency(investment.investmentAmount, { minimumFractionDigits: 0 })}\n </div>\n <div className=\"text-xs text-text-secondary sm:text-sm\">Your Investment</div>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 text-center\">\n <TrendingUp className=\"mx-auto mb-2 h-6 w-6 text-green-600 sm:h-8 sm:w-8\" />\n <div className=\"text-lg font-bold text-green-600 dark:text-green-400 sm:text-2xl\">\n {returnsPercentage > 0 ? '+' : ''}\n {returnsPercentage.toFixed(1)}%\n </div>\n <div className=\"text-xs text-text-secondary sm:text-sm\">Returns</div>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 text-center\">\n <PieChart className=\"mx-auto mb-2 h-6 w-6 text-blue-600 sm:h-8 sm:w-8\" />\n <div className=\"text-lg font-bold text-text-primary sm:text-2xl\">\n {investment.equityPercentage}%\n </div>\n <div className=\"text-xs text-text-secondary sm:text-sm\">Equity Stake</div>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 text-center\">\n <Building2 className=\"mx-auto mb-2 h-6 w-6 text-purple-600 sm:h-8 sm:w-8\" />\n <div className=\"text-lg font-bold text-text-primary sm:text-2xl\">\n {formatCurrency(investment.currentValuation * (investment.equityPercentage / 100), {\n minimumFractionDigits: 0,\n })}\n </div>\n <div className=\"text-xs text-text-secondary sm:text-sm\">Current Value</div>\n </div>\n </div>\n </EmphasisPanel>\n\n {/* Tabs */}\n <div className=\"mt-6 flex gap-2 overflow-x-auto pb-2\">\n {tabs.map((tab) => (\n <button\n key={tab.id}\n type=\"button\"\n onClick={() => setActiveTab(tab.id)}\n className={cn(\n 'flex items-center gap-2 whitespace-nowrap rounded-lg px-3 py-2 text-sm font-medium transition-colors sm:px-4 sm:py-3',\n activeTab === tab.id\n ? 'bg-action-primary-bg text-action-primary-text'\n : 'bg-bg-surface text-text-primary hover:bg-bg-sunken'\n )}\n >\n <tab.Icon className=\"h-4 w-4 flex-shrink-0\" />\n <span className=\"hidden sm:inline\">{tab.label}</span>\n <span className=\"sm:hidden\">{tab.label.split(' ')[0]}</span>\n </button>\n ))}\n </div>\n\n {/* Tab Content */}\n <div className=\"mt-6\">\n {/* Overview Tab */}\n {activeTab === 'overview' && (\n <div className=\"grid gap-6 lg:grid-cols-3\">\n {/* Business Details */}\n <div className=\"space-y-6 lg:col-span-2\">\n {/* Business Information */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6\">\n <h2 className=\"mb-4 text-lg font-semibold text-text-primary sm:mb-6\">\n Business Information\n </h2>\n <div className=\"grid gap-4 sm:grid-cols-2 sm:gap-6\">\n <div>\n <p className=\"text-sm text-text-secondary\">Owner</p>\n <p className=\"font-medium text-text-primary\">{investment.cartOwner}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Business Type</p>\n <p className=\"font-medium text-text-primary\">{investment.businessType}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Location</p>\n <p className=\"font-medium text-text-primary\">{investment.location}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Established</p>\n <p className=\"font-medium text-text-primary\">\n {formatDate(investment.establishedDate, {\n hour: undefined,\n minute: undefined,\n })}\n </p>\n </div>\n </div>\n </div>\n\n {/* Performance Metrics */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6\">\n <h2 className=\"mb-4 text-lg font-semibold text-text-primary sm:mb-6\">\n Performance Metrics\n </h2>\n <div className=\"grid grid-cols-1 gap-4 text-center sm:grid-cols-3 sm:gap-6\">\n <div>\n <Package className=\"mx-auto mb-2 h-6 w-6 text-primary sm:h-8 sm:w-8\" />\n <div className=\"text-xl font-bold text-text-primary sm:text-2xl\">\n {investment.monthlyOrders}\n </div>\n <div className=\"text-xs text-text-secondary sm:text-sm\">Monthly Orders</div>\n </div>\n <div>\n <IndianRupee className=\"mx-auto mb-2 h-6 w-6 text-green-600 sm:h-8 sm:w-8\" />\n <div className=\"text-xl font-bold text-text-primary sm:text-2xl\">\n {formatCurrency(investment.monthlyRevenue, { minimumFractionDigits: 0 })}\n </div>\n <div className=\"text-xs text-text-secondary sm:text-sm\">Monthly Revenue</div>\n </div>\n <div>\n <Users className=\"mx-auto mb-2 h-6 w-6 text-blue-600 sm:h-8 sm:w-8\" />\n <div className=\"text-xl font-bold text-text-primary sm:text-2xl\">\n {investment.activeCustomers}\n </div>\n <div className=\"text-xs text-text-secondary sm:text-sm\">Active Customers</div>\n </div>\n </div>\n <div className=\"mt-4 flex flex-col items-start justify-between gap-4 border-t border-border-subtle pt-4 sm:mt-6 sm:flex-row sm:items-center sm:pt-6\">\n <div>\n <p className=\"text-sm text-text-secondary\">Customer Rating</p>\n <div className=\"mt-1 flex items-center gap-1\">\n {Array.from({ length: 5 }, (_, i) => (\n <Star\n key={i}\n className={cn(\n 'h-4 w-4',\n i < Math.floor(investment.customerRating)\n ? 'fill-yellow-400 text-yellow-400'\n : 'fill-none text-text-secondary/40'\n )}\n />\n ))}\n <span className=\"ml-1 text-sm font-medium text-text-primary\">\n {investment.customerRating}\n </span>\n </div>\n </div>\n <div className=\"text-left sm:text-right\">\n <p className=\"text-sm text-text-secondary\">Avg Order Value</p>\n <p className=\"text-lg font-semibold text-text-primary\">\n {formatCurrency(investment.averageOrderValue, { minimumFractionDigits: 0 })}\n </p>\n </div>\n </div>\n </div>\n </div>\n\n {/* Sidebar */}\n <div className=\"space-y-6\">\n {/* Investment Summary */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6\">\n <h2 className=\"mb-4 text-lg font-semibold text-text-primary sm:mb-6\">\n Investment Summary\n </h2>\n <div className=\"space-y-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">Investment Date</p>\n <p className=\"font-medium text-text-primary\">\n {formatDate(investment.investmentDate, {\n hour: undefined,\n minute: undefined,\n })}\n </p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Investment Type</p>\n <p className=\"font-medium text-text-primary\">{investment.investmentType}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Initial Valuation</p>\n <p className=\"font-medium text-text-primary\">\n {formatCurrency(investment.valuationAtInvestment, {\n minimumFractionDigits: 0,\n })}\n </p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Current Valuation</p>\n <p className=\"text-lg font-medium text-text-primary\">\n {formatCurrency(investment.currentValuation, { minimumFractionDigits: 0 })}\n </p>\n </div>\n <div className=\"border-t border-border-subtle pt-4\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">Your Returns</span>\n <span\n className={cn(\n 'text-lg font-semibold',\n currentReturns > 0\n ? 'text-green-600 dark:text-green-400'\n : 'text-red-600 dark:text-red-400'\n )}\n >\n {currentReturns > 0 ? '+' : ''}\n {formatCurrency(currentReturns, { minimumFractionDigits: 0 })}\n </span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Growth Indicators */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6\">\n <h2 className=\"mb-4 text-lg font-semibold text-text-primary sm:mb-6\">\n Growth Indicators\n </h2>\n <div className=\"space-y-4\">\n <div>\n <div className=\"mb-2 flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">Revenue Growth</span>\n <span className=\"text-sm font-medium text-green-600 dark:text-green-400\">\n +{investment.revenueGrowth}%\n </span>\n </div>\n <div className=\"h-2 w-full overflow-hidden rounded-full bg-bg-sunken\">\n <div\n className=\"h-full rounded-full bg-green-600\"\n style={{ width: `${Math.min(investment.revenueGrowth, 100)}%` }}\n />\n </div>\n </div>\n <div>\n <div className=\"mb-2 flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">Profit Margin</span>\n <span className=\"text-sm font-medium text-text-primary\">\n {investment.profitMargin}%\n </span>\n </div>\n <div className=\"h-2 w-full overflow-hidden rounded-full bg-bg-sunken\">\n <div\n className=\"h-full rounded-full bg-blue-600\"\n style={{ width: `${investment.profitMargin}%` }}\n />\n </div>\n </div>\n <div>\n <div className=\"mb-2 flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">ROI</span>\n <span className=\"text-sm font-medium text-green-600 dark:text-green-400\">\n +{investment.returnOnInvestment}%\n </span>\n </div>\n <div className=\"h-2 w-full overflow-hidden rounded-full bg-bg-sunken\">\n <div\n className=\"h-full rounded-full bg-green-500\"\n style={{ width: `${Math.min(investment.returnOnInvestment, 100)}%` }}\n />\n </div>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Expected Payback</p>\n <p className=\"font-medium text-text-primary\">{investment.paybackPeriod}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n )}\n\n {/* Financials Tab */}\n {activeTab === 'financials' && (\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6\">\n <h2 className=\"mb-4 text-lg font-semibold text-text-primary sm:mb-6\">\n Financial Performance\n </h2>\n\n {/* Key Financial Metrics */}\n <div className=\"mb-6 grid grid-cols-2 gap-4 lg:grid-cols-4\">\n <div className=\"rounded-lg bg-bg-sunken/50 p-3\">\n <p className=\"text-xs text-text-secondary\">Monthly Revenue</p>\n <p className=\"mt-1 text-lg font-bold text-text-primary\">\n {formatCurrency(investment.monthlyRevenue, { minimumFractionDigits: 0 })}\n </p>\n </div>\n <div className=\"rounded-lg bg-bg-sunken/50 p-3\">\n <p className=\"text-xs text-text-secondary\">Revenue Growth</p>\n <p className=\"mt-1 text-lg font-bold text-green-600 dark:text-green-400\">\n +{investment.revenueGrowth}%\n </p>\n </div>\n <div className=\"rounded-lg bg-bg-sunken/50 p-3\">\n <p className=\"text-xs text-text-secondary\">Profit Margin</p>\n <p className=\"mt-1 text-lg font-bold text-text-primary\">{investment.profitMargin}%</p>\n </div>\n <div className=\"rounded-lg bg-bg-sunken/50 p-3\">\n <p className=\"text-xs text-text-secondary\">Avg Order Value</p>\n <p className=\"mt-1 text-lg font-bold text-text-primary\">\n {formatCurrency(investment.averageOrderValue, { minimumFractionDigits: 0 })}\n </p>\n </div>\n </div>\n\n {/* Financial Details Table */}\n <div className=\"overflow-hidden rounded-lg border border-border-subtle\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"bg-bg-sunken/50\">\n <th className=\"px-4 py-3 text-left text-xs font-medium uppercase tracking-wider text-text-secondary\">\n Metric\n </th>\n <th className=\"px-4 py-3 text-right text-xs font-medium uppercase tracking-wider text-text-secondary\">\n Value\n </th>\n <th className=\"px-4 py-3 text-right text-xs font-medium uppercase tracking-wider text-text-secondary\">\n Trend\n </th>\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {[\n {\n metric: 'Monthly Revenue',\n value: formatCurrency(investment.monthlyRevenue, {\n minimumFractionDigits: 0,\n }),\n trend: '+18.5%',\n },\n {\n metric: 'Monthly Orders',\n value: String(investment.monthlyOrders),\n trend: '+12%',\n },\n {\n metric: 'Average Order Value',\n value: formatCurrency(investment.averageOrderValue, {\n minimumFractionDigits: 0,\n }),\n trend: '+5.8%',\n },\n {\n metric: 'Active Customers',\n value: String(investment.activeCustomers),\n trend: '+22%',\n },\n {\n metric: 'Profit Margin',\n value: `${investment.profitMargin}%`,\n trend: '+2.1%',\n },\n {\n metric: 'Return on Investment',\n value: `${investment.returnOnInvestment}%`,\n trend: '+8.5%',\n },\n ].map((row) => (\n <tr key={row.metric} className=\"hover:bg-accent/50 transition-colors\">\n <td className=\"px-4 py-3 text-sm font-medium text-text-primary\">\n {row.metric}\n </td>\n <td className=\"px-4 py-3 text-right text-sm text-text-primary\">{row.value}</td>\n <td className=\"px-4 py-3 text-right text-sm font-medium text-green-600 dark:text-green-400\">\n {row.trend}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n )}\n\n {/* Documents Tab */}\n {activeTab === 'documents' && (\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6\">\n <h2 className=\"mb-4 text-lg font-semibold text-text-primary sm:mb-6\">\n Investment Documents\n </h2>\n <div className=\"space-y-4\">\n {investment.documents.map((doc, index) => {\n const statusConfig = getDocStatusConfig(doc.status);\n const StatusIcon = statusConfig.Icon;\n\n return (\n <div\n key={index}\n className=\"flex flex-col gap-4 rounded-lg bg-bg-sunken/50 p-4 sm:flex-row sm:items-center sm:justify-between\"\n >\n <div className=\"flex items-start gap-3 flex-1 min-w-0 sm:items-center sm:gap-4\">\n <FileText className=\"mt-1 h-6 w-6 flex-shrink-0 text-primary sm:mt-0 sm:h-8 sm:w-8\" />\n <div className=\"min-w-0 flex-1\">\n <h4 className=\"text-sm font-medium text-text-primary sm:text-base\">\n {doc.type}\n </h4>\n <p className=\"truncate text-xs text-text-secondary sm:text-sm\">\n {doc.name}\n </p>\n <p className=\"text-xs text-text-secondary\">\n Uploaded{' '}\n {formatDate(doc.uploadDate, { hour: undefined, minute: undefined })}\n </p>\n </div>\n </div>\n <div className=\"flex w-full items-center justify-between gap-3 sm:w-auto sm:justify-end\">\n <span\n className={cn(\n 'flex items-center gap-1 text-xs sm:text-sm',\n statusConfig.color\n )}\n >\n <StatusIcon className=\"h-3 w-3 sm:h-4 sm:w-4\" />\n <span className=\"capitalize\">{statusConfig.label}</span>\n </span>\n <button\n type=\"button\"\n onClick={() => alert(`Downloading ${doc.name}`)}\n className=\"flex items-center gap-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 <Download className=\"h-3 w-3 sm:h-4 sm:w-4\" />\n <span className=\"hidden sm:inline\">Download</span>\n </button>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n )}\n\n {/* Updates Tab */}\n {activeTab === 'updates' && (\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6\">\n <h2 className=\"mb-4 text-lg font-semibold text-text-primary sm:mb-6\">Recent Updates</h2>\n <div className=\"space-y-4\">\n {investment.recentUpdates.map((update, index) => (\n <div key={index} className=\"flex gap-3 rounded-lg bg-bg-sunken/50 p-4 sm:gap-4\">\n <div className=\"flex-shrink-0\">\n <Activity className=\"mt-1 h-4 w-4 text-primary sm:h-5 sm:w-5\" />\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"mb-1 flex flex-col gap-1 sm:flex-row sm:items-center sm:justify-between\">\n <h4 className=\"text-sm font-medium text-text-primary sm:text-base\">\n {update.type}\n </h4>\n <span className=\"text-xs text-text-secondary sm:text-sm\">\n {formatDate(update.date, { hour: undefined, minute: undefined })}\n </span>\n </div>\n <p className=\"text-xs text-text-secondary sm:text-sm\">{update.description}</p>\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n\n {/* Manage Investment Modal */}\n {showManageModal && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4\">\n <div className=\"relative max-h-[90vh] w-full max-w-md overflow-y-auto rounded-lg border border-border-subtle bg-bg-surface\">\n <div className=\"border-b border-border-subtle p-4 sm:p-6\">\n <button\n type=\"button\"\n onClick={() => setShowManageModal(false)}\n className=\"absolute right-3 top-3 rounded-lg p-1 text-text-secondary hover:bg-accent transition-colors\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n <h2 className=\"text-lg font-semibold text-text-primary sm:text-xl\">\n Manage Investment\n </h2>\n </div>\n <div className=\"space-y-4 p-4 sm:p-6\">\n <p className=\"text-sm text-text-secondary sm:text-base\">\n Choose an action for your investment in {investment.cartName}:\n </p>\n <div className=\"space-y-3\">\n <button\n type=\"button\"\n onClick={() => alert('Partial withdrawal request submitted')}\n className=\"w-full rounded-lg border border-border-subtle px-4 py-2.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n Request Partial Withdrawal\n </button>\n <button\n type=\"button\"\n onClick={() => alert('Transfer ownership feature coming soon')}\n className=\"w-full rounded-lg border border-border-subtle px-4 py-2.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n Transfer Ownership\n </button>\n <button\n type=\"button\"\n onClick={() => alert('Exit options will be displayed')}\n className=\"w-full rounded-lg border border-border-subtle px-4 py-2.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n View Exit Options\n </button>\n </div>\n <div className=\"rounded-lg border border-yellow-500/30 bg-yellow-500/10 p-3 sm:p-4\">\n <p className=\"text-xs text-yellow-800 dark:text-yellow-200 sm:text-sm\">\n Any changes to your investment require approval from the business owner and may be\n subject to terms in your investment agreement.\n </p>\n </div>\n </div>\n <div className=\"flex justify-end gap-3 border-t border-border-subtle p-4 sm:p-6\">\n <button\n type=\"button\"\n onClick={() => setShowManageModal(false)}\n className=\"rounded-lg border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n Cancel\n </button>\n </div>\n </div>\n </div>\n )}\n </PageLayout>\n );\n}\n"],"mappings":"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"}