@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
@@ -1,57 +1,130 @@
1
- import { memo as e, useMemo as t } from "react";
2
- import { jsx as n, jsxs as r } from "react/jsx-runtime";
1
+ import { useOptionalBigConsole as e } from "../../../context/BigConsoleContext.js";
2
+ import "../../../context/index.js";
3
+ import { currentAppOrigin as t, resolveFrameSrc as n } from "../../../utils/safeUrl.js";
4
+ import { FRAME_REFERRER_POLICY as r, FRAME_SANDBOX as i, frameKey as a, framePermissions as o } from "./framePolicy.js";
5
+ import { useTr as s } from "../../../../shared/hooks/useTr.js";
6
+ import { memo as c, useMemo as l } from "react";
7
+ import { jsx as u, jsxs as d } from "react/jsx-runtime";
3
8
  //#region src/bigconsole/components/widgets/iframe-widget/IframeWidget.tsx
4
- function i(e, t) {
5
- let n = e ?? {}, r = (e) => {
6
- if (typeof e == "boolean") return e;
7
- if (typeof e == "string") return e.toLowerCase() === "true";
8
- }, i = (e) => e === "eager" || e === "lazy" ? e : "lazy", a = t?.url ?? n.url ?? "";
9
+ var f = "Embedded Content";
10
+ function p(e) {
11
+ if (typeof e == "boolean") return e;
12
+ if (typeof e == "string") return e.toLowerCase() === "true";
13
+ }
14
+ function m(e) {
15
+ return e === "eager" ? "eager" : "lazy";
16
+ }
17
+ function h(...e) {
18
+ for (let t of e) if (typeof t == "string" && t.trim().length > 0) return t;
19
+ }
20
+ function g(e, t, a = {}) {
21
+ let s = e ?? {}, c = h(t?.url, s.url), l = h(t?.title, s.title) ?? f, u = p(s.allowFullscreen) ?? !1, d = m(s.loading), g = c === void 0 ? null : n(c, a);
9
22
  return {
10
- url: a,
11
- title: t?.title ?? n.title ?? "Embedded Content",
12
- allowFullscreen: r(t?.allowFullscreen ?? n.allowFullscreen) ?? !1,
13
- sandbox: t?.sandbox ?? n.sandbox ?? "allow-scripts allow-same-origin",
14
- loading: i(t?.loading ?? n.loading),
15
- hasUrl: typeof a == "string" && a.length > 0
23
+ src: g?.ok ? g.src : null,
24
+ title: l,
25
+ sandbox: i,
26
+ referrerPolicy: r,
27
+ allowFullscreen: u,
28
+ allow: o(u),
29
+ loading: d,
30
+ hasUrl: c !== void 0,
31
+ rejection: g && !g.ok ? g.reason : null
16
32
  };
17
33
  }
18
- var a = e(function({ widget: e, data: a }) {
19
- let o = t(() => i(e.config, a), [e.config, a]);
20
- return o.hasUrl ? /* @__PURE__ */ n("div", {
21
- className: "h-full w-full",
22
- children: /* @__PURE__ */ n("iframe", {
23
- src: o.url,
24
- title: o.title,
25
- className: "w-full h-full border-0 rounded",
26
- allowFullScreen: o.allowFullscreen,
27
- sandbox: o.sandbox,
28
- loading: o.loading
34
+ var _ = {
35
+ missing: {
36
+ key: "bigconsole.widget.iframe.rejected.invalid",
37
+ fallback: "Enter a complete https:// address."
38
+ },
39
+ invalid: {
40
+ key: "bigconsole.widget.iframe.rejected.invalid",
41
+ fallback: "Enter a complete https:// address."
42
+ },
43
+ scheme: {
44
+ key: "bigconsole.widget.iframe.rejected.scheme",
45
+ fallback: "Only https:// addresses can be embedded."
46
+ },
47
+ credentials: {
48
+ key: "bigconsole.widget.iframe.rejected.credentials",
49
+ fallback: "Remove the user name or password from the address."
50
+ },
51
+ "same-origin": {
52
+ key: "bigconsole.widget.iframe.rejected.sameOrigin",
53
+ fallback: "Pages from this app cannot be embedded in a widget."
54
+ },
55
+ "origin-not-allowed": {
56
+ key: "bigconsole.widget.iframe.rejected.originNotAllowed",
57
+ fallback: "This site is not on the list of sites allowed for embedding."
58
+ }
59
+ };
60
+ function v() {
61
+ return /* @__PURE__ */ u("svg", {
62
+ className: "w-12 h-12 mx-auto mb-2 text-text-muted",
63
+ fill: "none",
64
+ stroke: "currentColor",
65
+ viewBox: "0 0 24 24",
66
+ children: /* @__PURE__ */ u("path", {
67
+ strokeLinecap: "round",
68
+ strokeLinejoin: "round",
69
+ strokeWidth: 1.5,
70
+ d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"
29
71
  })
30
- }) : /* @__PURE__ */ n("div", {
72
+ });
73
+ }
74
+ var y = c(function({ widget: n, data: r }) {
75
+ let i = s(), o = e()?.iframeAllowedOrigins, c = l(() => g(n.config, r, {
76
+ appOrigin: t(),
77
+ allowedOrigins: o
78
+ }), [
79
+ n.config,
80
+ r,
81
+ o
82
+ ]);
83
+ if (!c.hasUrl) return /* @__PURE__ */ u("div", {
31
84
  className: "flex items-center justify-center h-full text-text-secondary text-sm",
32
- children: /* @__PURE__ */ r("div", {
85
+ children: /* @__PURE__ */ d("div", {
33
86
  className: "text-center",
34
87
  children: [
35
- /* @__PURE__ */ n("svg", {
36
- className: "w-12 h-12 mx-auto mb-2 text-text-muted",
37
- fill: "none",
38
- stroke: "currentColor",
39
- viewBox: "0 0 24 24",
40
- children: /* @__PURE__ */ n("path", {
41
- strokeLinecap: "round",
42
- strokeLinejoin: "round",
43
- strokeWidth: 1.5,
44
- d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"
45
- })
46
- }),
47
- /* @__PURE__ */ n("p", { children: "No URL configured" }),
48
- /* @__PURE__ */ n("p", {
88
+ /* @__PURE__ */ u(v, {}),
89
+ /* @__PURE__ */ u("p", { children: i("bigconsole.widget.iframe.empty.title", "No URL configured") }),
90
+ /* @__PURE__ */ u("p", {
49
91
  className: "text-xs text-text-muted mt-1",
50
- children: "Configure a URL to embed content"
92
+ children: i("bigconsole.widget.iframe.empty.hint", "Configure a URL to embed content")
51
93
  })
52
94
  ]
53
95
  })
54
96
  });
97
+ if (!c.src) {
98
+ let e = _[c.rejection ?? "invalid"];
99
+ return /* @__PURE__ */ u("div", {
100
+ className: "flex items-center justify-center h-full text-text-secondary text-sm",
101
+ role: "status",
102
+ children: /* @__PURE__ */ d("div", {
103
+ className: "text-center",
104
+ children: [
105
+ /* @__PURE__ */ u(v, {}),
106
+ /* @__PURE__ */ u("p", { children: i("bigconsole.widget.iframe.rejected.title", "This address cannot be embedded") }),
107
+ /* @__PURE__ */ u("p", {
108
+ className: "text-xs text-text-muted mt-1",
109
+ children: i(e.key, e.fallback)
110
+ })
111
+ ]
112
+ })
113
+ });
114
+ }
115
+ return /* @__PURE__ */ u("div", {
116
+ className: "h-full w-full",
117
+ children: /* @__PURE__ */ u("iframe", {
118
+ sandbox: c.sandbox,
119
+ referrerPolicy: c.referrerPolicy,
120
+ allow: c.allow,
121
+ allowFullScreen: c.allowFullscreen,
122
+ loading: c.loading,
123
+ title: c.title,
124
+ className: "w-full h-full border-0 rounded",
125
+ src: c.src
126
+ }, a(c.src, c.sandbox))
127
+ });
55
128
  });
56
129
  //#endregion
57
- export { a as default, i as resolveIframeConfig };
130
+ export { y as default, g as resolveIframeConfig };
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Frame policy for widgets that embed external pages.
3
+ *
4
+ * The sandbox, referrer policy and permissions are defined here in code and
5
+ * are never read from widget configuration or parser output. Embedded pages
6
+ * always run with an opaque origin (no `allow-same-origin`), cannot navigate
7
+ * the top-level page, and open popups that keep the same sandbox.
8
+ */
9
+ /** Sandbox flags applied to every embedded page. */
10
+ export declare const FRAME_SANDBOX = "allow-scripts allow-popups allow-forms";
11
+ /** Referrer policy for embedded pages: the dashboard URL is never sent. */
12
+ export declare const FRAME_REFERRER_POLICY = "no-referrer";
13
+ /** Permissions Policy (`allow` attribute) for an embedded page. */
14
+ export declare function framePermissions(allowFullscreen: boolean): string | undefined;
15
+ /**
16
+ * React key for an embedded frame. Keying on the source and sandbox means a
17
+ * new element (with its attributes already set) is created whenever either
18
+ * changes, instead of navigating an existing frame.
19
+ */
20
+ export declare function frameKey(src: string, sandbox?: string): string;
@@ -0,0 +1,10 @@
1
+ //#region src/bigconsole/components/widgets/iframe-widget/framePolicy.ts
2
+ var e = "allow-scripts allow-popups allow-forms", t = "no-referrer";
3
+ function n(e) {
4
+ return e ? "fullscreen" : void 0;
5
+ }
6
+ function r(t, n = e) {
7
+ return `${t}|${n}`;
8
+ }
9
+ //#endregion
10
+ export { t as FRAME_REFERRER_POLICY, e as FRAME_SANDBOX, r as frameKey, n as framePermissions };
@@ -1,2 +1,3 @@
1
- export { IframeWidget, resolveIframeConfig, type IframeWidgetProps, type IframeData } from './IframeWidget';
1
+ export { IframeWidget, resolveIframeConfig, type IframeWidgetProps, type IframeData, type ResolvedIframeConfig, } from './IframeWidget';
2
+ export { FRAME_SANDBOX, FRAME_REFERRER_POLICY, frameKey, framePermissions } from './framePolicy';
2
3
  export { default } from './IframeWidget';
@@ -1,2 +1,3 @@
1
- import e, { resolveIframeConfig as t } from "./IframeWidget.js";
2
- export { e as IframeWidget, e as default, t as resolveIframeConfig };
1
+ import { FRAME_REFERRER_POLICY as e, FRAME_SANDBOX as t, frameKey as n, framePermissions as r } from "./framePolicy.js";
2
+ import i, { resolveIframeConfig as a } from "./IframeWidget.js";
3
+ export { e as FRAME_REFERRER_POLICY, t as FRAME_SANDBOX, i as IframeWidget, i as default, n as frameKey, r as framePermissions, a as resolveIframeConfig };
@@ -1,12 +1,12 @@
1
1
  import e from "../../../hooks/useWidgetConfigPersist.js";
2
2
  import t from "./KanbanView.js";
3
3
  import { memo as n } from "react";
4
- import { useI18n as r } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
5
- import { jsx as i } from "react/jsx-runtime";
4
+ import { jsx as r } from "react/jsx-runtime";
5
+ import { useI18n as i } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
6
6
  //#region src/bigconsole/components/widgets/kanban/KanbanWidget.tsx
7
7
  var a = n(function(n) {
8
- let { t: a } = r(), { canPersist: o, persistConfig: s } = e(n.widget);
9
- return /* @__PURE__ */ i(t, {
8
+ let { t: a } = i(), { canPersist: o, persistConfig: s } = e(n.widget);
9
+ return /* @__PURE__ */ r(t, {
10
10
  ...n,
11
11
  t: a,
12
12
  interactive: !0,
@@ -1,23 +1,23 @@
1
1
  import { memo as e, useCallback as t } from "react";
2
- import { useI18n as n } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
3
- import { jsx as r, jsxs as i } from "react/jsx-runtime";
2
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
3
+ import { useI18n as i } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
4
4
  //#region src/bigconsole/components/widgets/list/ListConfig.tsx
5
5
  var a = e(function({ config: e, onChange: a }) {
6
- let { t: o } = n(), s = t((t, n) => {
6
+ let { t: o } = i(), s = t((t, n) => {
7
7
  a({
8
8
  ...e,
9
9
  [t]: n
10
10
  });
11
11
  }, [e, a]);
12
- return /* @__PURE__ */ i("div", {
12
+ return /* @__PURE__ */ r("div", {
13
13
  className: "min-w-0 space-y-form-gap",
14
14
  children: [
15
- /* @__PURE__ */ i("div", { children: [
16
- /* @__PURE__ */ r("label", {
15
+ /* @__PURE__ */ r("div", { children: [
16
+ /* @__PURE__ */ n("label", {
17
17
  className: "block text-sm font-medium text-text-primary mb-1",
18
18
  children: o("bigconsole.widget.config.list.maxItems.label", "Maximum Items to Display")
19
19
  }),
20
- /* @__PURE__ */ r("input", {
20
+ /* @__PURE__ */ n("input", {
21
21
  type: "number",
22
22
  value: e.maxItems ?? "",
23
23
  onChange: (e) => s("maxItems", e.target.value ? Number(e.target.value) : void 0),
@@ -25,104 +25,104 @@ var a = e(function({ config: e, onChange: a }) {
25
25
  placeholder: o("bigconsole.widget.config.list.maxItems.placeholder", "No limit"),
26
26
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n "
27
27
  }),
28
- /* @__PURE__ */ r("p", {
28
+ /* @__PURE__ */ n("p", {
29
29
  className: "text-xs text-text-secondary mt-1",
30
30
  children: o("bigconsole.widget.config.list.maxItems.help", "Leave empty to show all items")
31
31
  })
32
32
  ] }),
33
- /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("label", {
33
+ /* @__PURE__ */ r("div", { children: [/* @__PURE__ */ n("label", {
34
34
  className: "block text-sm font-medium text-text-primary mb-1",
35
35
  children: o("bigconsole.widget.config.list.titleField.label", "Title Field")
36
- }), /* @__PURE__ */ r("input", {
36
+ }), /* @__PURE__ */ n("input", {
37
37
  type: "text",
38
38
  value: e.titleField || "",
39
39
  onChange: (e) => s("titleField", e.target.value),
40
40
  placeholder: o("bigconsole.widget.config.list.titleField.placeholder", "e.g., name, title"),
41
41
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n "
42
42
  })] }),
43
- /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("label", {
43
+ /* @__PURE__ */ r("div", { children: [/* @__PURE__ */ n("label", {
44
44
  className: "block text-sm font-medium text-text-primary mb-1",
45
45
  children: o("bigconsole.widget.config.list.subtitleField.label", "Subtitle Field")
46
- }), /* @__PURE__ */ r("input", {
46
+ }), /* @__PURE__ */ n("input", {
47
47
  type: "text",
48
48
  value: e.subtitleField || "",
49
49
  onChange: (e) => s("subtitleField", e.target.value),
50
50
  placeholder: o("bigconsole.widget.config.list.subtitleField.placeholder", "e.g., description, email"),
51
51
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n "
52
52
  })] }),
53
- /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("label", {
53
+ /* @__PURE__ */ r("div", { children: [/* @__PURE__ */ n("label", {
54
54
  className: "block text-sm font-medium text-text-primary mb-1",
55
55
  children: o("bigconsole.widget.config.list.valueField.label", "Value Field (right side)")
56
- }), /* @__PURE__ */ r("input", {
56
+ }), /* @__PURE__ */ n("input", {
57
57
  type: "text",
58
58
  value: e.valueField || "",
59
59
  onChange: (e) => s("valueField", e.target.value),
60
60
  placeholder: o("bigconsole.widget.config.list.valueField.placeholder", "e.g., amount, count"),
61
61
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n "
62
62
  })] }),
63
- /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("label", {
63
+ /* @__PURE__ */ r("div", { children: [/* @__PURE__ */ n("label", {
64
64
  className: "block text-sm font-medium text-text-primary mb-1",
65
65
  children: o("bigconsole.widget.config.list.badgeField.label", "Badge Field")
66
- }), /* @__PURE__ */ r("input", {
66
+ }), /* @__PURE__ */ n("input", {
67
67
  type: "text",
68
68
  value: e.badgeField || "",
69
69
  onChange: (e) => s("badgeField", e.target.value),
70
70
  placeholder: o("bigconsole.widget.config.list.badgeField.placeholder", "e.g., status, type"),
71
71
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n "
72
72
  })] }),
73
- /* @__PURE__ */ i("div", {
73
+ /* @__PURE__ */ r("div", {
74
74
  role: "group",
75
75
  "aria-label": "Display options",
76
76
  className: "space-y-3 border-t border-[var(--color-border-subtle)] pt-form-gap",
77
77
  children: [
78
- /* @__PURE__ */ r("p", {
78
+ /* @__PURE__ */ n("p", {
79
79
  className: "text-xs font-bold uppercase tracking-wider text-text-secondary",
80
80
  children: "Display options"
81
81
  }),
82
- /* @__PURE__ */ i("label", {
82
+ /* @__PURE__ */ r("label", {
83
83
  className: "flex items-center gap-3",
84
- children: [/* @__PURE__ */ r("input", {
84
+ children: [/* @__PURE__ */ n("input", {
85
85
  type: "checkbox",
86
86
  checked: e.showCount !== !1,
87
87
  onChange: (e) => s("showCount", e.target.checked),
88
88
  className: "\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n "
89
- }), /* @__PURE__ */ r("span", {
89
+ }), /* @__PURE__ */ n("span", {
90
90
  className: "text-sm text-text-primary",
91
91
  children: o("bigconsole.widget.config.list.showCount", "Show item count")
92
92
  })]
93
93
  }),
94
- /* @__PURE__ */ i("label", {
94
+ /* @__PURE__ */ r("label", {
95
95
  className: "flex items-center gap-3",
96
- children: [/* @__PURE__ */ r("input", {
96
+ children: [/* @__PURE__ */ n("input", {
97
97
  type: "checkbox",
98
98
  checked: e.showSearch === !0,
99
99
  onChange: (e) => s("showSearch", e.target.checked),
100
100
  className: "\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n "
101
- }), /* @__PURE__ */ r("span", {
101
+ }), /* @__PURE__ */ n("span", {
102
102
  className: "text-sm text-text-primary",
103
103
  children: o("bigconsole.widget.config.list.showSearch", "Show search box")
104
104
  })]
105
105
  }),
106
- /* @__PURE__ */ i("label", {
106
+ /* @__PURE__ */ r("label", {
107
107
  className: "flex items-center gap-3",
108
- children: [/* @__PURE__ */ r("input", {
108
+ children: [/* @__PURE__ */ n("input", {
109
109
  type: "checkbox",
110
110
  checked: e.showViewAll !== !1,
111
111
  onChange: (e) => s("showViewAll", e.target.checked),
112
112
  className: "\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n "
113
- }), /* @__PURE__ */ r("span", {
113
+ }), /* @__PURE__ */ n("span", {
114
114
  className: "text-sm text-text-primary",
115
115
  children: o("bigconsole.widget.config.list.showViewAll", "Show \"View All\" link when truncated")
116
116
  })]
117
117
  }),
118
- /* @__PURE__ */ i("label", {
118
+ /* @__PURE__ */ r("label", {
119
119
  className: "flex items-center gap-3",
120
- children: [/* @__PURE__ */ r("input", {
120
+ children: [/* @__PURE__ */ n("input", {
121
121
  type: "checkbox",
122
122
  checked: e.showIcon === !0,
123
123
  onChange: (e) => s("showIcon", e.target.checked),
124
124
  className: "\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n "
125
- }), /* @__PURE__ */ r("span", {
125
+ }), /* @__PURE__ */ n("span", {
126
126
  className: "text-sm text-text-primary",
127
127
  children: o("bigconsole.widget.config.list.showIcon", "Show item icons")
128
128
  })]
@@ -1,89 +1,89 @@
1
1
  import { memo as e, useCallback as t } from "react";
2
- import { useI18n as n } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
3
- import { jsx as r, jsxs as i } from "react/jsx-runtime";
2
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
3
+ import { useI18n as i } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
4
4
  //#region src/bigconsole/components/widgets/metric-card/MetricCardConfig.tsx
5
5
  var a = e(function({ config: e, onChange: a }) {
6
- let { t: o } = n(), s = t((t, n) => {
6
+ let { t: o } = i(), s = t((t, n) => {
7
7
  a({
8
8
  ...e,
9
9
  [t]: n
10
10
  });
11
11
  }, [e, a]);
12
- return /* @__PURE__ */ i("div", {
12
+ return /* @__PURE__ */ r("div", {
13
13
  className: "min-w-0 space-y-form-gap",
14
14
  children: [
15
- /* @__PURE__ */ i("div", { children: [
16
- /* @__PURE__ */ r("label", {
15
+ /* @__PURE__ */ r("div", { children: [
16
+ /* @__PURE__ */ n("label", {
17
17
  className: "block text-sm font-medium text-text-primary mb-1",
18
18
  children: o("bigconsole.widget.config.metricCard.valueField.label", "Value Field")
19
19
  }),
20
- /* @__PURE__ */ r("input", {
20
+ /* @__PURE__ */ n("input", {
21
21
  type: "text",
22
22
  value: e.valueField || "",
23
23
  onChange: (e) => s("valueField", e.target.value),
24
24
  placeholder: o("bigconsole.widget.config.metricCard.valueField.placeholder", "e.g., totalSales, value, amount"),
25
25
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n "
26
26
  }),
27
- /* @__PURE__ */ r("p", {
27
+ /* @__PURE__ */ n("p", {
28
28
  className: "text-xs text-text-secondary mt-1",
29
29
  children: o("bigconsole.widget.config.metricCard.valueField.help", "Field name to extract from data (leave empty for auto-detect)")
30
30
  })
31
31
  ] }),
32
- /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("label", {
32
+ /* @__PURE__ */ r("div", { children: [/* @__PURE__ */ n("label", {
33
33
  className: "block text-sm font-medium text-text-primary mb-1",
34
34
  children: o("bigconsole.widget.config.metricCard.subtitle.label", "Subtitle")
35
- }), /* @__PURE__ */ r("input", {
35
+ }), /* @__PURE__ */ n("input", {
36
36
  type: "text",
37
37
  value: e.subtitle || "",
38
38
  onChange: (e) => s("subtitle", e.target.value),
39
39
  placeholder: o("bigconsole.widget.config.metricCard.subtitle.placeholder", "e.g., Total Revenue"),
40
40
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n "
41
41
  })] }),
42
- /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("label", {
42
+ /* @__PURE__ */ r("div", { children: [/* @__PURE__ */ n("label", {
43
43
  className: "block text-sm font-medium text-text-primary mb-1",
44
44
  children: o("bigconsole.widget.config.metricCard.format.label", "Value Format")
45
- }), /* @__PURE__ */ i("select", {
45
+ }), /* @__PURE__ */ r("select", {
46
46
  value: e.format || "auto",
47
47
  onChange: (e) => s("format", e.target.value),
48
48
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n ",
49
49
  children: [
50
- /* @__PURE__ */ r("option", {
50
+ /* @__PURE__ */ n("option", {
51
51
  value: "auto",
52
52
  children: o("bigconsole.widget.config.metricCard.format.auto", "Auto (from data)")
53
53
  }),
54
- /* @__PURE__ */ r("option", {
54
+ /* @__PURE__ */ n("option", {
55
55
  value: "number",
56
56
  children: o("bigconsole.widget.config.metricCard.format.number", "Number")
57
57
  }),
58
- /* @__PURE__ */ r("option", {
58
+ /* @__PURE__ */ n("option", {
59
59
  value: "currency",
60
60
  children: o("bigconsole.widget.config.metricCard.format.currency", "Currency")
61
61
  }),
62
- /* @__PURE__ */ r("option", {
62
+ /* @__PURE__ */ n("option", {
63
63
  value: "percentage",
64
64
  children: o("bigconsole.widget.config.metricCard.format.percentage", "Percentage")
65
65
  }),
66
- /* @__PURE__ */ r("option", {
66
+ /* @__PURE__ */ n("option", {
67
67
  value: "compact",
68
68
  children: o("bigconsole.widget.config.metricCard.format.compact", "Compact (1K, 1M)")
69
69
  })
70
70
  ]
71
71
  })] }),
72
- /* @__PURE__ */ i("div", {
72
+ /* @__PURE__ */ r("div", {
73
73
  className: "grid grid-cols-1 gap-3 sm:grid-cols-2",
74
- children: [/* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("label", {
74
+ children: [/* @__PURE__ */ r("div", { children: [/* @__PURE__ */ n("label", {
75
75
  className: "block text-sm font-medium text-text-primary mb-1",
76
76
  children: o("bigconsole.widget.config.metricCard.prefix.label", "Prefix")
77
- }), /* @__PURE__ */ r("input", {
77
+ }), /* @__PURE__ */ n("input", {
78
78
  type: "text",
79
79
  value: e.prefix || "",
80
80
  onChange: (e) => s("prefix", e.target.value),
81
81
  placeholder: o("bigconsole.widget.config.metricCard.prefix.placeholder", "e.g., $"),
82
82
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n "
83
- })] }), /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("label", {
83
+ })] }), /* @__PURE__ */ r("div", { children: [/* @__PURE__ */ n("label", {
84
84
  className: "block text-sm font-medium text-text-primary mb-1",
85
85
  children: o("bigconsole.widget.config.metricCard.suffix.label", "Suffix")
86
- }), /* @__PURE__ */ r("input", {
86
+ }), /* @__PURE__ */ n("input", {
87
87
  type: "text",
88
88
  value: e.suffix || "",
89
89
  onChange: (e) => s("suffix", e.target.value),
@@ -91,69 +91,69 @@ var a = e(function({ config: e, onChange: a }) {
91
91
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n "
92
92
  })] })]
93
93
  }),
94
- /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("label", {
94
+ /* @__PURE__ */ r("div", { children: [/* @__PURE__ */ n("label", {
95
95
  className: "block text-sm font-medium text-text-primary mb-1",
96
96
  children: o("bigconsole.widget.config.metricCard.comparisonLabel.label", "Comparison Label")
97
- }), /* @__PURE__ */ r("input", {
97
+ }), /* @__PURE__ */ n("input", {
98
98
  type: "text",
99
99
  value: e.comparisonLabel || "",
100
100
  onChange: (e) => s("comparisonLabel", e.target.value),
101
101
  placeholder: o("bigconsole.widget.config.metricCard.comparisonLabel.placeholder", "e.g., vs last week"),
102
102
  className: "\n w-full px-3 py-2\n text-sm text-text-primary\n bg-bg-surface\n border border-border-default\n rounded-md\n focus:outline-none focus:ring-2 focus:ring-action-primary-bg\n "
103
103
  })] }),
104
- /* @__PURE__ */ i("div", {
104
+ /* @__PURE__ */ r("div", {
105
105
  role: "group",
106
106
  "aria-label": "Display options",
107
107
  className: "space-y-3 border-t border-[var(--color-border-subtle)] pt-form-gap",
108
108
  children: [
109
- /* @__PURE__ */ r("p", {
109
+ /* @__PURE__ */ n("p", {
110
110
  className: "text-xs font-bold uppercase tracking-wider text-text-secondary",
111
111
  children: "Display options"
112
112
  }),
113
- /* @__PURE__ */ i("label", {
113
+ /* @__PURE__ */ r("label", {
114
114
  className: "flex items-center gap-3",
115
- children: [/* @__PURE__ */ r("input", {
115
+ children: [/* @__PURE__ */ n("input", {
116
116
  type: "checkbox",
117
117
  checked: e.showTrend !== !1,
118
118
  onChange: (e) => s("showTrend", e.target.checked),
119
119
  className: "\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n "
120
- }), /* @__PURE__ */ r("span", {
120
+ }), /* @__PURE__ */ n("span", {
121
121
  className: "text-sm text-text-primary",
122
122
  children: o("bigconsole.widget.config.metricCard.showTrend", "Show trend indicator")
123
123
  })]
124
124
  }),
125
- /* @__PURE__ */ i("label", {
125
+ /* @__PURE__ */ r("label", {
126
126
  className: "flex items-center gap-3",
127
- children: [/* @__PURE__ */ r("input", {
127
+ children: [/* @__PURE__ */ n("input", {
128
128
  type: "checkbox",
129
129
  checked: e.showComparison !== !1,
130
130
  onChange: (e) => s("showComparison", e.target.checked),
131
131
  className: "\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n "
132
- }), /* @__PURE__ */ r("span", {
132
+ }), /* @__PURE__ */ n("span", {
133
133
  className: "text-sm text-text-primary",
134
134
  children: o("bigconsole.widget.config.metricCard.showComparison", "Show comparison badge")
135
135
  })]
136
136
  }),
137
- /* @__PURE__ */ i("label", {
137
+ /* @__PURE__ */ r("label", {
138
138
  className: "flex items-center gap-3",
139
- children: [/* @__PURE__ */ r("input", {
139
+ children: [/* @__PURE__ */ n("input", {
140
140
  type: "checkbox",
141
141
  checked: e.showSparkline !== !1,
142
142
  onChange: (e) => s("showSparkline", e.target.checked),
143
143
  className: "\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n "
144
- }), /* @__PURE__ */ r("span", {
144
+ }), /* @__PURE__ */ n("span", {
145
145
  className: "text-sm text-text-primary",
146
146
  children: o("bigconsole.widget.config.metricCard.showSparkline", "Show sparkline chart")
147
147
  })]
148
148
  }),
149
- /* @__PURE__ */ i("label", {
149
+ /* @__PURE__ */ r("label", {
150
150
  className: "flex items-center gap-3",
151
- children: [/* @__PURE__ */ r("input", {
151
+ children: [/* @__PURE__ */ n("input", {
152
152
  type: "checkbox",
153
153
  checked: e.positiveIsGood !== !1,
154
154
  onChange: (e) => s("positiveIsGood", e.target.checked),
155
155
  className: "\n w-4 h-4\n text-action-primary-bg\n bg-bg-surface\n border-border-default\n rounded\n focus:ring-action-primary-bg\n "
156
- }), /* @__PURE__ */ r("span", {
156
+ }), /* @__PURE__ */ n("span", {
157
157
  className: "text-sm text-text-primary",
158
158
  children: o("bigconsole.widget.config.metricCard.positiveIsGood", "Positive change is good")
159
159
  })]