@burdenoff/microfe-bigconsole 2026.1008.11 → 2026.1008.13

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 (140) hide show
  1. package/dist/bigconsole/BigConsoleRoutes.d.ts.map +1 -1
  2. package/dist/bigconsole/BigConsoleRoutes.js +136 -127
  3. package/dist/bigconsole/BigConsoleRoutes.js.map +1 -1
  4. package/dist/bigconsole/assistant/assistantProduct.d.ts.map +1 -1
  5. package/dist/bigconsole/assistant/assistantProduct.js +3 -1
  6. package/dist/bigconsole/assistant/assistantProduct.js.map +1 -1
  7. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js +31 -31
  8. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js +44 -44
  9. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js.map +1 -1
  10. package/dist/bigconsole/components/dashboard/DashboardCanvas.js +36 -36
  11. package/dist/bigconsole/components/dashboard/DashboardCanvas.js.map +1 -1
  12. package/dist/bigconsole/components/dashboard/DashboardToolbar.js +59 -59
  13. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js +15 -15
  14. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js +30 -30
  15. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +41 -41
  16. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js +34 -34
  17. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +34 -34
  18. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js +110 -110
  19. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js.map +1 -1
  20. package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js +21 -21
  21. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js +46 -46
  22. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js +91 -91
  23. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js.map +1 -1
  24. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js +101 -101
  25. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js.map +1 -1
  26. package/dist/bigconsole/components/dashboard/TemplateInstallOptions.js +31 -31
  27. package/dist/bigconsole/components/dashboard/TemplateLayoutPreview.js +15 -15
  28. package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.js +1 -1
  29. package/dist/bigconsole/components/dashboard/WidgetPalette.js +46 -46
  30. package/dist/bigconsole/components/datasink/AlertExecutionHistory.js +37 -37
  31. package/dist/bigconsole/components/datasink/AlertRuleEditor.js +66 -66
  32. package/dist/bigconsole/components/datasink/CacheTTLSelector.js +35 -35
  33. package/dist/bigconsole/components/datasink/DataSinkCard.js +29 -29
  34. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js +18 -18
  35. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js +20 -20
  36. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js +47 -47
  37. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +91 -91
  38. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js +35 -35
  39. package/dist/bigconsole/components/parser/DataSinkSelector.js +40 -40
  40. package/dist/bigconsole/components/parser/ImportParserDialog.js +120 -120
  41. package/dist/bigconsole/components/parser/ImportParserDialog.js.map +1 -1
  42. package/dist/bigconsole/components/parser/ParserSelector.js +51 -51
  43. package/dist/bigconsole/components/pipeline/PipelineScopePicker.js +10 -10
  44. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js +27 -27
  45. package/dist/bigconsole/components/preview/AiPreviewPanel.js +30 -30
  46. package/dist/bigconsole/components/widgets/ActionConfigDialog.js +4 -4
  47. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js +93 -93
  48. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js.map +1 -1
  49. package/dist/bigconsole/components/widgets/PropertiesPanel.d.ts.map +1 -1
  50. package/dist/bigconsole/components/widgets/PropertiesPanel.js +507 -499
  51. package/dist/bigconsole/components/widgets/PropertiesPanel.js.map +1 -1
  52. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js +4 -4
  53. package/dist/bigconsole/components/widgets/chart/ChartConfig.js +48 -48
  54. package/dist/bigconsole/components/widgets/comments/WidgetComments.js +46 -46
  55. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js +61 -61
  56. package/dist/bigconsole/components/widgets/form/FormWidget.js +36 -36
  57. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js +42 -42
  58. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js +25 -25
  59. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js +4 -4
  60. package/dist/bigconsole/components/widgets/list/ListConfig.js +30 -30
  61. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js +38 -38
  62. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js +9 -9
  63. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js +9 -9
  64. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js +49 -49
  65. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js +39 -39
  66. package/dist/bigconsole/components/widgets/table/TableConfig.js +73 -73
  67. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js +64 -64
  68. package/dist/bigconsole/components/workflow/WorkflowOpenGuard.js +15 -15
  69. package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.js +15 -15
  70. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js +9 -9
  71. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js +67 -67
  72. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js.map +1 -1
  73. package/dist/bigconsole/hooks/useDashboardLayoutBaseline.d.ts +15 -0
  74. package/dist/bigconsole/hooks/useDashboardLayoutBaseline.d.ts.map +1 -0
  75. package/dist/bigconsole/hooks/useDashboardLayoutBaseline.js +34 -0
  76. package/dist/bigconsole/hooks/useDashboardLayoutBaseline.js.map +1 -0
  77. package/dist/bigconsole/hooks/useDrilldown.js +3 -3
  78. package/dist/bigconsole/hooks/useGlobalFilters.js +3 -3
  79. package/dist/bigconsole/pages/AdminPage.js +130 -130
  80. package/dist/bigconsole/pages/DashboardBuilderPage.d.ts.map +1 -1
  81. package/dist/bigconsole/pages/DashboardBuilderPage.js +72 -60
  82. package/dist/bigconsole/pages/DashboardBuilderPage.js.map +1 -1
  83. package/dist/bigconsole/pages/DashboardViewPage.js +1 -1
  84. package/dist/bigconsole/pages/DataSinkAlertsPage.d.ts.map +1 -1
  85. package/dist/bigconsole/pages/DataSinkAlertsPage.js +30 -23
  86. package/dist/bigconsole/pages/DataSinkAlertsPage.js.map +1 -1
  87. package/dist/bigconsole/pages/DataSinkBuilderPage.d.ts.map +1 -1
  88. package/dist/bigconsole/pages/DataSinkBuilderPage.js +273 -264
  89. package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +1 -1
  90. package/dist/bigconsole/pages/DataSinkViewPage.js +1 -1
  91. package/dist/bigconsole/pages/DataSinksPage.js +1 -1
  92. package/dist/bigconsole/pages/DataSourcesPage.js +5 -5
  93. package/dist/bigconsole/pages/InsightsPage.d.ts.map +1 -1
  94. package/dist/bigconsole/pages/InsightsPage.js +279 -265
  95. package/dist/bigconsole/pages/InsightsPage.js.map +1 -1
  96. package/dist/bigconsole/pages/OverviewPage.js +47 -47
  97. package/dist/bigconsole/pages/OverviewPage.js.map +1 -1
  98. package/dist/bigconsole/pages/ParserBuilderPage.d.ts.map +1 -1
  99. package/dist/bigconsole/pages/ParserBuilderPage.js +229 -213
  100. package/dist/bigconsole/pages/ParserBuilderPage.js.map +1 -1
  101. package/dist/bigconsole/pages/ParserViewPage.js +97 -97
  102. package/dist/bigconsole/pages/PipelineBuilderPage.d.ts.map +1 -1
  103. package/dist/bigconsole/pages/PipelineBuilderPage.js +256 -214
  104. package/dist/bigconsole/pages/PipelineBuilderPage.js.map +1 -1
  105. package/dist/bigconsole/pages/PipelineViewPage.js +146 -146
  106. package/dist/bigconsole/pages/PipelinesPage.js +88 -88
  107. package/dist/bigconsole/pages/PipelinesPage.js.map +1 -1
  108. package/dist/bigconsole/pages/SettingsPage.d.ts.map +1 -1
  109. package/dist/bigconsole/pages/SettingsPage.js +179 -173
  110. package/dist/bigconsole/pages/SettingsPage.js.map +1 -1
  111. package/dist/bigconsole/pages/WidgetDemoPage.js +42 -42
  112. package/dist/bigconsole/pages/WorkflowViewPage.js +1 -1
  113. package/dist/bigconsole/pages/WorkflowsPage.js +141 -141
  114. package/dist/bigconsole/pages/WorkflowsPage.js.map +1 -1
  115. package/dist/bigconsole/providers/BigConsoleQuotaProvider.js +12 -12
  116. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js +34 -34
  117. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js +79 -79
  118. package/dist/bigconsole/renderers/adapters/CustomRenderer.js +46 -46
  119. package/dist/bigconsole/store/widgetStore.d.ts +12 -0
  120. package/dist/bigconsole/store/widgetStore.d.ts.map +1 -1
  121. package/dist/bigconsole/store/widgetStore.js +3 -1
  122. package/dist/bigconsole/store/widgetStore.js.map +1 -1
  123. package/dist/bigconsole/utils/formDirty.d.ts +83 -0
  124. package/dist/bigconsole/utils/formDirty.d.ts.map +1 -0
  125. package/dist/bigconsole/utils/formDirty.js +23 -0
  126. package/dist/bigconsole/utils/formDirty.js.map +1 -0
  127. package/dist/bigconsole/utils/insightsDraft.d.ts +30 -0
  128. package/dist/bigconsole/utils/insightsDraft.d.ts.map +1 -0
  129. package/dist/bigconsole/utils/insightsDraft.js +10 -0
  130. package/dist/bigconsole/utils/insightsDraft.js.map +1 -0
  131. package/dist/bigconsole/utils/layoutBaseline.d.ts +131 -0
  132. package/dist/bigconsole/utils/layoutBaseline.d.ts.map +1 -0
  133. package/dist/bigconsole/utils/layoutBaseline.js +98 -0
  134. package/dist/bigconsole/utils/layoutBaseline.js.map +1 -0
  135. package/dist/bigconsole/utils/widgetFormDirty.d.ts +17 -0
  136. package/dist/bigconsole/utils/widgetFormDirty.d.ts.map +1 -0
  137. package/dist/bigconsole/utils/widgetFormDirty.js +15 -0
  138. package/dist/bigconsole/utils/widgetFormDirty.js.map +1 -0
  139. package/dist/translations/en.d.ts.map +1 -1
  140. package/package.json +1 -1
@@ -4,40 +4,40 @@ import "../common/index.js";
4
4
  import { AlertSeverity as n, DataSinkAlertChannel as r, DataSinkAlertConditionType as i } from "../../../generated/wspace-types.js";
5
5
  import { Loader2 as a, Play as o, Plus as s, Save as c, Trash2 as l } from "lucide-react";
6
6
  import { Button as u } from "@burdenoff/fe-libs/ui";
7
- import { jsx as d, jsxs as f } from "react/jsx-runtime";
8
- import { useI18n as p } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
7
+ import { useI18n as d } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
8
+ import { jsx as f, jsxs as p } from "react/jsx-runtime";
9
9
  //#region src/bigconsole/components/datasink/AlertRuleEditor.tsx
10
10
  var m = `w-full min-w-0 rounded-control border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary ${e}`;
11
11
  function h(h) {
12
- let { t: g } = p(), { draft: _, channels: v, channelError: y, canUpdate: b, pending: x, previewing: S, preview: C, previewError: w, previewStale: T, error: E, onChange: D, onSave: O, onCancel: k, onPreview: A, onReloadChannels: j } = h, M = x || !b, N = v.filter((e) => e.status.toUpperCase() === "ACTIVE"), P = (e) => D({
12
+ let { t: g } = d(), { draft: _, channels: v, channelError: y, canUpdate: b, pending: x, previewing: S, preview: C, previewError: w, previewStale: T, error: E, onChange: D, onSave: O, onCancel: k, onPreview: A, onReloadChannels: j } = h, M = x || !b, N = v.filter((e) => e.status.toUpperCase() === "ACTIVE"), P = (e) => D({
13
13
  ..._,
14
14
  ...e
15
15
  });
16
- return /* @__PURE__ */ d(t, {
16
+ return /* @__PURE__ */ f(t, {
17
17
  title: g("bigconsole.alerts.rule.title", "Alert rule"),
18
18
  headingLevel: 2,
19
19
  emphasis: "primary",
20
- children: /* @__PURE__ */ f("form", {
20
+ children: /* @__PURE__ */ p("form", {
21
21
  onSubmit: (e) => {
22
22
  e.preventDefault(), O();
23
23
  },
24
24
  className: "flex min-w-0 flex-col gap-form-gap",
25
25
  "aria-label": g("bigconsole.alerts.rule.form", "Alert rule editor"),
26
26
  children: [
27
- !b && /* @__PURE__ */ d("p", {
27
+ !b && /* @__PURE__ */ f("p", {
28
28
  className: "text-sm text-text-secondary",
29
29
  children: g("bigconsole.alerts.rule.readOnly", "You have read-only access to these alert rules.")
30
30
  }),
31
- E && /* @__PURE__ */ d("p", {
31
+ E && /* @__PURE__ */ f("p", {
32
32
  role: "alert",
33
33
  className: "break-words text-sm text-status-error-text",
34
34
  children: E
35
35
  }),
36
- /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("label", {
36
+ /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("label", {
37
37
  htmlFor: "alert-name",
38
38
  className: "mb-1 block text-sm font-medium text-text-primary",
39
39
  children: g("bigconsole.alerts.rule.name", "Name")
40
- }), /* @__PURE__ */ d("input", {
40
+ }), /* @__PURE__ */ f("input", {
41
41
  id: "alert-name",
42
42
  className: m,
43
43
  value: _.name,
@@ -46,48 +46,48 @@ function h(h) {
46
46
  maxLength: 200,
47
47
  disabled: M
48
48
  })] }),
49
- /* @__PURE__ */ f("div", {
49
+ /* @__PURE__ */ p("div", {
50
50
  className: "grid min-w-0 gap-form-gap sm:grid-cols-2",
51
- children: [/* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("label", {
51
+ children: [/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("label", {
52
52
  htmlFor: "alert-condition-type",
53
53
  className: "mb-1 block text-sm font-medium text-text-primary",
54
54
  children: g("bigconsole.alerts.rule.language", "Condition language")
55
- }), /* @__PURE__ */ f("select", {
55
+ }), /* @__PURE__ */ p("select", {
56
56
  id: "alert-condition-type",
57
57
  className: m,
58
58
  value: _.conditionType,
59
59
  onChange: (e) => P({ conditionType: e.target.value === i.Jsonata ? i.Jsonata : i.Jq }),
60
60
  disabled: M,
61
- children: [/* @__PURE__ */ d("option", {
61
+ children: [/* @__PURE__ */ f("option", {
62
62
  value: i.Jq,
63
63
  children: "JQ"
64
- }), /* @__PURE__ */ d("option", {
64
+ }), /* @__PURE__ */ f("option", {
65
65
  value: i.Jsonata,
66
66
  children: "JSONata"
67
67
  })]
68
- })] }), /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("label", {
68
+ })] }), /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("label", {
69
69
  htmlFor: "alert-severity",
70
70
  className: "mb-1 block text-sm font-medium text-text-primary",
71
71
  children: g("bigconsole.alerts.rule.severity", "Severity")
72
- }), /* @__PURE__ */ d("select", {
72
+ }), /* @__PURE__ */ f("select", {
73
73
  id: "alert-severity",
74
74
  className: m,
75
75
  value: _.severity,
76
76
  onChange: (e) => P({ severity: Object.values(n).find((t) => t === e.target.value) ?? n.Medium }),
77
77
  disabled: M,
78
- children: Object.values(n).map((e) => /* @__PURE__ */ d("option", {
78
+ children: Object.values(n).map((e) => /* @__PURE__ */ f("option", {
79
79
  value: e,
80
80
  children: g(`bigconsole.alerts.severity.${e}`, e.charAt(0).toUpperCase() + e.slice(1))
81
81
  }, e))
82
82
  })] })]
83
83
  }),
84
- /* @__PURE__ */ f("div", { children: [
85
- /* @__PURE__ */ d("label", {
84
+ /* @__PURE__ */ p("div", { children: [
85
+ /* @__PURE__ */ f("label", {
86
86
  htmlFor: "alert-condition",
87
87
  className: "mb-1 block text-sm font-medium text-text-primary",
88
88
  children: g("bigconsole.alerts.rule.condition", "Condition")
89
89
  }),
90
- /* @__PURE__ */ d("textarea", {
90
+ /* @__PURE__ */ f("textarea", {
91
91
  id: "alert-condition",
92
92
  className: `${m} min-h-32 font-mono`,
93
93
  value: _.condition,
@@ -97,44 +97,44 @@ function h(h) {
97
97
  disabled: M,
98
98
  "aria-describedby": "alert-condition-help"
99
99
  }),
100
- /* @__PURE__ */ d("p", {
100
+ /* @__PURE__ */ f("p", {
101
101
  id: "alert-condition-help",
102
102
  className: "mt-2 text-xs text-text-secondary",
103
103
  children: g("bigconsole.alerts.rule.conditionHelp", "Evaluates the entire current sink payload and must return one boolean. Preview does not send notifications.")
104
104
  }),
105
- /* @__PURE__ */ d("p", {
105
+ /* @__PURE__ */ f("p", {
106
106
  className: "mt-1 break-words text-xs text-text-muted",
107
107
  children: _.conditionType === i.Jq ? "JQ: any(.[]; .boarding_minutes > 240)" : "JSONata: $count($[boarding_minutes > 240]) > 0"
108
108
  }),
109
- /* @__PURE__ */ f(u, {
109
+ /* @__PURE__ */ p(u, {
110
110
  type: "button",
111
111
  variant: "secondary",
112
112
  size: "sm",
113
113
  onClick: A,
114
114
  disabled: x || S || !_.condition.trim(),
115
115
  className: "mt-3",
116
- children: [S ? /* @__PURE__ */ d(a, { className: "mr-2 h-4 w-4 animate-spin" }) : /* @__PURE__ */ d(o, { className: "mr-2 h-4 w-4" }), S ? g("bigconsole.alerts.rule.previewing", "Evaluating…") : g("bigconsole.alerts.rule.preview", "Preview condition")]
116
+ children: [S ? /* @__PURE__ */ f(a, { className: "mr-2 h-4 w-4 animate-spin" }) : /* @__PURE__ */ f(o, { className: "mr-2 h-4 w-4" }), S ? g("bigconsole.alerts.rule.previewing", "Evaluating…") : g("bigconsole.alerts.rule.preview", "Preview condition")]
117
117
  }),
118
- w && /* @__PURE__ */ d("p", {
118
+ w && /* @__PURE__ */ f("p", {
119
119
  role: "alert",
120
120
  className: "mt-2 break-words text-sm text-status-error-text",
121
121
  children: w
122
122
  }),
123
- T && /* @__PURE__ */ d("p", {
123
+ T && /* @__PURE__ */ f("p", {
124
124
  role: "status",
125
125
  className: "mt-2 text-xs text-text-secondary",
126
126
  children: g("bigconsole.alerts.rule.previewStale", "The condition or data changed. Preview again to see the current result.")
127
127
  }),
128
- C && !T && /* @__PURE__ */ f("div", {
128
+ C && !T && /* @__PURE__ */ p("div", {
129
129
  role: "status",
130
130
  className: "mt-3 rounded-control border border-border-subtle bg-bg-sunken p-3 text-sm",
131
- children: [C.error ? /* @__PURE__ */ d("p", {
131
+ children: [C.error ? /* @__PURE__ */ f("p", {
132
132
  className: "break-words text-status-error-text",
133
133
  children: C.error
134
- }) : /* @__PURE__ */ d("p", {
134
+ }) : /* @__PURE__ */ f("p", {
135
135
  className: "font-medium text-text-primary",
136
136
  children: C.matched ? g("bigconsole.alerts.rule.matched", "Condition matched") : g("bigconsole.alerts.rule.noMatch", "Condition did not match")
137
- }), /* @__PURE__ */ f("p", {
137
+ }), /* @__PURE__ */ p("p", {
138
138
  className: "mt-1 text-xs text-text-secondary",
139
139
  children: [
140
140
  g("bigconsole.alerts.rule.previewMetadata", "Evaluated data version"),
@@ -148,25 +148,25 @@ function h(h) {
148
148
  })]
149
149
  })
150
150
  ] }),
151
- /* @__PURE__ */ f("fieldset", {
151
+ /* @__PURE__ */ p("fieldset", {
152
152
  disabled: M,
153
153
  className: "min-w-0",
154
154
  children: [
155
- /* @__PURE__ */ d("legend", {
155
+ /* @__PURE__ */ f("legend", {
156
156
  className: "mb-2 text-sm font-medium text-text-primary",
157
157
  children: g("bigconsole.alerts.rule.destinations", "Delivery destinations")
158
158
  }),
159
- /* @__PURE__ */ d("p", {
159
+ /* @__PURE__ */ f("p", {
160
160
  className: "mb-3 text-xs text-text-secondary",
161
161
  children: g("bigconsole.alerts.rule.destinationHelp", "Choose an available active delivery channel and its actual recipient.")
162
162
  }),
163
- y && /* @__PURE__ */ f("div", {
163
+ y && /* @__PURE__ */ p("div", {
164
164
  className: "mb-3 text-sm",
165
- children: [/* @__PURE__ */ d("p", {
165
+ children: [/* @__PURE__ */ f("p", {
166
166
  role: "alert",
167
167
  className: "break-words text-status-error-text",
168
168
  children: y
169
- }), /* @__PURE__ */ d(u, {
169
+ }), /* @__PURE__ */ f(u, {
170
170
  type: "button",
171
171
  variant: "secondary",
172
172
  size: "sm",
@@ -174,18 +174,18 @@ function h(h) {
174
174
  children: g("bigconsole.alerts.rule.reloadChannels", "Reload channels")
175
175
  })]
176
176
  }),
177
- !y && N.length === 0 && /* @__PURE__ */ d("p", {
177
+ !y && N.length === 0 && /* @__PURE__ */ f("p", {
178
178
  className: "mb-3 text-sm text-text-secondary",
179
179
  children: g("bigconsole.alerts.rule.noChannels", "No active delivery channels are available to BigConsole in this organization. You can save this rule disabled.")
180
180
  }),
181
- !_.deliveries.length && /* @__PURE__ */ d("p", {
181
+ !_.deliveries.length && /* @__PURE__ */ f("p", {
182
182
  className: "mb-3 text-xs text-text-muted",
183
183
  children: g("bigconsole.alerts.rule.noDestinations", "No delivery destinations selected.")
184
184
  }),
185
- _.deliveries.map((e, t) => /* @__PURE__ */ f("div", {
185
+ _.deliveries.map((e, t) => /* @__PURE__ */ p("div", {
186
186
  className: "mb-3 min-w-0 rounded-control border border-border-subtle p-3",
187
187
  children: [
188
- /* @__PURE__ */ f("label", {
188
+ /* @__PURE__ */ p("label", {
189
189
  htmlFor: `alert-channel-${e.key}`,
190
190
  className: "mb-1 block text-xs font-medium text-text-primary",
191
191
  children: [
@@ -194,7 +194,7 @@ function h(h) {
194
194
  t + 1
195
195
  ]
196
196
  }),
197
- /* @__PURE__ */ f("select", {
197
+ /* @__PURE__ */ p("select", {
198
198
  id: `alert-channel-${e.key}`,
199
199
  className: m,
200
200
  value: e.channelId,
@@ -208,11 +208,11 @@ function h(h) {
208
208
  } : t) });
209
209
  },
210
210
  children: [
211
- /* @__PURE__ */ d("option", {
211
+ /* @__PURE__ */ f("option", {
212
212
  value: "",
213
213
  children: g("bigconsole.alerts.rule.chooseChannel", "Choose a configured channel")
214
214
  }),
215
- e.channelId && !N.some((t) => t.id === e.channelId) && /* @__PURE__ */ f("option", {
215
+ e.channelId && !N.some((t) => t.id === e.channelId) && /* @__PURE__ */ p("option", {
216
216
  value: e.channelId,
217
217
  children: [
218
218
  g("bigconsole.alerts.rule.unavailableChannel", "Unavailable channel"),
@@ -220,7 +220,7 @@ function h(h) {
220
220
  e.channelId
221
221
  ]
222
222
  }),
223
- N.map((e) => /* @__PURE__ */ f("option", {
223
+ N.map((e) => /* @__PURE__ */ p("option", {
224
224
  value: e.id,
225
225
  children: [
226
226
  e.name,
@@ -230,12 +230,12 @@ function h(h) {
230
230
  }, e.id))
231
231
  ]
232
232
  }),
233
- /* @__PURE__ */ d("label", {
233
+ /* @__PURE__ */ f("label", {
234
234
  htmlFor: `alert-recipient-${e.key}`,
235
235
  className: "mb-1 mt-3 block text-xs font-medium text-text-primary",
236
236
  children: e.channel === r.Email ? g("bigconsole.alerts.rule.emailRecipient", "Email address") : e.channel === r.Slack ? g("bigconsole.alerts.rule.slackRecipient", "Slack recipient ID") : g("bigconsole.alerts.rule.webhookRecipient", "HTTPS webhook URL")
237
237
  }),
238
- /* @__PURE__ */ d("input", {
238
+ /* @__PURE__ */ f("input", {
239
239
  id: `alert-recipient-${e.key}`,
240
240
  className: m,
241
241
  type: e.channel === r.Email ? "email" : e.channel === r.Webhook ? "url" : "text",
@@ -246,17 +246,17 @@ function h(h) {
246
246
  } : n) }),
247
247
  required: !0
248
248
  }),
249
- /* @__PURE__ */ f(u, {
249
+ /* @__PURE__ */ p(u, {
250
250
  type: "button",
251
251
  variant: "ghost",
252
252
  size: "sm",
253
253
  onClick: () => P({ deliveries: _.deliveries.filter((t) => t.key !== e.key) }),
254
254
  className: "mt-2",
255
- children: [/* @__PURE__ */ d(l, { className: "mr-2 h-4 w-4" }), g("bigconsole.alerts.rule.removeDestination", "Remove destination")]
255
+ children: [/* @__PURE__ */ f(l, { className: "mr-2 h-4 w-4" }), g("bigconsole.alerts.rule.removeDestination", "Remove destination")]
256
256
  })
257
257
  ]
258
258
  }, e.key)),
259
- /* @__PURE__ */ f(u, {
259
+ /* @__PURE__ */ p(u, {
260
260
  type: "button",
261
261
  variant: "secondary",
262
262
  size: "sm",
@@ -267,34 +267,34 @@ function h(h) {
267
267
  recipient: ""
268
268
  }] }),
269
269
  disabled: N.length === 0,
270
- children: [/* @__PURE__ */ d(s, { className: "mr-2 h-4 w-4" }), g("bigconsole.alerts.rule.addDestination", "Add destination")]
270
+ children: [/* @__PURE__ */ f(s, { className: "mr-2 h-4 w-4" }), g("bigconsole.alerts.rule.addDestination", "Add destination")]
271
271
  })
272
272
  ]
273
273
  }),
274
- /* @__PURE__ */ f("fieldset", {
274
+ /* @__PURE__ */ p("fieldset", {
275
275
  disabled: M,
276
276
  className: "min-w-0",
277
277
  children: [
278
- /* @__PURE__ */ d("legend", {
278
+ /* @__PURE__ */ f("legend", {
279
279
  className: "mb-2 text-sm font-medium text-text-primary",
280
280
  children: g("bigconsole.alerts.rule.throttle", "Throttle")
281
281
  }),
282
- /* @__PURE__ */ f("label", {
282
+ /* @__PURE__ */ p("label", {
283
283
  className: "flex items-center gap-2 text-sm text-text-primary",
284
- children: [/* @__PURE__ */ d("input", {
284
+ children: [/* @__PURE__ */ f("input", {
285
285
  type: "checkbox",
286
286
  checked: _.throttleEnabled,
287
287
  onChange: (e) => P({ throttleEnabled: e.target.checked }),
288
288
  className: e
289
289
  }), g("bigconsole.alerts.rule.limitFrequency", "Limit alert frequency")]
290
290
  }),
291
- _.throttleEnabled && /* @__PURE__ */ f("div", {
291
+ _.throttleEnabled && /* @__PURE__ */ p("div", {
292
292
  className: "mt-3 grid gap-form-gap sm:grid-cols-2",
293
- children: [/* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("label", {
293
+ children: [/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("label", {
294
294
  htmlFor: "alert-window",
295
295
  className: "mb-1 block text-xs font-medium text-text-primary",
296
296
  children: g("bigconsole.alerts.rule.window", "Time window (minutes)")
297
- }), /* @__PURE__ */ d("input", {
297
+ }), /* @__PURE__ */ f("input", {
298
298
  id: "alert-window",
299
299
  type: "number",
300
300
  min: 1,
@@ -303,11 +303,11 @@ function h(h) {
303
303
  value: _.windowMinutes,
304
304
  onChange: (e) => P({ windowMinutes: e.target.value }),
305
305
  required: !0
306
- })] }), /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("label", {
306
+ })] }), /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("label", {
307
307
  htmlFor: "alert-max",
308
308
  className: "mb-1 block text-xs font-medium text-text-primary",
309
309
  children: g("bigconsole.alerts.rule.maxAlerts", "Maximum alerts per window")
310
- }), /* @__PURE__ */ d("input", {
310
+ }), /* @__PURE__ */ f("input", {
311
311
  id: "alert-max",
312
312
  type: "number",
313
313
  min: 1,
@@ -320,31 +320,31 @@ function h(h) {
320
320
  })
321
321
  ]
322
322
  }),
323
- /* @__PURE__ */ f("label", {
323
+ /* @__PURE__ */ p("label", {
324
324
  className: "flex items-start gap-2 text-sm text-text-primary",
325
- children: [/* @__PURE__ */ d("input", {
325
+ children: [/* @__PURE__ */ f("input", {
326
326
  type: "checkbox",
327
327
  checked: _.enabled,
328
328
  onChange: (e) => P({ enabled: e.target.checked }),
329
329
  disabled: M,
330
330
  className: `mt-1 ${e}`
331
- }), /* @__PURE__ */ f("span", { children: [g("bigconsole.alerts.rule.enabled", "Rule enabled"), /* @__PURE__ */ d("span", {
331
+ }), /* @__PURE__ */ p("span", { children: [g("bigconsole.alerts.rule.enabled", "Rule enabled"), /* @__PURE__ */ f("span", {
332
332
  className: "mt-1 block text-xs text-text-secondary",
333
333
  children: g("bigconsole.alerts.rule.enabledHelp", "Enabled rules evaluate when this sink is updated or refreshed. Saving a disabled rule does not send notifications.")
334
334
  })] })]
335
335
  }),
336
- /* @__PURE__ */ f("div", {
336
+ /* @__PURE__ */ p("div", {
337
337
  className: "flex flex-wrap justify-end gap-control-gap border-t border-border-subtle pt-4",
338
- children: [/* @__PURE__ */ d(u, {
338
+ children: [/* @__PURE__ */ f(u, {
339
339
  type: "button",
340
340
  variant: "secondary",
341
341
  onClick: k,
342
342
  disabled: x,
343
343
  children: g("bigconsole.alerts.rule.cancel", "Cancel")
344
- }), /* @__PURE__ */ f(u, {
344
+ }), /* @__PURE__ */ p(u, {
345
345
  type: "submit",
346
346
  disabled: M,
347
- children: [x ? /* @__PURE__ */ d(a, { className: "mr-2 h-4 w-4 animate-spin" }) : /* @__PURE__ */ d(c, { className: "mr-2 h-4 w-4" }), x ? g("bigconsole.alerts.rule.saving", "Saving…") : g("bigconsole.alerts.rule.save", "Save rule")]
347
+ children: [x ? /* @__PURE__ */ f(a, { className: "mr-2 h-4 w-4 animate-spin" }) : /* @__PURE__ */ f(c, { className: "mr-2 h-4 w-4" }), x ? g("bigconsole.alerts.rule.saving", "Saving…") : g("bigconsole.alerts.rule.save", "Save rule")]
348
348
  })]
349
349
  })
350
350
  ]
@@ -1,6 +1,6 @@
1
1
  import { memo as e, useCallback as t, useEffect as n, useMemo as r, useRef as i, useState as a } from "react";
2
- import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
3
- import { useI18n as l } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
2
+ import { useI18n as o } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
3
+ import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
4
4
  //#region src/bigconsole/components/datasink/CacheTTLSelector.tsx
5
5
  var u = [
6
6
  0,
@@ -13,7 +13,7 @@ function d(e) {
13
13
  return e === null ? !1 : u.includes(e);
14
14
  }
15
15
  var f = e(function({ value: e, onChange: u, disabled: f = !1, error: p, hideLabel: m = !1 }) {
16
- let { t: h } = l(), g = r(() => [
16
+ let { t: h } = o(), g = r(() => [
17
17
  {
18
18
  value: 0,
19
19
  label: h("bigconsole.dataSinks.cacheTtl.presetNoCacheLabel", "No cache"),
@@ -78,21 +78,21 @@ var f = e(function({ value: e, onChange: u, disabled: f = !1, error: p, hideLabe
78
78
  }
79
79
  C(null), u(n);
80
80
  }, [u, h]);
81
- return /* @__PURE__ */ c("div", {
81
+ return /* @__PURE__ */ l("div", {
82
82
  className: "space-y-form-gap",
83
83
  children: [
84
- !m && /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("label", {
84
+ !m && /* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("label", {
85
85
  className: "block text-sm font-medium text-text-primary mb-1",
86
86
  children: h("bigconsole.dataSinks.cacheTtl.heading", "Cache Duration")
87
- }), /* @__PURE__ */ s("p", {
87
+ }), /* @__PURE__ */ c("p", {
88
88
  className: "text-xs text-text-secondary",
89
89
  children: h("bigconsole.dataSinks.cacheTtl.headingDescription", "How long should data be cached before refreshing?")
90
90
  })] }),
91
- /* @__PURE__ */ c("div", {
91
+ /* @__PURE__ */ l("div", {
92
92
  role: "group",
93
93
  "aria-label": h("bigconsole.dataSinks.cacheTtl.heading", "Cache Duration"),
94
94
  className: "space-y-list-gap",
95
- children: [g.map((t) => /* @__PURE__ */ c("label", {
95
+ children: [g.map((t) => /* @__PURE__ */ l("label", {
96
96
  className: `
97
97
  flex cursor-pointer items-start gap-3
98
98
  rounded-input
@@ -101,30 +101,30 @@ var f = e(function({ value: e, onChange: u, disabled: f = !1, error: p, hideLabe
101
101
  ${f ? "cursor-not-allowed opacity-50" : ""}
102
102
  ${!v && e === t.value ? "border-[var(--color-action-primary-bg)] bg-bg-accentSubtle" : "border-[var(--color-border-subtle)] hover:border-[var(--color-border-strong)]"}
103
103
  `,
104
- children: [/* @__PURE__ */ s("input", {
104
+ children: [/* @__PURE__ */ c("input", {
105
105
  type: "radio",
106
106
  name: "cache-ttl",
107
107
  checked: !v && e === t.value,
108
108
  onChange: () => T(t.value),
109
109
  disabled: f,
110
110
  className: "\n mt-0.5\n h-4 w-4\n border-[var(--color-border-default)]\n text-action-primary-bg\n focus-visible:ring-2\n focus-visible:ring-ring\n "
111
- }), /* @__PURE__ */ c("div", {
111
+ }), /* @__PURE__ */ l("div", {
112
112
  className: "flex-1",
113
- children: [/* @__PURE__ */ c("div", {
113
+ children: [/* @__PURE__ */ l("div", {
114
114
  className: "flex items-center gap-2",
115
- children: [/* @__PURE__ */ s("span", {
115
+ children: [/* @__PURE__ */ c("span", {
116
116
  className: "text-sm font-medium text-text-primary",
117
117
  children: t.label
118
- }), t.recommended && /* @__PURE__ */ s("span", {
118
+ }), t.recommended && /* @__PURE__ */ c("span", {
119
119
  className: "px-1.5 py-0.5 text-xs font-medium bg-action-primary-bg/10 text-action-primary-bg rounded",
120
120
  children: h("bigconsole.dataSinks.cacheTtl.recommendedBadge", "Recommended")
121
121
  })]
122
- }), /* @__PURE__ */ s("p", {
122
+ }), /* @__PURE__ */ c("p", {
123
123
  className: "text-xs text-text-secondary mt-0.5",
124
124
  children: t.description
125
125
  })]
126
126
  })]
127
- }, t.value)), /* @__PURE__ */ c("label", {
127
+ }, t.value)), /* @__PURE__ */ l("label", {
128
128
  className: `
129
129
  flex cursor-pointer items-start gap-3
130
130
  rounded-input
@@ -133,28 +133,28 @@ var f = e(function({ value: e, onChange: u, disabled: f = !1, error: p, hideLabe
133
133
  ${f ? "cursor-not-allowed opacity-50" : ""}
134
134
  ${v ? "border-[var(--color-action-primary-bg)] bg-bg-accentSubtle" : "border-[var(--color-border-subtle)] hover:border-[var(--color-border-strong)]"}
135
135
  `,
136
- children: [/* @__PURE__ */ s("input", {
136
+ children: [/* @__PURE__ */ c("input", {
137
137
  type: "radio",
138
138
  name: "cache-ttl",
139
139
  checked: v,
140
140
  onChange: E,
141
141
  disabled: f,
142
142
  className: "\n mt-0.5\n h-4 w-4\n border-[var(--color-border-default)]\n text-action-primary-bg\n focus-visible:ring-2\n focus-visible:ring-ring\n "
143
- }), /* @__PURE__ */ c("div", {
143
+ }), /* @__PURE__ */ l("div", {
144
144
  className: "flex-1",
145
145
  children: [
146
- /* @__PURE__ */ s("span", {
146
+ /* @__PURE__ */ c("span", {
147
147
  className: "text-sm font-medium text-text-primary",
148
148
  children: h("bigconsole.dataSinks.cacheTtl.customLabel", "Custom")
149
149
  }),
150
- /* @__PURE__ */ s("p", {
150
+ /* @__PURE__ */ c("p", {
151
151
  className: "text-xs text-text-secondary mt-0.5",
152
152
  children: h("bigconsole.dataSinks.cacheTtl.customDescription", "Enter a custom cache duration (30 - 86400 seconds)")
153
153
  }),
154
- v && /* @__PURE__ */ c(o, { children: [/* @__PURE__ */ c("div", {
154
+ v && /* @__PURE__ */ l(s, { children: [/* @__PURE__ */ l("div", {
155
155
  className: "mt-3 flex flex-wrap items-center gap-2",
156
156
  children: [
157
- /* @__PURE__ */ s("input", {
157
+ /* @__PURE__ */ c("input", {
158
158
  type: "number",
159
159
  "aria-label": "Custom cache duration in seconds",
160
160
  value: b,
@@ -175,11 +175,11 @@ var f = e(function({ value: e, onChange: u, disabled: f = !1, error: p, hideLabe
175
175
  ${p || S ? "border-[var(--color-status-error-border)]" : "border-[var(--color-border-default)]"}
176
176
  `
177
177
  }),
178
- /* @__PURE__ */ s("span", {
178
+ /* @__PURE__ */ c("span", {
179
179
  className: "text-sm text-text-secondary",
180
180
  children: h("bigconsole.dataSinks.cacheTtl.secondsUnit", "seconds")
181
181
  }),
182
- b && !isNaN(parseInt(b)) && !S && /* @__PURE__ */ c("span", {
182
+ b && !isNaN(parseInt(b)) && !S && /* @__PURE__ */ l("span", {
183
183
  className: "text-xs text-text-muted",
184
184
  children: [
185
185
  "(",
@@ -188,20 +188,20 @@ var f = e(function({ value: e, onChange: u, disabled: f = !1, error: p, hideLabe
188
188
  ]
189
189
  })
190
190
  ]
191
- }), S && /* @__PURE__ */ c("div", {
191
+ }), S && /* @__PURE__ */ l("div", {
192
192
  className: "flex items-center gap-1 mt-1",
193
- children: [/* @__PURE__ */ s("svg", {
193
+ children: [/* @__PURE__ */ c("svg", {
194
194
  className: "w-3.5 h-3.5 text-status-error-text flex-shrink-0",
195
195
  fill: "none",
196
196
  stroke: "currentColor",
197
197
  viewBox: "0 0 24 24",
198
- children: /* @__PURE__ */ s("path", {
198
+ children: /* @__PURE__ */ c("path", {
199
199
  strokeLinecap: "round",
200
200
  strokeLinejoin: "round",
201
201
  strokeWidth: 2,
202
202
  d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
203
203
  })
204
- }), /* @__PURE__ */ s("span", {
204
+ }), /* @__PURE__ */ c("span", {
205
205
  className: "text-xs text-status-error-text",
206
206
  children: S
207
207
  })]
@@ -210,38 +210,38 @@ var f = e(function({ value: e, onChange: u, disabled: f = !1, error: p, hideLabe
210
210
  })]
211
211
  })]
212
212
  }),
213
- p && /* @__PURE__ */ c("div", {
213
+ p && /* @__PURE__ */ l("div", {
214
214
  className: "flex items-start gap-2",
215
- children: [/* @__PURE__ */ s("svg", {
215
+ children: [/* @__PURE__ */ c("svg", {
216
216
  className: "w-4 h-4 text-status-error-text flex-shrink-0 mt-0.5",
217
217
  fill: "none",
218
218
  stroke: "currentColor",
219
219
  viewBox: "0 0 24 24",
220
- children: /* @__PURE__ */ s("path", {
220
+ children: /* @__PURE__ */ c("path", {
221
221
  strokeLinecap: "round",
222
222
  strokeLinejoin: "round",
223
223
  strokeWidth: 2,
224
224
  d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
225
225
  })
226
- }), /* @__PURE__ */ s("p", {
226
+ }), /* @__PURE__ */ c("p", {
227
227
  className: "text-xs text-status-error-text",
228
228
  children: p
229
229
  })]
230
230
  }),
231
- e !== null && !p && /* @__PURE__ */ c("div", {
231
+ e !== null && !p && /* @__PURE__ */ l("div", {
232
232
  className: "flex items-center gap-2 text-xs text-text-secondary",
233
- children: [/* @__PURE__ */ s("svg", {
233
+ children: [/* @__PURE__ */ c("svg", {
234
234
  className: "w-4 h-4",
235
235
  fill: "none",
236
236
  stroke: "currentColor",
237
237
  viewBox: "0 0 24 24",
238
- children: /* @__PURE__ */ s("path", {
238
+ children: /* @__PURE__ */ c("path", {
239
239
  strokeLinecap: "round",
240
240
  strokeLinejoin: "round",
241
241
  strokeWidth: 2,
242
242
  d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
243
243
  })
244
- }), /* @__PURE__ */ s("span", { children: e === 0 ? h("bigconsole.dataSinks.cacheTtl.presetNoCacheDescription", "Read current stored data without caching results") : h("bigconsole.dataSinks.cacheTtl.infoCachedFor", "Data will be cached for {{duration}} before being refreshed", { duration: _(e) }) })]
244
+ }), /* @__PURE__ */ c("span", { children: e === 0 ? h("bigconsole.dataSinks.cacheTtl.presetNoCacheDescription", "Read current stored data without caching results") : h("bigconsole.dataSinks.cacheTtl.infoCachedFor", "Data will be cached for {{duration}} before being refreshed", { duration: _(e) }) })]
245
245
  })
246
246
  ]
247
247
  });