@burdenoff/microfe-bigconsole 2026.805.1 → 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 (150) hide show
  1. package/dist/bigconsole/AdminRoot.js +21 -16
  2. package/dist/bigconsole/AdminRoot.js.map +1 -1
  3. package/dist/bigconsole/BigConsoleRoot.js +44 -39
  4. package/dist/bigconsole/BigConsoleRoot.js.map +1 -1
  5. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js +109 -113
  6. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js.map +1 -1
  7. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js +115 -113
  8. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js.map +1 -1
  9. package/dist/bigconsole/components/dashboard/DashboardCanvas.js +71 -62
  10. package/dist/bigconsole/components/dashboard/DashboardCanvas.js.map +1 -1
  11. package/dist/bigconsole/components/dashboard/DashboardToolbar.js +116 -100
  12. package/dist/bigconsole/components/dashboard/DashboardToolbar.js.map +1 -1
  13. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js +56 -54
  14. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js.map +1 -1
  15. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js +126 -125
  16. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js.map +1 -1
  17. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +151 -150
  18. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js.map +1 -1
  19. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js +77 -76
  20. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js.map +1 -1
  21. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +97 -96
  22. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js.map +1 -1
  23. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js +172 -191
  24. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js.map +1 -1
  25. package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.js +100 -98
  26. package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.js.map +1 -1
  27. package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js +75 -83
  28. package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js.map +1 -1
  29. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js +151 -154
  30. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js.map +1 -1
  31. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js +187 -193
  32. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js.map +1 -1
  33. package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.js +1 -0
  34. package/dist/bigconsole/components/dashboard/WidgetPalette.js +110 -108
  35. package/dist/bigconsole/components/dashboard/WidgetPalette.js.map +1 -1
  36. package/dist/bigconsole/components/datasink/CacheTTLSelector.js +102 -103
  37. package/dist/bigconsole/components/datasink/CacheTTLSelector.js.map +1 -1
  38. package/dist/bigconsole/components/datasink/DataSinkCard.js +20 -20
  39. package/dist/bigconsole/components/datasink/DataSinkCard.js.map +1 -1
  40. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js +36 -41
  41. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js.map +1 -1
  42. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js +38 -37
  43. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js.map +1 -1
  44. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js +113 -117
  45. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js.map +1 -1
  46. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +182 -197
  47. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js.map +1 -1
  48. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js +166 -168
  49. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js.map +1 -1
  50. package/dist/bigconsole/components/parser/DataSinkSelector.js +87 -86
  51. package/dist/bigconsole/components/parser/DataSinkSelector.js.map +1 -1
  52. package/dist/bigconsole/components/parser/ImportParserDialog.js +196 -211
  53. package/dist/bigconsole/components/parser/ImportParserDialog.js.map +1 -1
  54. package/dist/bigconsole/components/parser/ParserSelector.js +130 -128
  55. package/dist/bigconsole/components/parser/ParserSelector.js.map +1 -1
  56. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js +66 -63
  57. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js.map +1 -1
  58. package/dist/bigconsole/components/preview/AiPreviewPanel.js +95 -91
  59. package/dist/bigconsole/components/preview/AiPreviewPanel.js.map +1 -1
  60. package/dist/bigconsole/components/widgets/ActionConfigDialog.js +243 -230
  61. package/dist/bigconsole/components/widgets/ActionConfigDialog.js.map +1 -1
  62. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js +149 -145
  63. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js.map +1 -1
  64. package/dist/bigconsole/components/widgets/PropertiesPanel.js +504 -470
  65. package/dist/bigconsole/components/widgets/PropertiesPanel.js.map +1 -1
  66. package/dist/bigconsole/components/widgets/WidgetMenu.js +87 -76
  67. package/dist/bigconsole/components/widgets/WidgetMenu.js.map +1 -1
  68. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js +44 -47
  69. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js.map +1 -1
  70. package/dist/bigconsole/components/widgets/chart/ChartConfig.js +143 -142
  71. package/dist/bigconsole/components/widgets/chart/ChartConfig.js.map +1 -1
  72. package/dist/bigconsole/components/widgets/comments/WidgetComments.js +101 -88
  73. package/dist/bigconsole/components/widgets/comments/WidgetComments.js.map +1 -1
  74. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js +135 -134
  75. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js.map +1 -1
  76. package/dist/bigconsole/components/widgets/form/FormWidget.js +167 -159
  77. package/dist/bigconsole/components/widgets/form/FormWidget.js.map +1 -1
  78. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js +69 -68
  79. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js.map +1 -1
  80. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js +64 -72
  81. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js.map +1 -1
  82. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js +60 -59
  83. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js.map +1 -1
  84. package/dist/bigconsole/components/widgets/list/ListConfig.js +57 -56
  85. package/dist/bigconsole/components/widgets/list/ListConfig.js.map +1 -1
  86. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js +70 -69
  87. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js.map +1 -1
  88. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js +35 -34
  89. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js.map +1 -1
  90. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js +20 -19
  91. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js.map +1 -1
  92. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js +178 -177
  93. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js.map +1 -1
  94. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js +76 -75
  95. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js.map +1 -1
  96. package/dist/bigconsole/components/widgets/table/TableConfig.js +183 -168
  97. package/dist/bigconsole/components/widgets/table/TableConfig.js.map +1 -1
  98. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js +187 -180
  99. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js.map +1 -1
  100. package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.js +120 -118
  101. package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.js.map +1 -1
  102. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js +40 -38
  103. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js.map +1 -1
  104. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js +150 -148
  105. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js.map +1 -1
  106. package/dist/bigconsole/pages/DashboardBuilderPage.js +189 -175
  107. package/dist/bigconsole/pages/DashboardBuilderPage.js.map +1 -1
  108. package/dist/bigconsole/pages/DashboardViewPage.js +200 -187
  109. package/dist/bigconsole/pages/DashboardViewPage.js.map +1 -1
  110. package/dist/bigconsole/pages/DashboardsPage.js +379 -324
  111. package/dist/bigconsole/pages/DashboardsPage.js.map +1 -1
  112. package/dist/bigconsole/pages/DataParsersPage.js +185 -178
  113. package/dist/bigconsole/pages/DataParsersPage.js.map +1 -1
  114. package/dist/bigconsole/pages/DataSinkBuilderPage.js +195 -170
  115. package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +1 -1
  116. package/dist/bigconsole/pages/DataSinkViewPage.js +224 -200
  117. package/dist/bigconsole/pages/DataSinkViewPage.js.map +1 -1
  118. package/dist/bigconsole/pages/DataSinksPage.js +281 -268
  119. package/dist/bigconsole/pages/DataSinksPage.js.map +1 -1
  120. package/dist/bigconsole/pages/DataSourcesPage.js +8 -7
  121. package/dist/bigconsole/pages/DataSourcesPage.js.map +1 -1
  122. package/dist/bigconsole/pages/InsightsPage.js +238 -208
  123. package/dist/bigconsole/pages/InsightsPage.js.map +1 -1
  124. package/dist/bigconsole/pages/ParserBuilderPage.js +480 -413
  125. package/dist/bigconsole/pages/ParserBuilderPage.js.map +1 -1
  126. package/dist/bigconsole/pages/ParserViewPage.js +192 -172
  127. package/dist/bigconsole/pages/ParserViewPage.js.map +1 -1
  128. package/dist/bigconsole/pages/PipelineBuilderPage.js +198 -163
  129. package/dist/bigconsole/pages/PipelineBuilderPage.js.map +1 -1
  130. package/dist/bigconsole/pages/PipelineViewPage.js +138 -133
  131. package/dist/bigconsole/pages/PipelineViewPage.js.map +1 -1
  132. package/dist/bigconsole/pages/PipelinesPage.js +162 -136
  133. package/dist/bigconsole/pages/PipelinesPage.js.map +1 -1
  134. package/dist/bigconsole/pages/SettingsPage.js +177 -172
  135. package/dist/bigconsole/pages/SettingsPage.js.map +1 -1
  136. package/dist/bigconsole/pages/WidgetDemoPage.js +121 -83
  137. package/dist/bigconsole/pages/WidgetDemoPage.js.map +1 -1
  138. package/dist/bigconsole/pages/WorkflowViewPage.js +269 -242
  139. package/dist/bigconsole/pages/WorkflowViewPage.js.map +1 -1
  140. package/dist/bigconsole/pages/WorkflowsPage.js +153 -138
  141. package/dist/bigconsole/pages/WorkflowsPage.js.map +1 -1
  142. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js +111 -109
  143. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js.map +1 -1
  144. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js +127 -126
  145. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js.map +1 -1
  146. package/dist/bigconsole/renderers/adapters/CustomRenderer.js +103 -103
  147. package/dist/bigconsole/renderers/adapters/CustomRenderer.js.map +1 -1
  148. package/dist/constants/permissions.js +83 -0
  149. package/dist/constants/permissions.js.map +1 -0
  150. package/package.json +2 -1
@@ -1,246 +1,247 @@
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", {
66
+ }, [e, s]), p = e.chartType === "pie" || e.chartType === "funnel";
67
+ return /* @__PURE__ */ o("div", {
67
68
  className: "space-y-4",
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
+ /* @__PURE__ */ o("div", {
93
94
  className: "grid grid-cols-2 gap-3",
94
- children: [/* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("label", {
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
+ p && /* @__PURE__ */ o(i, { children: [/* @__PURE__ */ o("div", {
128
129
  className: "grid grid-cols-2 gap-3",
129
- children: [/* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("label", {
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
+ /* @__PURE__ */ a("p", {
192
193
  className: "text-xs text-text-tertiary mt-1",
193
- children: "Enter field names separated by commas"
194
+ children: c("bigconsole.widget.config.chart.fieldsToDisplayHint", "Enter field names separated by commas")
194
195
  })
195
196
  ] }),
196
- /* @__PURE__ */ i("div", {
197
+ /* @__PURE__ */ o("div", {
197
198
  className: "space-y-3",
198
199
  children: [
199
- /* @__PURE__ */ i("label", {
200
+ /* @__PURE__ */ o("label", {
200
201
  className: "flex items-center gap-3",
201
- children: [/* @__PURE__ */ r("input", {
202
+ children: [/* @__PURE__ */ a("input", {
202
203
  type: "checkbox",
203
204
  checked: e.showGrid !== !1,
204
- onChange: (e) => l("showGrid", e.target.checked),
205
+ onChange: (e) => f("showGrid", e.target.checked),
205
206
  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", {
207
+ }), /* @__PURE__ */ a("span", {
207
208
  className: "text-sm text-text-primary",
208
- children: "Show Grid"
209
+ children: c("bigconsole.widget.config.chart.showGrid", "Show Grid")
209
210
  })]
210
211
  }),
211
- /* @__PURE__ */ i("label", {
212
+ /* @__PURE__ */ o("label", {
212
213
  className: "flex items-center gap-3",
213
- children: [/* @__PURE__ */ r("input", {
214
+ children: [/* @__PURE__ */ a("input", {
214
215
  type: "checkbox",
215
216
  checked: e.showLegend !== !1,
216
- onChange: (e) => l("showLegend", e.target.checked),
217
+ onChange: (e) => f("showLegend", e.target.checked),
217
218
  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", {
219
+ }), /* @__PURE__ */ a("span", {
219
220
  className: "text-sm text-text-primary",
220
- children: "Show Legend"
221
+ children: c("bigconsole.widget.config.chart.showLegend", "Show Legend")
221
222
  })]
222
223
  }),
223
- !u && /* @__PURE__ */ i(n, { children: [/* @__PURE__ */ i("label", {
224
+ !p && /* @__PURE__ */ o(i, { children: [/* @__PURE__ */ o("label", {
224
225
  className: "flex items-center gap-3",
225
- children: [/* @__PURE__ */ r("input", {
226
+ children: [/* @__PURE__ */ a("input", {
226
227
  type: "checkbox",
227
228
  checked: e.showDataPoints === !0,
228
- onChange: (e) => l("showDataPoints", e.target.checked),
229
+ onChange: (e) => f("showDataPoints", e.target.checked),
229
230
  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", {
231
+ }), /* @__PURE__ */ a("span", {
231
232
  className: "text-sm text-text-primary",
232
- children: "Show Data Points"
233
+ children: c("bigconsole.widget.config.chart.showDataPoints", "Show Data Points")
233
234
  })]
234
- }), (e.chartType === "bar" || e.chartType === "area") && /* @__PURE__ */ i("label", {
235
+ }), (e.chartType === "bar" || e.chartType === "area") && /* @__PURE__ */ o("label", {
235
236
  className: "flex items-center gap-3",
236
- children: [/* @__PURE__ */ r("input", {
237
+ children: [/* @__PURE__ */ a("input", {
237
238
  type: "checkbox",
238
239
  checked: e.stacked === !0,
239
- onChange: (e) => l("stacked", e.target.checked),
240
+ onChange: (e) => f("stacked", e.target.checked),
240
241
  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", {
242
+ }), /* @__PURE__ */ a("span", {
242
243
  className: "text-sm text-text-primary",
243
- children: "Stacked"
244
+ children: c("bigconsole.widget.config.chart.stacked", "Stacked")
244
245
  })]
245
246
  })] })
246
247
  ]
@@ -249,6 +250,6 @@ var a = [
249
250
  });
250
251
  });
251
252
  //#endregion
252
- export { c as default };
253
+ export { s as default };
253
254
 
254
255
  //# 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=\"space-y-4\">\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-2 gap-3\">\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-2 gap-3\">\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-tertiary 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 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\">{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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"}