@burdenoff/microfe-bigconsole 2026.805.2 → 2026.805.3

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 (134) hide show
  1. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js +109 -113
  2. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js.map +1 -1
  3. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js +115 -113
  4. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js.map +1 -1
  5. package/dist/bigconsole/components/dashboard/DashboardCanvas.js +71 -62
  6. package/dist/bigconsole/components/dashboard/DashboardCanvas.js.map +1 -1
  7. package/dist/bigconsole/components/dashboard/DashboardToolbar.js +90 -89
  8. package/dist/bigconsole/components/dashboard/DashboardToolbar.js.map +1 -1
  9. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js +56 -54
  10. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js.map +1 -1
  11. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js +126 -125
  12. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js.map +1 -1
  13. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +151 -150
  14. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js.map +1 -1
  15. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js +77 -76
  16. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js.map +1 -1
  17. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +97 -96
  18. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js.map +1 -1
  19. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js +172 -191
  20. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js.map +1 -1
  21. package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js +75 -83
  22. package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js.map +1 -1
  23. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js +151 -154
  24. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js.map +1 -1
  25. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js +181 -190
  26. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js.map +1 -1
  27. package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.js +1 -0
  28. package/dist/bigconsole/components/dashboard/WidgetPalette.js +110 -108
  29. package/dist/bigconsole/components/dashboard/WidgetPalette.js.map +1 -1
  30. package/dist/bigconsole/components/datasink/CacheTTLSelector.js +102 -103
  31. package/dist/bigconsole/components/datasink/CacheTTLSelector.js.map +1 -1
  32. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js +36 -41
  33. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js.map +1 -1
  34. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js +38 -37
  35. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js.map +1 -1
  36. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js +113 -117
  37. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js.map +1 -1
  38. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +182 -197
  39. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js.map +1 -1
  40. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js +166 -168
  41. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js.map +1 -1
  42. package/dist/bigconsole/components/parser/DataSinkSelector.js +87 -86
  43. package/dist/bigconsole/components/parser/DataSinkSelector.js.map +1 -1
  44. package/dist/bigconsole/components/parser/ImportParserDialog.js +196 -211
  45. package/dist/bigconsole/components/parser/ImportParserDialog.js.map +1 -1
  46. package/dist/bigconsole/components/parser/ParserSelector.js +130 -128
  47. package/dist/bigconsole/components/parser/ParserSelector.js.map +1 -1
  48. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js +66 -63
  49. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js.map +1 -1
  50. package/dist/bigconsole/components/preview/AiPreviewPanel.js +95 -91
  51. package/dist/bigconsole/components/preview/AiPreviewPanel.js.map +1 -1
  52. package/dist/bigconsole/components/widgets/ActionConfigDialog.js +222 -215
  53. package/dist/bigconsole/components/widgets/ActionConfigDialog.js.map +1 -1
  54. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js +149 -145
  55. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js.map +1 -1
  56. package/dist/bigconsole/components/widgets/PropertiesPanel.js +504 -470
  57. package/dist/bigconsole/components/widgets/PropertiesPanel.js.map +1 -1
  58. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js +44 -47
  59. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js.map +1 -1
  60. package/dist/bigconsole/components/widgets/chart/ChartConfig.js +143 -142
  61. package/dist/bigconsole/components/widgets/chart/ChartConfig.js.map +1 -1
  62. package/dist/bigconsole/components/widgets/comments/WidgetComments.js +101 -88
  63. package/dist/bigconsole/components/widgets/comments/WidgetComments.js.map +1 -1
  64. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js +135 -134
  65. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js.map +1 -1
  66. package/dist/bigconsole/components/widgets/form/FormWidget.js +167 -159
  67. package/dist/bigconsole/components/widgets/form/FormWidget.js.map +1 -1
  68. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js +69 -68
  69. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js.map +1 -1
  70. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js +64 -72
  71. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js.map +1 -1
  72. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js +60 -59
  73. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js.map +1 -1
  74. package/dist/bigconsole/components/widgets/list/ListConfig.js +57 -56
  75. package/dist/bigconsole/components/widgets/list/ListConfig.js.map +1 -1
  76. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js +70 -69
  77. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js.map +1 -1
  78. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js +35 -34
  79. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js.map +1 -1
  80. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js +20 -19
  81. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js.map +1 -1
  82. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js +178 -177
  83. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js.map +1 -1
  84. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js +76 -75
  85. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js.map +1 -1
  86. package/dist/bigconsole/components/widgets/table/TableConfig.js +183 -168
  87. package/dist/bigconsole/components/widgets/table/TableConfig.js.map +1 -1
  88. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js +187 -180
  89. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js.map +1 -1
  90. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js +40 -38
  91. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js.map +1 -1
  92. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js +150 -148
  93. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js.map +1 -1
  94. package/dist/bigconsole/pages/DashboardBuilderPage.js +181 -176
  95. package/dist/bigconsole/pages/DashboardBuilderPage.js.map +1 -1
  96. package/dist/bigconsole/pages/DashboardViewPage.js +196 -192
  97. package/dist/bigconsole/pages/DashboardViewPage.js.map +1 -1
  98. package/dist/bigconsole/pages/DashboardsPage.js +223 -219
  99. package/dist/bigconsole/pages/DashboardsPage.js.map +1 -1
  100. package/dist/bigconsole/pages/DataParsersPage.js +167 -170
  101. package/dist/bigconsole/pages/DataParsersPage.js.map +1 -1
  102. package/dist/bigconsole/pages/DataSinkBuilderPage.js +204 -189
  103. package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +1 -1
  104. package/dist/bigconsole/pages/DataSinkViewPage.js +175 -169
  105. package/dist/bigconsole/pages/DataSinkViewPage.js.map +1 -1
  106. package/dist/bigconsole/pages/DataSourcesPage.js +8 -7
  107. package/dist/bigconsole/pages/DataSourcesPage.js.map +1 -1
  108. package/dist/bigconsole/pages/InsightsPage.js +238 -208
  109. package/dist/bigconsole/pages/InsightsPage.js.map +1 -1
  110. package/dist/bigconsole/pages/ParserBuilderPage.js +464 -412
  111. package/dist/bigconsole/pages/ParserBuilderPage.js.map +1 -1
  112. package/dist/bigconsole/pages/ParserViewPage.js +92 -90
  113. package/dist/bigconsole/pages/ParserViewPage.js.map +1 -1
  114. package/dist/bigconsole/pages/PipelineBuilderPage.js +221 -194
  115. package/dist/bigconsole/pages/PipelineBuilderPage.js.map +1 -1
  116. package/dist/bigconsole/pages/PipelineViewPage.js +181 -184
  117. package/dist/bigconsole/pages/PipelineViewPage.js.map +1 -1
  118. package/dist/bigconsole/pages/PipelinesPage.js +128 -127
  119. package/dist/bigconsole/pages/PipelinesPage.js.map +1 -1
  120. package/dist/bigconsole/pages/SettingsPage.js +177 -172
  121. package/dist/bigconsole/pages/SettingsPage.js.map +1 -1
  122. package/dist/bigconsole/pages/WidgetDemoPage.js +121 -83
  123. package/dist/bigconsole/pages/WidgetDemoPage.js.map +1 -1
  124. package/dist/bigconsole/pages/WorkflowViewPage.js +199 -193
  125. package/dist/bigconsole/pages/WorkflowViewPage.js.map +1 -1
  126. package/dist/bigconsole/pages/WorkflowsPage.js +129 -128
  127. package/dist/bigconsole/pages/WorkflowsPage.js.map +1 -1
  128. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js +111 -109
  129. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js.map +1 -1
  130. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js +127 -126
  131. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js.map +1 -1
  132. package/dist/bigconsole/renderers/adapters/CustomRenderer.js +103 -103
  133. package/dist/bigconsole/renderers/adapters/CustomRenderer.js.map +1 -1
  134. 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"}