@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,135 +1,149 @@
1
1
  import { useAssetHandlerStore as e } from "../store/assethandlerStore.js";
2
2
  import { ArrowLeft as t, CheckCircle as n } from "lucide-react";
3
- import { useParams as r } from "react-router-dom";
4
- import { Badge as i, Button as a, Card as o, CardContent as s, CardHeader as c, CardTitle as l, GradientText as u, Separator as d } from "@burdenoff/fe-libs/ui";
5
- import { jsx as f, jsxs as p } from "react/jsx-runtime";
3
+ import { useNavigate as r, 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, EmphasisPanel as d, GradientText as f, IllustratedEmptyState as p, PagePurpose as m, Separator as h } from "@burdenoff/fe-libs/ui";
5
+ import { jsx as g, jsxs as _ } from "react/jsx-runtime";
6
6
  //#region src/assethandler/pages/SecuritySecurityEventDetailPage.tsx
7
- var m = {
7
+ var v = {
8
8
  critical: "destructive",
9
9
  high: "destructive",
10
10
  medium: "default",
11
11
  low: "secondary",
12
12
  info: "outline"
13
13
  };
14
- function h() {
15
- let { eventId: h } = r(), { securityEvents: g } = e(), _ = g.find((e) => e.id === h) ?? g[0];
16
- return _ ? /* @__PURE__ */ p("div", {
14
+ function y() {
15
+ let y = r(), { eventId: b } = i(), { securityEvents: x } = e(), S = x.find((e) => e.id === b) ?? x[0];
16
+ return S ? /* @__PURE__ */ _("div", {
17
17
  className: "space-y-6 p-6",
18
- children: [/* @__PURE__ */ p("div", {
19
- className: "flex items-center justify-between",
20
- children: [/* @__PURE__ */ p("div", {
21
- className: "flex items-center gap-4",
22
- children: [/* @__PURE__ */ f(a, {
23
- variant: "ghost",
24
- size: "icon",
25
- children: /* @__PURE__ */ f(t, { className: "h-4 w-4" })
26
- }), /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ p("div", {
27
- className: "flex items-center gap-3",
28
- children: [
29
- /* @__PURE__ */ f("h1", {
30
- className: "text-2xl font-bold",
31
- children: /* @__PURE__ */ f(u, { children: _.id })
32
- }),
33
- /* @__PURE__ */ f(i, {
34
- variant: m[_.severity],
35
- children: _.severity
36
- }),
37
- _.resolved ? /* @__PURE__ */ f(i, {
38
- variant: "default",
39
- children: "Resolved"
40
- }) : /* @__PURE__ */ f(i, {
41
- variant: "destructive",
42
- children: "Open"
43
- })
44
- ]
45
- }), /* @__PURE__ */ f("p", {
46
- className: "text-sm text-text-secondary mt-1",
47
- children: _.title
48
- })] })]
49
- }), !_.resolved && /* @__PURE__ */ p(a, {
50
- size: "sm",
51
- children: [/* @__PURE__ */ f(n, { className: "mr-2 h-4 w-4" }), "Mark Resolved"]
52
- })]
53
- }), /* @__PURE__ */ p("div", {
54
- className: "grid gap-6 lg:grid-cols-3",
55
- children: [/* @__PURE__ */ p(o, {
56
- className: "lg:col-span-2",
57
- children: [/* @__PURE__ */ f(c, { children: /* @__PURE__ */ f(l, { children: "Event Details" }) }), /* @__PURE__ */ p(s, {
58
- className: "space-y-4",
59
- children: [
60
- /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("h4", {
61
- className: "text-sm font-medium text-text-secondary",
62
- children: "Description"
63
- }), /* @__PURE__ */ f("p", {
64
- className: "text-sm mt-1",
65
- children: _.description
66
- })] }),
67
- /* @__PURE__ */ f(d, {}),
68
- /* @__PURE__ */ p("div", {
69
- className: "grid grid-cols-2 gap-4 text-sm",
70
- children: [
71
- /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("span", {
72
- className: "text-text-secondary",
73
- children: "Type"
74
- }), /* @__PURE__ */ f("p", {
75
- className: "font-medium capitalize",
76
- children: _.type.replace("_", " ")
77
- })] }),
78
- /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("span", {
79
- className: "text-text-secondary",
80
- children: "Source"
81
- }), /* @__PURE__ */ f("p", {
82
- className: "font-medium",
83
- children: _.source
84
- })] }),
85
- /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("span", {
86
- className: "text-text-secondary",
87
- children: "Timestamp"
88
- }), /* @__PURE__ */ f("p", {
89
- className: "font-medium",
90
- children: new Date(_.timestamp).toLocaleString()
91
- })] }),
92
- _.userId && /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("span", {
93
- className: "text-text-secondary",
94
- children: "User"
95
- }), /* @__PURE__ */ f("p", {
96
- className: "font-medium",
97
- children: _.userId
98
- })] }),
99
- _.ipAddress && /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("span", {
100
- className: "text-text-secondary",
101
- children: "IP Address"
102
- }), /* @__PURE__ */ f("p", {
103
- className: "font-mono text-xs",
104
- children: _.ipAddress
105
- })] })
106
- ]
107
- })
108
- ]
109
- })]
110
- }), /* @__PURE__ */ p(o, { children: [/* @__PURE__ */ f(c, { children: /* @__PURE__ */ f(l, {
111
- className: "text-base",
112
- children: "Severity Assessment"
113
- }) }), /* @__PURE__ */ f(s, { children: /* @__PURE__ */ p("div", {
114
- className: `p-4 rounded-lg text-center ${_.severity === "critical" ? "bg-status-error-bg-subtle text-status-error-text" : _.severity === "high" || _.severity === "medium" ? "bg-status-warning-bg-subtle text-status-warning-text" : "bg-status-info-bg-subtle text-status-info-text"}`,
115
- children: [/* @__PURE__ */ f("p", {
116
- className: "text-2xl font-bold uppercase",
117
- children: _.severity
118
- }), /* @__PURE__ */ f("p", {
119
- className: "text-xs mt-1",
120
- children: "Severity Level"
18
+ children: [
19
+ /* @__PURE__ */ _("div", {
20
+ className: "flex items-center justify-between",
21
+ children: [/* @__PURE__ */ _("div", {
22
+ className: "flex items-center gap-4",
23
+ children: [/* @__PURE__ */ g(o, {
24
+ variant: "ghost",
25
+ size: "icon",
26
+ onClick: () => y("/security/security-hub"),
27
+ children: /* @__PURE__ */ g(t, { className: "h-4 w-4" })
28
+ }), /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ _("div", {
29
+ className: "flex items-center gap-3",
30
+ children: [
31
+ /* @__PURE__ */ g("h1", {
32
+ className: "text-2xl font-bold",
33
+ children: /* @__PURE__ */ g(f, { children: S.id })
34
+ }),
35
+ /* @__PURE__ */ g(a, {
36
+ variant: v[S.severity],
37
+ children: S.severity
38
+ }),
39
+ S.resolved ? /* @__PURE__ */ g(a, {
40
+ variant: "default",
41
+ children: "Resolved"
42
+ }) : /* @__PURE__ */ g(a, {
43
+ variant: "destructive",
44
+ children: "Open"
45
+ })
46
+ ]
47
+ }), /* @__PURE__ */ g("p", {
48
+ className: "text-sm text-text-secondary mt-1",
49
+ children: S.title
50
+ })] })]
51
+ }), !S.resolved && /* @__PURE__ */ _(o, {
52
+ size: "sm",
53
+ children: [/* @__PURE__ */ g(n, { className: "mr-2 h-4 w-4" }), "Mark Resolved"]
121
54
  })]
122
- }) })] })]
123
- })]
124
- }) : /* @__PURE__ */ f("div", {
55
+ }),
56
+ /* @__PURE__ */ g(m, { children: "The full forensic picture of a single security event — what happened, where it came from, who or what was involved, and how serious it is. Use this page to investigate, confirm the impact and mark it resolved once handled." }),
57
+ /* @__PURE__ */ _("div", {
58
+ className: "grid gap-6 lg:grid-cols-3",
59
+ children: [/* @__PURE__ */ _(d, {
60
+ className: "lg:col-span-2",
61
+ children: [/* @__PURE__ */ g(l, {
62
+ className: "px-0 pt-0",
63
+ children: /* @__PURE__ */ g(u, { children: "Event Details" })
64
+ }), /* @__PURE__ */ _(c, {
65
+ className: "space-y-4 px-0 pb-0",
66
+ children: [
67
+ /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("h4", {
68
+ className: "text-sm font-medium text-text-secondary",
69
+ children: "Description"
70
+ }), /* @__PURE__ */ g("p", {
71
+ className: "text-sm mt-1",
72
+ children: S.description
73
+ })] }),
74
+ /* @__PURE__ */ g(h, {}),
75
+ /* @__PURE__ */ _("div", {
76
+ className: "grid grid-cols-2 gap-4 text-sm",
77
+ children: [
78
+ /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("span", {
79
+ className: "text-text-secondary",
80
+ children: "Type"
81
+ }), /* @__PURE__ */ g("p", {
82
+ className: "font-medium capitalize",
83
+ children: S.type.replace("_", " ")
84
+ })] }),
85
+ /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("span", {
86
+ className: "text-text-secondary",
87
+ children: "Source"
88
+ }), /* @__PURE__ */ g("p", {
89
+ className: "font-medium",
90
+ children: S.source
91
+ })] }),
92
+ /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("span", {
93
+ className: "text-text-secondary",
94
+ children: "Timestamp"
95
+ }), /* @__PURE__ */ g("p", {
96
+ className: "font-medium",
97
+ children: new Date(S.timestamp).toLocaleString()
98
+ })] }),
99
+ S.userId && /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("span", {
100
+ className: "text-text-secondary",
101
+ children: "User"
102
+ }), /* @__PURE__ */ g("p", {
103
+ className: "font-medium",
104
+ children: S.userId
105
+ })] }),
106
+ S.ipAddress && /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("span", {
107
+ className: "text-text-secondary",
108
+ children: "IP Address"
109
+ }), /* @__PURE__ */ g("p", {
110
+ className: "font-mono text-xs",
111
+ children: S.ipAddress
112
+ })] })
113
+ ]
114
+ })
115
+ ]
116
+ })]
117
+ }), /* @__PURE__ */ _(s, { children: [/* @__PURE__ */ g(l, { children: /* @__PURE__ */ g(u, {
118
+ className: "text-base",
119
+ children: "Severity Assessment"
120
+ }) }), /* @__PURE__ */ g(c, { children: /* @__PURE__ */ _("div", {
121
+ className: `p-4 rounded-lg text-center ${S.severity === "critical" ? "bg-status-error-bg-subtle text-status-error-text" : S.severity === "high" || S.severity === "medium" ? "bg-status-warning-bg-subtle text-status-warning-text" : "bg-status-info-bg-subtle text-status-info-text"}`,
122
+ children: [/* @__PURE__ */ g("p", {
123
+ className: "text-2xl font-bold uppercase",
124
+ children: S.severity
125
+ }), /* @__PURE__ */ g("p", {
126
+ className: "text-xs mt-1",
127
+ children: "Severity Level"
128
+ })]
129
+ }) })] })]
130
+ })
131
+ ]
132
+ }) : /* @__PURE__ */ g("div", {
125
133
  className: "p-6",
126
- children: /* @__PURE__ */ f("p", {
127
- className: "text-text-secondary",
128
- children: "Security event not found."
134
+ children: /* @__PURE__ */ g(p, {
135
+ illustration: "empty-search",
136
+ title: "Security event not found",
137
+ description: "This event may have been resolved or removed. Return to the security hub to find it.",
138
+ action: /* @__PURE__ */ g(o, {
139
+ size: "sm",
140
+ onClick: () => y("/security/security-hub"),
141
+ children: "Back to security"
142
+ })
129
143
  })
130
144
  });
131
145
  }
132
146
  //#endregion
133
- export { h as SecuritySecurityEventDetailPage };
147
+ export { y as SecuritySecurityEventDetailPage };
134
148
 
135
149
  //# sourceMappingURL=SecuritySecurityEventDetailPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SecuritySecurityEventDetailPage.js","names":[],"sources":["../../../src/assethandler/pages/SecuritySecurityEventDetailPage.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, Shield } from 'lucide-react';\nimport { useParams } from 'react-router-dom';\nimport { useAssetHandlerStore } from '../store/assethandlerStore';\n\nconst severityColors: Record<string, 'destructive' | 'default' | 'secondary' | 'outline'> = {\n critical: 'destructive',\n high: 'destructive',\n medium: 'default',\n low: 'secondary',\n info: 'outline',\n};\n\nexport function SecuritySecurityEventDetailPage() {\n const { eventId } = useParams<{ eventId: string }>();\n const { securityEvents } = useAssetHandlerStore();\n const event = securityEvents.find((item) => item.id === eventId) ?? securityEvents[0];\n\n if (!event)\n return (\n <div className=\"p-6\">\n <p className=\"text-text-secondary\">Security event 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>{event.id}</GradientText>\n </h1>\n <Badge variant={severityColors[event.severity]}>{event.severity}</Badge>\n {event.resolved ? (\n <Badge variant=\"default\">Resolved</Badge>\n ) : (\n <Badge variant=\"destructive\">Open</Badge>\n )}\n </div>\n <p className=\"text-sm text-text-secondary mt-1\">{event.title}</p>\n </div>\n </div>\n {!event.resolved && (\n <Button size=\"sm\">\n <CheckCircle className=\"mr-2 h-4 w-4\" />\n Mark Resolved\n </Button>\n )}\n </div>\n\n <div className=\"grid gap-6 lg:grid-cols-3\">\n <Card className=\"lg:col-span-2\">\n <CardHeader>\n <CardTitle>Event 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\">{event.description}</p>\n </div>\n <Separator />\n <div className=\"grid grid-cols-2 gap-4 text-sm\">\n <div>\n <span className=\"text-text-secondary\">Type</span>\n <p className=\"font-medium capitalize\">{event.type.replace('_', ' ')}</p>\n </div>\n <div>\n <span className=\"text-text-secondary\">Source</span>\n <p className=\"font-medium\">{event.source}</p>\n </div>\n <div>\n <span className=\"text-text-secondary\">Timestamp</span>\n <p className=\"font-medium\">{new Date(event.timestamp).toLocaleString()}</p>\n </div>\n {event.userId && (\n <div>\n <span className=\"text-text-secondary\">User</span>\n <p className=\"font-medium\">{event.userId}</p>\n </div>\n )}\n {event.ipAddress && (\n <div>\n <span className=\"text-text-secondary\">IP Address</span>\n <p className=\"font-mono text-xs\">{event.ipAddress}</p>\n </div>\n )}\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Severity Assessment</CardTitle>\n </CardHeader>\n <CardContent>\n <div\n className={`p-4 rounded-lg text-center ${event.severity === 'critical' ? 'bg-status-error-bg-subtle text-status-error-text' : event.severity === 'high' ? 'bg-status-warning-bg-subtle text-status-warning-text' : event.severity === 'medium' ? 'bg-status-warning-bg-subtle text-status-warning-text' : 'bg-status-info-bg-subtle text-status-info-text'}`}\n >\n <p className=\"text-2xl font-bold uppercase\">{event.severity}</p>\n <p className=\"text-xs mt-1\">Severity Level</p>\n </div>\n </CardContent>\n </Card>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SecuritySecurityEventDetailPage.js","names":[],"sources":["../../../src/assethandler/pages/SecuritySecurityEventDetailPage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Separator,\n GradientText,\n EmphasisPanel,\n PagePurpose,\n IllustratedEmptyState,\n} from '@burdenoff/fe-libs/ui';\nimport { ArrowLeft, CheckCircle } from 'lucide-react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { useAssetHandlerStore } from '../store/assethandlerStore';\n\nconst severityColors: Record<string, 'destructive' | 'default' | 'secondary' | 'outline'> = {\n critical: 'destructive',\n high: 'destructive',\n medium: 'default',\n low: 'secondary',\n info: 'outline',\n};\n\nexport function SecuritySecurityEventDetailPage() {\n const navigate = useNavigate();\n const { eventId } = useParams<{ eventId: string }>();\n const { securityEvents } = useAssetHandlerStore();\n const event = securityEvents.find((item) => item.id === eventId) ?? securityEvents[0];\n\n if (!event)\n return (\n <div className=\"p-6\">\n <IllustratedEmptyState\n illustration=\"empty-search\"\n title=\"Security event not found\"\n description=\"This event may have been resolved or removed. Return to the security hub to find it.\"\n action={\n <Button size=\"sm\" onClick={() => navigate('/security/security-hub')}>\n Back to security\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('/security/security-hub')}>\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>{event.id}</GradientText>\n </h1>\n <Badge variant={severityColors[event.severity]}>{event.severity}</Badge>\n {event.resolved ? (\n <Badge variant=\"default\">Resolved</Badge>\n ) : (\n <Badge variant=\"destructive\">Open</Badge>\n )}\n </div>\n <p className=\"text-sm text-text-secondary mt-1\">{event.title}</p>\n </div>\n </div>\n {!event.resolved && (\n <Button size=\"sm\">\n <CheckCircle className=\"mr-2 h-4 w-4\" />\n Mark Resolved\n </Button>\n )}\n </div>\n\n <PagePurpose>\n The full forensic picture of a single security event — what happened, where it came from,\n who or what was involved, and how serious it is. Use this page to investigate, confirm the\n impact and mark it resolved once handled.\n </PagePurpose>\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>Event 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\">{event.description}</p>\n </div>\n <Separator />\n <div className=\"grid grid-cols-2 gap-4 text-sm\">\n <div>\n <span className=\"text-text-secondary\">Type</span>\n <p className=\"font-medium capitalize\">{event.type.replace('_', ' ')}</p>\n </div>\n <div>\n <span className=\"text-text-secondary\">Source</span>\n <p className=\"font-medium\">{event.source}</p>\n </div>\n <div>\n <span className=\"text-text-secondary\">Timestamp</span>\n <p className=\"font-medium\">{new Date(event.timestamp).toLocaleString()}</p>\n </div>\n {event.userId && (\n <div>\n <span className=\"text-text-secondary\">User</span>\n <p className=\"font-medium\">{event.userId}</p>\n </div>\n )}\n {event.ipAddress && (\n <div>\n <span className=\"text-text-secondary\">IP Address</span>\n <p className=\"font-mono text-xs\">{event.ipAddress}</p>\n </div>\n )}\n </div>\n </CardContent>\n </EmphasisPanel>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Severity Assessment</CardTitle>\n </CardHeader>\n <CardContent>\n <div\n className={`p-4 rounded-lg text-center ${event.severity === 'critical' ? 'bg-status-error-bg-subtle text-status-error-text' : event.severity === 'high' ? 'bg-status-warning-bg-subtle text-status-warning-text' : event.severity === 'medium' ? 'bg-status-warning-bg-subtle text-status-warning-text' : 'bg-status-info-bg-subtle text-status-info-text'}`}\n >\n <p className=\"text-2xl font-bold uppercase\">{event.severity}</p>\n <p className=\"text-xs mt-1\">Severity Level</p>\n </div>\n </CardContent>\n </Card>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}