@burdenoff/microfe-assethandler 2026.703.2 → 2026.703.4

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