@burdenoff/microfe-assethandler 2026.707.2 → 2026.713.1

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 (190) hide show
  1. package/dist/assethandler/AssetHandlerRoot.d.ts +5 -0
  2. package/dist/assethandler/AssetHandlerRoot.d.ts.map +1 -0
  3. package/dist/assethandler/AssetHandlerRoot.js +16 -8
  4. package/dist/assethandler/AssetHandlerRoot.js.map +1 -1
  5. package/dist/assethandler/AssetHandlerRoutes.d.ts +2 -0
  6. package/dist/assethandler/AssetHandlerRoutes.d.ts.map +1 -0
  7. package/dist/assethandler/components/ActivityTimeline.d.ts +16 -0
  8. package/dist/assethandler/components/ActivityTimeline.d.ts.map +1 -0
  9. package/dist/assethandler/components/AttachmentsPanel.d.ts +17 -0
  10. package/dist/assethandler/components/AttachmentsPanel.d.ts.map +1 -0
  11. package/dist/assethandler/components/ChartCard.d.ts +32 -0
  12. package/dist/assethandler/components/ChartCard.d.ts.map +1 -0
  13. package/dist/assethandler/components/CommentsPanel.d.ts +14 -0
  14. package/dist/assethandler/components/CommentsPanel.d.ts.map +1 -0
  15. package/dist/assethandler/components/ListEmptyState.d.ts +23 -0
  16. package/dist/assethandler/components/ListEmptyState.d.ts.map +1 -0
  17. package/dist/assethandler/components/NotFoundState.d.ts +24 -0
  18. package/dist/assethandler/components/NotFoundState.d.ts.map +1 -0
  19. package/dist/assethandler/components/Pagination.d.ts +58 -0
  20. package/dist/assethandler/components/Pagination.d.ts.map +1 -0
  21. package/dist/assethandler/components/SectionHeader.d.ts +27 -0
  22. package/dist/assethandler/components/SectionHeader.d.ts.map +1 -0
  23. package/dist/assethandler/components/StatTile.d.ts +42 -0
  24. package/dist/assethandler/components/StatTile.d.ts.map +1 -0
  25. package/dist/assethandler/components/charts/BarsChart.d.ts +39 -0
  26. package/dist/assethandler/components/charts/BarsChart.d.ts.map +1 -0
  27. package/dist/assethandler/components/charts/ChartParts.d.ts +86 -0
  28. package/dist/assethandler/components/charts/ChartParts.d.ts.map +1 -0
  29. package/dist/assethandler/components/charts/DonutChart.d.ts +34 -0
  30. package/dist/assethandler/components/charts/DonutChart.d.ts.map +1 -0
  31. package/dist/assethandler/components/charts/ProgressMeter.d.ts +40 -0
  32. package/dist/assethandler/components/charts/ProgressMeter.d.ts.map +1 -0
  33. package/dist/assethandler/components/charts/RadialGauge.d.ts +44 -0
  34. package/dist/assethandler/components/charts/RadialGauge.d.ts.map +1 -0
  35. package/dist/assethandler/components/charts/Sparkline.d.ts +25 -0
  36. package/dist/assethandler/components/charts/Sparkline.d.ts.map +1 -0
  37. package/dist/assethandler/components/charts/TrendChart.d.ts +37 -0
  38. package/dist/assethandler/components/charts/TrendChart.d.ts.map +1 -0
  39. package/dist/assethandler/components/charts/chartTheme.d.ts +95 -0
  40. package/dist/assethandler/components/charts/chartTheme.d.ts.map +1 -0
  41. package/dist/assethandler/components/charts/index.d.ts +65 -0
  42. package/dist/assethandler/components/charts/index.d.ts.map +1 -0
  43. package/dist/assethandler/components/index.d.ts +20 -0
  44. package/dist/assethandler/components/index.d.ts.map +1 -0
  45. package/dist/assethandler/hooks/useAssetHandlerNavigate.d.ts +19 -0
  46. package/dist/assethandler/hooks/useAssetHandlerNavigate.d.ts.map +1 -0
  47. package/dist/assethandler/index.d.ts +5 -0
  48. package/dist/assethandler/index.d.ts.map +1 -0
  49. package/dist/assethandler/ops/NewWorkOrderDialog.d.ts +5 -0
  50. package/dist/assethandler/ops/NewWorkOrderDialog.d.ts.map +1 -0
  51. package/dist/assethandler/ops/ScheduleMaintenanceDialog.d.ts +5 -0
  52. package/dist/assethandler/ops/ScheduleMaintenanceDialog.d.ts.map +1 -0
  53. package/dist/assethandler/pages/AiPredictionsPage.d.ts +4 -0
  54. package/dist/assethandler/pages/AiPredictionsPage.d.ts.map +1 -0
  55. package/dist/assethandler/pages/AnalyticsPage.d.ts +2 -0
  56. package/dist/assethandler/pages/AnalyticsPage.d.ts.map +1 -0
  57. package/dist/assethandler/pages/AssetsAssetCategoriesPage.d.ts +2 -0
  58. package/dist/assethandler/pages/AssetsAssetCategoriesPage.d.ts.map +1 -0
  59. package/dist/assethandler/pages/AssetsAssetCategoriesPage.js +144 -137
  60. package/dist/assethandler/pages/AssetsAssetCategoriesPage.js.map +1 -1
  61. package/dist/assethandler/pages/AssetsAssetCheckInOutPage.d.ts +2 -0
  62. package/dist/assethandler/pages/AssetsAssetCheckInOutPage.d.ts.map +1 -0
  63. package/dist/assethandler/pages/AssetsAssetCreatePage.d.ts +2 -0
  64. package/dist/assethandler/pages/AssetsAssetCreatePage.d.ts.map +1 -0
  65. package/dist/assethandler/pages/AssetsAssetCreatePage.js +202 -201
  66. package/dist/assethandler/pages/AssetsAssetCreatePage.js.map +1 -1
  67. package/dist/assethandler/pages/AssetsAssetDetailPage.d.ts +4 -0
  68. package/dist/assethandler/pages/AssetsAssetDetailPage.d.ts.map +1 -0
  69. package/dist/assethandler/pages/AssetsAssetListPage.d.ts +2 -0
  70. package/dist/assethandler/pages/AssetsAssetListPage.d.ts.map +1 -0
  71. package/dist/assethandler/pages/AssetsAssetListPage.js +135 -132
  72. package/dist/assethandler/pages/AssetsAssetListPage.js.map +1 -1
  73. package/dist/assethandler/pages/AssetsAssetTrackingPage.d.ts +2 -0
  74. package/dist/assethandler/pages/AssetsAssetTrackingPage.d.ts.map +1 -0
  75. package/dist/assethandler/pages/CmdbBrowserPage.d.ts +2 -0
  76. package/dist/assethandler/pages/CmdbBrowserPage.d.ts.map +1 -0
  77. package/dist/assethandler/pages/DashboardPage.d.ts +2 -0
  78. package/dist/assethandler/pages/DashboardPage.d.ts.map +1 -0
  79. package/dist/assethandler/pages/DigitalTwinPage.d.ts +2 -0
  80. package/dist/assethandler/pages/DigitalTwinPage.d.ts.map +1 -0
  81. package/dist/assethandler/pages/DiscoveryJobsPage.d.ts +4 -0
  82. package/dist/assethandler/pages/DiscoveryJobsPage.d.ts.map +1 -0
  83. package/dist/assethandler/pages/EsgDashboardPage.d.ts +4 -0
  84. package/dist/assethandler/pages/EsgDashboardPage.d.ts.map +1 -0
  85. package/dist/assethandler/pages/FinanceBudgetDetailPage.d.ts +2 -0
  86. package/dist/assethandler/pages/FinanceBudgetDetailPage.d.ts.map +1 -0
  87. package/dist/assethandler/pages/FinanceFinanceHubPage.d.ts +2 -0
  88. package/dist/assethandler/pages/FinanceFinanceHubPage.d.ts.map +1 -0
  89. package/dist/assethandler/pages/FinanceInvoiceDetailPage.d.ts +2 -0
  90. package/dist/assethandler/pages/FinanceInvoiceDetailPage.d.ts.map +1 -0
  91. package/dist/assethandler/pages/IotDevicesPage.d.ts +2 -0
  92. package/dist/assethandler/pages/IotDevicesPage.d.ts.map +1 -0
  93. package/dist/assethandler/pages/ItilChangeDetailPage.d.ts +2 -0
  94. package/dist/assethandler/pages/ItilChangeDetailPage.d.ts.map +1 -0
  95. package/dist/assethandler/pages/ItilChangeManagementPage.d.ts +2 -0
  96. package/dist/assethandler/pages/ItilChangeManagementPage.d.ts.map +1 -0
  97. package/dist/assethandler/pages/ItilDialogs.d.ts +9 -0
  98. package/dist/assethandler/pages/ItilDialogs.d.ts.map +1 -0
  99. package/dist/assethandler/pages/ItilIncidentDetailPage.d.ts +4 -0
  100. package/dist/assethandler/pages/ItilIncidentDetailPage.d.ts.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/ItilItilhubPage.d.ts +2 -0
  104. package/dist/assethandler/pages/ItilItilhubPage.d.ts.map +1 -0
  105. package/dist/assethandler/pages/ItilProblemDetailPage.d.ts +2 -0
  106. package/dist/assethandler/pages/ItilProblemDetailPage.d.ts.map +1 -0
  107. package/dist/assethandler/pages/ItilProblemManagementPage.d.ts +2 -0
  108. package/dist/assethandler/pages/ItilProblemManagementPage.d.ts.map +1 -0
  109. package/dist/assethandler/pages/KnowledgeBasePage.d.ts +2 -0
  110. package/dist/assethandler/pages/KnowledgeBasePage.d.ts.map +1 -0
  111. package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.d.ts +2 -0
  112. package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.d.ts.map +1 -0
  113. package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.d.ts +2 -0
  114. package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.d.ts.map +1 -0
  115. package/dist/assethandler/pages/OperationsMaintenanceDetailPage.d.ts +2 -0
  116. package/dist/assethandler/pages/OperationsMaintenanceDetailPage.d.ts.map +1 -0
  117. package/dist/assethandler/pages/OperationsOperationsHubPage.d.ts +2 -0
  118. package/dist/assethandler/pages/OperationsOperationsHubPage.d.ts.map +1 -0
  119. package/dist/assethandler/pages/OperationsWorkOrderDetailPage.d.ts +2 -0
  120. package/dist/assethandler/pages/OperationsWorkOrderDetailPage.d.ts.map +1 -0
  121. package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.d.ts +2 -0
  122. package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.d.ts.map +1 -0
  123. package/dist/assethandler/pages/ProvenancePage.d.ts +4 -0
  124. package/dist/assethandler/pages/ProvenancePage.d.ts.map +1 -0
  125. package/dist/assethandler/pages/ReportsDashboardPage.d.ts +2 -0
  126. package/dist/assethandler/pages/ReportsDashboardPage.d.ts.map +1 -0
  127. package/dist/assethandler/pages/SamLicensesPage.d.ts +2 -0
  128. package/dist/assethandler/pages/SamLicensesPage.d.ts.map +1 -0
  129. package/dist/assethandler/pages/SecurityComplianceDetailPage.d.ts +2 -0
  130. package/dist/assethandler/pages/SecurityComplianceDetailPage.d.ts.map +1 -0
  131. package/dist/assethandler/pages/SecurityPolicyDetailPage.d.ts +4 -0
  132. package/dist/assethandler/pages/SecurityPolicyDetailPage.d.ts.map +1 -0
  133. package/dist/assethandler/pages/SecuritySecurityEventDetailPage.d.ts +2 -0
  134. package/dist/assethandler/pages/SecuritySecurityEventDetailPage.d.ts.map +1 -0
  135. package/dist/assethandler/pages/SecuritySecurityHubPage.d.ts +2 -0
  136. package/dist/assethandler/pages/SecuritySecurityHubPage.d.ts.map +1 -0
  137. package/dist/assethandler/pages/TransactionsTransactionDetailPage.d.ts +2 -0
  138. package/dist/assethandler/pages/TransactionsTransactionDetailPage.d.ts.map +1 -0
  139. package/dist/assethandler/pages/TransactionsTransactionListPage.d.ts +2 -0
  140. package/dist/assethandler/pages/TransactionsTransactionListPage.d.ts.map +1 -0
  141. package/dist/assethandler/providers/AssetHandlerProvider.d.ts +20 -0
  142. package/dist/assethandler/providers/AssetHandlerProvider.d.ts.map +1 -0
  143. package/dist/assethandler/providers/AssetHandlerProvider.js +14 -2
  144. package/dist/assethandler/providers/AssetHandlerProvider.js.map +1 -1
  145. package/dist/assethandler/store/assethandlerStore.d.ts +429 -0
  146. package/dist/assethandler/store/assethandlerStore.d.ts.map +1 -0
  147. package/dist/assethandler/types/index.d.ts +88 -0
  148. package/dist/assethandler/types/index.d.ts.map +1 -0
  149. package/dist/assethandler/utils/cn.d.ts +4 -0
  150. package/dist/assethandler/utils/cn.d.ts.map +1 -0
  151. package/dist/assethandler/utils/csv.d.ts +9 -0
  152. package/dist/assethandler/utils/csv.d.ts.map +1 -0
  153. package/dist/assethandler/utils/i18n.d.ts +6 -0
  154. package/dist/assethandler/utils/i18n.d.ts.map +1 -0
  155. package/dist/assethandler/utils/navigation.d.ts +2 -0
  156. package/dist/assethandler/utils/navigation.d.ts.map +1 -0
  157. package/dist/assethandler/utils/toast.d.ts +17 -0
  158. package/dist/assethandler/utils/toast.d.ts.map +1 -0
  159. package/dist/config/assistantUsecases.d.ts +18 -0
  160. package/dist/config/assistantUsecases.d.ts.map +1 -0
  161. package/dist/dev/main.d.ts +2 -0
  162. package/dist/dev/main.d.ts.map +1 -0
  163. package/dist/generated/global-operations.d.ts +2 -0
  164. package/dist/generated/global-operations.d.ts.map +1 -0
  165. package/dist/generated/global-types.d.ts +23527 -0
  166. package/dist/generated/global-types.d.ts.map +1 -0
  167. package/dist/generated/wspace-operations.d.ts +483 -0
  168. package/dist/generated/wspace-operations.d.ts.map +1 -0
  169. package/dist/generated/wspace-operations.js +255 -0
  170. package/dist/generated/wspace-operations.js.map +1 -0
  171. package/dist/generated/wspace-types.d.ts +49832 -0
  172. package/dist/generated/wspace-types.d.ts.map +1 -0
  173. package/dist/index.d.ts +4 -0
  174. package/dist/index.d.ts.map +1 -0
  175. package/dist/index.js +2 -1
  176. package/dist/services/assistantApi.d.ts +71 -0
  177. package/dist/services/assistantApi.d.ts.map +1 -0
  178. package/dist/services/assistantApi.js +215 -0
  179. package/dist/services/assistantApi.js.map +1 -0
  180. package/dist/services/createSandboxAssistantTransport.d.ts +42 -0
  181. package/dist/services/createSandboxAssistantTransport.d.ts.map +1 -0
  182. package/dist/services/createSandboxAssistantTransport.js +120 -0
  183. package/dist/services/createSandboxAssistantTransport.js.map +1 -0
  184. package/dist/types/assistant.d.ts +58 -0
  185. package/dist/types/assistant.d.ts.map +1 -0
  186. package/dist/utils/pageContext.d.ts +25 -0
  187. package/dist/utils/pageContext.d.ts.map +1 -0
  188. package/dist/utils/pageContext.js +60 -0
  189. package/dist/utils/pageContext.js.map +1 -0
  190. package/package.json +5 -1
@@ -0,0 +1,5 @@
1
+ import { FC } from 'react';
2
+ import { AssetHandlerRootProps } from './types';
3
+
4
+ export declare const AssetHandlerRoot: FC<AssetHandlerRootProps>;
5
+ //# sourceMappingURL=AssetHandlerRoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssetHandlerRoot.d.ts","sourceRoot":"","sources":["../../src/assethandler/AssetHandlerRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAgBhC,OAAO,KAAK,EAAE,qBAAqB,EAAW,MAAM,SAAS,CAAC;AAG9D,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CA0JtD,CAAC"}
@@ -7,11 +7,12 @@ import { jsx as f } from "react/jsx-runtime";
7
7
  import { FeatureFlagProvider as p } from "@burdenoff/fe-libs/shared/feature-flags";
8
8
  //#region src/assethandler/AssetHandlerRoot.tsx
9
9
  var m = (m) => {
10
- let { registerNavItems: h, registerFooterItems: g, basePath: _ = "/" } = m;
10
+ let { registerNavItems: h, registerFooterItems: g, basePath: _ = "/", brandLabel: v = "AssetHandler", terminology: y, hiddenCategoryIds: b } = m, x = y?.assets || "Assets";
11
11
  return r(() => {
12
- if (h) return h({
12
+ if (!h) return;
13
+ let e = new Set(b ?? []), n = (t) => e.has(t.replace(/^assethandler-/, "")), r = {
13
14
  id: "assethandler",
14
- label: "AssetHandler",
15
+ label: v,
15
16
  path: _,
16
17
  icon: /* @__PURE__ */ f(i, { size: 20 }),
17
18
  order: 82,
@@ -25,7 +26,7 @@ var m = (m) => {
25
26
  },
26
27
  {
27
28
  id: "assethandler-assets",
28
- label: "Assets",
29
+ label: x,
29
30
  path: t(_, "assets/asset-list"),
30
31
  order: 1
31
32
  },
@@ -110,16 +111,23 @@ var m = (m) => {
110
111
  order: 17
111
112
  }
112
113
  ]
113
- });
114
- }, [_, h]), r(() => {
114
+ };
115
+ return r.children &&= r.children.filter((e) => !n(e.id)), h(r);
116
+ }, [
117
+ _,
118
+ h,
119
+ v,
120
+ x,
121
+ b
122
+ ]), r(() => {
115
123
  if (g) return g([{
116
124
  id: "assethandler-status",
117
- label: "AssetHandler Live",
125
+ label: `${v} Live`,
118
126
  type: "status",
119
127
  section: "left",
120
128
  order: 10
121
129
  }]);
122
- }, [g]), /* @__PURE__ */ f(p, {
130
+ }, [g, v]), /* @__PURE__ */ f(p, {
123
131
  workspaceId: null,
124
132
  gateway: "global",
125
133
  defaultEnabled: !0,
@@ -1 +1 @@
1
- {"version":3,"file":"AssetHandlerRoot.js","names":[],"sources":["../../src/assethandler/AssetHandlerRoot.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useEffect } from 'react';\nimport {\n BrainCircuit,\n Boxes,\n Cpu,\n KeyRound,\n Leaf,\n Network,\n Radar,\n ShieldCheck,\n} from 'lucide-react';\n\nimport { AssetHandlerRoutes } from './AssetHandlerRoutes';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { AssetHandlerProvider } from './providers/AssetHandlerProvider';\nimport type { AssetHandlerRootProps, NavItem } from './types';\nimport { joinPath } from './utils/navigation';\n\nexport const AssetHandlerRoot: FC<AssetHandlerRootProps> = (props) => {\n const { registerNavItems, registerFooterItems, basePath = '/' } = props;\n\n useEffect(() => {\n if (!registerNavItems) {\n return;\n }\n\n const navItem: NavItem = {\n id: 'assethandler',\n label: 'AssetHandler',\n path: basePath,\n icon: <Boxes size={20} />,\n order: 82,\n group: 'products',\n children: [\n {\n id: 'assethandler-dashboard',\n label: 'Dashboard',\n path: basePath,\n order: 0,\n },\n {\n id: 'assethandler-assets',\n label: 'Assets',\n path: joinPath(basePath, 'assets/asset-list'),\n order: 1,\n },\n {\n id: 'assethandler-operations',\n label: 'Operations',\n path: joinPath(basePath, 'operations/operations-hub'),\n order: 2,\n },\n {\n id: 'assethandler-itil',\n label: 'ITIL',\n path: joinPath(basePath, 'itil/itilhub'),\n order: 3,\n },\n {\n id: 'assethandler-finance',\n label: 'Finance',\n path: joinPath(basePath, 'finance/finance-hub'),\n order: 4,\n },\n {\n id: 'assethandler-security',\n label: 'Security',\n path: joinPath(basePath, 'security/security-hub'),\n order: 7,\n },\n {\n id: 'assethandler-iot',\n label: 'IoT Devices',\n path: joinPath(basePath, 'advanced/iot-devices'),\n icon: <Cpu size={16} />,\n order: 10,\n },\n {\n id: 'assethandler-digital-twin',\n label: 'Digital Twin',\n path: joinPath(basePath, 'advanced/digital-twin'),\n icon: <Boxes size={16} />,\n order: 11,\n },\n {\n id: 'assethandler-sam',\n label: 'SAM',\n path: joinPath(basePath, 'advanced/sam-licenses'),\n icon: <KeyRound size={16} />,\n order: 12,\n },\n {\n id: 'assethandler-cmdb',\n label: 'CMDB',\n path: joinPath(basePath, 'advanced/cmdb-browser'),\n icon: <Network size={16} />,\n order: 13,\n },\n {\n id: 'assethandler-discovery',\n label: 'Discovery',\n path: joinPath(basePath, 'advanced/discovery-jobs'),\n icon: <Radar size={16} />,\n order: 14,\n },\n {\n id: 'assethandler-provenance',\n label: 'Provenance',\n path: joinPath(basePath, 'advanced/provenance'),\n icon: <ShieldCheck size={16} />,\n order: 15,\n },\n {\n id: 'assethandler-esg',\n label: 'ESG',\n path: joinPath(basePath, 'advanced/esg-dashboard'),\n icon: <Leaf size={16} />,\n order: 16,\n },\n {\n id: 'assethandler-ai',\n label: 'AI Predictions',\n path: joinPath(basePath, 'advanced/ai-predictions'),\n icon: <BrainCircuit size={16} />,\n order: 17,\n },\n ],\n };\n\n return registerNavItems(navItem);\n }, [basePath, registerNavItems]);\n\n useEffect(() => {\n if (!registerFooterItems) {\n return;\n }\n\n return registerFooterItems([\n {\n id: 'assethandler-status',\n label: 'AssetHandler Live',\n type: 'status',\n section: 'left',\n order: 10,\n },\n ]);\n }, [registerFooterItems]);\n\n return (\n <FeatureFlagProvider workspaceId={null} gateway=\"global\" defaultEnabled={true}>\n <AssetHandlerProvider {...props}>\n <AssetHandlerRoutes />\n </AssetHandlerProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":";;;;;;;;AAmBA,IAAa,KAA+C,MAAU;CACpE,IAAM,EAAE,qBAAkB,wBAAqB,cAAW,QAAQ;AAiIlE,QA/HA,QAAgB;AACT,QA2GL,QAAO,EAvGkB;GACvB,IAAI;GACJ,OAAO;GACP,MAAM;GACN,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;GACzB,OAAO;GACP,OAAO;GACP,UAAU;IACR;KACE,IAAI;KACJ,OAAO;KACP,MAAM;KACN,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,oBAAoB;KAC7C,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,4BAA4B;KACrD,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,eAAe;KACxC,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,sBAAsB;KAC/C,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,wBAAwB;KACjD,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,uBAAuB;KAChD,MAAM,kBAAC,GAAD,EAAK,MAAM,IAAM,CAAA;KACvB,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,wBAAwB;KACjD,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;KACzB,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,wBAAwB;KACjD,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;KAC5B,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,wBAAwB;KACjD,MAAM,kBAAC,GAAD,EAAS,MAAM,IAAM,CAAA;KAC3B,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,0BAA0B;KACnD,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;KACzB,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,sBAAsB;KAC/C,MAAM,kBAAC,GAAD,EAAa,MAAM,IAAM,CAAA;KAC/B,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,yBAAyB;KAClD,MAAM,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;KACxB,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,0BAA0B;KACnD,MAAM,kBAAC,GAAD,EAAc,MAAM,IAAM,CAAA;KAChC,OAAO;KACR;IACF;GACF,CAE+B;IAC/B,CAAC,GAAU,EAAiB,CAAC,EAEhC,QAAgB;AACT,QAIL,QAAO,EAAoB,CACzB;GACE,IAAI;GACJ,OAAO;GACP,MAAM;GACN,SAAS;GACT,OAAO;GACR,CACF,CAAC;IACD,CAAC,EAAoB,CAAC,EAGvB,kBAAC,GAAD;EAAqB,aAAa;EAAM,SAAQ;EAAS,gBAAgB;YACvE,kBAAC,GAAD;GAAsB,GAAI;aACxB,kBAAC,GAAD,EAAsB,CAAA;GACD,CAAA;EACH,CAAA"}
1
+ {"version":3,"file":"AssetHandlerRoot.js","names":[],"sources":["../../src/assethandler/AssetHandlerRoot.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useEffect } from 'react';\nimport {\n BrainCircuit,\n Boxes,\n Cpu,\n KeyRound,\n Leaf,\n Network,\n Radar,\n ShieldCheck,\n} from 'lucide-react';\n\nimport { AssetHandlerRoutes } from './AssetHandlerRoutes';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { AssetHandlerProvider } from './providers/AssetHandlerProvider';\nimport type { AssetHandlerRootProps, NavItem } from './types';\nimport { joinPath } from './utils/navigation';\n\nexport const AssetHandlerRoot: FC<AssetHandlerRootProps> = (props) => {\n const {\n registerNavItems,\n registerFooterItems,\n basePath = '/',\n brandLabel = 'AssetHandler',\n terminology,\n hiddenCategoryIds,\n } = props;\n const assetsLabel = terminology?.assets || 'Assets';\n\n useEffect(() => {\n if (!registerNavItems) {\n return;\n }\n\n // Consumers can hide advanced (IT-specific) nav children by passing their\n // id with the \"assethandler-\" prefix stripped, e.g. \"digital-twin\".\n const hidden = new Set(hiddenCategoryIds ?? []);\n const isHidden = (id: string) => hidden.has(id.replace(/^assethandler-/, ''));\n\n const navItem: NavItem = {\n id: 'assethandler',\n label: brandLabel,\n path: basePath,\n icon: <Boxes size={20} />,\n order: 82,\n group: 'products',\n children: [\n {\n id: 'assethandler-dashboard',\n label: 'Dashboard',\n path: basePath,\n order: 0,\n },\n {\n id: 'assethandler-assets',\n label: assetsLabel,\n path: joinPath(basePath, 'assets/asset-list'),\n order: 1,\n },\n {\n id: 'assethandler-operations',\n label: 'Operations',\n path: joinPath(basePath, 'operations/operations-hub'),\n order: 2,\n },\n {\n id: 'assethandler-itil',\n label: 'ITIL',\n path: joinPath(basePath, 'itil/itilhub'),\n order: 3,\n },\n {\n id: 'assethandler-finance',\n label: 'Finance',\n path: joinPath(basePath, 'finance/finance-hub'),\n order: 4,\n },\n {\n id: 'assethandler-security',\n label: 'Security',\n path: joinPath(basePath, 'security/security-hub'),\n order: 7,\n },\n {\n id: 'assethandler-iot',\n label: 'IoT Devices',\n path: joinPath(basePath, 'advanced/iot-devices'),\n icon: <Cpu size={16} />,\n order: 10,\n },\n {\n id: 'assethandler-digital-twin',\n label: 'Digital Twin',\n path: joinPath(basePath, 'advanced/digital-twin'),\n icon: <Boxes size={16} />,\n order: 11,\n },\n {\n id: 'assethandler-sam',\n label: 'SAM',\n path: joinPath(basePath, 'advanced/sam-licenses'),\n icon: <KeyRound size={16} />,\n order: 12,\n },\n {\n id: 'assethandler-cmdb',\n label: 'CMDB',\n path: joinPath(basePath, 'advanced/cmdb-browser'),\n icon: <Network size={16} />,\n order: 13,\n },\n {\n id: 'assethandler-discovery',\n label: 'Discovery',\n path: joinPath(basePath, 'advanced/discovery-jobs'),\n icon: <Radar size={16} />,\n order: 14,\n },\n {\n id: 'assethandler-provenance',\n label: 'Provenance',\n path: joinPath(basePath, 'advanced/provenance'),\n icon: <ShieldCheck size={16} />,\n order: 15,\n },\n {\n id: 'assethandler-esg',\n label: 'ESG',\n path: joinPath(basePath, 'advanced/esg-dashboard'),\n icon: <Leaf size={16} />,\n order: 16,\n },\n {\n id: 'assethandler-ai',\n label: 'AI Predictions',\n path: joinPath(basePath, 'advanced/ai-predictions'),\n icon: <BrainCircuit size={16} />,\n order: 17,\n },\n ],\n };\n\n if (navItem.children) {\n navItem.children = navItem.children.filter((child) => !isHidden(child.id));\n }\n\n return registerNavItems(navItem);\n }, [basePath, registerNavItems, brandLabel, assetsLabel, hiddenCategoryIds]);\n\n useEffect(() => {\n if (!registerFooterItems) {\n return;\n }\n\n return registerFooterItems([\n {\n id: 'assethandler-status',\n label: `${brandLabel} Live`,\n type: 'status',\n section: 'left',\n order: 10,\n },\n ]);\n }, [registerFooterItems, brandLabel]);\n\n return (\n <FeatureFlagProvider workspaceId={null} gateway=\"global\" defaultEnabled={true}>\n <AssetHandlerProvider {...props}>\n <AssetHandlerRoutes />\n </AssetHandlerProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":";;;;;;;;AAmBA,IAAa,KAA+C,MAAU;CACpE,IAAM,EACJ,qBACA,wBACA,cAAW,KACX,gBAAa,gBACb,gBACA,yBACE,GACE,IAAc,GAAa,UAAU;AA0I3C,QAxIA,QAAgB;AACd,MAAI,CAAC,EACH;EAKF,IAAM,IAAS,IAAI,IAAI,KAAqB,EAAE,CAAC,EACzC,KAAY,MAAe,EAAO,IAAI,EAAG,QAAQ,kBAAkB,GAAG,CAAC,EAEvE,IAAmB;GACvB,IAAI;GACJ,OAAO;GACP,MAAM;GACN,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;GACzB,OAAO;GACP,OAAO;GACP,UAAU;IACR;KACE,IAAI;KACJ,OAAO;KACP,MAAM;KACN,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,oBAAoB;KAC7C,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,4BAA4B;KACrD,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,eAAe;KACxC,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,sBAAsB;KAC/C,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,wBAAwB;KACjD,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,uBAAuB;KAChD,MAAM,kBAAC,GAAD,EAAK,MAAM,IAAM,CAAA;KACvB,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,wBAAwB;KACjD,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;KACzB,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,wBAAwB;KACjD,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;KAC5B,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,wBAAwB;KACjD,MAAM,kBAAC,GAAD,EAAS,MAAM,IAAM,CAAA;KAC3B,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,0BAA0B;KACnD,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;KACzB,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,sBAAsB;KAC/C,MAAM,kBAAC,GAAD,EAAa,MAAM,IAAM,CAAA;KAC/B,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,yBAAyB;KAClD,MAAM,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;KACxB,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO;KACP,MAAM,EAAS,GAAU,0BAA0B;KACnD,MAAM,kBAAC,GAAD,EAAc,MAAM,IAAM,CAAA;KAChC,OAAO;KACR;IACF;GACF;AAMD,SAJA,AACE,EAAQ,aAAW,EAAQ,SAAS,QAAQ,MAAU,CAAC,EAAS,EAAM,GAAG,CAAC,EAGrE,EAAiB,EAAQ;IAC/B;EAAC;EAAU;EAAkB;EAAY;EAAa;EAAkB,CAAC,EAE5E,QAAgB;AACT,QAIL,QAAO,EAAoB,CACzB;GACE,IAAI;GACJ,OAAO,GAAG,EAAW;GACrB,MAAM;GACN,SAAS;GACT,OAAO;GACR,CACF,CAAC;IACD,CAAC,GAAqB,EAAW,CAAC,EAGnC,kBAAC,GAAD;EAAqB,aAAa;EAAM,SAAQ;EAAS,gBAAgB;YACvE,kBAAC,GAAD;GAAsB,GAAI;aACxB,kBAAC,GAAD,EAAsB,CAAA;GACD,CAAA;EACH,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function AssetHandlerRoutes(): import("react").JSX.Element;
2
+ //# sourceMappingURL=AssetHandlerRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssetHandlerRoutes.d.ts","sourceRoot":"","sources":["../../src/assethandler/AssetHandlerRoutes.tsx"],"names":[],"mappings":"AA+JA,wBAAgB,kBAAkB,gCA6DjC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Recent activity for a single AssetHandler resource, sourced from the
3
+ * federated wspace-activity-svc `getActivities` query (fed by be-sdk
4
+ * `trackOperation` on the backend). Read-only, with a graceful empty state.
5
+ *
6
+ * The header carries an activity-volume sparkline bucketed from the real
7
+ * timestamps — it only renders when there is enough history to be meaningful,
8
+ * never fabricated.
9
+ */
10
+ export interface ActivityTimelineProps {
11
+ resourceId: string;
12
+ /** Optional cap on rows shown. Defaults to 20. */
13
+ limit?: number;
14
+ }
15
+ export declare function ActivityTimeline({ resourceId, limit }: ActivityTimelineProps): import("react").JSX.Element;
16
+ //# sourceMappingURL=ActivityTimeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityTimeline.d.ts","sourceRoot":"","sources":["../../../src/assethandler/components/ActivityTimeline.tsx"],"names":[],"mappings":"AA2BA;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA+ED,wBAAgB,gBAAgB,CAAC,EAAE,UAAU,EAAE,KAAU,EAAE,EAAE,qBAAqB,+BA0IjF"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Attach and reference files for an AssetHandler entity, backed by the
3
+ * federated wspace-files-svc (same wspace gateway/Apollo client). Fully real (no fabricated data) —
4
+ * lists workspace files via `getFiles`, uploads new files through the
5
+ * `initiateUpload` → presigned PUT → `completeUpload` flow, and mints public
6
+ * share links via `createFileShareLink`. All entries are live data.
7
+ *
8
+ * `entityType`/`entityId` scope the panel to the record it is mounted on and
9
+ * are used for context labelling; uploaded files land in the workspace file
10
+ * store so they can be shared and reused.
11
+ */
12
+ export interface AttachmentsPanelProps {
13
+ entityType: string;
14
+ entityId: string;
15
+ }
16
+ export declare function AttachmentsPanel({ entityType, entityId }: AttachmentsPanelProps): import("react").JSX.Element;
17
+ //# sourceMappingURL=AttachmentsPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttachmentsPanel.d.ts","sourceRoot":"","sources":["../../../src/assethandler/components/AttachmentsPanel.tsx"],"names":[],"mappings":"AAiCA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA2ND,wBAAgB,gBAAgB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,qBAAqB,+BAmP/E"}
@@ -0,0 +1,32 @@
1
+ import { ComponentType, ReactNode } from 'react';
2
+
3
+ export interface ChartCardProps {
4
+ /** Card title (left of the header). */
5
+ title: ReactNode;
6
+ /** Optional supporting line under the title. */
7
+ subtitle?: ReactNode;
8
+ /** Optional controls rendered on the right of the header (toggles, menus). */
9
+ actions?: ReactNode;
10
+ /** Optional leading icon beside the title. */
11
+ icon?: ComponentType<{
12
+ className?: string;
13
+ }>;
14
+ /**
15
+ * Render as the page's single hero surface (`EmphasisPanel`) instead of a
16
+ * `GlassCard`. Use at most one per page.
17
+ */
18
+ emphasis?: boolean;
19
+ /** Optional footer row under the body. */
20
+ footer?: ReactNode;
21
+ /** Extra classes for the body wrapper (e.g. spacing around the chart). */
22
+ bodyClassName?: string;
23
+ className?: string;
24
+ children: ReactNode;
25
+ }
26
+ /**
27
+ * ChartCard — a GlassCard/EmphasisPanel wrapper with a proper header (title,
28
+ * subtitle, right-aligned actions) for charts and metric panels. Keeps chart
29
+ * sections visually consistent with the rest of the AssetHandler surfaces.
30
+ */
31
+ export declare function ChartCard({ title, subtitle, actions, icon: Icon, emphasis, footer, bodyClassName, className, children, }: ChartCardProps): import("react").JSX.Element;
32
+ //# sourceMappingURL=ChartCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartCard.d.ts","sourceRoot":"","sources":["../../../src/assethandler/components/ChartCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAItD,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,KAAK,EAAE,SAAS,CAAC;IACjB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,OAAO,EACP,IAAI,EAAE,IAAI,EACV,QAAgB,EAChB,MAAM,EACN,aAAa,EACb,SAAS,EACT,QAAQ,GACT,EAAE,cAAc,+BA+BhB"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Discussion thread for any AssetHandler entity, backed by the federated
3
+ * wspace-conversations-svc `EntityComment` graph (same wspace gateway/Apollo
4
+ * client). Real create/reply/edit/delete + list; all entries are live data.
5
+ *
6
+ * `entityType` is the conversations-svc discriminator, e.g. "assethandler-asset"
7
+ * or "assethandler-incident"; `entityId` is the record id.
8
+ */
9
+ export interface CommentsPanelProps {
10
+ entityType: string;
11
+ entityId: string;
12
+ }
13
+ export declare function CommentsPanel({ entityType, entityId }: CommentsPanelProps): import("react").JSX.Element;
14
+ //# sourceMappingURL=CommentsPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentsPanel.d.ts","sourceRoot":"","sources":["../../../src/assethandler/components/CommentsPanel.tsx"],"names":[],"mappings":"AA6BA;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA2JD,wBAAgB,aAAa,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,kBAAkB,+BA6VzE"}
@@ -0,0 +1,23 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ export interface ListEmptyStateProps {
4
+ /** Plural entity name, lowercase, e.g. "assets", "work orders". */
5
+ entityLabel: string;
6
+ /** Title override. Default `No ${entityLabel} yet`. */
7
+ title?: string;
8
+ /** Description override. */
9
+ description?: ReactNode;
10
+ /** Illustration name served from the shell's `/illustrations/`. Default `empty-data`. */
11
+ illustration?: string;
12
+ /** Primary action (typically a "Create" button). */
13
+ action?: ReactNode;
14
+ className?: string;
15
+ }
16
+ /**
17
+ * ListEmptyState — the IllustratedEmptyState-style zero state for list pages.
18
+ * A ready-made companion to {@link NotFoundState} (which is for by-id detail
19
+ * pages): use this when a collection query returns no rows, so lists never fall
20
+ * back to a bare "nothing here" line.
21
+ */
22
+ export declare function ListEmptyState({ entityLabel, title, description, illustration, action, className, }: ListEmptyStateProps): import("react").JSX.Element;
23
+ //# sourceMappingURL=ListEmptyState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListEmptyState.d.ts","sourceRoot":"","sources":["../../../src/assethandler/components/ListEmptyState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,WAAW,mBAAmB;IAClC,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,yFAAyF;IACzF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,KAAK,EACL,WAAW,EACX,YAA2B,EAC3B,MAAM,EACN,SAAS,GACV,EAAE,mBAAmB,+BAarB"}
@@ -0,0 +1,24 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ /**
4
+ * Standard "record not found" panel for detail pages.
5
+ *
6
+ * Detail pages fetch a single record by id (e.g. `budget(id)`, `invoice(id)`).
7
+ * When the by-id query returns `null` — a wrong/stale id, a cross-workspace id,
8
+ * or a soft-deleted record — pages render this instead of silently falling back
9
+ * to `array[0]` (the historic wrong-record bug). B2-2 detail pages reuse it.
10
+ */
11
+ export interface NotFoundStateProps {
12
+ /** What was not found, e.g. "Invoice", "Work order". */
13
+ entityLabel: string;
14
+ /** Optional override for the description line. */
15
+ description?: string;
16
+ /** Label for the primary action button. */
17
+ backLabel?: string;
18
+ /** Handler for the primary action (typically navigate back to the list). */
19
+ onBack?: () => void;
20
+ /** Optional extra action rendered next to the back button. */
21
+ action?: ReactNode;
22
+ }
23
+ export declare function NotFoundState({ entityLabel, description, backLabel, onBack, action, }: NotFoundStateProps): import("react").JSX.Element;
24
+ //# sourceMappingURL=NotFoundState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotFoundState.d.ts","sourceRoot":"","sources":["../../../src/assethandler/components/NotFoundState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAC5B,WAAW,EACX,WAAW,EACX,SAAqB,EACrB,MAAM,EACN,MAAM,GACP,EAAE,kBAAkB,+BAuBpB"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Cursor/limit pagination for AssetHandler lists.
3
+ *
4
+ * The product's bootstrap query hydrates full domain collections into the
5
+ * store, so list pages paginate those arrays client-side with `usePagination`.
6
+ * Server-backed register queries (assetRegister, maintenanceLog) accept
7
+ * `AssetHandlerPaginationInput { cursor, limit }` — the `limit` here maps to
8
+ * that input's page size and `page` drives the offset window.
9
+ *
10
+ * B2-2 pages import both `Pagination` and `usePagination` from the components
11
+ * barrel so every list in the product shares one pagination contract.
12
+ */
13
+ export interface AssetHandlerPaginationInput {
14
+ cursor?: string | null;
15
+ limit?: number;
16
+ }
17
+ export interface UsePaginationResult<T> {
18
+ page: number;
19
+ pageSize: number;
20
+ pageCount: number;
21
+ pageItems: T[];
22
+ totalItems: number;
23
+ /** 1-based index of the first item on the current page (0 when empty). */
24
+ rangeStart: number;
25
+ /** 1-based index of the last item on the current page. */
26
+ rangeEnd: number;
27
+ canPrev: boolean;
28
+ canNext: boolean;
29
+ setPage: (page: number) => void;
30
+ nextPage: () => void;
31
+ prevPage: () => void;
32
+ setPageSize: (size: number) => void;
33
+ }
34
+ export interface UsePaginationOptions {
35
+ pageSize?: number;
36
+ /**
37
+ * When this value changes (e.g. an active filter or search term), the current
38
+ * page resets to 1 so the user is never stranded on an out-of-range page.
39
+ */
40
+ resetKey?: unknown;
41
+ }
42
+ export declare function usePagination<T>(items: T[], options?: UsePaginationOptions): UsePaginationResult<T>;
43
+ export interface PaginationProps {
44
+ page: number;
45
+ pageCount: number;
46
+ rangeStart: number;
47
+ rangeEnd: number;
48
+ totalItems: number;
49
+ canPrev: boolean;
50
+ canNext: boolean;
51
+ onPrev: () => void;
52
+ onNext: () => void;
53
+ /** Plural noun for the range label, e.g. "assets". Defaults to "items". */
54
+ itemLabel?: string;
55
+ className?: string;
56
+ }
57
+ export declare function Pagination({ page, pageCount, rangeStart, rangeEnd, totalItems, canPrev, canNext, onPrev, onNext, itemLabel, className, }: PaginationProps): import("react").JSX.Element | null;
58
+ //# sourceMappingURL=Pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../src/assethandler/components/Pagination.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,2BAA2B;IAC1C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,CAAC,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAID,wBAAgB,aAAa,CAAC,CAAC,EAC7B,KAAK,EAAE,CAAC,EAAE,EACV,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CAAC,CAAC,CAAC,CA2CxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,SAAS,EACT,UAAU,EACV,QAAQ,EACR,UAAU,EACV,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM,EACN,SAAmB,EACnB,SAAS,GACV,EAAE,eAAe,sCAuCjB"}
@@ -0,0 +1,27 @@
1
+ import { ComponentType, ReactNode } from 'react';
2
+
3
+ export interface SectionHeaderProps {
4
+ /** The heading text. */
5
+ title: ReactNode;
6
+ /** Optional supporting description under the title. */
7
+ description?: ReactNode;
8
+ /** Optional right-aligned actions (buttons, toggles). */
9
+ actions?: ReactNode;
10
+ /** Optional leading icon beside the title. */
11
+ icon?: ComponentType<{
12
+ className?: string;
13
+ }>;
14
+ /** Render the title as a gradient hero heading — use once per page. */
15
+ hero?: boolean;
16
+ /** Bottom margin. Default true. */
17
+ spaced?: boolean;
18
+ className?: string;
19
+ }
20
+ /**
21
+ * SectionHeader — a consistent title / description / actions row for pages and
22
+ * sections. `hero` promotes the title to a brand `GradientText` heading (reserve
23
+ * it for the one lead heading per page); otherwise it renders a calm section
24
+ * title. Token-only.
25
+ */
26
+ export declare function SectionHeader({ title, description, actions, icon: Icon, hero, spaced, className, }: SectionHeaderProps): import("react").JSX.Element;
27
+ //# sourceMappingURL=SectionHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SectionHeader.d.ts","sourceRoot":"","sources":["../../../src/assethandler/components/SectionHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAItD,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,KAAK,EAAE,SAAS,CAAC;IACjB,uDAAuD;IACvD,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,yDAAyD;IACzD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,uEAAuE;IACvE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mCAAmC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,OAAO,EACP,IAAI,EAAE,IAAI,EACV,IAAY,EACZ,MAAa,EACb,SAAS,GACV,EAAE,kBAAkB,+BA+BpB"}
@@ -0,0 +1,42 @@
1
+ import { ComponentType } from 'react';
2
+
3
+ type DeltaDirection = 'up' | 'down' | 'neutral';
4
+ type DeltaTone = 'positive' | 'negative' | 'neutral';
5
+ export interface StatTileProps {
6
+ /** Metric name, sentence case, no trailing colon. */
7
+ label: string;
8
+ /** The headline figure. Numbers are formatted (default `toLocaleString`). */
9
+ value: string | number;
10
+ /** Formats a numeric `value` (e.g. compact / currency). */
11
+ format?: (value: number) => string;
12
+ /** Optional change pill text, e.g. `"+12%"` or `"3 more"`. */
13
+ delta?: string | number;
14
+ /** Arrow direction of the change. */
15
+ deltaDirection?: DeltaDirection;
16
+ /**
17
+ * Colour of the delta pill. Defaults from direction (up = positive/green,
18
+ * down = negative/red). Override when up is bad (e.g. open incidents rising):
19
+ * pass `deltaTone="negative"` with `deltaDirection="up"`.
20
+ */
21
+ deltaTone?: DeltaTone;
22
+ /** 12-ish point trend for the inline sparkline. Omit to hide it. */
23
+ spark?: number[];
24
+ /** Sparkline colour. Default the amber brand token. */
25
+ sparkColor?: string;
26
+ /** Leading icon (lucide component or any `{ className }` component). */
27
+ icon?: ComponentType<{
28
+ className?: string;
29
+ }>;
30
+ /** Promote to the hero tile (stronger glass + accent glow). */
31
+ hero?: boolean;
32
+ className?: string;
33
+ }
34
+ /**
35
+ * StatTile — a polished KPI card (GlassCard) with a big proportional figure, an
36
+ * optional signed delta pill and an optional inline sparkline. Replaces the
37
+ * plain label+number cards across AssetHandler. Token-only; no hover movement
38
+ * (the GlassCard only intensifies its glow).
39
+ */
40
+ export declare function StatTile({ label, value, format, delta, deltaDirection, deltaTone, spark, sparkColor, icon: Icon, hero, className, }: StatTileProps): import("react").JSX.Element;
41
+ export {};
42
+ //# sourceMappingURL=StatTile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatTile.d.ts","sourceRoot":"","sources":["../../../src/assethandler/components/StatTile.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAM3C,KAAK,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAChD,KAAK,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,qCAAqC;IACrC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,IAAI,CAAC,EAAE,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,+DAA+D;IAC/D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoBD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,MAAM,EACN,KAAK,EACL,cAA0B,EAC1B,SAAS,EACT,KAAK,EACL,UAAU,EACV,IAAI,EAAE,IAAI,EACV,IAAY,EACZ,SAAS,GACV,EAAE,aAAa,+BA8Cf"}
@@ -0,0 +1,39 @@
1
+ import { ChartDatum, ChartSeries, ValueFormatter } from './chartTheme';
2
+
3
+ export interface BarsChartProps {
4
+ /** Rows of `{ [xKey]: label, [series.key]: number }`. */
5
+ data: ChartDatum[];
6
+ /** Field holding the category label. */
7
+ xKey: string;
8
+ /** One or more numeric series. */
9
+ series: ChartSeries[];
10
+ /** `vertical` = columns growing up (default); `horizontal` = bars growing right. */
11
+ orientation?: 'vertical' | 'horizontal';
12
+ /** Stack the series instead of grouping side-by-side. Default false. */
13
+ stacked?: boolean;
14
+ /** Pixel height. Default 260. */
15
+ height?: number;
16
+ /** Formats numeric values in the axis + tooltip. Default grouped integer. */
17
+ valueFormat?: ValueFormatter;
18
+ /** Formats the category tick + tooltip header. */
19
+ xTickFormat?: (value: string | number) => string;
20
+ /** Show the value-axis grid. Default true. */
21
+ showGrid?: boolean;
22
+ /** Force the legend on/off. Default: on when there are ≥ 2 series. */
23
+ showLegend?: boolean;
24
+ /** Width of the category label column in `horizontal` mode. Default 96. */
25
+ categoryWidth?: number;
26
+ /** Message shown when `data` is empty. */
27
+ emptyLabel?: string;
28
+ /** Accessible name. */
29
+ ariaLabel?: string;
30
+ className?: string;
31
+ }
32
+ /**
33
+ * BarsChart — categorical magnitude as columns or horizontal bars, grouped or
34
+ * stacked. Thin (≤ 24px) marks with 4px rounded data-ends, a hairline grid, a
35
+ * per-mark tooltip, a multi-series legend, an empty state and a screen-reader
36
+ * table. Colour is identity only (never re-encoding the bar's length).
37
+ */
38
+ export declare function BarsChart({ data, xKey, series, orientation, stacked, height, valueFormat, xTickFormat, showGrid, showLegend, categoryWidth, emptyLabel, ariaLabel, className, }: BarsChartProps): import("react").JSX.Element;
39
+ //# sourceMappingURL=BarsChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BarsChart.d.ts","sourceRoot":"","sources":["../../../../src/assethandler/components/charts/BarsChart.tsx"],"names":[],"mappings":"AAUA,OAAO,EAKL,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,oFAAoF;IACpF,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,kDAAkD;IAClD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;IACjD,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,WAAwB,EACxB,OAAe,EACf,MAAY,EACZ,WAA0B,EAC1B,WAAW,EACX,QAAe,EACf,UAAU,EACV,aAAkB,EAClB,UAAU,EACV,SAAS,EACT,SAAS,GACV,EAAE,cAAc,+BAiIhB"}
@@ -0,0 +1,86 @@
1
+ import { CSSProperties, ReactNode } from 'react';
2
+ import { ValueFormatter, ChartDatum, ChartSeries } from './chartTheme';
3
+
4
+ /**
5
+ * Shared chart chrome — the tooltip, legend, empty state and screen-reader data
6
+ * table used by every recharts primitive in this folder. Kept token-only so the
7
+ * whole set recolours with the theme.
8
+ */
9
+ interface TooltipPayloadEntry {
10
+ name?: string | number;
11
+ value?: number | string;
12
+ color?: string;
13
+ dataKey?: string | number;
14
+ }
15
+ export interface ChartTooltipProps {
16
+ /** Injected by recharts. */
17
+ active?: boolean;
18
+ /** Injected by recharts. */
19
+ payload?: TooltipPayloadEntry[];
20
+ /** Injected by recharts. */
21
+ label?: string | number;
22
+ valueFormat?: ValueFormatter;
23
+ labelFormat?: (label: string | number) => string;
24
+ /** Hide the header row (used by single-series / donut tooltips). */
25
+ hideLabel?: boolean;
26
+ }
27
+ /**
28
+ * Token-styled tooltip card. Identity rides a colour swatch beside the name;
29
+ * every text run stays in an ink token, never the series colour.
30
+ */
31
+ export declare function ChartTooltip({ active, payload, label, valueFormat, labelFormat, hideLabel, }: ChartTooltipProps): import("react").JSX.Element | null;
32
+ interface LegendPayloadEntry {
33
+ value?: string | number;
34
+ color?: string;
35
+ }
36
+ export interface ChartLegendProps {
37
+ /** Injected by recharts. */
38
+ payload?: LegendPayloadEntry[];
39
+ }
40
+ /**
41
+ * Token-styled legend — always present for ≥ 2 series so identity is never
42
+ * carried by colour alone. Text is muted ink; the colour lives in the swatch.
43
+ */
44
+ export declare function ChartLegend({ payload }: ChartLegendProps): import("react").JSX.Element | null;
45
+ export interface ChartEmptyProps {
46
+ /** Height of the placeholder, matched to the chart it stands in for. */
47
+ height?: number;
48
+ /** Muted message. Never fabricate data — show this instead. */
49
+ label?: string;
50
+ className?: string;
51
+ }
52
+ /** Calm "no data yet" placeholder. Rendered whenever a series is empty. */
53
+ export declare function ChartEmpty({ height, label, className }: ChartEmptyProps): import("react").JSX.Element;
54
+ /**
55
+ * Visually-hidden style, applied inline so it never depends on the host's
56
+ * Tailwind build emitting the `sr-only` utility. Keeps the a11y data tables out
57
+ * of sight while readable by assistive tech in every environment.
58
+ */
59
+ export declare const srOnlyStyle: CSSProperties;
60
+ export interface ChartDataTableProps {
61
+ caption: string;
62
+ xLabel: string;
63
+ xKey: string;
64
+ data: ChartDatum[];
65
+ series: ChartSeries[];
66
+ valueFormat?: ValueFormatter;
67
+ }
68
+ /**
69
+ * Visually-hidden table mirroring the plotted data. Satisfies the data-viz
70
+ * "a table view exists" accessibility requirement and gives assistive tech the
71
+ * exact numbers behind the marks.
72
+ */
73
+ export declare function ChartDataTable({ caption, xLabel, xKey, data, series, valueFormat, }: ChartDataTableProps): import("react").JSX.Element;
74
+ export interface ChartFigureProps {
75
+ /** Accessible name for the whole figure. */
76
+ ariaLabel: string;
77
+ height: number;
78
+ children: ReactNode;
79
+ /** Screen-reader table + any extra off-screen content. */
80
+ a11y?: ReactNode;
81
+ className?: string;
82
+ }
83
+ /** `role="img"` wrapper giving the chart a single accessible name + fixed height. */
84
+ export declare function ChartFigure({ ariaLabel, height, children, a11y, className }: ChartFigureProps): import("react").JSX.Element;
85
+ export {};
86
+ //# sourceMappingURL=ChartParts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartParts.d.ts","sourceRoot":"","sources":["../../../../src/assethandler/components/charts/ChartParts.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtD,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AAEtB;;;;GAIG;AAMH,UAAU,mBAAmB;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,4BAA4B;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;IACjD,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,OAAO,EACP,KAAK,EACL,WAAW,EACX,WAAW,EACX,SAAS,GACV,EAAE,iBAAiB,sCAgCnB;AAMD,UAAU,kBAAkB;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,gBAAgB,sCAmBxD;AAMD,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,EAAE,MAAY,EAAE,KAAqB,EAAE,SAAS,EAAE,EAAE,eAAe,+BAa7F;AAMD;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,aAUzB,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,cAAc,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,WAAW,GACZ,EAAE,mBAAmB,+BA0BrB;AAMD,MAAM,WAAW,gBAAgB;IAC/B,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,CAAC;IACpB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,gBAAgB,+BAO7F"}
@@ -0,0 +1,34 @@
1
+ import { DonutSlice, ValueFormatter } from './chartTheme';
2
+
3
+ export interface DonutChartProps {
4
+ /** Slices `{ name, value, color? }`. */
5
+ data: DonutSlice[];
6
+ /** Small caption under the centre value (e.g. "Total assets"). */
7
+ centerLabel?: string;
8
+ /**
9
+ * Big centre value. If omitted while `centerLabel` is set, the summed total is
10
+ * shown. A number is run through `valueFormat`.
11
+ */
12
+ centerValue?: string | number;
13
+ /** Pixel height of the ring. Default 240. */
14
+ height?: number;
15
+ /** Ring thickness as a fraction of the radius (0–1). Default 0.42. */
16
+ thickness?: number;
17
+ /** Formats slice + centre values. Default grouped integer. */
18
+ valueFormat?: ValueFormatter;
19
+ /** Show the legend list under the ring. Default true. */
20
+ showLegend?: boolean;
21
+ /** Message shown when there are no slices (or all zero). */
22
+ emptyLabel?: string;
23
+ /** Accessible name. */
24
+ ariaLabel?: string;
25
+ className?: string;
26
+ }
27
+ /**
28
+ * DonutChart — a category/status mix as a ring with a center total. Slices take
29
+ * the categorical ramp in fixed order, identity is carried by an always-present
30
+ * legend (never colour alone), and hover reveals a token-styled tooltip.
31
+ * Renders an empty state — never a fake ring — when there is nothing to show.
32
+ */
33
+ export declare function DonutChart({ data, centerLabel, centerValue, height, thickness, valueFormat, showLegend, emptyLabel, ariaLabel, className, }: DonutChartProps): import("react").JSX.Element;
34
+ //# sourceMappingURL=DonutChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DonutChart.d.ts","sourceRoot":"","sources":["../../../../src/assethandler/components/charts/DonutChart.tsx"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,UAAU,EACf,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,yDAAyD;IACzD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,WAAW,EACX,WAAW,EACX,MAAY,EACZ,SAAgB,EAChB,WAA0B,EAC1B,UAAiB,EACjB,UAAU,EACV,SAAS,EACT,SAAS,GACV,EAAE,eAAe,+BAqGjB"}
@@ -0,0 +1,40 @@
1
+ import { ReactNode } from 'react';
2
+ import { MeterTone, ValueFormatter } from './chartTheme';
3
+
4
+ export interface ProgressMeterProps {
5
+ /** Current value. */
6
+ value: number;
7
+ /** Full-scale value. Default 100. */
8
+ max?: number;
9
+ /** Leading caption (e.g. "Seats used", "Budget spent"). */
10
+ label?: ReactNode;
11
+ /**
12
+ * Severity thresholds as fractions of `max` (0–1). With the default
13
+ * `higherIsWorse` a fraction ≥ `danger` turns the fill red, ≥ `warning` amber.
14
+ * Default `{ warning: 0.75, danger: 0.9 }`.
15
+ */
16
+ thresholds?: {
17
+ warning: number;
18
+ danger: number;
19
+ };
20
+ /** Whether a fuller meter is worse (usage/budget, default) or better (progress). */
21
+ higherIsWorse?: boolean;
22
+ /** Force a tone, bypassing thresholds. */
23
+ tone?: MeterTone;
24
+ /** Show the `value / max` readout on the right of the label row. Default true. */
25
+ showValue?: boolean;
26
+ /** Formats the value + max readout. Default grouped integer. */
27
+ format?: ValueFormatter;
28
+ /** Bar thickness. Default `md`. */
29
+ size?: 'sm' | 'md' | 'lg';
30
+ className?: string;
31
+ }
32
+ /**
33
+ * ProgressMeter — a linear meter for a single ratio (seat usage, budget spent,
34
+ * progress to target). The fill carries severity (good → warning → danger) via
35
+ * reserved status tokens over a muted track; the width transition is gated
36
+ * behind `motion-safe` so reduced-motion users get an instant fill. Token-only,
37
+ * no raw colour.
38
+ */
39
+ export declare function ProgressMeter({ value, max, label, thresholds, higherIsWorse, tone, showValue, format, size, className, }: ProgressMeterProps): import("react").JSX.Element;
40
+ //# sourceMappingURL=ProgressMeter.d.ts.map