@burdenoff/microfe-assethandler 2026.510.104

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 (270) hide show
  1. package/README.md +12 -0
  2. package/dist/assethandler/AssetHandlerRoot.d.ts +5 -0
  3. package/dist/assethandler/AssetHandlerRoot.d.ts.map +1 -0
  4. package/dist/assethandler/AssetHandlerRoot.js +159 -0
  5. package/dist/assethandler/AssetHandlerRoot.js.map +1 -0
  6. package/dist/assethandler/AssetHandlerRoutes.d.ts +2 -0
  7. package/dist/assethandler/AssetHandlerRoutes.d.ts.map +1 -0
  8. package/dist/assethandler/AssetHandlerRoutes.js +255 -0
  9. package/dist/assethandler/AssetHandlerRoutes.js.map +1 -0
  10. package/dist/assethandler/index.d.ts +5 -0
  11. package/dist/assethandler/index.d.ts.map +1 -0
  12. package/dist/assethandler/index.js +3 -0
  13. package/dist/assethandler/pages/AiPredictionsPage.d.ts +2 -0
  14. package/dist/assethandler/pages/AiPredictionsPage.d.ts.map +1 -0
  15. package/dist/assethandler/pages/AiPredictionsPage.js +133 -0
  16. package/dist/assethandler/pages/AiPredictionsPage.js.map +1 -0
  17. package/dist/assethandler/pages/AnalyticsPage.d.ts +2 -0
  18. package/dist/assethandler/pages/AnalyticsPage.d.ts.map +1 -0
  19. package/dist/assethandler/pages/AnalyticsPage.js +576 -0
  20. package/dist/assethandler/pages/AnalyticsPage.js.map +1 -0
  21. package/dist/assethandler/pages/AssetsAssetCategoriesPage.d.ts +2 -0
  22. package/dist/assethandler/pages/AssetsAssetCategoriesPage.d.ts.map +1 -0
  23. package/dist/assethandler/pages/AssetsAssetCategoriesPage.js +162 -0
  24. package/dist/assethandler/pages/AssetsAssetCategoriesPage.js.map +1 -0
  25. package/dist/assethandler/pages/AssetsAssetCheckInOutPage.d.ts +2 -0
  26. package/dist/assethandler/pages/AssetsAssetCheckInOutPage.d.ts.map +1 -0
  27. package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js +249 -0
  28. package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js.map +1 -0
  29. package/dist/assethandler/pages/AssetsAssetCreatePage.d.ts +2 -0
  30. package/dist/assethandler/pages/AssetsAssetCreatePage.d.ts.map +1 -0
  31. package/dist/assethandler/pages/AssetsAssetCreatePage.js +323 -0
  32. package/dist/assethandler/pages/AssetsAssetCreatePage.js.map +1 -0
  33. package/dist/assethandler/pages/AssetsAssetDetailPage.d.ts +2 -0
  34. package/dist/assethandler/pages/AssetsAssetDetailPage.d.ts.map +1 -0
  35. package/dist/assethandler/pages/AssetsAssetDetailPage.js +392 -0
  36. package/dist/assethandler/pages/AssetsAssetDetailPage.js.map +1 -0
  37. package/dist/assethandler/pages/AssetsAssetEditPage.d.ts +2 -0
  38. package/dist/assethandler/pages/AssetsAssetEditPage.d.ts.map +1 -0
  39. package/dist/assethandler/pages/AssetsAssetEditPage.js +341 -0
  40. package/dist/assethandler/pages/AssetsAssetEditPage.js.map +1 -0
  41. package/dist/assethandler/pages/AssetsAssetListPage.d.ts +2 -0
  42. package/dist/assethandler/pages/AssetsAssetListPage.d.ts.map +1 -0
  43. package/dist/assethandler/pages/AssetsAssetListPage.js +459 -0
  44. package/dist/assethandler/pages/AssetsAssetListPage.js.map +1 -0
  45. package/dist/assethandler/pages/AssetsAssetTrackingPage.d.ts +2 -0
  46. package/dist/assethandler/pages/AssetsAssetTrackingPage.d.ts.map +1 -0
  47. package/dist/assethandler/pages/AssetsAssetTrackingPage.js +166 -0
  48. package/dist/assethandler/pages/AssetsAssetTrackingPage.js.map +1 -0
  49. package/dist/assethandler/pages/AuditTrailPage.d.ts +2 -0
  50. package/dist/assethandler/pages/AuditTrailPage.d.ts.map +1 -0
  51. package/dist/assethandler/pages/AuditTrailPage.js +197 -0
  52. package/dist/assethandler/pages/AuditTrailPage.js.map +1 -0
  53. package/dist/assethandler/pages/CmdbBrowserPage.d.ts +2 -0
  54. package/dist/assethandler/pages/CmdbBrowserPage.d.ts.map +1 -0
  55. package/dist/assethandler/pages/CmdbBrowserPage.js +75 -0
  56. package/dist/assethandler/pages/CmdbBrowserPage.js.map +1 -0
  57. package/dist/assethandler/pages/DashboardPage.d.ts +2 -0
  58. package/dist/assethandler/pages/DashboardPage.d.ts.map +1 -0
  59. package/dist/assethandler/pages/DashboardPage.js +336 -0
  60. package/dist/assethandler/pages/DashboardPage.js.map +1 -0
  61. package/dist/assethandler/pages/DigitalTwinPage.d.ts +2 -0
  62. package/dist/assethandler/pages/DigitalTwinPage.d.ts.map +1 -0
  63. package/dist/assethandler/pages/DigitalTwinPage.js +71 -0
  64. package/dist/assethandler/pages/DigitalTwinPage.js.map +1 -0
  65. package/dist/assethandler/pages/DiscoveryJobsPage.d.ts +2 -0
  66. package/dist/assethandler/pages/DiscoveryJobsPage.d.ts.map +1 -0
  67. package/dist/assethandler/pages/DiscoveryJobsPage.js +115 -0
  68. package/dist/assethandler/pages/DiscoveryJobsPage.js.map +1 -0
  69. package/dist/assethandler/pages/EsgDashboardPage.d.ts +2 -0
  70. package/dist/assethandler/pages/EsgDashboardPage.d.ts.map +1 -0
  71. package/dist/assethandler/pages/EsgDashboardPage.js +130 -0
  72. package/dist/assethandler/pages/EsgDashboardPage.js.map +1 -0
  73. package/dist/assethandler/pages/FinanceBudgetDetailPage.d.ts +2 -0
  74. package/dist/assethandler/pages/FinanceBudgetDetailPage.d.ts.map +1 -0
  75. package/dist/assethandler/pages/FinanceBudgetDetailPage.js +182 -0
  76. package/dist/assethandler/pages/FinanceBudgetDetailPage.js.map +1 -0
  77. package/dist/assethandler/pages/FinanceFinanceHubPage.d.ts +2 -0
  78. package/dist/assethandler/pages/FinanceFinanceHubPage.d.ts.map +1 -0
  79. package/dist/assethandler/pages/FinanceFinanceHubPage.js +324 -0
  80. package/dist/assethandler/pages/FinanceFinanceHubPage.js.map +1 -0
  81. package/dist/assethandler/pages/FinanceInvoiceDetailPage.d.ts +2 -0
  82. package/dist/assethandler/pages/FinanceInvoiceDetailPage.d.ts.map +1 -0
  83. package/dist/assethandler/pages/FinanceInvoiceDetailPage.js +172 -0
  84. package/dist/assethandler/pages/FinanceInvoiceDetailPage.js.map +1 -0
  85. package/dist/assethandler/pages/IotDevicesPage.d.ts +2 -0
  86. package/dist/assethandler/pages/IotDevicesPage.d.ts.map +1 -0
  87. package/dist/assethandler/pages/IotDevicesPage.js +80 -0
  88. package/dist/assethandler/pages/IotDevicesPage.js.map +1 -0
  89. package/dist/assethandler/pages/ItilChangeDetailPage.d.ts +2 -0
  90. package/dist/assethandler/pages/ItilChangeDetailPage.d.ts.map +1 -0
  91. package/dist/assethandler/pages/ItilChangeDetailPage.js +221 -0
  92. package/dist/assethandler/pages/ItilChangeDetailPage.js.map +1 -0
  93. package/dist/assethandler/pages/ItilChangeManagementPage.d.ts +2 -0
  94. package/dist/assethandler/pages/ItilChangeManagementPage.d.ts.map +1 -0
  95. package/dist/assethandler/pages/ItilChangeManagementPage.js +179 -0
  96. package/dist/assethandler/pages/ItilChangeManagementPage.js.map +1 -0
  97. package/dist/assethandler/pages/ItilIncidentDetailPage.d.ts +2 -0
  98. package/dist/assethandler/pages/ItilIncidentDetailPage.d.ts.map +1 -0
  99. package/dist/assethandler/pages/ItilIncidentDetailPage.js +222 -0
  100. package/dist/assethandler/pages/ItilIncidentDetailPage.js.map +1 -0
  101. package/dist/assethandler/pages/ItilIncidentManagementPage.d.ts +2 -0
  102. package/dist/assethandler/pages/ItilIncidentManagementPage.d.ts.map +1 -0
  103. package/dist/assethandler/pages/ItilIncidentManagementPage.js +265 -0
  104. package/dist/assethandler/pages/ItilIncidentManagementPage.js.map +1 -0
  105. package/dist/assethandler/pages/ItilItilhubPage.d.ts +2 -0
  106. package/dist/assethandler/pages/ItilItilhubPage.d.ts.map +1 -0
  107. package/dist/assethandler/pages/ItilItilhubPage.js +374 -0
  108. package/dist/assethandler/pages/ItilItilhubPage.js.map +1 -0
  109. package/dist/assethandler/pages/ItilProblemDetailPage.d.ts +2 -0
  110. package/dist/assethandler/pages/ItilProblemDetailPage.d.ts.map +1 -0
  111. package/dist/assethandler/pages/ItilProblemDetailPage.js +177 -0
  112. package/dist/assethandler/pages/ItilProblemDetailPage.js.map +1 -0
  113. package/dist/assethandler/pages/ItilProblemManagementPage.d.ts +2 -0
  114. package/dist/assethandler/pages/ItilProblemManagementPage.d.ts.map +1 -0
  115. package/dist/assethandler/pages/ItilProblemManagementPage.js +167 -0
  116. package/dist/assethandler/pages/ItilProblemManagementPage.js.map +1 -0
  117. package/dist/assethandler/pages/KnowledgeBasePage.d.ts +2 -0
  118. package/dist/assethandler/pages/KnowledgeBasePage.d.ts.map +1 -0
  119. package/dist/assethandler/pages/KnowledgeBasePage.js +116 -0
  120. package/dist/assethandler/pages/KnowledgeBasePage.js.map +1 -0
  121. package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.d.ts +2 -0
  122. package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.d.ts.map +1 -0
  123. package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.js +185 -0
  124. package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.js.map +1 -0
  125. package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.d.ts +2 -0
  126. package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.d.ts.map +1 -0
  127. package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.js +133 -0
  128. package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.js.map +1 -0
  129. package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.d.ts +2 -0
  130. package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.d.ts.map +1 -0
  131. package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.js +166 -0
  132. package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.js.map +1 -0
  133. package/dist/assethandler/pages/MarketplaceMarketplaceListPage.d.ts +2 -0
  134. package/dist/assethandler/pages/MarketplaceMarketplaceListPage.d.ts.map +1 -0
  135. package/dist/assethandler/pages/MarketplaceMarketplaceListPage.js +155 -0
  136. package/dist/assethandler/pages/MarketplaceMarketplaceListPage.js.map +1 -0
  137. package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.d.ts +2 -0
  138. package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.d.ts.map +1 -0
  139. package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.js +126 -0
  140. package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.js.map +1 -0
  141. package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.d.ts +2 -0
  142. package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.d.ts.map +1 -0
  143. package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.js +157 -0
  144. package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.js.map +1 -0
  145. package/dist/assethandler/pages/OperationsMaintenanceDetailPage.d.ts +2 -0
  146. package/dist/assethandler/pages/OperationsMaintenanceDetailPage.d.ts.map +1 -0
  147. package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js +179 -0
  148. package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js.map +1 -0
  149. package/dist/assethandler/pages/OperationsOperationsHubPage.d.ts +2 -0
  150. package/dist/assethandler/pages/OperationsOperationsHubPage.d.ts.map +1 -0
  151. package/dist/assethandler/pages/OperationsOperationsHubPage.js +291 -0
  152. package/dist/assethandler/pages/OperationsOperationsHubPage.js.map +1 -0
  153. package/dist/assethandler/pages/OperationsWorkOrderDetailPage.d.ts +2 -0
  154. package/dist/assethandler/pages/OperationsWorkOrderDetailPage.d.ts.map +1 -0
  155. package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js +172 -0
  156. package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js.map +1 -0
  157. package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.d.ts +2 -0
  158. package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.d.ts.map +1 -0
  159. package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js +203 -0
  160. package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js.map +1 -0
  161. package/dist/assethandler/pages/ProvenancePage.d.ts +2 -0
  162. package/dist/assethandler/pages/ProvenancePage.d.ts.map +1 -0
  163. package/dist/assethandler/pages/ProvenancePage.js +118 -0
  164. package/dist/assethandler/pages/ProvenancePage.js.map +1 -0
  165. package/dist/assethandler/pages/ReportsReportBuilderPage.d.ts +2 -0
  166. package/dist/assethandler/pages/ReportsReportBuilderPage.d.ts.map +1 -0
  167. package/dist/assethandler/pages/ReportsReportBuilderPage.js +201 -0
  168. package/dist/assethandler/pages/ReportsReportBuilderPage.js.map +1 -0
  169. package/dist/assethandler/pages/ReportsReportsDashboardPage.d.ts +2 -0
  170. package/dist/assethandler/pages/ReportsReportsDashboardPage.d.ts.map +1 -0
  171. package/dist/assethandler/pages/ReportsReportsDashboardPage.js +201 -0
  172. package/dist/assethandler/pages/ReportsReportsDashboardPage.js.map +1 -0
  173. package/dist/assethandler/pages/ReportsReportsListPage.d.ts +2 -0
  174. package/dist/assethandler/pages/ReportsReportsListPage.d.ts.map +1 -0
  175. package/dist/assethandler/pages/ReportsReportsListPage.js +128 -0
  176. package/dist/assethandler/pages/ReportsReportsListPage.js.map +1 -0
  177. package/dist/assethandler/pages/SamLicensesPage.d.ts +2 -0
  178. package/dist/assethandler/pages/SamLicensesPage.d.ts.map +1 -0
  179. package/dist/assethandler/pages/SamLicensesPage.js +79 -0
  180. package/dist/assethandler/pages/SamLicensesPage.js.map +1 -0
  181. package/dist/assethandler/pages/SecurityComplianceDetailPage.d.ts +2 -0
  182. package/dist/assethandler/pages/SecurityComplianceDetailPage.d.ts.map +1 -0
  183. package/dist/assethandler/pages/SecurityComplianceDetailPage.js +109 -0
  184. package/dist/assethandler/pages/SecurityComplianceDetailPage.js.map +1 -0
  185. package/dist/assethandler/pages/SecurityPolicyDetailPage.d.ts +2 -0
  186. package/dist/assethandler/pages/SecurityPolicyDetailPage.d.ts.map +1 -0
  187. package/dist/assethandler/pages/SecurityPolicyDetailPage.js +133 -0
  188. package/dist/assethandler/pages/SecurityPolicyDetailPage.js.map +1 -0
  189. package/dist/assethandler/pages/SecurityScheduleBackupPage.d.ts +2 -0
  190. package/dist/assethandler/pages/SecurityScheduleBackupPage.d.ts.map +1 -0
  191. package/dist/assethandler/pages/SecurityScheduleBackupPage.js +143 -0
  192. package/dist/assethandler/pages/SecurityScheduleBackupPage.js.map +1 -0
  193. package/dist/assethandler/pages/SecuritySecurityEventDetailPage.d.ts +2 -0
  194. package/dist/assethandler/pages/SecuritySecurityEventDetailPage.d.ts.map +1 -0
  195. package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js +135 -0
  196. package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js.map +1 -0
  197. package/dist/assethandler/pages/SecuritySecurityHubPage.d.ts +2 -0
  198. package/dist/assethandler/pages/SecuritySecurityHubPage.d.ts.map +1 -0
  199. package/dist/assethandler/pages/SecuritySecurityHubPage.js +355 -0
  200. package/dist/assethandler/pages/SecuritySecurityHubPage.js.map +1 -0
  201. package/dist/assethandler/pages/TransactionsTransactionDetailPage.d.ts +2 -0
  202. package/dist/assethandler/pages/TransactionsTransactionDetailPage.d.ts.map +1 -0
  203. package/dist/assethandler/pages/TransactionsTransactionDetailPage.js +281 -0
  204. package/dist/assethandler/pages/TransactionsTransactionDetailPage.js.map +1 -0
  205. package/dist/assethandler/pages/TransactionsTransactionListPage.d.ts +2 -0
  206. package/dist/assethandler/pages/TransactionsTransactionListPage.d.ts.map +1 -0
  207. package/dist/assethandler/pages/TransactionsTransactionListPage.js +220 -0
  208. package/dist/assethandler/pages/TransactionsTransactionListPage.js.map +1 -0
  209. package/dist/assethandler/pages/UsersPage.d.ts +2 -0
  210. package/dist/assethandler/pages/UsersPage.d.ts.map +1 -0
  211. package/dist/assethandler/pages/UsersPage.js +183 -0
  212. package/dist/assethandler/pages/UsersPage.js.map +1 -0
  213. package/dist/assethandler/pages/UsersUserCreatePage.d.ts +2 -0
  214. package/dist/assethandler/pages/UsersUserCreatePage.d.ts.map +1 -0
  215. package/dist/assethandler/pages/UsersUserCreatePage.js +213 -0
  216. package/dist/assethandler/pages/UsersUserCreatePage.js.map +1 -0
  217. package/dist/assethandler/pages/UsersUserManagementHubPage.d.ts +2 -0
  218. package/dist/assethandler/pages/UsersUserManagementHubPage.d.ts.map +1 -0
  219. package/dist/assethandler/pages/UsersUserManagementHubPage.js +325 -0
  220. package/dist/assethandler/pages/UsersUserManagementHubPage.js.map +1 -0
  221. package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.d.ts +2 -0
  222. package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.d.ts.map +1 -0
  223. package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.js +246 -0
  224. package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.js.map +1 -0
  225. package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.d.ts +2 -0
  226. package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.d.ts.map +1 -0
  227. package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.js +188 -0
  228. package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.js.map +1 -0
  229. package/dist/assethandler/pages/WorkflowsWorkflowListPage.d.ts +2 -0
  230. package/dist/assethandler/pages/WorkflowsWorkflowListPage.d.ts.map +1 -0
  231. package/dist/assethandler/pages/WorkflowsWorkflowListPage.js +163 -0
  232. package/dist/assethandler/pages/WorkflowsWorkflowListPage.js.map +1 -0
  233. package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.d.ts +2 -0
  234. package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.d.ts.map +1 -0
  235. package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.js +158 -0
  236. package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.js.map +1 -0
  237. package/dist/assethandler/providers/AssetHandlerProvider.d.ts +6 -0
  238. package/dist/assethandler/providers/AssetHandlerProvider.d.ts.map +1 -0
  239. package/dist/assethandler/providers/AssetHandlerProvider.js +214 -0
  240. package/dist/assethandler/providers/AssetHandlerProvider.js.map +1 -0
  241. package/dist/assethandler/store/assethandlerStore.d.ts +635 -0
  242. package/dist/assethandler/store/assethandlerStore.d.ts.map +1 -0
  243. package/dist/assethandler/store/assethandlerStore.js +2337 -0
  244. package/dist/assethandler/store/assethandlerStore.js.map +1 -0
  245. package/dist/assethandler/types/index.d.ts +56 -0
  246. package/dist/assethandler/types/index.d.ts.map +1 -0
  247. package/dist/assethandler/utils/cn.d.ts +4 -0
  248. package/dist/assethandler/utils/cn.d.ts.map +1 -0
  249. package/dist/assethandler/utils/i18n.d.ts +6 -0
  250. package/dist/assethandler/utils/i18n.d.ts.map +1 -0
  251. package/dist/assethandler/utils/i18n.js +9 -0
  252. package/dist/assethandler/utils/i18n.js.map +1 -0
  253. package/dist/assethandler/utils/navigation.d.ts +2 -0
  254. package/dist/assethandler/utils/navigation.d.ts.map +1 -0
  255. package/dist/assethandler/utils/navigation.js +8 -0
  256. package/dist/assethandler/utils/navigation.js.map +1 -0
  257. package/dist/dev/main.d.ts +2 -0
  258. package/dist/dev/main.d.ts.map +1 -0
  259. package/dist/generated/global-operations.d.ts +2 -0
  260. package/dist/generated/global-operations.d.ts.map +1 -0
  261. package/dist/generated/global-types.d.ts +20716 -0
  262. package/dist/generated/global-types.d.ts.map +1 -0
  263. package/dist/generated/wspace-operations.d.ts +210 -0
  264. package/dist/generated/wspace-operations.d.ts.map +1 -0
  265. package/dist/generated/wspace-types.d.ts +53363 -0
  266. package/dist/generated/wspace-types.d.ts.map +1 -0
  267. package/dist/index.d.ts +2 -0
  268. package/dist/index.d.ts.map +1 -0
  269. package/dist/index.js +5 -0
  270. package/package.json +108 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalyticsPage.js","names":[],"sources":["../../../src/assethandler/pages/AnalyticsPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Separator,\n} from '@burdenoff/fe-libs/ui';\nimport {\n BarChart3,\n TrendingUp,\n TrendingDown,\n DollarSign,\n Box,\n PieChart,\n Activity,\n Download,\n ArrowUpRight,\n ArrowDownRight,\n} from 'lucide-react';\nimport { useAssetHandlerStore } from '../store/assethandlerStore';\n\nexport function AnalyticsPage() {\n const { assets, portfolio, transactions, incidents, maintenanceRecords, workflows } =\n useAssetHandlerStore();\n const [timeRange, setTimeRange] = useState<'7d' | '30d' | '90d' | '1y'>('30d');\n\n const totalValue = assets.reduce((sum, a) => sum + a.currentValue, 0);\n const totalOriginal = assets.reduce((sum, a) => sum + a.value, 0);\n const depreciationTotal = totalOriginal - totalValue;\n const depreciationPct =\n totalOriginal > 0 ? ((depreciationTotal / totalOriginal) * 100).toFixed(1) : '0';\n const avgAssetValue = assets.length > 0 ? Math.round(totalValue / assets.length) : 0;\n\n const categoryBreakdown = assets.reduce<Record<string, { count: number; value: number }>>(\n (acc, a) => {\n const cat = a.category.replace('_', ' ');\n if (!acc[cat]) acc[cat] = { count: 0, value: 0 };\n acc[cat].count++;\n acc[cat].value += a.currentValue;\n return acc;\n },\n {}\n );\n\n const statusBreakdown = assets.reduce<Record<string, number>>((acc, a) => {\n acc[a.status] = (acc[a.status] || 0) + 1;\n return acc;\n }, {});\n\n const departmentBreakdown = assets.reduce<Record<string, { count: number; value: number }>>(\n (acc, a) => {\n if (!acc[a.department]) acc[a.department] = { count: 0, value: 0 };\n acc[a.department].count++;\n acc[a.department].value += a.currentValue;\n return acc;\n },\n {}\n );\n\n const resolvedIncidents = incidents.filter(\n (i) => i.status === 'resolved' || i.status === 'closed'\n );\n const slaBreached = incidents.filter((i) => i.slaBreached);\n const completedMaintenance = maintenanceRecords.filter((m) => m.status === 'completed');\n const totalMaintenanceCost = maintenanceRecords.reduce((sum, m) => sum + m.cost, 0);\n\n return (\n <div className=\"space-y-6 p-6\">\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-3xl font-bold\">Analytics & Business Intelligence</h1>\n <p className=\"text-sm text-muted-foreground mt-1\">\n Comprehensive asset management analytics and insights\n </p>\n </div>\n <div className=\"flex gap-2\">\n <select\n value={timeRange}\n onChange={(e) => setTimeRange(e.target.value as typeof timeRange)}\n className=\"rounded-md border border-input bg-background px-3 py-1.5 text-sm\"\n >\n <option value=\"7d\">Last 7 days</option>\n <option value=\"30d\">Last 30 days</option>\n <option value=\"90d\">Last 90 days</option>\n <option value=\"1y\">Last year</option>\n </select>\n <Button variant=\"outline\" size=\"sm\">\n <Download className=\"mr-2 h-4 w-4\" />\n Export\n </Button>\n <Button size=\"sm\">Generate Report</Button>\n </div>\n </div>\n\n <Tabs defaultValue=\"overview\">\n <TabsList>\n <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n <TabsTrigger value=\"financial\">Financial</TabsTrigger>\n <TabsTrigger value=\"operational\">Operational</TabsTrigger>\n <TabsTrigger value=\"insights\">Insights</TabsTrigger>\n </TabsList>\n\n {/* Overview Tab */}\n <TabsContent value=\"overview\" className=\"space-y-6 mt-6\">\n {/* Key Metrics */}\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-4\">\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Total Portfolio Value</CardTitle>\n <DollarSign className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">${portfolio.totalValue.toLocaleString()}</div>\n <p className=\"text-xs text-muted-foreground flex items-center mt-1\">\n <ArrowUpRight className=\"mr-1 h-3 w-3 text-green-600\" />\n <span className=\"text-green-600\">+5.6%</span> from last quarter\n </p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Total Depreciation</CardTitle>\n <TrendingDown className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold text-red-600\">\n -${depreciationTotal.toLocaleString()}\n </div>\n <p className=\"text-xs text-muted-foreground\">\n {depreciationPct}% of original value\n </p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Total Assets</CardTitle>\n <Box className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{portfolio.totalAssets}</div>\n <p className=\"text-xs text-muted-foreground\">\n {assets.filter((a) => a.status === 'active').length} currently active\n </p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Avg. Asset Value</CardTitle>\n <BarChart3 className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">${avgAssetValue.toLocaleString()}</div>\n <p className=\"text-xs text-muted-foreground\">Across all categories</p>\n </CardContent>\n </Card>\n </div>\n\n {/* Category & Status Breakdown */}\n <div className=\"grid gap-6 lg:grid-cols-2\">\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <PieChart className=\"h-4 w-4\" />\n Category Distribution\n </CardTitle>\n <CardDescription>Assets by category with values</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n {Object.entries(categoryBreakdown)\n .sort((a, b) => b[1].value - a[1].value)\n .map(([cat, data]) => {\n const pct = Math.round((data.count / assets.length) * 100);\n return (\n <div key={cat} className=\"space-y-1\">\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"font-medium capitalize\">{cat}</span>\n <span className=\"text-muted-foreground\">\n {data.count} &middot; ${(data.value / 1000).toFixed(1)}K\n </span>\n </div>\n <div className=\"h-2 rounded-full bg-muted overflow-hidden\">\n <div\n className=\"h-full rounded-full bg-primary\"\n style={{ width: `${pct}%` }}\n />\n </div>\n </div>\n );\n })}\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Activity className=\"h-4 w-4\" />\n Status Breakdown\n </CardTitle>\n <CardDescription>Current asset status distribution</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n {Object.entries(statusBreakdown).map(([status, count]) => {\n const pct = Math.round((count / assets.length) * 100);\n return (\n <div key={status} className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <Badge\n variant={\n status === 'active'\n ? 'default'\n : status === 'under_maintenance'\n ? 'secondary'\n : 'outline'\n }\n >\n {status.replace('_', ' ')}\n </Badge>\n </div>\n <div className=\"flex items-center gap-3\">\n <div className=\"h-2 w-24 rounded-full bg-muted overflow-hidden\">\n <div\n className=\"h-full rounded-full bg-primary\"\n style={{ width: `${pct}%` }}\n />\n </div>\n <span className=\"text-sm font-medium w-8 text-right\">{count}</span>\n </div>\n </div>\n );\n })}\n </div>\n\n <Separator className=\"my-4\" />\n\n <div>\n <h4 className=\"text-sm font-medium mb-3\">By Department</h4>\n <div className=\"space-y-2\">\n {Object.entries(departmentBreakdown)\n .sort((a, b) => b[1].count - a[1].count)\n .slice(0, 5)\n .map(([dept, data]) => (\n <div key={dept} className=\"flex items-center justify-between text-sm\">\n <span>{dept}</span>\n <span className=\"text-muted-foreground\">{data.count} assets</span>\n </div>\n ))}\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n\n {/* Depreciation Trend */}\n <Card>\n <CardHeader>\n <CardTitle>Depreciation Trend</CardTitle>\n <CardDescription>Portfolio depreciation over the last 6 months</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"flex items-end gap-2 h-40\">\n {portfolio.depreciationTrend.map((point) => {\n const maxVal = Math.max(...portfolio.depreciationTrend.map((p) => p.value));\n const height = maxVal > 0 ? (point.value / maxVal) * 100 : 0;\n return (\n <div key={point.month} className=\"flex-1 flex flex-col items-center gap-1\">\n <span className=\"text-[10px] text-muted-foreground\">\n ${(point.value / 1000000).toFixed(2)}M\n </span>\n <div\n className=\"w-full bg-primary/80 rounded-t\"\n style={{ height: `${height}%` }}\n />\n <span className=\"text-[10px] text-muted-foreground\">\n {point.month.replace(' 20', \"'\")}\n </span>\n </div>\n );\n })}\n </div>\n </CardContent>\n </Card>\n </TabsContent>\n\n {/* Financial Tab */}\n <TabsContent value=\"financial\" className=\"space-y-6 mt-6\">\n <div className=\"grid gap-4 md:grid-cols-3\">\n <Card>\n <CardHeader className=\"pb-2\">\n <CardTitle className=\"text-sm font-medium\">Total Transactions</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{transactions.length}</div>\n <p className=\"text-xs text-muted-foreground\">\n ${transactions.reduce((s, t) => s + Math.abs(t.amount), 0).toLocaleString()} total\n value\n </p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"pb-2\">\n <CardTitle className=\"text-sm font-medium\">Maintenance Cost</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">${totalMaintenanceCost.toLocaleString()}</div>\n <p className=\"text-xs text-muted-foreground\">\n {maintenanceRecords.length} maintenance records\n </p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"pb-2\">\n <CardTitle className=\"text-sm font-medium\">Acquisitions (6mo)</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">\n {portfolio.acquisitionTrend.reduce((s, a) => s + a.count, 0)}\n </div>\n <p className=\"text-xs text-muted-foreground\">\n ${(portfolio.acquisitionTrend.reduce((s, a) => s + a.value, 0) / 1000).toFixed(0)}\n K total spend\n </p>\n </CardContent>\n </Card>\n </div>\n\n {/* Acquisition Trend */}\n <Card>\n <CardHeader>\n <CardTitle>Acquisition Trend</CardTitle>\n <CardDescription>New assets acquired over the last 6 months</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"flex items-end gap-2 h-40\">\n {portfolio.acquisitionTrend.map((point) => {\n const maxVal = Math.max(...portfolio.acquisitionTrend.map((p) => p.count));\n const height = maxVal > 0 ? (point.count / maxVal) * 100 : 0;\n return (\n <div key={point.month} className=\"flex-1 flex flex-col items-center gap-1\">\n <span className=\"text-[10px] text-muted-foreground\">{point.count} units</span>\n <div\n className=\"w-full bg-green-500/80 rounded-t\"\n style={{ height: `${height}%` }}\n />\n <span className=\"text-[10px] text-muted-foreground\">\n {point.month.replace(' 20', \"'\")}\n </span>\n </div>\n );\n })}\n </div>\n </CardContent>\n </Card>\n\n {/* Recent Transactions */}\n <Card>\n <CardHeader>\n <CardTitle>Recent Transactions</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b\">\n <th className=\"text-left py-2 font-medium\">ID</th>\n <th className=\"text-left py-2 font-medium\">Type</th>\n <th className=\"text-left py-2 font-medium\">Description</th>\n <th className=\"text-right py-2 font-medium\">Amount</th>\n <th className=\"text-left py-2 font-medium\">Status</th>\n </tr>\n </thead>\n <tbody>\n {transactions.slice(0, 5).map((txn) => (\n <tr key={txn.id} className=\"border-b hover:bg-muted/50\">\n <td className=\"py-2 font-mono text-xs\">{txn.id}</td>\n <td className=\"py-2 capitalize\">{txn.type}</td>\n <td className=\"py-2 truncate max-w-xs\">{txn.description}</td>\n <td\n className={`py-2 text-right font-medium ${txn.amount < 0 ? 'text-red-600' : ''}`}\n >\n ${Math.abs(txn.amount).toLocaleString()}\n </td>\n <td className=\"py-2\">\n <Badge variant=\"outline\">{txn.status}</Badge>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </CardContent>\n </Card>\n </TabsContent>\n\n {/* Operational Tab */}\n <TabsContent value=\"operational\" className=\"space-y-6 mt-6\">\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardHeader className=\"pb-2\">\n <CardTitle className=\"text-sm font-medium\">Incidents</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{incidents.length}</div>\n <p className=\"text-xs text-muted-foreground\">{resolvedIncidents.length} resolved</p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"pb-2\">\n <CardTitle className=\"text-sm font-medium\">SLA Breaches</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold text-red-600\">{slaBreached.length}</div>\n <p className=\"text-xs text-muted-foreground\">\n {((1 - slaBreached.length / Math.max(incidents.length, 1)) * 100).toFixed(1)}%\n compliance\n </p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"pb-2\">\n <CardTitle className=\"text-sm font-medium\">Maintenance Done</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{completedMaintenance.length}</div>\n <p className=\"text-xs text-muted-foreground\">\n of {maintenanceRecords.length} total\n </p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"pb-2\">\n <CardTitle className=\"text-sm font-medium\">Workflow Success</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">\n {(\n workflows.reduce((s, w) => s + w.successRate, 0) / Math.max(workflows.length, 1)\n ).toFixed(1)}\n %\n </div>\n <p className=\"text-xs text-muted-foreground\">{workflows.length} active workflows</p>\n </CardContent>\n </Card>\n </div>\n </TabsContent>\n\n {/* Insights Tab */}\n <TabsContent value=\"insights\" className=\"space-y-6 mt-6\">\n <div className=\"grid gap-4 md:grid-cols-3\">\n <Card className=\"border-blue-200 bg-blue-50/50\">\n <CardHeader>\n <CardTitle className=\"text-blue-900 text-base\">Diversification</CardTitle>\n </CardHeader>\n <CardContent>\n <p className=\"text-sm text-blue-800\">\n Your portfolio spans {Object.keys(categoryBreakdown).length} categories across{' '}\n {Object.keys(departmentBreakdown).length} departments. IT Hardware represents the\n largest segment at {portfolio.byCategory[0]?.count || 0} assets.\n </p>\n </CardContent>\n </Card>\n <Card className=\"border-green-200 bg-green-50/50\">\n <CardHeader>\n <CardTitle className=\"text-green-900 text-base\">Performance</CardTitle>\n </CardHeader>\n <CardContent>\n <p className=\"text-sm text-green-800\">\n Portfolio depreciated value stands at $\n {(portfolio.depreciatedValue / 1000000).toFixed(2)}M. Depreciation rate is within\n expected range at {depreciationPct}% of original cost.\n </p>\n </CardContent>\n </Card>\n <Card className=\"border-amber-200 bg-amber-50/50\">\n <CardHeader>\n <CardTitle className=\"text-amber-900 text-base\">Maintenance</CardTitle>\n </CardHeader>\n <CardContent>\n <p className=\"text-sm text-amber-800\">\n {maintenanceRecords.filter((m) => m.status === 'scheduled').length} maintenance\n tasks are scheduled. Total maintenance spend is $\n {totalMaintenanceCost.toLocaleString()}. Stay on top of preventive maintenance.\n </p>\n </CardContent>\n </Card>\n </div>\n\n {/* Top Assets by Value */}\n <Card>\n <CardHeader>\n <CardTitle>Top Assets by Value</CardTitle>\n <CardDescription>Highest value assets in your portfolio</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n {[...assets]\n .sort((a, b) => b.currentValue - a.currentValue)\n .slice(0, 5)\n .map((asset, i) => (\n <div\n key={asset.id}\n className=\"flex items-center justify-between p-3 rounded-lg border\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"w-8 h-8 rounded-full bg-primary/10 flex items-center justify-center text-xs font-medium text-primary\">\n {i + 1}\n </div>\n <div>\n <p className=\"text-sm font-medium\">{asset.name}</p>\n <p className=\"text-xs text-muted-foreground\">\n {asset.department} &middot; {asset.category.replace('_', ' ')}\n </p>\n </div>\n </div>\n <div className=\"text-right\">\n <p className=\"text-sm font-medium\">\n ${asset.currentValue.toLocaleString()}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {asset.currentValue < asset.value ? (\n <span className=\"text-red-600\">\n -{((1 - asset.currentValue / asset.value) * 100).toFixed(1)}%\n </span>\n ) : (\n <span className=\"text-green-600\">No depreciation</span>\n )}\n </p>\n </div>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n </TabsContent>\n </Tabs>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function AssetsAssetCategoriesPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=AssetsAssetCategoriesPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssetsAssetCategoriesPage.d.ts","sourceRoot":"","sources":["../../../src/assethandler/pages/AssetsAssetCategoriesPage.tsx"],"names":[],"mappings":"AAoCA,wBAAgB,yBAAyB,4CAwHxC"}
@@ -0,0 +1,162 @@
1
+ import { useAssetHandlerStore as e } from "../store/assethandlerStore.js";
2
+ import { useMemo as t } from "react";
3
+ import { Box as n, Code as r, Monitor as i, Plus as a, Server as o, Truck as s, Wifi as c, Wrench as l } from "lucide-react";
4
+ import { Badge as u, Button as d, Card as f, CardContent as p, CardDescription as m, CardHeader as h, CardTitle as g, Separator as _ } from "@burdenoff/fe-libs/ui";
5
+ import { jsx as v, jsxs as y } from "react/jsx-runtime";
6
+ //#region src/assethandler/pages/AssetsAssetCategoriesPage.tsx
7
+ var b = {
8
+ electronics: /* @__PURE__ */ v(i, { className: "h-5 w-5" }),
9
+ it_hardware: /* @__PURE__ */ v(i, { className: "h-5 w-5" }),
10
+ furniture: /* @__PURE__ */ v(n, { className: "h-5 w-5" }),
11
+ vehicles: /* @__PURE__ */ v(s, { className: "h-5 w-5" }),
12
+ equipment: /* @__PURE__ */ v(l, { className: "h-5 w-5" }),
13
+ software: /* @__PURE__ */ v(r, { className: "h-5 w-5" }),
14
+ networking: /* @__PURE__ */ v(c, { className: "h-5 w-5" }),
15
+ servers: /* @__PURE__ */ v(o, { className: "h-5 w-5" })
16
+ }, x = {
17
+ electronics: "bg-blue-100 text-blue-700",
18
+ it_hardware: "bg-indigo-100 text-indigo-700",
19
+ furniture: "bg-amber-100 text-amber-700",
20
+ vehicles: "bg-green-100 text-green-700",
21
+ equipment: "bg-orange-100 text-orange-700",
22
+ software: "bg-purple-100 text-purple-700",
23
+ networking: "bg-cyan-100 text-cyan-700",
24
+ servers: "bg-red-100 text-red-700"
25
+ };
26
+ function S() {
27
+ let { assets: r } = e(), i = t(() => {
28
+ let e = {};
29
+ for (let t of r) {
30
+ e[t.category] || (e[t.category] = {
31
+ count: 0,
32
+ totalValue: 0,
33
+ currentValue: 0,
34
+ statuses: {},
35
+ topAssets: []
36
+ });
37
+ let n = e[t.category];
38
+ n.count++, n.totalValue += t.value, n.currentValue += t.currentValue, n.statuses[t.status] = (n.statuses[t.status] || 0) + 1, n.topAssets.push(t);
39
+ }
40
+ for (let t of Object.values(e)) t.topAssets.sort((e, t) => t.currentValue - e.currentValue), t.topAssets = t.topAssets.slice(0, 3);
41
+ return e;
42
+ }, [r]), o = r.length, s = r.reduce((e, t) => e + t.currentValue, 0);
43
+ return /* @__PURE__ */ y("div", {
44
+ className: "space-y-6 p-6",
45
+ children: [/* @__PURE__ */ y("div", {
46
+ className: "flex items-center justify-between",
47
+ children: [/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("h1", {
48
+ className: "text-2xl font-bold",
49
+ children: "Asset Categories"
50
+ }), /* @__PURE__ */ y("p", {
51
+ className: "text-sm text-muted-foreground",
52
+ children: [
53
+ Object.keys(i).length,
54
+ " categories · ",
55
+ o,
56
+ " total assets · $",
57
+ s.toLocaleString(),
58
+ " total value"
59
+ ]
60
+ })] }), /* @__PURE__ */ y(d, {
61
+ size: "sm",
62
+ children: [/* @__PURE__ */ v(a, { className: "mr-2 h-4 w-4" }), "Add Category"]
63
+ })]
64
+ }), /* @__PURE__ */ v("div", {
65
+ className: "grid gap-4 md:grid-cols-2 lg:grid-cols-3",
66
+ children: Object.entries(i).map(([e, t]) => {
67
+ let r = o > 0 ? Math.round(t.count / o * 100) : 0, i = t.totalValue - t.currentValue;
68
+ return /* @__PURE__ */ y(f, {
69
+ className: "hover:shadow-md transition-shadow cursor-pointer",
70
+ children: [/* @__PURE__ */ y(h, {
71
+ className: "pb-3",
72
+ children: [
73
+ /* @__PURE__ */ y("div", {
74
+ className: "flex items-center justify-between",
75
+ children: [/* @__PURE__ */ v("div", {
76
+ className: `p-2 rounded-lg ${x[e] || "bg-muted"}`,
77
+ children: b[e] || /* @__PURE__ */ v(n, { className: "h-5 w-5" })
78
+ }), /* @__PURE__ */ y(u, {
79
+ variant: "outline",
80
+ children: [r, "%"]
81
+ })]
82
+ }),
83
+ /* @__PURE__ */ v(g, {
84
+ className: "capitalize mt-3",
85
+ children: e.replace("_", " ")
86
+ }),
87
+ /* @__PURE__ */ y(m, { children: [t.count, " assets"] })
88
+ ]
89
+ }), /* @__PURE__ */ v(p, { children: /* @__PURE__ */ y("div", {
90
+ className: "space-y-3",
91
+ children: [
92
+ /* @__PURE__ */ y("div", {
93
+ className: "flex justify-between text-sm",
94
+ children: [/* @__PURE__ */ v("span", {
95
+ className: "text-muted-foreground",
96
+ children: "Current Value"
97
+ }), /* @__PURE__ */ y("span", {
98
+ className: "font-medium",
99
+ children: ["$", t.currentValue.toLocaleString()]
100
+ })]
101
+ }),
102
+ /* @__PURE__ */ y("div", {
103
+ className: "flex justify-between text-sm",
104
+ children: [/* @__PURE__ */ v("span", {
105
+ className: "text-muted-foreground",
106
+ children: "Depreciation"
107
+ }), /* @__PURE__ */ y("span", {
108
+ className: "text-red-600",
109
+ children: ["-$", i.toLocaleString()]
110
+ })]
111
+ }),
112
+ /* @__PURE__ */ v("div", {
113
+ className: "h-2 rounded-full bg-muted overflow-hidden",
114
+ children: /* @__PURE__ */ v("div", {
115
+ className: "h-full rounded-full bg-primary",
116
+ style: { width: `${r}%` }
117
+ })
118
+ }),
119
+ /* @__PURE__ */ v(_, {}),
120
+ /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
121
+ className: "text-xs font-medium text-muted-foreground mb-2",
122
+ children: "Status breakdown"
123
+ }), /* @__PURE__ */ v("div", {
124
+ className: "flex flex-wrap gap-1",
125
+ children: Object.entries(t.statuses).map(([e, t]) => /* @__PURE__ */ y(u, {
126
+ variant: "secondary",
127
+ className: "text-[10px]",
128
+ children: [
129
+ e.replace("_", " "),
130
+ ": ",
131
+ t
132
+ ]
133
+ }, e))
134
+ })] }),
135
+ /* @__PURE__ */ v(_, {}),
136
+ /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
137
+ className: "text-xs font-medium text-muted-foreground mb-2",
138
+ children: "Top Assets"
139
+ }), /* @__PURE__ */ v("div", {
140
+ className: "space-y-1.5",
141
+ children: t.topAssets.map((e) => /* @__PURE__ */ y("div", {
142
+ className: "flex items-center justify-between text-xs",
143
+ children: [/* @__PURE__ */ v("span", {
144
+ className: "truncate flex-1",
145
+ children: e.name
146
+ }), /* @__PURE__ */ y("span", {
147
+ className: "font-medium ml-2",
148
+ children: ["$", e.currentValue.toLocaleString()]
149
+ })]
150
+ }, e.id))
151
+ })] })
152
+ ]
153
+ }) })]
154
+ }, e);
155
+ })
156
+ })]
157
+ });
158
+ }
159
+ //#endregion
160
+ export { S as AssetsAssetCategoriesPage };
161
+
162
+ //# sourceMappingURL=AssetsAssetCategoriesPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssetsAssetCategoriesPage.js","names":[],"sources":["../../../src/assethandler/pages/AssetsAssetCategoriesPage.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Separator,\n} from '@burdenoff/fe-libs/ui';\nimport { Box, Monitor, Server, Wifi, Truck, Wrench, Code, Plus } from 'lucide-react';\nimport { useAssetHandlerStore, type Asset } from '../store/assethandlerStore';\n\nconst categoryIcons: Record<string, React.ReactNode> = {\n electronics: <Monitor className=\"h-5 w-5\" />,\n it_hardware: <Monitor className=\"h-5 w-5\" />,\n furniture: <Box className=\"h-5 w-5\" />,\n vehicles: <Truck className=\"h-5 w-5\" />,\n equipment: <Wrench className=\"h-5 w-5\" />,\n software: <Code className=\"h-5 w-5\" />,\n networking: <Wifi className=\"h-5 w-5\" />,\n servers: <Server className=\"h-5 w-5\" />,\n};\n\nconst categoryColors: Record<string, string> = {\n electronics: 'bg-blue-100 text-blue-700',\n it_hardware: 'bg-indigo-100 text-indigo-700',\n furniture: 'bg-amber-100 text-amber-700',\n vehicles: 'bg-green-100 text-green-700',\n equipment: 'bg-orange-100 text-orange-700',\n software: 'bg-purple-100 text-purple-700',\n networking: 'bg-cyan-100 text-cyan-700',\n servers: 'bg-red-100 text-red-700',\n};\n\nexport function AssetsAssetCategoriesPage() {\n const { assets } = useAssetHandlerStore();\n\n const categories = useMemo(() => {\n const catMap: Record<\n string,\n {\n count: number;\n totalValue: number;\n currentValue: number;\n statuses: Record<string, number>;\n topAssets: Asset[];\n }\n > = {};\n for (const asset of assets) {\n if (!catMap[asset.category])\n catMap[asset.category] = {\n count: 0,\n totalValue: 0,\n currentValue: 0,\n statuses: {},\n topAssets: [],\n };\n const cat = catMap[asset.category];\n cat.count++;\n cat.totalValue += asset.value;\n cat.currentValue += asset.currentValue;\n cat.statuses[asset.status] = (cat.statuses[asset.status] || 0) + 1;\n cat.topAssets.push(asset);\n }\n for (const cat of Object.values(catMap)) {\n cat.topAssets.sort((a, b) => b.currentValue - a.currentValue);\n cat.topAssets = cat.topAssets.slice(0, 3);\n }\n return catMap;\n }, [assets]);\n\n const totalAssets = assets.length;\n const totalValue = assets.reduce((s, a) => s + a.currentValue, 0);\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\">Asset Categories</h1>\n <p className=\"text-sm text-muted-foreground\">\n {Object.keys(categories).length} categories &middot; {totalAssets} total assets &middot;\n ${totalValue.toLocaleString()} total value\n </p>\n </div>\n <Button size=\"sm\">\n <Plus className=\"mr-2 h-4 w-4\" />\n Add Category\n </Button>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {Object.entries(categories).map(([key, data]) => {\n const pct = totalAssets > 0 ? Math.round((data.count / totalAssets) * 100) : 0;\n const depreciation = data.totalValue - data.currentValue;\n return (\n <Card key={key} className=\"hover:shadow-md transition-shadow cursor-pointer\">\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-center justify-between\">\n <div className={`p-2 rounded-lg ${categoryColors[key] || 'bg-muted'}`}>\n {categoryIcons[key] || <Box className=\"h-5 w-5\" />}\n </div>\n <Badge variant=\"outline\">{pct}%</Badge>\n </div>\n <CardTitle className=\"capitalize mt-3\">{key.replace('_', ' ')}</CardTitle>\n <CardDescription>{data.count} assets</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Current Value</span>\n <span className=\"font-medium\">${data.currentValue.toLocaleString()}</span>\n </div>\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Depreciation</span>\n <span className=\"text-red-600\">-${depreciation.toLocaleString()}</span>\n </div>\n <div className=\"h-2 rounded-full bg-muted overflow-hidden\">\n <div className=\"h-full rounded-full bg-primary\" style={{ width: `${pct}%` }} />\n </div>\n <Separator />\n <div>\n <p className=\"text-xs font-medium text-muted-foreground mb-2\">\n Status breakdown\n </p>\n <div className=\"flex flex-wrap gap-1\">\n {Object.entries(data.statuses).map(([status, count]) => (\n <Badge key={status} variant=\"secondary\" className=\"text-[10px]\">\n {status.replace('_', ' ')}: {count}\n </Badge>\n ))}\n </div>\n </div>\n <Separator />\n <div>\n <p className=\"text-xs font-medium text-muted-foreground mb-2\">Top Assets</p>\n <div className=\"space-y-1.5\">\n {data.topAssets.map((a) => (\n <div key={a.id} className=\"flex items-center justify-between text-xs\">\n <span className=\"truncate flex-1\">{a.name}</span>\n <span className=\"font-medium ml-2\">\n ${a.currentValue.toLocaleString()}\n </span>\n </div>\n ))}\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n );\n })}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function AssetsAssetCheckInOutPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=AssetsAssetCheckInOutPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssetsAssetCheckInOutPage.d.ts","sourceRoot":"","sources":["../../../src/assethandler/pages/AssetsAssetCheckInOutPage.tsx"],"names":[],"mappings":"AAuBA,wBAAgB,yBAAyB,4CAwKxC"}
@@ -0,0 +1,249 @@
1
+ import { useAssetHandlerStore as e } from "../store/assethandlerStore.js";
2
+ import { useState as t } from "react";
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, Input as d, Tabs as f, TabsContent as p, TabsList as m, TabsTrigger as h } from "@burdenoff/fe-libs/ui";
5
+ import { jsx as g, jsxs as _ } from "react/jsx-runtime";
6
+ //#region src/assethandler/pages/AssetsAssetCheckInOutPage.tsx
7
+ var v = {
8
+ active: "default",
9
+ returned: "secondary",
10
+ overdue: "destructive"
11
+ };
12
+ function y() {
13
+ let { checkInOutRecords: y } = e(), [b, x] = t(""), S = y.filter((e) => e.status === "active"), C = y.filter((e) => e.status === "overdue"), w = y.filter((e) => e.status === "returned"), T = y.filter((e) => b === "" || e.assetName.toLowerCase().includes(b.toLowerCase()) || e.userName.toLowerCase().includes(b.toLowerCase()));
14
+ return /* @__PURE__ */ _("div", {
15
+ className: "space-y-6 p-6",
16
+ children: [
17
+ /* @__PURE__ */ _("div", {
18
+ className: "flex items-center justify-between",
19
+ children: [/* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("h1", {
20
+ className: "text-2xl font-bold",
21
+ children: "Asset Check-In / Check-Out"
22
+ }), /* @__PURE__ */ g("p", {
23
+ className: "text-sm text-muted-foreground",
24
+ children: "Manage asset assignments and returns"
25
+ })] }), /* @__PURE__ */ _("div", {
26
+ className: "flex gap-2",
27
+ children: [/* @__PURE__ */ _(c, {
28
+ variant: "outline",
29
+ size: "sm",
30
+ children: [/* @__PURE__ */ g(r, { className: "mr-2 h-4 w-4" }), "Check In"]
31
+ }), /* @__PURE__ */ _(c, {
32
+ size: "sm",
33
+ children: [/* @__PURE__ */ g(i, { className: "mr-2 h-4 w-4" }), "Check Out"]
34
+ })]
35
+ })]
36
+ }),
37
+ /* @__PURE__ */ _("div", {
38
+ className: "grid gap-4 md:grid-cols-4",
39
+ children: [
40
+ /* @__PURE__ */ g(l, { children: /* @__PURE__ */ _(u, {
41
+ className: "pt-4",
42
+ children: [/* @__PURE__ */ _("div", {
43
+ className: "flex items-center gap-2 text-sm text-muted-foreground",
44
+ children: [/* @__PURE__ */ g(i, { className: "h-4 w-4" }), "Active Checkouts"]
45
+ }), /* @__PURE__ */ g("p", {
46
+ className: "text-2xl font-bold mt-1",
47
+ children: S.length
48
+ })]
49
+ }) }),
50
+ /* @__PURE__ */ g(l, { children: /* @__PURE__ */ _(u, {
51
+ className: "pt-4",
52
+ children: [/* @__PURE__ */ _("div", {
53
+ className: "flex items-center gap-2 text-sm text-muted-foreground",
54
+ children: [/* @__PURE__ */ g(n, { className: "h-4 w-4 text-destructive" }), "Overdue"]
55
+ }), /* @__PURE__ */ g("p", {
56
+ className: "text-2xl font-bold mt-1 text-destructive",
57
+ children: C.length
58
+ })]
59
+ }) }),
60
+ /* @__PURE__ */ g(l, { children: /* @__PURE__ */ _(u, {
61
+ className: "pt-4",
62
+ children: [/* @__PURE__ */ _("div", {
63
+ className: "flex items-center gap-2 text-sm text-muted-foreground",
64
+ children: [/* @__PURE__ */ g(r, { className: "h-4 w-4" }), "Returned"]
65
+ }), /* @__PURE__ */ g("p", {
66
+ className: "text-2xl font-bold mt-1",
67
+ children: w.length
68
+ })]
69
+ }) }),
70
+ /* @__PURE__ */ g(l, { children: /* @__PURE__ */ _(u, {
71
+ className: "pt-4",
72
+ children: [/* @__PURE__ */ _("div", {
73
+ className: "flex items-center gap-2 text-sm text-muted-foreground",
74
+ children: [/* @__PURE__ */ g(a, { className: "h-4 w-4" }), "Total Records"]
75
+ }), /* @__PURE__ */ g("p", {
76
+ className: "text-2xl font-bold mt-1",
77
+ children: y.length
78
+ })]
79
+ }) })
80
+ ]
81
+ }),
82
+ /* @__PURE__ */ _("div", {
83
+ className: "relative max-w-md",
84
+ children: [/* @__PURE__ */ g(o, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), /* @__PURE__ */ g(d, {
85
+ placeholder: "Search by asset or user name...",
86
+ value: b,
87
+ onChange: (e) => x(e.target.value),
88
+ className: "pl-9"
89
+ })]
90
+ }),
91
+ /* @__PURE__ */ _(f, {
92
+ defaultValue: "all",
93
+ children: [/* @__PURE__ */ _(m, { children: [
94
+ /* @__PURE__ */ _(h, {
95
+ value: "all",
96
+ children: [
97
+ "All (",
98
+ T.length,
99
+ ")"
100
+ ]
101
+ }),
102
+ /* @__PURE__ */ _(h, {
103
+ value: "active",
104
+ children: [
105
+ "Active (",
106
+ S.length,
107
+ ")"
108
+ ]
109
+ }),
110
+ /* @__PURE__ */ _(h, {
111
+ value: "overdue",
112
+ children: [
113
+ "Overdue (",
114
+ C.length,
115
+ ")"
116
+ ]
117
+ }),
118
+ /* @__PURE__ */ _(h, {
119
+ value: "returned",
120
+ children: [
121
+ "Returned (",
122
+ w.length,
123
+ ")"
124
+ ]
125
+ })
126
+ ] }), [
127
+ "all",
128
+ "active",
129
+ "overdue",
130
+ "returned"
131
+ ].map((e) => {
132
+ let t = e === "all" ? T : T.filter((t) => t.status === e);
133
+ return /* @__PURE__ */ g(p, {
134
+ value: e,
135
+ className: "mt-4",
136
+ children: /* @__PURE__ */ g(l, { children: /* @__PURE__ */ g(u, {
137
+ className: "p-0",
138
+ children: /* @__PURE__ */ g("div", {
139
+ className: "overflow-x-auto",
140
+ children: /* @__PURE__ */ _("table", {
141
+ className: "w-full text-sm",
142
+ children: [/* @__PURE__ */ g("thead", { children: /* @__PURE__ */ _("tr", {
143
+ className: "border-b bg-muted/50",
144
+ children: [
145
+ /* @__PURE__ */ g("th", {
146
+ className: "text-left p-3 font-medium",
147
+ children: "ID"
148
+ }),
149
+ /* @__PURE__ */ g("th", {
150
+ className: "text-left p-3 font-medium",
151
+ children: "Type"
152
+ }),
153
+ /* @__PURE__ */ g("th", {
154
+ className: "text-left p-3 font-medium",
155
+ children: "Asset"
156
+ }),
157
+ /* @__PURE__ */ g("th", {
158
+ className: "text-left p-3 font-medium",
159
+ children: "User"
160
+ }),
161
+ /* @__PURE__ */ g("th", {
162
+ className: "text-left p-3 font-medium",
163
+ children: "Date"
164
+ }),
165
+ /* @__PURE__ */ g("th", {
166
+ className: "text-left p-3 font-medium",
167
+ children: "Expected Return"
168
+ }),
169
+ /* @__PURE__ */ g("th", {
170
+ className: "text-left p-3 font-medium",
171
+ children: "Condition"
172
+ }),
173
+ /* @__PURE__ */ g("th", {
174
+ className: "text-left p-3 font-medium",
175
+ children: "Status"
176
+ })
177
+ ]
178
+ }) }), /* @__PURE__ */ _("tbody", { children: [t.map((e) => /* @__PURE__ */ _("tr", {
179
+ className: "border-b hover:bg-muted/50",
180
+ children: [
181
+ /* @__PURE__ */ g("td", {
182
+ className: "p-3 font-mono text-xs",
183
+ children: e.id
184
+ }),
185
+ /* @__PURE__ */ g("td", {
186
+ className: "p-3",
187
+ children: /* @__PURE__ */ _("div", {
188
+ className: "flex items-center gap-1.5",
189
+ children: [e.type === "check_out" ? /* @__PURE__ */ g(i, { className: "h-3.5 w-3.5 text-blue-600" }) : /* @__PURE__ */ g(r, { className: "h-3.5 w-3.5 text-green-600" }), /* @__PURE__ */ g("span", {
190
+ className: "capitalize text-xs",
191
+ children: e.type.replace("_", " ")
192
+ })]
193
+ })
194
+ }),
195
+ /* @__PURE__ */ _("td", {
196
+ className: "p-3",
197
+ children: [/* @__PURE__ */ g("p", {
198
+ className: "font-medium",
199
+ children: e.assetName
200
+ }), /* @__PURE__ */ g("p", {
201
+ className: "text-xs text-muted-foreground",
202
+ children: e.assetId
203
+ })]
204
+ }),
205
+ /* @__PURE__ */ g("td", {
206
+ className: "p-3",
207
+ children: /* @__PURE__ */ g("p", {
208
+ className: "text-sm",
209
+ children: e.userName
210
+ })
211
+ }),
212
+ /* @__PURE__ */ g("td", {
213
+ className: "p-3 text-xs",
214
+ children: new Date(e.date).toLocaleDateString()
215
+ }),
216
+ /* @__PURE__ */ g("td", {
217
+ className: "p-3 text-xs",
218
+ children: e.expectedReturn ? new Date(e.expectedReturn).toLocaleDateString() : "-"
219
+ }),
220
+ /* @__PURE__ */ g("td", {
221
+ className: "p-3 capitalize text-xs",
222
+ children: e.condition
223
+ }),
224
+ /* @__PURE__ */ g("td", {
225
+ className: "p-3",
226
+ children: /* @__PURE__ */ g(s, {
227
+ variant: v[e.status] || "outline",
228
+ children: e.status
229
+ })
230
+ })
231
+ ]
232
+ }, e.id)), t.length === 0 && /* @__PURE__ */ g("tr", { children: /* @__PURE__ */ g("td", {
233
+ colSpan: 8,
234
+ className: "text-center py-8 text-muted-foreground",
235
+ children: "No records found."
236
+ }) })] })]
237
+ })
238
+ })
239
+ }) })
240
+ }, e);
241
+ })]
242
+ })
243
+ ]
244
+ });
245
+ }
246
+ //#endregion
247
+ export { y as AssetsAssetCheckInOutPage };
248
+
249
+ //# sourceMappingURL=AssetsAssetCheckInOutPage.js.map
@@ -0,0 +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} 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\">Asset Check-In / Check-Out</h1>\n <p className=\"text-sm text-muted-foreground\">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-muted-foreground\">\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-muted-foreground\">\n <AlertTriangle className=\"h-4 w-4 text-destructive\" />\n Overdue\n </div>\n <p className=\"text-2xl font-bold mt-1 text-destructive\">{overdueCheckouts.length}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-muted-foreground\">\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-muted-foreground\">\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-muted-foreground\" />\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-muted/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-muted/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-blue-600\" />\n ) : (\n <ArrowDownToLine className=\"h-3.5 w-3.5 text-green-600\" />\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-muted-foreground\">{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-muted-foreground\">\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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"}
@@ -0,0 +1,2 @@
1
+ export declare function AssetsAssetCreatePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=AssetsAssetCreatePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssetsAssetCreatePage.d.ts","sourceRoot":"","sources":["../../../src/assethandler/pages/AssetsAssetCreatePage.tsx"],"names":[],"mappings":"AAmBA,wBAAgB,qBAAqB,4CAkRpC"}