@burdenoff/microfe-subscriberbot 2026.624.1 → 2026.625.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/dist/subscriberbot/components/EmptyState.js +17 -10
  2. package/dist/subscriberbot/components/EmptyState.js.map +1 -1
  3. package/dist/subscriberbot/components/InvestmentCard.js +23 -22
  4. package/dist/subscriberbot/components/InvestmentCard.js.map +1 -1
  5. package/dist/subscriberbot/components/MetricsCard.js +15 -12
  6. package/dist/subscriberbot/components/MetricsCard.js.map +1 -1
  7. package/dist/subscriberbot/components/PageLayout.js +27 -15
  8. package/dist/subscriberbot/components/PageLayout.js.map +1 -1
  9. package/dist/subscriberbot/components/RatingDisplay.js +3 -3
  10. package/dist/subscriberbot/components/RatingDisplay.js.map +1 -1
  11. package/dist/subscriberbot/components/StatusBadge.js +25 -13
  12. package/dist/subscriberbot/components/StatusBadge.js.map +1 -1
  13. package/dist/subscriberbot/context/SubscriberBotContext.js.map +1 -1
  14. package/dist/subscriberbot/pages/HomePage.js +67 -63
  15. package/dist/subscriberbot/pages/HomePage.js.map +1 -1
  16. package/dist/subscriberbot/pages/admin/AdminAnalyticsPage.js +42 -42
  17. package/dist/subscriberbot/pages/admin/AdminAnalyticsPage.js.map +1 -1
  18. package/dist/subscriberbot/pages/admin/AdminDashboard.js +42 -41
  19. package/dist/subscriberbot/pages/admin/AdminDashboard.js.map +1 -1
  20. package/dist/subscriberbot/pages/admin/AdminFinancialPage.js +14 -14
  21. package/dist/subscriberbot/pages/admin/AdminFinancialPage.js.map +1 -1
  22. package/dist/subscriberbot/pages/admin/AdminOrdersPage.js +24 -24
  23. package/dist/subscriberbot/pages/admin/AdminOrdersPage.js.map +1 -1
  24. package/dist/subscriberbot/pages/admin/AdminProfilePage.js +11 -11
  25. package/dist/subscriberbot/pages/admin/AdminProfilePage.js.map +1 -1
  26. package/dist/subscriberbot/pages/admin/AdminSettingsPage.js +14 -14
  27. package/dist/subscriberbot/pages/admin/AdminSettingsPage.js.map +1 -1
  28. package/dist/subscriberbot/pages/admin/CartManagementPage.js +41 -41
  29. package/dist/subscriberbot/pages/admin/CartManagementPage.js.map +1 -1
  30. package/dist/subscriberbot/pages/admin/UserManagementPage.js +47 -47
  31. package/dist/subscriberbot/pages/admin/UserManagementPage.js.map +1 -1
  32. package/dist/subscriberbot/pages/cart-owner/AnalyticsDashboard.js +44 -44
  33. package/dist/subscriberbot/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  34. package/dist/subscriberbot/pages/cart-owner/BusinessSettingsPage.js +17 -17
  35. package/dist/subscriberbot/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
  36. package/dist/subscriberbot/pages/cart-owner/CartOwnerDashboard.js +94 -89
  37. package/dist/subscriberbot/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  38. package/dist/subscriberbot/pages/cart-owner/CartOwnerProfilePage.js +58 -58
  39. package/dist/subscriberbot/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  40. package/dist/subscriberbot/pages/cart-owner/CartServiceConfigPage.js +51 -51
  41. package/dist/subscriberbot/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
  42. package/dist/subscriberbot/pages/cart-owner/InventoryManagementPage.js +54 -54
  43. package/dist/subscriberbot/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  44. package/dist/subscriberbot/pages/cart-owner/OrderManagementPage.js +54 -53
  45. package/dist/subscriberbot/pages/cart-owner/OrderManagementPage.js.map +1 -1
  46. package/dist/subscriberbot/pages/cart-owner/StaffManagementPage.js +51 -51
  47. package/dist/subscriberbot/pages/cart-owner/StaffManagementPage.js.map +1 -1
  48. package/dist/subscriberbot/pages/common/HelpSupportPage.js +65 -65
  49. package/dist/subscriberbot/pages/common/HelpSupportPage.js.map +1 -1
  50. package/dist/subscriberbot/pages/common/NotificationCenterPage.js +46 -45
  51. package/dist/subscriberbot/pages/common/NotificationCenterPage.js.map +1 -1
  52. package/dist/subscriberbot/pages/common/SettingsPage.js +46 -46
  53. package/dist/subscriberbot/pages/common/SettingsPage.js.map +1 -1
  54. package/dist/subscriberbot/pages/customer/BookingDetailsPage.js +24 -23
  55. package/dist/subscriberbot/pages/customer/BookingDetailsPage.js.map +1 -1
  56. package/dist/subscriberbot/pages/customer/CartDetailPage.js +31 -30
  57. package/dist/subscriberbot/pages/customer/CartDetailPage.js.map +1 -1
  58. package/dist/subscriberbot/pages/customer/CartDiscoveryPage.js +25 -23
  59. package/dist/subscriberbot/pages/customer/CartDiscoveryPage.js.map +1 -1
  60. package/dist/subscriberbot/pages/customer/CheckoutPage.js +26 -26
  61. package/dist/subscriberbot/pages/customer/CheckoutPage.js.map +1 -1
  62. package/dist/subscriberbot/pages/customer/CustomerDashboard.js +39 -38
  63. package/dist/subscriberbot/pages/customer/CustomerDashboard.js.map +1 -1
  64. package/dist/subscriberbot/pages/customer/CustomerProfilePage.js +36 -36
  65. package/dist/subscriberbot/pages/customer/CustomerProfilePage.js.map +1 -1
  66. package/dist/subscriberbot/pages/customer/DirectServiceBookingPage.js +37 -36
  67. package/dist/subscriberbot/pages/customer/DirectServiceBookingPage.js.map +1 -1
  68. package/dist/subscriberbot/pages/customer/FavoritesPage.js +16 -15
  69. package/dist/subscriberbot/pages/customer/FavoritesPage.js.map +1 -1
  70. package/dist/subscriberbot/pages/customer/OrderHistoryPage.js +19 -17
  71. package/dist/subscriberbot/pages/customer/OrderHistoryPage.js.map +1 -1
  72. package/dist/subscriberbot/pages/customer/OrderTrackingPage.js +21 -20
  73. package/dist/subscriberbot/pages/customer/OrderTrackingPage.js.map +1 -1
  74. package/dist/subscriberbot/pages/customer/PaymentMethodsPage.js +22 -21
  75. package/dist/subscriberbot/pages/customer/PaymentMethodsPage.js.map +1 -1
  76. package/dist/subscriberbot/pages/customer/ReviewsPage.js +29 -28
  77. package/dist/subscriberbot/pages/customer/ReviewsPage.js.map +1 -1
  78. package/dist/subscriberbot/pages/customer/SavedAddressesPage.js +26 -25
  79. package/dist/subscriberbot/pages/customer/SavedAddressesPage.js.map +1 -1
  80. package/dist/subscriberbot/pages/investor/InvestmentDetailsPage.js +46 -46
  81. package/dist/subscriberbot/pages/investor/InvestmentDetailsPage.js.map +1 -1
  82. package/dist/subscriberbot/pages/investor/InvestmentOpportunitiesPage.js +34 -32
  83. package/dist/subscriberbot/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  84. package/dist/subscriberbot/pages/investor/InvestorAnalyticsPage.js +38 -38
  85. package/dist/subscriberbot/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  86. package/dist/subscriberbot/pages/investor/InvestorDashboard.js +26 -25
  87. package/dist/subscriberbot/pages/investor/InvestorDashboard.js.map +1 -1
  88. package/dist/subscriberbot/pages/investor/InvestorInvestmentsPage.js +12 -11
  89. package/dist/subscriberbot/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  90. package/dist/subscriberbot/pages/investor/InvestorPortfolioPage.js +25 -25
  91. package/dist/subscriberbot/pages/investor/InvestorPortfolioPage.js.map +1 -1
  92. package/dist/subscriberbot/pages/investor/InvestorProfilePage.js +58 -58
  93. package/dist/subscriberbot/pages/investor/InvestorProfilePage.js.map +1 -1
  94. package/dist/subscriberbot/pages/worker/TaskDetailsPage.js +26 -25
  95. package/dist/subscriberbot/pages/worker/TaskDetailsPage.js.map +1 -1
  96. package/dist/subscriberbot/pages/worker/WorkerDashboard.js +48 -47
  97. package/dist/subscriberbot/pages/worker/WorkerDashboard.js.map +1 -1
  98. package/dist/subscriberbot/pages/worker/WorkerOrdersPage.js +41 -40
  99. package/dist/subscriberbot/pages/worker/WorkerOrdersPage.js.map +1 -1
  100. package/dist/subscriberbot/pages/worker/WorkerProfilePage.js +44 -44
  101. package/dist/subscriberbot/pages/worker/WorkerProfilePage.js.map +1 -1
  102. package/dist/subscriberbot/pages/worker/WorkerSchedulePage.js +32 -30
  103. package/dist/subscriberbot/pages/worker/WorkerSchedulePage.js.map +1 -1
  104. package/package.json +3 -3
@@ -80,17 +80,17 @@ var T = {
80
80
  function E(e) {
81
81
  switch (e) {
82
82
  case "verified": return {
83
- color: "text-green-600 dark:text-green-400",
83
+ color: "text-status-success-text",
84
84
  Icon: f,
85
85
  label: "Verified"
86
86
  };
87
87
  case "pending": return {
88
- color: "text-yellow-600 dark:text-yellow-400",
88
+ color: "text-status-warning-text",
89
89
  Icon: p,
90
90
  label: "Pending"
91
91
  };
92
92
  case "rejected": return {
93
- color: "text-red-600 dark:text-red-400",
93
+ color: "text-status-error-text",
94
94
  Icon: c,
95
95
  label: "Rejected"
96
96
  };
@@ -149,7 +149,7 @@ function D() {
149
149
  title: "Investment Not Found",
150
150
  children: /* @__PURE__ */ w("div", {
151
151
  className: "flex flex-col items-center justify-center py-12",
152
- children: [/* @__PURE__ */ C(c, { className: "mb-4 h-12 w-12 text-red-500" }), /* @__PURE__ */ C("p", {
152
+ children: [/* @__PURE__ */ C(c, { className: "mb-4 h-12 w-12 text-status-error-text" }), /* @__PURE__ */ C("p", {
153
153
  className: "text-text-primary",
154
154
  children: "Investment not found"
155
155
  })]
@@ -165,7 +165,7 @@ function D() {
165
165
  /* @__PURE__ */ w("button", {
166
166
  type: "button",
167
167
  onClick: () => f("/investor/portfolio"),
168
- 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",
168
+ className: "flex items-center gap-1.5 rounded-lg border border-border-seam px-3 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
169
169
  children: [
170
170
  /* @__PURE__ */ C(l, { className: "h-4 w-4" }),
171
171
  /* @__PURE__ */ C("span", {
@@ -181,7 +181,7 @@ function D() {
181
181
  /* @__PURE__ */ w("button", {
182
182
  type: "button",
183
183
  onClick: () => alert("Report export initiated"),
184
- 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",
184
+ className: "flex items-center gap-1.5 rounded-lg border border-border-seam px-3 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
185
185
  children: [
186
186
  /* @__PURE__ */ C(m, { className: "h-4 w-4" }),
187
187
  /* @__PURE__ */ C("span", {
@@ -213,7 +213,7 @@ function D() {
213
213
  className: "grid grid-cols-2 gap-4 lg:grid-cols-4",
214
214
  children: [
215
215
  /* @__PURE__ */ w("div", {
216
- className: "rounded-lg border border-border-subtle bg-bg-surface p-4 text-center",
216
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4 text-center",
217
217
  children: [
218
218
  /* @__PURE__ */ C(g, { className: "mx-auto mb-2 h-6 w-6 text-primary sm:h-8 sm:w-8" }),
219
219
  /* @__PURE__ */ C("div", {
@@ -227,11 +227,11 @@ function D() {
227
227
  ]
228
228
  }),
229
229
  /* @__PURE__ */ w("div", {
230
- className: "rounded-lg border border-border-subtle bg-bg-surface p-4 text-center",
230
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4 text-center",
231
231
  children: [
232
- /* @__PURE__ */ C(b, { className: "mx-auto mb-2 h-6 w-6 text-green-600 sm:h-8 sm:w-8" }),
232
+ /* @__PURE__ */ C(b, { className: "mx-auto mb-2 h-6 w-6 text-status-success-text sm:h-8 sm:w-8" }),
233
233
  /* @__PURE__ */ w("div", {
234
- className: "text-lg font-bold text-green-600 dark:text-green-400 sm:text-2xl",
234
+ className: "text-lg font-bold text-status-success-text sm:text-2xl",
235
235
  children: [
236
236
  I > 0 ? "+" : "",
237
237
  I.toFixed(1),
@@ -245,9 +245,9 @@ function D() {
245
245
  ]
246
246
  }),
247
247
  /* @__PURE__ */ w("div", {
248
- className: "rounded-lg border border-border-subtle bg-bg-surface p-4 text-center",
248
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4 text-center",
249
249
  children: [
250
- /* @__PURE__ */ C(v, { className: "mx-auto mb-2 h-6 w-6 text-blue-600 sm:h-8 sm:w-8" }),
250
+ /* @__PURE__ */ C(v, { className: "mx-auto mb-2 h-6 w-6 text-status-info-text sm:h-8 sm:w-8" }),
251
251
  /* @__PURE__ */ w("div", {
252
252
  className: "text-lg font-bold text-text-primary sm:text-2xl",
253
253
  children: [M.equityPercentage, "%"]
@@ -259,9 +259,9 @@ function D() {
259
259
  ]
260
260
  }),
261
261
  /* @__PURE__ */ w("div", {
262
- className: "rounded-lg border border-border-subtle bg-bg-surface p-4 text-center",
262
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4 text-center",
263
263
  children: [
264
- /* @__PURE__ */ C(d, { className: "mx-auto mb-2 h-6 w-6 text-purple-600 sm:h-8 sm:w-8" }),
264
+ /* @__PURE__ */ C(d, { className: "mx-auto mb-2 h-6 w-6 text-accent-purple sm:h-8 sm:w-8" }),
265
265
  /* @__PURE__ */ C("div", {
266
266
  className: "text-lg font-bold text-text-primary sm:text-2xl",
267
267
  children: r(M.currentValuation * (M.equityPercentage / 100), { minimumFractionDigits: 0 })
@@ -301,7 +301,7 @@ function D() {
301
301
  children: [/* @__PURE__ */ w("div", {
302
302
  className: "space-y-6 lg:col-span-2",
303
303
  children: [/* @__PURE__ */ w("div", {
304
- className: "rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6",
304
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4 sm:p-6",
305
305
  children: [/* @__PURE__ */ C("h2", {
306
306
  className: "mb-4 text-lg font-semibold text-text-primary sm:mb-6",
307
307
  children: "Business Information"
@@ -342,7 +342,7 @@ function D() {
342
342
  ]
343
343
  })]
344
344
  }), /* @__PURE__ */ w("div", {
345
- className: "rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6",
345
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4 sm:p-6",
346
346
  children: [
347
347
  /* @__PURE__ */ C("h2", {
348
348
  className: "mb-4 text-lg font-semibold text-text-primary sm:mb-6",
@@ -363,7 +363,7 @@ function D() {
363
363
  })
364
364
  ] }),
365
365
  /* @__PURE__ */ w("div", { children: [
366
- /* @__PURE__ */ C(g, { className: "mx-auto mb-2 h-6 w-6 text-green-600 sm:h-8 sm:w-8" }),
366
+ /* @__PURE__ */ C(g, { className: "mx-auto mb-2 h-6 w-6 text-status-success-text sm:h-8 sm:w-8" }),
367
367
  /* @__PURE__ */ C("div", {
368
368
  className: "text-xl font-bold text-text-primary sm:text-2xl",
369
369
  children: r(M.monthlyRevenue, { minimumFractionDigits: 0 })
@@ -374,7 +374,7 @@ function D() {
374
374
  })
375
375
  ] }),
376
376
  /* @__PURE__ */ w("div", { children: [
377
- /* @__PURE__ */ C(x, { className: "mx-auto mb-2 h-6 w-6 text-blue-600 sm:h-8 sm:w-8" }),
377
+ /* @__PURE__ */ C(x, { className: "mx-auto mb-2 h-6 w-6 text-status-info-text sm:h-8 sm:w-8" }),
378
378
  /* @__PURE__ */ C("div", {
379
379
  className: "text-xl font-bold text-text-primary sm:text-2xl",
380
380
  children: M.activeCustomers
@@ -387,13 +387,13 @@ function D() {
387
387
  ]
388
388
  }),
389
389
  /* @__PURE__ */ w("div", {
390
- 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",
390
+ className: "mt-4 flex flex-col items-start justify-between gap-4 border-t border-border-seam pt-4 sm:mt-6 sm:flex-row sm:items-center sm:pt-6",
391
391
  children: [/* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
392
392
  className: "text-sm text-text-secondary",
393
393
  children: "Customer Rating"
394
394
  }), /* @__PURE__ */ w("div", {
395
395
  className: "mt-1 flex items-center gap-1",
396
- children: [Array.from({ length: 5 }, (e, n) => /* @__PURE__ */ C(y, { className: t("h-4 w-4", n < Math.floor(M.customerRating) ? "fill-yellow-400 text-yellow-400" : "fill-none text-text-secondary/40") }, n)), /* @__PURE__ */ C("span", {
396
+ children: [Array.from({ length: 5 }, (e, n) => /* @__PURE__ */ C(y, { className: t("h-4 w-4", n < Math.floor(M.customerRating) ? "fill-status-warning-text text-status-warning-text" : "fill-none text-text-secondary/40") }, n)), /* @__PURE__ */ C("span", {
397
397
  className: "ml-1 text-sm font-medium text-text-primary",
398
398
  children: M.customerRating
399
399
  })]
@@ -413,7 +413,7 @@ function D() {
413
413
  }), /* @__PURE__ */ w("div", {
414
414
  className: "space-y-6",
415
415
  children: [/* @__PURE__ */ w("div", {
416
- className: "rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6",
416
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4 sm:p-6",
417
417
  children: [/* @__PURE__ */ C("h2", {
418
418
  className: "mb-4 text-lg font-semibold text-text-primary sm:mb-6",
419
419
  children: "Investment Summary"
@@ -452,14 +452,14 @@ function D() {
452
452
  children: r(M.currentValuation, { minimumFractionDigits: 0 })
453
453
  })] }),
454
454
  /* @__PURE__ */ C("div", {
455
- className: "border-t border-border-subtle pt-4",
455
+ className: "border-t border-border-seam pt-4",
456
456
  children: /* @__PURE__ */ w("div", {
457
457
  className: "flex items-center justify-between",
458
458
  children: [/* @__PURE__ */ C("span", {
459
459
  className: "text-sm text-text-secondary",
460
460
  children: "Your Returns"
461
461
  }), /* @__PURE__ */ w("span", {
462
- className: t("text-lg font-semibold", F > 0 ? "text-green-600 dark:text-green-400" : "text-red-600 dark:text-red-400"),
462
+ className: t("text-lg font-semibold", F > 0 ? "text-status-success-text" : "text-status-error-text"),
463
463
  children: [F > 0 ? "+" : "", r(F, { minimumFractionDigits: 0 })]
464
464
  })]
465
465
  })
@@ -467,7 +467,7 @@ function D() {
467
467
  ]
468
468
  })]
469
469
  }), /* @__PURE__ */ w("div", {
470
- className: "rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6",
470
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4 sm:p-6",
471
471
  children: [/* @__PURE__ */ C("h2", {
472
472
  className: "mb-4 text-lg font-semibold text-text-primary sm:mb-6",
473
473
  children: "Growth Indicators"
@@ -480,7 +480,7 @@ function D() {
480
480
  className: "text-sm text-text-secondary",
481
481
  children: "Revenue Growth"
482
482
  }), /* @__PURE__ */ w("span", {
483
- className: "text-sm font-medium text-green-600 dark:text-green-400",
483
+ className: "text-sm font-medium text-status-success-text",
484
484
  children: [
485
485
  "+",
486
486
  M.revenueGrowth,
@@ -490,7 +490,7 @@ function D() {
490
490
  }), /* @__PURE__ */ C("div", {
491
491
  className: "h-2 w-full overflow-hidden rounded-full bg-bg-sunken",
492
492
  children: /* @__PURE__ */ C("div", {
493
- className: "h-full rounded-full bg-green-600",
493
+ className: "h-full rounded-full bg-status-success-text",
494
494
  style: { width: `${Math.min(M.revenueGrowth, 100)}%` }
495
495
  })
496
496
  })] }),
@@ -506,7 +506,7 @@ function D() {
506
506
  }), /* @__PURE__ */ C("div", {
507
507
  className: "h-2 w-full overflow-hidden rounded-full bg-bg-sunken",
508
508
  children: /* @__PURE__ */ C("div", {
509
- className: "h-full rounded-full bg-blue-600",
509
+ className: "h-full rounded-full bg-status-info-text",
510
510
  style: { width: `${M.profitMargin}%` }
511
511
  })
512
512
  })] }),
@@ -516,7 +516,7 @@ function D() {
516
516
  className: "text-sm text-text-secondary",
517
517
  children: "ROI"
518
518
  }), /* @__PURE__ */ w("span", {
519
- className: "text-sm font-medium text-green-600 dark:text-green-400",
519
+ className: "text-sm font-medium text-status-success-text",
520
520
  children: [
521
521
  "+",
522
522
  M.returnOnInvestment,
@@ -526,7 +526,7 @@ function D() {
526
526
  }), /* @__PURE__ */ C("div", {
527
527
  className: "h-2 w-full overflow-hidden rounded-full bg-bg-sunken",
528
528
  children: /* @__PURE__ */ C("div", {
529
- className: "h-full rounded-full bg-green-500",
529
+ className: "h-full rounded-full bg-status-success-text",
530
530
  style: { width: `${Math.min(M.returnOnInvestment, 100)}%` }
531
531
  })
532
532
  })] }),
@@ -543,7 +543,7 @@ function D() {
543
543
  })]
544
544
  }),
545
545
  p === "financials" && /* @__PURE__ */ w("div", {
546
- className: "rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6",
546
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4 sm:p-6",
547
547
  children: [
548
548
  /* @__PURE__ */ C("h2", {
549
549
  className: "mb-4 text-lg font-semibold text-text-primary sm:mb-6",
@@ -568,7 +568,7 @@ function D() {
568
568
  className: "text-xs text-text-secondary",
569
569
  children: "Revenue Growth"
570
570
  }), /* @__PURE__ */ w("p", {
571
- className: "mt-1 text-lg font-bold text-green-600 dark:text-green-400",
571
+ className: "mt-1 text-lg font-bold text-status-success-text",
572
572
  children: [
573
573
  "+",
574
574
  M.revenueGrowth,
@@ -599,7 +599,7 @@ function D() {
599
599
  ]
600
600
  }),
601
601
  /* @__PURE__ */ C("div", {
602
- className: "overflow-hidden rounded-lg border border-border-subtle",
602
+ className: "overflow-hidden rounded-lg border border-border-seam",
603
603
  children: /* @__PURE__ */ w("table", {
604
604
  className: "w-full",
605
605
  children: [/* @__PURE__ */ C("thead", { children: /* @__PURE__ */ w("tr", {
@@ -663,7 +663,7 @@ function D() {
663
663
  children: e.value
664
664
  }),
665
665
  /* @__PURE__ */ C("td", {
666
- className: "px-4 py-3 text-right text-sm font-medium text-green-600 dark:text-green-400",
666
+ className: "px-4 py-3 text-right text-sm font-medium text-status-success-text",
667
667
  children: e.trend
668
668
  })
669
669
  ]
@@ -674,7 +674,7 @@ function D() {
674
674
  ]
675
675
  }),
676
676
  p === "documents" && /* @__PURE__ */ w("div", {
677
- className: "rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6",
677
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4 sm:p-6",
678
678
  children: [/* @__PURE__ */ C("h2", {
679
679
  className: "mb-4 text-lg font-semibold text-text-primary sm:mb-6",
680
680
  children: "Investment Documents"
@@ -721,7 +721,7 @@ function D() {
721
721
  }), /* @__PURE__ */ w("button", {
722
722
  type: "button",
723
723
  onClick: () => alert(`Downloading ${e.name}`),
724
- 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",
724
+ className: "flex items-center gap-1 rounded-lg border border-border-seam px-3 py-1.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
725
725
  children: [/* @__PURE__ */ C(m, { className: "h-3 w-3 sm:h-4 sm:w-4" }), /* @__PURE__ */ C("span", {
726
726
  className: "hidden sm:inline",
727
727
  children: "Download"
@@ -733,7 +733,7 @@ function D() {
733
733
  })]
734
734
  }),
735
735
  p === "updates" && /* @__PURE__ */ w("div", {
736
- className: "rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6",
736
+ className: "rounded-lg border border-border-seam bg-bg-surface p-4 sm:p-6",
737
737
  children: [/* @__PURE__ */ C("h2", {
738
738
  className: "mb-4 text-lg font-semibold text-text-primary sm:mb-6",
739
739
  children: "Recent Updates"
@@ -769,12 +769,12 @@ function D() {
769
769
  ]
770
770
  }),
771
771
  A && /* @__PURE__ */ C("div", {
772
- className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
772
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-bg-canvas/50 p-4",
773
773
  children: /* @__PURE__ */ w("div", {
774
- className: "relative max-h-[90vh] w-full max-w-md overflow-y-auto rounded-lg border border-border-subtle bg-bg-surface",
774
+ className: "relative max-h-[90vh] w-full max-w-md overflow-y-auto rounded-lg border border-border-seam bg-bg-surface",
775
775
  children: [
776
776
  /* @__PURE__ */ w("div", {
777
- className: "border-b border-border-subtle p-4 sm:p-6",
777
+ className: "border-b border-border-seam p-4 sm:p-6",
778
778
  children: [/* @__PURE__ */ C("button", {
779
779
  type: "button",
780
780
  onClick: () => j(!1),
@@ -802,38 +802,38 @@ function D() {
802
802
  /* @__PURE__ */ C("button", {
803
803
  type: "button",
804
804
  onClick: () => alert("Partial withdrawal request submitted"),
805
- 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",
805
+ className: "w-full rounded-lg border border-border-seam px-4 py-2.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
806
806
  children: "Request Partial Withdrawal"
807
807
  }),
808
808
  /* @__PURE__ */ C("button", {
809
809
  type: "button",
810
810
  onClick: () => alert("Transfer ownership feature coming soon"),
811
- 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",
811
+ className: "w-full rounded-lg border border-border-seam px-4 py-2.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
812
812
  children: "Transfer Ownership"
813
813
  }),
814
814
  /* @__PURE__ */ C("button", {
815
815
  type: "button",
816
816
  onClick: () => alert("Exit options will be displayed"),
817
- 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",
817
+ className: "w-full rounded-lg border border-border-seam px-4 py-2.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
818
818
  children: "View Exit Options"
819
819
  })
820
820
  ]
821
821
  }),
822
822
  /* @__PURE__ */ C("div", {
823
- className: "rounded-lg border border-yellow-500/30 bg-yellow-500/10 p-3 sm:p-4",
823
+ className: "rounded-lg border border-status-warning-border/30 bg-status-warning-bg/10 p-3 sm:p-4",
824
824
  children: /* @__PURE__ */ C("p", {
825
- className: "text-xs text-yellow-800 dark:text-yellow-200 sm:text-sm",
825
+ className: "text-xs text-status-warning-text sm:text-sm",
826
826
  children: "Any changes to your investment require approval from the business owner and may be subject to terms in your investment agreement."
827
827
  })
828
828
  })
829
829
  ]
830
830
  }),
831
831
  /* @__PURE__ */ C("div", {
832
- className: "flex justify-end gap-3 border-t border-border-subtle p-4 sm:p-6",
832
+ className: "flex justify-end gap-3 border-t border-border-seam p-4 sm:p-6",
833
833
  children: /* @__PURE__ */ C("button", {
834
834
  type: "button",
835
835
  onClick: () => j(!1),
836
- className: "rounded-lg border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
836
+ className: "rounded-lg border border-border-seam px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
837
837
  children: "Cancel"
838
838
  })
839
839
  })
@@ -1 +1 @@
1
- {"version":3,"file":"InvestmentDetailsPage.js","names":[],"sources":["../../../../src/subscriberbot/pages/investor/InvestmentDetailsPage.tsx"],"sourcesContent":["/**\n * Investment Details Page\n * @module subscriberbot/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 { PageLayout } from '../../components/PageLayout';\nimport { StatusBadge } from '../../components/StatusBadge';\nimport { useSubscriberBot } from '../../context/SubscriberBotContext';\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 } = useSubscriberBot();\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 {/* Investment Summary Cards */}\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\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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"}
1
+ {"version":3,"file":"InvestmentDetailsPage.js","names":[],"sources":["../../../../src/subscriberbot/pages/investor/InvestmentDetailsPage.tsx"],"sourcesContent":["/**\n * Investment Details Page\n * @module subscriberbot/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 { PageLayout } from '../../components/PageLayout';\nimport { StatusBadge } from '../../components/StatusBadge';\nimport { useSubscriberBot } from '../../context/SubscriberBotContext';\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-status-success-text',\n Icon: CheckCircle2,\n label: 'Verified',\n };\n case 'pending':\n return {\n color: 'text-status-warning-text',\n Icon: Clock,\n label: 'Pending',\n };\n case 'rejected':\n return {\n color: 'text-status-error-text',\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 } = useSubscriberBot();\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-status-error-text\" />\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-seam 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-seam 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 {/* Investment Summary Cards */}\n <div className=\"grid grid-cols-2 gap-4 lg:grid-cols-4\">\n <div className=\"rounded-lg border border-border-seam 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-seam bg-bg-surface p-4 text-center\">\n <TrendingUp className=\"mx-auto mb-2 h-6 w-6 text-status-success-text sm:h-8 sm:w-8\" />\n <div className=\"text-lg font-bold text-status-success-text 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-seam bg-bg-surface p-4 text-center\">\n <PieChart className=\"mx-auto mb-2 h-6 w-6 text-status-info-text 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-seam bg-bg-surface p-4 text-center\">\n <Building2 className=\"mx-auto mb-2 h-6 w-6 text-accent-purple 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\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-seam 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-seam 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-status-success-text 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-status-info-text 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-seam 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-status-warning-text text-status-warning-text'\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-seam 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-seam 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 ? 'text-status-success-text' : 'text-status-error-text'\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-seam 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-status-success-text\">\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-status-success-text\"\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-status-info-text\"\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-status-success-text\">\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-status-success-text\"\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-seam 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-status-success-text\">\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\">\n {investment.profitMargin}%\n </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-seam\">\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\">\n {row.value}\n </td>\n <td className=\"px-4 py-3 text-right text-sm font-medium text-status-success-text\">\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-seam 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-seam 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-seam 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-bg-canvas/50 p-4\">\n <div className=\"relative max-h-[90vh] w-full max-w-md overflow-y-auto rounded-lg border border-border-seam bg-bg-surface\">\n <div className=\"border-b border-border-seam 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-seam 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-seam 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-seam 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-status-warning-border/30 bg-status-warning-bg/10 p-3 sm:p-4\">\n <p className=\"text-xs text-status-warning-text 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-seam p-4 sm:p-6\">\n <button\n type=\"button\"\n onClick={() => setShowManageModal(false)}\n className=\"rounded-lg border border-border-seam 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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"}