@burdenoff/microfe-housingvista 2026.703.13 → 2026.709.2
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/generated/global-operations.d.ts +2 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-types.d.ts +23527 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/wspace-operations.d.ts +267 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-operations.js +67 -0
- package/dist/generated/wspace-operations.js.map +1 -0
- package/dist/generated/wspace-types.d.ts +57868 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/housingvista/HousingVistaRoot.d.ts +5 -0
- package/dist/housingvista/HousingVistaRoot.d.ts.map +1 -0
- package/dist/housingvista/HousingVistaRoutes.d.ts +7 -0
- package/dist/housingvista/HousingVistaRoutes.d.ts.map +1 -0
- package/dist/housingvista/components/Breadcrumbs.d.ts +13 -0
- package/dist/housingvista/components/Breadcrumbs.d.ts.map +1 -0
- package/dist/housingvista/components/ChartCard.d.ts +12 -0
- package/dist/housingvista/components/ChartCard.d.ts.map +1 -0
- package/dist/housingvista/components/ContactOwnerDialog.d.ts +33 -0
- package/dist/housingvista/components/ContactOwnerDialog.d.ts.map +1 -0
- package/dist/housingvista/components/DataTable.d.ts +42 -0
- package/dist/housingvista/components/DataTable.d.ts.map +1 -0
- package/dist/housingvista/components/EmptyState.d.ts +19 -0
- package/dist/housingvista/components/EmptyState.d.ts.map +1 -0
- package/dist/housingvista/components/ErrorBoundary.d.ts +19 -0
- package/dist/housingvista/components/ErrorBoundary.d.ts.map +1 -0
- package/dist/housingvista/components/FileUploader.d.ts +16 -0
- package/dist/housingvista/components/FileUploader.d.ts.map +1 -0
- package/dist/housingvista/components/FilterBar.d.ts +13 -0
- package/dist/housingvista/components/FilterBar.d.ts.map +1 -0
- package/dist/housingvista/components/LoadingSkeleton.d.ts +10 -0
- package/dist/housingvista/components/LoadingSkeleton.d.ts.map +1 -0
- package/dist/housingvista/components/PageLayout.d.ts +18 -0
- package/dist/housingvista/components/PageLayout.d.ts.map +1 -0
- package/dist/housingvista/components/PropertyCard.d.ts +26 -0
- package/dist/housingvista/components/PropertyCard.d.ts.map +1 -0
- package/dist/housingvista/components/ReviewsSection.d.ts +12 -0
- package/dist/housingvista/components/ReviewsSection.d.ts.map +1 -0
- package/dist/housingvista/components/StatCard.d.ts +18 -0
- package/dist/housingvista/components/StatCard.d.ts.map +1 -0
- package/dist/housingvista/components/StatusBadge.d.ts +12 -0
- package/dist/housingvista/components/StatusBadge.d.ts.map +1 -0
- package/dist/housingvista/components/index.d.ts +17 -0
- package/dist/housingvista/components/index.d.ts.map +1 -0
- package/dist/housingvista/context/HousingVistaContext.d.ts +15 -0
- package/dist/housingvista/context/HousingVistaContext.d.ts.map +1 -0
- package/dist/housingvista/hooks/index.d.ts +804 -0
- package/dist/housingvista/hooks/index.d.ts.map +1 -0
- package/dist/housingvista/hooks/index.js +1 -0
- package/dist/housingvista/hooks/index.js.map +1 -1
- package/dist/housingvista/hooks/messages.d.ts +65 -0
- package/dist/housingvista/hooks/messages.d.ts.map +1 -0
- package/dist/housingvista/hooks/platform.d.ts +140 -0
- package/dist/housingvista/hooks/platform.d.ts.map +1 -0
- package/dist/housingvista/hooks/useHousingVistaAnalytics.d.ts +16 -0
- package/dist/housingvista/hooks/useHousingVistaAnalytics.d.ts.map +1 -0
- package/dist/housingvista/hooks/useHousingVistaAnalytics.js +57 -0
- package/dist/housingvista/hooks/useHousingVistaAnalytics.js.map +1 -0
- package/dist/housingvista/hooks/useServerPagination.d.ts +12 -0
- package/dist/housingvista/hooks/useServerPagination.d.ts.map +1 -0
- package/dist/housingvista/index.d.ts +13 -0
- package/dist/housingvista/index.d.ts.map +1 -0
- package/dist/housingvista/index.js +2 -0
- package/dist/housingvista/lib/toast.d.ts +11 -0
- package/dist/housingvista/lib/toast.d.ts.map +1 -0
- package/dist/housingvista/pages/HomePage.d.ts +7 -0
- package/dist/housingvista/pages/HomePage.d.ts.map +1 -0
- package/dist/housingvista/pages/HomePage.js +135 -132
- package/dist/housingvista/pages/HomePage.js.map +1 -1
- package/dist/housingvista/pages/amc/AMCManagementPage.d.ts +2 -0
- package/dist/housingvista/pages/amc/AMCManagementPage.d.ts.map +1 -0
- package/dist/housingvista/pages/analytics/AnalyticsPage.d.ts +2 -0
- package/dist/housingvista/pages/analytics/AnalyticsPage.d.ts.map +1 -0
- package/dist/housingvista/pages/analytics/AnalyticsPage.js +136 -134
- package/dist/housingvista/pages/analytics/AnalyticsPage.js.map +1 -1
- package/dist/housingvista/pages/assets/AssetDetailPage.d.ts +9 -0
- package/dist/housingvista/pages/assets/AssetDetailPage.d.ts.map +1 -0
- package/dist/housingvista/pages/assets/AssetManagementPage.d.ts +2 -0
- package/dist/housingvista/pages/assets/AssetManagementPage.d.ts.map +1 -0
- package/dist/housingvista/pages/assets/AssetManagementPage.js.map +1 -1
- package/dist/housingvista/pages/chat/ChatPage.d.ts +14 -0
- package/dist/housingvista/pages/chat/ChatPage.d.ts.map +1 -0
- package/dist/housingvista/pages/finance/HomeLoanDetailPage.d.ts +11 -0
- package/dist/housingvista/pages/finance/HomeLoanDetailPage.d.ts.map +1 -0
- package/dist/housingvista/pages/finance/HomeLoansPage.d.ts +2 -0
- package/dist/housingvista/pages/finance/HomeLoansPage.d.ts.map +1 -0
- package/dist/housingvista/pages/investments/InvestmentDetailPage.d.ts +2 -0
- package/dist/housingvista/pages/investments/InvestmentDetailPage.d.ts.map +1 -0
- package/dist/housingvista/pages/investments/InvestmentsPage.d.ts +2 -0
- package/dist/housingvista/pages/investments/InvestmentsPage.d.ts.map +1 -0
- package/dist/housingvista/pages/investments/InvestmentsPage.js.map +1 -1
- package/dist/housingvista/pages/legal/LegalPage.d.ts +2 -0
- package/dist/housingvista/pages/legal/LegalPage.d.ts.map +1 -0
- package/dist/housingvista/pages/legal/LegalServiceDetailPage.d.ts +12 -0
- package/dist/housingvista/pages/legal/LegalServiceDetailPage.d.ts.map +1 -0
- package/dist/housingvista/pages/market/AreaInsightsPage.d.ts +2 -0
- package/dist/housingvista/pages/market/AreaInsightsPage.d.ts.map +1 -0
- package/dist/housingvista/pages/market/MarketAnalyticsPage.d.ts +2 -0
- package/dist/housingvista/pages/market/MarketAnalyticsPage.d.ts.map +1 -0
- package/dist/housingvista/pages/marketplace/MarketplacePage.d.ts +2 -0
- package/dist/housingvista/pages/marketplace/MarketplacePage.d.ts.map +1 -0
- package/dist/housingvista/pages/marketplace/ServiceDetailPage.d.ts +12 -0
- package/dist/housingvista/pages/marketplace/ServiceDetailPage.d.ts.map +1 -0
- package/dist/housingvista/pages/offers/OffersPage.d.ts +10 -0
- package/dist/housingvista/pages/offers/OffersPage.d.ts.map +1 -0
- package/dist/housingvista/pages/properties/AddPropertyPage.d.ts +8 -0
- package/dist/housingvista/pages/properties/AddPropertyPage.d.ts.map +1 -0
- package/dist/housingvista/pages/properties/AddPropertyPage.js +279 -278
- package/dist/housingvista/pages/properties/AddPropertyPage.js.map +1 -1
- package/dist/housingvista/pages/properties/PropertiesPage.d.ts +7 -0
- package/dist/housingvista/pages/properties/PropertiesPage.d.ts.map +1 -0
- package/dist/housingvista/pages/properties/PropertiesPage.js +93 -86
- package/dist/housingvista/pages/properties/PropertiesPage.js.map +1 -1
- package/dist/housingvista/pages/properties/PropertyDetailPage.d.ts +9 -0
- package/dist/housingvista/pages/properties/PropertyDetailPage.d.ts.map +1 -0
- package/dist/housingvista/pages/properties/PropertyDetailPage.js +514 -511
- package/dist/housingvista/pages/properties/PropertyDetailPage.js.map +1 -1
- package/dist/housingvista/pages/rental/RentalManagementPage.d.ts +2 -0
- package/dist/housingvista/pages/rental/RentalManagementPage.d.ts.map +1 -0
- package/dist/housingvista/pages/settings/ProfilePage.d.ts +2 -0
- package/dist/housingvista/pages/settings/ProfilePage.d.ts.map +1 -0
- package/dist/housingvista/pages/settings/SettingsPage.d.ts +2 -0
- package/dist/housingvista/pages/settings/SettingsPage.d.ts.map +1 -0
- package/dist/housingvista/pages/shortlist/ShortlistPage.d.ts +8 -0
- package/dist/housingvista/pages/shortlist/ShortlistPage.d.ts.map +1 -0
- package/dist/housingvista/pages/transactions/TransactionDetailPage.d.ts +8 -0
- package/dist/housingvista/pages/transactions/TransactionDetailPage.d.ts.map +1 -0
- package/dist/housingvista/pages/transactions/TransactionsPage.d.ts +7 -0
- package/dist/housingvista/pages/transactions/TransactionsPage.d.ts.map +1 -0
- package/dist/housingvista/pages/transactions/milestones.d.ts +35 -0
- package/dist/housingvista/pages/transactions/milestones.d.ts.map +1 -0
- package/dist/housingvista/pages/verification/VerificationDetailPage.d.ts +10 -0
- package/dist/housingvista/pages/verification/VerificationDetailPage.d.ts.map +1 -0
- package/dist/housingvista/pages/verification/VerificationPage.d.ts +2 -0
- package/dist/housingvista/pages/verification/VerificationPage.d.ts.map +1 -0
- package/dist/housingvista/pages/viewings/ViewingsPage.d.ts +9 -0
- package/dist/housingvista/pages/viewings/ViewingsPage.d.ts.map +1 -0
- package/dist/housingvista/services/assistantApi.d.ts +90 -0
- package/dist/housingvista/services/assistantApi.d.ts.map +1 -0
- package/dist/housingvista/services/assistantApi.js +222 -0
- package/dist/housingvista/services/assistantApi.js.map +1 -0
- package/dist/housingvista/services/createSandboxAssistantTransport.d.ts +42 -0
- package/dist/housingvista/services/createSandboxAssistantTransport.d.ts.map +1 -0
- package/dist/housingvista/services/createSandboxAssistantTransport.js +120 -0
- package/dist/housingvista/services/createSandboxAssistantTransport.js.map +1 -0
- package/dist/housingvista/store/housingvistaStore.d.ts +72 -0
- package/dist/housingvista/store/housingvistaStore.d.ts.map +1 -0
- package/dist/housingvista/types/assistant.d.ts +16 -0
- package/dist/housingvista/types/assistant.d.ts.map +1 -0
- package/dist/housingvista/types/index.d.ts +1328 -0
- package/dist/housingvista/types/index.d.ts.map +1 -0
- package/dist/housingvista/utils/helpers.d.ts +25 -0
- package/dist/housingvista/utils/helpers.d.ts.map +1 -0
- package/dist/housingvista/utils/index.d.ts +2 -0
- package/dist/housingvista/utils/index.d.ts.map +1 -0
- package/dist/housingvista/utils/pageContext.d.ts +25 -0
- package/dist/housingvista/utils/pageContext.d.ts.map +1 -0
- package/dist/housingvista/utils/pageContext.js +77 -0
- package/dist/housingvista/utils/pageContext.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -3
- package/package.json +6 -2
|
@@ -3,31 +3,32 @@ import { StatusBadge as i } from "../../components/StatusBadge.js";
|
|
|
3
3
|
import { EmptyState as a } from "../../components/EmptyState.js";
|
|
4
4
|
import { Breadcrumbs as te } from "../../components/Breadcrumbs.js";
|
|
5
5
|
import { LoadingSkeleton as o } from "../../components/LoadingSkeleton.js";
|
|
6
|
-
import {
|
|
6
|
+
import { useHousingVistaAnalytics as ne, useTrackPageView as re } from "../../hooks/useHousingVistaAnalytics.js";
|
|
7
|
+
import { useBookViewing as ie, useCreateInvestment as ae, useDeleteProperty as oe, useProperties as se, useProperty as ce, useRemoveShortlist as le, useRentalUnits as ue, useSaveShortlist as de, useShortlists as fe, useSubmitOffer as pe, useSubmitRentalApplication as me, useUpdateProperty as he } from "../../hooks/index.js";
|
|
7
8
|
import { notify as s } from "../../lib/toast.js";
|
|
8
|
-
import { ContactOwnerDialog as
|
|
9
|
-
import { ReviewsSection as
|
|
9
|
+
import { ContactOwnerDialog as ge } from "../../components/ContactOwnerDialog.js";
|
|
10
|
+
import { ReviewsSection as _e } from "../../components/ReviewsSection.js";
|
|
10
11
|
import "../../components/index.js";
|
|
11
|
-
import { Tooltip as
|
|
12
|
-
import { ResponsiveContainer as
|
|
13
|
-
import { Area as
|
|
14
|
-
import { XAxis as
|
|
15
|
-
import { YAxis as
|
|
16
|
-
import { AreaChart as
|
|
17
|
-
import { useMemo as
|
|
18
|
-
import { ArrowLeft as
|
|
19
|
-
import { useLocation as
|
|
20
|
-
import { Fragment as
|
|
21
|
-
import { Button as
|
|
12
|
+
import { Tooltip as ve } from "../../../node_modules/recharts/es6/component/Tooltip.js";
|
|
13
|
+
import { ResponsiveContainer as ye } from "../../../node_modules/recharts/es6/component/ResponsiveContainer.js";
|
|
14
|
+
import { Area as be } from "../../../node_modules/recharts/es6/cartesian/Area.js";
|
|
15
|
+
import { XAxis as xe } from "../../../node_modules/recharts/es6/cartesian/XAxis.js";
|
|
16
|
+
import { YAxis as Se } from "../../../node_modules/recharts/es6/cartesian/YAxis.js";
|
|
17
|
+
import { AreaChart as Ce } from "../../../node_modules/recharts/es6/chart/AreaChart.js";
|
|
18
|
+
import { useMemo as we, useState as c } from "react";
|
|
19
|
+
import { ArrowLeft as Te, BadgeCheck as Ee, Bath as De, Bed as Oe, Building as ke, Calculator as Ae, Calendar as je, Car as Me, CheckCircle as l, ChevronLeft as Ne, ChevronRight as Pe, Compass as Fe, DollarSign as Ie, Dumbbell as u, Flame as d, Heart as f, KeyRound as Le, MapPin as p, MessageSquare as Re, Navigation as ze, ParkingCircle as Be, Pencil as Ve, Share2 as He, Shield as m, Square as Ue, Trash2 as We, TreePine as h, TrendingUp as Ge, Utensils as g, Waves as _, Wifi as v, Wind as y } from "lucide-react";
|
|
20
|
+
import { useLocation as Ke, useNavigate as qe, useParams as Je } from "react-router-dom";
|
|
21
|
+
import { Fragment as b, jsx as x, jsxs as S } from "react/jsx-runtime";
|
|
22
|
+
import { Button as C, EmphasisPanel as Ye, NextSteps as Xe, PagePurpose as Ze, ResponsiveDialog as w, ResponsiveDialogContent as T, ResponsiveDialogDescription as E, ResponsiveDialogFooter as D, ResponsiveDialogHeader as O, ResponsiveDialogTitle as k } from "@burdenoff/fe-libs/ui";
|
|
22
23
|
//#region src/housingvista/pages/properties/PropertyDetailPage.tsx
|
|
23
|
-
var
|
|
24
|
+
var A = {
|
|
24
25
|
for_sale: "success",
|
|
25
26
|
for_rent: "info",
|
|
26
27
|
sold: "muted",
|
|
27
28
|
rented: "muted",
|
|
28
29
|
under_contract: "warning",
|
|
29
30
|
off_market: "error"
|
|
30
|
-
},
|
|
31
|
+
}, Qe = [
|
|
31
32
|
{
|
|
32
33
|
value: "for_sale",
|
|
33
34
|
label: "For Sale"
|
|
@@ -52,7 +53,7 @@ var j = {
|
|
|
52
53
|
value: "off_market",
|
|
53
54
|
label: "Off Market"
|
|
54
55
|
}
|
|
55
|
-
],
|
|
56
|
+
], $e = [
|
|
56
57
|
{
|
|
57
58
|
id: "details",
|
|
58
59
|
label: "Details"
|
|
@@ -65,10 +66,10 @@ var j = {
|
|
|
65
66
|
id: "location",
|
|
66
67
|
label: "Location"
|
|
67
68
|
}
|
|
68
|
-
],
|
|
69
|
+
], j = "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)]", M = [
|
|
69
70
|
{
|
|
70
71
|
match: /pool|swim/i,
|
|
71
|
-
icon:
|
|
72
|
+
icon: _
|
|
72
73
|
},
|
|
73
74
|
{
|
|
74
75
|
match: /gym|fitness/i,
|
|
@@ -76,23 +77,23 @@ var j = {
|
|
|
76
77
|
},
|
|
77
78
|
{
|
|
78
79
|
match: /park/i,
|
|
79
|
-
icon:
|
|
80
|
+
icon: Be
|
|
80
81
|
},
|
|
81
82
|
{
|
|
82
83
|
match: /garden|green|lawn|park/i,
|
|
83
|
-
icon:
|
|
84
|
+
icon: h
|
|
84
85
|
},
|
|
85
86
|
{
|
|
86
87
|
match: /security|guard|cctv|gated/i,
|
|
87
|
-
icon:
|
|
88
|
+
icon: m
|
|
88
89
|
},
|
|
89
90
|
{
|
|
90
91
|
match: /wifi|internet|broadband/i,
|
|
91
|
-
icon:
|
|
92
|
+
icon: v
|
|
92
93
|
},
|
|
93
94
|
{
|
|
94
95
|
match: /a\/?c|air.?condition|central air|hvac/i,
|
|
95
|
-
icon:
|
|
96
|
+
icon: y
|
|
96
97
|
},
|
|
97
98
|
{
|
|
98
99
|
match: /fire|chimney|heat/i,
|
|
@@ -100,110 +101,112 @@ var j = {
|
|
|
100
101
|
},
|
|
101
102
|
{
|
|
102
103
|
match: /kitchen|modular|dining/i,
|
|
103
|
-
icon:
|
|
104
|
+
icon: g
|
|
104
105
|
},
|
|
105
106
|
{
|
|
106
107
|
match: /car|garage/i,
|
|
107
|
-
icon:
|
|
108
|
+
icon: Me
|
|
108
109
|
}
|
|
109
|
-
],
|
|
110
|
-
let { id: l } =
|
|
110
|
+
], et = (e) => M.find((t) => t.match.test(e))?.icon ?? l, N = () => {
|
|
111
|
+
let { id: l } = Je(), u = qe(), d = Ke(), { emit: Be, emitResource: m } = ne();
|
|
112
|
+
re("housingvista.property.viewed", l);
|
|
113
|
+
let { data: h, loading: g } = ce(l), { data: _ } = se({ pagination: {
|
|
111
114
|
limit: 8,
|
|
112
115
|
offset: 0
|
|
113
|
-
} }), { data:
|
|
116
|
+
} }), { data: v } = fe(), { data: y } = ue({
|
|
114
117
|
filter: l ? { propertyId: l } : void 0,
|
|
115
118
|
pagination: {
|
|
116
119
|
limit: 1,
|
|
117
120
|
offset: 0
|
|
118
121
|
}
|
|
119
|
-
}), { saveShortlist:
|
|
120
|
-
if (
|
|
122
|
+
}), { saveShortlist: M, loading: N } = de(), { removeShortlist: tt, loading: P } = le(), { bookViewing: nt, loading: F } = ie(), { submitOffer: rt, loading: it } = pe(), { updateProperty: at, loading: ot } = he(), { deleteProperty: st, loading: ct } = oe(), { submitRentalApplication: lt, loading: ut } = me(), { createInvestment: dt, loading: ft } = ae(), pt = we(() => _.filter((e) => e.id !== l).slice(0, 3), [_, l]), I = we(() => v.some((e) => e.propertyId === l), [v, l]), [L, R] = c(0), [z, mt] = c("details"), [ht, B] = c(!1), [gt, V] = c(!1), [_t, H] = c(!1), [vt, U] = c(!1), [yt, W] = c(!1), [bt, xt] = c(!1), [G, St] = c(""), [K, Ct] = c(""), [wt, Tt] = c(""), [q, Et] = c(""), [J, Dt] = c(""), [Ot, kt] = c(""), [At, jt] = c(""), [Mt, Nt] = c("8"), [Y, Pt] = c(""), [Ft, It] = c("in_person"), [Lt, Rt] = c(""), [zt, Bt] = c(""), [Vt, Ht] = c(""), [Ut, Wt] = c(""), [Gt, Kt] = c(""), [qt, Jt] = c(""), [Yt, Xt] = c(""), [Zt, Qt] = c("for_sale"), [$t, en] = c("");
|
|
123
|
+
if (g) return /* @__PURE__ */ S("div", {
|
|
121
124
|
className: "space-y-6 p-6",
|
|
122
|
-
children: [/* @__PURE__ */
|
|
125
|
+
children: [/* @__PURE__ */ x(o, { className: "h-80" }), /* @__PURE__ */ x(o, { variant: "detail" })]
|
|
123
126
|
});
|
|
124
|
-
if (!
|
|
127
|
+
if (!h) return /* @__PURE__ */ x("div", {
|
|
125
128
|
className: "p-6",
|
|
126
|
-
children: /* @__PURE__ */
|
|
129
|
+
children: /* @__PURE__ */ x(a, {
|
|
127
130
|
illustration: "empty-search",
|
|
128
|
-
icon: /* @__PURE__ */
|
|
131
|
+
icon: /* @__PURE__ */ x(ke, { className: "h-12 w-12" }),
|
|
129
132
|
title: "Property Not Found",
|
|
130
133
|
description: "The property you're looking for doesn't exist or has been removed.",
|
|
131
|
-
action: /* @__PURE__ */
|
|
134
|
+
action: /* @__PURE__ */ S("button", {
|
|
132
135
|
onClick: () => u("../properties"),
|
|
133
136
|
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",
|
|
134
|
-
children: [/* @__PURE__ */
|
|
137
|
+
children: [/* @__PURE__ */ x(Te, { className: "h-4 w-4" }), "Back to Properties"]
|
|
135
138
|
})
|
|
136
139
|
})
|
|
137
140
|
});
|
|
138
|
-
let
|
|
141
|
+
let tn = [{
|
|
139
142
|
label: "Properties",
|
|
140
143
|
href: "../"
|
|
141
|
-
}, { label:
|
|
144
|
+
}, { label: h.title }], X = (e) => {
|
|
142
145
|
let t = n(e.amount, e.currency);
|
|
143
146
|
return e.type === "rent" && e.period ? `${t}/${e.period.replace("ly", "")}` : t;
|
|
144
|
-
},
|
|
147
|
+
}, nn = () => R((e) => e === h.images.length - 1 ? 0 : e + 1), rn = () => R((e) => e === 0 ? h.images.length - 1 : e - 1), an = () => {
|
|
145
148
|
navigator.share ? navigator.share({
|
|
146
|
-
title:
|
|
147
|
-
text:
|
|
149
|
+
title: h.title,
|
|
150
|
+
text: h.description,
|
|
148
151
|
url: window.location.href
|
|
149
152
|
}) : (navigator.clipboard.writeText(window.location.href), s.info("Link copied", "The property link is on your clipboard."));
|
|
150
|
-
},
|
|
153
|
+
}, on = async () => {
|
|
151
154
|
try {
|
|
152
|
-
I ? (await
|
|
155
|
+
I ? (await tt(h.id), s.success("Removed from shortlist")) : (await M(h.id), m("housingvista.shortlist.property_added", h.id), s.success("Saved to shortlist"));
|
|
153
156
|
} catch (e) {
|
|
154
157
|
s.error("Could not update shortlist", e.message);
|
|
155
158
|
}
|
|
156
|
-
},
|
|
159
|
+
}, sn = async (e) => {
|
|
157
160
|
if (e.preventDefault(), Y) try {
|
|
158
|
-
await
|
|
159
|
-
propertyId:
|
|
161
|
+
await nt({
|
|
162
|
+
propertyId: h.id,
|
|
160
163
|
scheduledAt: new Date(Y).toISOString(),
|
|
161
|
-
type:
|
|
162
|
-
attendeeName:
|
|
163
|
-
attendeeEmail:
|
|
164
|
-
notes:
|
|
165
|
-
}), s.success("Viewing requested", "The owner will confirm your slot shortly."), B(!1),
|
|
164
|
+
type: Ft,
|
|
165
|
+
attendeeName: Lt.trim() || void 0,
|
|
166
|
+
attendeeEmail: zt.trim() || void 0,
|
|
167
|
+
notes: Vt.trim() || void 0
|
|
168
|
+
}), m("housingvista.viewing.scheduled", h.id), s.success("Viewing requested", "The owner will confirm your slot shortly."), B(!1), Pt(""), Rt(""), Bt(""), Ht("");
|
|
166
169
|
} catch (e) {
|
|
167
170
|
s.error("Could not book viewing", e.message);
|
|
168
171
|
}
|
|
169
|
-
},
|
|
172
|
+
}, cn = async (e) => {
|
|
170
173
|
e.preventDefault();
|
|
171
|
-
let t = Number(
|
|
174
|
+
let t = Number(Ut);
|
|
172
175
|
if (!t || t <= 0) {
|
|
173
176
|
s.warning("Enter a valid offer amount");
|
|
174
177
|
return;
|
|
175
178
|
}
|
|
176
179
|
try {
|
|
177
|
-
await
|
|
178
|
-
propertyId:
|
|
180
|
+
await rt({
|
|
181
|
+
propertyId: h.id,
|
|
179
182
|
amount: t,
|
|
180
|
-
currency:
|
|
181
|
-
notes:
|
|
182
|
-
}), s.success("Offer submitted", `Your offer of ${n(t,
|
|
183
|
+
currency: h.price.currency,
|
|
184
|
+
notes: Gt.trim() || void 0
|
|
185
|
+
}), m("housingvista.offer.created", h.id), s.success("Offer submitted", `Your offer of ${n(t, h.price.currency)} was sent.`), V(!1), Wt(""), Kt("");
|
|
183
186
|
} catch (e) {
|
|
184
187
|
s.error("Could not submit offer", e.message);
|
|
185
188
|
}
|
|
186
|
-
},
|
|
187
|
-
|
|
188
|
-
},
|
|
189
|
+
}, ln = () => {
|
|
190
|
+
Jt(h.title), Xt(h.description), Qt(h.status), en(String(h.price.amount)), H(!0);
|
|
191
|
+
}, un = async (e) => {
|
|
189
192
|
e.preventDefault();
|
|
190
193
|
try {
|
|
191
|
-
await
|
|
192
|
-
title:
|
|
193
|
-
description:
|
|
194
|
-
status:
|
|
195
|
-
price: Number(
|
|
196
|
-
}), s.success("Property updated"), H(!1);
|
|
194
|
+
await at(h.id, {
|
|
195
|
+
title: qt.trim(),
|
|
196
|
+
description: Yt.trim(),
|
|
197
|
+
status: Zt,
|
|
198
|
+
price: Number($t) || h.price.amount
|
|
199
|
+
}), m("housingvista.property.updated", h.id), s.success("Property updated"), H(!1);
|
|
197
200
|
} catch (e) {
|
|
198
201
|
s.error("Could not update property", e.message);
|
|
199
202
|
}
|
|
200
|
-
},
|
|
203
|
+
}, dn = async () => {
|
|
201
204
|
try {
|
|
202
|
-
await
|
|
205
|
+
await st(h.id), m("housingvista.property.deleted", h.id), s.success("Property deleted"), u("../properties");
|
|
203
206
|
} catch (e) {
|
|
204
207
|
s.error("Could not delete property", e.message);
|
|
205
208
|
}
|
|
206
|
-
}, Z =
|
|
209
|
+
}, Z = y[0]?.id, fn = async (e) => {
|
|
207
210
|
if (e.preventDefault(), !Z) {
|
|
208
211
|
s.warning("No rental unit is available for this property yet");
|
|
209
212
|
return;
|
|
@@ -213,84 +216,84 @@ var j = {
|
|
|
213
216
|
return;
|
|
214
217
|
}
|
|
215
218
|
try {
|
|
216
|
-
await
|
|
219
|
+
await lt({
|
|
217
220
|
rentalUnitId: Z,
|
|
218
221
|
applicantName: G.trim(),
|
|
219
222
|
applicantEmail: K.trim(),
|
|
220
|
-
applicantPhone:
|
|
223
|
+
applicantPhone: wt.trim() || void 0,
|
|
221
224
|
monthlyIncome: q ? Number(q) : void 0,
|
|
222
225
|
moveInDate: J ? new Date(J).toISOString() : void 0
|
|
223
|
-
}), s.success("Application submitted", "The owner will review your rental application shortly."), W(!1),
|
|
226
|
+
}), s.success("Application submitted", "The owner will review your rental application shortly."), W(!1), St(""), Ct(""), Tt(""), Et(""), Dt("");
|
|
224
227
|
} catch (e) {
|
|
225
228
|
s.error("Could not submit application", e.message);
|
|
226
229
|
}
|
|
227
|
-
},
|
|
230
|
+
}, pn = async () => {
|
|
228
231
|
try {
|
|
229
|
-
await
|
|
230
|
-
propertyId:
|
|
231
|
-
title: `${
|
|
232
|
+
await dt({
|
|
233
|
+
propertyId: h.id,
|
|
234
|
+
title: `${h.title} — investment`,
|
|
232
235
|
status: "active",
|
|
233
236
|
investmentType: "full_ownership",
|
|
234
237
|
riskLevel: "medium",
|
|
235
|
-
totalValue:
|
|
238
|
+
totalValue: h.price.amount,
|
|
236
239
|
startDate: (/* @__PURE__ */ new Date()).toISOString()
|
|
237
|
-
}), s.success("Tracking investment", `${
|
|
240
|
+
}), s.success("Tracking investment", `${h.title} was added to your portfolio.`);
|
|
238
241
|
} catch (e) {
|
|
239
242
|
s.error("Could not track investment", e.message);
|
|
240
243
|
}
|
|
241
|
-
}, Q =
|
|
244
|
+
}, Q = h.price.amount, mn = Number(Ot) || Math.round(Q * .005), hn = Number(At) || Math.round(Q * .0015), gn = mn * 12, _n = Q > 0 ? gn / Q * 100 : 0, vn = gn - hn * 12, yn = Q > 0 ? vn / Q * 100 : 0, bn = Math.max(0, Number(Mt) || 0) / 100, $ = Array.from({ length: 6 }, (e, t) => ({
|
|
242
245
|
label: t === 0 ? "Now" : `Yr ${t}`,
|
|
243
|
-
value: Math.round(Q * (1 +
|
|
244
|
-
})),
|
|
245
|
-
return /* @__PURE__ */
|
|
246
|
+
value: Math.round(Q * (1 + bn) ** +t)
|
|
247
|
+
})), xn = $[$.length - 1].value, Sn = xn - Q + vn * 5, Cn = Q > 0 ? Sn / Q * 100 : 0;
|
|
248
|
+
return /* @__PURE__ */ S("div", {
|
|
246
249
|
className: "space-y-6 p-6",
|
|
247
250
|
children: [
|
|
248
|
-
/* @__PURE__ */
|
|
249
|
-
/* @__PURE__ */
|
|
251
|
+
/* @__PURE__ */ x(te, { items: tn }),
|
|
252
|
+
/* @__PURE__ */ S("div", {
|
|
250
253
|
className: "flex flex-wrap items-center gap-3",
|
|
251
254
|
children: [
|
|
252
|
-
/* @__PURE__ */
|
|
255
|
+
/* @__PURE__ */ S("button", {
|
|
253
256
|
onClick: () => u("../properties"),
|
|
254
257
|
className: "inline-flex items-center gap-2 rounded-md border border-border-subtle px-3 py-1.5 text-sm text-text-primary transition-colors hover:bg-bg-sunken",
|
|
255
|
-
children: [/* @__PURE__ */
|
|
258
|
+
children: [/* @__PURE__ */ x(Te, { className: "h-4 w-4" }), "Back"]
|
|
256
259
|
}),
|
|
257
|
-
/* @__PURE__ */
|
|
258
|
-
label:
|
|
259
|
-
variant:
|
|
260
|
+
/* @__PURE__ */ x(i, {
|
|
261
|
+
label: h.status.replace("_", " "),
|
|
262
|
+
variant: A[h.status] ?? "default",
|
|
260
263
|
dot: !0
|
|
261
264
|
}),
|
|
262
|
-
|
|
265
|
+
h.verificationStatus === "verified" && /* @__PURE__ */ x(i, {
|
|
263
266
|
label: "Verified",
|
|
264
267
|
variant: "success",
|
|
265
268
|
dot: !0
|
|
266
269
|
}),
|
|
267
|
-
|
|
270
|
+
h.price.negotiable && /* @__PURE__ */ x(i, {
|
|
268
271
|
label: "Negotiable",
|
|
269
272
|
variant: "info"
|
|
270
273
|
}),
|
|
271
|
-
/* @__PURE__ */
|
|
274
|
+
/* @__PURE__ */ S("div", {
|
|
272
275
|
className: "ml-auto flex items-center gap-2",
|
|
273
|
-
children: [/* @__PURE__ */ C
|
|
276
|
+
children: [/* @__PURE__ */ S(C, {
|
|
274
277
|
type: "button",
|
|
275
278
|
variant: "outline",
|
|
276
279
|
size: "sm",
|
|
277
|
-
onClick:
|
|
278
|
-
children: [/* @__PURE__ */
|
|
279
|
-
}), /* @__PURE__ */ C
|
|
280
|
+
onClick: ln,
|
|
281
|
+
children: [/* @__PURE__ */ x(Ve, { className: "mr-1.5 h-4 w-4" }), "Edit"]
|
|
282
|
+
}), /* @__PURE__ */ S(C, {
|
|
280
283
|
type: "button",
|
|
281
284
|
variant: "outline",
|
|
282
285
|
size: "sm",
|
|
283
286
|
onClick: () => U(!0),
|
|
284
|
-
children: [/* @__PURE__ */
|
|
287
|
+
children: [/* @__PURE__ */ x(We, { className: "mr-1.5 h-4 w-4" }), "Delete"]
|
|
285
288
|
})]
|
|
286
289
|
})
|
|
287
290
|
]
|
|
288
291
|
}),
|
|
289
|
-
/* @__PURE__ */
|
|
292
|
+
/* @__PURE__ */ x(Ze, {
|
|
290
293
|
className: "max-w-3xl",
|
|
291
294
|
children: "Everything you need to evaluate this property in one place — photos, specifications, amenities, and location. Use it to shortlist the property, schedule a viewing, or make an offer."
|
|
292
295
|
}),
|
|
293
|
-
/* @__PURE__ */
|
|
296
|
+
/* @__PURE__ */ x(Xe, {
|
|
294
297
|
storageKey: "housingvista-property-detail",
|
|
295
298
|
steps: [
|
|
296
299
|
{
|
|
@@ -309,76 +312,76 @@ var j = {
|
|
|
309
312
|
id: "location",
|
|
310
313
|
label: "Explore the location",
|
|
311
314
|
description: "See the neighborhood, nearby landmarks, and map.",
|
|
312
|
-
onClick: () =>
|
|
315
|
+
onClick: () => mt("location")
|
|
313
316
|
}
|
|
314
317
|
]
|
|
315
318
|
}),
|
|
316
|
-
/* @__PURE__ */
|
|
319
|
+
/* @__PURE__ */ S("div", {
|
|
317
320
|
className: "space-y-3",
|
|
318
|
-
children: [/* @__PURE__ */
|
|
321
|
+
children: [/* @__PURE__ */ S("div", {
|
|
319
322
|
className: "relative overflow-hidden rounded-xl border border-border-subtle bg-bg-sunken",
|
|
320
323
|
children: [
|
|
321
|
-
|
|
322
|
-
src:
|
|
323
|
-
alt:
|
|
324
|
+
h.images.length > 0 ? /* @__PURE__ */ x("img", {
|
|
325
|
+
src: h.images[L]?.url,
|
|
326
|
+
alt: h.images[L]?.title ?? h.title,
|
|
324
327
|
className: "h-80 w-full object-cover sm:h-[26rem]"
|
|
325
|
-
}) : /* @__PURE__ */
|
|
328
|
+
}) : /* @__PURE__ */ S("div", {
|
|
326
329
|
className: "flex h-80 w-full flex-col items-center justify-center gap-3 bg-gradient-to-br from-[var(--color-action-primary-bg)]/12 via-bg-sunken to-[var(--color-accent-blue)]/12 text-text-secondary/70 sm:h-[26rem]",
|
|
327
|
-
children: [/* @__PURE__ */
|
|
330
|
+
children: [/* @__PURE__ */ x(ke, { className: "h-12 w-12" }), /* @__PURE__ */ x("span", {
|
|
328
331
|
className: "text-sm font-medium tracking-wide",
|
|
329
332
|
children: "No photos yet"
|
|
330
333
|
})]
|
|
331
334
|
}),
|
|
332
|
-
|
|
333
|
-
onClick:
|
|
335
|
+
h.images.length > 1 && /* @__PURE__ */ S(b, { children: [/* @__PURE__ */ x("button", {
|
|
336
|
+
onClick: rn,
|
|
334
337
|
"aria-label": "Previous photo",
|
|
335
338
|
className: "absolute left-4 top-1/2 -translate-y-1/2 rounded-full bg-bg-overlay/70 p-2 text-text-inverse transition-colors hover:bg-bg-overlay",
|
|
336
|
-
children: /* @__PURE__ */
|
|
337
|
-
}), /* @__PURE__ */
|
|
338
|
-
onClick:
|
|
339
|
+
children: /* @__PURE__ */ x(Ne, { className: "h-5 w-5" })
|
|
340
|
+
}), /* @__PURE__ */ x("button", {
|
|
341
|
+
onClick: nn,
|
|
339
342
|
"aria-label": "Next photo",
|
|
340
343
|
className: "absolute right-4 top-1/2 -translate-y-1/2 rounded-full bg-bg-overlay/70 p-2 text-text-inverse transition-colors hover:bg-bg-overlay",
|
|
341
|
-
children: /* @__PURE__ */
|
|
344
|
+
children: /* @__PURE__ */ x(Pe, { className: "h-5 w-5" })
|
|
342
345
|
})] }),
|
|
343
|
-
|
|
346
|
+
h.verificationStatus === "verified" && /* @__PURE__ */ S("div", {
|
|
344
347
|
className: "absolute left-4 top-4 inline-flex items-center gap-1.5 rounded-full bg-status-success-bg-subtle px-3 py-1 text-xs font-semibold text-status-success-text shadow-elevation-1 backdrop-blur-sm",
|
|
345
|
-
children: [/* @__PURE__ */
|
|
348
|
+
children: [/* @__PURE__ */ x(Ee, { className: "h-4 w-4" }), "Verified listing"]
|
|
346
349
|
}),
|
|
347
|
-
/* @__PURE__ */
|
|
350
|
+
/* @__PURE__ */ S("div", {
|
|
348
351
|
className: "absolute right-4 top-4 flex gap-2",
|
|
349
|
-
children: [/* @__PURE__ */
|
|
350
|
-
onClick:
|
|
351
|
-
disabled:
|
|
352
|
+
children: [/* @__PURE__ */ x("button", {
|
|
353
|
+
onClick: on,
|
|
354
|
+
disabled: N || P,
|
|
352
355
|
"aria-label": I ? "Remove from shortlist" : "Save to shortlist",
|
|
353
356
|
className: "rounded-full bg-bg-surface/85 p-2 shadow-elevation-1 backdrop-blur-sm transition-colors hover:bg-bg-surface disabled:opacity-60",
|
|
354
|
-
children: /* @__PURE__ */
|
|
355
|
-
}), /* @__PURE__ */
|
|
356
|
-
onClick:
|
|
357
|
+
children: /* @__PURE__ */ x(f, { className: e("h-5 w-5", I ? "fill-status-error-text text-status-error-text" : "text-text-secondary") })
|
|
358
|
+
}), /* @__PURE__ */ x("button", {
|
|
359
|
+
onClick: an,
|
|
357
360
|
"aria-label": "Share this listing",
|
|
358
361
|
className: "rounded-full bg-bg-surface/85 p-2 shadow-elevation-1 backdrop-blur-sm transition-colors hover:bg-bg-surface",
|
|
359
|
-
children: /* @__PURE__ */
|
|
362
|
+
children: /* @__PURE__ */ x(He, { className: "h-5 w-5 text-text-secondary" })
|
|
360
363
|
})]
|
|
361
364
|
}),
|
|
362
|
-
|
|
365
|
+
h.images.length > 0 && /* @__PURE__ */ x("div", {
|
|
363
366
|
className: "absolute bottom-4 right-4",
|
|
364
|
-
children: /* @__PURE__ */
|
|
367
|
+
children: /* @__PURE__ */ S("span", {
|
|
365
368
|
className: "rounded-md bg-bg-overlay/70 px-2 py-1 text-xs font-medium text-text-inverse",
|
|
366
369
|
children: [
|
|
367
370
|
L + 1,
|
|
368
371
|
" / ",
|
|
369
|
-
|
|
372
|
+
h.images.length
|
|
370
373
|
]
|
|
371
374
|
})
|
|
372
375
|
})
|
|
373
376
|
]
|
|
374
|
-
}),
|
|
377
|
+
}), h.images.length > 1 && /* @__PURE__ */ x("div", {
|
|
375
378
|
className: "flex gap-3 overflow-x-auto pb-1",
|
|
376
|
-
children:
|
|
379
|
+
children: h.images.map((t, n) => /* @__PURE__ */ x("button", {
|
|
377
380
|
onClick: () => R(n),
|
|
378
381
|
"aria-label": `View photo ${n + 1}`,
|
|
379
382
|
"aria-current": n === L,
|
|
380
383
|
className: e("h-16 w-24 shrink-0 overflow-hidden rounded-lg border-2 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]", n === L ? "border-action-primary-border" : "border-transparent opacity-70 hover:opacity-100"),
|
|
381
|
-
children: /* @__PURE__ */
|
|
384
|
+
children: /* @__PURE__ */ x("img", {
|
|
382
385
|
src: t.url,
|
|
383
386
|
alt: t.title ?? `Photo ${n + 1}`,
|
|
384
387
|
className: "h-full w-full object-cover"
|
|
@@ -386,75 +389,75 @@ var j = {
|
|
|
386
389
|
}, t.id))
|
|
387
390
|
})]
|
|
388
391
|
}),
|
|
389
|
-
/* @__PURE__ */
|
|
392
|
+
/* @__PURE__ */ S("div", {
|
|
390
393
|
className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
|
|
391
|
-
children: [/* @__PURE__ */
|
|
394
|
+
children: [/* @__PURE__ */ S("div", {
|
|
392
395
|
className: "space-y-6 lg:col-span-2",
|
|
393
|
-
children: [/* @__PURE__ */
|
|
394
|
-
/* @__PURE__ */
|
|
396
|
+
children: [/* @__PURE__ */ S(Ye, { children: [
|
|
397
|
+
/* @__PURE__ */ S("div", {
|
|
395
398
|
className: "flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between",
|
|
396
|
-
children: [/* @__PURE__ */
|
|
399
|
+
children: [/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("h1", {
|
|
397
400
|
className: "text-2xl font-bold text-text-primary",
|
|
398
|
-
children:
|
|
399
|
-
}), /* @__PURE__ */
|
|
401
|
+
children: h.title
|
|
402
|
+
}), /* @__PURE__ */ S("div", {
|
|
400
403
|
className: "mt-2 flex items-center text-text-secondary",
|
|
401
|
-
children: [/* @__PURE__ */
|
|
404
|
+
children: [/* @__PURE__ */ x(p, { className: "mr-1.5 h-4 w-4 shrink-0" }), /* @__PURE__ */ x("span", {
|
|
402
405
|
className: "text-sm",
|
|
403
406
|
children: [
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
+
h.location.address,
|
|
408
|
+
h.location.neighborhood,
|
|
409
|
+
h.location.city
|
|
407
410
|
].filter(Boolean).join(", ")
|
|
408
411
|
})]
|
|
409
|
-
})] }), /* @__PURE__ */
|
|
412
|
+
})] }), /* @__PURE__ */ S("div", {
|
|
410
413
|
className: "text-right",
|
|
411
|
-
children: [/* @__PURE__ */
|
|
414
|
+
children: [/* @__PURE__ */ x("div", {
|
|
412
415
|
className: "text-2xl font-bold text-text-primary",
|
|
413
|
-
children: X(
|
|
414
|
-
}),
|
|
416
|
+
children: X(h.price)
|
|
417
|
+
}), h.price.pricePerSqft && /* @__PURE__ */ S("div", {
|
|
415
418
|
className: "text-sm text-text-secondary",
|
|
416
|
-
children: [n(
|
|
419
|
+
children: [n(h.price.pricePerSqft), "/sqft"]
|
|
417
420
|
})]
|
|
418
421
|
})]
|
|
419
422
|
}),
|
|
420
|
-
/* @__PURE__ */
|
|
423
|
+
/* @__PURE__ */ x("div", {
|
|
421
424
|
className: "mt-6 grid grid-cols-2 gap-3 border-t border-border-subtle pt-6 sm:grid-cols-4",
|
|
422
425
|
children: [
|
|
423
|
-
|
|
424
|
-
icon:
|
|
425
|
-
value: String(
|
|
426
|
-
label:
|
|
426
|
+
h.specifications.bedrooms != null && {
|
|
427
|
+
icon: Oe,
|
|
428
|
+
value: String(h.specifications.bedrooms),
|
|
429
|
+
label: h.specifications.bedrooms === 1 ? "Bedroom" : "Bedrooms"
|
|
427
430
|
},
|
|
428
|
-
|
|
429
|
-
icon:
|
|
430
|
-
value: String(
|
|
431
|
-
label:
|
|
431
|
+
h.specifications.bathrooms != null && {
|
|
432
|
+
icon: De,
|
|
433
|
+
value: String(h.specifications.bathrooms),
|
|
434
|
+
label: h.specifications.bathrooms === 1 ? "Bathroom" : "Bathrooms"
|
|
432
435
|
},
|
|
433
436
|
{
|
|
434
|
-
icon:
|
|
435
|
-
value: r(
|
|
437
|
+
icon: Ue,
|
|
438
|
+
value: r(h.specifications.totalArea),
|
|
436
439
|
label: "sq ft"
|
|
437
440
|
},
|
|
438
|
-
|
|
439
|
-
icon:
|
|
440
|
-
value: String(
|
|
441
|
+
h.specifications.parking != null && h.specifications.parking > 0 ? {
|
|
442
|
+
icon: Me,
|
|
443
|
+
value: String(h.specifications.parking),
|
|
441
444
|
label: "Parking"
|
|
442
|
-
} :
|
|
443
|
-
icon:
|
|
444
|
-
value:
|
|
445
|
+
} : h.specifications.facing ? {
|
|
446
|
+
icon: Fe,
|
|
447
|
+
value: h.specifications.facing,
|
|
445
448
|
label: "Facing"
|
|
446
449
|
} : !1
|
|
447
450
|
].filter((e) => !!e).map((e) => {
|
|
448
451
|
let t = e.icon;
|
|
449
|
-
return /* @__PURE__ */
|
|
452
|
+
return /* @__PURE__ */ S("div", {
|
|
450
453
|
className: "flex flex-col items-center gap-1 rounded-lg border border-border-subtle bg-bg-sunken/40 p-3 text-center",
|
|
451
454
|
children: [
|
|
452
|
-
/* @__PURE__ */
|
|
453
|
-
/* @__PURE__ */
|
|
455
|
+
/* @__PURE__ */ x(t, { className: "h-5 w-5 text-text-secondary" }),
|
|
456
|
+
/* @__PURE__ */ x("span", {
|
|
454
457
|
className: "text-base font-semibold text-text-primary",
|
|
455
458
|
children: e.value
|
|
456
459
|
}),
|
|
457
|
-
/* @__PURE__ */
|
|
460
|
+
/* @__PURE__ */ x("span", {
|
|
458
461
|
className: "text-xs text-text-secondary",
|
|
459
462
|
children: e.label
|
|
460
463
|
})
|
|
@@ -462,255 +465,255 @@ var j = {
|
|
|
462
465
|
}, e.label);
|
|
463
466
|
})
|
|
464
467
|
}),
|
|
465
|
-
|
|
468
|
+
h.description && /* @__PURE__ */ S("div", {
|
|
466
469
|
className: "mt-6 border-t border-border-subtle pt-6",
|
|
467
|
-
children: [/* @__PURE__ */
|
|
470
|
+
children: [/* @__PURE__ */ x("h3", {
|
|
468
471
|
className: "mb-3 text-base font-semibold text-text-primary",
|
|
469
472
|
children: "Description"
|
|
470
|
-
}), /* @__PURE__ */
|
|
473
|
+
}), /* @__PURE__ */ x("p", {
|
|
471
474
|
className: "text-sm leading-relaxed text-text-secondary",
|
|
472
|
-
children:
|
|
475
|
+
children: h.description
|
|
473
476
|
})]
|
|
474
477
|
})
|
|
475
|
-
] }), /* @__PURE__ */
|
|
478
|
+
] }), /* @__PURE__ */ S("div", {
|
|
476
479
|
className: "rounded-lg border border-border-subtle bg-bg-surface",
|
|
477
|
-
children: [/* @__PURE__ */
|
|
480
|
+
children: [/* @__PURE__ */ x("div", {
|
|
478
481
|
className: "border-b border-border-subtle",
|
|
479
|
-
children: /* @__PURE__ */
|
|
482
|
+
children: /* @__PURE__ */ x("nav", {
|
|
480
483
|
className: "flex space-x-6 overflow-x-auto px-6",
|
|
481
|
-
children:
|
|
482
|
-
onClick: () =>
|
|
484
|
+
children: $e.map((t) => /* @__PURE__ */ x("button", {
|
|
485
|
+
onClick: () => mt(t.id),
|
|
483
486
|
className: e("whitespace-nowrap border-b-2 py-3 text-sm font-medium transition-colors", z === t.id ? "border-action-primary-border text-text-primary" : "border-transparent text-text-secondary hover:text-text-primary"),
|
|
484
487
|
children: t.label
|
|
485
488
|
}, t.id))
|
|
486
489
|
})
|
|
487
|
-
}), /* @__PURE__ */
|
|
490
|
+
}), /* @__PURE__ */ S("div", {
|
|
488
491
|
className: "p-6",
|
|
489
492
|
children: [
|
|
490
|
-
z === "details" && /* @__PURE__ */
|
|
493
|
+
z === "details" && /* @__PURE__ */ S("div", {
|
|
491
494
|
className: "grid grid-cols-1 gap-6 sm:grid-cols-2",
|
|
492
|
-
children: [/* @__PURE__ */
|
|
495
|
+
children: [/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("h4", {
|
|
493
496
|
className: "mb-3 text-sm font-semibold text-text-primary",
|
|
494
497
|
children: "Property Information"
|
|
495
|
-
}), /* @__PURE__ */
|
|
498
|
+
}), /* @__PURE__ */ S("dl", {
|
|
496
499
|
className: "space-y-2 text-sm",
|
|
497
500
|
children: [
|
|
498
|
-
/* @__PURE__ */
|
|
501
|
+
/* @__PURE__ */ S("div", {
|
|
499
502
|
className: "flex justify-between",
|
|
500
|
-
children: [/* @__PURE__ */
|
|
503
|
+
children: [/* @__PURE__ */ x("dt", {
|
|
501
504
|
className: "text-text-secondary",
|
|
502
505
|
children: "Property Type"
|
|
503
|
-
}), /* @__PURE__ */
|
|
506
|
+
}), /* @__PURE__ */ x("dd", {
|
|
504
507
|
className: "font-medium capitalize text-text-primary",
|
|
505
|
-
children:
|
|
508
|
+
children: h.type
|
|
506
509
|
})]
|
|
507
510
|
}),
|
|
508
|
-
/* @__PURE__ */
|
|
511
|
+
/* @__PURE__ */ S("div", {
|
|
509
512
|
className: "flex justify-between",
|
|
510
|
-
children: [/* @__PURE__ */
|
|
513
|
+
children: [/* @__PURE__ */ x("dt", {
|
|
511
514
|
className: "text-text-secondary",
|
|
512
515
|
children: "Category"
|
|
513
|
-
}), /* @__PURE__ */
|
|
516
|
+
}), /* @__PURE__ */ x("dd", {
|
|
514
517
|
className: "font-medium capitalize text-text-primary",
|
|
515
|
-
children:
|
|
518
|
+
children: h.category
|
|
516
519
|
})]
|
|
517
520
|
}),
|
|
518
|
-
|
|
521
|
+
h.specifications.ageOfProperty != null && /* @__PURE__ */ S("div", {
|
|
519
522
|
className: "flex justify-between",
|
|
520
|
-
children: [/* @__PURE__ */
|
|
523
|
+
children: [/* @__PURE__ */ x("dt", {
|
|
521
524
|
className: "text-text-secondary",
|
|
522
525
|
children: "Age of Property"
|
|
523
|
-
}), /* @__PURE__ */
|
|
526
|
+
}), /* @__PURE__ */ S("dd", {
|
|
524
527
|
className: "font-medium text-text-primary",
|
|
525
|
-
children: [
|
|
528
|
+
children: [h.specifications.ageOfProperty, " years"]
|
|
526
529
|
})]
|
|
527
530
|
}),
|
|
528
|
-
/* @__PURE__ */
|
|
531
|
+
/* @__PURE__ */ S("div", {
|
|
529
532
|
className: "flex justify-between",
|
|
530
|
-
children: [/* @__PURE__ */
|
|
533
|
+
children: [/* @__PURE__ */ x("dt", {
|
|
531
534
|
className: "text-text-secondary",
|
|
532
535
|
children: "Furnishing"
|
|
533
|
-
}), /* @__PURE__ */
|
|
536
|
+
}), /* @__PURE__ */ x("dd", {
|
|
534
537
|
className: "font-medium capitalize text-text-primary",
|
|
535
|
-
children:
|
|
538
|
+
children: h.specifications.furnishingStatus?.replace("_", " ")
|
|
536
539
|
})]
|
|
537
540
|
}),
|
|
538
|
-
|
|
541
|
+
h.specifications.facing && /* @__PURE__ */ S("div", {
|
|
539
542
|
className: "flex justify-between",
|
|
540
|
-
children: [/* @__PURE__ */
|
|
543
|
+
children: [/* @__PURE__ */ x("dt", {
|
|
541
544
|
className: "text-text-secondary",
|
|
542
545
|
children: "Facing"
|
|
543
|
-
}), /* @__PURE__ */
|
|
546
|
+
}), /* @__PURE__ */ x("dd", {
|
|
544
547
|
className: "font-medium text-text-primary",
|
|
545
|
-
children:
|
|
548
|
+
children: h.specifications.facing
|
|
546
549
|
})]
|
|
547
550
|
}),
|
|
548
|
-
|
|
551
|
+
h.specifications.floors != null && /* @__PURE__ */ S("div", {
|
|
549
552
|
className: "flex justify-between",
|
|
550
|
-
children: [/* @__PURE__ */
|
|
553
|
+
children: [/* @__PURE__ */ x("dt", {
|
|
551
554
|
className: "text-text-secondary",
|
|
552
555
|
children: "Floor"
|
|
553
|
-
}), /* @__PURE__ */
|
|
556
|
+
}), /* @__PURE__ */ S("dd", {
|
|
554
557
|
className: "font-medium text-text-primary",
|
|
555
558
|
children: [
|
|
556
|
-
|
|
559
|
+
h.specifications.floors,
|
|
557
560
|
" of ",
|
|
558
|
-
|
|
561
|
+
h.specifications.totalFloors
|
|
559
562
|
]
|
|
560
563
|
})]
|
|
561
564
|
})
|
|
562
565
|
]
|
|
563
|
-
})] }), /* @__PURE__ */
|
|
566
|
+
})] }), /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("h4", {
|
|
564
567
|
className: "mb-3 text-sm font-semibold text-text-primary",
|
|
565
568
|
children: "Area Details"
|
|
566
|
-
}), /* @__PURE__ */
|
|
569
|
+
}), /* @__PURE__ */ S("dl", {
|
|
567
570
|
className: "space-y-2 text-sm",
|
|
568
571
|
children: [
|
|
569
|
-
/* @__PURE__ */
|
|
572
|
+
/* @__PURE__ */ S("div", {
|
|
570
573
|
className: "flex justify-between",
|
|
571
|
-
children: [/* @__PURE__ */
|
|
574
|
+
children: [/* @__PURE__ */ x("dt", {
|
|
572
575
|
className: "text-text-secondary",
|
|
573
576
|
children: "Total Area"
|
|
574
|
-
}), /* @__PURE__ */
|
|
577
|
+
}), /* @__PURE__ */ S("dd", {
|
|
575
578
|
className: "font-medium text-text-primary",
|
|
576
|
-
children: [r(
|
|
579
|
+
children: [r(h.specifications.totalArea), " sqft"]
|
|
577
580
|
})]
|
|
578
581
|
}),
|
|
579
|
-
|
|
582
|
+
h.specifications.carpetArea && /* @__PURE__ */ S("div", {
|
|
580
583
|
className: "flex justify-between",
|
|
581
|
-
children: [/* @__PURE__ */
|
|
584
|
+
children: [/* @__PURE__ */ x("dt", {
|
|
582
585
|
className: "text-text-secondary",
|
|
583
586
|
children: "Carpet Area"
|
|
584
|
-
}), /* @__PURE__ */
|
|
587
|
+
}), /* @__PURE__ */ S("dd", {
|
|
585
588
|
className: "font-medium text-text-primary",
|
|
586
|
-
children: [r(
|
|
589
|
+
children: [r(h.specifications.carpetArea), " sqft"]
|
|
587
590
|
})]
|
|
588
591
|
}),
|
|
589
|
-
|
|
592
|
+
h.specifications.builtUpArea && /* @__PURE__ */ S("div", {
|
|
590
593
|
className: "flex justify-between",
|
|
591
|
-
children: [/* @__PURE__ */
|
|
594
|
+
children: [/* @__PURE__ */ x("dt", {
|
|
592
595
|
className: "text-text-secondary",
|
|
593
596
|
children: "Built-up Area"
|
|
594
|
-
}), /* @__PURE__ */
|
|
597
|
+
}), /* @__PURE__ */ S("dd", {
|
|
595
598
|
className: "font-medium text-text-primary",
|
|
596
|
-
children: [r(
|
|
599
|
+
children: [r(h.specifications.builtUpArea), " sqft"]
|
|
597
600
|
})]
|
|
598
601
|
}),
|
|
599
|
-
|
|
602
|
+
h.price.pricePerSqft && /* @__PURE__ */ S("div", {
|
|
600
603
|
className: "flex justify-between",
|
|
601
|
-
children: [/* @__PURE__ */
|
|
604
|
+
children: [/* @__PURE__ */ x("dt", {
|
|
602
605
|
className: "text-text-secondary",
|
|
603
606
|
children: "Price per sqft"
|
|
604
|
-
}), /* @__PURE__ */
|
|
607
|
+
}), /* @__PURE__ */ x("dd", {
|
|
605
608
|
className: "font-medium text-text-primary",
|
|
606
|
-
children: n(
|
|
609
|
+
children: n(h.price.pricePerSqft)
|
|
607
610
|
})]
|
|
608
611
|
})
|
|
609
612
|
]
|
|
610
613
|
})] })]
|
|
611
614
|
}),
|
|
612
|
-
z === "amenities" && /* @__PURE__ */
|
|
615
|
+
z === "amenities" && /* @__PURE__ */ x("div", { children: h.amenities.length > 0 ? /* @__PURE__ */ x("div", {
|
|
613
616
|
className: "grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-4",
|
|
614
|
-
children:
|
|
617
|
+
children: h.amenities.map((e) => /* @__PURE__ */ S("div", {
|
|
615
618
|
className: "flex flex-col items-center gap-2 rounded-lg border border-border-subtle bg-bg-sunken/40 p-4 text-center",
|
|
616
|
-
children: [/* @__PURE__ */
|
|
619
|
+
children: [/* @__PURE__ */ x("span", {
|
|
617
620
|
className: "flex h-10 w-10 items-center justify-center rounded-full bg-status-success-bg-subtle text-status-success-text",
|
|
618
|
-
children: /* @__PURE__ */
|
|
619
|
-
}), /* @__PURE__ */
|
|
621
|
+
children: /* @__PURE__ */ x(et(e.name), { className: "h-5 w-5" })
|
|
622
|
+
}), /* @__PURE__ */ x("span", {
|
|
620
623
|
className: "text-sm font-medium text-text-primary",
|
|
621
624
|
children: e.name
|
|
622
625
|
})]
|
|
623
626
|
}, e.id))
|
|
624
|
-
}) : /* @__PURE__ */
|
|
627
|
+
}) : /* @__PURE__ */ x(a, {
|
|
625
628
|
illustration: "empty-generic",
|
|
626
629
|
title: "No amenities listed",
|
|
627
630
|
description: "This property has no amenities recorded yet.",
|
|
628
631
|
className: "border-0 bg-transparent p-6"
|
|
629
632
|
}) }),
|
|
630
|
-
z === "location" && /* @__PURE__ */
|
|
633
|
+
z === "location" && /* @__PURE__ */ S("div", {
|
|
631
634
|
className: "space-y-4",
|
|
632
635
|
children: [
|
|
633
|
-
/* @__PURE__ */
|
|
636
|
+
/* @__PURE__ */ S("div", {
|
|
634
637
|
className: "relative h-56 overflow-hidden rounded-xl border border-border-subtle bg-bg-sunken",
|
|
635
638
|
children: [
|
|
636
|
-
/* @__PURE__ */
|
|
639
|
+
/* @__PURE__ */ x("div", {
|
|
637
640
|
className: "absolute inset-0 opacity-60",
|
|
638
641
|
style: {
|
|
639
642
|
backgroundImage: "linear-gradient(var(--color-border-seam, rgba(120,120,120,.18)) 1px, transparent 1px), linear-gradient(90deg, var(--color-border-seam, rgba(120,120,120,.18)) 1px, transparent 1px)",
|
|
640
643
|
backgroundSize: "32px 32px"
|
|
641
644
|
}
|
|
642
645
|
}),
|
|
643
|
-
/* @__PURE__ */
|
|
646
|
+
/* @__PURE__ */ S("div", {
|
|
644
647
|
className: "absolute left-1/2 top-1/2 flex -translate-x-1/2 -translate-y-1/2 flex-col items-center gap-1 text-center",
|
|
645
648
|
children: [
|
|
646
|
-
/* @__PURE__ */
|
|
649
|
+
/* @__PURE__ */ x("span", {
|
|
647
650
|
className: "flex h-11 w-11 items-center justify-center rounded-full bg-action-primary-bg text-action-primary-text shadow-pop",
|
|
648
|
-
children: /* @__PURE__ */
|
|
651
|
+
children: /* @__PURE__ */ x(p, { className: "h-5 w-5" })
|
|
649
652
|
}),
|
|
650
|
-
/* @__PURE__ */
|
|
653
|
+
/* @__PURE__ */ x("span", {
|
|
651
654
|
className: "mt-1 rounded-md bg-bg-surface/90 px-2 py-0.5 text-sm font-semibold text-text-primary shadow-elevation-1 backdrop-blur-sm",
|
|
652
|
-
children:
|
|
655
|
+
children: h.location.neighborhood || h.location.city
|
|
653
656
|
}),
|
|
654
|
-
/* @__PURE__ */
|
|
657
|
+
/* @__PURE__ */ x("span", {
|
|
655
658
|
className: "text-xs text-text-secondary",
|
|
656
|
-
children: [
|
|
659
|
+
children: [h.location.city, h.location.state].filter(Boolean).join(", ")
|
|
657
660
|
})
|
|
658
661
|
]
|
|
659
662
|
}),
|
|
660
|
-
|
|
661
|
-
href: `https://www.google.com/maps/search/?api=1&query=${
|
|
663
|
+
h.location.coordinates?.latitude != null && h.location.coordinates?.longitude != null && /* @__PURE__ */ S("a", {
|
|
664
|
+
href: `https://www.google.com/maps/search/?api=1&query=${h.location.coordinates.latitude},${h.location.coordinates.longitude}`,
|
|
662
665
|
target: "_blank",
|
|
663
666
|
rel: "noreferrer",
|
|
664
667
|
className: "absolute bottom-3 right-3 inline-flex items-center gap-1.5 rounded-md bg-bg-surface/90 px-2.5 py-1.5 text-xs font-medium text-text-primary shadow-elevation-1 backdrop-blur-sm transition-colors hover:bg-bg-surface",
|
|
665
|
-
children: [/* @__PURE__ */
|
|
668
|
+
children: [/* @__PURE__ */ x(ze, { className: "h-3.5 w-3.5" }), "Open in Maps"]
|
|
666
669
|
})
|
|
667
670
|
]
|
|
668
671
|
}),
|
|
669
|
-
|
|
672
|
+
h.location.address && /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("div", {
|
|
670
673
|
className: "mb-1 text-xs text-text-secondary",
|
|
671
674
|
children: "Full Address"
|
|
672
|
-
}), /* @__PURE__ */
|
|
675
|
+
}), /* @__PURE__ */ x("div", {
|
|
673
676
|
className: "text-sm font-medium text-text-primary",
|
|
674
|
-
children:
|
|
677
|
+
children: h.location.address
|
|
675
678
|
})] }),
|
|
676
|
-
/* @__PURE__ */
|
|
679
|
+
/* @__PURE__ */ S("div", {
|
|
677
680
|
className: "grid grid-cols-1 gap-4 text-sm sm:grid-cols-3",
|
|
678
681
|
children: [
|
|
679
|
-
/* @__PURE__ */
|
|
682
|
+
/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("div", {
|
|
680
683
|
className: "mb-1 text-xs text-text-secondary",
|
|
681
684
|
children: "Neighborhood"
|
|
682
|
-
}), /* @__PURE__ */
|
|
685
|
+
}), /* @__PURE__ */ x("div", {
|
|
683
686
|
className: "font-medium text-text-primary",
|
|
684
|
-
children:
|
|
687
|
+
children: h.location.neighborhood || "—"
|
|
685
688
|
})] }),
|
|
686
|
-
/* @__PURE__ */
|
|
689
|
+
/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("div", {
|
|
687
690
|
className: "mb-1 text-xs text-text-secondary",
|
|
688
691
|
children: "City, State"
|
|
689
|
-
}), /* @__PURE__ */
|
|
692
|
+
}), /* @__PURE__ */ S("div", {
|
|
690
693
|
className: "font-medium text-text-primary",
|
|
691
694
|
children: [
|
|
692
|
-
|
|
695
|
+
h.location.city,
|
|
693
696
|
", ",
|
|
694
|
-
|
|
697
|
+
h.location.state
|
|
695
698
|
]
|
|
696
699
|
})] }),
|
|
697
|
-
/* @__PURE__ */
|
|
700
|
+
/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("div", {
|
|
698
701
|
className: "mb-1 text-xs text-text-secondary",
|
|
699
702
|
children: "PIN / ZIP"
|
|
700
|
-
}), /* @__PURE__ */
|
|
703
|
+
}), /* @__PURE__ */ x("div", {
|
|
701
704
|
className: "font-medium text-text-primary",
|
|
702
|
-
children:
|
|
705
|
+
children: h.location.pincode || "—"
|
|
703
706
|
})] })
|
|
704
707
|
]
|
|
705
708
|
}),
|
|
706
|
-
|
|
709
|
+
h.location.landmarks.length > 0 && /* @__PURE__ */ S("div", {
|
|
707
710
|
className: "border-t border-border-subtle pt-4",
|
|
708
|
-
children: [/* @__PURE__ */
|
|
711
|
+
children: [/* @__PURE__ */ x("h4", {
|
|
709
712
|
className: "mb-2 text-xs font-medium text-text-secondary",
|
|
710
713
|
children: "Nearby Landmarks"
|
|
711
|
-
}), /* @__PURE__ */
|
|
714
|
+
}), /* @__PURE__ */ x("div", {
|
|
712
715
|
className: "flex flex-wrap gap-2",
|
|
713
|
-
children:
|
|
716
|
+
children: h.location.landmarks.map((e) => /* @__PURE__ */ x("span", {
|
|
714
717
|
className: "rounded-full bg-bg-sunken px-3 py-1 text-xs text-text-primary",
|
|
715
718
|
children: e
|
|
716
719
|
}, e))
|
|
@@ -721,194 +724,194 @@ var j = {
|
|
|
721
724
|
]
|
|
722
725
|
})]
|
|
723
726
|
})]
|
|
724
|
-
}), /* @__PURE__ */
|
|
727
|
+
}), /* @__PURE__ */ S("div", {
|
|
725
728
|
className: "space-y-6",
|
|
726
729
|
children: [
|
|
727
|
-
/* @__PURE__ */
|
|
730
|
+
/* @__PURE__ */ S("div", {
|
|
728
731
|
id: "property-actions",
|
|
729
732
|
className: "scroll-mt-6 rounded-lg border border-border-subtle bg-bg-surface p-5 shadow-elevation-1 lg:sticky lg:top-6",
|
|
730
733
|
children: [
|
|
731
|
-
/* @__PURE__ */
|
|
734
|
+
/* @__PURE__ */ S("div", {
|
|
732
735
|
className: "flex flex-wrap items-baseline gap-x-2 gap-y-1",
|
|
733
|
-
children: [/* @__PURE__ */
|
|
736
|
+
children: [/* @__PURE__ */ x("span", {
|
|
734
737
|
className: "text-3xl font-bold text-text-primary",
|
|
735
|
-
children: X(
|
|
736
|
-
}),
|
|
738
|
+
children: X(h.price)
|
|
739
|
+
}), h.price.negotiable && /* @__PURE__ */ x("span", {
|
|
737
740
|
className: "text-sm text-text-secondary",
|
|
738
741
|
children: "· Negotiable"
|
|
739
742
|
})]
|
|
740
743
|
}),
|
|
741
|
-
|
|
744
|
+
h.price.pricePerSqft && /* @__PURE__ */ S("p", {
|
|
742
745
|
className: "mt-1 text-sm text-text-secondary",
|
|
743
|
-
children: [n(
|
|
746
|
+
children: [n(h.price.pricePerSqft, h.price.currency), "/sqft"]
|
|
744
747
|
}),
|
|
745
|
-
/* @__PURE__ */
|
|
748
|
+
/* @__PURE__ */ S("div", {
|
|
746
749
|
className: "mt-4 space-y-2",
|
|
747
750
|
children: [
|
|
748
|
-
/* @__PURE__ */ C
|
|
751
|
+
/* @__PURE__ */ S(C, {
|
|
749
752
|
type: "button",
|
|
750
753
|
className: "w-full justify-center",
|
|
751
754
|
onClick: () => V(!0),
|
|
752
|
-
children: [/* @__PURE__ */
|
|
755
|
+
children: [/* @__PURE__ */ x(Ie, { className: "mr-2 h-4 w-4" }), "Make Offer"]
|
|
753
756
|
}),
|
|
754
|
-
|
|
757
|
+
h.status === "for_rent" && /* @__PURE__ */ S(b, { children: [/* @__PURE__ */ S(C, {
|
|
755
758
|
type: "button",
|
|
756
759
|
className: "w-full justify-center",
|
|
757
760
|
onClick: () => W(!0),
|
|
758
761
|
disabled: !Z,
|
|
759
|
-
children: [/* @__PURE__ */
|
|
760
|
-
}), !Z && /* @__PURE__ */
|
|
762
|
+
children: [/* @__PURE__ */ x(Le, { className: "mr-2 h-4 w-4" }), "Apply to Rent"]
|
|
763
|
+
}), !Z && /* @__PURE__ */ x("p", {
|
|
761
764
|
className: "px-1 text-xs text-text-secondary",
|
|
762
765
|
children: "No rental unit is listed for this property yet — applications open once a unit is added."
|
|
763
766
|
})] }),
|
|
764
|
-
/* @__PURE__ */
|
|
767
|
+
/* @__PURE__ */ S("div", {
|
|
765
768
|
className: "grid grid-cols-2 gap-2",
|
|
766
|
-
children: [/* @__PURE__ */ C
|
|
769
|
+
children: [/* @__PURE__ */ S(C, {
|
|
767
770
|
type: "button",
|
|
768
771
|
variant: "outline",
|
|
769
772
|
className: "w-full justify-center",
|
|
770
773
|
onClick: () => B(!0),
|
|
771
|
-
children: [/* @__PURE__ */
|
|
772
|
-
}), /* @__PURE__ */ C
|
|
774
|
+
children: [/* @__PURE__ */ x(je, { className: "mr-2 h-4 w-4" }), "Viewing"]
|
|
775
|
+
}), /* @__PURE__ */ S(C, {
|
|
773
776
|
type: "button",
|
|
774
777
|
variant: "outline",
|
|
775
778
|
className: "w-full justify-center",
|
|
776
|
-
onClick: () =>
|
|
777
|
-
children: [/* @__PURE__ */
|
|
779
|
+
onClick: () => xt(!0),
|
|
780
|
+
children: [/* @__PURE__ */ x(Re, { className: "mr-2 h-4 w-4" }), "Contact"]
|
|
778
781
|
})]
|
|
779
782
|
}),
|
|
780
|
-
/* @__PURE__ */ C
|
|
783
|
+
/* @__PURE__ */ S(C, {
|
|
781
784
|
type: "button",
|
|
782
785
|
variant: "outline",
|
|
783
786
|
className: "w-full justify-center",
|
|
784
|
-
onClick:
|
|
785
|
-
disabled:
|
|
786
|
-
children: [/* @__PURE__ */
|
|
787
|
+
onClick: on,
|
|
788
|
+
disabled: N || P,
|
|
789
|
+
children: [/* @__PURE__ */ x(f, { className: e("mr-2 h-4 w-4", I && "fill-status-error-text text-status-error-text") }), I ? "Saved to Shortlist" : "Save to Shortlist"]
|
|
787
790
|
})
|
|
788
791
|
]
|
|
789
792
|
}),
|
|
790
|
-
|
|
793
|
+
h.verificationStatus === "verified" && /* @__PURE__ */ S("div", {
|
|
791
794
|
className: "mt-4 flex items-center gap-2 border-t border-border-subtle pt-4 text-sm font-medium text-status-success-text",
|
|
792
|
-
children: [/* @__PURE__ */
|
|
795
|
+
children: [/* @__PURE__ */ x(Ee, { className: "h-4 w-4" }), "Verified listing"]
|
|
793
796
|
})
|
|
794
797
|
]
|
|
795
798
|
}),
|
|
796
|
-
/* @__PURE__ */
|
|
799
|
+
/* @__PURE__ */ S("div", {
|
|
797
800
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-5",
|
|
798
801
|
children: [
|
|
799
|
-
/* @__PURE__ */
|
|
802
|
+
/* @__PURE__ */ S("div", {
|
|
800
803
|
className: "mb-4 flex items-center gap-2",
|
|
801
|
-
children: [/* @__PURE__ */
|
|
804
|
+
children: [/* @__PURE__ */ x(Ae, { className: "h-5 w-5 text-text-secondary" }), /* @__PURE__ */ x("h3", {
|
|
802
805
|
className: "text-base font-semibold text-text-primary",
|
|
803
806
|
children: "Investment Analysis"
|
|
804
807
|
})]
|
|
805
808
|
}),
|
|
806
|
-
/* @__PURE__ */
|
|
809
|
+
/* @__PURE__ */ S("div", {
|
|
807
810
|
className: "space-y-3",
|
|
808
811
|
children: [
|
|
809
|
-
/* @__PURE__ */
|
|
812
|
+
/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ S("label", {
|
|
810
813
|
className: "mb-1.5 block text-xs font-medium text-text-secondary",
|
|
811
814
|
children: [
|
|
812
815
|
"Expected monthly rent (",
|
|
813
|
-
|
|
816
|
+
h.price.currency,
|
|
814
817
|
")"
|
|
815
818
|
]
|
|
816
|
-
}), /* @__PURE__ */
|
|
819
|
+
}), /* @__PURE__ */ x("input", {
|
|
817
820
|
type: "number",
|
|
818
821
|
min: 0,
|
|
819
|
-
value:
|
|
820
|
-
onChange: (e) =>
|
|
821
|
-
placeholder: String(
|
|
822
|
-
className:
|
|
822
|
+
value: Ot,
|
|
823
|
+
onChange: (e) => kt(e.target.value),
|
|
824
|
+
placeholder: String(mn),
|
|
825
|
+
className: j
|
|
823
826
|
})] }),
|
|
824
|
-
/* @__PURE__ */
|
|
827
|
+
/* @__PURE__ */ S("div", {
|
|
825
828
|
className: "grid grid-cols-2 gap-3",
|
|
826
|
-
children: [/* @__PURE__ */
|
|
829
|
+
children: [/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ S("label", {
|
|
827
830
|
className: "mb-1.5 block text-xs font-medium text-text-secondary",
|
|
828
831
|
children: [
|
|
829
832
|
"Monthly costs (",
|
|
830
|
-
|
|
833
|
+
h.price.currency,
|
|
831
834
|
")"
|
|
832
835
|
]
|
|
833
|
-
}), /* @__PURE__ */
|
|
836
|
+
}), /* @__PURE__ */ x("input", {
|
|
834
837
|
type: "number",
|
|
835
838
|
min: 0,
|
|
836
|
-
value:
|
|
837
|
-
onChange: (e) =>
|
|
838
|
-
placeholder: String(
|
|
839
|
-
className:
|
|
840
|
-
})] }), /* @__PURE__ */
|
|
839
|
+
value: At,
|
|
840
|
+
onChange: (e) => jt(e.target.value),
|
|
841
|
+
placeholder: String(hn),
|
|
842
|
+
className: j
|
|
843
|
+
})] }), /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("label", {
|
|
841
844
|
className: "mb-1.5 block text-xs font-medium text-text-secondary",
|
|
842
845
|
children: "Appreciation (%/yr)"
|
|
843
|
-
}), /* @__PURE__ */
|
|
846
|
+
}), /* @__PURE__ */ x("input", {
|
|
844
847
|
type: "number",
|
|
845
848
|
min: 0,
|
|
846
849
|
step: .5,
|
|
847
|
-
value:
|
|
848
|
-
onChange: (e) =>
|
|
849
|
-
className:
|
|
850
|
+
value: Mt,
|
|
851
|
+
onChange: (e) => Nt(e.target.value),
|
|
852
|
+
className: j
|
|
850
853
|
})] })]
|
|
851
854
|
}),
|
|
852
|
-
/* @__PURE__ */
|
|
855
|
+
/* @__PURE__ */ x("p", {
|
|
853
856
|
className: "text-[11px] text-text-secondary",
|
|
854
857
|
children: "Costs cover maintenance, tax, insurance, and management."
|
|
855
858
|
})
|
|
856
859
|
]
|
|
857
860
|
}),
|
|
858
|
-
/* @__PURE__ */
|
|
861
|
+
/* @__PURE__ */ S("div", {
|
|
859
862
|
className: "mt-4 grid grid-cols-3 gap-2 border-t border-border-subtle pt-4",
|
|
860
863
|
children: [
|
|
861
|
-
/* @__PURE__ */
|
|
864
|
+
/* @__PURE__ */ S("div", {
|
|
862
865
|
className: "rounded-lg border border-status-success-border bg-status-success-bg-subtle p-2.5 text-center",
|
|
863
|
-
children: [/* @__PURE__ */
|
|
866
|
+
children: [/* @__PURE__ */ x("div", {
|
|
864
867
|
className: "text-[11px] font-medium text-status-success-text",
|
|
865
868
|
children: "Gross Yield"
|
|
866
|
-
}), /* @__PURE__ */
|
|
869
|
+
}), /* @__PURE__ */ S("div", {
|
|
867
870
|
className: "mt-0.5 text-lg font-bold text-status-success-text",
|
|
868
|
-
children: [
|
|
871
|
+
children: [_n.toFixed(1), "%"]
|
|
869
872
|
})]
|
|
870
873
|
}),
|
|
871
|
-
/* @__PURE__ */
|
|
874
|
+
/* @__PURE__ */ S("div", {
|
|
872
875
|
className: "rounded-lg border border-border-subtle bg-bg-sunken/40 p-2.5 text-center",
|
|
873
|
-
children: [/* @__PURE__ */
|
|
876
|
+
children: [/* @__PURE__ */ x("div", {
|
|
874
877
|
className: "text-[11px] font-medium text-text-secondary",
|
|
875
878
|
children: "Net Yield"
|
|
876
|
-
}), /* @__PURE__ */
|
|
879
|
+
}), /* @__PURE__ */ S("div", {
|
|
877
880
|
className: "mt-0.5 text-lg font-bold text-text-primary",
|
|
878
|
-
children: [
|
|
881
|
+
children: [yn.toFixed(1), "%"]
|
|
879
882
|
})]
|
|
880
883
|
}),
|
|
881
|
-
/* @__PURE__ */
|
|
884
|
+
/* @__PURE__ */ S("div", {
|
|
882
885
|
className: "rounded-lg border border-border-subtle bg-bg-sunken/40 p-2.5 text-center",
|
|
883
|
-
children: [/* @__PURE__ */
|
|
886
|
+
children: [/* @__PURE__ */ x("div", {
|
|
884
887
|
className: "text-[11px] font-medium text-text-secondary",
|
|
885
888
|
children: "5-yr ROI"
|
|
886
|
-
}), /* @__PURE__ */
|
|
889
|
+
}), /* @__PURE__ */ S("div", {
|
|
887
890
|
className: "mt-0.5 text-lg font-bold text-text-primary",
|
|
888
|
-
children: [
|
|
891
|
+
children: [Cn.toFixed(0), "%"]
|
|
889
892
|
})]
|
|
890
893
|
})
|
|
891
894
|
]
|
|
892
895
|
}),
|
|
893
|
-
/* @__PURE__ */
|
|
896
|
+
/* @__PURE__ */ S("div", {
|
|
894
897
|
className: "mt-4",
|
|
895
898
|
children: [
|
|
896
|
-
/* @__PURE__ */
|
|
899
|
+
/* @__PURE__ */ S("div", {
|
|
897
900
|
className: "mb-1 flex items-center justify-between",
|
|
898
|
-
children: [/* @__PURE__ */
|
|
901
|
+
children: [/* @__PURE__ */ x("span", {
|
|
899
902
|
className: "text-xs font-medium text-text-secondary",
|
|
900
903
|
children: "Projected Value Growth"
|
|
901
|
-
}), /* @__PURE__ */
|
|
904
|
+
}), /* @__PURE__ */ x("span", {
|
|
902
905
|
className: "text-xs font-semibold text-text-primary",
|
|
903
|
-
children: t(
|
|
906
|
+
children: t(xn, h.price.currency)
|
|
904
907
|
})]
|
|
905
908
|
}),
|
|
906
|
-
/* @__PURE__ */
|
|
909
|
+
/* @__PURE__ */ x("div", {
|
|
907
910
|
className: "h-32",
|
|
908
|
-
children: /* @__PURE__ */
|
|
911
|
+
children: /* @__PURE__ */ x(ye, {
|
|
909
912
|
width: "100%",
|
|
910
913
|
height: "100%",
|
|
911
|
-
children: /* @__PURE__ */
|
|
914
|
+
children: /* @__PURE__ */ S(Ce, {
|
|
912
915
|
data: $,
|
|
913
916
|
margin: {
|
|
914
917
|
top: 4,
|
|
@@ -917,37 +920,37 @@ var j = {
|
|
|
917
920
|
left: 0
|
|
918
921
|
},
|
|
919
922
|
children: [
|
|
920
|
-
/* @__PURE__ */
|
|
923
|
+
/* @__PURE__ */ x("defs", { children: /* @__PURE__ */ S("linearGradient", {
|
|
921
924
|
id: "hvValueGrad",
|
|
922
925
|
x1: "0",
|
|
923
926
|
y1: "0",
|
|
924
927
|
x2: "0",
|
|
925
928
|
y2: "1",
|
|
926
|
-
children: [/* @__PURE__ */
|
|
929
|
+
children: [/* @__PURE__ */ x("stop", {
|
|
927
930
|
offset: "5%",
|
|
928
931
|
stopColor: "var(--color-chart-2)",
|
|
929
932
|
stopOpacity: .35
|
|
930
|
-
}), /* @__PURE__ */
|
|
933
|
+
}), /* @__PURE__ */ x("stop", {
|
|
931
934
|
offset: "95%",
|
|
932
935
|
stopColor: "var(--color-chart-2)",
|
|
933
936
|
stopOpacity: 0
|
|
934
937
|
})]
|
|
935
938
|
}) }),
|
|
936
|
-
/* @__PURE__ */
|
|
939
|
+
/* @__PURE__ */ x(xe, {
|
|
937
940
|
dataKey: "label",
|
|
938
941
|
tick: { fontSize: 10 },
|
|
939
942
|
axisLine: !1,
|
|
940
943
|
tickLine: !1
|
|
941
944
|
}),
|
|
942
|
-
/* @__PURE__ */
|
|
945
|
+
/* @__PURE__ */ x(Se, {
|
|
943
946
|
hide: !0,
|
|
944
947
|
domain: ["dataMin", "dataMax"]
|
|
945
948
|
}),
|
|
946
|
-
/* @__PURE__ */
|
|
947
|
-
formatter: (e) => [t(e,
|
|
949
|
+
/* @__PURE__ */ x(ve, {
|
|
950
|
+
formatter: (e) => [t(e, h.price.currency), "Value"],
|
|
948
951
|
labelClassName: "text-text-primary"
|
|
949
952
|
}),
|
|
950
|
-
/* @__PURE__ */
|
|
953
|
+
/* @__PURE__ */ x(be, {
|
|
951
954
|
type: "monotone",
|
|
952
955
|
dataKey: "value",
|
|
953
956
|
stroke: "var(--color-chart-2)",
|
|
@@ -958,89 +961,89 @@ var j = {
|
|
|
958
961
|
})
|
|
959
962
|
})
|
|
960
963
|
}),
|
|
961
|
-
/* @__PURE__ */
|
|
964
|
+
/* @__PURE__ */ x("p", {
|
|
962
965
|
className: "mt-1 text-[11px] text-text-secondary",
|
|
963
966
|
children: "Projection based on your inputs and market appreciation. Consult a financial advisor before investing."
|
|
964
967
|
})
|
|
965
968
|
]
|
|
966
969
|
}),
|
|
967
|
-
/* @__PURE__ */ C
|
|
970
|
+
/* @__PURE__ */ S(C, {
|
|
968
971
|
type: "button",
|
|
969
972
|
variant: "outline",
|
|
970
973
|
className: "mt-4 w-full justify-center",
|
|
971
|
-
onClick:
|
|
972
|
-
disabled:
|
|
973
|
-
children: [/* @__PURE__ */
|
|
974
|
+
onClick: pn,
|
|
975
|
+
disabled: ft,
|
|
976
|
+
children: [/* @__PURE__ */ x(Ge, { className: "mr-2 h-4 w-4" }), ft ? "Adding…" : "Track as Investment"]
|
|
974
977
|
})
|
|
975
978
|
]
|
|
976
979
|
}),
|
|
977
|
-
/* @__PURE__ */
|
|
980
|
+
/* @__PURE__ */ S("div", {
|
|
978
981
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-5",
|
|
979
|
-
children: [/* @__PURE__ */
|
|
982
|
+
children: [/* @__PURE__ */ x("h3", {
|
|
980
983
|
className: "mb-4 text-base font-semibold text-text-primary",
|
|
981
984
|
children: "At a Glance"
|
|
982
|
-
}), /* @__PURE__ */
|
|
985
|
+
}), /* @__PURE__ */ S("div", {
|
|
983
986
|
className: "space-y-3 text-sm",
|
|
984
987
|
children: [
|
|
985
|
-
/* @__PURE__ */
|
|
988
|
+
/* @__PURE__ */ S("div", {
|
|
986
989
|
className: "flex items-center justify-between",
|
|
987
|
-
children: [/* @__PURE__ */
|
|
990
|
+
children: [/* @__PURE__ */ x("span", {
|
|
988
991
|
className: "text-text-secondary",
|
|
989
992
|
children: "Status"
|
|
990
|
-
}), /* @__PURE__ */
|
|
991
|
-
label:
|
|
992
|
-
variant:
|
|
993
|
+
}), /* @__PURE__ */ x(i, {
|
|
994
|
+
label: h.status.replace("_", " "),
|
|
995
|
+
variant: A[h.status] ?? "default"
|
|
993
996
|
})]
|
|
994
997
|
}),
|
|
995
|
-
/* @__PURE__ */
|
|
998
|
+
/* @__PURE__ */ S("div", {
|
|
996
999
|
className: "flex items-center justify-between",
|
|
997
|
-
children: [/* @__PURE__ */
|
|
1000
|
+
children: [/* @__PURE__ */ x("span", {
|
|
998
1001
|
className: "text-text-secondary",
|
|
999
1002
|
children: "Verification"
|
|
1000
|
-
}), /* @__PURE__ */
|
|
1003
|
+
}), /* @__PURE__ */ x("span", {
|
|
1001
1004
|
className: "font-medium capitalize text-text-primary",
|
|
1002
|
-
children:
|
|
1005
|
+
children: h.verificationStatus
|
|
1003
1006
|
})]
|
|
1004
1007
|
}),
|
|
1005
|
-
/* @__PURE__ */
|
|
1008
|
+
/* @__PURE__ */ S("div", {
|
|
1006
1009
|
className: "flex items-center justify-between",
|
|
1007
|
-
children: [/* @__PURE__ */
|
|
1010
|
+
children: [/* @__PURE__ */ x("span", {
|
|
1008
1011
|
className: "text-text-secondary",
|
|
1009
1012
|
children: "Listed"
|
|
1010
|
-
}), /* @__PURE__ */
|
|
1013
|
+
}), /* @__PURE__ */ x("span", {
|
|
1011
1014
|
className: "font-medium text-text-primary",
|
|
1012
|
-
children: ee(String(
|
|
1015
|
+
children: ee(String(h.createdAt))
|
|
1013
1016
|
})]
|
|
1014
1017
|
})
|
|
1015
1018
|
]
|
|
1016
1019
|
})]
|
|
1017
1020
|
}),
|
|
1018
|
-
|
|
1021
|
+
pt.length > 0 && /* @__PURE__ */ S("div", {
|
|
1019
1022
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-5",
|
|
1020
|
-
children: [/* @__PURE__ */
|
|
1023
|
+
children: [/* @__PURE__ */ x("h3", {
|
|
1021
1024
|
className: "mb-4 text-base font-semibold text-text-primary",
|
|
1022
1025
|
children: "Similar Properties"
|
|
1023
|
-
}), /* @__PURE__ */
|
|
1026
|
+
}), /* @__PURE__ */ x("div", {
|
|
1024
1027
|
className: "space-y-3",
|
|
1025
|
-
children:
|
|
1028
|
+
children: pt.map((e) => /* @__PURE__ */ S("button", {
|
|
1026
1029
|
onClick: () => u(`../properties/${e.id}`),
|
|
1027
1030
|
className: "flex w-full items-start gap-3 rounded-lg border border-border-subtle p-3 text-left transition-colors hover:bg-bg-sunken/50",
|
|
1028
|
-
children: [e.images[0] && /* @__PURE__ */
|
|
1031
|
+
children: [e.images[0] && /* @__PURE__ */ x("img", {
|
|
1029
1032
|
src: e.images[0].url,
|
|
1030
1033
|
alt: e.title,
|
|
1031
1034
|
className: "h-14 w-14 rounded object-cover"
|
|
1032
|
-
}), /* @__PURE__ */
|
|
1035
|
+
}), /* @__PURE__ */ S("div", {
|
|
1033
1036
|
className: "min-w-0 flex-1",
|
|
1034
1037
|
children: [
|
|
1035
|
-
/* @__PURE__ */
|
|
1038
|
+
/* @__PURE__ */ x("div", {
|
|
1036
1039
|
className: "truncate text-sm font-medium text-text-primary",
|
|
1037
1040
|
children: e.title
|
|
1038
1041
|
}),
|
|
1039
|
-
/* @__PURE__ */
|
|
1042
|
+
/* @__PURE__ */ x("div", {
|
|
1040
1043
|
className: "text-sm font-semibold text-text-primary",
|
|
1041
1044
|
children: n(e.price.amount)
|
|
1042
1045
|
}),
|
|
1043
|
-
/* @__PURE__ */
|
|
1046
|
+
/* @__PURE__ */ x("div", {
|
|
1044
1047
|
className: "truncate text-xs text-text-secondary",
|
|
1045
1048
|
children: [e.location.neighborhood, e.location.city].filter(Boolean).join(", ")
|
|
1046
1049
|
})
|
|
@@ -1052,180 +1055,180 @@ var j = {
|
|
|
1052
1055
|
]
|
|
1053
1056
|
})]
|
|
1054
1057
|
}),
|
|
1055
|
-
/* @__PURE__ */
|
|
1056
|
-
entityId:
|
|
1058
|
+
/* @__PURE__ */ x(_e, {
|
|
1059
|
+
entityId: h.id,
|
|
1057
1060
|
entityType: "housingvista-property"
|
|
1058
1061
|
}),
|
|
1059
|
-
/* @__PURE__ */
|
|
1060
|
-
open:
|
|
1061
|
-
onOpenChange:
|
|
1062
|
-
entityId:
|
|
1062
|
+
/* @__PURE__ */ x(ge, {
|
|
1063
|
+
open: bt,
|
|
1064
|
+
onOpenChange: xt,
|
|
1065
|
+
entityId: h.id,
|
|
1063
1066
|
entityType: "housingvista-property",
|
|
1064
|
-
title:
|
|
1067
|
+
title: h.title,
|
|
1065
1068
|
pagePath: d.pathname,
|
|
1066
1069
|
heading: "Contact owner",
|
|
1067
|
-
description: `Ask a question or start a conversation about ${
|
|
1070
|
+
description: `Ask a question or start a conversation about ${h.title}.`
|
|
1068
1071
|
}),
|
|
1069
|
-
/* @__PURE__ */
|
|
1070
|
-
open:
|
|
1072
|
+
/* @__PURE__ */ x(w, {
|
|
1073
|
+
open: yt,
|
|
1071
1074
|
onOpenChange: W,
|
|
1072
|
-
children: /* @__PURE__ */
|
|
1075
|
+
children: /* @__PURE__ */ x(T, {
|
|
1073
1076
|
className: "sm:max-w-md",
|
|
1074
|
-
children: /* @__PURE__ */
|
|
1075
|
-
onSubmit:
|
|
1077
|
+
children: /* @__PURE__ */ S("form", {
|
|
1078
|
+
onSubmit: fn,
|
|
1076
1079
|
children: [
|
|
1077
|
-
/* @__PURE__ */
|
|
1080
|
+
/* @__PURE__ */ S(O, { children: [/* @__PURE__ */ x(k, { children: "Apply to rent" }), /* @__PURE__ */ S(E, { children: [
|
|
1078
1081
|
"Submit a rental application for ",
|
|
1079
|
-
|
|
1082
|
+
h.title,
|
|
1080
1083
|
". The owner will review and respond."
|
|
1081
1084
|
] })] }),
|
|
1082
|
-
/* @__PURE__ */
|
|
1085
|
+
/* @__PURE__ */ S("div", {
|
|
1083
1086
|
className: "space-y-3 py-2",
|
|
1084
1087
|
children: [
|
|
1085
|
-
/* @__PURE__ */
|
|
1088
|
+
/* @__PURE__ */ S("div", {
|
|
1086
1089
|
className: "grid grid-cols-1 gap-3 sm:grid-cols-2",
|
|
1087
|
-
children: [/* @__PURE__ */
|
|
1090
|
+
children: [/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("label", {
|
|
1088
1091
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
1089
1092
|
children: "Full name *"
|
|
1090
|
-
}), /* @__PURE__ */
|
|
1093
|
+
}), /* @__PURE__ */ x("input", {
|
|
1091
1094
|
type: "text",
|
|
1092
1095
|
required: !0,
|
|
1093
1096
|
value: G,
|
|
1094
|
-
onChange: (e) =>
|
|
1095
|
-
className:
|
|
1096
|
-
})] }), /* @__PURE__ */
|
|
1097
|
+
onChange: (e) => St(e.target.value),
|
|
1098
|
+
className: j
|
|
1099
|
+
})] }), /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("label", {
|
|
1097
1100
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
1098
1101
|
children: "Email *"
|
|
1099
|
-
}), /* @__PURE__ */
|
|
1102
|
+
}), /* @__PURE__ */ x("input", {
|
|
1100
1103
|
type: "email",
|
|
1101
1104
|
required: !0,
|
|
1102
1105
|
value: K,
|
|
1103
|
-
onChange: (e) =>
|
|
1104
|
-
className:
|
|
1106
|
+
onChange: (e) => Ct(e.target.value),
|
|
1107
|
+
className: j
|
|
1105
1108
|
})] })]
|
|
1106
1109
|
}),
|
|
1107
|
-
/* @__PURE__ */
|
|
1110
|
+
/* @__PURE__ */ S("div", {
|
|
1108
1111
|
className: "grid grid-cols-1 gap-3 sm:grid-cols-2",
|
|
1109
|
-
children: [/* @__PURE__ */
|
|
1112
|
+
children: [/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("label", {
|
|
1110
1113
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
1111
1114
|
children: "Phone"
|
|
1112
|
-
}), /* @__PURE__ */
|
|
1115
|
+
}), /* @__PURE__ */ x("input", {
|
|
1113
1116
|
type: "tel",
|
|
1114
|
-
value:
|
|
1115
|
-
onChange: (e) =>
|
|
1116
|
-
className:
|
|
1117
|
-
})] }), /* @__PURE__ */
|
|
1117
|
+
value: wt,
|
|
1118
|
+
onChange: (e) => Tt(e.target.value),
|
|
1119
|
+
className: j
|
|
1120
|
+
})] }), /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ S("label", {
|
|
1118
1121
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
1119
1122
|
children: [
|
|
1120
1123
|
"Monthly income (",
|
|
1121
|
-
|
|
1124
|
+
h.price.currency,
|
|
1122
1125
|
")"
|
|
1123
1126
|
]
|
|
1124
|
-
}), /* @__PURE__ */
|
|
1127
|
+
}), /* @__PURE__ */ x("input", {
|
|
1125
1128
|
type: "number",
|
|
1126
1129
|
min: 0,
|
|
1127
1130
|
value: q,
|
|
1128
|
-
onChange: (e) =>
|
|
1129
|
-
className:
|
|
1131
|
+
onChange: (e) => Et(e.target.value),
|
|
1132
|
+
className: j
|
|
1130
1133
|
})] })]
|
|
1131
1134
|
}),
|
|
1132
|
-
/* @__PURE__ */
|
|
1135
|
+
/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("label", {
|
|
1133
1136
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
1134
1137
|
children: "Preferred move-in date"
|
|
1135
|
-
}), /* @__PURE__ */
|
|
1138
|
+
}), /* @__PURE__ */ x("input", {
|
|
1136
1139
|
type: "date",
|
|
1137
1140
|
value: J,
|
|
1138
|
-
onChange: (e) =>
|
|
1139
|
-
className:
|
|
1141
|
+
onChange: (e) => Dt(e.target.value),
|
|
1142
|
+
className: j
|
|
1140
1143
|
})] })
|
|
1141
1144
|
]
|
|
1142
1145
|
}),
|
|
1143
|
-
/* @__PURE__ */
|
|
1146
|
+
/* @__PURE__ */ S(D, { children: [/* @__PURE__ */ x(C, {
|
|
1144
1147
|
type: "button",
|
|
1145
1148
|
variant: "outline",
|
|
1146
1149
|
onClick: () => W(!1),
|
|
1147
1150
|
children: "Cancel"
|
|
1148
|
-
}), /* @__PURE__ */
|
|
1151
|
+
}), /* @__PURE__ */ x(C, {
|
|
1149
1152
|
type: "submit",
|
|
1150
|
-
disabled:
|
|
1151
|
-
children:
|
|
1153
|
+
disabled: ut || !Z,
|
|
1154
|
+
children: ut ? "Submitting…" : "Submit application"
|
|
1152
1155
|
})] })
|
|
1153
1156
|
]
|
|
1154
1157
|
})
|
|
1155
1158
|
})
|
|
1156
1159
|
}),
|
|
1157
|
-
/* @__PURE__ */
|
|
1158
|
-
open:
|
|
1160
|
+
/* @__PURE__ */ x(w, {
|
|
1161
|
+
open: ht,
|
|
1159
1162
|
onOpenChange: B,
|
|
1160
|
-
children: /* @__PURE__ */
|
|
1163
|
+
children: /* @__PURE__ */ x(T, {
|
|
1161
1164
|
className: "sm:max-w-md",
|
|
1162
|
-
children: /* @__PURE__ */
|
|
1163
|
-
onSubmit:
|
|
1165
|
+
children: /* @__PURE__ */ S("form", {
|
|
1166
|
+
onSubmit: sn,
|
|
1164
1167
|
children: [
|
|
1165
|
-
/* @__PURE__ */
|
|
1168
|
+
/* @__PURE__ */ S(O, { children: [/* @__PURE__ */ x(k, { children: "Schedule a viewing" }), /* @__PURE__ */ S(E, { children: [
|
|
1166
1169
|
"Pick a date and time to see ",
|
|
1167
|
-
|
|
1170
|
+
h.title,
|
|
1168
1171
|
"."
|
|
1169
1172
|
] })] }),
|
|
1170
|
-
/* @__PURE__ */
|
|
1173
|
+
/* @__PURE__ */ S("div", {
|
|
1171
1174
|
className: "space-y-3 py-2",
|
|
1172
1175
|
children: [
|
|
1173
|
-
/* @__PURE__ */
|
|
1176
|
+
/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("label", {
|
|
1174
1177
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
1175
1178
|
children: "Date & time *"
|
|
1176
|
-
}), /* @__PURE__ */
|
|
1179
|
+
}), /* @__PURE__ */ x("input", {
|
|
1177
1180
|
type: "datetime-local",
|
|
1178
1181
|
required: !0,
|
|
1179
1182
|
value: Y,
|
|
1180
|
-
onChange: (e) =>
|
|
1181
|
-
className:
|
|
1183
|
+
onChange: (e) => Pt(e.target.value),
|
|
1184
|
+
className: j
|
|
1182
1185
|
})] }),
|
|
1183
|
-
/* @__PURE__ */
|
|
1186
|
+
/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("label", {
|
|
1184
1187
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
1185
1188
|
children: "Type"
|
|
1186
|
-
}), /* @__PURE__ */
|
|
1187
|
-
value:
|
|
1188
|
-
onChange: (e) =>
|
|
1189
|
-
className:
|
|
1190
|
-
children: [/* @__PURE__ */
|
|
1189
|
+
}), /* @__PURE__ */ S("select", {
|
|
1190
|
+
value: Ft,
|
|
1191
|
+
onChange: (e) => It(e.target.value),
|
|
1192
|
+
className: j,
|
|
1193
|
+
children: [/* @__PURE__ */ x("option", {
|
|
1191
1194
|
value: "in_person",
|
|
1192
1195
|
children: "In person"
|
|
1193
|
-
}), /* @__PURE__ */
|
|
1196
|
+
}), /* @__PURE__ */ x("option", {
|
|
1194
1197
|
value: "virtual",
|
|
1195
1198
|
children: "Virtual"
|
|
1196
1199
|
})]
|
|
1197
1200
|
})] }),
|
|
1198
|
-
/* @__PURE__ */
|
|
1201
|
+
/* @__PURE__ */ S("div", {
|
|
1199
1202
|
className: "grid grid-cols-1 gap-3 sm:grid-cols-2",
|
|
1200
|
-
children: [/* @__PURE__ */
|
|
1203
|
+
children: [/* @__PURE__ */ x("input", {
|
|
1201
1204
|
type: "text",
|
|
1202
1205
|
placeholder: "Your name",
|
|
1203
|
-
value:
|
|
1204
|
-
onChange: (e) =>
|
|
1205
|
-
className:
|
|
1206
|
-
}), /* @__PURE__ */
|
|
1206
|
+
value: Lt,
|
|
1207
|
+
onChange: (e) => Rt(e.target.value),
|
|
1208
|
+
className: j
|
|
1209
|
+
}), /* @__PURE__ */ x("input", {
|
|
1207
1210
|
type: "email",
|
|
1208
1211
|
placeholder: "Your email",
|
|
1209
|
-
value:
|
|
1210
|
-
onChange: (e) =>
|
|
1211
|
-
className:
|
|
1212
|
+
value: zt,
|
|
1213
|
+
onChange: (e) => Bt(e.target.value),
|
|
1214
|
+
className: j
|
|
1212
1215
|
})]
|
|
1213
1216
|
}),
|
|
1214
|
-
/* @__PURE__ */
|
|
1217
|
+
/* @__PURE__ */ x("textarea", {
|
|
1215
1218
|
placeholder: "Notes (optional)",
|
|
1216
1219
|
rows: 2,
|
|
1217
|
-
value:
|
|
1218
|
-
onChange: (e) =>
|
|
1220
|
+
value: Vt,
|
|
1221
|
+
onChange: (e) => Ht(e.target.value),
|
|
1219
1222
|
className: "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)]"
|
|
1220
1223
|
})
|
|
1221
1224
|
]
|
|
1222
1225
|
}),
|
|
1223
|
-
/* @__PURE__ */
|
|
1226
|
+
/* @__PURE__ */ S(D, { children: [/* @__PURE__ */ x(C, {
|
|
1224
1227
|
type: "button",
|
|
1225
1228
|
variant: "outline",
|
|
1226
1229
|
onClick: () => B(!1),
|
|
1227
1230
|
children: "Cancel"
|
|
1228
|
-
}), /* @__PURE__ */
|
|
1231
|
+
}), /* @__PURE__ */ x(C, {
|
|
1229
1232
|
type: "submit",
|
|
1230
1233
|
disabled: F || !Y,
|
|
1231
1234
|
children: F ? "Booking…" : "Request viewing"
|
|
@@ -1234,149 +1237,149 @@ var j = {
|
|
|
1234
1237
|
})
|
|
1235
1238
|
})
|
|
1236
1239
|
}),
|
|
1237
|
-
/* @__PURE__ */
|
|
1238
|
-
open:
|
|
1240
|
+
/* @__PURE__ */ x(w, {
|
|
1241
|
+
open: gt,
|
|
1239
1242
|
onOpenChange: V,
|
|
1240
|
-
children: /* @__PURE__ */
|
|
1243
|
+
children: /* @__PURE__ */ x(T, {
|
|
1241
1244
|
className: "sm:max-w-md",
|
|
1242
|
-
children: /* @__PURE__ */
|
|
1243
|
-
onSubmit:
|
|
1245
|
+
children: /* @__PURE__ */ S("form", {
|
|
1246
|
+
onSubmit: cn,
|
|
1244
1247
|
children: [
|
|
1245
|
-
/* @__PURE__ */
|
|
1248
|
+
/* @__PURE__ */ S(O, { children: [/* @__PURE__ */ x(k, { children: "Make an offer" }), /* @__PURE__ */ S(E, { children: [
|
|
1246
1249
|
"Listing price is ",
|
|
1247
|
-
X(
|
|
1250
|
+
X(h.price),
|
|
1248
1251
|
"."
|
|
1249
1252
|
] })] }),
|
|
1250
|
-
/* @__PURE__ */
|
|
1253
|
+
/* @__PURE__ */ S("div", {
|
|
1251
1254
|
className: "space-y-3 py-2",
|
|
1252
|
-
children: [/* @__PURE__ */
|
|
1255
|
+
children: [/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ S("label", {
|
|
1253
1256
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
1254
1257
|
children: [
|
|
1255
1258
|
"Your offer (",
|
|
1256
|
-
|
|
1259
|
+
h.price.currency,
|
|
1257
1260
|
") *"
|
|
1258
1261
|
]
|
|
1259
|
-
}), /* @__PURE__ */
|
|
1262
|
+
}), /* @__PURE__ */ x("input", {
|
|
1260
1263
|
type: "number",
|
|
1261
1264
|
required: !0,
|
|
1262
1265
|
min: 1,
|
|
1263
|
-
value:
|
|
1264
|
-
onChange: (e) =>
|
|
1266
|
+
value: Ut,
|
|
1267
|
+
onChange: (e) => Wt(e.target.value),
|
|
1265
1268
|
placeholder: "Enter amount",
|
|
1266
|
-
className:
|
|
1267
|
-
})] }), /* @__PURE__ */
|
|
1269
|
+
className: j
|
|
1270
|
+
})] }), /* @__PURE__ */ x("textarea", {
|
|
1268
1271
|
placeholder: "Message to the owner (optional)",
|
|
1269
1272
|
rows: 3,
|
|
1270
|
-
value:
|
|
1271
|
-
onChange: (e) =>
|
|
1273
|
+
value: Gt,
|
|
1274
|
+
onChange: (e) => Kt(e.target.value),
|
|
1272
1275
|
className: "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)]"
|
|
1273
1276
|
})]
|
|
1274
1277
|
}),
|
|
1275
|
-
/* @__PURE__ */
|
|
1278
|
+
/* @__PURE__ */ S(D, { children: [/* @__PURE__ */ x(C, {
|
|
1276
1279
|
type: "button",
|
|
1277
1280
|
variant: "outline",
|
|
1278
1281
|
onClick: () => V(!1),
|
|
1279
1282
|
children: "Cancel"
|
|
1280
|
-
}), /* @__PURE__ */
|
|
1283
|
+
}), /* @__PURE__ */ x(C, {
|
|
1281
1284
|
type: "submit",
|
|
1282
|
-
disabled:
|
|
1283
|
-
children:
|
|
1285
|
+
disabled: it,
|
|
1286
|
+
children: it ? "Submitting…" : "Submit offer"
|
|
1284
1287
|
})] })
|
|
1285
1288
|
]
|
|
1286
1289
|
})
|
|
1287
1290
|
})
|
|
1288
1291
|
}),
|
|
1289
|
-
/* @__PURE__ */
|
|
1290
|
-
open:
|
|
1292
|
+
/* @__PURE__ */ x(w, {
|
|
1293
|
+
open: _t,
|
|
1291
1294
|
onOpenChange: H,
|
|
1292
|
-
children: /* @__PURE__ */
|
|
1295
|
+
children: /* @__PURE__ */ x(T, {
|
|
1293
1296
|
className: "sm:max-w-md",
|
|
1294
|
-
children: /* @__PURE__ */
|
|
1295
|
-
onSubmit:
|
|
1297
|
+
children: /* @__PURE__ */ S("form", {
|
|
1298
|
+
onSubmit: un,
|
|
1296
1299
|
children: [
|
|
1297
|
-
/* @__PURE__ */
|
|
1298
|
-
/* @__PURE__ */
|
|
1300
|
+
/* @__PURE__ */ S(O, { children: [/* @__PURE__ */ x(k, { children: "Edit property" }), /* @__PURE__ */ x(E, { children: "Update the core listing details." })] }),
|
|
1301
|
+
/* @__PURE__ */ S("div", {
|
|
1299
1302
|
className: "space-y-3 py-2",
|
|
1300
1303
|
children: [
|
|
1301
|
-
/* @__PURE__ */
|
|
1304
|
+
/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("label", {
|
|
1302
1305
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
1303
1306
|
children: "Title *"
|
|
1304
|
-
}), /* @__PURE__ */
|
|
1307
|
+
}), /* @__PURE__ */ x("input", {
|
|
1305
1308
|
type: "text",
|
|
1306
1309
|
required: !0,
|
|
1307
|
-
value:
|
|
1308
|
-
onChange: (e) =>
|
|
1309
|
-
className:
|
|
1310
|
+
value: qt,
|
|
1311
|
+
onChange: (e) => Jt(e.target.value),
|
|
1312
|
+
className: j
|
|
1310
1313
|
})] }),
|
|
1311
|
-
/* @__PURE__ */
|
|
1314
|
+
/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("label", {
|
|
1312
1315
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
1313
1316
|
children: "Description"
|
|
1314
|
-
}), /* @__PURE__ */
|
|
1317
|
+
}), /* @__PURE__ */ x("textarea", {
|
|
1315
1318
|
rows: 3,
|
|
1316
|
-
value:
|
|
1317
|
-
onChange: (e) =>
|
|
1319
|
+
value: Yt,
|
|
1320
|
+
onChange: (e) => Xt(e.target.value),
|
|
1318
1321
|
className: "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)]"
|
|
1319
1322
|
})] }),
|
|
1320
|
-
/* @__PURE__ */
|
|
1323
|
+
/* @__PURE__ */ S("div", {
|
|
1321
1324
|
className: "grid grid-cols-1 gap-3 sm:grid-cols-2",
|
|
1322
|
-
children: [/* @__PURE__ */
|
|
1325
|
+
children: [/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("label", {
|
|
1323
1326
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
1324
1327
|
children: "Status"
|
|
1325
|
-
}), /* @__PURE__ */
|
|
1326
|
-
value:
|
|
1327
|
-
onChange: (e) =>
|
|
1328
|
-
className:
|
|
1329
|
-
children:
|
|
1328
|
+
}), /* @__PURE__ */ x("select", {
|
|
1329
|
+
value: Zt,
|
|
1330
|
+
onChange: (e) => Qt(e.target.value),
|
|
1331
|
+
className: j,
|
|
1332
|
+
children: Qe.map((e) => /* @__PURE__ */ x("option", {
|
|
1330
1333
|
value: e.value,
|
|
1331
1334
|
children: e.label
|
|
1332
1335
|
}, e.value))
|
|
1333
|
-
})] }), /* @__PURE__ */
|
|
1336
|
+
})] }), /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ S("label", {
|
|
1334
1337
|
className: "mb-1.5 block text-sm font-medium text-text-primary",
|
|
1335
1338
|
children: [
|
|
1336
1339
|
"Price (",
|
|
1337
|
-
|
|
1340
|
+
h.price.currency,
|
|
1338
1341
|
")"
|
|
1339
1342
|
]
|
|
1340
|
-
}), /* @__PURE__ */
|
|
1343
|
+
}), /* @__PURE__ */ x("input", {
|
|
1341
1344
|
type: "number",
|
|
1342
1345
|
min: 0,
|
|
1343
|
-
value:
|
|
1344
|
-
onChange: (e) =>
|
|
1345
|
-
className:
|
|
1346
|
+
value: $t,
|
|
1347
|
+
onChange: (e) => en(e.target.value),
|
|
1348
|
+
className: j
|
|
1346
1349
|
})] })]
|
|
1347
1350
|
})
|
|
1348
1351
|
]
|
|
1349
1352
|
}),
|
|
1350
|
-
/* @__PURE__ */
|
|
1353
|
+
/* @__PURE__ */ S(D, { children: [/* @__PURE__ */ x(C, {
|
|
1351
1354
|
type: "button",
|
|
1352
1355
|
variant: "outline",
|
|
1353
1356
|
onClick: () => H(!1),
|
|
1354
1357
|
children: "Cancel"
|
|
1355
|
-
}), /* @__PURE__ */
|
|
1358
|
+
}), /* @__PURE__ */ x(C, {
|
|
1356
1359
|
type: "submit",
|
|
1357
|
-
disabled:
|
|
1358
|
-
children:
|
|
1360
|
+
disabled: ot,
|
|
1361
|
+
children: ot ? "Saving…" : "Save changes"
|
|
1359
1362
|
})] })
|
|
1360
1363
|
]
|
|
1361
1364
|
})
|
|
1362
1365
|
})
|
|
1363
1366
|
}),
|
|
1364
|
-
/* @__PURE__ */
|
|
1365
|
-
open:
|
|
1367
|
+
/* @__PURE__ */ x(w, {
|
|
1368
|
+
open: vt,
|
|
1366
1369
|
onOpenChange: U,
|
|
1367
|
-
children: /* @__PURE__ */
|
|
1370
|
+
children: /* @__PURE__ */ S(T, {
|
|
1368
1371
|
className: "sm:max-w-md",
|
|
1369
|
-
children: [/* @__PURE__ */
|
|
1372
|
+
children: [/* @__PURE__ */ S(O, { children: [/* @__PURE__ */ x(k, { children: "Delete this property?" }), /* @__PURE__ */ S(E, { children: [h.title, " will be permanently removed. This cannot be undone."] })] }), /* @__PURE__ */ S(D, { children: [/* @__PURE__ */ x(C, {
|
|
1370
1373
|
type: "button",
|
|
1371
1374
|
variant: "outline",
|
|
1372
1375
|
onClick: () => U(!1),
|
|
1373
1376
|
children: "Cancel"
|
|
1374
|
-
}), /* @__PURE__ */
|
|
1377
|
+
}), /* @__PURE__ */ x(C, {
|
|
1375
1378
|
type: "button",
|
|
1376
1379
|
variant: "destructive",
|
|
1377
|
-
onClick:
|
|
1378
|
-
disabled:
|
|
1379
|
-
children:
|
|
1380
|
+
onClick: dn,
|
|
1381
|
+
disabled: ct,
|
|
1382
|
+
children: ct ? "Deleting…" : "Delete property"
|
|
1380
1383
|
})] })]
|
|
1381
1384
|
})
|
|
1382
1385
|
})
|
|
@@ -1384,6 +1387,6 @@ var j = {
|
|
|
1384
1387
|
});
|
|
1385
1388
|
};
|
|
1386
1389
|
//#endregion
|
|
1387
|
-
export {
|
|
1390
|
+
export { N as PropertyDetailPage };
|
|
1388
1391
|
|
|
1389
1392
|
//# sourceMappingURL=PropertyDetailPage.js.map
|