@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,246 +1,253 @@
1
- import { memo as e, useCallback as t } from "react";
2
- import { Fragment as n, jsx as r, jsxs as i } from "react/jsx-runtime";
1
+ import { memo as e, useCallback as t, useMemo as n } from "react";
2
+ import { useI18n as r } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
3
+ import { Fragment as i, jsx as a, jsxs as o } from "react/jsx-runtime";
3
4
  //#region src/bigconsole/components/widgets/chart/ChartConfig.tsx
4
- var a = [
5
- {
6
- value: "line",
7
- label: "Line Chart"
8
- },
9
- {
10
- value: "bar",
11
- label: "Bar Chart"
12
- },
13
- {
14
- value: "area",
15
- label: "Area Chart"
16
- },
17
- {
18
- value: "pie",
19
- label: "Pie Chart"
20
- },
21
- {
22
- value: "funnel",
23
- label: "Funnel Chart"
24
- }
25
- ], o = [
26
- {
27
- value: "monotone",
28
- label: "Smooth"
29
- },
30
- {
31
- value: "linear",
32
- label: "Linear"
33
- },
34
- {
35
- value: "step",
36
- label: "Step"
37
- },
38
- {
39
- value: "natural",
40
- label: "Natural"
41
- }
42
- ], s = [
43
- {
44
- value: "top",
45
- label: "Top"
46
- },
47
- {
48
- value: "bottom",
49
- label: "Bottom"
50
- },
51
- {
52
- value: "left",
53
- label: "Left"
54
- },
55
- {
56
- value: "right",
57
- label: "Right"
58
- }
59
- ], c = e(function({ config: e, onChange: c }) {
60
- let l = t((t, n) => {
61
- c({
5
+ var s = e(function({ config: e, onChange: s }) {
6
+ let { t: c } = r(), l = n(() => [
7
+ {
8
+ value: "line",
9
+ label: c("bigconsole.widget.config.chart.type.line", "Line Chart")
10
+ },
11
+ {
12
+ value: "bar",
13
+ label: c("bigconsole.widget.config.chart.type.bar", "Bar Chart")
14
+ },
15
+ {
16
+ value: "area",
17
+ label: c("bigconsole.widget.config.chart.type.area", "Area Chart")
18
+ },
19
+ {
20
+ value: "pie",
21
+ label: c("bigconsole.widget.config.chart.type.pie", "Pie Chart")
22
+ },
23
+ {
24
+ value: "funnel",
25
+ label: c("bigconsole.widget.config.chart.type.funnel", "Funnel Chart")
26
+ }
27
+ ], [c]), u = n(() => [
28
+ {
29
+ value: "monotone",
30
+ label: c("bigconsole.widget.config.chart.curve.smooth", "Smooth")
31
+ },
32
+ {
33
+ value: "linear",
34
+ label: c("bigconsole.widget.config.chart.curve.linear", "Linear")
35
+ },
36
+ {
37
+ value: "step",
38
+ label: c("bigconsole.widget.config.chart.curve.step", "Step")
39
+ },
40
+ {
41
+ value: "natural",
42
+ label: c("bigconsole.widget.config.chart.curve.natural", "Natural")
43
+ }
44
+ ], [c]), d = n(() => [
45
+ {
46
+ value: "top",
47
+ label: c("bigconsole.widget.config.chart.legendPosition.top", "Top")
48
+ },
49
+ {
50
+ value: "bottom",
51
+ label: c("bigconsole.widget.config.chart.legendPosition.bottom", "Bottom")
52
+ },
53
+ {
54
+ value: "left",
55
+ label: c("bigconsole.widget.config.chart.legendPosition.left", "Left")
56
+ },
57
+ {
58
+ value: "right",
59
+ label: c("bigconsole.widget.config.chart.legendPosition.right", "Right")
60
+ }
61
+ ], [c]), f = t((t, n) => {
62
+ s({
62
63
  ...e,
63
64
  [t]: n
64
65
  });
65
- }, [e, c]), u = e.chartType === "pie" || e.chartType === "funnel";
66
- return /* @__PURE__ */ i("div", {
67
- className: "space-y-4",
66
+ }, [e, s]), p = e.chartType === "pie" || e.chartType === "funnel";
67
+ return /* @__PURE__ */ o("div", {
68
+ className: "min-w-0 space-y-form-gap",
68
69
  children: [
69
- /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("label", {
70
+ /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("label", {
70
71
  className: "block text-sm font-medium text-text-primary mb-1",
71
- children: "Chart Type"
72
- }), /* @__PURE__ */ r("select", {
72
+ children: c("bigconsole.widget.config.chart.chartTypeLabel", "Chart Type")
73
+ }), /* @__PURE__ */ a("select", {
73
74
  value: e.chartType || "line",
74
- onChange: (e) => l("chartType", e.target.value),
75
+ onChange: (e) => f("chartType", e.target.value),
75
76
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n ",
76
- children: a.map((e) => /* @__PURE__ */ r("option", {
77
+ children: l.map((e) => /* @__PURE__ */ a("option", {
77
78
  value: e.value,
78
79
  children: e.label
79
80
  }, e.value))
80
81
  })] }),
81
- !u && /* @__PURE__ */ i(n, { children: [
82
- /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("label", {
82
+ !p && /* @__PURE__ */ o(i, { children: [
83
+ /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("label", {
83
84
  className: "block text-sm font-medium text-text-primary mb-1",
84
- children: "X-Axis Field"
85
- }), /* @__PURE__ */ r("input", {
85
+ children: c("bigconsole.widget.config.chart.xAxisFieldLabel", "X-Axis Field")
86
+ }), /* @__PURE__ */ a("input", {
86
87
  type: "text",
87
88
  value: e.xAxisField || "",
88
- onChange: (e) => l("xAxisField", e.target.value),
89
- placeholder: "e.g., date, category",
89
+ onChange: (e) => f("xAxisField", e.target.value),
90
+ placeholder: c("bigconsole.widget.config.chart.xAxisFieldPlaceholder", "e.g., date, category"),
90
91
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n "
91
92
  })] }),
92
- /* @__PURE__ */ i("div", {
93
- className: "grid grid-cols-2 gap-3",
94
- children: [/* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("label", {
93
+ /* @__PURE__ */ o("div", {
94
+ className: "grid grid-cols-1 gap-3 sm:grid-cols-2",
95
+ children: [/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("label", {
95
96
  className: "block text-sm font-medium text-text-primary mb-1",
96
- children: "X-Axis Label"
97
- }), /* @__PURE__ */ r("input", {
97
+ children: c("bigconsole.widget.config.chart.xAxisLabelLabel", "X-Axis Label")
98
+ }), /* @__PURE__ */ a("input", {
98
99
  type: "text",
99
100
  value: e.xAxisLabel || "",
100
- onChange: (e) => l("xAxisLabel", e.target.value),
101
- placeholder: "Optional",
101
+ onChange: (e) => f("xAxisLabel", e.target.value),
102
+ placeholder: c("bigconsole.widget.config.chart.optionalPlaceholder", "Optional"),
102
103
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n "
103
- })] }), /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("label", {
104
+ })] }), /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("label", {
104
105
  className: "block text-sm font-medium text-text-primary mb-1",
105
- children: "Y-Axis Label"
106
- }), /* @__PURE__ */ r("input", {
106
+ children: c("bigconsole.widget.config.chart.yAxisLabelLabel", "Y-Axis Label")
107
+ }), /* @__PURE__ */ a("input", {
107
108
  type: "text",
108
109
  value: e.yAxisLabel || "",
109
- onChange: (e) => l("yAxisLabel", e.target.value),
110
- placeholder: "Optional",
110
+ onChange: (e) => f("yAxisLabel", e.target.value),
111
+ placeholder: c("bigconsole.widget.config.chart.optionalPlaceholder", "Optional"),
111
112
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n "
112
113
  })] })]
113
114
  }),
114
- (e.chartType === "line" || e.chartType === "area") && /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("label", {
115
+ (e.chartType === "line" || e.chartType === "area") && /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("label", {
115
116
  className: "block text-sm font-medium text-text-primary mb-1",
116
- children: "Curve Type"
117
- }), /* @__PURE__ */ r("select", {
117
+ children: c("bigconsole.widget.config.chart.curveTypeLabel", "Curve Type")
118
+ }), /* @__PURE__ */ a("select", {
118
119
  value: e.curveType || "monotone",
119
- onChange: (e) => l("curveType", e.target.value),
120
+ onChange: (e) => f("curveType", e.target.value),
120
121
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n ",
121
- children: o.map((e) => /* @__PURE__ */ r("option", {
122
+ children: u.map((e) => /* @__PURE__ */ a("option", {
122
123
  value: e.value,
123
124
  children: e.label
124
125
  }, e.value))
125
126
  })] })
126
127
  ] }),
127
- u && /* @__PURE__ */ i(n, { children: [/* @__PURE__ */ i("div", {
128
- className: "grid grid-cols-2 gap-3",
129
- children: [/* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("label", {
128
+ p && /* @__PURE__ */ o(i, { children: [/* @__PURE__ */ o("div", {
129
+ className: "grid grid-cols-1 gap-3 sm:grid-cols-2",
130
+ children: [/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("label", {
130
131
  className: "block text-sm font-medium text-text-primary mb-1",
131
- children: "Value Field"
132
- }), /* @__PURE__ */ r("input", {
132
+ children: c("bigconsole.widget.config.chart.valueFieldLabel", "Value Field")
133
+ }), /* @__PURE__ */ a("input", {
133
134
  type: "text",
134
135
  value: e.valueField || "",
135
- onChange: (e) => l("valueField", e.target.value),
136
- placeholder: "e.g., value",
136
+ onChange: (e) => f("valueField", e.target.value),
137
+ placeholder: c("bigconsole.widget.config.chart.valueFieldPlaceholder", "e.g., value"),
137
138
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n "
138
- })] }), /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("label", {
139
+ })] }), /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("label", {
139
140
  className: "block text-sm font-medium text-text-primary mb-1",
140
- children: "Label Field"
141
- }), /* @__PURE__ */ r("input", {
141
+ children: c("bigconsole.widget.config.chart.labelFieldLabel", "Label Field")
142
+ }), /* @__PURE__ */ a("input", {
142
143
  type: "text",
143
144
  value: e.labelField || "",
144
- onChange: (e) => l("labelField", e.target.value),
145
- placeholder: "e.g., name",
145
+ onChange: (e) => f("labelField", e.target.value),
146
+ placeholder: c("bigconsole.widget.config.chart.labelFieldPlaceholder", "e.g., name"),
146
147
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n "
147
148
  })] })]
148
- }), e.chartType === "pie" && /* @__PURE__ */ i("label", {
149
+ }), e.chartType === "pie" && /* @__PURE__ */ o("label", {
149
150
  className: "flex items-center gap-3",
150
- children: [/* @__PURE__ */ r("input", {
151
+ children: [/* @__PURE__ */ a("input", {
151
152
  type: "checkbox",
152
153
  checked: e.showAsDonut === !0,
153
- onChange: (e) => l("showAsDonut", e.target.checked),
154
+ onChange: (e) => f("showAsDonut", e.target.checked),
154
155
  className: "\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n "
155
- }), /* @__PURE__ */ r("span", {
156
+ }), /* @__PURE__ */ a("span", {
156
157
  className: "text-sm text-text-primary",
157
- children: "Show as Donut"
158
+ children: c("bigconsole.widget.config.chart.showAsDonut", "Show as Donut")
158
159
  })]
159
160
  })] }),
160
- /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("label", {
161
+ /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("label", {
161
162
  className: "block text-sm font-medium text-text-primary mb-1",
162
- children: "Legend Position"
163
- }), /* @__PURE__ */ r("select", {
163
+ children: c("bigconsole.widget.config.chart.legendPositionLabel", "Legend Position")
164
+ }), /* @__PURE__ */ a("select", {
164
165
  value: e.legendPosition || "bottom",
165
- onChange: (e) => l("legendPosition", e.target.value),
166
+ onChange: (e) => f("legendPosition", e.target.value),
166
167
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n ",
167
- children: s.map((e) => /* @__PURE__ */ r("option", {
168
+ children: d.map((e) => /* @__PURE__ */ a("option", {
168
169
  value: e.value,
169
170
  children: e.label
170
171
  }, e.value))
171
172
  })] }),
172
- !u && /* @__PURE__ */ i("div", { children: [
173
- /* @__PURE__ */ r("label", {
173
+ !p && /* @__PURE__ */ o("div", { children: [
174
+ /* @__PURE__ */ a("label", {
174
175
  className: "block text-sm font-medium text-text-primary mb-1",
175
- children: "Fields to Display"
176
+ children: c("bigconsole.widget.config.chart.fieldsToDisplayLabel", "Fields to Display")
176
177
  }),
177
- /* @__PURE__ */ r("p", {
178
+ /* @__PURE__ */ a("p", {
178
179
  className: "text-xs text-text-secondary mb-2",
179
- children: "Select which numeric fields to show as chart series. Leave empty to show all."
180
+ children: c("bigconsole.widget.config.chart.fieldsToDisplayHelp", "Select which numeric fields to show as chart series. Leave empty to show all.")
180
181
  }),
181
- /* @__PURE__ */ r("input", {
182
+ /* @__PURE__ */ a("input", {
182
183
  type: "text",
183
184
  value: e.selectedFields?.join(", ") || "",
184
185
  onChange: (e) => {
185
186
  let t = e.target.value.trim(), n = t ? t.split(",").map((e) => e.trim()).filter(Boolean) : [];
186
- l("selectedFields", n.length > 0 ? n : void 0);
187
+ f("selectedFields", n.length > 0 ? n : void 0);
187
188
  },
188
- placeholder: "e.g., revenue, orders, users (comma-separated)",
189
+ placeholder: c("bigconsole.widget.config.chart.fieldsToDisplayPlaceholder", "e.g., revenue, orders, users (comma-separated)"),
189
190
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n "
190
191
  }),
191
- /* @__PURE__ */ r("p", {
192
- className: "text-xs text-text-tertiary mt-1",
193
- children: "Enter field names separated by commas"
192
+ /* @__PURE__ */ a("p", {
193
+ className: "text-xs text-text-muted mt-1",
194
+ children: c("bigconsole.widget.config.chart.fieldsToDisplayHint", "Enter field names separated by commas")
194
195
  })
195
196
  ] }),
196
- /* @__PURE__ */ i("div", {
197
- className: "space-y-3",
197
+ /* @__PURE__ */ o("div", {
198
+ role: "group",
199
+ "aria-label": "Display options",
200
+ className: "space-y-3 border-t border-[var(--color-border-subtle)] pt-form-gap",
198
201
  children: [
199
- /* @__PURE__ */ i("label", {
202
+ /* @__PURE__ */ a("p", {
203
+ className: "text-xs font-bold uppercase tracking-wider text-text-secondary",
204
+ children: "Display options"
205
+ }),
206
+ /* @__PURE__ */ o("label", {
200
207
  className: "flex items-center gap-3",
201
- children: [/* @__PURE__ */ r("input", {
208
+ children: [/* @__PURE__ */ a("input", {
202
209
  type: "checkbox",
203
210
  checked: e.showGrid !== !1,
204
- onChange: (e) => l("showGrid", e.target.checked),
211
+ onChange: (e) => f("showGrid", e.target.checked),
205
212
  className: "\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n "
206
- }), /* @__PURE__ */ r("span", {
213
+ }), /* @__PURE__ */ a("span", {
207
214
  className: "text-sm text-text-primary",
208
- children: "Show Grid"
215
+ children: c("bigconsole.widget.config.chart.showGrid", "Show Grid")
209
216
  })]
210
217
  }),
211
- /* @__PURE__ */ i("label", {
218
+ /* @__PURE__ */ o("label", {
212
219
  className: "flex items-center gap-3",
213
- children: [/* @__PURE__ */ r("input", {
220
+ children: [/* @__PURE__ */ a("input", {
214
221
  type: "checkbox",
215
222
  checked: e.showLegend !== !1,
216
- onChange: (e) => l("showLegend", e.target.checked),
223
+ onChange: (e) => f("showLegend", e.target.checked),
217
224
  className: "\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n "
218
- }), /* @__PURE__ */ r("span", {
225
+ }), /* @__PURE__ */ a("span", {
219
226
  className: "text-sm text-text-primary",
220
- children: "Show Legend"
227
+ children: c("bigconsole.widget.config.chart.showLegend", "Show Legend")
221
228
  })]
222
229
  }),
223
- !u && /* @__PURE__ */ i(n, { children: [/* @__PURE__ */ i("label", {
230
+ !p && /* @__PURE__ */ o(i, { children: [/* @__PURE__ */ o("label", {
224
231
  className: "flex items-center gap-3",
225
- children: [/* @__PURE__ */ r("input", {
232
+ children: [/* @__PURE__ */ a("input", {
226
233
  type: "checkbox",
227
234
  checked: e.showDataPoints === !0,
228
- onChange: (e) => l("showDataPoints", e.target.checked),
235
+ onChange: (e) => f("showDataPoints", e.target.checked),
229
236
  className: "\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n "
230
- }), /* @__PURE__ */ r("span", {
237
+ }), /* @__PURE__ */ a("span", {
231
238
  className: "text-sm text-text-primary",
232
- children: "Show Data Points"
239
+ children: c("bigconsole.widget.config.chart.showDataPoints", "Show Data Points")
233
240
  })]
234
- }), (e.chartType === "bar" || e.chartType === "area") && /* @__PURE__ */ i("label", {
241
+ }), (e.chartType === "bar" || e.chartType === "area") && /* @__PURE__ */ o("label", {
235
242
  className: "flex items-center gap-3",
236
- children: [/* @__PURE__ */ r("input", {
243
+ children: [/* @__PURE__ */ a("input", {
237
244
  type: "checkbox",
238
245
  checked: e.stacked === !0,
239
- onChange: (e) => l("stacked", e.target.checked),
246
+ onChange: (e) => f("stacked", e.target.checked),
240
247
  className: "\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n "
241
- }), /* @__PURE__ */ r("span", {
248
+ }), /* @__PURE__ */ a("span", {
242
249
  className: "text-sm text-text-primary",
243
- children: "Stacked"
250
+ children: c("bigconsole.widget.config.chart.stacked", "Stacked")
244
251
  })]
245
252
  })] })
246
253
  ]
@@ -249,6 +256,6 @@ var a = [
249
256
  });
250
257
  });
251
258
  //#endregion
252
- export { c as default };
259
+ export { s as default };
253
260
 
254
261
  //# sourceMappingURL=ChartConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartConfig.js","names":[],"sources":["../../../../../src/bigconsole/components/widgets/chart/ChartConfig.tsx"],"sourcesContent":["/**\n * ChartConfig Component\n *\n * Configuration panel for Chart widgets.\n */\n\nimport { type FC, memo, useCallback } from 'react';\nimport type { ChartConfig as ConfigType } from '../../../types';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface ChartConfigProps {\n /** Current configuration */\n config: ConfigType;\n /** Callback when config changes */\n onChange: (config: ConfigType) => void;\n}\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst CHART_TYPES = [\n { value: 'line', label: 'Line Chart' },\n { value: 'bar', label: 'Bar Chart' },\n { value: 'area', label: 'Area Chart' },\n { value: 'pie', label: 'Pie Chart' },\n { value: 'funnel', label: 'Funnel Chart' },\n];\n\nconst CURVE_TYPES = [\n { value: 'monotone', label: 'Smooth' },\n { value: 'linear', label: 'Linear' },\n { value: 'step', label: 'Step' },\n { value: 'natural', label: 'Natural' },\n];\n\nconst LEGEND_POSITIONS = [\n { value: 'top', label: 'Top' },\n { value: 'bottom', label: 'Bottom' },\n { value: 'left', label: 'Left' },\n { value: 'right', label: 'Right' },\n];\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const ChartConfig: FC<ChartConfigProps> = memo(function ChartConfig({ config, onChange }) {\n const handleChange = useCallback(\n <K extends keyof ConfigType>(key: K, value: ConfigType[K]) => {\n onChange({ ...config, [key]: value });\n },\n [config, onChange]\n );\n\n const isPieOrFunnel = config.chartType === 'pie' || config.chartType === 'funnel';\n\n return (\n <div className=\"space-y-4\">\n {/* Chart Type */}\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Chart Type</label>\n <select\n value={config.chartType || 'line'}\n onChange={(e) => handleChange('chartType', e.target.value as ConfigType['chartType'])}\n className=\"\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n \"\n >\n {CHART_TYPES.map((type) => (\n <option key={type.value} value={type.value}>\n {type.label}\n </option>\n ))}\n </select>\n </div>\n\n {/* Axis Fields (for Line/Bar/Area) */}\n {!isPieOrFunnel && (\n <>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">X-Axis Field</label>\n <input\n type=\"text\"\n value={config.xAxisField || ''}\n onChange={(e) => handleChange('xAxisField', e.target.value)}\n placeholder=\"e.g., date, category\"\n className=\"\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n \"\n />\n </div>\n\n <div className=\"grid grid-cols-2 gap-3\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">X-Axis Label</label>\n <input\n type=\"text\"\n value={config.xAxisLabel || ''}\n onChange={(e) => handleChange('xAxisLabel', e.target.value)}\n placeholder=\"Optional\"\n className=\"\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n \"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Y-Axis Label</label>\n <input\n type=\"text\"\n value={config.yAxisLabel || ''}\n onChange={(e) => handleChange('yAxisLabel', e.target.value)}\n placeholder=\"Optional\"\n className=\"\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n \"\n />\n </div>\n </div>\n\n {/* Curve Type (for Line/Area) */}\n {(config.chartType === 'line' || config.chartType === 'area') && (\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Curve Type</label>\n <select\n value={config.curveType || 'monotone'}\n onChange={(e) => handleChange('curveType', e.target.value as ConfigType['curveType'])}\n className=\"\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n \"\n >\n {CURVE_TYPES.map((type) => (\n <option key={type.value} value={type.value}>\n {type.label}\n </option>\n ))}\n </select>\n </div>\n )}\n </>\n )}\n\n {/* Pie/Funnel specific fields */}\n {isPieOrFunnel && (\n <>\n <div className=\"grid grid-cols-2 gap-3\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Value Field</label>\n <input\n type=\"text\"\n value={config.valueField || ''}\n onChange={(e) => handleChange('valueField', e.target.value)}\n placeholder=\"e.g., value\"\n className=\"\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n \"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Label Field</label>\n <input\n type=\"text\"\n value={config.labelField || ''}\n onChange={(e) => handleChange('labelField', e.target.value)}\n placeholder=\"e.g., name\"\n className=\"\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n \"\n />\n </div>\n </div>\n\n {config.chartType === 'pie' && (\n <label className=\"flex items-center gap-3\">\n <input\n type=\"checkbox\"\n checked={config.showAsDonut === true}\n onChange={(e) => handleChange('showAsDonut', e.target.checked)}\n className=\"\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n \"\n />\n <span className=\"text-sm text-text-primary\">Show as Donut</span>\n </label>\n )}\n </>\n )}\n\n {/* Legend Position */}\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Legend Position</label>\n <select\n value={config.legendPosition || 'bottom'}\n onChange={(e) => handleChange('legendPosition', e.target.value as ConfigType['legendPosition'])}\n className=\"\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n \"\n >\n {LEGEND_POSITIONS.map((pos) => (\n <option key={pos.value} value={pos.value}>\n {pos.label}\n </option>\n ))}\n </select>\n </div>\n\n {/* Selected Fields - Multi-select for choosing which numeric fields to display */}\n {!isPieOrFunnel && (\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">Fields to Display</label>\n <p className=\"text-xs text-text-secondary mb-2\">\n Select which numeric fields to show as chart series. Leave empty to show all.\n </p>\n <input\n type=\"text\"\n value={(config.selectedFields as string[] | undefined)?.join(', ') || ''}\n onChange={(e) => {\n const value = e.target.value.trim();\n const fields = value\n ? value\n .split(',')\n .map((f) => f.trim())\n .filter(Boolean)\n : [];\n handleChange('selectedFields', fields.length > 0 ? fields : undefined);\n }}\n placeholder=\"e.g., revenue, orders, users (comma-separated)\"\n className=\"\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n \"\n />\n <p className=\"text-xs text-text-tertiary mt-1\">Enter field names separated by commas</p>\n </div>\n )}\n\n {/* Toggle Options */}\n <div className=\"space-y-3\">\n <label className=\"flex items-center gap-3\">\n <input\n type=\"checkbox\"\n checked={config.showGrid !== false}\n onChange={(e) => handleChange('showGrid', e.target.checked)}\n className=\"\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n \"\n />\n <span className=\"text-sm text-text-primary\">Show Grid</span>\n </label>\n\n <label className=\"flex items-center gap-3\">\n <input\n type=\"checkbox\"\n checked={config.showLegend !== false}\n onChange={(e) => handleChange('showLegend', e.target.checked)}\n className=\"\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n \"\n />\n <span className=\"text-sm text-text-primary\">Show Legend</span>\n </label>\n\n {!isPieOrFunnel && (\n <>\n <label className=\"flex items-center gap-3\">\n <input\n type=\"checkbox\"\n checked={config.showDataPoints === true}\n onChange={(e) => handleChange('showDataPoints', e.target.checked)}\n className=\"\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n \"\n />\n <span className=\"text-sm text-text-primary\">Show Data Points</span>\n </label>\n\n {(config.chartType === 'bar' || config.chartType === 'area') && (\n <label className=\"flex items-center gap-3\">\n <input\n type=\"checkbox\"\n checked={config.stacked === true}\n onChange={(e) => handleChange('stacked', e.target.checked)}\n className=\"\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n \"\n />\n <span className=\"text-sm text-text-primary\">Stacked</span>\n </label>\n )}\n </>\n )}\n </div>\n </div>\n );\n});\n\nexport default ChartConfig;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ChartConfig.js","names":[],"sources":["../../../../../src/bigconsole/components/widgets/chart/ChartConfig.tsx"],"sourcesContent":["/**\n * ChartConfig Component\n *\n * Configuration panel for Chart widgets.\n */\n\nimport { type FC, memo, useCallback, useMemo } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport type { ChartConfig as ConfigType } from '../../../types';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface ChartConfigProps {\n /** Current configuration */\n config: ConfigType;\n /** Callback when config changes */\n onChange: (config: ConfigType) => void;\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const ChartConfig: FC<ChartConfigProps> = memo(function ChartConfig({ config, onChange }) {\n const { t } = useI18n();\n\n const CHART_TYPES = useMemo(\n () => [\n { value: 'line', label: t('bigconsole.widget.config.chart.type.line', 'Line Chart') },\n { value: 'bar', label: t('bigconsole.widget.config.chart.type.bar', 'Bar Chart') },\n { value: 'area', label: t('bigconsole.widget.config.chart.type.area', 'Area Chart') },\n { value: 'pie', label: t('bigconsole.widget.config.chart.type.pie', 'Pie Chart') },\n { value: 'funnel', label: t('bigconsole.widget.config.chart.type.funnel', 'Funnel Chart') },\n ],\n [t]\n );\n\n const CURVE_TYPES = useMemo(\n () => [\n { value: 'monotone', label: t('bigconsole.widget.config.chart.curve.smooth', 'Smooth') },\n { value: 'linear', label: t('bigconsole.widget.config.chart.curve.linear', 'Linear') },\n { value: 'step', label: t('bigconsole.widget.config.chart.curve.step', 'Step') },\n { value: 'natural', label: t('bigconsole.widget.config.chart.curve.natural', 'Natural') },\n ],\n [t]\n );\n\n const LEGEND_POSITIONS = useMemo(\n () => [\n { value: 'top', label: t('bigconsole.widget.config.chart.legendPosition.top', 'Top') },\n { value: 'bottom', label: t('bigconsole.widget.config.chart.legendPosition.bottom', 'Bottom') },\n { value: 'left', label: t('bigconsole.widget.config.chart.legendPosition.left', 'Left') },\n { value: 'right', label: t('bigconsole.widget.config.chart.legendPosition.right', 'Right') },\n ],\n [t]\n );\n\n const handleChange = useCallback(\n <K extends keyof ConfigType>(key: K, value: ConfigType[K]) => {\n onChange({ ...config, [key]: value });\n },\n [config, onChange]\n );\n\n const isPieOrFunnel = config.chartType === 'pie' || config.chartType === 'funnel';\n\n return (\n <div className=\"min-w-0 space-y-form-gap\">\n {/* Chart Type */}\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {t('bigconsole.widget.config.chart.chartTypeLabel', 'Chart Type')}\n </label>\n <select\n value={config.chartType || 'line'}\n onChange={(e) => handleChange('chartType', e.target.value as ConfigType['chartType'])}\n className=\"\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n \"\n >\n {CHART_TYPES.map((type) => (\n <option key={type.value} value={type.value}>\n {type.label}\n </option>\n ))}\n </select>\n </div>\n\n {/* Axis Fields (for Line/Bar/Area) */}\n {!isPieOrFunnel && (\n <>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {t('bigconsole.widget.config.chart.xAxisFieldLabel', 'X-Axis Field')}\n </label>\n <input\n type=\"text\"\n value={config.xAxisField || ''}\n onChange={(e) => handleChange('xAxisField', e.target.value)}\n placeholder={t('bigconsole.widget.config.chart.xAxisFieldPlaceholder', 'e.g., date, category')}\n className=\"\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n \"\n />\n </div>\n\n <div className=\"grid grid-cols-1 gap-3 sm:grid-cols-2\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {t('bigconsole.widget.config.chart.xAxisLabelLabel', 'X-Axis Label')}\n </label>\n <input\n type=\"text\"\n value={config.xAxisLabel || ''}\n onChange={(e) => handleChange('xAxisLabel', e.target.value)}\n placeholder={t('bigconsole.widget.config.chart.optionalPlaceholder', 'Optional')}\n className=\"\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n \"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {t('bigconsole.widget.config.chart.yAxisLabelLabel', 'Y-Axis Label')}\n </label>\n <input\n type=\"text\"\n value={config.yAxisLabel || ''}\n onChange={(e) => handleChange('yAxisLabel', e.target.value)}\n placeholder={t('bigconsole.widget.config.chart.optionalPlaceholder', 'Optional')}\n className=\"\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n \"\n />\n </div>\n </div>\n\n {/* Curve Type (for Line/Area) */}\n {(config.chartType === 'line' || config.chartType === 'area') && (\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {t('bigconsole.widget.config.chart.curveTypeLabel', 'Curve Type')}\n </label>\n <select\n value={config.curveType || 'monotone'}\n onChange={(e) => handleChange('curveType', e.target.value as ConfigType['curveType'])}\n className=\"\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n \"\n >\n {CURVE_TYPES.map((type) => (\n <option key={type.value} value={type.value}>\n {type.label}\n </option>\n ))}\n </select>\n </div>\n )}\n </>\n )}\n\n {/* Pie/Funnel specific fields */}\n {isPieOrFunnel && (\n <>\n <div className=\"grid grid-cols-1 gap-3 sm:grid-cols-2\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {t('bigconsole.widget.config.chart.valueFieldLabel', 'Value Field')}\n </label>\n <input\n type=\"text\"\n value={config.valueField || ''}\n onChange={(e) => handleChange('valueField', e.target.value)}\n placeholder={t('bigconsole.widget.config.chart.valueFieldPlaceholder', 'e.g., value')}\n className=\"\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n \"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {t('bigconsole.widget.config.chart.labelFieldLabel', 'Label Field')}\n </label>\n <input\n type=\"text\"\n value={config.labelField || ''}\n onChange={(e) => handleChange('labelField', e.target.value)}\n placeholder={t('bigconsole.widget.config.chart.labelFieldPlaceholder', 'e.g., name')}\n className=\"\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n \"\n />\n </div>\n </div>\n\n {config.chartType === 'pie' && (\n <label className=\"flex items-center gap-3\">\n <input\n type=\"checkbox\"\n checked={config.showAsDonut === true}\n onChange={(e) => handleChange('showAsDonut', e.target.checked)}\n className=\"\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n \"\n />\n <span className=\"text-sm text-text-primary\">\n {t('bigconsole.widget.config.chart.showAsDonut', 'Show as Donut')}\n </span>\n </label>\n )}\n </>\n )}\n\n {/* Legend Position */}\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {t('bigconsole.widget.config.chart.legendPositionLabel', 'Legend Position')}\n </label>\n <select\n value={config.legendPosition || 'bottom'}\n onChange={(e) => handleChange('legendPosition', e.target.value as ConfigType['legendPosition'])}\n className=\"\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n \"\n >\n {LEGEND_POSITIONS.map((pos) => (\n <option key={pos.value} value={pos.value}>\n {pos.label}\n </option>\n ))}\n </select>\n </div>\n\n {/* Selected Fields - Multi-select for choosing which numeric fields to display */}\n {!isPieOrFunnel && (\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {t('bigconsole.widget.config.chart.fieldsToDisplayLabel', 'Fields to Display')}\n </label>\n <p className=\"text-xs text-text-secondary mb-2\">\n {t(\n 'bigconsole.widget.config.chart.fieldsToDisplayHelp',\n 'Select which numeric fields to show as chart series. Leave empty to show all.'\n )}\n </p>\n <input\n type=\"text\"\n value={(config.selectedFields as string[] | undefined)?.join(', ') || ''}\n onChange={(e) => {\n const value = e.target.value.trim();\n const fields = value\n ? value\n .split(',')\n .map((f) => f.trim())\n .filter(Boolean)\n : [];\n handleChange('selectedFields', fields.length > 0 ? fields : undefined);\n }}\n placeholder={t(\n 'bigconsole.widget.config.chart.fieldsToDisplayPlaceholder',\n 'e.g., revenue, orders, users (comma-separated)'\n )}\n className=\"\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n \"\n />\n <p className=\"text-xs text-text-muted mt-1\">\n {t('bigconsole.widget.config.chart.fieldsToDisplayHint', 'Enter field names separated by commas')}\n </p>\n </div>\n )}\n\n {/* Toggle Options */}\n <div\n role=\"group\"\n aria-label=\"Display options\"\n className=\"space-y-3 border-t border-[var(--color-border-subtle)] pt-form-gap\"\n >\n {/* Toggles are a different KIND of control from the field stack above,\n so they get their own labelled group instead of being visually\n identical to it (BOFF-5636). */}\n <p className=\"text-xs font-bold uppercase tracking-wider text-text-secondary\">Display options</p>\n <label className=\"flex items-center gap-3\">\n <input\n type=\"checkbox\"\n checked={config.showGrid !== false}\n onChange={(e) => handleChange('showGrid', e.target.checked)}\n className=\"\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n \"\n />\n <span className=\"text-sm text-text-primary\">{t('bigconsole.widget.config.chart.showGrid', 'Show Grid')}</span>\n </label>\n\n <label className=\"flex items-center gap-3\">\n <input\n type=\"checkbox\"\n checked={config.showLegend !== false}\n onChange={(e) => handleChange('showLegend', e.target.checked)}\n className=\"\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n \"\n />\n <span className=\"text-sm text-text-primary\">\n {t('bigconsole.widget.config.chart.showLegend', 'Show Legend')}\n </span>\n </label>\n\n {!isPieOrFunnel && (\n <>\n <label className=\"flex items-center gap-3\">\n <input\n type=\"checkbox\"\n checked={config.showDataPoints === true}\n onChange={(e) => handleChange('showDataPoints', e.target.checked)}\n className=\"\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n \"\n />\n <span className=\"text-sm text-text-primary\">\n {t('bigconsole.widget.config.chart.showDataPoints', 'Show Data Points')}\n </span>\n </label>\n\n {(config.chartType === 'bar' || config.chartType === 'area') && (\n <label className=\"flex items-center gap-3\">\n <input\n type=\"checkbox\"\n checked={config.stacked === true}\n onChange={(e) => handleChange('stacked', e.target.checked)}\n className=\"\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n \"\n />\n <span className=\"text-sm text-text-primary\">\n {t('bigconsole.widget.config.chart.stacked', 'Stacked')}\n </span>\n </label>\n )}\n </>\n )}\n </div>\n </div>\n );\n});\n\nexport default ChartConfig;\n"],"mappings":"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"}