@burdenoff/microfe-housingvista 2026.827.1 → 2026.830.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,25 +1,26 @@
1
- import { cn as e, getRelativeTime as t } from "../utils/helpers.js";
2
- import { StatCard as n } from "../components/StatCard.js";
3
- import { PropertyCard as r } from "../components/PropertyCard.js";
4
- import { useTrackPageView as i } from "../hooks/useHousingVistaAnalytics.js";
5
- import { useDashboardStats as a, useProperties as o, useRecentActivities as s } from "../hooks/index.js";
1
+ import { useTr as e } from "../../shared/hooks/useTr.js";
2
+ import "../../shared/hooks/index.js";
3
+ import { cn as t, getRelativeTime as n } from "../utils/helpers.js";
4
+ import { StatCard as r } from "../components/StatCard.js";
5
+ import { PropertyCard as i } from "../components/PropertyCard.js";
6
+ import { useTrackPageView as a } from "../hooks/useHousingVistaAnalytics.js";
7
+ import { useDashboardStats as o, useProperties as s, useRecentActivities as c } from "../hooks/index.js";
6
8
  import "../components/index.js";
7
- import { useMemo as c } from "react";
8
- import { ArrowRight as l, BarChart3 as u, Building as d, Clock as f, DollarSign as p, Eye as m, FileText as h, Home as g, Plus as _, TrendingUp as v, Zap as y } from "lucide-react";
9
- import { useNavigate as b } from "react-router";
10
- import { jsx as x, jsxs as S } from "react/jsx-runtime";
11
- import { useI18n as C } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
9
+ import { useMemo as l } from "react";
10
+ import { ArrowRight as u, BarChart3 as d, Building as f, Clock as p, DollarSign as m, Eye as h, FileText as g, Home as _, Plus as v, TrendingUp as y, Zap as b } from "lucide-react";
11
+ import { useNavigate as x } from "react-router";
12
+ import { jsx as S, jsxs as C } from "react/jsx-runtime";
12
13
  import { AuroraBackground as w, Button as T, EmphasisPanel as E, GlassCard as D, GradientText as O, IllustratedEmptyState as k, NextSteps as A, PagePurpose as j } from "@burdenoff/fe-libs/ui";
13
14
  //#region src/housingvista/pages/HomePage.tsx
14
15
  var M = {
15
- property_listed: g,
16
- transaction_update: h,
17
- payment_received: p,
18
- maintenance_request: d,
19
- viewing_scheduled: m,
20
- document_uploaded: h,
21
- offer_received: v,
22
- lease_signed: h
16
+ property_listed: _,
17
+ transaction_update: g,
18
+ payment_received: m,
19
+ maintenance_request: f,
20
+ viewing_scheduled: h,
21
+ document_uploaded: g,
22
+ offer_received: y,
23
+ lease_signed: g
23
24
  }, N = {
24
25
  property_listed: "text-accent-purple",
25
26
  transaction_update: "text-status-info-text",
@@ -30,253 +31,250 @@ var M = {
30
31
  offer_received: "text-status-success-text",
31
32
  lease_signed: "text-accent-teal"
32
33
  }, P = () => {
33
- let g = b(), { t: P } = C();
34
- i("housingvista.dashboard.viewed");
35
- let { data: F } = a(), { data: I } = s(), { data: L } = o(), R = (e, t) => {
36
- let n = P(e);
37
- return n === e ? t : n;
38
- }, z = [
34
+ let _ = x(), P = e();
35
+ a("housingvista.dashboard.viewed");
36
+ let { data: F } = o(), { data: I } = c(), { data: L } = s(), R = [
39
37
  {
40
- title: R("housingvista.home.quickActions.addProperty.title", "Add Property"),
41
- description: R("housingvista.home.quickActions.addProperty.description", "List a new property"),
42
- icon: _,
38
+ title: P("housingvista.home.quickActions.addProperty.title", "Add Property"),
39
+ description: P("housingvista.home.quickActions.addProperty.description", "List a new property"),
40
+ icon: v,
43
41
  path: "properties/new"
44
42
  },
45
43
  {
46
- title: R("housingvista.home.quickActions.viewAnalytics.title", "View Analytics"),
47
- description: R("housingvista.home.quickActions.viewAnalytics.description", "Check performance metrics"),
48
- icon: u,
44
+ title: P("housingvista.home.quickActions.viewAnalytics.title", "View Analytics"),
45
+ description: P("housingvista.home.quickActions.viewAnalytics.description", "Check performance metrics"),
46
+ icon: d,
49
47
  path: "analytics"
50
48
  },
51
49
  {
52
- title: R("housingvista.home.quickActions.manageTransactions.title", "Manage Transactions"),
53
- description: R("housingvista.home.quickActions.manageTransactions.description", "Handle ongoing deals"),
54
- icon: h,
50
+ title: P("housingvista.home.quickActions.manageTransactions.title", "Manage Transactions"),
51
+ description: P("housingvista.home.quickActions.manageTransactions.description", "Handle ongoing deals"),
52
+ icon: g,
55
53
  path: "transactions"
56
54
  },
57
55
  {
58
- title: R("housingvista.home.quickActions.browseProperties.title", "Browse Properties"),
59
- description: R("housingvista.home.quickActions.browseProperties.description", "Explore listings"),
60
- icon: d,
56
+ title: P("housingvista.home.quickActions.browseProperties.title", "Browse Properties"),
57
+ description: P("housingvista.home.quickActions.browseProperties.description", "Explore listings"),
58
+ icon: f,
61
59
  path: "properties"
62
60
  }
63
- ], B = c(() => L.slice(0, 6), [L]);
64
- return /* @__PURE__ */ S("div", {
61
+ ], z = l(() => L.slice(0, 6), [L]);
62
+ return /* @__PURE__ */ C("div", {
65
63
  className: "space-y-6 p-6",
66
64
  children: [
67
- /* @__PURE__ */ S("div", {
65
+ /* @__PURE__ */ C("div", {
68
66
  className: "relative overflow-hidden rounded-card border border-border-seam bg-gloss-card p-6 shadow-pop",
69
- children: [/* @__PURE__ */ x(w, { intensity: "subtle" }), /* @__PURE__ */ S("div", {
67
+ children: [/* @__PURE__ */ S(w, { intensity: "subtle" }), /* @__PURE__ */ C("div", {
70
68
  className: "relative flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between",
71
- children: [/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("h1", {
69
+ children: [/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("h1", {
72
70
  className: "text-3xl font-bold text-text-primary",
73
- children: /* @__PURE__ */ x(O, { children: R("housingvista.home.header.title", "Welcome back!") })
74
- }), /* @__PURE__ */ x("p", {
71
+ children: /* @__PURE__ */ S(O, { children: P("housingvista.home.header.title", "Welcome back!") })
72
+ }), /* @__PURE__ */ S("p", {
75
73
  className: "mt-1 text-text-secondary",
76
- children: R("housingvista.home.header.description", "Here's what's happening with your real estate portfolio today.")
77
- })] }), /* @__PURE__ */ S(T, {
78
- onClick: () => g("properties/new"),
74
+ children: P("housingvista.home.header.description", "Here's what's happening with your real estate portfolio today.")
75
+ })] }), /* @__PURE__ */ C(T, {
76
+ onClick: () => _("properties/new"),
79
77
  className: "gap-2 self-start lg:self-auto",
80
- children: [/* @__PURE__ */ x(_, { className: "h-4 w-4" }), R("housingvista.home.header.quickAdd", "Quick Add")]
78
+ children: [/* @__PURE__ */ S(v, { className: "h-4 w-4" }), P("housingvista.home.header.quickAdd", "Quick Add")]
81
79
  })]
82
80
  })]
83
81
  }),
84
- /* @__PURE__ */ x(j, {
82
+ /* @__PURE__ */ S(j, {
85
83
  className: "max-w-3xl",
86
- children: R("housingvista.home.purpose", "Your real-estate command center. See your portfolio at a glance, jump to the things you do most, and pick up where you left off — from listing a property to tracking deals and analytics.")
84
+ children: P("housingvista.home.purpose", "Your real-estate command center. See your portfolio at a glance, jump to the things you do most, and pick up where you left off — from listing a property to tracking deals and analytics.")
87
85
  }),
88
- /* @__PURE__ */ x(A, {
86
+ /* @__PURE__ */ S(A, {
89
87
  storageKey: "housingvista-home",
90
88
  steps: [
91
89
  {
92
90
  id: "add-property",
93
- label: R("housingvista.home.nextSteps.addProperty", "List your first property"),
94
- description: R("housingvista.home.nextSteps.addPropertyDesc", "Create a market-ready listing in a few guided steps."),
95
- onClick: () => g("properties/new")
91
+ label: P("housingvista.home.nextSteps.addProperty", "List your first property"),
92
+ description: P("housingvista.home.nextSteps.addPropertyDesc", "Create a market-ready listing in a few guided steps."),
93
+ onClick: () => _("properties/new")
96
94
  },
97
95
  {
98
96
  id: "browse",
99
- label: R("housingvista.home.nextSteps.browse", "Browse properties"),
100
- description: R("housingvista.home.nextSteps.browseDesc", "Explore listings and open one for full details."),
101
- onClick: () => g("properties")
97
+ label: P("housingvista.home.nextSteps.browse", "Browse properties"),
98
+ description: P("housingvista.home.nextSteps.browseDesc", "Explore listings and open one for full details."),
99
+ onClick: () => _("properties")
102
100
  },
103
101
  {
104
102
  id: "analytics",
105
- label: R("housingvista.home.nextSteps.analytics", "Review your analytics"),
106
- description: R("housingvista.home.nextSteps.analyticsDesc", "Check portfolio performance and market insights."),
107
- onClick: () => g("analytics")
103
+ label: P("housingvista.home.nextSteps.analytics", "Review your analytics"),
104
+ description: P("housingvista.home.nextSteps.analyticsDesc", "Check portfolio performance and market insights."),
105
+ onClick: () => _("analytics")
108
106
  }
109
107
  ]
110
108
  }),
111
- /* @__PURE__ */ S("div", {
109
+ /* @__PURE__ */ C("div", {
112
110
  className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",
113
111
  children: [
114
- /* @__PURE__ */ x(n, {
115
- label: R("housingvista.home.stats.totalProperties", "Total Properties"),
112
+ /* @__PURE__ */ S(r, {
113
+ label: P("housingvista.home.stats.totalProperties", "Total Properties"),
116
114
  value: F.totalProperties,
117
- icon: /* @__PURE__ */ x(d, { className: "h-5 w-5" }),
115
+ icon: /* @__PURE__ */ S(f, { className: "h-5 w-5" }),
118
116
  trendData: F.trends.totalProperties,
119
117
  featured: !0
120
118
  }),
121
- /* @__PURE__ */ x(n, {
122
- label: R("housingvista.home.stats.activeListings", "Active Listings"),
119
+ /* @__PURE__ */ S(r, {
120
+ label: P("housingvista.home.stats.activeListings", "Active Listings"),
123
121
  value: F.activeTransactions,
124
- icon: /* @__PURE__ */ x(v, { className: "h-5 w-5" }),
122
+ icon: /* @__PURE__ */ S(y, { className: "h-5 w-5" }),
125
123
  trendData: F.trends.activeTransactions
126
124
  }),
127
- /* @__PURE__ */ x(n, {
128
- label: R("housingvista.home.stats.upcomingViewings", "Upcoming Viewings"),
125
+ /* @__PURE__ */ S(r, {
126
+ label: P("housingvista.home.stats.upcomingViewings", "Upcoming Viewings"),
129
127
  value: F.upcomingViewings,
130
- icon: /* @__PURE__ */ x(m, { className: "h-5 w-5" })
128
+ icon: /* @__PURE__ */ S(h, { className: "h-5 w-5" })
131
129
  }),
132
- /* @__PURE__ */ x(n, {
133
- label: R("housingvista.home.stats.monthlyRevenue", "Monthly Revenue"),
130
+ /* @__PURE__ */ S(r, {
131
+ label: P("housingvista.home.stats.monthlyRevenue", "Monthly Revenue"),
134
132
  value: F.monthlyRevenue,
135
133
  prefix: "$",
136
- icon: /* @__PURE__ */ x(p, { className: "h-5 w-5" }),
134
+ icon: /* @__PURE__ */ S(m, { className: "h-5 w-5" }),
137
135
  trendData: F.trends.monthlyRevenue
138
136
  })
139
137
  ]
140
138
  }),
141
- /* @__PURE__ */ S("div", {
139
+ /* @__PURE__ */ C("div", {
142
140
  className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
143
- children: [/* @__PURE__ */ x("div", {
141
+ children: [/* @__PURE__ */ S("div", {
144
142
  className: "lg:col-span-2",
145
- children: /* @__PURE__ */ S(E, {
143
+ children: /* @__PURE__ */ C(E, {
146
144
  className: "p-0",
147
- children: [/* @__PURE__ */ S("div", {
145
+ children: [/* @__PURE__ */ C("div", {
148
146
  className: "flex items-center gap-2 border-b border-border-seam px-5 py-4",
149
- children: [/* @__PURE__ */ x(f, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ x("h2", {
147
+ children: [/* @__PURE__ */ S(p, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ S("h2", {
150
148
  className: "text-base font-semibold text-text-primary",
151
- children: R("housingvista.home.recentActivity.title", "Recent Activity")
149
+ children: P("housingvista.home.recentActivity.title", "Recent Activity")
152
150
  })]
153
- }), /* @__PURE__ */ x("div", {
151
+ }), /* @__PURE__ */ S("div", {
154
152
  className: "p-5",
155
- children: I.length === 0 ? /* @__PURE__ */ S("div", {
153
+ children: I.length === 0 ? /* @__PURE__ */ C("div", {
156
154
  className: "flex flex-col items-center gap-2 py-8 text-center",
157
155
  children: [
158
- /* @__PURE__ */ x("div", {
156
+ /* @__PURE__ */ S("div", {
159
157
  className: "rounded-full bg-bg-sunken p-3",
160
- children: /* @__PURE__ */ x(f, { className: "h-6 w-6 text-text-secondary" })
158
+ children: /* @__PURE__ */ S(p, { className: "h-6 w-6 text-text-secondary" })
161
159
  }),
162
- /* @__PURE__ */ x("p", {
160
+ /* @__PURE__ */ S("p", {
163
161
  className: "text-sm font-medium text-text-primary",
164
- children: "No activity yet"
162
+ children: P("housingvista.home.recentActivity.empty.title", "No activity yet")
165
163
  }),
166
- /* @__PURE__ */ x("p", {
164
+ /* @__PURE__ */ S("p", {
167
165
  className: "max-w-xs text-xs text-text-secondary",
168
- children: "As you list properties, book viewings, and close deals, your latest updates appear here."
166
+ children: P("housingvista.home.recentActivity.empty.description", "As you list properties, book viewings, and close deals, your latest updates appear here.")
169
167
  })
170
168
  ]
171
- }) : /* @__PURE__ */ S("ol", {
169
+ }) : /* @__PURE__ */ C("ol", {
172
170
  className: "relative space-y-5",
173
- children: [/* @__PURE__ */ x("span", {
171
+ children: [/* @__PURE__ */ S("span", {
174
172
  "aria-hidden": !0,
175
173
  className: "absolute bottom-2 left-[18px] top-2 w-px bg-border-seam"
176
- }), I.slice(0, 6).map((n) => {
177
- let r = M[n.type] ?? m;
178
- return /* @__PURE__ */ S("li", {
174
+ }), I.slice(0, 6).map((e) => {
175
+ let r = M[e.type] ?? h;
176
+ return /* @__PURE__ */ C("li", {
179
177
  className: "relative flex items-start gap-4",
180
- children: [/* @__PURE__ */ x("span", {
181
- className: e("relative z-10 flex h-9 w-9 shrink-0 items-center justify-center rounded-full border border-border-seam bg-bg-surface shadow-elevation-1", N[n.type] ?? "text-text-secondary"),
182
- children: /* @__PURE__ */ x(r, { className: "h-4 w-4" })
183
- }), /* @__PURE__ */ S("div", {
178
+ children: [/* @__PURE__ */ S("span", {
179
+ className: t("relative z-10 flex h-9 w-9 shrink-0 items-center justify-center rounded-full border border-border-seam bg-bg-surface shadow-elevation-1", N[e.type] ?? "text-text-secondary"),
180
+ children: /* @__PURE__ */ S(r, { className: "h-4 w-4" })
181
+ }), /* @__PURE__ */ C("div", {
184
182
  className: "min-w-0 flex-1 pt-0.5",
185
183
  children: [
186
- /* @__PURE__ */ S("div", {
184
+ /* @__PURE__ */ C("div", {
187
185
  className: "flex flex-wrap items-baseline justify-between gap-x-3 gap-y-0.5",
188
- children: [/* @__PURE__ */ x("p", {
186
+ children: [/* @__PURE__ */ S("p", {
189
187
  className: "text-sm font-medium text-text-primary",
190
- children: n.title
191
- }), /* @__PURE__ */ x("p", {
188
+ children: e.title
189
+ }), /* @__PURE__ */ S("p", {
192
190
  className: "shrink-0 text-xs text-text-secondary",
193
- children: t(n.timestamp)
191
+ children: n(e.timestamp)
194
192
  })]
195
193
  }),
196
- /* @__PURE__ */ x("p", {
194
+ /* @__PURE__ */ S("p", {
197
195
  className: "mt-0.5 text-xs text-text-secondary",
198
- children: n.description
196
+ children: e.description
199
197
  }),
200
- n.actorName && /* @__PURE__ */ x("p", {
198
+ e.actorName && /* @__PURE__ */ S("p", {
201
199
  className: "mt-0.5 text-xs text-text-secondary",
202
- children: n.actorName
200
+ children: e.actorName
203
201
  })
204
202
  ]
205
203
  })]
206
- }, n.id);
204
+ }, e.id);
207
205
  })]
208
206
  })
209
207
  })]
210
208
  })
211
- }), /* @__PURE__ */ x("div", {
209
+ }), /* @__PURE__ */ S("div", {
212
210
  className: "lg:col-span-1",
213
- children: /* @__PURE__ */ S(D, {
211
+ children: /* @__PURE__ */ C(D, {
214
212
  treatment: "plain",
215
213
  className: "h-full border-border-seam",
216
- children: [/* @__PURE__ */ S("div", {
214
+ children: [/* @__PURE__ */ C("div", {
217
215
  className: "flex items-center gap-2 border-b border-border-seam px-5 py-4",
218
- children: [/* @__PURE__ */ x(y, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ x("h2", {
216
+ children: [/* @__PURE__ */ S(b, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ S("h2", {
219
217
  className: "text-base font-semibold text-text-primary",
220
- children: R("housingvista.home.quickActions.title", "Quick Actions")
218
+ children: P("housingvista.home.quickActions.title", "Quick Actions")
221
219
  })]
222
- }), /* @__PURE__ */ x("div", {
220
+ }), /* @__PURE__ */ S("div", {
223
221
  className: "space-y-2 p-4",
224
- children: z.map((t, n) => {
225
- let r = t.icon;
226
- return /* @__PURE__ */ S("button", {
227
- onClick: () => g(t.path),
222
+ children: R.map((e, n) => {
223
+ let r = e.icon;
224
+ return /* @__PURE__ */ C("button", {
225
+ onClick: () => _(e.path),
228
226
  className: "group/action flex min-h-[44px] w-full items-center gap-3 rounded-lg border border-border-seam p-3 text-left transition-colors hover:bg-bg-sunken/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]",
229
227
  children: [
230
- /* @__PURE__ */ x("div", {
231
- className: e("rounded-lg bg-bg-sunken p-2", n % 2 == 0 ? "text-accent-teal" : "text-accent-blue"),
232
- children: /* @__PURE__ */ x(r, { className: "h-5 w-5" })
233
- }),
234
228
  /* @__PURE__ */ S("div", {
229
+ className: t("rounded-lg bg-bg-sunken p-2", n % 2 == 0 ? "text-accent-teal" : "text-accent-blue"),
230
+ children: /* @__PURE__ */ S(r, { className: "h-5 w-5" })
231
+ }),
232
+ /* @__PURE__ */ C("div", {
235
233
  className: "min-w-0 flex-1",
236
- children: [/* @__PURE__ */ x("div", {
234
+ children: [/* @__PURE__ */ S("div", {
237
235
  className: "text-sm font-medium text-text-primary",
238
- children: t.title
239
- }), /* @__PURE__ */ x("div", {
236
+ children: e.title
237
+ }), /* @__PURE__ */ S("div", {
240
238
  className: "text-xs text-text-secondary",
241
- children: t.description
239
+ children: e.description
242
240
  })]
243
241
  }),
244
- /* @__PURE__ */ x(l, { className: "h-4 w-4 shrink-0 text-text-secondary opacity-0 transition-opacity group-hover/action:opacity-100" })
242
+ /* @__PURE__ */ S(u, { className: "h-4 w-4 shrink-0 text-text-secondary opacity-0 transition-opacity group-hover/action:opacity-100" })
245
243
  ]
246
- }, t.title);
244
+ }, e.title);
247
245
  })
248
246
  })]
249
247
  })
250
248
  })]
251
249
  }),
252
- /* @__PURE__ */ S(D, {
250
+ /* @__PURE__ */ C(D, {
253
251
  treatment: "plain",
254
252
  className: "border-border-seam",
255
- children: [/* @__PURE__ */ S("div", {
253
+ children: [/* @__PURE__ */ C("div", {
256
254
  className: "flex items-center justify-between border-b border-border-seam px-5 py-4",
257
- children: [/* @__PURE__ */ x("h2", {
255
+ children: [/* @__PURE__ */ S("h2", {
258
256
  className: "text-base font-semibold text-text-primary",
259
- children: R("housingvista.home.recentProperties.title", "Recent Properties")
260
- }), /* @__PURE__ */ S("button", {
261
- onClick: () => g("properties"),
257
+ children: P("housingvista.home.recentProperties.title", "Recent Properties")
258
+ }), /* @__PURE__ */ C("button", {
259
+ onClick: () => _("properties"),
262
260
  className: "inline-flex min-h-[44px] items-center gap-1 text-sm font-medium text-text-secondary transition-colors hover:text-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)] rounded-md px-1",
263
- children: [R("housingvista.home.recentProperties.viewAll", "View All"), /* @__PURE__ */ x(l, { className: "h-4 w-4" })]
261
+ children: [P("housingvista.home.recentProperties.viewAll", "View All"), /* @__PURE__ */ S(u, { className: "h-4 w-4" })]
264
262
  })]
265
- }), B.length === 0 ? /* @__PURE__ */ x("div", {
263
+ }), z.length === 0 ? /* @__PURE__ */ S("div", {
266
264
  className: "p-4",
267
- children: /* @__PURE__ */ x(k, {
265
+ children: /* @__PURE__ */ S(k, {
268
266
  illustration: "empty-data",
269
- title: R("housingvista.home.recentProperties.empty.title", "No properties yet"),
270
- description: R("housingvista.home.recentProperties.empty.description", "List your first property to see it appear here."),
271
- action: /* @__PURE__ */ S(T, {
272
- onClick: () => g("properties/new"),
267
+ title: P("housingvista.home.recentProperties.empty.title", "No properties yet"),
268
+ description: P("housingvista.home.recentProperties.empty.description", "List your first property to see it appear here."),
269
+ action: /* @__PURE__ */ C(T, {
270
+ onClick: () => _("properties/new"),
273
271
  className: "gap-2",
274
- children: [/* @__PURE__ */ x(_, { className: "h-4 w-4" }), R("housingvista.home.header.quickAdd", "Quick Add")]
272
+ children: [/* @__PURE__ */ S(v, { className: "h-4 w-4" }), P("housingvista.home.header.quickAdd", "Quick Add")]
275
273
  })
276
274
  })
277
- }) : /* @__PURE__ */ x("div", {
275
+ }) : /* @__PURE__ */ S("div", {
278
276
  className: "grid grid-cols-1 gap-4 p-4 sm:grid-cols-2 lg:grid-cols-3",
279
- children: B.map((e) => /* @__PURE__ */ x(r, {
277
+ children: z.map((e) => /* @__PURE__ */ S(i, {
280
278
  id: e.id,
281
279
  title: e.title,
282
280
  price: e.price.amount,
@@ -290,7 +288,7 @@ var M = {
290
288
  imageUrl: e.images[0]?.url,
291
289
  status: e.status.replace("_", " "),
292
290
  type: e.category,
293
- onClick: () => g(`properties/${e.id}`),
291
+ onClick: () => _(`properties/${e.id}`),
294
292
  reraStatus: e.reraVerificationStatus
295
293
  }, e.id))
296
294
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"HomePage.js","names":[],"sources":["../../../src/housingvista/pages/HomePage.tsx"],"sourcesContent":["/**\n * HousingVista Dashboard / Home Page\n * Migrated from legacy housingvista-frontend dashboard.tsx\n * @module housingvista\n */\n\nimport { useMemo } from 'react';\nimport { useNavigate } from 'react-router';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n AuroraBackground,\n GradientText,\n Button,\n GlassCard,\n EmphasisPanel,\n IllustratedEmptyState,\n PagePurpose,\n NextSteps,\n} from '@burdenoff/fe-libs/ui';\nimport {\n Building,\n TrendingUp,\n Eye,\n DollarSign,\n Plus,\n BarChart3,\n FileText,\n Home,\n ArrowRight,\n Clock,\n Zap,\n} from 'lucide-react';\nimport { StatCard, PropertyCard } from '../components';\nimport { useDashboardStats, useRecentActivities, useProperties } from '../hooks';\nimport { useTrackPageView } from '../hooks/useHousingVistaAnalytics';\nimport { cn, getRelativeTime } from '../utils/helpers';\nimport type { RecentActivity } from '../types';\n\n// ---- Activity icon mapping ----\nconst activityIconMap: Record<RecentActivity['type'], typeof Eye> = {\n property_listed: Home,\n transaction_update: FileText,\n payment_received: DollarSign,\n maintenance_request: Building,\n viewing_scheduled: Eye,\n document_uploaded: FileText,\n offer_received: TrendingUp,\n lease_signed: FileText,\n};\n\nconst activityColorMap: Record<RecentActivity['type'], string> = {\n property_listed: 'text-accent-purple',\n transaction_update: 'text-status-info-text',\n payment_received: 'text-status-success-text',\n maintenance_request: 'text-status-warning-text',\n viewing_scheduled: 'text-status-info-text',\n document_uploaded: 'text-status-info-text',\n offer_received: 'text-status-success-text',\n lease_signed: 'text-accent-teal',\n};\n\nexport const HomePage = () => {\n const navigate = useNavigate();\n const { t } = useI18n();\n useTrackPageView('housingvista.dashboard.viewed');\n const { data: stats } = useDashboardStats();\n const { data: activities } = useRecentActivities();\n const { data: properties } = useProperties();\n\n const tr = (key: string, fallback: string) => {\n const translated = t(key);\n return translated === key ? fallback : translated;\n };\n\n const quickActions = [\n {\n title: tr('housingvista.home.quickActions.addProperty.title', 'Add Property'),\n description: tr('housingvista.home.quickActions.addProperty.description', 'List a new property'),\n icon: Plus,\n path: 'properties/new',\n },\n {\n title: tr('housingvista.home.quickActions.viewAnalytics.title', 'View Analytics'),\n description: tr('housingvista.home.quickActions.viewAnalytics.description', 'Check performance metrics'),\n icon: BarChart3,\n path: 'analytics',\n },\n {\n title: tr('housingvista.home.quickActions.manageTransactions.title', 'Manage Transactions'),\n description: tr('housingvista.home.quickActions.manageTransactions.description', 'Handle ongoing deals'),\n icon: FileText,\n path: 'transactions',\n },\n {\n title: tr('housingvista.home.quickActions.browseProperties.title', 'Browse Properties'),\n description: tr('housingvista.home.quickActions.browseProperties.description', 'Explore listings'),\n icon: Building,\n path: 'properties',\n },\n ];\n\n const recentProperties = useMemo(() => properties.slice(0, 6), [properties]);\n\n return (\n <div className=\"space-y-6 p-6\">\n {/* Welcome Header — Boff UI 2.0 aurora hero (one per MFE) */}\n <div className=\"relative overflow-hidden rounded-card border border-border-seam bg-gloss-card p-6 shadow-pop\">\n <AuroraBackground intensity=\"subtle\" />\n <div className=\"relative flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between\">\n <div>\n <h1 className=\"text-3xl font-bold text-text-primary\">\n <GradientText>{tr('housingvista.home.header.title', 'Welcome back!')}</GradientText>\n </h1>\n <p className=\"mt-1 text-text-secondary\">\n {tr(\n 'housingvista.home.header.description',\n \"Here's what's happening with your real estate portfolio today.\"\n )}\n </p>\n </div>\n <Button onClick={() => navigate('properties/new')} className=\"gap-2 self-start lg:self-auto\">\n <Plus className=\"h-4 w-4\" />\n {tr('housingvista.home.header.quickAdd', 'Quick Add')}\n </Button>\n </div>\n </div>\n\n <PagePurpose className=\"max-w-3xl\">\n {tr(\n 'housingvista.home.purpose',\n 'Your real-estate command center. See your portfolio at a glance, jump to the things you do most, and pick up where you left off — from listing a property to tracking deals and analytics.'\n )}\n </PagePurpose>\n\n <NextSteps\n storageKey=\"housingvista-home\"\n steps={[\n {\n id: 'add-property',\n label: tr('housingvista.home.nextSteps.addProperty', 'List your first property'),\n description: tr(\n 'housingvista.home.nextSteps.addPropertyDesc',\n 'Create a market-ready listing in a few guided steps.'\n ),\n onClick: () => navigate('properties/new'),\n },\n {\n id: 'browse',\n label: tr('housingvista.home.nextSteps.browse', 'Browse properties'),\n description: tr(\n 'housingvista.home.nextSteps.browseDesc',\n 'Explore listings and open one for full details.'\n ),\n onClick: () => navigate('properties'),\n },\n {\n id: 'analytics',\n label: tr('housingvista.home.nextSteps.analytics', 'Review your analytics'),\n description: tr(\n 'housingvista.home.nextSteps.analyticsDesc',\n 'Check portfolio performance and market insights.'\n ),\n onClick: () => navigate('analytics'),\n },\n ]}\n />\n\n {/* Stats Grid */}\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n <StatCard\n label={tr('housingvista.home.stats.totalProperties', 'Total Properties')}\n value={stats.totalProperties}\n icon={<Building className=\"h-5 w-5\" />}\n trendData={stats.trends.totalProperties}\n featured\n />\n <StatCard\n label={tr('housingvista.home.stats.activeListings', 'Active Listings')}\n value={stats.activeTransactions}\n icon={<TrendingUp className=\"h-5 w-5\" />}\n trendData={stats.trends.activeTransactions}\n />\n <StatCard\n label={tr('housingvista.home.stats.upcomingViewings', 'Upcoming Viewings')}\n value={stats.upcomingViewings}\n icon={<Eye className=\"h-5 w-5\" />}\n />\n <StatCard\n label={tr('housingvista.home.stats.monthlyRevenue', 'Monthly Revenue')}\n value={stats.monthlyRevenue}\n prefix=\"$\"\n icon={<DollarSign className=\"h-5 w-5\" />}\n trendData={stats.trends.monthlyRevenue}\n />\n </div>\n\n {/* Recent Activity + Quick Actions */}\n <div className=\"grid grid-cols-1 gap-6 lg:grid-cols-3\">\n {/* Recent Activity — primary insight zone (one EmphasisPanel per page) */}\n <div className=\"lg:col-span-2\">\n <EmphasisPanel className=\"p-0\">\n <div className=\"flex items-center gap-2 border-b border-border-seam px-5 py-4\">\n <Clock className=\"h-4 w-4 text-text-secondary\" />\n <h2 className=\"text-base font-semibold text-text-primary\">\n {tr('housingvista.home.recentActivity.title', 'Recent Activity')}\n </h2>\n </div>\n <div className=\"p-5\">\n {activities.length === 0 ? (\n <div className=\"flex flex-col items-center gap-2 py-8 text-center\">\n <div className=\"rounded-full bg-bg-sunken p-3\">\n <Clock className=\"h-6 w-6 text-text-secondary\" />\n </div>\n <p className=\"text-sm font-medium text-text-primary\">No activity yet</p>\n <p className=\"max-w-xs text-xs text-text-secondary\">\n As you list properties, book viewings, and close deals, your latest updates appear here.\n </p>\n </div>\n ) : (\n <ol className=\"relative space-y-5\">\n {/* Connecting rail */}\n <span aria-hidden className=\"absolute bottom-2 left-[18px] top-2 w-px bg-border-seam\" />\n {activities.slice(0, 6).map((activity) => {\n const Icon = activityIconMap[activity.type] ?? Eye;\n const colorClass = activityColorMap[activity.type] ?? 'text-text-secondary';\n return (\n <li key={activity.id} className=\"relative flex items-start gap-4\">\n <span\n className={cn(\n 'relative z-10 flex h-9 w-9 shrink-0 items-center justify-center rounded-full border border-border-seam bg-bg-surface shadow-elevation-1',\n colorClass\n )}\n >\n <Icon className=\"h-4 w-4\" />\n </span>\n <div className=\"min-w-0 flex-1 pt-0.5\">\n <div className=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-0.5\">\n <p className=\"text-sm font-medium text-text-primary\">{activity.title}</p>\n <p className=\"shrink-0 text-xs text-text-secondary\">\n {getRelativeTime(activity.timestamp)}\n </p>\n </div>\n <p className=\"mt-0.5 text-xs text-text-secondary\">{activity.description}</p>\n {activity.actorName && (\n <p className=\"mt-0.5 text-xs text-text-secondary\">{activity.actorName}</p>\n )}\n </div>\n </li>\n );\n })}\n </ol>\n )}\n </div>\n </EmphasisPanel>\n </div>\n\n {/* Quick Actions */}\n <div className=\"lg:col-span-1\">\n <GlassCard treatment=\"plain\" className=\"h-full border-border-seam\">\n <div className=\"flex items-center gap-2 border-b border-border-seam px-5 py-4\">\n <Zap className=\"h-4 w-4 text-text-secondary\" />\n <h2 className=\"text-base font-semibold text-text-primary\">\n {tr('housingvista.home.quickActions.title', 'Quick Actions')}\n </h2>\n </div>\n <div className=\"space-y-2 p-4\">\n {quickActions.map((action, index) => {\n const Icon = action.icon;\n const accent = index % 2 === 0 ? 'text-accent-teal' : 'text-accent-blue';\n return (\n <button\n key={action.title}\n onClick={() => navigate(action.path)}\n className=\"group/action flex min-h-[44px] w-full items-center gap-3 rounded-lg border border-border-seam p-3 text-left transition-colors hover:bg-bg-sunken/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]\"\n >\n <div className={cn('rounded-lg bg-bg-sunken p-2', accent)}>\n <Icon className=\"h-5 w-5\" />\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-sm font-medium text-text-primary\">{action.title}</div>\n <div className=\"text-xs text-text-secondary\">{action.description}</div>\n </div>\n <ArrowRight className=\"h-4 w-4 shrink-0 text-text-secondary opacity-0 transition-opacity group-hover/action:opacity-100\" />\n </button>\n );\n })}\n </div>\n </GlassCard>\n </div>\n </div>\n\n {/* Recent Properties */}\n <GlassCard treatment=\"plain\" className=\"border-border-seam\">\n <div className=\"flex items-center justify-between border-b border-border-seam px-5 py-4\">\n <h2 className=\"text-base font-semibold text-text-primary\">\n {tr('housingvista.home.recentProperties.title', 'Recent Properties')}\n </h2>\n <button\n onClick={() => navigate('properties')}\n className=\"inline-flex min-h-[44px] items-center gap-1 text-sm font-medium text-text-secondary transition-colors hover:text-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)] rounded-md px-1\"\n >\n {tr('housingvista.home.recentProperties.viewAll', 'View All')}\n <ArrowRight className=\"h-4 w-4\" />\n </button>\n </div>\n {recentProperties.length === 0 ? (\n <div className=\"p-4\">\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title={tr('housingvista.home.recentProperties.empty.title', 'No properties yet')}\n description={tr(\n 'housingvista.home.recentProperties.empty.description',\n 'List your first property to see it appear here.'\n )}\n action={\n <Button onClick={() => navigate('properties/new')} className=\"gap-2\">\n <Plus className=\"h-4 w-4\" />\n {tr('housingvista.home.header.quickAdd', 'Quick Add')}\n </Button>\n }\n />\n </div>\n ) : (\n <div className=\"grid grid-cols-1 gap-4 p-4 sm:grid-cols-2 lg:grid-cols-3\">\n {recentProperties.map((property) => (\n <PropertyCard\n key={property.id}\n id={property.id}\n title={property.title}\n price={property.price.amount}\n priceType={property.price.type === 'rent' ? 'rent' : 'sale'}\n pricePeriod={property.price.period}\n currency={property.price.currency}\n location={`${property.location.neighborhood}, ${property.location.city}`}\n bedrooms={property.specifications.bedrooms}\n bathrooms={property.specifications.bathrooms}\n area={property.specifications.totalArea}\n imageUrl={property.images[0]?.url}\n status={property.status.replace('_', ' ')}\n type={property.category}\n onClick={() => navigate(`properties/${property.id}`)}\n reraStatus={property.reraVerificationStatus}\n />\n ))}\n </div>\n )}\n </GlassCard>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AAuCA,IAAM,IAA8D;CAClE,iBAAiB;CACjB,oBAAoB;CACpB,kBAAkB;CAClB,qBAAqB;CACrB,mBAAmB;CACnB,mBAAmB;CACnB,gBAAgB;CAChB,cAAc;CACf,EAEK,IAA2D;CAC/D,iBAAiB;CACjB,oBAAoB;CACpB,kBAAkB;CAClB,qBAAqB;CACrB,mBAAmB;CACnB,mBAAmB;CACnB,gBAAgB;CAChB,cAAc;CACf,EAEY,UAAiB;CAC5B,IAAM,IAAW,GAAa,EACxB,EAAE,SAAM,GAAS;AACvB,GAAiB,gCAAgC;CACjD,IAAM,EAAE,MAAM,MAAU,GAAmB,EACrC,EAAE,MAAM,MAAe,GAAqB,EAC5C,EAAE,MAAM,MAAe,GAAe,EAEtC,KAAM,GAAa,MAAqB;EAC5C,IAAM,IAAa,EAAE,EAAI;AACzB,SAAO,MAAe,IAAM,IAAW;IAGnC,IAAe;EACnB;GACE,OAAO,EAAG,oDAAoD,eAAe;GAC7E,aAAa,EAAG,0DAA0D,sBAAsB;GAChG,MAAM;GACN,MAAM;GACP;EACD;GACE,OAAO,EAAG,sDAAsD,iBAAiB;GACjF,aAAa,EAAG,4DAA4D,4BAA4B;GACxG,MAAM;GACN,MAAM;GACP;EACD;GACE,OAAO,EAAG,2DAA2D,sBAAsB;GAC3F,aAAa,EAAG,iEAAiE,uBAAuB;GACxG,MAAM;GACN,MAAM;GACP;EACD;GACE,OAAO,EAAG,yDAAyD,oBAAoB;GACvF,aAAa,EAAG,+DAA+D,mBAAmB;GAClG,MAAM;GACN,MAAM;GACP;EACF,EAEK,IAAmB,QAAc,EAAW,MAAM,GAAG,EAAE,EAAE,CAAC,EAAW,CAAC;AAE5E,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GAEE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD,EAAkB,WAAU,UAAW,CAAA,EACvC,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;MAAI,WAAU;gBACZ,kBAAC,GAAD,EAAA,UAAe,EAAG,kCAAkC,gBAAgB,EAAgB,CAAA;MACjF,CAAA,EACL,kBAAC,KAAD;MAAG,WAAU;gBACV,EACC,wCACA,iEACD;MACC,CAAA,CACA,EAAA,CAAA,EACN,kBAAC,GAAD;MAAQ,eAAe,EAAS,iBAAiB;MAAE,WAAU;gBAA7D,CACE,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA,EAC3B,EAAG,qCAAqC,YAAY,CAC9C;QACL;OACF;;GAEN,kBAAC,GAAD;IAAa,WAAU;cACpB,EACC,6BACA,6LACD;IACW,CAAA;GAEd,kBAAC,GAAD;IACE,YAAW;IACX,OAAO;KACL;MACE,IAAI;MACJ,OAAO,EAAG,2CAA2C,2BAA2B;MAChF,aAAa,EACX,+CACA,uDACD;MACD,eAAe,EAAS,iBAAiB;MAC1C;KACD;MACE,IAAI;MACJ,OAAO,EAAG,sCAAsC,oBAAoB;MACpE,aAAa,EACX,0CACA,kDACD;MACD,eAAe,EAAS,aAAa;MACtC;KACD;MACE,IAAI;MACJ,OAAO,EAAG,yCAAyC,wBAAwB;MAC3E,aAAa,EACX,6CACA,mDACD;MACD,eAAe,EAAS,YAAY;MACrC;KACF;IACD,CAAA;GAGF,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,GAAD;MACE,OAAO,EAAG,2CAA2C,mBAAmB;MACxE,OAAO,EAAM;MACb,MAAM,kBAAC,GAAD,EAAU,WAAU,WAAY,CAAA;MACtC,WAAW,EAAM,OAAO;MACxB,UAAA;MACA,CAAA;KACF,kBAAC,GAAD;MACE,OAAO,EAAG,0CAA0C,kBAAkB;MACtE,OAAO,EAAM;MACb,MAAM,kBAAC,GAAD,EAAY,WAAU,WAAY,CAAA;MACxC,WAAW,EAAM,OAAO;MACxB,CAAA;KACF,kBAAC,GAAD;MACE,OAAO,EAAG,4CAA4C,oBAAoB;MAC1E,OAAO,EAAM;MACb,MAAM,kBAAC,GAAD,EAAK,WAAU,WAAY,CAAA;MACjC,CAAA;KACF,kBAAC,GAAD;MACE,OAAO,EAAG,0CAA0C,kBAAkB;MACtE,OAAO,EAAM;MACb,QAAO;MACP,MAAM,kBAAC,GAAD,EAAY,WAAU,WAAY,CAAA;MACxC,WAAW,EAAM,OAAO;MACxB,CAAA;KACE;;GAGN,kBAAC,OAAD;IAAK,WAAU;cAAf,CAEE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MAAe,WAAU;gBAAzB,CACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,GAAD,EAAO,WAAU,+BAAgC,CAAA,EACjD,kBAAC,MAAD;QAAI,WAAU;kBACX,EAAG,0CAA0C,kBAAkB;QAC7D,CAAA,CACD;UACN,kBAAC,OAAD;OAAK,WAAU;iBACZ,EAAW,WAAW,IACrB,kBAAC,OAAD;QAAK,WAAU;kBAAf;SACE,kBAAC,OAAD;UAAK,WAAU;oBACb,kBAAC,GAAD,EAAO,WAAU,+BAAgC,CAAA;UAC7C,CAAA;SACN,kBAAC,KAAD;UAAG,WAAU;oBAAwC;UAAmB,CAAA;SACxE,kBAAC,KAAD;UAAG,WAAU;oBAAuC;UAEhD,CAAA;SACA;YAEN,kBAAC,MAAD;QAAI,WAAU;kBAAd,CAEE,kBAAC,QAAD;SAAM,eAAA;SAAY,WAAU;SAA4D,CAAA,EACvF,EAAW,MAAM,GAAG,EAAE,CAAC,KAAK,MAAa;SACxC,IAAM,IAAO,EAAgB,EAAS,SAAS;AAE/C,gBACE,kBAAC,MAAD;UAAsB,WAAU;oBAAhC,CACE,kBAAC,QAAD;WACE,WAAW,EACT,2IALW,EAAiB,EAAS,SAAS,sBAO/C;qBAED,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA;WACvB,CAAA,EACP,kBAAC,OAAD;WAAK,WAAU;qBAAf;YACE,kBAAC,OAAD;aAAK,WAAU;uBAAf,CACE,kBAAC,KAAD;cAAG,WAAU;wBAAyC,EAAS;cAAU,CAAA,EACzE,kBAAC,KAAD;cAAG,WAAU;wBACV,EAAgB,EAAS,UAAU;cAClC,CAAA,CACA;;YACN,kBAAC,KAAD;aAAG,WAAU;uBAAsC,EAAS;aAAgB,CAAA;YAC3E,EAAS,aACR,kBAAC,KAAD;aAAG,WAAU;uBAAsC,EAAS;aAAc,CAAA;YAExE;aACH;YArBI,EAAS,GAqBb;UAEP,CACC;;OAEH,CAAA,CACQ;;KACZ,CAAA,EAGN,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MAAW,WAAU;MAAQ,WAAU;gBAAvC,CACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,GAAD,EAAK,WAAU,+BAAgC,CAAA,EAC/C,kBAAC,MAAD;QAAI,WAAU;kBACX,EAAG,wCAAwC,gBAAgB;QACzD,CAAA,CACD;UACN,kBAAC,OAAD;OAAK,WAAU;iBACZ,EAAa,KAAK,GAAQ,MAAU;QACnC,IAAM,IAAO,EAAO;AAEpB,eACE,kBAAC,UAAD;SAEE,eAAe,EAAS,EAAO,KAAK;SACpC,WAAU;mBAHZ;UAKE,kBAAC,OAAD;WAAK,WAAW,EAAG,+BAPR,IAAQ,KAAM,IAAI,qBAAqB,mBAOO;qBACvD,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA;WACxB,CAAA;UACN,kBAAC,OAAD;WAAK,WAAU;qBAAf,CACE,kBAAC,OAAD;YAAK,WAAU;sBAAyC,EAAO;YAAY,CAAA,EAC3E,kBAAC,OAAD;YAAK,WAAU;sBAA+B,EAAO;YAAkB,CAAA,CACnE;;UACN,kBAAC,GAAD,EAAY,WAAU,oGAAqG,CAAA;UACpH;WAZF,EAAO,MAYL;SAEX;OACE,CAAA,CACI;;KACR,CAAA,CACF;;GAGN,kBAAC,GAAD;IAAW,WAAU;IAAQ,WAAU;cAAvC,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,MAAD;MAAI,WAAU;gBACX,EAAG,4CAA4C,oBAAoB;MACjE,CAAA,EACL,kBAAC,UAAD;MACE,eAAe,EAAS,aAAa;MACrC,WAAU;gBAFZ,CAIG,EAAG,8CAA8C,WAAW,EAC7D,kBAAC,GAAD,EAAY,WAAU,WAAY,CAAA,CAC3B;QACL;QACL,EAAiB,WAAW,IAC3B,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MACE,cAAa;MACb,OAAO,EAAG,kDAAkD,oBAAoB;MAChF,aAAa,EACX,wDACA,kDACD;MACD,QACE,kBAAC,GAAD;OAAQ,eAAe,EAAS,iBAAiB;OAAE,WAAU;iBAA7D,CACE,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA,EAC3B,EAAG,qCAAqC,YAAY,CAC9C;;MAEX,CAAA;KACE,CAAA,GAEN,kBAAC,OAAD;KAAK,WAAU;eACZ,EAAiB,KAAK,MACrB,kBAAC,GAAD;MAEE,IAAI,EAAS;MACb,OAAO,EAAS;MAChB,OAAO,EAAS,MAAM;MACtB,WAAW,EAAS,MAAM,SAAS,SAAS,SAAS;MACrD,aAAa,EAAS,MAAM;MAC5B,UAAU,EAAS,MAAM;MACzB,UAAU,GAAG,EAAS,SAAS,aAAa,IAAI,EAAS,SAAS;MAClE,UAAU,EAAS,eAAe;MAClC,WAAW,EAAS,eAAe;MACnC,MAAM,EAAS,eAAe;MAC9B,UAAU,EAAS,OAAO,IAAI;MAC9B,QAAQ,EAAS,OAAO,QAAQ,KAAK,IAAI;MACzC,MAAM,EAAS;MACf,eAAe,EAAS,cAAc,EAAS,KAAK;MACpD,YAAY,EAAS;MACrB,EAhBK,EAAS,GAgBd,CACF;KACE,CAAA,CAEE;;GACR"}
1
+ {"version":3,"file":"HomePage.js","names":[],"sources":["../../../src/housingvista/pages/HomePage.tsx"],"sourcesContent":["/**\n * HousingVista Dashboard / Home Page\n * Migrated from legacy housingvista-frontend dashboard.tsx\n * @module housingvista\n */\n\nimport { useMemo } from 'react';\nimport { useNavigate } from 'react-router';\nimport { useTr } from '../../shared/hooks';\nimport {\n AuroraBackground,\n GradientText,\n Button,\n GlassCard,\n EmphasisPanel,\n IllustratedEmptyState,\n PagePurpose,\n NextSteps,\n} from '@burdenoff/fe-libs/ui';\nimport {\n Building,\n TrendingUp,\n Eye,\n DollarSign,\n Plus,\n BarChart3,\n FileText,\n Home,\n ArrowRight,\n Clock,\n Zap,\n} from 'lucide-react';\nimport { StatCard, PropertyCard } from '../components';\nimport { useDashboardStats, useRecentActivities, useProperties } from '../hooks';\nimport { useTrackPageView } from '../hooks/useHousingVistaAnalytics';\nimport { cn, getRelativeTime } from '../utils/helpers';\nimport type { RecentActivity } from '../types';\n\n// ---- Activity icon mapping ----\nconst activityIconMap: Record<RecentActivity['type'], typeof Eye> = {\n property_listed: Home,\n transaction_update: FileText,\n payment_received: DollarSign,\n maintenance_request: Building,\n viewing_scheduled: Eye,\n document_uploaded: FileText,\n offer_received: TrendingUp,\n lease_signed: FileText,\n};\n\nconst activityColorMap: Record<RecentActivity['type'], string> = {\n property_listed: 'text-accent-purple',\n transaction_update: 'text-status-info-text',\n payment_received: 'text-status-success-text',\n maintenance_request: 'text-status-warning-text',\n viewing_scheduled: 'text-status-info-text',\n document_uploaded: 'text-status-info-text',\n offer_received: 'text-status-success-text',\n lease_signed: 'text-accent-teal',\n};\n\nexport const HomePage = () => {\n const navigate = useNavigate();\n const tr = useTr();\n useTrackPageView('housingvista.dashboard.viewed');\n const { data: stats } = useDashboardStats();\n const { data: activities } = useRecentActivities();\n const { data: properties } = useProperties();\n\n const quickActions = [\n {\n title: tr('housingvista.home.quickActions.addProperty.title', 'Add Property'),\n description: tr('housingvista.home.quickActions.addProperty.description', 'List a new property'),\n icon: Plus,\n path: 'properties/new',\n },\n {\n title: tr('housingvista.home.quickActions.viewAnalytics.title', 'View Analytics'),\n description: tr('housingvista.home.quickActions.viewAnalytics.description', 'Check performance metrics'),\n icon: BarChart3,\n path: 'analytics',\n },\n {\n title: tr('housingvista.home.quickActions.manageTransactions.title', 'Manage Transactions'),\n description: tr('housingvista.home.quickActions.manageTransactions.description', 'Handle ongoing deals'),\n icon: FileText,\n path: 'transactions',\n },\n {\n title: tr('housingvista.home.quickActions.browseProperties.title', 'Browse Properties'),\n description: tr('housingvista.home.quickActions.browseProperties.description', 'Explore listings'),\n icon: Building,\n path: 'properties',\n },\n ];\n\n const recentProperties = useMemo(() => properties.slice(0, 6), [properties]);\n\n return (\n <div className=\"space-y-6 p-6\">\n {/* Welcome Header — Boff UI 2.0 aurora hero (one per MFE) */}\n <div className=\"relative overflow-hidden rounded-card border border-border-seam bg-gloss-card p-6 shadow-pop\">\n <AuroraBackground intensity=\"subtle\" />\n <div className=\"relative flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between\">\n <div>\n <h1 className=\"text-3xl font-bold text-text-primary\">\n <GradientText>{tr('housingvista.home.header.title', 'Welcome back!')}</GradientText>\n </h1>\n <p className=\"mt-1 text-text-secondary\">\n {tr(\n 'housingvista.home.header.description',\n \"Here's what's happening with your real estate portfolio today.\"\n )}\n </p>\n </div>\n <Button onClick={() => navigate('properties/new')} className=\"gap-2 self-start lg:self-auto\">\n <Plus className=\"h-4 w-4\" />\n {tr('housingvista.home.header.quickAdd', 'Quick Add')}\n </Button>\n </div>\n </div>\n\n <PagePurpose className=\"max-w-3xl\">\n {tr(\n 'housingvista.home.purpose',\n 'Your real-estate command center. See your portfolio at a glance, jump to the things you do most, and pick up where you left off — from listing a property to tracking deals and analytics.'\n )}\n </PagePurpose>\n\n <NextSteps\n storageKey=\"housingvista-home\"\n steps={[\n {\n id: 'add-property',\n label: tr('housingvista.home.nextSteps.addProperty', 'List your first property'),\n description: tr(\n 'housingvista.home.nextSteps.addPropertyDesc',\n 'Create a market-ready listing in a few guided steps.'\n ),\n onClick: () => navigate('properties/new'),\n },\n {\n id: 'browse',\n label: tr('housingvista.home.nextSteps.browse', 'Browse properties'),\n description: tr(\n 'housingvista.home.nextSteps.browseDesc',\n 'Explore listings and open one for full details.'\n ),\n onClick: () => navigate('properties'),\n },\n {\n id: 'analytics',\n label: tr('housingvista.home.nextSteps.analytics', 'Review your analytics'),\n description: tr(\n 'housingvista.home.nextSteps.analyticsDesc',\n 'Check portfolio performance and market insights.'\n ),\n onClick: () => navigate('analytics'),\n },\n ]}\n />\n\n {/* Stats Grid */}\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n <StatCard\n label={tr('housingvista.home.stats.totalProperties', 'Total Properties')}\n value={stats.totalProperties}\n icon={<Building className=\"h-5 w-5\" />}\n trendData={stats.trends.totalProperties}\n featured\n />\n <StatCard\n label={tr('housingvista.home.stats.activeListings', 'Active Listings')}\n value={stats.activeTransactions}\n icon={<TrendingUp className=\"h-5 w-5\" />}\n trendData={stats.trends.activeTransactions}\n />\n <StatCard\n label={tr('housingvista.home.stats.upcomingViewings', 'Upcoming Viewings')}\n value={stats.upcomingViewings}\n icon={<Eye className=\"h-5 w-5\" />}\n />\n <StatCard\n label={tr('housingvista.home.stats.monthlyRevenue', 'Monthly Revenue')}\n value={stats.monthlyRevenue}\n prefix=\"$\"\n icon={<DollarSign className=\"h-5 w-5\" />}\n trendData={stats.trends.monthlyRevenue}\n />\n </div>\n\n {/* Recent Activity + Quick Actions */}\n <div className=\"grid grid-cols-1 gap-6 lg:grid-cols-3\">\n {/* Recent Activity — primary insight zone (one EmphasisPanel per page) */}\n <div className=\"lg:col-span-2\">\n <EmphasisPanel className=\"p-0\">\n <div className=\"flex items-center gap-2 border-b border-border-seam px-5 py-4\">\n <Clock className=\"h-4 w-4 text-text-secondary\" />\n <h2 className=\"text-base font-semibold text-text-primary\">\n {tr('housingvista.home.recentActivity.title', 'Recent Activity')}\n </h2>\n </div>\n <div className=\"p-5\">\n {activities.length === 0 ? (\n <div className=\"flex flex-col items-center gap-2 py-8 text-center\">\n <div className=\"rounded-full bg-bg-sunken p-3\">\n <Clock className=\"h-6 w-6 text-text-secondary\" />\n </div>\n <p className=\"text-sm font-medium text-text-primary\">\n {tr('housingvista.home.recentActivity.empty.title', 'No activity yet')}\n </p>\n <p className=\"max-w-xs text-xs text-text-secondary\">\n {tr(\n 'housingvista.home.recentActivity.empty.description',\n 'As you list properties, book viewings, and close deals, your latest updates appear here.'\n )}\n </p>\n </div>\n ) : (\n <ol className=\"relative space-y-5\">\n {/* Connecting rail */}\n <span aria-hidden className=\"absolute bottom-2 left-[18px] top-2 w-px bg-border-seam\" />\n {activities.slice(0, 6).map((activity) => {\n const Icon = activityIconMap[activity.type] ?? Eye;\n const colorClass = activityColorMap[activity.type] ?? 'text-text-secondary';\n return (\n <li key={activity.id} className=\"relative flex items-start gap-4\">\n <span\n className={cn(\n 'relative z-10 flex h-9 w-9 shrink-0 items-center justify-center rounded-full border border-border-seam bg-bg-surface shadow-elevation-1',\n colorClass\n )}\n >\n <Icon className=\"h-4 w-4\" />\n </span>\n <div className=\"min-w-0 flex-1 pt-0.5\">\n <div className=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-0.5\">\n <p className=\"text-sm font-medium text-text-primary\">{activity.title}</p>\n <p className=\"shrink-0 text-xs text-text-secondary\">\n {getRelativeTime(activity.timestamp)}\n </p>\n </div>\n <p className=\"mt-0.5 text-xs text-text-secondary\">{activity.description}</p>\n {activity.actorName && (\n <p className=\"mt-0.5 text-xs text-text-secondary\">{activity.actorName}</p>\n )}\n </div>\n </li>\n );\n })}\n </ol>\n )}\n </div>\n </EmphasisPanel>\n </div>\n\n {/* Quick Actions */}\n <div className=\"lg:col-span-1\">\n <GlassCard treatment=\"plain\" className=\"h-full border-border-seam\">\n <div className=\"flex items-center gap-2 border-b border-border-seam px-5 py-4\">\n <Zap className=\"h-4 w-4 text-text-secondary\" />\n <h2 className=\"text-base font-semibold text-text-primary\">\n {tr('housingvista.home.quickActions.title', 'Quick Actions')}\n </h2>\n </div>\n <div className=\"space-y-2 p-4\">\n {quickActions.map((action, index) => {\n const Icon = action.icon;\n const accent = index % 2 === 0 ? 'text-accent-teal' : 'text-accent-blue';\n return (\n <button\n key={action.title}\n onClick={() => navigate(action.path)}\n className=\"group/action flex min-h-[44px] w-full items-center gap-3 rounded-lg border border-border-seam p-3 text-left transition-colors hover:bg-bg-sunken/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]\"\n >\n <div className={cn('rounded-lg bg-bg-sunken p-2', accent)}>\n <Icon className=\"h-5 w-5\" />\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-sm font-medium text-text-primary\">{action.title}</div>\n <div className=\"text-xs text-text-secondary\">{action.description}</div>\n </div>\n <ArrowRight className=\"h-4 w-4 shrink-0 text-text-secondary opacity-0 transition-opacity group-hover/action:opacity-100\" />\n </button>\n );\n })}\n </div>\n </GlassCard>\n </div>\n </div>\n\n {/* Recent Properties */}\n <GlassCard treatment=\"plain\" className=\"border-border-seam\">\n <div className=\"flex items-center justify-between border-b border-border-seam px-5 py-4\">\n <h2 className=\"text-base font-semibold text-text-primary\">\n {tr('housingvista.home.recentProperties.title', 'Recent Properties')}\n </h2>\n <button\n onClick={() => navigate('properties')}\n className=\"inline-flex min-h-[44px] items-center gap-1 text-sm font-medium text-text-secondary transition-colors hover:text-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)] rounded-md px-1\"\n >\n {tr('housingvista.home.recentProperties.viewAll', 'View All')}\n <ArrowRight className=\"h-4 w-4\" />\n </button>\n </div>\n {recentProperties.length === 0 ? (\n <div className=\"p-4\">\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title={tr('housingvista.home.recentProperties.empty.title', 'No properties yet')}\n description={tr(\n 'housingvista.home.recentProperties.empty.description',\n 'List your first property to see it appear here.'\n )}\n action={\n <Button onClick={() => navigate('properties/new')} className=\"gap-2\">\n <Plus className=\"h-4 w-4\" />\n {tr('housingvista.home.header.quickAdd', 'Quick Add')}\n </Button>\n }\n />\n </div>\n ) : (\n <div className=\"grid grid-cols-1 gap-4 p-4 sm:grid-cols-2 lg:grid-cols-3\">\n {recentProperties.map((property) => (\n <PropertyCard\n key={property.id}\n id={property.id}\n title={property.title}\n price={property.price.amount}\n priceType={property.price.type === 'rent' ? 'rent' : 'sale'}\n pricePeriod={property.price.period}\n currency={property.price.currency}\n location={`${property.location.neighborhood}, ${property.location.city}`}\n bedrooms={property.specifications.bedrooms}\n bathrooms={property.specifications.bathrooms}\n area={property.specifications.totalArea}\n imageUrl={property.images[0]?.url}\n status={property.status.replace('_', ' ')}\n type={property.category}\n onClick={() => navigate(`properties/${property.id}`)}\n reraStatus={property.reraVerificationStatus}\n />\n ))}\n </div>\n )}\n </GlassCard>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PropertiesPage.d.ts","sourceRoot":"","sources":["../../../../src/housingvista/pages/properties/PropertiesPage.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AA2CH,eAAO,MAAM,cAAc,mCA49B1B,CAAC"}
1
+ {"version":3,"file":"PropertiesPage.d.ts","sourceRoot":"","sources":["../../../../src/housingvista/pages/properties/PropertiesPage.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AA2CH,eAAO,MAAM,cAAc,mCAu9B1B,CAAC"}