@burdenoff/microfe-bigconsole 2026.1012.3 → 2026.1012.5

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 (158) hide show
  1. package/dist/bigconsole/BigConsoleRoutes.js +149 -140
  2. package/dist/bigconsole/assistant/assistantApi.js +5 -5
  3. package/dist/bigconsole/assistant/assistantProduct.js +4 -1
  4. package/dist/bigconsole/assistant/displayCopy.d.ts +32 -0
  5. package/dist/bigconsole/assistant/pageContext.d.ts +14 -0
  6. package/dist/bigconsole/assistant/pageContext.js +6 -1
  7. package/dist/bigconsole/assistant/pageControls.d.ts +81 -0
  8. package/dist/bigconsole/assistant/pageControls.js +169 -0
  9. package/dist/bigconsole/assistant/previewControl.d.ts +16 -0
  10. package/dist/bigconsole/assistant/previewControl.js +10 -0
  11. package/dist/bigconsole/assistant/recordAdapters.js +27 -26
  12. package/dist/bigconsole/assistant/usePreviewControl.d.ts +2 -0
  13. package/dist/bigconsole/assistant/usePreviewControl.js +20 -0
  14. package/dist/bigconsole/components/builder/inspector/AppearanceSection.js +33 -18
  15. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js +31 -31
  16. package/dist/bigconsole/components/common/SortBySelect.d.ts +11 -0
  17. package/dist/bigconsole/components/common/SortBySelect.js +29 -0
  18. package/dist/bigconsole/components/common/index.d.ts +1 -0
  19. package/dist/bigconsole/components/common/index.js +1 -0
  20. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js +44 -44
  21. package/dist/bigconsole/components/dashboard/DashboardCanvas.js +36 -36
  22. package/dist/bigconsole/components/dashboard/DashboardToolbar.js +59 -59
  23. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js +15 -15
  24. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js +30 -30
  25. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +41 -41
  26. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js +34 -34
  27. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +34 -34
  28. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js +153 -153
  29. package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js +21 -21
  30. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js +46 -46
  31. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js +134 -134
  32. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js +101 -101
  33. package/dist/bigconsole/components/dashboard/TemplateInstallOptions.js +31 -31
  34. package/dist/bigconsole/components/dashboard/TemplateLayoutPreview.js +15 -15
  35. package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.js +1 -1
  36. package/dist/bigconsole/components/dashboard/WidgetPalette.js +154 -150
  37. package/dist/bigconsole/components/datasink/AlertExecutionHistory.js +37 -37
  38. package/dist/bigconsole/components/datasink/AlertRuleEditor.js +66 -66
  39. package/dist/bigconsole/components/datasink/CacheTTLSelector.js +35 -35
  40. package/dist/bigconsole/components/datasink/DataSinkCard.js +51 -50
  41. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js +18 -18
  42. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js +20 -20
  43. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js +47 -47
  44. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +91 -91
  45. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js +35 -35
  46. package/dist/bigconsole/components/embed/renderer-manifest.js +12 -0
  47. package/dist/bigconsole/components/parser/DataSinkSelector.js +40 -40
  48. package/dist/bigconsole/components/parser/ImportParserDialog.js +120 -120
  49. package/dist/bigconsole/components/parser/ParserSelector.js +51 -51
  50. package/dist/bigconsole/components/pipeline/PipelineScopePicker.js +10 -10
  51. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js +77 -76
  52. package/dist/bigconsole/components/preview/AiPreviewPanel.js +96 -95
  53. package/dist/bigconsole/components/widgets/ActionConfigDialog.js +4 -4
  54. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js +93 -93
  55. package/dist/bigconsole/components/widgets/PropertiesPanel.js +507 -499
  56. package/dist/bigconsole/components/widgets/WidgetRegistry.js +122 -1
  57. package/dist/bigconsole/components/widgets/WidgetWrapper.js +227 -224
  58. package/dist/bigconsole/components/widgets/advanced/AdvancedWidgetConfig.d.ts +10 -0
  59. package/dist/bigconsole/components/widgets/advanced/AdvancedWidgetConfig.js +113 -0
  60. package/dist/bigconsole/components/widgets/advanced/AdvancedWidgets.d.ts +10 -0
  61. package/dist/bigconsole/components/widgets/advanced/AdvancedWidgets.js +187 -0
  62. package/dist/bigconsole/components/widgets/advanced/boxPlotDescription.d.ts +7 -0
  63. package/dist/bigconsole/components/widgets/advanced/boxPlotDescription.js +12 -0
  64. package/dist/bigconsole/components/widgets/advanced/data.d.ts +36 -0
  65. package/dist/bigconsole/components/widgets/advanced/data.js +113 -0
  66. package/dist/bigconsole/components/widgets/advanced/mapData.d.ts +10 -0
  67. package/dist/bigconsole/components/widgets/advanced/mapData.js +22 -0
  68. package/dist/bigconsole/components/widgets/advanced/waterfallData.d.ts +15 -0
  69. package/dist/bigconsole/components/widgets/advanced/waterfallData.js +28 -0
  70. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js +4 -4
  71. package/dist/bigconsole/components/widgets/chart/ChartConfig.js +48 -48
  72. package/dist/bigconsole/components/widgets/chart/charts/WaterfallChart.js +34 -37
  73. package/dist/bigconsole/components/widgets/comments/WidgetComments.js +46 -46
  74. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js +61 -61
  75. package/dist/bigconsole/components/widgets/form/FormWidget.js +36 -36
  76. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js +42 -42
  77. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js +25 -25
  78. package/dist/bigconsole/components/widgets/index.js +1 -1
  79. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js +4 -4
  80. package/dist/bigconsole/components/widgets/list/ListConfig.js +30 -30
  81. package/dist/bigconsole/components/widgets/map-widget/MapWidget.d.ts +2 -0
  82. package/dist/bigconsole/components/widgets/map-widget/MapWidget.js +64 -63
  83. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js +38 -38
  84. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js +9 -9
  85. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js +9 -9
  86. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js +49 -49
  87. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js +39 -39
  88. package/dist/bigconsole/components/widgets/table/TableConfig.js +73 -73
  89. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js +64 -64
  90. package/dist/bigconsole/components/workflow/WorkflowOpenGuard.js +15 -15
  91. package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.js +15 -15
  92. package/dist/bigconsole/constants/backendErrors.js +94 -0
  93. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js +10 -10
  94. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js +67 -67
  95. package/dist/bigconsole/graphql/widgetCapabilities.d.ts +7 -0
  96. package/dist/bigconsole/graphql/widgetCapabilities.js +37 -0
  97. package/dist/bigconsole/hooks/useDashboardLayoutBaseline.d.ts +14 -0
  98. package/dist/bigconsole/hooks/useDashboardLayoutBaseline.js +32 -0
  99. package/dist/bigconsole/hooks/useDataSinkAlerts.d.ts +23 -0
  100. package/dist/bigconsole/hooks/useDataSinkAlerts.js +138 -113
  101. package/dist/bigconsole/hooks/useDrilldown.js +3 -3
  102. package/dist/bigconsole/hooks/useGlobalFilters.js +3 -3
  103. package/dist/bigconsole/hooks/useWidgetCatalog.js +46 -41
  104. package/dist/bigconsole/hooks/useWidgetOperations.js +113 -88
  105. package/dist/bigconsole/pages/AdminPage.js +130 -130
  106. package/dist/bigconsole/pages/DashboardBuilderPage.js +72 -60
  107. package/dist/bigconsole/pages/DashboardViewPage.js +244 -221
  108. package/dist/bigconsole/pages/DashboardsPage.js +269 -221
  109. package/dist/bigconsole/pages/DataParsersPage.js +180 -157
  110. package/dist/bigconsole/pages/DataSinkAlertsPage.js +62 -55
  111. package/dist/bigconsole/pages/DataSinkBuilderPage.js +252 -234
  112. package/dist/bigconsole/pages/DataSinkViewPage.js +1 -1
  113. package/dist/bigconsole/pages/DataSinksPage.js +335 -299
  114. package/dist/bigconsole/pages/DataSourcesPage.js +5 -5
  115. package/dist/bigconsole/pages/InsightsPage.js +279 -265
  116. package/dist/bigconsole/pages/OverviewPage.js +47 -47
  117. package/dist/bigconsole/pages/ParserBuilderPage.js +229 -213
  118. package/dist/bigconsole/pages/ParserViewPage.js +97 -97
  119. package/dist/bigconsole/pages/PipelineBuilderPage.js +256 -214
  120. package/dist/bigconsole/pages/PipelineViewPage.js +146 -146
  121. package/dist/bigconsole/pages/PipelinesPage.js +107 -88
  122. package/dist/bigconsole/pages/SettingsPage.js +179 -173
  123. package/dist/bigconsole/pages/WidgetDemoPage.js +42 -42
  124. package/dist/bigconsole/pages/WorkflowViewPage.js +1 -1
  125. package/dist/bigconsole/pages/WorkflowsPage.js +141 -141
  126. package/dist/bigconsole/providers/BigConsoleQuotaProvider.js +12 -12
  127. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js +34 -34
  128. package/dist/bigconsole/renderers/adapters/BigConsoleRenderer.js +8 -5
  129. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js +69 -69
  130. package/dist/bigconsole/renderers/adapters/CustomRenderer.js +46 -46
  131. package/dist/bigconsole/store/widgetStore.d.ts +12 -0
  132. package/dist/bigconsole/store/widgetStore.js +3 -1
  133. package/dist/bigconsole/types/index.d.ts +1 -1
  134. package/dist/bigconsole/utils/advancedWidgetCapabilities.d.ts +14 -0
  135. package/dist/bigconsole/utils/advancedWidgetCapabilities.js +36 -0
  136. package/dist/bigconsole/utils/backendError.d.ts +18 -0
  137. package/dist/bigconsole/utils/backendError.js +42 -0
  138. package/dist/bigconsole/utils/dashboardList.d.ts +28 -0
  139. package/dist/bigconsole/utils/dashboardList.js +15 -0
  140. package/dist/bigconsole/utils/dataSinkList.d.ts +15 -0
  141. package/dist/bigconsole/utils/dataSinkList.js +15 -0
  142. package/dist/bigconsole/utils/formDirty.d.ts +82 -0
  143. package/dist/bigconsole/utils/formDirty.js +21 -0
  144. package/dist/bigconsole/utils/insightsDraft.d.ts +29 -0
  145. package/dist/bigconsole/utils/insightsDraft.js +8 -0
  146. package/dist/bigconsole/utils/layoutBaseline.d.ts +130 -0
  147. package/dist/bigconsole/utils/layoutBaseline.js +96 -0
  148. package/dist/bigconsole/utils/listSort.d.ts +80 -0
  149. package/dist/bigconsole/utils/listSort.js +85 -0
  150. package/dist/bigconsole/utils/widgetFormDirty.d.ts +16 -0
  151. package/dist/bigconsole/utils/widgetFormDirty.js +13 -0
  152. package/dist/bigconsole/utils/widgetTypeMapping.d.ts +1 -1
  153. package/dist/bigconsole/utils/widgetTypeMapping.js +13 -2
  154. package/dist/bigconsole/workflowOpen.js +15 -14
  155. package/dist/generated/wspace-operations.d.ts +61 -2
  156. package/dist/generated/wspace-operations.js +44 -18
  157. package/dist/generated/wspace-types.d.ts +34 -3
  158. package/package.json +3 -3
@@ -1,44 +1,44 @@
1
- import { jsx as e, jsxs as t } from "react/jsx-runtime";
2
- import { useI18n as n } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
1
+ import { useI18n as e } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
3
  //#region src/bigconsole/components/dashboard/TemplateLayoutPreview.tsx
4
4
  function r(e) {
5
5
  return typeof e == "object" && !!e && !Array.isArray(e);
6
6
  }
7
7
  function i({ content: i }) {
8
- let { t: a } = n();
9
- return !r(i.definition) || !Array.isArray(i.definition.pages) ? null : /* @__PURE__ */ t("section", {
8
+ let { t: a } = e();
9
+ return !r(i.definition) || !Array.isArray(i.definition.pages) ? null : /* @__PURE__ */ n("section", {
10
10
  "aria-label": a("bigconsole.dashboards.templatePreview.label", "Template layout preview"),
11
11
  className: "mb-form-gap space-y-control-gap",
12
12
  children: [
13
- /* @__PURE__ */ e("h3", {
13
+ /* @__PURE__ */ t("h3", {
14
14
  className: "text-sm font-medium",
15
15
  children: a("bigconsole.dashboards.templatePreview.title", "Layout preview")
16
16
  }),
17
- i.definition.pages.filter(r).map((n, i) => /* @__PURE__ */ t("div", { children: [/* @__PURE__ */ e("p", {
17
+ i.definition.pages.filter(r).map((e, i) => /* @__PURE__ */ n("div", { children: [/* @__PURE__ */ t("p", {
18
18
  className: "text-xs text-text-muted",
19
- children: typeof n.name == "string" ? n.name : a("bigconsole.dashboards.templatePreview.page", "Page {number}", { number: i + 1 })
20
- }), /* @__PURE__ */ e("div", {
19
+ children: typeof e.name == "string" ? e.name : a("bigconsole.dashboards.templatePreview.page", "Page {number}", { number: i + 1 })
20
+ }), /* @__PURE__ */ t("div", {
21
21
  style: {
22
22
  display: "grid",
23
23
  gridTemplateColumns: "repeat(12, minmax(0, 1fr))",
24
24
  gap: "var(--space-controlGap)"
25
25
  },
26
- children: Array.isArray(n.widgets) && n.widgets.filter(r).map((n, i) => {
27
- let o = r(n.config) ? n.config : {}, s = typeof o._internalWidgetType == "string" && o._internalWidgetType.trim() ? o._internalWidgetType : n.type, c = typeof o.chartType == "string" ? a("bigconsole.dashboards.templatePreview.chartType", "{type} chart", { type: o.chartType }) : typeof s == "string" ? s.toLowerCase().replaceAll("_", " ") : a("bigconsole.dashboards.templatePreview.widgetType", "Widget"), l = r(n.position) ? n.position : {};
28
- return /* @__PURE__ */ t("div", {
26
+ children: Array.isArray(e.widgets) && e.widgets.filter(r).map((e, i) => {
27
+ let o = r(e.config) ? e.config : {}, s = typeof o._internalWidgetType == "string" && o._internalWidgetType.trim() ? o._internalWidgetType : e.type, c = typeof o.chartType == "string" ? a("bigconsole.dashboards.templatePreview.chartType", "{type} chart", { type: o.chartType }) : typeof s == "string" ? s.toLowerCase().replaceAll("_", " ") : a("bigconsole.dashboards.templatePreview.widgetType", "Widget"), l = r(e.position) ? e.position : {};
28
+ return /* @__PURE__ */ n("div", {
29
29
  className: "rounded-card border border-border-default bg-bg-sunken p-3",
30
30
  style: { gridColumn: `span ${typeof l.width == "number" ? Math.min(12, Math.max(1, Math.round(l.width))) : 6}` },
31
- children: [/* @__PURE__ */ e("p", {
31
+ children: [/* @__PURE__ */ t("p", {
32
32
  className: "truncate text-xs font-medium",
33
- children: typeof n.title == "string" ? n.title : a("bigconsole.dashboards.templatePreview.widget", "Widget {number}", { number: i + 1 })
34
- }), /* @__PURE__ */ e("p", {
33
+ children: typeof e.title == "string" ? e.title : a("bigconsole.dashboards.templatePreview.widget", "Widget {number}", { number: i + 1 })
34
+ }), /* @__PURE__ */ t("p", {
35
35
  className: "truncate text-xs text-text-muted",
36
36
  children: c
37
37
  })]
38
38
  }, i);
39
39
  })
40
40
  })] }, i)),
41
- /* @__PURE__ */ e("p", {
41
+ /* @__PURE__ */ t("p", {
42
42
  className: "text-xs text-text-muted",
43
43
  children: a("bigconsole.dashboards.templatePreview.help", "Data appears after you connect a source. The dashboard uses these saved widgets and layouts.")
44
44
  })
@@ -1,4 +1,4 @@
1
1
  import "../../../hooks/index.js";
2
2
  import "react";
3
- import "react/jsx-runtime";
4
3
  import "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
4
+ import "react/jsx-runtime";
@@ -3,35 +3,36 @@ import "../../context/index.js";
3
3
  import { SECTION_FOCUS_RING as n } from "../common/sectionStyles.js";
4
4
  import "../common/index.js";
5
5
  import { WIDGET_CATEGORY_LABELS as r, getWidgetCategories as i, getWidgetKey as a } from "../widgets/WidgetRegistry.js";
6
- import { memo as o, useCallback as s, useMemo as c, useState as l } from "react";
7
- import { Activity as u, BarChart3 as d, Calendar as f, ChevronDown as p, ChevronRight as m, Columns as h, ExternalLink as g, FileText as _, Filter as v, Gauge as y, GitBranch as b, Grid3x3 as x, GripVertical as S, Layers as C, LayoutDashboard as w, List as T, MapPin as E, Puzzle as D, Search as O, Store as k, Table as A, TrendingUp as j, Type as M, X as N } from "lucide-react";
8
- import { Input as P } from "@burdenoff/fe-libs/ui";
9
- import { jsx as F, jsxs as I } from "react/jsx-runtime";
10
- import { useI18n as L } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
6
+ import { filterAdvancedWidgetDefinitions as o } from "../../utils/advancedWidgetCapabilities.js";
7
+ import { memo as s, useCallback as c, useMemo as l, useState as u } from "react";
8
+ import { Activity as d, BarChart3 as f, Calendar as p, ChevronDown as m, ChevronRight as h, Columns as g, ExternalLink as _, FileText as v, Filter as y, Gauge as b, GitBranch as x, Grid3x3 as S, GripVertical as C, Layers as w, LayoutDashboard as T, List as E, MapPin as D, Puzzle as O, Search as k, Store as A, Table as j, TrendingUp as M, Type as N, X as P } from "lucide-react";
9
+ import { Input as F } from "@burdenoff/fe-libs/ui";
10
+ import { useI18n as I } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
11
+ import { jsx as L, jsxs as R } from "react/jsx-runtime";
11
12
  //#region src/bigconsole/components/dashboard/WidgetPalette.tsx
12
- var R = {
13
- TrendingUp: j,
14
- BarChart3: d,
15
- Filter: v,
16
- Table: A,
17
- Grid3x3: x,
18
- Gauge: y,
19
- Activity: u,
20
- List: T,
21
- FileText: _,
22
- Type: M,
23
- ExternalLink: g,
24
- MapPin: E,
25
- Calendar: f,
26
- Columns: h,
27
- GitBranch: b,
28
- Puzzle: D,
29
- LayoutDashboard: w
13
+ var z = {
14
+ TrendingUp: M,
15
+ BarChart3: f,
16
+ Filter: y,
17
+ Table: j,
18
+ Grid3x3: S,
19
+ Gauge: b,
20
+ Activity: d,
21
+ List: E,
22
+ FileText: v,
23
+ Type: N,
24
+ ExternalLink: _,
25
+ MapPin: D,
26
+ Calendar: p,
27
+ Columns: g,
28
+ GitBranch: x,
29
+ Puzzle: O,
30
+ LayoutDashboard: T
30
31
  };
31
- function z(e) {
32
- return R[e] || D;
32
+ function B(e) {
33
+ return z[e] || O;
33
34
  }
34
- var B = {
35
+ var V = {
35
36
  container: {
36
37
  backgroundColor: "var(--color-bg-surface)",
37
38
  display: "flex",
@@ -306,8 +307,8 @@ var B = {
306
307
  cursor: "pointer",
307
308
  transition: "border-color 0.15s, color 0.15s"
308
309
  }
309
- }, V = o(function({ isOpen: o, onClose: u, onWidgetSelect: d, onDragStart: f, onDragEnd: h, installedWidgets: _ = [], installedWidgetsLoading: v = !1, definitions: y }) {
310
- let { t: b } = L(), x = t(), w = e(), [T, E] = l(""), [D, A] = l(new Set([
310
+ }, H = s(function({ isOpen: s, onClose: d, onWidgetSelect: f, onDragStart: p, onDragEnd: g, installedWidgets: v = [], installedWidgetsLoading: y = !1, definitions: b }) {
311
+ let { t: x } = I(), S = t(), T = e(), [E, D] = u(""), [O, j] = u(new Set([
311
312
  "KPI",
312
313
  "Visualization",
313
314
  "Data",
@@ -315,14 +316,17 @@ var B = {
315
316
  "Temporal",
316
317
  "Custom",
317
318
  "Installed"
318
- ])), [j, M] = l(null), R = c(() => (y ? Object.keys(r).map((e) => ({
319
+ ])), [M, N] = u(null), z = l(() => (b ? Object.keys(r).map((e) => ({
319
320
  category: e,
320
321
  label: r[e],
321
- widgets: y.filter((t) => t.category === e)
322
- })) : i()).map((e) => {
322
+ widgets: b.filter((t) => t.category === e)
323
+ })) : i().map((e) => ({
324
+ ...e,
325
+ widgets: o(e.widgets, [])
326
+ }))).map((e) => {
323
327
  if (e.category === "Installed") {
324
328
  let t = /* @__PURE__ */ new Map();
325
- for (let e of _) t.set(e.name.toLowerCase(), e);
329
+ for (let e of v) t.set(e.name.toLowerCase(), e);
326
330
  for (let n of e.widgets) {
327
331
  let e = n.name.toLowerCase(), r = t.get(e);
328
332
  t.set(e, r ? {
@@ -339,19 +343,19 @@ var B = {
339
343
  };
340
344
  }
341
345
  return e;
342
- }).filter((e) => e.category !== "Installed" || e.widgets.length > 0), [_, y]), V = c(() => {
343
- if (!T.trim()) return R;
344
- let e = T.toLowerCase();
345
- return R.map((t) => ({
346
+ }).filter((e) => e.category !== "Installed" || e.widgets.length > 0), [v, b]), H = l(() => {
347
+ if (!E.trim()) return z;
348
+ let e = E.toLowerCase();
349
+ return z.map((t) => ({
346
350
  ...t,
347
351
  widgets: t.widgets.filter((t) => t.name.toLowerCase().includes(e) || t.description.toLowerCase().includes(e) || t.tags.some((t) => t.includes(e)))
348
352
  })).filter((e) => e.widgets.length > 0);
349
- }, [R, T]), H = s((e) => {
350
- A((t) => {
353
+ }, [z, E]), U = c((e) => {
354
+ j((t) => {
351
355
  let n = new Set(t);
352
356
  return n.has(e) ? n.delete(e) : n.add(e), n;
353
357
  });
354
- }, []), U = s((e, t) => {
358
+ }, []), W = c((e, t) => {
355
359
  e.dataTransfer.setData("application/json", JSON.stringify({
356
360
  type: t.type,
357
361
  name: t.name,
@@ -362,31 +366,31 @@ var B = {
362
366
  let n = document.createElement("div");
363
367
  n.style.cssText = "\n position: absolute;\n top: -1000px;\n left: -1000px;\n padding: 8px 12px;\n background: var(--color-bg-surface);\n border: 2px solid var(--color-action-primary-bg);\n border-radius: var(--radius-card);\n font-size: var(--font-size-body-sm);\n font-weight: 500;\n color: var(--color-text-primary);\n box-shadow: var(--shadow-elevation-3);\n ", n.textContent = t.name, document.body.appendChild(n), e.dataTransfer.setDragImage(n, 0, 0), setTimeout(() => {
364
368
  document.body.removeChild(n);
365
- }, 0), f?.(t.type, t);
366
- }, [f]), W = s(() => {
367
- h?.();
368
- }, [h]), G = s((e) => {
369
- d?.(e.type, e);
370
- }, [d]), K = s(() => {
369
+ }, 0), p?.(t.type, t);
370
+ }, [p]), G = c(() => {
371
+ g?.();
372
+ }, [g]), K = c((e) => {
373
+ f?.(e.type, e);
374
+ }, [f]), q = c(() => {
371
375
  if (typeof window > "u") return;
372
- let e = `${window.location.origin}${w}/store${window.location.search}`;
376
+ let e = `${window.location.origin}${T}/store${window.location.search}`;
373
377
  window.open(e, "_blank", "noopener,noreferrer");
374
- }, [w]);
375
- return o ? /* @__PURE__ */ I("section", {
378
+ }, [T]);
379
+ return s ? /* @__PURE__ */ R("section", {
376
380
  "aria-label": "Widget palette",
377
381
  "data-testid": "widget-palette",
378
- style: B.container,
382
+ style: V.container,
379
383
  className: "h-auto max-h-[45vh] w-full border-b border-[var(--color-border-subtle)] md:h-full md:max-h-none md:w-[300px] md:border-b-0 md:border-r",
380
384
  children: [
381
- /* @__PURE__ */ I("div", {
382
- style: B.header,
383
- children: [/* @__PURE__ */ I("div", {
384
- style: B.headerTop,
385
- children: [/* @__PURE__ */ I("div", {
386
- style: B.headerTitle,
387
- children: [/* @__PURE__ */ F("div", {
388
- style: B.headerIcon,
389
- children: /* @__PURE__ */ F(C, {
385
+ /* @__PURE__ */ R("div", {
386
+ style: V.header,
387
+ children: [/* @__PURE__ */ R("div", {
388
+ style: V.headerTop,
389
+ children: [/* @__PURE__ */ R("div", {
390
+ style: V.headerTitle,
391
+ children: [/* @__PURE__ */ L("div", {
392
+ style: V.headerIcon,
393
+ children: /* @__PURE__ */ L(w, {
390
394
  "aria-hidden": "true",
391
395
  style: {
392
396
  width: "18px",
@@ -394,21 +398,21 @@ var B = {
394
398
  color: "var(--color-action-primary-text)"
395
399
  }
396
400
  })
397
- }), /* @__PURE__ */ I("div", { children: [/* @__PURE__ */ F("h2", {
398
- style: B.title,
399
- children: b("bigconsole.dashboards.widgetPalette.title", "Widgets")
400
- }), /* @__PURE__ */ F("p", {
401
- style: B.subtitle,
402
- children: b("bigconsole.dashboards.widgetPalette.subtitle", "Drag or click to add")
401
+ }), /* @__PURE__ */ R("div", { children: [/* @__PURE__ */ L("h2", {
402
+ style: V.title,
403
+ children: x("bigconsole.dashboards.widgetPalette.title", "Widgets")
404
+ }), /* @__PURE__ */ L("p", {
405
+ style: V.subtitle,
406
+ children: x("bigconsole.dashboards.widgetPalette.subtitle", "Drag or click to add")
403
407
  })] })]
404
- }), /* @__PURE__ */ F("button", {
408
+ }), /* @__PURE__ */ L("button", {
405
409
  type: "button",
406
- onClick: u,
410
+ onClick: d,
407
411
  "aria-label": "Close widget palette",
408
412
  title: "Close widget palette",
409
- style: B.closeButton,
413
+ style: V.closeButton,
410
414
  className: `hover:bg-action-ghost-bgHover motion-safe:transition-colors ${n}`,
411
- children: /* @__PURE__ */ F(N, {
415
+ children: /* @__PURE__ */ L(P, {
412
416
  "aria-hidden": "true",
413
417
  style: {
414
418
  width: "16px",
@@ -416,110 +420,110 @@ var B = {
416
420
  }
417
421
  })
418
422
  })]
419
- }), /* @__PURE__ */ I("div", {
420
- style: B.searchContainer,
423
+ }), /* @__PURE__ */ R("div", {
424
+ style: V.searchContainer,
421
425
  children: [
422
- /* @__PURE__ */ F("label", {
426
+ /* @__PURE__ */ L("label", {
423
427
  htmlFor: "widget-palette-search",
424
428
  className: "sr-only",
425
429
  children: "Search widgets"
426
430
  }),
427
- /* @__PURE__ */ F(O, {
431
+ /* @__PURE__ */ L(k, {
428
432
  "aria-hidden": "true",
429
- style: B.searchIcon
433
+ style: V.searchIcon
430
434
  }),
431
- /* @__PURE__ */ F(P, {
435
+ /* @__PURE__ */ L(F, {
432
436
  id: "widget-palette-search",
433
437
  type: "text",
434
- placeholder: b("bigconsole.dashboards.widgetPalette.searchPlaceholder", "Search widgets..."),
435
- value: T,
436
- onChange: (e) => E(e.target.value),
437
- style: B.searchInput
438
+ placeholder: x("bigconsole.dashboards.widgetPalette.searchPlaceholder", "Search widgets..."),
439
+ value: E,
440
+ onChange: (e) => D(e.target.value),
441
+ style: V.searchInput
438
442
  })
439
443
  ]
440
444
  })]
441
445
  }),
442
- /* @__PURE__ */ F("div", {
443
- style: B.content,
444
- children: /* @__PURE__ */ I("div", {
445
- style: B.scrollArea,
446
- children: [V.map((e) => {
447
- let t = D.has(e.category), r = `widget-palette-${e.category.toLowerCase()}`;
448
- return /* @__PURE__ */ I("div", {
449
- style: B.categoryContainer,
450
- children: [/* @__PURE__ */ F("h3", {
451
- style: B.categoryHeading,
452
- children: /* @__PURE__ */ I("button", {
446
+ /* @__PURE__ */ L("div", {
447
+ style: V.content,
448
+ children: /* @__PURE__ */ R("div", {
449
+ style: V.scrollArea,
450
+ children: [H.map((e) => {
451
+ let t = O.has(e.category), r = `widget-palette-${e.category.toLowerCase()}`;
452
+ return /* @__PURE__ */ R("div", {
453
+ style: V.categoryContainer,
454
+ children: [/* @__PURE__ */ L("h3", {
455
+ style: V.categoryHeading,
456
+ children: /* @__PURE__ */ R("button", {
453
457
  type: "button",
454
- onClick: () => H(e.category),
458
+ onClick: () => U(e.category),
455
459
  "aria-expanded": t,
456
460
  "aria-controls": r,
457
- style: B.categoryHeader,
461
+ style: V.categoryHeader,
458
462
  className: `hover:bg-action-ghost-bgHover motion-safe:transition-colors ${n}`,
459
463
  children: [
460
- F(t ? p : m, {
464
+ L(t ? m : h, {
461
465
  "aria-hidden": "true",
462
- style: B.categoryChevron
466
+ style: V.categoryChevron
463
467
  }),
464
- /* @__PURE__ */ F("span", {
465
- style: B.categoryLabel,
468
+ /* @__PURE__ */ L("span", {
469
+ style: V.categoryLabel,
466
470
  children: e.label
467
471
  }),
468
- /* @__PURE__ */ F("span", {
469
- style: B.categoryCount,
472
+ /* @__PURE__ */ L("span", {
473
+ style: V.categoryCount,
470
474
  children: e.widgets.length
471
475
  })
472
476
  ]
473
477
  })
474
- }), t && /* @__PURE__ */ I("div", {
478
+ }), t && /* @__PURE__ */ R("div", {
475
479
  id: r,
476
- style: B.widgetList,
477
- children: [v && e.category === "Installed" && /* @__PURE__ */ F("div", {
480
+ style: V.widgetList,
481
+ children: [y && e.category === "Installed" && /* @__PURE__ */ L("div", {
478
482
  style: {
479
483
  fontSize: "var(--font-size-body-sm)",
480
484
  color: "var(--color-text-muted)",
481
485
  padding: "var(--space-controlGap)"
482
486
  },
483
- children: b("bigconsole.dashboards.widgetPalette.loading", "Loading...")
487
+ children: x("bigconsole.dashboards.widgetPalette.loading", "Loading...")
484
488
  }), e.widgets.map((e) => {
485
- let t = z(e.icon), n = a(e), r = j === n;
486
- return /* @__PURE__ */ I("div", {
489
+ let t = B(e.icon), n = a(e), r = M === n;
490
+ return /* @__PURE__ */ R("div", {
487
491
  draggable: !0,
488
492
  role: "button",
489
493
  tabIndex: 0,
490
494
  "aria-label": `Add ${e.name} widget`,
491
- onDragStart: (t) => U(t, e),
492
- onDragEnd: W,
493
- onClick: () => G(e),
495
+ onDragStart: (t) => W(t, e),
496
+ onDragEnd: G,
497
+ onClick: () => K(e),
494
498
  onKeyDown: (t) => {
495
- (t.key === "Enter" || t.key === " ") && (t.preventDefault(), G(e));
499
+ (t.key === "Enter" || t.key === " ") && (t.preventDefault(), K(e));
496
500
  },
497
- onMouseEnter: () => M(n),
498
- onMouseLeave: () => M(null),
501
+ onMouseEnter: () => N(n),
502
+ onMouseLeave: () => N(null),
499
503
  className: "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg-surface",
500
504
  style: {
501
- ...B.widgetCard,
502
- ...r ? B.widgetCardHover : {}
505
+ ...V.widgetCard,
506
+ ...r ? V.widgetCardHover : {}
503
507
  },
504
508
  children: [
505
- /* @__PURE__ */ F(S, {
509
+ /* @__PURE__ */ L(C, {
506
510
  "aria-hidden": "true",
507
- style: B.dragHandle
511
+ style: V.dragHandle
508
512
  }),
509
- /* @__PURE__ */ F("div", {
510
- style: B.widgetIcon,
511
- children: /* @__PURE__ */ F(t, {
513
+ /* @__PURE__ */ L("div", {
514
+ style: V.widgetIcon,
515
+ children: /* @__PURE__ */ L(t, {
512
516
  "aria-hidden": "true",
513
- style: B.widgetIconInner
517
+ style: V.widgetIconInner
514
518
  })
515
519
  }),
516
- /* @__PURE__ */ I("div", {
517
- style: B.widgetText,
518
- children: [/* @__PURE__ */ F("div", {
519
- style: B.widgetName,
520
+ /* @__PURE__ */ R("div", {
521
+ style: V.widgetText,
522
+ children: [/* @__PURE__ */ L("div", {
523
+ style: V.widgetName,
520
524
  children: e.name
521
- }), /* @__PURE__ */ F("div", {
522
- style: B.widgetDescription,
525
+ }), /* @__PURE__ */ L("div", {
526
+ style: V.widgetDescription,
523
527
  children: e.description
524
528
  })]
525
529
  })
@@ -528,13 +532,13 @@ var B = {
528
532
  })]
529
533
  })]
530
534
  }, e.category);
531
- }), V.length === 0 && /* @__PURE__ */ I("div", {
532
- style: B.emptyState,
535
+ }), H.length === 0 && /* @__PURE__ */ R("div", {
536
+ style: V.emptyState,
533
537
  role: "status",
534
538
  children: [
535
- /* @__PURE__ */ F("div", {
536
- style: B.emptyIcon,
537
- children: /* @__PURE__ */ F(O, {
539
+ /* @__PURE__ */ L("div", {
540
+ style: V.emptyIcon,
541
+ children: /* @__PURE__ */ L(k, {
538
542
  "aria-hidden": "true",
539
543
  style: {
540
544
  width: "24px",
@@ -543,47 +547,47 @@ var B = {
543
547
  }
544
548
  })
545
549
  }),
546
- /* @__PURE__ */ I("p", {
547
- style: B.emptyTitle,
550
+ /* @__PURE__ */ R("p", {
551
+ style: V.emptyTitle,
548
552
  children: [
549
- b("bigconsole.dashboards.widgetPalette.noResultsBefore", "No widgets found for"),
553
+ x("bigconsole.dashboards.widgetPalette.noResultsBefore", "No widgets found for"),
550
554
  " “",
551
- /* @__PURE__ */ F("strong", { children: T }),
555
+ /* @__PURE__ */ L("strong", { children: E }),
552
556
  "”"
553
557
  ]
554
558
  }),
555
- /* @__PURE__ */ F("p", {
556
- style: B.emptyText,
559
+ /* @__PURE__ */ L("p", {
560
+ style: V.emptyText,
557
561
  children: "Try a shorter term, or browse the widget store for more types."
558
562
  }),
559
- /* @__PURE__ */ F("button", {
563
+ /* @__PURE__ */ L("button", {
560
564
  type: "button",
561
- onClick: () => E(""),
562
- style: B.clearButton,
565
+ onClick: () => D(""),
566
+ style: V.clearButton,
563
567
  className: "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg-surface",
564
- children: b("bigconsole.dashboards.widgetPalette.clearSearch", "Clear search")
568
+ children: x("bigconsole.dashboards.widgetPalette.clearSearch", "Clear search")
565
569
  })
566
570
  ]
567
571
  })]
568
572
  })
569
573
  }),
570
- /* @__PURE__ */ I("div", {
571
- style: B.footer,
572
- children: [!x && /* @__PURE__ */ I("button", {
574
+ /* @__PURE__ */ R("div", {
575
+ style: V.footer,
576
+ children: [!S && /* @__PURE__ */ R("button", {
573
577
  type: "button",
574
- onClick: K,
575
- style: B.browseStoreButton,
578
+ onClick: q,
579
+ style: V.browseStoreButton,
576
580
  className: "hover:border-action-primary-bg hover:text-action-primary-text motion-safe:transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg-surface",
577
581
  children: [
578
- /* @__PURE__ */ F(k, {
582
+ /* @__PURE__ */ L(A, {
579
583
  "aria-hidden": "true",
580
584
  style: {
581
585
  width: "15px",
582
586
  height: "15px"
583
587
  }
584
588
  }),
585
- b("bigconsole.dashboards.widgetPalette.browseStore", "Browse widget store"),
586
- /* @__PURE__ */ F(g, {
589
+ x("bigconsole.dashboards.widgetPalette.browseStore", "Browse widget store"),
590
+ /* @__PURE__ */ L(_, {
587
591
  "aria-hidden": "true",
588
592
  style: {
589
593
  width: "13px",
@@ -592,13 +596,13 @@ var B = {
592
596
  }
593
597
  })
594
598
  ]
595
- }), /* @__PURE__ */ F("p", {
596
- style: B.footerText,
597
- children: b("bigconsole.dashboards.widgetPalette.footerHint", "Drag widgets to position them on the canvas")
599
+ }), /* @__PURE__ */ L("p", {
600
+ style: V.footerText,
601
+ children: x("bigconsole.dashboards.widgetPalette.footerHint", "Drag widgets to position them on the canvas")
598
602
  })]
599
603
  })
600
604
  ]
601
605
  }) : null;
602
606
  });
603
607
  //#endregion
604
- export { V as default };
608
+ export { H as default };