@burdenoff/microfe-atheletebridge 2026.624.1 → 2026.625.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.
- package/dist/atheletebridge/components/EmptyState.js +18 -11
- package/dist/atheletebridge/components/EmptyState.js.map +1 -1
- package/dist/atheletebridge/components/InvestmentCard.js +7 -7
- package/dist/atheletebridge/components/InvestmentCard.js.map +1 -1
- package/dist/atheletebridge/components/MetricsCard.js +20 -14
- package/dist/atheletebridge/components/MetricsCard.js.map +1 -1
- package/dist/atheletebridge/components/PageLayout.js +30 -19
- package/dist/atheletebridge/components/PageLayout.js.map +1 -1
- package/dist/atheletebridge/pages/HomePage.js +210 -195
- package/dist/atheletebridge/pages/HomePage.js.map +1 -1
- package/dist/atheletebridge/pages/admin/AdminAnalyticsPage.js +90 -82
- package/dist/atheletebridge/pages/admin/AdminAnalyticsPage.js.map +1 -1
- package/dist/atheletebridge/pages/admin/AdminDashboard.js +76 -44
- package/dist/atheletebridge/pages/admin/AdminDashboard.js.map +1 -1
- package/dist/atheletebridge/pages/admin/AdminFinancialPage.js +63 -55
- package/dist/atheletebridge/pages/admin/AdminFinancialPage.js.map +1 -1
- package/dist/atheletebridge/pages/admin/AdminOrdersPage.js +244 -237
- package/dist/atheletebridge/pages/admin/AdminOrdersPage.js.map +1 -1
- package/dist/atheletebridge/pages/admin/AdminProfilePage.js +59 -57
- package/dist/atheletebridge/pages/admin/AdminProfilePage.js.map +1 -1
- package/dist/atheletebridge/pages/admin/AdminSettingsPage.js +110 -106
- package/dist/atheletebridge/pages/admin/AdminSettingsPage.js.map +1 -1
- package/dist/atheletebridge/pages/admin/CartManagementPage.js +166 -159
- package/dist/atheletebridge/pages/admin/CartManagementPage.js.map +1 -1
- package/dist/atheletebridge/pages/admin/UserManagementPage.js +310 -303
- package/dist/atheletebridge/pages/admin/UserManagementPage.js.map +1 -1
- package/dist/atheletebridge/pages/cart-owner/AnalyticsDashboard.js +86 -81
- package/dist/atheletebridge/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
- package/dist/atheletebridge/pages/cart-owner/BusinessSettingsPage.js +170 -166
- package/dist/atheletebridge/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
- package/dist/atheletebridge/pages/cart-owner/CartOwnerDashboard.js +141 -109
- package/dist/atheletebridge/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
- package/dist/atheletebridge/pages/cart-owner/CartOwnerProfilePage.js +139 -134
- package/dist/atheletebridge/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
- package/dist/atheletebridge/pages/cart-owner/CartServiceConfigPage.js +109 -107
- package/dist/atheletebridge/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
- package/dist/atheletebridge/pages/cart-owner/InventoryManagementPage.js +318 -318
- package/dist/atheletebridge/pages/cart-owner/InventoryManagementPage.js.map +1 -1
- package/dist/atheletebridge/pages/cart-owner/OrderManagementPage.js +262 -262
- package/dist/atheletebridge/pages/cart-owner/OrderManagementPage.js.map +1 -1
- package/dist/atheletebridge/pages/cart-owner/StaffManagementPage.js +170 -162
- package/dist/atheletebridge/pages/cart-owner/StaffManagementPage.js.map +1 -1
- package/dist/atheletebridge/pages/common/HelpSupportPage.js +292 -298
- package/dist/atheletebridge/pages/common/HelpSupportPage.js.map +1 -1
- package/dist/atheletebridge/pages/common/NotificationCenterPage.js +100 -91
- package/dist/atheletebridge/pages/common/NotificationCenterPage.js.map +1 -1
- package/dist/atheletebridge/pages/common/SettingsPage.js +742 -734
- package/dist/atheletebridge/pages/common/SettingsPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/BookingDetailsPage.js +365 -356
- package/dist/atheletebridge/pages/customer/BookingDetailsPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/CartDetailPage.js +277 -241
- package/dist/atheletebridge/pages/customer/CartDetailPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/CartDiscoveryPage.js +261 -250
- package/dist/atheletebridge/pages/customer/CartDiscoveryPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/CheckoutPage.js +93 -89
- package/dist/atheletebridge/pages/customer/CheckoutPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/CustomerDashboard.js +430 -387
- package/dist/atheletebridge/pages/customer/CustomerDashboard.js.map +1 -1
- package/dist/atheletebridge/pages/customer/CustomerProfilePage.js +526 -490
- package/dist/atheletebridge/pages/customer/CustomerProfilePage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/DirectServiceBookingPage.js +524 -512
- package/dist/atheletebridge/pages/customer/DirectServiceBookingPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/FavoritesPage.js +84 -75
- package/dist/atheletebridge/pages/customer/FavoritesPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/OrderHistoryPage.js +117 -108
- package/dist/atheletebridge/pages/customer/OrderHistoryPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/OrderTrackingPage.js +66 -61
- package/dist/atheletebridge/pages/customer/OrderTrackingPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/PaymentMethodsPage.js +81 -75
- package/dist/atheletebridge/pages/customer/PaymentMethodsPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/ReviewsPage.js +81 -72
- package/dist/atheletebridge/pages/customer/ReviewsPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/SavedAddressesPage.js +63 -55
- package/dist/atheletebridge/pages/customer/SavedAddressesPage.js.map +1 -1
- package/dist/atheletebridge/pages/investor/InvestmentDetailsPage.js +93 -61
- package/dist/atheletebridge/pages/investor/InvestmentDetailsPage.js.map +1 -1
- package/dist/atheletebridge/pages/investor/InvestmentOpportunitiesPage.js +90 -84
- package/dist/atheletebridge/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
- package/dist/atheletebridge/pages/investor/InvestorAnalyticsPage.js +60 -55
- package/dist/atheletebridge/pages/investor/InvestorAnalyticsPage.js.map +1 -1
- package/dist/atheletebridge/pages/investor/InvestorDashboard.js +345 -311
- package/dist/atheletebridge/pages/investor/InvestorDashboard.js.map +1 -1
- package/dist/atheletebridge/pages/investor/InvestorInvestmentsPage.js +38 -32
- package/dist/atheletebridge/pages/investor/InvestorInvestmentsPage.js.map +1 -1
- package/dist/atheletebridge/pages/investor/InvestorPortfolioPage.js +75 -67
- package/dist/atheletebridge/pages/investor/InvestorPortfolioPage.js.map +1 -1
- package/dist/atheletebridge/pages/investor/InvestorProfilePage.js +385 -381
- package/dist/atheletebridge/pages/investor/InvestorProfilePage.js.map +1 -1
- package/dist/atheletebridge/pages/worker/TaskDetailsPage.js +353 -319
- package/dist/atheletebridge/pages/worker/TaskDetailsPage.js.map +1 -1
- package/dist/atheletebridge/pages/worker/WorkerDashboard.js +353 -318
- package/dist/atheletebridge/pages/worker/WorkerDashboard.js.map +1 -1
- package/dist/atheletebridge/pages/worker/WorkerOrdersPage.js +134 -128
- package/dist/atheletebridge/pages/worker/WorkerOrdersPage.js.map +1 -1
- package/dist/atheletebridge/pages/worker/WorkerProfilePage.js +81 -77
- package/dist/atheletebridge/pages/worker/WorkerProfilePage.js.map +1 -1
- package/dist/atheletebridge/pages/worker/WorkerSchedulePage.js +352 -342
- package/dist/atheletebridge/pages/worker/WorkerSchedulePage.js.map +1 -1
- package/package.json +3 -3
|
@@ -6,8 +6,9 @@ import { formatCurrency as i, formatNumber as a } from "../../utils/formatters.j
|
|
|
6
6
|
import { useCallback as o, useEffect as s, useMemo as c, useState as l } from "react";
|
|
7
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
8
|
import { jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
9
|
+
import { EmphasisPanel as b, PagePurpose as x } from "@burdenoff/fe-libs/ui";
|
|
9
10
|
//#region src/atheletebridge/pages/investor/InvestmentOpportunitiesPage.tsx
|
|
10
|
-
var
|
|
11
|
+
var S = [
|
|
11
12
|
{
|
|
12
13
|
id: "opp-001",
|
|
13
14
|
cartId: "cart-005",
|
|
@@ -216,13 +217,13 @@ var b = [
|
|
|
216
217
|
}],
|
|
217
218
|
status: "active"
|
|
218
219
|
}
|
|
219
|
-
],
|
|
220
|
+
], C = {
|
|
220
221
|
totalOpportunities: 24,
|
|
221
222
|
averageReturns: 21.5,
|
|
222
223
|
totalFunded: 156e5,
|
|
223
224
|
successRate: 89
|
|
224
225
|
};
|
|
225
|
-
function
|
|
226
|
+
function w(e) {
|
|
226
227
|
switch (e) {
|
|
227
228
|
case "low": return "bg-green-500/20 text-green-600 dark:text-green-400";
|
|
228
229
|
case "medium": return "bg-yellow-500/20 text-yellow-600 dark:text-yellow-400";
|
|
@@ -230,7 +231,7 @@ function S(e) {
|
|
|
230
231
|
default: return "bg-secondary text-secondary-foreground";
|
|
231
232
|
}
|
|
232
233
|
}
|
|
233
|
-
function
|
|
234
|
+
function T(e) {
|
|
234
235
|
switch (e) {
|
|
235
236
|
case "low": return "Low Risk";
|
|
236
237
|
case "medium": return "Medium Risk";
|
|
@@ -238,11 +239,11 @@ function C(e) {
|
|
|
238
239
|
default: return e;
|
|
239
240
|
}
|
|
240
241
|
}
|
|
241
|
-
function
|
|
242
|
+
function E(e, t) {
|
|
242
243
|
return t > 0 ? Math.min(e / t * 100, 100) : 0;
|
|
243
244
|
}
|
|
244
|
-
function
|
|
245
|
-
let { navigateTo:
|
|
245
|
+
function D() {
|
|
246
|
+
let { navigateTo: D } = e(), [O, k] = l(!0), [A, j] = l(null), [M, N] = l(!1), [P, F] = l(""), [I, L] = l("idle"), [R, z] = l({
|
|
246
247
|
searchQuery: "",
|
|
247
248
|
category: "",
|
|
248
249
|
riskLevel: "",
|
|
@@ -251,25 +252,25 @@ function T() {
|
|
|
251
252
|
sortBy: "featured"
|
|
252
253
|
});
|
|
253
254
|
s(() => {
|
|
254
|
-
let e = setTimeout(() =>
|
|
255
|
+
let e = setTimeout(() => k(!1), 600);
|
|
255
256
|
return () => clearTimeout(e);
|
|
256
257
|
}, []);
|
|
257
|
-
let
|
|
258
|
-
|
|
258
|
+
let B = o((e, t) => {
|
|
259
|
+
z((n) => ({
|
|
259
260
|
...n,
|
|
260
261
|
[e]: t
|
|
261
262
|
}));
|
|
262
|
-
}, []),
|
|
263
|
-
let e = [...
|
|
264
|
-
if (
|
|
265
|
-
let t =
|
|
263
|
+
}, []), V = c(() => {
|
|
264
|
+
let e = [...S];
|
|
265
|
+
if (R.searchQuery.trim()) {
|
|
266
|
+
let t = R.searchQuery.toLowerCase();
|
|
266
267
|
e = e.filter((e) => e.cartName.toLowerCase().includes(t) || e.description.toLowerCase().includes(t) || e.category.toLowerCase().includes(t));
|
|
267
268
|
}
|
|
268
|
-
if (
|
|
269
|
-
let t = parseInt(
|
|
269
|
+
if (R.category && (e = e.filter((e) => e.category === R.category)), R.riskLevel && (e = e.filter((e) => e.riskLevel === R.riskLevel)), R.location && (e = e.filter((e) => e.location.includes(R.location))), R.minimumAmount) {
|
|
270
|
+
let t = parseInt(R.minimumAmount, 10);
|
|
270
271
|
e = e.filter((e) => e.minimumInvestment <= t);
|
|
271
272
|
}
|
|
272
|
-
switch (
|
|
273
|
+
switch (R.sortBy) {
|
|
273
274
|
case "returns":
|
|
274
275
|
e.sort((e, t) => t.expectedReturns - e.expectedReturns);
|
|
275
276
|
break;
|
|
@@ -285,30 +286,30 @@ function T() {
|
|
|
285
286
|
default: break;
|
|
286
287
|
}
|
|
287
288
|
return e;
|
|
288
|
-
}, [
|
|
289
|
-
if (!
|
|
290
|
-
let e = parseInt(
|
|
289
|
+
}, [R]), H = o(() => {
|
|
290
|
+
if (!A || !P) return;
|
|
291
|
+
let e = parseInt(P, 10);
|
|
291
292
|
if (!isNaN(e)) {
|
|
292
|
-
if (e <
|
|
293
|
-
|
|
293
|
+
if (e < A.minimumInvestment) {
|
|
294
|
+
L("error");
|
|
294
295
|
return;
|
|
295
296
|
}
|
|
296
|
-
if (e >
|
|
297
|
-
|
|
297
|
+
if (e > A.maximumInvestment) {
|
|
298
|
+
L("error");
|
|
298
299
|
return;
|
|
299
300
|
}
|
|
300
|
-
|
|
301
|
-
|
|
301
|
+
L("success"), setTimeout(() => {
|
|
302
|
+
N(!1), F(""), L("idle"), D("/investor/portfolio");
|
|
302
303
|
}, 1500);
|
|
303
304
|
}
|
|
304
305
|
}, [
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
]),
|
|
309
|
-
|
|
306
|
+
A,
|
|
307
|
+
P,
|
|
308
|
+
D
|
|
309
|
+
]), U = o((e) => {
|
|
310
|
+
j(e), F(""), L("idle"), N(!0);
|
|
310
311
|
}, []);
|
|
311
|
-
return
|
|
312
|
+
return O ? /* @__PURE__ */ v(n, {
|
|
312
313
|
title: "Investment Opportunities",
|
|
313
314
|
description: "Loading opportunities...",
|
|
314
315
|
children: /* @__PURE__ */ v("div", {
|
|
@@ -326,10 +327,14 @@ function T() {
|
|
|
326
327
|
description: "Discover and invest in growing local businesses",
|
|
327
328
|
actions: /* @__PURE__ */ y("span", {
|
|
328
329
|
className: "text-sm text-text-secondary",
|
|
329
|
-
children: [
|
|
330
|
+
children: [V.length, " opportunities"]
|
|
330
331
|
}),
|
|
331
332
|
children: [
|
|
332
|
-
/* @__PURE__ */
|
|
333
|
+
/* @__PURE__ */ v(x, {
|
|
334
|
+
className: "mb-6",
|
|
335
|
+
children: "Find businesses worth backing. Browse vetted carts raising funds, compare expected returns, risk levels and funding progress, then filter and search to match your strategy. Tap any opportunity to dig into the details before you invest."
|
|
336
|
+
}),
|
|
337
|
+
/* @__PURE__ */ v(b, { children: /* @__PURE__ */ y("div", {
|
|
333
338
|
className: "grid grid-cols-2 gap-3 sm:gap-4 lg:grid-cols-4",
|
|
334
339
|
children: [
|
|
335
340
|
/* @__PURE__ */ y("div", {
|
|
@@ -339,7 +344,7 @@ function T() {
|
|
|
339
344
|
children: "Active Opportunities"
|
|
340
345
|
}), /* @__PURE__ */ v("p", {
|
|
341
346
|
className: "text-lg font-bold text-text-primary sm:text-2xl",
|
|
342
|
-
children:
|
|
347
|
+
children: C.totalOpportunities
|
|
343
348
|
})]
|
|
344
349
|
}),
|
|
345
350
|
/* @__PURE__ */ y("div", {
|
|
@@ -349,7 +354,7 @@ function T() {
|
|
|
349
354
|
children: "Average Returns"
|
|
350
355
|
}), /* @__PURE__ */ y("p", {
|
|
351
356
|
className: "text-lg font-bold text-green-600 dark:text-green-400 sm:text-2xl",
|
|
352
|
-
children: [
|
|
357
|
+
children: [C.averageReturns, "%"]
|
|
353
358
|
})]
|
|
354
359
|
}),
|
|
355
360
|
/* @__PURE__ */ y("div", {
|
|
@@ -359,7 +364,7 @@ function T() {
|
|
|
359
364
|
children: "Total Funded"
|
|
360
365
|
}), /* @__PURE__ */ v("p", {
|
|
361
366
|
className: "text-lg font-bold text-text-primary sm:text-2xl",
|
|
362
|
-
children: i(
|
|
367
|
+
children: i(C.totalFunded, {
|
|
363
368
|
minimumFractionDigits: 0,
|
|
364
369
|
notation: "compact"
|
|
365
370
|
})
|
|
@@ -372,11 +377,11 @@ function T() {
|
|
|
372
377
|
children: "Success Rate"
|
|
373
378
|
}), /* @__PURE__ */ y("p", {
|
|
374
379
|
className: "text-lg font-bold text-text-primary sm:text-2xl",
|
|
375
|
-
children: [
|
|
380
|
+
children: [C.successRate, "%"]
|
|
376
381
|
})]
|
|
377
382
|
})
|
|
378
383
|
]
|
|
379
|
-
}),
|
|
384
|
+
}) }),
|
|
380
385
|
/* @__PURE__ */ v("div", {
|
|
381
386
|
className: "mt-6 rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6",
|
|
382
387
|
children: /* @__PURE__ */ y("div", {
|
|
@@ -387,14 +392,14 @@ function T() {
|
|
|
387
392
|
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", {
|
|
388
393
|
type: "text",
|
|
389
394
|
placeholder: "Search opportunities...",
|
|
390
|
-
value:
|
|
391
|
-
onChange: (e) =>
|
|
395
|
+
value: R.searchQuery,
|
|
396
|
+
onChange: (e) => B("searchQuery", e.target.value),
|
|
392
397
|
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)]"
|
|
393
398
|
})]
|
|
394
399
|
}),
|
|
395
400
|
/* @__PURE__ */ y("select", {
|
|
396
|
-
value:
|
|
397
|
-
onChange: (e) =>
|
|
401
|
+
value: R.category,
|
|
402
|
+
onChange: (e) => B("category", e.target.value),
|
|
398
403
|
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)]",
|
|
399
404
|
children: [
|
|
400
405
|
/* @__PURE__ */ v("option", {
|
|
@@ -424,8 +429,8 @@ function T() {
|
|
|
424
429
|
]
|
|
425
430
|
}),
|
|
426
431
|
/* @__PURE__ */ y("select", {
|
|
427
|
-
value:
|
|
428
|
-
onChange: (e) =>
|
|
432
|
+
value: R.riskLevel,
|
|
433
|
+
onChange: (e) => B("riskLevel", e.target.value),
|
|
429
434
|
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)]",
|
|
430
435
|
children: [
|
|
431
436
|
/* @__PURE__ */ v("option", {
|
|
@@ -447,8 +452,8 @@ function T() {
|
|
|
447
452
|
]
|
|
448
453
|
}),
|
|
449
454
|
/* @__PURE__ */ y("select", {
|
|
450
|
-
value:
|
|
451
|
-
onChange: (e) =>
|
|
455
|
+
value: R.minimumAmount,
|
|
456
|
+
onChange: (e) => B("minimumAmount", e.target.value),
|
|
452
457
|
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)]",
|
|
453
458
|
children: [
|
|
454
459
|
/* @__PURE__ */ v("option", {
|
|
@@ -474,8 +479,8 @@ function T() {
|
|
|
474
479
|
]
|
|
475
480
|
}),
|
|
476
481
|
/* @__PURE__ */ y("select", {
|
|
477
|
-
value:
|
|
478
|
-
onChange: (e) =>
|
|
482
|
+
value: R.location,
|
|
483
|
+
onChange: (e) => B("location", e.target.value),
|
|
479
484
|
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)]",
|
|
480
485
|
children: [
|
|
481
486
|
/* @__PURE__ */ v("option", {
|
|
@@ -501,8 +506,8 @@ function T() {
|
|
|
501
506
|
]
|
|
502
507
|
}),
|
|
503
508
|
/* @__PURE__ */ y("select", {
|
|
504
|
-
value:
|
|
505
|
-
onChange: (e) =>
|
|
509
|
+
value: R.sortBy,
|
|
510
|
+
onChange: (e) => B("sortBy", e.target.value),
|
|
506
511
|
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)]",
|
|
507
512
|
children: [
|
|
508
513
|
/* @__PURE__ */ v("option", {
|
|
@@ -530,15 +535,16 @@ function T() {
|
|
|
530
535
|
]
|
|
531
536
|
})
|
|
532
537
|
}),
|
|
533
|
-
|
|
538
|
+
V.length === 0 ? /* @__PURE__ */ v("div", {
|
|
534
539
|
className: "mt-6",
|
|
535
540
|
children: /* @__PURE__ */ v(r, {
|
|
541
|
+
illustration: "empty-search",
|
|
536
542
|
icon: /* @__PURE__ */ v(h, { className: "h-10 w-10" }),
|
|
537
543
|
title: "No opportunities found",
|
|
538
544
|
description: "Try adjusting your filters to find more opportunities",
|
|
539
545
|
action: /* @__PURE__ */ v("button", {
|
|
540
546
|
type: "button",
|
|
541
|
-
onClick: () =>
|
|
547
|
+
onClick: () => z({
|
|
542
548
|
searchQuery: "",
|
|
543
549
|
category: "",
|
|
544
550
|
riskLevel: "",
|
|
@@ -552,8 +558,8 @@ function T() {
|
|
|
552
558
|
})
|
|
553
559
|
}) : /* @__PURE__ */ v("div", {
|
|
554
560
|
className: "mt-6 grid grid-cols-1 gap-4 lg:grid-cols-2",
|
|
555
|
-
children:
|
|
556
|
-
let n =
|
|
561
|
+
children: V.map((e) => {
|
|
562
|
+
let n = E(e.raisedAmount, e.targetAmount);
|
|
557
563
|
return /* @__PURE__ */ y("div", {
|
|
558
564
|
className: "rounded-lg border border-border-subtle bg-bg-surface shadow-sm hover:shadow-md transition-shadow",
|
|
559
565
|
children: [/* @__PURE__ */ y("div", {
|
|
@@ -599,8 +605,8 @@ function T() {
|
|
|
599
605
|
className: "text-xs text-text-secondary sm:text-sm",
|
|
600
606
|
children: e.category
|
|
601
607
|
}), /* @__PURE__ */ v("span", {
|
|
602
|
-
className: t("rounded-full px-2 py-0.5 text-xs font-medium",
|
|
603
|
-
children:
|
|
608
|
+
className: t("rounded-full px-2 py-0.5 text-xs font-medium", w(e.riskLevel)),
|
|
609
|
+
children: T(e.riskLevel)
|
|
604
610
|
})]
|
|
605
611
|
})
|
|
606
612
|
]
|
|
@@ -744,13 +750,13 @@ function T() {
|
|
|
744
750
|
className: "flex flex-col gap-2 sm:flex-row sm:gap-3",
|
|
745
751
|
children: [/* @__PURE__ */ v("button", {
|
|
746
752
|
type: "button",
|
|
747
|
-
onClick: () =>
|
|
753
|
+
onClick: () => U(e),
|
|
748
754
|
disabled: e.status === "funded",
|
|
749
755
|
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"),
|
|
750
756
|
children: e.status === "funded" ? "Fully Funded" : "Invest Now"
|
|
751
757
|
}), /* @__PURE__ */ y("button", {
|
|
752
758
|
type: "button",
|
|
753
|
-
onClick: () =>
|
|
759
|
+
onClick: () => D(`/investor/opportunities/${e.id}`),
|
|
754
760
|
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",
|
|
755
761
|
children: [/* @__PURE__ */ v(d, { className: "h-4 w-4" }), "View Details"]
|
|
756
762
|
})]
|
|
@@ -760,7 +766,7 @@ function T() {
|
|
|
760
766
|
}, e.id);
|
|
761
767
|
})
|
|
762
768
|
}),
|
|
763
|
-
|
|
769
|
+
M && A && /* @__PURE__ */ v("div", {
|
|
764
770
|
className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
|
|
765
771
|
children: /* @__PURE__ */ y("div", {
|
|
766
772
|
className: "relative max-h-[90vh] w-full max-w-md overflow-y-auto rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6",
|
|
@@ -768,16 +774,16 @@ function T() {
|
|
|
768
774
|
/* @__PURE__ */ v("button", {
|
|
769
775
|
type: "button",
|
|
770
776
|
onClick: () => {
|
|
771
|
-
|
|
777
|
+
N(!1), F(""), L("idle");
|
|
772
778
|
},
|
|
773
779
|
className: "absolute right-3 top-3 rounded-lg p-1 text-text-secondary hover:bg-accent transition-colors",
|
|
774
780
|
children: /* @__PURE__ */ v(_, { className: "h-5 w-5" })
|
|
775
781
|
}),
|
|
776
782
|
/* @__PURE__ */ y("h3", {
|
|
777
783
|
className: "mb-4 text-base font-semibold text-text-primary sm:text-lg",
|
|
778
|
-
children: ["Invest in ",
|
|
784
|
+
children: ["Invest in ", A.cartName]
|
|
779
785
|
}),
|
|
780
|
-
|
|
786
|
+
I === "success" ? /* @__PURE__ */ y("div", {
|
|
781
787
|
className: "py-8 text-center",
|
|
782
788
|
children: [
|
|
783
789
|
/* @__PURE__ */ v(u, { className: "mx-auto mb-3 h-12 w-12 text-green-600 dark:text-green-400" }),
|
|
@@ -799,11 +805,11 @@ function T() {
|
|
|
799
805
|
}), /* @__PURE__ */ y("p", {
|
|
800
806
|
className: "text-sm font-medium text-text-primary sm:text-base",
|
|
801
807
|
children: [
|
|
802
|
-
i(
|
|
808
|
+
i(A.minimumInvestment, { minimumFractionDigits: 0 }),
|
|
803
809
|
" ",
|
|
804
810
|
"-",
|
|
805
811
|
" ",
|
|
806
|
-
i(
|
|
812
|
+
i(A.maximumInvestment, { minimumFractionDigits: 0 })
|
|
807
813
|
]
|
|
808
814
|
})] }),
|
|
809
815
|
/* @__PURE__ */ y("div", { children: [
|
|
@@ -815,28 +821,28 @@ function T() {
|
|
|
815
821
|
className: "relative",
|
|
816
822
|
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", {
|
|
817
823
|
type: "number",
|
|
818
|
-
value:
|
|
824
|
+
value: P,
|
|
819
825
|
onChange: (e) => {
|
|
820
|
-
|
|
826
|
+
F(e.target.value), L("idle");
|
|
821
827
|
},
|
|
822
828
|
placeholder: "Enter amount",
|
|
823
829
|
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)]"
|
|
824
830
|
})]
|
|
825
831
|
}),
|
|
826
|
-
|
|
832
|
+
I === "error" && /* @__PURE__ */ y("p", {
|
|
827
833
|
className: "mt-1 text-xs text-red-600 dark:text-red-400",
|
|
828
834
|
children: [
|
|
829
835
|
"Amount must be between",
|
|
830
836
|
" ",
|
|
831
|
-
i(
|
|
837
|
+
i(A.minimumInvestment, { minimumFractionDigits: 0 }),
|
|
832
838
|
" ",
|
|
833
839
|
"and",
|
|
834
840
|
" ",
|
|
835
|
-
i(
|
|
841
|
+
i(A.maximumInvestment, { minimumFractionDigits: 0 })
|
|
836
842
|
]
|
|
837
843
|
})
|
|
838
844
|
] }),
|
|
839
|
-
|
|
845
|
+
P && !isNaN(parseInt(P, 10)) && parseInt(P, 10) > 0 && /* @__PURE__ */ y("div", {
|
|
840
846
|
className: "rounded-lg border border-border-subtle bg-bg-sunken/50 p-3 sm:p-4",
|
|
841
847
|
children: [/* @__PURE__ */ v("p", {
|
|
842
848
|
className: "mb-2 text-xs text-text-secondary sm:text-sm",
|
|
@@ -851,7 +857,7 @@ function T() {
|
|
|
851
857
|
children: "Investment:"
|
|
852
858
|
}), /* @__PURE__ */ v("span", {
|
|
853
859
|
className: "text-xs font-medium text-text-primary sm:text-sm",
|
|
854
|
-
children: i(parseInt(
|
|
860
|
+
children: i(parseInt(P, 10), { minimumFractionDigits: 0 })
|
|
855
861
|
})]
|
|
856
862
|
}),
|
|
857
863
|
/* @__PURE__ */ y("div", {
|
|
@@ -860,12 +866,12 @@ function T() {
|
|
|
860
866
|
className: "text-xs text-text-primary sm:text-sm",
|
|
861
867
|
children: [
|
|
862
868
|
"Expected Return (",
|
|
863
|
-
|
|
869
|
+
A.expectedReturns,
|
|
864
870
|
"%):"
|
|
865
871
|
]
|
|
866
872
|
}), /* @__PURE__ */ y("span", {
|
|
867
873
|
className: "text-xs font-medium text-green-600 dark:text-green-400 sm:text-sm",
|
|
868
|
-
children: ["+", i(parseInt(
|
|
874
|
+
children: ["+", i(parseInt(P, 10) * A.expectedReturns / 100, { minimumFractionDigits: 0 })]
|
|
869
875
|
})]
|
|
870
876
|
}),
|
|
871
877
|
/* @__PURE__ */ y("div", {
|
|
@@ -875,7 +881,7 @@ function T() {
|
|
|
875
881
|
children: "Total Value:"
|
|
876
882
|
}), /* @__PURE__ */ v("span", {
|
|
877
883
|
className: "text-xs font-bold text-text-primary sm:text-sm",
|
|
878
|
-
children: i(parseInt(
|
|
884
|
+
children: i(parseInt(P, 10) * (1 + A.expectedReturns / 100), { minimumFractionDigits: 0 })
|
|
879
885
|
})]
|
|
880
886
|
})
|
|
881
887
|
]
|
|
@@ -887,24 +893,24 @@ function T() {
|
|
|
887
893
|
/* @__PURE__ */ y("p", { children: [
|
|
888
894
|
"• Minimum lock-in period:",
|
|
889
895
|
" ",
|
|
890
|
-
|
|
896
|
+
A.investmentTerms.lockInPeriod,
|
|
891
897
|
" months"
|
|
892
898
|
] }),
|
|
893
899
|
/* @__PURE__ */ y("p", { children: [
|
|
894
900
|
"• Dividend frequency:",
|
|
895
901
|
" ",
|
|
896
|
-
|
|
902
|
+
A.investmentTerms.dividendFrequency
|
|
897
903
|
] }),
|
|
898
904
|
/* @__PURE__ */ y("p", { children: [
|
|
899
905
|
"• Your equity stake:",
|
|
900
906
|
" ",
|
|
901
|
-
((parseInt(
|
|
907
|
+
((parseInt(P, 10) || 0) / A.targetAmount * A.investmentTerms.equityOffered).toFixed(2),
|
|
902
908
|
"%"
|
|
903
909
|
] }),
|
|
904
910
|
/* @__PURE__ */ y("p", { children: [
|
|
905
911
|
"• Exit options:",
|
|
906
912
|
" ",
|
|
907
|
-
|
|
913
|
+
A.investmentTerms.exitOptions.join(", ")
|
|
908
914
|
] })
|
|
909
915
|
]
|
|
910
916
|
}),
|
|
@@ -913,15 +919,15 @@ function T() {
|
|
|
913
919
|
children: [/* @__PURE__ */ v("button", {
|
|
914
920
|
type: "button",
|
|
915
921
|
onClick: () => {
|
|
916
|
-
|
|
922
|
+
N(!1), F(""), L("idle");
|
|
917
923
|
},
|
|
918
924
|
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",
|
|
919
925
|
children: "Cancel"
|
|
920
926
|
}), /* @__PURE__ */ v("button", {
|
|
921
927
|
type: "button",
|
|
922
|
-
onClick:
|
|
923
|
-
disabled: !
|
|
924
|
-
className: t("flex-1 rounded-lg px-4 py-2.5 text-sm font-medium transition-colors", !
|
|
928
|
+
onClick: H,
|
|
929
|
+
disabled: !P || isNaN(parseInt(P, 10)) || parseInt(P, 10) < A.minimumInvestment,
|
|
930
|
+
className: t("flex-1 rounded-lg px-4 py-2.5 text-sm font-medium transition-colors", !P || isNaN(parseInt(P, 10)) || parseInt(P, 10) < A.minimumInvestment ? "cursor-not-allowed bg-bg-sunken text-text-secondary" : "bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg/90"),
|
|
925
931
|
children: "Confirm Investment"
|
|
926
932
|
})]
|
|
927
933
|
})
|
|
@@ -934,6 +940,6 @@ function T() {
|
|
|
934
940
|
});
|
|
935
941
|
}
|
|
936
942
|
//#endregion
|
|
937
|
-
export {
|
|
943
|
+
export { D as InvestmentOpportunitiesPage };
|
|
938
944
|
|
|
939
945
|
//# sourceMappingURL=InvestmentOpportunitiesPage.js.map
|