@burdenoff/microfe-housingvista 2026.709.2 → 2026.709.3
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/housingvista/HousingVistaRoutes.d.ts.map +1 -1
- package/dist/housingvista/HousingVistaRoutes.js +136 -37
- package/dist/housingvista/HousingVistaRoutes.js.map +1 -1
- package/dist/housingvista/hooks/useHousingVistaAnalytics.d.ts +1 -1
- package/dist/housingvista/hooks/useHousingVistaAnalytics.d.ts.map +1 -1
- package/dist/housingvista/hooks/useHousingVistaAnalytics.js +4 -4
- package/dist/housingvista/hooks/useHousingVistaAnalytics.js.map +1 -1
- package/dist/housingvista/pages/amc/AMCManagementPage.d.ts.map +1 -1
- package/dist/housingvista/pages/amc/AMCManagementPage.js +62 -60
- package/dist/housingvista/pages/amc/AMCManagementPage.js.map +1 -1
- package/dist/housingvista/pages/assets/AssetDetailPage.d.ts.map +1 -1
- package/dist/housingvista/pages/assets/AssetDetailPage.js +141 -138
- package/dist/housingvista/pages/assets/AssetDetailPage.js.map +1 -1
- package/dist/housingvista/pages/assets/AssetManagementPage.d.ts.map +1 -1
- package/dist/housingvista/pages/assets/AssetManagementPage.js +193 -191
- package/dist/housingvista/pages/assets/AssetManagementPage.js.map +1 -1
- package/dist/housingvista/pages/chat/ChatPage.d.ts.map +1 -1
- package/dist/housingvista/pages/chat/ChatPage.js +115 -113
- package/dist/housingvista/pages/chat/ChatPage.js.map +1 -1
- package/dist/housingvista/pages/finance/HomeLoanDetailPage.d.ts.map +1 -1
- package/dist/housingvista/pages/finance/HomeLoanDetailPage.js +152 -149
- package/dist/housingvista/pages/finance/HomeLoanDetailPage.js.map +1 -1
- package/dist/housingvista/pages/finance/HomeLoansPage.d.ts.map +1 -1
- package/dist/housingvista/pages/finance/HomeLoansPage.js +141 -139
- package/dist/housingvista/pages/finance/HomeLoansPage.js.map +1 -1
- package/dist/housingvista/pages/investments/InvestmentDetailPage.d.ts.map +1 -1
- package/dist/housingvista/pages/investments/InvestmentDetailPage.js +290 -287
- package/dist/housingvista/pages/investments/InvestmentDetailPage.js.map +1 -1
- package/dist/housingvista/pages/investments/InvestmentsPage.d.ts.map +1 -1
- package/dist/housingvista/pages/investments/InvestmentsPage.js +64 -62
- package/dist/housingvista/pages/investments/InvestmentsPage.js.map +1 -1
- package/dist/housingvista/pages/legal/LegalPage.d.ts.map +1 -1
- package/dist/housingvista/pages/legal/LegalPage.js +95 -93
- package/dist/housingvista/pages/legal/LegalPage.js.map +1 -1
- package/dist/housingvista/pages/legal/LegalServiceDetailPage.d.ts.map +1 -1
- package/dist/housingvista/pages/legal/LegalServiceDetailPage.js +129 -126
- package/dist/housingvista/pages/legal/LegalServiceDetailPage.js.map +1 -1
- package/dist/housingvista/pages/market/AreaInsightsPage.d.ts.map +1 -1
- package/dist/housingvista/pages/market/AreaInsightsPage.js +99 -97
- package/dist/housingvista/pages/market/AreaInsightsPage.js.map +1 -1
- package/dist/housingvista/pages/market/MarketAnalyticsPage.d.ts.map +1 -1
- package/dist/housingvista/pages/market/MarketAnalyticsPage.js +138 -136
- package/dist/housingvista/pages/market/MarketAnalyticsPage.js.map +1 -1
- package/dist/housingvista/pages/marketplace/MarketplacePage.d.ts.map +1 -1
- package/dist/housingvista/pages/marketplace/MarketplacePage.js +99 -97
- package/dist/housingvista/pages/marketplace/MarketplacePage.js.map +1 -1
- package/dist/housingvista/pages/marketplace/ServiceDetailPage.d.ts.map +1 -1
- package/dist/housingvista/pages/marketplace/ServiceDetailPage.js +137 -134
- package/dist/housingvista/pages/marketplace/ServiceDetailPage.js.map +1 -1
- package/dist/housingvista/pages/offers/OffersPage.d.ts.map +1 -1
- package/dist/housingvista/pages/offers/OffersPage.js +94 -92
- package/dist/housingvista/pages/offers/OffersPage.js.map +1 -1
- package/dist/housingvista/pages/properties/AddPropertyPage.d.ts.map +1 -1
- package/dist/housingvista/pages/properties/AddPropertyPage.js +280 -279
- package/dist/housingvista/pages/properties/AddPropertyPage.js.map +1 -1
- package/dist/housingvista/pages/rental/RentalManagementPage.d.ts.map +1 -1
- package/dist/housingvista/pages/rental/RentalManagementPage.js +153 -151
- package/dist/housingvista/pages/rental/RentalManagementPage.js.map +1 -1
- package/dist/housingvista/pages/settings/ProfilePage.d.ts.map +1 -1
- package/dist/housingvista/pages/settings/ProfilePage.js +52 -50
- package/dist/housingvista/pages/settings/ProfilePage.js.map +1 -1
- package/dist/housingvista/pages/settings/SettingsPage.d.ts.map +1 -1
- package/dist/housingvista/pages/settings/SettingsPage.js +54 -52
- package/dist/housingvista/pages/settings/SettingsPage.js.map +1 -1
- package/dist/housingvista/pages/shortlist/ShortlistPage.d.ts.map +1 -1
- package/dist/housingvista/pages/shortlist/ShortlistPage.js +43 -41
- package/dist/housingvista/pages/shortlist/ShortlistPage.js.map +1 -1
- package/dist/housingvista/pages/transactions/TransactionDetailPage.d.ts.map +1 -1
- package/dist/housingvista/pages/transactions/TransactionDetailPage.js +211 -208
- package/dist/housingvista/pages/transactions/TransactionDetailPage.js.map +1 -1
- package/dist/housingvista/pages/transactions/TransactionsPage.d.ts.map +1 -1
- package/dist/housingvista/pages/transactions/TransactionsPage.js +85 -83
- package/dist/housingvista/pages/transactions/TransactionsPage.js.map +1 -1
- package/dist/housingvista/pages/verification/VerificationDetailPage.d.ts.map +1 -1
- package/dist/housingvista/pages/verification/VerificationDetailPage.js +25 -22
- package/dist/housingvista/pages/verification/VerificationDetailPage.js.map +1 -1
- package/dist/housingvista/pages/verification/VerificationPage.d.ts.map +1 -1
- package/dist/housingvista/pages/verification/VerificationPage.js +123 -121
- package/dist/housingvista/pages/verification/VerificationPage.js.map +1 -1
- package/dist/housingvista/pages/viewings/ViewingsPage.d.ts.map +1 -1
- package/dist/housingvista/pages/viewings/ViewingsPage.js +128 -126
- package/dist/housingvista/pages/viewings/ViewingsPage.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,22 +6,23 @@ import { StatusBadge as a } from "../../components/StatusBadge.js";
|
|
|
6
6
|
import { EmptyState as o } from "../../components/EmptyState.js";
|
|
7
7
|
import { ChartCard as ee } from "../../components/ChartCard.js";
|
|
8
8
|
import { FilterBar as te } from "../../components/FilterBar.js";
|
|
9
|
+
import { useTrackPageView as s } from "../../hooks/useHousingVistaAnalytics.js";
|
|
9
10
|
import { useAssets as ne, useCreateAsset as re } from "../../hooks/index.js";
|
|
10
|
-
import { notify as
|
|
11
|
+
import { notify as c } from "../../lib/toast.js";
|
|
11
12
|
import "../../components/index.js";
|
|
12
13
|
import { useServerPagination as ie } from "../../hooks/useServerPagination.js";
|
|
13
|
-
import { Tooltip as
|
|
14
|
-
import { ResponsiveContainer as
|
|
15
|
-
import { Cell as
|
|
16
|
-
import { Pie as
|
|
17
|
-
import { PieChart as
|
|
18
|
-
import { useEffect as
|
|
19
|
-
import { ArrowDownRight as d, ArrowUpRight as f, BarChart3 as
|
|
14
|
+
import { Tooltip as ae } from "../../../node_modules/recharts/es6/component/Tooltip.js";
|
|
15
|
+
import { ResponsiveContainer as oe } from "../../../node_modules/recharts/es6/component/ResponsiveContainer.js";
|
|
16
|
+
import { Cell as se } from "../../../node_modules/recharts/es6/component/Cell.js";
|
|
17
|
+
import { Pie as ce } from "../../../node_modules/recharts/es6/polar/Pie.js";
|
|
18
|
+
import { PieChart as le } from "../../../node_modules/recharts/es6/chart/PieChart.js";
|
|
19
|
+
import { useEffect as ue, useMemo as l, useState as u } from "react";
|
|
20
|
+
import { ArrowDownRight as d, ArrowUpRight as f, BarChart3 as de, Building as p, DollarSign as fe, Download as pe, Eye as m, ImageOff as h, MapPin as g, Percent as me, Plus as _, Target as he, TrendingUp as ge } from "lucide-react";
|
|
20
21
|
import { useNavigate as _e } from "react-router-dom";
|
|
21
|
-
import { jsx as
|
|
22
|
-
import { Button as
|
|
22
|
+
import { jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
23
|
+
import { Button as b, EmphasisPanel as ve, NextSteps as ye, ResponsiveDialog as be, ResponsiveDialogContent as xe, ResponsiveDialogDescription as Se, ResponsiveDialogFooter as Ce, ResponsiveDialogHeader as we, ResponsiveDialogTitle as Te } from "@burdenoff/fe-libs/ui";
|
|
23
24
|
//#region src/housingvista/pages/assets/AssetManagementPage.tsx
|
|
24
|
-
var
|
|
25
|
+
var x = "h-10 w-full rounded-md border border-border-subtle bg-bg-surface px-3 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]", S = [
|
|
25
26
|
"var(--color-chart-1)",
|
|
26
27
|
"var(--color-chart-2)",
|
|
27
28
|
"var(--color-chart-3)",
|
|
@@ -34,16 +35,16 @@ var b = "h-10 w-full rounded-md border border-border-subtle bg-bg-surface px-3 t
|
|
|
34
35
|
fontSize: 12,
|
|
35
36
|
boxShadow: "0 8px 24px rgb(0 0 0 / 0.12)"
|
|
36
37
|
};
|
|
37
|
-
function
|
|
38
|
-
return t ? /* @__PURE__ */
|
|
38
|
+
function C({ src: t, alt: n, className: r }) {
|
|
39
|
+
return t ? /* @__PURE__ */ v("img", {
|
|
39
40
|
src: t,
|
|
40
41
|
alt: n,
|
|
41
42
|
className: e("object-cover", r)
|
|
42
|
-
}) : /* @__PURE__ */
|
|
43
|
+
}) : /* @__PURE__ */ v("div", {
|
|
43
44
|
className: e("flex items-center justify-center bg-gradient-to-br from-bg-sunken to-bg-sunken/50", r),
|
|
44
45
|
"aria-label": `${n} — no image`,
|
|
45
46
|
role: "img",
|
|
46
|
-
children: /* @__PURE__ */
|
|
47
|
+
children: /* @__PURE__ */ v(h, { className: "h-8 w-8 text-text-secondary/40" })
|
|
47
48
|
});
|
|
48
49
|
}
|
|
49
50
|
var De = [
|
|
@@ -118,7 +119,7 @@ var De = [
|
|
|
118
119
|
label: "Sold"
|
|
119
120
|
}
|
|
120
121
|
];
|
|
121
|
-
function
|
|
122
|
+
function w(e) {
|
|
122
123
|
switch (e) {
|
|
123
124
|
case "active": return "success";
|
|
124
125
|
case "under_renovation": return "warning";
|
|
@@ -127,47 +128,48 @@ function C(e) {
|
|
|
127
128
|
default: return "muted";
|
|
128
129
|
}
|
|
129
130
|
}
|
|
130
|
-
function
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
131
|
+
function T() {
|
|
132
|
+
s("housingvista.asset.viewed");
|
|
133
|
+
let h = _e(), T = ie(10), [E, Ae] = u(""), [je, Me] = u("");
|
|
134
|
+
ue(() => {
|
|
135
|
+
let e = setTimeout(() => Me(E), 300);
|
|
134
136
|
return () => clearTimeout(e);
|
|
135
|
-
}, [
|
|
136
|
-
let { data:
|
|
137
|
+
}, [E]);
|
|
138
|
+
let { data: D, loading: Ne } = ne({
|
|
137
139
|
filter: { search: je.trim() || void 0 },
|
|
138
|
-
pagination:
|
|
139
|
-
}), { createAsset:
|
|
140
|
-
Ae(e),
|
|
141
|
-
}, [
|
|
140
|
+
pagination: T.pagination
|
|
141
|
+
}), { createAsset: Pe, loading: O } = re(), Fe = (e) => {
|
|
142
|
+
Ae(e), T.setPage(1);
|
|
143
|
+
}, [Ie, k] = u(!1), [A, j] = u(""), [M, N] = u("residential"), [P, F] = u("apartment"), [I, L] = u(""), [R, z] = u(""), [B, V] = u(""), [H, U] = u(""), [W, G] = u(""), [K, q] = u(""), [J, Y] = u("active"), X = () => {
|
|
142
144
|
j(""), N("residential"), F("apartment"), L(""), z(""), V(""), U(""), G(""), q(""), Y("active");
|
|
143
145
|
}, Z = () => {
|
|
144
146
|
X(), k(!0);
|
|
145
|
-
},
|
|
147
|
+
}, Le = async (e) => {
|
|
146
148
|
if (e.preventDefault(), !A.trim()) {
|
|
147
|
-
|
|
149
|
+
c.warning("Enter an asset title");
|
|
148
150
|
return;
|
|
149
151
|
}
|
|
150
152
|
if (!I.trim()) {
|
|
151
|
-
|
|
153
|
+
c.warning("Enter a location");
|
|
152
154
|
return;
|
|
153
155
|
}
|
|
154
156
|
let t = Number(R), n = Number(B);
|
|
155
157
|
if (!Number.isFinite(t) || t <= 0) {
|
|
156
|
-
|
|
158
|
+
c.warning("Enter a valid current value");
|
|
157
159
|
return;
|
|
158
160
|
}
|
|
159
161
|
if (!Number.isFinite(n) || n <= 0) {
|
|
160
|
-
|
|
162
|
+
c.warning("Enter a valid purchase price");
|
|
161
163
|
return;
|
|
162
164
|
}
|
|
163
165
|
let r = W.trim() ? Number(W) : void 0;
|
|
164
166
|
if (r !== void 0 && !Number.isFinite(r)) {
|
|
165
|
-
|
|
167
|
+
c.warning("Enter a valid rental yield");
|
|
166
168
|
return;
|
|
167
169
|
}
|
|
168
170
|
let i = n > 0 ? (t - n) / n * 100 : 0;
|
|
169
171
|
try {
|
|
170
|
-
await
|
|
172
|
+
await Pe({
|
|
171
173
|
title: A.trim(),
|
|
172
174
|
type: M,
|
|
173
175
|
category: P,
|
|
@@ -179,13 +181,13 @@ function w() {
|
|
|
179
181
|
rentalYield: r,
|
|
180
182
|
status: J,
|
|
181
183
|
imageUrl: K.trim() || void 0
|
|
182
|
-
}),
|
|
184
|
+
}), c.success("Asset added", `${A.trim()} was added to your portfolio.`), k(!1), X();
|
|
183
185
|
} catch (e) {
|
|
184
|
-
|
|
186
|
+
c.error("Could not add asset", e.message);
|
|
185
187
|
}
|
|
186
|
-
},
|
|
187
|
-
if (
|
|
188
|
-
|
|
188
|
+
}, Re = () => {
|
|
189
|
+
if (D.length === 0) {
|
|
190
|
+
c.warning("Nothing to export", "There are no assets to export yet.");
|
|
189
191
|
return;
|
|
190
192
|
}
|
|
191
193
|
let e = (e) => `"${e.replace(/"/g, "\"\"")}"`, t = [
|
|
@@ -198,7 +200,7 @@ function w() {
|
|
|
198
200
|
"Appreciation %",
|
|
199
201
|
"Rental Yield %",
|
|
200
202
|
"Status"
|
|
201
|
-
], n =
|
|
203
|
+
], n = D.map((t) => [
|
|
202
204
|
t.title,
|
|
203
205
|
t.type,
|
|
204
206
|
t.category,
|
|
@@ -209,77 +211,77 @@ function w() {
|
|
|
209
211
|
t.rentalYield == null ? "" : String(t.rentalYield),
|
|
210
212
|
t.status
|
|
211
213
|
].map((t) => e(String(t))).join(",")), r = [t.map(e).join(","), ...n].join("\n"), i = new Blob([r], { type: "text/csv;charset=utf-8;" }), a = URL.createObjectURL(i), o = document.createElement("a");
|
|
212
|
-
o.href = a, o.download = `housingvista-assets-${(/* @__PURE__ */ new Date()).toISOString().slice(0, 10)}.csv`, document.body.appendChild(o), o.click(), document.body.removeChild(o), URL.revokeObjectURL(a),
|
|
214
|
+
o.href = a, o.download = `housingvista-assets-${(/* @__PURE__ */ new Date()).toISOString().slice(0, 10)}.csv`, document.body.appendChild(o), o.click(), document.body.removeChild(o), URL.revokeObjectURL(a), c.success("Export ready", `${D.length} assets exported to CSV.`);
|
|
213
215
|
}, Q = l(() => {
|
|
214
|
-
let e =
|
|
216
|
+
let e = D.reduce((e, t) => e + t.currentValue, 0), t = D.filter((e) => e.rentalYield).reduce((e, t) => e + t.currentValue * (t.rentalYield || 0) / 100 / 12, 0), n = D.length > 0 ? D.reduce((e, t) => e + t.appreciationPercent, 0) / D.length : 0, r = D.reduce((e, t) => e + t.purchasePrice, 0);
|
|
215
217
|
return {
|
|
216
218
|
totalValue: e,
|
|
217
219
|
totalMonthlyIncome: t,
|
|
218
220
|
avgAppreciation: n,
|
|
219
221
|
totalROI: r > 0 ? (e - r) / r * 100 : 0
|
|
220
222
|
};
|
|
221
|
-
}, [
|
|
223
|
+
}, [D]), $ = l(() => {
|
|
222
224
|
let e = /* @__PURE__ */ new Map();
|
|
223
|
-
for (let t of
|
|
225
|
+
for (let t of D) e.set(t.type, (e.get(t.type) ?? 0) + t.currentValue);
|
|
224
226
|
let t = Array.from(e.entries()).filter(([, e]) => e > 0).map(([e, t], n) => ({
|
|
225
227
|
type: e,
|
|
226
228
|
label: e.charAt(0).toUpperCase() + e.slice(1).replace("_", " "),
|
|
227
229
|
value: t,
|
|
228
|
-
color:
|
|
230
|
+
color: S[n % S.length]
|
|
229
231
|
})).sort((e, t) => t.value - e.value);
|
|
230
232
|
return {
|
|
231
233
|
rows: t,
|
|
232
234
|
total: t.reduce((e, t) => e + t.value, 0)
|
|
233
235
|
};
|
|
234
|
-
}, [
|
|
235
|
-
return /* @__PURE__ */
|
|
236
|
+
}, [D]);
|
|
237
|
+
return /* @__PURE__ */ y(n, {
|
|
236
238
|
title: "Asset Management",
|
|
237
239
|
description: "Monitor and manage your property portfolio performance",
|
|
238
240
|
purpose: "See how every property you own is performing as an investment — current value, appreciation, rental yield, and overall ROI in one portfolio view. Use it to decide what to hold, renovate, or sell.",
|
|
239
|
-
actions: /* @__PURE__ */
|
|
241
|
+
actions: /* @__PURE__ */ y("div", {
|
|
240
242
|
className: "flex items-center gap-2",
|
|
241
|
-
children: [/* @__PURE__ */
|
|
242
|
-
onClick:
|
|
243
|
+
children: [/* @__PURE__ */ y("button", {
|
|
244
|
+
onClick: Re,
|
|
243
245
|
className: "inline-flex items-center gap-2 rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary transition-colors hover:bg-bg-sunken",
|
|
244
|
-
children: [/* @__PURE__ */
|
|
245
|
-
}), /* @__PURE__ */
|
|
246
|
+
children: [/* @__PURE__ */ v(pe, { className: "h-4 w-4" }), "Export"]
|
|
247
|
+
}), /* @__PURE__ */ y("button", {
|
|
246
248
|
onClick: Z,
|
|
247
249
|
className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text transition-colors hover:bg-action-primary-bg-hover",
|
|
248
|
-
children: [/* @__PURE__ */ _
|
|
250
|
+
children: [/* @__PURE__ */ v(_, { className: "h-4 w-4" }), "Add Asset"]
|
|
249
251
|
})]
|
|
250
252
|
}),
|
|
251
253
|
children: [
|
|
252
|
-
/* @__PURE__ */
|
|
254
|
+
/* @__PURE__ */ v(ve, {
|
|
253
255
|
className: "p-4",
|
|
254
|
-
children: /* @__PURE__ */
|
|
256
|
+
children: /* @__PURE__ */ y("div", {
|
|
255
257
|
className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",
|
|
256
258
|
children: [
|
|
257
|
-
/* @__PURE__ */
|
|
259
|
+
/* @__PURE__ */ v(r, {
|
|
258
260
|
label: "Total Value",
|
|
259
261
|
value: Q.totalValue,
|
|
260
262
|
prefix: "$",
|
|
261
|
-
icon: /* @__PURE__ */
|
|
263
|
+
icon: /* @__PURE__ */ v(fe, { className: "h-4 w-4" })
|
|
262
264
|
}),
|
|
263
|
-
/* @__PURE__ */
|
|
265
|
+
/* @__PURE__ */ v(r, {
|
|
264
266
|
label: "Monthly Income",
|
|
265
267
|
value: Math.round(Q.totalMonthlyIncome),
|
|
266
268
|
prefix: "$",
|
|
267
|
-
icon: /* @__PURE__ */
|
|
269
|
+
icon: /* @__PURE__ */ v(ge, { className: "h-4 w-4" })
|
|
268
270
|
}),
|
|
269
|
-
/* @__PURE__ */
|
|
271
|
+
/* @__PURE__ */ v(r, {
|
|
270
272
|
label: "Avg. Appreciation",
|
|
271
273
|
value: `${Q.avgAppreciation.toFixed(1)}%`,
|
|
272
|
-
icon: /* @__PURE__ */
|
|
274
|
+
icon: /* @__PURE__ */ v(de, { className: "h-4 w-4" })
|
|
273
275
|
}),
|
|
274
|
-
/* @__PURE__ */
|
|
276
|
+
/* @__PURE__ */ v(r, {
|
|
275
277
|
label: "Overall ROI",
|
|
276
278
|
value: `${Q.totalROI.toFixed(1)}%`,
|
|
277
|
-
icon: /* @__PURE__ */
|
|
279
|
+
icon: /* @__PURE__ */ v(p, { className: "h-4 w-4" })
|
|
278
280
|
})
|
|
279
281
|
]
|
|
280
282
|
})
|
|
281
283
|
}),
|
|
282
|
-
/* @__PURE__ */
|
|
284
|
+
/* @__PURE__ */ v(ye, {
|
|
283
285
|
storageKey: "housingvista-assets",
|
|
284
286
|
steps: [
|
|
285
287
|
{
|
|
@@ -287,15 +289,15 @@ function w() {
|
|
|
287
289
|
label: "Open an asset to see full performance",
|
|
288
290
|
description: "Drill into value history, yield, and ROI for any property.",
|
|
289
291
|
onClick: () => {
|
|
290
|
-
let e =
|
|
291
|
-
e &&
|
|
292
|
+
let e = D[0];
|
|
293
|
+
e && h(`../assets/${e.id}`);
|
|
292
294
|
}
|
|
293
295
|
},
|
|
294
296
|
{
|
|
295
297
|
id: "compare-market",
|
|
296
298
|
label: "Compare against market trends",
|
|
297
299
|
description: "Check market analytics to benchmark your portfolio.",
|
|
298
|
-
onClick: () =>
|
|
300
|
+
onClick: () => h("../market-analytics")
|
|
299
301
|
},
|
|
300
302
|
{
|
|
301
303
|
id: "add-asset",
|
|
@@ -305,86 +307,86 @@ function w() {
|
|
|
305
307
|
}
|
|
306
308
|
]
|
|
307
309
|
}),
|
|
308
|
-
|
|
310
|
+
D.length > 0 && /* @__PURE__ */ y("div", {
|
|
309
311
|
className: "grid grid-cols-1 gap-6 xl:grid-cols-3",
|
|
310
|
-
children: [/* @__PURE__ */
|
|
312
|
+
children: [/* @__PURE__ */ v("div", {
|
|
311
313
|
className: "grid grid-cols-1 gap-4 sm:grid-cols-2 xl:col-span-2",
|
|
312
|
-
children:
|
|
314
|
+
children: D.map((n) => {
|
|
313
315
|
let r = n.currentValue - n.purchasePrice, i = r >= 0, o = n.purchasePrice > 0 ? r / n.purchasePrice * 100 : 0;
|
|
314
|
-
return /* @__PURE__ */
|
|
316
|
+
return /* @__PURE__ */ y("button", {
|
|
315
317
|
type: "button",
|
|
316
|
-
onClick: () =>
|
|
318
|
+
onClick: () => h(`../assets/${n.id}`),
|
|
317
319
|
className: "group overflow-hidden rounded-card border border-border-seam bg-bg-surface text-left shadow-elevation-1 transition-[box-shadow,border-color] hover:border-border-strong hover:shadow-elevation-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]",
|
|
318
|
-
children: [/* @__PURE__ */
|
|
320
|
+
children: [/* @__PURE__ */ y("div", {
|
|
319
321
|
className: "relative aspect-[16/9] overflow-hidden",
|
|
320
322
|
children: [
|
|
321
|
-
/* @__PURE__ */
|
|
323
|
+
/* @__PURE__ */ v(C, {
|
|
322
324
|
src: n.imageUrl,
|
|
323
325
|
alt: n.title,
|
|
324
326
|
className: "h-full w-full"
|
|
325
327
|
}),
|
|
326
|
-
/* @__PURE__ */
|
|
328
|
+
/* @__PURE__ */ v("div", {
|
|
327
329
|
className: "absolute left-3 top-3",
|
|
328
|
-
children: /* @__PURE__ */
|
|
330
|
+
children: /* @__PURE__ */ v(a, {
|
|
329
331
|
label: n.status.replace("_", " "),
|
|
330
|
-
variant:
|
|
332
|
+
variant: w(n.status),
|
|
331
333
|
dot: !0
|
|
332
334
|
})
|
|
333
335
|
}),
|
|
334
|
-
/* @__PURE__ */
|
|
336
|
+
/* @__PURE__ */ y("div", {
|
|
335
337
|
className: e("absolute right-3 top-3 inline-flex items-center gap-0.5 rounded-full px-2 py-0.5 text-xs font-semibold backdrop-blur-sm", i ? "bg-status-success-bg-subtle text-status-success-text" : "bg-status-error-bg-subtle text-status-error-text"),
|
|
336
338
|
children: [
|
|
337
|
-
|
|
339
|
+
v(i ? f : d, { className: "h-3 w-3" }),
|
|
338
340
|
n.appreciationPercent,
|
|
339
341
|
"%"
|
|
340
342
|
]
|
|
341
343
|
})
|
|
342
344
|
]
|
|
343
|
-
}), /* @__PURE__ */
|
|
345
|
+
}), /* @__PURE__ */ y("div", {
|
|
344
346
|
className: "p-4",
|
|
345
347
|
children: [
|
|
346
|
-
/* @__PURE__ */
|
|
348
|
+
/* @__PURE__ */ v("h3", {
|
|
347
349
|
className: "truncate font-medium text-text-primary",
|
|
348
350
|
children: n.title
|
|
349
351
|
}),
|
|
350
|
-
/* @__PURE__ */
|
|
352
|
+
/* @__PURE__ */ y("p", {
|
|
351
353
|
className: "mt-0.5 flex items-center gap-1 text-xs text-text-secondary",
|
|
352
|
-
children: [/* @__PURE__ */
|
|
354
|
+
children: [/* @__PURE__ */ v(g, { className: "h-3 w-3 shrink-0" }), /* @__PURE__ */ v("span", {
|
|
353
355
|
className: "truncate",
|
|
354
356
|
children: n.location
|
|
355
357
|
})]
|
|
356
358
|
}),
|
|
357
|
-
/* @__PURE__ */
|
|
359
|
+
/* @__PURE__ */ y("div", {
|
|
358
360
|
className: "mt-3 flex items-end justify-between",
|
|
359
|
-
children: [/* @__PURE__ */
|
|
361
|
+
children: [/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
|
|
360
362
|
className: "text-xs text-text-secondary",
|
|
361
363
|
children: "Current Value"
|
|
362
|
-
}), /* @__PURE__ */
|
|
364
|
+
}), /* @__PURE__ */ v("p", {
|
|
363
365
|
className: "text-lg font-bold text-text-primary",
|
|
364
366
|
children: t(n.currentValue)
|
|
365
|
-
})] }), /* @__PURE__ */
|
|
367
|
+
})] }), /* @__PURE__ */ v("span", {
|
|
366
368
|
className: "rounded-md bg-bg-sunken px-2 py-1 text-xs font-medium capitalize text-text-secondary",
|
|
367
369
|
children: n.category
|
|
368
370
|
})]
|
|
369
371
|
}),
|
|
370
|
-
/* @__PURE__ */
|
|
372
|
+
/* @__PURE__ */ y("div", {
|
|
371
373
|
className: "mt-3 grid grid-cols-2 gap-3 border-t border-border-subtle pt-3 text-xs",
|
|
372
|
-
children: [/* @__PURE__ */
|
|
374
|
+
children: [/* @__PURE__ */ y("div", {
|
|
373
375
|
className: "flex items-center gap-1.5 text-text-secondary",
|
|
374
376
|
children: [
|
|
375
|
-
/* @__PURE__ */
|
|
376
|
-
/* @__PURE__ */
|
|
377
|
-
/* @__PURE__ */
|
|
377
|
+
/* @__PURE__ */ v(me, { className: "h-3.5 w-3.5" }),
|
|
378
|
+
/* @__PURE__ */ v("span", { children: "Yield" }),
|
|
379
|
+
/* @__PURE__ */ v("span", {
|
|
378
380
|
className: "ml-auto font-semibold text-text-primary",
|
|
379
381
|
children: n.rentalYield == null ? "—" : `${n.rentalYield}%`
|
|
380
382
|
})
|
|
381
383
|
]
|
|
382
|
-
}), /* @__PURE__ */
|
|
384
|
+
}), /* @__PURE__ */ y("div", {
|
|
383
385
|
className: "flex items-center gap-1.5 text-text-secondary",
|
|
384
386
|
children: [
|
|
385
|
-
/* @__PURE__ */
|
|
386
|
-
/* @__PURE__ */
|
|
387
|
-
/* @__PURE__ */
|
|
387
|
+
/* @__PURE__ */ v(he, { className: "h-3.5 w-3.5" }),
|
|
388
|
+
/* @__PURE__ */ v("span", { children: "ROI" }),
|
|
389
|
+
/* @__PURE__ */ y("span", {
|
|
388
390
|
className: e("ml-auto font-semibold", o >= 0 ? "text-status-success-text" : "text-status-error-text"),
|
|
389
391
|
children: [o.toFixed(1), "%"]
|
|
390
392
|
})
|
|
@@ -395,17 +397,17 @@ function w() {
|
|
|
395
397
|
})]
|
|
396
398
|
}, n.id);
|
|
397
399
|
})
|
|
398
|
-
}), $.rows.length > 0 && /* @__PURE__ */
|
|
400
|
+
}), $.rows.length > 0 && /* @__PURE__ */ v("aside", {
|
|
399
401
|
className: "xl:col-span-1",
|
|
400
|
-
children: /* @__PURE__ */
|
|
402
|
+
children: /* @__PURE__ */ y(ee, {
|
|
401
403
|
title: "Portfolio by Type",
|
|
402
404
|
description: "Current value split across property types",
|
|
403
|
-
children: [/* @__PURE__ */
|
|
405
|
+
children: [/* @__PURE__ */ y("div", {
|
|
404
406
|
className: "relative h-52 w-full",
|
|
405
|
-
children: [/* @__PURE__ */
|
|
407
|
+
children: [/* @__PURE__ */ v(oe, {
|
|
406
408
|
width: "100%",
|
|
407
409
|
height: "100%",
|
|
408
|
-
children: /* @__PURE__ */
|
|
410
|
+
children: /* @__PURE__ */ y(le, { children: [/* @__PURE__ */ v(ce, {
|
|
409
411
|
data: $.rows,
|
|
410
412
|
dataKey: "value",
|
|
411
413
|
nameKey: "label",
|
|
@@ -414,35 +416,35 @@ function w() {
|
|
|
414
416
|
paddingAngle: 2,
|
|
415
417
|
stroke: "var(--color-bg-surface)",
|
|
416
418
|
strokeWidth: 2,
|
|
417
|
-
children: $.rows.map((e) => /* @__PURE__ */
|
|
418
|
-
}), /* @__PURE__ */
|
|
419
|
+
children: $.rows.map((e) => /* @__PURE__ */ v(se, { fill: e.color }, e.type))
|
|
420
|
+
}), /* @__PURE__ */ v(ae, {
|
|
419
421
|
contentStyle: Ee,
|
|
420
422
|
formatter: (e, n, r) => [t(e), r?.payload?.label]
|
|
421
423
|
})] })
|
|
422
|
-
}), /* @__PURE__ */
|
|
424
|
+
}), /* @__PURE__ */ y("div", {
|
|
423
425
|
className: "pointer-events-none absolute inset-0 flex flex-col items-center justify-center",
|
|
424
|
-
children: [/* @__PURE__ */
|
|
426
|
+
children: [/* @__PURE__ */ v("span", {
|
|
425
427
|
className: "text-xs text-text-secondary",
|
|
426
428
|
children: "Total value"
|
|
427
|
-
}), /* @__PURE__ */
|
|
429
|
+
}), /* @__PURE__ */ v("span", {
|
|
428
430
|
className: "text-lg font-bold text-text-primary",
|
|
429
431
|
children: t($.total)
|
|
430
432
|
})]
|
|
431
433
|
})]
|
|
432
|
-
}), /* @__PURE__ */
|
|
434
|
+
}), /* @__PURE__ */ v("ul", {
|
|
433
435
|
className: "mt-4 space-y-2.5",
|
|
434
|
-
children: $.rows.map((e) => /* @__PURE__ */
|
|
436
|
+
children: $.rows.map((e) => /* @__PURE__ */ y("li", {
|
|
435
437
|
className: "flex items-center justify-between text-sm",
|
|
436
|
-
children: [/* @__PURE__ */
|
|
438
|
+
children: [/* @__PURE__ */ y("span", {
|
|
437
439
|
className: "flex items-center gap-2",
|
|
438
|
-
children: [/* @__PURE__ */
|
|
440
|
+
children: [/* @__PURE__ */ v("span", {
|
|
439
441
|
className: "h-2.5 w-2.5 rounded-full",
|
|
440
442
|
style: { background: e.color }
|
|
441
|
-
}), /* @__PURE__ */
|
|
443
|
+
}), /* @__PURE__ */ v("span", {
|
|
442
444
|
className: "text-text-primary",
|
|
443
445
|
children: e.label
|
|
444
446
|
})]
|
|
445
|
-
}), /* @__PURE__ */
|
|
447
|
+
}), /* @__PURE__ */ y("span", {
|
|
446
448
|
className: "font-medium text-text-secondary",
|
|
447
449
|
children: [$.total > 0 ? Math.round(e.value / $.total * 100) : 0, "%"]
|
|
448
450
|
})]
|
|
@@ -451,42 +453,42 @@ function w() {
|
|
|
451
453
|
})
|
|
452
454
|
})]
|
|
453
455
|
}),
|
|
454
|
-
/* @__PURE__ */
|
|
455
|
-
/* @__PURE__ */
|
|
456
|
+
/* @__PURE__ */ y("div", { children: [
|
|
457
|
+
/* @__PURE__ */ v("h2", {
|
|
456
458
|
className: "mb-4 text-lg font-semibold text-text-primary",
|
|
457
459
|
children: "All Assets"
|
|
458
460
|
}),
|
|
459
|
-
/* @__PURE__ */
|
|
460
|
-
searchValue:
|
|
461
|
-
onSearchChange:
|
|
461
|
+
/* @__PURE__ */ v(te, {
|
|
462
|
+
searchValue: E,
|
|
463
|
+
onSearchChange: Fe,
|
|
462
464
|
searchPlaceholder: "Search assets by name, location, or type..."
|
|
463
465
|
}),
|
|
464
|
-
/* @__PURE__ */
|
|
466
|
+
/* @__PURE__ */ v("div", {
|
|
465
467
|
className: "mt-4",
|
|
466
|
-
children:
|
|
468
|
+
children: D.length > 0 ? /* @__PURE__ */ v(i, {
|
|
467
469
|
columns: [
|
|
468
470
|
{
|
|
469
471
|
key: "title",
|
|
470
472
|
header: "Property",
|
|
471
|
-
render: (e) => /* @__PURE__ */
|
|
473
|
+
render: (e) => /* @__PURE__ */ y("div", {
|
|
472
474
|
className: "flex items-center gap-3",
|
|
473
|
-
children: [/* @__PURE__ */
|
|
475
|
+
children: [/* @__PURE__ */ v(C, {
|
|
474
476
|
src: e.imageUrl,
|
|
475
477
|
alt: e.title,
|
|
476
478
|
className: "h-10 w-10 shrink-0 rounded-md"
|
|
477
|
-
}), /* @__PURE__ */
|
|
479
|
+
}), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("div", {
|
|
478
480
|
className: "font-medium text-text-primary",
|
|
479
481
|
children: e.title
|
|
480
|
-
}), /* @__PURE__ */
|
|
482
|
+
}), /* @__PURE__ */ y("div", {
|
|
481
483
|
className: "flex items-center gap-1 text-xs text-text-secondary",
|
|
482
|
-
children: [/* @__PURE__ */
|
|
484
|
+
children: [/* @__PURE__ */ v(g, { className: "h-3 w-3" }), e.location]
|
|
483
485
|
})] })]
|
|
484
486
|
})
|
|
485
487
|
},
|
|
486
488
|
{
|
|
487
489
|
key: "type",
|
|
488
490
|
header: "Type",
|
|
489
|
-
render: (e) => /* @__PURE__ */
|
|
491
|
+
render: (e) => /* @__PURE__ */ v("span", {
|
|
490
492
|
className: "text-sm capitalize text-text-primary",
|
|
491
493
|
children: e.type
|
|
492
494
|
})
|
|
@@ -494,7 +496,7 @@ function w() {
|
|
|
494
496
|
{
|
|
495
497
|
key: "purchasePrice",
|
|
496
498
|
header: "Purchase Price",
|
|
497
|
-
render: (e) => /* @__PURE__ */
|
|
499
|
+
render: (e) => /* @__PURE__ */ v("span", {
|
|
498
500
|
className: "text-sm text-text-primary",
|
|
499
501
|
children: t(e.purchasePrice)
|
|
500
502
|
})
|
|
@@ -502,7 +504,7 @@ function w() {
|
|
|
502
504
|
{
|
|
503
505
|
key: "currentValue",
|
|
504
506
|
header: "Current Value",
|
|
505
|
-
render: (e) => /* @__PURE__ */
|
|
507
|
+
render: (e) => /* @__PURE__ */ v("span", {
|
|
506
508
|
className: "text-sm font-medium text-text-primary",
|
|
507
509
|
children: t(e.currentValue)
|
|
508
510
|
})
|
|
@@ -512,12 +514,12 @@ function w() {
|
|
|
512
514
|
header: "Change",
|
|
513
515
|
render: (n) => {
|
|
514
516
|
let r = n.currentValue - n.purchasePrice, i = r >= 0;
|
|
515
|
-
return /* @__PURE__ */
|
|
517
|
+
return /* @__PURE__ */ y("div", {
|
|
516
518
|
className: e("flex items-center gap-1 text-sm font-medium", i ? "text-status-success-text" : "text-status-error-text"),
|
|
517
519
|
children: [
|
|
518
|
-
|
|
520
|
+
v(i ? f : d, { className: "h-3 w-3" }),
|
|
519
521
|
t(Math.abs(r)),
|
|
520
|
-
/* @__PURE__ */
|
|
522
|
+
/* @__PURE__ */ y("span", {
|
|
521
523
|
className: "text-xs",
|
|
522
524
|
children: [
|
|
523
525
|
"(",
|
|
@@ -532,115 +534,115 @@ function w() {
|
|
|
532
534
|
{
|
|
533
535
|
key: "status",
|
|
534
536
|
header: "Status",
|
|
535
|
-
render: (e) => /* @__PURE__ */
|
|
537
|
+
render: (e) => /* @__PURE__ */ v(a, {
|
|
536
538
|
label: e.status.replace("_", " "),
|
|
537
|
-
variant:
|
|
539
|
+
variant: w(e.status)
|
|
538
540
|
})
|
|
539
541
|
},
|
|
540
542
|
{
|
|
541
543
|
key: "actions",
|
|
542
544
|
header: "",
|
|
543
545
|
sortable: !1,
|
|
544
|
-
render: (e) => /* @__PURE__ */
|
|
546
|
+
render: (e) => /* @__PURE__ */ y("button", {
|
|
545
547
|
onClick: (t) => {
|
|
546
|
-
t.stopPropagation(),
|
|
548
|
+
t.stopPropagation(), h(`../assets/${e.id}`);
|
|
547
549
|
},
|
|
548
550
|
className: "inline-flex items-center gap-1 rounded-md border border-border-subtle px-2 py-1 text-xs font-medium text-text-primary transition-colors hover:bg-bg-sunken",
|
|
549
|
-
children: [/* @__PURE__ */
|
|
551
|
+
children: [/* @__PURE__ */ v(m, { className: "h-3 w-3" }), "View"]
|
|
550
552
|
})
|
|
551
553
|
}
|
|
552
554
|
],
|
|
553
|
-
data:
|
|
555
|
+
data: D,
|
|
554
556
|
keyField: "id",
|
|
555
|
-
onRowClick: (e) =>
|
|
557
|
+
onRowClick: (e) => h(`../assets/${e.id}`),
|
|
556
558
|
pageSize: 10,
|
|
557
559
|
serverPagination: {
|
|
558
|
-
page:
|
|
559
|
-
pageSize:
|
|
560
|
-
hasNextPage:
|
|
560
|
+
page: T.page,
|
|
561
|
+
pageSize: T.pageSize,
|
|
562
|
+
hasNextPage: D.length >= T.pageSize,
|
|
561
563
|
loading: Ne,
|
|
562
|
-
onPageChange:
|
|
563
|
-
onPageSizeChange:
|
|
564
|
+
onPageChange: T.setPage,
|
|
565
|
+
onPageSizeChange: T.setPageSize
|
|
564
566
|
}
|
|
565
|
-
}) : /* @__PURE__ */
|
|
567
|
+
}) : /* @__PURE__ */ v(o, {
|
|
566
568
|
illustration: "empty-search",
|
|
567
|
-
icon: /* @__PURE__ */
|
|
569
|
+
icon: /* @__PURE__ */ v(p, { className: "h-12 w-12" }),
|
|
568
570
|
title: "No assets found",
|
|
569
571
|
description: "Try adjusting your search criteria or add a new asset.",
|
|
570
|
-
action: /* @__PURE__ */
|
|
572
|
+
action: /* @__PURE__ */ y("button", {
|
|
571
573
|
onClick: Z,
|
|
572
574
|
className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text transition-colors hover:bg-action-primary-bg-hover",
|
|
573
|
-
children: [/* @__PURE__ */ _
|
|
575
|
+
children: [/* @__PURE__ */ v(_, { className: "h-4 w-4" }), "Add Asset"]
|
|
574
576
|
})
|
|
575
577
|
})
|
|
576
578
|
})
|
|
577
579
|
] }),
|
|
578
|
-
/* @__PURE__ */
|
|
579
|
-
open:
|
|
580
|
+
/* @__PURE__ */ v(be, {
|
|
581
|
+
open: Ie,
|
|
580
582
|
onOpenChange: k,
|
|
581
|
-
children: /* @__PURE__ */
|
|
583
|
+
children: /* @__PURE__ */ v(xe, {
|
|
582
584
|
className: "sm:max-w-lg",
|
|
583
|
-
children: /* @__PURE__ */
|
|
584
|
-
onSubmit:
|
|
585
|
+
children: /* @__PURE__ */ y("form", {
|
|
586
|
+
onSubmit: Le,
|
|
585
587
|
children: [
|
|
586
|
-
/* @__PURE__ */
|
|
587
|
-
/* @__PURE__ */
|
|
588
|
+
/* @__PURE__ */ y(we, { children: [/* @__PURE__ */ v(Te, { children: "Add asset" }), /* @__PURE__ */ v(Se, { children: "Bring a property you own into your portfolio to track its value and performance." })] }),
|
|
589
|
+
/* @__PURE__ */ y("div", {
|
|
588
590
|
className: "space-y-3 py-2",
|
|
589
591
|
children: [
|
|
590
|
-
/* @__PURE__ */
|
|
592
|
+
/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
|
|
591
593
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
592
594
|
children: "Title *"
|
|
593
|
-
}), /* @__PURE__ */
|
|
595
|
+
}), /* @__PURE__ */ v("input", {
|
|
594
596
|
type: "text",
|
|
595
597
|
required: !0,
|
|
596
598
|
placeholder: "e.g. Riverside Villa",
|
|
597
599
|
value: A,
|
|
598
600
|
onChange: (e) => j(e.target.value),
|
|
599
|
-
className:
|
|
601
|
+
className: x
|
|
600
602
|
})] }),
|
|
601
|
-
/* @__PURE__ */
|
|
603
|
+
/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
|
|
602
604
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
603
605
|
children: "Location *"
|
|
604
|
-
}), /* @__PURE__ */
|
|
606
|
+
}), /* @__PURE__ */ v("input", {
|
|
605
607
|
type: "text",
|
|
606
608
|
required: !0,
|
|
607
609
|
placeholder: "City, State",
|
|
608
610
|
value: I,
|
|
609
611
|
onChange: (e) => L(e.target.value),
|
|
610
|
-
className:
|
|
612
|
+
className: x
|
|
611
613
|
})] }),
|
|
612
|
-
/* @__PURE__ */
|
|
614
|
+
/* @__PURE__ */ y("div", {
|
|
613
615
|
className: "grid grid-cols-1 gap-3 sm:grid-cols-2",
|
|
614
|
-
children: [/* @__PURE__ */
|
|
616
|
+
children: [/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
|
|
615
617
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
616
618
|
children: "Type"
|
|
617
|
-
}), /* @__PURE__ */
|
|
619
|
+
}), /* @__PURE__ */ v("select", {
|
|
618
620
|
value: M,
|
|
619
621
|
onChange: (e) => N(e.target.value),
|
|
620
|
-
className:
|
|
621
|
-
children: De.map((e) => /* @__PURE__ */
|
|
622
|
+
className: x,
|
|
623
|
+
children: De.map((e) => /* @__PURE__ */ v("option", {
|
|
622
624
|
value: e.value,
|
|
623
625
|
children: e.label
|
|
624
626
|
}, e.value))
|
|
625
|
-
})] }), /* @__PURE__ */
|
|
627
|
+
})] }), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
|
|
626
628
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
627
629
|
children: "Category"
|
|
628
|
-
}), /* @__PURE__ */
|
|
630
|
+
}), /* @__PURE__ */ v("select", {
|
|
629
631
|
value: P,
|
|
630
632
|
onChange: (e) => F(e.target.value),
|
|
631
|
-
className:
|
|
632
|
-
children: Oe.map((e) => /* @__PURE__ */
|
|
633
|
+
className: x,
|
|
634
|
+
children: Oe.map((e) => /* @__PURE__ */ v("option", {
|
|
633
635
|
value: e.value,
|
|
634
636
|
children: e.label
|
|
635
637
|
}, e.value))
|
|
636
638
|
})] })]
|
|
637
639
|
}),
|
|
638
|
-
/* @__PURE__ */
|
|
640
|
+
/* @__PURE__ */ y("div", {
|
|
639
641
|
className: "grid grid-cols-1 gap-3 sm:grid-cols-2",
|
|
640
|
-
children: [/* @__PURE__ */
|
|
642
|
+
children: [/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
|
|
641
643
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
642
644
|
children: "Purchase price (USD) *"
|
|
643
|
-
}), /* @__PURE__ */
|
|
645
|
+
}), /* @__PURE__ */ v("input", {
|
|
644
646
|
type: "number",
|
|
645
647
|
required: !0,
|
|
646
648
|
min: 1,
|
|
@@ -648,11 +650,11 @@ function w() {
|
|
|
648
650
|
placeholder: "0",
|
|
649
651
|
value: B,
|
|
650
652
|
onChange: (e) => V(e.target.value),
|
|
651
|
-
className:
|
|
652
|
-
})] }), /* @__PURE__ */
|
|
653
|
+
className: x
|
|
654
|
+
})] }), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
|
|
653
655
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
654
656
|
children: "Current value (USD) *"
|
|
655
|
-
}), /* @__PURE__ */
|
|
657
|
+
}), /* @__PURE__ */ v("input", {
|
|
656
658
|
type: "number",
|
|
657
659
|
required: !0,
|
|
658
660
|
min: 1,
|
|
@@ -660,65 +662,65 @@ function w() {
|
|
|
660
662
|
placeholder: "0",
|
|
661
663
|
value: R,
|
|
662
664
|
onChange: (e) => z(e.target.value),
|
|
663
|
-
className:
|
|
665
|
+
className: x
|
|
664
666
|
})] })]
|
|
665
667
|
}),
|
|
666
|
-
/* @__PURE__ */
|
|
668
|
+
/* @__PURE__ */ y("div", {
|
|
667
669
|
className: "grid grid-cols-1 gap-3 sm:grid-cols-3",
|
|
668
670
|
children: [
|
|
669
|
-
/* @__PURE__ */
|
|
671
|
+
/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
|
|
670
672
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
671
673
|
children: "Purchase date"
|
|
672
|
-
}), /* @__PURE__ */
|
|
674
|
+
}), /* @__PURE__ */ v("input", {
|
|
673
675
|
type: "date",
|
|
674
676
|
value: H,
|
|
675
677
|
onChange: (e) => U(e.target.value),
|
|
676
|
-
className:
|
|
678
|
+
className: x
|
|
677
679
|
})] }),
|
|
678
|
-
/* @__PURE__ */
|
|
680
|
+
/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
|
|
679
681
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
680
682
|
children: "Rental yield (%)"
|
|
681
|
-
}), /* @__PURE__ */
|
|
683
|
+
}), /* @__PURE__ */ v("input", {
|
|
682
684
|
type: "number",
|
|
683
685
|
min: 0,
|
|
684
686
|
step: "any",
|
|
685
687
|
placeholder: "0",
|
|
686
688
|
value: W,
|
|
687
689
|
onChange: (e) => G(e.target.value),
|
|
688
|
-
className:
|
|
690
|
+
className: x
|
|
689
691
|
})] }),
|
|
690
|
-
/* @__PURE__ */
|
|
692
|
+
/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
|
|
691
693
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
692
694
|
children: "Status"
|
|
693
|
-
}), /* @__PURE__ */
|
|
695
|
+
}), /* @__PURE__ */ v("select", {
|
|
694
696
|
value: J,
|
|
695
697
|
onChange: (e) => Y(e.target.value),
|
|
696
|
-
className:
|
|
697
|
-
children: ke.map((e) => /* @__PURE__ */
|
|
698
|
+
className: x,
|
|
699
|
+
children: ke.map((e) => /* @__PURE__ */ v("option", {
|
|
698
700
|
value: e.value,
|
|
699
701
|
children: e.label
|
|
700
702
|
}, e.value))
|
|
701
703
|
})] })
|
|
702
704
|
]
|
|
703
705
|
}),
|
|
704
|
-
/* @__PURE__ */
|
|
706
|
+
/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
|
|
705
707
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
706
708
|
children: "Image URL"
|
|
707
|
-
}), /* @__PURE__ */
|
|
709
|
+
}), /* @__PURE__ */ v("input", {
|
|
708
710
|
type: "url",
|
|
709
711
|
placeholder: "https://…",
|
|
710
712
|
value: K,
|
|
711
713
|
onChange: (e) => q(e.target.value),
|
|
712
|
-
className:
|
|
714
|
+
className: x
|
|
713
715
|
})] })
|
|
714
716
|
]
|
|
715
717
|
}),
|
|
716
|
-
/* @__PURE__ */
|
|
718
|
+
/* @__PURE__ */ y(Ce, { children: [/* @__PURE__ */ v(b, {
|
|
717
719
|
type: "button",
|
|
718
720
|
variant: "outline",
|
|
719
721
|
onClick: () => k(!1),
|
|
720
722
|
children: "Cancel"
|
|
721
|
-
}), /* @__PURE__ */
|
|
723
|
+
}), /* @__PURE__ */ v(b, {
|
|
722
724
|
type: "submit",
|
|
723
725
|
disabled: O || !A.trim() || !I.trim(),
|
|
724
726
|
children: O ? "Adding…" : "Add asset"
|
|
@@ -731,6 +733,6 @@ function w() {
|
|
|
731
733
|
});
|
|
732
734
|
}
|
|
733
735
|
//#endregion
|
|
734
|
-
export {
|
|
736
|
+
export { T as AssetManagementPage };
|
|
735
737
|
|
|
736
738
|
//# sourceMappingURL=AssetManagementPage.js.map
|