@burdenoff/microfe-bigconsole 2026.1010.12 → 2026.1012.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/README.md +19 -0
  2. package/dist/bigconsole/BigConsoleRoot.js +88 -82
  3. package/dist/bigconsole/BigConsoleRoutes.js +163 -136
  4. package/dist/bigconsole/assistant/assistantProduct.js +1 -4
  5. package/dist/bigconsole/assistant/pageContext.d.ts +0 -14
  6. package/dist/bigconsole/assistant/pageContext.js +1 -6
  7. package/dist/bigconsole/assistant/recordAdapters.js +26 -27
  8. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js +31 -31
  9. package/dist/bigconsole/components/common/index.d.ts +0 -1
  10. package/dist/bigconsole/components/common/index.js +0 -1
  11. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js +44 -44
  12. package/dist/bigconsole/components/dashboard/DashboardCanvas.js +36 -36
  13. package/dist/bigconsole/components/dashboard/DashboardToolbar.js +59 -59
  14. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js +58 -57
  15. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js +30 -30
  16. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +41 -41
  17. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js +34 -34
  18. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +34 -34
  19. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js +110 -110
  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 +164 -173
  23. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js +101 -101
  24. package/dist/bigconsole/components/dashboard/TemplateInstallOptions.js +31 -31
  25. package/dist/bigconsole/components/dashboard/TemplateLayoutPreview.js +15 -15
  26. package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.js +1 -1
  27. package/dist/bigconsole/components/dashboard/WidgetPalette.js +165 -163
  28. package/dist/bigconsole/components/datasink/AlertExecutionHistory.js +37 -37
  29. package/dist/bigconsole/components/datasink/AlertRuleEditor.js +66 -66
  30. package/dist/bigconsole/components/datasink/CacheTTLSelector.js +35 -35
  31. package/dist/bigconsole/components/datasink/DataSinkCard.js +50 -51
  32. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js +18 -18
  33. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js +20 -20
  34. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js +47 -47
  35. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +91 -91
  36. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js +35 -35
  37. package/dist/bigconsole/components/parser/DataSinkSelector.js +40 -40
  38. package/dist/bigconsole/components/parser/ImportParserDialog.js +120 -120
  39. package/dist/bigconsole/components/parser/ParserSelector.js +51 -51
  40. package/dist/bigconsole/components/pipeline/PipelineScopePicker.js +10 -10
  41. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js +76 -77
  42. package/dist/bigconsole/components/preview/AiPreviewPanel.js +95 -96
  43. package/dist/bigconsole/components/widgets/ActionConfigDialog.js +4 -4
  44. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js +93 -93
  45. package/dist/bigconsole/components/widgets/PropertiesPanel.js +499 -507
  46. package/dist/bigconsole/components/widgets/WidgetRegistry.js +0 -1
  47. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js +4 -4
  48. package/dist/bigconsole/components/widgets/chart/ChartConfig.js +48 -48
  49. package/dist/bigconsole/components/widgets/comments/WidgetComments.js +46 -46
  50. package/dist/bigconsole/components/widgets/custom/CustomWidget.js +73 -131
  51. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js +61 -61
  52. package/dist/bigconsole/components/widgets/form/FormWidget.js +36 -36
  53. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js +42 -42
  54. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js +25 -25
  55. package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.d.ts +28 -9
  56. package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.js +115 -42
  57. package/dist/bigconsole/components/widgets/iframe-widget/framePolicy.d.ts +20 -0
  58. package/dist/bigconsole/components/widgets/iframe-widget/framePolicy.js +10 -0
  59. package/dist/bigconsole/components/widgets/iframe-widget/index.d.ts +2 -1
  60. package/dist/bigconsole/components/widgets/iframe-widget/index.js +3 -2
  61. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js +4 -4
  62. package/dist/bigconsole/components/widgets/list/ListConfig.js +30 -30
  63. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js +38 -38
  64. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js +9 -9
  65. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js +9 -9
  66. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js +49 -49
  67. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js +39 -39
  68. package/dist/bigconsole/components/widgets/table/TableConfig.js +73 -73
  69. package/dist/bigconsole/components/widgets/text-widget/TextWidget.js +110 -27
  70. package/dist/bigconsole/components/widgets/text-widget/textData.d.ts +6 -0
  71. package/dist/bigconsole/components/widgets/text-widget/textData.js +17 -14
  72. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js +64 -64
  73. package/dist/bigconsole/components/workflow/WorkflowOpenGuard.js +15 -15
  74. package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.js +15 -15
  75. package/dist/bigconsole/context/BigConsoleContext.d.ts +10 -0
  76. package/dist/bigconsole/context/BigConsoleContext.js +47 -30
  77. package/dist/bigconsole/context/index.d.ts +1 -1
  78. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js +58 -49
  79. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js +74 -72
  80. package/dist/bigconsole/customWidget/proposalPreview.d.ts +5 -0
  81. package/dist/bigconsole/customWidget/proposalPreview.js +31 -0
  82. package/dist/bigconsole/hooks/useDataSinkAlerts.d.ts +0 -23
  83. package/dist/bigconsole/hooks/useDataSinkAlerts.js +113 -138
  84. package/dist/bigconsole/hooks/useDataSinkOperations.d.ts +7 -0
  85. package/dist/bigconsole/hooks/useDataSinkOperations.js +109 -98
  86. package/dist/bigconsole/hooks/useDataSinkSubscription.js +0 -1
  87. package/dist/bigconsole/hooks/useDrilldown.js +68 -67
  88. package/dist/bigconsole/hooks/useExportDataSink.js +1 -1
  89. package/dist/bigconsole/hooks/useGlobalFilters.js +3 -3
  90. package/dist/bigconsole/hooks/useImportDataSink.js +102 -90
  91. package/dist/bigconsole/pages/AdminPage.js +130 -130
  92. package/dist/bigconsole/pages/DashboardBuilderPage.js +60 -72
  93. package/dist/bigconsole/pages/DashboardViewPage.js +235 -258
  94. package/dist/bigconsole/pages/DashboardsPage.js +221 -269
  95. package/dist/bigconsole/pages/DataParsersPage.js +157 -180
  96. package/dist/bigconsole/pages/DataSinkAlertsPage.js +55 -62
  97. package/dist/bigconsole/pages/DataSinkBuilderPage.js +318 -295
  98. package/dist/bigconsole/pages/DataSinkViewPage.js +256 -255
  99. package/dist/bigconsole/pages/DataSinksPage.js +216 -251
  100. package/dist/bigconsole/pages/DataSourcesPage.js +5 -5
  101. package/dist/bigconsole/pages/InsightsPage.js +265 -279
  102. package/dist/bigconsole/pages/OverviewPage.js +47 -47
  103. package/dist/bigconsole/pages/ParserBuilderPage.js +213 -229
  104. package/dist/bigconsole/pages/ParserViewPage.js +97 -97
  105. package/dist/bigconsole/pages/PipelineBuilderPage.js +214 -256
  106. package/dist/bigconsole/pages/PipelineViewPage.js +146 -146
  107. package/dist/bigconsole/pages/PipelinesPage.js +88 -107
  108. package/dist/bigconsole/pages/SettingsPage.js +173 -179
  109. package/dist/bigconsole/pages/WidgetDemoPage.js +42 -42
  110. package/dist/bigconsole/pages/WorkflowViewPage.js +1 -1
  111. package/dist/bigconsole/pages/WorkflowsPage.js +141 -141
  112. package/dist/bigconsole/providers/BigConsoleQuotaProvider.js +12 -12
  113. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js +235 -122
  114. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.d.ts +6 -1
  115. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js +151 -151
  116. package/dist/bigconsole/renderers/adapters/CustomRenderer.js +46 -46
  117. package/dist/bigconsole/renderers/adapters/adaptiveCardContent.d.ts +29 -0
  118. package/dist/bigconsole/renderers/adapters/adaptiveCardContent.js +51 -0
  119. package/dist/bigconsole/store/widgetStore.d.ts +0 -12
  120. package/dist/bigconsole/store/widgetStore.js +1 -3
  121. package/dist/bigconsole/types/index.d.ts +17 -2
  122. package/dist/bigconsole/utils/backendError.d.ts +0 -18
  123. package/dist/bigconsole/utils/dataSinkPayload.d.ts +48 -0
  124. package/dist/bigconsole/utils/dataSinkPayload.js +38 -0
  125. package/dist/bigconsole/utils/index.d.ts +2 -0
  126. package/dist/bigconsole/utils/safeUrl.d.ts +79 -0
  127. package/dist/bigconsole/utils/safeUrl.js +93 -0
  128. package/dist/bigconsole/utils/sanitizeHtml.d.ts +16 -0
  129. package/dist/bigconsole/utils/sanitizeHtml.js +67 -0
  130. package/dist/bigconsole/workflowOpen.js +14 -15
  131. package/dist/generated/wspace-operations.d.ts +138 -8
  132. package/dist/generated/wspace-operations.js +281 -240
  133. package/dist/node_modules/dompurify/dist/purify.es.js +800 -0
  134. package/package.json +9 -5
  135. package/dist/bigconsole/assistant/displayCopy.d.ts +0 -32
  136. package/dist/bigconsole/assistant/pageControls.d.ts +0 -81
  137. package/dist/bigconsole/assistant/pageControls.js +0 -169
  138. package/dist/bigconsole/assistant/previewControl.d.ts +0 -16
  139. package/dist/bigconsole/assistant/previewControl.js +0 -10
  140. package/dist/bigconsole/assistant/usePreviewControl.d.ts +0 -2
  141. package/dist/bigconsole/assistant/usePreviewControl.js +0 -20
  142. package/dist/bigconsole/components/common/SortBySelect.d.ts +0 -11
  143. package/dist/bigconsole/components/common/SortBySelect.js +0 -29
  144. package/dist/bigconsole/constants/backendErrors.js +0 -94
  145. package/dist/bigconsole/hooks/useDashboardLayoutBaseline.d.ts +0 -14
  146. package/dist/bigconsole/hooks/useDashboardLayoutBaseline.js +0 -32
  147. package/dist/bigconsole/utils/backendError.js +0 -42
  148. package/dist/bigconsole/utils/dashboardList.d.ts +0 -28
  149. package/dist/bigconsole/utils/dashboardList.js +0 -15
  150. package/dist/bigconsole/utils/dataSinkList.d.ts +0 -15
  151. package/dist/bigconsole/utils/dataSinkList.js +0 -15
  152. package/dist/bigconsole/utils/formDirty.d.ts +0 -82
  153. package/dist/bigconsole/utils/formDirty.js +0 -21
  154. package/dist/bigconsole/utils/insightsDraft.d.ts +0 -29
  155. package/dist/bigconsole/utils/insightsDraft.js +0 -8
  156. package/dist/bigconsole/utils/layoutBaseline.d.ts +0 -130
  157. package/dist/bigconsole/utils/layoutBaseline.js +0 -96
  158. package/dist/bigconsole/utils/listSort.d.ts +0 -80
  159. package/dist/bigconsole/utils/listSort.js +0 -85
  160. package/dist/bigconsole/utils/widgetFormDirty.d.ts +0 -16
  161. package/dist/bigconsole/utils/widgetFormDirty.js +0 -13
@@ -11,14 +11,14 @@ import { PermissionButton as s } from "@burdenoff/fe-libs/shared/components";
11
11
  import { usePermissions as c } from "@burdenoff/fe-libs/shared/providers/shell";
12
12
  import { Clipboard as l, Download as u, Eye as d, FileText as f, Image as p, Minus as m, PanelLeft as h, PanelLeftClose as g, Pencil as _, Plus as v, RotateCcw as y, Save as b, Share2 as x, Store as S } from "lucide-react";
13
13
  import { Button as C, Spinner as w, Tooltip as T, TooltipContent as E, TooltipProvider as D, TooltipTrigger as O } from "@burdenoff/fe-libs/ui";
14
- import { useI18n as k } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
15
- import { Fragment as A, jsx as j, jsxs as M } from "react/jsx-runtime";
14
+ import { Fragment as k, jsx as A, jsxs as j } from "react/jsx-runtime";
15
+ import { useI18n as M } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
16
16
  //#region src/bigconsole/components/dashboard/DashboardToolbar.tsx
17
17
  var N = a(function({ dashboardId: a, title: N, onAddWidget: P, onTogglePalette: F, isPaletteOpen: I = !1, onPaste: L, onSave: R, isSaving: z = !1, onExport: B, onPublishTemplate: V, onExportImage: H, onExportPdf: U, isExportingImage: W = !1, onShare: G }) {
18
- let { hasPermission: K } = c(), { t: q } = k(), J = t((e) => e.viewMode === "edit"), Y = t((e) => e.toggleViewMode), X = t((e) => e.zoomLevel), Z = t((e) => e.setZoomLevel), Q = !!e((e) => e.clipboardWidgetId), $ = o(() => {
18
+ let { hasPermission: K } = c(), { t: q } = M(), J = t((e) => e.viewMode === "edit"), Y = t((e) => e.toggleViewMode), X = t((e) => e.zoomLevel), Z = t((e) => e.setZoomLevel), Q = !!e((e) => e.clipboardWidgetId), $ = o(() => {
19
19
  Q && L && L();
20
20
  }, [Q, L]);
21
- return /* @__PURE__ */ j(D, { children: /* @__PURE__ */ M(n, {
21
+ return /* @__PURE__ */ A(D, { children: /* @__PURE__ */ j(n, {
22
22
  emphasis: "bare",
23
23
  padding: "none",
24
24
  "aria-label": N ? `Board toolbar — ${N}` : "Board toolbar",
@@ -26,156 +26,156 @@ var N = a(function({ dashboardId: a, title: N, onAddWidget: P, onTogglePalette:
26
26
  className: "flex-shrink-0 border-b border-[var(--color-border-subtle)] bg-bg-surface px-4 py-2",
27
27
  bodyClassName: "flex flex-wrap items-center justify-between gap-x-4 gap-y-2",
28
28
  children: [
29
- /* @__PURE__ */ j("div", {
29
+ /* @__PURE__ */ A("div", {
30
30
  className: "flex min-w-0 items-center gap-4",
31
- children: a && /* @__PURE__ */ j(i, { dashboardId: a })
31
+ children: a && /* @__PURE__ */ A(i, { dashboardId: a })
32
32
  }),
33
- /* @__PURE__ */ M("div", {
33
+ /* @__PURE__ */ j("div", {
34
34
  role: "group",
35
35
  "aria-label": "Zoom",
36
36
  className: "flex min-w-0 items-center gap-1 border-l border-[var(--color-border-subtle)] pl-4",
37
37
  children: [
38
- /* @__PURE__ */ M(T, { children: [/* @__PURE__ */ j(O, {
38
+ /* @__PURE__ */ j(T, { children: [/* @__PURE__ */ A(O, {
39
39
  asChild: !0,
40
- children: /* @__PURE__ */ j(C, {
40
+ children: /* @__PURE__ */ A(C, {
41
41
  variant: "ghost",
42
42
  size: "icon-sm",
43
43
  onClick: () => Z(Math.max(50, X - 10)),
44
44
  disabled: X <= 50,
45
- children: /* @__PURE__ */ j(m, { className: "size-4" })
45
+ children: /* @__PURE__ */ A(m, { className: "size-4" })
46
46
  })
47
- }), /* @__PURE__ */ j(E, { children: q("bigconsole.dashboards.toolbar.zoomOut", "Zoom out") })] }),
48
- /* @__PURE__ */ M("span", {
47
+ }), /* @__PURE__ */ A(E, { children: q("bigconsole.dashboards.toolbar.zoomOut", "Zoom out") })] }),
48
+ /* @__PURE__ */ j("span", {
49
49
  className: "text-sm text-text-secondary w-12 text-center",
50
50
  children: [X, "%"]
51
51
  }),
52
- /* @__PURE__ */ M(T, { children: [/* @__PURE__ */ j(O, {
52
+ /* @__PURE__ */ j(T, { children: [/* @__PURE__ */ A(O, {
53
53
  asChild: !0,
54
- children: /* @__PURE__ */ j(C, {
54
+ children: /* @__PURE__ */ A(C, {
55
55
  variant: "ghost",
56
56
  size: "icon-sm",
57
57
  onClick: () => Z(Math.min(200, X + 10)),
58
58
  disabled: X >= 200,
59
- children: /* @__PURE__ */ j(v, { className: "size-4" })
59
+ children: /* @__PURE__ */ A(v, { className: "size-4" })
60
60
  })
61
- }), /* @__PURE__ */ j(E, { children: q("bigconsole.dashboards.toolbar.zoomIn", "Zoom in") })] }),
62
- /* @__PURE__ */ M(T, { children: [/* @__PURE__ */ j(O, {
61
+ }), /* @__PURE__ */ A(E, { children: q("bigconsole.dashboards.toolbar.zoomIn", "Zoom in") })] }),
62
+ /* @__PURE__ */ j(T, { children: [/* @__PURE__ */ A(O, {
63
63
  asChild: !0,
64
- children: /* @__PURE__ */ M(C, {
64
+ children: /* @__PURE__ */ j(C, {
65
65
  variant: "ghost",
66
66
  size: "sm",
67
67
  onClick: () => Z(100),
68
- children: [/* @__PURE__ */ j(y, { className: "size-3.5 mr-1" }), q("bigconsole.dashboards.toolbar.reset", "Reset")]
68
+ children: [/* @__PURE__ */ A(y, { className: "size-3.5 mr-1" }), q("bigconsole.dashboards.toolbar.reset", "Reset")]
69
69
  })
70
- }), /* @__PURE__ */ j(E, { children: q("bigconsole.dashboards.toolbar.resetZoomTooltip", "Reset zoom to 100%") })] })
70
+ }), /* @__PURE__ */ A(E, { children: q("bigconsole.dashboards.toolbar.resetZoomTooltip", "Reset zoom to 100%") })] })
71
71
  ]
72
72
  }),
73
- /* @__PURE__ */ M("div", {
73
+ /* @__PURE__ */ j("div", {
74
74
  role: "group",
75
75
  "aria-label": "Board actions",
76
76
  className: "flex min-w-0 flex-wrap items-center justify-end gap-2 border-l border-[var(--color-border-subtle)] pl-4",
77
77
  children: [
78
- J && /* @__PURE__ */ M(A, { children: [
79
- F && /* @__PURE__ */ M(T, { children: [/* @__PURE__ */ j(O, {
78
+ J && /* @__PURE__ */ j(k, { children: [
79
+ F && /* @__PURE__ */ j(T, { children: [/* @__PURE__ */ A(O, {
80
80
  asChild: !0,
81
- children: /* @__PURE__ */ M(C, {
81
+ children: /* @__PURE__ */ j(C, {
82
82
  variant: I ? "secondary" : "outline",
83
83
  size: "sm",
84
84
  onClick: F,
85
- children: [j(I ? g : h, { className: "size-4" }), q("bigconsole.dashboards.toolbar.widgets", "Widgets")]
85
+ children: [A(I ? g : h, { className: "size-4" }), q("bigconsole.dashboards.toolbar.widgets", "Widgets")]
86
86
  })
87
- }), /* @__PURE__ */ j(E, { children: I ? q("bigconsole.dashboards.toolbar.hidePalette", "Hide widget palette") : q("bigconsole.dashboards.toolbar.showPalette", "Show widget palette for drag & drop") })] }),
88
- /* @__PURE__ */ M(T, { children: [/* @__PURE__ */ j(O, {
87
+ }), /* @__PURE__ */ A(E, { children: I ? q("bigconsole.dashboards.toolbar.hidePalette", "Hide widget palette") : q("bigconsole.dashboards.toolbar.showPalette", "Show widget palette for drag & drop") })] }),
88
+ /* @__PURE__ */ j(T, { children: [/* @__PURE__ */ A(O, {
89
89
  asChild: !0,
90
- children: /* @__PURE__ */ M(C, {
90
+ children: /* @__PURE__ */ j(C, {
91
91
  variant: "ghost",
92
92
  size: "sm",
93
93
  onClick: $,
94
94
  disabled: !Q,
95
- children: [/* @__PURE__ */ j(l, { className: "size-4" }), q("bigconsole.dashboards.toolbar.paste", "Paste")]
95
+ children: [/* @__PURE__ */ A(l, { className: "size-4" }), q("bigconsole.dashboards.toolbar.paste", "Paste")]
96
96
  })
97
- }), /* @__PURE__ */ j(E, { children: q("bigconsole.dashboards.toolbar.pasteTooltip", "Paste widget from clipboard") })] }),
98
- /* @__PURE__ */ j(s, {
97
+ }), /* @__PURE__ */ A(E, { children: q("bigconsole.dashboards.toolbar.pasteTooltip", "Paste widget from clipboard") })] }),
98
+ /* @__PURE__ */ A(s, {
99
99
  permission: r.WIDGET_CREATE,
100
100
  deniedBehavior: "hide",
101
- children: /* @__PURE__ */ M(C, {
101
+ children: /* @__PURE__ */ j(C, {
102
102
  size: "sm",
103
103
  onClick: P,
104
- children: [/* @__PURE__ */ j(v, { className: "size-4" }), q("bigconsole.dashboards.toolbar.addWidget", "Add Widget")]
104
+ children: [/* @__PURE__ */ A(v, { className: "size-4" }), q("bigconsole.dashboards.toolbar.addWidget", "Add Widget")]
105
105
  })
106
106
  })
107
107
  ] }),
108
- /* @__PURE__ */ j(C, {
108
+ /* @__PURE__ */ A(C, {
109
109
  variant: J ? "secondary" : "outline",
110
110
  size: "sm",
111
111
  onClick: Y,
112
- children: J ? /* @__PURE__ */ M(A, { children: [/* @__PURE__ */ j(d, { className: "size-4" }), q("bigconsole.dashboards.toolbar.preview", "Preview")] }) : /* @__PURE__ */ M(A, { children: [/* @__PURE__ */ j(_, { className: "size-4" }), q("bigconsole.dashboards.toolbar.edit", "Edit")] })
112
+ children: J ? /* @__PURE__ */ j(k, { children: [/* @__PURE__ */ A(d, { className: "size-4" }), q("bigconsole.dashboards.toolbar.preview", "Preview")] }) : /* @__PURE__ */ j(k, { children: [/* @__PURE__ */ A(_, { className: "size-4" }), q("bigconsole.dashboards.toolbar.edit", "Edit")] })
113
113
  }),
114
- R && /* @__PURE__ */ j(C, {
114
+ R && /* @__PURE__ */ A(C, {
115
115
  variant: "outline",
116
116
  size: "sm",
117
117
  onClick: R,
118
118
  disabled: z,
119
- children: z ? /* @__PURE__ */ M(A, { children: [/* @__PURE__ */ j(w, { className: "size-4" }), q("bigconsole.dashboards.toolbar.saving", "Saving...")] }) : /* @__PURE__ */ M(A, { children: [/* @__PURE__ */ j(b, { className: "size-4" }), q("bigconsole.dashboards.toolbar.save", "Save")] })
119
+ children: z ? /* @__PURE__ */ j(k, { children: [/* @__PURE__ */ A(w, { className: "size-4" }), q("bigconsole.dashboards.toolbar.saving", "Saving...")] }) : /* @__PURE__ */ j(k, { children: [/* @__PURE__ */ A(b, { className: "size-4" }), q("bigconsole.dashboards.toolbar.save", "Save")] })
120
120
  }),
121
- G && /* @__PURE__ */ j(s, {
121
+ G && /* @__PURE__ */ A(s, {
122
122
  permission: r.DASHBOARD_SHARE,
123
123
  deniedBehavior: "hide",
124
- children: /* @__PURE__ */ M(T, { children: [/* @__PURE__ */ j(O, {
124
+ children: /* @__PURE__ */ j(T, { children: [/* @__PURE__ */ A(O, {
125
125
  asChild: !0,
126
- children: /* @__PURE__ */ M(C, {
126
+ children: /* @__PURE__ */ j(C, {
127
127
  variant: "outline",
128
128
  size: "sm",
129
129
  onClick: G,
130
- children: [/* @__PURE__ */ j(x, { className: "size-4" }), q("bigconsole.dashboards.toolbar.share", "Share")]
130
+ children: [/* @__PURE__ */ A(x, { className: "size-4" }), q("bigconsole.dashboards.toolbar.share", "Share")]
131
131
  })
132
- }), /* @__PURE__ */ j(E, { children: q("bigconsole.dashboards.toolbar.shareTooltip", "Share dashboard with others") })] })
132
+ }), /* @__PURE__ */ A(E, { children: q("bigconsole.dashboards.toolbar.shareTooltip", "Share dashboard with others") })] })
133
133
  }),
134
- V && /* @__PURE__ */ j(s, {
134
+ V && /* @__PURE__ */ A(s, {
135
135
  permission: r.DASHBOARD_PUBLISH,
136
136
  deniedBehavior: "hide",
137
- children: /* @__PURE__ */ M(T, { children: [/* @__PURE__ */ j(O, {
137
+ children: /* @__PURE__ */ j(T, { children: [/* @__PURE__ */ A(O, {
138
138
  asChild: !0,
139
- children: /* @__PURE__ */ M(C, {
139
+ children: /* @__PURE__ */ j(C, {
140
140
  variant: "outline",
141
141
  size: "sm",
142
142
  onClick: V,
143
- children: [/* @__PURE__ */ j(S, { className: "size-4" }), /* @__PURE__ */ j("span", {
143
+ children: [/* @__PURE__ */ A(S, { className: "size-4" }), /* @__PURE__ */ A("span", {
144
144
  className: "hidden sm:inline",
145
145
  children: q("bigconsole.dashboards.toolbar.publish", "Publish")
146
146
  })]
147
147
  })
148
- }), /* @__PURE__ */ j(E, { children: q("bigconsole.dashboards.toolbar.publishTooltip", "Publish this dashboard as a reusable template") })] })
148
+ }), /* @__PURE__ */ A(E, { children: q("bigconsole.dashboards.toolbar.publishTooltip", "Publish this dashboard as a reusable template") })] })
149
149
  }),
150
- B && /* @__PURE__ */ M(T, { children: [/* @__PURE__ */ j(O, {
150
+ B && /* @__PURE__ */ j(T, { children: [/* @__PURE__ */ A(O, {
151
151
  asChild: !0,
152
- children: /* @__PURE__ */ M(C, {
152
+ children: /* @__PURE__ */ j(C, {
153
153
  variant: "outline",
154
154
  size: "sm",
155
155
  onClick: B,
156
- children: [/* @__PURE__ */ j(u, { className: "size-4" }), q("bigconsole.dashboards.toolbar.export", "Export")]
156
+ children: [/* @__PURE__ */ A(u, { className: "size-4" }), q("bigconsole.dashboards.toolbar.export", "Export")]
157
157
  })
158
- }), /* @__PURE__ */ j(E, { children: q("bigconsole.dashboards.toolbar.exportTooltip", "Export dashboard to JSON") })] }),
159
- H && /* @__PURE__ */ M(T, { children: [/* @__PURE__ */ j(O, {
158
+ }), /* @__PURE__ */ A(E, { children: q("bigconsole.dashboards.toolbar.exportTooltip", "Export dashboard to JSON") })] }),
159
+ H && /* @__PURE__ */ j(T, { children: [/* @__PURE__ */ A(O, {
160
160
  asChild: !0,
161
- children: /* @__PURE__ */ j(C, {
161
+ children: /* @__PURE__ */ A(C, {
162
162
  variant: "outline",
163
163
  size: "icon-sm",
164
164
  onClick: H,
165
165
  disabled: W,
166
- children: j(W ? w : p, { className: "size-4" })
166
+ children: A(W ? w : p, { className: "size-4" })
167
167
  })
168
- }), /* @__PURE__ */ j(E, { children: q("bigconsole.dashboards.toolbar.exportPngTooltip", "Export board as PNG image") })] }),
169
- U && /* @__PURE__ */ M(T, { children: [/* @__PURE__ */ j(O, {
168
+ }), /* @__PURE__ */ A(E, { children: q("bigconsole.dashboards.toolbar.exportPngTooltip", "Export board as PNG image") })] }),
169
+ U && /* @__PURE__ */ j(T, { children: [/* @__PURE__ */ A(O, {
170
170
  asChild: !0,
171
- children: /* @__PURE__ */ j(C, {
171
+ children: /* @__PURE__ */ A(C, {
172
172
  variant: "outline",
173
173
  size: "icon-sm",
174
174
  onClick: U,
175
175
  disabled: W,
176
- children: /* @__PURE__ */ j(f, { className: "size-4" })
176
+ children: /* @__PURE__ */ A(f, { className: "size-4" })
177
177
  })
178
- }), /* @__PURE__ */ j(E, { children: q("bigconsole.dashboards.toolbar.exportPdfTooltip", "Export board as PDF") })] })
178
+ }), /* @__PURE__ */ A(E, { children: q("bigconsole.dashboards.toolbar.exportPdfTooltip", "Export board as PDF") })] })
179
179
  ]
180
180
  })
181
181
  ]
@@ -4,75 +4,76 @@ import { useBigConsoleNavigate as t } from "../../context/BigConsoleContext.js";
4
4
  import "../../context/index.js";
5
5
  import { SECTION_FOCUS_RING as n } from "../common/sectionStyles.js";
6
6
  import "../common/index.js";
7
- import r from "../../hooks/useFilterUrlSync.js";
8
- import { memo as i, useCallback as a, useEffect as o, useState as s } from "react";
9
- import { ArrowLeft as c, ChevronRight as l, Home as u } from "lucide-react";
10
- import { useI18n as d } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
7
+ import { appendPathSegment as r } from "../../utils/safeUrl.js";
8
+ import i from "../../hooks/useFilterUrlSync.js";
9
+ import { memo as a, useCallback as o, useEffect as s, useState as c } from "react";
10
+ import { ArrowLeft as l, ChevronRight as u, Home as d } from "lucide-react";
11
11
  import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
12
+ import { useI18n as h } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
12
13
  //#region src/bigconsole/components/dashboard/DrilldownBreadcrumb.tsx
13
- var h = i(function({ className: i = "", currentDashboardId: h, currentDashboardName: g, showHome: _ = !0, basePath: v = "/bigconsole/dashboards" }) {
14
- let { t: y } = d(), b = t(), { getDrilldownMetadata: x, isInDrilldown: S, drilldownDepth: C } = r(), w = e((e) => e.dashboards), [T, E] = s([]);
15
- o(() => {
16
- if (!S) {
17
- E([]);
14
+ var g = a(function({ className: a = "", currentDashboardId: g, currentDashboardName: _, showHome: v = !0, basePath: y = "/bigconsole/dashboards" }) {
15
+ let { t: b } = h(), x = t(), { getDrilldownMetadata: S, isInDrilldown: C, drilldownDepth: w } = i(), T = e((e) => e.dashboards), [E, D] = c([]);
16
+ s(() => {
17
+ if (!C) {
18
+ D([]);
18
19
  return;
19
20
  }
20
- let { path: e } = x();
21
+ let { path: e } = S();
21
22
  if (e.length === 0) {
22
- E([]);
23
+ D([]);
23
24
  return;
24
25
  }
25
- E(e.map((e) => ({
26
+ D(e.map((e) => ({
26
27
  id: e,
27
- name: w.get(e)?.name || y("bigconsole.dashboards.drilldownBreadcrumb.fallbackName", "Dashboard {{id}}...", { id: e.slice(0, 8) }),
28
- href: `${v}/${e}`
28
+ name: T.get(e)?.name || b("bigconsole.dashboards.drilldownBreadcrumb.fallbackName", "Dashboard {{id}}...", { id: e.slice(0, 8) }),
29
+ href: r(y, e) ?? y
29
30
  })));
30
31
  }, [
32
+ C,
31
33
  S,
32
- x,
33
- w,
34
- v,
35
- y
34
+ T,
35
+ y,
36
+ b
36
37
  ]);
37
- let D = a((e, t) => {
38
- let n = x().path.slice(0, t), r = t, i = new URL(e.href, window.location.origin);
39
- i.searchParams.set("drilldown_depth", String(r)), n.length > 0 && i.searchParams.set("drilldown_path", encodeURIComponent(JSON.stringify(n))), t > 0 && n.length > 0 && i.searchParams.set("drilldown_parent", n[n.length - 1]), b(i.pathname + i.search);
40
- }, [x, b]), O = a(() => {
38
+ let O = o((e, t) => {
39
+ let n = S().path.slice(0, t), r = t, i = new URL(e.href, window.location.origin);
40
+ i.searchParams.set("drilldown_depth", String(r)), n.length > 0 && i.searchParams.set("drilldown_path", encodeURIComponent(JSON.stringify(n))), t > 0 && n.length > 0 && i.searchParams.set("drilldown_parent", n[n.length - 1]), x(i.pathname + i.search);
41
+ }, [S, x]), k = o(() => {
41
42
  let e = window.history.state?.idx;
42
43
  if (typeof e == "number" && e > 0) {
43
44
  window.history.back();
44
45
  return;
45
46
  }
46
- let t = x();
47
+ let t = S();
47
48
  if (t.parent) {
48
- let e = t.path.slice(0, -1), n = t.depth - 1, r = new URL(`${v}/${t.parent}`, window.location.origin);
49
- r.searchParams.set("drilldown_depth", String(n)), e.length > 0 && (r.searchParams.set("drilldown_path", encodeURIComponent(JSON.stringify(e))), r.searchParams.set("drilldown_parent", e[e.length - 1])), b(r.pathname + r.search);
50
- } else if (T.length > 0) {
51
- let e = T[T.length - 1];
52
- D(e, T.length - 1);
49
+ let e = t.path.slice(0, -1), n = t.depth - 1, i = new URL(r(y, t.parent) ?? y, window.location.origin);
50
+ i.searchParams.set("drilldown_depth", String(n)), e.length > 0 && (i.searchParams.set("drilldown_path", encodeURIComponent(JSON.stringify(e))), i.searchParams.set("drilldown_parent", e[e.length - 1])), x(i.pathname + i.search);
51
+ } else if (E.length > 0) {
52
+ let e = E[E.length - 1];
53
+ O(e, E.length - 1);
53
54
  }
54
55
  }, [
56
+ S,
57
+ y,
55
58
  x,
56
- v,
57
- b,
58
- T,
59
- D
60
- ]), k = a((e) => {
61
- e.preventDefault(), b(v);
62
- }, [b, v]);
63
- return S ? /* @__PURE__ */ m("nav", {
64
- className: `flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 border-b border-[var(--color-border-subtle)] bg-bg-sunken px-4 py-1.5 ${i}`,
65
- "aria-label": y("bigconsole.dashboards.drilldownBreadcrumb.ariaLabel", "Drilldown breadcrumb"),
59
+ E,
60
+ O
61
+ ]), A = o((e) => {
62
+ e.preventDefault(), x(y);
63
+ }, [x, y]);
64
+ return C ? /* @__PURE__ */ m("nav", {
65
+ className: `flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 border-b border-[var(--color-border-subtle)] bg-bg-sunken px-4 py-1.5 ${a}`,
66
+ "aria-label": b("bigconsole.dashboards.drilldownBreadcrumb.ariaLabel", "Drilldown breadcrumb"),
66
67
  "data-testid": "drilldown-breadcrumb",
67
68
  children: [
68
69
  /* @__PURE__ */ m("button", {
69
70
  type: "button",
70
- onClick: O,
71
+ onClick: k,
71
72
  className: `flex min-h-control-sm items-center gap-1 rounded-button px-2 py-1 text-sm font-medium text-text-link motion-safe:transition-colors hover:bg-bg-accentSubtle ${n}`,
72
- "aria-label": y("bigconsole.dashboards.drilldownBreadcrumb.back", "Go back"),
73
- children: [/* @__PURE__ */ p(c, { className: "w-4 h-4" }), /* @__PURE__ */ p("span", {
73
+ "aria-label": b("bigconsole.dashboards.drilldownBreadcrumb.back", "Go back"),
74
+ children: [/* @__PURE__ */ p(l, { className: "w-4 h-4" }), /* @__PURE__ */ p("span", {
74
75
  className: "hidden sm:inline",
75
- children: y("bigconsole.dashboards.drilldownBreadcrumb.backLabel", "Back")
76
+ children: b("bigconsole.dashboards.drilldownBreadcrumb.backLabel", "Back")
76
77
  })]
77
78
  }),
78
79
  /* @__PURE__ */ p("span", {
@@ -80,44 +81,44 @@ var h = i(function({ className: i = "", currentDashboardId: h, currentDashboardN
80
81
  "aria-hidden": "true",
81
82
  children: "|"
82
83
  }),
83
- _ && /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ m("a", {
84
- href: v,
85
- onClick: k,
84
+ v && /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ m("a", {
85
+ href: y,
86
+ onClick: A,
86
87
  className: "flex min-h-control-sm items-center gap-1 rounded-button px-1 text-sm text-text-secondary motion-safe:transition-colors hover:text-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg-surface",
87
- "aria-label": y("bigconsole.dashboards.drilldownBreadcrumb.home", "Home"),
88
- children: [/* @__PURE__ */ p(u, { className: "w-4 h-4" }), /* @__PURE__ */ p("span", {
88
+ "aria-label": b("bigconsole.dashboards.drilldownBreadcrumb.home", "Home"),
89
+ children: [/* @__PURE__ */ p(d, { className: "w-4 h-4" }), /* @__PURE__ */ p("span", {
89
90
  className: "hidden sm:inline",
90
- children: y("bigconsole.dashboards.drilldownBreadcrumb.dashboards", "Dashboards")
91
+ children: b("bigconsole.dashboards.drilldownBreadcrumb.dashboards", "Dashboards")
91
92
  })]
92
- }), /* @__PURE__ */ p(l, {
93
+ }), /* @__PURE__ */ p(u, {
93
94
  className: "w-4 h-4 shrink-0 text-text-muted",
94
95
  "aria-hidden": "true"
95
96
  })] }),
96
- T.map((e, t) => /* @__PURE__ */ m("div", {
97
+ E.map((e, t) => /* @__PURE__ */ m("div", {
97
98
  className: "flex min-w-0 items-center gap-2",
98
99
  children: [/* @__PURE__ */ p("button", {
99
100
  type: "button",
100
- onClick: () => D(e, t),
101
+ onClick: () => O(e, t),
101
102
  className: `min-h-control-sm max-w-[150px] truncate rounded-button px-1 text-sm text-text-secondary motion-safe:transition-colors hover:text-text-primary hover:underline ${n}`,
102
103
  title: e.name,
103
104
  children: e.name
104
- }), /* @__PURE__ */ p(l, {
105
+ }), /* @__PURE__ */ p(u, {
105
106
  className: "w-4 h-4 shrink-0 text-text-muted",
106
107
  "aria-hidden": "true"
107
108
  })]
108
109
  }, e.id)),
109
- g && /* @__PURE__ */ p("span", {
110
+ _ && /* @__PURE__ */ p("span", {
110
111
  "aria-current": "page",
111
112
  className: "max-w-[200px] truncate text-sm font-medium text-text-primary",
112
- title: g,
113
- children: g
113
+ title: _,
114
+ children: _
114
115
  }),
115
116
  /* @__PURE__ */ p("span", {
116
117
  className: "ml-auto shrink-0 rounded-pill bg-bg-surface px-2 py-0.5 text-xs text-text-muted",
117
- children: y("bigconsole.dashboards.drilldownBreadcrumb.level", "Level {{depth}}", { depth: C ?? "" })
118
+ children: b("bigconsole.dashboards.drilldownBreadcrumb.level", "Level {{depth}}", { depth: w ?? "" })
118
119
  })
119
120
  ]
120
121
  }) : null;
121
122
  });
122
123
  //#endregion
123
- export { h as default };
124
+ export { g as default };