@burdenoff/microfe-kadaikodi 2026.719.4 → 2026.730.1

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