@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.
- package/dist/assethandler/AssetHandlerRoot.js +18 -18
- package/dist/assethandler/hooks/useAssetHandlerNavigate.js +19 -0
- package/dist/assethandler/hooks/useAssetHandlerNavigate.js.map +1 -0
- package/dist/assethandler/pages/AiPredictionsPage.js +29 -29
- package/dist/assethandler/pages/AnalyticsPage.js +154 -154
- package/dist/assethandler/pages/AssetsAssetCategoriesPage.js +48 -48
- package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js +84 -84
- package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js.map +1 -1
- package/dist/assethandler/pages/AssetsAssetCreatePage.js +82 -82
- package/dist/assethandler/pages/AssetsAssetCreatePage.js.map +1 -1
- package/dist/assethandler/pages/AssetsAssetDetailPage.js +104 -103
- package/dist/assethandler/pages/AssetsAssetDetailPage.js.map +1 -1
- package/dist/assethandler/pages/AssetsAssetListPage.js +132 -132
- package/dist/assethandler/pages/AssetsAssetListPage.js.map +1 -1
- package/dist/assethandler/pages/AssetsAssetTrackingPage.js +52 -52
- package/dist/assethandler/pages/CmdbBrowserPage.js +27 -27
- package/dist/assethandler/pages/DashboardPage.js +119 -119
- package/dist/assethandler/pages/DashboardPage.js.map +1 -1
- package/dist/assethandler/pages/DigitalTwinPage.js +22 -22
- package/dist/assethandler/pages/DiscoveryJobsPage.js +35 -35
- package/dist/assethandler/pages/EsgDashboardPage.js +32 -32
- package/dist/assethandler/pages/FinanceBudgetDetailPage.js +57 -56
- package/dist/assethandler/pages/FinanceBudgetDetailPage.js.map +1 -1
- package/dist/assethandler/pages/FinanceFinanceHubPage.js +98 -98
- package/dist/assethandler/pages/FinanceFinanceHubPage.js.map +1 -1
- package/dist/assethandler/pages/FinanceInvoiceDetailPage.js +58 -57
- package/dist/assethandler/pages/FinanceInvoiceDetailPage.js.map +1 -1
- package/dist/assethandler/pages/IotDevicesPage.js +29 -29
- package/dist/assethandler/pages/ItilChangeDetailPage.js +76 -75
- package/dist/assethandler/pages/ItilChangeDetailPage.js.map +1 -1
- package/dist/assethandler/pages/ItilChangeManagementPage.js +49 -49
- package/dist/assethandler/pages/ItilIncidentDetailPage.js +63 -62
- package/dist/assethandler/pages/ItilIncidentDetailPage.js.map +1 -1
- package/dist/assethandler/pages/ItilIncidentManagementPage.js +72 -72
- package/dist/assethandler/pages/ItilItilhubPage.js +112 -112
- package/dist/assethandler/pages/ItilItilhubPage.js.map +1 -1
- package/dist/assethandler/pages/ItilProblemDetailPage.js +61 -60
- package/dist/assethandler/pages/ItilProblemDetailPage.js.map +1 -1
- package/dist/assethandler/pages/ItilProblemManagementPage.js +46 -46
- package/dist/assethandler/pages/KnowledgeBasePage.js +28 -28
- package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.js +52 -52
- package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.js +29 -29
- package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js +58 -57
- package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js.map +1 -1
- package/dist/assethandler/pages/OperationsOperationsHubPage.js +80 -80
- package/dist/assethandler/pages/OperationsOperationsHubPage.js.map +1 -1
- package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js +49 -48
- package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js.map +1 -1
- package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js +52 -52
- package/dist/assethandler/pages/ProvenancePage.js +36 -36
- package/dist/assethandler/pages/SamLicensesPage.js +27 -27
- package/dist/assethandler/pages/SecurityComplianceDetailPage.js +39 -38
- package/dist/assethandler/pages/SecurityComplianceDetailPage.js.map +1 -1
- package/dist/assethandler/pages/SecurityPolicyDetailPage.js +50 -49
- package/dist/assethandler/pages/SecurityPolicyDetailPage.js.map +1 -1
- package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js +47 -46
- package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js.map +1 -1
- package/dist/assethandler/pages/SecuritySecurityHubPage.js +104 -104
- package/dist/assethandler/pages/SecuritySecurityHubPage.js.map +1 -1
- package/dist/assethandler/pages/TransactionsTransactionDetailPage.js +74 -73
- package/dist/assethandler/pages/TransactionsTransactionDetailPage.js.map +1 -1
- package/dist/assethandler/pages/TransactionsTransactionListPage.js +77 -77
- package/dist/assethandler/providers/AssetHandlerProvider.js +12 -12
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useAssetHandlerStore as e } from "../store/assethandlerStore.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { useAssetHandlerNavigate as t } from "../hooks/useAssetHandlerNavigate.js";
|
|
3
|
+
import { AlertTriangle as n, ClipboardList as r, Plus as i, Wrench as a } from "lucide-react";
|
|
4
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
5
|
+
import { Badge as c, Button as l, Card as u, CardContent as d, EmphasisPanel as f, GradientText as p, IllustratedEmptyState as m, NextSteps as h, PagePurpose as g, Tabs as _, TabsContent as v, TabsList as y, TabsTrigger as b } from "@burdenoff/fe-libs/ui";
|
|
6
6
|
//#region src/assethandler/pages/OperationsOperationsHubPage.tsx
|
|
7
7
|
var x = {
|
|
8
8
|
critical: "destructive",
|
|
@@ -11,25 +11,25 @@ var x = {
|
|
|
11
11
|
low: "secondary"
|
|
12
12
|
};
|
|
13
13
|
function S() {
|
|
14
|
-
let S =
|
|
15
|
-
return /* @__PURE__ */
|
|
14
|
+
let S = t(), { workOrders: C, maintenanceRecords: w } = e(), T = C.filter((e) => e.status !== "completed" && e.status !== "cancelled"), E = w.filter((e) => e.status === "scheduled" || e.status === "in_progress"), D = w.reduce((e, t) => e + (t.actualCost ?? t.estimatedCost ?? 0), 0);
|
|
15
|
+
return /* @__PURE__ */ s("div", {
|
|
16
16
|
className: "space-y-6 p-6",
|
|
17
17
|
children: [
|
|
18
|
-
/* @__PURE__ */
|
|
18
|
+
/* @__PURE__ */ s("div", {
|
|
19
19
|
className: "flex items-center justify-between",
|
|
20
|
-
children: [/* @__PURE__ */
|
|
20
|
+
children: [/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("h1", {
|
|
21
21
|
className: "text-2xl font-bold",
|
|
22
|
-
children: /* @__PURE__ */
|
|
23
|
-
}), /* @__PURE__ */
|
|
22
|
+
children: /* @__PURE__ */ o(p, { children: "Operations Hub" })
|
|
23
|
+
}), /* @__PURE__ */ o("p", {
|
|
24
24
|
className: "text-sm text-text-secondary",
|
|
25
25
|
children: "Work orders and maintenance operations"
|
|
26
|
-
})] }), /* @__PURE__ */
|
|
26
|
+
})] }), /* @__PURE__ */ s(l, {
|
|
27
27
|
size: "sm",
|
|
28
|
-
children: [/* @__PURE__ */
|
|
28
|
+
children: [/* @__PURE__ */ o(i, { className: "mr-2 h-4 w-4" }), "New Work Order"]
|
|
29
29
|
})]
|
|
30
30
|
}),
|
|
31
|
-
/* @__PURE__ */
|
|
32
|
-
/* @__PURE__ */
|
|
31
|
+
/* @__PURE__ */ o(g, { children: "Where the hands-on work gets coordinated: raise and assign work orders, run scheduled and breakdown maintenance, and keep an eye on cost. Use this hub to see what is open, what is critical, and what is due — so your team always knows what to fix next." }),
|
|
32
|
+
/* @__PURE__ */ o(h, {
|
|
33
33
|
storageKey: "assethandler-operations-hub",
|
|
34
34
|
steps: [
|
|
35
35
|
{
|
|
@@ -52,59 +52,59 @@ function S() {
|
|
|
52
52
|
}
|
|
53
53
|
]
|
|
54
54
|
}),
|
|
55
|
-
/* @__PURE__ */
|
|
55
|
+
/* @__PURE__ */ s("div", {
|
|
56
56
|
className: "grid gap-4 md:grid-cols-4",
|
|
57
57
|
children: [
|
|
58
|
-
/* @__PURE__ */
|
|
58
|
+
/* @__PURE__ */ s(f, { children: [/* @__PURE__ */ s("div", {
|
|
59
59
|
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
60
|
-
children: [/* @__PURE__ */
|
|
61
|
-
}), /* @__PURE__ */
|
|
60
|
+
children: [/* @__PURE__ */ o(r, { className: "h-4 w-4" }), "Open Work Orders"]
|
|
61
|
+
}), /* @__PURE__ */ o("p", {
|
|
62
62
|
className: "text-2xl font-bold mt-1 tabular-nums",
|
|
63
63
|
children: T.length
|
|
64
64
|
})] }),
|
|
65
|
-
/* @__PURE__ */
|
|
65
|
+
/* @__PURE__ */ o(u, { children: /* @__PURE__ */ s(d, {
|
|
66
66
|
className: "pt-4",
|
|
67
|
-
children: [/* @__PURE__ */
|
|
67
|
+
children: [/* @__PURE__ */ s("div", {
|
|
68
68
|
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
69
|
-
children: [/* @__PURE__ */
|
|
70
|
-
}), /* @__PURE__ */
|
|
69
|
+
children: [/* @__PURE__ */ o(a, { className: "h-4 w-4" }), "Active Maintenance"]
|
|
70
|
+
}), /* @__PURE__ */ o("p", {
|
|
71
71
|
className: "text-2xl font-bold mt-1",
|
|
72
72
|
children: E.length
|
|
73
73
|
})]
|
|
74
74
|
}) }),
|
|
75
|
-
/* @__PURE__ */
|
|
75
|
+
/* @__PURE__ */ o(u, { children: /* @__PURE__ */ s(d, {
|
|
76
76
|
className: "pt-4",
|
|
77
|
-
children: [/* @__PURE__ */
|
|
77
|
+
children: [/* @__PURE__ */ s("div", {
|
|
78
78
|
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
79
|
-
children: [/* @__PURE__ */
|
|
80
|
-
}), /* @__PURE__ */
|
|
79
|
+
children: [/* @__PURE__ */ o(n, { className: "h-4 w-4" }), "Critical"]
|
|
80
|
+
}), /* @__PURE__ */ o("p", {
|
|
81
81
|
className: "text-2xl font-bold mt-1 text-status-error-text",
|
|
82
82
|
children: C.filter((e) => e.priority === "critical").length
|
|
83
83
|
})]
|
|
84
84
|
}) }),
|
|
85
|
-
/* @__PURE__ */
|
|
85
|
+
/* @__PURE__ */ o(u, { children: /* @__PURE__ */ s(d, {
|
|
86
86
|
className: "pt-4",
|
|
87
|
-
children: [/* @__PURE__ */
|
|
87
|
+
children: [/* @__PURE__ */ o("div", {
|
|
88
88
|
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
89
89
|
children: "Maintenance Cost"
|
|
90
|
-
}), /* @__PURE__ */
|
|
90
|
+
}), /* @__PURE__ */ s("p", {
|
|
91
91
|
className: "text-2xl font-bold mt-1",
|
|
92
92
|
children: ["$", D.toLocaleString()]
|
|
93
93
|
})]
|
|
94
94
|
}) })
|
|
95
95
|
]
|
|
96
96
|
}),
|
|
97
|
-
/* @__PURE__ */
|
|
97
|
+
/* @__PURE__ */ s(_, {
|
|
98
98
|
defaultValue: "work-orders",
|
|
99
99
|
children: [
|
|
100
|
-
/* @__PURE__ */
|
|
100
|
+
/* @__PURE__ */ s(y, { children: [/* @__PURE__ */ s(b, {
|
|
101
101
|
value: "work-orders",
|
|
102
102
|
children: [
|
|
103
103
|
"Work Orders (",
|
|
104
104
|
C.length,
|
|
105
105
|
")"
|
|
106
106
|
]
|
|
107
|
-
}), /* @__PURE__ */ b
|
|
107
|
+
}), /* @__PURE__ */ s(b, {
|
|
108
108
|
value: "maintenance",
|
|
109
109
|
children: [
|
|
110
110
|
"Maintenance (",
|
|
@@ -112,83 +112,83 @@ function S() {
|
|
|
112
112
|
")"
|
|
113
113
|
]
|
|
114
114
|
})] }),
|
|
115
|
-
/* @__PURE__ */
|
|
115
|
+
/* @__PURE__ */ o(v, {
|
|
116
116
|
value: "work-orders",
|
|
117
117
|
className: "mt-4",
|
|
118
|
-
children: C.length === 0 ? /* @__PURE__ */
|
|
118
|
+
children: C.length === 0 ? /* @__PURE__ */ o(m, {
|
|
119
119
|
illustration: "empty-generic",
|
|
120
120
|
title: "No work orders",
|
|
121
121
|
description: "Raise a work order when an asset needs repair, inspection or attention."
|
|
122
|
-
}) : /* @__PURE__ */
|
|
122
|
+
}) : /* @__PURE__ */ o(u, { children: /* @__PURE__ */ o(d, {
|
|
123
123
|
className: "p-0",
|
|
124
|
-
children: /* @__PURE__ */
|
|
124
|
+
children: /* @__PURE__ */ o("div", {
|
|
125
125
|
className: "overflow-x-auto",
|
|
126
|
-
children: /* @__PURE__ */
|
|
126
|
+
children: /* @__PURE__ */ s("table", {
|
|
127
127
|
className: "w-full text-sm",
|
|
128
|
-
children: [/* @__PURE__ */
|
|
128
|
+
children: [/* @__PURE__ */ o("thead", { children: /* @__PURE__ */ s("tr", {
|
|
129
129
|
className: "border-b bg-bg-sunken/50",
|
|
130
130
|
children: [
|
|
131
|
-
/* @__PURE__ */
|
|
131
|
+
/* @__PURE__ */ o("th", {
|
|
132
132
|
className: "text-left p-3 font-medium",
|
|
133
133
|
children: "ID"
|
|
134
134
|
}),
|
|
135
|
-
/* @__PURE__ */
|
|
135
|
+
/* @__PURE__ */ o("th", {
|
|
136
136
|
className: "text-left p-3 font-medium",
|
|
137
137
|
children: "Title"
|
|
138
138
|
}),
|
|
139
|
-
/* @__PURE__ */
|
|
139
|
+
/* @__PURE__ */ o("th", {
|
|
140
140
|
className: "text-left p-3 font-medium",
|
|
141
141
|
children: "Asset"
|
|
142
142
|
}),
|
|
143
|
-
/* @__PURE__ */
|
|
143
|
+
/* @__PURE__ */ o("th", {
|
|
144
144
|
className: "text-left p-3 font-medium",
|
|
145
145
|
children: "Priority"
|
|
146
146
|
}),
|
|
147
|
-
/* @__PURE__ */
|
|
147
|
+
/* @__PURE__ */ o("th", {
|
|
148
148
|
className: "text-left p-3 font-medium",
|
|
149
149
|
children: "Status"
|
|
150
150
|
}),
|
|
151
|
-
/* @__PURE__ */
|
|
151
|
+
/* @__PURE__ */ o("th", {
|
|
152
152
|
className: "text-left p-3 font-medium",
|
|
153
153
|
children: "Assigned To"
|
|
154
154
|
})
|
|
155
155
|
]
|
|
156
|
-
}) }), /* @__PURE__ */
|
|
156
|
+
}) }), /* @__PURE__ */ o("tbody", { children: C.map((e) => /* @__PURE__ */ s("tr", {
|
|
157
157
|
className: "border-b hover:bg-bg-sunken/50 cursor-pointer",
|
|
158
158
|
children: [
|
|
159
|
-
/* @__PURE__ */
|
|
159
|
+
/* @__PURE__ */ o("td", {
|
|
160
160
|
className: "p-3 font-mono text-xs",
|
|
161
161
|
children: e.id
|
|
162
162
|
}),
|
|
163
|
-
/* @__PURE__ */
|
|
163
|
+
/* @__PURE__ */ s("td", {
|
|
164
164
|
className: "p-3",
|
|
165
|
-
children: [/* @__PURE__ */
|
|
165
|
+
children: [/* @__PURE__ */ o("p", {
|
|
166
166
|
className: "font-medium",
|
|
167
167
|
children: e.title
|
|
168
|
-
}), /* @__PURE__ */
|
|
168
|
+
}), /* @__PURE__ */ o("p", {
|
|
169
169
|
className: "text-xs text-text-secondary truncate max-w-xs",
|
|
170
170
|
children: e.description
|
|
171
171
|
})]
|
|
172
172
|
}),
|
|
173
|
-
/* @__PURE__ */
|
|
173
|
+
/* @__PURE__ */ o("td", {
|
|
174
174
|
className: "p-3 text-xs",
|
|
175
175
|
children: e.assetId || "—"
|
|
176
176
|
}),
|
|
177
|
-
/* @__PURE__ */
|
|
177
|
+
/* @__PURE__ */ o("td", {
|
|
178
178
|
className: "p-3",
|
|
179
|
-
children: /* @__PURE__ */
|
|
179
|
+
children: /* @__PURE__ */ o(c, {
|
|
180
180
|
variant: x[e.priority],
|
|
181
181
|
children: e.priority
|
|
182
182
|
})
|
|
183
183
|
}),
|
|
184
|
-
/* @__PURE__ */
|
|
184
|
+
/* @__PURE__ */ o("td", {
|
|
185
185
|
className: "p-3",
|
|
186
|
-
children: /* @__PURE__ */
|
|
186
|
+
children: /* @__PURE__ */ o(c, {
|
|
187
187
|
variant: "outline",
|
|
188
188
|
children: e.status.replace("_", " ")
|
|
189
189
|
})
|
|
190
190
|
}),
|
|
191
|
-
/* @__PURE__ */
|
|
191
|
+
/* @__PURE__ */ o("td", {
|
|
192
192
|
className: "p-3 text-xs",
|
|
193
193
|
children: e.assignedTo
|
|
194
194
|
})
|
|
@@ -198,93 +198,93 @@ function S() {
|
|
|
198
198
|
})
|
|
199
199
|
}) })
|
|
200
200
|
}),
|
|
201
|
-
/* @__PURE__ */
|
|
201
|
+
/* @__PURE__ */ o(v, {
|
|
202
202
|
value: "maintenance",
|
|
203
203
|
className: "mt-4",
|
|
204
|
-
children: w.length === 0 ? /* @__PURE__ */
|
|
204
|
+
children: w.length === 0 ? /* @__PURE__ */ o(m, {
|
|
205
205
|
illustration: "empty-generic",
|
|
206
206
|
title: "No maintenance scheduled",
|
|
207
207
|
description: "Scheduled and completed maintenance for your assets will appear here."
|
|
208
|
-
}) : /* @__PURE__ */
|
|
208
|
+
}) : /* @__PURE__ */ o(u, { children: /* @__PURE__ */ o(d, {
|
|
209
209
|
className: "p-0",
|
|
210
|
-
children: /* @__PURE__ */
|
|
210
|
+
children: /* @__PURE__ */ o("div", {
|
|
211
211
|
className: "overflow-x-auto",
|
|
212
|
-
children: /* @__PURE__ */
|
|
212
|
+
children: /* @__PURE__ */ s("table", {
|
|
213
213
|
className: "w-full text-sm",
|
|
214
|
-
children: [/* @__PURE__ */
|
|
214
|
+
children: [/* @__PURE__ */ o("thead", { children: /* @__PURE__ */ s("tr", {
|
|
215
215
|
className: "border-b bg-bg-sunken/50",
|
|
216
216
|
children: [
|
|
217
|
-
/* @__PURE__ */
|
|
217
|
+
/* @__PURE__ */ o("th", {
|
|
218
218
|
className: "text-left p-3 font-medium",
|
|
219
219
|
children: "ID"
|
|
220
220
|
}),
|
|
221
|
-
/* @__PURE__ */
|
|
221
|
+
/* @__PURE__ */ o("th", {
|
|
222
222
|
className: "text-left p-3 font-medium",
|
|
223
223
|
children: "Title"
|
|
224
224
|
}),
|
|
225
|
-
/* @__PURE__ */
|
|
225
|
+
/* @__PURE__ */ o("th", {
|
|
226
226
|
className: "text-left p-3 font-medium",
|
|
227
227
|
children: "Asset"
|
|
228
228
|
}),
|
|
229
|
-
/* @__PURE__ */
|
|
229
|
+
/* @__PURE__ */ o("th", {
|
|
230
230
|
className: "text-left p-3 font-medium",
|
|
231
231
|
children: "Type"
|
|
232
232
|
}),
|
|
233
|
-
/* @__PURE__ */
|
|
233
|
+
/* @__PURE__ */ o("th", {
|
|
234
234
|
className: "text-left p-3 font-medium",
|
|
235
235
|
children: "Priority"
|
|
236
236
|
}),
|
|
237
|
-
/* @__PURE__ */
|
|
237
|
+
/* @__PURE__ */ o("th", {
|
|
238
238
|
className: "text-left p-3 font-medium",
|
|
239
239
|
children: "Status"
|
|
240
240
|
}),
|
|
241
|
-
/* @__PURE__ */
|
|
241
|
+
/* @__PURE__ */ o("th", {
|
|
242
242
|
className: "text-left p-3 font-medium",
|
|
243
243
|
children: "Date"
|
|
244
244
|
}),
|
|
245
|
-
/* @__PURE__ */
|
|
245
|
+
/* @__PURE__ */ o("th", {
|
|
246
246
|
className: "text-right p-3 font-medium",
|
|
247
247
|
children: "Cost"
|
|
248
248
|
})
|
|
249
249
|
]
|
|
250
|
-
}) }), /* @__PURE__ */
|
|
250
|
+
}) }), /* @__PURE__ */ o("tbody", { children: w.map((e) => /* @__PURE__ */ s("tr", {
|
|
251
251
|
className: "border-b hover:bg-bg-sunken/50 cursor-pointer",
|
|
252
252
|
children: [
|
|
253
|
-
/* @__PURE__ */
|
|
253
|
+
/* @__PURE__ */ o("td", {
|
|
254
254
|
className: "p-3 font-mono text-xs",
|
|
255
255
|
children: e.id
|
|
256
256
|
}),
|
|
257
|
-
/* @__PURE__ */
|
|
257
|
+
/* @__PURE__ */ o("td", {
|
|
258
258
|
className: "p-3 font-medium",
|
|
259
259
|
children: e.title
|
|
260
260
|
}),
|
|
261
|
-
/* @__PURE__ */
|
|
261
|
+
/* @__PURE__ */ o("td", {
|
|
262
262
|
className: "p-3 text-xs",
|
|
263
263
|
children: e.assetId
|
|
264
264
|
}),
|
|
265
|
-
/* @__PURE__ */
|
|
265
|
+
/* @__PURE__ */ o("td", {
|
|
266
266
|
className: "p-3 capitalize text-xs",
|
|
267
267
|
children: e.type
|
|
268
268
|
}),
|
|
269
|
-
/* @__PURE__ */
|
|
269
|
+
/* @__PURE__ */ o("td", {
|
|
270
270
|
className: "p-3",
|
|
271
|
-
children: /* @__PURE__ */
|
|
271
|
+
children: /* @__PURE__ */ o(c, {
|
|
272
272
|
variant: x[e.priority],
|
|
273
273
|
children: e.priority
|
|
274
274
|
})
|
|
275
275
|
}),
|
|
276
|
-
/* @__PURE__ */
|
|
276
|
+
/* @__PURE__ */ o("td", {
|
|
277
277
|
className: "p-3",
|
|
278
|
-
children: /* @__PURE__ */
|
|
278
|
+
children: /* @__PURE__ */ o(c, {
|
|
279
279
|
variant: e.status === "completed" ? "default" : "outline",
|
|
280
280
|
children: e.status.replace("_", " ")
|
|
281
281
|
})
|
|
282
282
|
}),
|
|
283
|
-
/* @__PURE__ */
|
|
283
|
+
/* @__PURE__ */ o("td", {
|
|
284
284
|
className: "p-3 text-xs",
|
|
285
285
|
children: e.scheduledDate ? new Date(e.scheduledDate).toLocaleDateString() : "—"
|
|
286
286
|
}),
|
|
287
|
-
/* @__PURE__ */
|
|
287
|
+
/* @__PURE__ */ s("td", {
|
|
288
288
|
className: "p-3 text-right font-medium",
|
|
289
289
|
children: ["$", (e.actualCost ?? e.estimatedCost ?? 0).toLocaleString()]
|
|
290
290
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OperationsOperationsHubPage.js","names":[],"sources":["../../../src/assethandler/pages/OperationsOperationsHubPage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n GradientText,\n EmphasisPanel,\n PagePurpose,\n NextSteps,\n IllustratedEmptyState,\n} from '@burdenoff/fe-libs/ui';\nimport { Wrench, ClipboardList, AlertTriangle, Plus } from 'lucide-react';\nimport { useNavigate } from 'react-router-dom';\nimport { useAssetHandlerStore } from '../store/assethandlerStore';\n\nconst priorityColors: Record<string, 'destructive' | 'default' | 'secondary' | 'outline'> = {\n critical: 'destructive',\n high: 'destructive',\n medium: 'default',\n low: 'secondary',\n};\n\nexport function OperationsOperationsHubPage() {\n const navigate = useNavigate();\n const { workOrders, maintenanceRecords } = useAssetHandlerStore();\n\n const openWorkOrders = workOrders.filter(\n (w) => w.status !== 'completed' && w.status !== 'cancelled'\n );\n const scheduledMaintenance = maintenanceRecords.filter(\n (m) => m.status === 'scheduled' || m.status === 'in_progress'\n );\n const maintenanceCost = maintenanceRecords.reduce(\n (s, m) => s + (m.actualCost ?? m.estimatedCost ?? 0),\n 0\n );\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-bold\">\n <GradientText>Operations Hub</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">Work orders and maintenance operations</p>\n </div>\n <Button size=\"sm\">\n <Plus className=\"mr-2 h-4 w-4\" />\n New Work Order\n </Button>\n </div>\n\n <PagePurpose>\n Where the hands-on work gets coordinated: raise and assign work orders, run scheduled and\n breakdown maintenance, and keep an eye on cost. Use this hub to see what is open, what is\n critical, and what is due — so your team always knows what to fix next.\n </PagePurpose>\n\n <NextSteps\n storageKey=\"assethandler-operations-hub\"\n steps={[\n {\n id: 'scheduler',\n label: 'Plan preventive maintenance',\n description: 'Schedule upcoming maintenance before assets fail.',\n onClick: () => navigate('/maintenance/maintenance-scheduler'),\n },\n {\n id: 'calendar',\n label: 'View the maintenance calendar',\n description: 'Spot clashes and overdue jobs at a glance.',\n onClick: () => navigate('/maintenance/maintenance-calendar'),\n },\n {\n id: 'assets',\n label: 'Open the asset inventory',\n description: 'Jump to an asset to log a work order against it.',\n onClick: () => navigate('/assets/asset-list'),\n },\n ]}\n />\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n <EmphasisPanel>\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <ClipboardList className=\"h-4 w-4\" />\n Open Work Orders\n </div>\n <p className=\"text-2xl font-bold mt-1 tabular-nums\">{openWorkOrders.length}</p>\n </EmphasisPanel>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <Wrench className=\"h-4 w-4\" />\n Active Maintenance\n </div>\n <p className=\"text-2xl font-bold mt-1\">{scheduledMaintenance.length}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <AlertTriangle className=\"h-4 w-4\" />\n Critical\n </div>\n <p className=\"text-2xl font-bold mt-1 text-status-error-text\">\n {workOrders.filter((w) => w.priority === 'critical').length}\n </p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n Maintenance Cost\n </div>\n <p className=\"text-2xl font-bold mt-1\">${maintenanceCost.toLocaleString()}</p>\n </CardContent>\n </Card>\n </div>\n\n <Tabs defaultValue=\"work-orders\">\n <TabsList>\n <TabsTrigger value=\"work-orders\">Work Orders ({workOrders.length})</TabsTrigger>\n <TabsTrigger value=\"maintenance\">Maintenance ({maintenanceRecords.length})</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"work-orders\" className=\"mt-4\">\n {workOrders.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-generic\"\n title=\"No work orders\"\n description=\"Raise a work order when an asset needs repair, inspection or attention.\"\n />\n ) : (\n <Card>\n <CardContent className=\"p-0\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b bg-bg-sunken/50\">\n <th className=\"text-left p-3 font-medium\">ID</th>\n <th className=\"text-left p-3 font-medium\">Title</th>\n <th className=\"text-left p-3 font-medium\">Asset</th>\n <th className=\"text-left p-3 font-medium\">Priority</th>\n <th className=\"text-left p-3 font-medium\">Status</th>\n <th className=\"text-left p-3 font-medium\">Assigned To</th>\n </tr>\n </thead>\n <tbody>\n {workOrders.map((wo) => (\n <tr key={wo.id} className=\"border-b hover:bg-bg-sunken/50 cursor-pointer\">\n <td className=\"p-3 font-mono text-xs\">{wo.id}</td>\n <td className=\"p-3\">\n <p className=\"font-medium\">{wo.title}</p>\n <p className=\"text-xs text-text-secondary truncate max-w-xs\">\n {wo.description}\n </p>\n </td>\n <td className=\"p-3 text-xs\">{wo.assetId || '—'}</td>\n <td className=\"p-3\">\n <Badge variant={priorityColors[wo.priority]}>{wo.priority}</Badge>\n </td>\n <td className=\"p-3\">\n <Badge variant=\"outline\">{wo.status.replace('_', ' ')}</Badge>\n </td>\n <td className=\"p-3 text-xs\">{wo.assignedTo}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </CardContent>\n </Card>\n )}\n </TabsContent>\n\n <TabsContent value=\"maintenance\" className=\"mt-4\">\n {maintenanceRecords.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-generic\"\n title=\"No maintenance scheduled\"\n description=\"Scheduled and completed maintenance for your assets will appear here.\"\n />\n ) : (\n <Card>\n <CardContent className=\"p-0\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b bg-bg-sunken/50\">\n <th className=\"text-left p-3 font-medium\">ID</th>\n <th className=\"text-left p-3 font-medium\">Title</th>\n <th className=\"text-left p-3 font-medium\">Asset</th>\n <th className=\"text-left p-3 font-medium\">Type</th>\n <th className=\"text-left p-3 font-medium\">Priority</th>\n <th className=\"text-left p-3 font-medium\">Status</th>\n <th className=\"text-left p-3 font-medium\">Date</th>\n <th className=\"text-right p-3 font-medium\">Cost</th>\n </tr>\n </thead>\n <tbody>\n {maintenanceRecords.map((m) => (\n <tr key={m.id} className=\"border-b hover:bg-bg-sunken/50 cursor-pointer\">\n <td className=\"p-3 font-mono text-xs\">{m.id}</td>\n <td className=\"p-3 font-medium\">{m.title}</td>\n <td className=\"p-3 text-xs\">{m.assetId}</td>\n <td className=\"p-3 capitalize text-xs\">{m.type}</td>\n <td className=\"p-3\">\n <Badge variant={priorityColors[m.priority]}>{m.priority}</Badge>\n </td>\n <td className=\"p-3\">\n <Badge variant={m.status === 'completed' ? 'default' : 'outline'}>\n {m.status.replace('_', ' ')}\n </Badge>\n </td>\n <td className=\"p-3 text-xs\">\n {m.scheduledDate ? new Date(m.scheduledDate).toLocaleDateString() : '—'}\n </td>\n <td className=\"p-3 text-right font-medium\">\n ${(m.actualCost ?? m.estimatedCost ?? 0).toLocaleString()}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </CardContent>\n </Card>\n )}\n </TabsContent>\n </Tabs>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OperationsOperationsHubPage.js","names":[],"sources":["../../../src/assethandler/pages/OperationsOperationsHubPage.tsx"],"sourcesContent":["import { useAssetHandlerNavigate } from '../hooks/useAssetHandlerNavigate';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n GradientText,\n EmphasisPanel,\n PagePurpose,\n NextSteps,\n IllustratedEmptyState,\n} from '@burdenoff/fe-libs/ui';\nimport { Wrench, ClipboardList, AlertTriangle, Plus } from 'lucide-react';\nimport { useAssetHandlerStore } from '../store/assethandlerStore';\n\nconst priorityColors: Record<string, 'destructive' | 'default' | 'secondary' | 'outline'> = {\n critical: 'destructive',\n high: 'destructive',\n medium: 'default',\n low: 'secondary',\n};\n\nexport function OperationsOperationsHubPage() {\n const navigate = useAssetHandlerNavigate();\n const { workOrders, maintenanceRecords } = useAssetHandlerStore();\n\n const openWorkOrders = workOrders.filter(\n (w) => w.status !== 'completed' && w.status !== 'cancelled'\n );\n const scheduledMaintenance = maintenanceRecords.filter(\n (m) => m.status === 'scheduled' || m.status === 'in_progress'\n );\n const maintenanceCost = maintenanceRecords.reduce(\n (s, m) => s + (m.actualCost ?? m.estimatedCost ?? 0),\n 0\n );\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-bold\">\n <GradientText>Operations Hub</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">Work orders and maintenance operations</p>\n </div>\n <Button size=\"sm\">\n <Plus className=\"mr-2 h-4 w-4\" />\n New Work Order\n </Button>\n </div>\n\n <PagePurpose>\n Where the hands-on work gets coordinated: raise and assign work orders, run scheduled and\n breakdown maintenance, and keep an eye on cost. Use this hub to see what is open, what is\n critical, and what is due — so your team always knows what to fix next.\n </PagePurpose>\n\n <NextSteps\n storageKey=\"assethandler-operations-hub\"\n steps={[\n {\n id: 'scheduler',\n label: 'Plan preventive maintenance',\n description: 'Schedule upcoming maintenance before assets fail.',\n onClick: () => navigate('/maintenance/maintenance-scheduler'),\n },\n {\n id: 'calendar',\n label: 'View the maintenance calendar',\n description: 'Spot clashes and overdue jobs at a glance.',\n onClick: () => navigate('/maintenance/maintenance-calendar'),\n },\n {\n id: 'assets',\n label: 'Open the asset inventory',\n description: 'Jump to an asset to log a work order against it.',\n onClick: () => navigate('/assets/asset-list'),\n },\n ]}\n />\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n <EmphasisPanel>\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <ClipboardList className=\"h-4 w-4\" />\n Open Work Orders\n </div>\n <p className=\"text-2xl font-bold mt-1 tabular-nums\">{openWorkOrders.length}</p>\n </EmphasisPanel>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <Wrench className=\"h-4 w-4\" />\n Active Maintenance\n </div>\n <p className=\"text-2xl font-bold mt-1\">{scheduledMaintenance.length}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <AlertTriangle className=\"h-4 w-4\" />\n Critical\n </div>\n <p className=\"text-2xl font-bold mt-1 text-status-error-text\">\n {workOrders.filter((w) => w.priority === 'critical').length}\n </p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n Maintenance Cost\n </div>\n <p className=\"text-2xl font-bold mt-1\">${maintenanceCost.toLocaleString()}</p>\n </CardContent>\n </Card>\n </div>\n\n <Tabs defaultValue=\"work-orders\">\n <TabsList>\n <TabsTrigger value=\"work-orders\">Work Orders ({workOrders.length})</TabsTrigger>\n <TabsTrigger value=\"maintenance\">Maintenance ({maintenanceRecords.length})</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"work-orders\" className=\"mt-4\">\n {workOrders.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-generic\"\n title=\"No work orders\"\n description=\"Raise a work order when an asset needs repair, inspection or attention.\"\n />\n ) : (\n <Card>\n <CardContent className=\"p-0\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b bg-bg-sunken/50\">\n <th className=\"text-left p-3 font-medium\">ID</th>\n <th className=\"text-left p-3 font-medium\">Title</th>\n <th className=\"text-left p-3 font-medium\">Asset</th>\n <th className=\"text-left p-3 font-medium\">Priority</th>\n <th className=\"text-left p-3 font-medium\">Status</th>\n <th className=\"text-left p-3 font-medium\">Assigned To</th>\n </tr>\n </thead>\n <tbody>\n {workOrders.map((wo) => (\n <tr key={wo.id} className=\"border-b hover:bg-bg-sunken/50 cursor-pointer\">\n <td className=\"p-3 font-mono text-xs\">{wo.id}</td>\n <td className=\"p-3\">\n <p className=\"font-medium\">{wo.title}</p>\n <p className=\"text-xs text-text-secondary truncate max-w-xs\">\n {wo.description}\n </p>\n </td>\n <td className=\"p-3 text-xs\">{wo.assetId || '—'}</td>\n <td className=\"p-3\">\n <Badge variant={priorityColors[wo.priority]}>{wo.priority}</Badge>\n </td>\n <td className=\"p-3\">\n <Badge variant=\"outline\">{wo.status.replace('_', ' ')}</Badge>\n </td>\n <td className=\"p-3 text-xs\">{wo.assignedTo}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </CardContent>\n </Card>\n )}\n </TabsContent>\n\n <TabsContent value=\"maintenance\" className=\"mt-4\">\n {maintenanceRecords.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-generic\"\n title=\"No maintenance scheduled\"\n description=\"Scheduled and completed maintenance for your assets will appear here.\"\n />\n ) : (\n <Card>\n <CardContent className=\"p-0\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b bg-bg-sunken/50\">\n <th className=\"text-left p-3 font-medium\">ID</th>\n <th className=\"text-left p-3 font-medium\">Title</th>\n <th className=\"text-left p-3 font-medium\">Asset</th>\n <th className=\"text-left p-3 font-medium\">Type</th>\n <th className=\"text-left p-3 font-medium\">Priority</th>\n <th className=\"text-left p-3 font-medium\">Status</th>\n <th className=\"text-left p-3 font-medium\">Date</th>\n <th className=\"text-right p-3 font-medium\">Cost</th>\n </tr>\n </thead>\n <tbody>\n {maintenanceRecords.map((m) => (\n <tr key={m.id} className=\"border-b hover:bg-bg-sunken/50 cursor-pointer\">\n <td className=\"p-3 font-mono text-xs\">{m.id}</td>\n <td className=\"p-3 font-medium\">{m.title}</td>\n <td className=\"p-3 text-xs\">{m.assetId}</td>\n <td className=\"p-3 capitalize text-xs\">{m.type}</td>\n <td className=\"p-3\">\n <Badge variant={priorityColors[m.priority]}>{m.priority}</Badge>\n </td>\n <td className=\"p-3\">\n <Badge variant={m.status === 'completed' ? 'default' : 'outline'}>\n {m.status.replace('_', ' ')}\n </Badge>\n </td>\n <td className=\"p-3 text-xs\">\n {m.scheduledDate ? new Date(m.scheduledDate).toLocaleDateString() : '—'}\n </td>\n <td className=\"p-3 text-right font-medium\">\n ${(m.actualCost ?? m.estimatedCost ?? 0).toLocaleString()}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </CardContent>\n </Card>\n )}\n </TabsContent>\n </Tabs>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { useAssetHandlerStore as e } from "../store/assethandlerStore.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { jsx as
|
|
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/OperationsWorkOrderDetailPage.tsx
|
|
7
8
|
var v = {
|
|
8
9
|
critical: "destructive",
|
|
@@ -11,84 +12,84 @@ var v = {
|
|
|
11
12
|
low: "secondary"
|
|
12
13
|
};
|
|
13
14
|
function y() {
|
|
14
|
-
let y =
|
|
15
|
-
return S ? /* @__PURE__ */
|
|
15
|
+
let y = t(), { workOrderId: b } = i(), { workOrders: x } = e(), S = x.find((e) => e.id === b) ?? x[0];
|
|
16
|
+
return S ? /* @__PURE__ */ o("div", {
|
|
16
17
|
className: "space-y-6 p-6",
|
|
17
18
|
children: [
|
|
18
|
-
/* @__PURE__ */
|
|
19
|
+
/* @__PURE__ */ o("div", {
|
|
19
20
|
className: "flex items-center justify-between",
|
|
20
|
-
children: [/* @__PURE__ */
|
|
21
|
+
children: [/* @__PURE__ */ o("div", {
|
|
21
22
|
className: "flex items-center gap-4",
|
|
22
|
-
children: [/* @__PURE__ */
|
|
23
|
+
children: [/* @__PURE__ */ a(c, {
|
|
23
24
|
variant: "ghost",
|
|
24
25
|
size: "icon",
|
|
25
26
|
onClick: () => y("/operations/operations-hub"),
|
|
26
|
-
children: /* @__PURE__ */
|
|
27
|
-
}), /* @__PURE__ */
|
|
27
|
+
children: /* @__PURE__ */ a(n, { className: "h-4 w-4" })
|
|
28
|
+
}), /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ o("div", {
|
|
28
29
|
className: "flex items-center gap-3",
|
|
29
30
|
children: [
|
|
30
|
-
/* @__PURE__ */
|
|
31
|
+
/* @__PURE__ */ a("h1", {
|
|
31
32
|
className: "text-2xl font-bold",
|
|
32
|
-
children: /* @__PURE__ */
|
|
33
|
+
children: /* @__PURE__ */ a(m, { children: S.id })
|
|
33
34
|
}),
|
|
34
|
-
/* @__PURE__ */
|
|
35
|
+
/* @__PURE__ */ a(s, {
|
|
35
36
|
variant: v[S.priority],
|
|
36
37
|
children: S.priority
|
|
37
38
|
}),
|
|
38
|
-
/* @__PURE__ */
|
|
39
|
+
/* @__PURE__ */ a(s, {
|
|
39
40
|
variant: "outline",
|
|
40
41
|
children: S.status.replace("_", " ")
|
|
41
42
|
})
|
|
42
43
|
]
|
|
43
|
-
}), /* @__PURE__ */
|
|
44
|
+
}), /* @__PURE__ */ a("p", {
|
|
44
45
|
className: "text-sm text-text-secondary mt-1",
|
|
45
46
|
children: S.title
|
|
46
47
|
})] })]
|
|
47
|
-
}), /* @__PURE__ */
|
|
48
|
+
}), /* @__PURE__ */ o(c, {
|
|
48
49
|
size: "sm",
|
|
49
|
-
children: [/* @__PURE__ */
|
|
50
|
+
children: [/* @__PURE__ */ a(r, { className: "mr-2 h-4 w-4" }), "Complete"]
|
|
50
51
|
})]
|
|
51
52
|
}),
|
|
52
|
-
/* @__PURE__ */ g
|
|
53
|
-
/* @__PURE__ */
|
|
53
|
+
/* @__PURE__ */ a(g, { children: "The full brief for a single work order: what needs doing, on which asset and by whom. Use this page to track the job from open to complete and keep the asset's maintenance history accurate." }),
|
|
54
|
+
/* @__PURE__ */ o("div", {
|
|
54
55
|
className: "grid gap-6 lg:grid-cols-3",
|
|
55
|
-
children: [/* @__PURE__ */
|
|
56
|
+
children: [/* @__PURE__ */ o(p, {
|
|
56
57
|
className: "lg:col-span-2",
|
|
57
|
-
children: [/* @__PURE__ */
|
|
58
|
+
children: [/* @__PURE__ */ a(d, {
|
|
58
59
|
className: "px-0 pt-0",
|
|
59
|
-
children: /* @__PURE__ */
|
|
60
|
-
}), /* @__PURE__ */
|
|
60
|
+
children: /* @__PURE__ */ a(f, { children: "Work Order Details" })
|
|
61
|
+
}), /* @__PURE__ */ o(u, {
|
|
61
62
|
className: "space-y-4 px-0 pb-0",
|
|
62
63
|
children: [
|
|
63
|
-
/* @__PURE__ */
|
|
64
|
+
/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("h4", {
|
|
64
65
|
className: "text-sm font-medium text-text-secondary",
|
|
65
66
|
children: "Description"
|
|
66
|
-
}), /* @__PURE__ */
|
|
67
|
+
}), /* @__PURE__ */ a("p", {
|
|
67
68
|
className: "text-sm mt-1",
|
|
68
69
|
children: S.description
|
|
69
70
|
})] }),
|
|
70
|
-
/* @__PURE__ */
|
|
71
|
-
/* @__PURE__ */
|
|
71
|
+
/* @__PURE__ */ a(_, {}),
|
|
72
|
+
/* @__PURE__ */ o("div", {
|
|
72
73
|
className: "grid grid-cols-2 gap-4 text-sm",
|
|
73
74
|
children: [
|
|
74
|
-
/* @__PURE__ */
|
|
75
|
+
/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("span", {
|
|
75
76
|
className: "text-text-secondary",
|
|
76
77
|
children: "Asset"
|
|
77
|
-
}), /* @__PURE__ */
|
|
78
|
+
}), /* @__PURE__ */ a("p", {
|
|
78
79
|
className: "font-medium",
|
|
79
80
|
children: S.assetId || "Unassigned"
|
|
80
81
|
})] }),
|
|
81
|
-
/* @__PURE__ */
|
|
82
|
+
/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("span", {
|
|
82
83
|
className: "text-text-secondary",
|
|
83
84
|
children: "Type"
|
|
84
|
-
}), /* @__PURE__ */
|
|
85
|
+
}), /* @__PURE__ */ a("p", {
|
|
85
86
|
className: "font-medium",
|
|
86
87
|
children: S.type
|
|
87
88
|
})] }),
|
|
88
|
-
/* @__PURE__ */
|
|
89
|
+
/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("span", {
|
|
89
90
|
className: "text-text-secondary",
|
|
90
91
|
children: "Created"
|
|
91
|
-
}), /* @__PURE__ */
|
|
92
|
+
}), /* @__PURE__ */ a("p", {
|
|
92
93
|
className: "font-medium",
|
|
93
94
|
children: S.createdAt ? new Date(S.createdAt).toLocaleDateString() : "—"
|
|
94
95
|
})] })
|
|
@@ -96,38 +97,38 @@ function y() {
|
|
|
96
97
|
})
|
|
97
98
|
]
|
|
98
99
|
})]
|
|
99
|
-
}), /* @__PURE__ */
|
|
100
|
+
}), /* @__PURE__ */ o(l, { children: [/* @__PURE__ */ a(d, { children: /* @__PURE__ */ a(f, {
|
|
100
101
|
className: "text-base",
|
|
101
102
|
children: "Assignment"
|
|
102
|
-
}) }), /* @__PURE__ */
|
|
103
|
+
}) }), /* @__PURE__ */ a(u, { children: /* @__PURE__ */ o("dl", {
|
|
103
104
|
className: "space-y-3 text-sm",
|
|
104
105
|
children: [
|
|
105
|
-
/* @__PURE__ */
|
|
106
|
+
/* @__PURE__ */ o("div", {
|
|
106
107
|
className: "flex justify-between",
|
|
107
|
-
children: [/* @__PURE__ */
|
|
108
|
+
children: [/* @__PURE__ */ a("dt", {
|
|
108
109
|
className: "text-text-secondary",
|
|
109
110
|
children: "Assigned To"
|
|
110
|
-
}), /* @__PURE__ */
|
|
111
|
+
}), /* @__PURE__ */ a("dd", {
|
|
111
112
|
className: "text-xs font-medium",
|
|
112
113
|
children: S.assignedTo
|
|
113
114
|
})]
|
|
114
115
|
}),
|
|
115
|
-
/* @__PURE__ */
|
|
116
|
+
/* @__PURE__ */ o("div", {
|
|
116
117
|
className: "flex justify-between",
|
|
117
|
-
children: [/* @__PURE__ */
|
|
118
|
+
children: [/* @__PURE__ */ a("dt", {
|
|
118
119
|
className: "text-text-secondary",
|
|
119
120
|
children: "Priority"
|
|
120
|
-
}), /* @__PURE__ */
|
|
121
|
+
}), /* @__PURE__ */ a("dd", { children: /* @__PURE__ */ a(s, {
|
|
121
122
|
variant: v[S.priority],
|
|
122
123
|
children: S.priority
|
|
123
124
|
}) })]
|
|
124
125
|
}),
|
|
125
|
-
/* @__PURE__ */
|
|
126
|
+
/* @__PURE__ */ o("div", {
|
|
126
127
|
className: "flex justify-between",
|
|
127
|
-
children: [/* @__PURE__ */
|
|
128
|
+
children: [/* @__PURE__ */ a("dt", {
|
|
128
129
|
className: "text-text-secondary",
|
|
129
130
|
children: "Status"
|
|
130
|
-
}), /* @__PURE__ */
|
|
131
|
+
}), /* @__PURE__ */ a("dd", { children: /* @__PURE__ */ a(s, {
|
|
131
132
|
variant: "outline",
|
|
132
133
|
children: S.status.replace("_", " ")
|
|
133
134
|
}) })]
|
|
@@ -136,13 +137,13 @@ function y() {
|
|
|
136
137
|
}) })] })]
|
|
137
138
|
})
|
|
138
139
|
]
|
|
139
|
-
}) : /* @__PURE__ */
|
|
140
|
+
}) : /* @__PURE__ */ a("div", {
|
|
140
141
|
className: "p-6",
|
|
141
|
-
children: /* @__PURE__ */
|
|
142
|
+
children: /* @__PURE__ */ a(h, {
|
|
142
143
|
illustration: "empty-search",
|
|
143
144
|
title: "Work order not found",
|
|
144
145
|
description: "This work order may have been completed or removed. Return to the operations hub to find it.",
|
|
145
|
-
action: /* @__PURE__ */
|
|
146
|
+
action: /* @__PURE__ */ a(c, {
|
|
146
147
|
size: "sm",
|
|
147
148
|
onClick: () => y("/operations/operations-hub"),
|
|
148
149
|
children: "Back to operations"
|