@burdenoff/microfe-assethandler 2026.713.2 → 2026.714.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.
Files changed (31) hide show
  1. package/dist/assethandler/components/AttachmentsPanel.d.ts.map +1 -1
  2. package/dist/assethandler/components/AttachmentsPanel.js.map +1 -1
  3. package/dist/assethandler/hooks/useCopy.d.ts +28 -0
  4. package/dist/assethandler/hooks/useCopy.d.ts.map +1 -0
  5. package/dist/assethandler/hooks/useCopy.js +33 -0
  6. package/dist/assethandler/hooks/useCopy.js.map +1 -0
  7. package/dist/assethandler/index.d.ts +1 -1
  8. package/dist/assethandler/index.d.ts.map +1 -1
  9. package/dist/assethandler/pages/AnalyticsPage.d.ts.map +1 -1
  10. package/dist/assethandler/pages/AnalyticsPage.js +259 -258
  11. package/dist/assethandler/pages/AnalyticsPage.js.map +1 -1
  12. package/dist/assethandler/pages/AssetsAssetCategoriesPage.d.ts.map +1 -1
  13. package/dist/assethandler/pages/AssetsAssetCategoriesPage.js +1 -2
  14. package/dist/assethandler/pages/AssetsAssetCategoriesPage.js.map +1 -1
  15. package/dist/assethandler/pages/AssetsAssetListPage.d.ts.map +1 -1
  16. package/dist/assethandler/pages/AssetsAssetListPage.js +47 -48
  17. package/dist/assethandler/pages/AssetsAssetListPage.js.map +1 -1
  18. package/dist/assethandler/pages/DashboardPage.d.ts.map +1 -1
  19. package/dist/assethandler/pages/DashboardPage.js +236 -236
  20. package/dist/assethandler/pages/DashboardPage.js.map +1 -1
  21. package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.d.ts.map +1 -1
  22. package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js +126 -125
  23. package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js.map +1 -1
  24. package/dist/assethandler/pages/TransactionsTransactionListPage.js +127 -127
  25. package/dist/assethandler/pages/TransactionsTransactionListPage.js.map +1 -1
  26. package/dist/assethandler/store/assethandlerStore.d.ts.map +1 -1
  27. package/dist/assethandler/store/assethandlerStore.js.map +1 -1
  28. package/dist/assethandler/types/index.d.ts +20 -0
  29. package/dist/assethandler/types/index.d.ts.map +1 -1
  30. package/dist/types/assistant.d.ts.map +1 -1
  31. package/package.json +1 -1
@@ -1,22 +1,23 @@
1
1
  import { useAssetHandlerStore as e } from "../store/assethandlerStore.js";
2
- import { cn as t } from "../utils/cn.js";
3
- import { formatCompact as n, formatCurrencyCompact as r, seriesColor as i } from "../components/charts/chartTheme.js";
2
+ import { useCopy as t } from "../hooks/useCopy.js";
3
+ import { cn as n } from "../utils/cn.js";
4
+ import { formatCompact as r, formatCurrencyCompact as i, seriesColor as ee } from "../components/charts/chartTheme.js";
4
5
  import { TrendChart as a } from "../components/charts/TrendChart.js";
5
6
  import { BarsChart as o } from "../components/charts/BarsChart.js";
6
7
  import { DonutChart as s } from "../components/charts/DonutChart.js";
7
- import { RadialGauge as ee } from "../components/charts/RadialGauge.js";
8
- import { ProgressMeter as te } from "../components/charts/ProgressMeter.js";
8
+ import { RadialGauge as te } from "../components/charts/RadialGauge.js";
9
+ import { ProgressMeter as ne } from "../components/charts/ProgressMeter.js";
9
10
  import { StatTile as c } from "../components/StatTile.js";
10
11
  import { ChartCard as l } from "../components/ChartCard.js";
11
12
  import "../components/index.js";
12
13
  import { useMemo as u } from "react";
13
- import { Activity as d, AlertTriangle as f, Box as p, ClipboardList as m, DollarSign as ne, Gauge as re, PieChart as ie, Receipt as h, ShieldCheck as ae, TrendingDown as oe, Users as se, Wallet as g, Wrench as _ } from "lucide-react";
14
- import { gql as v } from "@apollo/client";
15
- import { useQuery as ce } from "@apollo/client/react";
16
- import { jsx as y, jsxs as b } from "react/jsx-runtime";
17
- import { Card as x, CardContent as S, CardHeader as C, CardTitle as w, EmphasisPanel as le, GradientText as ue, IllustratedEmptyState as T, PagePurpose as de, Separator as fe, Tabs as pe, TabsContent as E, TabsList as me, TabsTrigger as D } from "@burdenoff/fe-libs/ui";
14
+ import { Activity as d, AlertTriangle as f, Box as p, ClipboardList as m, DollarSign as re, Gauge as h, PieChart as g, Receipt as _, ShieldCheck as ie, TrendingDown as ae, Users as oe, Wallet as v, Wrench as y } from "lucide-react";
15
+ import { gql as b } from "@apollo/client";
16
+ import { useQuery as se } from "@apollo/client/react";
17
+ import { jsx as x, jsxs as S } from "react/jsx-runtime";
18
+ import { Card as C, CardContent as w, CardHeader as T, CardTitle as E, EmphasisPanel as ce, GradientText as le, IllustratedEmptyState as D, PagePurpose as ue, Separator as de, Tabs as fe, TabsContent as O, TabsList as pe, TabsTrigger as k } from "@burdenoff/fe-libs/ui";
18
19
  //#region src/assethandler/pages/AnalyticsPage.tsx
19
- var he = v`
20
+ var me = b`
20
21
  query AssetHandlerAnalyticsRollups {
21
22
  financialSummary {
22
23
  totalAssetValue
@@ -40,54 +41,54 @@ var he = v`
40
41
  }
41
42
  }
42
43
  }
43
- `, O = r("USD");
44
- function k(e) {
44
+ `, A = i("USD");
45
+ function j(e) {
45
46
  return e.replace(/_/g, " ").replace(/\b\w/g, (e) => e.toUpperCase());
46
47
  }
47
- function A(e) {
48
+ function M(e) {
48
49
  if (!e) return null;
49
50
  let t = new Date(e);
50
51
  return Number.isNaN(t.getTime()) ? null : t;
51
52
  }
52
- function j(e) {
53
+ function N(e) {
53
54
  return `${e.getFullYear()}-${String(e.getMonth() + 1).padStart(2, "0")}`;
54
55
  }
55
- function M(e) {
56
+ function P(e) {
56
57
  let [t, n] = e.split("-").map(Number);
57
58
  return new Date(t, n - 1, 1).toLocaleString(void 0, { month: "short" });
58
59
  }
59
- var N = {
60
+ var F = {
60
61
  success: "bg-status-success-bg-subtle text-status-success-text",
61
62
  warning: "bg-status-warning-bg-subtle text-status-warning-text",
62
63
  error: "bg-status-error-bg-subtle text-status-error-text",
63
64
  info: "bg-status-info-bg-subtle text-status-info-text",
64
65
  neutral: "bg-bg-sunken text-text-secondary"
65
66
  };
66
- function P({ tone: e, children: n }) {
67
- return /* @__PURE__ */ y("span", {
68
- className: t("inline-flex items-center rounded-full px-2 py-0.5 text-[11px] font-medium capitalize whitespace-nowrap", N[e]),
69
- children: n
67
+ function I({ tone: e, children: t }) {
68
+ return /* @__PURE__ */ x("span", {
69
+ className: n("inline-flex items-center rounded-full px-2 py-0.5 text-[11px] font-medium capitalize whitespace-nowrap", F[e]),
70
+ children: t
70
71
  });
71
72
  }
72
- var ge = (e) => e === "completed" || e === "approved" ? "success" : e === "rejected" ? "error" : e === "pending" ? "warning" : "neutral";
73
- function F() {
74
- let { assets: r, transactions: v, incidents: N, maintenanceRecords: F, budgets: I, invoices: L, workOrders: R } = e(), { data: z } = ce(he, {
73
+ var he = (e) => e === "completed" || e === "approved" ? "success" : e === "rejected" ? "error" : e === "pending" ? "warning" : "neutral";
74
+ function L() {
75
+ let i = t(), { assets: b, transactions: F, incidents: L, maintenanceRecords: R, budgets: z, invoices: B, workOrders: V } = e(), { data: H } = se(me, {
75
76
  fetchPolicy: "cache-and-network",
76
77
  errorPolicy: "all"
77
- }), B = z?.financialSummary, V = z?.utilizationReport, H = u(() => {
78
- let e = r.reduce((e, t) => {
79
- let n = k(t.category);
78
+ }), U = H?.financialSummary, W = H?.utilizationReport, G = u(() => {
79
+ let e = b.reduce((e, t) => {
80
+ let n = j(t.category);
80
81
  return e[n] = (e[n] || 0) + 1, e;
81
82
  }, {});
82
83
  return Object.entries(e).sort((e, t) => t[1] - e[1]).map(([e, t]) => ({
83
84
  name: e,
84
85
  value: t
85
86
  }));
86
- }, [r]), _e = u(() => H.map((e) => ({
87
+ }, [b]), K = u(() => G.map((e) => ({
87
88
  category: e.name,
88
89
  count: e.value
89
- })), [H]), ve = u(() => {
90
- let e = r.reduce((e, t) => (e[t.status] = (e[t.status] || 0) + 1, e), {}), t = {
90
+ })), [G]), ge = u(() => {
91
+ let e = b.reduce((e, t) => (e[t.status] = (e[t.status] || 0) + 1, e), {}), t = {
91
92
  active: "success",
92
93
  maintenance: "warning",
93
94
  retired: "neutral",
@@ -101,204 +102,204 @@ function F() {
101
102
  neutral: "var(--color-text-muted)"
102
103
  };
103
104
  return Object.entries(e).sort((e, t) => t[1] - e[1]).map(([e, r]) => ({
104
- name: k(e),
105
+ name: j(e),
105
106
  value: r,
106
107
  color: n[t[e] ?? "neutral"]
107
108
  }));
108
- }, [r]), ye = u(() => {
109
+ }, [b]), _e = u(() => {
109
110
  let e = [
110
111
  "excellent",
111
112
  "good",
112
113
  "fair",
113
114
  "poor",
114
115
  "damaged"
115
- ], t = r.reduce((e, t) => (e[t.condition] = (e[t.condition] || 0) + 1, e), {});
116
+ ], t = b.reduce((e, t) => (e[t.condition] = (e[t.condition] || 0) + 1, e), {});
116
117
  return e.filter((e) => t[e]).map((e) => ({
117
- condition: k(e),
118
+ condition: j(e),
118
119
  count: t[e]
119
120
  })).concat(Object.entries(t).filter(([t]) => !e.includes(t)).map(([e, t]) => ({
120
- condition: k(e),
121
+ condition: j(e),
121
122
  count: t
122
123
  })));
123
- }, [r]), U = r.length, be = r.filter((e) => e.status === "active").length, W = H.length, G = r.filter((e) => e.condition === "poor" || e.condition === "damaged" || e.status === "maintenance"), xe = v.reduce((e, t) => e + Math.abs(t.amount), 0), K = I.reduce((e, t) => e + t.allocated, 0), q = I.reduce((e, t) => e + t.spent, 0), J = I.reduce((e, t) => e + t.remaining, 0), Y = F.reduce((e, t) => e + (t.actualCost ?? t.estimatedCost ?? 0), 0), X = L.filter((e) => e.status !== "paid" && e.status !== "cancelled"), Se = X.reduce((e, t) => e + t.amount, 0), Z = u(() => I.map((e) => ({
124
+ }, [b]), q = b.length, ve = b.filter((e) => e.status === "active").length, J = G.length, Y = b.filter((e) => e.condition === "poor" || e.condition === "damaged" || e.status === "maintenance"), ye = F.reduce((e, t) => e + Math.abs(t.amount), 0), be = z.reduce((e, t) => e + t.allocated, 0), xe = z.reduce((e, t) => e + t.spent, 0), Se = z.reduce((e, t) => e + t.remaining, 0), Ce = R.reduce((e, t) => e + (t.actualCost ?? t.estimatedCost ?? 0), 0), we = B.filter((e) => e.status !== "paid" && e.status !== "cancelled"), Te = we.reduce((e, t) => e + t.amount, 0), X = u(() => z.map((e) => ({
124
125
  name: e.name,
125
126
  allocated: e.allocated,
126
127
  spent: e.spent
127
- })), [I]), Ce = u(() => {
128
+ })), [z]), Z = u(() => {
128
129
  let e = /* @__PURE__ */ new Map();
129
- for (let t of v) {
130
- let n = A(t.date);
130
+ for (let t of F) {
131
+ let n = M(t.date);
131
132
  if (!n) continue;
132
- let r = j(n);
133
+ let r = N(n);
133
134
  e.set(r, (e.get(r) ?? 0) + Math.abs(t.amount));
134
135
  }
135
136
  return [...e.keys()].sort().map((t) => ({
136
- month: M(t),
137
+ month: P(t),
137
138
  spend: Math.round(e.get(t) ?? 0)
138
139
  }));
139
- }, [v]), we = N.filter((e) => e.status === "resolved" || e.status === "closed"), Q = N.filter((e) => e.slaBreached), Te = N.length > 0 ? Math.round((1 - Q.length / N.length) * 100) : 100, Ee = F.filter((e) => e.status === "completed"), De = F.filter((e) => e.status === "scheduled"), Oe = R.filter((e) => e.status !== "completed" && e.status !== "cancelled"), ke = u(() => (V?.byStatus ?? []).map((e) => ({
140
- status: k(e.status),
140
+ }, [F]), Ee = L.filter((e) => e.status === "resolved" || e.status === "closed"), Q = L.filter((e) => e.slaBreached), De = L.length > 0 ? Math.round((1 - Q.length / L.length) * 100) : 100, Oe = R.filter((e) => e.status === "completed"), ke = R.filter((e) => e.status === "scheduled"), Ae = V.filter((e) => e.status !== "completed" && e.status !== "cancelled"), je = u(() => (W?.byStatus ?? []).map((e) => ({
141
+ status: j(e.status),
141
142
  count: e.count
142
- })), [V]), Ae = u(() => {
143
- let e = R.reduce((e, t) => (e[t.status] = (e[t.status] || 0) + 1, e), {});
143
+ })), [W]), Me = u(() => {
144
+ let e = V.reduce((e, t) => (e[t.status] = (e[t.status] || 0) + 1, e), {});
144
145
  return Object.entries(e).sort((e, t) => t[1] - e[1]).map(([e, t]) => ({
145
- name: k(e),
146
+ name: j(e),
146
147
  value: t
147
148
  }));
148
- }, [R]), je = u(() => {
149
+ }, [V]), Ne = u(() => {
149
150
  let e = /* @__PURE__ */ new Map();
150
- for (let t of F) {
151
- let n = A(t.completedDate ?? t.scheduledDate), r = t.actualCost ?? t.estimatedCost;
151
+ for (let t of R) {
152
+ let n = M(t.completedDate ?? t.scheduledDate), r = t.actualCost ?? t.estimatedCost;
152
153
  if (!n || r === void 0) continue;
153
- let i = j(n);
154
+ let i = N(n);
154
155
  e.set(i, (e.get(i) ?? 0) + r);
155
156
  }
156
157
  return [...e.keys()].sort().map((t) => ({
157
- month: M(t),
158
+ month: P(t),
158
159
  cost: Math.round(e.get(t) ?? 0)
159
160
  }));
160
- }, [F]), $ = B ? [
161
+ }, [R]), $ = U ? [
161
162
  {
162
163
  label: "Total Asset Value",
163
- value: B.totalAssetValue,
164
- icon: ne
164
+ value: U.totalAssetValue,
165
+ icon: re
165
166
  },
166
167
  {
167
168
  label: "Total Depreciation",
168
- value: B.totalDepreciation,
169
- icon: oe
169
+ value: U.totalDepreciation,
170
+ icon: ae
170
171
  },
171
172
  {
172
173
  label: "Maintenance Spend",
173
- value: B.totalMaintenanceSpend,
174
- icon: _
174
+ value: U.totalMaintenanceSpend,
175
+ icon: y
175
176
  },
176
177
  {
177
178
  label: "Transaction Expense",
178
- value: B.transactionExpense,
179
- icon: h
179
+ value: U.transactionExpense,
180
+ icon: _
180
181
  },
181
182
  {
182
183
  label: "Budget Allocated",
183
- value: B.budgetAllocated,
184
- icon: g
184
+ value: U.budgetAllocated,
185
+ icon: v
185
186
  },
186
187
  {
187
188
  label: "Budget Spent",
188
- value: B.budgetSpent,
189
- icon: g
189
+ value: U.budgetSpent,
190
+ icon: v
190
191
  },
191
192
  {
192
193
  label: "Invoices Outstanding",
193
- value: B.invoicesOutstanding,
194
+ value: U.invoicesOutstanding,
194
195
  icon: f
195
196
  }
196
197
  ] : [];
197
- return /* @__PURE__ */ b("div", {
198
+ return /* @__PURE__ */ S("div", {
198
199
  className: "space-y-6 p-4 sm:p-6",
199
200
  children: [
200
- /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("h1", {
201
+ /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("h1", {
201
202
  className: "text-2xl font-bold sm:text-3xl",
202
- children: /* @__PURE__ */ y(ue, { children: "Analytics & Business Intelligence" })
203
- }), /* @__PURE__ */ y("p", {
203
+ children: /* @__PURE__ */ x(le, { children: "Analytics & Business Intelligence" })
204
+ }), /* @__PURE__ */ x("p", {
204
205
  className: "text-sm text-text-secondary mt-1",
205
206
  children: "Asset, financial and operational insights across your estate"
206
207
  })] }),
207
- /* @__PURE__ */ y(de, { 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." }),
208
- /* @__PURE__ */ b(pe, {
208
+ /* @__PURE__ */ x(ue, { 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." }),
209
+ /* @__PURE__ */ S(fe, {
209
210
  defaultValue: "overview",
210
211
  children: [
211
- /* @__PURE__ */ b(me, {
212
+ /* @__PURE__ */ S(pe, {
212
213
  className: "max-w-full justify-start overflow-x-auto",
213
214
  children: [
214
- /* @__PURE__ */ y(D, {
215
+ /* @__PURE__ */ x(k, {
215
216
  value: "overview",
216
217
  children: "Overview"
217
218
  }),
218
- /* @__PURE__ */ y(D, {
219
+ /* @__PURE__ */ x(k, {
219
220
  value: "financial",
220
221
  children: "Financial"
221
222
  }),
222
- /* @__PURE__ */ y(D, {
223
+ /* @__PURE__ */ x(k, {
223
224
  value: "operational",
224
225
  children: "Operational"
225
226
  }),
226
- /* @__PURE__ */ y(D, {
227
+ /* @__PURE__ */ x(k, {
227
228
  value: "insights",
228
229
  children: "Insights"
229
230
  })
230
231
  ]
231
232
  }),
232
- /* @__PURE__ */ b(E, {
233
+ /* @__PURE__ */ S(O, {
233
234
  value: "overview",
234
235
  className: "space-y-6 mt-6",
235
236
  children: [
236
- /* @__PURE__ */ b("div", {
237
+ /* @__PURE__ */ S("div", {
237
238
  className: "grid gap-4 md:grid-cols-2 lg:grid-cols-4",
238
239
  children: [
239
- /* @__PURE__ */ y(c, {
240
+ /* @__PURE__ */ x(c, {
240
241
  hero: !0,
241
- label: "Total Assets",
242
- value: U,
243
- format: n,
242
+ label: i("assethandler.analytics.metrics.totalAssets", "Total {{assets}}"),
243
+ value: q,
244
+ format: r,
244
245
  icon: p
245
246
  }),
246
- /* @__PURE__ */ y(c, {
247
+ /* @__PURE__ */ x(c, {
247
248
  label: "Categories",
248
- value: W,
249
- icon: ie
249
+ value: J,
250
+ icon: g
250
251
  }),
251
- /* @__PURE__ */ y(c, {
252
+ /* @__PURE__ */ x(c, {
252
253
  label: "Needs Attention",
253
- value: G.length,
254
+ value: Y.length,
254
255
  icon: f
255
256
  }),
256
- /* @__PURE__ */ y(c, {
257
+ /* @__PURE__ */ x(c, {
257
258
  label: "Open Incidents",
258
- value: N.length - we.length,
259
+ value: L.length - Ee.length,
259
260
  icon: d
260
261
  })
261
262
  ]
262
263
  }),
263
- /* @__PURE__ */ b("div", {
264
+ /* @__PURE__ */ S("div", {
264
265
  className: "grid gap-6 lg:grid-cols-2",
265
- children: [/* @__PURE__ */ y(l, {
266
+ children: [/* @__PURE__ */ x(l, {
266
267
  title: "Assets by Category",
267
268
  subtitle: "Computed from real data",
268
- icon: ie,
269
- children: /* @__PURE__ */ y(o, {
270
- data: _e,
269
+ icon: g,
270
+ children: /* @__PURE__ */ x(o, {
271
+ data: K,
271
272
  xKey: "category",
272
273
  series: [{
273
274
  key: "count",
274
275
  label: "Assets"
275
276
  }],
276
277
  orientation: "horizontal",
277
- height: Math.max(220, _e.length * 40),
278
+ height: Math.max(220, K.length * 40),
278
279
  categoryWidth: 120,
279
280
  emptyLabel: "No assets yet",
280
281
  ariaLabel: "Assets by category"
281
282
  })
282
- }), /* @__PURE__ */ y(l, {
283
+ }), /* @__PURE__ */ x(l, {
283
284
  title: "Assets by Status",
284
285
  subtitle: "Computed from real data",
285
286
  icon: d,
286
- children: /* @__PURE__ */ y(s, {
287
- data: ve,
288
- centerLabel: "Assets",
289
- centerValue: U,
287
+ children: /* @__PURE__ */ x(s, {
288
+ data: ge,
289
+ centerLabel: i("assethandler.analytics.donut.centerLabel", "{{assets}}"),
290
+ centerValue: q,
290
291
  height: 260,
291
292
  emptyLabel: "No assets yet",
292
293
  ariaLabel: "Assets by status"
293
294
  })
294
295
  })]
295
296
  }),
296
- /* @__PURE__ */ y(l, {
297
+ /* @__PURE__ */ x(l, {
297
298
  title: "Asset Condition Mix",
298
299
  subtitle: "Computed from real data",
299
- icon: re,
300
- children: /* @__PURE__ */ y(o, {
301
- data: ye,
300
+ icon: h,
301
+ children: /* @__PURE__ */ x(o, {
302
+ data: _e,
302
303
  xKey: "condition",
303
304
  series: [{
304
305
  key: "count",
@@ -311,198 +312,198 @@ function F() {
311
312
  })
312
313
  ]
313
314
  }),
314
- /* @__PURE__ */ b(E, {
315
+ /* @__PURE__ */ S(O, {
315
316
  value: "financial",
316
317
  className: "space-y-6 mt-6",
317
318
  children: [
318
- B ? /* @__PURE__ */ y("div", {
319
+ U ? /* @__PURE__ */ x("div", {
319
320
  className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-4",
320
- children: $.slice(0, 4).map((e, t) => /* @__PURE__ */ y(c, {
321
+ children: $.slice(0, 4).map((e, t) => /* @__PURE__ */ x(c, {
321
322
  hero: t === 0,
322
323
  label: e.label,
323
324
  value: e.value,
324
- format: O,
325
+ format: A,
325
326
  icon: e.icon
326
327
  }, e.label))
327
- }) : /* @__PURE__ */ y(x, { children: /* @__PURE__ */ y(S, {
328
+ }) : /* @__PURE__ */ x(C, { children: /* @__PURE__ */ x(w, {
328
329
  className: "py-8",
329
- children: /* @__PURE__ */ y(T, {
330
+ children: /* @__PURE__ */ x(D, {
330
331
  illustration: "empty-data",
331
332
  title: "Financial summary unavailable",
332
333
  description: "Portfolio valuation and budget rollups will appear once financial data is recorded."
333
334
  })
334
335
  }) }),
335
- B ? /* @__PURE__ */ y("div", {
336
+ U ? /* @__PURE__ */ x("div", {
336
337
  className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3",
337
- children: $.slice(4).map((e) => /* @__PURE__ */ y(c, {
338
+ children: $.slice(4).map((e) => /* @__PURE__ */ x(c, {
338
339
  label: e.label,
339
340
  value: e.value,
340
- format: O,
341
+ format: A,
341
342
  icon: e.icon,
342
- delta: e.label === "Invoices Outstanding" ? `${B.invoicesOutstandingCount} unpaid` : void 0,
343
+ delta: e.label === "Invoices Outstanding" ? `${U.invoicesOutstandingCount} unpaid` : void 0,
343
344
  deltaTone: "neutral"
344
345
  }, e.label))
345
346
  }) : null,
346
- /* @__PURE__ */ b("div", {
347
+ /* @__PURE__ */ S("div", {
347
348
  className: "grid gap-6 lg:grid-cols-2",
348
- children: [/* @__PURE__ */ y(l, {
349
+ children: [/* @__PURE__ */ x(l, {
349
350
  title: "Budget: Allocated vs Spent",
350
351
  subtitle: "Per budget, from real data",
351
- icon: g,
352
- children: Z.length === 0 ? /* @__PURE__ */ y(T, {
352
+ icon: v,
353
+ children: X.length === 0 ? /* @__PURE__ */ x(D, {
353
354
  illustration: "empty-data",
354
355
  title: "No budgets yet",
355
356
  description: "Create a budget to track allocation and spend here."
356
- }) : /* @__PURE__ */ y(o, {
357
- data: Z,
357
+ }) : /* @__PURE__ */ x(o, {
358
+ data: X,
358
359
  xKey: "name",
359
360
  series: [{
360
361
  key: "allocated",
361
362
  label: "Allocated",
362
- color: i(1)
363
+ color: ee(1)
363
364
  }, {
364
365
  key: "spent",
365
366
  label: "Spent"
366
367
  }],
367
- height: Math.max(220, Z.length * 56),
368
+ height: Math.max(220, X.length * 56),
368
369
  orientation: "horizontal",
369
370
  categoryWidth: 120,
370
- valueFormat: O,
371
+ valueFormat: A,
371
372
  ariaLabel: "Budget allocated versus spent"
372
373
  })
373
- }), /* @__PURE__ */ y(l, {
374
+ }), /* @__PURE__ */ x(l, {
374
375
  title: "Spend Over Time",
375
376
  subtitle: "Monthly transaction spend",
376
- icon: h,
377
- children: Ce.length === 0 ? /* @__PURE__ */ y(T, {
377
+ icon: _,
378
+ children: Z.length === 0 ? /* @__PURE__ */ x(D, {
378
379
  illustration: "empty-data",
379
380
  title: "No transactions yet",
380
381
  description: "Recorded purchases, leases and disposals will chart here."
381
- }) : /* @__PURE__ */ y(a, {
382
- data: Ce,
382
+ }) : /* @__PURE__ */ x(a, {
383
+ data: Z,
383
384
  xKey: "month",
384
385
  series: [{
385
386
  key: "spend",
386
387
  label: "Spend"
387
388
  }],
388
- valueFormat: O,
389
+ valueFormat: A,
389
390
  height: 260,
390
391
  ariaLabel: "Monthly transaction spend"
391
392
  })
392
393
  })]
393
394
  }),
394
- /* @__PURE__ */ y(l, {
395
+ /* @__PURE__ */ x(l, {
395
396
  title: "Budget Utilization",
396
397
  subtitle: "Allocated vs. spent per budget",
397
- icon: g,
398
- children: I.length === 0 ? /* @__PURE__ */ y(T, {
398
+ icon: v,
399
+ children: z.length === 0 ? /* @__PURE__ */ x(D, {
399
400
  illustration: "empty-data",
400
401
  title: "No budgets yet",
401
402
  description: "Create a budget to track allocation and spend here."
402
- }) : /* @__PURE__ */ b("div", {
403
+ }) : /* @__PURE__ */ S("div", {
403
404
  className: "space-y-4",
404
405
  children: [
405
- I.map((e) => /* @__PURE__ */ y(te, {
406
+ z.map((e) => /* @__PURE__ */ x(ne, {
406
407
  label: e.name,
407
408
  value: e.spent,
408
409
  max: e.allocated,
409
410
  format: (e) => `$${Math.round(e).toLocaleString()}`
410
411
  }, e.id)),
411
- /* @__PURE__ */ y(fe, {}),
412
- /* @__PURE__ */ b("div", {
412
+ /* @__PURE__ */ x(de, {}),
413
+ /* @__PURE__ */ S("div", {
413
414
  className: "flex items-center justify-between text-sm font-medium",
414
- children: [/* @__PURE__ */ y("span", { children: "Remaining across all budgets" }), /* @__PURE__ */ b("span", {
415
+ children: [/* @__PURE__ */ x("span", { children: "Remaining across all budgets" }), /* @__PURE__ */ S("span", {
415
416
  className: "tabular-nums",
416
- children: ["$", J.toLocaleString()]
417
+ children: ["$", Se.toLocaleString()]
417
418
  })]
418
419
  })
419
420
  ]
420
421
  })
421
422
  }),
422
- /* @__PURE__ */ b("div", {
423
+ /* @__PURE__ */ S("div", {
423
424
  className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-4",
424
425
  children: [
425
- /* @__PURE__ */ y(c, {
426
+ /* @__PURE__ */ x(c, {
426
427
  label: "Transactions",
427
- value: v.length,
428
- icon: h,
429
- delta: `$${xe.toLocaleString()} value`,
428
+ value: F.length,
429
+ icon: _,
430
+ delta: `$${ye.toLocaleString()} value`,
430
431
  deltaTone: "neutral"
431
432
  }),
432
- /* @__PURE__ */ y(c, {
433
+ /* @__PURE__ */ x(c, {
433
434
  label: "Budget Allocated",
434
- value: K,
435
- format: O,
436
- icon: g,
437
- delta: `$${q.toLocaleString()} spent`,
435
+ value: be,
436
+ format: A,
437
+ icon: v,
438
+ delta: `$${xe.toLocaleString()} spent`,
438
439
  deltaTone: "neutral"
439
440
  }),
440
- /* @__PURE__ */ y(c, {
441
+ /* @__PURE__ */ x(c, {
441
442
  label: "Maintenance Cost",
442
- value: Y,
443
- format: O,
444
- icon: _
443
+ value: Ce,
444
+ format: A,
445
+ icon: y
445
446
  }),
446
- /* @__PURE__ */ y(c, {
447
+ /* @__PURE__ */ x(c, {
447
448
  label: "Outstanding Invoices",
448
- value: Se,
449
- format: O,
449
+ value: Te,
450
+ format: A,
450
451
  icon: f,
451
- delta: `${X.length} of ${L.length}`,
452
+ delta: `${we.length} of ${B.length}`,
452
453
  deltaTone: "neutral"
453
454
  })
454
455
  ]
455
456
  }),
456
- /* @__PURE__ */ y(l, {
457
+ /* @__PURE__ */ x(l, {
457
458
  title: "Recent Transactions",
458
- icon: h,
459
- children: v.length === 0 ? /* @__PURE__ */ y(T, {
459
+ icon: _,
460
+ children: F.length === 0 ? /* @__PURE__ */ x(D, {
460
461
  illustration: "empty-data",
461
462
  title: "No transactions",
462
463
  description: "Asset purchases, leases and disposals will appear here."
463
- }) : /* @__PURE__ */ y("div", {
464
+ }) : /* @__PURE__ */ x("div", {
464
465
  className: "overflow-x-auto",
465
- children: /* @__PURE__ */ b("table", {
466
+ children: /* @__PURE__ */ S("table", {
466
467
  className: "w-full text-sm",
467
- children: [/* @__PURE__ */ y("thead", { children: /* @__PURE__ */ b("tr", {
468
+ children: [/* @__PURE__ */ x("thead", { children: /* @__PURE__ */ S("tr", {
468
469
  className: "border-b border-border-seam text-text-secondary",
469
470
  children: [
470
- /* @__PURE__ */ y("th", {
471
+ /* @__PURE__ */ x("th", {
471
472
  className: "py-2 text-left font-medium",
472
473
  children: "Type"
473
474
  }),
474
- /* @__PURE__ */ y("th", {
475
+ /* @__PURE__ */ x("th", {
475
476
  className: "py-2 text-left font-medium",
476
477
  children: "Description"
477
478
  }),
478
- /* @__PURE__ */ y("th", {
479
+ /* @__PURE__ */ x("th", {
479
480
  className: "py-2 text-right font-medium",
480
481
  children: "Amount"
481
482
  }),
482
- /* @__PURE__ */ y("th", {
483
+ /* @__PURE__ */ x("th", {
483
484
  className: "py-2 text-left font-medium",
484
485
  children: "Status"
485
486
  })
486
487
  ]
487
- }) }), /* @__PURE__ */ y("tbody", { children: v.slice(0, 6).map((e) => /* @__PURE__ */ b("tr", {
488
+ }) }), /* @__PURE__ */ x("tbody", { children: F.slice(0, 6).map((e) => /* @__PURE__ */ S("tr", {
488
489
  className: "border-b border-border-seam hover:bg-bg-sunken/50",
489
490
  children: [
490
- /* @__PURE__ */ y("td", {
491
+ /* @__PURE__ */ x("td", {
491
492
  className: "py-2.5 capitalize",
492
493
  children: e.type
493
494
  }),
494
- /* @__PURE__ */ y("td", {
495
+ /* @__PURE__ */ x("td", {
495
496
  className: "max-w-xs truncate py-2.5",
496
497
  children: e.description
497
498
  }),
498
- /* @__PURE__ */ b("td", {
499
- className: t("py-2.5 text-right font-medium tabular-nums", e.amount < 0 && "text-status-error-text"),
499
+ /* @__PURE__ */ S("td", {
500
+ className: n("py-2.5 text-right font-medium tabular-nums", e.amount < 0 && "text-status-error-text"),
500
501
  children: ["$", Math.abs(e.amount).toLocaleString()]
501
502
  }),
502
- /* @__PURE__ */ y("td", {
503
+ /* @__PURE__ */ x("td", {
503
504
  className: "py-2.5",
504
- children: /* @__PURE__ */ y(P, {
505
- tone: ge(e.status),
505
+ children: /* @__PURE__ */ x(I, {
506
+ tone: he(e.status),
506
507
  children: e.status
507
508
  })
508
509
  })
@@ -513,107 +514,107 @@ function F() {
513
514
  })
514
515
  ]
515
516
  }),
516
- /* @__PURE__ */ b(E, {
517
+ /* @__PURE__ */ S(O, {
517
518
  value: "operational",
518
519
  className: "space-y-6 mt-6",
519
520
  children: [
520
- /* @__PURE__ */ b("div", {
521
+ /* @__PURE__ */ S("div", {
521
522
  className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-5",
522
523
  children: [
523
- /* @__PURE__ */ y(c, {
524
- label: "Total Assets",
525
- value: V?.totalAssets ?? U,
524
+ /* @__PURE__ */ x(c, {
525
+ label: i("assethandler.analytics.metrics.totalAssets", "Total {{assets}}"),
526
+ value: W?.totalAssets ?? q,
526
527
  icon: p
527
528
  }),
528
- /* @__PURE__ */ y(c, {
529
+ /* @__PURE__ */ x(c, {
529
530
  label: "Assigned",
530
- value: V?.assignedAssets ?? "—",
531
- icon: se
531
+ value: W?.assignedAssets ?? "—",
532
+ icon: oe
532
533
  }),
533
- /* @__PURE__ */ y(c, {
534
+ /* @__PURE__ */ x(c, {
534
535
  label: "Unassigned",
535
- value: V?.unassignedAssets ?? "—",
536
+ value: W?.unassignedAssets ?? "—",
536
537
  icon: p
537
538
  }),
538
- /* @__PURE__ */ y(c, {
539
+ /* @__PURE__ */ x(c, {
539
540
  label: "Idle",
540
- value: V?.idleAssets ?? "—",
541
+ value: W?.idleAssets ?? "—",
541
542
  icon: d
542
543
  }),
543
- /* @__PURE__ */ y(c, {
544
+ /* @__PURE__ */ x(c, {
544
545
  label: "Overdue",
545
- value: V?.overdueAssignments ?? "—",
546
+ value: W?.overdueAssignments ?? "—",
546
547
  icon: f,
547
- delta: V && V.overdueAssignments > 0 ? "action needed" : void 0,
548
+ delta: W && W.overdueAssignments > 0 ? "action needed" : void 0,
548
549
  deltaTone: "negative",
549
550
  deltaDirection: "up"
550
551
  })
551
552
  ]
552
553
  }),
553
- /* @__PURE__ */ b("div", {
554
+ /* @__PURE__ */ S("div", {
554
555
  className: "grid gap-6 lg:grid-cols-2",
555
- children: [/* @__PURE__ */ y(l, {
556
+ children: [/* @__PURE__ */ x(l, {
556
557
  title: "Assets by Status",
557
558
  subtitle: "Assignment coverage",
558
- icon: re,
559
- children: /* @__PURE__ */ y(o, {
560
- data: ke,
559
+ icon: h,
560
+ children: /* @__PURE__ */ x(o, {
561
+ data: je,
561
562
  xKey: "status",
562
563
  series: [{
563
564
  key: "count",
564
565
  label: "Assets"
565
566
  }],
566
567
  orientation: "horizontal",
567
- height: Math.max(200, ke.length * 40),
568
+ height: Math.max(200, je.length * 40),
568
569
  categoryWidth: 120,
569
570
  emptyLabel: "No utilization data",
570
571
  ariaLabel: "Assets by status"
571
572
  })
572
- }), /* @__PURE__ */ y(l, {
573
+ }), /* @__PURE__ */ x(l, {
573
574
  title: "Work Orders by Status",
574
575
  subtitle: "From real data",
575
576
  icon: m,
576
- children: /* @__PURE__ */ y(s, {
577
- data: Ae,
577
+ children: /* @__PURE__ */ x(s, {
578
+ data: Me,
578
579
  centerLabel: "Work orders",
579
- centerValue: R.length,
580
+ centerValue: V.length,
580
581
  height: 260,
581
582
  emptyLabel: "No work orders",
582
583
  ariaLabel: "Work orders by status"
583
584
  })
584
585
  })]
585
586
  }),
586
- /* @__PURE__ */ y(l, {
587
+ /* @__PURE__ */ x(l, {
587
588
  title: "Maintenance Cost Over Time",
588
589
  subtitle: "Monthly recorded maintenance cost",
589
- icon: _,
590
- children: je.length === 0 ? /* @__PURE__ */ y(T, {
590
+ icon: y,
591
+ children: Ne.length === 0 ? /* @__PURE__ */ x(D, {
591
592
  illustration: "empty-data",
592
593
  title: "No maintenance cost yet",
593
594
  description: "Once maintenance records carry cost, monthly spend will chart here."
594
- }) : /* @__PURE__ */ y(a, {
595
- data: je,
595
+ }) : /* @__PURE__ */ x(a, {
596
+ data: Ne,
596
597
  xKey: "month",
597
598
  series: [{
598
599
  key: "cost",
599
600
  label: "Cost"
600
601
  }],
601
- valueFormat: O,
602
+ valueFormat: A,
602
603
  height: 260,
603
604
  ariaLabel: "Monthly maintenance cost"
604
605
  })
605
606
  }),
606
- /* @__PURE__ */ b("div", {
607
+ /* @__PURE__ */ S("div", {
607
608
  className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-4",
608
609
  children: [
609
- /* @__PURE__ */ y(c, {
610
+ /* @__PURE__ */ x(c, {
610
611
  label: "Incidents",
611
- value: N.length,
612
+ value: L.length,
612
613
  icon: d,
613
- delta: `${we.length} resolved`,
614
+ delta: `${Ee.length} resolved`,
614
615
  deltaTone: "neutral"
615
616
  }),
616
- /* @__PURE__ */ y(c, {
617
+ /* @__PURE__ */ x(c, {
617
618
  label: "SLA Breaches",
618
619
  value: Q.length,
619
620
  icon: f,
@@ -621,139 +622,139 @@ function F() {
621
622
  deltaTone: Q.length > 0 ? "negative" : "positive",
622
623
  deltaDirection: Q.length > 0 ? "up" : "neutral"
623
624
  }),
624
- /* @__PURE__ */ y(c, {
625
+ /* @__PURE__ */ x(c, {
625
626
  label: "Maintenance Done",
626
- value: Ee.length,
627
- icon: _,
628
- delta: `of ${F.length}`,
627
+ value: Oe.length,
628
+ icon: y,
629
+ delta: `of ${R.length}`,
629
630
  deltaTone: "neutral"
630
631
  }),
631
- /* @__PURE__ */ y(c, {
632
+ /* @__PURE__ */ x(c, {
632
633
  label: "Open Work Orders",
633
- value: Oe.length,
634
+ value: Ae.length,
634
635
  icon: m,
635
- delta: `of ${R.length}`,
636
+ delta: `of ${V.length}`,
636
637
  deltaTone: "neutral"
637
638
  })
638
639
  ]
639
640
  })
640
641
  ]
641
642
  }),
642
- /* @__PURE__ */ b(E, {
643
+ /* @__PURE__ */ S(O, {
643
644
  value: "insights",
644
645
  className: "space-y-6 mt-6",
645
- children: [/* @__PURE__ */ b("div", {
646
+ children: [/* @__PURE__ */ S("div", {
646
647
  className: "grid gap-6 lg:grid-cols-3",
647
- children: [/* @__PURE__ */ y(l, {
648
+ children: [/* @__PURE__ */ x(l, {
648
649
  title: "SLA Compliance",
649
650
  subtitle: "Incidents resolved within SLA",
650
- icon: ae,
651
- children: /* @__PURE__ */ y(ee, {
652
- value: Te,
651
+ icon: ie,
652
+ children: /* @__PURE__ */ x(te, {
653
+ value: De,
653
654
  label: "within SLA",
654
- sublabel: `${Q.length} of ${N.length} breached`,
655
+ sublabel: `${Q.length} of ${L.length} breached`,
655
656
  format: (e) => `${Math.round(e)}%`,
656
657
  height: 220,
657
658
  ariaLabel: "SLA compliance percentage"
658
659
  })
659
- }), /* @__PURE__ */ b("div", {
660
+ }), /* @__PURE__ */ S("div", {
660
661
  className: "lg:col-span-2 grid gap-4 sm:grid-cols-3",
661
662
  children: [
662
- /* @__PURE__ */ b(x, {
663
+ /* @__PURE__ */ S(C, {
663
664
  className: "border-status-info-border bg-status-info-bg-subtle",
664
- children: [/* @__PURE__ */ y(C, { children: /* @__PURE__ */ y(w, {
665
+ children: [/* @__PURE__ */ x(T, { children: /* @__PURE__ */ x(E, {
665
666
  className: "text-status-info-text text-base",
666
667
  children: "Diversification"
667
- }) }), /* @__PURE__ */ y(S, { children: /* @__PURE__ */ b("p", {
668
+ }) }), /* @__PURE__ */ x(w, { children: /* @__PURE__ */ S("p", {
668
669
  className: "text-sm text-status-info-text",
669
670
  children: [
670
671
  "Your estate spans ",
671
- W,
672
+ J,
672
673
  " categories across ",
673
- U,
674
+ q,
674
675
  " assets.",
675
676
  " ",
676
- be,
677
+ ve,
677
678
  " are currently active."
678
679
  ]
679
680
  }) })]
680
681
  }),
681
- /* @__PURE__ */ b(x, {
682
+ /* @__PURE__ */ S(C, {
682
683
  className: "border-status-success-border bg-status-success-bg-subtle",
683
- children: [/* @__PURE__ */ y(C, { children: /* @__PURE__ */ y(w, {
684
+ children: [/* @__PURE__ */ x(T, { children: /* @__PURE__ */ x(E, {
684
685
  className: "text-status-success-text text-base",
685
686
  children: "Budget"
686
- }) }), /* @__PURE__ */ y(S, { children: /* @__PURE__ */ b("p", {
687
+ }) }), /* @__PURE__ */ x(w, { children: /* @__PURE__ */ S("p", {
687
688
  className: "text-sm text-status-success-text",
688
689
  children: [
689
690
  "$",
690
- q.toLocaleString(),
691
+ xe.toLocaleString(),
691
692
  " spent of $",
692
- K.toLocaleString(),
693
+ be.toLocaleString(),
693
694
  " ",
694
695
  "allocated, leaving $",
695
- J.toLocaleString(),
696
+ Se.toLocaleString(),
696
697
  " across ",
697
- I.length,
698
+ z.length,
698
699
  " ",
699
700
  "budgets."
700
701
  ]
701
702
  }) })]
702
703
  }),
703
- /* @__PURE__ */ b(x, {
704
+ /* @__PURE__ */ S(C, {
704
705
  className: "border-status-warning-border bg-status-warning-bg-subtle",
705
- children: [/* @__PURE__ */ y(C, { children: /* @__PURE__ */ y(w, {
706
+ children: [/* @__PURE__ */ x(T, { children: /* @__PURE__ */ x(E, {
706
707
  className: "text-status-warning-text text-base",
707
708
  children: "Maintenance"
708
- }) }), /* @__PURE__ */ y(S, { children: /* @__PURE__ */ b("p", {
709
+ }) }), /* @__PURE__ */ x(w, { children: /* @__PURE__ */ S("p", {
709
710
  className: "text-sm text-status-warning-text",
710
711
  children: [
711
- De.length,
712
+ ke.length,
712
713
  " tasks scheduled. Total maintenance spend is $",
713
- Y.toLocaleString(),
714
+ Ce.toLocaleString(),
714
715
  ". Stay on top of preventive maintenance."
715
716
  ]
716
717
  }) })]
717
718
  })
718
719
  ]
719
720
  })]
720
- }), /* @__PURE__ */ b(le, { children: [/* @__PURE__ */ y(C, {
721
+ }), /* @__PURE__ */ S(ce, { children: [/* @__PURE__ */ x(T, {
721
722
  className: "px-0 pt-0",
722
- children: /* @__PURE__ */ b(w, {
723
+ children: /* @__PURE__ */ S(E, {
723
724
  className: "flex items-center gap-2",
724
- children: [/* @__PURE__ */ y(_, { className: "h-4 w-4" }), "Assets Needing Attention"]
725
+ children: [/* @__PURE__ */ x(y, { className: "h-4 w-4" }), "Assets Needing Attention"]
725
726
  })
726
- }), /* @__PURE__ */ y(S, {
727
+ }), /* @__PURE__ */ x(w, {
727
728
  className: "px-0 pb-0",
728
- children: G.length === 0 ? /* @__PURE__ */ y(T, {
729
+ children: Y.length === 0 ? /* @__PURE__ */ x(D, {
729
730
  illustration: "empty-success",
730
731
  title: "Everything looks healthy",
731
732
  description: "No assets are flagged as poor, damaged or in maintenance right now."
732
- }) : /* @__PURE__ */ y("div", {
733
+ }) : /* @__PURE__ */ x("div", {
733
734
  className: "space-y-3",
734
- children: G.slice(0, 6).map((e, t) => /* @__PURE__ */ b("div", {
735
+ children: Y.slice(0, 6).map((e, t) => /* @__PURE__ */ S("div", {
735
736
  className: "flex items-center justify-between gap-3 rounded-lg border border-border-seam bg-gloss-card p-3",
736
- children: [/* @__PURE__ */ b("div", {
737
+ children: [/* @__PURE__ */ S("div", {
737
738
  className: "flex min-w-0 items-center gap-3",
738
- children: [/* @__PURE__ */ y("div", {
739
+ children: [/* @__PURE__ */ x("div", {
739
740
  className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-action-primary-bg/10 text-xs font-medium text-primary",
740
741
  children: t + 1
741
- }), /* @__PURE__ */ b("div", {
742
+ }), /* @__PURE__ */ S("div", {
742
743
  className: "min-w-0",
743
- children: [/* @__PURE__ */ y("p", {
744
+ children: [/* @__PURE__ */ x("p", {
744
745
  className: "truncate text-sm font-medium",
745
746
  children: e.name
746
- }), /* @__PURE__ */ b("p", {
747
+ }), /* @__PURE__ */ S("p", {
747
748
  className: "truncate text-xs text-text-secondary capitalize",
748
749
  children: [e.category.replace("_", " "), e.location ? ` · ${e.location}` : ""]
749
750
  })]
750
751
  })]
751
- }), /* @__PURE__ */ b("div", {
752
+ }), /* @__PURE__ */ S("div", {
752
753
  className: "flex shrink-0 items-center gap-2",
753
- children: [/* @__PURE__ */ y(P, {
754
+ children: [/* @__PURE__ */ x(I, {
754
755
  tone: e.condition === "damaged" ? "error" : "warning",
755
756
  children: e.condition
756
- }), /* @__PURE__ */ y(P, {
757
+ }), /* @__PURE__ */ x(I, {
757
758
  tone: e.status === "active" ? "success" : "warning",
758
759
  children: e.status.replace("_", " ")
759
760
  })]
@@ -768,6 +769,6 @@ function F() {
768
769
  });
769
770
  }
770
771
  //#endregion
771
- export { F as AnalyticsPage };
772
+ export { L as AnalyticsPage };
772
773
 
773
774
  //# sourceMappingURL=AnalyticsPage.js.map