@burdenoff/microfe-bigconsole 2026.805.2 → 2026.812.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 (253) hide show
  1. package/dist/bigconsole/components/DrilldownDashboardRenderer.js +118 -106
  2. package/dist/bigconsole/components/DrilldownDashboardRenderer.js.map +1 -1
  3. package/dist/bigconsole/components/DrilldownModal.js +54 -50
  4. package/dist/bigconsole/components/DrilldownModal.js.map +1 -1
  5. package/dist/bigconsole/components/builder/BuilderCanvas.js +2 -2
  6. package/dist/bigconsole/components/builder/BuilderCanvas.js.map +1 -1
  7. package/dist/bigconsole/components/builder/BuilderTopbar.js +3 -3
  8. package/dist/bigconsole/components/builder/BuilderTopbar.js.map +1 -1
  9. package/dist/bigconsole/components/builder/inspector/AdvancedSection.js +24 -25
  10. package/dist/bigconsole/components/builder/inspector/AdvancedSection.js.map +1 -1
  11. package/dist/bigconsole/components/builder/inspector/AppearanceSection.js +40 -29
  12. package/dist/bigconsole/components/builder/inspector/AppearanceSection.js.map +1 -1
  13. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js +145 -111
  14. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js.map +1 -1
  15. package/dist/bigconsole/components/builder/inspector/GeneralSection.js +58 -44
  16. package/dist/bigconsole/components/builder/inspector/GeneralSection.js.map +1 -1
  17. package/dist/bigconsole/components/common/Section.js +70 -0
  18. package/dist/bigconsole/components/common/Section.js.map +1 -0
  19. package/dist/bigconsole/components/common/index.js +2 -0
  20. package/dist/bigconsole/components/common/sectionStyles.js +42 -0
  21. package/dist/bigconsole/components/common/sectionStyles.js.map +1 -0
  22. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js +269 -251
  23. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js.map +1 -1
  24. package/dist/bigconsole/components/dashboard/DashboardCanvas.js +214 -223
  25. package/dist/bigconsole/components/dashboard/DashboardCanvas.js.map +1 -1
  26. package/dist/bigconsole/components/dashboard/DashboardGrid.js +12 -18
  27. package/dist/bigconsole/components/dashboard/DashboardGrid.js.map +1 -1
  28. package/dist/bigconsole/components/dashboard/DashboardToolbar.js +110 -102
  29. package/dist/bigconsole/components/dashboard/DashboardToolbar.js.map +1 -1
  30. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js +81 -68
  31. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js.map +1 -1
  32. package/dist/bigconsole/components/dashboard/ExportDashboardDialog.js +125 -159
  33. package/dist/bigconsole/components/dashboard/ExportDashboardDialog.js.map +1 -1
  34. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js +147 -144
  35. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js.map +1 -1
  36. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +154 -153
  37. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js.map +1 -1
  38. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js +82 -79
  39. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js.map +1 -1
  40. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +171 -284
  41. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js.map +1 -1
  42. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js +250 -273
  43. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js.map +1 -1
  44. package/dist/bigconsole/components/dashboard/LiveBoardBanner.js +45 -53
  45. package/dist/bigconsole/components/dashboard/LiveBoardBanner.js.map +1 -1
  46. package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.js +157 -148
  47. package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.js.map +1 -1
  48. package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js +75 -83
  49. package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js.map +1 -1
  50. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js +167 -161
  51. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js.map +1 -1
  52. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js +181 -190
  53. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js.map +1 -1
  54. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js +101 -95
  55. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js.map +1 -1
  56. package/dist/bigconsole/components/dashboard/StoreTemplatePicker.js +20 -18
  57. package/dist/bigconsole/components/dashboard/StoreTemplatePicker.js.map +1 -1
  58. package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.js +1 -0
  59. package/dist/bigconsole/components/dashboard/TemplateSetupBanner.js +26 -58
  60. package/dist/bigconsole/components/dashboard/TemplateSetupBanner.js.map +1 -1
  61. package/dist/bigconsole/components/dashboard/WidgetPalette.js +307 -229
  62. package/dist/bigconsole/components/dashboard/WidgetPalette.js.map +1 -1
  63. package/dist/bigconsole/components/datasink/CacheTTLSelector.js +128 -129
  64. package/dist/bigconsole/components/datasink/CacheTTLSelector.js.map +1 -1
  65. package/dist/bigconsole/components/datasink/DataSinkCard.js +78 -79
  66. package/dist/bigconsole/components/datasink/DataSinkCard.js.map +1 -1
  67. package/dist/bigconsole/components/datasink/DataSinkDataViewer.js +33 -34
  68. package/dist/bigconsole/components/datasink/DataSinkDataViewer.js.map +1 -1
  69. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js +79 -61
  70. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js.map +1 -1
  71. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js +75 -64
  72. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js.map +1 -1
  73. package/dist/bigconsole/components/datasink/DataSinkStatusBadge.js +1 -1
  74. package/dist/bigconsole/components/datasink/DataSinkStatusBadge.js.map +1 -1
  75. package/dist/bigconsole/components/datasink/DataSinkTableViewer.js +20 -19
  76. package/dist/bigconsole/components/datasink/DataSinkTableViewer.js.map +1 -1
  77. package/dist/bigconsole/components/datasink/ExportDataSinkDialog.js +127 -171
  78. package/dist/bigconsole/components/datasink/ExportDataSinkDialog.js.map +1 -1
  79. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js +113 -117
  80. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js.map +1 -1
  81. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +312 -307
  82. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js.map +1 -1
  83. package/dist/bigconsole/components/datasink/LinkedParsersPanel.js +65 -66
  84. package/dist/bigconsole/components/datasink/LinkedParsersPanel.js.map +1 -1
  85. package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.js +121 -127
  86. package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.js.map +1 -1
  87. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js +194 -189
  88. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js.map +1 -1
  89. package/dist/bigconsole/components/datasink/SetupStateBadge.js +3 -3
  90. package/dist/bigconsole/components/datasink/SetupStateBadge.js.map +1 -1
  91. package/dist/bigconsole/components/datasink/WorkflowStatusPanel.js +95 -95
  92. package/dist/bigconsole/components/datasink/WorkflowStatusPanel.js.map +1 -1
  93. package/dist/bigconsole/components/parser/DataSinkSelector.js +163 -131
  94. package/dist/bigconsole/components/parser/DataSinkSelector.js.map +1 -1
  95. package/dist/bigconsole/components/parser/ExpressionEditor.js +3 -3
  96. package/dist/bigconsole/components/parser/ExpressionEditor.js.map +1 -1
  97. package/dist/bigconsole/components/parser/ImportParserDialog.js +205 -260
  98. package/dist/bigconsole/components/parser/ImportParserDialog.js.map +1 -1
  99. package/dist/bigconsole/components/parser/ParserCard.js +133 -114
  100. package/dist/bigconsole/components/parser/ParserCard.js.map +1 -1
  101. package/dist/bigconsole/components/parser/ParserSelector.js +193 -174
  102. package/dist/bigconsole/components/parser/ParserSelector.js.map +1 -1
  103. package/dist/bigconsole/components/parser/ParserStatusBadge.js +2 -2
  104. package/dist/bigconsole/components/parser/ParserStatusBadge.js.map +1 -1
  105. package/dist/bigconsole/components/parser/ParserTypeBadge.js +4 -4
  106. package/dist/bigconsole/components/parser/ParserTypeBadge.js.map +1 -1
  107. package/dist/bigconsole/components/pipeline/PipelineCard.js +134 -89
  108. package/dist/bigconsole/components/pipeline/PipelineCard.js.map +1 -1
  109. package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.js +77 -64
  110. package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.js.map +1 -1
  111. package/dist/bigconsole/components/pipeline/PipelineStatusBadge.js +7 -10
  112. package/dist/bigconsole/components/pipeline/PipelineStatusBadge.js.map +1 -1
  113. package/dist/bigconsole/components/preview/AiPreviewContent.js +31 -32
  114. package/dist/bigconsole/components/preview/AiPreviewContent.js.map +1 -1
  115. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js +152 -103
  116. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js.map +1 -1
  117. package/dist/bigconsole/components/preview/AiPreviewPanel.js +193 -148
  118. package/dist/bigconsole/components/preview/AiPreviewPanel.js.map +1 -1
  119. package/dist/bigconsole/components/preview/previewShared.js +41 -23
  120. package/dist/bigconsole/components/preview/previewShared.js.map +1 -1
  121. package/dist/bigconsole/components/widgets/ActionConfigDialog.js +405 -364
  122. package/dist/bigconsole/components/widgets/ActionConfigDialog.js.map +1 -1
  123. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js +265 -237
  124. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js.map +1 -1
  125. package/dist/bigconsole/components/widgets/PropertiesPanel.js +764 -821
  126. package/dist/bigconsole/components/widgets/PropertiesPanel.js.map +1 -1
  127. package/dist/bigconsole/components/widgets/WidgetErrorBoundary.js +7 -5
  128. package/dist/bigconsole/components/widgets/WidgetErrorBoundary.js.map +1 -1
  129. package/dist/bigconsole/components/widgets/WidgetHeader.js +7 -8
  130. package/dist/bigconsole/components/widgets/WidgetHeader.js.map +1 -1
  131. package/dist/bigconsole/components/widgets/WidgetWrapper.js +8 -7
  132. package/dist/bigconsole/components/widgets/WidgetWrapper.js.map +1 -1
  133. package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.js +1 -1
  134. package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.js.map +1 -1
  135. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js +46 -49
  136. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js.map +1 -1
  137. package/dist/bigconsole/components/widgets/chart/ChartConfig.js +154 -147
  138. package/dist/bigconsole/components/widgets/chart/ChartConfig.js.map +1 -1
  139. package/dist/bigconsole/components/widgets/comments/WidgetComments.js +118 -101
  140. package/dist/bigconsole/components/widgets/comments/WidgetComments.js.map +1 -1
  141. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js +244 -191
  142. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js.map +1 -1
  143. package/dist/bigconsole/components/widgets/form/FormWidget.js +167 -159
  144. package/dist/bigconsole/components/widgets/form/FormWidget.js.map +1 -1
  145. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js +92 -76
  146. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js.map +1 -1
  147. package/dist/bigconsole/components/widgets/gauge/GaugeWidget.js +1 -1
  148. package/dist/bigconsole/components/widgets/gauge/GaugeWidget.js.map +1 -1
  149. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js +89 -86
  150. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js.map +1 -1
  151. package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.js +2 -2
  152. package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.js.map +1 -1
  153. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js +64 -63
  154. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js.map +1 -1
  155. package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.js +2 -2
  156. package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.js.map +1 -1
  157. package/dist/bigconsole/components/widgets/list/ListConfig.js +65 -58
  158. package/dist/bigconsole/components/widgets/list/ListConfig.js.map +1 -1
  159. package/dist/bigconsole/components/widgets/list/ListItem.js +1 -1
  160. package/dist/bigconsole/components/widgets/list/ListItem.js.map +1 -1
  161. package/dist/bigconsole/components/widgets/map-widget/MapWidget.js +1 -1
  162. package/dist/bigconsole/components/widgets/map-widget/MapWidget.js.map +1 -1
  163. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js +79 -72
  164. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js.map +1 -1
  165. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js +35 -34
  166. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js.map +1 -1
  167. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js +20 -19
  168. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js.map +1 -1
  169. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js +181 -180
  170. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js.map +1 -1
  171. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js +100 -90
  172. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js.map +1 -1
  173. package/dist/bigconsole/components/widgets/retention/RetentionWidget.js +3 -3
  174. package/dist/bigconsole/components/widgets/retention/RetentionWidget.js.map +1 -1
  175. package/dist/bigconsole/components/widgets/states/EmptyState.js +6 -4
  176. package/dist/bigconsole/components/widgets/states/EmptyState.js.map +1 -1
  177. package/dist/bigconsole/components/widgets/states/ErrorState.js +7 -5
  178. package/dist/bigconsole/components/widgets/states/ErrorState.js.map +1 -1
  179. package/dist/bigconsole/components/widgets/states/LoadingState.js +5 -4
  180. package/dist/bigconsole/components/widgets/states/LoadingState.js.map +1 -1
  181. package/dist/bigconsole/components/widgets/table/TableConfig.js +193 -172
  182. package/dist/bigconsole/components/widgets/table/TableConfig.js.map +1 -1
  183. package/dist/bigconsole/components/widgets/table/TableHeader.js +1 -1
  184. package/dist/bigconsole/components/widgets/table/TableHeader.js.map +1 -1
  185. package/dist/bigconsole/components/widgets/table/TableWidget.js +1 -1
  186. package/dist/bigconsole/components/widgets/table/TableWidget.js.map +1 -1
  187. package/dist/bigconsole/components/widgets/text-widget/TextWidget.js +1 -1
  188. package/dist/bigconsole/components/widgets/text-widget/TextWidget.js.map +1 -1
  189. package/dist/bigconsole/components/widgets/timeline/TimelineWidget.js +3 -3
  190. package/dist/bigconsole/components/widgets/timeline/TimelineWidget.js.map +1 -1
  191. package/dist/bigconsole/components/widgets/utils/conditionalFormat.js +2 -2
  192. package/dist/bigconsole/components/widgets/utils/conditionalFormat.js.map +1 -1
  193. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js +283 -249
  194. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js.map +1 -1
  195. package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.js +28 -20
  196. package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.js.map +1 -1
  197. package/dist/bigconsole/components/workflow/WorkflowCard.js +92 -77
  198. package/dist/bigconsole/components/workflow/WorkflowCard.js.map +1 -1
  199. package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.js +70 -51
  200. package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.js.map +1 -1
  201. package/dist/bigconsole/components/workflow/WorkflowStatusBadge.js +16 -17
  202. package/dist/bigconsole/components/workflow/WorkflowStatusBadge.js.map +1 -1
  203. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js +46 -42
  204. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js.map +1 -1
  205. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js +372 -348
  206. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js.map +1 -1
  207. package/dist/bigconsole/hooks/useModalFocusTrap.js +53 -0
  208. package/dist/bigconsole/hooks/useModalFocusTrap.js.map +1 -0
  209. package/dist/bigconsole/pages/DashboardBuilderPage.js +153 -142
  210. package/dist/bigconsole/pages/DashboardBuilderPage.js.map +1 -1
  211. package/dist/bigconsole/pages/DashboardViewPage.js +230 -220
  212. package/dist/bigconsole/pages/DashboardViewPage.js.map +1 -1
  213. package/dist/bigconsole/pages/DashboardsPage.js +832 -790
  214. package/dist/bigconsole/pages/DashboardsPage.js.map +1 -1
  215. package/dist/bigconsole/pages/DataParsersPage.js +249 -304
  216. package/dist/bigconsole/pages/DataParsersPage.js.map +1 -1
  217. package/dist/bigconsole/pages/DataSinkBuilderPage.js +324 -349
  218. package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +1 -1
  219. package/dist/bigconsole/pages/DataSinkViewPage.js +336 -323
  220. package/dist/bigconsole/pages/DataSinkViewPage.js.map +1 -1
  221. package/dist/bigconsole/pages/DataSinksPage.js +356 -458
  222. package/dist/bigconsole/pages/DataSinksPage.js.map +1 -1
  223. package/dist/bigconsole/pages/DataSourcesPage.js +14 -8
  224. package/dist/bigconsole/pages/DataSourcesPage.js.map +1 -1
  225. package/dist/bigconsole/pages/HomePage.js +186 -193
  226. package/dist/bigconsole/pages/HomePage.js.map +1 -1
  227. package/dist/bigconsole/pages/InsightsPage.js +901 -724
  228. package/dist/bigconsole/pages/InsightsPage.js.map +1 -1
  229. package/dist/bigconsole/pages/ParserBuilderPage.js +769 -675
  230. package/dist/bigconsole/pages/ParserBuilderPage.js.map +1 -1
  231. package/dist/bigconsole/pages/ParserViewPage.js +382 -354
  232. package/dist/bigconsole/pages/ParserViewPage.js.map +1 -1
  233. package/dist/bigconsole/pages/PipelineBuilderPage.js +540 -420
  234. package/dist/bigconsole/pages/PipelineBuilderPage.js.map +1 -1
  235. package/dist/bigconsole/pages/PipelineViewPage.js +416 -384
  236. package/dist/bigconsole/pages/PipelineViewPage.js.map +1 -1
  237. package/dist/bigconsole/pages/PipelinesPage.js +260 -309
  238. package/dist/bigconsole/pages/PipelinesPage.js.map +1 -1
  239. package/dist/bigconsole/pages/SettingsPage.js +177 -172
  240. package/dist/bigconsole/pages/SettingsPage.js.map +1 -1
  241. package/dist/bigconsole/pages/WidgetDemoPage.js +278 -142
  242. package/dist/bigconsole/pages/WidgetDemoPage.js.map +1 -1
  243. package/dist/bigconsole/pages/WorkflowViewPage.js +382 -366
  244. package/dist/bigconsole/pages/WorkflowViewPage.js.map +1 -1
  245. package/dist/bigconsole/pages/WorkflowsPage.js +202 -316
  246. package/dist/bigconsole/pages/WorkflowsPage.js.map +1 -1
  247. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js +111 -109
  248. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js.map +1 -1
  249. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js +127 -126
  250. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js.map +1 -1
  251. package/dist/bigconsole/renderers/adapters/CustomRenderer.js +103 -103
  252. package/dist/bigconsole/renderers/adapters/CustomRenderer.js.map +1 -1
  253. package/package.json +2 -1
@@ -1,7 +1,8 @@
1
1
  import { memo as e, useMemo as t } from "react";
2
- import { jsx as n, jsxs as r } from "react/jsx-runtime";
2
+ import { useI18n as n } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
3
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
3
4
  //#region src/bigconsole/components/widgets/metric-card/SparklineChart.tsx
4
- var i = {
5
+ var a = {
5
6
  primary: {
6
7
  stroke: "stroke-action-primary-bg",
7
8
  fill: "fill-action-primary-bg/20"
@@ -22,73 +23,73 @@ var i = {
22
23
  stroke: "stroke-text-secondary",
23
24
  fill: "fill-text-secondary/10"
24
25
  }
25
- }, a = e(function({ data: e, width: a = 100, height: o = 32, color: s = "primary", showFill: c = !0, strokeWidth: l = 2 }) {
26
- let u = t(() => {
26
+ }, o = e(function({ data: e, width: o = 100, height: s = 32, color: c = "primary", showFill: l = !0, strokeWidth: u = 2 }) {
27
+ let { t: d } = n(), f = t(() => {
27
28
  if (!e.length) return {
28
29
  line: "",
29
30
  area: ""
30
31
  };
31
- let t = e.map((e) => e.value), n = Math.min(...t), r = Math.max(...t) - n || 1, i = l, s = a - i * 2, c = o - i * 2, u = e.map((t, a) => ({
32
- x: i + a / (e.length - 1) * s,
32
+ let t = e.map((e) => e.value), n = Math.min(...t), r = Math.max(...t) - n || 1, i = u, a = o - i * 2, c = s - i * 2, l = e.map((t, o) => ({
33
+ x: i + o / (e.length - 1) * a,
33
34
  y: i + c - (t.value - n) / r * c
34
- })), d = u.map((e, t) => `${t === 0 ? "M" : "L"} ${e.x} ${e.y}`).join(" ");
35
+ })), d = l.map((e, t) => `${t === 0 ? "M" : "L"} ${e.x} ${e.y}`).join(" ");
35
36
  return {
36
37
  line: d,
37
38
  area: `
38
39
  ${d}
39
- L ${u[u.length - 1].x} ${o - i}
40
- L ${i} ${o - i}
40
+ L ${l[l.length - 1].x} ${s - i}
41
+ L ${i} ${s - i}
41
42
  Z
42
43
  `
43
44
  };
44
45
  }, [
45
46
  e,
46
- a,
47
47
  o,
48
- l
48
+ s,
49
+ u
49
50
  ]);
50
- if (!e.length) return /* @__PURE__ */ n("div", {
51
+ if (!e.length) return /* @__PURE__ */ r("div", {
51
52
  className: "flex items-center justify-center text-text-secondary",
52
53
  style: {
53
- width: a,
54
- height: o
54
+ width: o,
55
+ height: s
55
56
  },
56
- children: /* @__PURE__ */ n("span", {
57
+ children: /* @__PURE__ */ r("span", {
57
58
  className: "text-xs",
58
- children: "No data"
59
+ children: d("bigconsole.widget.sparkline.noData", "No data")
59
60
  })
60
61
  });
61
- let d = i[s];
62
- return /* @__PURE__ */ r("svg", {
63
- width: a,
64
- height: o,
62
+ let p = a[c];
63
+ return /* @__PURE__ */ i("svg", {
64
+ width: o,
65
+ height: s,
65
66
  className: "overflow-visible",
66
67
  role: "img",
67
- "aria-label": "Sparkline chart",
68
+ "aria-label": d("bigconsole.widget.sparkline.ariaLabel", "Sparkline chart"),
68
69
  children: [
69
- c && /* @__PURE__ */ n("path", {
70
- d: u.area,
71
- className: d.fill,
70
+ l && /* @__PURE__ */ r("path", {
71
+ d: f.area,
72
+ className: p.fill,
72
73
  strokeWidth: 0
73
74
  }),
74
- /* @__PURE__ */ n("path", {
75
- d: u.line,
76
- className: d.stroke,
75
+ /* @__PURE__ */ r("path", {
76
+ d: f.line,
77
+ className: p.stroke,
77
78
  fill: "none",
78
- strokeWidth: l,
79
+ strokeWidth: u,
79
80
  strokeLinecap: "round",
80
81
  strokeLinejoin: "round"
81
82
  }),
82
- e.length > 0 && /* @__PURE__ */ n("circle", {
83
- cx: a - l,
84
- cy: l + (o - l * 2) - (e[e.length - 1].value - Math.min(...e.map((e) => e.value))) / (Math.max(...e.map((e) => e.value)) - Math.min(...e.map((e) => e.value)) || 1) * (o - l * 2),
85
- r: l + 1,
86
- className: `${d.stroke.replace("stroke-", "fill-")}`
83
+ e.length > 0 && /* @__PURE__ */ r("circle", {
84
+ cx: o - u,
85
+ cy: u + (s - u * 2) - (e[e.length - 1].value - Math.min(...e.map((e) => e.value))) / (Math.max(...e.map((e) => e.value)) - Math.min(...e.map((e) => e.value)) || 1) * (s - u * 2),
86
+ r: u + 1,
87
+ className: `${p.stroke.replace("stroke-", "fill-")}`
87
88
  })
88
89
  ]
89
90
  });
90
91
  });
91
92
  //#endregion
92
- export { a as default };
93
+ export { o as default };
93
94
 
94
95
  //# sourceMappingURL=SparklineChart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SparklineChart.js","names":[],"sources":["../../../../../src/bigconsole/components/widgets/metric-card/SparklineChart.tsx"],"sourcesContent":["/**\n * SparklineChart Component\n *\n * Mini trend chart for metric cards.\n */\n\nimport { type FC, memo, useMemo } from 'react';\n\nexport interface SparklineDataPoint {\n value: number;\n timestamp?: string;\n}\n\nexport interface SparklineChartProps {\n /** Data points for the sparkline */\n data: SparklineDataPoint[];\n /** Width of the chart */\n width?: number;\n /** Height of the chart */\n height?: number;\n /** Line color (uses semantic token) */\n color?: 'primary' | 'success' | 'error' | 'warning' | 'muted';\n /** Whether to show the fill area */\n showFill?: boolean;\n /** Stroke width */\n strokeWidth?: number;\n}\n\nconst COLOR_CLASSES = {\n primary: {\n stroke: 'stroke-action-primary-bg',\n fill: 'fill-action-primary-bg/20',\n },\n success: {\n stroke: 'stroke-status-success-bg',\n fill: 'fill-status-success-bg/20',\n },\n error: {\n stroke: 'stroke-status-error-bg',\n fill: 'fill-status-error-bg/20',\n },\n warning: {\n stroke: 'stroke-status-warning-bg',\n fill: 'fill-status-warning-bg/20',\n },\n muted: {\n stroke: 'stroke-text-secondary',\n fill: 'fill-text-secondary/10',\n },\n};\n\nexport const SparklineChart: FC<SparklineChartProps> = memo(function SparklineChart({\n data,\n width = 100,\n height = 32,\n color = 'primary',\n showFill = true,\n strokeWidth = 2,\n}) {\n const pathData = useMemo(() => {\n if (!data.length) return { line: '', area: '' };\n\n const values = data.map((d) => d.value);\n const min = Math.min(...values);\n const max = Math.max(...values);\n const range = max - min || 1;\n\n const padding = strokeWidth;\n const chartWidth = width - padding * 2;\n const chartHeight = height - padding * 2;\n\n const points = data.map((d, i) => {\n const x = padding + (i / (data.length - 1)) * chartWidth;\n const y = padding + chartHeight - ((d.value - min) / range) * chartHeight;\n return { x, y };\n });\n\n // Create line path\n const linePath = points.map((p, i) => `${i === 0 ? 'M' : 'L'} ${p.x} ${p.y}`).join(' ');\n\n // Create area path (closed shape for fill)\n const areaPath = `\n ${linePath}\n L ${points[points.length - 1].x} ${height - padding}\n L ${padding} ${height - padding}\n Z\n `;\n\n return { line: linePath, area: areaPath };\n }, [data, width, height, strokeWidth]);\n\n if (!data.length) {\n return (\n <div className=\"flex items-center justify-center text-text-secondary\" style={{ width, height }}>\n <span className=\"text-xs\">No data</span>\n </div>\n );\n }\n\n const colors = COLOR_CLASSES[color];\n\n return (\n <svg width={width} height={height} className=\"overflow-visible\" role=\"img\" aria-label=\"Sparkline chart\">\n {/* Gradient fill */}\n {showFill && <path d={pathData.area} className={colors.fill} strokeWidth={0} />}\n\n {/* Line */}\n <path\n d={pathData.line}\n className={colors.stroke}\n fill=\"none\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n\n {/* End dot */}\n {data.length > 0 && (\n <circle\n cx={width - strokeWidth}\n cy={\n strokeWidth +\n (height - strokeWidth * 2) -\n ((data[data.length - 1].value - Math.min(...data.map((d) => d.value))) /\n (Math.max(...data.map((d) => d.value)) - Math.min(...data.map((d) => d.value)) || 1)) *\n (height - strokeWidth * 2)\n }\n r={strokeWidth + 1}\n className={`${colors.stroke.replace('stroke-', 'fill-')}`}\n />\n )}\n </svg>\n );\n});\n\nexport default SparklineChart;\n"],"mappings":";;;AA4BA,IAAM,IAAgB;CACpB,SAAS;EACP,QAAQ;EACR,MAAM;EACP;CACD,SAAS;EACP,QAAQ;EACR,MAAM;EACP;CACD,OAAO;EACL,QAAQ;EACR,MAAM;EACP;CACD,SAAS;EACP,QAAQ;EACR,MAAM;EACP;CACD,OAAO;EACL,QAAQ;EACR,MAAM;EACP;CACF,EAEY,IAA0C,EAAK,SAAwB,EAClF,SACA,WAAQ,KACR,YAAS,IACT,WAAQ,WACR,cAAW,IACX,iBAAc,KACb;CACD,IAAM,IAAW,QAAc;AAC7B,MAAI,CAAC,EAAK,OAAQ,QAAO;GAAE,MAAM;GAAI,MAAM;GAAI;EAE/C,IAAM,IAAS,EAAK,KAAK,MAAM,EAAE,MAAM,EACjC,IAAM,KAAK,IAAI,GAAG,EAAO,EAEzB,IADM,KAAK,IAAI,GAAG,EAAO,GACX,KAAO,GAErB,IAAU,GACV,IAAa,IAAQ,IAAU,GAC/B,IAAc,IAAS,IAAU,GAEjC,IAAS,EAAK,KAAK,GAAG,OAGnB;GAAE,GAFC,IAAW,KAAK,EAAK,SAAS,KAAM;GAElC,GADF,IAAU,KAAgB,EAAE,QAAQ,KAAO,IAAS;GAC/C,EACf,EAGI,IAAW,EAAO,KAAK,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,IAAI;AAUvF,SAAO;GAAE,MAAM;GAAU,MAPR;UACX,EAAS;YACP,EAAO,EAAO,SAAS,GAAG,EAAE,GAAG,IAAS,EAAQ;YAChD,EAAQ,GAAG,IAAS,EAAQ;;;GAIK;IACxC;EAAC;EAAM;EAAO;EAAQ;EAAY,CAAC;AAEtC,KAAI,CAAC,EAAK,OACR,QACE,kBAAC,OAAD;EAAK,WAAU;EAAuD,OAAO;GAAE;GAAO;GAAQ;YAC5F,kBAAC,QAAD;GAAM,WAAU;aAAU;GAAc,CAAA;EACpC,CAAA;CAIV,IAAM,IAAS,EAAc;AAE7B,QACE,kBAAC,OAAD;EAAY;EAAe;EAAQ,WAAU;EAAmB,MAAK;EAAM,cAAW;YAAtF;GAEG,KAAY,kBAAC,QAAD;IAAM,GAAG,EAAS;IAAM,WAAW,EAAO;IAAM,aAAa;IAAK,CAAA;GAG/E,kBAAC,QAAD;IACE,GAAG,EAAS;IACZ,WAAW,EAAO;IAClB,MAAK;IACQ;IACb,eAAc;IACd,gBAAe;IACf,CAAA;GAGD,EAAK,SAAS,KACb,kBAAC,UAAD;IACE,IAAI,IAAQ;IACZ,IACE,KACC,IAAS,IAAc,MACtB,EAAK,EAAK,SAAS,GAAG,QAAQ,KAAK,IAAI,GAAG,EAAK,KAAK,MAAM,EAAE,MAAM,CAAC,KAClE,KAAK,IAAI,GAAG,EAAK,KAAK,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,IAAI,GAAG,EAAK,KAAK,MAAM,EAAE,MAAM,CAAC,IAAI,MACjF,IAAS,IAAc;IAE5B,GAAG,IAAc;IACjB,WAAW,GAAG,EAAO,OAAO,QAAQ,WAAW,QAAQ;IACvD,CAAA;GAEA;;EAER"}
1
+ {"version":3,"file":"SparklineChart.js","names":[],"sources":["../../../../../src/bigconsole/components/widgets/metric-card/SparklineChart.tsx"],"sourcesContent":["/**\n * SparklineChart Component\n *\n * Mini trend chart for metric cards.\n */\n\nimport { type FC, memo, useMemo } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\n\nexport interface SparklineDataPoint {\n value: number;\n timestamp?: string;\n}\n\nexport interface SparklineChartProps {\n /** Data points for the sparkline */\n data: SparklineDataPoint[];\n /** Width of the chart */\n width?: number;\n /** Height of the chart */\n height?: number;\n /** Line color (uses semantic token) */\n color?: 'primary' | 'success' | 'error' | 'warning' | 'muted';\n /** Whether to show the fill area */\n showFill?: boolean;\n /** Stroke width */\n strokeWidth?: number;\n}\n\nconst COLOR_CLASSES = {\n primary: {\n stroke: 'stroke-action-primary-bg',\n fill: 'fill-action-primary-bg/20',\n },\n success: {\n stroke: 'stroke-status-success-bg',\n fill: 'fill-status-success-bg/20',\n },\n error: {\n stroke: 'stroke-status-error-bg',\n fill: 'fill-status-error-bg/20',\n },\n warning: {\n stroke: 'stroke-status-warning-bg',\n fill: 'fill-status-warning-bg/20',\n },\n muted: {\n stroke: 'stroke-text-secondary',\n fill: 'fill-text-secondary/10',\n },\n};\n\nexport const SparklineChart: FC<SparklineChartProps> = memo(function SparklineChart({\n data,\n width = 100,\n height = 32,\n color = 'primary',\n showFill = true,\n strokeWidth = 2,\n}) {\n const { t } = useI18n();\n const pathData = useMemo(() => {\n if (!data.length) return { line: '', area: '' };\n\n const values = data.map((d) => d.value);\n const min = Math.min(...values);\n const max = Math.max(...values);\n const range = max - min || 1;\n\n const padding = strokeWidth;\n const chartWidth = width - padding * 2;\n const chartHeight = height - padding * 2;\n\n const points = data.map((d, i) => {\n const x = padding + (i / (data.length - 1)) * chartWidth;\n const y = padding + chartHeight - ((d.value - min) / range) * chartHeight;\n return { x, y };\n });\n\n // Create line path\n const linePath = points.map((p, i) => `${i === 0 ? 'M' : 'L'} ${p.x} ${p.y}`).join(' ');\n\n // Create area path (closed shape for fill)\n const areaPath = `\n ${linePath}\n L ${points[points.length - 1].x} ${height - padding}\n L ${padding} ${height - padding}\n Z\n `;\n\n return { line: linePath, area: areaPath };\n }, [data, width, height, strokeWidth]);\n\n if (!data.length) {\n return (\n <div className=\"flex items-center justify-center text-text-secondary\" style={{ width, height }}>\n <span className=\"text-xs\">{t('bigconsole.widget.sparkline.noData', 'No data')}</span>\n </div>\n );\n }\n\n const colors = COLOR_CLASSES[color];\n\n return (\n <svg\n width={width}\n height={height}\n className=\"overflow-visible\"\n role=\"img\"\n aria-label={t('bigconsole.widget.sparkline.ariaLabel', 'Sparkline chart')}\n >\n {/* Gradient fill */}\n {showFill && <path d={pathData.area} className={colors.fill} strokeWidth={0} />}\n\n {/* Line */}\n <path\n d={pathData.line}\n className={colors.stroke}\n fill=\"none\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n\n {/* End dot */}\n {data.length > 0 && (\n <circle\n cx={width - strokeWidth}\n cy={\n strokeWidth +\n (height - strokeWidth * 2) -\n ((data[data.length - 1].value - Math.min(...data.map((d) => d.value))) /\n (Math.max(...data.map((d) => d.value)) - Math.min(...data.map((d) => d.value)) || 1)) *\n (height - strokeWidth * 2)\n }\n r={strokeWidth + 1}\n className={`${colors.stroke.replace('stroke-', 'fill-')}`}\n />\n )}\n </svg>\n );\n});\n\nexport default SparklineChart;\n"],"mappings":";;;;AA6BA,IAAM,IAAgB;CACpB,SAAS;EACP,QAAQ;EACR,MAAM;EACP;CACD,SAAS;EACP,QAAQ;EACR,MAAM;EACP;CACD,OAAO;EACL,QAAQ;EACR,MAAM;EACP;CACD,SAAS;EACP,QAAQ;EACR,MAAM;EACP;CACD,OAAO;EACL,QAAQ;EACR,MAAM;EACP;CACF,EAEY,IAA0C,EAAK,SAAwB,EAClF,SACA,WAAQ,KACR,YAAS,IACT,WAAQ,WACR,cAAW,IACX,iBAAc,KACb;CACD,IAAM,EAAE,SAAM,GAAS,EACjB,IAAW,QAAc;AAC7B,MAAI,CAAC,EAAK,OAAQ,QAAO;GAAE,MAAM;GAAI,MAAM;GAAI;EAE/C,IAAM,IAAS,EAAK,KAAK,MAAM,EAAE,MAAM,EACjC,IAAM,KAAK,IAAI,GAAG,EAAO,EAEzB,IADM,KAAK,IAAI,GAAG,EAAO,GACX,KAAO,GAErB,IAAU,GACV,IAAa,IAAQ,IAAU,GAC/B,IAAc,IAAS,IAAU,GAEjC,IAAS,EAAK,KAAK,GAAG,OAGnB;GAAE,GAFC,IAAW,KAAK,EAAK,SAAS,KAAM;GAElC,GADF,IAAU,KAAgB,EAAE,QAAQ,KAAO,IAAS;GAC/C,EACf,EAGI,IAAW,EAAO,KAAK,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,IAAI;AAUvF,SAAO;GAAE,MAAM;GAAU,MAPR;UACX,EAAS;YACP,EAAO,EAAO,SAAS,GAAG,EAAE,GAAG,IAAS,EAAQ;YAChD,EAAQ,GAAG,IAAS,EAAQ;;;GAIK;IACxC;EAAC;EAAM;EAAO;EAAQ;EAAY,CAAC;AAEtC,KAAI,CAAC,EAAK,OACR,QACE,kBAAC,OAAD;EAAK,WAAU;EAAuD,OAAO;GAAE;GAAO;GAAQ;YAC5F,kBAAC,QAAD;GAAM,WAAU;aAAW,EAAE,sCAAsC,UAAU;GAAQ,CAAA;EACjF,CAAA;CAIV,IAAM,IAAS,EAAc;AAE7B,QACE,kBAAC,OAAD;EACS;EACC;EACR,WAAU;EACV,MAAK;EACL,cAAY,EAAE,yCAAyC,kBAAkB;YAL3E;GAQG,KAAY,kBAAC,QAAD;IAAM,GAAG,EAAS;IAAM,WAAW,EAAO;IAAM,aAAa;IAAK,CAAA;GAG/E,kBAAC,QAAD;IACE,GAAG,EAAS;IACZ,WAAW,EAAO;IAClB,MAAK;IACQ;IACb,eAAc;IACd,gBAAe;IACf,CAAA;GAGD,EAAK,SAAS,KACb,kBAAC,UAAD;IACE,IAAI,IAAQ;IACZ,IACE,KACC,IAAS,IAAc,MACtB,EAAK,EAAK,SAAS,GAAG,QAAQ,KAAK,IAAI,GAAG,EAAK,KAAK,MAAM,EAAE,MAAM,CAAC,KAClE,KAAK,IAAI,GAAG,EAAK,KAAK,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,IAAI,GAAG,EAAK,KAAK,MAAM,EAAE,MAAM,CAAC,IAAI,MACjF,IAAS,IAAc;IAE5B,GAAG,IAAc;IACjB,WAAW,GAAG,EAAO,OAAO,QAAQ,WAAW,QAAQ;IACvD,CAAA;GAEA;;EAER"}
@@ -1,47 +1,48 @@
1
1
  import { memo as e } from "react";
2
- import { jsx as t } from "react/jsx-runtime";
2
+ import { useI18n as t } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
3
+ import { jsx as n } from "react/jsx-runtime";
3
4
  //#region src/bigconsole/components/widgets/metric-card/TrendIndicator.tsx
4
- var n = {
5
+ var r = {
5
6
  sm: "w-3 h-3",
6
7
  md: "w-4 h-4",
7
8
  lg: "w-5 h-5"
8
- }, r = e(function({ direction: e, size: r = "md", positiveIsGood: i = !0 }) {
9
- let a = () => {
9
+ }, i = e(function({ direction: e, size: i = "md", positiveIsGood: a = !0 }) {
10
+ let { t: o } = t(), s = () => {
10
11
  if (e === "flat") return "text-text-secondary";
11
12
  let t = e === "up";
12
- return (i ? t : !t) ? "text-status-success-text" : "text-status-error-text";
13
- }, o = n[r], s = a();
14
- return e === "flat" ? /* @__PURE__ */ t("svg", {
15
- className: `${o} ${s}`,
13
+ return (a ? t : !t) ? "text-status-success-text" : "text-status-error-text";
14
+ }, c = r[i], l = s();
15
+ return e === "flat" ? /* @__PURE__ */ n("svg", {
16
+ className: `${c} ${l}`,
16
17
  fill: "none",
17
18
  stroke: "currentColor",
18
19
  viewBox: "0 0 24 24",
19
- "aria-label": "No change",
20
- children: /* @__PURE__ */ t("path", {
20
+ "aria-label": o("bigconsole.widget.trend.noChange", "No change"),
21
+ children: /* @__PURE__ */ n("path", {
21
22
  strokeLinecap: "round",
22
23
  strokeLinejoin: "round",
23
24
  strokeWidth: 2,
24
25
  d: "M5 12h14"
25
26
  })
26
- }) : e === "up" ? /* @__PURE__ */ t("svg", {
27
- className: `${o} ${s}`,
27
+ }) : e === "up" ? /* @__PURE__ */ n("svg", {
28
+ className: `${c} ${l}`,
28
29
  fill: "none",
29
30
  stroke: "currentColor",
30
31
  viewBox: "0 0 24 24",
31
- "aria-label": "Trending up",
32
- children: /* @__PURE__ */ t("path", {
32
+ "aria-label": o("bigconsole.widget.trend.up", "Trending up"),
33
+ children: /* @__PURE__ */ n("path", {
33
34
  strokeLinecap: "round",
34
35
  strokeLinejoin: "round",
35
36
  strokeWidth: 2,
36
37
  d: "M5 15l7-7 7 7"
37
38
  })
38
- }) : /* @__PURE__ */ t("svg", {
39
- className: `${o} ${s}`,
39
+ }) : /* @__PURE__ */ n("svg", {
40
+ className: `${c} ${l}`,
40
41
  fill: "none",
41
42
  stroke: "currentColor",
42
43
  viewBox: "0 0 24 24",
43
- "aria-label": "Trending down",
44
- children: /* @__PURE__ */ t("path", {
44
+ "aria-label": o("bigconsole.widget.trend.down", "Trending down"),
45
+ children: /* @__PURE__ */ n("path", {
45
46
  strokeLinecap: "round",
46
47
  strokeLinejoin: "round",
47
48
  strokeWidth: 2,
@@ -50,6 +51,6 @@ var n = {
50
51
  });
51
52
  });
52
53
  //#endregion
53
- export { r as default };
54
+ export { i as default };
54
55
 
55
56
  //# sourceMappingURL=TrendIndicator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TrendIndicator.js","names":[],"sources":["../../../../../src/bigconsole/components/widgets/metric-card/TrendIndicator.tsx"],"sourcesContent":["/**\n * TrendIndicator Component\n *\n * Displays up/down/flat trend arrow with color coding.\n */\n\nimport { type FC, memo } from 'react';\n\nexport type TrendDirection = 'up' | 'down' | 'flat';\n\nexport interface TrendIndicatorProps {\n /** Direction of the trend */\n direction: TrendDirection;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Whether positive trend is good (default true for metrics like revenue) */\n positiveIsGood?: boolean;\n}\n\nconst SIZE_CLASSES = {\n sm: 'w-3 h-3',\n md: 'w-4 h-4',\n lg: 'w-5 h-5',\n};\n\nexport const TrendIndicator: FC<TrendIndicatorProps> = memo(function TrendIndicator({\n direction,\n size = 'md',\n positiveIsGood = true,\n}) {\n // Determine color based on direction and whether positive is good\n const getColorClass = (): string => {\n if (direction === 'flat') {\n return 'text-text-secondary';\n }\n\n const isPositive = direction === 'up';\n const isGood = positiveIsGood ? isPositive : !isPositive;\n\n return isGood ? 'text-status-success-text' : 'text-status-error-text';\n };\n\n const sizeClass = SIZE_CLASSES[size];\n const colorClass = getColorClass();\n\n if (direction === 'flat') {\n return (\n <svg\n className={`${sizeClass} ${colorClass}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-label=\"No change\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 12h14\" />\n </svg>\n );\n }\n\n if (direction === 'up') {\n return (\n <svg\n className={`${sizeClass} ${colorClass}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-label=\"Trending up\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 15l7-7 7 7\" />\n </svg>\n );\n }\n\n return (\n <svg\n className={`${sizeClass} ${colorClass}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-label=\"Trending down\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n );\n});\n\nexport default TrendIndicator;\n"],"mappings":";;;AAmBA,IAAM,IAAe;CACnB,IAAI;CACJ,IAAI;CACJ,IAAI;CACL,EAEY,IAA0C,EAAK,SAAwB,EAClF,cACA,UAAO,MACP,oBAAiB,MAChB;CAED,IAAM,UAA8B;AAClC,MAAI,MAAc,OAChB,QAAO;EAGT,IAAM,IAAa,MAAc;AAGjC,UAFe,IAAiB,IAAa,CAAC,KAE9B,6BAA6B;IAGzC,IAAY,EAAa,IACzB,IAAa,GAAe;AA8BlC,QA5BI,MAAc,SAEd,kBAAC,OAAD;EACE,WAAW,GAAG,EAAU,GAAG;EAC3B,MAAK;EACL,QAAO;EACP,SAAQ;EACR,cAAW;YAEX,kBAAC,QAAD;GAAM,eAAc;GAAQ,gBAAe;GAAQ,aAAa;GAAG,GAAE;GAAa,CAAA;EAC9E,CAAA,GAIN,MAAc,OAEd,kBAAC,OAAD;EACE,WAAW,GAAG,EAAU,GAAG;EAC3B,MAAK;EACL,QAAO;EACP,SAAQ;EACR,cAAW;YAEX,kBAAC,QAAD;GAAM,eAAc;GAAQ,gBAAe;GAAQ,aAAa;GAAG,GAAE;GAAkB,CAAA;EACnF,CAAA,GAKR,kBAAC,OAAD;EACE,WAAW,GAAG,EAAU,GAAG;EAC3B,MAAK;EACL,QAAO;EACP,SAAQ;EACR,cAAW;YAEX,kBAAC,QAAD;GAAM,eAAc;GAAQ,gBAAe;GAAQ,aAAa;GAAG,GAAE;GAAmB,CAAA;EACpF,CAAA;EAER"}
1
+ {"version":3,"file":"TrendIndicator.js","names":[],"sources":["../../../../../src/bigconsole/components/widgets/metric-card/TrendIndicator.tsx"],"sourcesContent":["/**\n * TrendIndicator Component\n *\n * Displays up/down/flat trend arrow with color coding.\n */\n\nimport { type FC, memo } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\n\nexport type TrendDirection = 'up' | 'down' | 'flat';\n\nexport interface TrendIndicatorProps {\n /** Direction of the trend */\n direction: TrendDirection;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Whether positive trend is good (default true for metrics like revenue) */\n positiveIsGood?: boolean;\n}\n\nconst SIZE_CLASSES = {\n sm: 'w-3 h-3',\n md: 'w-4 h-4',\n lg: 'w-5 h-5',\n};\n\nexport const TrendIndicator: FC<TrendIndicatorProps> = memo(function TrendIndicator({\n direction,\n size = 'md',\n positiveIsGood = true,\n}) {\n const { t } = useI18n();\n // Determine color based on direction and whether positive is good\n const getColorClass = (): string => {\n if (direction === 'flat') {\n return 'text-text-secondary';\n }\n\n const isPositive = direction === 'up';\n const isGood = positiveIsGood ? isPositive : !isPositive;\n\n return isGood ? 'text-status-success-text' : 'text-status-error-text';\n };\n\n const sizeClass = SIZE_CLASSES[size];\n const colorClass = getColorClass();\n\n if (direction === 'flat') {\n return (\n <svg\n className={`${sizeClass} ${colorClass}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-label={t('bigconsole.widget.trend.noChange', 'No change')}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 12h14\" />\n </svg>\n );\n }\n\n if (direction === 'up') {\n return (\n <svg\n className={`${sizeClass} ${colorClass}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-label={t('bigconsole.widget.trend.up', 'Trending up')}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 15l7-7 7 7\" />\n </svg>\n );\n }\n\n return (\n <svg\n className={`${sizeClass} ${colorClass}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-label={t('bigconsole.widget.trend.down', 'Trending down')}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n );\n});\n\nexport default TrendIndicator;\n"],"mappings":";;;;AAoBA,IAAM,IAAe;CACnB,IAAI;CACJ,IAAI;CACJ,IAAI;CACL,EAEY,IAA0C,EAAK,SAAwB,EAClF,cACA,UAAO,MACP,oBAAiB,MAChB;CACD,IAAM,EAAE,SAAM,GAAS,EAEjB,UAA8B;AAClC,MAAI,MAAc,OAChB,QAAO;EAGT,IAAM,IAAa,MAAc;AAGjC,UAFe,IAAiB,IAAa,CAAC,KAE9B,6BAA6B;IAGzC,IAAY,EAAa,IACzB,IAAa,GAAe;AA8BlC,QA5BI,MAAc,SAEd,kBAAC,OAAD;EACE,WAAW,GAAG,EAAU,GAAG;EAC3B,MAAK;EACL,QAAO;EACP,SAAQ;EACR,cAAY,EAAE,oCAAoC,YAAY;YAE9D,kBAAC,QAAD;GAAM,eAAc;GAAQ,gBAAe;GAAQ,aAAa;GAAG,GAAE;GAAa,CAAA;EAC9E,CAAA,GAIN,MAAc,OAEd,kBAAC,OAAD;EACE,WAAW,GAAG,EAAU,GAAG;EAC3B,MAAK;EACL,QAAO;EACP,SAAQ;EACR,cAAY,EAAE,8BAA8B,cAAc;YAE1D,kBAAC,QAAD;GAAM,eAAc;GAAQ,gBAAe;GAAQ,aAAa;GAAG,GAAE;GAAkB,CAAA;EACnF,CAAA,GAKR,kBAAC,OAAD;EACE,WAAW,GAAG,EAAU,GAAG;EAC3B,MAAK;EACL,QAAO;EACP,SAAQ;EACR,cAAY,EAAE,gCAAgC,gBAAgB;YAE9D,kBAAC,QAAD;GAAM,eAAc;GAAQ,gBAAe;GAAQ,aAAa;GAAG,GAAE;GAAmB,CAAA;EACpF,CAAA;EAER"}