@burdenoff/microfe-assethandler 2026.703.2 → 2026.703.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 (64) hide show
  1. package/dist/assethandler/AssetHandlerRoot.js +18 -18
  2. package/dist/assethandler/hooks/useAssetHandlerNavigate.js +19 -0
  3. package/dist/assethandler/hooks/useAssetHandlerNavigate.js.map +1 -0
  4. package/dist/assethandler/pages/AiPredictionsPage.js +29 -29
  5. package/dist/assethandler/pages/AnalyticsPage.js +154 -154
  6. package/dist/assethandler/pages/AssetsAssetCategoriesPage.js +48 -48
  7. package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js +84 -84
  8. package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js.map +1 -1
  9. package/dist/assethandler/pages/AssetsAssetCreatePage.js +82 -82
  10. package/dist/assethandler/pages/AssetsAssetCreatePage.js.map +1 -1
  11. package/dist/assethandler/pages/AssetsAssetDetailPage.js +104 -103
  12. package/dist/assethandler/pages/AssetsAssetDetailPage.js.map +1 -1
  13. package/dist/assethandler/pages/AssetsAssetListPage.js +132 -132
  14. package/dist/assethandler/pages/AssetsAssetListPage.js.map +1 -1
  15. package/dist/assethandler/pages/AssetsAssetTrackingPage.js +52 -52
  16. package/dist/assethandler/pages/CmdbBrowserPage.js +27 -27
  17. package/dist/assethandler/pages/DashboardPage.js +119 -119
  18. package/dist/assethandler/pages/DashboardPage.js.map +1 -1
  19. package/dist/assethandler/pages/DigitalTwinPage.js +22 -22
  20. package/dist/assethandler/pages/DiscoveryJobsPage.js +35 -35
  21. package/dist/assethandler/pages/EsgDashboardPage.js +32 -32
  22. package/dist/assethandler/pages/FinanceBudgetDetailPage.js +57 -56
  23. package/dist/assethandler/pages/FinanceBudgetDetailPage.js.map +1 -1
  24. package/dist/assethandler/pages/FinanceFinanceHubPage.js +98 -98
  25. package/dist/assethandler/pages/FinanceFinanceHubPage.js.map +1 -1
  26. package/dist/assethandler/pages/FinanceInvoiceDetailPage.js +58 -57
  27. package/dist/assethandler/pages/FinanceInvoiceDetailPage.js.map +1 -1
  28. package/dist/assethandler/pages/IotDevicesPage.js +29 -29
  29. package/dist/assethandler/pages/ItilChangeDetailPage.js +76 -75
  30. package/dist/assethandler/pages/ItilChangeDetailPage.js.map +1 -1
  31. package/dist/assethandler/pages/ItilChangeManagementPage.js +49 -49
  32. package/dist/assethandler/pages/ItilIncidentDetailPage.js +63 -62
  33. package/dist/assethandler/pages/ItilIncidentDetailPage.js.map +1 -1
  34. package/dist/assethandler/pages/ItilIncidentManagementPage.js +72 -72
  35. package/dist/assethandler/pages/ItilItilhubPage.js +112 -112
  36. package/dist/assethandler/pages/ItilItilhubPage.js.map +1 -1
  37. package/dist/assethandler/pages/ItilProblemDetailPage.js +61 -60
  38. package/dist/assethandler/pages/ItilProblemDetailPage.js.map +1 -1
  39. package/dist/assethandler/pages/ItilProblemManagementPage.js +46 -46
  40. package/dist/assethandler/pages/KnowledgeBasePage.js +28 -28
  41. package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.js +52 -52
  42. package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.js +29 -29
  43. package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js +58 -57
  44. package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js.map +1 -1
  45. package/dist/assethandler/pages/OperationsOperationsHubPage.js +80 -80
  46. package/dist/assethandler/pages/OperationsOperationsHubPage.js.map +1 -1
  47. package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js +49 -48
  48. package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js.map +1 -1
  49. package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js +52 -52
  50. package/dist/assethandler/pages/ProvenancePage.js +36 -36
  51. package/dist/assethandler/pages/SamLicensesPage.js +27 -27
  52. package/dist/assethandler/pages/SecurityComplianceDetailPage.js +39 -38
  53. package/dist/assethandler/pages/SecurityComplianceDetailPage.js.map +1 -1
  54. package/dist/assethandler/pages/SecurityPolicyDetailPage.js +50 -49
  55. package/dist/assethandler/pages/SecurityPolicyDetailPage.js.map +1 -1
  56. package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js +47 -46
  57. package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js.map +1 -1
  58. package/dist/assethandler/pages/SecuritySecurityHubPage.js +104 -104
  59. package/dist/assethandler/pages/SecuritySecurityHubPage.js.map +1 -1
  60. package/dist/assethandler/pages/TransactionsTransactionDetailPage.js +74 -73
  61. package/dist/assethandler/pages/TransactionsTransactionDetailPage.js.map +1 -1
  62. package/dist/assethandler/pages/TransactionsTransactionListPage.js +77 -77
  63. package/dist/assethandler/providers/AssetHandlerProvider.js +12 -12
  64. package/package.json +1 -1
@@ -1,8 +1,8 @@
1
1
  import { useAssetHandlerStore as e } from "../store/assethandlerStore.js";
2
2
  import { useMemo as t } from "react";
3
3
  import { Activity as n, AlertTriangle as r, Box as i, PieChart as a, Wallet as o, Wrench as s } from "lucide-react";
4
- import { Badge as c, Card as l, CardContent as u, CardDescription as d, CardHeader as f, CardTitle as p, EmphasisPanel as m, GlassCard as h, GradientText as g, IllustratedEmptyState as _, PagePurpose as v, Separator as y, Tabs as b, TabsContent as x, TabsList as S, TabsTrigger as C } from "@burdenoff/fe-libs/ui";
5
- import { jsx as w, jsxs as T } from "react/jsx-runtime";
4
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
5
+ import { Badge as u, Card as d, CardContent as f, CardDescription as p, CardHeader as m, CardTitle as h, EmphasisPanel as g, GlassCard as _, GradientText as v, IllustratedEmptyState as y, PagePurpose as b, Separator as x, Tabs as S, TabsContent as C, TabsList as w, TabsTrigger as T } from "@burdenoff/fe-libs/ui";
6
6
  //#region src/assethandler/pages/AnalyticsPage.tsx
7
7
  var E = (e) => e === "active" ? "default" : e === "maintenance" ? "secondary" : "outline";
8
8
  function D() {
@@ -10,137 +10,137 @@ function D() {
10
10
  let n = t.category.replace("_", " ");
11
11
  return e[n] = (e[n] || 0) + 1, e;
12
12
  }, {}), [D]), F = t(() => D.reduce((e, t) => (e[t.status] = (e[t.status] || 0) + 1, e), {}), [D]), I = t(() => D.reduce((e, t) => (e[t.condition] = (e[t.condition] || 0) + 1, e), {}), [D]), L = D.filter((e) => e.status === "active").length, R = D.filter((e) => e.condition === "poor" || e.condition === "damaged" || e.status === "maintenance"), z = O.reduce((e, t) => e + Math.abs(t.amount), 0), B = j.reduce((e, t) => e + t.allocated, 0), V = j.reduce((e, t) => e + t.spent, 0), H = j.reduce((e, t) => e + t.remaining, 0), U = A.reduce((e, t) => e + (t.actualCost ?? t.estimatedCost ?? 0), 0), W = M.filter((e) => e.status !== "paid" && e.status !== "cancelled"), G = W.reduce((e, t) => e + t.amount, 0), K = k.filter((e) => e.status === "resolved" || e.status === "closed"), q = k.filter((e) => e.slaBreached), J = A.filter((e) => e.status === "completed"), Y = A.filter((e) => e.status === "scheduled"), X = N.filter((e) => e.status !== "completed" && e.status !== "cancelled");
13
- return /* @__PURE__ */ T("div", {
13
+ return /* @__PURE__ */ l("div", {
14
14
  className: "space-y-6 p-6",
15
15
  children: [
16
- /* @__PURE__ */ w("div", {
16
+ /* @__PURE__ */ c("div", {
17
17
  className: "flex items-center justify-between",
18
- children: /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("h1", {
18
+ children: /* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("h1", {
19
19
  className: "text-3xl font-bold",
20
- children: /* @__PURE__ */ w(g, { children: "Analytics & Business Intelligence" })
21
- }), /* @__PURE__ */ w("p", {
20
+ children: /* @__PURE__ */ c(v, { children: "Analytics & Business Intelligence" })
21
+ }), /* @__PURE__ */ c("p", {
22
22
  className: "text-sm text-text-secondary mt-1",
23
23
  children: "Asset, financial and operational insights across your estate"
24
24
  })] })
25
25
  }),
26
- /* @__PURE__ */ w(v, { children: "Turn raw asset data into decisions. See how your estate is distributed by category, status and condition, where budget is being spent, and how operations are trending — so you can plan work, justify replacements and spot risk before it shows up as downtime." }),
27
- /* @__PURE__ */ T(b, {
26
+ /* @__PURE__ */ c(b, { children: "Turn raw asset data into decisions. See how your estate is distributed by category, status and condition, where budget is being spent, and how operations are trending — so you can plan work, justify replacements and spot risk before it shows up as downtime." }),
27
+ /* @__PURE__ */ l(S, {
28
28
  defaultValue: "overview",
29
29
  children: [
30
- /* @__PURE__ */ T(S, { children: [
31
- /* @__PURE__ */ w(C, {
30
+ /* @__PURE__ */ l(w, { children: [
31
+ /* @__PURE__ */ c(T, {
32
32
  value: "overview",
33
33
  children: "Overview"
34
34
  }),
35
- /* @__PURE__ */ w(C, {
35
+ /* @__PURE__ */ c(T, {
36
36
  value: "financial",
37
37
  children: "Financial"
38
38
  }),
39
- /* @__PURE__ */ w(C, {
39
+ /* @__PURE__ */ c(T, {
40
40
  value: "operational",
41
41
  children: "Operational"
42
42
  }),
43
- /* @__PURE__ */ w(C, {
43
+ /* @__PURE__ */ c(T, {
44
44
  value: "insights",
45
45
  children: "Insights"
46
46
  })
47
47
  ] }),
48
- /* @__PURE__ */ T(x, {
48
+ /* @__PURE__ */ l(C, {
49
49
  value: "overview",
50
50
  className: "space-y-6 mt-6",
51
- children: [/* @__PURE__ */ T("div", {
51
+ children: [/* @__PURE__ */ l("div", {
52
52
  className: "grid gap-4 md:grid-cols-2 lg:grid-cols-4",
53
53
  children: [
54
- /* @__PURE__ */ T(h, {
54
+ /* @__PURE__ */ l(_, {
55
55
  treatment: "metric",
56
56
  className: "border-border-seam",
57
- children: [/* @__PURE__ */ T(f, {
57
+ children: [/* @__PURE__ */ l(m, {
58
58
  className: "flex flex-row items-center justify-between space-y-0 pb-2",
59
- children: [/* @__PURE__ */ w(p, {
59
+ children: [/* @__PURE__ */ c(h, {
60
60
  className: "text-sm font-medium",
61
61
  children: "Total Assets"
62
- }), /* @__PURE__ */ w(i, { className: "h-4 w-4 text-text-secondary" })]
63
- }), /* @__PURE__ */ T(u, { children: [/* @__PURE__ */ w("div", {
62
+ }), /* @__PURE__ */ c(i, { className: "h-4 w-4 text-text-secondary" })]
63
+ }), /* @__PURE__ */ l(f, { children: [/* @__PURE__ */ c("div", {
64
64
  className: "text-2xl font-bold tabular-nums",
65
65
  children: D.length
66
- }), /* @__PURE__ */ T("p", {
66
+ }), /* @__PURE__ */ l("p", {
67
67
  className: "text-xs text-text-secondary",
68
68
  children: [L, " currently active"]
69
69
  })] })]
70
70
  }),
71
- /* @__PURE__ */ T(h, {
71
+ /* @__PURE__ */ l(_, {
72
72
  treatment: "metric",
73
73
  className: "border-border-seam",
74
- children: [/* @__PURE__ */ T(f, {
74
+ children: [/* @__PURE__ */ l(m, {
75
75
  className: "flex flex-row items-center justify-between space-y-0 pb-2",
76
- children: [/* @__PURE__ */ w(p, {
76
+ children: [/* @__PURE__ */ c(h, {
77
77
  className: "text-sm font-medium",
78
78
  children: "Categories"
79
- }), /* @__PURE__ */ w(a, { className: "h-4 w-4 text-text-secondary" })]
80
- }), /* @__PURE__ */ T(u, { children: [/* @__PURE__ */ w("div", {
79
+ }), /* @__PURE__ */ c(a, { className: "h-4 w-4 text-text-secondary" })]
80
+ }), /* @__PURE__ */ l(f, { children: [/* @__PURE__ */ c("div", {
81
81
  className: "text-2xl font-bold tabular-nums",
82
82
  children: Object.keys(P).length
83
- }), /* @__PURE__ */ w("p", {
83
+ }), /* @__PURE__ */ c("p", {
84
84
  className: "text-xs text-text-secondary",
85
85
  children: "Distinct asset categories"
86
86
  })] })]
87
87
  }),
88
- /* @__PURE__ */ T(h, {
88
+ /* @__PURE__ */ l(_, {
89
89
  treatment: "metric",
90
90
  className: "border-border-seam",
91
- children: [/* @__PURE__ */ T(f, {
91
+ children: [/* @__PURE__ */ l(m, {
92
92
  className: "flex flex-row items-center justify-between space-y-0 pb-2",
93
- children: [/* @__PURE__ */ w(p, {
93
+ children: [/* @__PURE__ */ c(h, {
94
94
  className: "text-sm font-medium",
95
95
  children: "Needs Attention"
96
- }), /* @__PURE__ */ w(r, { className: "h-4 w-4 text-text-secondary" })]
97
- }), /* @__PURE__ */ T(u, { children: [/* @__PURE__ */ w("div", {
96
+ }), /* @__PURE__ */ c(r, { className: "h-4 w-4 text-text-secondary" })]
97
+ }), /* @__PURE__ */ l(f, { children: [/* @__PURE__ */ c("div", {
98
98
  className: "text-2xl font-bold tabular-nums",
99
99
  children: R.length
100
- }), /* @__PURE__ */ w("p", {
100
+ }), /* @__PURE__ */ c("p", {
101
101
  className: "text-xs text-text-secondary",
102
102
  children: "Poor / damaged / in maintenance"
103
103
  })] })]
104
104
  }),
105
- /* @__PURE__ */ T(h, {
105
+ /* @__PURE__ */ l(_, {
106
106
  treatment: "metric",
107
107
  className: "border-border-seam",
108
- children: [/* @__PURE__ */ T(f, {
108
+ children: [/* @__PURE__ */ l(m, {
109
109
  className: "flex flex-row items-center justify-between space-y-0 pb-2",
110
- children: [/* @__PURE__ */ w(p, {
110
+ children: [/* @__PURE__ */ c(h, {
111
111
  className: "text-sm font-medium",
112
112
  children: "Open Incidents"
113
- }), /* @__PURE__ */ w(n, { className: "h-4 w-4 text-text-secondary" })]
114
- }), /* @__PURE__ */ T(u, { children: [/* @__PURE__ */ w("div", {
113
+ }), /* @__PURE__ */ c(n, { className: "h-4 w-4 text-text-secondary" })]
114
+ }), /* @__PURE__ */ l(f, { children: [/* @__PURE__ */ c("div", {
115
115
  className: "text-2xl font-bold tabular-nums",
116
116
  children: k.length - K.length
117
- }), /* @__PURE__ */ T("p", {
117
+ }), /* @__PURE__ */ l("p", {
118
118
  className: "text-xs text-text-secondary",
119
119
  children: [k.length, " total logged"]
120
120
  })] })]
121
121
  })
122
122
  ]
123
- }), /* @__PURE__ */ T("div", {
123
+ }), /* @__PURE__ */ l("div", {
124
124
  className: "grid gap-6 lg:grid-cols-2",
125
- children: [/* @__PURE__ */ T(l, { children: [/* @__PURE__ */ T(f, { children: [/* @__PURE__ */ T(p, {
125
+ children: [/* @__PURE__ */ l(d, { children: [/* @__PURE__ */ l(m, { children: [/* @__PURE__ */ l(h, {
126
126
  className: "flex items-center gap-2",
127
- children: [/* @__PURE__ */ w(a, { className: "h-4 w-4" }), "Category Distribution"]
128
- }), /* @__PURE__ */ w(d, { children: "Assets grouped by category" })] }), /* @__PURE__ */ w(u, { children: D.length === 0 ? /* @__PURE__ */ w(_, {
127
+ children: [/* @__PURE__ */ c(a, { className: "h-4 w-4" }), "Category Distribution"]
128
+ }), /* @__PURE__ */ c(p, { children: "Assets grouped by category" })] }), /* @__PURE__ */ c(f, { children: D.length === 0 ? /* @__PURE__ */ c(y, {
129
129
  illustration: "empty-data",
130
130
  title: "No assets yet",
131
131
  description: "Add assets to see how your estate is distributed."
132
- }) : /* @__PURE__ */ w("div", {
132
+ }) : /* @__PURE__ */ c("div", {
133
133
  className: "space-y-3",
134
134
  children: Object.entries(P).sort((e, t) => t[1] - e[1]).map(([e, t]) => {
135
135
  let n = Math.round(t / D.length * 100);
136
- return /* @__PURE__ */ T("div", {
136
+ return /* @__PURE__ */ l("div", {
137
137
  className: "space-y-1",
138
- children: [/* @__PURE__ */ T("div", {
138
+ children: [/* @__PURE__ */ l("div", {
139
139
  className: "flex items-center justify-between text-sm",
140
- children: [/* @__PURE__ */ w("span", {
140
+ children: [/* @__PURE__ */ c("span", {
141
141
  className: "font-medium capitalize",
142
142
  children: e
143
- }), /* @__PURE__ */ T("span", {
143
+ }), /* @__PURE__ */ l("span", {
144
144
  className: "text-text-secondary",
145
145
  children: [
146
146
  t,
@@ -149,37 +149,37 @@ function D() {
149
149
  "%"
150
150
  ]
151
151
  })]
152
- }), /* @__PURE__ */ w("div", {
152
+ }), /* @__PURE__ */ c("div", {
153
153
  className: "h-2 rounded-full bg-bg-sunken overflow-hidden",
154
- children: /* @__PURE__ */ w("div", {
154
+ children: /* @__PURE__ */ c("div", {
155
155
  className: "h-full rounded-full bg-action-primary-bg",
156
156
  style: { width: `${n}%` }
157
157
  })
158
158
  })]
159
159
  }, e);
160
160
  })
161
- }) })] }), /* @__PURE__ */ T(l, { children: [/* @__PURE__ */ T(f, { children: [/* @__PURE__ */ T(p, {
161
+ }) })] }), /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ l(m, { children: [/* @__PURE__ */ l(h, {
162
162
  className: "flex items-center gap-2",
163
- children: [/* @__PURE__ */ w(n, { className: "h-4 w-4" }), "Status & Condition"]
164
- }), /* @__PURE__ */ w(d, { children: "Current asset status and condition mix" })] }), /* @__PURE__ */ T(u, { children: [
165
- /* @__PURE__ */ w("div", {
163
+ children: [/* @__PURE__ */ c(n, { className: "h-4 w-4" }), "Status & Condition"]
164
+ }), /* @__PURE__ */ c(p, { children: "Current asset status and condition mix" })] }), /* @__PURE__ */ l(f, { children: [
165
+ /* @__PURE__ */ c("div", {
166
166
  className: "space-y-3",
167
167
  children: Object.entries(F).map(([e, t]) => {
168
168
  let n = D.length > 0 ? Math.round(t / D.length * 100) : 0;
169
- return /* @__PURE__ */ T("div", {
169
+ return /* @__PURE__ */ l("div", {
170
170
  className: "flex items-center justify-between",
171
- children: [/* @__PURE__ */ w(c, {
171
+ children: [/* @__PURE__ */ c(u, {
172
172
  variant: E(e),
173
173
  children: e.replace("_", " ")
174
- }), /* @__PURE__ */ T("div", {
174
+ }), /* @__PURE__ */ l("div", {
175
175
  className: "flex items-center gap-3",
176
- children: [/* @__PURE__ */ w("div", {
176
+ children: [/* @__PURE__ */ c("div", {
177
177
  className: "h-2 w-24 rounded-full bg-bg-sunken overflow-hidden",
178
- children: /* @__PURE__ */ w("div", {
178
+ children: /* @__PURE__ */ c("div", {
179
179
  className: "h-full rounded-full bg-action-primary-bg",
180
180
  style: { width: `${n}%` }
181
181
  })
182
- }), /* @__PURE__ */ w("span", {
182
+ }), /* @__PURE__ */ c("span", {
183
183
  className: "text-sm font-medium w-8 text-right",
184
184
  children: t
185
185
  })]
@@ -187,13 +187,13 @@ function D() {
187
187
  }, e);
188
188
  })
189
189
  }),
190
- /* @__PURE__ */ w(y, { className: "my-4" }),
191
- /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("h4", {
190
+ /* @__PURE__ */ c(x, { className: "my-4" }),
191
+ /* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("h4", {
192
192
  className: "text-sm font-medium mb-3",
193
193
  children: "By Condition"
194
- }), /* @__PURE__ */ w("div", {
194
+ }), /* @__PURE__ */ c("div", {
195
195
  className: "flex flex-wrap gap-2",
196
- children: Object.entries(I).map(([e, t]) => /* @__PURE__ */ T(c, {
196
+ children: Object.entries(I).map(([e, t]) => /* @__PURE__ */ l(u, {
197
197
  variant: "outline",
198
198
  className: "capitalize",
199
199
  children: [
@@ -206,23 +206,23 @@ function D() {
206
206
  ] })] })]
207
207
  })]
208
208
  }),
209
- /* @__PURE__ */ T(x, {
209
+ /* @__PURE__ */ l(C, {
210
210
  value: "financial",
211
211
  className: "space-y-6 mt-6",
212
212
  children: [
213
- /* @__PURE__ */ T("div", {
213
+ /* @__PURE__ */ l("div", {
214
214
  className: "grid gap-4 md:grid-cols-4",
215
215
  children: [
216
- /* @__PURE__ */ T(l, { children: [/* @__PURE__ */ w(f, {
216
+ /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ c(m, {
217
217
  className: "pb-2",
218
- children: /* @__PURE__ */ w(p, {
218
+ children: /* @__PURE__ */ c(h, {
219
219
  className: "text-sm font-medium",
220
220
  children: "Transactions"
221
221
  })
222
- }), /* @__PURE__ */ T(u, { children: [/* @__PURE__ */ w("div", {
222
+ }), /* @__PURE__ */ l(f, { children: [/* @__PURE__ */ c("div", {
223
223
  className: "text-2xl font-bold tabular-nums",
224
224
  children: O.length
225
- }), /* @__PURE__ */ T("p", {
225
+ }), /* @__PURE__ */ l("p", {
226
226
  className: "text-xs text-text-secondary",
227
227
  children: [
228
228
  "$",
@@ -230,16 +230,16 @@ function D() {
230
230
  " total value"
231
231
  ]
232
232
  })] })] }),
233
- /* @__PURE__ */ T(l, { children: [/* @__PURE__ */ w(f, {
233
+ /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ c(m, {
234
234
  className: "pb-2",
235
- children: /* @__PURE__ */ w(p, {
235
+ children: /* @__PURE__ */ c(h, {
236
236
  className: "text-sm font-medium",
237
237
  children: "Budget Allocated"
238
238
  })
239
- }), /* @__PURE__ */ T(u, { children: [/* @__PURE__ */ T("div", {
239
+ }), /* @__PURE__ */ l(f, { children: [/* @__PURE__ */ l("div", {
240
240
  className: "text-2xl font-bold tabular-nums",
241
241
  children: ["$", B.toLocaleString()]
242
- }), /* @__PURE__ */ T("p", {
242
+ }), /* @__PURE__ */ l("p", {
243
243
  className: "text-xs text-text-secondary",
244
244
  children: [
245
245
  "$",
@@ -247,29 +247,29 @@ function D() {
247
247
  " spent"
248
248
  ]
249
249
  })] })] }),
250
- /* @__PURE__ */ T(l, { children: [/* @__PURE__ */ w(f, {
250
+ /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ c(m, {
251
251
  className: "pb-2",
252
- children: /* @__PURE__ */ w(p, {
252
+ children: /* @__PURE__ */ c(h, {
253
253
  className: "text-sm font-medium",
254
254
  children: "Maintenance Cost"
255
255
  })
256
- }), /* @__PURE__ */ T(u, { children: [/* @__PURE__ */ T("div", {
256
+ }), /* @__PURE__ */ l(f, { children: [/* @__PURE__ */ l("div", {
257
257
  className: "text-2xl font-bold tabular-nums",
258
258
  children: ["$", U.toLocaleString()]
259
- }), /* @__PURE__ */ T("p", {
259
+ }), /* @__PURE__ */ l("p", {
260
260
  className: "text-xs text-text-secondary",
261
261
  children: [A.length, " maintenance records"]
262
262
  })] })] }),
263
- /* @__PURE__ */ T(l, { children: [/* @__PURE__ */ w(f, {
263
+ /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ c(m, {
264
264
  className: "pb-2",
265
- children: /* @__PURE__ */ w(p, {
265
+ children: /* @__PURE__ */ c(h, {
266
266
  className: "text-sm font-medium",
267
267
  children: "Outstanding Invoices"
268
268
  })
269
- }), /* @__PURE__ */ T(u, { children: [/* @__PURE__ */ T("div", {
269
+ }), /* @__PURE__ */ l(f, { children: [/* @__PURE__ */ l("div", {
270
270
  className: "text-2xl font-bold tabular-nums",
271
271
  children: ["$", G.toLocaleString()]
272
- }), /* @__PURE__ */ T("p", {
272
+ }), /* @__PURE__ */ l("p", {
273
273
  className: "text-xs text-text-secondary",
274
274
  children: [
275
275
  W.length,
@@ -280,26 +280,26 @@ function D() {
280
280
  })] })] })
281
281
  ]
282
282
  }),
283
- /* @__PURE__ */ T(l, { children: [/* @__PURE__ */ T(f, { children: [/* @__PURE__ */ T(p, {
283
+ /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ l(m, { children: [/* @__PURE__ */ l(h, {
284
284
  className: "flex items-center gap-2",
285
- children: [/* @__PURE__ */ w(o, { className: "h-4 w-4" }), "Budget Utilization"]
286
- }), /* @__PURE__ */ w(d, { children: "Allocated vs. spent per budget" })] }), /* @__PURE__ */ w(u, { children: j.length === 0 ? /* @__PURE__ */ w(_, {
285
+ children: [/* @__PURE__ */ c(o, { className: "h-4 w-4" }), "Budget Utilization"]
286
+ }), /* @__PURE__ */ c(p, { children: "Allocated vs. spent per budget" })] }), /* @__PURE__ */ c(f, { children: j.length === 0 ? /* @__PURE__ */ c(y, {
287
287
  illustration: "empty-data",
288
288
  title: "No budgets yet",
289
289
  description: "Create a budget to track allocation and spend here."
290
- }) : /* @__PURE__ */ T("div", {
290
+ }) : /* @__PURE__ */ l("div", {
291
291
  className: "space-y-3",
292
292
  children: [
293
293
  j.map((e) => {
294
294
  let t = e.allocated > 0 ? Math.min(100, Math.round(e.spent / e.allocated * 100)) : 0;
295
- return /* @__PURE__ */ T("div", {
295
+ return /* @__PURE__ */ l("div", {
296
296
  className: "space-y-1",
297
- children: [/* @__PURE__ */ T("div", {
297
+ children: [/* @__PURE__ */ l("div", {
298
298
  className: "flex items-center justify-between text-sm",
299
- children: [/* @__PURE__ */ w("span", {
299
+ children: [/* @__PURE__ */ c("span", {
300
300
  className: "font-medium",
301
301
  children: e.name
302
- }), /* @__PURE__ */ T("span", {
302
+ }), /* @__PURE__ */ l("span", {
303
303
  className: "text-text-secondary",
304
304
  children: [
305
305
  "$",
@@ -308,68 +308,68 @@ function D() {
308
308
  e.allocated.toLocaleString()
309
309
  ]
310
310
  })]
311
- }), /* @__PURE__ */ w("div", {
311
+ }), /* @__PURE__ */ c("div", {
312
312
  className: "h-2 rounded-full bg-bg-sunken overflow-hidden",
313
- children: /* @__PURE__ */ w("div", {
313
+ children: /* @__PURE__ */ c("div", {
314
314
  className: `h-full rounded-full ${t >= 100 ? "bg-status-error-text" : "bg-action-primary-bg"}`,
315
315
  style: { width: `${t}%` }
316
316
  })
317
317
  })]
318
318
  }, e.id);
319
319
  }),
320
- /* @__PURE__ */ w(y, {}),
321
- /* @__PURE__ */ T("div", {
320
+ /* @__PURE__ */ c(x, {}),
321
+ /* @__PURE__ */ l("div", {
322
322
  className: "flex items-center justify-between text-sm font-medium",
323
- children: [/* @__PURE__ */ w("span", { children: "Remaining across all budgets" }), /* @__PURE__ */ T("span", { children: ["$", H.toLocaleString()] })]
323
+ children: [/* @__PURE__ */ c("span", { children: "Remaining across all budgets" }), /* @__PURE__ */ l("span", { children: ["$", H.toLocaleString()] })]
324
324
  })
325
325
  ]
326
326
  }) })] }),
327
- /* @__PURE__ */ T(l, { children: [/* @__PURE__ */ w(f, { children: /* @__PURE__ */ w(p, { children: "Recent Transactions" }) }), /* @__PURE__ */ w(u, { children: O.length === 0 ? /* @__PURE__ */ w(_, {
327
+ /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ c(m, { children: /* @__PURE__ */ c(h, { children: "Recent Transactions" }) }), /* @__PURE__ */ c(f, { children: O.length === 0 ? /* @__PURE__ */ c(y, {
328
328
  illustration: "empty-data",
329
329
  title: "No transactions",
330
330
  description: "Asset purchases, leases and disposals will appear here."
331
- }) : /* @__PURE__ */ w("div", {
331
+ }) : /* @__PURE__ */ c("div", {
332
332
  className: "overflow-x-auto",
333
- children: /* @__PURE__ */ T("table", {
333
+ children: /* @__PURE__ */ l("table", {
334
334
  className: "w-full text-sm",
335
- children: [/* @__PURE__ */ w("thead", { children: /* @__PURE__ */ T("tr", {
335
+ children: [/* @__PURE__ */ c("thead", { children: /* @__PURE__ */ l("tr", {
336
336
  className: "border-b",
337
337
  children: [
338
- /* @__PURE__ */ w("th", {
338
+ /* @__PURE__ */ c("th", {
339
339
  className: "text-left py-2 font-medium",
340
340
  children: "Type"
341
341
  }),
342
- /* @__PURE__ */ w("th", {
342
+ /* @__PURE__ */ c("th", {
343
343
  className: "text-left py-2 font-medium",
344
344
  children: "Description"
345
345
  }),
346
- /* @__PURE__ */ w("th", {
346
+ /* @__PURE__ */ c("th", {
347
347
  className: "text-right py-2 font-medium",
348
348
  children: "Amount"
349
349
  }),
350
- /* @__PURE__ */ w("th", {
350
+ /* @__PURE__ */ c("th", {
351
351
  className: "text-left py-2 font-medium",
352
352
  children: "Status"
353
353
  })
354
354
  ]
355
- }) }), /* @__PURE__ */ w("tbody", { children: O.slice(0, 5).map((e) => /* @__PURE__ */ T("tr", {
355
+ }) }), /* @__PURE__ */ c("tbody", { children: O.slice(0, 5).map((e) => /* @__PURE__ */ l("tr", {
356
356
  className: "border-b hover:bg-bg-sunken/50",
357
357
  children: [
358
- /* @__PURE__ */ w("td", {
358
+ /* @__PURE__ */ c("td", {
359
359
  className: "py-2 capitalize",
360
360
  children: e.type
361
361
  }),
362
- /* @__PURE__ */ w("td", {
362
+ /* @__PURE__ */ c("td", {
363
363
  className: "py-2 truncate max-w-xs",
364
364
  children: e.description
365
365
  }),
366
- /* @__PURE__ */ T("td", {
366
+ /* @__PURE__ */ l("td", {
367
367
  className: `py-2 text-right font-medium ${e.amount < 0 ? "text-status-error-text" : ""}`,
368
368
  children: ["$", Math.abs(e.amount).toLocaleString()]
369
369
  }),
370
- /* @__PURE__ */ w("td", {
370
+ /* @__PURE__ */ c("td", {
371
371
  className: "py-2",
372
- children: /* @__PURE__ */ w(c, {
372
+ children: /* @__PURE__ */ c(u, {
373
373
  variant: "outline",
374
374
  children: e.status
375
375
  })
@@ -380,48 +380,48 @@ function D() {
380
380
  }) })] })
381
381
  ]
382
382
  }),
383
- /* @__PURE__ */ w(x, {
383
+ /* @__PURE__ */ c(C, {
384
384
  value: "operational",
385
385
  className: "space-y-6 mt-6",
386
- children: /* @__PURE__ */ T("div", {
386
+ children: /* @__PURE__ */ l("div", {
387
387
  className: "grid gap-4 md:grid-cols-4",
388
388
  children: [
389
- /* @__PURE__ */ T(l, { children: [/* @__PURE__ */ w(f, {
389
+ /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ c(m, {
390
390
  className: "pb-2",
391
- children: /* @__PURE__ */ w(p, {
391
+ children: /* @__PURE__ */ c(h, {
392
392
  className: "text-sm font-medium",
393
393
  children: "Incidents"
394
394
  })
395
- }), /* @__PURE__ */ T(u, { children: [/* @__PURE__ */ w("div", {
395
+ }), /* @__PURE__ */ l(f, { children: [/* @__PURE__ */ c("div", {
396
396
  className: "text-2xl font-bold tabular-nums",
397
397
  children: k.length
398
- }), /* @__PURE__ */ T("p", {
398
+ }), /* @__PURE__ */ l("p", {
399
399
  className: "text-xs text-text-secondary",
400
400
  children: [K.length, " resolved"]
401
401
  })] })] }),
402
- /* @__PURE__ */ T(l, { children: [/* @__PURE__ */ w(f, {
402
+ /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ c(m, {
403
403
  className: "pb-2",
404
- children: /* @__PURE__ */ w(p, {
404
+ children: /* @__PURE__ */ c(h, {
405
405
  className: "text-sm font-medium",
406
406
  children: "SLA Breaches"
407
407
  })
408
- }), /* @__PURE__ */ T(u, { children: [/* @__PURE__ */ w("div", {
408
+ }), /* @__PURE__ */ l(f, { children: [/* @__PURE__ */ c("div", {
409
409
  className: "text-2xl font-bold text-status-error-text",
410
410
  children: q.length
411
- }), /* @__PURE__ */ T("p", {
411
+ }), /* @__PURE__ */ l("p", {
412
412
  className: "text-xs text-text-secondary",
413
413
  children: [((1 - q.length / Math.max(k.length, 1)) * 100).toFixed(1), "% within SLA"]
414
414
  })] })] }),
415
- /* @__PURE__ */ T(l, { children: [/* @__PURE__ */ w(f, {
415
+ /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ c(m, {
416
416
  className: "pb-2",
417
- children: /* @__PURE__ */ w(p, {
417
+ children: /* @__PURE__ */ c(h, {
418
418
  className: "text-sm font-medium",
419
419
  children: "Maintenance Done"
420
420
  })
421
- }), /* @__PURE__ */ T(u, { children: [/* @__PURE__ */ w("div", {
421
+ }), /* @__PURE__ */ l(f, { children: [/* @__PURE__ */ c("div", {
422
422
  className: "text-2xl font-bold tabular-nums",
423
423
  children: J.length
424
- }), /* @__PURE__ */ T("p", {
424
+ }), /* @__PURE__ */ l("p", {
425
425
  className: "text-xs text-text-secondary",
426
426
  children: [
427
427
  "of ",
@@ -429,16 +429,16 @@ function D() {
429
429
  " total"
430
430
  ]
431
431
  })] })] }),
432
- /* @__PURE__ */ T(l, { children: [/* @__PURE__ */ w(f, {
432
+ /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ c(m, {
433
433
  className: "pb-2",
434
- children: /* @__PURE__ */ w(p, {
434
+ children: /* @__PURE__ */ c(h, {
435
435
  className: "text-sm font-medium",
436
436
  children: "Open Work Orders"
437
437
  })
438
- }), /* @__PURE__ */ T(u, { children: [/* @__PURE__ */ w("div", {
438
+ }), /* @__PURE__ */ l(f, { children: [/* @__PURE__ */ c("div", {
439
439
  className: "text-2xl font-bold tabular-nums",
440
440
  children: X.length
441
- }), /* @__PURE__ */ T("p", {
441
+ }), /* @__PURE__ */ l("p", {
442
442
  className: "text-xs text-text-secondary",
443
443
  children: [
444
444
  "of ",
@@ -449,18 +449,18 @@ function D() {
449
449
  ]
450
450
  })
451
451
  }),
452
- /* @__PURE__ */ T(x, {
452
+ /* @__PURE__ */ l(C, {
453
453
  value: "insights",
454
454
  className: "space-y-6 mt-6",
455
- children: [/* @__PURE__ */ T("div", {
455
+ children: [/* @__PURE__ */ l("div", {
456
456
  className: "grid gap-4 md:grid-cols-3",
457
457
  children: [
458
- /* @__PURE__ */ T(l, {
458
+ /* @__PURE__ */ l(d, {
459
459
  className: "border-status-info-border bg-status-info-bg-subtle",
460
- children: [/* @__PURE__ */ w(f, { children: /* @__PURE__ */ w(p, {
460
+ children: [/* @__PURE__ */ c(m, { children: /* @__PURE__ */ c(h, {
461
461
  className: "text-status-info-text text-base",
462
462
  children: "Diversification"
463
- }) }), /* @__PURE__ */ w(u, { children: /* @__PURE__ */ T("p", {
463
+ }) }), /* @__PURE__ */ c(f, { children: /* @__PURE__ */ l("p", {
464
464
  className: "text-sm text-status-info-text",
465
465
  children: [
466
466
  "Your estate spans ",
@@ -474,12 +474,12 @@ function D() {
474
474
  ]
475
475
  }) })]
476
476
  }),
477
- /* @__PURE__ */ T(l, {
477
+ /* @__PURE__ */ l(d, {
478
478
  className: "border-status-success-border bg-status-success-bg-subtle",
479
- children: [/* @__PURE__ */ w(f, { children: /* @__PURE__ */ w(p, {
479
+ children: [/* @__PURE__ */ c(m, { children: /* @__PURE__ */ c(h, {
480
480
  className: "text-status-success-text text-base",
481
481
  children: "Budget"
482
- }) }), /* @__PURE__ */ w(u, { children: /* @__PURE__ */ T("p", {
482
+ }) }), /* @__PURE__ */ c(f, { children: /* @__PURE__ */ l("p", {
483
483
  className: "text-sm text-status-success-text",
484
484
  children: [
485
485
  "$",
@@ -496,12 +496,12 @@ function D() {
496
496
  ]
497
497
  }) })]
498
498
  }),
499
- /* @__PURE__ */ T(l, {
499
+ /* @__PURE__ */ l(d, {
500
500
  className: "border-status-warning-border bg-status-warning-bg-subtle",
501
- children: [/* @__PURE__ */ w(f, { children: /* @__PURE__ */ w(p, {
501
+ children: [/* @__PURE__ */ c(m, { children: /* @__PURE__ */ c(h, {
502
502
  className: "text-status-warning-text text-base",
503
503
  children: "Maintenance"
504
- }) }), /* @__PURE__ */ w(u, { children: /* @__PURE__ */ T("p", {
504
+ }) }), /* @__PURE__ */ c(f, { children: /* @__PURE__ */ l("p", {
505
505
  className: "text-sm text-status-warning-text",
506
506
  children: [
507
507
  Y.length,
@@ -512,41 +512,41 @@ function D() {
512
512
  }) })]
513
513
  })
514
514
  ]
515
- }), /* @__PURE__ */ T(m, { children: [/* @__PURE__ */ T(f, {
515
+ }), /* @__PURE__ */ l(g, { children: [/* @__PURE__ */ l(m, {
516
516
  className: "px-0 pt-0",
517
- children: [/* @__PURE__ */ T(p, {
517
+ children: [/* @__PURE__ */ l(h, {
518
518
  className: "flex items-center gap-2",
519
- children: [/* @__PURE__ */ w(s, { className: "h-4 w-4" }), "Assets Needing Attention"]
520
- }), /* @__PURE__ */ w(d, { children: "Assets in poor or damaged condition, or currently under maintenance" })]
521
- }), /* @__PURE__ */ w(u, {
519
+ children: [/* @__PURE__ */ c(s, { className: "h-4 w-4" }), "Assets Needing Attention"]
520
+ }), /* @__PURE__ */ c(p, { children: "Assets in poor or damaged condition, or currently under maintenance" })]
521
+ }), /* @__PURE__ */ c(f, {
522
522
  className: "px-0 pb-0",
523
- children: R.length === 0 ? /* @__PURE__ */ w(_, {
523
+ children: R.length === 0 ? /* @__PURE__ */ c(y, {
524
524
  illustration: "empty-success",
525
525
  title: "Everything looks healthy",
526
526
  description: "No assets are flagged as poor, damaged or in maintenance right now."
527
- }) : /* @__PURE__ */ w("div", {
527
+ }) : /* @__PURE__ */ c("div", {
528
528
  className: "space-y-3",
529
- children: R.slice(0, 6).map((e, t) => /* @__PURE__ */ T("div", {
529
+ children: R.slice(0, 6).map((e, t) => /* @__PURE__ */ l("div", {
530
530
  className: "flex items-center justify-between p-3 rounded-lg border border-border-seam bg-gloss-card",
531
- children: [/* @__PURE__ */ T("div", {
531
+ children: [/* @__PURE__ */ l("div", {
532
532
  className: "flex items-center gap-3",
533
- children: [/* @__PURE__ */ w("div", {
533
+ children: [/* @__PURE__ */ c("div", {
534
534
  className: "w-8 h-8 rounded-full bg-action-primary-bg/10 flex items-center justify-center text-xs font-medium text-primary",
535
535
  children: t + 1
536
- }), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
536
+ }), /* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("p", {
537
537
  className: "text-sm font-medium",
538
538
  children: e.name
539
- }), /* @__PURE__ */ T("p", {
539
+ }), /* @__PURE__ */ l("p", {
540
540
  className: "text-xs text-text-secondary capitalize",
541
541
  children: [e.category.replace("_", " "), e.location ? ` · ${e.location}` : ""]
542
542
  })] })]
543
- }), /* @__PURE__ */ T("div", {
543
+ }), /* @__PURE__ */ l("div", {
544
544
  className: "flex items-center gap-2",
545
- children: [/* @__PURE__ */ w(c, {
545
+ children: [/* @__PURE__ */ c(u, {
546
546
  variant: "outline",
547
547
  className: "capitalize",
548
548
  children: e.condition
549
- }), /* @__PURE__ */ w(c, {
549
+ }), /* @__PURE__ */ c(u, {
550
550
  variant: E(e.status),
551
551
  children: e.status.replace("_", " ")
552
552
  })]