@burdenoff/microfe-atheletebridge 2026.625.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/pages/HomePage.js +272 -268
- 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 +99 -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 +364 -356
- package/dist/atheletebridge/pages/customer/BookingDetailsPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/CartDetailPage.js +276 -241
- package/dist/atheletebridge/pages/customer/CartDetailPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/CartDiscoveryPage.js +260 -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 +523 -512
- package/dist/atheletebridge/pages/customer/DirectServiceBookingPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/FavoritesPage.js +83 -75
- package/dist/atheletebridge/pages/customer/FavoritesPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/OrderHistoryPage.js +116 -108
- package/dist/atheletebridge/pages/customer/OrderHistoryPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/OrderTrackingPage.js +65 -61
- package/dist/atheletebridge/pages/customer/OrderTrackingPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/PaymentMethodsPage.js +80 -75
- package/dist/atheletebridge/pages/customer/PaymentMethodsPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/ReviewsPage.js +80 -72
- package/dist/atheletebridge/pages/customer/ReviewsPage.js.map +1 -1
- package/dist/atheletebridge/pages/customer/SavedAddressesPage.js +62 -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 +89 -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 +37 -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 +352 -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 +133 -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 -344
- 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,7 +535,7 @@ 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, {
|
|
536
541
|
illustration: "empty-search",
|
|
@@ -539,7 +544,7 @@ function T() {
|
|
|
539
544
|
description: "Try adjusting your filters to find more opportunities",
|
|
540
545
|
action: /* @__PURE__ */ v("button", {
|
|
541
546
|
type: "button",
|
|
542
|
-
onClick: () =>
|
|
547
|
+
onClick: () => z({
|
|
543
548
|
searchQuery: "",
|
|
544
549
|
category: "",
|
|
545
550
|
riskLevel: "",
|
|
@@ -553,8 +558,8 @@ function T() {
|
|
|
553
558
|
})
|
|
554
559
|
}) : /* @__PURE__ */ v("div", {
|
|
555
560
|
className: "mt-6 grid grid-cols-1 gap-4 lg:grid-cols-2",
|
|
556
|
-
children:
|
|
557
|
-
let n =
|
|
561
|
+
children: V.map((e) => {
|
|
562
|
+
let n = E(e.raisedAmount, e.targetAmount);
|
|
558
563
|
return /* @__PURE__ */ y("div", {
|
|
559
564
|
className: "rounded-lg border border-border-subtle bg-bg-surface shadow-sm hover:shadow-md transition-shadow",
|
|
560
565
|
children: [/* @__PURE__ */ y("div", {
|
|
@@ -600,8 +605,8 @@ function T() {
|
|
|
600
605
|
className: "text-xs text-text-secondary sm:text-sm",
|
|
601
606
|
children: e.category
|
|
602
607
|
}), /* @__PURE__ */ v("span", {
|
|
603
|
-
className: t("rounded-full px-2 py-0.5 text-xs font-medium",
|
|
604
|
-
children:
|
|
608
|
+
className: t("rounded-full px-2 py-0.5 text-xs font-medium", w(e.riskLevel)),
|
|
609
|
+
children: T(e.riskLevel)
|
|
605
610
|
})]
|
|
606
611
|
})
|
|
607
612
|
]
|
|
@@ -745,13 +750,13 @@ function T() {
|
|
|
745
750
|
className: "flex flex-col gap-2 sm:flex-row sm:gap-3",
|
|
746
751
|
children: [/* @__PURE__ */ v("button", {
|
|
747
752
|
type: "button",
|
|
748
|
-
onClick: () =>
|
|
753
|
+
onClick: () => U(e),
|
|
749
754
|
disabled: e.status === "funded",
|
|
750
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"),
|
|
751
756
|
children: e.status === "funded" ? "Fully Funded" : "Invest Now"
|
|
752
757
|
}), /* @__PURE__ */ y("button", {
|
|
753
758
|
type: "button",
|
|
754
|
-
onClick: () =>
|
|
759
|
+
onClick: () => D(`/investor/opportunities/${e.id}`),
|
|
755
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",
|
|
756
761
|
children: [/* @__PURE__ */ v(d, { className: "h-4 w-4" }), "View Details"]
|
|
757
762
|
})]
|
|
@@ -761,7 +766,7 @@ function T() {
|
|
|
761
766
|
}, e.id);
|
|
762
767
|
})
|
|
763
768
|
}),
|
|
764
|
-
|
|
769
|
+
M && A && /* @__PURE__ */ v("div", {
|
|
765
770
|
className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
|
|
766
771
|
children: /* @__PURE__ */ y("div", {
|
|
767
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",
|
|
@@ -769,16 +774,16 @@ function T() {
|
|
|
769
774
|
/* @__PURE__ */ v("button", {
|
|
770
775
|
type: "button",
|
|
771
776
|
onClick: () => {
|
|
772
|
-
|
|
777
|
+
N(!1), F(""), L("idle");
|
|
773
778
|
},
|
|
774
779
|
className: "absolute right-3 top-3 rounded-lg p-1 text-text-secondary hover:bg-accent transition-colors",
|
|
775
780
|
children: /* @__PURE__ */ v(_, { className: "h-5 w-5" })
|
|
776
781
|
}),
|
|
777
782
|
/* @__PURE__ */ y("h3", {
|
|
778
783
|
className: "mb-4 text-base font-semibold text-text-primary sm:text-lg",
|
|
779
|
-
children: ["Invest in ",
|
|
784
|
+
children: ["Invest in ", A.cartName]
|
|
780
785
|
}),
|
|
781
|
-
|
|
786
|
+
I === "success" ? /* @__PURE__ */ y("div", {
|
|
782
787
|
className: "py-8 text-center",
|
|
783
788
|
children: [
|
|
784
789
|
/* @__PURE__ */ v(u, { className: "mx-auto mb-3 h-12 w-12 text-green-600 dark:text-green-400" }),
|
|
@@ -800,11 +805,11 @@ function T() {
|
|
|
800
805
|
}), /* @__PURE__ */ y("p", {
|
|
801
806
|
className: "text-sm font-medium text-text-primary sm:text-base",
|
|
802
807
|
children: [
|
|
803
|
-
i(
|
|
808
|
+
i(A.minimumInvestment, { minimumFractionDigits: 0 }),
|
|
804
809
|
" ",
|
|
805
810
|
"-",
|
|
806
811
|
" ",
|
|
807
|
-
i(
|
|
812
|
+
i(A.maximumInvestment, { minimumFractionDigits: 0 })
|
|
808
813
|
]
|
|
809
814
|
})] }),
|
|
810
815
|
/* @__PURE__ */ y("div", { children: [
|
|
@@ -816,28 +821,28 @@ function T() {
|
|
|
816
821
|
className: "relative",
|
|
817
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", {
|
|
818
823
|
type: "number",
|
|
819
|
-
value:
|
|
824
|
+
value: P,
|
|
820
825
|
onChange: (e) => {
|
|
821
|
-
|
|
826
|
+
F(e.target.value), L("idle");
|
|
822
827
|
},
|
|
823
828
|
placeholder: "Enter amount",
|
|
824
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)]"
|
|
825
830
|
})]
|
|
826
831
|
}),
|
|
827
|
-
|
|
832
|
+
I === "error" && /* @__PURE__ */ y("p", {
|
|
828
833
|
className: "mt-1 text-xs text-red-600 dark:text-red-400",
|
|
829
834
|
children: [
|
|
830
835
|
"Amount must be between",
|
|
831
836
|
" ",
|
|
832
|
-
i(
|
|
837
|
+
i(A.minimumInvestment, { minimumFractionDigits: 0 }),
|
|
833
838
|
" ",
|
|
834
839
|
"and",
|
|
835
840
|
" ",
|
|
836
|
-
i(
|
|
841
|
+
i(A.maximumInvestment, { minimumFractionDigits: 0 })
|
|
837
842
|
]
|
|
838
843
|
})
|
|
839
844
|
] }),
|
|
840
|
-
|
|
845
|
+
P && !isNaN(parseInt(P, 10)) && parseInt(P, 10) > 0 && /* @__PURE__ */ y("div", {
|
|
841
846
|
className: "rounded-lg border border-border-subtle bg-bg-sunken/50 p-3 sm:p-4",
|
|
842
847
|
children: [/* @__PURE__ */ v("p", {
|
|
843
848
|
className: "mb-2 text-xs text-text-secondary sm:text-sm",
|
|
@@ -852,7 +857,7 @@ function T() {
|
|
|
852
857
|
children: "Investment:"
|
|
853
858
|
}), /* @__PURE__ */ v("span", {
|
|
854
859
|
className: "text-xs font-medium text-text-primary sm:text-sm",
|
|
855
|
-
children: i(parseInt(
|
|
860
|
+
children: i(parseInt(P, 10), { minimumFractionDigits: 0 })
|
|
856
861
|
})]
|
|
857
862
|
}),
|
|
858
863
|
/* @__PURE__ */ y("div", {
|
|
@@ -861,12 +866,12 @@ function T() {
|
|
|
861
866
|
className: "text-xs text-text-primary sm:text-sm",
|
|
862
867
|
children: [
|
|
863
868
|
"Expected Return (",
|
|
864
|
-
|
|
869
|
+
A.expectedReturns,
|
|
865
870
|
"%):"
|
|
866
871
|
]
|
|
867
872
|
}), /* @__PURE__ */ y("span", {
|
|
868
873
|
className: "text-xs font-medium text-green-600 dark:text-green-400 sm:text-sm",
|
|
869
|
-
children: ["+", i(parseInt(
|
|
874
|
+
children: ["+", i(parseInt(P, 10) * A.expectedReturns / 100, { minimumFractionDigits: 0 })]
|
|
870
875
|
})]
|
|
871
876
|
}),
|
|
872
877
|
/* @__PURE__ */ y("div", {
|
|
@@ -876,7 +881,7 @@ function T() {
|
|
|
876
881
|
children: "Total Value:"
|
|
877
882
|
}), /* @__PURE__ */ v("span", {
|
|
878
883
|
className: "text-xs font-bold text-text-primary sm:text-sm",
|
|
879
|
-
children: i(parseInt(
|
|
884
|
+
children: i(parseInt(P, 10) * (1 + A.expectedReturns / 100), { minimumFractionDigits: 0 })
|
|
880
885
|
})]
|
|
881
886
|
})
|
|
882
887
|
]
|
|
@@ -888,24 +893,24 @@ function T() {
|
|
|
888
893
|
/* @__PURE__ */ y("p", { children: [
|
|
889
894
|
"• Minimum lock-in period:",
|
|
890
895
|
" ",
|
|
891
|
-
|
|
896
|
+
A.investmentTerms.lockInPeriod,
|
|
892
897
|
" months"
|
|
893
898
|
] }),
|
|
894
899
|
/* @__PURE__ */ y("p", { children: [
|
|
895
900
|
"• Dividend frequency:",
|
|
896
901
|
" ",
|
|
897
|
-
|
|
902
|
+
A.investmentTerms.dividendFrequency
|
|
898
903
|
] }),
|
|
899
904
|
/* @__PURE__ */ y("p", { children: [
|
|
900
905
|
"• Your equity stake:",
|
|
901
906
|
" ",
|
|
902
|
-
((parseInt(
|
|
907
|
+
((parseInt(P, 10) || 0) / A.targetAmount * A.investmentTerms.equityOffered).toFixed(2),
|
|
903
908
|
"%"
|
|
904
909
|
] }),
|
|
905
910
|
/* @__PURE__ */ y("p", { children: [
|
|
906
911
|
"• Exit options:",
|
|
907
912
|
" ",
|
|
908
|
-
|
|
913
|
+
A.investmentTerms.exitOptions.join(", ")
|
|
909
914
|
] })
|
|
910
915
|
]
|
|
911
916
|
}),
|
|
@@ -914,15 +919,15 @@ function T() {
|
|
|
914
919
|
children: [/* @__PURE__ */ v("button", {
|
|
915
920
|
type: "button",
|
|
916
921
|
onClick: () => {
|
|
917
|
-
|
|
922
|
+
N(!1), F(""), L("idle");
|
|
918
923
|
},
|
|
919
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",
|
|
920
925
|
children: "Cancel"
|
|
921
926
|
}), /* @__PURE__ */ v("button", {
|
|
922
927
|
type: "button",
|
|
923
|
-
onClick:
|
|
924
|
-
disabled: !
|
|
925
|
-
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"),
|
|
926
931
|
children: "Confirm Investment"
|
|
927
932
|
})]
|
|
928
933
|
})
|
|
@@ -935,6 +940,6 @@ function T() {
|
|
|
935
940
|
});
|
|
936
941
|
}
|
|
937
942
|
//#endregion
|
|
938
|
-
export {
|
|
943
|
+
export { D as InvestmentOpportunitiesPage };
|
|
939
944
|
|
|
940
945
|
//# sourceMappingURL=InvestmentOpportunitiesPage.js.map
|