@burdenoff/microfe-assethandler 2026.625.1 → 2026.625.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/assethandler/pages/AiPredictionsPage.js +42 -41
  2. package/dist/assethandler/pages/AiPredictionsPage.js.map +1 -1
  3. package/dist/assethandler/pages/AnalyticsPage.js +538 -534
  4. package/dist/assethandler/pages/AnalyticsPage.js.map +1 -1
  5. package/dist/assethandler/pages/AssetsAssetCategoriesPage.js +135 -125
  6. package/dist/assethandler/pages/AssetsAssetCategoriesPage.js.map +1 -1
  7. package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js +90 -92
  8. package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js.map +1 -1
  9. package/dist/assethandler/pages/AssetsAssetCreatePage.js +131 -124
  10. package/dist/assethandler/pages/AssetsAssetCreatePage.js.map +1 -1
  11. package/dist/assethandler/pages/AssetsAssetDetailPage.js +214 -185
  12. package/dist/assethandler/pages/AssetsAssetDetailPage.js.map +1 -1
  13. package/dist/assethandler/pages/AssetsAssetEditPage.js +168 -156
  14. package/dist/assethandler/pages/AssetsAssetEditPage.js.map +1 -1
  15. package/dist/assethandler/pages/AssetsAssetListPage.js +207 -187
  16. package/dist/assethandler/pages/AssetsAssetListPage.js.map +1 -1
  17. package/dist/assethandler/pages/AssetsAssetTrackingPage.js +82 -71
  18. package/dist/assethandler/pages/AssetsAssetTrackingPage.js.map +1 -1
  19. package/dist/assethandler/pages/AuditTrailPage.js +93 -91
  20. package/dist/assethandler/pages/AuditTrailPage.js.map +1 -1
  21. package/dist/assethandler/pages/CmdbBrowserPage.js +32 -33
  22. package/dist/assethandler/pages/CmdbBrowserPage.js.map +1 -1
  23. package/dist/assethandler/pages/DashboardPage.js +157 -126
  24. package/dist/assethandler/pages/DashboardPage.js.map +1 -1
  25. package/dist/assethandler/pages/DigitalTwinPage.js +25 -26
  26. package/dist/assethandler/pages/DigitalTwinPage.js.map +1 -1
  27. package/dist/assethandler/pages/DiscoveryJobsPage.js +50 -50
  28. package/dist/assethandler/pages/DiscoveryJobsPage.js.map +1 -1
  29. package/dist/assethandler/pages/EsgDashboardPage.js +43 -42
  30. package/dist/assethandler/pages/EsgDashboardPage.js.map +1 -1
  31. package/dist/assethandler/pages/FinanceBudgetDetailPage.js +96 -82
  32. package/dist/assethandler/pages/FinanceBudgetDetailPage.js.map +1 -1
  33. package/dist/assethandler/pages/FinanceFinanceHubPage.js +137 -103
  34. package/dist/assethandler/pages/FinanceFinanceHubPage.js.map +1 -1
  35. package/dist/assethandler/pages/FinanceInvoiceDetailPage.js +77 -66
  36. package/dist/assethandler/pages/FinanceInvoiceDetailPage.js.map +1 -1
  37. package/dist/assethandler/pages/IotDevicesPage.js +34 -35
  38. package/dist/assethandler/pages/IotDevicesPage.js.map +1 -1
  39. package/dist/assethandler/pages/ItilChangeDetailPage.js +236 -199
  40. package/dist/assethandler/pages/ItilChangeDetailPage.js.map +1 -1
  41. package/dist/assethandler/pages/ItilChangeManagementPage.js +66 -64
  42. package/dist/assethandler/pages/ItilChangeManagementPage.js.map +1 -1
  43. package/dist/assethandler/pages/ItilIncidentDetailPage.js +237 -200
  44. package/dist/assethandler/pages/ItilIncidentDetailPage.js.map +1 -1
  45. package/dist/assethandler/pages/ItilIncidentManagementPage.js +99 -97
  46. package/dist/assethandler/pages/ItilIncidentManagementPage.js.map +1 -1
  47. package/dist/assethandler/pages/ItilItilhubPage.js +166 -122
  48. package/dist/assethandler/pages/ItilItilhubPage.js.map +1 -1
  49. package/dist/assethandler/pages/ItilProblemDetailPage.js +193 -156
  50. package/dist/assethandler/pages/ItilProblemDetailPage.js.map +1 -1
  51. package/dist/assethandler/pages/ItilProblemManagementPage.js +63 -61
  52. package/dist/assethandler/pages/ItilProblemManagementPage.js.map +1 -1
  53. package/dist/assethandler/pages/KnowledgeBasePage.js +45 -43
  54. package/dist/assethandler/pages/KnowledgeBasePage.js.map +1 -1
  55. package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.js +70 -68
  56. package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.js.map +1 -1
  57. package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.js +77 -62
  58. package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.js.map +1 -1
  59. package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.js +162 -151
  60. package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.js.map +1 -1
  61. package/dist/assethandler/pages/MarketplaceMarketplaceListPage.js +64 -57
  62. package/dist/assethandler/pages/MarketplaceMarketplaceListPage.js.map +1 -1
  63. package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.js +125 -108
  64. package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.js.map +1 -1
  65. package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.js +67 -61
  66. package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.js.map +1 -1
  67. package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js +203 -166
  68. package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js.map +1 -1
  69. package/dist/assethandler/pages/OperationsOperationsHubPage.js +125 -95
  70. package/dist/assethandler/pages/OperationsOperationsHubPage.js.map +1 -1
  71. package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js +165 -151
  72. package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js.map +1 -1
  73. package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js +83 -81
  74. package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js.map +1 -1
  75. package/dist/assethandler/pages/ProvenancePage.js +56 -53
  76. package/dist/assethandler/pages/ProvenancePage.js.map +1 -1
  77. package/dist/assethandler/pages/ReportsReportBuilderPage.js +80 -73
  78. package/dist/assethandler/pages/ReportsReportBuilderPage.js.map +1 -1
  79. package/dist/assethandler/pages/ReportsReportsDashboardPage.js +112 -77
  80. package/dist/assethandler/pages/ReportsReportsDashboardPage.js.map +1 -1
  81. package/dist/assethandler/pages/ReportsReportsListPage.js +119 -103
  82. package/dist/assethandler/pages/ReportsReportsListPage.js.map +1 -1
  83. package/dist/assethandler/pages/SamLicensesPage.js +32 -33
  84. package/dist/assethandler/pages/SamLicensesPage.js.map +1 -1
  85. package/dist/assethandler/pages/SecurityComplianceDetailPage.js +60 -52
  86. package/dist/assethandler/pages/SecurityComplianceDetailPage.js.map +1 -1
  87. package/dist/assethandler/pages/SecurityPolicyDetailPage.js +134 -117
  88. package/dist/assethandler/pages/SecurityPolicyDetailPage.js.map +1 -1
  89. package/dist/assethandler/pages/SecurityScheduleBackupPage.js +63 -57
  90. package/dist/assethandler/pages/SecurityScheduleBackupPage.js.map +1 -1
  91. package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js +131 -117
  92. package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js.map +1 -1
  93. package/dist/assethandler/pages/SecuritySecurityHubPage.js +147 -113
  94. package/dist/assethandler/pages/SecuritySecurityHubPage.js.map +1 -1
  95. package/dist/assethandler/pages/TransactionsTransactionDetailPage.js +235 -218
  96. package/dist/assethandler/pages/TransactionsTransactionDetailPage.js.map +1 -1
  97. package/dist/assethandler/pages/TransactionsTransactionListPage.js +118 -116
  98. package/dist/assethandler/pages/TransactionsTransactionListPage.js.map +1 -1
  99. package/dist/assethandler/pages/UsersPage.js +108 -99
  100. package/dist/assethandler/pages/UsersPage.js.map +1 -1
  101. package/dist/assethandler/pages/UsersUserCreatePage.js +74 -67
  102. package/dist/assethandler/pages/UsersUserCreatePage.js.map +1 -1
  103. package/dist/assethandler/pages/UsersUserManagementHubPage.js +128 -93
  104. package/dist/assethandler/pages/UsersUserManagementHubPage.js.map +1 -1
  105. package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.js +211 -193
  106. package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.js.map +1 -1
  107. package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.js +88 -86
  108. package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.js.map +1 -1
  109. package/dist/assethandler/pages/WorkflowsWorkflowListPage.js +68 -60
  110. package/dist/assethandler/pages/WorkflowsWorkflowListPage.js.map +1 -1
  111. package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.js +71 -68
  112. package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.js.map +1 -1
  113. package/package.json +2 -2
@@ -1,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, GradientText as d, Input as f, Tabs as p, TabsContent as m, TabsList as h, TabsTrigger as g } from "@burdenoff/fe-libs/ui";
5
- import { jsx as _, jsxs as v } from "react/jsx-runtime";
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 y = {
7
+ var S = {
8
8
  active: "default",
9
9
  returned: "secondary",
10
10
  overdue: "destructive"
11
11
  };
12
- function b() {
13
- let { checkInOutRecords: b } = e(), [x, S] = t(""), C = b.filter((e) => e.status === "active"), w = b.filter((e) => e.status === "overdue"), T = b.filter((e) => e.status === "returned"), E = b.filter((e) => x === "" || e.assetName.toLowerCase().includes(x.toLowerCase()) || e.userName.toLowerCase().includes(x.toLowerCase()));
14
- return /* @__PURE__ */ v("div", {
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__ */ v("div", {
17
+ /* @__PURE__ */ x("div", {
18
18
  className: "flex items-center justify-between",
19
- children: [/* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("h1", {
19
+ children: [/* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("h1", {
20
20
  className: "text-2xl font-bold",
21
- children: /* @__PURE__ */ _(d, { children: "Asset Check-In / Check-Out" })
22
- }), /* @__PURE__ */ _("p", {
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__ */ v("div", {
25
+ })] }), /* @__PURE__ */ x("div", {
26
26
  className: "flex gap-2",
27
- children: [/* @__PURE__ */ v(c, {
27
+ children: [/* @__PURE__ */ x(c, {
28
28
  variant: "outline",
29
29
  size: "sm",
30
- children: [/* @__PURE__ */ _(r, { className: "mr-2 h-4 w-4" }), "Check In"]
31
- }), /* @__PURE__ */ v(c, {
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__ */ _(i, { className: "mr-2 h-4 w-4" }), "Check Out"]
33
+ children: [/* @__PURE__ */ b(i, { className: "mr-2 h-4 w-4" }), "Check Out"]
34
34
  })]
35
35
  })]
36
36
  }),
37
- /* @__PURE__ */ v("div", {
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__ */ _(l, { children: /* @__PURE__ */ v(u, {
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__ */ v("div", {
50
+ children: [/* @__PURE__ */ x("div", {
43
51
  className: "flex items-center gap-2 text-sm text-text-secondary",
44
- children: [/* @__PURE__ */ _(i, { className: "h-4 w-4" }), "Active Checkouts"]
45
- }), /* @__PURE__ */ _("p", {
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: w.length
55
+ children: D.length
58
56
  })]
59
57
  }) }),
60
- /* @__PURE__ */ _(l, { children: /* @__PURE__ */ v(u, {
58
+ /* @__PURE__ */ b(l, { children: /* @__PURE__ */ x(u, {
61
59
  className: "pt-4",
62
- children: [/* @__PURE__ */ v("div", {
60
+ children: [/* @__PURE__ */ x("div", {
63
61
  className: "flex items-center gap-2 text-sm text-text-secondary",
64
- children: [/* @__PURE__ */ _(r, { className: "h-4 w-4" }), "Returned"]
65
- }), /* @__PURE__ */ _("p", {
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: T.length
65
+ children: O.length
68
66
  })]
69
67
  }) }),
70
- /* @__PURE__ */ _(l, { children: /* @__PURE__ */ v(u, {
68
+ /* @__PURE__ */ b(l, { children: /* @__PURE__ */ x(u, {
71
69
  className: "pt-4",
72
- children: [/* @__PURE__ */ v("div", {
70
+ children: [/* @__PURE__ */ x("div", {
73
71
  className: "flex items-center gap-2 text-sm text-text-secondary",
74
- children: [/* @__PURE__ */ _(a, { className: "h-4 w-4" }), "Total Records"]
75
- }), /* @__PURE__ */ _("p", {
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: b.length
75
+ children: C.length
78
76
  })]
79
77
  }) })
80
78
  ]
81
79
  }),
82
- /* @__PURE__ */ v("div", {
80
+ /* @__PURE__ */ x("div", {
83
81
  className: "relative max-w-md",
84
- children: [/* @__PURE__ */ _(o, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ _(f, {
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: x,
87
- onChange: (e) => S(e.target.value),
84
+ value: w,
85
+ onChange: (e) => T(e.target.value),
88
86
  className: "pl-9"
89
87
  })]
90
88
  }),
91
- /* @__PURE__ */ v(p, {
89
+ /* @__PURE__ */ x(g, {
92
90
  defaultValue: "all",
93
- children: [/* @__PURE__ */ v(h, { children: [
94
- /* @__PURE__ */ v(g, {
91
+ children: [/* @__PURE__ */ x(v, { children: [
92
+ /* @__PURE__ */ x(y, {
95
93
  value: "all",
96
94
  children: [
97
95
  "All (",
98
- E.length,
96
+ k.length,
99
97
  ")"
100
98
  ]
101
99
  }),
102
- /* @__PURE__ */ v(g, {
100
+ /* @__PURE__ */ x(y, {
103
101
  value: "active",
104
102
  children: [
105
103
  "Active (",
106
- C.length,
104
+ E.length,
107
105
  ")"
108
106
  ]
109
107
  }),
110
- /* @__PURE__ */ v(g, {
108
+ /* @__PURE__ */ x(y, {
111
109
  value: "overdue",
112
110
  children: [
113
111
  "Overdue (",
114
- w.length,
112
+ D.length,
115
113
  ")"
116
114
  ]
117
115
  }),
118
- /* @__PURE__ */ v(g, {
116
+ /* @__PURE__ */ x(y, {
119
117
  value: "returned",
120
118
  children: [
121
119
  "Returned (",
122
- T.length,
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" ? E : E.filter((t) => t.status === e);
133
- return /* @__PURE__ */ _(m, {
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__ */ _(l, { children: /* @__PURE__ */ _(u, {
134
+ children: /* @__PURE__ */ b(l, { children: /* @__PURE__ */ b(u, {
137
135
  className: "p-0",
138
- children: /* @__PURE__ */ _("div", {
136
+ children: /* @__PURE__ */ x("div", {
139
137
  className: "overflow-x-auto",
140
- children: /* @__PURE__ */ v("table", {
138
+ children: [/* @__PURE__ */ x("table", {
141
139
  className: "w-full text-sm",
142
- children: [/* @__PURE__ */ _("thead", { children: /* @__PURE__ */ v("tr", {
140
+ children: [/* @__PURE__ */ b("thead", { children: /* @__PURE__ */ x("tr", {
143
141
  className: "border-b bg-bg-sunken/50",
144
142
  children: [
145
- /* @__PURE__ */ _("th", {
143
+ /* @__PURE__ */ b("th", {
146
144
  className: "text-left p-3 font-medium",
147
145
  children: "ID"
148
146
  }),
149
- /* @__PURE__ */ _("th", {
147
+ /* @__PURE__ */ b("th", {
150
148
  className: "text-left p-3 font-medium",
151
149
  children: "Type"
152
150
  }),
153
- /* @__PURE__ */ _("th", {
151
+ /* @__PURE__ */ b("th", {
154
152
  className: "text-left p-3 font-medium",
155
153
  children: "Asset"
156
154
  }),
157
- /* @__PURE__ */ _("th", {
155
+ /* @__PURE__ */ b("th", {
158
156
  className: "text-left p-3 font-medium",
159
157
  children: "User"
160
158
  }),
161
- /* @__PURE__ */ _("th", {
159
+ /* @__PURE__ */ b("th", {
162
160
  className: "text-left p-3 font-medium",
163
161
  children: "Date"
164
162
  }),
165
- /* @__PURE__ */ _("th", {
163
+ /* @__PURE__ */ b("th", {
166
164
  className: "text-left p-3 font-medium",
167
165
  children: "Expected Return"
168
166
  }),
169
- /* @__PURE__ */ _("th", {
167
+ /* @__PURE__ */ b("th", {
170
168
  className: "text-left p-3 font-medium",
171
169
  children: "Condition"
172
170
  }),
173
- /* @__PURE__ */ _("th", {
171
+ /* @__PURE__ */ b("th", {
174
172
  className: "text-left p-3 font-medium",
175
173
  children: "Status"
176
174
  })
177
175
  ]
178
- }) }), /* @__PURE__ */ v("tbody", { children: [t.map((e) => /* @__PURE__ */ v("tr", {
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__ */ _("td", {
179
+ /* @__PURE__ */ b("td", {
182
180
  className: "p-3 font-mono text-xs",
183
181
  children: e.id
184
182
  }),
185
- /* @__PURE__ */ _("td", {
183
+ /* @__PURE__ */ b("td", {
186
184
  className: "p-3",
187
- children: /* @__PURE__ */ v("div", {
185
+ children: /* @__PURE__ */ x("div", {
188
186
  className: "flex items-center gap-1.5",
189
- children: [e.type === "check_out" ? /* @__PURE__ */ _(i, { className: "h-3.5 w-3.5 text-status-info-text" }) : /* @__PURE__ */ _(r, { className: "h-3.5 w-3.5 text-status-success-text" }), /* @__PURE__ */ _("span", {
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__ */ v("td", {
193
+ /* @__PURE__ */ x("td", {
196
194
  className: "p-3",
197
- children: [/* @__PURE__ */ _("p", {
195
+ children: [/* @__PURE__ */ b("p", {
198
196
  className: "font-medium",
199
197
  children: e.assetName
200
- }), /* @__PURE__ */ _("p", {
198
+ }), /* @__PURE__ */ b("p", {
201
199
  className: "text-xs text-text-secondary",
202
200
  children: e.assetId
203
201
  })]
204
202
  }),
205
- /* @__PURE__ */ _("td", {
203
+ /* @__PURE__ */ b("td", {
206
204
  className: "p-3",
207
- children: /* @__PURE__ */ _("p", {
205
+ children: /* @__PURE__ */ b("p", {
208
206
  className: "text-sm",
209
207
  children: e.userName
210
208
  })
211
209
  }),
212
- /* @__PURE__ */ _("td", {
210
+ /* @__PURE__ */ b("td", {
213
211
  className: "p-3 text-xs",
214
212
  children: new Date(e.date).toLocaleDateString()
215
213
  }),
216
- /* @__PURE__ */ _("td", {
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__ */ _("td", {
218
+ /* @__PURE__ */ b("td", {
221
219
  className: "p-3 capitalize text-xs",
222
220
  children: e.condition
223
221
  }),
224
- /* @__PURE__ */ _("td", {
222
+ /* @__PURE__ */ b("td", {
225
223
  className: "p-3",
226
- children: /* @__PURE__ */ _(s, {
227
- variant: y[e.status] || "outline",
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)), t.length === 0 && /* @__PURE__ */ _("tr", { children: /* @__PURE__ */ _("td", {
233
- colSpan: 8,
234
- className: "text-center py-8 text-text-secondary",
235
- children: "No records found."
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 { b as AssetsAssetCheckInOutPage };
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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"}