@burdenoff/microfe-kadaikodi 2026.704.4 → 2026.704.5
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/kadaikodi/KadaikodiRoutes.js +30 -26
- package/dist/kadaikodi/KadaikodiRoutes.js.map +1 -1
- package/dist/kadaikodi/components/viz/AllocationBar.js +68 -0
- package/dist/kadaikodi/components/viz/AllocationBar.js.map +1 -0
- package/dist/kadaikodi/components/viz/AreaChart.js +102 -0
- package/dist/kadaikodi/components/viz/AreaChart.js.map +1 -0
- package/dist/kadaikodi/components/viz/AvatarStack.js +36 -0
- package/dist/kadaikodi/components/viz/AvatarStack.js.map +1 -0
- package/dist/kadaikodi/components/viz/BarChart.js +83 -0
- package/dist/kadaikodi/components/viz/BarChart.js.map +1 -0
- package/dist/kadaikodi/components/viz/CertificateCard.js +4 -0
- package/dist/kadaikodi/components/viz/DonutChart.js +109 -0
- package/dist/kadaikodi/components/viz/DonutChart.js.map +1 -0
- package/dist/kadaikodi/components/viz/HBarFunnel.js +54 -0
- package/dist/kadaikodi/components/viz/HBarFunnel.js.map +1 -0
- package/dist/kadaikodi/components/viz/Heatmap.js +3 -0
- package/dist/kadaikodi/components/viz/KanbanBoard.js +50 -0
- package/dist/kadaikodi/components/viz/KanbanBoard.js.map +1 -0
- package/dist/kadaikodi/components/viz/LineChart.js +4 -0
- package/dist/kadaikodi/components/viz/OrgTree.js +2 -0
- package/dist/kadaikodi/components/viz/PathSteps.js +3 -0
- package/dist/kadaikodi/components/viz/ProgressRing.js +68 -0
- package/dist/kadaikodi/components/viz/ProgressRing.js.map +1 -0
- package/dist/kadaikodi/components/viz/RatingStars.js +51 -0
- package/dist/kadaikodi/components/viz/RatingStars.js.map +1 -0
- package/dist/kadaikodi/components/viz/SegmentedTabs.js +69 -0
- package/dist/kadaikodi/components/viz/SegmentedTabs.js.map +1 -0
- package/dist/kadaikodi/components/viz/SkillBar.js +3 -0
- package/dist/kadaikodi/components/viz/Sparkline.js +74 -0
- package/dist/kadaikodi/components/viz/Sparkline.js.map +1 -0
- package/dist/kadaikodi/components/viz/StatCard.js +60 -0
- package/dist/kadaikodi/components/viz/StatCard.js.map +1 -0
- package/dist/kadaikodi/components/viz/StepProgress.js +64 -0
- package/dist/kadaikodi/components/viz/StepProgress.js.map +1 -0
- package/dist/kadaikodi/components/viz/Timeline.js +66 -0
- package/dist/kadaikodi/components/viz/Timeline.js.map +1 -0
- package/dist/kadaikodi/components/viz/index.js +23 -0
- package/dist/kadaikodi/components/viz/lib/Avatar.js +30 -0
- package/dist/kadaikodi/components/viz/lib/Avatar.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/CartesianFrame.js +119 -0
- package/dist/kadaikodi/components/viz/lib/CartesianFrame.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js +35 -0
- package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/format.js +21 -0
- package/dist/kadaikodi/components/viz/lib/format.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/geometry.js +61 -0
- package/dist/kadaikodi/components/viz/lib/geometry.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/hooks.js +39 -0
- package/dist/kadaikodi/components/viz/lib/hooks.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/palette.js +27 -0
- package/dist/kadaikodi/components/viz/lib/palette.js.map +1 -0
- package/dist/kadaikodi/hooks/useKadaikodiApi.js +18 -10
- package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
- package/dist/kadaikodi/pages/HomePage.js +373 -631
- package/dist/kadaikodi/pages/HomePage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +304 -169
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminDashboard.js +255 -271
- package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +185 -125
- package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +141 -102
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/CartManagementPage.js +558 -718
- package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +142 -55
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +129 -164
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +379 -361
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js +266 -166
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js +373 -0
- package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js.map +1 -0
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +288 -161
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +180 -181
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +17 -34
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDetailPage.js +405 -248
- package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +258 -232
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CheckoutPage.js +254 -205
- package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +270 -230
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/FavoritesPage.js +149 -412
- package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderHistoryPage.js +173 -134
- package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +176 -175
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/ReviewsPage.js +295 -438
- package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/shared.js +181 -0
- package/dist/kadaikodi/pages/customer/shared.js.map +1 -0
- package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js +438 -311
- package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +320 -293
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js +159 -91
- package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorDashboard.js +137 -107
- package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +157 -135
- package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js +280 -206
- package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +424 -448
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerDashboard.js +328 -445
- package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +141 -164
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +300 -296
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +284 -309
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,374 +1,501 @@
|
|
|
1
1
|
import { useKadaikodi as e } from "../../context/KadaikodiContext.js";
|
|
2
2
|
import { cn as t } from "../../utils/cn.js";
|
|
3
3
|
import { PageLayout as n } from "../../components/PageLayout.js";
|
|
4
|
-
import { EmptyState as
|
|
5
|
-
import { useInvestmentOpportunities as i, useInvestments as a } from "../../hooks/useKadaikodiApi.js";
|
|
6
|
-
import { formatCurrency as o, formatDate as
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import
|
|
11
|
-
import {
|
|
4
|
+
import { EmptyState as ee } from "../../components/EmptyState.js";
|
|
5
|
+
import { useInvest as r, useInvestmentOpportunities as i, useInvestments as a, useProvider as te } from "../../hooks/useKadaikodiApi.js";
|
|
6
|
+
import { formatCurrency as o, formatDate as ne } from "../../utils/formatters.js";
|
|
7
|
+
import { AreaChart as s } from "../../components/viz/AreaChart.js";
|
|
8
|
+
import { ProgressRing as c } from "../../components/viz/ProgressRing.js";
|
|
9
|
+
import { StatCard as l } from "../../components/viz/StatCard.js";
|
|
10
|
+
import "../../components/viz/index.js";
|
|
11
|
+
import { useCallback as u, useMemo as d, useState as f } from "react";
|
|
12
|
+
import { ArrowLeft as re, CheckCircle2 as p, IndianRupee as m, Lock as ie, MessageSquare as h, Receipt as g, Shield as _, Star as v, Tag as y, Target as b, TrendingUp as x, Users as S } from "lucide-react";
|
|
13
|
+
import { useParams as C } from "react-router-dom";
|
|
14
|
+
import { jsx as w, jsxs as T } from "react/jsx-runtime";
|
|
15
|
+
import { EmphasisPanel as ae, GlassCard as E, PagePurpose as oe } from "@burdenoff/fe-libs/ui";
|
|
12
16
|
//#region src/kadaikodi/pages/investor/InvestmentDetailsPage.tsx
|
|
13
|
-
function
|
|
17
|
+
function se(e) {
|
|
14
18
|
switch (e) {
|
|
15
19
|
case "low": return {
|
|
16
|
-
label: "Low
|
|
17
|
-
color: "text-status-success-text"
|
|
20
|
+
label: "Low risk",
|
|
21
|
+
color: "text-status-success-text",
|
|
22
|
+
badge: "border-status-success-border bg-status-success-bg-subtle text-status-success-text"
|
|
18
23
|
};
|
|
19
24
|
case "medium": return {
|
|
20
|
-
label: "Medium
|
|
21
|
-
color: "text-status-warning-text"
|
|
25
|
+
label: "Medium risk",
|
|
26
|
+
color: "text-status-warning-text",
|
|
27
|
+
badge: "border-status-warning-border bg-status-warning-bg-subtle text-status-warning-text"
|
|
22
28
|
};
|
|
23
29
|
case "high": return {
|
|
24
|
-
label: "High
|
|
25
|
-
color: "text-status-error-text"
|
|
30
|
+
label: "High risk",
|
|
31
|
+
color: "text-status-error-text",
|
|
32
|
+
badge: "border-status-error-border bg-status-error-bg-subtle text-status-error-text"
|
|
26
33
|
};
|
|
27
34
|
default: return {
|
|
28
35
|
label: e,
|
|
29
|
-
color: "text-text-secondary"
|
|
36
|
+
color: "text-text-secondary",
|
|
37
|
+
badge: "border-border-default"
|
|
30
38
|
};
|
|
31
39
|
}
|
|
32
40
|
}
|
|
33
|
-
function
|
|
34
|
-
|
|
41
|
+
function ce(e) {
|
|
42
|
+
return o(e, {
|
|
43
|
+
minimumFractionDigits: 0,
|
|
44
|
+
notation: "compact"
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function D() {
|
|
48
|
+
let { navigateTo: D, currentUser: O } = e(), { id: k } = C(), { data: A = [], isLoading: j } = i(), { data: M = [], isLoading: N } = a(O?.id || ""), P = j || N, F = d(() => M.find((e) => e.id === k), [M, k]), I = d(() => A.find((e) => e.id === k || e.id === F?.opportunityId) ?? null, [
|
|
49
|
+
A,
|
|
35
50
|
k,
|
|
36
|
-
|
|
37
|
-
|
|
51
|
+
F
|
|
52
|
+
]), { data: L } = te(I?.cartId), R = r(), [z, B] = f(""), [V, H] = f("idle"), U = I?.minimumInvestment ?? 0, W = I ? Math.max(0, I.targetAmount - I.raisedAmount) : 0, G = Math.max(U, W), K = Number.parseInt(z, 10), q = !Number.isNaN(K) && K >= U && K <= G, le = u(() => {
|
|
53
|
+
if (!I || !q) {
|
|
54
|
+
H("error");
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
R.mutate({
|
|
58
|
+
amount: K,
|
|
59
|
+
investorId: O?.id ?? "",
|
|
60
|
+
opportunityId: I.id
|
|
61
|
+
}, {
|
|
62
|
+
onSuccess: () => {
|
|
63
|
+
H("success"), window.setTimeout(() => D("/investor/portfolio"), 1400);
|
|
64
|
+
},
|
|
65
|
+
onError: () => H("error")
|
|
66
|
+
});
|
|
67
|
+
}, [
|
|
68
|
+
I,
|
|
69
|
+
q,
|
|
70
|
+
R,
|
|
71
|
+
K,
|
|
72
|
+
O?.id,
|
|
73
|
+
D
|
|
74
|
+
]), J = d(() => {
|
|
75
|
+
if (!I) return [];
|
|
76
|
+
let e = q ? K : U || I.targetAmount / 10, t = e * (1 + I.expectedReturns / 100), n = Math.min(Math.max(I.investmentPeriod, 3), 12);
|
|
77
|
+
return Array.from({ length: 7 }, (ee, r) => ({
|
|
78
|
+
label: r === 0 ? "Now" : r === 6 ? `${n}mo` : `M${Math.round(n * r / 6)}`,
|
|
79
|
+
value: e + (t - e) * (r / 6)
|
|
80
|
+
}));
|
|
81
|
+
}, [
|
|
82
|
+
I,
|
|
83
|
+
q,
|
|
84
|
+
K,
|
|
85
|
+
U
|
|
38
86
|
]);
|
|
39
|
-
if (
|
|
87
|
+
if (P) return /* @__PURE__ */ w(n, {
|
|
40
88
|
title: "Investment Details",
|
|
41
89
|
description: "Loading...",
|
|
42
|
-
children: /* @__PURE__ */
|
|
43
|
-
className: "
|
|
44
|
-
children: /* @__PURE__ */
|
|
45
|
-
className: "
|
|
46
|
-
children: [/* @__PURE__ */
|
|
47
|
-
|
|
48
|
-
children: "Loading investment details..."
|
|
49
|
-
})]
|
|
50
|
-
})
|
|
90
|
+
children: /* @__PURE__ */ T("div", {
|
|
91
|
+
className: "space-y-4",
|
|
92
|
+
children: [/* @__PURE__ */ w("div", { className: "h-28 animate-pulse rounded-[var(--radius-card)] bg-bg-sunken" }), /* @__PURE__ */ T("div", {
|
|
93
|
+
className: "grid gap-6 lg:grid-cols-3",
|
|
94
|
+
children: [/* @__PURE__ */ w("div", { className: "h-96 animate-pulse rounded-[var(--radius-card)] bg-bg-sunken lg:col-span-2" }), /* @__PURE__ */ w("div", { className: "h-96 animate-pulse rounded-[var(--radius-card)] bg-bg-sunken" })]
|
|
95
|
+
})]
|
|
51
96
|
})
|
|
52
97
|
});
|
|
53
|
-
if (!
|
|
98
|
+
if (!I && !F) return /* @__PURE__ */ w(n, {
|
|
54
99
|
title: "Investment Not Found",
|
|
55
|
-
children: /* @__PURE__ */
|
|
100
|
+
children: /* @__PURE__ */ w(ee, {
|
|
56
101
|
illustration: "empty-generic",
|
|
57
102
|
title: "Investment not found",
|
|
58
103
|
description: "We couldn't find this investment. It may have been closed or the link is out of date.",
|
|
59
|
-
action: /* @__PURE__ */
|
|
104
|
+
action: /* @__PURE__ */ w("button", {
|
|
60
105
|
type: "button",
|
|
61
|
-
onClick: () =>
|
|
106
|
+
onClick: () => D("/investor/portfolio"),
|
|
62
107
|
className: "rounded-lg border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
|
|
63
108
|
children: "Back to Portfolio"
|
|
64
109
|
})
|
|
65
110
|
})
|
|
66
111
|
});
|
|
67
|
-
let
|
|
68
|
-
return /* @__PURE__ */
|
|
69
|
-
title:
|
|
70
|
-
description: "Investment
|
|
71
|
-
actions: /* @__PURE__ */
|
|
112
|
+
let ue = I?.cartName ?? F?.cartName ?? "Investment", Y = I ? se(I.riskLevel) : null, X = I && I.targetAmount > 0 ? Math.min(I.raisedAmount / I.targetAmount * 100, 100) : 0, Z = I?.expiresAt ? Math.max(0, Math.ceil((new Date(I.expiresAt).getTime() - Date.now()) / 864e5)) : null, de = F ? F.currentValue - F.investedAmount : 0, Q = F && F.investedAmount > 0 ? de / F.investedAmount * 100 : 0, $ = !!I && I?.status === "active";
|
|
113
|
+
return /* @__PURE__ */ T(n, {
|
|
114
|
+
title: ue,
|
|
115
|
+
description: "Investment details & performance",
|
|
116
|
+
actions: /* @__PURE__ */ T("button", {
|
|
72
117
|
type: "button",
|
|
73
|
-
onClick: () =>
|
|
118
|
+
onClick: () => D("/investor/portfolio"),
|
|
74
119
|
className: "flex items-center gap-1.5 rounded-lg border border-border-subtle px-3 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors",
|
|
75
120
|
children: [
|
|
76
|
-
/* @__PURE__ */
|
|
77
|
-
/* @__PURE__ */
|
|
121
|
+
/* @__PURE__ */ w(re, { className: "h-4 w-4" }),
|
|
122
|
+
/* @__PURE__ */ w("span", {
|
|
78
123
|
className: "hidden sm:inline",
|
|
79
124
|
children: "Back to Portfolio"
|
|
80
125
|
}),
|
|
81
|
-
/* @__PURE__ */
|
|
126
|
+
/* @__PURE__ */ w("span", {
|
|
82
127
|
className: "sm:hidden",
|
|
83
128
|
children: "Back"
|
|
84
129
|
})
|
|
85
130
|
]
|
|
86
131
|
}),
|
|
87
132
|
children: [
|
|
88
|
-
/* @__PURE__ */
|
|
133
|
+
/* @__PURE__ */ w(oe, {
|
|
89
134
|
className: "mb-6",
|
|
90
|
-
children: "A deep dive into this investment. Review the funding progress, expected returns and terms on offer, and — if you already hold a stake — exactly what you've put in and what it's worth today."
|
|
135
|
+
children: "A deep dive into this investment. Review the business behind it, funding progress, expected returns and terms on offer, and — if you already hold a stake — exactly what you've put in and what it's worth today."
|
|
91
136
|
}),
|
|
92
|
-
/* @__PURE__ */
|
|
93
|
-
className: "
|
|
94
|
-
children:
|
|
95
|
-
|
|
96
|
-
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 text-center",
|
|
97
|
-
children: [
|
|
98
|
-
/* @__PURE__ */ x(p, { className: "mx-auto mb-2 h-6 w-6 text-primary sm:h-8 sm:w-8" }),
|
|
99
|
-
/* @__PURE__ */ x("div", {
|
|
100
|
-
className: "text-lg font-bold text-text-primary sm:text-2xl",
|
|
101
|
-
children: o(P.investedAmount, { minimumFractionDigits: 0 })
|
|
102
|
-
}),
|
|
103
|
-
/* @__PURE__ */ x("div", {
|
|
104
|
-
className: "text-xs text-text-secondary sm:text-sm",
|
|
105
|
-
children: "Your Investment"
|
|
106
|
-
})
|
|
107
|
-
]
|
|
108
|
-
}),
|
|
109
|
-
/* @__PURE__ */ S("div", {
|
|
110
|
-
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 text-center",
|
|
111
|
-
children: [
|
|
112
|
-
/* @__PURE__ */ x(_, { className: "mx-auto mb-2 h-6 w-6 text-status-success-text sm:h-8 sm:w-8" }),
|
|
113
|
-
/* @__PURE__ */ S("div", {
|
|
114
|
-
className: t("text-lg font-bold sm:text-2xl", B >= 0 ? "text-status-success-text" : "text-status-error-text"),
|
|
115
|
-
children: [
|
|
116
|
-
V >= 0 ? "+" : "",
|
|
117
|
-
V.toFixed(1),
|
|
118
|
-
"%"
|
|
119
|
-
]
|
|
120
|
-
}),
|
|
121
|
-
/* @__PURE__ */ x("div", {
|
|
122
|
-
className: "text-xs text-text-secondary sm:text-sm",
|
|
123
|
-
children: "Returns"
|
|
124
|
-
})
|
|
125
|
-
]
|
|
126
|
-
}),
|
|
127
|
-
/* @__PURE__ */ S("div", {
|
|
128
|
-
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 text-center",
|
|
129
|
-
children: [
|
|
130
|
-
/* @__PURE__ */ x(d, { className: "mx-auto mb-2 h-6 w-6 text-text-primary sm:h-8 sm:w-8" }),
|
|
131
|
-
/* @__PURE__ */ x("div", {
|
|
132
|
-
className: "text-lg font-bold text-text-primary sm:text-2xl",
|
|
133
|
-
children: o(P.currentValue, { minimumFractionDigits: 0 })
|
|
134
|
-
}),
|
|
135
|
-
/* @__PURE__ */ x("div", {
|
|
136
|
-
className: "text-xs text-text-secondary sm:text-sm",
|
|
137
|
-
children: "Current Value"
|
|
138
|
-
})
|
|
139
|
-
]
|
|
140
|
-
}),
|
|
141
|
-
/* @__PURE__ */ S("div", {
|
|
142
|
-
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 text-center",
|
|
143
|
-
children: [
|
|
144
|
-
/* @__PURE__ */ x(m, { className: "mx-auto mb-2 h-6 w-6 text-text-primary sm:h-8 sm:w-8" }),
|
|
145
|
-
/* @__PURE__ */ S("div", {
|
|
146
|
-
className: "text-lg font-bold text-text-primary sm:text-2xl",
|
|
147
|
-
children: [P.returnsPercentage, "%"]
|
|
148
|
-
}),
|
|
149
|
-
/* @__PURE__ */ x("div", {
|
|
150
|
-
className: "text-xs text-text-secondary sm:text-sm",
|
|
151
|
-
children: "Expected Return"
|
|
152
|
-
})
|
|
153
|
-
]
|
|
154
|
-
})
|
|
155
|
-
]
|
|
156
|
-
}) : F && /* @__PURE__ */ S("div", {
|
|
137
|
+
F && /* @__PURE__ */ T(ae, { children: [/* @__PURE__ */ w("h2", {
|
|
138
|
+
className: "mb-4 text-base font-semibold text-text-primary",
|
|
139
|
+
children: "Your Position"
|
|
140
|
+
}), /* @__PURE__ */ T("div", {
|
|
157
141
|
className: "grid grid-cols-2 gap-4 lg:grid-cols-4",
|
|
158
142
|
children: [
|
|
159
|
-
/* @__PURE__ */
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
/* @__PURE__ */ x("div", {
|
|
164
|
-
className: "text-lg font-bold text-text-primary sm:text-2xl",
|
|
165
|
-
children: o(F.targetAmount, { minimumFractionDigits: 0 })
|
|
166
|
-
}),
|
|
167
|
-
/* @__PURE__ */ x("div", {
|
|
168
|
-
className: "text-xs text-text-secondary sm:text-sm",
|
|
169
|
-
children: "Target Amount"
|
|
170
|
-
})
|
|
171
|
-
]
|
|
143
|
+
/* @__PURE__ */ w(l, {
|
|
144
|
+
label: "Your Investment",
|
|
145
|
+
value: o(F.investedAmount, { minimumFractionDigits: 0 }),
|
|
146
|
+
icon: /* @__PURE__ */ w(m, { className: "h-4 w-4" })
|
|
172
147
|
}),
|
|
173
|
-
/* @__PURE__ */
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
/* @__PURE__ */ x("div", {
|
|
178
|
-
className: "text-lg font-bold text-text-primary sm:text-2xl",
|
|
179
|
-
children: o(F.raisedAmount, { minimumFractionDigits: 0 })
|
|
180
|
-
}),
|
|
181
|
-
/* @__PURE__ */ x("div", {
|
|
182
|
-
className: "text-xs text-text-secondary sm:text-sm",
|
|
183
|
-
children: "Raised So Far"
|
|
184
|
-
})
|
|
185
|
-
]
|
|
148
|
+
/* @__PURE__ */ w(l, {
|
|
149
|
+
label: "Current Value",
|
|
150
|
+
value: o(F.currentValue, { minimumFractionDigits: 0 }),
|
|
151
|
+
icon: /* @__PURE__ */ w(x, { className: "h-4 w-4" })
|
|
186
152
|
}),
|
|
187
|
-
/* @__PURE__ */
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
children: [F.expectedReturns, "%"]
|
|
194
|
-
}),
|
|
195
|
-
/* @__PURE__ */ x("div", {
|
|
196
|
-
className: "text-xs text-text-secondary sm:text-sm",
|
|
197
|
-
children: "Expected Returns"
|
|
198
|
-
})
|
|
199
|
-
]
|
|
153
|
+
/* @__PURE__ */ w(l, {
|
|
154
|
+
label: "Returns",
|
|
155
|
+
value: `${Q >= 0 ? "+" : ""}${Q.toFixed(1)}%`,
|
|
156
|
+
delta: Number(Q.toFixed(1)),
|
|
157
|
+
deltaLabel: "on invested",
|
|
158
|
+
icon: /* @__PURE__ */ w(x, { className: "h-4 w-4" })
|
|
200
159
|
}),
|
|
201
|
-
/* @__PURE__ */
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
/* @__PURE__ */ x("div", {
|
|
206
|
-
className: "text-lg font-bold text-text-primary sm:text-2xl",
|
|
207
|
-
children: o(F.minimumInvestment, { minimumFractionDigits: 0 })
|
|
208
|
-
}),
|
|
209
|
-
/* @__PURE__ */ x("div", {
|
|
210
|
-
className: "text-xs text-text-secondary sm:text-sm",
|
|
211
|
-
children: "Min Investment"
|
|
212
|
-
})
|
|
213
|
-
]
|
|
160
|
+
/* @__PURE__ */ w(l, {
|
|
161
|
+
label: "Realised Returns",
|
|
162
|
+
value: o(F.returns, { minimumFractionDigits: 0 }),
|
|
163
|
+
icon: /* @__PURE__ */ w(g, { className: "h-4 w-4" })
|
|
214
164
|
})
|
|
215
165
|
]
|
|
216
|
-
}) }),
|
|
217
|
-
/* @__PURE__ */
|
|
166
|
+
})] }),
|
|
167
|
+
/* @__PURE__ */ T("div", {
|
|
218
168
|
className: "mt-6 grid gap-6 lg:grid-cols-3",
|
|
219
|
-
children: [/* @__PURE__ */
|
|
169
|
+
children: [/* @__PURE__ */ T("div", {
|
|
220
170
|
className: "space-y-6 lg:col-span-2",
|
|
221
|
-
children: [
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
className: "
|
|
225
|
-
children:
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
children: [/* @__PURE__ */ S("span", {
|
|
240
|
-
className: "font-medium text-text-primary",
|
|
241
|
-
children: [o(F.raisedAmount, { minimumFractionDigits: 0 }), " raised"]
|
|
242
|
-
}), /* @__PURE__ */ S("span", {
|
|
243
|
-
className: "text-text-secondary",
|
|
244
|
-
children: ["of ", o(F.targetAmount, { minimumFractionDigits: 0 })]
|
|
171
|
+
children: [
|
|
172
|
+
I && /* @__PURE__ */ T(E, {
|
|
173
|
+
treatment: "glass",
|
|
174
|
+
className: "p-5 sm:p-6",
|
|
175
|
+
children: [/* @__PURE__ */ T("div", {
|
|
176
|
+
className: "flex flex-wrap items-start justify-between gap-3",
|
|
177
|
+
children: [/* @__PURE__ */ T("div", {
|
|
178
|
+
className: "min-w-0",
|
|
179
|
+
children: [/* @__PURE__ */ w("p", {
|
|
180
|
+
className: "text-sm text-text-secondary",
|
|
181
|
+
children: I.businessOwner
|
|
182
|
+
}), /* @__PURE__ */ w("h2", {
|
|
183
|
+
className: "mt-0.5 text-xl font-bold tracking-tight text-text-primary sm:text-2xl",
|
|
184
|
+
children: I.cartName
|
|
185
|
+
})]
|
|
186
|
+
}), Y && /* @__PURE__ */ T("span", {
|
|
187
|
+
className: t("inline-flex items-center gap-1.5 rounded-full border px-3 py-1 text-sm font-semibold", Y.badge),
|
|
188
|
+
children: [/* @__PURE__ */ w(_, { className: "h-4 w-4" }), Y.label]
|
|
245
189
|
})]
|
|
246
|
-
}),
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
children: [/* @__PURE__ */ S("span", { children: [R.toFixed(0), "% funded"] }), z !== null && /* @__PURE__ */ S("span", { children: [z, " days left"] })]
|
|
257
|
-
})
|
|
258
|
-
]
|
|
259
|
-
})] }), P && /* @__PURE__ */ S("div", {
|
|
260
|
-
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6",
|
|
261
|
-
children: [/* @__PURE__ */ x("h2", {
|
|
262
|
-
className: "mb-4 text-lg font-semibold text-text-primary",
|
|
263
|
-
children: "Your Holding"
|
|
264
|
-
}), /* @__PURE__ */ S("div", {
|
|
265
|
-
className: "grid gap-4 sm:grid-cols-2",
|
|
190
|
+
}), I.description && /* @__PURE__ */ w("p", {
|
|
191
|
+
className: "mt-4 text-sm leading-relaxed text-text-secondary",
|
|
192
|
+
children: I.description
|
|
193
|
+
})]
|
|
194
|
+
}),
|
|
195
|
+
L && /* @__PURE__ */ T("section", { children: [/* @__PURE__ */ w("h3", {
|
|
196
|
+
className: "mb-3 text-lg font-semibold text-text-primary",
|
|
197
|
+
children: "Business Metrics"
|
|
198
|
+
}), /* @__PURE__ */ T("div", {
|
|
199
|
+
className: "grid grid-cols-2 gap-3 sm:grid-cols-4 sm:gap-4",
|
|
266
200
|
children: [
|
|
267
|
-
/* @__PURE__ */
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
className: "
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
children: "Invested On"
|
|
291
|
-
}), /* @__PURE__ */ x("p", {
|
|
292
|
-
className: "font-medium text-text-primary",
|
|
293
|
-
children: s(P.investmentDate, {
|
|
294
|
-
hour: void 0,
|
|
295
|
-
minute: void 0
|
|
296
|
-
})
|
|
297
|
-
})] })
|
|
201
|
+
/* @__PURE__ */ w(l, {
|
|
202
|
+
label: "Rating",
|
|
203
|
+
value: L.rating > 0 ? L.rating.toFixed(1) : "—",
|
|
204
|
+
icon: /* @__PURE__ */ w(v, { className: "h-4 w-4" })
|
|
205
|
+
}),
|
|
206
|
+
/* @__PURE__ */ w(l, {
|
|
207
|
+
label: "Reviews",
|
|
208
|
+
value: L.totalRatings.toLocaleString("en-IN"),
|
|
209
|
+
icon: /* @__PURE__ */ w(h, { className: "h-4 w-4" })
|
|
210
|
+
}),
|
|
211
|
+
/* @__PURE__ */ w(l, {
|
|
212
|
+
label: "Avg Order",
|
|
213
|
+
value: L.averageOrderValue ? o(L.averageOrderValue, { minimumFractionDigits: 0 }) : "—",
|
|
214
|
+
icon: /* @__PURE__ */ w(g, { className: "h-4 w-4" })
|
|
215
|
+
}),
|
|
216
|
+
/* @__PURE__ */ w(l, {
|
|
217
|
+
label: "Category",
|
|
218
|
+
value: /* @__PURE__ */ w("span", {
|
|
219
|
+
className: "text-lg font-semibold capitalize",
|
|
220
|
+
children: L.category || "—"
|
|
221
|
+
}),
|
|
222
|
+
icon: /* @__PURE__ */ w(y, { className: "h-4 w-4" })
|
|
223
|
+
})
|
|
298
224
|
]
|
|
299
|
-
})]
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6",
|
|
305
|
-
children: [
|
|
306
|
-
/* @__PURE__ */ x("h2", {
|
|
225
|
+
})] }),
|
|
226
|
+
I && /* @__PURE__ */ T(E, {
|
|
227
|
+
treatment: "plain",
|
|
228
|
+
className: "p-5 sm:p-6",
|
|
229
|
+
children: [/* @__PURE__ */ w("h3", {
|
|
307
230
|
className: "mb-4 text-lg font-semibold text-text-primary",
|
|
308
|
-
children: "
|
|
309
|
-
}),
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
327
|
-
children: [/* @__PURE__ */ x(f, { className: "h-4 w-4" }), "Lock-in Period"]
|
|
328
|
-
}), /* @__PURE__ */ S("span", {
|
|
329
|
-
className: "font-medium text-text-primary",
|
|
330
|
-
children: [F.investmentPeriod, " months"]
|
|
331
|
-
})]
|
|
332
|
-
}),
|
|
333
|
-
/* @__PURE__ */ S("div", {
|
|
334
|
-
className: "flex items-center justify-between",
|
|
335
|
-
children: [/* @__PURE__ */ S("span", {
|
|
336
|
-
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
337
|
-
children: [/* @__PURE__ */ x(p, { className: "h-4 w-4" }), "Minimum Investment"]
|
|
338
|
-
}), /* @__PURE__ */ x("span", {
|
|
339
|
-
className: "font-medium text-text-primary",
|
|
340
|
-
children: o(F.minimumInvestment, { minimumFractionDigits: 0 })
|
|
341
|
-
})]
|
|
342
|
-
}),
|
|
343
|
-
L && /* @__PURE__ */ S("div", {
|
|
344
|
-
className: "flex items-center justify-between",
|
|
345
|
-
children: [/* @__PURE__ */ S("span", {
|
|
346
|
-
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
347
|
-
children: [/* @__PURE__ */ x(h, { className: "h-4 w-4" }), "Risk Level"]
|
|
348
|
-
}), /* @__PURE__ */ x("span", {
|
|
349
|
-
className: t("font-medium", L.color),
|
|
350
|
-
children: L.label
|
|
351
|
-
})]
|
|
352
|
-
}),
|
|
353
|
-
F.investors.length > 0 && /* @__PURE__ */ S("div", {
|
|
354
|
-
className: "flex items-center justify-between",
|
|
355
|
-
children: [/* @__PURE__ */ S("span", {
|
|
356
|
-
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
357
|
-
children: [/* @__PURE__ */ x(v, { className: "h-4 w-4" }), "Investors"]
|
|
358
|
-
}), /* @__PURE__ */ x("span", {
|
|
359
|
-
className: "font-medium text-text-primary",
|
|
360
|
-
children: F.investors.length
|
|
231
|
+
children: "Funding Progress"
|
|
232
|
+
}), /* @__PURE__ */ T("div", {
|
|
233
|
+
className: "flex flex-col items-center gap-6 sm:flex-row sm:gap-8",
|
|
234
|
+
children: [/* @__PURE__ */ w(c, {
|
|
235
|
+
value: X,
|
|
236
|
+
size: 140,
|
|
237
|
+
label: `${X.toFixed(0)}%`,
|
|
238
|
+
caption: "funded"
|
|
239
|
+
}), /* @__PURE__ */ T("div", {
|
|
240
|
+
className: "w-full flex-1 space-y-4",
|
|
241
|
+
children: [/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ T("div", {
|
|
242
|
+
className: "flex items-baseline justify-between",
|
|
243
|
+
children: [/* @__PURE__ */ w("span", {
|
|
244
|
+
className: "text-2xl font-bold text-text-primary",
|
|
245
|
+
children: o(I.raisedAmount, { minimumFractionDigits: 0 })
|
|
246
|
+
}), /* @__PURE__ */ T("span", {
|
|
247
|
+
className: "text-sm text-text-secondary",
|
|
248
|
+
children: ["of ", o(I.targetAmount, { minimumFractionDigits: 0 })]
|
|
361
249
|
})]
|
|
362
|
-
})
|
|
250
|
+
}), /* @__PURE__ */ w("p", {
|
|
251
|
+
className: "mt-1 text-sm text-text-secondary",
|
|
252
|
+
children: "raised so far"
|
|
253
|
+
})] }), /* @__PURE__ */ T("div", {
|
|
254
|
+
className: "grid grid-cols-3 gap-3 border-t border-border-subtle pt-4 text-center",
|
|
255
|
+
children: [
|
|
256
|
+
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
257
|
+
className: "text-base font-bold text-text-primary sm:text-lg",
|
|
258
|
+
children: I.investors.length
|
|
259
|
+
}), /* @__PURE__ */ w("p", {
|
|
260
|
+
className: "text-xs text-text-secondary",
|
|
261
|
+
children: "Investors"
|
|
262
|
+
})] }),
|
|
263
|
+
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
264
|
+
className: "text-base font-bold text-text-primary sm:text-lg",
|
|
265
|
+
children: o(W, {
|
|
266
|
+
minimumFractionDigits: 0,
|
|
267
|
+
notation: "compact"
|
|
268
|
+
})
|
|
269
|
+
}), /* @__PURE__ */ w("p", {
|
|
270
|
+
className: "text-xs text-text-secondary",
|
|
271
|
+
children: "To Go"
|
|
272
|
+
})] }),
|
|
273
|
+
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
274
|
+
className: "text-base font-bold text-text-primary sm:text-lg",
|
|
275
|
+
children: Z === null ? "—" : `${Z}`
|
|
276
|
+
}), /* @__PURE__ */ w("p", {
|
|
277
|
+
className: "text-xs text-text-secondary",
|
|
278
|
+
children: "Days Left"
|
|
279
|
+
})] })
|
|
280
|
+
]
|
|
281
|
+
})]
|
|
282
|
+
})]
|
|
283
|
+
})]
|
|
284
|
+
}),
|
|
285
|
+
F && /* @__PURE__ */ T(E, {
|
|
286
|
+
treatment: "plain",
|
|
287
|
+
className: "p-5 sm:p-6",
|
|
288
|
+
children: [/* @__PURE__ */ w("h3", {
|
|
289
|
+
className: "mb-4 text-lg font-semibold text-text-primary",
|
|
290
|
+
children: "Your Holding"
|
|
291
|
+
}), /* @__PURE__ */ T("div", {
|
|
292
|
+
className: "grid gap-4 sm:grid-cols-2",
|
|
293
|
+
children: [
|
|
294
|
+
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
295
|
+
className: "text-sm text-text-secondary",
|
|
296
|
+
children: "Invested Amount"
|
|
297
|
+
}), /* @__PURE__ */ w("p", {
|
|
298
|
+
className: "font-medium text-text-primary",
|
|
299
|
+
children: o(F.investedAmount, { minimumFractionDigits: 0 })
|
|
300
|
+
})] }),
|
|
301
|
+
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
302
|
+
className: "text-sm text-text-secondary",
|
|
303
|
+
children: "Current Value"
|
|
304
|
+
}), /* @__PURE__ */ w("p", {
|
|
305
|
+
className: "font-medium text-text-primary",
|
|
306
|
+
children: o(F.currentValue, { minimumFractionDigits: 0 })
|
|
307
|
+
})] }),
|
|
308
|
+
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
309
|
+
className: "text-sm text-text-secondary",
|
|
310
|
+
children: "Returns Realised"
|
|
311
|
+
}), /* @__PURE__ */ w("p", {
|
|
312
|
+
className: "font-medium text-text-primary",
|
|
313
|
+
children: o(F.returns, { minimumFractionDigits: 0 })
|
|
314
|
+
})] }),
|
|
315
|
+
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
316
|
+
className: "text-sm text-text-secondary",
|
|
317
|
+
children: "Invested On"
|
|
318
|
+
}), /* @__PURE__ */ w("p", {
|
|
319
|
+
className: "font-medium text-text-primary",
|
|
320
|
+
children: ne(F.investmentDate, {
|
|
321
|
+
hour: void 0,
|
|
322
|
+
minute: void 0
|
|
323
|
+
})
|
|
324
|
+
})] })
|
|
363
325
|
]
|
|
364
|
-
})
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
326
|
+
})]
|
|
327
|
+
})
|
|
328
|
+
]
|
|
329
|
+
}), /* @__PURE__ */ w("div", {
|
|
330
|
+
className: "space-y-6",
|
|
331
|
+
children: /* @__PURE__ */ w("div", {
|
|
332
|
+
className: "lg:sticky lg:top-6",
|
|
333
|
+
children: /* @__PURE__ */ T(E, {
|
|
334
|
+
treatment: "glass",
|
|
335
|
+
glow: !0,
|
|
336
|
+
className: "p-5 sm:p-6",
|
|
337
|
+
children: [
|
|
338
|
+
/* @__PURE__ */ w("h3", {
|
|
339
|
+
className: "mb-4 text-lg font-semibold text-text-primary",
|
|
340
|
+
children: $ ? "Invest" : "Investment Terms"
|
|
341
|
+
}),
|
|
342
|
+
/* @__PURE__ */ T("div", {
|
|
343
|
+
className: "space-y-3",
|
|
344
|
+
children: [
|
|
345
|
+
/* @__PURE__ */ T("div", {
|
|
346
|
+
className: "flex items-center justify-between",
|
|
347
|
+
children: [/* @__PURE__ */ T("span", {
|
|
348
|
+
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
349
|
+
children: [/* @__PURE__ */ w(x, { className: "h-4 w-4" }), "Expected returns"]
|
|
350
|
+
}), /* @__PURE__ */ T("span", {
|
|
351
|
+
className: "font-semibold text-status-success-text",
|
|
352
|
+
children: [I?.expectedReturns ?? F?.returnsPercentage, "% p.a."]
|
|
353
|
+
})]
|
|
354
|
+
}),
|
|
355
|
+
/* @__PURE__ */ T("div", {
|
|
356
|
+
className: "flex items-center justify-between",
|
|
357
|
+
children: [/* @__PURE__ */ T("span", {
|
|
358
|
+
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
359
|
+
children: [/* @__PURE__ */ w(ie, { className: "h-4 w-4" }), "Lock-in"]
|
|
360
|
+
}), /* @__PURE__ */ T("span", {
|
|
361
|
+
className: "font-semibold text-text-primary",
|
|
362
|
+
children: [I?.investmentPeriod ?? "—", " months"]
|
|
363
|
+
})]
|
|
364
|
+
}),
|
|
365
|
+
I && /* @__PURE__ */ T("div", {
|
|
366
|
+
className: "flex items-center justify-between",
|
|
367
|
+
children: [/* @__PURE__ */ T("span", {
|
|
368
|
+
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
369
|
+
children: [/* @__PURE__ */ w(m, { className: "h-4 w-4" }), "Minimum"]
|
|
370
|
+
}), /* @__PURE__ */ w("span", {
|
|
371
|
+
className: "font-semibold text-text-primary",
|
|
372
|
+
children: o(I.minimumInvestment, { minimumFractionDigits: 0 })
|
|
373
|
+
})]
|
|
374
|
+
}),
|
|
375
|
+
I && I.investors.length > 0 && /* @__PURE__ */ T("div", {
|
|
376
|
+
className: "flex items-center justify-between",
|
|
377
|
+
children: [/* @__PURE__ */ T("span", {
|
|
378
|
+
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
379
|
+
children: [/* @__PURE__ */ w(S, { className: "h-4 w-4" }), "Investors"]
|
|
380
|
+
}), /* @__PURE__ */ w("span", {
|
|
381
|
+
className: "font-semibold text-text-primary",
|
|
382
|
+
children: I.investors.length
|
|
383
|
+
})]
|
|
384
|
+
})
|
|
385
|
+
]
|
|
386
|
+
}),
|
|
387
|
+
$ && V !== "success" && /* @__PURE__ */ T("div", {
|
|
388
|
+
className: "mt-5 space-y-4 border-t border-border-subtle pt-5",
|
|
389
|
+
children: [
|
|
390
|
+
/* @__PURE__ */ T("div", { children: [
|
|
391
|
+
/* @__PURE__ */ w("label", {
|
|
392
|
+
htmlFor: "invest-amount",
|
|
393
|
+
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
394
|
+
children: "Amount"
|
|
395
|
+
}),
|
|
396
|
+
/* @__PURE__ */ T("div", {
|
|
397
|
+
className: "relative",
|
|
398
|
+
children: [/* @__PURE__ */ w(m, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary" }), /* @__PURE__ */ w("input", {
|
|
399
|
+
id: "invest-amount",
|
|
400
|
+
type: "number",
|
|
401
|
+
inputMode: "numeric",
|
|
402
|
+
value: z,
|
|
403
|
+
onChange: (e) => {
|
|
404
|
+
B(e.target.value), H("idle");
|
|
405
|
+
},
|
|
406
|
+
placeholder: String(U),
|
|
407
|
+
className: "w-full rounded-lg border border-border-subtle bg-bg-surface py-2.5 pl-9 pr-3 text-base font-semibold text-text-primary placeholder:font-normal placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]"
|
|
408
|
+
})]
|
|
409
|
+
}),
|
|
410
|
+
/* @__PURE__ */ T("p", {
|
|
411
|
+
className: "mt-1.5 text-xs text-text-secondary",
|
|
412
|
+
children: [
|
|
413
|
+
o(U, { minimumFractionDigits: 0 }),
|
|
414
|
+
" –",
|
|
415
|
+
" ",
|
|
416
|
+
o(G, { minimumFractionDigits: 0 })
|
|
417
|
+
]
|
|
418
|
+
}),
|
|
419
|
+
V === "error" && /* @__PURE__ */ T("p", {
|
|
420
|
+
className: "mt-1 text-xs text-status-error-text",
|
|
421
|
+
children: [
|
|
422
|
+
"Enter an amount between",
|
|
423
|
+
" ",
|
|
424
|
+
o(U, { minimumFractionDigits: 0 }),
|
|
425
|
+
" and",
|
|
426
|
+
" ",
|
|
427
|
+
o(G, { minimumFractionDigits: 0 }),
|
|
428
|
+
"."
|
|
429
|
+
]
|
|
430
|
+
})
|
|
431
|
+
] }),
|
|
432
|
+
/* @__PURE__ */ T("div", { children: [
|
|
433
|
+
/* @__PURE__ */ w("p", {
|
|
434
|
+
className: "mb-1 text-sm font-medium text-text-primary",
|
|
435
|
+
children: "Projected returns"
|
|
436
|
+
}),
|
|
437
|
+
/* @__PURE__ */ T("p", {
|
|
438
|
+
className: "mb-2 text-xs text-text-muted",
|
|
439
|
+
children: [
|
|
440
|
+
"Forecast at ",
|
|
441
|
+
I?.expectedReturns,
|
|
442
|
+
"% over ",
|
|
443
|
+
I?.investmentPeriod,
|
|
444
|
+
" ",
|
|
445
|
+
"months"
|
|
446
|
+
]
|
|
447
|
+
}),
|
|
448
|
+
/* @__PURE__ */ w(s, {
|
|
449
|
+
series: J,
|
|
450
|
+
height: 140,
|
|
451
|
+
valueFormatter: ce,
|
|
452
|
+
title: "Projected value over the lock-in period"
|
|
453
|
+
}),
|
|
454
|
+
q && /* @__PURE__ */ T("div", {
|
|
455
|
+
className: "mt-2 flex items-center justify-between rounded-lg bg-bg-sunken/60 px-3 py-2 text-sm",
|
|
456
|
+
children: [/* @__PURE__ */ w("span", {
|
|
457
|
+
className: "text-text-secondary",
|
|
458
|
+
children: "Projected value"
|
|
459
|
+
}), /* @__PURE__ */ w("span", {
|
|
460
|
+
className: "font-semibold text-status-success-text",
|
|
461
|
+
children: o(K * (1 + (I?.expectedReturns ?? 0) / 100), { minimumFractionDigits: 0 })
|
|
462
|
+
})]
|
|
463
|
+
})
|
|
464
|
+
] }),
|
|
465
|
+
/* @__PURE__ */ w("button", {
|
|
466
|
+
type: "button",
|
|
467
|
+
onClick: le,
|
|
468
|
+
disabled: !q || R.isPending,
|
|
469
|
+
className: t("flex w-full items-center justify-center gap-2 rounded-lg px-4 py-3 text-sm font-semibold transition-colors", q && !R.isPending ? "bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg-hover" : "cursor-not-allowed bg-bg-sunken text-text-secondary"),
|
|
470
|
+
children: R.isPending ? "Processing…" : "Invest Now"
|
|
471
|
+
})
|
|
472
|
+
]
|
|
473
|
+
}),
|
|
474
|
+
V === "success" && /* @__PURE__ */ T("div", {
|
|
475
|
+
className: "mt-5 border-t border-border-subtle pt-5 text-center",
|
|
476
|
+
children: [
|
|
477
|
+
/* @__PURE__ */ w(p, { className: "mx-auto mb-2 h-10 w-10 text-status-success-text" }),
|
|
478
|
+
/* @__PURE__ */ w("p", {
|
|
479
|
+
className: "text-sm font-medium text-text-primary",
|
|
480
|
+
children: "Investment successful!"
|
|
481
|
+
}),
|
|
482
|
+
/* @__PURE__ */ w("p", {
|
|
483
|
+
className: "mt-1 text-xs text-text-secondary",
|
|
484
|
+
children: "Redirecting to your portfolio…"
|
|
485
|
+
})
|
|
486
|
+
]
|
|
487
|
+
}),
|
|
488
|
+
!$ && !F && I && /* @__PURE__ */ T("div", {
|
|
489
|
+
className: "mt-5 flex items-center gap-2 rounded-lg border border-border-subtle bg-bg-sunken/50 p-3 text-sm text-text-secondary",
|
|
490
|
+
children: [
|
|
491
|
+
/* @__PURE__ */ w(b, { className: "h-4 w-4 shrink-0" }),
|
|
492
|
+
"This opportunity is ",
|
|
493
|
+
I.status,
|
|
494
|
+
". It's no longer accepting investments."
|
|
495
|
+
]
|
|
496
|
+
})
|
|
497
|
+
]
|
|
498
|
+
})
|
|
372
499
|
})
|
|
373
500
|
})]
|
|
374
501
|
})
|
|
@@ -376,6 +503,6 @@ function E() {
|
|
|
376
503
|
});
|
|
377
504
|
}
|
|
378
505
|
//#endregion
|
|
379
|
-
export {
|
|
506
|
+
export { D as InvestmentDetailsPage };
|
|
380
507
|
|
|
381
508
|
//# sourceMappingURL=InvestmentDetailsPage.js.map
|