@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,336 @@
1
+ import { useAssetHandlerStore as e } from "../store/assethandlerStore.js";
2
+ import { tWithFallback as t } from "../utils/i18n.js";
3
+ import { useState as n } from "react";
4
+ import { Activity as r, AlertTriangle as i, ArrowDownRight as a, ArrowUpRight as o, Box as s, CheckCircle as c, Clock as l, DollarSign as u, Shield as d, Wrench as f } from "lucide-react";
5
+ import { Badge as p, Button as m, Card as h, CardContent as g, CardDescription as _, CardHeader as v, CardTitle as y, Separator as b } from "@burdenoff/fe-libs/ui";
6
+ import { useI18n as x } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
7
+ import { jsx as S, jsxs as C } from "react/jsx-runtime";
8
+ //#region src/assethandler/pages/DashboardPage.tsx
9
+ function w() {
10
+ let { t: w } = x(), { metrics: T, workItems: E, assets: D, incidents: O, maintenanceRecords: k, notifications: A, portfolio: j, changeRequests: M, workflows: N } = e(), [P] = n("This Month"), F = O.filter((e) => e.status !== "resolved" && e.status !== "closed"), I = O.filter((e) => e.priority === "critical" && e.status !== "resolved"), L = k.filter((e) => e.status === "scheduled" || e.status === "in_progress"), R = A.filter((e) => !e.isRead), z = N.filter((e) => e.status === "active");
11
+ return /* @__PURE__ */ C("div", {
12
+ className: "space-y-6 p-6",
13
+ children: [
14
+ /* @__PURE__ */ C("div", {
15
+ className: "flex items-center justify-between",
16
+ children: [/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("h1", {
17
+ className: "text-3xl font-bold",
18
+ children: t(w, "assethandler.dashboard.title", "Dashboard")
19
+ }), /* @__PURE__ */ S("p", {
20
+ className: "text-sm text-muted-foreground mt-1",
21
+ children: t(w, "assethandler.dashboard.description", "Overview of your IT asset portfolio and operations")
22
+ })] }), /* @__PURE__ */ C("div", {
23
+ className: "flex gap-2",
24
+ children: [/* @__PURE__ */ S(m, {
25
+ variant: "outline",
26
+ size: "sm",
27
+ children: t(w, "assethandler.dashboard.actions.exportReport", "Export Report")
28
+ }), /* @__PURE__ */ S(m, {
29
+ size: "sm",
30
+ children: t(w, "assethandler.dashboard.actions.addAsset", "Add Asset")
31
+ })]
32
+ })]
33
+ }),
34
+ /* @__PURE__ */ S("div", {
35
+ className: "grid gap-4 md:grid-cols-2 lg:grid-cols-4",
36
+ children: T.map((e, n) => {
37
+ let c = [
38
+ s,
39
+ i,
40
+ d,
41
+ u
42
+ ][n] || r, l = e.trend.startsWith("+");
43
+ return /* @__PURE__ */ C(h, { children: [/* @__PURE__ */ C(v, {
44
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
45
+ children: [/* @__PURE__ */ S(y, {
46
+ className: "text-sm font-medium",
47
+ children: e.label
48
+ }), /* @__PURE__ */ S(c, { className: "h-4 w-4 text-muted-foreground" })]
49
+ }), /* @__PURE__ */ C(g, { children: [/* @__PURE__ */ S("div", {
50
+ className: "text-2xl font-bold",
51
+ children: e.value
52
+ }), /* @__PURE__ */ C("div", {
53
+ className: "flex items-center text-xs text-muted-foreground mt-1",
54
+ children: [
55
+ l ? /* @__PURE__ */ S(o, { className: "mr-1 h-3 w-3 text-green-600" }) : /* @__PURE__ */ S(a, { className: "mr-1 h-3 w-3 text-red-600" }),
56
+ /* @__PURE__ */ S("span", {
57
+ className: l ? "text-green-600" : "text-red-600",
58
+ children: e.trend
59
+ }),
60
+ /* @__PURE__ */ S("span", {
61
+ className: "ml-1",
62
+ children: t(w, "assethandler.dashboard.metrics.fromLastMonth", "from last month")
63
+ })
64
+ ]
65
+ })] })] }, e.label);
66
+ })
67
+ }),
68
+ /* @__PURE__ */ C("div", {
69
+ className: "grid gap-6 lg:grid-cols-3",
70
+ children: [/* @__PURE__ */ C(h, {
71
+ className: "lg:col-span-2",
72
+ children: [/* @__PURE__ */ C(v, { children: [/* @__PURE__ */ S(y, { children: t(w, "assethandler.dashboard.portfolio.title", "Portfolio Breakdown") }), /* @__PURE__ */ S(_, { children: t(w, "assethandler.dashboard.portfolio.description", "Asset distribution by category") })] }), /* @__PURE__ */ S(g, { children: /* @__PURE__ */ S("div", {
73
+ className: "space-y-4",
74
+ children: j.byCategory.map((e) => {
75
+ let t = Math.round(e.count / j.totalAssets * 100);
76
+ return /* @__PURE__ */ C("div", {
77
+ className: "space-y-1",
78
+ children: [/* @__PURE__ */ C("div", {
79
+ className: "flex items-center justify-between text-sm",
80
+ children: [/* @__PURE__ */ S("span", {
81
+ className: "font-medium",
82
+ children: e.category
83
+ }), /* @__PURE__ */ C("span", {
84
+ className: "text-muted-foreground",
85
+ children: [
86
+ e.count,
87
+ " assets · $",
88
+ (e.value / 1e3).toFixed(0),
89
+ "K"
90
+ ]
91
+ })]
92
+ }), /* @__PURE__ */ S("div", {
93
+ className: "h-2 rounded-full bg-muted overflow-hidden",
94
+ children: /* @__PURE__ */ S("div", {
95
+ className: "h-full rounded-full bg-primary",
96
+ style: { width: `${t}%` }
97
+ })
98
+ })]
99
+ }, e.category);
100
+ })
101
+ }) })]
102
+ }), /* @__PURE__ */ C(h, { children: [/* @__PURE__ */ C(v, { children: [/* @__PURE__ */ C(y, {
103
+ className: "flex items-center gap-2",
104
+ children: [/* @__PURE__ */ S(i, { className: "h-4 w-4 text-destructive" }), t(w, "assethandler.dashboard.incidents.title", "Active Incidents")]
105
+ }), /* @__PURE__ */ C(_, { children: [
106
+ F.length,
107
+ " ",
108
+ t(w, "assethandler.dashboard.incidents.unresolvedCount", "unresolved incidents")
109
+ ] })] }), /* @__PURE__ */ S(g, { children: /* @__PURE__ */ S("div", {
110
+ className: "space-y-3",
111
+ children: F.slice(0, 4).map((e) => /* @__PURE__ */ S("div", {
112
+ className: "flex items-start gap-3 rounded-lg border p-3",
113
+ children: /* @__PURE__ */ C("div", {
114
+ className: "flex-1 min-w-0",
115
+ children: [
116
+ /* @__PURE__ */ C("div", {
117
+ className: "flex items-center gap-2",
118
+ children: [/* @__PURE__ */ S("span", {
119
+ className: "text-xs font-mono text-muted-foreground",
120
+ children: e.id
121
+ }), /* @__PURE__ */ S(p, {
122
+ variant: e.priority === "critical" || e.priority === "high" ? "destructive" : "secondary",
123
+ className: "text-[10px]",
124
+ children: e.priority
125
+ })]
126
+ }),
127
+ /* @__PURE__ */ S("p", {
128
+ className: "text-sm font-medium truncate mt-1",
129
+ children: e.title
130
+ }),
131
+ /* @__PURE__ */ S("p", {
132
+ className: "text-xs text-muted-foreground mt-0.5",
133
+ children: e.assignedTo || t(w, "assethandler.dashboard.incidents.unassigned", "Unassigned")
134
+ })
135
+ ]
136
+ })
137
+ }, e.id))
138
+ }) })] })]
139
+ }),
140
+ /* @__PURE__ */ C("div", {
141
+ className: "grid gap-6 lg:grid-cols-2",
142
+ children: [/* @__PURE__ */ C(h, { children: [/* @__PURE__ */ C(v, { children: [/* @__PURE__ */ S(y, { children: t(w, "assethandler.dashboard.workItems.title", "Current Work Items") }), /* @__PURE__ */ S(_, { children: t(w, "assethandler.dashboard.workItems.description", "Active tasks and initiatives") })] }), /* @__PURE__ */ S(g, { children: /* @__PURE__ */ S("div", {
143
+ className: "space-y-3",
144
+ children: E.map((e) => /* @__PURE__ */ C("div", {
145
+ className: "flex items-center gap-3",
146
+ children: [/* @__PURE__ */ S("span", {
147
+ className: `inline-flex items-center rounded-md px-2 py-1 text-[10px] font-medium ${{
148
+ active: "bg-blue-100 text-blue-800",
149
+ planned: "bg-slate-100 text-slate-800",
150
+ at_risk: "bg-red-100 text-red-800",
151
+ completed: "bg-green-100 text-green-800"
152
+ }[e.status] || "bg-muted text-muted-foreground"}`,
153
+ children: e.status.replace("_", " ")
154
+ }), /* @__PURE__ */ C("div", {
155
+ className: "flex-1 min-w-0",
156
+ children: [/* @__PURE__ */ S("p", {
157
+ className: "text-sm truncate",
158
+ children: e.title
159
+ }), /* @__PURE__ */ C("p", {
160
+ className: "text-xs text-muted-foreground",
161
+ children: [
162
+ e.owner,
163
+ " · ",
164
+ e.updatedAt
165
+ ]
166
+ })]
167
+ })]
168
+ }, e.id))
169
+ }) })] }), /* @__PURE__ */ C(h, { children: [/* @__PURE__ */ C(v, { children: [/* @__PURE__ */ S(y, { children: t(w, "assethandler.dashboard.operations.title", "Operations Summary") }), /* @__PURE__ */ S(_, { children: t(w, "assethandler.dashboard.operations.description", "Quick view of current operations") })] }), /* @__PURE__ */ C(g, { children: [
170
+ /* @__PURE__ */ C("div", {
171
+ className: "grid grid-cols-2 gap-4",
172
+ children: [
173
+ /* @__PURE__ */ C("div", {
174
+ className: "rounded-lg border p-4 text-center",
175
+ children: [
176
+ /* @__PURE__ */ S(f, { className: "h-5 w-5 mx-auto text-muted-foreground mb-2" }),
177
+ /* @__PURE__ */ S("p", {
178
+ className: "text-2xl font-bold",
179
+ children: L.length
180
+ }),
181
+ /* @__PURE__ */ S("p", {
182
+ className: "text-xs text-muted-foreground",
183
+ children: t(w, "assethandler.dashboard.operations.pendingMaintenance", "Pending Maintenance")
184
+ })
185
+ ]
186
+ }),
187
+ /* @__PURE__ */ C("div", {
188
+ className: "rounded-lg border p-4 text-center",
189
+ children: [
190
+ /* @__PURE__ */ S(r, { className: "h-5 w-5 mx-auto text-muted-foreground mb-2" }),
191
+ /* @__PURE__ */ S("p", {
192
+ className: "text-2xl font-bold",
193
+ children: z.length
194
+ }),
195
+ /* @__PURE__ */ S("p", {
196
+ className: "text-xs text-muted-foreground",
197
+ children: t(w, "assethandler.dashboard.operations.activeWorkflows", "Active Workflows")
198
+ })
199
+ ]
200
+ }),
201
+ /* @__PURE__ */ C("div", {
202
+ className: "rounded-lg border p-4 text-center",
203
+ children: [
204
+ /* @__PURE__ */ S(l, { className: "h-5 w-5 mx-auto text-muted-foreground mb-2" }),
205
+ /* @__PURE__ */ S("p", {
206
+ className: "text-2xl font-bold",
207
+ children: M.filter((e) => e.status === "approved" || e.status === "submitted").length
208
+ }),
209
+ /* @__PURE__ */ S("p", {
210
+ className: "text-xs text-muted-foreground",
211
+ children: t(w, "assethandler.dashboard.operations.pendingChanges", "Pending Changes")
212
+ })
213
+ ]
214
+ }),
215
+ /* @__PURE__ */ C("div", {
216
+ className: "rounded-lg border p-4 text-center",
217
+ children: [
218
+ /* @__PURE__ */ S(c, { className: "h-5 w-5 mx-auto text-muted-foreground mb-2" }),
219
+ /* @__PURE__ */ S("p", {
220
+ className: "text-2xl font-bold",
221
+ children: I.length
222
+ }),
223
+ /* @__PURE__ */ S("p", {
224
+ className: "text-xs text-muted-foreground",
225
+ children: t(w, "assethandler.dashboard.operations.criticalAlerts", "Critical Alerts")
226
+ })
227
+ ]
228
+ })
229
+ ]
230
+ }),
231
+ /* @__PURE__ */ S(b, { className: "my-4" }),
232
+ /* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("h4", {
233
+ className: "text-sm font-medium mb-2",
234
+ children: t(w, "assethandler.dashboard.notifications.title", "Recent Notifications")
235
+ }), /* @__PURE__ */ S("div", {
236
+ className: "space-y-2",
237
+ children: R.slice(0, 3).map((e) => /* @__PURE__ */ C("div", {
238
+ className: "flex items-start gap-2 text-sm",
239
+ children: [/* @__PURE__ */ S("div", { className: `mt-1 h-2 w-2 rounded-full shrink-0 ${e.priority === "critical" ? "bg-red-500" : e.priority === "high" ? "bg-orange-500" : "bg-blue-500"}` }), /* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("p", {
240
+ className: "font-medium text-xs",
241
+ children: e.title
242
+ }), /* @__PURE__ */ S("p", {
243
+ className: "text-xs text-muted-foreground truncate",
244
+ children: e.message
245
+ })] })]
246
+ }, e.id))
247
+ })] })
248
+ ] })] })]
249
+ }),
250
+ /* @__PURE__ */ C(h, { children: [/* @__PURE__ */ C(v, { children: [/* @__PURE__ */ C(y, {
251
+ className: "flex items-center gap-2",
252
+ children: [/* @__PURE__ */ S(f, { className: "h-4 w-4" }), t(w, "assethandler.dashboard.maintenance.title", "Upcoming Maintenance")]
253
+ }), /* @__PURE__ */ S(_, { children: t(w, "assethandler.dashboard.maintenance.description", "Scheduled maintenance activities") })] }), /* @__PURE__ */ S(g, { children: /* @__PURE__ */ S("div", {
254
+ className: "overflow-x-auto",
255
+ children: /* @__PURE__ */ C("table", {
256
+ className: "w-full text-sm",
257
+ children: [/* @__PURE__ */ S("thead", { children: /* @__PURE__ */ C("tr", {
258
+ className: "border-b",
259
+ children: [
260
+ /* @__PURE__ */ S("th", {
261
+ className: "text-left py-2 font-medium",
262
+ children: t(w, "assethandler.dashboard.maintenance.table.id", "ID")
263
+ }),
264
+ /* @__PURE__ */ S("th", {
265
+ className: "text-left py-2 font-medium",
266
+ children: t(w, "assethandler.dashboard.maintenance.table.asset", "Asset")
267
+ }),
268
+ /* @__PURE__ */ S("th", {
269
+ className: "text-left py-2 font-medium",
270
+ children: t(w, "assethandler.dashboard.maintenance.table.title", "Title")
271
+ }),
272
+ /* @__PURE__ */ S("th", {
273
+ className: "text-left py-2 font-medium",
274
+ children: t(w, "assethandler.dashboard.maintenance.table.type", "Type")
275
+ }),
276
+ /* @__PURE__ */ S("th", {
277
+ className: "text-left py-2 font-medium",
278
+ children: t(w, "assethandler.dashboard.maintenance.table.priority", "Priority")
279
+ }),
280
+ /* @__PURE__ */ S("th", {
281
+ className: "text-left py-2 font-medium",
282
+ children: t(w, "assethandler.dashboard.maintenance.table.scheduled", "Scheduled")
283
+ }),
284
+ /* @__PURE__ */ S("th", {
285
+ className: "text-left py-2 font-medium",
286
+ children: t(w, "assethandler.dashboard.maintenance.table.status", "Status")
287
+ })
288
+ ]
289
+ }) }), /* @__PURE__ */ S("tbody", { children: k.map((e) => /* @__PURE__ */ C("tr", {
290
+ className: "border-b hover:bg-muted/50",
291
+ children: [
292
+ /* @__PURE__ */ S("td", {
293
+ className: "py-2 font-mono text-xs",
294
+ children: e.id
295
+ }),
296
+ /* @__PURE__ */ S("td", {
297
+ className: "py-2",
298
+ children: e.assetName
299
+ }),
300
+ /* @__PURE__ */ S("td", {
301
+ className: "py-2",
302
+ children: e.title
303
+ }),
304
+ /* @__PURE__ */ S("td", {
305
+ className: "py-2 capitalize",
306
+ children: e.type
307
+ }),
308
+ /* @__PURE__ */ S("td", {
309
+ className: "py-2",
310
+ children: /* @__PURE__ */ S(p, {
311
+ variant: e.priority === "critical" || e.priority === "high" ? "destructive" : "secondary",
312
+ children: e.priority
313
+ })
314
+ }),
315
+ /* @__PURE__ */ S("td", {
316
+ className: "py-2",
317
+ children: e.scheduledDate
318
+ }),
319
+ /* @__PURE__ */ S("td", {
320
+ className: "py-2",
321
+ children: /* @__PURE__ */ S(p, {
322
+ variant: e.status === "completed" ? "default" : e.status === "in_progress" ? "secondary" : "outline",
323
+ children: e.status.replace("_", " ")
324
+ })
325
+ })
326
+ ]
327
+ }, e.id)) })]
328
+ })
329
+ }) })] })
330
+ ]
331
+ });
332
+ }
333
+ //#endregion
334
+ export { w as DashboardPage };
335
+
336
+ //# sourceMappingURL=DashboardPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardPage.js","names":[],"sources":["../../../src/assethandler/pages/DashboardPage.tsx"],"sourcesContent":["import { useState } 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 {\n Activity,\n AlertTriangle,\n ArrowUpRight,\n ArrowDownRight,\n Box,\n Clock,\n DollarSign,\n Shield,\n Wrench,\n TrendingUp,\n Users,\n CheckCircle,\n} from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { useAssetHandlerStore } from '../store/assethandlerStore';\nimport { tWithFallback } from '../utils/i18n';\n\nexport function DashboardPage() {\n const { t } = useI18n();\n const {\n metrics,\n workItems,\n assets,\n incidents,\n maintenanceRecords,\n notifications,\n portfolio,\n changeRequests,\n workflows,\n } = useAssetHandlerStore();\n const [selectedPeriod] = useState('This Month');\n\n const activeIncidents = incidents.filter((i) => i.status !== 'resolved' && i.status !== 'closed');\n const criticalIncidents = incidents.filter(\n (i) => i.priority === 'critical' && i.status !== 'resolved'\n );\n const pendingMaintenance = maintenanceRecords.filter(\n (m) => m.status === 'scheduled' || m.status === 'in_progress'\n );\n const unreadNotifications = notifications.filter((n) => !n.isRead);\n const activeWorkflows = workflows.filter((w) => w.status === 'active');\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\">\n {tWithFallback(t, 'assethandler.dashboard.title', 'Dashboard')}\n </h1>\n <p className=\"text-sm text-muted-foreground mt-1\">\n {tWithFallback(\n t,\n 'assethandler.dashboard.description',\n 'Overview of your IT asset portfolio and operations'\n )}\n </p>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\">\n {tWithFallback(t, 'assethandler.dashboard.actions.exportReport', 'Export Report')}\n </Button>\n <Button size=\"sm\">\n {tWithFallback(t, 'assethandler.dashboard.actions.addAsset', 'Add Asset')}\n </Button>\n </div>\n </div>\n\n {/* KPI Metrics */}\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-4\">\n {metrics.map((metric, i) => {\n const icons = [Box, AlertTriangle, Shield, DollarSign];\n const Icon = icons[i] || Activity;\n const isPositive = metric.trend.startsWith('+');\n return (\n <Card key={metric.label}>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">{metric.label}</CardTitle>\n <Icon className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{metric.value}</div>\n <div className=\"flex items-center text-xs text-muted-foreground mt-1\">\n {isPositive ? (\n <ArrowUpRight className=\"mr-1 h-3 w-3 text-green-600\" />\n ) : (\n <ArrowDownRight className=\"mr-1 h-3 w-3 text-red-600\" />\n )}\n <span className={isPositive ? 'text-green-600' : 'text-red-600'}>\n {metric.trend}\n </span>\n <span className=\"ml-1\">\n {tWithFallback(\n t,\n 'assethandler.dashboard.metrics.fromLastMonth',\n 'from last month'\n )}\n </span>\n </div>\n </CardContent>\n </Card>\n );\n })}\n </div>\n\n {/* Portfolio Breakdown & Active Incidents */}\n <div className=\"grid gap-6 lg:grid-cols-3\">\n {/* Portfolio by Category */}\n <Card className=\"lg:col-span-2\">\n <CardHeader>\n <CardTitle>\n {tWithFallback(t, 'assethandler.dashboard.portfolio.title', 'Portfolio Breakdown')}\n </CardTitle>\n <CardDescription>\n {tWithFallback(\n t,\n 'assethandler.dashboard.portfolio.description',\n 'Asset distribution by category'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-4\">\n {portfolio.byCategory.map((cat) => {\n const pct = Math.round((cat.count / portfolio.totalAssets) * 100);\n return (\n <div key={cat.category} className=\"space-y-1\">\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"font-medium\">{cat.category}</span>\n <span className=\"text-muted-foreground\">\n {cat.count} assets &middot; ${(cat.value / 1000).toFixed(0)}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 {/* Active Incidents */}\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <AlertTriangle className=\"h-4 w-4 text-destructive\" />\n {tWithFallback(t, 'assethandler.dashboard.incidents.title', 'Active Incidents')}\n </CardTitle>\n <CardDescription>\n {activeIncidents.length}{' '}\n {tWithFallback(\n t,\n 'assethandler.dashboard.incidents.unresolvedCount',\n 'unresolved incidents'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n {activeIncidents.slice(0, 4).map((inc) => (\n <div key={inc.id} className=\"flex items-start gap-3 rounded-lg border p-3\">\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs font-mono text-muted-foreground\">{inc.id}</span>\n <Badge\n variant={\n inc.priority === 'critical'\n ? 'destructive'\n : inc.priority === 'high'\n ? 'destructive'\n : 'secondary'\n }\n className=\"text-[10px]\"\n >\n {inc.priority}\n </Badge>\n </div>\n <p className=\"text-sm font-medium truncate mt-1\">{inc.title}</p>\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n {inc.assignedTo ||\n tWithFallback(\n t,\n 'assethandler.dashboard.incidents.unassigned',\n 'Unassigned'\n )}\n </p>\n </div>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n </div>\n\n {/* Work Items & Operations Summary */}\n <div className=\"grid gap-6 lg:grid-cols-2\">\n {/* Work Items */}\n <Card>\n <CardHeader>\n <CardTitle>\n {tWithFallback(t, 'assethandler.dashboard.workItems.title', 'Current Work Items')}\n </CardTitle>\n <CardDescription>\n {tWithFallback(\n t,\n 'assethandler.dashboard.workItems.description',\n 'Active tasks and initiatives'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n {workItems.map((item) => {\n const statusColors: Record<string, string> = {\n active: 'bg-blue-100 text-blue-800',\n planned: 'bg-slate-100 text-slate-800',\n at_risk: 'bg-red-100 text-red-800',\n completed: 'bg-green-100 text-green-800',\n };\n return (\n <div key={item.id} className=\"flex items-center gap-3\">\n <span\n className={`inline-flex items-center rounded-md px-2 py-1 text-[10px] font-medium ${statusColors[item.status] || 'bg-muted text-muted-foreground'}`}\n >\n {item.status.replace('_', ' ')}\n </span>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm truncate\">{item.title}</p>\n <p className=\"text-xs text-muted-foreground\">\n {item.owner} &middot; {item.updatedAt}\n </p>\n </div>\n </div>\n );\n })}\n </div>\n </CardContent>\n </Card>\n\n {/* Operations Quick View */}\n <Card>\n <CardHeader>\n <CardTitle>\n {tWithFallback(t, 'assethandler.dashboard.operations.title', 'Operations Summary')}\n </CardTitle>\n <CardDescription>\n {tWithFallback(\n t,\n 'assethandler.dashboard.operations.description',\n 'Quick view of current operations'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"rounded-lg border p-4 text-center\">\n <Wrench className=\"h-5 w-5 mx-auto text-muted-foreground mb-2\" />\n <p className=\"text-2xl font-bold\">{pendingMaintenance.length}</p>\n <p className=\"text-xs text-muted-foreground\">\n {tWithFallback(\n t,\n 'assethandler.dashboard.operations.pendingMaintenance',\n 'Pending Maintenance'\n )}\n </p>\n </div>\n <div className=\"rounded-lg border p-4 text-center\">\n <Activity className=\"h-5 w-5 mx-auto text-muted-foreground mb-2\" />\n <p className=\"text-2xl font-bold\">{activeWorkflows.length}</p>\n <p className=\"text-xs text-muted-foreground\">\n {tWithFallback(\n t,\n 'assethandler.dashboard.operations.activeWorkflows',\n 'Active Workflows'\n )}\n </p>\n </div>\n <div className=\"rounded-lg border p-4 text-center\">\n <Clock className=\"h-5 w-5 mx-auto text-muted-foreground mb-2\" />\n <p className=\"text-2xl font-bold\">\n {\n changeRequests.filter(\n (c) => c.status === 'approved' || c.status === 'submitted'\n ).length\n }\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {tWithFallback(\n t,\n 'assethandler.dashboard.operations.pendingChanges',\n 'Pending Changes'\n )}\n </p>\n </div>\n <div className=\"rounded-lg border p-4 text-center\">\n <CheckCircle className=\"h-5 w-5 mx-auto text-muted-foreground mb-2\" />\n <p className=\"text-2xl font-bold\">{criticalIncidents.length}</p>\n <p className=\"text-xs text-muted-foreground\">\n {tWithFallback(\n t,\n 'assethandler.dashboard.operations.criticalAlerts',\n 'Critical Alerts'\n )}\n </p>\n </div>\n </div>\n\n <Separator className=\"my-4\" />\n\n <div>\n <h4 className=\"text-sm font-medium mb-2\">\n {tWithFallback(\n t,\n 'assethandler.dashboard.notifications.title',\n 'Recent Notifications'\n )}\n </h4>\n <div className=\"space-y-2\">\n {unreadNotifications.slice(0, 3).map((n) => (\n <div key={n.id} className=\"flex items-start gap-2 text-sm\">\n <div\n className={`mt-1 h-2 w-2 rounded-full shrink-0 ${n.priority === 'critical' ? 'bg-red-500' : n.priority === 'high' ? 'bg-orange-500' : 'bg-blue-500'}`}\n />\n <div>\n <p className=\"font-medium text-xs\">{n.title}</p>\n <p className=\"text-xs text-muted-foreground truncate\">{n.message}</p>\n </div>\n </div>\n ))}\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n\n {/* Upcoming Maintenance */}\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Wrench className=\"h-4 w-4\" />\n {tWithFallback(t, 'assethandler.dashboard.maintenance.title', 'Upcoming Maintenance')}\n </CardTitle>\n <CardDescription>\n {tWithFallback(\n t,\n 'assethandler.dashboard.maintenance.description',\n 'Scheduled maintenance activities'\n )}\n </CardDescription>\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\">\n {tWithFallback(t, 'assethandler.dashboard.maintenance.table.id', 'ID')}\n </th>\n <th className=\"text-left py-2 font-medium\">\n {tWithFallback(t, 'assethandler.dashboard.maintenance.table.asset', 'Asset')}\n </th>\n <th className=\"text-left py-2 font-medium\">\n {tWithFallback(t, 'assethandler.dashboard.maintenance.table.title', 'Title')}\n </th>\n <th className=\"text-left py-2 font-medium\">\n {tWithFallback(t, 'assethandler.dashboard.maintenance.table.type', 'Type')}\n </th>\n <th className=\"text-left py-2 font-medium\">\n {tWithFallback(\n t,\n 'assethandler.dashboard.maintenance.table.priority',\n 'Priority'\n )}\n </th>\n <th className=\"text-left py-2 font-medium\">\n {tWithFallback(\n t,\n 'assethandler.dashboard.maintenance.table.scheduled',\n 'Scheduled'\n )}\n </th>\n <th className=\"text-left py-2 font-medium\">\n {tWithFallback(t, 'assethandler.dashboard.maintenance.table.status', 'Status')}\n </th>\n </tr>\n </thead>\n <tbody>\n {maintenanceRecords.map((rec) => (\n <tr key={rec.id} className=\"border-b hover:bg-muted/50\">\n <td className=\"py-2 font-mono text-xs\">{rec.id}</td>\n <td className=\"py-2\">{rec.assetName}</td>\n <td className=\"py-2\">{rec.title}</td>\n <td className=\"py-2 capitalize\">{rec.type}</td>\n <td className=\"py-2\">\n <Badge\n variant={\n rec.priority === 'critical' || rec.priority === 'high'\n ? 'destructive'\n : 'secondary'\n }\n >\n {rec.priority}\n </Badge>\n </td>\n <td className=\"py-2\">{rec.scheduledDate}</td>\n <td className=\"py-2\">\n <Badge\n variant={\n rec.status === 'completed'\n ? 'default'\n : rec.status === 'in_progress'\n ? 'secondary'\n : 'outline'\n }\n >\n {rec.status.replace('_', ' ')}\n </Badge>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function DigitalTwinPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=DigitalTwinPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DigitalTwinPage.d.ts","sourceRoot":"","sources":["../../../src/assethandler/pages/DigitalTwinPage.tsx"],"names":[],"mappings":"AAiBA,wBAAgB,eAAe,4CA4C9B"}
@@ -0,0 +1,71 @@
1
+ import { Box as e } from "lucide-react";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ import { gql as r } from "@apollo/client";
4
+ import { useQuery as i } from "@apollo/client/react";
5
+ //#region src/assethandler/pages/DigitalTwinPage.tsx
6
+ var a = r`
7
+ query AssetHandlerDigitalTwins {
8
+ digitalTwins {
9
+ id
10
+ assetId
11
+ modelRef
12
+ fidelityLevel
13
+ geometryRef
14
+ updatedAt
15
+ }
16
+ }
17
+ `;
18
+ function o() {
19
+ let { data: r, loading: o } = i(a, { fetchPolicy: "cache-and-network" }), s = r?.digitalTwins ?? [];
20
+ return /* @__PURE__ */ n("div", {
21
+ className: "space-y-4 p-4",
22
+ children: [
23
+ /* @__PURE__ */ n("h1", {
24
+ className: "flex items-center gap-2 text-2xl font-semibold",
25
+ children: [/* @__PURE__ */ t(e, { className: "h-6 w-6" }), " Digital Twin"]
26
+ }),
27
+ /* @__PURE__ */ t("p", {
28
+ className: "text-muted-foreground",
29
+ children: "Manage and simulate digital twins for critical assets and systems."
30
+ }),
31
+ /* @__PURE__ */ n("div", {
32
+ className: "grid gap-3 md:grid-cols-2",
33
+ children: [
34
+ o && s.length === 0 ? /* @__PURE__ */ t("p", {
35
+ className: "text-sm text-muted-foreground",
36
+ children: "Loading twins..."
37
+ }) : null,
38
+ !o && s.length === 0 ? /* @__PURE__ */ t("p", {
39
+ className: "text-sm text-muted-foreground",
40
+ children: "No digital twins found."
41
+ }) : null,
42
+ s.map((e) => /* @__PURE__ */ n("article", {
43
+ className: "rounded-lg border p-4",
44
+ children: [
45
+ /* @__PURE__ */ n("p", {
46
+ className: "text-xs uppercase tracking-wide text-muted-foreground",
47
+ children: ["Asset ", e.assetId]
48
+ }),
49
+ /* @__PURE__ */ t("h2", {
50
+ className: "mt-1 text-base font-semibold",
51
+ children: e.modelRef
52
+ }),
53
+ /* @__PURE__ */ n("p", {
54
+ className: "mt-1 text-sm text-muted-foreground",
55
+ children: ["Fidelity: ", e.fidelityLevel]
56
+ }),
57
+ /* @__PURE__ */ n("p", {
58
+ className: "mt-1 text-sm text-muted-foreground",
59
+ children: ["Geometry: ", e.geometryRef ?? "Not linked"]
60
+ })
61
+ ]
62
+ }, e.id))
63
+ ]
64
+ })
65
+ ]
66
+ });
67
+ }
68
+ //#endregion
69
+ export { o as DigitalTwinPage };
70
+
71
+ //# sourceMappingURL=DigitalTwinPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DigitalTwinPage.js","names":[],"sources":["../../../src/assethandler/pages/DigitalTwinPage.tsx"],"sourcesContent":["import { Box } from 'lucide-react';\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\n\nconst DIGITAL_TWINS_QUERY = gql`\n query AssetHandlerDigitalTwins {\n digitalTwins {\n id\n assetId\n modelRef\n fidelityLevel\n geometryRef\n updatedAt\n }\n }\n`;\n\nexport function DigitalTwinPage() {\n const { data, loading } = useQuery<{\n digitalTwins: Array<{\n id: string;\n assetId: string;\n modelRef: string;\n fidelityLevel: string;\n geometryRef: string | null;\n updatedAt: string;\n }>;\n }>(DIGITAL_TWINS_QUERY, { fetchPolicy: 'cache-and-network' });\n\n const twins = data?.digitalTwins ?? [];\n\n return (\n <div className=\"space-y-4 p-4\">\n <h1 className=\"flex items-center gap-2 text-2xl font-semibold\">\n <Box className=\"h-6 w-6\" /> Digital Twin\n </h1>\n <p className=\"text-muted-foreground\">\n Manage and simulate digital twins for critical assets and systems.\n </p>\n <div className=\"grid gap-3 md:grid-cols-2\">\n {loading && twins.length === 0 ? (\n <p className=\"text-sm text-muted-foreground\">Loading twins...</p>\n ) : null}\n {!loading && twins.length === 0 ? (\n <p className=\"text-sm text-muted-foreground\">No digital twins found.</p>\n ) : null}\n {twins.map((twin) => (\n <article key={twin.id} className=\"rounded-lg border p-4\">\n <p className=\"text-xs uppercase tracking-wide text-muted-foreground\">\n Asset {twin.assetId}\n </p>\n <h2 className=\"mt-1 text-base font-semibold\">{twin.modelRef}</h2>\n <p className=\"mt-1 text-sm text-muted-foreground\">Fidelity: {twin.fidelityLevel}</p>\n <p className=\"mt-1 text-sm text-muted-foreground\">\n Geometry: {twin.geometryRef ?? 'Not linked'}\n </p>\n </article>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AAIA,IAAM,IAAsB,CAAG;;;;;;;;;;;;AAa/B,SAAgB,IAAkB;CAChC,IAAM,EAAE,SAAM,eAAY,EASvB,GAAqB,EAAE,aAAa,qBAAqB,CAAC,EAEvD,IAAQ,GAAM,gBAAgB,EAAE;AAEtC,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,MAAD;IAAI,WAAU;cAAd,CACE,kBAAC,GAAD,EAAK,WAAU,WAAY,CAAA,EAAA,gBACxB;;GACL,kBAAC,KAAD;IAAG,WAAU;cAAwB;IAEjC,CAAA;GACJ,kBAAC,OAAD;IAAK,WAAU;cAAf;KACG,KAAW,EAAM,WAAW,IAC3B,kBAAC,KAAD;MAAG,WAAU;gBAAgC;MAAoB,CAAA,GAC/D;KACH,CAAC,KAAW,EAAM,WAAW,IAC5B,kBAAC,KAAD;MAAG,WAAU;gBAAgC;MAA2B,CAAA,GACtE;KACH,EAAM,KAAK,MACV,kBAAC,WAAD;MAAuB,WAAU;gBAAjC;OACE,kBAAC,KAAD;QAAG,WAAU;kBAAb,CAAqE,UAC5D,EAAK,QACV;;OACJ,kBAAC,MAAD;QAAI,WAAU;kBAAgC,EAAK;QAAc,CAAA;OACjE,kBAAC,KAAD;QAAG,WAAU;kBAAb,CAAkD,cAAW,EAAK,cAAkB;;OACpF,kBAAC,KAAD;QAAG,WAAU;kBAAb,CAAkD,cACrC,EAAK,eAAe,aAC7B;;OACI;QATI,EAAK,GAST,CACV;KACE;;GACF"}
@@ -0,0 +1,2 @@
1
+ export declare function DiscoveryJobsPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=DiscoveryJobsPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiscoveryJobsPage.d.ts","sourceRoot":"","sources":["../../../src/assethandler/pages/DiscoveryJobsPage.tsx"],"names":[],"mappings":"AA2BA,wBAAgB,iBAAiB,4CA0FhC"}
@@ -0,0 +1,115 @@
1
+ import { useState as e } from "react";
2
+ import { Radar as t } from "lucide-react";
3
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
+ import { gql as i } from "@apollo/client";
5
+ import { useMutation as a, useQuery as o } from "@apollo/client/react";
6
+ //#region src/assethandler/pages/DiscoveryJobsPage.tsx
7
+ var s = i`
8
+ query AssetHandlerDiscoveryJobs {
9
+ discoveryJobs {
10
+ id
11
+ name
12
+ source
13
+ status
14
+ assetsDiscovered
15
+ startedAt
16
+ completedAt
17
+ }
18
+ }
19
+ `, c = i`
20
+ mutation AssetHandlerStartDiscoveryJob($input: StartDiscoveryJobInput!) {
21
+ startDiscoveryJob(input: $input) {
22
+ id
23
+ }
24
+ }
25
+ `;
26
+ function l() {
27
+ let [i, l] = e("Nightly Datacenter Scan"), [u, d] = e("aws-ap-south-1"), { data: f, loading: p, refetch: m } = o(s, { fetchPolicy: "cache-and-network" }), [h, { loading: g }] = a(c, { onCompleted: () => {
28
+ m();
29
+ } }), _ = f?.discoveryJobs ?? [];
30
+ return /* @__PURE__ */ r("div", {
31
+ className: "space-y-4 p-4",
32
+ children: [
33
+ /* @__PURE__ */ r("h1", {
34
+ className: "flex items-center gap-2 text-2xl font-semibold",
35
+ children: [/* @__PURE__ */ n(t, { className: "h-6 w-6" }), " Discovery Jobs"]
36
+ }),
37
+ /* @__PURE__ */ n("p", {
38
+ className: "text-muted-foreground",
39
+ children: "Run and monitor asset discovery scans from connected environments."
40
+ }),
41
+ /* @__PURE__ */ r("form", {
42
+ className: "grid gap-3 rounded-lg border p-4 md:grid-cols-3",
43
+ onSubmit: (e) => {
44
+ e.preventDefault(), h({ variables: { input: {
45
+ name: i,
46
+ source: u
47
+ } } });
48
+ },
49
+ children: [
50
+ /* @__PURE__ */ n("input", {
51
+ className: "rounded-md border px-3 py-2",
52
+ value: i,
53
+ onChange: (e) => l(e.target.value),
54
+ placeholder: "Job name"
55
+ }),
56
+ /* @__PURE__ */ n("input", {
57
+ className: "rounded-md border px-3 py-2",
58
+ value: u,
59
+ onChange: (e) => d(e.target.value),
60
+ placeholder: "Discovery source"
61
+ }),
62
+ /* @__PURE__ */ n("button", {
63
+ className: "rounded-md bg-primary px-3 py-2 text-primary-foreground",
64
+ disabled: g,
65
+ type: "submit",
66
+ children: g ? "Starting..." : "Start Job"
67
+ })
68
+ ]
69
+ }),
70
+ /* @__PURE__ */ r("div", {
71
+ className: "rounded-lg border",
72
+ children: [
73
+ /* @__PURE__ */ r("div", {
74
+ className: "grid grid-cols-5 gap-3 border-b px-4 py-3 text-xs font-semibold uppercase tracking-wide text-muted-foreground",
75
+ children: [
76
+ /* @__PURE__ */ n("span", { children: "Name" }),
77
+ /* @__PURE__ */ n("span", { children: "Source" }),
78
+ /* @__PURE__ */ n("span", { children: "Status" }),
79
+ /* @__PURE__ */ n("span", { children: "Discovered" }),
80
+ /* @__PURE__ */ n("span", { children: "Started" })
81
+ ]
82
+ }),
83
+ p && _.length === 0 ? /* @__PURE__ */ n("div", {
84
+ className: "px-4 py-4 text-sm text-muted-foreground",
85
+ children: "Loading jobs..."
86
+ }) : null,
87
+ !p && _.length === 0 ? /* @__PURE__ */ n("div", {
88
+ className: "px-4 py-4 text-sm text-muted-foreground",
89
+ children: "No discovery jobs found."
90
+ }) : null,
91
+ _.map((e) => /* @__PURE__ */ r("div", {
92
+ className: "grid grid-cols-5 gap-3 border-b px-4 py-3 text-sm last:border-b-0",
93
+ children: [
94
+ /* @__PURE__ */ n("span", {
95
+ className: "font-medium",
96
+ children: e.name
97
+ }),
98
+ /* @__PURE__ */ n("span", { children: e.source }),
99
+ /* @__PURE__ */ n("span", { children: e.status }),
100
+ /* @__PURE__ */ n("span", { children: e.assetsDiscovered }),
101
+ /* @__PURE__ */ n("span", {
102
+ className: "text-muted-foreground",
103
+ children: e.startedAt ? new Date(e.startedAt).toLocaleString() : "n/a"
104
+ })
105
+ ]
106
+ }, e.id))
107
+ ]
108
+ })
109
+ ]
110
+ });
111
+ }
112
+ //#endregion
113
+ export { l as DiscoveryJobsPage };
114
+
115
+ //# sourceMappingURL=DiscoveryJobsPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiscoveryJobsPage.js","names":[],"sources":["../../../src/assethandler/pages/DiscoveryJobsPage.tsx"],"sourcesContent":["import { Radar } from 'lucide-react';\nimport { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\n\nconst DISCOVERY_JOBS_QUERY = gql`\n query AssetHandlerDiscoveryJobs {\n discoveryJobs {\n id\n name\n source\n status\n assetsDiscovered\n startedAt\n completedAt\n }\n }\n`;\n\nconst START_DISCOVERY_JOB_MUTATION = gql`\n mutation AssetHandlerStartDiscoveryJob($input: StartDiscoveryJobInput!) {\n startDiscoveryJob(input: $input) {\n id\n }\n }\n`;\n\nexport function DiscoveryJobsPage() {\n const [name, setName] = useState('Nightly Datacenter Scan');\n const [source, setSource] = useState('aws-ap-south-1');\n\n const { data, loading, refetch } = useQuery<{\n discoveryJobs: Array<{\n id: string;\n name: string;\n source: string;\n status: string;\n assetsDiscovered: number;\n startedAt: string | null;\n completedAt: string | null;\n }>;\n }>(DISCOVERY_JOBS_QUERY, { fetchPolicy: 'cache-and-network' });\n\n const [startDiscoveryJob, { loading: starting }] = useMutation(START_DISCOVERY_JOB_MUTATION, {\n onCompleted: () => {\n void refetch();\n },\n });\n\n const jobs = data?.discoveryJobs ?? [];\n\n return (\n <div className=\"space-y-4 p-4\">\n <h1 className=\"flex items-center gap-2 text-2xl font-semibold\">\n <Radar className=\"h-6 w-6\" /> Discovery Jobs\n </h1>\n <p className=\"text-muted-foreground\">\n Run and monitor asset discovery scans from connected environments.\n </p>\n <form\n className=\"grid gap-3 rounded-lg border p-4 md:grid-cols-3\"\n onSubmit={(event) => {\n event.preventDefault();\n void startDiscoveryJob({ variables: { input: { name, source } } });\n }}\n >\n <input\n className=\"rounded-md border px-3 py-2\"\n value={name}\n onChange={(event) => setName(event.target.value)}\n placeholder=\"Job name\"\n />\n <input\n className=\"rounded-md border px-3 py-2\"\n value={source}\n onChange={(event) => setSource(event.target.value)}\n placeholder=\"Discovery source\"\n />\n <button\n className=\"rounded-md bg-primary px-3 py-2 text-primary-foreground\"\n disabled={starting}\n type=\"submit\"\n >\n {starting ? 'Starting...' : 'Start Job'}\n </button>\n </form>\n <div className=\"rounded-lg border\">\n <div className=\"grid grid-cols-5 gap-3 border-b px-4 py-3 text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n <span>Name</span>\n <span>Source</span>\n <span>Status</span>\n <span>Discovered</span>\n <span>Started</span>\n </div>\n {loading && jobs.length === 0 ? (\n <div className=\"px-4 py-4 text-sm text-muted-foreground\">Loading jobs...</div>\n ) : null}\n {!loading && jobs.length === 0 ? (\n <div className=\"px-4 py-4 text-sm text-muted-foreground\">No discovery jobs found.</div>\n ) : null}\n {jobs.map((job) => (\n <div\n key={job.id}\n className=\"grid grid-cols-5 gap-3 border-b px-4 py-3 text-sm last:border-b-0\"\n >\n <span className=\"font-medium\">{job.name}</span>\n <span>{job.source}</span>\n <span>{job.status}</span>\n <span>{job.assetsDiscovered}</span>\n <span className=\"text-muted-foreground\">\n {job.startedAt ? new Date(job.startedAt).toLocaleString() : 'n/a'}\n </span>\n </div>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;AAKA,IAAM,IAAuB,CAAG;;;;;;;;;;;;GAc1B,IAA+B,CAAG;;;;;;;AAQxC,SAAgB,IAAoB;CAClC,IAAM,CAAC,GAAM,KAAW,EAAS,0BAA0B,EACrD,CAAC,GAAQ,KAAa,EAAS,iBAAiB,EAEhD,EAAE,SAAM,YAAS,eAAY,EAUhC,GAAsB,EAAE,aAAa,qBAAqB,CAAC,EAExD,CAAC,GAAmB,EAAE,SAAS,OAAc,EAAY,GAA8B,EAC3F,mBAAmB;AACZ,KAAS;IAEjB,CAAC,EAEI,IAAO,GAAM,iBAAiB,EAAE;AAEtC,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,MAAD;IAAI,WAAU;cAAd,CACE,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA,EAAA,kBAC1B;;GACL,kBAAC,KAAD;IAAG,WAAU;cAAwB;IAEjC,CAAA;GACJ,kBAAC,QAAD;IACE,WAAU;IACV,WAAW,MAAU;AAEd,KADL,EAAM,gBAAgB,EACjB,EAAkB,EAAE,WAAW,EAAE,OAAO;MAAE;MAAM;MAAQ,EAAE,EAAE,CAAC;;cAJtE;KAOE,kBAAC,SAAD;MACE,WAAU;MACV,OAAO;MACP,WAAW,MAAU,EAAQ,EAAM,OAAO,MAAM;MAChD,aAAY;MACZ,CAAA;KACF,kBAAC,SAAD;MACE,WAAU;MACV,OAAO;MACP,WAAW,MAAU,EAAU,EAAM,OAAO,MAAM;MAClD,aAAY;MACZ,CAAA;KACF,kBAAC,UAAD;MACE,WAAU;MACV,UAAU;MACV,MAAK;gBAEJ,IAAW,gBAAgB;MACrB,CAAA;KACJ;;GACP,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,QAAD,EAAA,UAAM,QAAW,CAAA;OACjB,kBAAC,QAAD,EAAA,UAAM,UAAa,CAAA;OACnB,kBAAC,QAAD,EAAA,UAAM,UAAa,CAAA;OACnB,kBAAC,QAAD,EAAA,UAAM,cAAiB,CAAA;OACvB,kBAAC,QAAD,EAAA,UAAM,WAAc,CAAA;OAChB;;KACL,KAAW,EAAK,WAAW,IAC1B,kBAAC,OAAD;MAAK,WAAU;gBAA0C;MAAqB,CAAA,GAC5E;KACH,CAAC,KAAW,EAAK,WAAW,IAC3B,kBAAC,OAAD;MAAK,WAAU;gBAA0C;MAA8B,CAAA,GACrF;KACH,EAAK,KAAK,MACT,kBAAC,OAAD;MAEE,WAAU;gBAFZ;OAIE,kBAAC,QAAD;QAAM,WAAU;kBAAe,EAAI;QAAY,CAAA;OAC/C,kBAAC,QAAD,EAAA,UAAO,EAAI,QAAc,CAAA;OACzB,kBAAC,QAAD,EAAA,UAAO,EAAI,QAAc,CAAA;OACzB,kBAAC,QAAD,EAAA,UAAO,EAAI,kBAAwB,CAAA;OACnC,kBAAC,QAAD;QAAM,WAAU;kBACb,EAAI,YAAY,IAAI,KAAK,EAAI,UAAU,CAAC,gBAAgB,GAAG;QACvD,CAAA;OACH;QAVC,EAAI,GAUL,CACN;KACE;;GACF"}
@@ -0,0 +1,2 @@
1
+ export declare function EsgDashboardPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=EsgDashboardPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EsgDashboardPage.d.ts","sourceRoot":"","sources":["../../../src/assethandler/pages/EsgDashboardPage.tsx"],"names":[],"mappings":"AA8BA,wBAAgB,gBAAgB,4CAsG/B"}