@burdenoff/microfe-housingvista 2026.709.2 → 2026.709.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/dist/housingvista/HousingVistaRoutes.d.ts.map +1 -1
  2. package/dist/housingvista/HousingVistaRoutes.js +136 -37
  3. package/dist/housingvista/HousingVistaRoutes.js.map +1 -1
  4. package/dist/housingvista/hooks/useHousingVistaAnalytics.d.ts +1 -1
  5. package/dist/housingvista/hooks/useHousingVistaAnalytics.d.ts.map +1 -1
  6. package/dist/housingvista/hooks/useHousingVistaAnalytics.js +4 -4
  7. package/dist/housingvista/hooks/useHousingVistaAnalytics.js.map +1 -1
  8. package/dist/housingvista/pages/amc/AMCManagementPage.d.ts.map +1 -1
  9. package/dist/housingvista/pages/amc/AMCManagementPage.js +62 -60
  10. package/dist/housingvista/pages/amc/AMCManagementPage.js.map +1 -1
  11. package/dist/housingvista/pages/assets/AssetDetailPage.d.ts.map +1 -1
  12. package/dist/housingvista/pages/assets/AssetDetailPage.js +141 -138
  13. package/dist/housingvista/pages/assets/AssetDetailPage.js.map +1 -1
  14. package/dist/housingvista/pages/assets/AssetManagementPage.d.ts.map +1 -1
  15. package/dist/housingvista/pages/assets/AssetManagementPage.js +193 -191
  16. package/dist/housingvista/pages/assets/AssetManagementPage.js.map +1 -1
  17. package/dist/housingvista/pages/chat/ChatPage.d.ts.map +1 -1
  18. package/dist/housingvista/pages/chat/ChatPage.js +115 -113
  19. package/dist/housingvista/pages/chat/ChatPage.js.map +1 -1
  20. package/dist/housingvista/pages/finance/HomeLoanDetailPage.d.ts.map +1 -1
  21. package/dist/housingvista/pages/finance/HomeLoanDetailPage.js +152 -149
  22. package/dist/housingvista/pages/finance/HomeLoanDetailPage.js.map +1 -1
  23. package/dist/housingvista/pages/finance/HomeLoansPage.d.ts.map +1 -1
  24. package/dist/housingvista/pages/finance/HomeLoansPage.js +141 -139
  25. package/dist/housingvista/pages/finance/HomeLoansPage.js.map +1 -1
  26. package/dist/housingvista/pages/investments/InvestmentDetailPage.d.ts.map +1 -1
  27. package/dist/housingvista/pages/investments/InvestmentDetailPage.js +290 -287
  28. package/dist/housingvista/pages/investments/InvestmentDetailPage.js.map +1 -1
  29. package/dist/housingvista/pages/investments/InvestmentsPage.d.ts.map +1 -1
  30. package/dist/housingvista/pages/investments/InvestmentsPage.js +64 -62
  31. package/dist/housingvista/pages/investments/InvestmentsPage.js.map +1 -1
  32. package/dist/housingvista/pages/legal/LegalPage.d.ts.map +1 -1
  33. package/dist/housingvista/pages/legal/LegalPage.js +95 -93
  34. package/dist/housingvista/pages/legal/LegalPage.js.map +1 -1
  35. package/dist/housingvista/pages/legal/LegalServiceDetailPage.d.ts.map +1 -1
  36. package/dist/housingvista/pages/legal/LegalServiceDetailPage.js +129 -126
  37. package/dist/housingvista/pages/legal/LegalServiceDetailPage.js.map +1 -1
  38. package/dist/housingvista/pages/market/AreaInsightsPage.d.ts.map +1 -1
  39. package/dist/housingvista/pages/market/AreaInsightsPage.js +99 -97
  40. package/dist/housingvista/pages/market/AreaInsightsPage.js.map +1 -1
  41. package/dist/housingvista/pages/market/MarketAnalyticsPage.d.ts.map +1 -1
  42. package/dist/housingvista/pages/market/MarketAnalyticsPage.js +138 -136
  43. package/dist/housingvista/pages/market/MarketAnalyticsPage.js.map +1 -1
  44. package/dist/housingvista/pages/marketplace/MarketplacePage.d.ts.map +1 -1
  45. package/dist/housingvista/pages/marketplace/MarketplacePage.js +99 -97
  46. package/dist/housingvista/pages/marketplace/MarketplacePage.js.map +1 -1
  47. package/dist/housingvista/pages/marketplace/ServiceDetailPage.d.ts.map +1 -1
  48. package/dist/housingvista/pages/marketplace/ServiceDetailPage.js +137 -134
  49. package/dist/housingvista/pages/marketplace/ServiceDetailPage.js.map +1 -1
  50. package/dist/housingvista/pages/offers/OffersPage.d.ts.map +1 -1
  51. package/dist/housingvista/pages/offers/OffersPage.js +94 -92
  52. package/dist/housingvista/pages/offers/OffersPage.js.map +1 -1
  53. package/dist/housingvista/pages/properties/AddPropertyPage.d.ts.map +1 -1
  54. package/dist/housingvista/pages/properties/AddPropertyPage.js +280 -279
  55. package/dist/housingvista/pages/properties/AddPropertyPage.js.map +1 -1
  56. package/dist/housingvista/pages/rental/RentalManagementPage.d.ts.map +1 -1
  57. package/dist/housingvista/pages/rental/RentalManagementPage.js +153 -151
  58. package/dist/housingvista/pages/rental/RentalManagementPage.js.map +1 -1
  59. package/dist/housingvista/pages/settings/ProfilePage.d.ts.map +1 -1
  60. package/dist/housingvista/pages/settings/ProfilePage.js +52 -50
  61. package/dist/housingvista/pages/settings/ProfilePage.js.map +1 -1
  62. package/dist/housingvista/pages/settings/SettingsPage.d.ts.map +1 -1
  63. package/dist/housingvista/pages/settings/SettingsPage.js +54 -52
  64. package/dist/housingvista/pages/settings/SettingsPage.js.map +1 -1
  65. package/dist/housingvista/pages/shortlist/ShortlistPage.d.ts.map +1 -1
  66. package/dist/housingvista/pages/shortlist/ShortlistPage.js +43 -41
  67. package/dist/housingvista/pages/shortlist/ShortlistPage.js.map +1 -1
  68. package/dist/housingvista/pages/transactions/TransactionDetailPage.d.ts.map +1 -1
  69. package/dist/housingvista/pages/transactions/TransactionDetailPage.js +211 -208
  70. package/dist/housingvista/pages/transactions/TransactionDetailPage.js.map +1 -1
  71. package/dist/housingvista/pages/transactions/TransactionsPage.d.ts.map +1 -1
  72. package/dist/housingvista/pages/transactions/TransactionsPage.js +85 -83
  73. package/dist/housingvista/pages/transactions/TransactionsPage.js.map +1 -1
  74. package/dist/housingvista/pages/verification/VerificationDetailPage.d.ts.map +1 -1
  75. package/dist/housingvista/pages/verification/VerificationDetailPage.js +25 -22
  76. package/dist/housingvista/pages/verification/VerificationDetailPage.js.map +1 -1
  77. package/dist/housingvista/pages/verification/VerificationPage.d.ts.map +1 -1
  78. package/dist/housingvista/pages/verification/VerificationPage.js +123 -121
  79. package/dist/housingvista/pages/verification/VerificationPage.js.map +1 -1
  80. package/dist/housingvista/pages/viewings/ViewingsPage.d.ts.map +1 -1
  81. package/dist/housingvista/pages/viewings/ViewingsPage.js +128 -126
  82. package/dist/housingvista/pages/viewings/ViewingsPage.js.map +1 -1
  83. package/package.json +1 -1
@@ -3,27 +3,28 @@ import { StatusBadge as n } from "../../components/StatusBadge.js";
3
3
  import { EmptyState as r } from "../../components/EmptyState.js";
4
4
  import { Breadcrumbs as i } from "../../components/Breadcrumbs.js";
5
5
  import { LoadingSkeleton as a } from "../../components/LoadingSkeleton.js";
6
- import { useLegalService as o } from "../../hooks/index.js";
7
- import { ContactOwnerDialog as s } from "../../components/ContactOwnerDialog.js";
8
- import { ReviewsSection as c } from "../../components/ReviewsSection.js";
6
+ import { useTrackPageView as o } from "../../hooks/useHousingVistaAnalytics.js";
7
+ import { useLegalService as s } from "../../hooks/index.js";
8
+ import { ContactOwnerDialog as c } from "../../components/ContactOwnerDialog.js";
9
+ import { ReviewsSection as l } from "../../components/ReviewsSection.js";
9
10
  import "../../components/index.js";
10
- import { useState as l } from "react";
11
- import { ArrowLeft as u, BookOpen as d, ClipboardCheck as f, Clock as p, FileText as m, Gavel as h, IndianRupee as g, MessageCircle as _, Scale as v, Search as y, ShieldCheck as b, Star as x } from "lucide-react";
12
- import { useLocation as S, useNavigate as C, useParams as w } from "react-router-dom";
13
- import { jsx as T, jsxs as E } from "react/jsx-runtime";
14
- import { Button as D, EmphasisPanel as O, GlassCard as k, PagePurpose as A } from "@burdenoff/fe-libs/ui";
11
+ import { useState as u } from "react";
12
+ import { ArrowLeft as d, BookOpen as f, ClipboardCheck as p, Clock as m, FileText as h, Gavel as g, IndianRupee as _, MessageCircle as v, Scale as y, Search as b, ShieldCheck as x, Star as S } from "lucide-react";
13
+ import { useLocation as C, useNavigate as w, useParams as T } from "react-router-dom";
14
+ import { jsx as E, jsxs as D } from "react/jsx-runtime";
15
+ import { Button as O, EmphasisPanel as k, GlassCard as A, PagePurpose as j } from "@burdenoff/fe-libs/ui";
15
16
  //#region src/housingvista/pages/legal/LegalServiceDetailPage.tsx
16
- function j(e) {
17
+ function M(e) {
17
18
  switch (e) {
18
- case "title_search": return /* @__PURE__ */ T(y, { className: "h-5 w-5" });
19
- case "lease_review": return /* @__PURE__ */ T(m, { className: "h-5 w-5" });
20
- case "dispute_resolution": return /* @__PURE__ */ T(h, { className: "h-5 w-5" });
21
- case "registration": return /* @__PURE__ */ T(f, { className: "h-5 w-5" });
22
- case "compliance": return /* @__PURE__ */ T(d, { className: "h-5 w-5" });
23
- default: return /* @__PURE__ */ T(v, { className: "h-5 w-5" });
19
+ case "title_search": return /* @__PURE__ */ E(b, { className: "h-5 w-5" });
20
+ case "lease_review": return /* @__PURE__ */ E(h, { className: "h-5 w-5" });
21
+ case "dispute_resolution": return /* @__PURE__ */ E(g, { className: "h-5 w-5" });
22
+ case "registration": return /* @__PURE__ */ E(p, { className: "h-5 w-5" });
23
+ case "compliance": return /* @__PURE__ */ E(f, { className: "h-5 w-5" });
24
+ default: return /* @__PURE__ */ E(y, { className: "h-5 w-5" });
24
25
  }
25
26
  }
26
- function M(e) {
27
+ function N(e) {
27
28
  switch (e) {
28
29
  case "available": return "success";
29
30
  case "busy": return "warning";
@@ -31,270 +32,272 @@ function M(e) {
31
32
  default: return "muted";
32
33
  }
33
34
  }
34
- function N({ rating: t }) {
35
- return /* @__PURE__ */ T("div", {
35
+ function P({ rating: t }) {
36
+ return /* @__PURE__ */ E("div", {
36
37
  className: "flex items-center gap-0.5 text-status-warning-text",
37
- children: Array.from({ length: 5 }).map((n, r) => /* @__PURE__ */ T(x, { className: e("h-4 w-4", r < Math.floor(t) ? "fill-current" : "fill-none text-text-secondary/30") }, r))
38
+ children: Array.from({ length: 5 }).map((n, r) => /* @__PURE__ */ E(S, { className: e("h-4 w-4", r < Math.floor(t) ? "fill-current" : "fill-none text-text-secondary/30") }, r))
38
39
  });
39
40
  }
40
- function P() {
41
- let { id: e } = w(), d = C(), h = S(), [y, P] = l(!1), { data: F, loading: I } = o(e);
42
- if (I) return /* @__PURE__ */ T("div", {
41
+ function F() {
42
+ let { id: e } = T();
43
+ o("housingvista.legal.viewed", e);
44
+ let f = w(), g = C(), [b, F] = u(!1), { data: I, loading: L } = s(e);
45
+ if (L) return /* @__PURE__ */ E("div", {
43
46
  className: "p-6",
44
- children: /* @__PURE__ */ T(a, { variant: "detail" })
47
+ children: /* @__PURE__ */ E(a, { variant: "detail" })
45
48
  });
46
- if (!F) return /* @__PURE__ */ T("div", {
49
+ if (!I) return /* @__PURE__ */ E("div", {
47
50
  className: "p-6",
48
- children: /* @__PURE__ */ T(r, {
51
+ children: /* @__PURE__ */ E(r, {
49
52
  illustration: "empty-search",
50
- icon: /* @__PURE__ */ T(v, { className: "h-12 w-12" }),
53
+ icon: /* @__PURE__ */ E(y, { className: "h-12 w-12" }),
51
54
  title: "Legal Service Not Found",
52
55
  description: "The legal service you're looking for doesn't exist or is no longer offered.",
53
- action: /* @__PURE__ */ E("button", {
54
- onClick: () => d("../legal"),
56
+ action: /* @__PURE__ */ D("button", {
57
+ onClick: () => f("../legal"),
55
58
  className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text transition-colors hover:bg-action-primary-bg-hover",
56
- children: [/* @__PURE__ */ T(u, { className: "h-4 w-4" }), "Back to Legal Services"]
59
+ children: [/* @__PURE__ */ E(d, { className: "h-4 w-4" }), "Back to Legal Services"]
57
60
  })
58
61
  })
59
62
  });
60
- let L = F.status === "unavailable", R = F.documentsRequired ?? [];
61
- return /* @__PURE__ */ E("div", {
63
+ let R = I.status === "unavailable", z = I.documentsRequired ?? [];
64
+ return /* @__PURE__ */ D("div", {
62
65
  className: "flex flex-col gap-6 p-6",
63
66
  children: [
64
- /* @__PURE__ */ T(i, { items: [{
67
+ /* @__PURE__ */ E(i, { items: [{
65
68
  label: "Legal",
66
69
  href: "../"
67
- }, { label: F.title }] }),
68
- /* @__PURE__ */ E("div", {
70
+ }, { label: I.title }] }),
71
+ /* @__PURE__ */ D("div", {
69
72
  className: "flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between",
70
- children: [/* @__PURE__ */ E("div", {
73
+ children: [/* @__PURE__ */ D("div", {
71
74
  className: "flex items-start gap-4",
72
- children: [/* @__PURE__ */ T("div", {
75
+ children: [/* @__PURE__ */ E("div", {
73
76
  className: "flex h-12 w-12 shrink-0 items-center justify-center rounded-lg bg-bg-sunken text-text-secondary",
74
- children: j(F.category)
75
- }), /* @__PURE__ */ E("div", { children: [
76
- /* @__PURE__ */ E("button", {
77
- onClick: () => d("../legal"),
77
+ children: M(I.category)
78
+ }), /* @__PURE__ */ D("div", { children: [
79
+ /* @__PURE__ */ D("button", {
80
+ onClick: () => f("../legal"),
78
81
  className: "mb-2 inline-flex items-center gap-2 rounded-md px-2 py-1 text-sm text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary",
79
- children: [/* @__PURE__ */ T(u, { className: "h-4 w-4" }), "Back to Legal Services"]
82
+ children: [/* @__PURE__ */ E(d, { className: "h-4 w-4" }), "Back to Legal Services"]
80
83
  }),
81
- /* @__PURE__ */ T("h1", {
84
+ /* @__PURE__ */ E("h1", {
82
85
  className: "text-2xl font-semibold text-text-primary",
83
- children: F.title
86
+ children: I.title
84
87
  }),
85
- /* @__PURE__ */ E("div", {
88
+ /* @__PURE__ */ D("div", {
86
89
  className: "mt-2 flex flex-wrap items-center gap-2",
87
90
  children: [
88
- /* @__PURE__ */ T(n, {
89
- label: F.status,
90
- variant: M(F.status),
91
+ /* @__PURE__ */ E(n, {
92
+ label: I.status,
93
+ variant: N(I.status),
91
94
  dot: !0
92
95
  }),
93
- /* @__PURE__ */ T(n, {
94
- label: F.category.replace(/_/g, " "),
96
+ /* @__PURE__ */ E(n, {
97
+ label: I.category.replace(/_/g, " "),
95
98
  variant: "muted"
96
99
  }),
97
- /* @__PURE__ */ T("span", {
100
+ /* @__PURE__ */ E("span", {
98
101
  className: "text-sm text-text-secondary",
99
- children: F.providerName
102
+ children: I.providerName
100
103
  })
101
104
  ]
102
105
  })
103
106
  ] })]
104
- }), /* @__PURE__ */ T("div", {
107
+ }), /* @__PURE__ */ E("div", {
105
108
  className: "flex items-center gap-2",
106
- children: L ? /* @__PURE__ */ T(D, {
109
+ children: R ? /* @__PURE__ */ E(O, {
107
110
  type: "button",
108
111
  disabled: !0,
109
112
  children: "Currently Unavailable"
110
- }) : /* @__PURE__ */ E(D, {
113
+ }) : /* @__PURE__ */ D(O, {
111
114
  type: "button",
112
115
  variant: "default",
113
- onClick: () => P(!0),
114
- children: [/* @__PURE__ */ T(_, { className: "mr-1.5 h-4 w-4" }), "Book Now"]
116
+ onClick: () => F(!0),
117
+ children: [/* @__PURE__ */ E(v, { className: "mr-1.5 h-4 w-4" }), "Book Now"]
115
118
  })
116
119
  })]
117
120
  }),
118
- /* @__PURE__ */ T(A, {
121
+ /* @__PURE__ */ E(j, {
119
122
  className: "max-w-3xl",
120
123
  children: "Everything you need to decide whether to engage this legal provider — what the service covers, their rating and fees, how long it takes, and which documents to prepare. When you're ready, request a consultation to reach them through Messages."
121
124
  }),
122
- /* @__PURE__ */ T(O, {
125
+ /* @__PURE__ */ E(k, {
123
126
  className: "p-4",
124
- children: /* @__PURE__ */ E("div", {
127
+ children: /* @__PURE__ */ D("div", {
125
128
  className: "grid grid-cols-2 gap-4 lg:grid-cols-4",
126
129
  children: [
127
- /* @__PURE__ */ E("div", {
130
+ /* @__PURE__ */ D("div", {
128
131
  className: "rounded-lg border border-border-subtle bg-bg-surface p-4",
129
- children: [/* @__PURE__ */ E("div", {
132
+ children: [/* @__PURE__ */ D("div", {
130
133
  className: "flex items-center gap-2 text-text-secondary",
131
- children: [/* @__PURE__ */ T(x, { className: "h-4 w-4" }), /* @__PURE__ */ T("span", {
134
+ children: [/* @__PURE__ */ E(S, { className: "h-4 w-4" }), /* @__PURE__ */ E("span", {
132
135
  className: "text-xs font-medium",
133
136
  children: "Provider Rating"
134
137
  })]
135
- }), /* @__PURE__ */ E("div", {
138
+ }), /* @__PURE__ */ D("div", {
136
139
  className: "mt-2 flex items-center gap-2",
137
- children: [/* @__PURE__ */ T("span", {
140
+ children: [/* @__PURE__ */ E("span", {
138
141
  className: "text-xl font-bold text-text-primary",
139
- children: F.providerRating ?? "—"
140
- }), F.providerRating != null && /* @__PURE__ */ T(N, { rating: F.providerRating })]
142
+ children: I.providerRating ?? "—"
143
+ }), I.providerRating != null && /* @__PURE__ */ E(P, { rating: I.providerRating })]
141
144
  })]
142
145
  }),
143
- /* @__PURE__ */ E("div", {
146
+ /* @__PURE__ */ D("div", {
144
147
  className: "rounded-lg border border-border-subtle bg-bg-surface p-4",
145
- children: [/* @__PURE__ */ E("div", {
148
+ children: [/* @__PURE__ */ D("div", {
146
149
  className: "flex items-center gap-2 text-text-secondary",
147
- children: [/* @__PURE__ */ T(g, { className: "h-4 w-4" }), /* @__PURE__ */ T("span", {
150
+ children: [/* @__PURE__ */ E(_, { className: "h-4 w-4" }), /* @__PURE__ */ E("span", {
148
151
  className: "text-xs font-medium",
149
152
  children: "Price Range"
150
153
  })]
151
- }), /* @__PURE__ */ T("div", {
154
+ }), /* @__PURE__ */ E("div", {
152
155
  className: "mt-2 text-xl font-bold text-text-primary",
153
- children: F.priceRange ?? "—"
156
+ children: I.priceRange ?? "—"
154
157
  })]
155
158
  }),
156
- /* @__PURE__ */ E("div", {
159
+ /* @__PURE__ */ D("div", {
157
160
  className: "rounded-lg border border-border-subtle bg-bg-surface p-4",
158
- children: [/* @__PURE__ */ E("div", {
161
+ children: [/* @__PURE__ */ D("div", {
159
162
  className: "flex items-center gap-2 text-text-secondary",
160
- children: [/* @__PURE__ */ T(p, { className: "h-4 w-4" }), /* @__PURE__ */ T("span", {
163
+ children: [/* @__PURE__ */ E(m, { className: "h-4 w-4" }), /* @__PURE__ */ E("span", {
161
164
  className: "text-xs font-medium",
162
165
  children: "Est. Duration"
163
166
  })]
164
- }), /* @__PURE__ */ T("div", {
167
+ }), /* @__PURE__ */ E("div", {
165
168
  className: "mt-2 text-sm font-bold text-text-primary",
166
- children: F.estimatedDuration ?? "—"
169
+ children: I.estimatedDuration ?? "—"
167
170
  })]
168
171
  }),
169
- /* @__PURE__ */ E("div", {
172
+ /* @__PURE__ */ D("div", {
170
173
  className: "rounded-lg border border-border-subtle bg-bg-surface p-4",
171
- children: [/* @__PURE__ */ E("div", {
174
+ children: [/* @__PURE__ */ D("div", {
172
175
  className: "flex items-center gap-2 text-text-secondary",
173
- children: [/* @__PURE__ */ T(b, { className: "h-4 w-4" }), /* @__PURE__ */ T("span", {
176
+ children: [/* @__PURE__ */ E(x, { className: "h-4 w-4" }), /* @__PURE__ */ E("span", {
174
177
  className: "text-xs font-medium",
175
178
  children: "Consultation"
176
179
  })]
177
- }), /* @__PURE__ */ T("div", {
180
+ }), /* @__PURE__ */ E("div", {
178
181
  className: "mt-2 text-sm font-bold text-text-primary",
179
- children: F.consultationFee && F.consultationFee > 0 ? t(F.consultationFee) : "Free"
182
+ children: I.consultationFee && I.consultationFee > 0 ? t(I.consultationFee) : "Free"
180
183
  })]
181
184
  })
182
185
  ]
183
186
  })
184
187
  }),
185
- /* @__PURE__ */ E("div", {
188
+ /* @__PURE__ */ D("div", {
186
189
  className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
187
- children: [/* @__PURE__ */ E("div", {
190
+ children: [/* @__PURE__ */ D("div", {
188
191
  className: "space-y-6 lg:col-span-2",
189
- children: [F.description && /* @__PURE__ */ E(k, {
192
+ children: [I.description && /* @__PURE__ */ D(A, {
190
193
  treatment: "plain",
191
194
  className: "border-border-seam p-6",
192
- children: [/* @__PURE__ */ T("h2", {
195
+ children: [/* @__PURE__ */ E("h2", {
193
196
  className: "mb-3 text-base font-semibold text-text-primary",
194
197
  children: "About this service"
195
- }), /* @__PURE__ */ T("p", {
198
+ }), /* @__PURE__ */ E("p", {
196
199
  className: "text-sm leading-relaxed text-text-secondary",
197
- children: F.description
200
+ children: I.description
198
201
  })]
199
- }), /* @__PURE__ */ E(k, {
202
+ }), /* @__PURE__ */ D(A, {
200
203
  treatment: "plain",
201
204
  className: "border-border-seam p-6",
202
- children: [/* @__PURE__ */ E("h2", {
205
+ children: [/* @__PURE__ */ D("h2", {
203
206
  className: "mb-4 flex items-center gap-2 text-base font-semibold text-text-primary",
204
- children: [/* @__PURE__ */ T(m, { className: "h-5 w-5" }), "Documents Required"]
205
- }), R.length > 0 ? /* @__PURE__ */ T("ul", {
207
+ children: [/* @__PURE__ */ E(h, { className: "h-5 w-5" }), "Documents Required"]
208
+ }), z.length > 0 ? /* @__PURE__ */ E("ul", {
206
209
  className: "grid grid-cols-1 gap-2 sm:grid-cols-2",
207
- children: R.map((e, t) => /* @__PURE__ */ E("li", {
210
+ children: z.map((e, t) => /* @__PURE__ */ D("li", {
208
211
  className: "flex items-center gap-2 rounded-lg bg-bg-sunken/50 p-3 text-sm text-text-primary",
209
- children: [/* @__PURE__ */ T(f, { className: "h-4 w-4 shrink-0 text-status-success-text" }), e]
212
+ children: [/* @__PURE__ */ E(p, { className: "h-4 w-4 shrink-0 text-status-success-text" }), e]
210
213
  }, t))
211
- }) : /* @__PURE__ */ T(r, {
214
+ }) : /* @__PURE__ */ E(r, {
212
215
  illustration: "empty-files",
213
216
  title: "No documents listed",
214
217
  description: "The provider will confirm what to prepare during your consultation.",
215
218
  className: "border-0 bg-transparent p-4"
216
219
  })]
217
220
  })]
218
- }), /* @__PURE__ */ T("div", {
221
+ }), /* @__PURE__ */ E("div", {
219
222
  className: "space-y-6",
220
- children: /* @__PURE__ */ E(k, {
223
+ children: /* @__PURE__ */ D(A, {
221
224
  treatment: "plain",
222
225
  className: "border-border-seam p-5",
223
226
  children: [
224
- /* @__PURE__ */ T("h3", {
227
+ /* @__PURE__ */ E("h3", {
225
228
  className: "mb-4 text-base font-semibold text-text-primary",
226
229
  children: "Provider"
227
230
  }),
228
- /* @__PURE__ */ E("dl", {
231
+ /* @__PURE__ */ D("dl", {
229
232
  className: "space-y-3 text-sm",
230
233
  children: [
231
- /* @__PURE__ */ E("div", {
234
+ /* @__PURE__ */ D("div", {
232
235
  className: "flex items-center justify-between",
233
- children: [/* @__PURE__ */ T("dt", {
236
+ children: [/* @__PURE__ */ E("dt", {
234
237
  className: "text-text-secondary",
235
238
  children: "Name"
236
- }), /* @__PURE__ */ T("dd", {
239
+ }), /* @__PURE__ */ E("dd", {
237
240
  className: "font-medium text-text-primary",
238
- children: F.providerName
241
+ children: I.providerName
239
242
  })]
240
243
  }),
241
- /* @__PURE__ */ E("div", {
244
+ /* @__PURE__ */ D("div", {
242
245
  className: "flex items-center justify-between",
243
- children: [/* @__PURE__ */ T("dt", {
246
+ children: [/* @__PURE__ */ E("dt", {
244
247
  className: "text-text-secondary",
245
248
  children: "Rating"
246
- }), /* @__PURE__ */ T("dd", {
249
+ }), /* @__PURE__ */ E("dd", {
247
250
  className: "font-medium text-text-primary",
248
- children: F.providerRating ?? "—"
251
+ children: I.providerRating ?? "—"
249
252
  })]
250
253
  }),
251
- /* @__PURE__ */ E("div", {
254
+ /* @__PURE__ */ D("div", {
252
255
  className: "flex items-center justify-between",
253
- children: [/* @__PURE__ */ T("dt", {
256
+ children: [/* @__PURE__ */ E("dt", {
254
257
  className: "text-text-secondary",
255
258
  children: "Availability"
256
- }), /* @__PURE__ */ T("dd", { children: /* @__PURE__ */ T(n, {
257
- label: F.status,
258
- variant: M(F.status)
259
+ }), /* @__PURE__ */ E("dd", { children: /* @__PURE__ */ E(n, {
260
+ label: I.status,
261
+ variant: N(I.status)
259
262
  }) })]
260
263
  })
261
264
  ]
262
265
  }),
263
- L ? /* @__PURE__ */ T(D, {
266
+ R ? /* @__PURE__ */ E(O, {
264
267
  type: "button",
265
268
  className: "mt-4 w-full justify-center",
266
269
  disabled: !0,
267
270
  children: "Currently Unavailable"
268
- }) : /* @__PURE__ */ T(D, {
271
+ }) : /* @__PURE__ */ E(O, {
269
272
  type: "button",
270
273
  variant: "default",
271
274
  className: "mt-4 w-full justify-center",
272
- onClick: () => P(!0),
275
+ onClick: () => F(!0),
273
276
  children: "Request a consultation"
274
277
  })
275
278
  ]
276
279
  })
277
280
  })]
278
281
  }),
279
- /* @__PURE__ */ T(c, {
280
- entityId: F.id,
282
+ /* @__PURE__ */ E(l, {
283
+ entityId: I.id,
281
284
  entityType: "housingvista-legal-service",
282
- aggregateRating: F.providerRating
285
+ aggregateRating: I.providerRating
283
286
  }),
284
- /* @__PURE__ */ T(s, {
285
- open: y,
286
- onOpenChange: P,
287
- entityId: F.id,
287
+ /* @__PURE__ */ E(c, {
288
+ open: b,
289
+ onOpenChange: F,
290
+ entityId: I.id,
288
291
  entityType: "housingvista-legal-service",
289
- title: F.title,
290
- pagePath: h.pathname,
291
- heading: `Contact ${F.providerName}`,
292
- description: `Request a consultation about ${F.title}. Messages are saved and delivered in your inbox.`
292
+ title: I.title,
293
+ pagePath: g.pathname,
294
+ heading: `Contact ${I.providerName}`,
295
+ description: `Request a consultation about ${I.title}. Messages are saved and delivered in your inbox.`
293
296
  })
294
297
  ]
295
298
  });
296
299
  }
297
300
  //#endregion
298
- export { P as LegalServiceDetailPage };
301
+ export { F as LegalServiceDetailPage };
299
302
 
300
303
  //# sourceMappingURL=LegalServiceDetailPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LegalServiceDetailPage.js","names":[],"sources":["../../../../src/housingvista/pages/legal/LegalServiceDetailPage.tsx"],"sourcesContent":["/**\n * HousingVista Legal Service Detail Page\n * Single legal-service provider backed by `housingvistaLegalService(id)` —\n * category, provider, rating, price, duration, documents required.\n *\n * \"Book Now\" / \"Request a consultation\" opens the real `ContactOwnerDialog` — a\n * persisted conversation with the provider. Reviews are real, backed by\n * EntityComments.\n * @module housingvista\n */\n\nimport { useState } from 'react';\nimport { useNavigate, useParams, useLocation } from 'react-router-dom';\nimport {\n ArrowLeft,\n Scale,\n Star,\n Clock,\n FileText,\n Search as SearchIcon,\n Gavel,\n BookOpen,\n ClipboardCheck,\n MessageCircle,\n ShieldCheck,\n IndianRupee,\n} from 'lucide-react';\nimport { Button, EmphasisPanel, GlassCard, PagePurpose } from '@burdenoff/fe-libs/ui';\nimport {\n Breadcrumbs,\n StatusBadge,\n EmptyState,\n LoadingSkeleton,\n ContactOwnerDialog,\n ReviewsSection,\n} from '../../components';\nimport type { BreadcrumbItem } from '../../components';\nimport { useLegalService } from '../../hooks';\nimport { cn, formatCurrency } from '../../utils/helpers';\n\nfunction getCategoryIcon(category: string) {\n switch (category) {\n case 'title_search':\n return <SearchIcon className=\"h-5 w-5\" />;\n case 'lease_review':\n return <FileText className=\"h-5 w-5\" />;\n case 'dispute_resolution':\n return <Gavel className=\"h-5 w-5\" />;\n case 'registration':\n return <ClipboardCheck className=\"h-5 w-5\" />;\n case 'compliance':\n return <BookOpen className=\"h-5 w-5\" />;\n default:\n return <Scale className=\"h-5 w-5\" />;\n }\n}\n\nfunction getStatusVariant(status: string): 'success' | 'warning' | 'error' | 'muted' {\n switch (status) {\n case 'available':\n return 'success';\n case 'busy':\n return 'warning';\n case 'unavailable':\n return 'error';\n default:\n return 'muted';\n }\n}\n\nfunction RatingStars({ rating }: { rating: number }) {\n return (\n <div className=\"flex items-center gap-0.5 text-status-warning-text\">\n {Array.from({ length: 5 }).map((_, i) => (\n <Star\n key={i}\n className={cn('h-4 w-4', i < Math.floor(rating) ? 'fill-current' : 'fill-none text-text-secondary/30')}\n />\n ))}\n </div>\n );\n}\n\nexport function LegalServiceDetailPage() {\n const { id } = useParams<{ id: string }>();\n const navigate = useNavigate();\n const location = useLocation();\n const [contactOpen, setContactOpen] = useState(false);\n const { data: service, loading } = useLegalService(id);\n\n if (loading) {\n return (\n <div className=\"p-6\">\n <LoadingSkeleton variant=\"detail\" />\n </div>\n );\n }\n\n if (!service) {\n return (\n <div className=\"p-6\">\n <EmptyState\n illustration=\"empty-search\"\n icon={<Scale className=\"h-12 w-12\" />}\n title=\"Legal Service Not Found\"\n description=\"The legal service you're looking for doesn't exist or is no longer offered.\"\n action={\n <button\n onClick={() => navigate('../legal')}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text transition-colors hover:bg-action-primary-bg-hover\"\n >\n <ArrowLeft className=\"h-4 w-4\" />\n Back to Legal Services\n </button>\n }\n />\n </div>\n );\n }\n\n const unavailable = service.status === 'unavailable';\n const documents = service.documentsRequired ?? [];\n const breadcrumbs: BreadcrumbItem[] = [{ label: 'Legal', href: '../' }, { label: service.title }];\n\n return (\n <div className=\"flex flex-col gap-6 p-6\">\n <Breadcrumbs items={breadcrumbs} />\n\n {/* Header */}\n <div className=\"flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between\">\n <div className=\"flex items-start gap-4\">\n <div className=\"flex h-12 w-12 shrink-0 items-center justify-center rounded-lg bg-bg-sunken text-text-secondary\">\n {getCategoryIcon(service.category)}\n </div>\n <div>\n <button\n onClick={() => navigate('../legal')}\n className=\"mb-2 inline-flex items-center gap-2 rounded-md px-2 py-1 text-sm text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary\"\n >\n <ArrowLeft className=\"h-4 w-4\" />\n Back to Legal Services\n </button>\n <h1 className=\"text-2xl font-semibold text-text-primary\">{service.title}</h1>\n <div className=\"mt-2 flex flex-wrap items-center gap-2\">\n <StatusBadge label={service.status} variant={getStatusVariant(service.status)} dot />\n <StatusBadge label={service.category.replace(/_/g, ' ')} variant=\"muted\" />\n <span className=\"text-sm text-text-secondary\">{service.providerName}</span>\n </div>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n {unavailable ? (\n <Button type=\"button\" disabled>\n Currently Unavailable\n </Button>\n ) : (\n <Button type=\"button\" variant=\"default\" onClick={() => setContactOpen(true)}>\n <MessageCircle className=\"mr-1.5 h-4 w-4\" />\n Book Now\n </Button>\n )}\n </div>\n </div>\n\n <PagePurpose className=\"max-w-3xl\">\n Everything you need to decide whether to engage this legal provider — what the service covers, their rating and\n fees, how long it takes, and which documents to prepare. When you're ready, request a consultation to reach them\n through Messages.\n </PagePurpose>\n\n {/* Key facts — primary insight zone (one EmphasisPanel per page) */}\n <EmphasisPanel className=\"p-4\">\n <div className=\"grid grid-cols-2 gap-4 lg:grid-cols-4\">\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <div className=\"flex items-center gap-2 text-text-secondary\">\n <Star className=\"h-4 w-4\" />\n <span className=\"text-xs font-medium\">Provider Rating</span>\n </div>\n <div className=\"mt-2 flex items-center gap-2\">\n <span className=\"text-xl font-bold text-text-primary\">{service.providerRating ?? '—'}</span>\n {service.providerRating != null && <RatingStars rating={service.providerRating} />}\n </div>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <div className=\"flex items-center gap-2 text-text-secondary\">\n <IndianRupee className=\"h-4 w-4\" />\n <span className=\"text-xs font-medium\">Price Range</span>\n </div>\n <div className=\"mt-2 text-xl font-bold text-text-primary\">{service.priceRange ?? '—'}</div>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <div className=\"flex items-center gap-2 text-text-secondary\">\n <Clock className=\"h-4 w-4\" />\n <span className=\"text-xs font-medium\">Est. Duration</span>\n </div>\n <div className=\"mt-2 text-sm font-bold text-text-primary\">{service.estimatedDuration ?? '—'}</div>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <div className=\"flex items-center gap-2 text-text-secondary\">\n <ShieldCheck className=\"h-4 w-4\" />\n <span className=\"text-xs font-medium\">Consultation</span>\n </div>\n <div className=\"mt-2 text-sm font-bold text-text-primary\">\n {service.consultationFee && service.consultationFee > 0\n ? formatCurrency(service.consultationFee)\n : 'Free'}\n </div>\n </div>\n </div>\n </EmphasisPanel>\n\n <div className=\"grid grid-cols-1 gap-6 lg:grid-cols-3\">\n {/* Overview */}\n <div className=\"space-y-6 lg:col-span-2\">\n {service.description && (\n <GlassCard treatment=\"plain\" className=\"border-border-seam p-6\">\n <h2 className=\"mb-3 text-base font-semibold text-text-primary\">About this service</h2>\n <p className=\"text-sm leading-relaxed text-text-secondary\">{service.description}</p>\n </GlassCard>\n )}\n\n <GlassCard treatment=\"plain\" className=\"border-border-seam p-6\">\n <h2 className=\"mb-4 flex items-center gap-2 text-base font-semibold text-text-primary\">\n <FileText className=\"h-5 w-5\" />\n Documents Required\n </h2>\n {documents.length > 0 ? (\n <ul className=\"grid grid-cols-1 gap-2 sm:grid-cols-2\">\n {documents.map((doc, i) => (\n <li\n key={i}\n className=\"flex items-center gap-2 rounded-lg bg-bg-sunken/50 p-3 text-sm text-text-primary\"\n >\n <ClipboardCheck className=\"h-4 w-4 shrink-0 text-status-success-text\" />\n {doc}\n </li>\n ))}\n </ul>\n ) : (\n <EmptyState\n illustration=\"empty-files\"\n title=\"No documents listed\"\n description=\"The provider will confirm what to prepare during your consultation.\"\n className=\"border-0 bg-transparent p-4\"\n />\n )}\n </GlassCard>\n </div>\n\n {/* Provider card */}\n <div className=\"space-y-6\">\n <GlassCard treatment=\"plain\" className=\"border-border-seam p-5\">\n <h3 className=\"mb-4 text-base font-semibold text-text-primary\">Provider</h3>\n <dl className=\"space-y-3 text-sm\">\n <div className=\"flex items-center justify-between\">\n <dt className=\"text-text-secondary\">Name</dt>\n <dd className=\"font-medium text-text-primary\">{service.providerName}</dd>\n </div>\n <div className=\"flex items-center justify-between\">\n <dt className=\"text-text-secondary\">Rating</dt>\n <dd className=\"font-medium text-text-primary\">{service.providerRating ?? '—'}</dd>\n </div>\n <div className=\"flex items-center justify-between\">\n <dt className=\"text-text-secondary\">Availability</dt>\n <dd>\n <StatusBadge label={service.status} variant={getStatusVariant(service.status)} />\n </dd>\n </div>\n </dl>\n {unavailable ? (\n <Button type=\"button\" className=\"mt-4 w-full justify-center\" disabled>\n Currently Unavailable\n </Button>\n ) : (\n <Button\n type=\"button\"\n variant=\"default\"\n className=\"mt-4 w-full justify-center\"\n onClick={() => setContactOpen(true)}\n >\n Request a consultation\n </Button>\n )}\n </GlassCard>\n </div>\n </div>\n\n {/* Reviews — real, backed by EntityComments */}\n <ReviewsSection\n entityId={service.id}\n entityType=\"housingvista-legal-service\"\n aggregateRating={service.providerRating}\n />\n\n <ContactOwnerDialog\n open={contactOpen}\n onOpenChange={setContactOpen}\n entityId={service.id}\n entityType=\"housingvista-legal-service\"\n title={service.title}\n pagePath={location.pathname}\n heading={`Contact ${service.providerName}`}\n description={`Request a consultation about ${service.title}. Messages are saved and delivered in your inbox.`}\n />\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"LegalServiceDetailPage.js","names":[],"sources":["../../../../src/housingvista/pages/legal/LegalServiceDetailPage.tsx"],"sourcesContent":["/**\n * HousingVista Legal Service Detail Page\n * Single legal-service provider backed by `housingvistaLegalService(id)` —\n * category, provider, rating, price, duration, documents required.\n *\n * \"Book Now\" / \"Request a consultation\" opens the real `ContactOwnerDialog` — a\n * persisted conversation with the provider. Reviews are real, backed by\n * EntityComments.\n * @module housingvista\n */\n\nimport { useState } from 'react';\nimport { useNavigate, useParams, useLocation } from 'react-router-dom';\nimport {\n ArrowLeft,\n Scale,\n Star,\n Clock,\n FileText,\n Search as SearchIcon,\n Gavel,\n BookOpen,\n ClipboardCheck,\n MessageCircle,\n ShieldCheck,\n IndianRupee,\n} from 'lucide-react';\nimport { Button, EmphasisPanel, GlassCard, PagePurpose } from '@burdenoff/fe-libs/ui';\nimport {\n Breadcrumbs,\n StatusBadge,\n EmptyState,\n LoadingSkeleton,\n ContactOwnerDialog,\n ReviewsSection,\n} from '../../components';\nimport type { BreadcrumbItem } from '../../components';\nimport { useLegalService } from '../../hooks';\nimport { cn, formatCurrency } from '../../utils/helpers';\nimport { useTrackPageView } from '../../hooks/useHousingVistaAnalytics';\n\nfunction getCategoryIcon(category: string) {\n switch (category) {\n case 'title_search':\n return <SearchIcon className=\"h-5 w-5\" />;\n case 'lease_review':\n return <FileText className=\"h-5 w-5\" />;\n case 'dispute_resolution':\n return <Gavel className=\"h-5 w-5\" />;\n case 'registration':\n return <ClipboardCheck className=\"h-5 w-5\" />;\n case 'compliance':\n return <BookOpen className=\"h-5 w-5\" />;\n default:\n return <Scale className=\"h-5 w-5\" />;\n }\n}\n\nfunction getStatusVariant(status: string): 'success' | 'warning' | 'error' | 'muted' {\n switch (status) {\n case 'available':\n return 'success';\n case 'busy':\n return 'warning';\n case 'unavailable':\n return 'error';\n default:\n return 'muted';\n }\n}\n\nfunction RatingStars({ rating }: { rating: number }) {\n return (\n <div className=\"flex items-center gap-0.5 text-status-warning-text\">\n {Array.from({ length: 5 }).map((_, i) => (\n <Star\n key={i}\n className={cn('h-4 w-4', i < Math.floor(rating) ? 'fill-current' : 'fill-none text-text-secondary/30')}\n />\n ))}\n </div>\n );\n}\n\nexport function LegalServiceDetailPage() {\n const { id } = useParams<{ id: string }>();\n\n useTrackPageView('housingvista.legal.viewed', id);\n const navigate = useNavigate();\n const location = useLocation();\n const [contactOpen, setContactOpen] = useState(false);\n const { data: service, loading } = useLegalService(id);\n\n if (loading) {\n return (\n <div className=\"p-6\">\n <LoadingSkeleton variant=\"detail\" />\n </div>\n );\n }\n\n if (!service) {\n return (\n <div className=\"p-6\">\n <EmptyState\n illustration=\"empty-search\"\n icon={<Scale className=\"h-12 w-12\" />}\n title=\"Legal Service Not Found\"\n description=\"The legal service you're looking for doesn't exist or is no longer offered.\"\n action={\n <button\n onClick={() => navigate('../legal')}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text transition-colors hover:bg-action-primary-bg-hover\"\n >\n <ArrowLeft className=\"h-4 w-4\" />\n Back to Legal Services\n </button>\n }\n />\n </div>\n );\n }\n\n const unavailable = service.status === 'unavailable';\n const documents = service.documentsRequired ?? [];\n const breadcrumbs: BreadcrumbItem[] = [{ label: 'Legal', href: '../' }, { label: service.title }];\n\n return (\n <div className=\"flex flex-col gap-6 p-6\">\n <Breadcrumbs items={breadcrumbs} />\n\n {/* Header */}\n <div className=\"flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between\">\n <div className=\"flex items-start gap-4\">\n <div className=\"flex h-12 w-12 shrink-0 items-center justify-center rounded-lg bg-bg-sunken text-text-secondary\">\n {getCategoryIcon(service.category)}\n </div>\n <div>\n <button\n onClick={() => navigate('../legal')}\n className=\"mb-2 inline-flex items-center gap-2 rounded-md px-2 py-1 text-sm text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary\"\n >\n <ArrowLeft className=\"h-4 w-4\" />\n Back to Legal Services\n </button>\n <h1 className=\"text-2xl font-semibold text-text-primary\">{service.title}</h1>\n <div className=\"mt-2 flex flex-wrap items-center gap-2\">\n <StatusBadge label={service.status} variant={getStatusVariant(service.status)} dot />\n <StatusBadge label={service.category.replace(/_/g, ' ')} variant=\"muted\" />\n <span className=\"text-sm text-text-secondary\">{service.providerName}</span>\n </div>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n {unavailable ? (\n <Button type=\"button\" disabled>\n Currently Unavailable\n </Button>\n ) : (\n <Button type=\"button\" variant=\"default\" onClick={() => setContactOpen(true)}>\n <MessageCircle className=\"mr-1.5 h-4 w-4\" />\n Book Now\n </Button>\n )}\n </div>\n </div>\n\n <PagePurpose className=\"max-w-3xl\">\n Everything you need to decide whether to engage this legal provider — what the service covers, their rating and\n fees, how long it takes, and which documents to prepare. When you're ready, request a consultation to reach them\n through Messages.\n </PagePurpose>\n\n {/* Key facts — primary insight zone (one EmphasisPanel per page) */}\n <EmphasisPanel className=\"p-4\">\n <div className=\"grid grid-cols-2 gap-4 lg:grid-cols-4\">\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <div className=\"flex items-center gap-2 text-text-secondary\">\n <Star className=\"h-4 w-4\" />\n <span className=\"text-xs font-medium\">Provider Rating</span>\n </div>\n <div className=\"mt-2 flex items-center gap-2\">\n <span className=\"text-xl font-bold text-text-primary\">{service.providerRating ?? '—'}</span>\n {service.providerRating != null && <RatingStars rating={service.providerRating} />}\n </div>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <div className=\"flex items-center gap-2 text-text-secondary\">\n <IndianRupee className=\"h-4 w-4\" />\n <span className=\"text-xs font-medium\">Price Range</span>\n </div>\n <div className=\"mt-2 text-xl font-bold text-text-primary\">{service.priceRange ?? '—'}</div>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <div className=\"flex items-center gap-2 text-text-secondary\">\n <Clock className=\"h-4 w-4\" />\n <span className=\"text-xs font-medium\">Est. Duration</span>\n </div>\n <div className=\"mt-2 text-sm font-bold text-text-primary\">{service.estimatedDuration ?? '—'}</div>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <div className=\"flex items-center gap-2 text-text-secondary\">\n <ShieldCheck className=\"h-4 w-4\" />\n <span className=\"text-xs font-medium\">Consultation</span>\n </div>\n <div className=\"mt-2 text-sm font-bold text-text-primary\">\n {service.consultationFee && service.consultationFee > 0\n ? formatCurrency(service.consultationFee)\n : 'Free'}\n </div>\n </div>\n </div>\n </EmphasisPanel>\n\n <div className=\"grid grid-cols-1 gap-6 lg:grid-cols-3\">\n {/* Overview */}\n <div className=\"space-y-6 lg:col-span-2\">\n {service.description && (\n <GlassCard treatment=\"plain\" className=\"border-border-seam p-6\">\n <h2 className=\"mb-3 text-base font-semibold text-text-primary\">About this service</h2>\n <p className=\"text-sm leading-relaxed text-text-secondary\">{service.description}</p>\n </GlassCard>\n )}\n\n <GlassCard treatment=\"plain\" className=\"border-border-seam p-6\">\n <h2 className=\"mb-4 flex items-center gap-2 text-base font-semibold text-text-primary\">\n <FileText className=\"h-5 w-5\" />\n Documents Required\n </h2>\n {documents.length > 0 ? (\n <ul className=\"grid grid-cols-1 gap-2 sm:grid-cols-2\">\n {documents.map((doc, i) => (\n <li\n key={i}\n className=\"flex items-center gap-2 rounded-lg bg-bg-sunken/50 p-3 text-sm text-text-primary\"\n >\n <ClipboardCheck className=\"h-4 w-4 shrink-0 text-status-success-text\" />\n {doc}\n </li>\n ))}\n </ul>\n ) : (\n <EmptyState\n illustration=\"empty-files\"\n title=\"No documents listed\"\n description=\"The provider will confirm what to prepare during your consultation.\"\n className=\"border-0 bg-transparent p-4\"\n />\n )}\n </GlassCard>\n </div>\n\n {/* Provider card */}\n <div className=\"space-y-6\">\n <GlassCard treatment=\"plain\" className=\"border-border-seam p-5\">\n <h3 className=\"mb-4 text-base font-semibold text-text-primary\">Provider</h3>\n <dl className=\"space-y-3 text-sm\">\n <div className=\"flex items-center justify-between\">\n <dt className=\"text-text-secondary\">Name</dt>\n <dd className=\"font-medium text-text-primary\">{service.providerName}</dd>\n </div>\n <div className=\"flex items-center justify-between\">\n <dt className=\"text-text-secondary\">Rating</dt>\n <dd className=\"font-medium text-text-primary\">{service.providerRating ?? '—'}</dd>\n </div>\n <div className=\"flex items-center justify-between\">\n <dt className=\"text-text-secondary\">Availability</dt>\n <dd>\n <StatusBadge label={service.status} variant={getStatusVariant(service.status)} />\n </dd>\n </div>\n </dl>\n {unavailable ? (\n <Button type=\"button\" className=\"mt-4 w-full justify-center\" disabled>\n Currently Unavailable\n </Button>\n ) : (\n <Button\n type=\"button\"\n variant=\"default\"\n className=\"mt-4 w-full justify-center\"\n onClick={() => setContactOpen(true)}\n >\n Request a consultation\n </Button>\n )}\n </GlassCard>\n </div>\n </div>\n\n {/* Reviews — real, backed by EntityComments */}\n <ReviewsSection\n entityId={service.id}\n entityType=\"housingvista-legal-service\"\n aggregateRating={service.providerRating}\n />\n\n <ContactOwnerDialog\n open={contactOpen}\n onOpenChange={setContactOpen}\n entityId={service.id}\n entityType=\"housingvista-legal-service\"\n title={service.title}\n pagePath={location.pathname}\n heading={`Contact ${service.providerName}`}\n description={`Request a consultation about ${service.title}. Messages are saved and delivered in your inbox.`}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAyCA,SAAS,EAAgB,GAAkB;AACzC,SAAQ,GAAR;EACE,KAAK,eACH,QAAO,kBAAC,GAAD,EAAY,WAAU,WAAY,CAAA;EAC3C,KAAK,eACH,QAAO,kBAAC,GAAD,EAAU,WAAU,WAAY,CAAA;EACzC,KAAK,qBACH,QAAO,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;EACtC,KAAK,eACH,QAAO,kBAAC,GAAD,EAAgB,WAAU,WAAY,CAAA;EAC/C,KAAK,aACH,QAAO,kBAAC,GAAD,EAAU,WAAU,WAAY,CAAA;EACzC,QACE,QAAO,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;;;AAI1C,SAAS,EAAiB,GAA2D;AACnF,SAAQ,GAAR;EACE,KAAK,YACH,QAAO;EACT,KAAK,OACH,QAAO;EACT,KAAK,cACH,QAAO;EACT,QACE,QAAO;;;AAIb,SAAS,EAAY,EAAE,aAA8B;AACnD,QACE,kBAAC,OAAD;EAAK,WAAU;YACZ,MAAM,KAAK,EAAE,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,MACjC,kBAAC,GAAD,EAEE,WAAW,EAAG,WAAW,IAAI,KAAK,MAAM,EAAO,GAAG,iBAAiB,mCAAmC,EACtG,EAFK,EAEL,CACF;EACE,CAAA;;AAIV,SAAgB,IAAyB;CACvC,IAAM,EAAE,UAAO,GAA2B;AAE1C,GAAiB,6BAA6B,EAAG;CACjD,IAAM,IAAW,GAAa,EACxB,IAAW,GAAa,EACxB,CAAC,GAAa,KAAkB,EAAS,GAAM,EAC/C,EAAE,MAAM,GAAS,eAAY,EAAgB,EAAG;AAEtD,KAAI,EACF,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD,EAAiB,SAAQ,UAAW,CAAA;EAChC,CAAA;AAIV,KAAI,CAAC,EACH,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD;GACE,cAAa;GACb,MAAM,kBAAC,GAAD,EAAO,WAAU,aAAc,CAAA;GACrC,OAAM;GACN,aAAY;GACZ,QACE,kBAAC,UAAD;IACE,eAAe,EAAS,WAAW;IACnC,WAAU;cAFZ,CAIE,kBAAC,GAAD,EAAW,WAAU,WAAY,CAAA,EAAA,yBAE1B;;GAEX,CAAA;EACE,CAAA;CAIV,IAAM,IAAc,EAAQ,WAAW,eACjC,IAAY,EAAQ,qBAAqB,EAAE;AAGjD,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,GAAD,EAAa,OAJqB,CAAC;IAAE,OAAO;IAAS,MAAM;IAAO,EAAE,EAAE,OAAO,EAAQ,OAAO,CAAC,EAI1D,CAAA;GAGnC,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,OAAD;MAAK,WAAU;gBACZ,EAAgB,EAAQ,SAAS;MAC9B,CAAA,EACN,kBAAC,OAAD,EAAA,UAAA;MACE,kBAAC,UAAD;OACE,eAAe,EAAS,WAAW;OACnC,WAAU;iBAFZ,CAIE,kBAAC,GAAD,EAAW,WAAU,WAAY,CAAA,EAAA,yBAE1B;;MACT,kBAAC,MAAD;OAAI,WAAU;iBAA4C,EAAQ;OAAW,CAAA;MAC7E,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACE,kBAAC,GAAD;SAAa,OAAO,EAAQ;SAAQ,SAAS,EAAiB,EAAQ,OAAO;SAAE,KAAA;SAAM,CAAA;QACrF,kBAAC,GAAD;SAAa,OAAO,EAAQ,SAAS,QAAQ,MAAM,IAAI;SAAE,SAAQ;SAAU,CAAA;QAC3E,kBAAC,QAAD;SAAM,WAAU;mBAA+B,EAAQ;SAAoB,CAAA;QACvE;;MACF,EAAA,CAAA,CACF;QACN,kBAAC,OAAD;KAAK,WAAU;eACZ,IACC,kBAAC,GAAD;MAAQ,MAAK;MAAS,UAAA;gBAAS;MAEtB,CAAA,GAET,kBAAC,GAAD;MAAQ,MAAK;MAAS,SAAQ;MAAU,eAAe,EAAe,GAAK;gBAA3E,CACE,kBAAC,GAAD,EAAe,WAAU,kBAAmB,CAAA,EAAA,WAErC;;KAEP,CAAA,CACF;;GAEN,kBAAC,GAAD;IAAa,WAAU;cAAY;IAIrB,CAAA;GAGd,kBAAC,GAAD;IAAe,WAAU;cACvB,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA,EAC5B,kBAAC,QAAD;SAAM,WAAU;mBAAsB;SAAsB,CAAA,CACxD;WACN,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,QAAD;SAAM,WAAU;mBAAuC,EAAQ,kBAAkB;SAAW,CAAA,EAC3F,EAAQ,kBAAkB,QAAQ,kBAAC,GAAD,EAAa,QAAQ,EAAQ,gBAAkB,CAAA,CAC9E;UACF;;MACN,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,GAAD,EAAa,WAAU,WAAY,CAAA,EACnC,kBAAC,QAAD;SAAM,WAAU;mBAAsB;SAAkB,CAAA,CACpD;WACN,kBAAC,OAAD;QAAK,WAAU;kBAA4C,EAAQ,cAAc;QAAU,CAAA,CACvF;;MACN,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA,EAC7B,kBAAC,QAAD;SAAM,WAAU;mBAAsB;SAAoB,CAAA,CACtD;WACN,kBAAC,OAAD;QAAK,WAAU;kBAA4C,EAAQ,qBAAqB;QAAU,CAAA,CAC9F;;MACN,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,GAAD,EAAa,WAAU,WAAY,CAAA,EACnC,kBAAC,QAAD;SAAM,WAAU;mBAAsB;SAAmB,CAAA,CACrD;WACN,kBAAC,OAAD;QAAK,WAAU;kBACZ,EAAQ,mBAAmB,EAAQ,kBAAkB,IAClD,EAAe,EAAQ,gBAAgB,GACvC;QACA,CAAA,CACF;;MACF;;IACQ,CAAA;GAEhB,kBAAC,OAAD;IAAK,WAAU;cAAf,CAEE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACG,EAAQ,eACP,kBAAC,GAAD;MAAW,WAAU;MAAQ,WAAU;gBAAvC,CACE,kBAAC,MAAD;OAAI,WAAU;iBAAiD;OAAuB,CAAA,EACtF,kBAAC,KAAD;OAAG,WAAU;iBAA+C,EAAQ;OAAgB,CAAA,CAC1E;SAGd,kBAAC,GAAD;MAAW,WAAU;MAAQ,WAAU;gBAAvC,CACE,kBAAC,MAAD;OAAI,WAAU;iBAAd,CACE,kBAAC,GAAD,EAAU,WAAU,WAAY,CAAA,EAAA,qBAE7B;UACJ,EAAU,SAAS,IAClB,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAU,KAAK,GAAK,MACnB,kBAAC,MAAD;QAEE,WAAU;kBAFZ,CAIE,kBAAC,GAAD,EAAgB,WAAU,6CAA8C,CAAA,EACvE,EACE;UALE,EAKF,CACL;OACC,CAAA,GAEL,kBAAC,GAAD;OACE,cAAa;OACb,OAAM;OACN,aAAY;OACZ,WAAU;OACV,CAAA,CAEM;QACR;QAGN,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MAAW,WAAU;MAAQ,WAAU;gBAAvC;OACE,kBAAC,MAAD;QAAI,WAAU;kBAAiD;QAAa,CAAA;OAC5E,kBAAC,MAAD;QAAI,WAAU;kBAAd;SACE,kBAAC,OAAD;UAAK,WAAU;oBAAf,CACE,kBAAC,MAAD;WAAI,WAAU;qBAAsB;WAAS,CAAA,EAC7C,kBAAC,MAAD;WAAI,WAAU;qBAAiC,EAAQ;WAAkB,CAAA,CACrE;;SACN,kBAAC,OAAD;UAAK,WAAU;oBAAf,CACE,kBAAC,MAAD;WAAI,WAAU;qBAAsB;WAAW,CAAA,EAC/C,kBAAC,MAAD;WAAI,WAAU;qBAAiC,EAAQ,kBAAkB;WAAS,CAAA,CAC9E;;SACN,kBAAC,OAAD;UAAK,WAAU;oBAAf,CACE,kBAAC,MAAD;WAAI,WAAU;qBAAsB;WAAiB,CAAA,EACrD,kBAAC,MAAD,EAAA,UACE,kBAAC,GAAD;WAAa,OAAO,EAAQ;WAAQ,SAAS,EAAiB,EAAQ,OAAO;WAAI,CAAA,EAC9E,CAAA,CACD;;SACH;;OACJ,IACC,kBAAC,GAAD;QAAQ,MAAK;QAAS,WAAU;QAA6B,UAAA;kBAAS;QAE7D,CAAA,GAET,kBAAC,GAAD;QACE,MAAK;QACL,SAAQ;QACR,WAAU;QACV,eAAe,EAAe,GAAK;kBACpC;QAEQ,CAAA;OAED;;KACR,CAAA,CACF;;GAGN,kBAAC,GAAD;IACE,UAAU,EAAQ;IAClB,YAAW;IACX,iBAAiB,EAAQ;IACzB,CAAA;GAEF,kBAAC,GAAD;IACE,MAAM;IACN,cAAc;IACd,UAAU,EAAQ;IAClB,YAAW;IACX,OAAO,EAAQ;IACf,UAAU,EAAS;IACnB,SAAS,WAAW,EAAQ;IAC5B,aAAa,gCAAgC,EAAQ,MAAM;IAC3D,CAAA;GACE"}
@@ -1 +1 @@
1
- {"version":3,"file":"AreaInsightsPage.d.ts","sourceRoot":"","sources":["../../../../src/housingvista/pages/market/AreaInsightsPage.tsx"],"names":[],"mappings":"AAgMA,wBAAgB,gBAAgB,gCAiI/B"}
1
+ {"version":3,"file":"AreaInsightsPage.d.ts","sourceRoot":"","sources":["../../../../src/housingvista/pages/market/AreaInsightsPage.tsx"],"names":[],"mappings":"AAiMA,wBAAgB,gBAAgB,gCAkI/B"}