@burdenoff/microfe-kadaikodi 2026.704.3 → 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 +34 -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 +84 -6
- 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/AdminProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminSettingsPage.js +332 -276
- package/dist/kadaikodi/pages/admin/AdminSettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/CartManagementPage.js +564 -729
- package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/UserManagementPage.js +310 -366
- package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +201 -120
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js +290 -257
- package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +173 -194
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js +270 -228
- package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js +194 -173
- package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +428 -347
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js +332 -0
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js.map +1 -0
- 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 +294 -162
- 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 +310 -317
- package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/NotificationCenterPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/SettingsPage.js +502 -586
- package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +239 -156
- 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/CustomerDashboard.js +5 -5
- package/dist/kadaikodi/pages/customer/CustomerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CustomerProfilePage.js +189 -199
- package/dist/kadaikodi/pages/customer/CustomerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +272 -230
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/FavoritesPage.js +150 -413
- 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 +411 -305
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/ReviewsPage.js +310 -406
- package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/SavedAddressesPage.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 +441 -514
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +428 -431
- 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 +360 -288
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +303 -281
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,12 +4,14 @@ import { PageLayout as n } from "../../components/PageLayout.js";
|
|
|
4
4
|
import { EmptyState as r } from "../../components/EmptyState.js";
|
|
5
5
|
import { useInvest as i, useInvestmentOpportunities as a } from "../../hooks/useKadaikodiApi.js";
|
|
6
6
|
import { formatCurrency as o } from "../../utils/formatters.js";
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
7
|
+
import { AllocationBar as s } from "../../components/viz/AllocationBar.js";
|
|
8
|
+
import "../../components/viz/index.js";
|
|
9
|
+
import { useCallback as c, useMemo as l, useState as u } from "react";
|
|
10
|
+
import { Briefcase as d, CheckCircle2 as f, Eye as p, FileText as m, IndianRupee as h, Lock as g, Search as _, Target as v, TrendingUp as y, X as b } from "lucide-react";
|
|
11
|
+
import { jsx as x, jsxs as S } from "react/jsx-runtime";
|
|
12
|
+
import { EmphasisPanel as C, GlassCard as w, PagePurpose as T } from "@burdenoff/fe-libs/ui";
|
|
11
13
|
//#region src/kadaikodi/pages/investor/InvestmentOpportunitiesPage.tsx
|
|
12
|
-
function
|
|
14
|
+
function E(e) {
|
|
13
15
|
let t = e.expiresAt ? Math.max(0, Math.ceil((new Date(e.expiresAt).getTime() - Date.now()) / 864e5)) : 0;
|
|
14
16
|
return {
|
|
15
17
|
id: e.id,
|
|
@@ -57,7 +59,7 @@ function x(e) {
|
|
|
57
59
|
status: e.status
|
|
58
60
|
};
|
|
59
61
|
}
|
|
60
|
-
function
|
|
62
|
+
function D(e) {
|
|
61
63
|
switch (e) {
|
|
62
64
|
case "low": return "bg-status-success-bg-subtle text-status-success-text";
|
|
63
65
|
case "medium": return "bg-status-warning-bg-subtle text-status-warning-text";
|
|
@@ -65,7 +67,7 @@ function S(e) {
|
|
|
65
67
|
default: return "bg-bg-sunken text-text-secondary";
|
|
66
68
|
}
|
|
67
69
|
}
|
|
68
|
-
function
|
|
70
|
+
function O(e) {
|
|
69
71
|
switch (e) {
|
|
70
72
|
case "low": return "Low Risk";
|
|
71
73
|
case "medium": return "Medium Risk";
|
|
@@ -73,40 +75,40 @@ function C(e) {
|
|
|
73
75
|
default: return e;
|
|
74
76
|
}
|
|
75
77
|
}
|
|
76
|
-
function
|
|
78
|
+
function k(e, t) {
|
|
77
79
|
return t > 0 ? Math.min(e / t * 100, 100) : 0;
|
|
78
80
|
}
|
|
79
|
-
function
|
|
80
|
-
let { navigateTo:
|
|
81
|
+
function A() {
|
|
82
|
+
let { navigateTo: A, currentUser: j } = e(), { data: M = [], isLoading: N } = a(), P = i(), [F, I] = u(null), [L, R] = u(!1), [z, B] = u(""), [V, H] = u("idle"), [U, W] = u({
|
|
81
83
|
searchQuery: "",
|
|
82
84
|
category: "",
|
|
83
85
|
riskLevel: "",
|
|
84
86
|
minimumAmount: "",
|
|
85
87
|
sortBy: "featured"
|
|
86
|
-
}),
|
|
87
|
-
let e =
|
|
88
|
+
}), G = l(() => M.map(E), [M]), K = l(() => {
|
|
89
|
+
let e = G.length;
|
|
88
90
|
return {
|
|
89
91
|
totalOpportunities: e,
|
|
90
|
-
averageReturns: e ? Number((
|
|
91
|
-
totalFunded:
|
|
92
|
-
totalTarget:
|
|
92
|
+
averageReturns: e ? Number((G.reduce((e, t) => e + t.expectedReturns, 0) / e).toFixed(1)) : 0,
|
|
93
|
+
totalFunded: G.reduce((e, t) => e + t.raisedAmount, 0),
|
|
94
|
+
totalTarget: G.reduce((e, t) => e + t.targetAmount, 0)
|
|
93
95
|
};
|
|
94
|
-
}, [
|
|
95
|
-
|
|
96
|
+
}, [G]), q = c((e, t) => {
|
|
97
|
+
W((n) => ({
|
|
96
98
|
...n,
|
|
97
99
|
[e]: t
|
|
98
100
|
}));
|
|
99
|
-
}, []),
|
|
100
|
-
let e = [...
|
|
101
|
-
if (
|
|
102
|
-
let t =
|
|
101
|
+
}, []), J = l(() => {
|
|
102
|
+
let e = [...G];
|
|
103
|
+
if (U.searchQuery.trim()) {
|
|
104
|
+
let t = U.searchQuery.toLowerCase();
|
|
103
105
|
e = e.filter((e) => e.cartName.toLowerCase().includes(t) || e.description.toLowerCase().includes(t) || e.category.toLowerCase().includes(t));
|
|
104
106
|
}
|
|
105
|
-
if (
|
|
106
|
-
let t = parseInt(
|
|
107
|
+
if (U.category && (e = e.filter((e) => e.category === U.category)), U.riskLevel && (e = e.filter((e) => e.riskLevel === U.riskLevel)), U.minimumAmount) {
|
|
108
|
+
let t = parseInt(U.minimumAmount, 10);
|
|
107
109
|
e = e.filter((e) => e.minimumInvestment <= t);
|
|
108
110
|
}
|
|
109
|
-
switch (
|
|
111
|
+
switch (U.sortBy) {
|
|
110
112
|
case "returns":
|
|
111
113
|
e.sort((e, t) => t.expectedReturns - e.expectedReturns);
|
|
112
114
|
break;
|
|
@@ -122,112 +124,112 @@ function T() {
|
|
|
122
124
|
default: break;
|
|
123
125
|
}
|
|
124
126
|
return e;
|
|
125
|
-
}, [
|
|
126
|
-
if (!
|
|
127
|
-
let e = parseInt(
|
|
127
|
+
}, [U, G]), Y = c(() => {
|
|
128
|
+
if (!F || !z) return;
|
|
129
|
+
let e = parseInt(z, 10);
|
|
128
130
|
if (!isNaN(e)) {
|
|
129
|
-
if (e <
|
|
130
|
-
|
|
131
|
+
if (e < F.minimumInvestment) {
|
|
132
|
+
H("error");
|
|
131
133
|
return;
|
|
132
134
|
}
|
|
133
|
-
if (e >
|
|
134
|
-
|
|
135
|
+
if (e > F.maximumInvestment) {
|
|
136
|
+
H("error");
|
|
135
137
|
return;
|
|
136
138
|
}
|
|
137
|
-
|
|
139
|
+
P.mutate({
|
|
138
140
|
amount: e,
|
|
139
|
-
investorId:
|
|
140
|
-
opportunityId:
|
|
141
|
+
investorId: j?.id ?? "",
|
|
142
|
+
opportunityId: F.id
|
|
141
143
|
}, {
|
|
142
144
|
onSuccess: () => {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
+
H("success"), setTimeout(() => {
|
|
146
|
+
R(!1), B(""), H("idle"), A("/investor/portfolio");
|
|
145
147
|
}, 1500);
|
|
146
148
|
},
|
|
147
|
-
onError: () =>
|
|
149
|
+
onError: () => H("error")
|
|
148
150
|
});
|
|
149
151
|
}
|
|
150
152
|
}, [
|
|
153
|
+
F,
|
|
154
|
+
z,
|
|
151
155
|
A,
|
|
152
156
|
P,
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
]), G = s((e) => {
|
|
157
|
-
j(e), F(""), L("idle"), N(!0);
|
|
157
|
+
j?.id
|
|
158
|
+
]), X = c((e) => {
|
|
159
|
+
I(e), B(""), H("idle"), R(!0);
|
|
158
160
|
}, []);
|
|
159
|
-
return
|
|
161
|
+
return N ? /* @__PURE__ */ x(n, {
|
|
160
162
|
title: "Investment Opportunities",
|
|
161
163
|
description: "Loading opportunities...",
|
|
162
|
-
children: /* @__PURE__ */
|
|
164
|
+
children: /* @__PURE__ */ x("div", {
|
|
163
165
|
className: "flex items-center justify-center py-20",
|
|
164
|
-
children: /* @__PURE__ */
|
|
166
|
+
children: /* @__PURE__ */ S("div", {
|
|
165
167
|
className: "text-center",
|
|
166
|
-
children: [/* @__PURE__ */
|
|
168
|
+
children: [/* @__PURE__ */ x("div", { className: "mx-auto mb-4 h-12 w-12 animate-spin rounded-full border-b-2 border-primary" }), /* @__PURE__ */ x("p", {
|
|
167
169
|
className: "text-sm text-text-secondary",
|
|
168
170
|
children: "Loading opportunities..."
|
|
169
171
|
})]
|
|
170
172
|
})
|
|
171
173
|
})
|
|
172
|
-
}) : /* @__PURE__ */
|
|
174
|
+
}) : /* @__PURE__ */ S(n, {
|
|
173
175
|
title: "Investment Opportunities",
|
|
174
176
|
description: "Discover and invest in growing local businesses",
|
|
175
|
-
actions: /* @__PURE__ */
|
|
177
|
+
actions: /* @__PURE__ */ S("span", {
|
|
176
178
|
className: "text-sm text-text-secondary",
|
|
177
|
-
children: [
|
|
179
|
+
children: [J.length, " opportunities"]
|
|
178
180
|
}),
|
|
179
181
|
children: [
|
|
180
|
-
/* @__PURE__ */
|
|
182
|
+
/* @__PURE__ */ x(T, {
|
|
181
183
|
className: "mb-6",
|
|
182
184
|
children: "The deal flow — local carts and businesses looking for funding right now. Use this page to discover opportunities that fit your strategy, compare projected returns and equity on offer, filter by category or funding stage, and back the ones you believe in. The stats up top show how the platform is performing so you can gauge typical returns and success rates before you commit."
|
|
183
185
|
}),
|
|
184
|
-
/* @__PURE__ */
|
|
186
|
+
/* @__PURE__ */ S(C, { children: [/* @__PURE__ */ x("h2", {
|
|
185
187
|
className: "mb-4 text-base font-semibold text-text-primary",
|
|
186
188
|
children: "Platform Performance"
|
|
187
|
-
}), /* @__PURE__ */
|
|
189
|
+
}), /* @__PURE__ */ S("div", {
|
|
188
190
|
className: "grid grid-cols-2 gap-3 sm:gap-4 lg:grid-cols-4",
|
|
189
191
|
children: [
|
|
190
|
-
/* @__PURE__ */
|
|
192
|
+
/* @__PURE__ */ S("div", {
|
|
191
193
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-3 sm:p-4",
|
|
192
|
-
children: [/* @__PURE__ */
|
|
194
|
+
children: [/* @__PURE__ */ x("p", {
|
|
193
195
|
className: "text-xs text-text-secondary",
|
|
194
196
|
children: "Active Opportunities"
|
|
195
|
-
}), /* @__PURE__ */
|
|
197
|
+
}), /* @__PURE__ */ x("p", {
|
|
196
198
|
className: "text-lg font-bold text-text-primary sm:text-2xl",
|
|
197
|
-
children:
|
|
199
|
+
children: K.totalOpportunities
|
|
198
200
|
})]
|
|
199
201
|
}),
|
|
200
|
-
/* @__PURE__ */
|
|
202
|
+
/* @__PURE__ */ S("div", {
|
|
201
203
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-3 sm:p-4",
|
|
202
|
-
children: [/* @__PURE__ */
|
|
204
|
+
children: [/* @__PURE__ */ x("p", {
|
|
203
205
|
className: "text-xs text-text-secondary",
|
|
204
206
|
children: "Average Returns"
|
|
205
|
-
}), /* @__PURE__ */
|
|
207
|
+
}), /* @__PURE__ */ S("p", {
|
|
206
208
|
className: "text-lg font-bold text-status-success-text sm:text-2xl",
|
|
207
|
-
children: [
|
|
209
|
+
children: [K.averageReturns, "%"]
|
|
208
210
|
})]
|
|
209
211
|
}),
|
|
210
|
-
/* @__PURE__ */
|
|
212
|
+
/* @__PURE__ */ S("div", {
|
|
211
213
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-3 sm:p-4",
|
|
212
|
-
children: [/* @__PURE__ */
|
|
214
|
+
children: [/* @__PURE__ */ x("p", {
|
|
213
215
|
className: "text-xs text-text-secondary",
|
|
214
216
|
children: "Total Funded"
|
|
215
|
-
}), /* @__PURE__ */
|
|
217
|
+
}), /* @__PURE__ */ x("p", {
|
|
216
218
|
className: "text-lg font-bold text-text-primary sm:text-2xl",
|
|
217
|
-
children: o(
|
|
219
|
+
children: o(K.totalFunded, {
|
|
218
220
|
minimumFractionDigits: 0,
|
|
219
221
|
notation: "compact"
|
|
220
222
|
})
|
|
221
223
|
})]
|
|
222
224
|
}),
|
|
223
|
-
/* @__PURE__ */
|
|
225
|
+
/* @__PURE__ */ S("div", {
|
|
224
226
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-3 sm:p-4",
|
|
225
|
-
children: [/* @__PURE__ */
|
|
227
|
+
children: [/* @__PURE__ */ x("p", {
|
|
226
228
|
className: "text-xs text-text-secondary",
|
|
227
229
|
children: "Total Target"
|
|
228
|
-
}), /* @__PURE__ */
|
|
230
|
+
}), /* @__PURE__ */ x("p", {
|
|
229
231
|
className: "text-lg font-bold text-text-primary sm:text-2xl",
|
|
230
|
-
children: o(
|
|
232
|
+
children: o(K.totalTarget, {
|
|
231
233
|
minimumFractionDigits: 0,
|
|
232
234
|
notation: "compact"
|
|
233
235
|
})
|
|
@@ -235,124 +237,124 @@ function T() {
|
|
|
235
237
|
})
|
|
236
238
|
]
|
|
237
239
|
})] }),
|
|
238
|
-
/* @__PURE__ */
|
|
240
|
+
/* @__PURE__ */ x("div", {
|
|
239
241
|
className: "mt-6 rounded-lg border border-border-subtle bg-bg-surface p-4 sm:p-6",
|
|
240
|
-
children: /* @__PURE__ */
|
|
242
|
+
children: /* @__PURE__ */ S("div", {
|
|
241
243
|
className: "grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5",
|
|
242
244
|
children: [
|
|
243
|
-
/* @__PURE__ */
|
|
245
|
+
/* @__PURE__ */ S("div", {
|
|
244
246
|
className: "relative sm:col-span-2 lg:col-span-1",
|
|
245
|
-
children: [/* @__PURE__ */ _
|
|
247
|
+
children: [/* @__PURE__ */ x(_, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary" }), /* @__PURE__ */ x("input", {
|
|
246
248
|
type: "text",
|
|
247
249
|
placeholder: "Search opportunities...",
|
|
248
|
-
value:
|
|
249
|
-
onChange: (e) =>
|
|
250
|
+
value: U.searchQuery,
|
|
251
|
+
onChange: (e) => q("searchQuery", e.target.value),
|
|
250
252
|
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)]"
|
|
251
253
|
})]
|
|
252
254
|
}),
|
|
253
|
-
/* @__PURE__ */
|
|
254
|
-
value:
|
|
255
|
-
onChange: (e) =>
|
|
255
|
+
/* @__PURE__ */ S("select", {
|
|
256
|
+
value: U.category,
|
|
257
|
+
onChange: (e) => q("category", e.target.value),
|
|
256
258
|
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)]",
|
|
257
259
|
children: [
|
|
258
|
-
/* @__PURE__ */
|
|
260
|
+
/* @__PURE__ */ x("option", {
|
|
259
261
|
value: "",
|
|
260
262
|
children: "All Categories"
|
|
261
263
|
}),
|
|
262
|
-
/* @__PURE__ */
|
|
264
|
+
/* @__PURE__ */ x("option", {
|
|
263
265
|
value: "Healthy Food",
|
|
264
266
|
children: "Healthy Food"
|
|
265
267
|
}),
|
|
266
|
-
/* @__PURE__ */
|
|
268
|
+
/* @__PURE__ */ x("option", {
|
|
267
269
|
value: "Fast Food",
|
|
268
270
|
children: "Fast Food"
|
|
269
271
|
}),
|
|
270
|
-
/* @__PURE__ */
|
|
272
|
+
/* @__PURE__ */ x("option", {
|
|
271
273
|
value: "Fusion Food",
|
|
272
274
|
children: "Fusion Food"
|
|
273
275
|
}),
|
|
274
|
-
/* @__PURE__ */
|
|
276
|
+
/* @__PURE__ */ x("option", {
|
|
275
277
|
value: "Beverages",
|
|
276
278
|
children: "Beverages"
|
|
277
279
|
}),
|
|
278
|
-
/* @__PURE__ */
|
|
280
|
+
/* @__PURE__ */ x("option", {
|
|
279
281
|
value: "Street Food",
|
|
280
282
|
children: "Street Food"
|
|
281
283
|
})
|
|
282
284
|
]
|
|
283
285
|
}),
|
|
284
|
-
/* @__PURE__ */
|
|
285
|
-
value:
|
|
286
|
-
onChange: (e) =>
|
|
286
|
+
/* @__PURE__ */ S("select", {
|
|
287
|
+
value: U.riskLevel,
|
|
288
|
+
onChange: (e) => q("riskLevel", e.target.value),
|
|
287
289
|
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)]",
|
|
288
290
|
children: [
|
|
289
|
-
/* @__PURE__ */
|
|
291
|
+
/* @__PURE__ */ x("option", {
|
|
290
292
|
value: "",
|
|
291
293
|
children: "All Risk Levels"
|
|
292
294
|
}),
|
|
293
|
-
/* @__PURE__ */
|
|
295
|
+
/* @__PURE__ */ x("option", {
|
|
294
296
|
value: "low",
|
|
295
297
|
children: "Low Risk"
|
|
296
298
|
}),
|
|
297
|
-
/* @__PURE__ */
|
|
299
|
+
/* @__PURE__ */ x("option", {
|
|
298
300
|
value: "medium",
|
|
299
301
|
children: "Medium Risk"
|
|
300
302
|
}),
|
|
301
|
-
/* @__PURE__ */
|
|
303
|
+
/* @__PURE__ */ x("option", {
|
|
302
304
|
value: "high",
|
|
303
305
|
children: "High Risk"
|
|
304
306
|
})
|
|
305
307
|
]
|
|
306
308
|
}),
|
|
307
|
-
/* @__PURE__ */
|
|
308
|
-
value:
|
|
309
|
-
onChange: (e) =>
|
|
309
|
+
/* @__PURE__ */ S("select", {
|
|
310
|
+
value: U.minimumAmount,
|
|
311
|
+
onChange: (e) => q("minimumAmount", e.target.value),
|
|
310
312
|
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)]",
|
|
311
313
|
children: [
|
|
312
|
-
/* @__PURE__ */
|
|
314
|
+
/* @__PURE__ */ x("option", {
|
|
313
315
|
value: "",
|
|
314
316
|
children: "Any Amount"
|
|
315
317
|
}),
|
|
316
|
-
/* @__PURE__ */
|
|
318
|
+
/* @__PURE__ */ x("option", {
|
|
317
319
|
value: "15000",
|
|
318
320
|
children: "Under ₹15,000"
|
|
319
321
|
}),
|
|
320
|
-
/* @__PURE__ */
|
|
322
|
+
/* @__PURE__ */ x("option", {
|
|
321
323
|
value: "25000",
|
|
322
324
|
children: "Under ₹25,000"
|
|
323
325
|
}),
|
|
324
|
-
/* @__PURE__ */
|
|
326
|
+
/* @__PURE__ */ x("option", {
|
|
325
327
|
value: "50000",
|
|
326
328
|
children: "Under ₹50,000"
|
|
327
329
|
}),
|
|
328
|
-
/* @__PURE__ */
|
|
330
|
+
/* @__PURE__ */ x("option", {
|
|
329
331
|
value: "100000",
|
|
330
332
|
children: "Under ₹1,00,000"
|
|
331
333
|
})
|
|
332
334
|
]
|
|
333
335
|
}),
|
|
334
|
-
/* @__PURE__ */
|
|
335
|
-
value:
|
|
336
|
-
onChange: (e) =>
|
|
336
|
+
/* @__PURE__ */ S("select", {
|
|
337
|
+
value: U.sortBy,
|
|
338
|
+
onChange: (e) => q("sortBy", e.target.value),
|
|
337
339
|
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)]",
|
|
338
340
|
children: [
|
|
339
|
-
/* @__PURE__ */
|
|
341
|
+
/* @__PURE__ */ x("option", {
|
|
340
342
|
value: "featured",
|
|
341
343
|
children: "Featured"
|
|
342
344
|
}),
|
|
343
|
-
/* @__PURE__ */
|
|
345
|
+
/* @__PURE__ */ x("option", {
|
|
344
346
|
value: "returns",
|
|
345
347
|
children: "Highest Returns"
|
|
346
348
|
}),
|
|
347
|
-
/* @__PURE__ */
|
|
349
|
+
/* @__PURE__ */ x("option", {
|
|
348
350
|
value: "funding",
|
|
349
351
|
children: "Most Funded"
|
|
350
352
|
}),
|
|
351
|
-
/* @__PURE__ */
|
|
353
|
+
/* @__PURE__ */ x("option", {
|
|
352
354
|
value: "closing",
|
|
353
355
|
children: "Closing Soon"
|
|
354
356
|
}),
|
|
355
|
-
/* @__PURE__ */
|
|
357
|
+
/* @__PURE__ */ x("option", {
|
|
356
358
|
value: "minimum",
|
|
357
359
|
children: "Lowest Minimum"
|
|
358
360
|
})
|
|
@@ -361,15 +363,15 @@ function T() {
|
|
|
361
363
|
]
|
|
362
364
|
})
|
|
363
365
|
}),
|
|
364
|
-
|
|
366
|
+
J.length === 0 ? /* @__PURE__ */ x("div", {
|
|
365
367
|
className: "mt-6",
|
|
366
|
-
children: /* @__PURE__ */
|
|
367
|
-
icon: /* @__PURE__ */ _
|
|
368
|
+
children: /* @__PURE__ */ x(r, {
|
|
369
|
+
icon: /* @__PURE__ */ x(_, { className: "h-10 w-10" }),
|
|
368
370
|
title: "No opportunities found",
|
|
369
371
|
description: "Try adjusting your filters to find more opportunities",
|
|
370
|
-
action: /* @__PURE__ */
|
|
372
|
+
action: /* @__PURE__ */ x("button", {
|
|
371
373
|
type: "button",
|
|
372
|
-
onClick: () =>
|
|
374
|
+
onClick: () => W({
|
|
373
375
|
searchQuery: "",
|
|
374
376
|
category: "",
|
|
375
377
|
riskLevel: "",
|
|
@@ -380,291 +382,316 @@ function T() {
|
|
|
380
382
|
children: "Clear Filters"
|
|
381
383
|
})
|
|
382
384
|
})
|
|
383
|
-
}) : /* @__PURE__ */
|
|
384
|
-
className: "mt-6 grid grid-cols-1 gap-4
|
|
385
|
-
children:
|
|
386
|
-
let n =
|
|
387
|
-
return /* @__PURE__ */
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
className: "p-4 sm:p-6",
|
|
407
|
-
children: [
|
|
408
|
-
/* @__PURE__ */ v("div", {
|
|
409
|
-
className: "mb-4 flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",
|
|
410
|
-
children: [/* @__PURE__ */ v("div", {
|
|
411
|
-
className: "flex-1",
|
|
412
|
-
children: [
|
|
413
|
-
/* @__PURE__ */ _("h3", {
|
|
414
|
-
className: "text-base font-semibold text-text-primary sm:text-xl",
|
|
415
|
-
children: e.cartName
|
|
416
|
-
}),
|
|
417
|
-
/* @__PURE__ */ v("p", {
|
|
418
|
-
className: "text-xs text-text-secondary sm:text-sm",
|
|
419
|
-
children: ["by ", e.cartOwner]
|
|
420
|
-
}),
|
|
421
|
-
/* @__PURE__ */ v("div", {
|
|
422
|
-
className: "mt-2 flex flex-wrap items-center gap-2",
|
|
423
|
-
children: [/* @__PURE__ */ _("span", {
|
|
424
|
-
className: "text-xs text-text-secondary sm:text-sm",
|
|
425
|
-
children: e.category
|
|
426
|
-
}), /* @__PURE__ */ _("span", {
|
|
427
|
-
className: t("rounded-full px-2 py-0.5 text-xs font-medium", S(e.riskLevel)),
|
|
428
|
-
children: C(e.riskLevel)
|
|
429
|
-
})]
|
|
430
|
-
})
|
|
431
|
-
]
|
|
432
|
-
}), /* @__PURE__ */ v("div", {
|
|
433
|
-
className: "text-left sm:text-right",
|
|
434
|
-
children: [/* @__PURE__ */ v("p", {
|
|
435
|
-
className: "text-xl font-bold text-status-success-text sm:text-2xl",
|
|
436
|
-
children: [e.expectedReturns, "%"]
|
|
437
|
-
}), /* @__PURE__ */ _("p", {
|
|
438
|
-
className: "text-xs text-text-secondary",
|
|
439
|
-
children: "Expected Returns"
|
|
385
|
+
}) : /* @__PURE__ */ x("div", {
|
|
386
|
+
className: "mt-6 grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-3",
|
|
387
|
+
children: J.map((e) => {
|
|
388
|
+
let n = k(e.raisedAmount, e.targetAmount), r = Math.max(0, e.targetAmount - e.raisedAmount), i = e.status === "funded";
|
|
389
|
+
return /* @__PURE__ */ S(w, {
|
|
390
|
+
treatment: "plain",
|
|
391
|
+
className: "flex flex-col p-5",
|
|
392
|
+
children: [
|
|
393
|
+
/* @__PURE__ */ S("div", {
|
|
394
|
+
className: "flex items-start gap-3",
|
|
395
|
+
children: [
|
|
396
|
+
/* @__PURE__ */ x("div", {
|
|
397
|
+
className: "flex h-12 w-12 shrink-0 items-center justify-center rounded-full bg-[var(--color-accent-soft)]",
|
|
398
|
+
children: /* @__PURE__ */ x(d, { className: "h-5 w-5 text-text-primary" })
|
|
399
|
+
}),
|
|
400
|
+
/* @__PURE__ */ S("div", {
|
|
401
|
+
className: "min-w-0 flex-1",
|
|
402
|
+
children: [/* @__PURE__ */ x("p", {
|
|
403
|
+
className: "truncate text-xs text-text-secondary",
|
|
404
|
+
children: e.cartOwner || "Local business"
|
|
405
|
+
}), /* @__PURE__ */ x("h3", {
|
|
406
|
+
className: "truncate text-base font-semibold text-text-primary",
|
|
407
|
+
children: e.cartName
|
|
440
408
|
})]
|
|
441
|
-
})
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
409
|
+
}),
|
|
410
|
+
/* @__PURE__ */ x("span", {
|
|
411
|
+
className: t("shrink-0 rounded-full px-2.5 py-1 text-xs font-semibold", D(e.riskLevel)),
|
|
412
|
+
children: O(e.riskLevel)
|
|
413
|
+
})
|
|
414
|
+
]
|
|
415
|
+
}),
|
|
416
|
+
e.description && /* @__PURE__ */ x("p", {
|
|
417
|
+
className: "mt-3 line-clamp-2 text-sm leading-relaxed text-text-secondary",
|
|
418
|
+
children: e.description
|
|
419
|
+
}),
|
|
420
|
+
/* @__PURE__ */ S("div", {
|
|
421
|
+
className: "mt-4 grid grid-cols-4 gap-2 rounded-lg border border-border-subtle bg-bg-sunken/40 p-3 text-center",
|
|
422
|
+
children: [
|
|
423
|
+
/* @__PURE__ */ S("div", { children: [
|
|
424
|
+
/* @__PURE__ */ x("div", {
|
|
425
|
+
className: "flex items-center justify-center gap-1 text-text-secondary",
|
|
426
|
+
children: /* @__PURE__ */ x(v, { className: "h-3.5 w-3.5" })
|
|
427
|
+
}),
|
|
428
|
+
/* @__PURE__ */ x("p", {
|
|
429
|
+
className: "mt-1 text-xs text-text-secondary",
|
|
430
|
+
children: "Target"
|
|
431
|
+
}),
|
|
432
|
+
/* @__PURE__ */ x("p", {
|
|
433
|
+
className: "text-sm font-bold text-text-primary",
|
|
434
|
+
children: o(e.targetAmount, {
|
|
435
|
+
minimumFractionDigits: 0,
|
|
436
|
+
notation: "compact"
|
|
437
|
+
})
|
|
438
|
+
})
|
|
439
|
+
] }),
|
|
440
|
+
/* @__PURE__ */ S("div", { children: [
|
|
441
|
+
/* @__PURE__ */ x("div", {
|
|
442
|
+
className: "flex items-center justify-center gap-1 text-text-secondary",
|
|
443
|
+
children: /* @__PURE__ */ x(h, { className: "h-3.5 w-3.5" })
|
|
444
|
+
}),
|
|
445
|
+
/* @__PURE__ */ x("p", {
|
|
446
|
+
className: "mt-1 text-xs text-text-secondary",
|
|
447
|
+
children: "Min"
|
|
463
448
|
}),
|
|
464
|
-
/* @__PURE__ */
|
|
465
|
-
className: "
|
|
466
|
-
children:
|
|
467
|
-
|
|
468
|
-
|
|
449
|
+
/* @__PURE__ */ x("p", {
|
|
450
|
+
className: "text-sm font-bold text-text-primary",
|
|
451
|
+
children: o(e.minimumInvestment, {
|
|
452
|
+
minimumFractionDigits: 0,
|
|
453
|
+
notation: "compact"
|
|
469
454
|
})
|
|
455
|
+
})
|
|
456
|
+
] }),
|
|
457
|
+
/* @__PURE__ */ S("div", { children: [
|
|
458
|
+
/* @__PURE__ */ x("div", {
|
|
459
|
+
className: "flex items-center justify-center gap-1 text-text-secondary",
|
|
460
|
+
children: /* @__PURE__ */ x(y, { className: "h-3.5 w-3.5" })
|
|
461
|
+
}),
|
|
462
|
+
/* @__PURE__ */ x("p", {
|
|
463
|
+
className: "mt-1 text-xs text-text-secondary",
|
|
464
|
+
children: "Returns"
|
|
470
465
|
}),
|
|
471
|
-
/* @__PURE__ */
|
|
472
|
-
className: "
|
|
473
|
-
children: [
|
|
466
|
+
/* @__PURE__ */ S("p", {
|
|
467
|
+
className: "text-sm font-bold text-status-success-text",
|
|
468
|
+
children: [e.expectedReturns, "%"]
|
|
474
469
|
})
|
|
470
|
+
] }),
|
|
471
|
+
/* @__PURE__ */ S("div", { children: [
|
|
472
|
+
/* @__PURE__ */ x("div", {
|
|
473
|
+
className: "flex items-center justify-center gap-1 text-text-secondary",
|
|
474
|
+
children: /* @__PURE__ */ x(g, { className: "h-3.5 w-3.5" })
|
|
475
|
+
}),
|
|
476
|
+
/* @__PURE__ */ x("p", {
|
|
477
|
+
className: "mt-1 text-xs text-text-secondary",
|
|
478
|
+
children: "Lock-in"
|
|
479
|
+
}),
|
|
480
|
+
/* @__PURE__ */ S("p", {
|
|
481
|
+
className: "text-sm font-bold text-text-primary",
|
|
482
|
+
children: [e.paybackPeriod, "mo"]
|
|
483
|
+
})
|
|
484
|
+
] })
|
|
485
|
+
]
|
|
486
|
+
}),
|
|
487
|
+
/* @__PURE__ */ S("div", {
|
|
488
|
+
className: "mt-4",
|
|
489
|
+
children: [/* @__PURE__ */ x(s, {
|
|
490
|
+
height: 10,
|
|
491
|
+
showLegend: !1,
|
|
492
|
+
label: /* @__PURE__ */ S("span", {
|
|
493
|
+
className: "text-text-primary",
|
|
494
|
+
children: [
|
|
495
|
+
o(e.raisedAmount, { minimumFractionDigits: 0 }),
|
|
496
|
+
" ",
|
|
497
|
+
"raised"
|
|
498
|
+
]
|
|
499
|
+
}),
|
|
500
|
+
rightLabel: `${n.toFixed(0)}%`,
|
|
501
|
+
segments: [{
|
|
502
|
+
label: "Raised",
|
|
503
|
+
value: e.raisedAmount
|
|
504
|
+
}, {
|
|
505
|
+
label: "Remaining",
|
|
506
|
+
value: r,
|
|
507
|
+
color: "var(--color-bg-sunken)"
|
|
508
|
+
}]
|
|
509
|
+
}), /* @__PURE__ */ S("p", {
|
|
510
|
+
className: "mt-1.5 text-xs text-text-secondary",
|
|
511
|
+
children: [
|
|
512
|
+
e.investorCount,
|
|
513
|
+
" investors ·",
|
|
514
|
+
" ",
|
|
515
|
+
o(e.targetAmount, {
|
|
516
|
+
minimumFractionDigits: 0,
|
|
517
|
+
notation: "compact"
|
|
518
|
+
}),
|
|
519
|
+
" ",
|
|
520
|
+
"goal"
|
|
475
521
|
]
|
|
476
|
-
})
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
className: "
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
})
|
|
499
|
-
}),
|
|
500
|
-
/* @__PURE__ */ v("div", {
|
|
501
|
-
className: "flex flex-col gap-2 sm:flex-row sm:gap-3",
|
|
502
|
-
children: [/* @__PURE__ */ _("button", {
|
|
503
|
-
type: "button",
|
|
504
|
-
onClick: () => G(e),
|
|
505
|
-
disabled: e.status === "funded",
|
|
506
|
-
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"),
|
|
507
|
-
children: e.status === "funded" ? "Fully Funded" : "Invest Now"
|
|
508
|
-
}), /* @__PURE__ */ v("button", {
|
|
509
|
-
type: "button",
|
|
510
|
-
onClick: () => T(`/investor/opportunity/${e.id}`),
|
|
511
|
-
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",
|
|
512
|
-
children: [/* @__PURE__ */ _(f, { className: "h-4 w-4" }), "View Details"]
|
|
513
|
-
})]
|
|
514
|
-
})
|
|
515
|
-
]
|
|
516
|
-
})]
|
|
522
|
+
})]
|
|
523
|
+
}),
|
|
524
|
+
e.documents.length > 0 && /* @__PURE__ */ S("div", {
|
|
525
|
+
className: "mt-3 flex items-center gap-1.5 text-xs text-text-secondary",
|
|
526
|
+
children: [/* @__PURE__ */ x(m, { className: "h-3.5 w-3.5" }), /* @__PURE__ */ S("span", { children: [e.documents.length, " documents available"] })]
|
|
527
|
+
}),
|
|
528
|
+
/* @__PURE__ */ S("div", {
|
|
529
|
+
className: "mt-auto flex flex-col gap-2 pt-4 sm:flex-row",
|
|
530
|
+
children: [/* @__PURE__ */ x("button", {
|
|
531
|
+
type: "button",
|
|
532
|
+
onClick: () => X(e),
|
|
533
|
+
disabled: i,
|
|
534
|
+
className: t("flex-1 rounded-lg px-4 py-2.5 text-sm font-semibold transition-colors", i ? "cursor-not-allowed bg-bg-sunken text-text-secondary" : "bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg-hover"),
|
|
535
|
+
children: i ? "Fully Funded" : "Invest"
|
|
536
|
+
}), /* @__PURE__ */ S("button", {
|
|
537
|
+
type: "button",
|
|
538
|
+
onClick: () => A(`/investor/opportunity/${e.id}`),
|
|
539
|
+
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",
|
|
540
|
+
children: [/* @__PURE__ */ x(p, { className: "h-4 w-4" }), "Details"]
|
|
541
|
+
})]
|
|
542
|
+
})
|
|
543
|
+
]
|
|
517
544
|
}, e.id);
|
|
518
545
|
})
|
|
519
546
|
}),
|
|
520
|
-
|
|
547
|
+
L && F && /* @__PURE__ */ x("div", {
|
|
521
548
|
className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
|
|
522
|
-
children: /* @__PURE__ */
|
|
549
|
+
children: /* @__PURE__ */ S("div", {
|
|
523
550
|
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",
|
|
524
551
|
children: [
|
|
525
|
-
/* @__PURE__ */
|
|
552
|
+
/* @__PURE__ */ x("button", {
|
|
526
553
|
type: "button",
|
|
527
554
|
onClick: () => {
|
|
528
|
-
|
|
555
|
+
R(!1), B(""), H("idle");
|
|
529
556
|
},
|
|
530
557
|
className: "absolute right-3 top-3 rounded-lg p-1 text-text-secondary hover:bg-accent transition-colors",
|
|
531
|
-
children: /* @__PURE__ */
|
|
558
|
+
children: /* @__PURE__ */ x(b, { className: "h-5 w-5" })
|
|
532
559
|
}),
|
|
533
|
-
/* @__PURE__ */
|
|
560
|
+
/* @__PURE__ */ S("h3", {
|
|
534
561
|
className: "mb-4 text-base font-semibold text-text-primary sm:text-lg",
|
|
535
|
-
children: ["Invest in ",
|
|
562
|
+
children: ["Invest in ", F.cartName]
|
|
536
563
|
}),
|
|
537
|
-
|
|
564
|
+
V === "success" ? /* @__PURE__ */ S("div", {
|
|
538
565
|
className: "py-8 text-center",
|
|
539
566
|
children: [
|
|
540
|
-
/* @__PURE__ */
|
|
541
|
-
/* @__PURE__ */
|
|
567
|
+
/* @__PURE__ */ x(f, { className: "mx-auto mb-3 h-12 w-12 text-status-success-text" }),
|
|
568
|
+
/* @__PURE__ */ x("p", {
|
|
542
569
|
className: "text-sm font-medium text-text-primary",
|
|
543
570
|
children: "Investment successful!"
|
|
544
571
|
}),
|
|
545
|
-
/* @__PURE__ */
|
|
572
|
+
/* @__PURE__ */ x("p", {
|
|
546
573
|
className: "mt-1 text-xs text-text-secondary",
|
|
547
574
|
children: "Redirecting to your portfolio..."
|
|
548
575
|
})
|
|
549
576
|
]
|
|
550
|
-
}) : /* @__PURE__ */
|
|
577
|
+
}) : /* @__PURE__ */ S("div", {
|
|
551
578
|
className: "space-y-4",
|
|
552
579
|
children: [
|
|
553
|
-
/* @__PURE__ */
|
|
580
|
+
/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("p", {
|
|
554
581
|
className: "mb-1 text-xs text-text-secondary sm:text-sm",
|
|
555
582
|
children: "Investment Range"
|
|
556
|
-
}), /* @__PURE__ */
|
|
583
|
+
}), /* @__PURE__ */ S("p", {
|
|
557
584
|
className: "text-sm font-medium text-text-primary sm:text-base",
|
|
558
585
|
children: [
|
|
559
|
-
o(
|
|
586
|
+
o(F.minimumInvestment, { minimumFractionDigits: 0 }),
|
|
560
587
|
" ",
|
|
561
588
|
"-",
|
|
562
589
|
" ",
|
|
563
|
-
o(
|
|
590
|
+
o(F.maximumInvestment, { minimumFractionDigits: 0 })
|
|
564
591
|
]
|
|
565
592
|
})] }),
|
|
566
|
-
/* @__PURE__ */
|
|
567
|
-
/* @__PURE__ */
|
|
593
|
+
/* @__PURE__ */ S("div", { children: [
|
|
594
|
+
/* @__PURE__ */ x("label", {
|
|
568
595
|
className: "mb-1 block text-xs font-medium text-text-primary sm:text-sm",
|
|
569
596
|
children: "Investment Amount"
|
|
570
597
|
}),
|
|
571
|
-
/* @__PURE__ */
|
|
598
|
+
/* @__PURE__ */ S("div", {
|
|
572
599
|
className: "relative",
|
|
573
|
-
children: [/* @__PURE__ */
|
|
600
|
+
children: [/* @__PURE__ */ x(h, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary" }), /* @__PURE__ */ x("input", {
|
|
574
601
|
type: "number",
|
|
575
|
-
value:
|
|
602
|
+
value: z,
|
|
576
603
|
onChange: (e) => {
|
|
577
|
-
|
|
604
|
+
B(e.target.value), H("idle");
|
|
578
605
|
},
|
|
579
606
|
placeholder: "Enter amount",
|
|
580
607
|
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)]"
|
|
581
608
|
})]
|
|
582
609
|
}),
|
|
583
|
-
|
|
610
|
+
V === "error" && /* @__PURE__ */ S("p", {
|
|
584
611
|
className: "mt-1 text-xs text-status-error-text",
|
|
585
612
|
children: [
|
|
586
613
|
"Amount must be between",
|
|
587
614
|
" ",
|
|
588
|
-
o(
|
|
615
|
+
o(F.minimumInvestment, { minimumFractionDigits: 0 }),
|
|
589
616
|
" ",
|
|
590
617
|
"and",
|
|
591
618
|
" ",
|
|
592
|
-
o(
|
|
619
|
+
o(F.maximumInvestment, { minimumFractionDigits: 0 })
|
|
593
620
|
]
|
|
594
621
|
})
|
|
595
622
|
] }),
|
|
596
|
-
|
|
623
|
+
z && !isNaN(parseInt(z, 10)) && parseInt(z, 10) > 0 && /* @__PURE__ */ S("div", {
|
|
597
624
|
className: "rounded-lg border border-border-subtle bg-bg-sunken/50 p-3 sm:p-4",
|
|
598
|
-
children: [/* @__PURE__ */
|
|
625
|
+
children: [/* @__PURE__ */ x("p", {
|
|
599
626
|
className: "mb-2 text-xs text-text-secondary sm:text-sm",
|
|
600
627
|
children: "Expected Returns"
|
|
601
|
-
}), /* @__PURE__ */
|
|
628
|
+
}), /* @__PURE__ */ S("div", {
|
|
602
629
|
className: "space-y-1.5",
|
|
603
630
|
children: [
|
|
604
|
-
/* @__PURE__ */
|
|
631
|
+
/* @__PURE__ */ S("div", {
|
|
605
632
|
className: "flex justify-between",
|
|
606
|
-
children: [/* @__PURE__ */
|
|
633
|
+
children: [/* @__PURE__ */ x("span", {
|
|
607
634
|
className: "text-xs text-text-primary sm:text-sm",
|
|
608
635
|
children: "Investment:"
|
|
609
|
-
}), /* @__PURE__ */
|
|
636
|
+
}), /* @__PURE__ */ x("span", {
|
|
610
637
|
className: "text-xs font-medium text-text-primary sm:text-sm",
|
|
611
|
-
children: o(parseInt(
|
|
638
|
+
children: o(parseInt(z, 10), { minimumFractionDigits: 0 })
|
|
612
639
|
})]
|
|
613
640
|
}),
|
|
614
|
-
/* @__PURE__ */
|
|
641
|
+
/* @__PURE__ */ S("div", {
|
|
615
642
|
className: "flex justify-between",
|
|
616
|
-
children: [/* @__PURE__ */
|
|
643
|
+
children: [/* @__PURE__ */ S("span", {
|
|
617
644
|
className: "text-xs text-text-primary sm:text-sm",
|
|
618
645
|
children: [
|
|
619
646
|
"Expected Return (",
|
|
620
|
-
|
|
647
|
+
F.expectedReturns,
|
|
621
648
|
"%):"
|
|
622
649
|
]
|
|
623
|
-
}), /* @__PURE__ */
|
|
650
|
+
}), /* @__PURE__ */ S("span", {
|
|
624
651
|
className: "text-xs font-medium text-status-success-text sm:text-sm",
|
|
625
|
-
children: ["+", o(parseInt(
|
|
652
|
+
children: ["+", o(parseInt(z, 10) * F.expectedReturns / 100, { minimumFractionDigits: 0 })]
|
|
626
653
|
})]
|
|
627
654
|
}),
|
|
628
|
-
/* @__PURE__ */
|
|
655
|
+
/* @__PURE__ */ S("div", {
|
|
629
656
|
className: "flex justify-between border-t border-border-subtle pt-2",
|
|
630
|
-
children: [/* @__PURE__ */
|
|
657
|
+
children: [/* @__PURE__ */ x("span", {
|
|
631
658
|
className: "text-xs font-medium text-text-primary sm:text-sm",
|
|
632
659
|
children: "Total Value:"
|
|
633
|
-
}), /* @__PURE__ */
|
|
660
|
+
}), /* @__PURE__ */ x("span", {
|
|
634
661
|
className: "text-xs font-bold text-text-primary sm:text-sm",
|
|
635
|
-
children: o(parseInt(
|
|
662
|
+
children: o(parseInt(z, 10) * (1 + F.expectedReturns / 100), { minimumFractionDigits: 0 })
|
|
636
663
|
})]
|
|
637
664
|
})
|
|
638
665
|
]
|
|
639
666
|
})]
|
|
640
667
|
}),
|
|
641
|
-
/* @__PURE__ */
|
|
668
|
+
/* @__PURE__ */ S("div", {
|
|
642
669
|
className: "space-y-1 text-xs text-text-secondary sm:text-sm",
|
|
643
|
-
children: [/* @__PURE__ */
|
|
670
|
+
children: [/* @__PURE__ */ S("p", { children: [
|
|
644
671
|
"• Minimum lock-in period:",
|
|
645
672
|
" ",
|
|
646
|
-
|
|
673
|
+
F.investmentTerms.lockInPeriod,
|
|
647
674
|
" months"
|
|
648
|
-
] }), /* @__PURE__ */
|
|
675
|
+
] }), /* @__PURE__ */ S("p", { children: [
|
|
649
676
|
"• Expected returns: ",
|
|
650
|
-
|
|
677
|
+
F.expectedReturns,
|
|
651
678
|
"% over the lock-in period"
|
|
652
679
|
] })]
|
|
653
680
|
}),
|
|
654
|
-
/* @__PURE__ */
|
|
681
|
+
/* @__PURE__ */ S("div", {
|
|
655
682
|
className: "flex flex-col gap-2 pt-2 sm:flex-row sm:gap-3",
|
|
656
|
-
children: [/* @__PURE__ */
|
|
683
|
+
children: [/* @__PURE__ */ x("button", {
|
|
657
684
|
type: "button",
|
|
658
685
|
onClick: () => {
|
|
659
|
-
|
|
686
|
+
R(!1), B(""), H("idle");
|
|
660
687
|
},
|
|
661
688
|
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",
|
|
662
689
|
children: "Cancel"
|
|
663
|
-
}), /* @__PURE__ */
|
|
690
|
+
}), /* @__PURE__ */ x("button", {
|
|
664
691
|
type: "button",
|
|
665
|
-
onClick:
|
|
666
|
-
disabled: !
|
|
667
|
-
className: t("flex-1 rounded-lg px-4 py-2.5 text-sm font-medium transition-colors", !
|
|
692
|
+
onClick: Y,
|
|
693
|
+
disabled: !z || isNaN(parseInt(z, 10)) || parseInt(z, 10) < F.minimumInvestment,
|
|
694
|
+
className: t("flex-1 rounded-lg px-4 py-2.5 text-sm font-medium transition-colors", !z || isNaN(parseInt(z, 10)) || parseInt(z, 10) < F.minimumInvestment ? "cursor-not-allowed bg-bg-sunken text-text-secondary" : "bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg/90"),
|
|
668
695
|
children: "Confirm Investment"
|
|
669
696
|
})]
|
|
670
697
|
})
|
|
@@ -677,6 +704,6 @@ function T() {
|
|
|
677
704
|
});
|
|
678
705
|
}
|
|
679
706
|
//#endregion
|
|
680
|
-
export {
|
|
707
|
+
export { A as InvestmentOpportunitiesPage };
|
|
681
708
|
|
|
682
709
|
//# sourceMappingURL=InvestmentOpportunitiesPage.js.map
|