@burdenoff/microfe-adaptercloud 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 (153) hide show
  1. package/dist/adaptercloud/AdapterCloudRoot.js +65 -121
  2. package/dist/adaptercloud/AdapterCloudRoot.js.map +1 -1
  3. package/dist/adaptercloud/AdapterCloudRoutes.js +70 -182
  4. package/dist/adaptercloud/AdapterCloudRoutes.js.map +1 -1
  5. package/dist/adaptercloud/components/DataState.js +42 -0
  6. package/dist/adaptercloud/components/DataState.js.map +1 -0
  7. package/dist/adaptercloud/components/SeverityBadge.js +12 -0
  8. package/dist/adaptercloud/components/SeverityBadge.js.map +1 -0
  9. package/dist/adaptercloud/components/StatusBadge.js +43 -44
  10. package/dist/adaptercloud/components/StatusBadge.js.map +1 -1
  11. package/dist/adaptercloud/context/AdapterCloudContext.js +22 -30
  12. package/dist/adaptercloud/context/AdapterCloudContext.js.map +1 -1
  13. package/dist/adaptercloud/hooks/useAdapterCloudApi.js +397 -194
  14. package/dist/adaptercloud/hooks/useAdapterCloudApi.js.map +1 -1
  15. package/dist/adaptercloud/index.js +1 -0
  16. package/dist/adaptercloud/pages/OverviewPage.js +334 -0
  17. package/dist/adaptercloud/pages/OverviewPage.js.map +1 -0
  18. package/dist/adaptercloud/pages/adapters/AdapterDetailPage.js +187 -0
  19. package/dist/adaptercloud/pages/adapters/AdapterDetailPage.js.map +1 -0
  20. package/dist/adaptercloud/pages/adapters/AdapterFormPage.js +278 -0
  21. package/dist/adaptercloud/pages/adapters/AdapterFormPage.js.map +1 -0
  22. package/dist/adaptercloud/pages/adapters/AdaptersListPage.js +172 -0
  23. package/dist/adaptercloud/pages/adapters/AdaptersListPage.js.map +1 -0
  24. package/dist/adaptercloud/pages/connections/ConnectionDetailPage.js +247 -0
  25. package/dist/adaptercloud/pages/connections/ConnectionDetailPage.js.map +1 -0
  26. package/dist/adaptercloud/pages/connections/ConnectionFormPage.js +271 -0
  27. package/dist/adaptercloud/pages/connections/ConnectionFormPage.js.map +1 -0
  28. package/dist/adaptercloud/pages/connections/ConnectionsListPage.js +167 -0
  29. package/dist/adaptercloud/pages/connections/ConnectionsListPage.js.map +1 -0
  30. package/dist/adaptercloud/pages/costs/CostsPage.js +169 -0
  31. package/dist/adaptercloud/pages/costs/CostsPage.js.map +1 -0
  32. package/dist/adaptercloud/pages/drift/DriftListPage.js +132 -0
  33. package/dist/adaptercloud/pages/drift/DriftListPage.js.map +1 -0
  34. package/dist/adaptercloud/pages/policies/PoliciesListPage.js +171 -0
  35. package/dist/adaptercloud/pages/policies/PoliciesListPage.js.map +1 -0
  36. package/dist/adaptercloud/pages/policies/PolicyDetailPage.js +185 -0
  37. package/dist/adaptercloud/pages/policies/PolicyDetailPage.js.map +1 -0
  38. package/dist/adaptercloud/pages/policies/PolicyFormPage.js +215 -0
  39. package/dist/adaptercloud/pages/policies/PolicyFormPage.js.map +1 -0
  40. package/dist/adaptercloud/pages/resources/ResourceDetailPage.js +207 -0
  41. package/dist/adaptercloud/pages/resources/ResourceDetailPage.js.map +1 -0
  42. package/dist/adaptercloud/pages/resources/ResourcesListPage.js +182 -0
  43. package/dist/adaptercloud/pages/resources/ResourcesListPage.js.map +1 -0
  44. package/dist/adaptercloud/pages/sync-runs/SyncRunsListPage.js +196 -0
  45. package/dist/adaptercloud/pages/sync-runs/SyncRunsListPage.js.map +1 -0
  46. package/dist/adaptercloud/pages/violations/ViolationsListPage.js +258 -0
  47. package/dist/adaptercloud/pages/violations/ViolationsListPage.js.map +1 -0
  48. package/dist/adaptercloud/store/adaptercloudStore.js +1 -7
  49. package/dist/adaptercloud/store/adaptercloudStore.js.map +1 -1
  50. package/dist/adaptercloud/utils/domain.js +105 -0
  51. package/dist/adaptercloud/utils/domain.js.map +1 -0
  52. package/dist/adaptercloud/utils/formatters.js +1 -12
  53. package/dist/adaptercloud/utils/formatters.js.map +1 -1
  54. package/dist/index.js +5 -4
  55. package/package.json +1 -1
  56. package/dist/adaptercloud/components/InvestmentCard.js +0 -98
  57. package/dist/adaptercloud/components/InvestmentCard.js.map +0 -1
  58. package/dist/adaptercloud/components/RatingDisplay.js +0 -35
  59. package/dist/adaptercloud/components/RatingDisplay.js.map +0 -1
  60. package/dist/adaptercloud/mocks/data.js +0 -1517
  61. package/dist/adaptercloud/mocks/data.js.map +0 -1
  62. package/dist/adaptercloud/mocks/users.js +0 -34
  63. package/dist/adaptercloud/mocks/users.js.map +0 -1
  64. package/dist/adaptercloud/pages/HomePage.js +0 -934
  65. package/dist/adaptercloud/pages/HomePage.js.map +0 -1
  66. package/dist/adaptercloud/pages/admin/AdminAnalyticsPage.js +0 -653
  67. package/dist/adaptercloud/pages/admin/AdminAnalyticsPage.js.map +0 -1
  68. package/dist/adaptercloud/pages/admin/AdminDashboard.js +0 -665
  69. package/dist/adaptercloud/pages/admin/AdminDashboard.js.map +0 -1
  70. package/dist/adaptercloud/pages/admin/AdminFinancialPage.js +0 -426
  71. package/dist/adaptercloud/pages/admin/AdminFinancialPage.js.map +0 -1
  72. package/dist/adaptercloud/pages/admin/AdminOrdersPage.js +0 -665
  73. package/dist/adaptercloud/pages/admin/AdminOrdersPage.js.map +0 -1
  74. package/dist/adaptercloud/pages/admin/AdminProfilePage.js +0 -261
  75. package/dist/adaptercloud/pages/admin/AdminProfilePage.js.map +0 -1
  76. package/dist/adaptercloud/pages/admin/AdminSettingsPage.js +0 -663
  77. package/dist/adaptercloud/pages/admin/AdminSettingsPage.js.map +0 -1
  78. package/dist/adaptercloud/pages/admin/CartManagementPage.js +0 -874
  79. package/dist/adaptercloud/pages/admin/CartManagementPage.js.map +0 -1
  80. package/dist/adaptercloud/pages/admin/UserManagementPage.js +0 -898
  81. package/dist/adaptercloud/pages/admin/UserManagementPage.js.map +0 -1
  82. package/dist/adaptercloud/pages/cart-owner/AnalyticsDashboard.js +0 -840
  83. package/dist/adaptercloud/pages/cart-owner/AnalyticsDashboard.js.map +0 -1
  84. package/dist/adaptercloud/pages/cart-owner/BusinessSettingsPage.js +0 -714
  85. package/dist/adaptercloud/pages/cart-owner/BusinessSettingsPage.js.map +0 -1
  86. package/dist/adaptercloud/pages/cart-owner/CartOwnerDashboard.js +0 -788
  87. package/dist/adaptercloud/pages/cart-owner/CartOwnerDashboard.js.map +0 -1
  88. package/dist/adaptercloud/pages/cart-owner/CartOwnerProfilePage.js +0 -888
  89. package/dist/adaptercloud/pages/cart-owner/CartOwnerProfilePage.js.map +0 -1
  90. package/dist/adaptercloud/pages/cart-owner/CartServiceConfigPage.js +0 -634
  91. package/dist/adaptercloud/pages/cart-owner/CartServiceConfigPage.js.map +0 -1
  92. package/dist/adaptercloud/pages/cart-owner/InventoryManagementPage.js +0 -907
  93. package/dist/adaptercloud/pages/cart-owner/InventoryManagementPage.js.map +0 -1
  94. package/dist/adaptercloud/pages/cart-owner/OrderManagementPage.js +0 -875
  95. package/dist/adaptercloud/pages/cart-owner/OrderManagementPage.js.map +0 -1
  96. package/dist/adaptercloud/pages/cart-owner/StaffManagementPage.js +0 -827
  97. package/dist/adaptercloud/pages/cart-owner/StaffManagementPage.js.map +0 -1
  98. package/dist/adaptercloud/pages/common/HelpSupportPage.js +0 -1329
  99. package/dist/adaptercloud/pages/common/HelpSupportPage.js.map +0 -1
  100. package/dist/adaptercloud/pages/common/NotificationCenterPage.js +0 -671
  101. package/dist/adaptercloud/pages/common/NotificationCenterPage.js.map +0 -1
  102. package/dist/adaptercloud/pages/common/SettingsPage.js +0 -982
  103. package/dist/adaptercloud/pages/common/SettingsPage.js.map +0 -1
  104. package/dist/adaptercloud/pages/customer/BookingDetailsPage.js +0 -596
  105. package/dist/adaptercloud/pages/customer/BookingDetailsPage.js.map +0 -1
  106. package/dist/adaptercloud/pages/customer/CartDetailPage.js +0 -623
  107. package/dist/adaptercloud/pages/customer/CartDetailPage.js.map +0 -1
  108. package/dist/adaptercloud/pages/customer/CartDiscoveryPage.js +0 -552
  109. package/dist/adaptercloud/pages/customer/CartDiscoveryPage.js.map +0 -1
  110. package/dist/adaptercloud/pages/customer/CheckoutPage.js +0 -534
  111. package/dist/adaptercloud/pages/customer/CheckoutPage.js.map +0 -1
  112. package/dist/adaptercloud/pages/customer/CustomerDashboard.js +0 -525
  113. package/dist/adaptercloud/pages/customer/CustomerDashboard.js.map +0 -1
  114. package/dist/adaptercloud/pages/customer/CustomerProfilePage.js +0 -623
  115. package/dist/adaptercloud/pages/customer/CustomerProfilePage.js.map +0 -1
  116. package/dist/adaptercloud/pages/customer/DirectServiceBookingPage.js +0 -629
  117. package/dist/adaptercloud/pages/customer/DirectServiceBookingPage.js.map +0 -1
  118. package/dist/adaptercloud/pages/customer/FavoritesPage.js +0 -480
  119. package/dist/adaptercloud/pages/customer/FavoritesPage.js.map +0 -1
  120. package/dist/adaptercloud/pages/customer/OrderHistoryPage.js +0 -444
  121. package/dist/adaptercloud/pages/customer/OrderHistoryPage.js.map +0 -1
  122. package/dist/adaptercloud/pages/customer/OrderTrackingPage.js +0 -391
  123. package/dist/adaptercloud/pages/customer/OrderTrackingPage.js.map +0 -1
  124. package/dist/adaptercloud/pages/customer/PaymentMethodsPage.js +0 -504
  125. package/dist/adaptercloud/pages/customer/PaymentMethodsPage.js.map +0 -1
  126. package/dist/adaptercloud/pages/customer/ReviewsPage.js +0 -609
  127. package/dist/adaptercloud/pages/customer/ReviewsPage.js.map +0 -1
  128. package/dist/adaptercloud/pages/customer/SavedAddressesPage.js +0 -459
  129. package/dist/adaptercloud/pages/customer/SavedAddressesPage.js.map +0 -1
  130. package/dist/adaptercloud/pages/investor/InvestmentDetailsPage.js +0 -851
  131. package/dist/adaptercloud/pages/investor/InvestmentDetailsPage.js.map +0 -1
  132. package/dist/adaptercloud/pages/investor/InvestmentOpportunitiesPage.js +0 -942
  133. package/dist/adaptercloud/pages/investor/InvestmentOpportunitiesPage.js.map +0 -1
  134. package/dist/adaptercloud/pages/investor/InvestorAnalyticsPage.js +0 -683
  135. package/dist/adaptercloud/pages/investor/InvestorAnalyticsPage.js.map +0 -1
  136. package/dist/adaptercloud/pages/investor/InvestorDashboard.js +0 -452
  137. package/dist/adaptercloud/pages/investor/InvestorDashboard.js.map +0 -1
  138. package/dist/adaptercloud/pages/investor/InvestorInvestmentsPage.js +0 -402
  139. package/dist/adaptercloud/pages/investor/InvestorInvestmentsPage.js.map +0 -1
  140. package/dist/adaptercloud/pages/investor/InvestorPortfolioPage.js +0 -571
  141. package/dist/adaptercloud/pages/investor/InvestorPortfolioPage.js.map +0 -1
  142. package/dist/adaptercloud/pages/investor/InvestorProfilePage.js +0 -1067
  143. package/dist/adaptercloud/pages/investor/InvestorProfilePage.js.map +0 -1
  144. package/dist/adaptercloud/pages/worker/TaskDetailsPage.js +0 -526
  145. package/dist/adaptercloud/pages/worker/TaskDetailsPage.js.map +0 -1
  146. package/dist/adaptercloud/pages/worker/WorkerDashboard.js +0 -659
  147. package/dist/adaptercloud/pages/worker/WorkerDashboard.js.map +0 -1
  148. package/dist/adaptercloud/pages/worker/WorkerOrdersPage.js +0 -678
  149. package/dist/adaptercloud/pages/worker/WorkerOrdersPage.js.map +0 -1
  150. package/dist/adaptercloud/pages/worker/WorkerProfilePage.js +0 -689
  151. package/dist/adaptercloud/pages/worker/WorkerProfilePage.js.map +0 -1
  152. package/dist/adaptercloud/pages/worker/WorkerSchedulePage.js +0 -582
  153. package/dist/adaptercloud/pages/worker/WorkerSchedulePage.js.map +0 -1
@@ -1,942 +0,0 @@
1
- import { useAdapterCloud as e } from "../../context/AdapterCloudContext.js";
2
- import { cn as t } from "../../utils/cn.js";
3
- import { PageLayout as n } from "../../components/PageLayout.js";
4
- import { EmptyState as r } from "../../components/EmptyState.js";
5
- import { formatCurrency as i, formatNumber as a } from "../../utils/formatters.js";
6
- import { useCallback as o, useEffect as s, useMemo as c, useState as l } from "react";
7
- import { CheckCircle2 as u, Eye as d, FileText as f, IndianRupee as p, MapPin as m, Search as h, Star as g, X as _ } from "lucide-react";
8
- import { jsx as v, jsxs as y } from "react/jsx-runtime";
9
- import { EmphasisPanel as b } from "@burdenoff/fe-libs/ui";
10
- //#region src/adaptercloud/pages/investor/InvestmentOpportunitiesPage.tsx
11
- var x = [
12
- {
13
- id: "opp-001",
14
- cartId: "cart-005",
15
- cartName: "Organic Salad Bar",
16
- cartOwner: "Sarah Johnson",
17
- description: "Premium organic salad bar serving health-conscious customers in tech parks. Looking to expand to 3 new locations.",
18
- targetAmount: 5e5,
19
- raisedAmount: 325e3,
20
- minimumInvestment: 25e3,
21
- maximumInvestment: 1e5,
22
- investorCount: 8,
23
- daysLeft: 15,
24
- expectedReturns: 22,
25
- paybackPeriod: 36,
26
- riskLevel: "low",
27
- category: "Healthy Food",
28
- location: "Whitefield, Bangalore",
29
- image: "https://images.unsplash.com/photo-1512621776951-a57141f2eefd?w=400",
30
- businessMetrics: {
31
- monthlyRevenue: 28e4,
32
- monthlyOrders: 1800,
33
- averageOrderValue: 156,
34
- rating: 4.9,
35
- reviewCount: 342,
36
- operatingSince: "2022-03-15"
37
- },
38
- financials: {
39
- grossMargin: 65,
40
- netMargin: 28,
41
- monthlyExpenses: 78e3,
42
- breakEvenAchieved: !0
43
- },
44
- investmentTerms: {
45
- equityOffered: 25,
46
- dividendFrequency: "monthly",
47
- lockInPeriod: 24,
48
- exitOptions: [
49
- "Buyback",
50
- "Secondary Sale",
51
- "IPO"
52
- ]
53
- },
54
- documents: [
55
- {
56
- name: "Business Plan",
57
- type: "PDF",
58
- uploadedOn: "2024-06-01"
59
- },
60
- {
61
- name: "Financial Statements",
62
- type: "PDF",
63
- uploadedOn: "2024-06-01"
64
- },
65
- {
66
- name: "Legal Documents",
67
- type: "PDF",
68
- uploadedOn: "2024-06-01"
69
- }
70
- ],
71
- status: "active"
72
- },
73
- {
74
- id: "opp-002",
75
- cartId: "cart-006",
76
- cartName: "Midnight Munchies",
77
- cartOwner: "Ravi Mehta",
78
- description: "Late-night food delivery cart specializing in comfort food for night shift workers and students. Operating near IT corridors.",
79
- targetAmount: 3e5,
80
- raisedAmount: 18e4,
81
- minimumInvestment: 15e3,
82
- maximumInvestment: 75e3,
83
- investorCount: 12,
84
- daysLeft: 22,
85
- expectedReturns: 18,
86
- paybackPeriod: 30,
87
- riskLevel: "medium",
88
- category: "Fast Food",
89
- location: "Electronic City, Bangalore",
90
- image: "https://images.unsplash.com/photo-1565299624946-b28f40a0ae38?w=400",
91
- businessMetrics: {
92
- monthlyRevenue: 195e3,
93
- monthlyOrders: 1200,
94
- averageOrderValue: 163,
95
- rating: 4.7,
96
- reviewCount: 256,
97
- operatingSince: "2023-01-10"
98
- },
99
- financials: {
100
- grossMargin: 58,
101
- netMargin: 22,
102
- monthlyExpenses: 65e3,
103
- breakEvenAchieved: !0
104
- },
105
- investmentTerms: {
106
- equityOffered: 20,
107
- dividendFrequency: "quarterly",
108
- lockInPeriod: 18,
109
- exitOptions: ["Buyback", "Secondary Sale"]
110
- },
111
- documents: [{
112
- name: "Business Plan",
113
- type: "PDF",
114
- uploadedOn: "2024-06-05"
115
- }, {
116
- name: "Market Analysis",
117
- type: "PDF",
118
- uploadedOn: "2024-06-05"
119
- }],
120
- status: "active"
121
- },
122
- {
123
- id: "opp-003",
124
- cartId: "cart-007",
125
- cartName: "Fusion Street Tacos",
126
- cartOwner: "Maria Rodriguez",
127
- description: "Innovative fusion taco cart combining Mexican and Indian flavors. Winner of Street Food Awards 2023.",
128
- targetAmount: 4e5,
129
- raisedAmount: 4e5,
130
- minimumInvestment: 2e4,
131
- maximumInvestment: 8e4,
132
- investorCount: 15,
133
- daysLeft: 0,
134
- expectedReturns: 25,
135
- paybackPeriod: 24,
136
- riskLevel: "low",
137
- category: "Fusion Food",
138
- location: "Indiranagar, Bangalore",
139
- image: "https://images.unsplash.com/photo-1551504734-5ee1c4a1479b?w=400",
140
- businessMetrics: {
141
- monthlyRevenue: 32e4,
142
- monthlyOrders: 2100,
143
- averageOrderValue: 152,
144
- rating: 4.8,
145
- reviewCount: 512,
146
- operatingSince: "2021-08-20"
147
- },
148
- financials: {
149
- grossMargin: 68,
150
- netMargin: 32,
151
- monthlyExpenses: 85e3,
152
- breakEvenAchieved: !0
153
- },
154
- investmentTerms: {
155
- equityOffered: 30,
156
- dividendFrequency: "monthly",
157
- lockInPeriod: 12,
158
- exitOptions: ["Buyback", "Franchise Conversion"]
159
- },
160
- documents: [{
161
- name: "Business Plan",
162
- type: "PDF",
163
- uploadedOn: "2024-05-20"
164
- }, {
165
- name: "Awards & Recognition",
166
- type: "PDF",
167
- uploadedOn: "2024-05-20"
168
- }],
169
- status: "funded"
170
- },
171
- {
172
- id: "opp-004",
173
- cartId: "cart-008",
174
- cartName: "Bubble Tea Express",
175
- cartOwner: "Chen Wei",
176
- description: "Trendy bubble tea cart with proprietary recipes. Planning expansion through franchise model.",
177
- targetAmount: 6e5,
178
- raisedAmount: 12e4,
179
- minimumInvestment: 3e4,
180
- maximumInvestment: 15e4,
181
- investorCount: 4,
182
- daysLeft: 45,
183
- expectedReturns: 20,
184
- paybackPeriod: 36,
185
- riskLevel: "high",
186
- category: "Beverages",
187
- location: "Koramangala, Bangalore",
188
- image: "https://images.unsplash.com/photo-1558857563-b371033873b8?w=400",
189
- businessMetrics: {
190
- monthlyRevenue: 15e4,
191
- monthlyOrders: 900,
192
- averageOrderValue: 167,
193
- rating: 4.6,
194
- reviewCount: 189,
195
- operatingSince: "2023-11-01"
196
- },
197
- financials: {
198
- grossMargin: 72,
199
- netMargin: 18,
200
- monthlyExpenses: 55e3,
201
- breakEvenAchieved: !1
202
- },
203
- investmentTerms: {
204
- equityOffered: 35,
205
- dividendFrequency: "quarterly",
206
- lockInPeriod: 36,
207
- exitOptions: ["Franchise Sale", "Acquisition"]
208
- },
209
- documents: [{
210
- name: "Franchise Plan",
211
- type: "PDF",
212
- uploadedOn: "2024-06-10"
213
- }, {
214
- name: "Recipe Patents",
215
- type: "PDF",
216
- uploadedOn: "2024-06-10"
217
- }],
218
- status: "active"
219
- }
220
- ], S = {
221
- totalOpportunities: 24,
222
- averageReturns: 21.5,
223
- totalFunded: 156e5,
224
- successRate: 89
225
- };
226
- function C(e) {
227
- switch (e) {
228
- case "low": return "bg-status-success-bg-subtle/20 text-status-success-text";
229
- case "medium": return "bg-status-warning-bg-subtle/20 text-status-warning-text";
230
- case "high": return "bg-status-error-bg-subtle/20 text-status-error-text";
231
- default: return "bg-secondary text-secondary-foreground";
232
- }
233
- }
234
- function w(e) {
235
- switch (e) {
236
- case "low": return "Low Risk";
237
- case "medium": return "Medium Risk";
238
- case "high": return "High Risk";
239
- default: return e;
240
- }
241
- }
242
- function T(e, t) {
243
- return t > 0 ? Math.min(e / t * 100, 100) : 0;
244
- }
245
- function E() {
246
- let { navigateTo: E } = e(), [D, O] = l(!0), [k, A] = l(null), [j, M] = l(!1), [N, P] = l(""), [F, I] = l("idle"), [L, R] = l({
247
- searchQuery: "",
248
- category: "",
249
- riskLevel: "",
250
- minimumAmount: "",
251
- location: "",
252
- sortBy: "featured"
253
- });
254
- s(() => {
255
- let e = setTimeout(() => O(!1), 600);
256
- return () => clearTimeout(e);
257
- }, []);
258
- let z = o((e, t) => {
259
- R((n) => ({
260
- ...n,
261
- [e]: t
262
- }));
263
- }, []), B = c(() => {
264
- let e = [...x];
265
- if (L.searchQuery.trim()) {
266
- let t = L.searchQuery.toLowerCase();
267
- e = e.filter((e) => e.cartName.toLowerCase().includes(t) || e.description.toLowerCase().includes(t) || e.category.toLowerCase().includes(t));
268
- }
269
- if (L.category && (e = e.filter((e) => e.category === L.category)), L.riskLevel && (e = e.filter((e) => e.riskLevel === L.riskLevel)), L.location && (e = e.filter((e) => e.location.includes(L.location))), L.minimumAmount) {
270
- let t = parseInt(L.minimumAmount, 10);
271
- e = e.filter((e) => e.minimumInvestment <= t);
272
- }
273
- switch (L.sortBy) {
274
- case "returns":
275
- e.sort((e, t) => t.expectedReturns - e.expectedReturns);
276
- break;
277
- case "funding":
278
- e.sort((e, t) => t.raisedAmount / t.targetAmount - e.raisedAmount / e.targetAmount);
279
- break;
280
- case "closing":
281
- e.sort((e, t) => e.daysLeft - t.daysLeft);
282
- break;
283
- case "minimum":
284
- e.sort((e, t) => e.minimumInvestment - t.minimumInvestment);
285
- break;
286
- default: break;
287
- }
288
- return e;
289
- }, [L]), V = o(() => {
290
- if (!k || !N) return;
291
- let e = parseInt(N, 10);
292
- if (!isNaN(e)) {
293
- if (e < k.minimumInvestment) {
294
- I("error");
295
- return;
296
- }
297
- if (e > k.maximumInvestment) {
298
- I("error");
299
- return;
300
- }
301
- I("success"), setTimeout(() => {
302
- M(!1), P(""), I("idle"), E("/investor/portfolio");
303
- }, 1500);
304
- }
305
- }, [
306
- k,
307
- N,
308
- E
309
- ]), H = o((e) => {
310
- A(e), P(""), I("idle"), M(!0);
311
- }, []);
312
- return D ? /* @__PURE__ */ v(n, {
313
- title: "Investment Opportunities",
314
- description: "Loading opportunities...",
315
- children: /* @__PURE__ */ v("div", {
316
- className: "flex items-center justify-center py-20",
317
- children: /* @__PURE__ */ y("div", {
318
- className: "text-center",
319
- children: [/* @__PURE__ */ v("div", { className: "mx-auto mb-4 h-12 w-12 animate-spin rounded-full border-b-2 border-primary" }), /* @__PURE__ */ v("p", {
320
- className: "text-sm text-text-secondary",
321
- children: "Loading opportunities..."
322
- })]
323
- })
324
- })
325
- }) : /* @__PURE__ */ y(n, {
326
- title: "Investment Opportunities",
327
- description: "Discover and invest in growing local businesses",
328
- purpose: "Browse carts that are raising funds to grow — compare their projected returns, funding progress, and risk, then back the ones you believe in. This is where you find your next investment.",
329
- actions: /* @__PURE__ */ y("span", {
330
- className: "text-sm text-text-secondary",
331
- children: [B.length, " opportunities"]
332
- }),
333
- children: [
334
- /* @__PURE__ */ v(b, { children: /* @__PURE__ */ y("div", {
335
- className: "grid grid-cols-2 gap-3 sm:gap-4 lg:grid-cols-4",
336
- children: [
337
- /* @__PURE__ */ y("div", {
338
- className: "rounded-lg border border-border-subtle bg-bg-surface p-3 sm:p-4",
339
- children: [/* @__PURE__ */ v("p", {
340
- className: "text-xs text-text-secondary",
341
- children: "Active Opportunities"
342
- }), /* @__PURE__ */ v("p", {
343
- className: "text-lg font-bold text-text-primary sm:text-2xl",
344
- children: S.totalOpportunities
345
- })]
346
- }),
347
- /* @__PURE__ */ y("div", {
348
- className: "rounded-lg border border-border-subtle bg-bg-surface p-3 sm:p-4",
349
- children: [/* @__PURE__ */ v("p", {
350
- className: "text-xs text-text-secondary",
351
- children: "Average Returns"
352
- }), /* @__PURE__ */ y("p", {
353
- className: "text-lg font-bold text-status-success-text sm:text-2xl",
354
- children: [S.averageReturns, "%"]
355
- })]
356
- }),
357
- /* @__PURE__ */ y("div", {
358
- className: "rounded-lg border border-border-subtle bg-bg-surface p-3 sm:p-4",
359
- children: [/* @__PURE__ */ v("p", {
360
- className: "text-xs text-text-secondary",
361
- children: "Total Funded"
362
- }), /* @__PURE__ */ v("p", {
363
- className: "text-lg font-bold text-text-primary sm:text-2xl",
364
- children: i(S.totalFunded, {
365
- minimumFractionDigits: 0,
366
- notation: "compact"
367
- })
368
- })]
369
- }),
370
- /* @__PURE__ */ y("div", {
371
- className: "rounded-lg border border-border-subtle bg-bg-surface p-3 sm:p-4",
372
- children: [/* @__PURE__ */ v("p", {
373
- className: "text-xs text-text-secondary",
374
- children: "Success Rate"
375
- }), /* @__PURE__ */ y("p", {
376
- className: "text-lg font-bold text-text-primary sm:text-2xl",
377
- children: [S.successRate, "%"]
378
- })]
379
- })
380
- ]
381
- }) }),
382
- /* @__PURE__ */ v("div", {
383
- className: "mt-6 rounded-lg border border-border-seam bg-bg-surface p-4 sm:p-6 bg-gloss-card shadow-pop",
384
- children: /* @__PURE__ */ y("div", {
385
- className: "grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-6",
386
- children: [
387
- /* @__PURE__ */ y("div", {
388
- className: "relative sm:col-span-2 lg:col-span-1",
389
- children: [/* @__PURE__ */ v(h, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary" }), /* @__PURE__ */ v("input", {
390
- type: "text",
391
- placeholder: "Search opportunities...",
392
- value: L.searchQuery,
393
- onChange: (e) => z("searchQuery", e.target.value),
394
- className: "w-full rounded-lg border border-border-subtle bg-bg-surface py-2 pl-10 pr-4 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]"
395
- })]
396
- }),
397
- /* @__PURE__ */ y("select", {
398
- value: L.category,
399
- onChange: (e) => z("category", e.target.value),
400
- 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)]",
401
- children: [
402
- /* @__PURE__ */ v("option", {
403
- value: "",
404
- children: "All Categories"
405
- }),
406
- /* @__PURE__ */ v("option", {
407
- value: "Healthy Food",
408
- children: "Healthy Food"
409
- }),
410
- /* @__PURE__ */ v("option", {
411
- value: "Fast Food",
412
- children: "Fast Food"
413
- }),
414
- /* @__PURE__ */ v("option", {
415
- value: "Fusion Food",
416
- children: "Fusion Food"
417
- }),
418
- /* @__PURE__ */ v("option", {
419
- value: "Beverages",
420
- children: "Beverages"
421
- }),
422
- /* @__PURE__ */ v("option", {
423
- value: "Street Food",
424
- children: "Street Food"
425
- })
426
- ]
427
- }),
428
- /* @__PURE__ */ y("select", {
429
- value: L.riskLevel,
430
- onChange: (e) => z("riskLevel", e.target.value),
431
- 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)]",
432
- children: [
433
- /* @__PURE__ */ v("option", {
434
- value: "",
435
- children: "All Risk Levels"
436
- }),
437
- /* @__PURE__ */ v("option", {
438
- value: "low",
439
- children: "Low Risk"
440
- }),
441
- /* @__PURE__ */ v("option", {
442
- value: "medium",
443
- children: "Medium Risk"
444
- }),
445
- /* @__PURE__ */ v("option", {
446
- value: "high",
447
- children: "High Risk"
448
- })
449
- ]
450
- }),
451
- /* @__PURE__ */ y("select", {
452
- value: L.minimumAmount,
453
- onChange: (e) => z("minimumAmount", e.target.value),
454
- 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)]",
455
- children: [
456
- /* @__PURE__ */ v("option", {
457
- value: "",
458
- children: "Any Amount"
459
- }),
460
- /* @__PURE__ */ v("option", {
461
- value: "15000",
462
- children: "Under ₹15,000"
463
- }),
464
- /* @__PURE__ */ v("option", {
465
- value: "25000",
466
- children: "Under ₹25,000"
467
- }),
468
- /* @__PURE__ */ v("option", {
469
- value: "50000",
470
- children: "Under ₹50,000"
471
- }),
472
- /* @__PURE__ */ v("option", {
473
- value: "100000",
474
- children: "Under ₹1,00,000"
475
- })
476
- ]
477
- }),
478
- /* @__PURE__ */ y("select", {
479
- value: L.location,
480
- onChange: (e) => z("location", e.target.value),
481
- 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)]",
482
- children: [
483
- /* @__PURE__ */ v("option", {
484
- value: "",
485
- children: "All Locations"
486
- }),
487
- /* @__PURE__ */ v("option", {
488
- value: "Whitefield",
489
- children: "Whitefield"
490
- }),
491
- /* @__PURE__ */ v("option", {
492
- value: "Koramangala",
493
- children: "Koramangala"
494
- }),
495
- /* @__PURE__ */ v("option", {
496
- value: "Indiranagar",
497
- children: "Indiranagar"
498
- }),
499
- /* @__PURE__ */ v("option", {
500
- value: "Electronic City",
501
- children: "Electronic City"
502
- })
503
- ]
504
- }),
505
- /* @__PURE__ */ y("select", {
506
- value: L.sortBy,
507
- onChange: (e) => z("sortBy", e.target.value),
508
- 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)]",
509
- children: [
510
- /* @__PURE__ */ v("option", {
511
- value: "featured",
512
- children: "Featured"
513
- }),
514
- /* @__PURE__ */ v("option", {
515
- value: "returns",
516
- children: "Highest Returns"
517
- }),
518
- /* @__PURE__ */ v("option", {
519
- value: "funding",
520
- children: "Most Funded"
521
- }),
522
- /* @__PURE__ */ v("option", {
523
- value: "closing",
524
- children: "Closing Soon"
525
- }),
526
- /* @__PURE__ */ v("option", {
527
- value: "minimum",
528
- children: "Lowest Minimum"
529
- })
530
- ]
531
- })
532
- ]
533
- })
534
- }),
535
- B.length === 0 ? /* @__PURE__ */ v("div", {
536
- className: "mt-6",
537
- children: /* @__PURE__ */ v(r, {
538
- illustration: "empty-search",
539
- icon: /* @__PURE__ */ v(h, { className: "h-10 w-10" }),
540
- title: "No opportunities found",
541
- description: "Try adjusting your filters to find more opportunities",
542
- action: /* @__PURE__ */ v("button", {
543
- type: "button",
544
- onClick: () => R({
545
- searchQuery: "",
546
- category: "",
547
- riskLevel: "",
548
- minimumAmount: "",
549
- location: "",
550
- sortBy: "featured"
551
- }),
552
- 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",
553
- children: "Clear Filters"
554
- })
555
- })
556
- }) : /* @__PURE__ */ v("div", {
557
- className: "mt-6 grid grid-cols-1 gap-4 lg:grid-cols-2",
558
- children: B.map((e) => {
559
- let n = T(e.raisedAmount, e.targetAmount);
560
- return /* @__PURE__ */ y("div", {
561
- className: "rounded-lg border border-border-subtle bg-bg-surface shadow-sm hover:shadow-md transition-shadow",
562
- children: [/* @__PURE__ */ y("div", {
563
- className: "relative",
564
- children: [
565
- /* @__PURE__ */ v("div", {
566
- className: "h-40 w-full overflow-hidden rounded-t-lg bg-bg-sunken sm:h-48",
567
- children: /* @__PURE__ */ v("img", {
568
- src: e.image,
569
- alt: e.cartName,
570
- className: "h-full w-full object-cover",
571
- loading: "lazy"
572
- })
573
- }),
574
- e.status === "funded" && /* @__PURE__ */ v("div", {
575
- className: "absolute right-2 top-2 rounded-full bg-status-success-bg-subtle px-2 py-1 text-xs font-medium text-white sm:right-4 sm:top-4 sm:px-3",
576
- children: "Fully Funded"
577
- }),
578
- e.daysLeft > 0 && e.daysLeft <= 7 && /* @__PURE__ */ y("div", {
579
- className: "absolute left-2 top-2 rounded-full bg-status-error-bg-subtle px-2 py-1 text-xs font-medium text-white sm:left-4 sm:top-4 sm:px-3",
580
- children: [e.daysLeft, " days left"]
581
- })
582
- ]
583
- }), /* @__PURE__ */ y("div", {
584
- className: "p-4 sm:p-6",
585
- children: [
586
- /* @__PURE__ */ y("div", {
587
- className: "mb-4 flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",
588
- children: [/* @__PURE__ */ y("div", {
589
- className: "flex-1",
590
- children: [
591
- /* @__PURE__ */ v("h3", {
592
- className: "text-base font-semibold text-text-primary sm:text-xl",
593
- children: e.cartName
594
- }),
595
- /* @__PURE__ */ y("p", {
596
- className: "text-xs text-text-secondary sm:text-sm",
597
- children: ["by ", e.cartOwner]
598
- }),
599
- /* @__PURE__ */ y("div", {
600
- className: "mt-2 flex flex-wrap items-center gap-2",
601
- children: [/* @__PURE__ */ v("span", {
602
- className: "text-xs text-text-secondary sm:text-sm",
603
- children: e.category
604
- }), /* @__PURE__ */ v("span", {
605
- className: t("rounded-full px-2 py-0.5 text-xs font-medium", C(e.riskLevel)),
606
- children: w(e.riskLevel)
607
- })]
608
- })
609
- ]
610
- }), /* @__PURE__ */ y("div", {
611
- className: "text-left sm:text-right",
612
- children: [/* @__PURE__ */ y("p", {
613
- className: "text-xl font-bold text-status-success-text sm:text-2xl",
614
- children: [e.expectedReturns, "%"]
615
- }), /* @__PURE__ */ v("p", {
616
- className: "text-xs text-text-secondary",
617
- children: "Expected Returns"
618
- })]
619
- })]
620
- }),
621
- /* @__PURE__ */ v("p", {
622
- className: "mb-4 text-sm leading-relaxed text-text-secondary line-clamp-2",
623
- children: e.description
624
- }),
625
- /* @__PURE__ */ y("div", {
626
- className: "mb-4",
627
- children: [
628
- /* @__PURE__ */ y("div", {
629
- className: "mb-1 flex justify-between text-xs sm:text-sm",
630
- children: [/* @__PURE__ */ y("span", {
631
- className: "font-medium text-text-primary",
632
- children: [
633
- i(e.raisedAmount, { minimumFractionDigits: 0 }),
634
- " ",
635
- "raised"
636
- ]
637
- }), /* @__PURE__ */ y("span", {
638
- className: "text-text-secondary",
639
- children: ["of ", i(e.targetAmount, { minimumFractionDigits: 0 })]
640
- })]
641
- }),
642
- /* @__PURE__ */ v("div", {
643
- className: "h-2 w-full overflow-hidden rounded-full bg-bg-sunken",
644
- children: /* @__PURE__ */ v("div", {
645
- className: "h-full rounded-full bg-action-primary-bg transition-all duration-300",
646
- style: { width: `${n}%` }
647
- })
648
- }),
649
- /* @__PURE__ */ y("div", {
650
- className: "mt-1 flex justify-between text-xs text-text-secondary",
651
- children: [/* @__PURE__ */ y("span", { children: [e.investorCount, " investors"] }), /* @__PURE__ */ y("span", { children: [n.toFixed(0), "% funded"] })]
652
- })
653
- ]
654
- }),
655
- /* @__PURE__ */ y("div", {
656
- className: "mb-4 grid grid-cols-3 gap-2 text-center sm:gap-4",
657
- children: [
658
- /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
659
- className: "text-sm font-bold text-text-primary sm:text-lg",
660
- children: i(e.minimumInvestment, { minimumFractionDigits: 0 })
661
- }), /* @__PURE__ */ v("p", {
662
- className: "text-xs text-text-secondary",
663
- children: "Min Investment"
664
- })] }),
665
- /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ y("p", {
666
- className: "text-sm font-bold text-text-primary sm:text-lg",
667
- children: [e.paybackPeriod, " mo"]
668
- }), /* @__PURE__ */ v("p", {
669
- className: "text-xs text-text-secondary",
670
- children: "Payback Period"
671
- })] }),
672
- /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ y("div", {
673
- className: "flex items-center justify-center gap-1",
674
- children: [/* @__PURE__ */ v(g, { className: "h-3.5 w-3.5 fill-status-warning-text text-status-warning-text" }), /* @__PURE__ */ v("p", {
675
- className: "text-sm font-bold text-text-primary sm:text-lg",
676
- children: e.businessMetrics.rating
677
- })]
678
- }), /* @__PURE__ */ v("p", {
679
- className: "text-xs text-text-secondary",
680
- children: "Rating"
681
- })] })
682
- ]
683
- }),
684
- /* @__PURE__ */ y("div", {
685
- className: "mb-4 border-t border-border-subtle pt-3 sm:pt-4",
686
- children: [/* @__PURE__ */ v("p", {
687
- className: "mb-2 text-xs font-medium text-text-secondary sm:text-sm",
688
- children: "Business Performance"
689
- }), /* @__PURE__ */ y("div", {
690
- className: "grid grid-cols-1 gap-2 text-xs sm:grid-cols-2 sm:text-sm",
691
- children: [
692
- /* @__PURE__ */ y("div", {
693
- className: "flex justify-between",
694
- children: [/* @__PURE__ */ v("span", {
695
- className: "text-text-secondary",
696
- children: "Monthly Revenue:"
697
- }), /* @__PURE__ */ v("span", {
698
- className: "font-medium text-text-primary",
699
- children: i(e.businessMetrics.monthlyRevenue, { minimumFractionDigits: 0 })
700
- })]
701
- }),
702
- /* @__PURE__ */ y("div", {
703
- className: "flex justify-between",
704
- children: [/* @__PURE__ */ v("span", {
705
- className: "text-text-secondary",
706
- children: "Gross Margin:"
707
- }), /* @__PURE__ */ y("span", {
708
- className: "font-medium text-text-primary",
709
- children: [e.financials.grossMargin, "%"]
710
- })]
711
- }),
712
- /* @__PURE__ */ y("div", {
713
- className: "flex justify-between",
714
- children: [/* @__PURE__ */ v("span", {
715
- className: "text-text-secondary",
716
- children: "Monthly Orders:"
717
- }), /* @__PURE__ */ v("span", {
718
- className: "font-medium text-text-primary",
719
- children: a(e.businessMetrics.monthlyOrders)
720
- })]
721
- }),
722
- /* @__PURE__ */ y("div", {
723
- className: "flex justify-between",
724
- children: [/* @__PURE__ */ v("span", {
725
- className: "text-text-secondary",
726
- children: "Net Margin:"
727
- }), /* @__PURE__ */ y("span", {
728
- className: "font-medium text-text-primary",
729
- children: [e.financials.netMargin, "%"]
730
- })]
731
- })
732
- ]
733
- })]
734
- }),
735
- /* @__PURE__ */ v("div", {
736
- className: "mb-4 border-t border-border-subtle pt-3",
737
- children: /* @__PURE__ */ y("div", {
738
- className: "flex items-center gap-1.5 text-xs text-text-secondary",
739
- children: [/* @__PURE__ */ v(f, { className: "h-3.5 w-3.5" }), /* @__PURE__ */ y("span", { children: [e.documents.length, " documents available"] })]
740
- })
741
- }),
742
- /* @__PURE__ */ y("div", {
743
- className: "mb-4 flex items-center gap-1.5 text-xs text-text-secondary",
744
- children: [/* @__PURE__ */ v(m, { className: "h-3.5 w-3.5" }), /* @__PURE__ */ v("span", { children: e.location })]
745
- }),
746
- /* @__PURE__ */ y("div", {
747
- className: "flex flex-col gap-2 sm:flex-row sm:gap-3",
748
- children: [/* @__PURE__ */ v("button", {
749
- type: "button",
750
- onClick: () => H(e),
751
- disabled: e.status === "funded",
752
- className: t("flex-1 rounded-lg px-4 py-2.5 text-sm font-medium transition-colors", e.status === "funded" ? "cursor-not-allowed bg-bg-sunken text-text-secondary" : "bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg/90"),
753
- children: e.status === "funded" ? "Fully Funded" : "Invest Now"
754
- }), /* @__PURE__ */ y("button", {
755
- type: "button",
756
- onClick: () => E(`/investor/opportunities/${e.id}`),
757
- className: "flex flex-1 items-center justify-center gap-2 rounded-lg border border-border-subtle px-4 py-2.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
758
- children: [/* @__PURE__ */ v(d, { className: "h-4 w-4" }), "View Details"]
759
- })]
760
- })
761
- ]
762
- })]
763
- }, e.id);
764
- })
765
- }),
766
- j && k && /* @__PURE__ */ v("div", {
767
- className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
768
- children: /* @__PURE__ */ y("div", {
769
- className: "relative max-h-[90vh] w-full max-w-md overflow-y-auto rounded-lg border border-border-seam bg-bg-surface p-4 sm:p-6 bg-gloss-card shadow-pop",
770
- children: [
771
- /* @__PURE__ */ v("button", {
772
- type: "button",
773
- onClick: () => {
774
- M(!1), P(""), I("idle");
775
- },
776
- className: "absolute right-3 top-3 rounded-lg p-1 text-text-secondary hover:bg-accent transition-colors",
777
- children: /* @__PURE__ */ v(_, { className: "h-5 w-5" })
778
- }),
779
- /* @__PURE__ */ y("h3", {
780
- className: "mb-4 text-base font-semibold text-text-primary sm:text-lg",
781
- children: ["Invest in ", k.cartName]
782
- }),
783
- F === "success" ? /* @__PURE__ */ y("div", {
784
- className: "py-8 text-center",
785
- children: [
786
- /* @__PURE__ */ v(u, { className: "mx-auto mb-3 h-12 w-12 text-status-success-text" }),
787
- /* @__PURE__ */ v("p", {
788
- className: "text-sm font-medium text-text-primary",
789
- children: "Investment successful!"
790
- }),
791
- /* @__PURE__ */ v("p", {
792
- className: "mt-1 text-xs text-text-secondary",
793
- children: "Redirecting to your portfolio..."
794
- })
795
- ]
796
- }) : /* @__PURE__ */ y("div", {
797
- className: "space-y-4",
798
- children: [
799
- /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
800
- className: "mb-1 text-xs text-text-secondary sm:text-sm",
801
- children: "Investment Range"
802
- }), /* @__PURE__ */ y("p", {
803
- className: "text-sm font-medium text-text-primary sm:text-base",
804
- children: [
805
- i(k.minimumInvestment, { minimumFractionDigits: 0 }),
806
- " ",
807
- "-",
808
- " ",
809
- i(k.maximumInvestment, { minimumFractionDigits: 0 })
810
- ]
811
- })] }),
812
- /* @__PURE__ */ y("div", { children: [
813
- /* @__PURE__ */ v("label", {
814
- className: "mb-1 block text-xs font-medium text-text-primary sm:text-sm",
815
- children: "Investment Amount"
816
- }),
817
- /* @__PURE__ */ y("div", {
818
- className: "relative",
819
- children: [/* @__PURE__ */ v(p, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary" }), /* @__PURE__ */ v("input", {
820
- type: "number",
821
- value: N,
822
- onChange: (e) => {
823
- P(e.target.value), I("idle");
824
- },
825
- placeholder: "Enter amount",
826
- className: "w-full rounded-lg border border-border-subtle bg-bg-surface py-2 pl-10 pr-4 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]"
827
- })]
828
- }),
829
- F === "error" && /* @__PURE__ */ y("p", {
830
- className: "mt-1 text-xs text-status-error-text",
831
- children: [
832
- "Amount must be between",
833
- " ",
834
- i(k.minimumInvestment, { minimumFractionDigits: 0 }),
835
- " ",
836
- "and",
837
- " ",
838
- i(k.maximumInvestment, { minimumFractionDigits: 0 })
839
- ]
840
- })
841
- ] }),
842
- N && !isNaN(parseInt(N, 10)) && parseInt(N, 10) > 0 && /* @__PURE__ */ y("div", {
843
- className: "rounded-lg border border-border-subtle bg-bg-sunken/50 p-3 sm:p-4",
844
- children: [/* @__PURE__ */ v("p", {
845
- className: "mb-2 text-xs text-text-secondary sm:text-sm",
846
- children: "Expected Returns"
847
- }), /* @__PURE__ */ y("div", {
848
- className: "space-y-1.5",
849
- children: [
850
- /* @__PURE__ */ y("div", {
851
- className: "flex justify-between",
852
- children: [/* @__PURE__ */ v("span", {
853
- className: "text-xs text-text-primary sm:text-sm",
854
- children: "Investment:"
855
- }), /* @__PURE__ */ v("span", {
856
- className: "text-xs font-medium text-text-primary sm:text-sm",
857
- children: i(parseInt(N, 10), { minimumFractionDigits: 0 })
858
- })]
859
- }),
860
- /* @__PURE__ */ y("div", {
861
- className: "flex justify-between",
862
- children: [/* @__PURE__ */ y("span", {
863
- className: "text-xs text-text-primary sm:text-sm",
864
- children: [
865
- "Expected Return (",
866
- k.expectedReturns,
867
- "%):"
868
- ]
869
- }), /* @__PURE__ */ y("span", {
870
- className: "text-xs font-medium text-status-success-text sm:text-sm",
871
- children: ["+", i(parseInt(N, 10) * k.expectedReturns / 100, { minimumFractionDigits: 0 })]
872
- })]
873
- }),
874
- /* @__PURE__ */ y("div", {
875
- className: "flex justify-between border-t border-border-subtle pt-2",
876
- children: [/* @__PURE__ */ v("span", {
877
- className: "text-xs font-medium text-text-primary sm:text-sm",
878
- children: "Total Value:"
879
- }), /* @__PURE__ */ v("span", {
880
- className: "text-xs font-bold text-text-primary sm:text-sm",
881
- children: i(parseInt(N, 10) * (1 + k.expectedReturns / 100), { minimumFractionDigits: 0 })
882
- })]
883
- })
884
- ]
885
- })]
886
- }),
887
- /* @__PURE__ */ y("div", {
888
- className: "space-y-1 text-xs text-text-secondary sm:text-sm",
889
- children: [
890
- /* @__PURE__ */ y("p", { children: [
891
- "• Minimum lock-in period:",
892
- " ",
893
- k.investmentTerms.lockInPeriod,
894
- " months"
895
- ] }),
896
- /* @__PURE__ */ y("p", { children: [
897
- "• Dividend frequency:",
898
- " ",
899
- k.investmentTerms.dividendFrequency
900
- ] }),
901
- /* @__PURE__ */ y("p", { children: [
902
- "• Your equity stake:",
903
- " ",
904
- ((parseInt(N, 10) || 0) / k.targetAmount * k.investmentTerms.equityOffered).toFixed(2),
905
- "%"
906
- ] }),
907
- /* @__PURE__ */ y("p", { children: [
908
- "• Exit options:",
909
- " ",
910
- k.investmentTerms.exitOptions.join(", ")
911
- ] })
912
- ]
913
- }),
914
- /* @__PURE__ */ y("div", {
915
- className: "flex flex-col gap-2 pt-2 sm:flex-row sm:gap-3",
916
- children: [/* @__PURE__ */ v("button", {
917
- type: "button",
918
- onClick: () => {
919
- M(!1), P(""), I("idle");
920
- },
921
- className: "flex-1 rounded-lg border border-border-subtle px-4 py-2.5 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
922
- children: "Cancel"
923
- }), /* @__PURE__ */ v("button", {
924
- type: "button",
925
- onClick: V,
926
- disabled: !N || isNaN(parseInt(N, 10)) || parseInt(N, 10) < k.minimumInvestment,
927
- className: t("flex-1 rounded-lg px-4 py-2.5 text-sm font-medium transition-colors", !N || isNaN(parseInt(N, 10)) || parseInt(N, 10) < k.minimumInvestment ? "cursor-not-allowed bg-bg-sunken text-text-secondary" : "bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg/90"),
928
- children: "Confirm Investment"
929
- })]
930
- })
931
- ]
932
- })
933
- ]
934
- })
935
- })
936
- ]
937
- });
938
- }
939
- //#endregion
940
- export { E as InvestmentOpportunitiesPage };
941
-
942
- //# sourceMappingURL=InvestmentOpportunitiesPage.js.map