@burdenoff/microfe-assethandler 2026.820.3 → 2026.820.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dist/assethandler/components/AssetTag.d.ts +20 -0
  2. package/dist/assethandler/components/AssetTag.d.ts.map +1 -0
  3. package/dist/assethandler/components/AssetTag.js +8 -0
  4. package/dist/assethandler/components/AssetTag.js.map +1 -0
  5. package/dist/assethandler/components/index.d.ts +2 -0
  6. package/dist/assethandler/components/index.d.ts.map +1 -1
  7. package/dist/assethandler/components/index.js +1 -0
  8. package/dist/assethandler/pages/AssetsAssetCheckInOutPage.d.ts.map +1 -1
  9. package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js +344 -181
  10. package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js.map +1 -1
  11. package/dist/assethandler/pages/AssetsAssetDetailPage.d.ts.map +1 -1
  12. package/dist/assethandler/pages/AssetsAssetDetailPage.js +338 -325
  13. package/dist/assethandler/pages/AssetsAssetDetailPage.js.map +1 -1
  14. package/dist/assethandler/pages/AssetsAssetListPage.d.ts.map +1 -1
  15. package/dist/assethandler/pages/AssetsAssetListPage.js +177 -163
  16. package/dist/assethandler/pages/AssetsAssetListPage.js.map +1 -1
  17. package/dist/assethandler/providers/AssetHandlerProvider.d.ts.map +1 -1
  18. package/dist/assethandler/providers/AssetHandlerProvider.js +1 -0
  19. package/dist/assethandler/providers/AssetHandlerProvider.js.map +1 -1
  20. package/dist/assethandler/store/assethandlerStore.d.ts +2 -0
  21. package/dist/assethandler/store/assethandlerStore.d.ts.map +1 -1
  22. package/dist/assethandler/store/assethandlerStore.js +1 -0
  23. package/dist/assethandler/store/assethandlerStore.js.map +1 -1
  24. package/dist/assethandler/utils/printAssetTag.d.ts +24 -0
  25. package/dist/assethandler/utils/printAssetTag.d.ts.map +1 -0
  26. package/dist/assethandler/utils/printAssetTag.js +124 -0
  27. package/dist/assethandler/utils/printAssetTag.js.map +1 -0
  28. package/dist/node_modules/dijkstrajs/dijkstra.js +61 -0
  29. package/dist/node_modules/dijkstrajs/dijkstra.js.map +1 -0
  30. package/dist/node_modules/qrcode/lib/browser.js +40 -0
  31. package/dist/node_modules/qrcode/lib/browser.js.map +1 -0
  32. package/dist/node_modules/qrcode/lib/can-promise.js +12 -0
  33. package/dist/node_modules/qrcode/lib/can-promise.js.map +1 -0
  34. package/dist/node_modules/qrcode/lib/core/alignment-pattern.js +21 -0
  35. package/dist/node_modules/qrcode/lib/core/alignment-pattern.js.map +1 -0
  36. package/dist/node_modules/qrcode/lib/core/alphanumeric-data.js +28 -0
  37. package/dist/node_modules/qrcode/lib/core/alphanumeric-data.js.map +1 -0
  38. package/dist/node_modules/qrcode/lib/core/bit-buffer.js +28 -0
  39. package/dist/node_modules/qrcode/lib/core/bit-buffer.js.map +1 -0
  40. package/dist/node_modules/qrcode/lib/core/bit-matrix.js +23 -0
  41. package/dist/node_modules/qrcode/lib/core/bit-matrix.js.map +1 -0
  42. package/dist/node_modules/qrcode/lib/core/byte-data.js +23 -0
  43. package/dist/node_modules/qrcode/lib/core/byte-data.js.map +1 -0
  44. package/dist/node_modules/qrcode/lib/core/error-correction-code.js +350 -0
  45. package/dist/node_modules/qrcode/lib/core/error-correction-code.js.map +1 -0
  46. package/dist/node_modules/qrcode/lib/core/error-correction-level.js +34 -0
  47. package/dist/node_modules/qrcode/lib/core/error-correction-level.js.map +1 -0
  48. package/dist/node_modules/qrcode/lib/core/finder-pattern.js +19 -0
  49. package/dist/node_modules/qrcode/lib/core/finder-pattern.js.map +1 -0
  50. package/dist/node_modules/qrcode/lib/core/format-info.js +16 -0
  51. package/dist/node_modules/qrcode/lib/core/format-info.js.map +1 -0
  52. package/dist/node_modules/qrcode/lib/core/galois-field.js +22 -0
  53. package/dist/node_modules/qrcode/lib/core/galois-field.js.map +1 -0
  54. package/dist/node_modules/qrcode/lib/core/kanji-data.js +31 -0
  55. package/dist/node_modules/qrcode/lib/core/kanji-data.js.map +1 -0
  56. package/dist/node_modules/qrcode/lib/core/mask-pattern.js +84 -0
  57. package/dist/node_modules/qrcode/lib/core/mask-pattern.js.map +1 -0
  58. package/dist/node_modules/qrcode/lib/core/mode.js +74 -0
  59. package/dist/node_modules/qrcode/lib/core/mode.js.map +1 -0
  60. package/dist/node_modules/qrcode/lib/core/numeric-data.js +26 -0
  61. package/dist/node_modules/qrcode/lib/core/numeric-data.js.map +1 -0
  62. package/dist/node_modules/qrcode/lib/core/polynomial.js +30 -0
  63. package/dist/node_modules/qrcode/lib/core/polynomial.js.map +1 -0
  64. package/dist/node_modules/qrcode/lib/core/qrcode.js +117 -0
  65. package/dist/node_modules/qrcode/lib/core/qrcode.js.map +1 -0
  66. package/dist/node_modules/qrcode/lib/core/reed-solomon-encoder.js +27 -0
  67. package/dist/node_modules/qrcode/lib/core/reed-solomon-encoder.js.map +1 -0
  68. package/dist/node_modules/qrcode/lib/core/regex.js +21 -0
  69. package/dist/node_modules/qrcode/lib/core/regex.js.map +1 -0
  70. package/dist/node_modules/qrcode/lib/core/segments.js +144 -0
  71. package/dist/node_modules/qrcode/lib/core/segments.js.map +1 -0
  72. package/dist/node_modules/qrcode/lib/core/utils.js +70 -0
  73. package/dist/node_modules/qrcode/lib/core/utils.js.map +1 -0
  74. package/dist/node_modules/qrcode/lib/core/version-check.js +12 -0
  75. package/dist/node_modules/qrcode/lib/core/version-check.js.map +1 -0
  76. package/dist/node_modules/qrcode/lib/core/version.js +60 -0
  77. package/dist/node_modules/qrcode/lib/core/version.js.map +1 -0
  78. package/dist/node_modules/qrcode/lib/renderer/canvas.js +32 -0
  79. package/dist/node_modules/qrcode/lib/renderer/canvas.js.map +1 -0
  80. package/dist/node_modules/qrcode/lib/renderer/svg-tag.js +31 -0
  81. package/dist/node_modules/qrcode/lib/renderer/svg-tag.js.map +1 -0
  82. package/dist/node_modules/qrcode/lib/renderer/utils.js +55 -0
  83. package/dist/node_modules/qrcode/lib/renderer/utils.js.map +1 -0
  84. package/package.json +3 -1
@@ -11,39 +11,40 @@ import { Pagination as ae, usePagination as oe } from "../components/Pagination.
11
11
  import { StatTile as a } from "../components/StatTile.js";
12
12
  import { ChartCard as o } from "../components/ChartCard.js";
13
13
  import "../components/index.js";
14
+ import { printAssetTag as se } from "../utils/printAssetTag.js";
14
15
  import { useMemo as s, useState as c, useSyncExternalStore as l } from "react";
15
- import { ArrowDown as se, ArrowUp as ce, Box as u, Boxes as le, CheckCircle2 as ue, ChevronsUpDown as de, Code as d, Copy as f, Eye as p, Grid3x3 as fe, List as pe, Monitor as m, MoreHorizontal as h, Plus as g, Search as _, Server as v, Table as me, Truck as y, Wifi as b, Wrench as x } from "lucide-react";
16
- import { Fragment as S, jsx as C, jsxs as w } from "react/jsx-runtime";
17
- import { Button as T, Card as E, CardContent as D, CardHeader as he, CardTitle as ge, DropdownMenu as O, DropdownMenuContent as k, DropdownMenuItem as A, DropdownMenuTrigger as j, GradientText as _e, IllustratedEmptyState as ve, Input as ye, PagePurpose as be, Select as M, SelectContent as N, SelectItem as P, SelectTrigger as F, SelectValue as I } from "@burdenoff/fe-libs/ui";
16
+ import { ArrowDown as ce, ArrowUp as le, Box as u, Boxes as ue, CheckCircle2 as de, ChevronsUpDown as fe, Code as d, Copy as f, Eye as p, Grid3x3 as pe, List as me, Monitor as m, MoreHorizontal as h, Plus as g, Printer as _, Search as v, Server as y, Table as he, Truck as b, Wifi as x, Wrench as S } from "lucide-react";
17
+ import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
18
+ import { Button as E, Card as D, CardContent as O, CardHeader as ge, CardTitle as _e, DropdownMenu as k, DropdownMenuContent as A, DropdownMenuItem as j, DropdownMenuTrigger as M, GradientText as ve, IllustratedEmptyState as ye, Input as be, PagePurpose as xe, Select as N, SelectContent as P, SelectItem as F, SelectTrigger as I, SelectValue as L } from "@burdenoff/fe-libs/ui";
18
19
  //#region src/assethandler/pages/AssetsAssetListPage.tsx
19
- var L = {
20
+ var R = {
20
21
  active: "bg-status-success-bg-subtle text-status-success-text",
21
22
  maintenance: "bg-status-warning-bg-subtle text-status-warning-text",
22
23
  inactive: "bg-bg-sunken text-text-secondary",
23
24
  retired: "bg-bg-sunken text-text-secondary",
24
25
  disposed: "bg-status-error-bg-subtle text-status-error-text"
25
- }, R = {
26
+ }, z = {
26
27
  excellent: "text-status-success-text bg-status-success-bg-subtle",
27
28
  good: "text-status-info-text bg-status-info-bg-subtle",
28
29
  fair: "text-status-warning-text bg-status-warning-bg-subtle",
29
30
  poor: "text-status-warning-text bg-status-warning-bg-subtle",
30
31
  damaged: "text-status-error-text bg-status-error-bg-subtle"
31
- }, xe = {
32
+ }, Se = {
32
33
  active: "var(--color-status-success-bg)",
33
34
  maintenance: "var(--color-status-warning-bg)",
34
35
  inactive: "var(--color-status-info-bg)",
35
36
  retired: "var(--color-text-muted)",
36
37
  disposed: "var(--color-status-error-bg)"
37
- }, z = {
38
+ }, B = {
38
39
  electronics: m,
39
40
  it_hardware: m,
40
41
  furniture: u,
41
- vehicles: y,
42
- equipment: x,
42
+ vehicles: b,
43
+ equipment: S,
43
44
  software: d,
44
- networking: b,
45
- servers: v
46
- }, B = {
45
+ networking: x,
46
+ servers: y
47
+ }, V = {
47
48
  electronics: "bg-status-info-bg-subtle text-status-info-text",
48
49
  it_hardware: "bg-status-info-bg-subtle text-status-info-text",
49
50
  furniture: "bg-status-warning-bg-subtle text-status-warning-text",
@@ -53,44 +54,44 @@ var L = {
53
54
  networking: "bg-status-info-bg-subtle text-status-info-text",
54
55
  servers: "bg-status-error-bg-subtle text-status-error-text"
55
56
  };
56
- function V({ category: e }) {
57
- let t = z[e] ?? u;
58
- return /* @__PURE__ */ C("span", {
59
- className: `inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md ${B[e] ?? "bg-bg-sunken text-text-secondary"}`,
60
- children: /* @__PURE__ */ C(t, { className: "h-4 w-4" })
57
+ function H({ category: e }) {
58
+ let t = B[e] ?? u;
59
+ return /* @__PURE__ */ w("span", {
60
+ className: `inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md ${V[e] ?? "bg-bg-sunken text-text-secondary"}`,
61
+ children: /* @__PURE__ */ w(t, { className: "h-4 w-4" })
61
62
  });
62
63
  }
63
- function H({ status: e }) {
64
- return /* @__PURE__ */ C("span", {
65
- className: `inline-flex rounded-full px-2.5 py-0.5 text-xs font-medium capitalize ${L[e] || "bg-bg-sunken text-text-secondary"}`,
64
+ function U({ status: e }) {
65
+ return /* @__PURE__ */ w("span", {
66
+ className: `inline-flex rounded-full px-2.5 py-0.5 text-xs font-medium capitalize ${R[e] || "bg-bg-sunken text-text-secondary"}`,
66
67
  children: e.replace(/_/g, " ")
67
68
  });
68
69
  }
69
- function Se() {
70
+ function Ce() {
70
71
  return l((e) => {
71
72
  if (typeof window > "u" || !window.matchMedia) return () => {};
72
73
  let t = window.matchMedia("(max-width: 767px)");
73
74
  return t.addEventListener("change", e), () => t.removeEventListener("change", e);
74
75
  }, () => typeof window < "u" && window.matchMedia ? window.matchMedia("(max-width: 767px)").matches : !1, () => !1);
75
76
  }
76
- function U() {
77
- let l = te(), d = ee(), f = i(), { labels: p, options: m } = r(), { assets: h, hydrated: v } = e(), y = Se(), [b, x] = c(""), [O, k] = c("all"), [A, j] = c("all"), [L, z] = c("table"), [B, U] = c(!1), [W, we] = c("name"), [G, K] = c("asc"), q = !B && y && L === "table" ? "list" : L, J = (e) => {
78
- U(!0), z(e);
77
+ function W() {
78
+ let l = te(), d = ee(), f = i(), { labels: p, options: m } = r(), { assets: h, hydrated: _ } = e(), y = Ce(), [b, x] = c(""), [S, k] = c("all"), [A, j] = c("all"), [M, R] = c("table"), [B, V] = c(!1), [W, Te] = c("name"), [G, K] = c("asc"), q = !B && y && M === "table" ? "list" : M, J = (e) => {
79
+ V(!0), R(e);
79
80
  }, Y = s(() => [...new Set([...m?.map((e) => e.id) ?? [], ...h.map((e) => e.category).filter(Boolean)])].filter((e) => !f.has(e)).sort(), [
80
81
  h,
81
82
  m,
82
83
  f
83
84
  ]), X = s(() => h.filter((e) => {
84
85
  if (f.has(e.category)) return !1;
85
- let t = b === "" || e.name.toLowerCase().includes(b.toLowerCase()) || e.assetTag.toLowerCase().includes(b.toLowerCase()) || e.serialNumber.toLowerCase().includes(b.toLowerCase()), n = O === "all" || e.category === O, r = A === "all" || e.status === A;
86
+ let t = b === "" || e.name.toLowerCase().includes(b.toLowerCase()) || e.assetTag.toLowerCase().includes(b.toLowerCase()) || e.serialNumber.toLowerCase().includes(b.toLowerCase()), n = S === "all" || e.category === S, r = A === "all" || e.status === A;
86
87
  return t && n && r;
87
88
  }), [
88
89
  h,
89
90
  b,
90
- O,
91
+ S,
91
92
  A,
92
93
  f
93
- ]), Te = s(() => {
94
+ ]), Ee = s(() => {
94
95
  let e = G === "asc" ? 1 : -1;
95
96
  return [...X].sort((t, n) => {
96
97
  let r = (t[W] ?? "").toString().toLowerCase(), i = (n[W] ?? "").toString().toLowerCase();
@@ -100,46 +101,46 @@ function U() {
100
101
  X,
101
102
  W,
102
103
  G
103
- ]), Z = h.filter((e) => e.status === "active").length, Ee = s(() => {
104
+ ]), Z = h.filter((e) => e.status === "active").length, De = s(() => {
104
105
  let e = {};
105
106
  for (let t of h) e[t.status] = (e[t.status] || 0) + 1;
106
107
  return Object.entries(e).map(([e, t]) => ({
107
108
  name: e.charAt(0).toUpperCase() + e.slice(1),
108
109
  value: t,
109
- color: xe[e]
110
+ color: Se[e]
110
111
  }));
111
- }, [h]), De = s(() => {
112
+ }, [h]), Oe = s(() => {
112
113
  let e = {};
113
114
  for (let t of h) e[t.category] = (e[t.category] || 0) + 1;
114
115
  return Object.entries(e).sort((e, t) => t[1] - e[1]).slice(0, 8).map(([e, t]) => ({
115
116
  category: n(e, p),
116
117
  count: t
117
118
  }));
118
- }, [h, p]), Q = oe(Te, {
119
+ }, [h, p]), Q = oe(Ee, {
119
120
  pageSize: 12,
120
- resetKey: `${b}|${O}|${A}|${W}|${G}`
121
- }), Oe = (e) => {
122
- W === e ? K((e) => e === "asc" ? "desc" : "asc") : (we(e), K("asc"));
123
- }, $ = (e, t) => /* @__PURE__ */ C("th", {
121
+ resetKey: `${b}|${S}|${A}|${W}|${G}`
122
+ }), ke = (e) => {
123
+ W === e ? K((e) => e === "asc" ? "desc" : "asc") : (Te(e), K("asc"));
124
+ }, $ = (e, t) => /* @__PURE__ */ w("th", {
124
125
  className: "p-3 text-left font-medium",
125
- children: /* @__PURE__ */ w("button", {
126
+ children: /* @__PURE__ */ T("button", {
126
127
  type: "button",
127
- onClick: () => Oe(t),
128
+ onClick: () => ke(t),
128
129
  className: "inline-flex items-center gap-1 hover:text-text-primary",
129
- children: [e, W === t ? C(G === "asc" ? ce : se, { className: "h-3 w-3 text-action-primary-bg" }) : /* @__PURE__ */ C(de, { className: "h-3 w-3 text-text-muted" })]
130
+ children: [e, W === t ? w(G === "asc" ? le : ce, { className: "h-3 w-3 text-action-primary-bg" }) : /* @__PURE__ */ w(fe, { className: "h-3 w-3 text-text-muted" })]
130
131
  })
131
- }), ke = (e) => {
132
+ }), Ae = (e) => {
132
133
  navigator.clipboard?.writeText(e), ne.success("Asset tag copied", `${e} copied to clipboard.`);
133
134
  };
134
- return /* @__PURE__ */ w("div", {
135
+ return /* @__PURE__ */ T("div", {
135
136
  className: "space-y-6 p-4 sm:p-6",
136
137
  children: [
137
- /* @__PURE__ */ w("div", {
138
+ /* @__PURE__ */ T("div", {
138
139
  className: "flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",
139
- children: [/* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("h1", {
140
+ children: [/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("h1", {
140
141
  className: "text-2xl font-bold",
141
- children: /* @__PURE__ */ C(_e, { children: l("assethandler.assets.list.title", "{{asset}} Inventory") })
142
- }), /* @__PURE__ */ w("p", {
142
+ children: /* @__PURE__ */ w(ve, { children: l("assethandler.assets.list.title", "{{asset}} Inventory") })
143
+ }), /* @__PURE__ */ T("p", {
143
144
  className: "text-sm text-text-secondary",
144
145
  children: [
145
146
  h.length,
@@ -151,59 +152,59 @@ function U() {
151
152
  " ",
152
153
  l("assethandler.assets.list.subtitle.active", "active")
153
154
  ]
154
- })] }), /* @__PURE__ */ w(T, {
155
+ })] }), /* @__PURE__ */ T(E, {
155
156
  className: "w-full sm:w-auto",
156
157
  size: "sm",
157
158
  onClick: () => d("/assets/asset-create"),
158
- children: [/* @__PURE__ */ C(g, { className: "mr-2 h-4 w-4" }), l("assethandler.assets.list.actions.addAsset", "Add {{asset}}")]
159
+ children: [/* @__PURE__ */ w(g, { className: "mr-2 h-4 w-4" }), l("assethandler.assets.list.actions.addAsset", "Add {{asset}}")]
159
160
  })]
160
161
  }),
161
- /* @__PURE__ */ C(be, { children: l("assethandler.assets.list.purpose", "The single source of truth for every {{assetLower}} you own or manage. Search, filter and group by category, status or condition to find any item fast, review its assignment, then drill in to update, check it in/out or schedule maintenance.") }),
162
- h.length > 0 ? /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ w("div", {
162
+ /* @__PURE__ */ w(xe, { children: l("assethandler.assets.list.purpose", "The single source of truth for every {{assetLower}} you own or manage. Search, filter and group by category, status or condition to find any item fast, review its assignment, then drill in to update, check it in/out or schedule maintenance.") }),
163
+ h.length > 0 ? /* @__PURE__ */ T(C, { children: [/* @__PURE__ */ T("div", {
163
164
  className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-4",
164
165
  children: [
165
- /* @__PURE__ */ C(a, {
166
+ /* @__PURE__ */ w(a, {
166
167
  label: "Total assets",
167
168
  value: h.length,
168
169
  format: t,
169
- icon: le,
170
+ icon: ue,
170
171
  hero: !0
171
172
  }),
172
- /* @__PURE__ */ C(a, {
173
+ /* @__PURE__ */ w(a, {
173
174
  label: "Active",
174
175
  value: Z,
175
176
  format: t,
176
- icon: ue
177
+ icon: de
177
178
  }),
178
- /* @__PURE__ */ C(a, {
179
+ /* @__PURE__ */ w(a, {
179
180
  label: "Categories",
180
181
  value: Y.length,
181
182
  format: t,
182
183
  icon: u
183
184
  }),
184
- /* @__PURE__ */ C(a, {
185
+ /* @__PURE__ */ w(a, {
185
186
  label: "Showing",
186
187
  value: X.length,
187
188
  format: t,
188
- icon: _
189
+ icon: v
189
190
  })
190
191
  ]
191
- }), /* @__PURE__ */ w("div", {
192
+ }), /* @__PURE__ */ T("div", {
192
193
  className: "grid gap-4 lg:grid-cols-2",
193
- children: [/* @__PURE__ */ C(o, {
194
+ children: [/* @__PURE__ */ w(o, {
194
195
  title: "Status mix",
195
196
  subtitle: "Assets by lifecycle status",
196
- children: /* @__PURE__ */ C(ie, {
197
- data: Ee,
197
+ children: /* @__PURE__ */ w(ie, {
198
+ data: De,
198
199
  centerLabel: "Total",
199
200
  centerValue: h.length,
200
201
  height: 220
201
202
  })
202
- }), /* @__PURE__ */ C(o, {
203
+ }), /* @__PURE__ */ w(o, {
203
204
  title: "By category",
204
205
  subtitle: "Top categories by asset count",
205
- children: /* @__PURE__ */ C(re, {
206
- data: De,
206
+ children: /* @__PURE__ */ w(re, {
207
+ data: Oe,
207
208
  xKey: "category",
208
209
  orientation: "horizontal",
209
210
  height: 220,
@@ -216,100 +217,100 @@ function U() {
216
217
  })
217
218
  })]
218
219
  })] }) : null,
219
- /* @__PURE__ */ C(E, { children: /* @__PURE__ */ C(D, {
220
+ /* @__PURE__ */ w(D, { children: /* @__PURE__ */ w(O, {
220
221
  className: "pt-4",
221
- children: /* @__PURE__ */ w("div", {
222
+ children: /* @__PURE__ */ T("div", {
222
223
  className: "flex flex-col gap-3 md:flex-row md:flex-wrap",
223
224
  children: [
224
- /* @__PURE__ */ w("div", {
225
+ /* @__PURE__ */ T("div", {
225
226
  className: "relative min-w-0 flex-1",
226
- children: [/* @__PURE__ */ C(_, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary" }), /* @__PURE__ */ C(ye, {
227
+ children: [/* @__PURE__ */ w(v, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary" }), /* @__PURE__ */ w(be, {
227
228
  placeholder: l("assethandler.assets.list.search.placeholder", "Search by name, {{assetLower}} tag, serial number..."),
228
229
  value: b,
229
230
  onChange: (e) => x(e.target.value),
230
231
  className: "pl-9"
231
232
  })]
232
233
  }),
233
- /* @__PURE__ */ w(M, {
234
- value: O,
234
+ /* @__PURE__ */ T(N, {
235
+ value: S,
235
236
  onValueChange: k,
236
- children: [/* @__PURE__ */ C(F, {
237
+ children: [/* @__PURE__ */ w(I, {
237
238
  className: "w-full sm:w-[180px]",
238
- children: /* @__PURE__ */ C(I, { placeholder: l("assethandler.assets.list.filters.category.placeholder", "Category") })
239
- }), /* @__PURE__ */ w(N, { children: [/* @__PURE__ */ C(P, {
239
+ children: /* @__PURE__ */ w(L, { placeholder: l("assethandler.assets.list.filters.category.placeholder", "Category") })
240
+ }), /* @__PURE__ */ T(P, { children: [/* @__PURE__ */ w(F, {
240
241
  value: "all",
241
242
  children: l("assethandler.assets.list.filters.category.all", "All Categories")
242
- }), Y.map((e) => /* @__PURE__ */ C(P, {
243
+ }), Y.map((e) => /* @__PURE__ */ w(F, {
243
244
  value: e,
244
245
  className: "capitalize",
245
246
  children: n(e, p)
246
247
  }, e))] })]
247
248
  }),
248
- /* @__PURE__ */ w(M, {
249
+ /* @__PURE__ */ T(N, {
249
250
  value: A,
250
251
  onValueChange: j,
251
- children: [/* @__PURE__ */ C(F, {
252
+ children: [/* @__PURE__ */ w(I, {
252
253
  className: "w-full sm:w-[160px]",
253
- children: /* @__PURE__ */ C(I, { placeholder: l("assethandler.assets.list.filters.status.placeholder", "Status") })
254
- }), /* @__PURE__ */ w(N, { children: [
255
- /* @__PURE__ */ C(P, {
254
+ children: /* @__PURE__ */ w(L, { placeholder: l("assethandler.assets.list.filters.status.placeholder", "Status") })
255
+ }), /* @__PURE__ */ T(P, { children: [
256
+ /* @__PURE__ */ w(F, {
256
257
  value: "all",
257
258
  children: l("assethandler.assets.list.filters.status.all", "All Statuses")
258
259
  }),
259
- /* @__PURE__ */ C(P, {
260
+ /* @__PURE__ */ w(F, {
260
261
  value: "active",
261
262
  children: l("assethandler.assets.list.filters.status.active", "Active")
262
263
  }),
263
- /* @__PURE__ */ C(P, {
264
+ /* @__PURE__ */ w(F, {
264
265
  value: "inactive",
265
266
  children: l("assethandler.assets.list.filters.status.inactive", "Inactive")
266
267
  }),
267
- /* @__PURE__ */ C(P, {
268
+ /* @__PURE__ */ w(F, {
268
269
  value: "maintenance",
269
270
  children: l("assethandler.assets.list.filters.status.maintenance", "Maintenance")
270
271
  }),
271
- /* @__PURE__ */ C(P, {
272
+ /* @__PURE__ */ w(F, {
272
273
  value: "retired",
273
274
  children: l("assethandler.assets.list.filters.status.retired", "Retired")
274
275
  }),
275
- /* @__PURE__ */ C(P, {
276
+ /* @__PURE__ */ w(F, {
276
277
  value: "disposed",
277
278
  children: l("assethandler.assets.list.filters.status.disposed", "Disposed")
278
279
  })
279
280
  ] })]
280
281
  }),
281
- /* @__PURE__ */ w("div", {
282
+ /* @__PURE__ */ T("div", {
282
283
  className: "flex gap-1 rounded-md border p-0.5",
283
284
  children: [
284
- /* @__PURE__ */ w(T, {
285
+ /* @__PURE__ */ T(E, {
285
286
  variant: q === "table" ? "default" : "ghost",
286
287
  size: "sm",
287
288
  className: "h-8 gap-1.5 px-2",
288
289
  "aria-pressed": q === "table",
289
290
  onClick: () => J("table"),
290
- children: [/* @__PURE__ */ C(me, { className: "h-4 w-4" }), /* @__PURE__ */ C("span", {
291
+ children: [/* @__PURE__ */ w(he, { className: "h-4 w-4" }), /* @__PURE__ */ w("span", {
291
292
  className: "hidden sm:inline",
292
293
  children: "Table"
293
294
  })]
294
295
  }),
295
- /* @__PURE__ */ w(T, {
296
+ /* @__PURE__ */ T(E, {
296
297
  variant: q === "grid" ? "default" : "ghost",
297
298
  size: "sm",
298
299
  className: "h-8 gap-1.5 px-2",
299
300
  "aria-pressed": q === "grid",
300
301
  onClick: () => J("grid"),
301
- children: [/* @__PURE__ */ C(fe, { className: "h-4 w-4" }), /* @__PURE__ */ C("span", {
302
+ children: [/* @__PURE__ */ w(pe, { className: "h-4 w-4" }), /* @__PURE__ */ w("span", {
302
303
  className: "hidden sm:inline",
303
304
  children: "Grid"
304
305
  })]
305
306
  }),
306
- /* @__PURE__ */ w(T, {
307
+ /* @__PURE__ */ T(E, {
307
308
  variant: q === "list" ? "default" : "ghost",
308
309
  size: "sm",
309
310
  className: "h-8 gap-1.5 px-2",
310
311
  "aria-pressed": q === "list",
311
312
  onClick: () => J("list"),
312
- children: [/* @__PURE__ */ C(pe, { className: "h-4 w-4" }), /* @__PURE__ */ C("span", {
313
+ children: [/* @__PURE__ */ w(me, { className: "h-4 w-4" }), /* @__PURE__ */ w("span", {
313
314
  className: "hidden sm:inline",
314
315
  children: "List"
315
316
  })]
@@ -319,17 +320,17 @@ function U() {
319
320
  ]
320
321
  })
321
322
  }) }),
322
- !v && h.length === 0 ? /* @__PURE__ */ C("div", {
323
+ !_ && h.length === 0 ? /* @__PURE__ */ w("div", {
323
324
  className: "space-y-2",
324
- children: Array.from({ length: 6 }).map((e, t) => /* @__PURE__ */ C("div", { className: "h-10 rounded-md bg-bg-sunken motion-safe:animate-vc-shimmer" }, t))
325
+ children: Array.from({ length: 6 }).map((e, t) => /* @__PURE__ */ w("div", { className: "h-10 rounded-md bg-bg-sunken motion-safe:animate-vc-shimmer" }, t))
325
326
  }) : null,
326
- q === "table" && X.length > 0 && /* @__PURE__ */ C(E, { children: /* @__PURE__ */ C(D, {
327
+ q === "table" && X.length > 0 && /* @__PURE__ */ w(D, { children: /* @__PURE__ */ w(O, {
327
328
  className: "p-0",
328
- children: /* @__PURE__ */ C("div", {
329
+ children: /* @__PURE__ */ w("div", {
329
330
  className: "overflow-x-auto",
330
- children: /* @__PURE__ */ w("table", {
331
+ children: /* @__PURE__ */ T("table", {
331
332
  className: "w-full text-sm",
332
- children: [/* @__PURE__ */ C("thead", { children: /* @__PURE__ */ w("tr", {
333
+ children: [/* @__PURE__ */ w("thead", { children: /* @__PURE__ */ T("tr", {
333
334
  className: "border-b bg-bg-sunken/50 text-text-secondary",
334
335
  children: [
335
336
  $(l("assethandler.assets.list.table.assetTag", "{{asset}} Tag"), "assetTag"),
@@ -337,66 +338,72 @@ function U() {
337
338
  $(l("assethandler.assets.list.table.category", "Category"), "category"),
338
339
  $(l("assethandler.assets.list.table.status", "Status"), "status"),
339
340
  $(l("assethandler.assets.list.table.condition", "Condition"), "condition"),
340
- /* @__PURE__ */ C("th", {
341
+ /* @__PURE__ */ w("th", {
341
342
  className: "p-3 text-left font-medium",
342
343
  children: l("assethandler.assets.list.table.location", "Location")
343
344
  }),
344
345
  $(l("assethandler.assets.list.table.assignedTo", "Assigned To"), "assignedTo"),
345
- /* @__PURE__ */ C("th", { className: "w-10 p-3" })
346
+ /* @__PURE__ */ w("th", { className: "w-10 p-3" })
346
347
  ]
347
- }) }), /* @__PURE__ */ C("tbody", { children: Q.pageItems.map((e) => /* @__PURE__ */ w("tr", {
348
+ }) }), /* @__PURE__ */ w("tbody", { children: Q.pageItems.map((e) => /* @__PURE__ */ T("tr", {
348
349
  className: "cursor-pointer border-b hover:bg-bg-sunken/50",
349
350
  onClick: () => d(`/assets/${e.id}`),
350
351
  children: [
351
- /* @__PURE__ */ C("td", {
352
+ /* @__PURE__ */ w("td", {
352
353
  className: "p-3",
353
- children: /* @__PURE__ */ w("span", {
354
+ children: /* @__PURE__ */ T("span", {
354
355
  className: "flex items-center gap-3",
355
- children: [/* @__PURE__ */ C(V, { category: e.category }), /* @__PURE__ */ C("span", {
356
+ children: [/* @__PURE__ */ w(H, { category: e.category }), /* @__PURE__ */ w("span", {
356
357
  className: "font-mono text-xs",
357
358
  children: e.assetTag
358
359
  })]
359
360
  })
360
361
  }),
361
- /* @__PURE__ */ w("td", {
362
+ /* @__PURE__ */ T("td", {
362
363
  className: "p-3",
363
- children: [/* @__PURE__ */ C("p", {
364
+ children: [/* @__PURE__ */ w("p", {
364
365
  className: "font-medium text-text-primary",
365
366
  children: e.name
366
- }), /* @__PURE__ */ C("p", {
367
+ }), /* @__PURE__ */ w("p", {
367
368
  className: "text-xs text-text-secondary",
368
369
  children: e.serialNumber
369
370
  })]
370
371
  }),
371
- /* @__PURE__ */ C("td", {
372
+ /* @__PURE__ */ w("td", {
372
373
  className: "p-3",
373
374
  children: n(e.category, p)
374
375
  }),
375
- /* @__PURE__ */ C("td", {
376
+ /* @__PURE__ */ w("td", {
376
377
  className: "p-3",
377
- children: /* @__PURE__ */ C(H, { status: e.status })
378
+ children: /* @__PURE__ */ w(U, { status: e.status })
378
379
  }),
379
- /* @__PURE__ */ C("td", {
380
+ /* @__PURE__ */ w("td", {
380
381
  className: "p-3",
381
- children: /* @__PURE__ */ C("span", {
382
- className: `inline-flex rounded-md px-2 py-0.5 text-xs font-medium capitalize ${R[e.condition] || ""}`,
382
+ children: /* @__PURE__ */ w("span", {
383
+ className: `inline-flex rounded-md px-2 py-0.5 text-xs font-medium capitalize ${z[e.condition] || ""}`,
383
384
  children: e.condition
384
385
  })
385
386
  }),
386
- /* @__PURE__ */ C("td", {
387
+ /* @__PURE__ */ w("td", {
387
388
  className: "max-w-[200px] truncate p-3 text-xs",
388
389
  children: e.location || "—"
389
390
  }),
390
- /* @__PURE__ */ C("td", {
391
+ /* @__PURE__ */ w("td", {
391
392
  className: "p-3 text-xs",
392
393
  children: e.assignedTo || "—"
393
394
  }),
394
- /* @__PURE__ */ C("td", {
395
+ /* @__PURE__ */ w("td", {
395
396
  className: "p-3",
396
397
  onClick: (e) => e.stopPropagation(),
397
- children: /* @__PURE__ */ C(Ce, {
398
+ children: /* @__PURE__ */ w(we, {
398
399
  onView: () => d(`/assets/${e.id}`),
399
- onCopy: () => ke(e.assetTag)
400
+ onCopy: () => Ae(e.assetTag),
401
+ onPrint: () => void se({
402
+ name: e.name,
403
+ tagId: e.tagId,
404
+ assetTag: e.assetTag,
405
+ category: e.category
406
+ })
400
407
  })
401
408
  })
402
409
  ]
@@ -404,52 +411,52 @@ function U() {
404
411
  })
405
412
  })
406
413
  }) }),
407
- q === "grid" && X.length > 0 && /* @__PURE__ */ C("div", {
414
+ q === "grid" && X.length > 0 && /* @__PURE__ */ w("div", {
408
415
  className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3",
409
- children: Q.pageItems.map((e) => /* @__PURE__ */ w(E, {
416
+ children: Q.pageItems.map((e) => /* @__PURE__ */ T(D, {
410
417
  className: "cursor-pointer",
411
418
  onClick: () => d(`/assets/${e.id}`),
412
- children: [/* @__PURE__ */ w(he, {
419
+ children: [/* @__PURE__ */ T(ge, {
413
420
  className: "pb-2",
414
- children: [/* @__PURE__ */ w("div", {
421
+ children: [/* @__PURE__ */ T("div", {
415
422
  className: "flex items-center justify-between gap-2",
416
- children: [/* @__PURE__ */ w("span", {
423
+ children: [/* @__PURE__ */ T("span", {
417
424
  className: "flex min-w-0 items-center gap-2.5",
418
- children: [/* @__PURE__ */ C(V, { category: e.category }), /* @__PURE__ */ C("span", {
425
+ children: [/* @__PURE__ */ w(H, { category: e.category }), /* @__PURE__ */ w("span", {
419
426
  className: "font-mono text-xs text-text-secondary",
420
427
  children: e.assetTag
421
428
  })]
422
- }), /* @__PURE__ */ C(H, { status: e.status })]
423
- }), /* @__PURE__ */ C(ge, {
429
+ }), /* @__PURE__ */ w(U, { status: e.status })]
430
+ }), /* @__PURE__ */ w(_e, {
424
431
  className: "mt-2 text-base",
425
432
  children: e.name
426
433
  })]
427
- }), /* @__PURE__ */ C(D, { children: /* @__PURE__ */ w("div", {
434
+ }), /* @__PURE__ */ w(O, { children: /* @__PURE__ */ T("div", {
428
435
  className: "space-y-2 text-sm",
429
436
  children: [
430
- /* @__PURE__ */ w("div", {
437
+ /* @__PURE__ */ T("div", {
431
438
  className: "flex justify-between",
432
- children: [/* @__PURE__ */ C("span", {
439
+ children: [/* @__PURE__ */ w("span", {
433
440
  className: "text-text-secondary",
434
441
  children: l("assethandler.assets.list.grid.category", "Category")
435
- }), /* @__PURE__ */ C("span", { children: n(e.category, p) })]
442
+ }), /* @__PURE__ */ w("span", { children: n(e.category, p) })]
436
443
  }),
437
- /* @__PURE__ */ w("div", {
444
+ /* @__PURE__ */ T("div", {
438
445
  className: "flex justify-between",
439
- children: [/* @__PURE__ */ C("span", {
446
+ children: [/* @__PURE__ */ w("span", {
440
447
  className: "text-text-secondary",
441
448
  children: l("assethandler.assets.list.grid.condition", "Condition")
442
- }), /* @__PURE__ */ C("span", {
443
- className: `rounded-md px-2 py-0.5 text-xs font-medium capitalize ${R[e.condition] || ""}`,
449
+ }), /* @__PURE__ */ w("span", {
450
+ className: `rounded-md px-2 py-0.5 text-xs font-medium capitalize ${z[e.condition] || ""}`,
444
451
  children: e.condition
445
452
  })]
446
453
  }),
447
- /* @__PURE__ */ w("div", {
454
+ /* @__PURE__ */ T("div", {
448
455
  className: "flex justify-between",
449
- children: [/* @__PURE__ */ C("span", {
456
+ children: [/* @__PURE__ */ w("span", {
450
457
  className: "text-text-secondary",
451
458
  children: l("assethandler.assets.list.grid.assignedTo", "Assigned To")
452
- }), /* @__PURE__ */ C("span", {
459
+ }), /* @__PURE__ */ w("span", {
453
460
  className: "text-xs",
454
461
  children: e.assignedTo || "—"
455
462
  })]
@@ -458,29 +465,29 @@ function U() {
458
465
  }) })]
459
466
  }, e.id))
460
467
  }),
461
- q === "list" && X.length > 0 && /* @__PURE__ */ C("div", {
468
+ q === "list" && X.length > 0 && /* @__PURE__ */ w("div", {
462
469
  className: "space-y-2",
463
- children: Q.pageItems.map((e) => /* @__PURE__ */ C(E, {
470
+ children: Q.pageItems.map((e) => /* @__PURE__ */ w(D, {
464
471
  className: "cursor-pointer",
465
472
  onClick: () => d(`/assets/${e.id}`),
466
- children: /* @__PURE__ */ C(D, {
473
+ children: /* @__PURE__ */ w(O, {
467
474
  className: "px-4 py-3",
468
- children: /* @__PURE__ */ w("div", {
475
+ children: /* @__PURE__ */ T("div", {
469
476
  className: "flex items-center gap-3",
470
- children: [/* @__PURE__ */ C(V, { category: e.category }), /* @__PURE__ */ w("div", {
477
+ children: [/* @__PURE__ */ w(H, { category: e.category }), /* @__PURE__ */ T("div", {
471
478
  className: "min-w-0 flex-1",
472
- children: [/* @__PURE__ */ w("div", {
479
+ children: [/* @__PURE__ */ T("div", {
473
480
  className: "flex items-center justify-between gap-2",
474
- children: [/* @__PURE__ */ C("p", {
481
+ children: [/* @__PURE__ */ w("p", {
475
482
  className: "truncate text-sm font-medium",
476
483
  children: e.name
477
- }), /* @__PURE__ */ C(H, { status: e.status })]
478
- }), /* @__PURE__ */ w("p", {
484
+ }), /* @__PURE__ */ w(U, { status: e.status })]
485
+ }), /* @__PURE__ */ T("p", {
479
486
  className: "truncate text-xs text-text-secondary",
480
487
  children: [
481
488
  e.assetTag,
482
- e.serialNumber ? /* @__PURE__ */ w(S, { children: [" · ", e.serialNumber] }) : null,
483
- e.location ? /* @__PURE__ */ w(S, { children: [" · ", e.location] }) : null
489
+ e.serialNumber ? /* @__PURE__ */ T(C, { children: [" · ", e.serialNumber] }) : null,
490
+ e.location ? /* @__PURE__ */ T(C, { children: [" · ", e.location] }) : null
484
491
  ]
485
492
  })]
486
493
  })]
@@ -488,7 +495,7 @@ function U() {
488
495
  })
489
496
  }, e.id))
490
497
  }),
491
- X.length > 0 && /* @__PURE__ */ C(ae, {
498
+ X.length > 0 && /* @__PURE__ */ w(ae, {
492
499
  page: Q.page,
493
500
  pageCount: Q.pageCount,
494
501
  rangeStart: Q.rangeStart,
@@ -500,41 +507,48 @@ function U() {
500
507
  onNext: Q.nextPage,
501
508
  itemLabel: "assets"
502
509
  }),
503
- v && X.length === 0 && /* @__PURE__ */ C(ve, {
504
- illustration: b || O !== "all" || A !== "all" ? "empty-search" : "empty-data",
510
+ _ && X.length === 0 && /* @__PURE__ */ w(ye, {
511
+ illustration: b || S !== "all" || A !== "all" ? "empty-search" : "empty-data",
505
512
  title: l("assethandler.assets.list.empty.title", "No {{assetsLower}} found"),
506
513
  description: l("assethandler.assets.list.empty.description", "Try adjusting your filters or add a new {{assetLower}} to get started."),
507
- action: /* @__PURE__ */ w(T, {
514
+ action: /* @__PURE__ */ T(E, {
508
515
  size: "sm",
509
516
  onClick: () => d("/assets/asset-create"),
510
- children: [/* @__PURE__ */ C(g, { className: "mr-2 h-4 w-4" }), l("assethandler.assets.list.actions.addAsset", "Add {{asset}}")]
517
+ children: [/* @__PURE__ */ w(g, { className: "mr-2 h-4 w-4" }), l("assethandler.assets.list.actions.addAsset", "Add {{asset}}")]
511
518
  })
512
519
  })
513
520
  ]
514
521
  });
515
522
  }
516
- function Ce({ onView: e, onCopy: t }) {
517
- return /* @__PURE__ */ w(O, { children: [/* @__PURE__ */ C(j, {
523
+ function we({ onView: e, onCopy: t, onPrint: n }) {
524
+ return /* @__PURE__ */ T(k, { children: [/* @__PURE__ */ w(M, {
518
525
  asChild: !0,
519
- children: /* @__PURE__ */ C(T, {
526
+ children: /* @__PURE__ */ w(E, {
520
527
  variant: "ghost",
521
528
  size: "icon",
522
529
  className: "h-8 w-8",
523
530
  "aria-label": "Asset actions",
524
- children: /* @__PURE__ */ C(h, { className: "h-4 w-4" })
531
+ children: /* @__PURE__ */ w(h, { className: "h-4 w-4" })
525
532
  })
526
- }), /* @__PURE__ */ w(k, {
533
+ }), /* @__PURE__ */ T(A, {
527
534
  align: "end",
528
- children: [/* @__PURE__ */ w(A, {
529
- onClick: e,
530
- children: [/* @__PURE__ */ C(p, { className: "mr-2 h-4 w-4" }), "View details"]
531
- }), /* @__PURE__ */ w(A, {
532
- onClick: t,
533
- children: [/* @__PURE__ */ C(f, { className: "mr-2 h-4 w-4" }), "Copy asset tag"]
534
- })]
535
+ children: [
536
+ /* @__PURE__ */ T(j, {
537
+ onClick: e,
538
+ children: [/* @__PURE__ */ w(p, { className: "mr-2 h-4 w-4" }), "View details"]
539
+ }),
540
+ /* @__PURE__ */ T(j, {
541
+ onClick: t,
542
+ children: [/* @__PURE__ */ w(f, { className: "mr-2 h-4 w-4" }), "Copy asset tag"]
543
+ }),
544
+ /* @__PURE__ */ T(j, {
545
+ onClick: n,
546
+ children: [/* @__PURE__ */ w(_, { className: "mr-2 h-4 w-4" }), "Print tag"]
547
+ })
548
+ ]
535
549
  })] });
536
550
  }
537
551
  //#endregion
538
- export { U as AssetsAssetListPage };
552
+ export { W as AssetsAssetListPage };
539
553
 
540
554
  //# sourceMappingURL=AssetsAssetListPage.js.map