@burdenoff/microfe-assethandler 2026.625.1 → 2026.625.2

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 (113) hide show
  1. package/dist/assethandler/pages/AiPredictionsPage.js +42 -41
  2. package/dist/assethandler/pages/AiPredictionsPage.js.map +1 -1
  3. package/dist/assethandler/pages/AnalyticsPage.js +538 -534
  4. package/dist/assethandler/pages/AnalyticsPage.js.map +1 -1
  5. package/dist/assethandler/pages/AssetsAssetCategoriesPage.js +135 -125
  6. package/dist/assethandler/pages/AssetsAssetCategoriesPage.js.map +1 -1
  7. package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js +90 -92
  8. package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js.map +1 -1
  9. package/dist/assethandler/pages/AssetsAssetCreatePage.js +131 -124
  10. package/dist/assethandler/pages/AssetsAssetCreatePage.js.map +1 -1
  11. package/dist/assethandler/pages/AssetsAssetDetailPage.js +214 -185
  12. package/dist/assethandler/pages/AssetsAssetDetailPage.js.map +1 -1
  13. package/dist/assethandler/pages/AssetsAssetEditPage.js +168 -156
  14. package/dist/assethandler/pages/AssetsAssetEditPage.js.map +1 -1
  15. package/dist/assethandler/pages/AssetsAssetListPage.js +207 -187
  16. package/dist/assethandler/pages/AssetsAssetListPage.js.map +1 -1
  17. package/dist/assethandler/pages/AssetsAssetTrackingPage.js +82 -71
  18. package/dist/assethandler/pages/AssetsAssetTrackingPage.js.map +1 -1
  19. package/dist/assethandler/pages/AuditTrailPage.js +93 -91
  20. package/dist/assethandler/pages/AuditTrailPage.js.map +1 -1
  21. package/dist/assethandler/pages/CmdbBrowserPage.js +32 -33
  22. package/dist/assethandler/pages/CmdbBrowserPage.js.map +1 -1
  23. package/dist/assethandler/pages/DashboardPage.js +157 -126
  24. package/dist/assethandler/pages/DashboardPage.js.map +1 -1
  25. package/dist/assethandler/pages/DigitalTwinPage.js +25 -26
  26. package/dist/assethandler/pages/DigitalTwinPage.js.map +1 -1
  27. package/dist/assethandler/pages/DiscoveryJobsPage.js +50 -50
  28. package/dist/assethandler/pages/DiscoveryJobsPage.js.map +1 -1
  29. package/dist/assethandler/pages/EsgDashboardPage.js +43 -42
  30. package/dist/assethandler/pages/EsgDashboardPage.js.map +1 -1
  31. package/dist/assethandler/pages/FinanceBudgetDetailPage.js +96 -82
  32. package/dist/assethandler/pages/FinanceBudgetDetailPage.js.map +1 -1
  33. package/dist/assethandler/pages/FinanceFinanceHubPage.js +137 -103
  34. package/dist/assethandler/pages/FinanceFinanceHubPage.js.map +1 -1
  35. package/dist/assethandler/pages/FinanceInvoiceDetailPage.js +77 -66
  36. package/dist/assethandler/pages/FinanceInvoiceDetailPage.js.map +1 -1
  37. package/dist/assethandler/pages/IotDevicesPage.js +34 -35
  38. package/dist/assethandler/pages/IotDevicesPage.js.map +1 -1
  39. package/dist/assethandler/pages/ItilChangeDetailPage.js +236 -199
  40. package/dist/assethandler/pages/ItilChangeDetailPage.js.map +1 -1
  41. package/dist/assethandler/pages/ItilChangeManagementPage.js +66 -64
  42. package/dist/assethandler/pages/ItilChangeManagementPage.js.map +1 -1
  43. package/dist/assethandler/pages/ItilIncidentDetailPage.js +237 -200
  44. package/dist/assethandler/pages/ItilIncidentDetailPage.js.map +1 -1
  45. package/dist/assethandler/pages/ItilIncidentManagementPage.js +99 -97
  46. package/dist/assethandler/pages/ItilIncidentManagementPage.js.map +1 -1
  47. package/dist/assethandler/pages/ItilItilhubPage.js +166 -122
  48. package/dist/assethandler/pages/ItilItilhubPage.js.map +1 -1
  49. package/dist/assethandler/pages/ItilProblemDetailPage.js +193 -156
  50. package/dist/assethandler/pages/ItilProblemDetailPage.js.map +1 -1
  51. package/dist/assethandler/pages/ItilProblemManagementPage.js +63 -61
  52. package/dist/assethandler/pages/ItilProblemManagementPage.js.map +1 -1
  53. package/dist/assethandler/pages/KnowledgeBasePage.js +45 -43
  54. package/dist/assethandler/pages/KnowledgeBasePage.js.map +1 -1
  55. package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.js +70 -68
  56. package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.js.map +1 -1
  57. package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.js +77 -62
  58. package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.js.map +1 -1
  59. package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.js +162 -151
  60. package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.js.map +1 -1
  61. package/dist/assethandler/pages/MarketplaceMarketplaceListPage.js +64 -57
  62. package/dist/assethandler/pages/MarketplaceMarketplaceListPage.js.map +1 -1
  63. package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.js +125 -108
  64. package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.js.map +1 -1
  65. package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.js +67 -61
  66. package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.js.map +1 -1
  67. package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js +203 -166
  68. package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js.map +1 -1
  69. package/dist/assethandler/pages/OperationsOperationsHubPage.js +125 -95
  70. package/dist/assethandler/pages/OperationsOperationsHubPage.js.map +1 -1
  71. package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js +165 -151
  72. package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js.map +1 -1
  73. package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js +83 -81
  74. package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js.map +1 -1
  75. package/dist/assethandler/pages/ProvenancePage.js +56 -53
  76. package/dist/assethandler/pages/ProvenancePage.js.map +1 -1
  77. package/dist/assethandler/pages/ReportsReportBuilderPage.js +80 -73
  78. package/dist/assethandler/pages/ReportsReportBuilderPage.js.map +1 -1
  79. package/dist/assethandler/pages/ReportsReportsDashboardPage.js +112 -77
  80. package/dist/assethandler/pages/ReportsReportsDashboardPage.js.map +1 -1
  81. package/dist/assethandler/pages/ReportsReportsListPage.js +119 -103
  82. package/dist/assethandler/pages/ReportsReportsListPage.js.map +1 -1
  83. package/dist/assethandler/pages/SamLicensesPage.js +32 -33
  84. package/dist/assethandler/pages/SamLicensesPage.js.map +1 -1
  85. package/dist/assethandler/pages/SecurityComplianceDetailPage.js +60 -52
  86. package/dist/assethandler/pages/SecurityComplianceDetailPage.js.map +1 -1
  87. package/dist/assethandler/pages/SecurityPolicyDetailPage.js +134 -117
  88. package/dist/assethandler/pages/SecurityPolicyDetailPage.js.map +1 -1
  89. package/dist/assethandler/pages/SecurityScheduleBackupPage.js +63 -57
  90. package/dist/assethandler/pages/SecurityScheduleBackupPage.js.map +1 -1
  91. package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js +131 -117
  92. package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js.map +1 -1
  93. package/dist/assethandler/pages/SecuritySecurityHubPage.js +147 -113
  94. package/dist/assethandler/pages/SecuritySecurityHubPage.js.map +1 -1
  95. package/dist/assethandler/pages/TransactionsTransactionDetailPage.js +235 -218
  96. package/dist/assethandler/pages/TransactionsTransactionDetailPage.js.map +1 -1
  97. package/dist/assethandler/pages/TransactionsTransactionListPage.js +118 -116
  98. package/dist/assethandler/pages/TransactionsTransactionListPage.js.map +1 -1
  99. package/dist/assethandler/pages/UsersPage.js +108 -99
  100. package/dist/assethandler/pages/UsersPage.js.map +1 -1
  101. package/dist/assethandler/pages/UsersUserCreatePage.js +74 -67
  102. package/dist/assethandler/pages/UsersUserCreatePage.js.map +1 -1
  103. package/dist/assethandler/pages/UsersUserManagementHubPage.js +128 -93
  104. package/dist/assethandler/pages/UsersUserManagementHubPage.js.map +1 -1
  105. package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.js +211 -193
  106. package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.js.map +1 -1
  107. package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.js +88 -86
  108. package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.js.map +1 -1
  109. package/dist/assethandler/pages/WorkflowsWorkflowListPage.js +68 -60
  110. package/dist/assethandler/pages/WorkflowsWorkflowListPage.js.map +1 -1
  111. package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.js +71 -68
  112. package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.js.map +1 -1
  113. package/package.json +2 -2
@@ -1,177 +1,214 @@
1
1
  import { useAssetHandlerStore as e } from "../store/assethandlerStore.js";
2
2
  import { ArrowLeft as t, CheckCircle as n, Link2 as r } from "lucide-react";
3
- import { useParams as i } from "react-router-dom";
4
- import { Badge as a, Button as o, Card as s, CardContent as c, CardHeader as l, CardTitle as u, GradientText as d, Separator as f } from "@burdenoff/fe-libs/ui";
5
- import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
3
+ import { useNavigate as i, useParams as a } from "react-router-dom";
4
+ import { Badge as o, Button as s, Card as c, CardContent as l, CardHeader as u, CardTitle as d, EmphasisPanel as f, GradientText as p, IllustratedEmptyState as m, NextSteps as h, PagePurpose as g, Separator as _ } from "@burdenoff/fe-libs/ui";
5
+ import { Fragment as v, jsx as y, jsxs as b } from "react/jsx-runtime";
6
6
  //#region src/assethandler/pages/ItilProblemDetailPage.tsx
7
- var g = {
7
+ var x = {
8
8
  critical: "destructive",
9
9
  high: "destructive",
10
10
  medium: "default",
11
11
  low: "secondary"
12
12
  };
13
- function _() {
14
- let { problemId: _ } = i(), { problems: v } = e(), y = v.find((e) => e.id === _) ?? v[0];
15
- return y ? /* @__PURE__ */ h("div", {
13
+ function S() {
14
+ let S = i(), { problemId: C } = a(), { problems: w } = e(), T = w.find((e) => e.id === C) ?? w[0];
15
+ return T ? /* @__PURE__ */ b("div", {
16
16
  className: "space-y-6 p-6",
17
- children: [/* @__PURE__ */ h("div", {
18
- className: "flex items-center justify-between",
19
- children: [/* @__PURE__ */ h("div", {
20
- className: "flex items-center gap-4",
21
- children: [/* @__PURE__ */ m(o, {
22
- variant: "ghost",
23
- size: "icon",
24
- children: /* @__PURE__ */ m(t, { className: "h-4 w-4" })
25
- }), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ h("div", {
26
- className: "flex items-center gap-3",
17
+ children: [
18
+ /* @__PURE__ */ b("div", {
19
+ className: "flex items-center justify-between",
20
+ children: [/* @__PURE__ */ b("div", {
21
+ className: "flex items-center gap-4",
22
+ children: [/* @__PURE__ */ y(s, {
23
+ variant: "ghost",
24
+ size: "icon",
25
+ onClick: () => S("/itil/problem-management"),
26
+ children: /* @__PURE__ */ y(t, { className: "h-4 w-4" })
27
+ }), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ b("div", {
28
+ className: "flex items-center gap-3",
29
+ children: [
30
+ /* @__PURE__ */ y("h1", {
31
+ className: "text-2xl font-bold",
32
+ children: /* @__PURE__ */ y(p, { children: T.id })
33
+ }),
34
+ /* @__PURE__ */ y(o, {
35
+ variant: x[T.priority],
36
+ children: T.priority
37
+ }),
38
+ /* @__PURE__ */ y(o, {
39
+ variant: "outline",
40
+ children: T.status.replace("_", " ")
41
+ })
42
+ ]
43
+ }), /* @__PURE__ */ y("p", {
44
+ className: "text-sm text-text-secondary mt-1",
45
+ children: T.title
46
+ })] })]
47
+ }), /* @__PURE__ */ b(s, {
48
+ size: "sm",
49
+ children: [/* @__PURE__ */ y(n, { className: "mr-2 h-4 w-4" }), "Resolve"]
50
+ })]
51
+ }),
52
+ /* @__PURE__ */ y(g, { children: "Investigate the underlying cause behind a cluster of incidents. Capture the root cause and any workaround, link the incidents this problem explains, and drive it to a permanent fix — so the same issue stops coming back." }),
53
+ /* @__PURE__ */ y(h, {
54
+ storageKey: "assethandler-problem-detail",
55
+ steps: [
56
+ {
57
+ id: "resolve",
58
+ label: "Record a root cause and resolve",
59
+ description: "Document the permanent fix once identified.",
60
+ done: T.status === "resolved" || T.status === "closed"
61
+ },
62
+ {
63
+ id: "incidents",
64
+ label: "Review related incidents",
65
+ description: "See the incidents this problem is responsible for.",
66
+ onClick: () => S("/itil/incident-management")
67
+ },
68
+ {
69
+ id: "kb",
70
+ label: "Write a knowledge article",
71
+ description: "Capture the workaround so others can reuse it.",
72
+ onClick: () => S("/advanced/knowledge-base")
73
+ }
74
+ ]
75
+ }),
76
+ /* @__PURE__ */ b("div", {
77
+ className: "grid gap-6 lg:grid-cols-3",
78
+ children: [/* @__PURE__ */ b(f, {
79
+ className: "lg:col-span-2",
80
+ children: [/* @__PURE__ */ y(u, {
81
+ className: "px-0 pt-0",
82
+ children: /* @__PURE__ */ y(d, { children: "Problem Details" })
83
+ }), /* @__PURE__ */ b(l, {
84
+ className: "space-y-4 px-0 pb-0",
85
+ children: [
86
+ /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("h4", {
87
+ className: "text-sm font-medium text-text-secondary",
88
+ children: "Description"
89
+ }), /* @__PURE__ */ y("p", {
90
+ className: "text-sm mt-1",
91
+ children: T.description
92
+ })] }),
93
+ T.rootCause && /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y(_, {}), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("h4", {
94
+ className: "text-sm font-medium text-text-secondary",
95
+ children: "Root Cause"
96
+ }), /* @__PURE__ */ y("p", {
97
+ className: "text-sm mt-1",
98
+ children: T.rootCause
99
+ })] })] }),
100
+ T.workaround && /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y(_, {}), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("h4", {
101
+ className: "text-sm font-medium text-text-secondary",
102
+ children: "Workaround"
103
+ }), /* @__PURE__ */ y("p", {
104
+ className: "text-sm mt-1",
105
+ children: T.workaround
106
+ })] })] }),
107
+ /* @__PURE__ */ y(_, {}),
108
+ /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ b("h4", {
109
+ className: "text-sm font-medium text-text-secondary mb-2 flex items-center gap-2",
110
+ children: [
111
+ /* @__PURE__ */ y(r, { className: "h-4 w-4" }),
112
+ "Related Incidents (",
113
+ T.relatedIncidents.length,
114
+ ")"
115
+ ]
116
+ }), /* @__PURE__ */ y("div", {
117
+ className: "flex flex-wrap gap-2",
118
+ children: T.relatedIncidents.map((e) => /* @__PURE__ */ y(o, {
119
+ variant: "secondary",
120
+ className: "font-mono",
121
+ children: e
122
+ }, e))
123
+ })] })
124
+ ]
125
+ })]
126
+ }), /* @__PURE__ */ b(c, { children: [/* @__PURE__ */ y(u, { children: /* @__PURE__ */ y(d, {
127
+ className: "text-base",
128
+ children: "Properties"
129
+ }) }), /* @__PURE__ */ y(l, { children: /* @__PURE__ */ b("dl", {
130
+ className: "space-y-3 text-sm",
27
131
  children: [
28
- /* @__PURE__ */ m("h1", {
29
- className: "text-2xl font-bold",
30
- children: /* @__PURE__ */ m(d, { children: y.id })
132
+ /* @__PURE__ */ b("div", {
133
+ className: "flex justify-between",
134
+ children: [/* @__PURE__ */ y("dt", {
135
+ className: "text-text-secondary",
136
+ children: "Category"
137
+ }), /* @__PURE__ */ y("dd", {
138
+ className: "font-medium",
139
+ children: T.category
140
+ })]
141
+ }),
142
+ /* @__PURE__ */ b("div", {
143
+ className: "flex justify-between",
144
+ children: [/* @__PURE__ */ y("dt", {
145
+ className: "text-text-secondary",
146
+ children: "Priority"
147
+ }), /* @__PURE__ */ y("dd", { children: /* @__PURE__ */ y(o, {
148
+ variant: x[T.priority],
149
+ children: T.priority
150
+ }) })]
31
151
  }),
32
- /* @__PURE__ */ m(a, {
33
- variant: g[y.priority],
34
- children: y.priority
152
+ /* @__PURE__ */ b("div", {
153
+ className: "flex justify-between",
154
+ children: [/* @__PURE__ */ y("dt", {
155
+ className: "text-text-secondary",
156
+ children: "Status"
157
+ }), /* @__PURE__ */ y("dd", { children: /* @__PURE__ */ y(o, {
158
+ variant: "outline",
159
+ children: T.status.replace("_", " ")
160
+ }) })]
35
161
  }),
36
- /* @__PURE__ */ m(a, {
37
- variant: "outline",
38
- children: y.status.replace("_", " ")
162
+ /* @__PURE__ */ y(_, {}),
163
+ /* @__PURE__ */ b("div", {
164
+ className: "flex justify-between",
165
+ children: [/* @__PURE__ */ y("dt", {
166
+ className: "text-text-secondary",
167
+ children: "Assigned To"
168
+ }), /* @__PURE__ */ y("dd", {
169
+ className: "text-xs",
170
+ children: T.assignedTo
171
+ })]
172
+ }),
173
+ /* @__PURE__ */ b("div", {
174
+ className: "flex justify-between",
175
+ children: [/* @__PURE__ */ y("dt", {
176
+ className: "text-text-secondary",
177
+ children: "Created"
178
+ }), /* @__PURE__ */ y("dd", {
179
+ className: "text-xs",
180
+ children: new Date(T.createdAt).toLocaleDateString()
181
+ })]
182
+ }),
183
+ /* @__PURE__ */ b("div", {
184
+ className: "flex justify-between",
185
+ children: [/* @__PURE__ */ y("dt", {
186
+ className: "text-text-secondary",
187
+ children: "Updated"
188
+ }), /* @__PURE__ */ y("dd", {
189
+ className: "text-xs",
190
+ children: new Date(T.updatedAt).toLocaleDateString()
191
+ })]
39
192
  })
40
193
  ]
41
- }), /* @__PURE__ */ m("p", {
42
- className: "text-sm text-text-secondary mt-1",
43
- children: y.title
44
- })] })]
45
- }), /* @__PURE__ */ h(o, {
46
- size: "sm",
47
- children: [/* @__PURE__ */ m(n, { className: "mr-2 h-4 w-4" }), "Resolve"]
48
- })]
49
- }), /* @__PURE__ */ h("div", {
50
- className: "grid gap-6 lg:grid-cols-3",
51
- children: [/* @__PURE__ */ h(s, {
52
- className: "lg:col-span-2",
53
- children: [/* @__PURE__ */ m(l, { children: /* @__PURE__ */ m(u, { children: "Problem Details" }) }), /* @__PURE__ */ h(c, {
54
- className: "space-y-4",
55
- children: [
56
- /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("h4", {
57
- className: "text-sm font-medium text-text-secondary",
58
- children: "Description"
59
- }), /* @__PURE__ */ m("p", {
60
- className: "text-sm mt-1",
61
- children: y.description
62
- })] }),
63
- y.rootCause && /* @__PURE__ */ h(p, { children: [/* @__PURE__ */ m(f, {}), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("h4", {
64
- className: "text-sm font-medium text-text-secondary",
65
- children: "Root Cause"
66
- }), /* @__PURE__ */ m("p", {
67
- className: "text-sm mt-1",
68
- children: y.rootCause
69
- })] })] }),
70
- y.workaround && /* @__PURE__ */ h(p, { children: [/* @__PURE__ */ m(f, {}), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("h4", {
71
- className: "text-sm font-medium text-text-secondary",
72
- children: "Workaround"
73
- }), /* @__PURE__ */ m("p", {
74
- className: "text-sm mt-1",
75
- children: y.workaround
76
- })] })] }),
77
- /* @__PURE__ */ m(f, {}),
78
- /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ h("h4", {
79
- className: "text-sm font-medium text-text-secondary mb-2 flex items-center gap-2",
80
- children: [
81
- /* @__PURE__ */ m(r, { className: "h-4 w-4" }),
82
- "Related Incidents (",
83
- y.relatedIncidents.length,
84
- ")"
85
- ]
86
- }), /* @__PURE__ */ m("div", {
87
- className: "flex flex-wrap gap-2",
88
- children: y.relatedIncidents.map((e) => /* @__PURE__ */ m(a, {
89
- variant: "secondary",
90
- className: "font-mono",
91
- children: e
92
- }, e))
93
- })] })
94
- ]
95
- })]
96
- }), /* @__PURE__ */ h(s, { children: [/* @__PURE__ */ m(l, { children: /* @__PURE__ */ m(u, {
97
- className: "text-base",
98
- children: "Properties"
99
- }) }), /* @__PURE__ */ m(c, { children: /* @__PURE__ */ h("dl", {
100
- className: "space-y-3 text-sm",
101
- children: [
102
- /* @__PURE__ */ h("div", {
103
- className: "flex justify-between",
104
- children: [/* @__PURE__ */ m("dt", {
105
- className: "text-text-secondary",
106
- children: "Category"
107
- }), /* @__PURE__ */ m("dd", {
108
- className: "font-medium",
109
- children: y.category
110
- })]
111
- }),
112
- /* @__PURE__ */ h("div", {
113
- className: "flex justify-between",
114
- children: [/* @__PURE__ */ m("dt", {
115
- className: "text-text-secondary",
116
- children: "Priority"
117
- }), /* @__PURE__ */ m("dd", { children: /* @__PURE__ */ m(a, {
118
- variant: g[y.priority],
119
- children: y.priority
120
- }) })]
121
- }),
122
- /* @__PURE__ */ h("div", {
123
- className: "flex justify-between",
124
- children: [/* @__PURE__ */ m("dt", {
125
- className: "text-text-secondary",
126
- children: "Status"
127
- }), /* @__PURE__ */ m("dd", { children: /* @__PURE__ */ m(a, {
128
- variant: "outline",
129
- children: y.status.replace("_", " ")
130
- }) })]
131
- }),
132
- /* @__PURE__ */ m(f, {}),
133
- /* @__PURE__ */ h("div", {
134
- className: "flex justify-between",
135
- children: [/* @__PURE__ */ m("dt", {
136
- className: "text-text-secondary",
137
- children: "Assigned To"
138
- }), /* @__PURE__ */ m("dd", {
139
- className: "text-xs",
140
- children: y.assignedTo
141
- })]
142
- }),
143
- /* @__PURE__ */ h("div", {
144
- className: "flex justify-between",
145
- children: [/* @__PURE__ */ m("dt", {
146
- className: "text-text-secondary",
147
- children: "Created"
148
- }), /* @__PURE__ */ m("dd", {
149
- className: "text-xs",
150
- children: new Date(y.createdAt).toLocaleDateString()
151
- })]
152
- }),
153
- /* @__PURE__ */ h("div", {
154
- className: "flex justify-between",
155
- children: [/* @__PURE__ */ m("dt", {
156
- className: "text-text-secondary",
157
- children: "Updated"
158
- }), /* @__PURE__ */ m("dd", {
159
- className: "text-xs",
160
- children: new Date(y.updatedAt).toLocaleDateString()
161
- })]
162
- })
163
- ]
164
- }) })] })]
165
- })]
166
- }) : /* @__PURE__ */ m("div", {
194
+ }) })] })]
195
+ })
196
+ ]
197
+ }) : /* @__PURE__ */ y("div", {
167
198
  className: "p-6",
168
- children: /* @__PURE__ */ m("p", {
169
- className: "text-text-secondary",
170
- children: "Problem not found."
199
+ children: /* @__PURE__ */ y(m, {
200
+ illustration: "empty-search",
201
+ title: "Problem not found",
202
+ description: "This problem record may have been resolved or removed. Return to problem management to find it.",
203
+ action: /* @__PURE__ */ y(s, {
204
+ size: "sm",
205
+ onClick: () => S("/itil/problem-management"),
206
+ children: "Back to problems"
207
+ })
171
208
  })
172
209
  });
173
210
  }
174
211
  //#endregion
175
- export { _ as ItilProblemDetailPage };
212
+ export { S as ItilProblemDetailPage };
176
213
 
177
214
  //# sourceMappingURL=ItilProblemDetailPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ItilProblemDetailPage.js","names":[],"sources":["../../../src/assethandler/pages/ItilProblemDetailPage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Separator,\n GradientText,\n} from '@burdenoff/fe-libs/ui';\nimport { ArrowLeft, CheckCircle, Link2, Search } from 'lucide-react';\nimport { useParams } 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 ItilProblemDetailPage() {\n const { problemId } = useParams<{ problemId: string }>();\n const { problems } = useAssetHandlerStore();\n const problem = problems.find((item) => item.id === problemId) ?? problems[0];\n\n if (!problem)\n return (\n <div className=\"p-6\">\n <p className=\"text-text-secondary\">Problem not found.</p>\n </div>\n );\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-4\">\n <Button variant=\"ghost\" size=\"icon\">\n <ArrowLeft className=\"h-4 w-4\" />\n </Button>\n <div>\n <div className=\"flex items-center gap-3\">\n <h1 className=\"text-2xl font-bold\">\n <GradientText>{problem.id}</GradientText>\n </h1>\n <Badge variant={priorityColors[problem.priority]}>{problem.priority}</Badge>\n <Badge variant=\"outline\">{problem.status.replace('_', ' ')}</Badge>\n </div>\n <p className=\"text-sm text-text-secondary mt-1\">{problem.title}</p>\n </div>\n </div>\n <Button size=\"sm\">\n <CheckCircle className=\"mr-2 h-4 w-4\" />\n Resolve\n </Button>\n </div>\n\n <div className=\"grid gap-6 lg:grid-cols-3\">\n <Card className=\"lg:col-span-2\">\n <CardHeader>\n <CardTitle>Problem Details</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <h4 className=\"text-sm font-medium text-text-secondary\">Description</h4>\n <p className=\"text-sm mt-1\">{problem.description}</p>\n </div>\n {problem.rootCause && (\n <>\n <Separator />\n <div>\n <h4 className=\"text-sm font-medium text-text-secondary\">Root Cause</h4>\n <p className=\"text-sm mt-1\">{problem.rootCause}</p>\n </div>\n </>\n )}\n {problem.workaround && (\n <>\n <Separator />\n <div>\n <h4 className=\"text-sm font-medium text-text-secondary\">Workaround</h4>\n <p className=\"text-sm mt-1\">{problem.workaround}</p>\n </div>\n </>\n )}\n <Separator />\n <div>\n <h4 className=\"text-sm font-medium text-text-secondary mb-2 flex items-center gap-2\">\n <Link2 className=\"h-4 w-4\" />\n Related Incidents ({problem.relatedIncidents.length})\n </h4>\n <div className=\"flex flex-wrap gap-2\">\n {problem.relatedIncidents.map((id) => (\n <Badge key={id} variant=\"secondary\" className=\"font-mono\">\n {id}\n </Badge>\n ))}\n </div>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Properties</CardTitle>\n </CardHeader>\n <CardContent>\n <dl className=\"space-y-3 text-sm\">\n <div className=\"flex justify-between\">\n <dt className=\"text-text-secondary\">Category</dt>\n <dd className=\"font-medium\">{problem.category}</dd>\n </div>\n <div className=\"flex justify-between\">\n <dt className=\"text-text-secondary\">Priority</dt>\n <dd>\n <Badge variant={priorityColors[problem.priority]}>{problem.priority}</Badge>\n </dd>\n </div>\n <div className=\"flex justify-between\">\n <dt className=\"text-text-secondary\">Status</dt>\n <dd>\n <Badge variant=\"outline\">{problem.status.replace('_', ' ')}</Badge>\n </dd>\n </div>\n <Separator />\n <div className=\"flex justify-between\">\n <dt className=\"text-text-secondary\">Assigned To</dt>\n <dd className=\"text-xs\">{problem.assignedTo}</dd>\n </div>\n <div className=\"flex justify-between\">\n <dt className=\"text-text-secondary\">Created</dt>\n <dd className=\"text-xs\">{new Date(problem.createdAt).toLocaleDateString()}</dd>\n </div>\n <div className=\"flex justify-between\">\n <dt className=\"text-text-secondary\">Updated</dt>\n <dd className=\"text-xs\">{new Date(problem.updatedAt).toLocaleDateString()}</dd>\n </div>\n </dl>\n </CardContent>\n </Card>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ItilProblemDetailPage.js","names":[],"sources":["../../../src/assethandler/pages/ItilProblemDetailPage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Separator,\n GradientText,\n EmphasisPanel,\n PagePurpose,\n NextSteps,\n IllustratedEmptyState,\n} from '@burdenoff/fe-libs/ui';\nimport { ArrowLeft, CheckCircle, Link2 } from 'lucide-react';\nimport { useNavigate, useParams } 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 ItilProblemDetailPage() {\n const navigate = useNavigate();\n const { problemId } = useParams<{ problemId: string }>();\n const { problems } = useAssetHandlerStore();\n const problem = problems.find((item) => item.id === problemId) ?? problems[0];\n\n if (!problem)\n return (\n <div className=\"p-6\">\n <IllustratedEmptyState\n illustration=\"empty-search\"\n title=\"Problem not found\"\n description=\"This problem record may have been resolved or removed. Return to problem management to find it.\"\n action={\n <Button size=\"sm\" onClick={() => navigate('/itil/problem-management')}>\n Back to problems\n </Button>\n }\n />\n </div>\n );\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-4\">\n <Button variant=\"ghost\" size=\"icon\" onClick={() => navigate('/itil/problem-management')}>\n <ArrowLeft className=\"h-4 w-4\" />\n </Button>\n <div>\n <div className=\"flex items-center gap-3\">\n <h1 className=\"text-2xl font-bold\">\n <GradientText>{problem.id}</GradientText>\n </h1>\n <Badge variant={priorityColors[problem.priority]}>{problem.priority}</Badge>\n <Badge variant=\"outline\">{problem.status.replace('_', ' ')}</Badge>\n </div>\n <p className=\"text-sm text-text-secondary mt-1\">{problem.title}</p>\n </div>\n </div>\n <Button size=\"sm\">\n <CheckCircle className=\"mr-2 h-4 w-4\" />\n Resolve\n </Button>\n </div>\n\n <PagePurpose>\n Investigate the underlying cause behind a cluster of incidents. Capture the root cause and\n any workaround, link the incidents this problem explains, and drive it to a permanent fix —\n so the same issue stops coming back.\n </PagePurpose>\n\n <NextSteps\n storageKey=\"assethandler-problem-detail\"\n steps={[\n {\n id: 'resolve',\n label: 'Record a root cause and resolve',\n description: 'Document the permanent fix once identified.',\n done: problem.status === 'resolved' || problem.status === 'closed',\n },\n {\n id: 'incidents',\n label: 'Review related incidents',\n description: 'See the incidents this problem is responsible for.',\n onClick: () => navigate('/itil/incident-management'),\n },\n {\n id: 'kb',\n label: 'Write a knowledge article',\n description: 'Capture the workaround so others can reuse it.',\n onClick: () => navigate('/advanced/knowledge-base'),\n },\n ]}\n />\n\n <div className=\"grid gap-6 lg:grid-cols-3\">\n <EmphasisPanel className=\"lg:col-span-2\">\n <CardHeader className=\"px-0 pt-0\">\n <CardTitle>Problem Details</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4 px-0 pb-0\">\n <div>\n <h4 className=\"text-sm font-medium text-text-secondary\">Description</h4>\n <p className=\"text-sm mt-1\">{problem.description}</p>\n </div>\n {problem.rootCause && (\n <>\n <Separator />\n <div>\n <h4 className=\"text-sm font-medium text-text-secondary\">Root Cause</h4>\n <p className=\"text-sm mt-1\">{problem.rootCause}</p>\n </div>\n </>\n )}\n {problem.workaround && (\n <>\n <Separator />\n <div>\n <h4 className=\"text-sm font-medium text-text-secondary\">Workaround</h4>\n <p className=\"text-sm mt-1\">{problem.workaround}</p>\n </div>\n </>\n )}\n <Separator />\n <div>\n <h4 className=\"text-sm font-medium text-text-secondary mb-2 flex items-center gap-2\">\n <Link2 className=\"h-4 w-4\" />\n Related Incidents ({problem.relatedIncidents.length})\n </h4>\n <div className=\"flex flex-wrap gap-2\">\n {problem.relatedIncidents.map((id) => (\n <Badge key={id} variant=\"secondary\" className=\"font-mono\">\n {id}\n </Badge>\n ))}\n </div>\n </div>\n </CardContent>\n </EmphasisPanel>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Properties</CardTitle>\n </CardHeader>\n <CardContent>\n <dl className=\"space-y-3 text-sm\">\n <div className=\"flex justify-between\">\n <dt className=\"text-text-secondary\">Category</dt>\n <dd className=\"font-medium\">{problem.category}</dd>\n </div>\n <div className=\"flex justify-between\">\n <dt className=\"text-text-secondary\">Priority</dt>\n <dd>\n <Badge variant={priorityColors[problem.priority]}>{problem.priority}</Badge>\n </dd>\n </div>\n <div className=\"flex justify-between\">\n <dt className=\"text-text-secondary\">Status</dt>\n <dd>\n <Badge variant=\"outline\">{problem.status.replace('_', ' ')}</Badge>\n </dd>\n </div>\n <Separator />\n <div className=\"flex justify-between\">\n <dt className=\"text-text-secondary\">Assigned To</dt>\n <dd className=\"text-xs\">{problem.assignedTo}</dd>\n </div>\n <div className=\"flex justify-between\">\n <dt className=\"text-text-secondary\">Created</dt>\n <dd className=\"text-xs\">{new Date(problem.createdAt).toLocaleDateString()}</dd>\n </div>\n <div className=\"flex justify-between\">\n <dt className=\"text-text-secondary\">Updated</dt>\n <dd className=\"text-xs\">{new Date(problem.updatedAt).toLocaleDateString()}</dd>\n </div>\n </dl>\n </CardContent>\n </Card>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,155 +1,157 @@
1
1
  import { useAssetHandlerStore as e } from "../store/assethandlerStore.js";
2
2
  import { Plus as t } from "lucide-react";
3
- import { Badge as n, Button as r, Card as i, CardContent as a, GradientText as o } from "@burdenoff/fe-libs/ui";
4
- import { jsx as s, jsxs as c } from "react/jsx-runtime";
3
+ import { Badge as n, Button as r, Card as i, CardContent as a, EmphasisPanel as o, GradientText as s, IllustratedEmptyState as c, PagePurpose as l } from "@burdenoff/fe-libs/ui";
4
+ import { jsx as u, jsxs as d } from "react/jsx-runtime";
5
5
  //#region src/assethandler/pages/ItilProblemManagementPage.tsx
6
- var l = {
6
+ var f = {
7
7
  critical: "destructive",
8
8
  high: "destructive",
9
9
  medium: "default",
10
10
  low: "secondary"
11
11
  };
12
- function u() {
13
- let { problems: u } = e();
14
- return /* @__PURE__ */ c("div", {
12
+ function p() {
13
+ let { problems: p } = e();
14
+ return /* @__PURE__ */ d("div", {
15
15
  className: "space-y-6 p-6",
16
16
  children: [
17
- /* @__PURE__ */ c("div", {
17
+ /* @__PURE__ */ d("div", {
18
18
  className: "flex items-center justify-between",
19
- children: [/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("h1", {
19
+ children: [/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("h1", {
20
20
  className: "text-2xl font-bold",
21
- children: /* @__PURE__ */ s(o, { children: "Problem Management" })
22
- }), /* @__PURE__ */ c("p", {
21
+ children: /* @__PURE__ */ u(s, { children: "Problem Management" })
22
+ }), /* @__PURE__ */ d("p", {
23
23
  className: "text-sm text-text-secondary",
24
- children: [u.length, " problems tracked"]
25
- })] }), /* @__PURE__ */ c(r, {
24
+ children: [p.length, " problems tracked"]
25
+ })] }), /* @__PURE__ */ d(r, {
26
26
  size: "sm",
27
- children: [/* @__PURE__ */ s(t, { className: "mr-2 h-4 w-4" }), "New Problem"]
27
+ children: [/* @__PURE__ */ u(t, { className: "mr-2 h-4 w-4" }), "New Problem"]
28
28
  })]
29
29
  }),
30
- /* @__PURE__ */ c("div", {
30
+ /* @__PURE__ */ u(l, { children: "Get to the root cause of recurring incidents instead of firefighting the same issue twice. Track problems through investigation to a known error and a permanent fix, link the incidents they explain, and stop repeat outages at the source." }),
31
+ /* @__PURE__ */ d("div", {
31
32
  className: "grid gap-4 md:grid-cols-4",
32
33
  children: [
33
- /* @__PURE__ */ s(i, { children: /* @__PURE__ */ c(a, {
34
+ /* @__PURE__ */ d(o, { children: [/* @__PURE__ */ u("p", {
35
+ className: "text-sm text-text-secondary",
36
+ children: "Open"
37
+ }), /* @__PURE__ */ u("p", {
38
+ className: "text-2xl font-bold tabular-nums",
39
+ children: p.filter((e) => e.status === "open").length
40
+ })] }),
41
+ /* @__PURE__ */ u(i, { children: /* @__PURE__ */ d(a, {
34
42
  className: "pt-4",
35
- children: [/* @__PURE__ */ s("p", {
36
- className: "text-sm text-text-secondary",
37
- children: "Open"
38
- }), /* @__PURE__ */ s("p", {
39
- className: "text-2xl font-bold tabular-nums",
40
- children: u.filter((e) => e.status === "open").length
41
- })]
42
- }) }),
43
- /* @__PURE__ */ s(i, { children: /* @__PURE__ */ c(a, {
44
- className: "pt-4",
45
- children: [/* @__PURE__ */ s("p", {
43
+ children: [/* @__PURE__ */ u("p", {
46
44
  className: "text-sm text-text-secondary",
47
45
  children: "Investigating"
48
- }), /* @__PURE__ */ s("p", {
46
+ }), /* @__PURE__ */ u("p", {
49
47
  className: "text-2xl font-bold text-status-info-text",
50
- children: u.filter((e) => e.status === "investigating").length
48
+ children: p.filter((e) => e.status === "investigating").length
51
49
  })]
52
50
  }) }),
53
- /* @__PURE__ */ s(i, { children: /* @__PURE__ */ c(a, {
51
+ /* @__PURE__ */ u(i, { children: /* @__PURE__ */ d(a, {
54
52
  className: "pt-4",
55
- children: [/* @__PURE__ */ s("p", {
53
+ children: [/* @__PURE__ */ u("p", {
56
54
  className: "text-sm text-text-secondary",
57
55
  children: "Known Error"
58
- }), /* @__PURE__ */ s("p", {
56
+ }), /* @__PURE__ */ u("p", {
59
57
  className: "text-2xl font-bold text-status-warning-text",
60
- children: u.filter((e) => e.status === "known_error").length
58
+ children: p.filter((e) => e.status === "known_error").length
61
59
  })]
62
60
  }) }),
63
- /* @__PURE__ */ s(i, { children: /* @__PURE__ */ c(a, {
61
+ /* @__PURE__ */ u(i, { children: /* @__PURE__ */ d(a, {
64
62
  className: "pt-4",
65
- children: [/* @__PURE__ */ s("p", {
63
+ children: [/* @__PURE__ */ u("p", {
66
64
  className: "text-sm text-text-secondary",
67
65
  children: "Resolved"
68
- }), /* @__PURE__ */ s("p", {
66
+ }), /* @__PURE__ */ u("p", {
69
67
  className: "text-2xl font-bold text-status-success-text",
70
- children: u.filter((e) => e.status === "resolved" || e.status === "closed").length
68
+ children: p.filter((e) => e.status === "resolved" || e.status === "closed").length
71
69
  })]
72
70
  }) })
73
71
  ]
74
72
  }),
75
- /* @__PURE__ */ s(i, { children: /* @__PURE__ */ s(a, {
73
+ p.length === 0 ? /* @__PURE__ */ u(c, {
74
+ illustration: "empty-search",
75
+ title: "No problems tracked",
76
+ description: "Open a problem record to investigate the root cause behind recurring incidents."
77
+ }) : /* @__PURE__ */ u(i, { children: /* @__PURE__ */ u(a, {
76
78
  className: "p-0",
77
- children: /* @__PURE__ */ s("div", {
79
+ children: /* @__PURE__ */ u("div", {
78
80
  className: "overflow-x-auto",
79
- children: /* @__PURE__ */ c("table", {
81
+ children: /* @__PURE__ */ d("table", {
80
82
  className: "w-full text-sm",
81
- children: [/* @__PURE__ */ s("thead", { children: /* @__PURE__ */ c("tr", {
83
+ children: [/* @__PURE__ */ u("thead", { children: /* @__PURE__ */ d("tr", {
82
84
  className: "border-b bg-bg-sunken/50",
83
85
  children: [
84
- /* @__PURE__ */ s("th", {
86
+ /* @__PURE__ */ u("th", {
85
87
  className: "text-left p-3 font-medium",
86
88
  children: "ID"
87
89
  }),
88
- /* @__PURE__ */ s("th", {
90
+ /* @__PURE__ */ u("th", {
89
91
  className: "text-left p-3 font-medium",
90
92
  children: "Title"
91
93
  }),
92
- /* @__PURE__ */ s("th", {
94
+ /* @__PURE__ */ u("th", {
93
95
  className: "text-left p-3 font-medium",
94
96
  children: "Category"
95
97
  }),
96
- /* @__PURE__ */ s("th", {
98
+ /* @__PURE__ */ u("th", {
97
99
  className: "text-left p-3 font-medium",
98
100
  children: "Priority"
99
101
  }),
100
- /* @__PURE__ */ s("th", {
102
+ /* @__PURE__ */ u("th", {
101
103
  className: "text-left p-3 font-medium",
102
104
  children: "Status"
103
105
  }),
104
- /* @__PURE__ */ s("th", {
106
+ /* @__PURE__ */ u("th", {
105
107
  className: "text-left p-3 font-medium",
106
108
  children: "Related Incidents"
107
109
  }),
108
- /* @__PURE__ */ s("th", {
110
+ /* @__PURE__ */ u("th", {
109
111
  className: "text-left p-3 font-medium",
110
112
  children: "Assigned To"
111
113
  })
112
114
  ]
113
- }) }), /* @__PURE__ */ s("tbody", { children: u.map((e) => /* @__PURE__ */ c("tr", {
115
+ }) }), /* @__PURE__ */ u("tbody", { children: p.map((e) => /* @__PURE__ */ d("tr", {
114
116
  className: "border-b hover:bg-bg-sunken/50 cursor-pointer",
115
117
  children: [
116
- /* @__PURE__ */ s("td", {
118
+ /* @__PURE__ */ u("td", {
117
119
  className: "p-3 font-mono text-xs",
118
120
  children: e.id
119
121
  }),
120
- /* @__PURE__ */ c("td", {
122
+ /* @__PURE__ */ d("td", {
121
123
  className: "p-3",
122
- children: [/* @__PURE__ */ s("p", {
124
+ children: [/* @__PURE__ */ u("p", {
123
125
  className: "font-medium",
124
126
  children: e.title
125
- }), /* @__PURE__ */ s("p", {
127
+ }), /* @__PURE__ */ u("p", {
126
128
  className: "text-xs text-text-secondary truncate max-w-xs",
127
129
  children: e.description
128
130
  })]
129
131
  }),
130
- /* @__PURE__ */ s("td", {
132
+ /* @__PURE__ */ u("td", {
131
133
  className: "p-3 text-xs",
132
134
  children: e.category
133
135
  }),
134
- /* @__PURE__ */ s("td", {
136
+ /* @__PURE__ */ u("td", {
135
137
  className: "p-3",
136
- children: /* @__PURE__ */ s(n, {
137
- variant: l[e.priority],
138
+ children: /* @__PURE__ */ u(n, {
139
+ variant: f[e.priority],
138
140
  children: e.priority
139
141
  })
140
142
  }),
141
- /* @__PURE__ */ s("td", {
143
+ /* @__PURE__ */ u("td", {
142
144
  className: "p-3",
143
- children: /* @__PURE__ */ s(n, {
145
+ children: /* @__PURE__ */ u(n, {
144
146
  variant: "outline",
145
147
  children: e.status.replace("_", " ")
146
148
  })
147
149
  }),
148
- /* @__PURE__ */ s("td", {
150
+ /* @__PURE__ */ u("td", {
149
151
  className: "p-3 text-xs",
150
152
  children: e.relatedIncidents.join(", ")
151
153
  }),
152
- /* @__PURE__ */ s("td", {
154
+ /* @__PURE__ */ u("td", {
153
155
  className: "p-3 text-xs",
154
156
  children: e.assignedTo
155
157
  })
@@ -162,6 +164,6 @@ function u() {
162
164
  });
163
165
  }
164
166
  //#endregion
165
- export { u as ItilProblemManagementPage };
167
+ export { p as ItilProblemManagementPage };
166
168
 
167
169
  //# sourceMappingURL=ItilProblemManagementPage.js.map