@burdenoff/microfe-coolandlovely 2026.625.2 → 2026.628.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/dist/coolandlovely/CoolAndLovelyRoot.js +66 -122
  2. package/dist/coolandlovely/CoolAndLovelyRoot.js.map +1 -1
  3. package/dist/coolandlovely/CoolAndLovelyRoutes.js +87 -175
  4. package/dist/coolandlovely/CoolAndLovelyRoutes.js.map +1 -1
  5. package/dist/coolandlovely/components/Field.js +81 -0
  6. package/dist/coolandlovely/components/Field.js.map +1 -0
  7. package/dist/coolandlovely/components/StateViews.js +34 -0
  8. package/dist/coolandlovely/components/StateViews.js.map +1 -0
  9. package/dist/coolandlovely/components/StatusBadge.js +25 -22
  10. package/dist/coolandlovely/components/StatusBadge.js.map +1 -1
  11. package/dist/coolandlovely/components/TagList.js +21 -0
  12. package/dist/coolandlovely/components/TagList.js.map +1 -0
  13. package/dist/coolandlovely/components/Thumbnail.js +29 -0
  14. package/dist/coolandlovely/components/Thumbnail.js.map +1 -0
  15. package/dist/coolandlovely/context/CoolAndLovelyContext.js +10 -10
  16. package/dist/coolandlovely/context/CoolAndLovelyContext.js.map +1 -1
  17. package/dist/coolandlovely/hooks/index.js +1 -0
  18. package/dist/coolandlovely/hooks/useCoolAndLovelyApi.js +462 -169
  19. package/dist/coolandlovely/hooks/useCoolAndLovelyApi.js.map +1 -1
  20. package/dist/coolandlovely/pages/HomePage.js +251 -845
  21. package/dist/coolandlovely/pages/HomePage.js.map +1 -1
  22. package/dist/coolandlovely/pages/brands/BrandDetailPage.js +319 -0
  23. package/dist/coolandlovely/pages/brands/BrandDetailPage.js.map +1 -0
  24. package/dist/coolandlovely/pages/brands/BrandFormPage.js +190 -0
  25. package/dist/coolandlovely/pages/brands/BrandFormPage.js.map +1 -0
  26. package/dist/coolandlovely/pages/brands/BrandsListPage.js +158 -0
  27. package/dist/coolandlovely/pages/brands/BrandsListPage.js.map +1 -0
  28. package/dist/coolandlovely/pages/collaborations/CollaborationDetailPage.js +253 -0
  29. package/dist/coolandlovely/pages/collaborations/CollaborationDetailPage.js.map +1 -0
  30. package/dist/coolandlovely/pages/collaborations/CollaborationFormPage.js +206 -0
  31. package/dist/coolandlovely/pages/collaborations/CollaborationFormPage.js.map +1 -0
  32. package/dist/coolandlovely/pages/collaborations/CollaborationsListPage.js +129 -0
  33. package/dist/coolandlovely/pages/collaborations/CollaborationsListPage.js.map +1 -0
  34. package/dist/coolandlovely/pages/collections/CollectionDetailPage.js +217 -0
  35. package/dist/coolandlovely/pages/collections/CollectionDetailPage.js.map +1 -0
  36. package/dist/coolandlovely/pages/collections/CollectionFormPage.js +217 -0
  37. package/dist/coolandlovely/pages/collections/CollectionFormPage.js.map +1 -0
  38. package/dist/coolandlovely/pages/collections/CollectionsListPage.js +122 -0
  39. package/dist/coolandlovely/pages/collections/CollectionsListPage.js.map +1 -0
  40. package/dist/coolandlovely/pages/items/StyleItemDetailPage.js +230 -0
  41. package/dist/coolandlovely/pages/items/StyleItemDetailPage.js.map +1 -0
  42. package/dist/coolandlovely/pages/items/StyleItemFormPage.js +276 -0
  43. package/dist/coolandlovely/pages/items/StyleItemFormPage.js.map +1 -0
  44. package/dist/coolandlovely/pages/items/StyleItemsListPage.js +170 -0
  45. package/dist/coolandlovely/pages/items/StyleItemsListPage.js.map +1 -0
  46. package/dist/coolandlovely/pages/lookbooks/LookbookDetailPage.js +124 -0
  47. package/dist/coolandlovely/pages/lookbooks/LookbookDetailPage.js.map +1 -0
  48. package/dist/coolandlovely/pages/lookbooks/LookbooksListPage.js +156 -0
  49. package/dist/coolandlovely/pages/lookbooks/LookbooksListPage.js.map +1 -0
  50. package/dist/coolandlovely/pages/looks/LookDetailPage.js +238 -0
  51. package/dist/coolandlovely/pages/looks/LookDetailPage.js.map +1 -0
  52. package/dist/coolandlovely/pages/looks/LookFormPage.js +209 -0
  53. package/dist/coolandlovely/pages/looks/LookFormPage.js.map +1 -0
  54. package/dist/coolandlovely/pages/looks/LooksListPage.js +181 -0
  55. package/dist/coolandlovely/pages/looks/LooksListPage.js.map +1 -0
  56. package/dist/coolandlovely/pages/profile/StyleProfilePage.js +224 -0
  57. package/dist/coolandlovely/pages/profile/StyleProfilePage.js.map +1 -0
  58. package/dist/coolandlovely/pages/wardrobe/WardrobeFormPage.js +173 -0
  59. package/dist/coolandlovely/pages/wardrobe/WardrobeFormPage.js.map +1 -0
  60. package/dist/coolandlovely/pages/wardrobe/WardrobeListPage.js +172 -0
  61. package/dist/coolandlovely/pages/wardrobe/WardrobeListPage.js.map +1 -0
  62. package/dist/coolandlovely/store/coolandlovelyStore.js +2 -6
  63. package/dist/coolandlovely/store/coolandlovelyStore.js.map +1 -1
  64. package/dist/coolandlovely/utils/formatters.js +31 -23
  65. package/dist/coolandlovely/utils/formatters.js.map +1 -1
  66. package/dist/coolandlovely/utils/icons.js +34 -0
  67. package/dist/coolandlovely/utils/icons.js.map +1 -0
  68. package/dist/index.js +4 -4
  69. package/package.json +1 -1
  70. package/dist/coolandlovely/components/InvestmentCard.js +0 -98
  71. package/dist/coolandlovely/components/InvestmentCard.js.map +0 -1
  72. package/dist/coolandlovely/components/RatingDisplay.js +0 -35
  73. package/dist/coolandlovely/components/RatingDisplay.js.map +0 -1
  74. package/dist/coolandlovely/mocks/data.js +0 -1517
  75. package/dist/coolandlovely/mocks/data.js.map +0 -1
  76. package/dist/coolandlovely/mocks/users.js +0 -34
  77. package/dist/coolandlovely/mocks/users.js.map +0 -1
  78. package/dist/coolandlovely/pages/admin/AdminAnalyticsPage.js +0 -651
  79. package/dist/coolandlovely/pages/admin/AdminAnalyticsPage.js.map +0 -1
  80. package/dist/coolandlovely/pages/admin/AdminDashboard.js +0 -673
  81. package/dist/coolandlovely/pages/admin/AdminDashboard.js.map +0 -1
  82. package/dist/coolandlovely/pages/admin/AdminFinancialPage.js +0 -427
  83. package/dist/coolandlovely/pages/admin/AdminFinancialPage.js.map +0 -1
  84. package/dist/coolandlovely/pages/admin/AdminOrdersPage.js +0 -665
  85. package/dist/coolandlovely/pages/admin/AdminOrdersPage.js.map +0 -1
  86. package/dist/coolandlovely/pages/admin/AdminProfilePage.js +0 -264
  87. package/dist/coolandlovely/pages/admin/AdminProfilePage.js.map +0 -1
  88. package/dist/coolandlovely/pages/admin/AdminSettingsPage.js +0 -654
  89. package/dist/coolandlovely/pages/admin/AdminSettingsPage.js.map +0 -1
  90. package/dist/coolandlovely/pages/admin/CartManagementPage.js +0 -874
  91. package/dist/coolandlovely/pages/admin/CartManagementPage.js.map +0 -1
  92. package/dist/coolandlovely/pages/admin/UserManagementPage.js +0 -898
  93. package/dist/coolandlovely/pages/admin/UserManagementPage.js.map +0 -1
  94. package/dist/coolandlovely/pages/cart-owner/AnalyticsDashboard.js +0 -842
  95. package/dist/coolandlovely/pages/cart-owner/AnalyticsDashboard.js.map +0 -1
  96. package/dist/coolandlovely/pages/cart-owner/BusinessSettingsPage.js +0 -705
  97. package/dist/coolandlovely/pages/cart-owner/BusinessSettingsPage.js.map +0 -1
  98. package/dist/coolandlovely/pages/cart-owner/CartOwnerDashboard.js +0 -802
  99. package/dist/coolandlovely/pages/cart-owner/CartOwnerDashboard.js.map +0 -1
  100. package/dist/coolandlovely/pages/cart-owner/CartOwnerProfilePage.js +0 -891
  101. package/dist/coolandlovely/pages/cart-owner/CartOwnerProfilePage.js.map +0 -1
  102. package/dist/coolandlovely/pages/cart-owner/CartServiceConfigPage.js +0 -639
  103. package/dist/coolandlovely/pages/cart-owner/CartServiceConfigPage.js.map +0 -1
  104. package/dist/coolandlovely/pages/cart-owner/InventoryManagementPage.js +0 -914
  105. package/dist/coolandlovely/pages/cart-owner/InventoryManagementPage.js.map +0 -1
  106. package/dist/coolandlovely/pages/cart-owner/OrderManagementPage.js +0 -882
  107. package/dist/coolandlovely/pages/cart-owner/OrderManagementPage.js.map +0 -1
  108. package/dist/coolandlovely/pages/cart-owner/StaffManagementPage.js +0 -831
  109. package/dist/coolandlovely/pages/cart-owner/StaffManagementPage.js.map +0 -1
  110. package/dist/coolandlovely/pages/common/HelpSupportPage.js +0 -1325
  111. package/dist/coolandlovely/pages/common/HelpSupportPage.js.map +0 -1
  112. package/dist/coolandlovely/pages/common/NotificationCenterPage.js +0 -671
  113. package/dist/coolandlovely/pages/common/NotificationCenterPage.js.map +0 -1
  114. package/dist/coolandlovely/pages/common/SettingsPage.js +0 -973
  115. package/dist/coolandlovely/pages/common/SettingsPage.js.map +0 -1
  116. package/dist/coolandlovely/pages/customer/BookingDetailsPage.js +0 -630
  117. package/dist/coolandlovely/pages/customer/BookingDetailsPage.js.map +0 -1
  118. package/dist/coolandlovely/pages/customer/CartDetailPage.js +0 -623
  119. package/dist/coolandlovely/pages/customer/CartDetailPage.js.map +0 -1
  120. package/dist/coolandlovely/pages/customer/CartDiscoveryPage.js +0 -558
  121. package/dist/coolandlovely/pages/customer/CartDiscoveryPage.js.map +0 -1
  122. package/dist/coolandlovely/pages/customer/CheckoutPage.js +0 -529
  123. package/dist/coolandlovely/pages/customer/CheckoutPage.js.map +0 -1
  124. package/dist/coolandlovely/pages/customer/CustomerDashboard.js +0 -538
  125. package/dist/coolandlovely/pages/customer/CustomerDashboard.js.map +0 -1
  126. package/dist/coolandlovely/pages/customer/CustomerProfilePage.js +0 -658
  127. package/dist/coolandlovely/pages/customer/CustomerProfilePage.js.map +0 -1
  128. package/dist/coolandlovely/pages/customer/DirectServiceBookingPage.js +0 -632
  129. package/dist/coolandlovely/pages/customer/DirectServiceBookingPage.js.map +0 -1
  130. package/dist/coolandlovely/pages/customer/FavoritesPage.js +0 -487
  131. package/dist/coolandlovely/pages/customer/FavoritesPage.js.map +0 -1
  132. package/dist/coolandlovely/pages/customer/OrderHistoryPage.js +0 -447
  133. package/dist/coolandlovely/pages/customer/OrderHistoryPage.js.map +0 -1
  134. package/dist/coolandlovely/pages/customer/OrderTrackingPage.js +0 -425
  135. package/dist/coolandlovely/pages/customer/OrderTrackingPage.js.map +0 -1
  136. package/dist/coolandlovely/pages/customer/PaymentMethodsPage.js +0 -494
  137. package/dist/coolandlovely/pages/customer/PaymentMethodsPage.js.map +0 -1
  138. package/dist/coolandlovely/pages/customer/ReviewsPage.js +0 -616
  139. package/dist/coolandlovely/pages/customer/ReviewsPage.js.map +0 -1
  140. package/dist/coolandlovely/pages/customer/SavedAddressesPage.js +0 -449
  141. package/dist/coolandlovely/pages/customer/SavedAddressesPage.js.map +0 -1
  142. package/dist/coolandlovely/pages/investor/InvestmentDetailsPage.js +0 -887
  143. package/dist/coolandlovely/pages/investor/InvestmentDetailsPage.js.map +0 -1
  144. package/dist/coolandlovely/pages/investor/InvestmentOpportunitiesPage.js +0 -945
  145. package/dist/coolandlovely/pages/investor/InvestmentOpportunitiesPage.js.map +0 -1
  146. package/dist/coolandlovely/pages/investor/InvestorAnalyticsPage.js +0 -687
  147. package/dist/coolandlovely/pages/investor/InvestorAnalyticsPage.js.map +0 -1
  148. package/dist/coolandlovely/pages/investor/InvestorDashboard.js +0 -455
  149. package/dist/coolandlovely/pages/investor/InvestorDashboard.js.map +0 -1
  150. package/dist/coolandlovely/pages/investor/InvestorInvestmentsPage.js +0 -405
  151. package/dist/coolandlovely/pages/investor/InvestorInvestmentsPage.js.map +0 -1
  152. package/dist/coolandlovely/pages/investor/InvestorPortfolioPage.js +0 -602
  153. package/dist/coolandlovely/pages/investor/InvestorPortfolioPage.js.map +0 -1
  154. package/dist/coolandlovely/pages/investor/InvestorProfilePage.js +0 -1070
  155. package/dist/coolandlovely/pages/investor/InvestorProfilePage.js.map +0 -1
  156. package/dist/coolandlovely/pages/worker/TaskDetailsPage.js +0 -533
  157. package/dist/coolandlovely/pages/worker/TaskDetailsPage.js.map +0 -1
  158. package/dist/coolandlovely/pages/worker/WorkerDashboard.js +0 -671
  159. package/dist/coolandlovely/pages/worker/WorkerDashboard.js.map +0 -1
  160. package/dist/coolandlovely/pages/worker/WorkerOrdersPage.js +0 -680
  161. package/dist/coolandlovely/pages/worker/WorkerOrdersPage.js.map +0 -1
  162. package/dist/coolandlovely/pages/worker/WorkerProfilePage.js +0 -692
  163. package/dist/coolandlovely/pages/worker/WorkerProfilePage.js.map +0 -1
  164. package/dist/coolandlovely/pages/worker/WorkerSchedulePage.js +0 -583
  165. package/dist/coolandlovely/pages/worker/WorkerSchedulePage.js.map +0 -1
@@ -1,602 +0,0 @@
1
- import { useCoolAndLovely as e } from "../../context/CoolAndLovelyContext.js";
2
- import { cn as t } from "../../utils/cn.js";
3
- import { PageLayout as n } from "../../components/PageLayout.js";
4
- import { MetricsCard as r } from "../../components/MetricsCard.js";
5
- import { formatCurrency as i, formatDate as a } from "../../utils/formatters.js";
6
- import { useCallback as o, useMemo as s, useState as c } from "react";
7
- import { ArrowDownCircle as l, BarChart3 as u, Briefcase as d, CreditCard as f, Eye as p, IndianRupee as m, LayoutList as h, Star as g, TrendingDown 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, NextSteps as C, PagePurpose as w } from "@burdenoff/fe-libs/ui";
10
- //#region src/coolandlovely/pages/investor/InvestorPortfolioPage.tsx
11
- var T = [
12
- {
13
- id: "inv-001",
14
- cartId: "SERV-001",
15
- cartName: "Quick Cuts Salon",
16
- cartOwner: "Ravi Kumar",
17
- investmentDate: "2023-06-15",
18
- amount: 5e4,
19
- currentValue: 62500,
20
- returns: 12500,
21
- returnsPercentage: 25,
22
- ownership: 15,
23
- status: "active",
24
- monthlyRevenue: 185e3,
25
- monthlyDividend: 2775,
26
- nextPayoutDate: "2024-07-01",
27
- riskLevel: "low",
28
- category: "Personal Care & Beauty",
29
- location: "Indiranagar, Bangalore",
30
- performanceMetrics: {
31
- monthlyOrders: 1250,
32
- averageRating: 4.8,
33
- growthRate: 12
34
- }
35
- },
36
- {
37
- id: "inv-002",
38
- cartId: "SERV-003",
39
- cartName: "Fix-It Mobile Repair",
40
- cartOwner: "Amit Sharma",
41
- investmentDate: "2023-08-20",
42
- amount: 3e4,
43
- currentValue: 35400,
44
- returns: 5400,
45
- returnsPercentage: 18,
46
- ownership: 10,
47
- status: "active",
48
- monthlyRevenue: 12e4,
49
- monthlyDividend: 1200,
50
- nextPayoutDate: "2024-07-01",
51
- riskLevel: "medium",
52
- category: "Repair & Maintenance",
53
- location: "Jayanagar, Bangalore",
54
- performanceMetrics: {
55
- monthlyOrders: 890,
56
- averageRating: 4.6,
57
- growthRate: 8
58
- }
59
- },
60
- {
61
- id: "inv-003",
62
- cartId: "SERV-005",
63
- cartName: "Spotless Cleaning Services",
64
- cartOwner: "Priya Cleaning",
65
- investmentDate: "2023-04-10",
66
- amount: 4e4,
67
- currentValue: 52e3,
68
- returns: 12e3,
69
- returnsPercentage: 30,
70
- ownership: 20,
71
- status: "active",
72
- monthlyRevenue: 95e3,
73
- monthlyDividend: 1900,
74
- nextPayoutDate: "2024-07-01",
75
- riskLevel: "low",
76
- category: "Home Services",
77
- location: "HSR Layout, Bangalore",
78
- performanceMetrics: {
79
- monthlyOrders: 1450,
80
- averageRating: 4.7,
81
- growthRate: 15
82
- }
83
- },
84
- {
85
- id: "inv-004",
86
- cartId: "FOOD-001",
87
- cartName: "Dosa Express",
88
- cartOwner: "Rajesh Kumar",
89
- investmentDate: "2023-10-05",
90
- amount: 25e3,
91
- currentValue: 27500,
92
- returns: 2500,
93
- returnsPercentage: 10,
94
- ownership: 5,
95
- status: "active",
96
- monthlyRevenue: 15e4,
97
- monthlyDividend: 750,
98
- nextPayoutDate: "2024-07-01",
99
- riskLevel: "high",
100
- category: "Food & Beverage",
101
- location: "Koramangala, Bangalore",
102
- performanceMetrics: {
103
- monthlyOrders: 780,
104
- averageRating: 4.5,
105
- growthRate: 5
106
- }
107
- }
108
- ], E = [
109
- {
110
- id: "txn-001",
111
- type: "investment",
112
- cartName: "Quick Cuts Salon",
113
- amount: 5e4,
114
- date: "2023-06-15",
115
- status: "completed"
116
- },
117
- {
118
- id: "txn-002",
119
- type: "dividend",
120
- cartName: "Quick Cuts Salon",
121
- amount: 2775,
122
- date: "2024-06-01",
123
- status: "completed"
124
- },
125
- {
126
- id: "txn-003",
127
- type: "dividend",
128
- cartName: "Fix-It Mobile Repair",
129
- amount: 1200,
130
- date: "2024-06-01",
131
- status: "completed"
132
- },
133
- {
134
- id: "txn-004",
135
- type: "investment",
136
- cartName: "Spotless Cleaning Services",
137
- amount: 4e4,
138
- date: "2023-04-10",
139
- status: "completed"
140
- },
141
- {
142
- id: "txn-005",
143
- type: "dividend",
144
- cartName: "Spotless Cleaning Services",
145
- amount: 1900,
146
- date: "2024-06-01",
147
- status: "pending"
148
- }
149
- ], D = [
150
- "",
151
- "Personal Care & Beauty",
152
- "Repair & Maintenance",
153
- "Home Services",
154
- "Food & Beverage"
155
- ];
156
- function O(e) {
157
- let { color: n, label: r } = {
158
- low: {
159
- color: "bg-status-success-bg-subtle/20 text-status-success-text",
160
- label: "Low Risk"
161
- },
162
- medium: {
163
- color: "bg-status-warning-bg-subtle/20 text-status-warning-text",
164
- label: "Medium Risk"
165
- },
166
- high: {
167
- color: "bg-status-error-bg-subtle/20 text-status-error-text",
168
- label: "High Risk"
169
- }
170
- }[e];
171
- return /* @__PURE__ */ b("span", {
172
- className: t("rounded-full px-2 py-0.5 text-xs font-medium", n),
173
- children: r
174
- });
175
- }
176
- function k(e) {
177
- return `${e > 0 ? "+" : ""}${e.toFixed(1)}%`;
178
- }
179
- function A() {
180
- let { navigateTo: A } = e(), [j, M] = c("overview"), [N, P] = c(""), F = s(() => N ? T.filter((e) => e.category === N) : T, [N]), I = F.reduce((e, t) => e + t.amount, 0), L = F.reduce((e, t) => e + t.currentValue, 0), R = L - I, z = I > 0 ? R / I * 100 : 0, B = F.reduce((e, t) => e + t.monthlyDividend, 0), V = F.filter((e) => e.status === "active").length, H = {
181
- low: 1,
182
- medium: 2,
183
- high: 3
184
- }, U = F.length > 0 ? F.reduce((e, t) => e + H[t.riskLevel], 0) / F.length : 0, W = F.reduce((e, t) => t.returnsPercentage > e.returnsPercentage ? t : e, F[0] || {
185
- cartName: "",
186
- returnsPercentage: 0
187
- }), G = o((e) => {
188
- alert(`Withdrawal request submitted for ${e}`);
189
- }, []), K = F.reduce((e, t) => (e[t.category] = (e[t.category] || 0) + t.currentValue, e), {});
190
- return /* @__PURE__ */ x(n, {
191
- title: "My Portfolio",
192
- description: "Track your investment performance and holdings",
193
- children: [
194
- /* @__PURE__ */ b(w, {
195
- className: "mb-6",
196
- icon: /* @__PURE__ */ b(u, { className: "h-4 w-4" }),
197
- children: "The complete picture of your investments: how much you've put in, what it's worth today, the returns and dividends you're earning, and a full transaction history. Use the tabs to drill into individual holdings or review every movement of money."
198
- }),
199
- /* @__PURE__ */ b(C, {
200
- className: "mb-6",
201
- storageKey: "coolandlovely-investor-portfolio",
202
- steps: [
203
- {
204
- id: "holdings",
205
- label: "Review your holdings",
206
- description: "Open the Investments tab to inspect each business you back.",
207
- icon: /* @__PURE__ */ b(d, { className: "h-4 w-4" }),
208
- onClick: () => M("investments")
209
- },
210
- {
211
- id: "transactions",
212
- label: "Check recent transactions",
213
- description: "See dividends, deposits and exits in your transaction log.",
214
- icon: /* @__PURE__ */ b(h, { className: "h-4 w-4" }),
215
- onClick: () => M("transactions")
216
- },
217
- {
218
- id: "grow",
219
- label: "Find new opportunities",
220
- description: "Put idle returns to work by backing another business.",
221
- icon: /* @__PURE__ */ b(v, { className: "h-4 w-4" }),
222
- onClick: () => A("/investor/opportunities")
223
- }
224
- ]
225
- }),
226
- /* @__PURE__ */ x(S, {
227
- className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4 p-4",
228
- children: [
229
- /* @__PURE__ */ b(r, {
230
- icon: /* @__PURE__ */ b(y, { className: "h-5 w-5" }),
231
- value: i(I, { minimumFractionDigits: 0 }),
232
- label: "Total Invested",
233
- trend: "up",
234
- trendValue: `${V} active`
235
- }),
236
- /* @__PURE__ */ b(r, {
237
- icon: /* @__PURE__ */ b(m, { className: "h-5 w-5" }),
238
- value: i(L, { minimumFractionDigits: 0 }),
239
- label: "Current Value",
240
- trend: z > 0 ? "up" : "down",
241
- trendValue: k(z)
242
- }),
243
- /* @__PURE__ */ b(r, {
244
- icon: /* @__PURE__ */ b(v, { className: "h-5 w-5" }),
245
- value: i(Math.abs(R), { minimumFractionDigits: 0 }),
246
- label: "Total Returns",
247
- trend: R >= 0 ? "up" : "down",
248
- trendValue: k(z)
249
- }),
250
- /* @__PURE__ */ b(r, {
251
- icon: /* @__PURE__ */ b(d, { className: "h-5 w-5" }),
252
- value: i(B, { minimumFractionDigits: 0 }),
253
- label: "Monthly Dividend",
254
- trend: "up",
255
- trendValue: "Next: July 1"
256
- })
257
- ]
258
- }),
259
- /* @__PURE__ */ x("div", {
260
- className: "mt-4 grid grid-cols-2 gap-3 lg:grid-cols-4",
261
- children: [
262
- /* @__PURE__ */ x("div", {
263
- className: "rounded-lg border border-border-subtle bg-bg-surface p-3",
264
- children: [/* @__PURE__ */ b("p", {
265
- className: "text-xs text-text-secondary",
266
- children: "Active Investments"
267
- }), /* @__PURE__ */ b("p", {
268
- className: "text-xl font-bold text-text-primary",
269
- children: V
270
- })]
271
- }),
272
- /* @__PURE__ */ x("div", {
273
- className: "rounded-lg border border-border-subtle bg-bg-surface p-3",
274
- children: [/* @__PURE__ */ b("p", {
275
- className: "text-xs text-text-secondary",
276
- children: "Avg Risk Score"
277
- }), /* @__PURE__ */ x("div", {
278
- className: "mt-1 flex items-center gap-2",
279
- children: [/* @__PURE__ */ b("div", {
280
- className: "h-2 flex-1 rounded-full bg-bg-sunken overflow-hidden",
281
- children: /* @__PURE__ */ b("div", {
282
- className: t("h-full rounded-full", U <= 1.5 ? "bg-status-success-bg-subtle" : U <= 2.5 ? "bg-status-warning-bg-subtle" : "bg-status-error-bg-subtle"),
283
- style: { width: `${U / 3 * 100}%` }
284
- })
285
- }), /* @__PURE__ */ x("span", {
286
- className: "text-sm font-medium text-text-primary",
287
- children: [U.toFixed(1), "/3"]
288
- })]
289
- })]
290
- }),
291
- /* @__PURE__ */ x("div", {
292
- className: "rounded-lg border border-border-subtle bg-bg-surface p-3",
293
- children: [
294
- /* @__PURE__ */ b("p", {
295
- className: "text-xs text-text-secondary",
296
- children: "Best Performer"
297
- }),
298
- /* @__PURE__ */ b("p", {
299
- className: "truncate text-sm font-bold text-text-primary",
300
- children: W.cartName
301
- }),
302
- /* @__PURE__ */ b("p", {
303
- className: "text-xs text-status-success-text",
304
- children: k(W.returnsPercentage)
305
- })
306
- ]
307
- }),
308
- /* @__PURE__ */ x("div", {
309
- className: "rounded-lg border border-border-subtle bg-bg-surface p-3",
310
- children: [
311
- /* @__PURE__ */ b("p", {
312
- className: "text-xs text-text-secondary",
313
- children: "Next Payout"
314
- }),
315
- /* @__PURE__ */ b("p", {
316
- className: "text-lg font-bold text-text-primary",
317
- children: "July 1"
318
- }),
319
- /* @__PURE__ */ b("p", {
320
- className: "text-xs text-text-secondary",
321
- children: "In 7 days"
322
- })
323
- ]
324
- })
325
- ]
326
- }),
327
- /* @__PURE__ */ x("div", {
328
- className: "mt-6 rounded-lg border border-border-subtle bg-bg-surface shadow-sm",
329
- children: [/* @__PURE__ */ b("div", {
330
- className: "flex border-b border-border-subtle overflow-x-auto",
331
- children: [
332
- {
333
- key: "overview",
334
- label: "Overview",
335
- Icon: u
336
- },
337
- {
338
- key: "investments",
339
- label: `Investments (${F.length})`,
340
- Icon: d
341
- },
342
- {
343
- key: "transactions",
344
- label: "Transactions",
345
- Icon: f
346
- }
347
- ].map(({ key: e, label: n, Icon: r }) => /* @__PURE__ */ x("button", {
348
- type: "button",
349
- onClick: () => M(e),
350
- className: t("flex items-center gap-2 whitespace-nowrap px-4 py-3 text-sm font-medium transition-colors", j === e ? "border-b-2 border-primary text-text-primary" : "text-text-secondary hover:text-text-primary"),
351
- children: [/* @__PURE__ */ b(r, { className: "h-4 w-4" }), n]
352
- }, e))
353
- }), /* @__PURE__ */ x("div", {
354
- className: "p-4",
355
- children: [
356
- j === "overview" && /* @__PURE__ */ x("div", {
357
- className: "space-y-6",
358
- children: [/* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("h3", {
359
- className: "mb-4 text-base font-semibold text-text-primary",
360
- children: "Portfolio Performance"
361
- }), /* @__PURE__ */ x("div", {
362
- className: "rounded-lg border border-border-subtle bg-bg-sunken/50 p-8 text-center",
363
- children: [
364
- /* @__PURE__ */ b(u, { className: "mx-auto mb-2 h-8 w-8 text-text-secondary/50" }),
365
- /* @__PURE__ */ b("p", {
366
- className: "text-sm text-text-secondary",
367
- children: "Performance chart visualization"
368
- }),
369
- /* @__PURE__ */ b("p", {
370
- className: "mt-1 text-xs text-text-secondary",
371
- children: "Shows portfolio value over time"
372
- })
373
- ]
374
- })] }), /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("h3", {
375
- className: "mb-4 text-base font-semibold text-text-primary",
376
- children: "Asset Allocation"
377
- }), /* @__PURE__ */ b("div", {
378
- className: "space-y-3",
379
- children: Object.entries(K).map(([e, t]) => /* @__PURE__ */ x("div", {
380
- className: "flex items-center",
381
- children: [
382
- /* @__PURE__ */ b("span", {
383
- className: "w-40 truncate text-sm text-text-primary",
384
- children: e
385
- }),
386
- /* @__PURE__ */ b("div", {
387
- className: "mx-3 h-6 flex-1 rounded-full bg-bg-sunken overflow-hidden",
388
- children: /* @__PURE__ */ b("div", {
389
- className: "flex h-6 items-center justify-end rounded-full bg-action-primary-bg pr-2",
390
- style: { width: `${L > 0 ? t / L * 100 : 0}%` },
391
- children: /* @__PURE__ */ x("span", {
392
- className: "text-xs font-medium text-action-primary-text",
393
- children: [L > 0 ? (t / L * 100).toFixed(1) : 0, "%"]
394
- })
395
- })
396
- }),
397
- /* @__PURE__ */ b("span", {
398
- className: "ml-2 text-sm font-medium text-text-primary",
399
- children: i(t, { minimumFractionDigits: 0 })
400
- })
401
- ]
402
- }, e))
403
- })] })]
404
- }),
405
- j === "investments" && /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("div", {
406
- className: "mb-4",
407
- children: /* @__PURE__ */ x("select", {
408
- value: N,
409
- onChange: (e) => P(e.target.value),
410
- 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)]",
411
- children: [/* @__PURE__ */ b("option", {
412
- value: "",
413
- children: "All Categories"
414
- }), D.filter(Boolean).map((e) => /* @__PURE__ */ b("option", {
415
- value: e,
416
- children: e
417
- }, e))]
418
- })
419
- }), /* @__PURE__ */ b("div", {
420
- className: "space-y-4",
421
- children: F.map((e) => /* @__PURE__ */ x("div", {
422
- className: "rounded-lg border border-border-subtle p-4 hover:bg-accent/50 transition-colors",
423
- children: [
424
- /* @__PURE__ */ x("div", {
425
- className: "mb-4 flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",
426
- children: [/* @__PURE__ */ x("div", {
427
- className: "flex-1",
428
- children: [
429
- /* @__PURE__ */ b("h4", {
430
- className: "text-base font-semibold text-text-primary",
431
- children: e.cartName
432
- }),
433
- /* @__PURE__ */ x("p", {
434
- className: "text-sm text-text-secondary",
435
- children: [
436
- "Owned by ",
437
- e.cartOwner,
438
- " • ",
439
- e.location
440
- ]
441
- }),
442
- /* @__PURE__ */ x("div", {
443
- className: "mt-2 flex flex-wrap items-center gap-2",
444
- children: [/* @__PURE__ */ b("span", {
445
- className: "text-sm text-text-secondary",
446
- children: e.category
447
- }), O(e.riskLevel)]
448
- })
449
- ]
450
- }), /* @__PURE__ */ x("div", {
451
- className: "text-left sm:text-right",
452
- children: [/* @__PURE__ */ b("p", {
453
- className: "text-xl font-bold text-text-primary",
454
- children: i(e.currentValue, { minimumFractionDigits: 0 })
455
- }), /* @__PURE__ */ x("p", {
456
- className: t("text-sm", e.returns > 0 ? "text-status-success-text" : "text-status-error-text"),
457
- children: [
458
- i(Math.abs(e.returns), { minimumFractionDigits: 0 }),
459
- " (",
460
- k(e.returnsPercentage),
461
- ")"
462
- ]
463
- })]
464
- })]
465
- }),
466
- /* @__PURE__ */ x("div", {
467
- className: "mb-4 grid grid-cols-2 gap-3 lg:grid-cols-4",
468
- children: [
469
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
470
- className: "text-xs text-text-secondary",
471
- children: "Invested"
472
- }), /* @__PURE__ */ b("p", {
473
- className: "text-sm font-medium text-text-primary",
474
- children: i(e.amount, { minimumFractionDigits: 0 })
475
- })] }),
476
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
477
- className: "text-xs text-text-secondary",
478
- children: "Ownership"
479
- }), /* @__PURE__ */ x("p", {
480
- className: "text-sm font-medium text-text-primary",
481
- children: [e.ownership, "%"]
482
- })] }),
483
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
484
- className: "text-xs text-text-secondary",
485
- children: "Monthly Dividend"
486
- }), /* @__PURE__ */ b("p", {
487
- className: "text-sm font-medium text-text-primary",
488
- children: i(e.monthlyDividend, { minimumFractionDigits: 0 })
489
- })] }),
490
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
491
- className: "text-xs text-text-secondary",
492
- children: "Investment Date"
493
- }), /* @__PURE__ */ b("p", {
494
- className: "text-sm font-medium text-text-primary",
495
- children: a(e.investmentDate, {
496
- hour: void 0,
497
- minute: void 0
498
- })
499
- })] })
500
- ]
501
- }),
502
- /* @__PURE__ */ x("div", {
503
- className: "border-t border-border-subtle pt-4",
504
- children: [/* @__PURE__ */ b("p", {
505
- className: "mb-2 text-sm font-medium text-text-secondary",
506
- children: "Performance Metrics"
507
- }), /* @__PURE__ */ x("div", {
508
- className: "grid grid-cols-3 gap-3 text-center",
509
- children: [
510
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
511
- className: "text-lg font-bold text-text-primary",
512
- children: e.performanceMetrics.monthlyOrders
513
- }), /* @__PURE__ */ b("p", {
514
- className: "text-xs text-text-secondary",
515
- children: "Monthly Orders"
516
- })] }),
517
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ x("div", {
518
- className: "flex items-center justify-center gap-1",
519
- children: [/* @__PURE__ */ b(g, { className: "h-4 w-4 fill-status-warning-text text-status-warning-text" }), /* @__PURE__ */ b("p", {
520
- className: "text-lg font-bold text-text-primary",
521
- children: e.performanceMetrics.averageRating
522
- })]
523
- }), /* @__PURE__ */ b("p", {
524
- className: "text-xs text-text-secondary",
525
- children: "Rating"
526
- })] }),
527
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ x("p", {
528
- className: "text-lg font-bold text-status-success-text",
529
- children: [
530
- "+",
531
- e.performanceMetrics.growthRate,
532
- "%"
533
- ]
534
- }), /* @__PURE__ */ b("p", {
535
- className: "text-xs text-text-secondary",
536
- children: "Growth Rate"
537
- })] })
538
- ]
539
- })]
540
- }),
541
- /* @__PURE__ */ x("div", {
542
- className: "mt-4 flex flex-wrap gap-2",
543
- children: [/* @__PURE__ */ x("button", {
544
- type: "button",
545
- onClick: () => A(`/investor/investments/${e.id}`),
546
- className: "flex items-center gap-2 rounded-lg border border-border-subtle px-3 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
547
- children: [/* @__PURE__ */ b(p, { className: "h-4 w-4" }), "View Details"]
548
- }), e.status === "active" && /* @__PURE__ */ x("button", {
549
- type: "button",
550
- onClick: () => G(e.id),
551
- className: "flex items-center gap-2 rounded-lg border border-border-subtle px-3 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
552
- children: [/* @__PURE__ */ b(l, { className: "h-4 w-4" }), "Withdraw"]
553
- })]
554
- })
555
- ]
556
- }, e.id))
557
- })] }),
558
- j === "transactions" && /* @__PURE__ */ b("div", {
559
- className: "space-y-3",
560
- children: E.map((e) => /* @__PURE__ */ x("div", {
561
- className: "flex flex-col gap-3 rounded-lg border border-border-subtle p-4 hover:bg-accent/50 transition-colors sm:flex-row sm:items-center sm:justify-between",
562
- children: [/* @__PURE__ */ x("div", {
563
- className: "flex items-center gap-3",
564
- children: [/* @__PURE__ */ b("div", {
565
- className: t("flex h-10 w-10 shrink-0 items-center justify-center rounded-full", e.type === "investment" ? "bg-accent-blue-subtle/10" : e.type === "dividend" ? "bg-status-success-bg-subtle/10" : "bg-status-error-bg-subtle/10"),
566
- children: e.type === "investment" ? /* @__PURE__ */ b(y, { className: "h-5 w-5 text-accent-blue" }) : e.type === "dividend" ? /* @__PURE__ */ b(v, { className: "h-5 w-5 text-status-success-text" }) : /* @__PURE__ */ b(_, { className: "h-5 w-5 text-status-error-text" })
567
- }), /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ x("p", {
568
- className: "text-sm font-medium text-text-primary",
569
- children: [
570
- e.type === "investment" ? "Investment in" : e.type === "dividend" ? "Dividend from" : "Withdrawal from",
571
- " ",
572
- e.cartName
573
- ]
574
- }), /* @__PURE__ */ b("p", {
575
- className: "text-xs text-text-secondary",
576
- children: a(e.date, {
577
- hour: void 0,
578
- minute: void 0
579
- })
580
- })] })]
581
- }), /* @__PURE__ */ x("div", {
582
- className: "flex items-center justify-between sm:gap-4",
583
- children: [/* @__PURE__ */ x("p", {
584
- className: t("text-sm font-bold", e.type === "dividend" ? "text-status-success-text" : "text-text-primary"),
585
- children: [e.type === "dividend" ? "+" : "-", i(e.amount, { minimumFractionDigits: 0 })]
586
- }), /* @__PURE__ */ b("span", {
587
- className: t("rounded-full px-2.5 py-0.5 text-xs font-medium", e.status === "completed" ? "bg-status-success-bg-subtle/20 text-status-success-text" : e.status === "pending" ? "bg-status-warning-bg-subtle/20 text-status-warning-text" : "bg-status-error-bg-subtle/20 text-status-error-text"),
588
- children: e.status
589
- })]
590
- })]
591
- }, e.id))
592
- })
593
- ]
594
- })]
595
- })
596
- ]
597
- });
598
- }
599
- //#endregion
600
- export { A as InvestorPortfolioPage };
601
-
602
- //# sourceMappingURL=InvestorPortfolioPage.js.map