@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
- import { AlertTriangle as t, CheckCircle as n, GitPullRequest as r, Search as i, XCircle as a } from "lucide-react";
3
- import { useNavigate as o } from "react-router-dom";
4
- import { Badge as s, Button as c, Card as l, CardContent as u, EmphasisPanel as d, GradientText as f, IllustratedEmptyState as p, NextSteps as m, PagePurpose as h, Tabs as g, TabsContent as _, TabsList as v, TabsTrigger as y } from "@burdenoff/fe-libs/ui";
5
- import { jsx as b, jsxs as x } from "react/jsx-runtime";
2
+ import { useAssetHandlerNavigate as t } from "../hooks/useAssetHandlerNavigate.js";
3
+ import { AlertTriangle as n, CheckCircle as r, GitPullRequest as i, Search as a, XCircle as o } from "lucide-react";
4
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
5
+ import { Badge as l, Button as u, Card as d, CardContent as f, EmphasisPanel as p, GradientText as m, IllustratedEmptyState as h, NextSteps as g, PagePurpose as _, Tabs as v, TabsContent as y, TabsList as b, TabsTrigger as x } from "@burdenoff/fe-libs/ui";
6
6
  //#region src/assethandler/pages/ItilItilhubPage.tsx
7
7
  var S = {
8
8
  critical: "destructive",
@@ -11,34 +11,34 @@ var S = {
11
11
  low: "secondary"
12
12
  };
13
13
  function C() {
14
- let C = o(), { incidents: w, changeRequests: T, problems: E } = e(), D = w.filter((e) => e.status !== "resolved" && e.status !== "closed"), O = w.filter((e) => e.status === "resolved" || e.status === "closed"), k = w.filter((e) => e.slaBreached), A = T.filter((e) => e.status !== "completed" && e.status !== "rejected"), j = E.filter((e) => e.status !== "resolved" && e.status !== "closed");
15
- return /* @__PURE__ */ x("div", {
14
+ let C = t(), { incidents: w, changeRequests: T, problems: E } = e(), D = w.filter((e) => e.status !== "resolved" && e.status !== "closed"), O = w.filter((e) => e.status === "resolved" || e.status === "closed"), k = w.filter((e) => e.slaBreached), A = T.filter((e) => e.status !== "completed" && e.status !== "rejected"), j = E.filter((e) => e.status !== "resolved" && e.status !== "closed");
15
+ return /* @__PURE__ */ c("div", {
16
16
  className: "space-y-6 p-6",
17
17
  children: [
18
- /* @__PURE__ */ x("div", {
18
+ /* @__PURE__ */ c("div", {
19
19
  className: "flex items-center justify-between",
20
- children: [/* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("h1", {
20
+ children: [/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("h1", {
21
21
  className: "text-2xl font-bold",
22
- children: /* @__PURE__ */ b(f, { children: "ITIL Service Management" })
23
- }), /* @__PURE__ */ b("p", {
22
+ children: /* @__PURE__ */ s(m, { children: "ITIL Service Management" })
23
+ }), /* @__PURE__ */ s("p", {
24
24
  className: "text-sm text-text-secondary",
25
25
  children: "Incident, Change, and Problem management hub"
26
- })] }), /* @__PURE__ */ b(c, {
26
+ })] }), /* @__PURE__ */ s(u, {
27
27
  size: "sm",
28
28
  children: "Create Ticket"
29
29
  })]
30
30
  }),
31
- /* @__PURE__ */ x(h, { children: [
31
+ /* @__PURE__ */ c(_, { children: [
32
32
  "Your single ITIL service-management desk: triage and resolve service-disrupting",
33
33
  " ",
34
- /* @__PURE__ */ b("strong", { children: "incidents" }),
34
+ /* @__PURE__ */ s("strong", { children: "incidents" }),
35
35
  ", plan and approve ",
36
- /* @__PURE__ */ b("strong", { children: "changes" }),
36
+ /* @__PURE__ */ s("strong", { children: "changes" }),
37
37
  " safely, and run root-cause ",
38
- /* @__PURE__ */ b("strong", { children: "problem" }),
38
+ /* @__PURE__ */ s("strong", { children: "problem" }),
39
39
  " investigations — all tied back to the affected assets. Use this hub to see what is breaching SLA right now and where to act first."
40
40
  ] }),
41
- /* @__PURE__ */ b(m, {
41
+ /* @__PURE__ */ s(g, {
42
42
  storageKey: "assethandler-itil-hub",
43
43
  steps: [
44
44
  {
@@ -61,63 +61,63 @@ function C() {
61
61
  }
62
62
  ]
63
63
  }),
64
- /* @__PURE__ */ x("div", {
64
+ /* @__PURE__ */ c("div", {
65
65
  className: "grid gap-4 md:grid-cols-2 lg:grid-cols-5",
66
66
  children: [
67
- /* @__PURE__ */ x(d, { children: [/* @__PURE__ */ x("div", {
67
+ /* @__PURE__ */ c(p, { children: [/* @__PURE__ */ c("div", {
68
68
  className: "flex items-center gap-2 text-sm text-text-secondary",
69
- children: [/* @__PURE__ */ b(t, { className: "h-4 w-4" }), "Active Incidents"]
70
- }), /* @__PURE__ */ b("p", {
69
+ children: [/* @__PURE__ */ s(n, { className: "h-4 w-4" }), "Active Incidents"]
70
+ }), /* @__PURE__ */ s("p", {
71
71
  className: "text-2xl font-bold mt-1 tabular-nums",
72
72
  children: D.length
73
73
  })] }),
74
- /* @__PURE__ */ b(l, { children: /* @__PURE__ */ x(u, {
74
+ /* @__PURE__ */ s(d, { children: /* @__PURE__ */ c(f, {
75
75
  className: "pt-4",
76
- children: [/* @__PURE__ */ x("div", {
76
+ children: [/* @__PURE__ */ c("div", {
77
77
  className: "flex items-center gap-2 text-sm text-text-secondary",
78
- children: [/* @__PURE__ */ b(n, { className: "h-4 w-4" }), "Resolved"]
79
- }), /* @__PURE__ */ b("p", {
78
+ children: [/* @__PURE__ */ s(r, { className: "h-4 w-4" }), "Resolved"]
79
+ }), /* @__PURE__ */ s("p", {
80
80
  className: "text-2xl font-bold mt-1 text-status-success-text",
81
81
  children: O.length
82
82
  })]
83
83
  }) }),
84
- /* @__PURE__ */ b(l, { children: /* @__PURE__ */ x(u, {
84
+ /* @__PURE__ */ s(d, { children: /* @__PURE__ */ c(f, {
85
85
  className: "pt-4",
86
- children: [/* @__PURE__ */ x("div", {
86
+ children: [/* @__PURE__ */ c("div", {
87
87
  className: "flex items-center gap-2 text-sm text-text-secondary",
88
- children: [/* @__PURE__ */ b(a, { className: "h-4 w-4" }), "SLA Breaches"]
89
- }), /* @__PURE__ */ b("p", {
88
+ children: [/* @__PURE__ */ s(o, { className: "h-4 w-4" }), "SLA Breaches"]
89
+ }), /* @__PURE__ */ s("p", {
90
90
  className: "text-2xl font-bold mt-1 text-status-error-text",
91
91
  children: k.length
92
92
  })]
93
93
  }) }),
94
- /* @__PURE__ */ b(l, { children: /* @__PURE__ */ x(u, {
94
+ /* @__PURE__ */ s(d, { children: /* @__PURE__ */ c(f, {
95
95
  className: "pt-4",
96
- children: [/* @__PURE__ */ x("div", {
96
+ children: [/* @__PURE__ */ c("div", {
97
97
  className: "flex items-center gap-2 text-sm text-text-secondary",
98
- children: [/* @__PURE__ */ b(r, { className: "h-4 w-4" }), "Pending Changes"]
99
- }), /* @__PURE__ */ b("p", {
98
+ children: [/* @__PURE__ */ s(i, { className: "h-4 w-4" }), "Pending Changes"]
99
+ }), /* @__PURE__ */ s("p", {
100
100
  className: "text-2xl font-bold mt-1",
101
101
  children: A.length
102
102
  })]
103
103
  }) }),
104
- /* @__PURE__ */ b(l, { children: /* @__PURE__ */ x(u, {
104
+ /* @__PURE__ */ s(d, { children: /* @__PURE__ */ c(f, {
105
105
  className: "pt-4",
106
- children: [/* @__PURE__ */ x("div", {
106
+ children: [/* @__PURE__ */ c("div", {
107
107
  className: "flex items-center gap-2 text-sm text-text-secondary",
108
- children: [/* @__PURE__ */ b(i, { className: "h-4 w-4" }), "Open Problems"]
109
- }), /* @__PURE__ */ b("p", {
108
+ children: [/* @__PURE__ */ s(a, { className: "h-4 w-4" }), "Open Problems"]
109
+ }), /* @__PURE__ */ s("p", {
110
110
  className: "text-2xl font-bold mt-1",
111
111
  children: j.length
112
112
  })]
113
113
  }) })
114
114
  ]
115
115
  }),
116
- /* @__PURE__ */ x(g, {
116
+ /* @__PURE__ */ c(v, {
117
117
  defaultValue: "incidents",
118
118
  children: [
119
- /* @__PURE__ */ x(v, { children: [
120
- /* @__PURE__ */ x(y, {
119
+ /* @__PURE__ */ c(b, { children: [
120
+ /* @__PURE__ */ c(x, {
121
121
  value: "incidents",
122
122
  children: [
123
123
  "Incidents (",
@@ -125,7 +125,7 @@ function C() {
125
125
  ")"
126
126
  ]
127
127
  }),
128
- /* @__PURE__ */ x(y, {
128
+ /* @__PURE__ */ c(x, {
129
129
  value: "changes",
130
130
  children: [
131
131
  "Changes (",
@@ -133,7 +133,7 @@ function C() {
133
133
  ")"
134
134
  ]
135
135
  }),
136
- /* @__PURE__ */ x(y, {
136
+ /* @__PURE__ */ c(x, {
137
137
  value: "problems",
138
138
  children: [
139
139
  "Problems (",
@@ -142,88 +142,88 @@ function C() {
142
142
  ]
143
143
  })
144
144
  ] }),
145
- /* @__PURE__ */ b(_, {
145
+ /* @__PURE__ */ s(y, {
146
146
  value: "incidents",
147
147
  className: "mt-4",
148
- children: w.length === 0 ? /* @__PURE__ */ b(p, {
148
+ children: w.length === 0 ? /* @__PURE__ */ s(h, {
149
149
  illustration: "empty-notifications",
150
150
  title: "No incidents reported",
151
151
  description: "When service-affecting incidents are raised, they will appear here for triage."
152
- }) : /* @__PURE__ */ b(l, { children: /* @__PURE__ */ b(u, {
152
+ }) : /* @__PURE__ */ s(d, { children: /* @__PURE__ */ s(f, {
153
153
  className: "p-0",
154
- children: /* @__PURE__ */ b("div", {
154
+ children: /* @__PURE__ */ s("div", {
155
155
  className: "overflow-x-auto",
156
- children: /* @__PURE__ */ x("table", {
156
+ children: /* @__PURE__ */ c("table", {
157
157
  className: "w-full text-sm",
158
- children: [/* @__PURE__ */ b("thead", { children: /* @__PURE__ */ x("tr", {
158
+ children: [/* @__PURE__ */ s("thead", { children: /* @__PURE__ */ c("tr", {
159
159
  className: "border-b bg-bg-sunken/50",
160
160
  children: [
161
- /* @__PURE__ */ b("th", {
161
+ /* @__PURE__ */ s("th", {
162
162
  className: "text-left p-3 font-medium",
163
163
  children: "ID"
164
164
  }),
165
- /* @__PURE__ */ b("th", {
165
+ /* @__PURE__ */ s("th", {
166
166
  className: "text-left p-3 font-medium",
167
167
  children: "Title"
168
168
  }),
169
- /* @__PURE__ */ b("th", {
169
+ /* @__PURE__ */ s("th", {
170
170
  className: "text-left p-3 font-medium",
171
171
  children: "Priority"
172
172
  }),
173
- /* @__PURE__ */ b("th", {
173
+ /* @__PURE__ */ s("th", {
174
174
  className: "text-left p-3 font-medium",
175
175
  children: "Status"
176
176
  }),
177
- /* @__PURE__ */ b("th", {
177
+ /* @__PURE__ */ s("th", {
178
178
  className: "text-left p-3 font-medium",
179
179
  children: "Assigned To"
180
180
  }),
181
- /* @__PURE__ */ b("th", {
181
+ /* @__PURE__ */ s("th", {
182
182
  className: "text-left p-3 font-medium",
183
183
  children: "SLA"
184
184
  })
185
185
  ]
186
- }) }), /* @__PURE__ */ b("tbody", { children: w.map((e) => /* @__PURE__ */ x("tr", {
186
+ }) }), /* @__PURE__ */ s("tbody", { children: w.map((e) => /* @__PURE__ */ c("tr", {
187
187
  className: "border-b hover:bg-bg-sunken/50 cursor-pointer",
188
188
  children: [
189
- /* @__PURE__ */ b("td", {
189
+ /* @__PURE__ */ s("td", {
190
190
  className: "p-3 font-mono text-xs",
191
191
  children: e.id
192
192
  }),
193
- /* @__PURE__ */ x("td", {
193
+ /* @__PURE__ */ c("td", {
194
194
  className: "p-3",
195
- children: [/* @__PURE__ */ b("p", {
195
+ children: [/* @__PURE__ */ s("p", {
196
196
  className: "font-medium",
197
197
  children: e.title
198
- }), /* @__PURE__ */ b("p", {
198
+ }), /* @__PURE__ */ s("p", {
199
199
  className: "text-xs text-text-secondary truncate max-w-xs",
200
200
  children: e.description
201
201
  })]
202
202
  }),
203
- /* @__PURE__ */ b("td", {
203
+ /* @__PURE__ */ s("td", {
204
204
  className: "p-3",
205
- children: /* @__PURE__ */ b(s, {
205
+ children: /* @__PURE__ */ s(l, {
206
206
  variant: S[e.priority],
207
207
  children: e.priority
208
208
  })
209
209
  }),
210
- /* @__PURE__ */ b("td", {
210
+ /* @__PURE__ */ s("td", {
211
211
  className: "p-3",
212
- children: /* @__PURE__ */ b(s, {
212
+ children: /* @__PURE__ */ s(l, {
213
213
  variant: "outline",
214
214
  children: e.status.replace("_", " ")
215
215
  })
216
216
  }),
217
- /* @__PURE__ */ b("td", {
217
+ /* @__PURE__ */ s("td", {
218
218
  className: "p-3 text-xs",
219
219
  children: e.assignedTo || "Unassigned"
220
220
  }),
221
- /* @__PURE__ */ b("td", {
221
+ /* @__PURE__ */ s("td", {
222
222
  className: "p-3",
223
- children: e.slaBreached ? /* @__PURE__ */ b(s, {
223
+ children: e.slaBreached ? /* @__PURE__ */ s(l, {
224
224
  variant: "destructive",
225
225
  children: "Breached"
226
- }) : /* @__PURE__ */ b(s, {
226
+ }) : /* @__PURE__ */ s(l, {
227
227
  variant: "secondary",
228
228
  children: "OK"
229
229
  })
@@ -234,83 +234,83 @@ function C() {
234
234
  })
235
235
  }) })
236
236
  }),
237
- /* @__PURE__ */ b(_, {
237
+ /* @__PURE__ */ s(y, {
238
238
  value: "changes",
239
239
  className: "mt-4",
240
- children: T.length === 0 ? /* @__PURE__ */ b(p, {
240
+ children: T.length === 0 ? /* @__PURE__ */ s(h, {
241
241
  illustration: "empty-generic",
242
242
  title: "No change requests",
243
243
  description: "Planned changes to your assets and services will be listed here once raised."
244
- }) : /* @__PURE__ */ b(l, { children: /* @__PURE__ */ b(u, {
244
+ }) : /* @__PURE__ */ s(d, { children: /* @__PURE__ */ s(f, {
245
245
  className: "p-0",
246
- children: /* @__PURE__ */ b("div", {
246
+ children: /* @__PURE__ */ s("div", {
247
247
  className: "overflow-x-auto",
248
- children: /* @__PURE__ */ x("table", {
248
+ children: /* @__PURE__ */ c("table", {
249
249
  className: "w-full text-sm",
250
- children: [/* @__PURE__ */ b("thead", { children: /* @__PURE__ */ x("tr", {
250
+ children: [/* @__PURE__ */ s("thead", { children: /* @__PURE__ */ c("tr", {
251
251
  className: "border-b bg-bg-sunken/50",
252
252
  children: [
253
- /* @__PURE__ */ b("th", {
253
+ /* @__PURE__ */ s("th", {
254
254
  className: "text-left p-3 font-medium",
255
255
  children: "ID"
256
256
  }),
257
- /* @__PURE__ */ b("th", {
257
+ /* @__PURE__ */ s("th", {
258
258
  className: "text-left p-3 font-medium",
259
259
  children: "Title"
260
260
  }),
261
- /* @__PURE__ */ b("th", {
261
+ /* @__PURE__ */ s("th", {
262
262
  className: "text-left p-3 font-medium",
263
263
  children: "Type"
264
264
  }),
265
- /* @__PURE__ */ b("th", {
265
+ /* @__PURE__ */ s("th", {
266
266
  className: "text-left p-3 font-medium",
267
267
  children: "Risk"
268
268
  }),
269
- /* @__PURE__ */ b("th", {
269
+ /* @__PURE__ */ s("th", {
270
270
  className: "text-left p-3 font-medium",
271
271
  children: "Status"
272
272
  }),
273
- /* @__PURE__ */ b("th", {
273
+ /* @__PURE__ */ s("th", {
274
274
  className: "text-left p-3 font-medium",
275
275
  children: "Scheduled"
276
276
  })
277
277
  ]
278
- }) }), /* @__PURE__ */ b("tbody", { children: T.map((e) => /* @__PURE__ */ x("tr", {
278
+ }) }), /* @__PURE__ */ s("tbody", { children: T.map((e) => /* @__PURE__ */ c("tr", {
279
279
  className: "border-b hover:bg-bg-sunken/50 cursor-pointer",
280
280
  children: [
281
- /* @__PURE__ */ b("td", {
281
+ /* @__PURE__ */ s("td", {
282
282
  className: "p-3 font-mono text-xs",
283
283
  children: e.id
284
284
  }),
285
- /* @__PURE__ */ x("td", {
285
+ /* @__PURE__ */ c("td", {
286
286
  className: "p-3",
287
- children: [/* @__PURE__ */ b("p", {
287
+ children: [/* @__PURE__ */ s("p", {
288
288
  className: "font-medium",
289
289
  children: e.title
290
- }), /* @__PURE__ */ b("p", {
290
+ }), /* @__PURE__ */ s("p", {
291
291
  className: "text-xs text-text-secondary truncate max-w-xs",
292
292
  children: e.description
293
293
  })]
294
294
  }),
295
- /* @__PURE__ */ b("td", {
295
+ /* @__PURE__ */ s("td", {
296
296
  className: "p-3 capitalize",
297
297
  children: e.type
298
298
  }),
299
- /* @__PURE__ */ b("td", {
299
+ /* @__PURE__ */ s("td", {
300
300
  className: "p-3",
301
- children: /* @__PURE__ */ b(s, {
301
+ children: /* @__PURE__ */ s(l, {
302
302
  variant: S[e.risk],
303
303
  children: e.risk
304
304
  })
305
305
  }),
306
- /* @__PURE__ */ b("td", {
306
+ /* @__PURE__ */ s("td", {
307
307
  className: "p-3",
308
- children: /* @__PURE__ */ b(s, {
308
+ children: /* @__PURE__ */ s(l, {
309
309
  variant: "outline",
310
310
  children: e.status.replace("_", " ")
311
311
  })
312
312
  }),
313
- /* @__PURE__ */ b("td", {
313
+ /* @__PURE__ */ s("td", {
314
314
  className: "p-3 text-xs",
315
315
  children: new Date(e.scheduledStart).toLocaleDateString()
316
316
  })
@@ -320,83 +320,83 @@ function C() {
320
320
  })
321
321
  }) })
322
322
  }),
323
- /* @__PURE__ */ b(_, {
323
+ /* @__PURE__ */ s(y, {
324
324
  value: "problems",
325
325
  className: "mt-4",
326
- children: E.length === 0 ? /* @__PURE__ */ b(p, {
326
+ children: E.length === 0 ? /* @__PURE__ */ s(h, {
327
327
  illustration: "empty-search",
328
328
  title: "No problem records",
329
329
  description: "Open a problem record to investigate the root cause of recurring incidents."
330
- }) : /* @__PURE__ */ b(l, { children: /* @__PURE__ */ b(u, {
330
+ }) : /* @__PURE__ */ s(d, { children: /* @__PURE__ */ s(f, {
331
331
  className: "p-0",
332
- children: /* @__PURE__ */ b("div", {
332
+ children: /* @__PURE__ */ s("div", {
333
333
  className: "overflow-x-auto",
334
- children: /* @__PURE__ */ x("table", {
334
+ children: /* @__PURE__ */ c("table", {
335
335
  className: "w-full text-sm",
336
- children: [/* @__PURE__ */ b("thead", { children: /* @__PURE__ */ x("tr", {
336
+ children: [/* @__PURE__ */ s("thead", { children: /* @__PURE__ */ c("tr", {
337
337
  className: "border-b bg-bg-sunken/50",
338
338
  children: [
339
- /* @__PURE__ */ b("th", {
339
+ /* @__PURE__ */ s("th", {
340
340
  className: "text-left p-3 font-medium",
341
341
  children: "ID"
342
342
  }),
343
- /* @__PURE__ */ b("th", {
343
+ /* @__PURE__ */ s("th", {
344
344
  className: "text-left p-3 font-medium",
345
345
  children: "Title"
346
346
  }),
347
- /* @__PURE__ */ b("th", {
347
+ /* @__PURE__ */ s("th", {
348
348
  className: "text-left p-3 font-medium",
349
349
  children: "Priority"
350
350
  }),
351
- /* @__PURE__ */ b("th", {
351
+ /* @__PURE__ */ s("th", {
352
352
  className: "text-left p-3 font-medium",
353
353
  children: "Status"
354
354
  }),
355
- /* @__PURE__ */ b("th", {
355
+ /* @__PURE__ */ s("th", {
356
356
  className: "text-left p-3 font-medium",
357
357
  children: "Related Incidents"
358
358
  }),
359
- /* @__PURE__ */ b("th", {
359
+ /* @__PURE__ */ s("th", {
360
360
  className: "text-left p-3 font-medium",
361
361
  children: "Assigned To"
362
362
  })
363
363
  ]
364
- }) }), /* @__PURE__ */ b("tbody", { children: E.map((e) => /* @__PURE__ */ x("tr", {
364
+ }) }), /* @__PURE__ */ s("tbody", { children: E.map((e) => /* @__PURE__ */ c("tr", {
365
365
  className: "border-b hover:bg-bg-sunken/50 cursor-pointer",
366
366
  children: [
367
- /* @__PURE__ */ b("td", {
367
+ /* @__PURE__ */ s("td", {
368
368
  className: "p-3 font-mono text-xs",
369
369
  children: e.id
370
370
  }),
371
- /* @__PURE__ */ x("td", {
371
+ /* @__PURE__ */ c("td", {
372
372
  className: "p-3",
373
- children: [/* @__PURE__ */ b("p", {
373
+ children: [/* @__PURE__ */ s("p", {
374
374
  className: "font-medium",
375
375
  children: e.title
376
- }), /* @__PURE__ */ b("p", {
376
+ }), /* @__PURE__ */ s("p", {
377
377
  className: "text-xs text-text-secondary truncate max-w-xs",
378
378
  children: e.description
379
379
  })]
380
380
  }),
381
- /* @__PURE__ */ b("td", {
381
+ /* @__PURE__ */ s("td", {
382
382
  className: "p-3",
383
- children: /* @__PURE__ */ b(s, {
383
+ children: /* @__PURE__ */ s(l, {
384
384
  variant: S[e.priority],
385
385
  children: e.priority
386
386
  })
387
387
  }),
388
- /* @__PURE__ */ b("td", {
388
+ /* @__PURE__ */ s("td", {
389
389
  className: "p-3",
390
- children: /* @__PURE__ */ b(s, {
390
+ children: /* @__PURE__ */ s(l, {
391
391
  variant: "outline",
392
392
  children: e.status.replace("_", " ")
393
393
  })
394
394
  }),
395
- /* @__PURE__ */ x("td", {
395
+ /* @__PURE__ */ c("td", {
396
396
  className: "p-3 text-xs",
397
397
  children: [e.relatedIncidents.length, " incident(s)"]
398
398
  }),
399
- /* @__PURE__ */ b("td", {
399
+ /* @__PURE__ */ s("td", {
400
400
  className: "p-3 text-xs",
401
401
  children: e.assignedTo
402
402
  })
@@ -1 +1 @@
1
- {"version":3,"file":"ItilItilhubPage.js","names":[],"sources":["../../../src/assethandler/pages/ItilItilhubPage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n GradientText,\n EmphasisPanel,\n PagePurpose,\n NextSteps,\n IllustratedEmptyState,\n} from '@burdenoff/fe-libs/ui';\nimport { AlertTriangle, GitPullRequest, Search, CheckCircle, XCircle } from 'lucide-react';\nimport { useNavigate } from 'react-router-dom';\nimport { useAssetHandlerStore } from '../store/assethandlerStore';\n\nconst priorityColors: Record<string, 'destructive' | 'default' | 'secondary' | 'outline'> = {\n critical: 'destructive',\n high: 'destructive',\n medium: 'default',\n low: 'secondary',\n};\n\nexport function ItilItilhubPage() {\n const navigate = useNavigate();\n const { incidents, changeRequests, problems } = useAssetHandlerStore();\n\n const activeIncidents = incidents.filter((i) => i.status !== 'resolved' && i.status !== 'closed');\n const resolvedIncidents = incidents.filter(\n (i) => i.status === 'resolved' || i.status === 'closed'\n );\n const slaBreaches = incidents.filter((i) => i.slaBreached);\n const pendingChanges = changeRequests.filter(\n (c) => c.status !== 'completed' && c.status !== 'rejected'\n );\n const openProblems = problems.filter((p) => p.status !== 'resolved' && p.status !== 'closed');\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-bold\">\n <GradientText>ITIL Service Management</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">\n Incident, Change, and Problem management hub\n </p>\n </div>\n <Button size=\"sm\">Create Ticket</Button>\n </div>\n\n <PagePurpose>\n Your single ITIL service-management desk: triage and resolve service-disrupting{' '}\n <strong>incidents</strong>, plan and approve <strong>changes</strong> safely, and run\n root-cause <strong>problem</strong> investigations — all tied back to the affected assets.\n Use this hub to see what is breaching SLA right now and where to act first.\n </PagePurpose>\n\n <NextSteps\n storageKey=\"assethandler-itil-hub\"\n steps={[\n {\n id: 'incidents',\n label: 'Review active incidents',\n description: 'Triage what is impacting users and check SLA risk.',\n onClick: () => navigate('/itil/incident-management'),\n },\n {\n id: 'changes',\n label: 'Plan a change',\n description: 'Schedule and risk-assess upcoming asset changes.',\n onClick: () => navigate('/itil/change-management'),\n },\n {\n id: 'problems',\n label: 'Open a problem record',\n description: 'Investigate recurring incidents for root cause.',\n onClick: () => navigate('/itil/problem-management'),\n },\n ]}\n />\n\n {/* KPI Cards */}\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-5\">\n <EmphasisPanel>\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <AlertTriangle className=\"h-4 w-4\" />\n Active Incidents\n </div>\n <p className=\"text-2xl font-bold mt-1 tabular-nums\">{activeIncidents.length}</p>\n </EmphasisPanel>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <CheckCircle className=\"h-4 w-4\" />\n Resolved\n </div>\n <p className=\"text-2xl font-bold mt-1 text-status-success-text\">\n {resolvedIncidents.length}\n </p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <XCircle className=\"h-4 w-4\" />\n SLA Breaches\n </div>\n <p className=\"text-2xl font-bold mt-1 text-status-error-text\">{slaBreaches.length}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <GitPullRequest className=\"h-4 w-4\" />\n Pending Changes\n </div>\n <p className=\"text-2xl font-bold mt-1\">{pendingChanges.length}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <Search className=\"h-4 w-4\" />\n Open Problems\n </div>\n <p className=\"text-2xl font-bold mt-1\">{openProblems.length}</p>\n </CardContent>\n </Card>\n </div>\n\n <Tabs defaultValue=\"incidents\">\n <TabsList>\n <TabsTrigger value=\"incidents\">Incidents ({incidents.length})</TabsTrigger>\n <TabsTrigger value=\"changes\">Changes ({changeRequests.length})</TabsTrigger>\n <TabsTrigger value=\"problems\">Problems ({problems.length})</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"incidents\" className=\"mt-4\">\n {incidents.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-notifications\"\n title=\"No incidents reported\"\n description=\"When service-affecting incidents are raised, they will appear here for triage.\"\n />\n ) : (\n <Card>\n <CardContent className=\"p-0\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b bg-bg-sunken/50\">\n <th className=\"text-left p-3 font-medium\">ID</th>\n <th className=\"text-left p-3 font-medium\">Title</th>\n <th className=\"text-left p-3 font-medium\">Priority</th>\n <th className=\"text-left p-3 font-medium\">Status</th>\n <th className=\"text-left p-3 font-medium\">Assigned To</th>\n <th className=\"text-left p-3 font-medium\">SLA</th>\n </tr>\n </thead>\n <tbody>\n {incidents.map((inc) => (\n <tr key={inc.id} className=\"border-b hover:bg-bg-sunken/50 cursor-pointer\">\n <td className=\"p-3 font-mono text-xs\">{inc.id}</td>\n <td className=\"p-3\">\n <p className=\"font-medium\">{inc.title}</p>\n <p className=\"text-xs text-text-secondary truncate max-w-xs\">\n {inc.description}\n </p>\n </td>\n <td className=\"p-3\">\n <Badge variant={priorityColors[inc.priority]}>{inc.priority}</Badge>\n </td>\n <td className=\"p-3\">\n <Badge variant=\"outline\">{inc.status.replace('_', ' ')}</Badge>\n </td>\n <td className=\"p-3 text-xs\">{inc.assignedTo || 'Unassigned'}</td>\n <td className=\"p-3\">\n {inc.slaBreached ? (\n <Badge variant=\"destructive\">Breached</Badge>\n ) : (\n <Badge variant=\"secondary\">OK</Badge>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </CardContent>\n </Card>\n )}\n </TabsContent>\n\n <TabsContent value=\"changes\" className=\"mt-4\">\n {changeRequests.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-generic\"\n title=\"No change requests\"\n description=\"Planned changes to your assets and services will be listed here once raised.\"\n />\n ) : (\n <Card>\n <CardContent className=\"p-0\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b bg-bg-sunken/50\">\n <th className=\"text-left p-3 font-medium\">ID</th>\n <th className=\"text-left p-3 font-medium\">Title</th>\n <th className=\"text-left p-3 font-medium\">Type</th>\n <th className=\"text-left p-3 font-medium\">Risk</th>\n <th className=\"text-left p-3 font-medium\">Status</th>\n <th className=\"text-left p-3 font-medium\">Scheduled</th>\n </tr>\n </thead>\n <tbody>\n {changeRequests.map((chg) => (\n <tr key={chg.id} className=\"border-b hover:bg-bg-sunken/50 cursor-pointer\">\n <td className=\"p-3 font-mono text-xs\">{chg.id}</td>\n <td className=\"p-3\">\n <p className=\"font-medium\">{chg.title}</p>\n <p className=\"text-xs text-text-secondary truncate max-w-xs\">\n {chg.description}\n </p>\n </td>\n <td className=\"p-3 capitalize\">{chg.type}</td>\n <td className=\"p-3\">\n <Badge variant={priorityColors[chg.risk]}>{chg.risk}</Badge>\n </td>\n <td className=\"p-3\">\n <Badge variant=\"outline\">{chg.status.replace('_', ' ')}</Badge>\n </td>\n <td className=\"p-3 text-xs\">\n {new Date(chg.scheduledStart).toLocaleDateString()}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </CardContent>\n </Card>\n )}\n </TabsContent>\n\n <TabsContent value=\"problems\" className=\"mt-4\">\n {problems.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-search\"\n title=\"No problem records\"\n description=\"Open a problem record to investigate the root cause of recurring incidents.\"\n />\n ) : (\n <Card>\n <CardContent className=\"p-0\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b bg-bg-sunken/50\">\n <th className=\"text-left p-3 font-medium\">ID</th>\n <th className=\"text-left p-3 font-medium\">Title</th>\n <th className=\"text-left p-3 font-medium\">Priority</th>\n <th className=\"text-left p-3 font-medium\">Status</th>\n <th className=\"text-left p-3 font-medium\">Related Incidents</th>\n <th className=\"text-left p-3 font-medium\">Assigned To</th>\n </tr>\n </thead>\n <tbody>\n {problems.map((prob) => (\n <tr key={prob.id} className=\"border-b hover:bg-bg-sunken/50 cursor-pointer\">\n <td className=\"p-3 font-mono text-xs\">{prob.id}</td>\n <td className=\"p-3\">\n <p className=\"font-medium\">{prob.title}</p>\n <p className=\"text-xs text-text-secondary truncate max-w-xs\">\n {prob.description}\n </p>\n </td>\n <td className=\"p-3\">\n <Badge variant={priorityColors[prob.priority]}>{prob.priority}</Badge>\n </td>\n <td className=\"p-3\">\n <Badge variant=\"outline\">{prob.status.replace('_', ' ')}</Badge>\n </td>\n <td className=\"p-3 text-xs\">\n {prob.relatedIncidents.length} incident(s)\n </td>\n <td className=\"p-3 text-xs\">{prob.assignedTo}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </CardContent>\n </Card>\n )}\n </TabsContent>\n </Tabs>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ItilItilhubPage.js","names":[],"sources":["../../../src/assethandler/pages/ItilItilhubPage.tsx"],"sourcesContent":["import { useAssetHandlerNavigate } from '../hooks/useAssetHandlerNavigate';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n GradientText,\n EmphasisPanel,\n PagePurpose,\n NextSteps,\n IllustratedEmptyState,\n} from '@burdenoff/fe-libs/ui';\nimport { AlertTriangle, GitPullRequest, Search, CheckCircle, XCircle } from 'lucide-react';\nimport { useAssetHandlerStore } from '../store/assethandlerStore';\n\nconst priorityColors: Record<string, 'destructive' | 'default' | 'secondary' | 'outline'> = {\n critical: 'destructive',\n high: 'destructive',\n medium: 'default',\n low: 'secondary',\n};\n\nexport function ItilItilhubPage() {\n const navigate = useAssetHandlerNavigate();\n const { incidents, changeRequests, problems } = useAssetHandlerStore();\n\n const activeIncidents = incidents.filter((i) => i.status !== 'resolved' && i.status !== 'closed');\n const resolvedIncidents = incidents.filter(\n (i) => i.status === 'resolved' || i.status === 'closed'\n );\n const slaBreaches = incidents.filter((i) => i.slaBreached);\n const pendingChanges = changeRequests.filter(\n (c) => c.status !== 'completed' && c.status !== 'rejected'\n );\n const openProblems = problems.filter((p) => p.status !== 'resolved' && p.status !== 'closed');\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-bold\">\n <GradientText>ITIL Service Management</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">\n Incident, Change, and Problem management hub\n </p>\n </div>\n <Button size=\"sm\">Create Ticket</Button>\n </div>\n\n <PagePurpose>\n Your single ITIL service-management desk: triage and resolve service-disrupting{' '}\n <strong>incidents</strong>, plan and approve <strong>changes</strong> safely, and run\n root-cause <strong>problem</strong> investigations — all tied back to the affected assets.\n Use this hub to see what is breaching SLA right now and where to act first.\n </PagePurpose>\n\n <NextSteps\n storageKey=\"assethandler-itil-hub\"\n steps={[\n {\n id: 'incidents',\n label: 'Review active incidents',\n description: 'Triage what is impacting users and check SLA risk.',\n onClick: () => navigate('/itil/incident-management'),\n },\n {\n id: 'changes',\n label: 'Plan a change',\n description: 'Schedule and risk-assess upcoming asset changes.',\n onClick: () => navigate('/itil/change-management'),\n },\n {\n id: 'problems',\n label: 'Open a problem record',\n description: 'Investigate recurring incidents for root cause.',\n onClick: () => navigate('/itil/problem-management'),\n },\n ]}\n />\n\n {/* KPI Cards */}\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-5\">\n <EmphasisPanel>\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <AlertTriangle className=\"h-4 w-4\" />\n Active Incidents\n </div>\n <p className=\"text-2xl font-bold mt-1 tabular-nums\">{activeIncidents.length}</p>\n </EmphasisPanel>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <CheckCircle className=\"h-4 w-4\" />\n Resolved\n </div>\n <p className=\"text-2xl font-bold mt-1 text-status-success-text\">\n {resolvedIncidents.length}\n </p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <XCircle className=\"h-4 w-4\" />\n SLA Breaches\n </div>\n <p className=\"text-2xl font-bold mt-1 text-status-error-text\">{slaBreaches.length}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <GitPullRequest className=\"h-4 w-4\" />\n Pending Changes\n </div>\n <p className=\"text-2xl font-bold mt-1\">{pendingChanges.length}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <Search className=\"h-4 w-4\" />\n Open Problems\n </div>\n <p className=\"text-2xl font-bold mt-1\">{openProblems.length}</p>\n </CardContent>\n </Card>\n </div>\n\n <Tabs defaultValue=\"incidents\">\n <TabsList>\n <TabsTrigger value=\"incidents\">Incidents ({incidents.length})</TabsTrigger>\n <TabsTrigger value=\"changes\">Changes ({changeRequests.length})</TabsTrigger>\n <TabsTrigger value=\"problems\">Problems ({problems.length})</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"incidents\" className=\"mt-4\">\n {incidents.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-notifications\"\n title=\"No incidents reported\"\n description=\"When service-affecting incidents are raised, they will appear here for triage.\"\n />\n ) : (\n <Card>\n <CardContent className=\"p-0\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b bg-bg-sunken/50\">\n <th className=\"text-left p-3 font-medium\">ID</th>\n <th className=\"text-left p-3 font-medium\">Title</th>\n <th className=\"text-left p-3 font-medium\">Priority</th>\n <th className=\"text-left p-3 font-medium\">Status</th>\n <th className=\"text-left p-3 font-medium\">Assigned To</th>\n <th className=\"text-left p-3 font-medium\">SLA</th>\n </tr>\n </thead>\n <tbody>\n {incidents.map((inc) => (\n <tr key={inc.id} className=\"border-b hover:bg-bg-sunken/50 cursor-pointer\">\n <td className=\"p-3 font-mono text-xs\">{inc.id}</td>\n <td className=\"p-3\">\n <p className=\"font-medium\">{inc.title}</p>\n <p className=\"text-xs text-text-secondary truncate max-w-xs\">\n {inc.description}\n </p>\n </td>\n <td className=\"p-3\">\n <Badge variant={priorityColors[inc.priority]}>{inc.priority}</Badge>\n </td>\n <td className=\"p-3\">\n <Badge variant=\"outline\">{inc.status.replace('_', ' ')}</Badge>\n </td>\n <td className=\"p-3 text-xs\">{inc.assignedTo || 'Unassigned'}</td>\n <td className=\"p-3\">\n {inc.slaBreached ? (\n <Badge variant=\"destructive\">Breached</Badge>\n ) : (\n <Badge variant=\"secondary\">OK</Badge>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </CardContent>\n </Card>\n )}\n </TabsContent>\n\n <TabsContent value=\"changes\" className=\"mt-4\">\n {changeRequests.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-generic\"\n title=\"No change requests\"\n description=\"Planned changes to your assets and services will be listed here once raised.\"\n />\n ) : (\n <Card>\n <CardContent className=\"p-0\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b bg-bg-sunken/50\">\n <th className=\"text-left p-3 font-medium\">ID</th>\n <th className=\"text-left p-3 font-medium\">Title</th>\n <th className=\"text-left p-3 font-medium\">Type</th>\n <th className=\"text-left p-3 font-medium\">Risk</th>\n <th className=\"text-left p-3 font-medium\">Status</th>\n <th className=\"text-left p-3 font-medium\">Scheduled</th>\n </tr>\n </thead>\n <tbody>\n {changeRequests.map((chg) => (\n <tr key={chg.id} className=\"border-b hover:bg-bg-sunken/50 cursor-pointer\">\n <td className=\"p-3 font-mono text-xs\">{chg.id}</td>\n <td className=\"p-3\">\n <p className=\"font-medium\">{chg.title}</p>\n <p className=\"text-xs text-text-secondary truncate max-w-xs\">\n {chg.description}\n </p>\n </td>\n <td className=\"p-3 capitalize\">{chg.type}</td>\n <td className=\"p-3\">\n <Badge variant={priorityColors[chg.risk]}>{chg.risk}</Badge>\n </td>\n <td className=\"p-3\">\n <Badge variant=\"outline\">{chg.status.replace('_', ' ')}</Badge>\n </td>\n <td className=\"p-3 text-xs\">\n {new Date(chg.scheduledStart).toLocaleDateString()}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </CardContent>\n </Card>\n )}\n </TabsContent>\n\n <TabsContent value=\"problems\" className=\"mt-4\">\n {problems.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-search\"\n title=\"No problem records\"\n description=\"Open a problem record to investigate the root cause of recurring incidents.\"\n />\n ) : (\n <Card>\n <CardContent className=\"p-0\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b bg-bg-sunken/50\">\n <th className=\"text-left p-3 font-medium\">ID</th>\n <th className=\"text-left p-3 font-medium\">Title</th>\n <th className=\"text-left p-3 font-medium\">Priority</th>\n <th className=\"text-left p-3 font-medium\">Status</th>\n <th className=\"text-left p-3 font-medium\">Related Incidents</th>\n <th className=\"text-left p-3 font-medium\">Assigned To</th>\n </tr>\n </thead>\n <tbody>\n {problems.map((prob) => (\n <tr key={prob.id} className=\"border-b hover:bg-bg-sunken/50 cursor-pointer\">\n <td className=\"p-3 font-mono text-xs\">{prob.id}</td>\n <td className=\"p-3\">\n <p className=\"font-medium\">{prob.title}</p>\n <p className=\"text-xs text-text-secondary truncate max-w-xs\">\n {prob.description}\n </p>\n </td>\n <td className=\"p-3\">\n <Badge variant={priorityColors[prob.priority]}>{prob.priority}</Badge>\n </td>\n <td className=\"p-3\">\n <Badge variant=\"outline\">{prob.status.replace('_', ' ')}</Badge>\n </td>\n <td className=\"p-3 text-xs\">\n {prob.relatedIncidents.length} incident(s)\n </td>\n <td className=\"p-3 text-xs\">{prob.assignedTo}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </CardContent>\n </Card>\n )}\n </TabsContent>\n </Tabs>\n </div>\n );\n}\n"],"mappings":"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"}