@burdenoff/microfe-kadaikodi 2026.704.1 → 2026.704.2

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 (76) hide show
  1. package/dist/kadaikodi/hooks/useKadaikodiApi.js +77 -26
  2. package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
  3. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +341 -461
  4. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
  5. package/dist/kadaikodi/pages/admin/AdminDashboard.js +115 -399
  6. package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
  7. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +140 -283
  8. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
  9. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +282 -453
  10. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
  11. package/dist/kadaikodi/pages/admin/AdminProfilePage.js +115 -242
  12. package/dist/kadaikodi/pages/admin/AdminProfilePage.js.map +1 -1
  13. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js +2 -2
  14. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js.map +1 -1
  15. package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
  16. package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
  17. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +503 -627
  18. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  19. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js +339 -282
  20. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
  21. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +323 -422
  22. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  23. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js +374 -383
  24. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  25. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js +249 -208
  26. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
  27. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +1 -1
  28. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  29. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +1 -1
  30. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
  31. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +171 -627
  32. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
  33. package/dist/kadaikodi/pages/common/HelpSupportPage.js +331 -415
  34. package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
  35. package/dist/kadaikodi/pages/common/NotificationCenterPage.js +18 -670
  36. package/dist/kadaikodi/pages/common/NotificationCenterPage.js.map +1 -1
  37. package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
  38. package/dist/kadaikodi/pages/customer/CheckoutPage.js +4 -2
  39. package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
  40. package/dist/kadaikodi/pages/customer/CustomerDashboard.js +191 -369
  41. package/dist/kadaikodi/pages/customer/CustomerDashboard.js.map +1 -1
  42. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js +233 -389
  43. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js.map +1 -1
  44. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
  45. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
  46. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
  47. package/dist/kadaikodi/pages/customer/PaymentMethodsPage.js +76 -118
  48. package/dist/kadaikodi/pages/customer/PaymentMethodsPage.js.map +1 -1
  49. package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
  50. package/dist/kadaikodi/pages/customer/SavedAddressesPage.js +135 -213
  51. package/dist/kadaikodi/pages/customer/SavedAddressesPage.js.map +1 -1
  52. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js +272 -774
  53. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
  54. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +232 -343
  55. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  56. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js +112 -600
  57. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  58. package/dist/kadaikodi/pages/investor/InvestorDashboard.js +127 -294
  59. package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
  60. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +204 -290
  61. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  62. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js +159 -500
  63. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js.map +1 -1
  64. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js +399 -487
  65. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
  66. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +13 -13
  67. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
  68. package/dist/kadaikodi/pages/worker/WorkerDashboard.js +192 -296
  69. package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
  70. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +245 -397
  71. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
  72. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +85 -117
  73. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
  74. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +177 -395
  75. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
  76. package/package.json +1 -1
@@ -2,682 +2,194 @@ import { useKadaikodi as e } from "../../context/KadaikodiContext.js";
2
2
  import { cn as t } from "../../utils/cn.js";
3
3
  import { PageLayout as n } from "../../components/PageLayout.js";
4
4
  import { MetricsCard as r } from "../../components/MetricsCard.js";
5
- import { formatCurrency as i } from "../../utils/formatters.js";
6
- import { useCallback as a, useEffect as o, useState as s } from "react";
7
- import { Activity as c, ArrowDown as l, ArrowUp as u, BarChart3 as d, Calendar as f, Download as p, Lightbulb as m, PieChart as h, Shield as g, Target as _, TrendingUp as v, Wallet as y } from "lucide-react";
8
- import { jsx as b, jsxs as x } from "react/jsx-runtime";
9
- import { EmphasisPanel as S, PagePurpose as C } from "@burdenoff/fe-libs/ui";
5
+ import { EmptyState as i } from "../../components/EmptyState.js";
6
+ import { useInvestments as a } from "../../hooks/useKadaikodiApi.js";
7
+ import { formatCurrency as o } from "../../utils/formatters.js";
8
+ import { useMemo as s } from "react";
9
+ import { ArrowDown as c, ArrowUp as l, BarChart3 as u, IndianRupee as d, PieChart as f, Target as p, TrendingUp as m, Wallet as h } from "lucide-react";
10
+ import { jsx as g, jsxs as _ } from "react/jsx-runtime";
11
+ import { EmphasisPanel as v, PagePurpose as y } from "@burdenoff/fe-libs/ui";
10
12
  //#region src/kadaikodi/pages/investor/InvestorAnalyticsPage.tsx
11
- var w = {
12
- portfolioMetrics: {
13
- totalValue: 283700,
14
- totalInvested: 255e3,
15
- totalReturns: 28700,
16
- averageRoi: 19.6,
17
- portfolioGrowth: 11.3,
18
- bestPerforming: "Biryani House",
19
- worstPerforming: "Healthy Bites"
20
- },
21
- performanceByCart: [
22
- {
23
- cartName: "Biryani House",
24
- investedAmount: 6e4,
25
- currentValue: 72e3,
26
- returns: 12e3,
27
- roi: 20
28
- },
29
- {
30
- cartName: "South Indian Express",
31
- investedAmount: 5e4,
32
- currentValue: 58500,
33
- returns: 8500,
34
- roi: 17
35
- },
36
- {
37
- cartName: "Pizza Corner",
38
- investedAmount: 75e3,
39
- currentValue: 82e3,
40
- returns: 7e3,
41
- roi: 9.3
42
- },
43
- {
44
- cartName: "Healthy Bites",
45
- investedAmount: 3e4,
46
- currentValue: 31200,
47
- returns: 1200,
48
- roi: 4
49
- },
50
- {
51
- cartName: "Street Food Junction",
52
- investedAmount: 4e4,
53
- currentValue: 4e4,
54
- returns: 0,
55
- roi: 0
56
- }
57
- ],
58
- performanceByCategory: [
59
- {
60
- category: "South Indian",
61
- investedAmount: 11e4,
62
- returns: 20500,
63
- percentage: 43.1
64
- },
65
- {
66
- category: "Fast Food",
67
- investedAmount: 75e3,
68
- returns: 7e3,
69
- percentage: 29.4
70
- },
71
- {
72
- category: "Street Food",
73
- investedAmount: 4e4,
74
- returns: 0,
75
- percentage: 15.7
76
- },
77
- {
78
- category: "Healthy Food",
79
- investedAmount: 3e4,
80
- returns: 1200,
81
- percentage: 11.8
82
- }
83
- ],
84
- monthlyPerformance: [
85
- {
86
- month: "Jun 2024",
87
- invested: 195e3,
88
- value: 202e3,
89
- returns: 7e3
90
- },
91
- {
92
- month: "Jul 2024",
93
- invested: 215e3,
94
- value: 228e3,
95
- returns: 13e3
96
- },
97
- {
98
- month: "Aug 2024",
99
- invested: 255e3,
100
- value: 265e3,
101
- returns: 1e4
102
- },
103
- {
104
- month: "Sep 2024",
105
- invested: 255e3,
106
- value: 275e3,
107
- returns: 2e4
108
- },
109
- {
110
- month: "Oct 2024",
111
- invested: 255e3,
112
- value: 28e4,
113
- returns: 25e3
114
- },
115
- {
116
- month: "Nov 2024",
117
- invested: 255e3,
118
- value: 283700,
119
- returns: 28700
120
- }
121
- ],
122
- riskAnalysis: {
123
- riskScore: 3.2,
124
- diversificationScore: 7.8,
125
- volatilityScore: 2.5,
126
- recommendations: [
127
- "Consider diversifying into more food categories",
128
- "Your portfolio shows good risk distribution",
129
- "Consider investing in carts from different locations",
130
- "Monitor underperforming investments closely",
131
- "Explore premium segment opportunities for higher returns"
132
- ]
133
- }
134
- };
135
- function T(e) {
136
- return e <= 2 ? {
137
- label: "Low Risk",
138
- color: "text-status-success-text"
139
- } : e <= 4 ? {
140
- label: "Moderate Risk",
141
- color: "text-status-warning-text"
142
- } : {
143
- label: "High Risk",
144
- color: "text-status-error-text"
145
- };
146
- }
147
- function E(e) {
148
- return e <= 2 ? "bg-status-success-text" : e <= 4 ? "bg-status-warning-text" : "bg-status-error-text";
149
- }
150
- function D(e) {
151
- return e >= 8 ? {
152
- label: "Well Diversified",
153
- color: "text-status-success-text"
154
- } : e >= 6 ? {
155
- label: "Moderately Diversified",
156
- color: "text-status-warning-text"
157
- } : {
158
- label: "Poorly Diversified",
159
- color: "text-status-error-text"
160
- };
161
- }
162
- function O(e) {
163
- return e >= 8 ? "bg-status-success-text" : e >= 6 ? "bg-status-warning-text" : "bg-status-error-text";
164
- }
165
- function k() {
166
- let { navigateTo: k } = e(), [A, j] = s(!0), [M, N] = s("6m"), [P, F] = s(null), [I, L] = s("idle");
167
- o(() => {
168
- j(!0);
169
- let e = setTimeout(() => {
170
- F(w), j(!1);
171
- }, 600);
172
- return () => clearTimeout(e);
173
- }, [M]);
174
- let R = a(() => {
175
- L("exporting"), setTimeout(() => {
176
- L("done"), setTimeout(() => L("idle"), 2e3);
177
- }, 1200);
178
- }, []);
179
- if (A || !P) return /* @__PURE__ */ b(n, {
13
+ function b() {
14
+ let { navigateTo: b, currentUser: x } = e(), { data: S = [], isLoading: C } = a(x?.id || ""), w = s(() => {
15
+ let e = S.reduce((e, t) => e + t.investedAmount, 0), t = S.reduce((e, t) => e + t.currentValue, 0), n = t - e, r = e > 0 ? n / e * 100 : 0, i = S.map((e) => {
16
+ let t = e.currentValue - e.investedAmount, n = e.investedAmount > 0 ? t / e.investedAmount * 100 : 0;
17
+ return {
18
+ id: e.id,
19
+ cartName: e.cartName,
20
+ investedAmount: e.investedAmount,
21
+ currentValue: e.currentValue,
22
+ returns: t,
23
+ roi: n
24
+ };
25
+ }), a = i.length ? i.reduce((e, t) => e + t.roi, 0) / i.length : 0, o = [...i].sort((e, t) => t.roi - e.roi);
26
+ return {
27
+ totalInvested: e,
28
+ totalValue: t,
29
+ totalReturns: n,
30
+ portfolioGrowth: r,
31
+ averageRoi: a,
32
+ performanceByCart: o,
33
+ bestPerforming: o[0]?.cartName ?? "",
34
+ worstPerforming: o[o.length - 1]?.cartName ?? ""
35
+ };
36
+ }, [S]);
37
+ return C ? /* @__PURE__ */ g(n, {
180
38
  title: "Investment Analytics",
181
39
  description: "Loading analytics...",
182
- children: /* @__PURE__ */ b("div", {
40
+ children: /* @__PURE__ */ g("div", {
183
41
  className: "flex items-center justify-center py-20",
184
- children: /* @__PURE__ */ x("div", {
42
+ children: /* @__PURE__ */ _("div", {
185
43
  className: "text-center",
186
- children: [/* @__PURE__ */ b("div", { className: "mx-auto mb-4 h-12 w-12 animate-spin rounded-full border-b-2 border-primary" }), /* @__PURE__ */ b("p", {
44
+ children: [/* @__PURE__ */ g("div", { className: "mx-auto mb-4 h-12 w-12 animate-spin rounded-full border-b-2 border-primary" }), /* @__PURE__ */ g("p", {
187
45
  className: "text-sm text-text-secondary",
188
46
  children: "Loading analytics data..."
189
47
  })]
190
48
  })
191
49
  })
192
- });
193
- let z = T(P.riskAnalysis.riskScore), B = D(P.riskAnalysis.diversificationScore), V = [...P.performanceByCart].sort((e, t) => t.roi - e.roi);
194
- return /* @__PURE__ */ x(n, {
50
+ }) : S.length === 0 ? /* @__PURE__ */ g(n, {
195
51
  title: "Investment Analytics",
196
52
  description: "Comprehensive analysis of your portfolio performance",
197
- actions: /* @__PURE__ */ x("div", {
198
- className: "flex items-center gap-3",
199
- children: [/* @__PURE__ */ x("select", {
200
- value: M,
201
- onChange: (e) => N(e.target.value),
202
- className: "rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]",
203
- children: [
204
- /* @__PURE__ */ b("option", {
205
- value: "1m",
206
- children: "Last Month"
207
- }),
208
- /* @__PURE__ */ b("option", {
209
- value: "3m",
210
- children: "Last 3 Months"
211
- }),
212
- /* @__PURE__ */ b("option", {
213
- value: "6m",
214
- children: "Last 6 Months"
215
- }),
216
- /* @__PURE__ */ b("option", {
217
- value: "1y",
218
- children: "Last Year"
219
- }),
220
- /* @__PURE__ */ b("option", {
221
- value: "all",
222
- children: "All Time"
223
- })
224
- ]
225
- }), /* @__PURE__ */ x("button", {
53
+ children: /* @__PURE__ */ g(i, {
54
+ illustration: "empty-data",
55
+ title: "No analytics yet",
56
+ description: "Once you back a cart, your portfolio performance and per-cart analytics will appear here.",
57
+ action: /* @__PURE__ */ g("button", {
226
58
  type: "button",
227
- onClick: R,
228
- disabled: I === "exporting",
229
- className: t("flex items-center gap-2 rounded-lg px-4 py-2 text-sm font-medium transition-colors", I === "exporting" ? "cursor-not-allowed bg-bg-sunken text-text-secondary" : I === "done" ? "bg-status-success-text text-white" : "bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg/90"),
230
- children: [/* @__PURE__ */ b(p, { className: "h-4 w-4" }), I === "exporting" ? "Exporting..." : I === "done" ? "Exported!" : "Export Report"]
231
- })]
232
- }),
59
+ onClick: () => b("/investor/opportunities"),
60
+ 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",
61
+ children: "Browse Opportunities"
62
+ })
63
+ })
64
+ }) : /* @__PURE__ */ _(n, {
65
+ title: "Investment Analytics",
66
+ description: "Comprehensive analysis of your portfolio performance",
233
67
  children: [
234
- /* @__PURE__ */ b(C, {
68
+ /* @__PURE__ */ g(y, {
235
69
  className: "mb-6",
236
- children: "The analytical lens on your whole portfolio. Use this page to judge how well your money is working — overall value and returns, average ROI, and your risk score — then see your best and worst performers and trends over time so you can rebalance, double down, or trim exposure. Change the date range and export a report when you need to share the numbers."
70
+ children: "The analytical lens on your whole portfolio. Use this page to judge how well your money is working — overall value and returns, average ROI — then see your best and worst performers so you can rebalance, double down, or trim exposure."
237
71
  }),
238
- /* @__PURE__ */ x(S, { children: [/* @__PURE__ */ b("h2", {
72
+ /* @__PURE__ */ _(v, { children: [/* @__PURE__ */ g("h2", {
239
73
  className: "mb-4 text-base font-semibold text-text-primary",
240
74
  children: "Portfolio Performance"
241
- }), /* @__PURE__ */ x("div", {
75
+ }), /* @__PURE__ */ _("div", {
242
76
  className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",
243
77
  children: [
244
- /* @__PURE__ */ b(r, {
78
+ /* @__PURE__ */ g(r, {
245
79
  featured: !0,
246
- icon: /* @__PURE__ */ b(y, { className: "h-5 w-5" }),
247
- value: i(P.portfolioMetrics.totalValue, { minimumFractionDigits: 0 }),
80
+ icon: /* @__PURE__ */ g(h, { className: "h-5 w-5" }),
81
+ value: o(w.totalValue, { minimumFractionDigits: 0 }),
248
82
  label: "Portfolio Value",
249
- trend: "up",
250
- trendValue: `+${P.portfolioMetrics.portfolioGrowth}% total growth`
83
+ trend: w.portfolioGrowth >= 0 ? "up" : "down",
84
+ trendValue: `${w.portfolioGrowth >= 0 ? "+" : ""}${w.portfolioGrowth.toFixed(1)}%`
251
85
  }),
252
- /* @__PURE__ */ b(r, {
253
- icon: /* @__PURE__ */ b(v, { className: "h-5 w-5" }),
254
- value: i(P.portfolioMetrics.totalReturns, { minimumFractionDigits: 0 }),
255
- label: "Total Returns",
256
- trend: "up",
257
- trendValue: "Profit earned so far"
86
+ /* @__PURE__ */ g(r, {
87
+ icon: /* @__PURE__ */ g(d, { className: "h-5 w-5" }),
88
+ value: o(w.totalInvested, { minimumFractionDigits: 0 }),
89
+ label: "Total Invested"
258
90
  }),
259
- /* @__PURE__ */ b(r, {
260
- icon: /* @__PURE__ */ b(_, { className: "h-5 w-5" }),
261
- value: `${P.portfolioMetrics.averageRoi}%`,
262
- label: "Average ROI",
263
- trend: "up",
264
- trendValue: "Across all investments"
91
+ /* @__PURE__ */ g(r, {
92
+ icon: /* @__PURE__ */ g(m, { className: "h-5 w-5" }),
93
+ value: o(w.totalReturns, { minimumFractionDigits: 0 }),
94
+ label: "Total Returns",
95
+ trend: w.totalReturns >= 0 ? "up" : "down"
265
96
  }),
266
- /* @__PURE__ */ b(r, {
267
- icon: /* @__PURE__ */ b(c, { className: "h-5 w-5" }),
268
- value: `${P.riskAnalysis.riskScore}/5`,
269
- label: "Risk Score",
270
- trend: "neutral",
271
- trendValue: z.label
97
+ /* @__PURE__ */ g(r, {
98
+ icon: /* @__PURE__ */ g(p, { className: "h-5 w-5" }),
99
+ value: `${w.averageRoi.toFixed(1)}%`,
100
+ label: "Average ROI"
272
101
  })
273
102
  ]
274
103
  })] }),
275
- /* @__PURE__ */ x("div", {
104
+ w.performanceByCart.length > 1 && /* @__PURE__ */ _("div", {
276
105
  className: "mt-4 grid grid-cols-1 gap-4 sm:grid-cols-2",
277
- children: [/* @__PURE__ */ x("div", {
106
+ children: [/* @__PURE__ */ _("div", {
278
107
  className: "flex items-center gap-3 rounded-lg border border-border-subtle bg-bg-surface p-4",
279
- children: [/* @__PURE__ */ b("div", {
108
+ children: [/* @__PURE__ */ g("div", {
280
109
  className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-status-success-bg-subtle",
281
- children: /* @__PURE__ */ b(u, { className: "h-5 w-5 text-status-success-text" })
282
- }), /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
110
+ children: /* @__PURE__ */ g(l, { className: "h-5 w-5 text-status-success-text" })
111
+ }), /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("p", {
283
112
  className: "text-xs text-text-secondary",
284
113
  children: "Best Performing"
285
- }), /* @__PURE__ */ b("p", {
114
+ }), /* @__PURE__ */ g("p", {
286
115
  className: "text-sm font-semibold text-status-success-text",
287
- children: P.portfolioMetrics.bestPerforming
116
+ children: w.bestPerforming
288
117
  })] })]
289
- }), /* @__PURE__ */ x("div", {
118
+ }), /* @__PURE__ */ _("div", {
290
119
  className: "flex items-center gap-3 rounded-lg border border-border-subtle bg-bg-surface p-4",
291
- children: [/* @__PURE__ */ b("div", {
120
+ children: [/* @__PURE__ */ g("div", {
292
121
  className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-status-error-bg-subtle",
293
- children: /* @__PURE__ */ b(l, { className: "h-5 w-5 text-status-error-text" })
294
- }), /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
122
+ children: /* @__PURE__ */ g(c, { className: "h-5 w-5 text-status-error-text" })
123
+ }), /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("p", {
295
124
  className: "text-xs text-text-secondary",
296
125
  children: "Worst Performing"
297
- }), /* @__PURE__ */ b("p", {
126
+ }), /* @__PURE__ */ g("p", {
298
127
  className: "text-sm font-semibold text-text-primary",
299
- children: P.portfolioMetrics.worstPerforming
128
+ children: w.worstPerforming
300
129
  })] })]
301
130
  })]
302
131
  }),
303
- /* @__PURE__ */ x("div", {
304
- className: "mt-6 grid grid-cols-1 gap-6 lg:grid-cols-2",
305
- children: [/* @__PURE__ */ x("section", { children: [/* @__PURE__ */ x("div", {
132
+ /* @__PURE__ */ _("section", {
133
+ className: "mt-6",
134
+ children: [/* @__PURE__ */ _("div", {
306
135
  className: "mb-4 flex items-center gap-2",
307
- children: [/* @__PURE__ */ b(d, { className: "h-5 w-5 text-text-secondary" }), /* @__PURE__ */ b("h2", {
136
+ children: [/* @__PURE__ */ g(u, { className: "h-5 w-5 text-text-secondary" }), /* @__PURE__ */ g("h2", {
308
137
  className: "text-lg font-semibold text-text-primary",
309
138
  children: "Performance by Cart"
310
139
  })]
311
- }), /* @__PURE__ */ b("div", {
140
+ }), /* @__PURE__ */ g("div", {
312
141
  className: "space-y-3",
313
- children: V.map((e, n) => /* @__PURE__ */ x("div", {
142
+ children: w.performanceByCart.map((e, n) => /* @__PURE__ */ _("div", {
314
143
  className: "flex items-center justify-between rounded-lg border border-border-subtle bg-bg-surface p-3",
315
- children: [/* @__PURE__ */ x("div", {
144
+ children: [/* @__PURE__ */ _("div", {
316
145
  className: "flex items-center gap-3",
317
- children: [/* @__PURE__ */ b("div", {
146
+ children: [/* @__PURE__ */ g("div", {
318
147
  className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-action-primary-bg text-xs font-bold text-action-primary-text",
319
148
  children: n + 1
320
- }), /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
149
+ }), /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("p", {
321
150
  className: "text-sm font-medium text-text-primary",
322
151
  children: e.cartName
323
- }), /* @__PURE__ */ x("p", {
152
+ }), /* @__PURE__ */ _("p", {
324
153
  className: "text-xs text-text-secondary",
325
- children: [i(e.investedAmount, { minimumFractionDigits: 0 }), " invested"]
154
+ children: [o(e.investedAmount, { minimumFractionDigits: 0 }), " invested"]
326
155
  })] })]
327
- }), /* @__PURE__ */ x("div", {
156
+ }), /* @__PURE__ */ _("div", {
328
157
  className: "text-right",
329
- children: [/* @__PURE__ */ x("p", {
158
+ children: [/* @__PURE__ */ _("p", {
330
159
  className: t("text-sm font-semibold", e.returns >= 0 ? "text-status-success-text" : "text-status-error-text"),
331
- children: [e.returns >= 0 ? "+" : "", i(e.returns, { minimumFractionDigits: 0 })]
332
- }), /* @__PURE__ */ x("p", {
160
+ children: [e.returns >= 0 ? "+" : "", o(e.returns, { minimumFractionDigits: 0 })]
161
+ }), /* @__PURE__ */ _("p", {
333
162
  className: t("text-xs", e.roi >= 0 ? "text-status-success-text" : "text-status-error-text"),
334
163
  children: [
335
164
  e.roi >= 0 ? "+" : "",
336
- e.roi,
165
+ e.roi.toFixed(1),
337
166
  "% ROI"
338
167
  ]
339
168
  })]
340
169
  })]
341
- }, e.cartName))
342
- })] }), /* @__PURE__ */ x("section", { children: [/* @__PURE__ */ x("div", {
343
- className: "mb-4 flex items-center gap-2",
344
- children: [/* @__PURE__ */ b(h, { className: "h-5 w-5 text-text-secondary" }), /* @__PURE__ */ b("h2", {
345
- className: "text-lg font-semibold text-text-primary",
346
- children: "Category Distribution"
347
- })]
348
- }), /* @__PURE__ */ b("div", {
349
- className: "space-y-4",
350
- children: P.performanceByCategory.map((e) => /* @__PURE__ */ x("div", {
351
- className: "rounded-lg border border-border-subtle bg-bg-surface p-3",
352
- children: [
353
- /* @__PURE__ */ x("div", {
354
- className: "mb-2 flex items-center justify-between",
355
- children: [/* @__PURE__ */ b("span", {
356
- className: "text-sm font-medium text-text-primary",
357
- children: e.category
358
- }), /* @__PURE__ */ x("span", {
359
- className: "text-sm text-text-secondary",
360
- children: [e.percentage, "%"]
361
- })]
362
- }),
363
- /* @__PURE__ */ b("div", {
364
- className: "mb-2 h-2 w-full overflow-hidden rounded-full bg-bg-sunken",
365
- children: /* @__PURE__ */ b("div", {
366
- className: "h-full rounded-full bg-action-primary-bg transition-all duration-300",
367
- style: { width: `${e.percentage}%` }
368
- })
369
- }),
370
- /* @__PURE__ */ x("div", {
371
- className: "flex items-center justify-between",
372
- children: [/* @__PURE__ */ x("span", {
373
- className: "text-xs text-text-secondary",
374
- children: [i(e.investedAmount, { minimumFractionDigits: 0 }), " invested"]
375
- }), /* @__PURE__ */ x("span", {
376
- className: t("text-xs font-semibold", e.returns >= 0 ? "text-status-success-text" : "text-status-error-text"),
377
- children: [e.returns >= 0 ? "+" : "", i(e.returns, { minimumFractionDigits: 0 })]
378
- })]
379
- })
380
- ]
381
- }, e.category))
382
- })] })]
383
- }),
384
- /* @__PURE__ */ x("section", {
385
- className: "mt-8",
386
- children: [/* @__PURE__ */ x("div", {
387
- className: "mb-4 flex items-center gap-2",
388
- children: [/* @__PURE__ */ b(f, { className: "h-5 w-5 text-text-secondary" }), /* @__PURE__ */ b("h2", {
389
- className: "text-lg font-semibold text-text-primary",
390
- children: "Portfolio Growth Trend"
391
- })]
392
- }), /* @__PURE__ */ b("div", {
393
- className: "overflow-hidden rounded-lg border border-border-subtle bg-bg-surface",
394
- children: /* @__PURE__ */ b("div", {
395
- className: "overflow-x-auto",
396
- children: /* @__PURE__ */ x("table", {
397
- className: "w-full",
398
- children: [/* @__PURE__ */ b("thead", { children: /* @__PURE__ */ x("tr", {
399
- className: "border-b border-border-subtle bg-bg-sunken/50",
400
- children: [
401
- /* @__PURE__ */ b("th", {
402
- className: "px-4 py-3 text-left text-xs font-medium uppercase tracking-wider text-text-secondary sm:px-6",
403
- children: "Month"
404
- }),
405
- /* @__PURE__ */ b("th", {
406
- className: "px-4 py-3 text-left text-xs font-medium uppercase tracking-wider text-text-secondary sm:px-6",
407
- children: "Invested"
408
- }),
409
- /* @__PURE__ */ b("th", {
410
- className: "px-4 py-3 text-left text-xs font-medium uppercase tracking-wider text-text-secondary sm:px-6",
411
- children: "Portfolio Value"
412
- }),
413
- /* @__PURE__ */ b("th", {
414
- className: "px-4 py-3 text-left text-xs font-medium uppercase tracking-wider text-text-secondary sm:px-6",
415
- children: "Returns"
416
- }),
417
- /* @__PURE__ */ b("th", {
418
- className: "px-4 py-3 text-left text-xs font-medium uppercase tracking-wider text-text-secondary sm:px-6",
419
- children: "Growth %"
420
- })
421
- ]
422
- }) }), /* @__PURE__ */ b("tbody", {
423
- className: "divide-y divide-border",
424
- children: P.monthlyPerformance.map((e) => {
425
- let n = e.invested > 0 ? ((e.value - e.invested) / e.invested * 100).toFixed(1) : "0.0";
426
- return /* @__PURE__ */ x("tr", {
427
- className: "hover:bg-accent/50 transition-colors",
428
- children: [
429
- /* @__PURE__ */ b("td", {
430
- className: "whitespace-nowrap px-4 py-4 text-sm font-medium text-text-primary sm:px-6",
431
- children: e.month
432
- }),
433
- /* @__PURE__ */ b("td", {
434
- className: "whitespace-nowrap px-4 py-4 text-sm text-text-primary sm:px-6",
435
- children: i(e.invested, { minimumFractionDigits: 0 })
436
- }),
437
- /* @__PURE__ */ b("td", {
438
- className: "whitespace-nowrap px-4 py-4 text-sm text-text-primary sm:px-6",
439
- children: i(e.value, { minimumFractionDigits: 0 })
440
- }),
441
- /* @__PURE__ */ b("td", {
442
- className: "whitespace-nowrap px-4 py-4 text-sm sm:px-6",
443
- children: /* @__PURE__ */ x("span", {
444
- className: t("font-semibold", e.returns >= 0 ? "text-status-success-text" : "text-status-error-text"),
445
- children: [e.returns >= 0 ? "+" : "", i(e.returns, { minimumFractionDigits: 0 })]
446
- })
447
- }),
448
- /* @__PURE__ */ b("td", {
449
- className: "whitespace-nowrap px-4 py-4 text-sm sm:px-6",
450
- children: /* @__PURE__ */ x("span", {
451
- className: t("font-medium", parseFloat(n) >= 0 ? "text-status-success-text" : "text-status-error-text"),
452
- children: [
453
- parseFloat(n) >= 0 ? "+" : "",
454
- n,
455
- "%"
456
- ]
457
- })
458
- })
459
- ]
460
- }, e.month);
461
- })
462
- })]
463
- })
464
- })
170
+ }, e.id))
465
171
  })]
466
172
  }),
467
- /* @__PURE__ */ x("div", {
468
- className: "mt-8 grid grid-cols-1 gap-6 lg:grid-cols-2",
469
- children: [/* @__PURE__ */ x("section", { children: [/* @__PURE__ */ x("div", {
470
- className: "mb-4 flex items-center gap-2",
471
- children: [/* @__PURE__ */ b(g, { className: "h-5 w-5 text-text-secondary" }), /* @__PURE__ */ b("h2", {
472
- className: "text-lg font-semibold text-text-primary",
473
- children: "Risk Analysis"
474
- })]
475
- }), /* @__PURE__ */ b("div", {
476
- className: "rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6",
477
- children: /* @__PURE__ */ x("div", {
478
- className: "space-y-5",
479
- children: [
480
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ x("div", {
481
- className: "mb-2 flex items-center justify-between",
482
- children: [/* @__PURE__ */ b("span", {
483
- className: "text-sm text-text-primary",
484
- children: "Risk Score"
485
- }), /* @__PURE__ */ x("span", {
486
- className: t("text-sm font-semibold", z.color),
487
- children: [
488
- P.riskAnalysis.riskScore,
489
- "/5 (",
490
- z.label,
491
- ")"
492
- ]
493
- })]
494
- }), /* @__PURE__ */ b("div", {
495
- className: "h-3 w-full overflow-hidden rounded-full bg-bg-sunken",
496
- children: /* @__PURE__ */ b("div", {
497
- className: t("h-full rounded-full transition-all duration-300", E(P.riskAnalysis.riskScore)),
498
- style: { width: `${P.riskAnalysis.riskScore / 5 * 100}%` }
499
- })
500
- })] }),
501
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ x("div", {
502
- className: "mb-2 flex items-center justify-between",
503
- children: [/* @__PURE__ */ b("span", {
504
- className: "text-sm text-text-primary",
505
- children: "Diversification"
506
- }), /* @__PURE__ */ x("span", {
507
- className: t("text-sm font-semibold", B.color),
508
- children: [
509
- P.riskAnalysis.diversificationScore,
510
- "/10 (",
511
- B.label,
512
- ")"
513
- ]
514
- })]
515
- }), /* @__PURE__ */ b("div", {
516
- className: "h-3 w-full overflow-hidden rounded-full bg-bg-sunken",
517
- children: /* @__PURE__ */ b("div", {
518
- className: t("h-full rounded-full transition-all duration-300", O(P.riskAnalysis.diversificationScore)),
519
- style: { width: `${P.riskAnalysis.diversificationScore / 10 * 100}%` }
520
- })
521
- })] }),
522
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ x("div", {
523
- className: "mb-2 flex items-center justify-between",
524
- children: [/* @__PURE__ */ b("span", {
525
- className: "text-sm text-text-primary",
526
- children: "Volatility"
527
- }), /* @__PURE__ */ x("span", {
528
- className: t("text-sm font-semibold", T(P.riskAnalysis.volatilityScore).color),
529
- children: [P.riskAnalysis.volatilityScore, "/5"]
530
- })]
531
- }), /* @__PURE__ */ b("div", {
532
- className: "h-3 w-full overflow-hidden rounded-full bg-bg-sunken",
533
- children: /* @__PURE__ */ b("div", {
534
- className: t("h-full rounded-full transition-all duration-300", E(P.riskAnalysis.volatilityScore)),
535
- style: { width: `${P.riskAnalysis.volatilityScore / 5 * 100}%` }
536
- })
537
- })] }),
538
- /* @__PURE__ */ x("div", {
539
- className: "grid grid-cols-2 gap-3 border-t border-border-subtle pt-4",
540
- children: [/* @__PURE__ */ x("div", {
541
- className: "rounded-lg bg-bg-sunken/50 p-3 text-center",
542
- children: [/* @__PURE__ */ b("p", {
543
- className: "text-lg font-bold text-text-primary",
544
- children: P.performanceByCart.length
545
- }), /* @__PURE__ */ b("p", {
546
- className: "text-xs text-text-secondary",
547
- children: "Active Investments"
548
- })]
549
- }), /* @__PURE__ */ x("div", {
550
- className: "rounded-lg bg-bg-sunken/50 p-3 text-center",
551
- children: [/* @__PURE__ */ b("p", {
552
- className: "text-lg font-bold text-text-primary",
553
- children: P.performanceByCategory.length
554
- }), /* @__PURE__ */ b("p", {
555
- className: "text-xs text-text-secondary",
556
- children: "Sectors Covered"
557
- })]
558
- })]
559
- })
560
- ]
561
- })
562
- })] }), /* @__PURE__ */ x("section", { children: [/* @__PURE__ */ x("div", {
563
- className: "mb-4 flex items-center gap-2",
564
- children: [/* @__PURE__ */ b(m, { className: "h-5 w-5 text-status-warning-text" }), /* @__PURE__ */ b("h2", {
565
- className: "text-lg font-semibold text-text-primary",
566
- children: "Recommendations"
567
- })]
568
- }), /* @__PURE__ */ x("div", {
569
- className: "rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6",
570
- children: [/* @__PURE__ */ b("div", {
571
- className: "space-y-3",
572
- children: P.riskAnalysis.recommendations.map((e, t) => /* @__PURE__ */ x("div", {
573
- className: "flex items-start gap-3 rounded-lg border border-border-subtle bg-bg-sunken/30 p-3",
574
- children: [/* @__PURE__ */ b("div", {
575
- className: "flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-action-primary-bg text-xs font-bold text-action-primary-text",
576
- children: t + 1
577
- }), /* @__PURE__ */ b("p", {
578
- className: "text-sm leading-relaxed text-text-primary",
579
- children: e
580
- })]
581
- }, t))
582
- }), /* @__PURE__ */ x("div", {
583
- className: "mt-5 rounded-lg border border-border-subtle bg-bg-sunken/50 p-4",
584
- children: [/* @__PURE__ */ b("h4", {
585
- className: "mb-2 text-sm font-semibold text-text-primary",
586
- children: "Overall Assessment"
587
- }), /* @__PURE__ */ x("div", {
588
- className: "space-y-2",
589
- children: [
590
- /* @__PURE__ */ x("div", {
591
- className: "flex items-center justify-between",
592
- children: [/* @__PURE__ */ b("span", {
593
- className: "text-xs text-text-secondary",
594
- children: "Portfolio Health"
595
- }), /* @__PURE__ */ x("div", {
596
- className: "flex items-center gap-2",
597
- children: [/* @__PURE__ */ b("div", {
598
- className: "flex gap-0.5",
599
- children: [
600
- 1,
601
- 2,
602
- 3,
603
- 4,
604
- 5
605
- ].map((e) => /* @__PURE__ */ b("div", { className: t("h-2 w-4 rounded-sm", e <= 4 ? "bg-status-success-text" : "bg-bg-sunken") }, e))
606
- }), /* @__PURE__ */ b("span", {
607
- className: "text-xs font-medium text-text-primary",
608
- children: "4/5"
609
- })]
610
- })]
611
- }),
612
- /* @__PURE__ */ x("div", {
613
- className: "flex items-center justify-between",
614
- children: [/* @__PURE__ */ b("span", {
615
- className: "text-xs text-text-secondary",
616
- children: "Growth Potential"
617
- }), /* @__PURE__ */ x("div", {
618
- className: "flex items-center gap-2",
619
- children: [/* @__PURE__ */ b("div", {
620
- className: "flex gap-0.5",
621
- children: [
622
- 1,
623
- 2,
624
- 3,
625
- 4,
626
- 5
627
- ].map((e) => /* @__PURE__ */ b("div", { className: t("h-2 w-4 rounded-sm", e <= 3 ? "bg-status-warning-text" : "bg-bg-sunken") }, e))
628
- }), /* @__PURE__ */ b("span", {
629
- className: "text-xs font-medium text-text-primary",
630
- children: "3/5"
631
- })]
632
- })]
633
- }),
634
- /* @__PURE__ */ x("div", {
635
- className: "flex items-center justify-between",
636
- children: [/* @__PURE__ */ b("span", {
637
- className: "text-xs text-text-secondary",
638
- children: "Income Stability"
639
- }), /* @__PURE__ */ x("div", {
640
- className: "flex items-center gap-2",
641
- children: [/* @__PURE__ */ b("div", {
642
- className: "flex gap-0.5",
643
- children: [
644
- 1,
645
- 2,
646
- 3,
647
- 4,
648
- 5
649
- ].map((e) => /* @__PURE__ */ b("div", { className: t("h-2 w-4 rounded-sm", e <= 4 ? "bg-status-success-text" : "bg-bg-sunken") }, e))
650
- }), /* @__PURE__ */ b("span", {
651
- className: "text-xs font-medium text-text-primary",
652
- children: "4/5"
653
- })]
654
- })]
655
- })
656
- ]
657
- })]
658
- })]
659
- })] })]
660
- }),
661
- /* @__PURE__ */ x("div", {
173
+ /* @__PURE__ */ _("div", {
662
174
  className: "mt-8 flex flex-wrap gap-3",
663
175
  children: [
664
- /* @__PURE__ */ x("button", {
176
+ /* @__PURE__ */ _("button", {
665
177
  type: "button",
666
- onClick: () => k("/investor/portfolio"),
178
+ onClick: () => b("/investor/portfolio"),
667
179
  className: "flex items-center gap-2 rounded-lg border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
668
- children: [/* @__PURE__ */ b(h, { className: "h-4 w-4" }), "View Portfolio"]
180
+ children: [/* @__PURE__ */ g(f, { className: "h-4 w-4" }), "View Portfolio"]
669
181
  }),
670
- /* @__PURE__ */ x("button", {
182
+ /* @__PURE__ */ _("button", {
671
183
  type: "button",
672
- onClick: () => k("/investor/opportunities"),
184
+ onClick: () => b("/investor/opportunities"),
673
185
  className: "flex items-center gap-2 rounded-lg border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
674
- children: [/* @__PURE__ */ b(_, { className: "h-4 w-4" }), "Browse Opportunities"]
186
+ children: [/* @__PURE__ */ g(p, { className: "h-4 w-4" }), "Browse Opportunities"]
675
187
  }),
676
- /* @__PURE__ */ x("button", {
188
+ /* @__PURE__ */ _("button", {
677
189
  type: "button",
678
- onClick: () => k("/investor/investments"),
190
+ onClick: () => b("/investor/investments"),
679
191
  className: "flex items-center gap-2 rounded-lg border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
680
- children: [/* @__PURE__ */ b(y, { className: "h-4 w-4" }), "My Investments"]
192
+ children: [/* @__PURE__ */ g(h, { className: "h-4 w-4" }), "My Investments"]
681
193
  })
682
194
  ]
683
195
  })
@@ -685,6 +197,6 @@ function k() {
685
197
  });
686
198
  }
687
199
  //#endregion
688
- export { k as InvestorAnalyticsPage };
200
+ export { b as InvestorAnalyticsPage };
689
201
 
690
202
  //# sourceMappingURL=InvestorAnalyticsPage.js.map