@burdenoff/microfe-assethandler 2026.703.2 → 2026.703.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/assethandler/AssetHandlerRoot.js +18 -18
  2. package/dist/assethandler/hooks/useAssetHandlerNavigate.js +19 -0
  3. package/dist/assethandler/hooks/useAssetHandlerNavigate.js.map +1 -0
  4. package/dist/assethandler/pages/AiPredictionsPage.js +29 -29
  5. package/dist/assethandler/pages/AnalyticsPage.js +154 -154
  6. package/dist/assethandler/pages/AssetsAssetCategoriesPage.js +48 -48
  7. package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js +84 -84
  8. package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js.map +1 -1
  9. package/dist/assethandler/pages/AssetsAssetCreatePage.js +82 -82
  10. package/dist/assethandler/pages/AssetsAssetCreatePage.js.map +1 -1
  11. package/dist/assethandler/pages/AssetsAssetDetailPage.js +104 -103
  12. package/dist/assethandler/pages/AssetsAssetDetailPage.js.map +1 -1
  13. package/dist/assethandler/pages/AssetsAssetListPage.js +132 -132
  14. package/dist/assethandler/pages/AssetsAssetListPage.js.map +1 -1
  15. package/dist/assethandler/pages/AssetsAssetTrackingPage.js +52 -52
  16. package/dist/assethandler/pages/CmdbBrowserPage.js +27 -27
  17. package/dist/assethandler/pages/DashboardPage.js +119 -119
  18. package/dist/assethandler/pages/DashboardPage.js.map +1 -1
  19. package/dist/assethandler/pages/DigitalTwinPage.js +22 -22
  20. package/dist/assethandler/pages/DiscoveryJobsPage.js +35 -35
  21. package/dist/assethandler/pages/EsgDashboardPage.js +32 -32
  22. package/dist/assethandler/pages/FinanceBudgetDetailPage.js +57 -56
  23. package/dist/assethandler/pages/FinanceBudgetDetailPage.js.map +1 -1
  24. package/dist/assethandler/pages/FinanceFinanceHubPage.js +98 -98
  25. package/dist/assethandler/pages/FinanceFinanceHubPage.js.map +1 -1
  26. package/dist/assethandler/pages/FinanceInvoiceDetailPage.js +58 -57
  27. package/dist/assethandler/pages/FinanceInvoiceDetailPage.js.map +1 -1
  28. package/dist/assethandler/pages/IotDevicesPage.js +29 -29
  29. package/dist/assethandler/pages/ItilChangeDetailPage.js +76 -75
  30. package/dist/assethandler/pages/ItilChangeDetailPage.js.map +1 -1
  31. package/dist/assethandler/pages/ItilChangeManagementPage.js +49 -49
  32. package/dist/assethandler/pages/ItilIncidentDetailPage.js +63 -62
  33. package/dist/assethandler/pages/ItilIncidentDetailPage.js.map +1 -1
  34. package/dist/assethandler/pages/ItilIncidentManagementPage.js +72 -72
  35. package/dist/assethandler/pages/ItilItilhubPage.js +112 -112
  36. package/dist/assethandler/pages/ItilItilhubPage.js.map +1 -1
  37. package/dist/assethandler/pages/ItilProblemDetailPage.js +61 -60
  38. package/dist/assethandler/pages/ItilProblemDetailPage.js.map +1 -1
  39. package/dist/assethandler/pages/ItilProblemManagementPage.js +46 -46
  40. package/dist/assethandler/pages/KnowledgeBasePage.js +28 -28
  41. package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.js +52 -52
  42. package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.js +29 -29
  43. package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js +58 -57
  44. package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js.map +1 -1
  45. package/dist/assethandler/pages/OperationsOperationsHubPage.js +80 -80
  46. package/dist/assethandler/pages/OperationsOperationsHubPage.js.map +1 -1
  47. package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js +49 -48
  48. package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js.map +1 -1
  49. package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js +52 -52
  50. package/dist/assethandler/pages/ProvenancePage.js +36 -36
  51. package/dist/assethandler/pages/SamLicensesPage.js +27 -27
  52. package/dist/assethandler/pages/SecurityComplianceDetailPage.js +39 -38
  53. package/dist/assethandler/pages/SecurityComplianceDetailPage.js.map +1 -1
  54. package/dist/assethandler/pages/SecurityPolicyDetailPage.js +50 -49
  55. package/dist/assethandler/pages/SecurityPolicyDetailPage.js.map +1 -1
  56. package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js +47 -46
  57. package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js.map +1 -1
  58. package/dist/assethandler/pages/SecuritySecurityHubPage.js +104 -104
  59. package/dist/assethandler/pages/SecuritySecurityHubPage.js.map +1 -1
  60. package/dist/assethandler/pages/TransactionsTransactionDetailPage.js +74 -73
  61. package/dist/assethandler/pages/TransactionsTransactionDetailPage.js.map +1 -1
  62. package/dist/assethandler/pages/TransactionsTransactionListPage.js +77 -77
  63. package/dist/assethandler/providers/AssetHandlerProvider.js +12 -12
  64. package/package.json +1 -1
@@ -1,8 +1,9 @@
1
1
  import { useAssetHandlerStore as e } from "../store/assethandlerStore.js";
2
- import { ArrowLeft as t, Building as n, Calendar as r, CheckCircle2 as i, DollarSign as a, FileText as o, Package as s, Printer as c, XCircle as l } from "lucide-react";
3
- import { useNavigate as u, useParams as d } from "react-router-dom";
4
- import { Badge as f, Button as p, Card as m, CardContent as h, CardHeader as g, CardTitle as _, EmphasisPanel as v, GradientText as y, IllustratedEmptyState as b, PagePurpose as x, Separator as S } from "@burdenoff/fe-libs/ui";
5
- import { jsx as C, jsxs as w } from "react/jsx-runtime";
2
+ import { useAssetHandlerNavigate as t } from "../hooks/useAssetHandlerNavigate.js";
3
+ import { ArrowLeft as n, Building as r, Calendar as i, CheckCircle2 as a, DollarSign as o, FileText as s, Package as c, Printer as l, XCircle as u } from "lucide-react";
4
+ import { useParams as d } from "react-router-dom";
5
+ import { jsx as f, jsxs as p } from "react/jsx-runtime";
6
+ import { Badge as m, Button as h, Card as g, CardContent as _, CardHeader as v, CardTitle as y, EmphasisPanel as b, GradientText as x, IllustratedEmptyState as S, PagePurpose as C, Separator as w } from "@burdenoff/fe-libs/ui";
6
7
  //#region src/assethandler/pages/TransactionsTransactionDetailPage.tsx
7
8
  var T = {
8
9
  pending: "outline",
@@ -40,150 +41,150 @@ var T = {
40
41
  }
41
42
  ];
42
43
  function O() {
43
- let O = u(), { transactionId: k } = d(), { transactions: A } = e(), j = A.find((e) => e.id === k) ?? A[0];
44
- return j ? /* @__PURE__ */ w("div", {
44
+ let O = t(), { transactionId: k } = d(), { transactions: A } = e(), j = A.find((e) => e.id === k) ?? A[0];
45
+ return j ? /* @__PURE__ */ p("div", {
45
46
  className: "space-y-6 p-6 max-w-5xl",
46
47
  children: [
47
- /* @__PURE__ */ w("div", {
48
+ /* @__PURE__ */ p("div", {
48
49
  className: "flex items-center justify-between",
49
- children: [/* @__PURE__ */ w("div", {
50
+ children: [/* @__PURE__ */ p("div", {
50
51
  className: "flex items-center gap-3",
51
- children: [/* @__PURE__ */ C(p, {
52
+ children: [/* @__PURE__ */ f(h, {
52
53
  variant: "outline",
53
54
  size: "sm",
54
55
  onClick: () => O("/transactions/transaction-list"),
55
- children: /* @__PURE__ */ C(t, { className: "h-4 w-4" })
56
- }), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ w("div", {
56
+ children: /* @__PURE__ */ f(n, { className: "h-4 w-4" })
57
+ }), /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ p("div", {
57
58
  className: "flex items-center gap-2",
58
59
  children: [
59
- /* @__PURE__ */ C("h1", {
60
+ /* @__PURE__ */ f("h1", {
60
61
  className: "text-2xl font-semibold",
61
- children: /* @__PURE__ */ C(y, { children: j.id })
62
+ children: /* @__PURE__ */ f(x, { children: j.id })
62
63
  }),
63
- /* @__PURE__ */ C(f, {
64
+ /* @__PURE__ */ f(m, {
64
65
  variant: T[j.status],
65
66
  children: j.status
66
67
  }),
67
- /* @__PURE__ */ C(f, {
68
+ /* @__PURE__ */ f(m, {
68
69
  variant: E[j.type],
69
70
  children: j.type
70
71
  })
71
72
  ]
72
- }), /* @__PURE__ */ C("p", {
73
+ }), /* @__PURE__ */ f("p", {
73
74
  className: "text-sm text-text-secondary",
74
75
  children: j.description
75
76
  })] })]
76
- }), /* @__PURE__ */ w("div", {
77
+ }), /* @__PURE__ */ p("div", {
77
78
  className: "flex gap-2",
78
79
  children: [
79
- /* @__PURE__ */ w(p, {
80
+ /* @__PURE__ */ p(h, {
80
81
  variant: "outline",
81
82
  size: "sm",
82
- children: [/* @__PURE__ */ C(c, { className: "mr-2 h-4 w-4" }), "Print"]
83
+ children: [/* @__PURE__ */ f(l, { className: "mr-2 h-4 w-4" }), "Print"]
83
84
  }),
84
- /* @__PURE__ */ w(p, {
85
+ /* @__PURE__ */ p(h, {
85
86
  variant: "outline",
86
87
  size: "sm",
87
- children: [/* @__PURE__ */ C(i, { className: "mr-2 h-4 w-4" }), "Approve"]
88
+ children: [/* @__PURE__ */ f(a, { className: "mr-2 h-4 w-4" }), "Approve"]
88
89
  }),
89
- /* @__PURE__ */ w(p, {
90
+ /* @__PURE__ */ p(h, {
90
91
  variant: "destructive",
91
92
  size: "sm",
92
- children: [/* @__PURE__ */ C(l, { className: "mr-2 h-4 w-4" }), "Reject"]
93
+ children: [/* @__PURE__ */ f(u, { className: "mr-2 h-4 w-4" }), "Reject"]
93
94
  })
94
95
  ]
95
96
  })]
96
97
  }),
97
- /* @__PURE__ */ C(x, { children: "The complete record of a single financial transaction tied to your assets — what it was for, how much, against which budget and asset, and its approval timeline. Use this page to verify, approve or reject a transaction with a full audit trail." }),
98
- /* @__PURE__ */ w("div", {
98
+ /* @__PURE__ */ f(C, { children: "The complete record of a single financial transaction tied to your assets — what it was for, how much, against which budget and asset, and its approval timeline. Use this page to verify, approve or reject a transaction with a full audit trail." }),
99
+ /* @__PURE__ */ p("div", {
99
100
  className: "grid gap-6 md:grid-cols-2",
100
101
  children: [
101
- /* @__PURE__ */ w(m, { children: [/* @__PURE__ */ C(g, { children: /* @__PURE__ */ w(_, {
102
+ /* @__PURE__ */ p(g, { children: [/* @__PURE__ */ f(v, { children: /* @__PURE__ */ p(y, {
102
103
  className: "flex items-center gap-2",
103
- children: [/* @__PURE__ */ C(o, { className: "h-5 w-5" }), "Transaction Information"]
104
- }) }), /* @__PURE__ */ w(h, {
104
+ children: [/* @__PURE__ */ f(s, { className: "h-5 w-5" }), "Transaction Information"]
105
+ }) }), /* @__PURE__ */ p(_, {
105
106
  className: "space-y-4",
106
107
  children: [
107
- /* @__PURE__ */ w("div", {
108
+ /* @__PURE__ */ p("div", {
108
109
  className: "grid grid-cols-2 gap-4",
109
110
  children: [
110
- /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
111
+ /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("p", {
111
112
  className: "text-sm text-text-secondary",
112
113
  children: "Transaction ID"
113
- }), /* @__PURE__ */ C("p", {
114
+ }), /* @__PURE__ */ f("p", {
114
115
  className: "font-mono font-medium",
115
116
  children: j.id
116
117
  })] }),
117
- /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
118
+ /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("p", {
118
119
  className: "text-sm text-text-secondary",
119
120
  children: "Type"
120
- }), /* @__PURE__ */ C(f, {
121
+ }), /* @__PURE__ */ f(m, {
121
122
  variant: E[j.type],
122
123
  children: j.type
123
124
  })] }),
124
- /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
125
+ /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("p", {
125
126
  className: "text-sm text-text-secondary",
126
127
  children: "Category"
127
- }), /* @__PURE__ */ C("p", {
128
+ }), /* @__PURE__ */ f("p", {
128
129
  className: "font-medium",
129
130
  children: j.category
130
131
  })] }),
131
- /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
132
+ /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("p", {
132
133
  className: "text-sm text-text-secondary",
133
134
  children: "Status"
134
- }), /* @__PURE__ */ C(f, {
135
+ }), /* @__PURE__ */ f(m, {
135
136
  variant: T[j.status],
136
137
  children: j.status
137
138
  })] })
138
139
  ]
139
140
  }),
140
- /* @__PURE__ */ C(S, {}),
141
- /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
141
+ /* @__PURE__ */ f(w, {}),
142
+ /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("p", {
142
143
  className: "text-sm text-text-secondary",
143
144
  children: "Description"
144
- }), /* @__PURE__ */ C("p", {
145
+ }), /* @__PURE__ */ f("p", {
145
146
  className: "mt-1",
146
147
  children: j.description
147
148
  })] })
148
149
  ]
149
150
  })] }),
150
- /* @__PURE__ */ w(v, { children: [/* @__PURE__ */ C(g, {
151
+ /* @__PURE__ */ p(b, { children: [/* @__PURE__ */ f(v, {
151
152
  className: "px-0 pt-0",
152
- children: /* @__PURE__ */ w(_, {
153
+ children: /* @__PURE__ */ p(y, {
153
154
  className: "flex items-center gap-2",
154
- children: [/* @__PURE__ */ C(a, { className: "h-5 w-5" }), "Financial Details"]
155
+ children: [/* @__PURE__ */ f(o, { className: "h-5 w-5" }), "Financial Details"]
155
156
  })
156
- }), /* @__PURE__ */ w(h, {
157
+ }), /* @__PURE__ */ p(_, {
157
158
  className: "space-y-4 px-0 pb-0",
158
159
  children: [
159
- /* @__PURE__ */ w("div", {
160
+ /* @__PURE__ */ p("div", {
160
161
  className: "grid grid-cols-2 gap-4",
161
- children: [/* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
162
+ children: [/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("p", {
162
163
  className: "text-sm text-text-secondary",
163
164
  children: "Amount"
164
- }), /* @__PURE__ */ C("p", {
165
+ }), /* @__PURE__ */ f("p", {
165
166
  className: `text-2xl font-bold ${j.amount < 0 ? "text-status-error-text" : ""}`,
166
167
  children: ((e) => Math.abs(e).toLocaleString("en-US", {
167
168
  style: "currency",
168
169
  currency: "USD"
169
170
  }))(j.amount)
170
- })] }), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
171
+ })] }), /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("p", {
171
172
  className: "text-sm text-text-secondary",
172
173
  children: "Currency"
173
- }), /* @__PURE__ */ C("p", {
174
+ }), /* @__PURE__ */ f("p", {
174
175
  className: "font-medium",
175
176
  children: j.currency
176
177
  })] })]
177
178
  }),
178
- /* @__PURE__ */ C(S, {}),
179
- /* @__PURE__ */ C("div", {
179
+ /* @__PURE__ */ f(w, {}),
180
+ /* @__PURE__ */ f("div", {
180
181
  className: "grid grid-cols-2 gap-4",
181
- children: /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
182
+ children: /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("p", {
182
183
  className: "text-sm text-text-secondary",
183
184
  children: "Date"
184
- }), /* @__PURE__ */ w("div", {
185
+ }), /* @__PURE__ */ p("div", {
185
186
  className: "flex items-center gap-1 mt-1",
186
- children: [/* @__PURE__ */ C(r, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ C("p", {
187
+ children: [/* @__PURE__ */ f(i, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ f("p", {
187
188
  className: "font-medium",
188
189
  children: new Date(j.date).toLocaleDateString()
189
190
  })]
@@ -191,44 +192,44 @@ function O() {
191
192
  })
192
193
  ]
193
194
  })] }),
194
- /* @__PURE__ */ w(m, { children: [/* @__PURE__ */ C(g, { children: /* @__PURE__ */ w(_, {
195
+ /* @__PURE__ */ p(g, { children: [/* @__PURE__ */ f(v, { children: /* @__PURE__ */ p(y, {
195
196
  className: "flex items-center gap-2",
196
- children: [/* @__PURE__ */ C(s, { className: "h-5 w-5" }), "Related Items"]
197
- }) }), /* @__PURE__ */ C(h, {
197
+ children: [/* @__PURE__ */ f(c, { className: "h-5 w-5" }), "Related Items"]
198
+ }) }), /* @__PURE__ */ f(_, {
198
199
  className: "space-y-4",
199
- children: /* @__PURE__ */ w("div", {
200
+ children: /* @__PURE__ */ p("div", {
200
201
  className: "grid grid-cols-2 gap-4",
201
- children: [j.vendor && /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
202
+ children: [j.vendor && /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("p", {
202
203
  className: "text-sm text-text-secondary",
203
204
  children: "Vendor"
204
- }), /* @__PURE__ */ C("p", {
205
+ }), /* @__PURE__ */ f("p", {
205
206
  className: "font-medium",
206
207
  children: j.vendor
207
- })] }), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
208
+ })] }), /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("p", {
208
209
  className: "text-sm text-text-secondary",
209
210
  children: "Department"
210
- }), /* @__PURE__ */ w("div", {
211
+ }), /* @__PURE__ */ p("div", {
211
212
  className: "flex items-center gap-1 mt-1",
212
- children: [/* @__PURE__ */ C(n, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ C("p", {
213
+ children: [/* @__PURE__ */ f(r, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ f("p", {
213
214
  className: "font-medium",
214
215
  children: j.department
215
216
  })]
216
217
  })] })]
217
218
  })
218
219
  })] }),
219
- /* @__PURE__ */ w(m, { children: [/* @__PURE__ */ C(g, { children: /* @__PURE__ */ C(_, { children: "Status Timeline" }) }), /* @__PURE__ */ C(h, { children: /* @__PURE__ */ C("div", {
220
+ /* @__PURE__ */ p(g, { children: [/* @__PURE__ */ f(v, { children: /* @__PURE__ */ f(y, { children: "Status Timeline" }) }), /* @__PURE__ */ f(_, { children: /* @__PURE__ */ f("div", {
220
221
  className: "space-y-4",
221
- children: D.map((e, t) => /* @__PURE__ */ w("div", {
222
+ children: D.map((e, t) => /* @__PURE__ */ p("div", {
222
223
  className: "flex gap-4",
223
- children: [/* @__PURE__ */ w("div", {
224
+ children: [/* @__PURE__ */ p("div", {
224
225
  className: "flex flex-col items-center",
225
- children: [/* @__PURE__ */ C("div", { className: `h-3 w-3 rounded-full ${t === D.length - 1 ? "bg-status-success-bg" : "bg-action-primary-bg"}` }), t < D.length - 1 && /* @__PURE__ */ C("div", { className: "w-px flex-1 bg-border" })]
226
- }), /* @__PURE__ */ w("div", {
226
+ children: [/* @__PURE__ */ f("div", { className: `h-3 w-3 rounded-full ${t === D.length - 1 ? "bg-status-success-bg" : "bg-action-primary-bg"}` }), t < D.length - 1 && /* @__PURE__ */ f("div", { className: "w-px flex-1 bg-border" })]
227
+ }), /* @__PURE__ */ p("div", {
227
228
  className: "pb-4",
228
- children: [/* @__PURE__ */ C("p", {
229
+ children: [/* @__PURE__ */ f("p", {
229
230
  className: "font-medium text-sm",
230
231
  children: e.status
231
- }), /* @__PURE__ */ w("p", {
232
+ }), /* @__PURE__ */ p("p", {
232
233
  className: "text-xs text-text-secondary",
233
234
  children: [
234
235
  new Date(e.date).toLocaleString(),
@@ -242,13 +243,13 @@ function O() {
242
243
  ]
243
244
  })
244
245
  ]
245
- }) : /* @__PURE__ */ C("div", {
246
+ }) : /* @__PURE__ */ f("div", {
246
247
  className: "p-6",
247
- children: /* @__PURE__ */ C(b, {
248
+ children: /* @__PURE__ */ f(S, {
248
249
  illustration: "empty-search",
249
250
  title: "Transaction not found",
250
251
  description: "This transaction may have been removed. Return to the transaction list to find it.",
251
- action: /* @__PURE__ */ C(p, {
252
+ action: /* @__PURE__ */ f(h, {
252
253
  size: "sm",
253
254
  onClick: () => O("/transactions/transaction-list"),
254
255
  children: "Back to transactions"
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionsTransactionDetailPage.js","names":[],"sources":["../../../src/assethandler/pages/TransactionsTransactionDetailPage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Separator,\n GradientText,\n EmphasisPanel,\n PagePurpose,\n IllustratedEmptyState,\n} from '@burdenoff/fe-libs/ui';\nimport {\n ArrowLeft,\n Printer,\n CheckCircle2,\n XCircle,\n DollarSign,\n Calendar,\n Building,\n FileText,\n Package,\n} from 'lucide-react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { useAssetHandlerStore } from '../store/assethandlerStore';\n\nconst statusColors: Record<string, 'default' | 'secondary' | 'destructive' | 'outline'> = {\n pending: 'outline',\n approved: 'default',\n completed: 'secondary',\n rejected: 'destructive',\n cancelled: 'outline',\n};\n\nconst typeColors: Record<string, 'default' | 'secondary' | 'destructive' | 'outline'> = {\n purchase: 'default',\n lease: 'secondary',\n disposal: 'destructive',\n transfer: 'outline',\n maintenance: 'secondary',\n depreciation: 'outline',\n};\n\nconst statusTimeline = [\n { status: 'Created', date: '2026-01-15T10:30:00Z', actor: 'Procurement System' },\n { status: 'Pending Approval', date: '2026-01-15T10:30:00Z', actor: 'Auto-routed' },\n { status: 'Approved', date: '2026-01-16T14:20:00Z', actor: 'Michael Chen' },\n { status: 'Completed', date: '2026-01-17T09:00:00Z', actor: 'Finance System' },\n];\n\nexport function TransactionsTransactionDetailPage() {\n const navigate = useNavigate();\n const { transactionId } = useParams<{ transactionId: string }>();\n const { transactions } = useAssetHandlerStore();\n const transaction = transactions.find((item) => item.id === transactionId) ?? transactions[0];\n\n if (!transaction) {\n return (\n <div className=\"p-6\">\n <IllustratedEmptyState\n illustration=\"empty-search\"\n title=\"Transaction not found\"\n description=\"This transaction may have been removed. Return to the transaction list to find it.\"\n action={\n <Button size=\"sm\" onClick={() => navigate('/transactions/transaction-list')}>\n Back to transactions\n </Button>\n }\n />\n </div>\n );\n }\n\n const formatAmount = (amount: number) => {\n return Math.abs(amount).toLocaleString('en-US', { style: 'currency', currency: 'USD' });\n };\n\n return (\n <div className=\"space-y-6 p-6 max-w-5xl\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => navigate('/transactions/transaction-list')}\n >\n <ArrowLeft className=\"h-4 w-4\" />\n </Button>\n <div>\n <div className=\"flex items-center gap-2\">\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>{transaction.id}</GradientText>\n </h1>\n <Badge variant={statusColors[transaction.status]}>{transaction.status}</Badge>\n <Badge variant={typeColors[transaction.type]}>{transaction.type}</Badge>\n </div>\n <p className=\"text-sm text-text-secondary\">{transaction.description}</p>\n </div>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\">\n <Printer className=\"mr-2 h-4 w-4\" />\n Print\n </Button>\n <Button variant=\"outline\" size=\"sm\">\n <CheckCircle2 className=\"mr-2 h-4 w-4\" />\n Approve\n </Button>\n <Button variant=\"destructive\" size=\"sm\">\n <XCircle className=\"mr-2 h-4 w-4\" />\n Reject\n </Button>\n </div>\n </div>\n\n <PagePurpose>\n The complete record of a single financial transaction tied to your assets — what it was for,\n how much, against which budget and asset, and its approval timeline. Use this page to\n verify, approve or reject a transaction with a full audit trail.\n </PagePurpose>\n\n <div className=\"grid gap-6 md:grid-cols-2\">\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <FileText className=\"h-5 w-5\" />\n Transaction Information\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">Transaction ID</p>\n <p className=\"font-mono font-medium\">{transaction.id}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Type</p>\n <Badge variant={typeColors[transaction.type]}>{transaction.type}</Badge>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Category</p>\n <p className=\"font-medium\">{transaction.category}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Status</p>\n <Badge variant={statusColors[transaction.status]}>{transaction.status}</Badge>\n </div>\n </div>\n <Separator />\n <div>\n <p className=\"text-sm text-text-secondary\">Description</p>\n <p className=\"mt-1\">{transaction.description}</p>\n </div>\n </CardContent>\n </Card>\n\n <EmphasisPanel>\n <CardHeader className=\"px-0 pt-0\">\n <CardTitle className=\"flex items-center gap-2\">\n <DollarSign className=\"h-5 w-5\" />\n Financial Details\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4 px-0 pb-0\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">Amount</p>\n <p\n className={`text-2xl font-bold ${transaction.amount < 0 ? 'text-status-error-text' : ''}`}\n >\n {formatAmount(transaction.amount)}\n </p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Currency</p>\n <p className=\"font-medium\">{transaction.currency}</p>\n </div>\n </div>\n <Separator />\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">Date</p>\n <div className=\"flex items-center gap-1 mt-1\">\n <Calendar className=\"h-4 w-4 text-text-secondary\" />\n <p className=\"font-medium\">{new Date(transaction.date).toLocaleDateString()}</p>\n </div>\n </div>\n </div>\n </CardContent>\n </EmphasisPanel>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Package className=\"h-5 w-5\" />\n Related Items\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n {transaction.vendor && (\n <div>\n <p className=\"text-sm text-text-secondary\">Vendor</p>\n <p className=\"font-medium\">{transaction.vendor}</p>\n </div>\n )}\n <div>\n <p className=\"text-sm text-text-secondary\">Department</p>\n <div className=\"flex items-center gap-1 mt-1\">\n <Building className=\"h-4 w-4 text-text-secondary\" />\n <p className=\"font-medium\">{transaction.department}</p>\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Status Timeline</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-4\">\n {statusTimeline.map((entry, i) => (\n <div key={i} className=\"flex gap-4\">\n <div className=\"flex flex-col items-center\">\n <div\n className={`h-3 w-3 rounded-full ${i === statusTimeline.length - 1 ? 'bg-status-success-bg' : 'bg-action-primary-bg'}`}\n />\n {i < statusTimeline.length - 1 && <div className=\"w-px flex-1 bg-border\" />}\n </div>\n <div className=\"pb-4\">\n <p className=\"font-medium text-sm\">{entry.status}</p>\n <p className=\"text-xs text-text-secondary\">\n {new Date(entry.date).toLocaleString()} by {entry.actor}\n </p>\n </div>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TransactionsTransactionDetailPage.js","names":[],"sources":["../../../src/assethandler/pages/TransactionsTransactionDetailPage.tsx"],"sourcesContent":["import { useAssetHandlerNavigate } from '../hooks/useAssetHandlerNavigate';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Separator,\n GradientText,\n EmphasisPanel,\n PagePurpose,\n IllustratedEmptyState,\n} from '@burdenoff/fe-libs/ui';\nimport {\n ArrowLeft,\n Printer,\n CheckCircle2,\n XCircle,\n DollarSign,\n Calendar,\n Building,\n FileText,\n Package,\n} from 'lucide-react';\nimport { useParams } from 'react-router-dom';\nimport { useAssetHandlerStore } from '../store/assethandlerStore';\n\nconst statusColors: Record<string, 'default' | 'secondary' | 'destructive' | 'outline'> = {\n pending: 'outline',\n approved: 'default',\n completed: 'secondary',\n rejected: 'destructive',\n cancelled: 'outline',\n};\n\nconst typeColors: Record<string, 'default' | 'secondary' | 'destructive' | 'outline'> = {\n purchase: 'default',\n lease: 'secondary',\n disposal: 'destructive',\n transfer: 'outline',\n maintenance: 'secondary',\n depreciation: 'outline',\n};\n\nconst statusTimeline = [\n { status: 'Created', date: '2026-01-15T10:30:00Z', actor: 'Procurement System' },\n { status: 'Pending Approval', date: '2026-01-15T10:30:00Z', actor: 'Auto-routed' },\n { status: 'Approved', date: '2026-01-16T14:20:00Z', actor: 'Michael Chen' },\n { status: 'Completed', date: '2026-01-17T09:00:00Z', actor: 'Finance System' },\n];\n\nexport function TransactionsTransactionDetailPage() {\n const navigate = useAssetHandlerNavigate();\n const { transactionId } = useParams<{ transactionId: string }>();\n const { transactions } = useAssetHandlerStore();\n const transaction = transactions.find((item) => item.id === transactionId) ?? transactions[0];\n\n if (!transaction) {\n return (\n <div className=\"p-6\">\n <IllustratedEmptyState\n illustration=\"empty-search\"\n title=\"Transaction not found\"\n description=\"This transaction may have been removed. Return to the transaction list to find it.\"\n action={\n <Button size=\"sm\" onClick={() => navigate('/transactions/transaction-list')}>\n Back to transactions\n </Button>\n }\n />\n </div>\n );\n }\n\n const formatAmount = (amount: number) => {\n return Math.abs(amount).toLocaleString('en-US', { style: 'currency', currency: 'USD' });\n };\n\n return (\n <div className=\"space-y-6 p-6 max-w-5xl\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => navigate('/transactions/transaction-list')}\n >\n <ArrowLeft className=\"h-4 w-4\" />\n </Button>\n <div>\n <div className=\"flex items-center gap-2\">\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>{transaction.id}</GradientText>\n </h1>\n <Badge variant={statusColors[transaction.status]}>{transaction.status}</Badge>\n <Badge variant={typeColors[transaction.type]}>{transaction.type}</Badge>\n </div>\n <p className=\"text-sm text-text-secondary\">{transaction.description}</p>\n </div>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\">\n <Printer className=\"mr-2 h-4 w-4\" />\n Print\n </Button>\n <Button variant=\"outline\" size=\"sm\">\n <CheckCircle2 className=\"mr-2 h-4 w-4\" />\n Approve\n </Button>\n <Button variant=\"destructive\" size=\"sm\">\n <XCircle className=\"mr-2 h-4 w-4\" />\n Reject\n </Button>\n </div>\n </div>\n\n <PagePurpose>\n The complete record of a single financial transaction tied to your assets — what it was for,\n how much, against which budget and asset, and its approval timeline. Use this page to\n verify, approve or reject a transaction with a full audit trail.\n </PagePurpose>\n\n <div className=\"grid gap-6 md:grid-cols-2\">\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <FileText className=\"h-5 w-5\" />\n Transaction Information\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">Transaction ID</p>\n <p className=\"font-mono font-medium\">{transaction.id}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Type</p>\n <Badge variant={typeColors[transaction.type]}>{transaction.type}</Badge>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Category</p>\n <p className=\"font-medium\">{transaction.category}</p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Status</p>\n <Badge variant={statusColors[transaction.status]}>{transaction.status}</Badge>\n </div>\n </div>\n <Separator />\n <div>\n <p className=\"text-sm text-text-secondary\">Description</p>\n <p className=\"mt-1\">{transaction.description}</p>\n </div>\n </CardContent>\n </Card>\n\n <EmphasisPanel>\n <CardHeader className=\"px-0 pt-0\">\n <CardTitle className=\"flex items-center gap-2\">\n <DollarSign className=\"h-5 w-5\" />\n Financial Details\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4 px-0 pb-0\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">Amount</p>\n <p\n className={`text-2xl font-bold ${transaction.amount < 0 ? 'text-status-error-text' : ''}`}\n >\n {formatAmount(transaction.amount)}\n </p>\n </div>\n <div>\n <p className=\"text-sm text-text-secondary\">Currency</p>\n <p className=\"font-medium\">{transaction.currency}</p>\n </div>\n </div>\n <Separator />\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <p className=\"text-sm text-text-secondary\">Date</p>\n <div className=\"flex items-center gap-1 mt-1\">\n <Calendar className=\"h-4 w-4 text-text-secondary\" />\n <p className=\"font-medium\">{new Date(transaction.date).toLocaleDateString()}</p>\n </div>\n </div>\n </div>\n </CardContent>\n </EmphasisPanel>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Package className=\"h-5 w-5\" />\n Related Items\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n {transaction.vendor && (\n <div>\n <p className=\"text-sm text-text-secondary\">Vendor</p>\n <p className=\"font-medium\">{transaction.vendor}</p>\n </div>\n )}\n <div>\n <p className=\"text-sm text-text-secondary\">Department</p>\n <div className=\"flex items-center gap-1 mt-1\">\n <Building className=\"h-4 w-4 text-text-secondary\" />\n <p className=\"font-medium\">{transaction.department}</p>\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Status Timeline</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-4\">\n {statusTimeline.map((entry, i) => (\n <div key={i} className=\"flex gap-4\">\n <div className=\"flex flex-col items-center\">\n <div\n className={`h-3 w-3 rounded-full ${i === statusTimeline.length - 1 ? 'bg-status-success-bg' : 'bg-action-primary-bg'}`}\n />\n {i < statusTimeline.length - 1 && <div className=\"w-px flex-1 bg-border\" />}\n </div>\n <div className=\"pb-4\">\n <p className=\"font-medium text-sm\">{entry.status}</p>\n <p className=\"text-xs text-text-secondary\">\n {new Date(entry.date).toLocaleString()} by {entry.actor}\n </p>\n </div>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}