@burdenoff/microfe-assethandler 2026.624.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.
- package/dist/assethandler/pages/AiPredictionsPage.js +49 -42
- package/dist/assethandler/pages/AiPredictionsPage.js.map +1 -1
- package/dist/assethandler/pages/AnalyticsPage.js +539 -514
- package/dist/assethandler/pages/AnalyticsPage.js.map +1 -1
- package/dist/assethandler/pages/AssetsAssetCategoriesPage.js +143 -133
- package/dist/assethandler/pages/AssetsAssetCategoriesPage.js.map +1 -1
- package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js +90 -92
- package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js.map +1 -1
- package/dist/assethandler/pages/AssetsAssetCreatePage.js +131 -124
- package/dist/assethandler/pages/AssetsAssetCreatePage.js.map +1 -1
- package/dist/assethandler/pages/AssetsAssetDetailPage.js +220 -191
- package/dist/assethandler/pages/AssetsAssetDetailPage.js.map +1 -1
- package/dist/assethandler/pages/AssetsAssetEditPage.js +168 -156
- package/dist/assethandler/pages/AssetsAssetEditPage.js.map +1 -1
- package/dist/assethandler/pages/AssetsAssetListPage.js +219 -193
- package/dist/assethandler/pages/AssetsAssetListPage.js.map +1 -1
- package/dist/assethandler/pages/AssetsAssetTrackingPage.js +82 -71
- package/dist/assethandler/pages/AssetsAssetTrackingPage.js.map +1 -1
- package/dist/assethandler/pages/AuditTrailPage.js +127 -109
- package/dist/assethandler/pages/AuditTrailPage.js.map +1 -1
- package/dist/assethandler/pages/CmdbBrowserPage.js +39 -34
- package/dist/assethandler/pages/CmdbBrowserPage.js.map +1 -1
- package/dist/assethandler/pages/DashboardPage.js +245 -197
- package/dist/assethandler/pages/DashboardPage.js.map +1 -1
- package/dist/assethandler/pages/DigitalTwinPage.js +32 -27
- package/dist/assethandler/pages/DigitalTwinPage.js.map +1 -1
- package/dist/assethandler/pages/DiscoveryJobsPage.js +57 -51
- package/dist/assethandler/pages/DiscoveryJobsPage.js.map +1 -1
- package/dist/assethandler/pages/EsgDashboardPage.js +50 -43
- package/dist/assethandler/pages/EsgDashboardPage.js.map +1 -1
- package/dist/assethandler/pages/FinanceBudgetDetailPage.js +98 -84
- package/dist/assethandler/pages/FinanceBudgetDetailPage.js.map +1 -1
- package/dist/assethandler/pages/FinanceFinanceHubPage.js +151 -117
- package/dist/assethandler/pages/FinanceFinanceHubPage.js.map +1 -1
- package/dist/assethandler/pages/FinanceInvoiceDetailPage.js +77 -66
- package/dist/assethandler/pages/FinanceInvoiceDetailPage.js.map +1 -1
- package/dist/assethandler/pages/IotDevicesPage.js +41 -36
- package/dist/assethandler/pages/IotDevicesPage.js.map +1 -1
- package/dist/assethandler/pages/ItilChangeDetailPage.js +236 -199
- package/dist/assethandler/pages/ItilChangeDetailPage.js.map +1 -1
- package/dist/assethandler/pages/ItilChangeManagementPage.js +69 -67
- package/dist/assethandler/pages/ItilChangeManagementPage.js.map +1 -1
- package/dist/assethandler/pages/ItilIncidentDetailPage.js +237 -200
- package/dist/assethandler/pages/ItilIncidentDetailPage.js.map +1 -1
- package/dist/assethandler/pages/ItilIncidentManagementPage.js +103 -101
- package/dist/assethandler/pages/ItilIncidentManagementPage.js.map +1 -1
- package/dist/assethandler/pages/ItilItilhubPage.js +168 -124
- package/dist/assethandler/pages/ItilItilhubPage.js.map +1 -1
- package/dist/assethandler/pages/ItilProblemDetailPage.js +193 -156
- package/dist/assethandler/pages/ItilProblemDetailPage.js.map +1 -1
- package/dist/assethandler/pages/ItilProblemManagementPage.js +66 -64
- package/dist/assethandler/pages/ItilProblemManagementPage.js.map +1 -1
- package/dist/assethandler/pages/KnowledgeBasePage.js +52 -44
- package/dist/assethandler/pages/KnowledgeBasePage.js.map +1 -1
- package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.js +72 -70
- package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.js.map +1 -1
- package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.js +77 -62
- package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.js.map +1 -1
- package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.js +162 -151
- package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.js.map +1 -1
- package/dist/assethandler/pages/MarketplaceMarketplaceListPage.js +68 -61
- package/dist/assethandler/pages/MarketplaceMarketplaceListPage.js.map +1 -1
- package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.js +125 -108
- package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.js.map +1 -1
- package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.js +67 -61
- package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.js.map +1 -1
- package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js +203 -166
- package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js.map +1 -1
- package/dist/assethandler/pages/OperationsOperationsHubPage.js +126 -96
- package/dist/assethandler/pages/OperationsOperationsHubPage.js.map +1 -1
- package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js +165 -151
- package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js.map +1 -1
- package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js +123 -105
- package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js.map +1 -1
- package/dist/assethandler/pages/ProvenancePage.js +60 -52
- package/dist/assethandler/pages/ProvenancePage.js.map +1 -1
- package/dist/assethandler/pages/ReportsReportBuilderPage.js +80 -73
- package/dist/assethandler/pages/ReportsReportBuilderPage.js.map +1 -1
- package/dist/assethandler/pages/ReportsReportsDashboardPage.js +114 -79
- package/dist/assethandler/pages/ReportsReportsDashboardPage.js.map +1 -1
- package/dist/assethandler/pages/ReportsReportsListPage.js +119 -103
- package/dist/assethandler/pages/ReportsReportsListPage.js.map +1 -1
- package/dist/assethandler/pages/SamLicensesPage.js +39 -34
- package/dist/assethandler/pages/SamLicensesPage.js.map +1 -1
- package/dist/assethandler/pages/SecurityComplianceDetailPage.js +63 -55
- package/dist/assethandler/pages/SecurityComplianceDetailPage.js.map +1 -1
- package/dist/assethandler/pages/SecurityPolicyDetailPage.js +134 -117
- package/dist/assethandler/pages/SecurityPolicyDetailPage.js.map +1 -1
- package/dist/assethandler/pages/SecurityScheduleBackupPage.js +64 -58
- package/dist/assethandler/pages/SecurityScheduleBackupPage.js.map +1 -1
- package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js +131 -117
- package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js.map +1 -1
- package/dist/assethandler/pages/SecuritySecurityHubPage.js +151 -117
- package/dist/assethandler/pages/SecuritySecurityHubPage.js.map +1 -1
- package/dist/assethandler/pages/TransactionsTransactionDetailPage.js +235 -218
- package/dist/assethandler/pages/TransactionsTransactionDetailPage.js.map +1 -1
- package/dist/assethandler/pages/TransactionsTransactionListPage.js +145 -127
- package/dist/assethandler/pages/TransactionsTransactionListPage.js.map +1 -1
- package/dist/assethandler/pages/UsersPage.js +135 -110
- package/dist/assethandler/pages/UsersPage.js.map +1 -1
- package/dist/assethandler/pages/UsersUserCreatePage.js +74 -67
- package/dist/assethandler/pages/UsersUserCreatePage.js.map +1 -1
- package/dist/assethandler/pages/UsersUserManagementHubPage.js +178 -130
- package/dist/assethandler/pages/UsersUserManagementHubPage.js.map +1 -1
- package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.js +211 -193
- package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.js.map +1 -1
- package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.js +126 -108
- package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.js.map +1 -1
- package/dist/assethandler/pages/WorkflowsWorkflowListPage.js +71 -63
- package/dist/assethandler/pages/WorkflowsWorkflowListPage.js.map +1 -1
- package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.js +96 -81
- package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { useState as e } from "react";
|
|
2
2
|
import { BrainCircuit as t } from "lucide-react";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { EmphasisPanel as n, GradientText as r, IllustratedEmptyState as i, PagePurpose as a } from "@burdenoff/fe-libs/ui";
|
|
4
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
5
|
+
import { gql as c } from "@apollo/client";
|
|
6
|
+
import { useMutation as l, useQuery as u } from "@apollo/client/react";
|
|
6
7
|
//#region src/assethandler/pages/AiPredictionsPage.tsx
|
|
7
|
-
var
|
|
8
|
+
var d = c`
|
|
8
9
|
query AssetHandlerAiPredictions {
|
|
9
10
|
aiPredictions {
|
|
10
11
|
id
|
|
@@ -17,33 +18,37 @@ var s = i`
|
|
|
17
18
|
modelVersion
|
|
18
19
|
}
|
|
19
20
|
}
|
|
20
|
-
`,
|
|
21
|
+
`, f = c`
|
|
21
22
|
mutation AssetHandlerRequestAiPrediction($input: RequestAIPredictionInput!) {
|
|
22
23
|
requestAIPrediction(input: $input) {
|
|
23
24
|
id
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
27
|
`;
|
|
27
|
-
function
|
|
28
|
-
let [
|
|
29
|
-
|
|
30
|
-
} }),
|
|
31
|
-
return /* @__PURE__ */
|
|
28
|
+
function p() {
|
|
29
|
+
let [c, p] = e("AST-001"), { data: m, loading: h, refetch: g } = u(d, { fetchPolicy: "cache-and-network" }), [_, { loading: v }] = l(f, { onCompleted: () => {
|
|
30
|
+
g();
|
|
31
|
+
} }), y = m?.aiPredictions ?? [];
|
|
32
|
+
return /* @__PURE__ */ s("div", {
|
|
32
33
|
className: "space-y-4 p-4",
|
|
33
34
|
children: [
|
|
34
|
-
/* @__PURE__ */
|
|
35
|
+
/* @__PURE__ */ s("h1", {
|
|
35
36
|
className: "flex items-center gap-2 text-2xl font-semibold",
|
|
36
|
-
children: [
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
children: [
|
|
38
|
+
/* @__PURE__ */ o(t, { className: "h-6 w-6" }),
|
|
39
|
+
" ",
|
|
40
|
+
/* @__PURE__ */ o(r, { children: "AI Predictions" })
|
|
41
|
+
]
|
|
41
42
|
}),
|
|
42
|
-
/* @__PURE__ */
|
|
43
|
-
|
|
43
|
+
/* @__PURE__ */ o(a, { children: "Forecast failures before they happen. Enter an asset and run a model to get a risk score, confidence level and a concrete recommendation — so you can schedule preventive maintenance instead of reacting to breakdowns. Use it to prioritise which high-value or aging assets to service next." }),
|
|
44
|
+
/* @__PURE__ */ s(n, { children: [/* @__PURE__ */ o("h2", {
|
|
45
|
+
className: "text-sm font-semibold mb-3",
|
|
46
|
+
children: "Run a prediction"
|
|
47
|
+
}), /* @__PURE__ */ s("form", {
|
|
48
|
+
className: "grid gap-3 md:grid-cols-3",
|
|
44
49
|
onSubmit: (e) => {
|
|
45
|
-
e.preventDefault(),
|
|
46
|
-
assetId:
|
|
50
|
+
e.preventDefault(), _({ variables: { input: {
|
|
51
|
+
assetId: c,
|
|
47
52
|
predictionType: "maintenance-risk",
|
|
48
53
|
featureVector: {
|
|
49
54
|
runtimeHours: 10240,
|
|
@@ -53,38 +58,40 @@ function l() {
|
|
|
53
58
|
} } });
|
|
54
59
|
},
|
|
55
60
|
children: [
|
|
56
|
-
/* @__PURE__ */
|
|
61
|
+
/* @__PURE__ */ o("input", {
|
|
57
62
|
className: "rounded-md border px-3 py-2",
|
|
58
|
-
value:
|
|
59
|
-
onChange: (e) =>
|
|
63
|
+
value: c,
|
|
64
|
+
onChange: (e) => p(e.target.value),
|
|
65
|
+
"aria-label": "Asset ID"
|
|
60
66
|
}),
|
|
61
|
-
/* @__PURE__ */
|
|
67
|
+
/* @__PURE__ */ o("div", {
|
|
62
68
|
className: "text-sm text-text-secondary",
|
|
63
69
|
children: "Prediction Type: maintenance-risk"
|
|
64
70
|
}),
|
|
65
|
-
/* @__PURE__ */
|
|
71
|
+
/* @__PURE__ */ o("button", {
|
|
66
72
|
className: "rounded-md bg-action-primary-bg px-3 py-2 text-action-primary-text",
|
|
67
|
-
disabled:
|
|
73
|
+
disabled: v,
|
|
68
74
|
type: "submit",
|
|
69
|
-
children:
|
|
75
|
+
children: v ? "Running..." : "Run Prediction"
|
|
70
76
|
})
|
|
71
77
|
]
|
|
72
|
-
}),
|
|
73
|
-
/* @__PURE__ */
|
|
78
|
+
})] }),
|
|
79
|
+
/* @__PURE__ */ s("div", {
|
|
74
80
|
className: "grid gap-3 md:grid-cols-2",
|
|
75
81
|
children: [
|
|
76
|
-
|
|
77
|
-
className: "
|
|
78
|
-
children: "
|
|
82
|
+
h && y.length === 0 ? /* @__PURE__ */ o("div", {
|
|
83
|
+
className: "space-y-2 px-4 py-4",
|
|
84
|
+
children: Array.from({ length: 4 }).map((e, t) => /* @__PURE__ */ o("div", { className: "h-8 rounded-md bg-bg-sunken motion-safe:animate-vc-shimmer" }, t))
|
|
79
85
|
}) : null,
|
|
80
|
-
!
|
|
81
|
-
|
|
82
|
-
|
|
86
|
+
!h && y.length === 0 ? /* @__PURE__ */ o(i, {
|
|
87
|
+
illustration: "empty-data",
|
|
88
|
+
title: "No AI predictions available yet",
|
|
89
|
+
description: "AI-generated predictions for your assets will appear here."
|
|
83
90
|
}) : null,
|
|
84
|
-
|
|
91
|
+
y.map((e) => /* @__PURE__ */ s("article", {
|
|
85
92
|
className: "rounded-lg border p-4",
|
|
86
93
|
children: [
|
|
87
|
-
/* @__PURE__ */
|
|
94
|
+
/* @__PURE__ */ s("p", {
|
|
88
95
|
className: "text-xs uppercase tracking-wide text-text-secondary",
|
|
89
96
|
children: [
|
|
90
97
|
e.predictionType,
|
|
@@ -92,7 +99,7 @@ function l() {
|
|
|
92
99
|
e.assetId
|
|
93
100
|
]
|
|
94
101
|
}),
|
|
95
|
-
/* @__PURE__ */
|
|
102
|
+
/* @__PURE__ */ s("h2", {
|
|
96
103
|
className: "mt-1 text-base font-semibold",
|
|
97
104
|
children: [
|
|
98
105
|
"Risk score ",
|
|
@@ -100,7 +107,7 @@ function l() {
|
|
|
100
107
|
"%"
|
|
101
108
|
]
|
|
102
109
|
}),
|
|
103
|
-
/* @__PURE__ */
|
|
110
|
+
/* @__PURE__ */ s("p", {
|
|
104
111
|
className: "mt-1 text-sm text-text-secondary",
|
|
105
112
|
children: [
|
|
106
113
|
"Confidence ",
|
|
@@ -108,11 +115,11 @@ function l() {
|
|
|
108
115
|
"%"
|
|
109
116
|
]
|
|
110
117
|
}),
|
|
111
|
-
/* @__PURE__ */
|
|
118
|
+
/* @__PURE__ */ o("p", {
|
|
112
119
|
className: "mt-2 text-sm",
|
|
113
120
|
children: e.recommendation
|
|
114
121
|
}),
|
|
115
|
-
/* @__PURE__ */
|
|
122
|
+
/* @__PURE__ */ s("p", {
|
|
116
123
|
className: "mt-2 text-xs text-text-secondary",
|
|
117
124
|
children: [
|
|
118
125
|
e.modelVersion,
|
|
@@ -128,6 +135,6 @@ function l() {
|
|
|
128
135
|
});
|
|
129
136
|
}
|
|
130
137
|
//#endregion
|
|
131
|
-
export {
|
|
138
|
+
export { p as AiPredictionsPage };
|
|
132
139
|
|
|
133
140
|
//# sourceMappingURL=AiPredictionsPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiPredictionsPage.js","names":[],"sources":["../../../src/assethandler/pages/AiPredictionsPage.tsx"],"sourcesContent":["import { BrainCircuit } from 'lucide-react';\nimport { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\n\nconst AI_PREDICTIONS_QUERY = gql`\n query AssetHandlerAiPredictions {\n aiPredictions {\n id\n assetId\n predictionType\n score\n confidence\n recommendation\n generatedAt\n modelVersion\n }\n }\n`;\n\nconst REQUEST_AI_PREDICTION_MUTATION = gql`\n mutation AssetHandlerRequestAiPrediction($input: RequestAIPredictionInput!) {\n requestAIPrediction(input: $input) {\n id\n }\n }\n`;\n\nexport function AiPredictionsPage() {\n const [assetId, setAssetId] = useState('AST-001');\n\n const { data, loading, refetch } = useQuery<{\n aiPredictions: Array<{\n id: string;\n assetId: string;\n predictionType: string;\n score: number;\n confidence: number;\n recommendation: string;\n generatedAt: string;\n modelVersion: string;\n }>;\n }>(AI_PREDICTIONS_QUERY, { fetchPolicy: 'cache-and-network' });\n\n const [requestPrediction, { loading: requesting }] = useMutation(REQUEST_AI_PREDICTION_MUTATION, {\n onCompleted: () => {\n void refetch();\n },\n });\n\n const predictions = data?.aiPredictions ?? [];\n\n return (\n <div className=\"space-y-4 p-4\">\n <h1 className=\"flex items-center gap-2 text-2xl font-semibold\">\n <BrainCircuit className=\"h-6 w-6\" /> AI Predictions
|
|
1
|
+
{"version":3,"file":"AiPredictionsPage.js","names":[],"sources":["../../../src/assethandler/pages/AiPredictionsPage.tsx"],"sourcesContent":["import { BrainCircuit } from 'lucide-react';\nimport { GradientText, IllustratedEmptyState, EmphasisPanel, PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\n\nconst AI_PREDICTIONS_QUERY = gql`\n query AssetHandlerAiPredictions {\n aiPredictions {\n id\n assetId\n predictionType\n score\n confidence\n recommendation\n generatedAt\n modelVersion\n }\n }\n`;\n\nconst REQUEST_AI_PREDICTION_MUTATION = gql`\n mutation AssetHandlerRequestAiPrediction($input: RequestAIPredictionInput!) {\n requestAIPrediction(input: $input) {\n id\n }\n }\n`;\n\nexport function AiPredictionsPage() {\n const [assetId, setAssetId] = useState('AST-001');\n\n const { data, loading, refetch } = useQuery<{\n aiPredictions: Array<{\n id: string;\n assetId: string;\n predictionType: string;\n score: number;\n confidence: number;\n recommendation: string;\n generatedAt: string;\n modelVersion: string;\n }>;\n }>(AI_PREDICTIONS_QUERY, { fetchPolicy: 'cache-and-network' });\n\n const [requestPrediction, { loading: requesting }] = useMutation(REQUEST_AI_PREDICTION_MUTATION, {\n onCompleted: () => {\n void refetch();\n },\n });\n\n const predictions = data?.aiPredictions ?? [];\n\n return (\n <div className=\"space-y-4 p-4\">\n <h1 className=\"flex items-center gap-2 text-2xl font-semibold\">\n <BrainCircuit className=\"h-6 w-6\" /> <GradientText>AI Predictions</GradientText>\n </h1>\n <PagePurpose>\n Forecast failures before they happen. Enter an asset and run a model to get a risk score,\n confidence level and a concrete recommendation — so you can schedule preventive maintenance\n instead of reacting to breakdowns. Use it to prioritise which high-value or aging assets to\n service next.\n </PagePurpose>\n <EmphasisPanel>\n <h2 className=\"text-sm font-semibold mb-3\">Run a prediction</h2>\n <form\n className=\"grid gap-3 md:grid-cols-3\"\n onSubmit={(event) => {\n event.preventDefault();\n void requestPrediction({\n variables: {\n input: {\n assetId,\n predictionType: 'maintenance-risk',\n featureVector: {\n runtimeHours: 10240,\n lastIncidentDaysAgo: 9,\n temperatureVariance: 0.23,\n },\n },\n },\n });\n }}\n >\n <input\n className=\"rounded-md border px-3 py-2\"\n value={assetId}\n onChange={(event) => setAssetId(event.target.value)}\n aria-label=\"Asset ID\"\n />\n <div className=\"text-sm text-text-secondary\">Prediction Type: maintenance-risk</div>\n <button\n className=\"rounded-md bg-action-primary-bg px-3 py-2 text-action-primary-text\"\n disabled={requesting}\n type=\"submit\"\n >\n {requesting ? 'Running...' : 'Run Prediction'}\n </button>\n </form>\n </EmphasisPanel>\n <div className=\"grid gap-3 md:grid-cols-2\">\n {loading && predictions.length === 0 ? (\n <div className=\"space-y-2 px-4 py-4\">\n {Array.from({ length: 4 }).map((_, i) => (\n <div key={i} className=\"h-8 rounded-md bg-bg-sunken motion-safe:animate-vc-shimmer\" />\n ))}\n </div>\n ) : null}\n {!loading && predictions.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title=\"No AI predictions available yet\"\n description=\"AI-generated predictions for your assets will appear here.\"\n />\n ) : null}\n {predictions.map((prediction) => (\n <article key={prediction.id} className=\"rounded-lg border p-4\">\n <p className=\"text-xs uppercase tracking-wide text-text-secondary\">\n {prediction.predictionType} • {prediction.assetId}\n </p>\n <h2 className=\"mt-1 text-base font-semibold\">\n Risk score {(prediction.score * 100).toFixed(1)}%\n </h2>\n <p className=\"mt-1 text-sm text-text-secondary\">\n Confidence {(prediction.confidence * 100).toFixed(1)}%\n </p>\n <p className=\"mt-2 text-sm\">{prediction.recommendation}</p>\n <p className=\"mt-2 text-xs text-text-secondary\">\n {prediction.modelVersion} • {new Date(prediction.generatedAt).toLocaleString()}\n </p>\n </article>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;AAMA,IAAM,IAAuB,CAAG;;;;;;;;;;;;;GAe1B,IAAiC,CAAG;;;;;;;AAQ1C,SAAgB,IAAoB;CAClC,IAAM,CAAC,GAAS,KAAc,EAAS,UAAU,EAE3C,EAAE,SAAM,YAAS,eAAY,EAWhC,GAAsB,EAAE,aAAa,qBAAqB,CAAC,EAExD,CAAC,GAAmB,EAAE,SAAS,OAAgB,EAAY,GAAgC,EAC/F,mBAAmB;AACZ,KAAS;IAEjB,CAAC,EAEI,IAAc,GAAM,iBAAiB,EAAE;AAE7C,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,MAAD;IAAI,WAAU;cAAd;KACE,kBAAC,GAAD,EAAc,WAAU,WAAY,CAAA;;KAAC,kBAAC,GAAD,EAAA,UAAc,kBAA6B,CAAA;KAC7E;;GACL,kBAAC,GAAD,EAAA,UAAa,mSAKC,CAAA;GACd,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,MAAD;IAAI,WAAU;cAA6B;IAAqB,CAAA,EAChE,kBAAC,QAAD;IACE,WAAU;IACV,WAAW,MAAU;AAEhB,KADL,EAAM,gBAAgB,EACjB,EAAkB,EACrB,WAAW,EACT,OAAO;MACL;MACA,gBAAgB;MAChB,eAAe;OACb,cAAc;OACd,qBAAqB;OACrB,qBAAqB;OACtB;MACF,EACF,EACF,CAAC;;cAhBJ;KAmBE,kBAAC,SAAD;MACE,WAAU;MACV,OAAO;MACP,WAAW,MAAU,EAAW,EAAM,OAAO,MAAM;MACnD,cAAW;MACX,CAAA;KACF,kBAAC,OAAD;MAAK,WAAU;gBAA8B;MAAuC,CAAA;KACpF,kBAAC,UAAD;MACE,WAAU;MACV,UAAU;MACV,MAAK;gBAEJ,IAAa,eAAe;MACtB,CAAA;KACJ;MACO,EAAA,CAAA;GAChB,kBAAC,OAAD;IAAK,WAAU;cAAf;KACG,KAAW,EAAY,WAAW,IACjC,kBAAC,OAAD;MAAK,WAAU;gBACZ,MAAM,KAAK,EAAE,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,MACjC,kBAAC,OAAD,EAAa,WAAU,8DAA+D,EAA5E,EAA4E,CACtF;MACE,CAAA,GACJ;KACH,CAAC,KAAW,EAAY,WAAW,IAClC,kBAAC,GAAD;MACE,cAAa;MACb,OAAM;MACN,aAAY;MACZ,CAAA,GACA;KACH,EAAY,KAAK,MAChB,kBAAC,WAAD;MAA6B,WAAU;gBAAvC;OACE,kBAAC,KAAD;QAAG,WAAU;kBAAb;SACG,EAAW;SAAe;SAAI,EAAW;SACxC;;OACJ,kBAAC,MAAD;QAAI,WAAU;kBAAd;SAA6C;UAC9B,EAAW,QAAQ,KAAK,QAAQ,EAAE;SAAC;SAC7C;;OACL,kBAAC,KAAD;QAAG,WAAU;kBAAb;SAAgD;UACjC,EAAW,aAAa,KAAK,QAAQ,EAAE;SAAC;SACnD;;OACJ,kBAAC,KAAD;QAAG,WAAU;kBAAgB,EAAW;QAAmB,CAAA;OAC3D,kBAAC,KAAD;QAAG,WAAU;kBAAb;SACG,EAAW;SAAa;SAAI,IAAI,KAAK,EAAW,YAAY,CAAC,gBAAgB;SAC5E;;OACI;QAdI,EAAW,GAcf,CACV;KACE;;GACF"}
|