@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.
Files changed (145) hide show
  1. package/dist/kadaikodi/KadaikodiRoutes.js +34 -26
  2. package/dist/kadaikodi/KadaikodiRoutes.js.map +1 -1
  3. package/dist/kadaikodi/components/viz/AllocationBar.js +68 -0
  4. package/dist/kadaikodi/components/viz/AllocationBar.js.map +1 -0
  5. package/dist/kadaikodi/components/viz/AreaChart.js +102 -0
  6. package/dist/kadaikodi/components/viz/AreaChart.js.map +1 -0
  7. package/dist/kadaikodi/components/viz/AvatarStack.js +36 -0
  8. package/dist/kadaikodi/components/viz/AvatarStack.js.map +1 -0
  9. package/dist/kadaikodi/components/viz/BarChart.js +83 -0
  10. package/dist/kadaikodi/components/viz/BarChart.js.map +1 -0
  11. package/dist/kadaikodi/components/viz/CertificateCard.js +4 -0
  12. package/dist/kadaikodi/components/viz/DonutChart.js +109 -0
  13. package/dist/kadaikodi/components/viz/DonutChart.js.map +1 -0
  14. package/dist/kadaikodi/components/viz/HBarFunnel.js +54 -0
  15. package/dist/kadaikodi/components/viz/HBarFunnel.js.map +1 -0
  16. package/dist/kadaikodi/components/viz/Heatmap.js +3 -0
  17. package/dist/kadaikodi/components/viz/KanbanBoard.js +50 -0
  18. package/dist/kadaikodi/components/viz/KanbanBoard.js.map +1 -0
  19. package/dist/kadaikodi/components/viz/LineChart.js +4 -0
  20. package/dist/kadaikodi/components/viz/OrgTree.js +2 -0
  21. package/dist/kadaikodi/components/viz/PathSteps.js +3 -0
  22. package/dist/kadaikodi/components/viz/ProgressRing.js +68 -0
  23. package/dist/kadaikodi/components/viz/ProgressRing.js.map +1 -0
  24. package/dist/kadaikodi/components/viz/RatingStars.js +51 -0
  25. package/dist/kadaikodi/components/viz/RatingStars.js.map +1 -0
  26. package/dist/kadaikodi/components/viz/SegmentedTabs.js +69 -0
  27. package/dist/kadaikodi/components/viz/SegmentedTabs.js.map +1 -0
  28. package/dist/kadaikodi/components/viz/SkillBar.js +3 -0
  29. package/dist/kadaikodi/components/viz/Sparkline.js +74 -0
  30. package/dist/kadaikodi/components/viz/Sparkline.js.map +1 -0
  31. package/dist/kadaikodi/components/viz/StatCard.js +60 -0
  32. package/dist/kadaikodi/components/viz/StatCard.js.map +1 -0
  33. package/dist/kadaikodi/components/viz/StepProgress.js +64 -0
  34. package/dist/kadaikodi/components/viz/StepProgress.js.map +1 -0
  35. package/dist/kadaikodi/components/viz/Timeline.js +66 -0
  36. package/dist/kadaikodi/components/viz/Timeline.js.map +1 -0
  37. package/dist/kadaikodi/components/viz/index.js +23 -0
  38. package/dist/kadaikodi/components/viz/lib/Avatar.js +30 -0
  39. package/dist/kadaikodi/components/viz/lib/Avatar.js.map +1 -0
  40. package/dist/kadaikodi/components/viz/lib/CartesianFrame.js +119 -0
  41. package/dist/kadaikodi/components/viz/lib/CartesianFrame.js.map +1 -0
  42. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js +35 -0
  43. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js.map +1 -0
  44. package/dist/kadaikodi/components/viz/lib/format.js +21 -0
  45. package/dist/kadaikodi/components/viz/lib/format.js.map +1 -0
  46. package/dist/kadaikodi/components/viz/lib/geometry.js +61 -0
  47. package/dist/kadaikodi/components/viz/lib/geometry.js.map +1 -0
  48. package/dist/kadaikodi/components/viz/lib/hooks.js +39 -0
  49. package/dist/kadaikodi/components/viz/lib/hooks.js.map +1 -0
  50. package/dist/kadaikodi/components/viz/lib/palette.js +27 -0
  51. package/dist/kadaikodi/components/viz/lib/palette.js.map +1 -0
  52. package/dist/kadaikodi/hooks/useKadaikodiApi.js +84 -6
  53. package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
  54. package/dist/kadaikodi/pages/HomePage.js +373 -631
  55. package/dist/kadaikodi/pages/HomePage.js.map +1 -1
  56. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +304 -169
  57. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
  58. package/dist/kadaikodi/pages/admin/AdminDashboard.js +255 -271
  59. package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
  60. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +185 -125
  61. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
  62. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +141 -102
  63. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
  64. package/dist/kadaikodi/pages/admin/AdminProfilePage.js.map +1 -1
  65. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js +332 -276
  66. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js.map +1 -1
  67. package/dist/kadaikodi/pages/admin/CartManagementPage.js +564 -729
  68. package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
  69. package/dist/kadaikodi/pages/admin/UserManagementPage.js +310 -366
  70. package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
  71. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +201 -120
  72. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  73. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js +290 -257
  74. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
  75. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +173 -194
  76. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  77. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js +270 -228
  78. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  79. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js +194 -173
  80. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
  81. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +428 -347
  82. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  83. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js +332 -0
  84. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js.map +1 -0
  85. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js +373 -0
  86. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js.map +1 -0
  87. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +294 -162
  88. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
  89. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +180 -181
  90. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
  91. package/dist/kadaikodi/pages/common/HelpSupportPage.js +310 -317
  92. package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
  93. package/dist/kadaikodi/pages/common/NotificationCenterPage.js.map +1 -1
  94. package/dist/kadaikodi/pages/common/SettingsPage.js +502 -586
  95. package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
  96. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +239 -156
  97. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
  98. package/dist/kadaikodi/pages/customer/CartDetailPage.js +405 -248
  99. package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
  100. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +258 -232
  101. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
  102. package/dist/kadaikodi/pages/customer/CheckoutPage.js +254 -205
  103. package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
  104. package/dist/kadaikodi/pages/customer/CustomerDashboard.js +5 -5
  105. package/dist/kadaikodi/pages/customer/CustomerDashboard.js.map +1 -1
  106. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js +189 -199
  107. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js.map +1 -1
  108. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +272 -230
  109. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
  110. package/dist/kadaikodi/pages/customer/FavoritesPage.js +150 -413
  111. package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
  112. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js +173 -134
  113. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
  114. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +411 -305
  115. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
  116. package/dist/kadaikodi/pages/customer/ReviewsPage.js +310 -406
  117. package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
  118. package/dist/kadaikodi/pages/customer/SavedAddressesPage.js.map +1 -1
  119. package/dist/kadaikodi/pages/customer/shared.js +181 -0
  120. package/dist/kadaikodi/pages/customer/shared.js.map +1 -0
  121. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js +438 -311
  122. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
  123. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +320 -293
  124. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  125. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js +159 -91
  126. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  127. package/dist/kadaikodi/pages/investor/InvestorDashboard.js +137 -107
  128. package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
  129. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +157 -135
  130. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  131. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js +280 -206
  132. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js.map +1 -1
  133. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js +441 -514
  134. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
  135. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +428 -431
  136. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
  137. package/dist/kadaikodi/pages/worker/WorkerDashboard.js +328 -445
  138. package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
  139. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +141 -164
  140. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
  141. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +360 -288
  142. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
  143. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +303 -281
  144. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
  145. 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 { useCallback as s, useMemo as c, useState as l } from "react";
8
- import { Briefcase as u, CheckCircle2 as d, Eye as f, FileText as p, IndianRupee as m, Search as h, X as g } from "lucide-react";
9
- import { jsx as _, jsxs as v } from "react/jsx-runtime";
10
- import { EmphasisPanel as y, PagePurpose as b } from "@burdenoff/fe-libs/ui";
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 x(e) {
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 S(e) {
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 C(e) {
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 w(e, t) {
78
+ function k(e, t) {
77
79
  return t > 0 ? Math.min(e / t * 100, 100) : 0;
78
80
  }
79
- function T() {
80
- let { navigateTo: T, currentUser: E } = e(), { data: D = [], isLoading: O } = a(), k = i(), [A, j] = l(null), [M, N] = l(!1), [P, F] = l(""), [I, L] = l("idle"), [R, z] = l({
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
- }), B = c(() => D.map(x), [D]), V = c(() => {
87
- let e = B.length;
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((B.reduce((e, t) => e + t.expectedReturns, 0) / e).toFixed(1)) : 0,
91
- totalFunded: B.reduce((e, t) => e + t.raisedAmount, 0),
92
- totalTarget: B.reduce((e, t) => e + t.targetAmount, 0)
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
- }, [B]), H = s((e, t) => {
95
- z((n) => ({
96
+ }, [G]), q = c((e, t) => {
97
+ W((n) => ({
96
98
  ...n,
97
99
  [e]: t
98
100
  }));
99
- }, []), U = c(() => {
100
- let e = [...B];
101
- if (R.searchQuery.trim()) {
102
- let t = R.searchQuery.toLowerCase();
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 (R.category && (e = e.filter((e) => e.category === R.category)), R.riskLevel && (e = e.filter((e) => e.riskLevel === R.riskLevel)), R.minimumAmount) {
106
- let t = parseInt(R.minimumAmount, 10);
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 (R.sortBy) {
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
- }, [R, B]), W = s(() => {
126
- if (!A || !P) return;
127
- let e = parseInt(P, 10);
127
+ }, [U, G]), Y = c(() => {
128
+ if (!F || !z) return;
129
+ let e = parseInt(z, 10);
128
130
  if (!isNaN(e)) {
129
- if (e < A.minimumInvestment) {
130
- L("error");
131
+ if (e < F.minimumInvestment) {
132
+ H("error");
131
133
  return;
132
134
  }
133
- if (e > A.maximumInvestment) {
134
- L("error");
135
+ if (e > F.maximumInvestment) {
136
+ H("error");
135
137
  return;
136
138
  }
137
- k.mutate({
139
+ P.mutate({
138
140
  amount: e,
139
- investorId: E?.id ?? "",
140
- opportunityId: A.id
141
+ investorId: j?.id ?? "",
142
+ opportunityId: F.id
141
143
  }, {
142
144
  onSuccess: () => {
143
- L("success"), setTimeout(() => {
144
- N(!1), F(""), L("idle"), T("/investor/portfolio");
145
+ H("success"), setTimeout(() => {
146
+ R(!1), B(""), H("idle"), A("/investor/portfolio");
145
147
  }, 1500);
146
148
  },
147
- onError: () => L("error")
149
+ onError: () => H("error")
148
150
  });
149
151
  }
150
152
  }, [
153
+ F,
154
+ z,
151
155
  A,
152
156
  P,
153
- T,
154
- k,
155
- E?.id
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 O ? /* @__PURE__ */ _(n, {
161
+ return N ? /* @__PURE__ */ x(n, {
160
162
  title: "Investment Opportunities",
161
163
  description: "Loading opportunities...",
162
- children: /* @__PURE__ */ _("div", {
164
+ children: /* @__PURE__ */ x("div", {
163
165
  className: "flex items-center justify-center py-20",
164
- children: /* @__PURE__ */ v("div", {
166
+ children: /* @__PURE__ */ S("div", {
165
167
  className: "text-center",
166
- children: [/* @__PURE__ */ _("div", { className: "mx-auto mb-4 h-12 w-12 animate-spin rounded-full border-b-2 border-primary" }), /* @__PURE__ */ _("p", {
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__ */ v(n, {
174
+ }) : /* @__PURE__ */ S(n, {
173
175
  title: "Investment Opportunities",
174
176
  description: "Discover and invest in growing local businesses",
175
- actions: /* @__PURE__ */ v("span", {
177
+ actions: /* @__PURE__ */ S("span", {
176
178
  className: "text-sm text-text-secondary",
177
- children: [U.length, " opportunities"]
179
+ children: [J.length, " opportunities"]
178
180
  }),
179
181
  children: [
180
- /* @__PURE__ */ _(b, {
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__ */ v(y, { children: [/* @__PURE__ */ _("h2", {
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__ */ v("div", {
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__ */ v("div", {
192
+ /* @__PURE__ */ S("div", {
191
193
  className: "rounded-lg border border-border-subtle bg-bg-surface p-3 sm:p-4",
192
- children: [/* @__PURE__ */ _("p", {
194
+ children: [/* @__PURE__ */ x("p", {
193
195
  className: "text-xs text-text-secondary",
194
196
  children: "Active Opportunities"
195
- }), /* @__PURE__ */ _("p", {
197
+ }), /* @__PURE__ */ x("p", {
196
198
  className: "text-lg font-bold text-text-primary sm:text-2xl",
197
- children: V.totalOpportunities
199
+ children: K.totalOpportunities
198
200
  })]
199
201
  }),
200
- /* @__PURE__ */ v("div", {
202
+ /* @__PURE__ */ S("div", {
201
203
  className: "rounded-lg border border-border-subtle bg-bg-surface p-3 sm:p-4",
202
- children: [/* @__PURE__ */ _("p", {
204
+ children: [/* @__PURE__ */ x("p", {
203
205
  className: "text-xs text-text-secondary",
204
206
  children: "Average Returns"
205
- }), /* @__PURE__ */ v("p", {
207
+ }), /* @__PURE__ */ S("p", {
206
208
  className: "text-lg font-bold text-status-success-text sm:text-2xl",
207
- children: [V.averageReturns, "%"]
209
+ children: [K.averageReturns, "%"]
208
210
  })]
209
211
  }),
210
- /* @__PURE__ */ v("div", {
212
+ /* @__PURE__ */ S("div", {
211
213
  className: "rounded-lg border border-border-subtle bg-bg-surface p-3 sm:p-4",
212
- children: [/* @__PURE__ */ _("p", {
214
+ children: [/* @__PURE__ */ x("p", {
213
215
  className: "text-xs text-text-secondary",
214
216
  children: "Total Funded"
215
- }), /* @__PURE__ */ _("p", {
217
+ }), /* @__PURE__ */ x("p", {
216
218
  className: "text-lg font-bold text-text-primary sm:text-2xl",
217
- children: o(V.totalFunded, {
219
+ children: o(K.totalFunded, {
218
220
  minimumFractionDigits: 0,
219
221
  notation: "compact"
220
222
  })
221
223
  })]
222
224
  }),
223
- /* @__PURE__ */ v("div", {
225
+ /* @__PURE__ */ S("div", {
224
226
  className: "rounded-lg border border-border-subtle bg-bg-surface p-3 sm:p-4",
225
- children: [/* @__PURE__ */ _("p", {
227
+ children: [/* @__PURE__ */ x("p", {
226
228
  className: "text-xs text-text-secondary",
227
229
  children: "Total Target"
228
- }), /* @__PURE__ */ _("p", {
230
+ }), /* @__PURE__ */ x("p", {
229
231
  className: "text-lg font-bold text-text-primary sm:text-2xl",
230
- children: o(V.totalTarget, {
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__ */ _("div", {
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__ */ v("div", {
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__ */ v("div", {
245
+ /* @__PURE__ */ S("div", {
244
246
  className: "relative sm:col-span-2 lg:col-span-1",
245
- children: [/* @__PURE__ */ _(h, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary" }), /* @__PURE__ */ _("input", {
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: R.searchQuery,
249
- onChange: (e) => H("searchQuery", e.target.value),
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__ */ v("select", {
254
- value: R.category,
255
- onChange: (e) => H("category", e.target.value),
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__ */ _("option", {
260
+ /* @__PURE__ */ x("option", {
259
261
  value: "",
260
262
  children: "All Categories"
261
263
  }),
262
- /* @__PURE__ */ _("option", {
264
+ /* @__PURE__ */ x("option", {
263
265
  value: "Healthy Food",
264
266
  children: "Healthy Food"
265
267
  }),
266
- /* @__PURE__ */ _("option", {
268
+ /* @__PURE__ */ x("option", {
267
269
  value: "Fast Food",
268
270
  children: "Fast Food"
269
271
  }),
270
- /* @__PURE__ */ _("option", {
272
+ /* @__PURE__ */ x("option", {
271
273
  value: "Fusion Food",
272
274
  children: "Fusion Food"
273
275
  }),
274
- /* @__PURE__ */ _("option", {
276
+ /* @__PURE__ */ x("option", {
275
277
  value: "Beverages",
276
278
  children: "Beverages"
277
279
  }),
278
- /* @__PURE__ */ _("option", {
280
+ /* @__PURE__ */ x("option", {
279
281
  value: "Street Food",
280
282
  children: "Street Food"
281
283
  })
282
284
  ]
283
285
  }),
284
- /* @__PURE__ */ v("select", {
285
- value: R.riskLevel,
286
- onChange: (e) => H("riskLevel", e.target.value),
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__ */ _("option", {
291
+ /* @__PURE__ */ x("option", {
290
292
  value: "",
291
293
  children: "All Risk Levels"
292
294
  }),
293
- /* @__PURE__ */ _("option", {
295
+ /* @__PURE__ */ x("option", {
294
296
  value: "low",
295
297
  children: "Low Risk"
296
298
  }),
297
- /* @__PURE__ */ _("option", {
299
+ /* @__PURE__ */ x("option", {
298
300
  value: "medium",
299
301
  children: "Medium Risk"
300
302
  }),
301
- /* @__PURE__ */ _("option", {
303
+ /* @__PURE__ */ x("option", {
302
304
  value: "high",
303
305
  children: "High Risk"
304
306
  })
305
307
  ]
306
308
  }),
307
- /* @__PURE__ */ v("select", {
308
- value: R.minimumAmount,
309
- onChange: (e) => H("minimumAmount", e.target.value),
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__ */ _("option", {
314
+ /* @__PURE__ */ x("option", {
313
315
  value: "",
314
316
  children: "Any Amount"
315
317
  }),
316
- /* @__PURE__ */ _("option", {
318
+ /* @__PURE__ */ x("option", {
317
319
  value: "15000",
318
320
  children: "Under ₹15,000"
319
321
  }),
320
- /* @__PURE__ */ _("option", {
322
+ /* @__PURE__ */ x("option", {
321
323
  value: "25000",
322
324
  children: "Under ₹25,000"
323
325
  }),
324
- /* @__PURE__ */ _("option", {
326
+ /* @__PURE__ */ x("option", {
325
327
  value: "50000",
326
328
  children: "Under ₹50,000"
327
329
  }),
328
- /* @__PURE__ */ _("option", {
330
+ /* @__PURE__ */ x("option", {
329
331
  value: "100000",
330
332
  children: "Under ₹1,00,000"
331
333
  })
332
334
  ]
333
335
  }),
334
- /* @__PURE__ */ v("select", {
335
- value: R.sortBy,
336
- onChange: (e) => H("sortBy", e.target.value),
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__ */ _("option", {
341
+ /* @__PURE__ */ x("option", {
340
342
  value: "featured",
341
343
  children: "Featured"
342
344
  }),
343
- /* @__PURE__ */ _("option", {
345
+ /* @__PURE__ */ x("option", {
344
346
  value: "returns",
345
347
  children: "Highest Returns"
346
348
  }),
347
- /* @__PURE__ */ _("option", {
349
+ /* @__PURE__ */ x("option", {
348
350
  value: "funding",
349
351
  children: "Most Funded"
350
352
  }),
351
- /* @__PURE__ */ _("option", {
353
+ /* @__PURE__ */ x("option", {
352
354
  value: "closing",
353
355
  children: "Closing Soon"
354
356
  }),
355
- /* @__PURE__ */ _("option", {
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
- U.length === 0 ? /* @__PURE__ */ _("div", {
366
+ J.length === 0 ? /* @__PURE__ */ x("div", {
365
367
  className: "mt-6",
366
- children: /* @__PURE__ */ _(r, {
367
- icon: /* @__PURE__ */ _(h, { className: "h-10 w-10" }),
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__ */ _("button", {
372
+ action: /* @__PURE__ */ x("button", {
371
373
  type: "button",
372
- onClick: () => z({
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__ */ _("div", {
384
- className: "mt-6 grid grid-cols-1 gap-4 lg:grid-cols-2",
385
- children: U.map((e) => {
386
- let n = w(e.raisedAmount, e.targetAmount);
387
- return /* @__PURE__ */ v("div", {
388
- className: "rounded-lg border border-border-subtle bg-bg-surface shadow-sm hover:shadow-md transition-shadow",
389
- children: [/* @__PURE__ */ v("div", {
390
- className: "relative",
391
- children: [
392
- /* @__PURE__ */ _("div", {
393
- className: "flex h-40 w-full items-center justify-center overflow-hidden rounded-t-lg bg-bg-sunken sm:h-48",
394
- children: /* @__PURE__ */ _(u, { className: "h-10 w-10 text-text-secondary" })
395
- }),
396
- e.status === "funded" && /* @__PURE__ */ _("div", {
397
- className: "absolute right-2 top-2 rounded-full bg-status-success-text px-2 py-1 text-xs font-medium text-white sm:right-4 sm:top-4 sm:px-3",
398
- children: "Fully Funded"
399
- }),
400
- e.daysLeft > 0 && e.daysLeft <= 7 && /* @__PURE__ */ v("div", {
401
- className: "absolute left-2 top-2 rounded-full bg-status-error-text px-2 py-1 text-xs font-medium text-white sm:left-4 sm:top-4 sm:px-3",
402
- children: [e.daysLeft, " days left"]
403
- })
404
- ]
405
- }), /* @__PURE__ */ v("div", {
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
- /* @__PURE__ */ _("p", {
444
- className: "mb-4 text-sm leading-relaxed text-text-secondary line-clamp-2",
445
- children: e.description
446
- }),
447
- /* @__PURE__ */ v("div", {
448
- className: "mb-4",
449
- children: [
450
- /* @__PURE__ */ v("div", {
451
- className: "mb-1 flex justify-between text-xs sm:text-sm",
452
- children: [/* @__PURE__ */ v("span", {
453
- className: "font-medium text-text-primary",
454
- children: [
455
- o(e.raisedAmount, { minimumFractionDigits: 0 }),
456
- " ",
457
- "raised"
458
- ]
459
- }), /* @__PURE__ */ v("span", {
460
- className: "text-text-secondary",
461
- children: ["of ", o(e.targetAmount, { minimumFractionDigits: 0 })]
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__ */ _("div", {
465
- className: "h-2 w-full overflow-hidden rounded-full bg-bg-sunken",
466
- children: /* @__PURE__ */ _("div", {
467
- className: "h-full rounded-full bg-action-primary-bg transition-all duration-300",
468
- style: { width: `${n}%` }
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__ */ v("div", {
472
- className: "mt-1 flex justify-between text-xs text-text-secondary",
473
- children: [/* @__PURE__ */ v("span", { children: [e.investorCount, " investors"] }), /* @__PURE__ */ v("span", { children: [n.toFixed(0), "% funded"] })]
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
- /* @__PURE__ */ v("div", {
478
- className: "mb-4 grid grid-cols-2 gap-2 text-center sm:gap-4",
479
- children: [/* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
480
- className: "text-sm font-bold text-text-primary sm:text-lg",
481
- children: o(e.minimumInvestment, { minimumFractionDigits: 0 })
482
- }), /* @__PURE__ */ _("p", {
483
- className: "text-xs text-text-secondary",
484
- children: "Min Investment"
485
- })] }), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ v("p", {
486
- className: "text-sm font-bold text-text-primary sm:text-lg",
487
- children: [e.paybackPeriod, " mo"]
488
- }), /* @__PURE__ */ _("p", {
489
- className: "text-xs text-text-secondary",
490
- children: "Lock-in Period"
491
- })] })]
492
- }),
493
- e.documents.length > 0 && /* @__PURE__ */ _("div", {
494
- className: "mb-4 border-t border-border-subtle pt-3",
495
- children: /* @__PURE__ */ v("div", {
496
- className: "flex items-center gap-1.5 text-xs text-text-secondary",
497
- children: [/* @__PURE__ */ _(p, { className: "h-3.5 w-3.5" }), /* @__PURE__ */ v("span", { children: [e.documents.length, " documents available"] })]
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
- M && A && /* @__PURE__ */ _("div", {
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__ */ v("div", {
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__ */ _("button", {
552
+ /* @__PURE__ */ x("button", {
526
553
  type: "button",
527
554
  onClick: () => {
528
- N(!1), F(""), L("idle");
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__ */ _(g, { className: "h-5 w-5" })
558
+ children: /* @__PURE__ */ x(b, { className: "h-5 w-5" })
532
559
  }),
533
- /* @__PURE__ */ v("h3", {
560
+ /* @__PURE__ */ S("h3", {
534
561
  className: "mb-4 text-base font-semibold text-text-primary sm:text-lg",
535
- children: ["Invest in ", A.cartName]
562
+ children: ["Invest in ", F.cartName]
536
563
  }),
537
- I === "success" ? /* @__PURE__ */ v("div", {
564
+ V === "success" ? /* @__PURE__ */ S("div", {
538
565
  className: "py-8 text-center",
539
566
  children: [
540
- /* @__PURE__ */ _(d, { className: "mx-auto mb-3 h-12 w-12 text-status-success-text" }),
541
- /* @__PURE__ */ _("p", {
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__ */ _("p", {
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__ */ v("div", {
577
+ }) : /* @__PURE__ */ S("div", {
551
578
  className: "space-y-4",
552
579
  children: [
553
- /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
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__ */ v("p", {
583
+ }), /* @__PURE__ */ S("p", {
557
584
  className: "text-sm font-medium text-text-primary sm:text-base",
558
585
  children: [
559
- o(A.minimumInvestment, { minimumFractionDigits: 0 }),
586
+ o(F.minimumInvestment, { minimumFractionDigits: 0 }),
560
587
  " ",
561
588
  "-",
562
589
  " ",
563
- o(A.maximumInvestment, { minimumFractionDigits: 0 })
590
+ o(F.maximumInvestment, { minimumFractionDigits: 0 })
564
591
  ]
565
592
  })] }),
566
- /* @__PURE__ */ v("div", { children: [
567
- /* @__PURE__ */ _("label", {
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__ */ v("div", {
598
+ /* @__PURE__ */ S("div", {
572
599
  className: "relative",
573
- children: [/* @__PURE__ */ _(m, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary" }), /* @__PURE__ */ _("input", {
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: P,
602
+ value: z,
576
603
  onChange: (e) => {
577
- F(e.target.value), L("idle");
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
- I === "error" && /* @__PURE__ */ v("p", {
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(A.minimumInvestment, { minimumFractionDigits: 0 }),
615
+ o(F.minimumInvestment, { minimumFractionDigits: 0 }),
589
616
  " ",
590
617
  "and",
591
618
  " ",
592
- o(A.maximumInvestment, { minimumFractionDigits: 0 })
619
+ o(F.maximumInvestment, { minimumFractionDigits: 0 })
593
620
  ]
594
621
  })
595
622
  ] }),
596
- P && !isNaN(parseInt(P, 10)) && parseInt(P, 10) > 0 && /* @__PURE__ */ v("div", {
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__ */ _("p", {
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__ */ v("div", {
628
+ }), /* @__PURE__ */ S("div", {
602
629
  className: "space-y-1.5",
603
630
  children: [
604
- /* @__PURE__ */ v("div", {
631
+ /* @__PURE__ */ S("div", {
605
632
  className: "flex justify-between",
606
- children: [/* @__PURE__ */ _("span", {
633
+ children: [/* @__PURE__ */ x("span", {
607
634
  className: "text-xs text-text-primary sm:text-sm",
608
635
  children: "Investment:"
609
- }), /* @__PURE__ */ _("span", {
636
+ }), /* @__PURE__ */ x("span", {
610
637
  className: "text-xs font-medium text-text-primary sm:text-sm",
611
- children: o(parseInt(P, 10), { minimumFractionDigits: 0 })
638
+ children: o(parseInt(z, 10), { minimumFractionDigits: 0 })
612
639
  })]
613
640
  }),
614
- /* @__PURE__ */ v("div", {
641
+ /* @__PURE__ */ S("div", {
615
642
  className: "flex justify-between",
616
- children: [/* @__PURE__ */ v("span", {
643
+ children: [/* @__PURE__ */ S("span", {
617
644
  className: "text-xs text-text-primary sm:text-sm",
618
645
  children: [
619
646
  "Expected Return (",
620
- A.expectedReturns,
647
+ F.expectedReturns,
621
648
  "%):"
622
649
  ]
623
- }), /* @__PURE__ */ v("span", {
650
+ }), /* @__PURE__ */ S("span", {
624
651
  className: "text-xs font-medium text-status-success-text sm:text-sm",
625
- children: ["+", o(parseInt(P, 10) * A.expectedReturns / 100, { minimumFractionDigits: 0 })]
652
+ children: ["+", o(parseInt(z, 10) * F.expectedReturns / 100, { minimumFractionDigits: 0 })]
626
653
  })]
627
654
  }),
628
- /* @__PURE__ */ v("div", {
655
+ /* @__PURE__ */ S("div", {
629
656
  className: "flex justify-between border-t border-border-subtle pt-2",
630
- children: [/* @__PURE__ */ _("span", {
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__ */ _("span", {
660
+ }), /* @__PURE__ */ x("span", {
634
661
  className: "text-xs font-bold text-text-primary sm:text-sm",
635
- children: o(parseInt(P, 10) * (1 + A.expectedReturns / 100), { minimumFractionDigits: 0 })
662
+ children: o(parseInt(z, 10) * (1 + F.expectedReturns / 100), { minimumFractionDigits: 0 })
636
663
  })]
637
664
  })
638
665
  ]
639
666
  })]
640
667
  }),
641
- /* @__PURE__ */ v("div", {
668
+ /* @__PURE__ */ S("div", {
642
669
  className: "space-y-1 text-xs text-text-secondary sm:text-sm",
643
- children: [/* @__PURE__ */ v("p", { children: [
670
+ children: [/* @__PURE__ */ S("p", { children: [
644
671
  "• Minimum lock-in period:",
645
672
  " ",
646
- A.investmentTerms.lockInPeriod,
673
+ F.investmentTerms.lockInPeriod,
647
674
  " months"
648
- ] }), /* @__PURE__ */ v("p", { children: [
675
+ ] }), /* @__PURE__ */ S("p", { children: [
649
676
  "• Expected returns: ",
650
- A.expectedReturns,
677
+ F.expectedReturns,
651
678
  "% over the lock-in period"
652
679
  ] })]
653
680
  }),
654
- /* @__PURE__ */ v("div", {
681
+ /* @__PURE__ */ S("div", {
655
682
  className: "flex flex-col gap-2 pt-2 sm:flex-row sm:gap-3",
656
- children: [/* @__PURE__ */ _("button", {
683
+ children: [/* @__PURE__ */ x("button", {
657
684
  type: "button",
658
685
  onClick: () => {
659
- N(!1), F(""), L("idle");
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__ */ _("button", {
690
+ }), /* @__PURE__ */ x("button", {
664
691
  type: "button",
665
- onClick: W,
666
- disabled: !P || isNaN(parseInt(P, 10)) || parseInt(P, 10) < A.minimumInvestment,
667
- 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"),
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 { T as InvestmentOpportunitiesPage };
707
+ export { A as InvestmentOpportunitiesPage };
681
708
 
682
709
  //# sourceMappingURL=InvestmentOpportunitiesPage.js.map