@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.
- package/dist/assethandler/pages/AiPredictionsPage.js +42 -41
- package/dist/assethandler/pages/AiPredictionsPage.js.map +1 -1
- package/dist/assethandler/pages/AnalyticsPage.js +538 -534
- package/dist/assethandler/pages/AnalyticsPage.js.map +1 -1
- package/dist/assethandler/pages/AssetsAssetCategoriesPage.js +135 -125
- 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 +214 -185
- 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 +207 -187
- 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 +93 -91
- package/dist/assethandler/pages/AuditTrailPage.js.map +1 -1
- package/dist/assethandler/pages/CmdbBrowserPage.js +32 -33
- package/dist/assethandler/pages/CmdbBrowserPage.js.map +1 -1
- package/dist/assethandler/pages/DashboardPage.js +157 -126
- package/dist/assethandler/pages/DashboardPage.js.map +1 -1
- package/dist/assethandler/pages/DigitalTwinPage.js +25 -26
- package/dist/assethandler/pages/DigitalTwinPage.js.map +1 -1
- package/dist/assethandler/pages/DiscoveryJobsPage.js +50 -50
- package/dist/assethandler/pages/DiscoveryJobsPage.js.map +1 -1
- package/dist/assethandler/pages/EsgDashboardPage.js +43 -42
- package/dist/assethandler/pages/EsgDashboardPage.js.map +1 -1
- package/dist/assethandler/pages/FinanceBudgetDetailPage.js +96 -82
- package/dist/assethandler/pages/FinanceBudgetDetailPage.js.map +1 -1
- package/dist/assethandler/pages/FinanceFinanceHubPage.js +137 -103
- 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 +34 -35
- 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 +66 -64
- 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 +99 -97
- package/dist/assethandler/pages/ItilIncidentManagementPage.js.map +1 -1
- package/dist/assethandler/pages/ItilItilhubPage.js +166 -122
- 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 +63 -61
- package/dist/assethandler/pages/ItilProblemManagementPage.js.map +1 -1
- package/dist/assethandler/pages/KnowledgeBasePage.js +45 -43
- package/dist/assethandler/pages/KnowledgeBasePage.js.map +1 -1
- package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.js +70 -68
- 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 +64 -57
- 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 +125 -95
- 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 +83 -81
- package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js.map +1 -1
- package/dist/assethandler/pages/ProvenancePage.js +56 -53
- 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 +112 -77
- 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 +32 -33
- package/dist/assethandler/pages/SamLicensesPage.js.map +1 -1
- package/dist/assethandler/pages/SecurityComplianceDetailPage.js +60 -52
- 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 +63 -57
- 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 +147 -113
- 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 +118 -116
- package/dist/assethandler/pages/TransactionsTransactionListPage.js.map +1 -1
- package/dist/assethandler/pages/UsersPage.js +108 -99
- 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 +128 -93
- 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 +88 -86
- package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.js.map +1 -1
- package/dist/assethandler/pages/WorkflowsWorkflowListPage.js +68 -60
- package/dist/assethandler/pages/WorkflowsWorkflowListPage.js.map +1 -1
- package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.js +71 -68
- package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,125 +1,123 @@
|
|
|
1
1
|
import { useAssetHandlerStore as e } from "../store/assethandlerStore.js";
|
|
2
2
|
import { useState as t } from "react";
|
|
3
3
|
import { AlertTriangle as n, ArrowDownToLine as r, ArrowUpFromLine as i, Clock as a, Search as o } from "lucide-react";
|
|
4
|
-
import { Badge as s, Button as c, Card as l, CardContent as u,
|
|
5
|
-
import { jsx as
|
|
4
|
+
import { Badge as s, Button as c, Card as l, CardContent as u, EmphasisPanel as d, GradientText as f, IllustratedEmptyState as p, Input as m, PagePurpose as h, Tabs as g, TabsContent as _, TabsList as v, TabsTrigger as y } from "@burdenoff/fe-libs/ui";
|
|
5
|
+
import { jsx as b, jsxs as x } from "react/jsx-runtime";
|
|
6
6
|
//#region src/assethandler/pages/AssetsAssetCheckInOutPage.tsx
|
|
7
|
-
var
|
|
7
|
+
var S = {
|
|
8
8
|
active: "default",
|
|
9
9
|
returned: "secondary",
|
|
10
10
|
overdue: "destructive"
|
|
11
11
|
};
|
|
12
|
-
function
|
|
13
|
-
let { checkInOutRecords:
|
|
14
|
-
return /* @__PURE__ */
|
|
12
|
+
function C() {
|
|
13
|
+
let { checkInOutRecords: C } = e(), [w, T] = t(""), E = C.filter((e) => e.status === "active"), D = C.filter((e) => e.status === "overdue"), O = C.filter((e) => e.status === "returned"), k = C.filter((e) => w === "" || e.assetName.toLowerCase().includes(w.toLowerCase()) || e.userName.toLowerCase().includes(w.toLowerCase()));
|
|
14
|
+
return /* @__PURE__ */ x("div", {
|
|
15
15
|
className: "space-y-6 p-6",
|
|
16
16
|
children: [
|
|
17
|
-
/* @__PURE__ */
|
|
17
|
+
/* @__PURE__ */ x("div", {
|
|
18
18
|
className: "flex items-center justify-between",
|
|
19
|
-
children: [/* @__PURE__ */
|
|
19
|
+
children: [/* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("h1", {
|
|
20
20
|
className: "text-2xl font-bold",
|
|
21
|
-
children: /* @__PURE__ */
|
|
22
|
-
}), /* @__PURE__ */
|
|
21
|
+
children: /* @__PURE__ */ b(f, { children: "Asset Check-In / Check-Out" })
|
|
22
|
+
}), /* @__PURE__ */ b("p", {
|
|
23
23
|
className: "text-sm text-text-secondary",
|
|
24
24
|
children: "Manage asset assignments and returns"
|
|
25
|
-
})] }), /* @__PURE__ */
|
|
25
|
+
})] }), /* @__PURE__ */ x("div", {
|
|
26
26
|
className: "flex gap-2",
|
|
27
|
-
children: [/* @__PURE__ */
|
|
27
|
+
children: [/* @__PURE__ */ x(c, {
|
|
28
28
|
variant: "outline",
|
|
29
29
|
size: "sm",
|
|
30
|
-
children: [/* @__PURE__ */
|
|
31
|
-
}), /* @__PURE__ */
|
|
30
|
+
children: [/* @__PURE__ */ b(r, { className: "mr-2 h-4 w-4" }), "Check In"]
|
|
31
|
+
}), /* @__PURE__ */ x(c, {
|
|
32
32
|
size: "sm",
|
|
33
|
-
children: [/* @__PURE__ */
|
|
33
|
+
children: [/* @__PURE__ */ b(i, { className: "mr-2 h-4 w-4" }), "Check Out"]
|
|
34
34
|
})]
|
|
35
35
|
})]
|
|
36
36
|
}),
|
|
37
|
-
/* @__PURE__ */
|
|
37
|
+
/* @__PURE__ */ b(h, { children: "Know who has what, right now. Check assets out to people for a job or loan period and check them back in on return — with condition logged each way. Use it to chase overdue items and make sure nothing walks off without a trace." }),
|
|
38
|
+
/* @__PURE__ */ x("div", {
|
|
38
39
|
className: "grid gap-4 md:grid-cols-4",
|
|
39
40
|
children: [
|
|
40
|
-
/* @__PURE__ */
|
|
41
|
+
/* @__PURE__ */ x(d, { children: [/* @__PURE__ */ x("div", {
|
|
42
|
+
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
43
|
+
children: [/* @__PURE__ */ b(i, { className: "h-4 w-4" }), "Active Checkouts"]
|
|
44
|
+
}), /* @__PURE__ */ b("p", {
|
|
45
|
+
className: "text-2xl font-bold mt-1 tabular-nums",
|
|
46
|
+
children: E.length
|
|
47
|
+
})] }),
|
|
48
|
+
/* @__PURE__ */ b(l, { children: /* @__PURE__ */ x(u, {
|
|
41
49
|
className: "pt-4",
|
|
42
|
-
children: [/* @__PURE__ */
|
|
50
|
+
children: [/* @__PURE__ */ x("div", {
|
|
43
51
|
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
44
|
-
children: [/* @__PURE__ */
|
|
45
|
-
}), /* @__PURE__ */
|
|
46
|
-
className: "text-2xl font-bold mt-1",
|
|
47
|
-
children: C.length
|
|
48
|
-
})]
|
|
49
|
-
}) }),
|
|
50
|
-
/* @__PURE__ */ _(l, { children: /* @__PURE__ */ v(u, {
|
|
51
|
-
className: "pt-4",
|
|
52
|
-
children: [/* @__PURE__ */ v("div", {
|
|
53
|
-
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
54
|
-
children: [/* @__PURE__ */ _(n, { className: "h-4 w-4 text-status-error-text" }), "Overdue"]
|
|
55
|
-
}), /* @__PURE__ */ _("p", {
|
|
52
|
+
children: [/* @__PURE__ */ b(n, { className: "h-4 w-4 text-status-error-text" }), "Overdue"]
|
|
53
|
+
}), /* @__PURE__ */ b("p", {
|
|
56
54
|
className: "text-2xl font-bold mt-1 text-status-error-text",
|
|
57
|
-
children:
|
|
55
|
+
children: D.length
|
|
58
56
|
})]
|
|
59
57
|
}) }),
|
|
60
|
-
/* @__PURE__ */
|
|
58
|
+
/* @__PURE__ */ b(l, { children: /* @__PURE__ */ x(u, {
|
|
61
59
|
className: "pt-4",
|
|
62
|
-
children: [/* @__PURE__ */
|
|
60
|
+
children: [/* @__PURE__ */ x("div", {
|
|
63
61
|
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
64
|
-
children: [/* @__PURE__ */
|
|
65
|
-
}), /* @__PURE__ */
|
|
62
|
+
children: [/* @__PURE__ */ b(r, { className: "h-4 w-4" }), "Returned"]
|
|
63
|
+
}), /* @__PURE__ */ b("p", {
|
|
66
64
|
className: "text-2xl font-bold mt-1",
|
|
67
|
-
children:
|
|
65
|
+
children: O.length
|
|
68
66
|
})]
|
|
69
67
|
}) }),
|
|
70
|
-
/* @__PURE__ */
|
|
68
|
+
/* @__PURE__ */ b(l, { children: /* @__PURE__ */ x(u, {
|
|
71
69
|
className: "pt-4",
|
|
72
|
-
children: [/* @__PURE__ */
|
|
70
|
+
children: [/* @__PURE__ */ x("div", {
|
|
73
71
|
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
74
|
-
children: [/* @__PURE__ */
|
|
75
|
-
}), /* @__PURE__ */
|
|
72
|
+
children: [/* @__PURE__ */ b(a, { className: "h-4 w-4" }), "Total Records"]
|
|
73
|
+
}), /* @__PURE__ */ b("p", {
|
|
76
74
|
className: "text-2xl font-bold mt-1",
|
|
77
|
-
children:
|
|
75
|
+
children: C.length
|
|
78
76
|
})]
|
|
79
77
|
}) })
|
|
80
78
|
]
|
|
81
79
|
}),
|
|
82
|
-
/* @__PURE__ */
|
|
80
|
+
/* @__PURE__ */ x("div", {
|
|
83
81
|
className: "relative max-w-md",
|
|
84
|
-
children: [/* @__PURE__ */
|
|
82
|
+
children: [/* @__PURE__ */ b(o, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ b(m, {
|
|
85
83
|
placeholder: "Search by asset or user name...",
|
|
86
|
-
value:
|
|
87
|
-
onChange: (e) =>
|
|
84
|
+
value: w,
|
|
85
|
+
onChange: (e) => T(e.target.value),
|
|
88
86
|
className: "pl-9"
|
|
89
87
|
})]
|
|
90
88
|
}),
|
|
91
|
-
/* @__PURE__ */
|
|
89
|
+
/* @__PURE__ */ x(g, {
|
|
92
90
|
defaultValue: "all",
|
|
93
|
-
children: [/* @__PURE__ */ v
|
|
94
|
-
/* @__PURE__ */
|
|
91
|
+
children: [/* @__PURE__ */ x(v, { children: [
|
|
92
|
+
/* @__PURE__ */ x(y, {
|
|
95
93
|
value: "all",
|
|
96
94
|
children: [
|
|
97
95
|
"All (",
|
|
98
|
-
|
|
96
|
+
k.length,
|
|
99
97
|
")"
|
|
100
98
|
]
|
|
101
99
|
}),
|
|
102
|
-
/* @__PURE__ */
|
|
100
|
+
/* @__PURE__ */ x(y, {
|
|
103
101
|
value: "active",
|
|
104
102
|
children: [
|
|
105
103
|
"Active (",
|
|
106
|
-
|
|
104
|
+
E.length,
|
|
107
105
|
")"
|
|
108
106
|
]
|
|
109
107
|
}),
|
|
110
|
-
/* @__PURE__ */
|
|
108
|
+
/* @__PURE__ */ x(y, {
|
|
111
109
|
value: "overdue",
|
|
112
110
|
children: [
|
|
113
111
|
"Overdue (",
|
|
114
|
-
|
|
112
|
+
D.length,
|
|
115
113
|
")"
|
|
116
114
|
]
|
|
117
115
|
}),
|
|
118
|
-
/* @__PURE__ */
|
|
116
|
+
/* @__PURE__ */ x(y, {
|
|
119
117
|
value: "returned",
|
|
120
118
|
children: [
|
|
121
119
|
"Returned (",
|
|
122
|
-
|
|
120
|
+
O.length,
|
|
123
121
|
")"
|
|
124
122
|
]
|
|
125
123
|
})
|
|
@@ -129,112 +127,112 @@ function b() {
|
|
|
129
127
|
"overdue",
|
|
130
128
|
"returned"
|
|
131
129
|
].map((e) => {
|
|
132
|
-
let t = e === "all" ?
|
|
133
|
-
return /* @__PURE__ */ _
|
|
130
|
+
let t = e === "all" ? k : k.filter((t) => t.status === e);
|
|
131
|
+
return /* @__PURE__ */ b(_, {
|
|
134
132
|
value: e,
|
|
135
133
|
className: "mt-4",
|
|
136
|
-
children: /* @__PURE__ */
|
|
134
|
+
children: /* @__PURE__ */ b(l, { children: /* @__PURE__ */ b(u, {
|
|
137
135
|
className: "p-0",
|
|
138
|
-
children: /* @__PURE__ */
|
|
136
|
+
children: /* @__PURE__ */ x("div", {
|
|
139
137
|
className: "overflow-x-auto",
|
|
140
|
-
children: /* @__PURE__ */
|
|
138
|
+
children: [/* @__PURE__ */ x("table", {
|
|
141
139
|
className: "w-full text-sm",
|
|
142
|
-
children: [/* @__PURE__ */
|
|
140
|
+
children: [/* @__PURE__ */ b("thead", { children: /* @__PURE__ */ x("tr", {
|
|
143
141
|
className: "border-b bg-bg-sunken/50",
|
|
144
142
|
children: [
|
|
145
|
-
/* @__PURE__ */
|
|
143
|
+
/* @__PURE__ */ b("th", {
|
|
146
144
|
className: "text-left p-3 font-medium",
|
|
147
145
|
children: "ID"
|
|
148
146
|
}),
|
|
149
|
-
/* @__PURE__ */
|
|
147
|
+
/* @__PURE__ */ b("th", {
|
|
150
148
|
className: "text-left p-3 font-medium",
|
|
151
149
|
children: "Type"
|
|
152
150
|
}),
|
|
153
|
-
/* @__PURE__ */
|
|
151
|
+
/* @__PURE__ */ b("th", {
|
|
154
152
|
className: "text-left p-3 font-medium",
|
|
155
153
|
children: "Asset"
|
|
156
154
|
}),
|
|
157
|
-
/* @__PURE__ */
|
|
155
|
+
/* @__PURE__ */ b("th", {
|
|
158
156
|
className: "text-left p-3 font-medium",
|
|
159
157
|
children: "User"
|
|
160
158
|
}),
|
|
161
|
-
/* @__PURE__ */
|
|
159
|
+
/* @__PURE__ */ b("th", {
|
|
162
160
|
className: "text-left p-3 font-medium",
|
|
163
161
|
children: "Date"
|
|
164
162
|
}),
|
|
165
|
-
/* @__PURE__ */
|
|
163
|
+
/* @__PURE__ */ b("th", {
|
|
166
164
|
className: "text-left p-3 font-medium",
|
|
167
165
|
children: "Expected Return"
|
|
168
166
|
}),
|
|
169
|
-
/* @__PURE__ */
|
|
167
|
+
/* @__PURE__ */ b("th", {
|
|
170
168
|
className: "text-left p-3 font-medium",
|
|
171
169
|
children: "Condition"
|
|
172
170
|
}),
|
|
173
|
-
/* @__PURE__ */
|
|
171
|
+
/* @__PURE__ */ b("th", {
|
|
174
172
|
className: "text-left p-3 font-medium",
|
|
175
173
|
children: "Status"
|
|
176
174
|
})
|
|
177
175
|
]
|
|
178
|
-
}) }), /* @__PURE__ */
|
|
176
|
+
}) }), /* @__PURE__ */ b("tbody", { children: t.map((e) => /* @__PURE__ */ x("tr", {
|
|
179
177
|
className: "border-b hover:bg-bg-sunken/50",
|
|
180
178
|
children: [
|
|
181
|
-
/* @__PURE__ */
|
|
179
|
+
/* @__PURE__ */ b("td", {
|
|
182
180
|
className: "p-3 font-mono text-xs",
|
|
183
181
|
children: e.id
|
|
184
182
|
}),
|
|
185
|
-
/* @__PURE__ */
|
|
183
|
+
/* @__PURE__ */ b("td", {
|
|
186
184
|
className: "p-3",
|
|
187
|
-
children: /* @__PURE__ */
|
|
185
|
+
children: /* @__PURE__ */ x("div", {
|
|
188
186
|
className: "flex items-center gap-1.5",
|
|
189
|
-
children: [e.type === "check_out" ? /* @__PURE__ */
|
|
187
|
+
children: [e.type === "check_out" ? /* @__PURE__ */ b(i, { className: "h-3.5 w-3.5 text-status-info-text" }) : /* @__PURE__ */ b(r, { className: "h-3.5 w-3.5 text-status-success-text" }), /* @__PURE__ */ b("span", {
|
|
190
188
|
className: "capitalize text-xs",
|
|
191
189
|
children: e.type.replace("_", " ")
|
|
192
190
|
})]
|
|
193
191
|
})
|
|
194
192
|
}),
|
|
195
|
-
/* @__PURE__ */
|
|
193
|
+
/* @__PURE__ */ x("td", {
|
|
196
194
|
className: "p-3",
|
|
197
|
-
children: [/* @__PURE__ */
|
|
195
|
+
children: [/* @__PURE__ */ b("p", {
|
|
198
196
|
className: "font-medium",
|
|
199
197
|
children: e.assetName
|
|
200
|
-
}), /* @__PURE__ */
|
|
198
|
+
}), /* @__PURE__ */ b("p", {
|
|
201
199
|
className: "text-xs text-text-secondary",
|
|
202
200
|
children: e.assetId
|
|
203
201
|
})]
|
|
204
202
|
}),
|
|
205
|
-
/* @__PURE__ */
|
|
203
|
+
/* @__PURE__ */ b("td", {
|
|
206
204
|
className: "p-3",
|
|
207
|
-
children: /* @__PURE__ */
|
|
205
|
+
children: /* @__PURE__ */ b("p", {
|
|
208
206
|
className: "text-sm",
|
|
209
207
|
children: e.userName
|
|
210
208
|
})
|
|
211
209
|
}),
|
|
212
|
-
/* @__PURE__ */
|
|
210
|
+
/* @__PURE__ */ b("td", {
|
|
213
211
|
className: "p-3 text-xs",
|
|
214
212
|
children: new Date(e.date).toLocaleDateString()
|
|
215
213
|
}),
|
|
216
|
-
/* @__PURE__ */
|
|
214
|
+
/* @__PURE__ */ b("td", {
|
|
217
215
|
className: "p-3 text-xs",
|
|
218
216
|
children: e.expectedReturn ? new Date(e.expectedReturn).toLocaleDateString() : "-"
|
|
219
217
|
}),
|
|
220
|
-
/* @__PURE__ */
|
|
218
|
+
/* @__PURE__ */ b("td", {
|
|
221
219
|
className: "p-3 capitalize text-xs",
|
|
222
220
|
children: e.condition
|
|
223
221
|
}),
|
|
224
|
-
/* @__PURE__ */
|
|
222
|
+
/* @__PURE__ */ b("td", {
|
|
225
223
|
className: "p-3",
|
|
226
|
-
children: /* @__PURE__ */
|
|
227
|
-
variant:
|
|
224
|
+
children: /* @__PURE__ */ b(s, {
|
|
225
|
+
variant: S[e.status] || "outline",
|
|
228
226
|
children: e.status
|
|
229
227
|
})
|
|
230
228
|
})
|
|
231
229
|
]
|
|
232
|
-
}, e.id))
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
})
|
|
230
|
+
}, e.id)) })]
|
|
231
|
+
}), t.length === 0 && /* @__PURE__ */ b(p, {
|
|
232
|
+
illustration: w ? "empty-search" : "empty-people",
|
|
233
|
+
title: w ? "No matching records" : "No check-in / out records",
|
|
234
|
+
description: w ? "No records match your search — try a different name." : "Check an asset out to someone and the activity will appear here."
|
|
235
|
+
})]
|
|
238
236
|
})
|
|
239
237
|
}) })
|
|
240
238
|
}, e);
|
|
@@ -244,6 +242,6 @@ function b() {
|
|
|
244
242
|
});
|
|
245
243
|
}
|
|
246
244
|
//#endregion
|
|
247
|
-
export {
|
|
245
|
+
export { C as AssetsAssetCheckInOutPage };
|
|
248
246
|
|
|
249
247
|
//# sourceMappingURL=AssetsAssetCheckInOutPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsAssetCheckInOutPage.js","names":[],"sources":["../../../src/assethandler/pages/AssetsAssetCheckInOutPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Input,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n GradientText,\n} from '@burdenoff/fe-libs/ui';\nimport { ArrowDownToLine, ArrowUpFromLine, Clock, Search, AlertTriangle } from 'lucide-react';\nimport { useAssetHandlerStore } from '../store/assethandlerStore';\n\nconst statusColors: Record<string, 'default' | 'secondary' | 'destructive' | 'outline'> = {\n active: 'default',\n returned: 'secondary',\n overdue: 'destructive',\n};\n\nexport function AssetsAssetCheckInOutPage() {\n const { checkInOutRecords } = useAssetHandlerStore();\n const [searchQuery, setSearchQuery] = useState('');\n\n const activeCheckouts = checkInOutRecords.filter((r) => r.status === 'active');\n const overdueCheckouts = checkInOutRecords.filter((r) => r.status === 'overdue');\n const returnedRecords = checkInOutRecords.filter((r) => r.status === 'returned');\n\n const filteredRecords = checkInOutRecords.filter(\n (r) =>\n searchQuery === '' ||\n r.assetName.toLowerCase().includes(searchQuery.toLowerCase()) ||\n r.userName.toLowerCase().includes(searchQuery.toLowerCase())\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>Asset Check-In / Check-Out</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">Manage asset assignments and returns</p>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\">\n <ArrowDownToLine className=\"mr-2 h-4 w-4\" />\n Check In\n </Button>\n <Button size=\"sm\">\n <ArrowUpFromLine className=\"mr-2 h-4 w-4\" />\n Check Out\n </Button>\n </div>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <ArrowUpFromLine className=\"h-4 w-4\" />\n Active Checkouts\n </div>\n <p className=\"text-2xl font-bold mt-1\">{activeCheckouts.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 text-status-error-text\" />\n Overdue\n </div>\n <p className=\"text-2xl font-bold mt-1 text-status-error-text\">\n {overdueCheckouts.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 <ArrowDownToLine className=\"h-4 w-4\" />\n Returned\n </div>\n <p className=\"text-2xl font-bold mt-1\">{returnedRecords.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 <Clock className=\"h-4 w-4\" />\n Total Records\n </div>\n <p className=\"text-2xl font-bold mt-1\">{checkInOutRecords.length}</p>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"relative max-w-md\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary\" />\n <Input\n placeholder=\"Search by asset or user name...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n\n <Tabs defaultValue=\"all\">\n <TabsList>\n <TabsTrigger value=\"all\">All ({filteredRecords.length})</TabsTrigger>\n <TabsTrigger value=\"active\">Active ({activeCheckouts.length})</TabsTrigger>\n <TabsTrigger value=\"overdue\">Overdue ({overdueCheckouts.length})</TabsTrigger>\n <TabsTrigger value=\"returned\">Returned ({returnedRecords.length})</TabsTrigger>\n </TabsList>\n {(['all', 'active', 'overdue', 'returned'] as const).map((tab) => {\n const records =\n tab === 'all' ? filteredRecords : filteredRecords.filter((r) => r.status === tab);\n return (\n <TabsContent key={tab} value={tab} className=\"mt-4\">\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\">Type</th>\n <th className=\"text-left p-3 font-medium\">Asset</th>\n <th className=\"text-left p-3 font-medium\">User</th>\n <th className=\"text-left p-3 font-medium\">Date</th>\n <th className=\"text-left p-3 font-medium\">Expected Return</th>\n <th className=\"text-left p-3 font-medium\">Condition</th>\n <th className=\"text-left p-3 font-medium\">Status</th>\n </tr>\n </thead>\n <tbody>\n {records.map((rec) => (\n <tr key={rec.id} className=\"border-b hover:bg-bg-sunken/50\">\n <td className=\"p-3 font-mono text-xs\">{rec.id}</td>\n <td className=\"p-3\">\n <div className=\"flex items-center gap-1.5\">\n {rec.type === 'check_out' ? (\n <ArrowUpFromLine className=\"h-3.5 w-3.5 text-status-info-text\" />\n ) : (\n <ArrowDownToLine className=\"h-3.5 w-3.5 text-status-success-text\" />\n )}\n <span className=\"capitalize text-xs\">\n {rec.type.replace('_', ' ')}\n </span>\n </div>\n </td>\n <td className=\"p-3\">\n <p className=\"font-medium\">{rec.assetName}</p>\n <p className=\"text-xs text-text-secondary\">{rec.assetId}</p>\n </td>\n <td className=\"p-3\">\n <p className=\"text-sm\">{rec.userName}</p>\n </td>\n <td className=\"p-3 text-xs\">\n {new Date(rec.date).toLocaleDateString()}\n </td>\n <td className=\"p-3 text-xs\">\n {rec.expectedReturn\n ? new Date(rec.expectedReturn).toLocaleDateString()\n : '-'}\n </td>\n <td className=\"p-3 capitalize text-xs\">{rec.condition}</td>\n <td className=\"p-3\">\n <Badge variant={statusColors[rec.status] || 'outline'}>\n {rec.status}\n </Badge>\n </td>\n </tr>\n ))}\n {records.length === 0 && (\n <tr>\n <td colSpan={8} className=\"text-center py-8 text-text-secondary\">\n No records found.\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n </CardContent>\n </Card>\n </TabsContent>\n );\n })}\n </Tabs>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AssetsAssetCheckInOutPage.js","names":[],"sources":["../../../src/assethandler/pages/AssetsAssetCheckInOutPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n Input,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n GradientText,\n EmphasisPanel,\n PagePurpose,\n IllustratedEmptyState,\n} from '@burdenoff/fe-libs/ui';\nimport { ArrowDownToLine, ArrowUpFromLine, Clock, Search, AlertTriangle } from 'lucide-react';\nimport { useAssetHandlerStore } from '../store/assethandlerStore';\n\nconst statusColors: Record<string, 'default' | 'secondary' | 'destructive' | 'outline'> = {\n active: 'default',\n returned: 'secondary',\n overdue: 'destructive',\n};\n\nexport function AssetsAssetCheckInOutPage() {\n const { checkInOutRecords } = useAssetHandlerStore();\n const [searchQuery, setSearchQuery] = useState('');\n\n const activeCheckouts = checkInOutRecords.filter((r) => r.status === 'active');\n const overdueCheckouts = checkInOutRecords.filter((r) => r.status === 'overdue');\n const returnedRecords = checkInOutRecords.filter((r) => r.status === 'returned');\n\n const filteredRecords = checkInOutRecords.filter(\n (r) =>\n searchQuery === '' ||\n r.assetName.toLowerCase().includes(searchQuery.toLowerCase()) ||\n r.userName.toLowerCase().includes(searchQuery.toLowerCase())\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>Asset Check-In / Check-Out</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">Manage asset assignments and returns</p>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\">\n <ArrowDownToLine className=\"mr-2 h-4 w-4\" />\n Check In\n </Button>\n <Button size=\"sm\">\n <ArrowUpFromLine className=\"mr-2 h-4 w-4\" />\n Check Out\n </Button>\n </div>\n </div>\n\n <PagePurpose>\n Know who has what, right now. Check assets out to people for a job or loan period and check\n them back in on return — with condition logged each way. Use it to chase overdue items and\n make sure nothing walks off without a trace.\n </PagePurpose>\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 <ArrowUpFromLine className=\"h-4 w-4\" />\n Active Checkouts\n </div>\n <p className=\"text-2xl font-bold mt-1 tabular-nums\">{activeCheckouts.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 <AlertTriangle className=\"h-4 w-4 text-status-error-text\" />\n Overdue\n </div>\n <p className=\"text-2xl font-bold mt-1 text-status-error-text\">\n {overdueCheckouts.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 <ArrowDownToLine className=\"h-4 w-4\" />\n Returned\n </div>\n <p className=\"text-2xl font-bold mt-1\">{returnedRecords.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 <Clock className=\"h-4 w-4\" />\n Total Records\n </div>\n <p className=\"text-2xl font-bold mt-1\">{checkInOutRecords.length}</p>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"relative max-w-md\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary\" />\n <Input\n placeholder=\"Search by asset or user name...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n\n <Tabs defaultValue=\"all\">\n <TabsList>\n <TabsTrigger value=\"all\">All ({filteredRecords.length})</TabsTrigger>\n <TabsTrigger value=\"active\">Active ({activeCheckouts.length})</TabsTrigger>\n <TabsTrigger value=\"overdue\">Overdue ({overdueCheckouts.length})</TabsTrigger>\n <TabsTrigger value=\"returned\">Returned ({returnedRecords.length})</TabsTrigger>\n </TabsList>\n {(['all', 'active', 'overdue', 'returned'] as const).map((tab) => {\n const records =\n tab === 'all' ? filteredRecords : filteredRecords.filter((r) => r.status === tab);\n return (\n <TabsContent key={tab} value={tab} className=\"mt-4\">\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\">Type</th>\n <th className=\"text-left p-3 font-medium\">Asset</th>\n <th className=\"text-left p-3 font-medium\">User</th>\n <th className=\"text-left p-3 font-medium\">Date</th>\n <th className=\"text-left p-3 font-medium\">Expected Return</th>\n <th className=\"text-left p-3 font-medium\">Condition</th>\n <th className=\"text-left p-3 font-medium\">Status</th>\n </tr>\n </thead>\n <tbody>\n {records.map((rec) => (\n <tr key={rec.id} className=\"border-b hover:bg-bg-sunken/50\">\n <td className=\"p-3 font-mono text-xs\">{rec.id}</td>\n <td className=\"p-3\">\n <div className=\"flex items-center gap-1.5\">\n {rec.type === 'check_out' ? (\n <ArrowUpFromLine className=\"h-3.5 w-3.5 text-status-info-text\" />\n ) : (\n <ArrowDownToLine className=\"h-3.5 w-3.5 text-status-success-text\" />\n )}\n <span className=\"capitalize text-xs\">\n {rec.type.replace('_', ' ')}\n </span>\n </div>\n </td>\n <td className=\"p-3\">\n <p className=\"font-medium\">{rec.assetName}</p>\n <p className=\"text-xs text-text-secondary\">{rec.assetId}</p>\n </td>\n <td className=\"p-3\">\n <p className=\"text-sm\">{rec.userName}</p>\n </td>\n <td className=\"p-3 text-xs\">\n {new Date(rec.date).toLocaleDateString()}\n </td>\n <td className=\"p-3 text-xs\">\n {rec.expectedReturn\n ? new Date(rec.expectedReturn).toLocaleDateString()\n : '-'}\n </td>\n <td className=\"p-3 capitalize text-xs\">{rec.condition}</td>\n <td className=\"p-3\">\n <Badge variant={statusColors[rec.status] || 'outline'}>\n {rec.status}\n </Badge>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n {records.length === 0 && (\n <IllustratedEmptyState\n illustration={searchQuery ? 'empty-search' : 'empty-people'}\n title={searchQuery ? 'No matching records' : 'No check-in / out records'}\n description={\n searchQuery\n ? 'No records match your search — try a different name.'\n : 'Check an asset out to someone and the activity will appear here.'\n }\n />\n )}\n </div>\n </CardContent>\n </Card>\n </TabsContent>\n );\n })}\n </Tabs>\n </div>\n );\n}\n"],"mappings":"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"}
|