@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,31 +6,32 @@ import { StatusBadge as i } from "../../components/StatusBadge.js";
|
|
|
6
6
|
import { EmptyState as a } from "../../components/EmptyState.js";
|
|
7
7
|
import { ChartCard as te } from "../../components/ChartCard.js";
|
|
8
8
|
import { FilterBar as ne } from "../../components/FilterBar.js";
|
|
9
|
-
import {
|
|
9
|
+
import { useTrackPageView as re } from "../../hooks/useHousingVistaAnalytics.js";
|
|
10
|
+
import { useCreateMaintenanceRequest as ie, useCreateRentalUnit as ae, useMaintenanceRequests as oe, useRentalApplications as se, useRentalUnits as ce, useResolveMaintenanceRequest as le, useReviewRentalApplication as ue } from "../../hooks/index.js";
|
|
10
11
|
import { notify as o } from "../../lib/toast.js";
|
|
11
12
|
import "../../components/index.js";
|
|
12
13
|
import { useServerPagination as s } 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 { AlertCircle as
|
|
20
|
-
import { Fragment as
|
|
21
|
-
import { Button as h, EmphasisPanel as
|
|
14
|
+
import { Tooltip as de } from "../../../node_modules/recharts/es6/component/Tooltip.js";
|
|
15
|
+
import { ResponsiveContainer as fe } from "../../../node_modules/recharts/es6/component/ResponsiveContainer.js";
|
|
16
|
+
import { Cell as pe } from "../../../node_modules/recharts/es6/component/Cell.js";
|
|
17
|
+
import { Pie as me } from "../../../node_modules/recharts/es6/polar/Pie.js";
|
|
18
|
+
import { PieChart as he } from "../../../node_modules/recharts/es6/chart/PieChart.js";
|
|
19
|
+
import { useEffect as ge, useMemo as c, useState as l } from "react";
|
|
20
|
+
import { AlertCircle as _e, CheckCircle as u, Clock as ve, DollarSign as ye, FileText as d, Home as be, Plus as xe, TrendingUp as Se, Users as Ce, Wrench as f, XCircle as we } from "lucide-react";
|
|
21
|
+
import { Fragment as Te, jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
22
|
+
import { Button as h, EmphasisPanel as Ee, NextSteps as De, Pagination as Oe, ResponsiveDialog as g, ResponsiveDialogContent as _, ResponsiveDialogDescription as v, ResponsiveDialogFooter as y, ResponsiveDialogHeader as b, ResponsiveDialogTitle as x } from "@burdenoff/fe-libs/ui";
|
|
22
23
|
//#region src/housingvista/pages/rental/RentalManagementPage.tsx
|
|
23
|
-
var S = "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)]",
|
|
24
|
+
var S = "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)]", ke = "var(--color-status-success-text)", Ae = "var(--color-status-warning-text)", je = "var(--color-status-error-text)", Me = {
|
|
24
25
|
background: "var(--color-bg-surface)",
|
|
25
26
|
border: "1px solid var(--color-border-subtle)",
|
|
26
27
|
borderRadius: 10,
|
|
27
28
|
fontSize: 12,
|
|
28
29
|
boxShadow: "0 8px 24px rgb(0 0 0 / 0.12)"
|
|
29
30
|
}, C = "w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]";
|
|
30
|
-
function
|
|
31
|
+
function Ne(e) {
|
|
31
32
|
return e ? new Date(e).toISOString() : "";
|
|
32
33
|
}
|
|
33
|
-
function
|
|
34
|
+
function Pe(e) {
|
|
34
35
|
switch (e) {
|
|
35
36
|
case "occupied": return "success";
|
|
36
37
|
case "vacant": return "warning";
|
|
@@ -39,7 +40,7 @@ function Ne(e) {
|
|
|
39
40
|
default: return "muted";
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
|
-
function
|
|
43
|
+
function Fe(e) {
|
|
43
44
|
switch (e) {
|
|
44
45
|
case "paid": return "success";
|
|
45
46
|
case "pending": return "warning";
|
|
@@ -47,7 +48,7 @@ function Pe(e) {
|
|
|
47
48
|
default: return "muted";
|
|
48
49
|
}
|
|
49
50
|
}
|
|
50
|
-
function
|
|
51
|
+
function Ie(e) {
|
|
51
52
|
switch (e) {
|
|
52
53
|
case "approved": return "success";
|
|
53
54
|
case "rejected": return "error";
|
|
@@ -56,7 +57,7 @@ function Fe(e) {
|
|
|
56
57
|
default: return "muted";
|
|
57
58
|
}
|
|
58
59
|
}
|
|
59
|
-
function
|
|
60
|
+
function Le(e) {
|
|
60
61
|
switch (e) {
|
|
61
62
|
case "resolved": return "success";
|
|
62
63
|
case "in_progress": return "info";
|
|
@@ -64,7 +65,7 @@ function Ie(e) {
|
|
|
64
65
|
default: return "muted";
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
|
-
function
|
|
68
|
+
function Re(e) {
|
|
68
69
|
switch (e) {
|
|
69
70
|
case "high": return "error";
|
|
70
71
|
case "medium": return "warning";
|
|
@@ -72,26 +73,27 @@ function Le(e) {
|
|
|
72
73
|
}
|
|
73
74
|
}
|
|
74
75
|
function w() {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
re("housingvista.rental.viewed");
|
|
77
|
+
let w = s(10), [T, ze] = l(""), [Be, Ve] = l("");
|
|
78
|
+
ge(() => {
|
|
79
|
+
let e = setTimeout(() => Ve(T), 300);
|
|
78
80
|
return () => clearTimeout(e);
|
|
79
81
|
}, [T]);
|
|
80
|
-
let { data: E, loading:
|
|
81
|
-
filter: { search:
|
|
82
|
+
let { data: E, loading: He } = ce({
|
|
83
|
+
filter: { search: Be.trim() || void 0 },
|
|
82
84
|
pagination: w.pagination
|
|
83
|
-
}),
|
|
84
|
-
|
|
85
|
-
}, { createRentalUnit:
|
|
85
|
+
}), Ue = (e) => {
|
|
86
|
+
ze(e), w.setPage(1);
|
|
87
|
+
}, { createRentalUnit: We, loading: Ge } = ae(), { createMaintenanceRequest: Ke, loading: qe } = ie(), D = s(5), { data: O, loading: Je, refetch: Ye } = oe({ pagination: D.pagination }), { resolveMaintenanceRequest: Xe, loading: k } = le(), [Ze, A] = l(!1), [j, Qe] = l(null), [$e, et] = l(""), M = s(5), [N, tt] = l("all"), { data: P, loading: nt } = se({
|
|
86
88
|
filter: { status: N === "all" ? void 0 : N },
|
|
87
89
|
pagination: M.pagination
|
|
88
|
-
}), { reviewRentalApplication:
|
|
89
|
-
|
|
90
|
-
},
|
|
91
|
-
|
|
92
|
-
},
|
|
90
|
+
}), { reviewRentalApplication: rt, loading: it } = ue(), [at, F] = l(!1), [I, ot] = l(null), [L, R] = l("approved"), [z, B] = l(""), [st, V] = l(!1), [H, ct] = l(""), [U, lt] = l(""), [W, ut] = l(""), [G, dt] = l(""), [ft, pt] = l(""), [mt, ht] = l(""), [gt, _t] = l(""), [vt, yt] = l(""), [bt, xt] = l("occupied"), [St, Ct] = l("pending"), [K, wt] = l(""), [Tt, q] = l(!1), [J, Et] = l(null), [Y, Dt] = l(""), [Ot, kt] = l(""), [At, X] = l("plumbing"), [jt, Mt] = l("medium"), Nt = () => {
|
|
91
|
+
ct(""), lt(""), ut(""), dt(""), pt(""), ht(""), _t(""), yt(""), xt("occupied"), Ct("pending"), wt("");
|
|
92
|
+
}, Pt = () => {
|
|
93
|
+
Nt(), V(!0);
|
|
94
|
+
}, Ft = async (e) => {
|
|
93
95
|
e.preventDefault();
|
|
94
|
-
let t = Number(
|
|
96
|
+
let t = Number(mt);
|
|
95
97
|
if (!H.trim() || !U.trim() || !W.trim() || !G.trim()) {
|
|
96
98
|
o.warning("Missing details", "Property, unit, tenant name and email are required.");
|
|
97
99
|
return;
|
|
@@ -100,60 +102,60 @@ function w() {
|
|
|
100
102
|
o.warning("Enter a valid monthly rent");
|
|
101
103
|
return;
|
|
102
104
|
}
|
|
103
|
-
let n =
|
|
105
|
+
let n = K.trim() ? Number(K) : void 0;
|
|
104
106
|
try {
|
|
105
|
-
await
|
|
107
|
+
await We({
|
|
106
108
|
propertyTitle: H.trim(),
|
|
107
109
|
unitNumber: U.trim(),
|
|
108
110
|
tenantName: W.trim(),
|
|
109
111
|
tenantEmail: G.trim(),
|
|
110
|
-
tenantPhone:
|
|
112
|
+
tenantPhone: ft.trim() || void 0,
|
|
111
113
|
monthlyRent: t,
|
|
112
|
-
leaseStart:
|
|
113
|
-
leaseEnd:
|
|
114
|
-
status:
|
|
115
|
-
paymentStatus:
|
|
114
|
+
leaseStart: Ne(gt),
|
|
115
|
+
leaseEnd: Ne(vt),
|
|
116
|
+
status: bt,
|
|
117
|
+
paymentStatus: St,
|
|
116
118
|
securityDeposit: n !== void 0 && Number.isFinite(n) ? n : void 0
|
|
117
|
-
}), o.success("Rental unit added", `${W.trim()} added to ${H.trim()}.`), V(!1),
|
|
119
|
+
}), o.success("Rental unit added", `${W.trim()} added to ${H.trim()}.`), V(!1), Nt();
|
|
118
120
|
} catch (e) {
|
|
119
121
|
o.error("Could not add rental unit", e.message);
|
|
120
122
|
}
|
|
121
|
-
},
|
|
122
|
-
|
|
123
|
-
},
|
|
124
|
-
if (e.preventDefault(),
|
|
125
|
-
if (!
|
|
123
|
+
}, It = (e) => {
|
|
124
|
+
Et(e), Dt(""), kt(""), X("plumbing"), Mt("medium"), q(!0);
|
|
125
|
+
}, Lt = async (e) => {
|
|
126
|
+
if (e.preventDefault(), J) {
|
|
127
|
+
if (!Y.trim()) {
|
|
126
128
|
o.warning("Add a short title for the request");
|
|
127
129
|
return;
|
|
128
130
|
}
|
|
129
131
|
try {
|
|
130
|
-
await
|
|
131
|
-
rentalUnitId:
|
|
132
|
-
title:
|
|
133
|
-
description:
|
|
134
|
-
category:
|
|
135
|
-
priority:
|
|
136
|
-
}), o.success("Maintenance request logged", `Raised for ${
|
|
132
|
+
await Ke({
|
|
133
|
+
rentalUnitId: J.id,
|
|
134
|
+
title: Y.trim(),
|
|
135
|
+
description: Ot.trim() || void 0,
|
|
136
|
+
category: At,
|
|
137
|
+
priority: jt
|
|
138
|
+
}), o.success("Maintenance request logged", `Raised for ${J.propertyTitle}, unit ${J.unitNumber}.`), q(!1), Et(null), await Ye();
|
|
137
139
|
} catch (e) {
|
|
138
140
|
o.error("Could not log maintenance request", e.message);
|
|
139
141
|
}
|
|
140
142
|
}
|
|
141
|
-
},
|
|
142
|
-
|
|
143
|
-
},
|
|
144
|
-
if (e.preventDefault(),
|
|
145
|
-
await
|
|
143
|
+
}, Rt = (e) => {
|
|
144
|
+
Qe(e), et(""), A(!0);
|
|
145
|
+
}, zt = async (e) => {
|
|
146
|
+
if (e.preventDefault(), j) try {
|
|
147
|
+
await Xe(j.id, $e.trim() || void 0), o.success("Request resolved", `"${j.title}" was marked resolved.`), A(!1), Qe(null);
|
|
146
148
|
} catch (e) {
|
|
147
149
|
o.error("Could not resolve request", e.message);
|
|
148
150
|
}
|
|
149
|
-
},
|
|
150
|
-
|
|
151
|
-
},
|
|
151
|
+
}, Bt = (e, t) => {
|
|
152
|
+
ot(e), R(t), B(""), F(!0);
|
|
153
|
+
}, Vt = async (e) => {
|
|
152
154
|
if (e.preventDefault(), I) try {
|
|
153
|
-
await
|
|
155
|
+
await rt(I.id, {
|
|
154
156
|
decision: L,
|
|
155
157
|
reviewNotes: z.trim() || void 0
|
|
156
|
-
}), o.success(L === "approved" ? "Application approved" : "Application rejected", `${I.applicantName}'s application was ${L}.`), F(!1),
|
|
158
|
+
}), o.success(L === "approved" ? "Application approved" : "Application rejected", `${I.applicantName}'s application was ${L}.`), F(!1), ot(null);
|
|
157
159
|
} catch (e) {
|
|
158
160
|
o.error("Could not update application", e.message);
|
|
159
161
|
}
|
|
@@ -176,17 +178,17 @@ function w() {
|
|
|
176
178
|
{
|
|
177
179
|
name: "Paid",
|
|
178
180
|
value: Q.paid,
|
|
179
|
-
color:
|
|
181
|
+
color: ke
|
|
180
182
|
},
|
|
181
183
|
{
|
|
182
184
|
name: "Pending",
|
|
183
185
|
value: Q.pending,
|
|
184
|
-
color:
|
|
186
|
+
color: Ae
|
|
185
187
|
},
|
|
186
188
|
{
|
|
187
189
|
name: "Overdue",
|
|
188
190
|
value: Q.overdue,
|
|
189
|
-
color:
|
|
191
|
+
color: je
|
|
190
192
|
}
|
|
191
193
|
].filter((e) => e.value > 0), [Q]);
|
|
192
194
|
return /* @__PURE__ */ m(n, {
|
|
@@ -195,12 +197,12 @@ function w() {
|
|
|
195
197
|
purpose: "Run your rentals as a business — track which units are occupied or vacant, who your tenants are, what rent is collected versus outstanding, and what needs action. Use it to chase late payments, fill vacancies, and keep leases current.",
|
|
196
198
|
actions: /* @__PURE__ */ m(h, {
|
|
197
199
|
type: "button",
|
|
198
|
-
onClick:
|
|
200
|
+
onClick: Pt,
|
|
199
201
|
className: "gap-2",
|
|
200
|
-
children: [/* @__PURE__ */ p(
|
|
202
|
+
children: [/* @__PURE__ */ p(xe, { className: "h-4 w-4" }), "Add Tenant"]
|
|
201
203
|
}),
|
|
202
204
|
children: [
|
|
203
|
-
/* @__PURE__ */ p(
|
|
205
|
+
/* @__PURE__ */ p(De, {
|
|
204
206
|
storageKey: "housingvista-rental",
|
|
205
207
|
steps: [{
|
|
206
208
|
id: "collection",
|
|
@@ -214,7 +216,7 @@ function w() {
|
|
|
214
216
|
href: "#rental-tenants"
|
|
215
217
|
}]
|
|
216
218
|
}),
|
|
217
|
-
/* @__PURE__ */ p(
|
|
219
|
+
/* @__PURE__ */ p(Ee, {
|
|
218
220
|
className: "p-4",
|
|
219
221
|
children: /* @__PURE__ */ m("div", {
|
|
220
222
|
className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",
|
|
@@ -227,7 +229,7 @@ function w() {
|
|
|
227
229
|
/* @__PURE__ */ p(r, {
|
|
228
230
|
label: "Occupied",
|
|
229
231
|
value: Z.occupied,
|
|
230
|
-
icon: /* @__PURE__ */ p(
|
|
232
|
+
icon: /* @__PURE__ */ p(Ce, { className: "h-4 w-4" })
|
|
231
233
|
}),
|
|
232
234
|
/* @__PURE__ */ p(r, {
|
|
233
235
|
label: "Vacant",
|
|
@@ -238,7 +240,7 @@ function w() {
|
|
|
238
240
|
label: "Monthly Income",
|
|
239
241
|
value: Z.monthlyIncome,
|
|
240
242
|
prefix: "$",
|
|
241
|
-
icon: /* @__PURE__ */ p(
|
|
243
|
+
icon: /* @__PURE__ */ p(ye, { className: "h-4 w-4" })
|
|
242
244
|
})
|
|
243
245
|
]
|
|
244
246
|
})
|
|
@@ -252,10 +254,10 @@ function w() {
|
|
|
252
254
|
className: "lg:col-span-1",
|
|
253
255
|
children: $.length > 0 ? /* @__PURE__ */ m("div", {
|
|
254
256
|
className: "relative h-52 w-full",
|
|
255
|
-
children: [/* @__PURE__ */ p(
|
|
257
|
+
children: [/* @__PURE__ */ p(fe, {
|
|
256
258
|
width: "100%",
|
|
257
259
|
height: "100%",
|
|
258
|
-
children: /* @__PURE__ */ m(
|
|
260
|
+
children: /* @__PURE__ */ m(he, { children: [/* @__PURE__ */ p(me, {
|
|
259
261
|
data: $,
|
|
260
262
|
dataKey: "value",
|
|
261
263
|
nameKey: "name",
|
|
@@ -264,9 +266,9 @@ function w() {
|
|
|
264
266
|
paddingAngle: 2,
|
|
265
267
|
stroke: "var(--color-bg-surface)",
|
|
266
268
|
strokeWidth: 2,
|
|
267
|
-
children: $.map((e) => /* @__PURE__ */ p(
|
|
268
|
-
}), /* @__PURE__ */ p(
|
|
269
|
-
contentStyle:
|
|
269
|
+
children: $.map((e) => /* @__PURE__ */ p(pe, { fill: e.color }, e.name))
|
|
270
|
+
}), /* @__PURE__ */ p(de, {
|
|
271
|
+
contentStyle: Me,
|
|
270
272
|
formatter: (e, t) => [`${e} ${e === 1 ? "unit" : "units"}`, t]
|
|
271
273
|
})] })
|
|
272
274
|
}), /* @__PURE__ */ m("div", {
|
|
@@ -307,7 +309,7 @@ function w() {
|
|
|
307
309
|
}),
|
|
308
310
|
/* @__PURE__ */ m("div", {
|
|
309
311
|
className: "flex items-center gap-3 rounded-lg bg-status-warning-bg-subtle p-4",
|
|
310
|
-
children: [/* @__PURE__ */ p(
|
|
312
|
+
children: [/* @__PURE__ */ p(ve, { className: "h-5 w-5 text-status-warning-text" }), /* @__PURE__ */ m("div", { children: [
|
|
311
313
|
/* @__PURE__ */ p("p", {
|
|
312
314
|
className: "text-sm text-text-secondary",
|
|
313
315
|
children: "Pending"
|
|
@@ -324,7 +326,7 @@ function w() {
|
|
|
324
326
|
}),
|
|
325
327
|
/* @__PURE__ */ m("div", {
|
|
326
328
|
className: "flex items-center gap-3 rounded-lg bg-status-error-bg-subtle p-4",
|
|
327
|
-
children: [/* @__PURE__ */ p(
|
|
329
|
+
children: [/* @__PURE__ */ p(_e, { className: "h-5 w-5 text-status-error-text" }), /* @__PURE__ */ m("div", { children: [
|
|
328
330
|
/* @__PURE__ */ p("p", {
|
|
329
331
|
className: "text-sm text-text-secondary",
|
|
330
332
|
children: "Overdue"
|
|
@@ -341,7 +343,7 @@ function w() {
|
|
|
341
343
|
}),
|
|
342
344
|
/* @__PURE__ */ m("div", {
|
|
343
345
|
className: "flex items-center gap-3 rounded-lg bg-status-info-bg-subtle p-4",
|
|
344
|
-
children: [/* @__PURE__ */ p(
|
|
346
|
+
children: [/* @__PURE__ */ p(Se, { className: "h-5 w-5 text-status-info-text" }), /* @__PURE__ */ m("div", { children: [
|
|
345
347
|
/* @__PURE__ */ p("p", {
|
|
346
348
|
className: "text-sm text-text-secondary",
|
|
347
349
|
children: "Collection Rate"
|
|
@@ -367,7 +369,7 @@ function w() {
|
|
|
367
369
|
className: "mb-4 flex flex-wrap items-center justify-between gap-3",
|
|
368
370
|
children: [/* @__PURE__ */ m("h3", {
|
|
369
371
|
className: "flex items-center gap-2 text-lg font-semibold text-text-primary",
|
|
370
|
-
children: [/* @__PURE__ */ p(
|
|
372
|
+
children: [/* @__PURE__ */ p(d, { className: "h-5 w-5" }), "Rental Applications"]
|
|
371
373
|
}), /* @__PURE__ */ p("div", {
|
|
372
374
|
className: "flex flex-wrap items-center gap-2",
|
|
373
375
|
children: [
|
|
@@ -379,13 +381,13 @@ function w() {
|
|
|
379
381
|
].map((e) => /* @__PURE__ */ p("button", {
|
|
380
382
|
type: "button",
|
|
381
383
|
onClick: () => {
|
|
382
|
-
|
|
384
|
+
tt(e), M.setPage(1);
|
|
383
385
|
},
|
|
384
386
|
className: `rounded-md px-3 py-1.5 text-xs font-medium capitalize transition-colors ${N === e ? "bg-action-primary-bg text-action-primary-text" : "bg-bg-sunken text-text-secondary hover:text-text-primary"}`,
|
|
385
387
|
children: e
|
|
386
388
|
}, e))
|
|
387
389
|
})]
|
|
388
|
-
}), P.length > 0 ? /* @__PURE__ */ m(
|
|
390
|
+
}), P.length > 0 ? /* @__PURE__ */ m(Te, { children: [/* @__PURE__ */ p("ul", {
|
|
389
391
|
className: "space-y-3",
|
|
390
392
|
children: P.map((n) => /* @__PURE__ */ m("li", {
|
|
391
393
|
className: "flex flex-col gap-3 rounded-lg border border-border-subtle p-4 sm:flex-row sm:items-center sm:justify-between",
|
|
@@ -399,7 +401,7 @@ function w() {
|
|
|
399
401
|
children: n.applicantName
|
|
400
402
|
}), /* @__PURE__ */ p(i, {
|
|
401
403
|
label: n.status,
|
|
402
|
-
variant:
|
|
404
|
+
variant: Ie(n.status)
|
|
403
405
|
})]
|
|
404
406
|
}),
|
|
405
407
|
/* @__PURE__ */ p("p", {
|
|
@@ -421,13 +423,13 @@ function w() {
|
|
|
421
423
|
type: "button",
|
|
422
424
|
variant: "outline",
|
|
423
425
|
size: "sm",
|
|
424
|
-
onClick: () =>
|
|
426
|
+
onClick: () => Bt(n, "rejected"),
|
|
425
427
|
className: "gap-1.5",
|
|
426
|
-
children: [/* @__PURE__ */ p(
|
|
428
|
+
children: [/* @__PURE__ */ p(we, { className: "h-3.5 w-3.5" }), "Reject"]
|
|
427
429
|
}), /* @__PURE__ */ m(h, {
|
|
428
430
|
type: "button",
|
|
429
431
|
size: "sm",
|
|
430
|
-
onClick: () =>
|
|
432
|
+
onClick: () => Bt(n, "approved"),
|
|
431
433
|
className: "gap-1.5",
|
|
432
434
|
children: [/* @__PURE__ */ p(u, { className: "h-3.5 w-3.5" }), "Approve"]
|
|
433
435
|
})]
|
|
@@ -438,7 +440,7 @@ function w() {
|
|
|
438
440
|
}, n.id))
|
|
439
441
|
}), /* @__PURE__ */ p("div", {
|
|
440
442
|
className: "mt-4",
|
|
441
|
-
children: /* @__PURE__ */ p(
|
|
443
|
+
children: /* @__PURE__ */ p(Oe, {
|
|
442
444
|
page: M.page,
|
|
443
445
|
pageSize: M.pageSize,
|
|
444
446
|
hasNextPage: P.length >= M.pageSize,
|
|
@@ -448,9 +450,9 @@ function w() {
|
|
|
448
450
|
})
|
|
449
451
|
})] }) : /* @__PURE__ */ p(a, {
|
|
450
452
|
illustration: "empty-data",
|
|
451
|
-
icon: /* @__PURE__ */ p(
|
|
453
|
+
icon: /* @__PURE__ */ p(d, { className: "h-10 w-10" }),
|
|
452
454
|
title: "No applications",
|
|
453
|
-
description:
|
|
455
|
+
description: nt ? "Loading applications…" : "Rental applications from prospective tenants will appear here for review.",
|
|
454
456
|
className: "border-0 bg-transparent p-4"
|
|
455
457
|
})]
|
|
456
458
|
}),
|
|
@@ -464,7 +466,7 @@ function w() {
|
|
|
464
466
|
}),
|
|
465
467
|
/* @__PURE__ */ p(ne, {
|
|
466
468
|
searchValue: T,
|
|
467
|
-
onSearchChange:
|
|
469
|
+
onSearchChange: Ue,
|
|
468
470
|
searchPlaceholder: "Search units, tenants..."
|
|
469
471
|
}),
|
|
470
472
|
/* @__PURE__ */ p("div", {
|
|
@@ -533,10 +535,10 @@ function w() {
|
|
|
533
535
|
className: "flex flex-col gap-1",
|
|
534
536
|
children: [/* @__PURE__ */ p(i, {
|
|
535
537
|
label: e.status.replace("_", " "),
|
|
536
|
-
variant:
|
|
538
|
+
variant: Pe(e.status)
|
|
537
539
|
}), /* @__PURE__ */ p(i, {
|
|
538
540
|
label: e.paymentStatus,
|
|
539
|
-
variant:
|
|
541
|
+
variant: Fe(e.paymentStatus)
|
|
540
542
|
})]
|
|
541
543
|
})
|
|
542
544
|
},
|
|
@@ -547,7 +549,7 @@ function w() {
|
|
|
547
549
|
type: "button",
|
|
548
550
|
variant: "ghost",
|
|
549
551
|
size: "sm",
|
|
550
|
-
onClick: () =>
|
|
552
|
+
onClick: () => It(e),
|
|
551
553
|
className: "gap-1.5",
|
|
552
554
|
children: [/* @__PURE__ */ p(f, { className: "h-3.5 w-3.5" }), "Maintenance"]
|
|
553
555
|
})
|
|
@@ -560,20 +562,20 @@ function w() {
|
|
|
560
562
|
page: w.page,
|
|
561
563
|
pageSize: w.pageSize,
|
|
562
564
|
hasNextPage: E.length >= w.pageSize,
|
|
563
|
-
loading:
|
|
565
|
+
loading: He,
|
|
564
566
|
onPageChange: w.setPage,
|
|
565
567
|
onPageSizeChange: w.setPageSize
|
|
566
568
|
}
|
|
567
569
|
}) : /* @__PURE__ */ p(a, {
|
|
568
570
|
illustration: "empty-people",
|
|
569
|
-
icon: /* @__PURE__ */ p(
|
|
571
|
+
icon: /* @__PURE__ */ p(Ce, { className: "h-12 w-12" }),
|
|
570
572
|
title: "No rental units found",
|
|
571
573
|
description: "Try adjusting your search criteria or add a new tenant.",
|
|
572
574
|
action: /* @__PURE__ */ m(h, {
|
|
573
575
|
type: "button",
|
|
574
|
-
onClick:
|
|
576
|
+
onClick: Pt,
|
|
575
577
|
className: "gap-2",
|
|
576
|
-
children: [/* @__PURE__ */ p(
|
|
578
|
+
children: [/* @__PURE__ */ p(xe, { className: "h-4 w-4" }), "Add Tenant"]
|
|
577
579
|
})
|
|
578
580
|
})
|
|
579
581
|
})
|
|
@@ -585,7 +587,7 @@ function w() {
|
|
|
585
587
|
children: [/* @__PURE__ */ m("h3", {
|
|
586
588
|
className: "mb-4 flex items-center gap-2 text-lg font-semibold text-text-primary",
|
|
587
589
|
children: [/* @__PURE__ */ p(f, { className: "h-5 w-5" }), "Maintenance Requests"]
|
|
588
|
-
}), O.length > 0 ? /* @__PURE__ */ m(
|
|
590
|
+
}), O.length > 0 ? /* @__PURE__ */ m(Te, { children: [/* @__PURE__ */ p("ul", {
|
|
589
591
|
className: "space-y-3",
|
|
590
592
|
children: O.map((e) => /* @__PURE__ */ m("li", {
|
|
591
593
|
className: "flex flex-col gap-3 rounded-lg border border-border-subtle p-4 sm:flex-row sm:items-center sm:justify-between",
|
|
@@ -601,11 +603,11 @@ function w() {
|
|
|
601
603
|
}),
|
|
602
604
|
/* @__PURE__ */ p(i, {
|
|
603
605
|
label: e.status.replace("_", " "),
|
|
604
|
-
variant:
|
|
606
|
+
variant: Le(e.status)
|
|
605
607
|
}),
|
|
606
608
|
/* @__PURE__ */ p(i, {
|
|
607
609
|
label: e.priority,
|
|
608
|
-
variant:
|
|
610
|
+
variant: Re(e.priority)
|
|
609
611
|
})
|
|
610
612
|
]
|
|
611
613
|
}),
|
|
@@ -624,14 +626,14 @@ function w() {
|
|
|
624
626
|
}) : /* @__PURE__ */ m(h, {
|
|
625
627
|
type: "button",
|
|
626
628
|
size: "sm",
|
|
627
|
-
onClick: () =>
|
|
629
|
+
onClick: () => Rt(e),
|
|
628
630
|
className: "shrink-0 gap-1.5",
|
|
629
631
|
children: [/* @__PURE__ */ p(u, { className: "h-3.5 w-3.5" }), "Resolve"]
|
|
630
632
|
})]
|
|
631
633
|
}, e.id))
|
|
632
634
|
}), /* @__PURE__ */ p("div", {
|
|
633
635
|
className: "mt-4",
|
|
634
|
-
children: /* @__PURE__ */ p(
|
|
636
|
+
children: /* @__PURE__ */ p(Oe, {
|
|
635
637
|
page: D.page,
|
|
636
638
|
pageSize: D.pageSize,
|
|
637
639
|
hasNextPage: O.length >= D.pageSize,
|
|
@@ -643,17 +645,17 @@ function w() {
|
|
|
643
645
|
illustration: "empty-data",
|
|
644
646
|
icon: /* @__PURE__ */ p(f, { className: "h-10 w-10" }),
|
|
645
647
|
title: "No maintenance requests",
|
|
646
|
-
description:
|
|
648
|
+
description: Je ? "Loading maintenance requests…" : "Repairs raised against your units will appear here so you can track and resolve them.",
|
|
647
649
|
className: "border-0 bg-transparent p-4"
|
|
648
650
|
})]
|
|
649
651
|
}),
|
|
650
652
|
/* @__PURE__ */ p(g, {
|
|
651
|
-
open:
|
|
653
|
+
open: st,
|
|
652
654
|
onOpenChange: V,
|
|
653
655
|
children: /* @__PURE__ */ p(_, {
|
|
654
656
|
className: "sm:max-w-lg",
|
|
655
657
|
children: /* @__PURE__ */ m("form", {
|
|
656
|
-
onSubmit:
|
|
658
|
+
onSubmit: Ft,
|
|
657
659
|
children: [
|
|
658
660
|
/* @__PURE__ */ m(b, { children: [/* @__PURE__ */ p(x, { children: "Add rental unit" }), /* @__PURE__ */ p(v, { children: "Register a unit and its tenant to start tracking rent and lease dates." })] }),
|
|
659
661
|
/* @__PURE__ */ m("div", {
|
|
@@ -669,7 +671,7 @@ function w() {
|
|
|
669
671
|
required: !0,
|
|
670
672
|
placeholder: "e.g. Maple Court",
|
|
671
673
|
value: H,
|
|
672
|
-
onChange: (e) =>
|
|
674
|
+
onChange: (e) => ct(e.target.value),
|
|
673
675
|
className: S
|
|
674
676
|
})] }), /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("label", {
|
|
675
677
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
@@ -679,7 +681,7 @@ function w() {
|
|
|
679
681
|
required: !0,
|
|
680
682
|
placeholder: "e.g. 4B",
|
|
681
683
|
value: U,
|
|
682
|
-
onChange: (e) =>
|
|
684
|
+
onChange: (e) => lt(e.target.value),
|
|
683
685
|
className: S
|
|
684
686
|
})] })]
|
|
685
687
|
}),
|
|
@@ -693,7 +695,7 @@ function w() {
|
|
|
693
695
|
required: !0,
|
|
694
696
|
placeholder: "Full name",
|
|
695
697
|
value: W,
|
|
696
|
-
onChange: (e) =>
|
|
698
|
+
onChange: (e) => ut(e.target.value),
|
|
697
699
|
className: S
|
|
698
700
|
})] }), /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("label", {
|
|
699
701
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
@@ -703,7 +705,7 @@ function w() {
|
|
|
703
705
|
required: !0,
|
|
704
706
|
placeholder: "name@example.com",
|
|
705
707
|
value: G,
|
|
706
|
-
onChange: (e) =>
|
|
708
|
+
onChange: (e) => dt(e.target.value),
|
|
707
709
|
className: S
|
|
708
710
|
})] })]
|
|
709
711
|
}),
|
|
@@ -715,8 +717,8 @@ function w() {
|
|
|
715
717
|
}), /* @__PURE__ */ p("input", {
|
|
716
718
|
type: "tel",
|
|
717
719
|
placeholder: "Optional",
|
|
718
|
-
value:
|
|
719
|
-
onChange: (e) =>
|
|
720
|
+
value: ft,
|
|
721
|
+
onChange: (e) => pt(e.target.value),
|
|
720
722
|
className: S
|
|
721
723
|
})] }), /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("label", {
|
|
722
724
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
@@ -727,8 +729,8 @@ function w() {
|
|
|
727
729
|
min: 0,
|
|
728
730
|
step: "0.01",
|
|
729
731
|
placeholder: "0.00",
|
|
730
|
-
value:
|
|
731
|
-
onChange: (e) =>
|
|
732
|
+
value: mt,
|
|
733
|
+
onChange: (e) => ht(e.target.value),
|
|
732
734
|
className: S
|
|
733
735
|
})] })]
|
|
734
736
|
}),
|
|
@@ -739,16 +741,16 @@ function w() {
|
|
|
739
741
|
children: "Lease start"
|
|
740
742
|
}), /* @__PURE__ */ p("input", {
|
|
741
743
|
type: "date",
|
|
742
|
-
value:
|
|
743
|
-
onChange: (e) =>
|
|
744
|
+
value: gt,
|
|
745
|
+
onChange: (e) => _t(e.target.value),
|
|
744
746
|
className: S
|
|
745
747
|
})] }), /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("label", {
|
|
746
748
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
747
749
|
children: "Lease end"
|
|
748
750
|
}), /* @__PURE__ */ p("input", {
|
|
749
751
|
type: "date",
|
|
750
|
-
value:
|
|
751
|
-
onChange: (e) =>
|
|
752
|
+
value: vt,
|
|
753
|
+
onChange: (e) => yt(e.target.value),
|
|
752
754
|
className: S
|
|
753
755
|
})] })]
|
|
754
756
|
}),
|
|
@@ -759,8 +761,8 @@ function w() {
|
|
|
759
761
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
760
762
|
children: "Status"
|
|
761
763
|
}), /* @__PURE__ */ m("select", {
|
|
762
|
-
value:
|
|
763
|
-
onChange: (e) =>
|
|
764
|
+
value: bt,
|
|
765
|
+
onChange: (e) => xt(e.target.value),
|
|
764
766
|
className: S,
|
|
765
767
|
children: [
|
|
766
768
|
/* @__PURE__ */ p("option", {
|
|
@@ -785,8 +787,8 @@ function w() {
|
|
|
785
787
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
786
788
|
children: "Payment"
|
|
787
789
|
}), /* @__PURE__ */ m("select", {
|
|
788
|
-
value:
|
|
789
|
-
onChange: (e) =>
|
|
790
|
+
value: St,
|
|
791
|
+
onChange: (e) => Ct(e.target.value),
|
|
790
792
|
className: S,
|
|
791
793
|
children: [
|
|
792
794
|
/* @__PURE__ */ p("option", {
|
|
@@ -811,8 +813,8 @@ function w() {
|
|
|
811
813
|
min: 0,
|
|
812
814
|
step: "0.01",
|
|
813
815
|
placeholder: "Optional",
|
|
814
|
-
value:
|
|
815
|
-
onChange: (e) =>
|
|
816
|
+
value: K,
|
|
817
|
+
onChange: (e) => wt(e.target.value),
|
|
816
818
|
className: S
|
|
817
819
|
})] })
|
|
818
820
|
]
|
|
@@ -826,22 +828,22 @@ function w() {
|
|
|
826
828
|
children: "Cancel"
|
|
827
829
|
}), /* @__PURE__ */ p(h, {
|
|
828
830
|
type: "submit",
|
|
829
|
-
disabled:
|
|
830
|
-
children:
|
|
831
|
+
disabled: Ge,
|
|
832
|
+
children: Ge ? "Saving…" : "Add unit"
|
|
831
833
|
})] })
|
|
832
834
|
]
|
|
833
835
|
})
|
|
834
836
|
})
|
|
835
837
|
}),
|
|
836
838
|
/* @__PURE__ */ p(g, {
|
|
837
|
-
open:
|
|
838
|
-
onOpenChange:
|
|
839
|
+
open: Tt,
|
|
840
|
+
onOpenChange: q,
|
|
839
841
|
children: /* @__PURE__ */ p(_, {
|
|
840
842
|
className: "sm:max-w-md",
|
|
841
843
|
children: /* @__PURE__ */ m("form", {
|
|
842
|
-
onSubmit:
|
|
844
|
+
onSubmit: Lt,
|
|
843
845
|
children: [
|
|
844
|
-
/* @__PURE__ */ m(b, { children: [/* @__PURE__ */ p(x, { children: "Log maintenance request" }), /* @__PURE__ */ p(v, { children:
|
|
846
|
+
/* @__PURE__ */ m(b, { children: [/* @__PURE__ */ p(x, { children: "Log maintenance request" }), /* @__PURE__ */ p(v, { children: J ? `Raise a repair for ${J.propertyTitle}, unit ${J.unitNumber}.` : "Raise a repair for this unit." })] }),
|
|
845
847
|
/* @__PURE__ */ m("div", {
|
|
846
848
|
className: "space-y-3 py-2",
|
|
847
849
|
children: [
|
|
@@ -852,8 +854,8 @@ function w() {
|
|
|
852
854
|
type: "text",
|
|
853
855
|
required: !0,
|
|
854
856
|
placeholder: "e.g. Leaking kitchen tap",
|
|
855
|
-
value:
|
|
856
|
-
onChange: (e) =>
|
|
857
|
+
value: Y,
|
|
858
|
+
onChange: (e) => Dt(e.target.value),
|
|
857
859
|
className: S
|
|
858
860
|
})] }),
|
|
859
861
|
/* @__PURE__ */ m("div", {
|
|
@@ -862,8 +864,8 @@ function w() {
|
|
|
862
864
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
863
865
|
children: "Category"
|
|
864
866
|
}), /* @__PURE__ */ m("select", {
|
|
865
|
-
value:
|
|
866
|
-
onChange: (e) =>
|
|
867
|
+
value: At,
|
|
868
|
+
onChange: (e) => X(e.target.value),
|
|
867
869
|
className: S,
|
|
868
870
|
children: [
|
|
869
871
|
/* @__PURE__ */ p("option", {
|
|
@@ -891,8 +893,8 @@ function w() {
|
|
|
891
893
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
892
894
|
children: "Priority"
|
|
893
895
|
}), /* @__PURE__ */ m("select", {
|
|
894
|
-
value:
|
|
895
|
-
onChange: (e) =>
|
|
896
|
+
value: jt,
|
|
897
|
+
onChange: (e) => Mt(e.target.value),
|
|
896
898
|
className: S,
|
|
897
899
|
children: [
|
|
898
900
|
/* @__PURE__ */ p("option", {
|
|
@@ -916,8 +918,8 @@ function w() {
|
|
|
916
918
|
}), /* @__PURE__ */ p("textarea", {
|
|
917
919
|
rows: 3,
|
|
918
920
|
placeholder: "Optional — add context for the technician",
|
|
919
|
-
value:
|
|
920
|
-
onChange: (e) =>
|
|
921
|
+
value: Ot,
|
|
922
|
+
onChange: (e) => kt(e.target.value),
|
|
921
923
|
className: C
|
|
922
924
|
})] })
|
|
923
925
|
]
|
|
@@ -925,12 +927,12 @@ function w() {
|
|
|
925
927
|
/* @__PURE__ */ m(y, { children: [/* @__PURE__ */ p(h, {
|
|
926
928
|
type: "button",
|
|
927
929
|
variant: "outline",
|
|
928
|
-
onClick: () =>
|
|
930
|
+
onClick: () => q(!1),
|
|
929
931
|
children: "Cancel"
|
|
930
932
|
}), /* @__PURE__ */ p(h, {
|
|
931
933
|
type: "submit",
|
|
932
|
-
disabled:
|
|
933
|
-
children:
|
|
934
|
+
disabled: qe,
|
|
935
|
+
children: qe ? "Submitting…" : "Log request"
|
|
934
936
|
})] })
|
|
935
937
|
]
|
|
936
938
|
})
|
|
@@ -938,13 +940,13 @@ function w() {
|
|
|
938
940
|
}),
|
|
939
941
|
/* @__PURE__ */ p(g, {
|
|
940
942
|
open: Ze,
|
|
941
|
-
onOpenChange:
|
|
943
|
+
onOpenChange: A,
|
|
942
944
|
children: /* @__PURE__ */ p(_, {
|
|
943
945
|
className: "sm:max-w-md",
|
|
944
946
|
children: /* @__PURE__ */ m("form", {
|
|
945
|
-
onSubmit:
|
|
947
|
+
onSubmit: zt,
|
|
946
948
|
children: [
|
|
947
|
-
/* @__PURE__ */ m(b, { children: [/* @__PURE__ */ p(x, { children: "Resolve maintenance request" }), /* @__PURE__ */ p(v, { children:
|
|
949
|
+
/* @__PURE__ */ m(b, { children: [/* @__PURE__ */ p(x, { children: "Resolve maintenance request" }), /* @__PURE__ */ p(v, { children: j ? `Mark "${j.title}" as resolved.` : "Mark this request as resolved." })] }),
|
|
948
950
|
/* @__PURE__ */ p("div", {
|
|
949
951
|
className: "space-y-3 py-2",
|
|
950
952
|
children: /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("label", {
|
|
@@ -953,32 +955,32 @@ function w() {
|
|
|
953
955
|
}), /* @__PURE__ */ p("textarea", {
|
|
954
956
|
rows: 3,
|
|
955
957
|
placeholder: "Optional — describe the fix or outcome",
|
|
956
|
-
value:
|
|
957
|
-
onChange: (e) =>
|
|
958
|
+
value: $e,
|
|
959
|
+
onChange: (e) => et(e.target.value),
|
|
958
960
|
className: C
|
|
959
961
|
})] })
|
|
960
962
|
}),
|
|
961
963
|
/* @__PURE__ */ m(y, { children: [/* @__PURE__ */ p(h, {
|
|
962
964
|
type: "button",
|
|
963
965
|
variant: "outline",
|
|
964
|
-
onClick: () =>
|
|
966
|
+
onClick: () => A(!1),
|
|
965
967
|
children: "Cancel"
|
|
966
968
|
}), /* @__PURE__ */ p(h, {
|
|
967
969
|
type: "submit",
|
|
968
|
-
disabled:
|
|
969
|
-
children:
|
|
970
|
+
disabled: k,
|
|
971
|
+
children: k ? "Resolving…" : "Mark resolved"
|
|
970
972
|
})] })
|
|
971
973
|
]
|
|
972
974
|
})
|
|
973
975
|
})
|
|
974
976
|
}),
|
|
975
977
|
/* @__PURE__ */ p(g, {
|
|
976
|
-
open:
|
|
978
|
+
open: at,
|
|
977
979
|
onOpenChange: F,
|
|
978
980
|
children: /* @__PURE__ */ p(_, {
|
|
979
981
|
className: "sm:max-w-md",
|
|
980
982
|
children: /* @__PURE__ */ m("form", {
|
|
981
|
-
onSubmit:
|
|
983
|
+
onSubmit: Vt,
|
|
982
984
|
children: [
|
|
983
985
|
/* @__PURE__ */ m(b, { children: [/* @__PURE__ */ p(x, { children: L === "approved" ? "Approve application" : "Reject application" }), /* @__PURE__ */ p(v, { children: I ? `${I.applicantName} — ${I.rentalUnit ? `${I.rentalUnit.propertyTitle}, unit ${I.rentalUnit.unitNumber}` : "unit unavailable"}` : "Review this rental application." })] }),
|
|
984
986
|
/* @__PURE__ */ m("div", {
|
|
@@ -1015,8 +1017,8 @@ function w() {
|
|
|
1015
1017
|
children: "Cancel"
|
|
1016
1018
|
}), /* @__PURE__ */ p(h, {
|
|
1017
1019
|
type: "submit",
|
|
1018
|
-
disabled:
|
|
1019
|
-
children:
|
|
1020
|
+
disabled: it,
|
|
1021
|
+
children: it ? "Saving…" : L === "approved" ? "Approve" : "Reject"
|
|
1020
1022
|
})] })
|
|
1021
1023
|
]
|
|
1022
1024
|
})
|