@burdenoff/microfe-bigconsole 2026.1012.4 → 2026.1012.6

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 (130) hide show
  1. package/dist/bigconsole/BigConsoleRoutes.js +149 -140
  2. package/dist/bigconsole/assistant/assistantProduct.js +4 -1
  3. package/dist/bigconsole/assistant/displayCopy.d.ts +32 -0
  4. package/dist/bigconsole/assistant/pageContext.d.ts +14 -0
  5. package/dist/bigconsole/assistant/pageContext.js +6 -1
  6. package/dist/bigconsole/assistant/pageControls.d.ts +81 -0
  7. package/dist/bigconsole/assistant/pageControls.js +169 -0
  8. package/dist/bigconsole/assistant/previewControl.d.ts +16 -0
  9. package/dist/bigconsole/assistant/previewControl.js +10 -0
  10. package/dist/bigconsole/assistant/recordAdapters.js +27 -26
  11. package/dist/bigconsole/assistant/usePreviewControl.d.ts +2 -0
  12. package/dist/bigconsole/assistant/usePreviewControl.js +20 -0
  13. package/dist/bigconsole/components/builder/inspector/AppearanceSection.js +9 -9
  14. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js +31 -31
  15. package/dist/bigconsole/components/common/SortBySelect.d.ts +11 -0
  16. package/dist/bigconsole/components/common/SortBySelect.js +29 -0
  17. package/dist/bigconsole/components/common/index.d.ts +1 -0
  18. package/dist/bigconsole/components/common/index.js +1 -0
  19. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js +44 -44
  20. package/dist/bigconsole/components/dashboard/DashboardCanvas.js +36 -36
  21. package/dist/bigconsole/components/dashboard/DashboardToolbar.js +59 -59
  22. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js +15 -15
  23. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js +30 -30
  24. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +41 -41
  25. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js +34 -34
  26. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +34 -34
  27. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js +153 -153
  28. package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js +21 -21
  29. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js +46 -46
  30. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js +134 -134
  31. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js +101 -101
  32. package/dist/bigconsole/components/dashboard/TemplateInstallOptions.js +31 -31
  33. package/dist/bigconsole/components/dashboard/TemplateLayoutPreview.js +15 -15
  34. package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.js +1 -1
  35. package/dist/bigconsole/components/dashboard/WidgetPalette.js +46 -46
  36. package/dist/bigconsole/components/datasink/AlertExecutionHistory.js +37 -37
  37. package/dist/bigconsole/components/datasink/AlertRuleEditor.js +66 -66
  38. package/dist/bigconsole/components/datasink/CacheTTLSelector.js +35 -35
  39. package/dist/bigconsole/components/datasink/DataSinkCard.js +51 -50
  40. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js +18 -18
  41. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js +20 -20
  42. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js +47 -47
  43. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +91 -91
  44. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js +35 -35
  45. package/dist/bigconsole/components/parser/DataSinkSelector.js +40 -40
  46. package/dist/bigconsole/components/parser/ImportParserDialog.js +120 -120
  47. package/dist/bigconsole/components/parser/ParserSelector.js +51 -51
  48. package/dist/bigconsole/components/pipeline/PipelineScopePicker.js +10 -10
  49. package/dist/bigconsole/components/preview/AiPreviewContent.js +0 -1
  50. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js +77 -76
  51. package/dist/bigconsole/components/preview/AiPreviewPanel.js +96 -95
  52. package/dist/bigconsole/components/widgets/ActionConfigDialog.js +4 -4
  53. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js +93 -93
  54. package/dist/bigconsole/components/widgets/PropertiesPanel.js +507 -499
  55. package/dist/bigconsole/components/widgets/advanced/AdvancedWidgetConfig.js +14 -14
  56. package/dist/bigconsole/components/widgets/advanced/AdvancedWidgets.js +68 -67
  57. package/dist/bigconsole/components/widgets/advanced/boxPlotDescription.d.ts +7 -0
  58. package/dist/bigconsole/components/widgets/advanced/boxPlotDescription.js +12 -0
  59. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js +4 -4
  60. package/dist/bigconsole/components/widgets/chart/ChartConfig.js +48 -48
  61. package/dist/bigconsole/components/widgets/comments/WidgetComments.js +46 -46
  62. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js +61 -61
  63. package/dist/bigconsole/components/widgets/form/FormWidget.js +36 -36
  64. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js +42 -42
  65. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js +25 -25
  66. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js +4 -4
  67. package/dist/bigconsole/components/widgets/list/ListConfig.js +30 -30
  68. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js +38 -38
  69. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js +9 -9
  70. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js +9 -9
  71. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js +49 -49
  72. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js +39 -39
  73. package/dist/bigconsole/components/widgets/table/TableConfig.js +73 -73
  74. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js +64 -64
  75. package/dist/bigconsole/components/workflow/WorkflowOpenGuard.js +15 -15
  76. package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.js +15 -15
  77. package/dist/bigconsole/constants/backendErrors.js +94 -0
  78. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js +10 -10
  79. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js +67 -67
  80. package/dist/bigconsole/hooks/useDashboardLayoutBaseline.d.ts +14 -0
  81. package/dist/bigconsole/hooks/useDashboardLayoutBaseline.js +32 -0
  82. package/dist/bigconsole/hooks/useDataSinkAlerts.d.ts +23 -0
  83. package/dist/bigconsole/hooks/useDataSinkAlerts.js +138 -113
  84. package/dist/bigconsole/hooks/useDrilldown.js +3 -3
  85. package/dist/bigconsole/hooks/useGlobalFilters.js +3 -3
  86. package/dist/bigconsole/pages/AdminPage.js +130 -130
  87. package/dist/bigconsole/pages/DashboardBuilderPage.js +72 -60
  88. package/dist/bigconsole/pages/DashboardViewPage.js +244 -221
  89. package/dist/bigconsole/pages/DashboardsPage.js +269 -221
  90. package/dist/bigconsole/pages/DataParsersPage.js +180 -157
  91. package/dist/bigconsole/pages/DataSinkAlertsPage.js +62 -55
  92. package/dist/bigconsole/pages/DataSinkBuilderPage.js +252 -234
  93. package/dist/bigconsole/pages/DataSinkViewPage.js +1 -1
  94. package/dist/bigconsole/pages/DataSinksPage.js +335 -299
  95. package/dist/bigconsole/pages/DataSourcesPage.js +5 -5
  96. package/dist/bigconsole/pages/InsightsPage.js +279 -265
  97. package/dist/bigconsole/pages/OverviewPage.js +47 -47
  98. package/dist/bigconsole/pages/ParserBuilderPage.js +229 -213
  99. package/dist/bigconsole/pages/ParserViewPage.js +97 -97
  100. package/dist/bigconsole/pages/PipelineBuilderPage.js +256 -214
  101. package/dist/bigconsole/pages/PipelineViewPage.js +146 -146
  102. package/dist/bigconsole/pages/PipelinesPage.js +107 -88
  103. package/dist/bigconsole/pages/SettingsPage.js +179 -173
  104. package/dist/bigconsole/pages/WidgetDemoPage.js +42 -42
  105. package/dist/bigconsole/pages/WorkflowViewPage.js +1 -1
  106. package/dist/bigconsole/pages/WorkflowsPage.js +141 -141
  107. package/dist/bigconsole/providers/BigConsoleQuotaProvider.js +12 -12
  108. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js +34 -34
  109. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js +69 -69
  110. package/dist/bigconsole/renderers/adapters/CustomRenderer.js +46 -46
  111. package/dist/bigconsole/store/widgetStore.d.ts +12 -0
  112. package/dist/bigconsole/store/widgetStore.js +3 -1
  113. package/dist/bigconsole/utils/backendError.d.ts +18 -0
  114. package/dist/bigconsole/utils/backendError.js +42 -0
  115. package/dist/bigconsole/utils/dashboardList.d.ts +28 -0
  116. package/dist/bigconsole/utils/dashboardList.js +15 -0
  117. package/dist/bigconsole/utils/dataSinkList.d.ts +15 -0
  118. package/dist/bigconsole/utils/dataSinkList.js +15 -0
  119. package/dist/bigconsole/utils/formDirty.d.ts +82 -0
  120. package/dist/bigconsole/utils/formDirty.js +21 -0
  121. package/dist/bigconsole/utils/insightsDraft.d.ts +29 -0
  122. package/dist/bigconsole/utils/insightsDraft.js +8 -0
  123. package/dist/bigconsole/utils/layoutBaseline.d.ts +130 -0
  124. package/dist/bigconsole/utils/layoutBaseline.js +96 -0
  125. package/dist/bigconsole/utils/listSort.d.ts +80 -0
  126. package/dist/bigconsole/utils/listSort.js +85 -0
  127. package/dist/bigconsole/utils/widgetFormDirty.d.ts +16 -0
  128. package/dist/bigconsole/utils/widgetFormDirty.js +13 -0
  129. package/dist/bigconsole/workflowOpen.js +15 -14
  130. 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";
@@ -7,8 +7,8 @@ import { filterAdvancedWidgetDefinitions as o } from "../../utils/advancedWidget
7
7
  import { memo as s, useCallback as c, useMemo as l, useState as u } from "react";
8
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
9
  import { Input as F } from "@burdenoff/fe-libs/ui";
10
- import { jsx as I, jsxs as L } from "react/jsx-runtime";
11
- import { useI18n as R } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
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";
12
12
  //#region src/bigconsole/components/dashboard/WidgetPalette.tsx
13
13
  var z = {
14
14
  TrendingUp: M,
@@ -308,7 +308,7 @@ var V = {
308
308
  transition: "border-color 0.15s, color 0.15s"
309
309
  }
310
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 } = R(), S = t(), T = e(), [E, D] = u(""), [O, j] = u(new Set([
311
+ let { t: x } = I(), S = t(), T = e(), [E, D] = u(""), [O, j] = u(new Set([
312
312
  "KPI",
313
313
  "Visualization",
314
314
  "Data",
@@ -376,21 +376,21 @@ var V = {
376
376
  let e = `${window.location.origin}${T}/store${window.location.search}`;
377
377
  window.open(e, "_blank", "noopener,noreferrer");
378
378
  }, [T]);
379
- return s ? /* @__PURE__ */ L("section", {
379
+ return s ? /* @__PURE__ */ R("section", {
380
380
  "aria-label": "Widget palette",
381
381
  "data-testid": "widget-palette",
382
382
  style: V.container,
383
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",
384
384
  children: [
385
- /* @__PURE__ */ L("div", {
385
+ /* @__PURE__ */ R("div", {
386
386
  style: V.header,
387
- children: [/* @__PURE__ */ L("div", {
387
+ children: [/* @__PURE__ */ R("div", {
388
388
  style: V.headerTop,
389
- children: [/* @__PURE__ */ L("div", {
389
+ children: [/* @__PURE__ */ R("div", {
390
390
  style: V.headerTitle,
391
- children: [/* @__PURE__ */ I("div", {
391
+ children: [/* @__PURE__ */ L("div", {
392
392
  style: V.headerIcon,
393
- children: /* @__PURE__ */ I(w, {
393
+ children: /* @__PURE__ */ L(w, {
394
394
  "aria-hidden": "true",
395
395
  style: {
396
396
  width: "18px",
@@ -398,21 +398,21 @@ var V = {
398
398
  color: "var(--color-action-primary-text)"
399
399
  }
400
400
  })
401
- }), /* @__PURE__ */ L("div", { children: [/* @__PURE__ */ I("h2", {
401
+ }), /* @__PURE__ */ R("div", { children: [/* @__PURE__ */ L("h2", {
402
402
  style: V.title,
403
403
  children: x("bigconsole.dashboards.widgetPalette.title", "Widgets")
404
- }), /* @__PURE__ */ I("p", {
404
+ }), /* @__PURE__ */ L("p", {
405
405
  style: V.subtitle,
406
406
  children: x("bigconsole.dashboards.widgetPalette.subtitle", "Drag or click to add")
407
407
  })] })]
408
- }), /* @__PURE__ */ I("button", {
408
+ }), /* @__PURE__ */ L("button", {
409
409
  type: "button",
410
410
  onClick: d,
411
411
  "aria-label": "Close widget palette",
412
412
  title: "Close widget palette",
413
413
  style: V.closeButton,
414
414
  className: `hover:bg-action-ghost-bgHover motion-safe:transition-colors ${n}`,
415
- children: /* @__PURE__ */ I(P, {
415
+ children: /* @__PURE__ */ L(P, {
416
416
  "aria-hidden": "true",
417
417
  style: {
418
418
  width: "16px",
@@ -420,19 +420,19 @@ var V = {
420
420
  }
421
421
  })
422
422
  })]
423
- }), /* @__PURE__ */ L("div", {
423
+ }), /* @__PURE__ */ R("div", {
424
424
  style: V.searchContainer,
425
425
  children: [
426
- /* @__PURE__ */ I("label", {
426
+ /* @__PURE__ */ L("label", {
427
427
  htmlFor: "widget-palette-search",
428
428
  className: "sr-only",
429
429
  children: "Search widgets"
430
430
  }),
431
- /* @__PURE__ */ I(k, {
431
+ /* @__PURE__ */ L(k, {
432
432
  "aria-hidden": "true",
433
433
  style: V.searchIcon
434
434
  }),
435
- /* @__PURE__ */ I(F, {
435
+ /* @__PURE__ */ L(F, {
436
436
  id: "widget-palette-search",
437
437
  type: "text",
438
438
  placeholder: x("bigconsole.dashboards.widgetPalette.searchPlaceholder", "Search widgets..."),
@@ -443,17 +443,17 @@ var V = {
443
443
  ]
444
444
  })]
445
445
  }),
446
- /* @__PURE__ */ I("div", {
446
+ /* @__PURE__ */ L("div", {
447
447
  style: V.content,
448
- children: /* @__PURE__ */ L("div", {
448
+ children: /* @__PURE__ */ R("div", {
449
449
  style: V.scrollArea,
450
450
  children: [H.map((e) => {
451
451
  let t = O.has(e.category), r = `widget-palette-${e.category.toLowerCase()}`;
452
- return /* @__PURE__ */ L("div", {
452
+ return /* @__PURE__ */ R("div", {
453
453
  style: V.categoryContainer,
454
- children: [/* @__PURE__ */ I("h3", {
454
+ children: [/* @__PURE__ */ L("h3", {
455
455
  style: V.categoryHeading,
456
- children: /* @__PURE__ */ L("button", {
456
+ children: /* @__PURE__ */ R("button", {
457
457
  type: "button",
458
458
  onClick: () => U(e.category),
459
459
  "aria-expanded": t,
@@ -461,24 +461,24 @@ var V = {
461
461
  style: V.categoryHeader,
462
462
  className: `hover:bg-action-ghost-bgHover motion-safe:transition-colors ${n}`,
463
463
  children: [
464
- I(t ? m : h, {
464
+ L(t ? m : h, {
465
465
  "aria-hidden": "true",
466
466
  style: V.categoryChevron
467
467
  }),
468
- /* @__PURE__ */ I("span", {
468
+ /* @__PURE__ */ L("span", {
469
469
  style: V.categoryLabel,
470
470
  children: e.label
471
471
  }),
472
- /* @__PURE__ */ I("span", {
472
+ /* @__PURE__ */ L("span", {
473
473
  style: V.categoryCount,
474
474
  children: e.widgets.length
475
475
  })
476
476
  ]
477
477
  })
478
- }), t && /* @__PURE__ */ L("div", {
478
+ }), t && /* @__PURE__ */ R("div", {
479
479
  id: r,
480
480
  style: V.widgetList,
481
- children: [y && e.category === "Installed" && /* @__PURE__ */ I("div", {
481
+ children: [y && e.category === "Installed" && /* @__PURE__ */ L("div", {
482
482
  style: {
483
483
  fontSize: "var(--font-size-body-sm)",
484
484
  color: "var(--color-text-muted)",
@@ -487,7 +487,7 @@ var V = {
487
487
  children: x("bigconsole.dashboards.widgetPalette.loading", "Loading...")
488
488
  }), e.widgets.map((e) => {
489
489
  let t = B(e.icon), n = a(e), r = M === n;
490
- return /* @__PURE__ */ L("div", {
490
+ return /* @__PURE__ */ R("div", {
491
491
  draggable: !0,
492
492
  role: "button",
493
493
  tabIndex: 0,
@@ -506,23 +506,23 @@ var V = {
506
506
  ...r ? V.widgetCardHover : {}
507
507
  },
508
508
  children: [
509
- /* @__PURE__ */ I(C, {
509
+ /* @__PURE__ */ L(C, {
510
510
  "aria-hidden": "true",
511
511
  style: V.dragHandle
512
512
  }),
513
- /* @__PURE__ */ I("div", {
513
+ /* @__PURE__ */ L("div", {
514
514
  style: V.widgetIcon,
515
- children: /* @__PURE__ */ I(t, {
515
+ children: /* @__PURE__ */ L(t, {
516
516
  "aria-hidden": "true",
517
517
  style: V.widgetIconInner
518
518
  })
519
519
  }),
520
- /* @__PURE__ */ L("div", {
520
+ /* @__PURE__ */ R("div", {
521
521
  style: V.widgetText,
522
- children: [/* @__PURE__ */ I("div", {
522
+ children: [/* @__PURE__ */ L("div", {
523
523
  style: V.widgetName,
524
524
  children: e.name
525
- }), /* @__PURE__ */ I("div", {
525
+ }), /* @__PURE__ */ L("div", {
526
526
  style: V.widgetDescription,
527
527
  children: e.description
528
528
  })]
@@ -532,13 +532,13 @@ var V = {
532
532
  })]
533
533
  })]
534
534
  }, e.category);
535
- }), H.length === 0 && /* @__PURE__ */ L("div", {
535
+ }), H.length === 0 && /* @__PURE__ */ R("div", {
536
536
  style: V.emptyState,
537
537
  role: "status",
538
538
  children: [
539
- /* @__PURE__ */ I("div", {
539
+ /* @__PURE__ */ L("div", {
540
540
  style: V.emptyIcon,
541
- children: /* @__PURE__ */ I(k, {
541
+ children: /* @__PURE__ */ L(k, {
542
542
  "aria-hidden": "true",
543
543
  style: {
544
544
  width: "24px",
@@ -547,20 +547,20 @@ var V = {
547
547
  }
548
548
  })
549
549
  }),
550
- /* @__PURE__ */ L("p", {
550
+ /* @__PURE__ */ R("p", {
551
551
  style: V.emptyTitle,
552
552
  children: [
553
553
  x("bigconsole.dashboards.widgetPalette.noResultsBefore", "No widgets found for"),
554
554
  " “",
555
- /* @__PURE__ */ I("strong", { children: E }),
555
+ /* @__PURE__ */ L("strong", { children: E }),
556
556
  "”"
557
557
  ]
558
558
  }),
559
- /* @__PURE__ */ I("p", {
559
+ /* @__PURE__ */ L("p", {
560
560
  style: V.emptyText,
561
561
  children: "Try a shorter term, or browse the widget store for more types."
562
562
  }),
563
- /* @__PURE__ */ I("button", {
563
+ /* @__PURE__ */ L("button", {
564
564
  type: "button",
565
565
  onClick: () => D(""),
566
566
  style: V.clearButton,
@@ -571,15 +571,15 @@ var V = {
571
571
  })]
572
572
  })
573
573
  }),
574
- /* @__PURE__ */ L("div", {
574
+ /* @__PURE__ */ R("div", {
575
575
  style: V.footer,
576
- children: [!S && /* @__PURE__ */ L("button", {
576
+ children: [!S && /* @__PURE__ */ R("button", {
577
577
  type: "button",
578
578
  onClick: q,
579
579
  style: V.browseStoreButton,
580
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",
581
581
  children: [
582
- /* @__PURE__ */ I(A, {
582
+ /* @__PURE__ */ L(A, {
583
583
  "aria-hidden": "true",
584
584
  style: {
585
585
  width: "15px",
@@ -587,7 +587,7 @@ var V = {
587
587
  }
588
588
  }),
589
589
  x("bigconsole.dashboards.widgetPalette.browseStore", "Browse widget store"),
590
- /* @__PURE__ */ I(_, {
590
+ /* @__PURE__ */ L(_, {
591
591
  "aria-hidden": "true",
592
592
  style: {
593
593
  width: "13px",
@@ -596,7 +596,7 @@ var V = {
596
596
  }
597
597
  })
598
598
  ]
599
- }), /* @__PURE__ */ I("p", {
599
+ }), /* @__PURE__ */ L("p", {
600
600
  style: V.footerText,
601
601
  children: x("bigconsole.dashboards.widgetPalette.footerHint", "Drag widgets to position them on the canvas")
602
602
  })]
@@ -5,8 +5,8 @@ import { alertErrorMessage as n } from "../../hooks/useDataSinkAlerts.js";
5
5
  import { useCallback as r, useEffect as i, useLayoutEffect as a, useRef as o, useState as s } from "react";
6
6
  import { Loader2 as c, RefreshCw as l } from "lucide-react";
7
7
  import { Button as u } from "@burdenoff/fe-libs/ui";
8
- import { jsx as d, jsxs as f } from "react/jsx-runtime";
9
- import { useI18n as p } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
8
+ import { useI18n as d } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
9
+ import { jsx as f, jsxs as p } from "react/jsx-runtime";
10
10
  //#region src/bigconsole/components/datasink/AlertExecutionHistory.tsx
11
11
  var m = {
12
12
  owner: "",
@@ -16,7 +16,7 @@ var m = {
16
16
  error: null
17
17
  };
18
18
  function h({ owner: h, rules: g, load: _, refreshVersion: v }) {
19
- let { t: y } = p(), [b, x] = s(""), [S, C] = s([]), w = S.at(-1), T = `${h}|${b}|${w ?? ""}`, E = o(null), D = o(null);
19
+ let { t: y } = d(), [b, x] = s(""), [S, C] = s([]), w = S.at(-1), T = `${h}|${b}|${w ?? ""}`, E = o(null), D = o(null);
20
20
  a(() => (E.current = T, () => {
21
21
  E.current = null, D.current = null;
22
22
  }), [T]);
@@ -66,25 +66,25 @@ function h({ owner: h, rules: g, load: _, refreshVersion: v }) {
66
66
  ...m,
67
67
  loading: !0
68
68
  };
69
- return /* @__PURE__ */ f(t, {
69
+ return /* @__PURE__ */ p(t, {
70
70
  title: y("bigconsole.alerts.history.title", "Execution history"),
71
71
  headingLevel: 2,
72
72
  description: y("bigconsole.alerts.history.description", "Actual evaluations and notification delivery status. Refreshes every 10 seconds while this page is visible."),
73
- actions: /* @__PURE__ */ f(u, {
73
+ actions: /* @__PURE__ */ p(u, {
74
74
  type: "button",
75
75
  variant: "secondary",
76
76
  size: "sm",
77
77
  onClick: () => void A(),
78
78
  disabled: j.loading,
79
- children: [j.loading ? /* @__PURE__ */ d(c, { className: "mr-2 h-4 w-4 animate-spin" }) : /* @__PURE__ */ d(l, { className: "mr-2 h-4 w-4" }), y("bigconsole.alerts.history.refresh", "Refresh history")]
79
+ children: [j.loading ? /* @__PURE__ */ f(c, { className: "mr-2 h-4 w-4 animate-spin" }) : /* @__PURE__ */ f(l, { className: "mr-2 h-4 w-4" }), y("bigconsole.alerts.history.refresh", "Refresh history")]
80
80
  }),
81
81
  children: [
82
- /* @__PURE__ */ d("label", {
82
+ /* @__PURE__ */ f("label", {
83
83
  htmlFor: "alert-history-filter",
84
84
  className: "mb-1 block text-xs font-medium text-text-primary",
85
85
  children: y("bigconsole.alerts.history.filter", "Filter by rule")
86
86
  }),
87
- /* @__PURE__ */ f("select", {
87
+ /* @__PURE__ */ p("select", {
88
88
  id: "alert-history-filter",
89
89
  className: `mb-4 w-full min-w-0 rounded-control border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary ${e}`,
90
90
  value: b,
@@ -92,57 +92,57 @@ function h({ owner: h, rules: g, load: _, refreshVersion: v }) {
92
92
  x(e.target.value), C([]);
93
93
  },
94
94
  children: [
95
- /* @__PURE__ */ d("option", {
95
+ /* @__PURE__ */ f("option", {
96
96
  value: "",
97
97
  children: y("bigconsole.alerts.history.all", "All rules")
98
98
  }),
99
- b && !g.some((e) => e.id === b) && /* @__PURE__ */ d("option", {
99
+ b && !g.some((e) => e.id === b) && /* @__PURE__ */ f("option", {
100
100
  value: b,
101
101
  children: b
102
102
  }),
103
- g.map((e) => /* @__PURE__ */ d("option", {
103
+ g.map((e) => /* @__PURE__ */ f("option", {
104
104
  value: e.id,
105
105
  children: e.name
106
106
  }, e.id))
107
107
  ]
108
108
  }),
109
- j.error && /* @__PURE__ */ d("p", {
109
+ j.error && /* @__PURE__ */ f("p", {
110
110
  role: "alert",
111
111
  className: "mb-4 break-words text-sm text-status-error-text",
112
112
  children: j.error
113
113
  }),
114
- j.loading && !j.rows.length && /* @__PURE__ */ d("p", {
114
+ j.loading && !j.rows.length && /* @__PURE__ */ f("p", {
115
115
  role: "status",
116
116
  className: "text-sm text-text-secondary",
117
117
  children: y("bigconsole.alerts.history.loading", "Loading execution history…")
118
118
  }),
119
- !j.loading && !j.error && !j.rows.length && /* @__PURE__ */ d("p", {
119
+ !j.loading && !j.error && !j.rows.length && /* @__PURE__ */ f("p", {
120
120
  className: "text-sm text-text-secondary",
121
121
  children: y("bigconsole.alerts.history.empty", "No evaluations recorded yet. Enabled rules evaluate when the sink data is updated or refreshed.")
122
122
  }),
123
- /* @__PURE__ */ d("ol", {
123
+ /* @__PURE__ */ f("ol", {
124
124
  className: "divide-y divide-border-subtle",
125
- children: j.rows.map((e) => /* @__PURE__ */ f("li", {
125
+ children: j.rows.map((e) => /* @__PURE__ */ p("li", {
126
126
  className: "min-w-0 py-4 first:pt-0",
127
127
  children: [
128
- /* @__PURE__ */ f("div", {
128
+ /* @__PURE__ */ p("div", {
129
129
  className: "flex flex-wrap items-start justify-between gap-2",
130
- children: [/* @__PURE__ */ f("div", {
130
+ children: [/* @__PURE__ */ p("div", {
131
131
  className: "min-w-0",
132
- children: [/* @__PURE__ */ d("p", {
132
+ children: [/* @__PURE__ */ f("p", {
133
133
  className: "break-words text-sm font-medium text-text-primary",
134
134
  children: g.find((t) => t.id === e.alertId)?.name ?? e.alertId
135
- }), /* @__PURE__ */ d("time", {
135
+ }), /* @__PURE__ */ f("time", {
136
136
  dateTime: e.createdAt,
137
137
  className: "text-xs text-text-secondary",
138
138
  children: new Date(e.createdAt).toLocaleString()
139
139
  })]
140
- }), /* @__PURE__ */ d("span", {
140
+ }), /* @__PURE__ */ f("span", {
141
141
  className: "rounded-pill border border-border-subtle bg-bg-sunken px-2 py-1 text-xs font-medium text-text-primary",
142
142
  children: y(`bigconsole.alerts.history.status.${e.status}`, e.status.replaceAll("_", " "))
143
143
  })]
144
144
  }),
145
- /* @__PURE__ */ f("p", {
145
+ /* @__PURE__ */ p("p", {
146
146
  className: "mt-2 break-words text-xs text-text-secondary",
147
147
  children: [
148
148
  y("bigconsole.alerts.history.dataVersion", "Data version"),
@@ -156,41 +156,41 @@ function h({ owner: h, rules: g, load: _, refreshVersion: v }) {
156
156
  " ms"
157
157
  ]
158
158
  }),
159
- e.error && /* @__PURE__ */ d("p", {
159
+ e.error && /* @__PURE__ */ f("p", {
160
160
  className: "mt-2 break-words text-sm text-status-error-text",
161
161
  children: e.error
162
162
  }),
163
- e.deliveries.length > 0 && /* @__PURE__ */ d("ul", {
163
+ e.deliveries.length > 0 && /* @__PURE__ */ f("ul", {
164
164
  className: "mt-3 space-y-2",
165
- children: e.deliveries.map((e, t) => /* @__PURE__ */ f("li", {
165
+ children: e.deliveries.map((e, t) => /* @__PURE__ */ p("li", {
166
166
  className: "min-w-0 rounded-control border border-border-subtle bg-bg-sunken p-3 text-xs",
167
167
  children: [
168
- /* @__PURE__ */ f("div", {
168
+ /* @__PURE__ */ p("div", {
169
169
  className: "flex flex-wrap justify-between gap-2",
170
- children: [/* @__PURE__ */ f("span", {
170
+ children: [/* @__PURE__ */ p("span", {
171
171
  className: "break-all text-text-primary",
172
172
  children: [
173
173
  e.channel,
174
174
  " · ",
175
175
  e.recipient
176
176
  ]
177
- }), /* @__PURE__ */ d("span", {
177
+ }), /* @__PURE__ */ f("span", {
178
178
  className: "font-medium text-text-primary",
179
179
  children: e.status
180
180
  })]
181
181
  }),
182
- e.attemptedAt && /* @__PURE__ */ f("p", {
182
+ e.attemptedAt && /* @__PURE__ */ p("p", {
183
183
  className: "mt-1 text-text-secondary",
184
184
  children: [
185
185
  y("bigconsole.alerts.history.attempted", "Attempted"),
186
186
  " ",
187
- /* @__PURE__ */ d("time", {
187
+ /* @__PURE__ */ f("time", {
188
188
  dateTime: e.attemptedAt,
189
189
  children: new Date(e.attemptedAt).toLocaleString()
190
190
  })
191
191
  ]
192
192
  }),
193
- e.notificationId && /* @__PURE__ */ f("p", {
193
+ e.notificationId && /* @__PURE__ */ p("p", {
194
194
  className: "mt-1 break-all text-text-muted",
195
195
  children: [
196
196
  y("bigconsole.alerts.history.notification", "Notification"),
@@ -198,7 +198,7 @@ function h({ owner: h, rules: g, load: _, refreshVersion: v }) {
198
198
  e.notificationId
199
199
  ]
200
200
  }),
201
- e.error && /* @__PURE__ */ d("p", {
201
+ e.error && /* @__PURE__ */ f("p", {
202
202
  className: "mt-1 break-words text-status-error-text",
203
203
  children: e.error
204
204
  })
@@ -208,25 +208,25 @@ function h({ owner: h, rules: g, load: _, refreshVersion: v }) {
208
208
  ]
209
209
  }, e.id))
210
210
  }),
211
- /* @__PURE__ */ f("div", {
211
+ /* @__PURE__ */ p("div", {
212
212
  className: "mt-4 flex flex-wrap items-center justify-between gap-control-gap border-t border-border-subtle pt-3",
213
- children: [/* @__PURE__ */ f("span", {
213
+ children: [/* @__PURE__ */ p("span", {
214
214
  className: "text-xs text-text-secondary",
215
215
  children: [
216
216
  j.rows.length,
217
217
  " ",
218
218
  y("bigconsole.alerts.history.count", "executions on this page")
219
219
  ]
220
- }), /* @__PURE__ */ f("div", {
220
+ }), /* @__PURE__ */ p("div", {
221
221
  className: "flex gap-control-gap",
222
- children: [/* @__PURE__ */ d(u, {
222
+ children: [/* @__PURE__ */ f(u, {
223
223
  type: "button",
224
224
  variant: "secondary",
225
225
  size: "sm",
226
226
  onClick: () => C((e) => e.slice(0, -1)),
227
227
  disabled: !S.length || j.loading,
228
228
  children: y("bigconsole.alerts.history.newer", "Newer")
229
- }), /* @__PURE__ */ d(u, {
229
+ }), /* @__PURE__ */ f(u, {
230
230
  type: "button",
231
231
  variant: "secondary",
232
232
  size: "sm",