@burdenoff/microfe-bigconsole 2026.1012.3 → 2026.1012.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/dist/bigconsole/BigConsoleRoutes.js +149 -140
  2. package/dist/bigconsole/assistant/assistantApi.js +5 -5
  3. package/dist/bigconsole/assistant/assistantProduct.js +4 -1
  4. package/dist/bigconsole/assistant/displayCopy.d.ts +32 -0
  5. package/dist/bigconsole/assistant/pageContext.d.ts +14 -0
  6. package/dist/bigconsole/assistant/pageContext.js +6 -1
  7. package/dist/bigconsole/assistant/pageControls.d.ts +81 -0
  8. package/dist/bigconsole/assistant/pageControls.js +169 -0
  9. package/dist/bigconsole/assistant/previewControl.d.ts +16 -0
  10. package/dist/bigconsole/assistant/previewControl.js +10 -0
  11. package/dist/bigconsole/assistant/recordAdapters.js +27 -26
  12. package/dist/bigconsole/assistant/usePreviewControl.d.ts +2 -0
  13. package/dist/bigconsole/assistant/usePreviewControl.js +20 -0
  14. package/dist/bigconsole/components/builder/inspector/AppearanceSection.js +33 -18
  15. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js +31 -31
  16. package/dist/bigconsole/components/common/SortBySelect.d.ts +11 -0
  17. package/dist/bigconsole/components/common/SortBySelect.js +29 -0
  18. package/dist/bigconsole/components/common/index.d.ts +1 -0
  19. package/dist/bigconsole/components/common/index.js +1 -0
  20. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js +44 -44
  21. package/dist/bigconsole/components/dashboard/DashboardCanvas.js +36 -36
  22. package/dist/bigconsole/components/dashboard/DashboardToolbar.js +59 -59
  23. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js +15 -15
  24. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js +30 -30
  25. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +41 -41
  26. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js +34 -34
  27. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +34 -34
  28. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js +153 -153
  29. package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js +21 -21
  30. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js +46 -46
  31. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js +134 -134
  32. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js +101 -101
  33. package/dist/bigconsole/components/dashboard/TemplateInstallOptions.js +31 -31
  34. package/dist/bigconsole/components/dashboard/TemplateLayoutPreview.js +15 -15
  35. package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.js +1 -1
  36. package/dist/bigconsole/components/dashboard/WidgetPalette.js +154 -150
  37. package/dist/bigconsole/components/datasink/AlertExecutionHistory.js +37 -37
  38. package/dist/bigconsole/components/datasink/AlertRuleEditor.js +66 -66
  39. package/dist/bigconsole/components/datasink/CacheTTLSelector.js +35 -35
  40. package/dist/bigconsole/components/datasink/DataSinkCard.js +51 -50
  41. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js +18 -18
  42. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js +20 -20
  43. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js +47 -47
  44. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +91 -91
  45. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js +35 -35
  46. package/dist/bigconsole/components/embed/renderer-manifest.js +12 -0
  47. package/dist/bigconsole/components/parser/DataSinkSelector.js +40 -40
  48. package/dist/bigconsole/components/parser/ImportParserDialog.js +120 -120
  49. package/dist/bigconsole/components/parser/ParserSelector.js +51 -51
  50. package/dist/bigconsole/components/pipeline/PipelineScopePicker.js +10 -10
  51. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js +77 -76
  52. package/dist/bigconsole/components/preview/AiPreviewPanel.js +96 -95
  53. package/dist/bigconsole/components/widgets/ActionConfigDialog.js +4 -4
  54. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js +93 -93
  55. package/dist/bigconsole/components/widgets/PropertiesPanel.js +507 -499
  56. package/dist/bigconsole/components/widgets/WidgetRegistry.js +122 -1
  57. package/dist/bigconsole/components/widgets/WidgetWrapper.js +227 -224
  58. package/dist/bigconsole/components/widgets/advanced/AdvancedWidgetConfig.d.ts +10 -0
  59. package/dist/bigconsole/components/widgets/advanced/AdvancedWidgetConfig.js +113 -0
  60. package/dist/bigconsole/components/widgets/advanced/AdvancedWidgets.d.ts +10 -0
  61. package/dist/bigconsole/components/widgets/advanced/AdvancedWidgets.js +187 -0
  62. package/dist/bigconsole/components/widgets/advanced/boxPlotDescription.d.ts +7 -0
  63. package/dist/bigconsole/components/widgets/advanced/boxPlotDescription.js +12 -0
  64. package/dist/bigconsole/components/widgets/advanced/data.d.ts +36 -0
  65. package/dist/bigconsole/components/widgets/advanced/data.js +113 -0
  66. package/dist/bigconsole/components/widgets/advanced/mapData.d.ts +10 -0
  67. package/dist/bigconsole/components/widgets/advanced/mapData.js +22 -0
  68. package/dist/bigconsole/components/widgets/advanced/waterfallData.d.ts +15 -0
  69. package/dist/bigconsole/components/widgets/advanced/waterfallData.js +28 -0
  70. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js +4 -4
  71. package/dist/bigconsole/components/widgets/chart/ChartConfig.js +48 -48
  72. package/dist/bigconsole/components/widgets/chart/charts/WaterfallChart.js +34 -37
  73. package/dist/bigconsole/components/widgets/comments/WidgetComments.js +46 -46
  74. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js +61 -61
  75. package/dist/bigconsole/components/widgets/form/FormWidget.js +36 -36
  76. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js +42 -42
  77. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js +25 -25
  78. package/dist/bigconsole/components/widgets/index.js +1 -1
  79. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js +4 -4
  80. package/dist/bigconsole/components/widgets/list/ListConfig.js +30 -30
  81. package/dist/bigconsole/components/widgets/map-widget/MapWidget.d.ts +2 -0
  82. package/dist/bigconsole/components/widgets/map-widget/MapWidget.js +64 -63
  83. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js +38 -38
  84. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js +9 -9
  85. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js +9 -9
  86. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js +49 -49
  87. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js +39 -39
  88. package/dist/bigconsole/components/widgets/table/TableConfig.js +73 -73
  89. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js +64 -64
  90. package/dist/bigconsole/components/workflow/WorkflowOpenGuard.js +15 -15
  91. package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.js +15 -15
  92. package/dist/bigconsole/constants/backendErrors.js +94 -0
  93. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js +10 -10
  94. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js +67 -67
  95. package/dist/bigconsole/graphql/widgetCapabilities.d.ts +7 -0
  96. package/dist/bigconsole/graphql/widgetCapabilities.js +37 -0
  97. package/dist/bigconsole/hooks/useDashboardLayoutBaseline.d.ts +14 -0
  98. package/dist/bigconsole/hooks/useDashboardLayoutBaseline.js +32 -0
  99. package/dist/bigconsole/hooks/useDataSinkAlerts.d.ts +23 -0
  100. package/dist/bigconsole/hooks/useDataSinkAlerts.js +138 -113
  101. package/dist/bigconsole/hooks/useDrilldown.js +3 -3
  102. package/dist/bigconsole/hooks/useGlobalFilters.js +3 -3
  103. package/dist/bigconsole/hooks/useWidgetCatalog.js +46 -41
  104. package/dist/bigconsole/hooks/useWidgetOperations.js +113 -88
  105. package/dist/bigconsole/pages/AdminPage.js +130 -130
  106. package/dist/bigconsole/pages/DashboardBuilderPage.js +72 -60
  107. package/dist/bigconsole/pages/DashboardViewPage.js +244 -221
  108. package/dist/bigconsole/pages/DashboardsPage.js +269 -221
  109. package/dist/bigconsole/pages/DataParsersPage.js +180 -157
  110. package/dist/bigconsole/pages/DataSinkAlertsPage.js +62 -55
  111. package/dist/bigconsole/pages/DataSinkBuilderPage.js +252 -234
  112. package/dist/bigconsole/pages/DataSinkViewPage.js +1 -1
  113. package/dist/bigconsole/pages/DataSinksPage.js +335 -299
  114. package/dist/bigconsole/pages/DataSourcesPage.js +5 -5
  115. package/dist/bigconsole/pages/InsightsPage.js +279 -265
  116. package/dist/bigconsole/pages/OverviewPage.js +47 -47
  117. package/dist/bigconsole/pages/ParserBuilderPage.js +229 -213
  118. package/dist/bigconsole/pages/ParserViewPage.js +97 -97
  119. package/dist/bigconsole/pages/PipelineBuilderPage.js +256 -214
  120. package/dist/bigconsole/pages/PipelineViewPage.js +146 -146
  121. package/dist/bigconsole/pages/PipelinesPage.js +107 -88
  122. package/dist/bigconsole/pages/SettingsPage.js +179 -173
  123. package/dist/bigconsole/pages/WidgetDemoPage.js +42 -42
  124. package/dist/bigconsole/pages/WorkflowViewPage.js +1 -1
  125. package/dist/bigconsole/pages/WorkflowsPage.js +141 -141
  126. package/dist/bigconsole/providers/BigConsoleQuotaProvider.js +12 -12
  127. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js +34 -34
  128. package/dist/bigconsole/renderers/adapters/BigConsoleRenderer.js +8 -5
  129. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js +69 -69
  130. package/dist/bigconsole/renderers/adapters/CustomRenderer.js +46 -46
  131. package/dist/bigconsole/store/widgetStore.d.ts +12 -0
  132. package/dist/bigconsole/store/widgetStore.js +3 -1
  133. package/dist/bigconsole/types/index.d.ts +1 -1
  134. package/dist/bigconsole/utils/advancedWidgetCapabilities.d.ts +14 -0
  135. package/dist/bigconsole/utils/advancedWidgetCapabilities.js +36 -0
  136. package/dist/bigconsole/utils/backendError.d.ts +18 -0
  137. package/dist/bigconsole/utils/backendError.js +42 -0
  138. package/dist/bigconsole/utils/dashboardList.d.ts +28 -0
  139. package/dist/bigconsole/utils/dashboardList.js +15 -0
  140. package/dist/bigconsole/utils/dataSinkList.d.ts +15 -0
  141. package/dist/bigconsole/utils/dataSinkList.js +15 -0
  142. package/dist/bigconsole/utils/formDirty.d.ts +82 -0
  143. package/dist/bigconsole/utils/formDirty.js +21 -0
  144. package/dist/bigconsole/utils/insightsDraft.d.ts +29 -0
  145. package/dist/bigconsole/utils/insightsDraft.js +8 -0
  146. package/dist/bigconsole/utils/layoutBaseline.d.ts +130 -0
  147. package/dist/bigconsole/utils/layoutBaseline.js +96 -0
  148. package/dist/bigconsole/utils/listSort.d.ts +80 -0
  149. package/dist/bigconsole/utils/listSort.js +85 -0
  150. package/dist/bigconsole/utils/widgetFormDirty.d.ts +16 -0
  151. package/dist/bigconsole/utils/widgetFormDirty.js +13 -0
  152. package/dist/bigconsole/utils/widgetTypeMapping.d.ts +1 -1
  153. package/dist/bigconsole/utils/widgetTypeMapping.js +13 -2
  154. package/dist/bigconsole/workflowOpen.js +15 -14
  155. package/dist/generated/wspace-operations.d.ts +61 -2
  156. package/dist/generated/wspace-operations.js +44 -18
  157. package/dist/generated/wspace-types.d.ts +34 -3
  158. package/package.json +3 -3
@@ -1,82 +1,83 @@
1
- import { memo as e, useEffect as t, useMemo as n, useRef as r, useState as i } from "react";
2
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
3
- import s from "leaflet";
1
+ import { normalizeMapMarkers as e } from "../advanced/mapData.js";
2
+ import { memo as t, useEffect as n, useMemo as r, useRef as i, useState as a } from "react";
3
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
4
+ import c from "leaflet";
4
5
  //#region src/bigconsole/components/widgets/map-widget/MapWidget.tsx
5
- var c = "https://unpkg.com/leaflet@1.9.4/dist/leaflet.css", l = "sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=", u = !1;
6
- function d() {
7
- if (u || document.getElementById("leaflet-css")) return;
8
- u = !0;
6
+ var l = "https://unpkg.com/leaflet@1.9.4/dist/leaflet.css", u = "sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=", d = !1;
7
+ function f() {
8
+ if (d || document.getElementById("leaflet-css")) return;
9
+ d = !0;
9
10
  let e = document.createElement("link");
10
- e.id = "leaflet-css", e.rel = "stylesheet", e.href = c, e.integrity = l, e.crossOrigin = "anonymous", e.referrerPolicy = "no-referrer", e.onerror = () => {
11
- console.warn("[bigconsole] Leaflet CSS failed to load; map styling may be broken."), u = !1, e.remove();
11
+ e.id = "leaflet-css", e.rel = "stylesheet", e.href = l, e.integrity = u, e.crossOrigin = "anonymous", e.referrerPolicy = "no-referrer", e.onerror = () => {
12
+ console.warn("[bigconsole] Leaflet CSS failed to load; map styling may be broken."), d = !1, e.remove();
12
13
  }, document.head.appendChild(e);
13
14
  }
14
- var f = "var(--color-chart-1, #3b82f6)";
15
- function p(e) {
16
- if (typeof e != "string") return f;
15
+ var p = "var(--color-chart-1, #3b82f6)";
16
+ function m(e) {
17
+ if (typeof e != "string") return p;
17
18
  let t = e.trim();
18
- return t.length > 64 || /[;{}<>"'\\]/.test(t) || /\burl\s*\(/i.test(t) || !/^[#a-zA-Z0-9(),.%/_\s-]+$/.test(t) ? f : t;
19
+ return t.length > 64 || /[;{}<>"'\\]/.test(t) || /\burl\s*\(/i.test(t) || !/^[#a-zA-Z0-9(),.%/_\s-]+$/.test(t) ? p : t;
19
20
  }
20
- function m(e) {
21
+ function h(e) {
21
22
  return typeof e == "number" && Number.isFinite(e);
22
23
  }
23
- function h(e) {
24
+ function g(e) {
24
25
  return e >= .66 ? "var(--color-status-error)" : e >= .33 ? "var(--color-status-warning)" : "var(--color-status-info)";
25
26
  }
26
- function g(e) {
27
+ function _(e) {
27
28
  let t = document.createElement("div"), n = document.createElement("div");
28
- if (n.style.fontWeight = "600", n.textContent = e.popup || e.name || "Location", t.appendChild(n), m(e.value)) {
29
+ if (n.style.fontWeight = "600", n.textContent = e.popup || e.name || "Location", t.appendChild(n), h(e.value)) {
29
30
  let n = document.createElement("div");
30
31
  n.textContent = e.value.toLocaleString(), t.appendChild(n);
31
32
  }
32
33
  return t;
33
34
  }
34
- function _(e) {
35
+ function v(e) {
35
36
  let t = e;
36
- return t && m(t.lat) && m(t.lng) ? {
37
+ return t && h(t.lat) && h(t.lng) ? {
37
38
  lat: t.lat,
38
39
  lng: t.lng
39
40
  } : void 0;
40
41
  }
41
- function v(e, t) {
42
- let n = Array.isArray(e) ? void 0 : e, r = Array.isArray(e) ? e : e?.markers, i = Array.isArray(r) ? r.filter((e) => e && m(e.lat) && m(e.lng)) : [], a = (n?.geoJson ?? t.geoJson) || void 0, o = t.regionIdField || "id", s = /* @__PURE__ */ new Map(), c = n?.regions ?? t.regions;
42
+ function y(t, n) {
43
+ let r = Array.isArray(t) ? void 0 : t, i = e(Array.isArray(t) ? t : t?.markers ?? t?.rows, n), a = (r?.geoJson ?? n.geoJson) || void 0, o = n.regionIdField || "id", s = /* @__PURE__ */ new Map(), c = r?.regions ?? n.regions;
43
44
  if (Array.isArray(c)) for (let e of c) {
44
45
  if (!e) continue;
45
46
  let t = e[o] ?? e.id ?? e.region ?? e.code, n = e.value ?? e.count ?? e.total;
46
- t != null && m(n) && s.set(String(t), {
47
+ t != null && h(n) && s.set(String(t), {
47
48
  value: n,
48
49
  name: typeof e.name == "string" ? e.name : void 0
49
50
  });
50
51
  }
51
52
  return {
52
53
  markers: i,
53
- center: _(n?.center),
54
- zoom: m(n?.zoom) ? n?.zoom : void 0,
55
- fallbackCenter: _(t.center),
56
- fallbackZoom: m(t.zoom) ? t.zoom : void 0,
54
+ center: v(r?.center),
55
+ zoom: h(r?.zoom) ? r?.zoom : void 0,
56
+ fallbackCenter: v(n.center),
57
+ fallbackZoom: h(n.zoom) ? n.zoom : void 0,
57
58
  geoJson: a && Array.isArray(a.features) ? a : void 0,
58
59
  regionValues: s
59
60
  };
60
61
  }
61
- var y = e(function({ widget: e, data: c, onClick: l, onDrilldown: u }) {
62
- let f = r(null), _ = r(null), y = r(null), [b, x] = i("loading"), S = n(() => e?.config ?? {}, [e?.config]), C = S.showMarkers !== !1, w = S.mapMode === "heat", T = S.regionIdField || "id", { markers: E, center: D, zoom: O, fallbackCenter: k, fallbackZoom: A, geoJson: j, regionValues: M } = n(() => v(c, S), [c, S]), N = !!(j && M.size > 0), P = r(() => void 0);
63
- return t(() => {
62
+ var b = t(function({ widget: e, data: t, onClick: l, onDrilldown: u }) {
63
+ let d = i(null), p = i(null), v = i(null), [b, x] = a("loading"), S = r(() => e?.config ?? {}, [e?.config]), C = S.showMarkers !== !1, w = S.mapMode === "heat", T = S.regionIdField || "id", { markers: E, center: D, zoom: O, fallbackCenter: k, fallbackZoom: A, geoJson: j, regionValues: M } = r(() => y(t, S), [t, S]), N = !!(j && M.size > 0), P = i(() => void 0);
64
+ return n(() => {
64
65
  P.current = (e) => {
65
66
  u ? u(e) : l && l(e);
66
67
  };
67
- }, [l, u]), t(() => {
68
- let e = f.current;
68
+ }, [l, u]), n(() => {
69
+ let e = d.current;
69
70
  if (!e) return;
70
- d();
71
+ f();
71
72
  let t;
72
73
  try {
73
- t = s.map(e, {
74
+ t = c.map(e, {
74
75
  center: [20, 0],
75
76
  zoom: 2,
76
77
  scrollWheelZoom: !0,
77
78
  attributionControl: !0
78
79
  });
79
- let n = s.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
80
+ let n = c.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
80
81
  attribution: "© OpenStreetMap contributors",
81
82
  maxZoom: 18
82
83
  }), r = !1;
@@ -84,27 +85,27 @@ var y = e(function({ widget: e, data: c, onClick: l, onDrilldown: u }) {
84
85
  r = !0, x((e) => e === "error" ? "ready" : e);
85
86
  }), n.on("tileerror", () => {
86
87
  r || x("error");
87
- }), n.addTo(t), _.current = t, y.current = null, x("ready");
88
+ }), n.addTo(t), p.current = t, v.current = null, x("ready");
88
89
  } catch {
89
90
  x("error");
90
91
  return;
91
92
  }
92
- let n = typeof ResizeObserver < "u" ? new ResizeObserver(() => _.current?.invalidateSize()) : void 0;
93
+ let n = typeof ResizeObserver < "u" ? new ResizeObserver(() => p.current?.invalidateSize()) : void 0;
93
94
  n?.observe(e);
94
95
  let r = window.setTimeout(() => t.invalidateSize(), 80);
95
96
  return () => {
96
- window.clearTimeout(r), n?.disconnect(), t.remove(), _.current = null;
97
+ window.clearTimeout(r), n?.disconnect(), t.remove(), p.current = null;
97
98
  };
98
- }, []), t(() => {
99
- let e = _.current;
99
+ }, []), n(() => {
100
+ let e = p.current;
100
101
  if (!e) return;
101
- let t = s.layerGroup(), n = null;
102
+ let t = c.layerGroup(), n = null;
102
103
  if (j && M.size > 0) {
103
104
  let e = Array.from(M.values()).map((e) => e.value), r = Math.min(...e), i = Math.max(...e) - r || 1, a = (e) => {
104
105
  let t = e.properties ?? {}, n = e.id ?? t[T] ?? t.id ?? t.code;
105
106
  return n == null ? void 0 : M.get(String(n));
106
107
  };
107
- n = s.geoJSON(j, {
108
+ n = c.geoJSON(j, {
108
109
  style: (e) => {
109
110
  let t = e ? a(e) : void 0, n = t ? (t.value - r) / i : 0;
110
111
  return {
@@ -130,15 +131,15 @@ var y = e(function({ widget: e, data: c, onClick: l, onDrilldown: u }) {
130
131
  }), n.addTo(t);
131
132
  }
132
133
  if (C && w) {
133
- let e = E.map((e) => m(e.value) ? e.value : 1), n = e.reduce((e, t) => Math.min(e, t), Infinity), r = e.reduce((e, t) => Math.max(e, t), -Infinity) - n || 1;
134
+ let e = E.map((e) => h(e.value) ? e.value : 1), n = e.reduce((e, t) => Math.min(e, t), Infinity), r = e.reduce((e, t) => Math.max(e, t), -Infinity) - n || 1;
134
135
  E.forEach((i, a) => {
135
- let o = (e[a] - n) / r, c = s.circleMarker([i.lat, i.lng], {
136
+ let o = (e[a] - n) / r, s = c.circleMarker([i.lat, i.lng], {
136
137
  radius: 10 + o * 22,
137
- fillColor: h(o),
138
+ fillColor: g(o),
138
139
  fillOpacity: .25 + o * .35,
139
140
  stroke: !1
140
141
  }).addTo(t);
141
- c.bindPopup(g(i)), c.on("click", () => P.current(i));
142
+ s.bindPopup(_(i)), s.on("click", () => P.current(i));
142
143
  });
143
144
  } else if (C) for (let e of E) {
144
145
  let n = document.createElement("div");
@@ -147,17 +148,17 @@ var y = e(function({ widget: e, data: c, onClick: l, onDrilldown: u }) {
147
148
  height: "14px",
148
149
  borderRadius: "50% 50% 50% 0",
149
150
  transform: "rotate(-45deg)",
150
- background: p(e.color),
151
+ background: m(e.color),
151
152
  border: "2px solid #fff",
152
153
  boxShadow: "0 1px 4px rgba(0,0,0,.4)"
153
154
  });
154
- let r = s.divIcon({
155
+ let r = c.divIcon({
155
156
  className: "bc-map-marker",
156
157
  html: n,
157
158
  iconSize: [14, 14],
158
159
  iconAnchor: [7, 14]
159
- }), i = s.marker([e.lat, e.lng], { icon: r }).addTo(t);
160
- i.bindPopup(g(e)), i.on("click", () => P.current(e));
160
+ }), i = c.marker([e.lat, e.lng], { icon: r }).addTo(t);
161
+ i.bindPopup(_(e)), i.on("click", () => P.current(e));
161
162
  }
162
163
  t.addTo(e);
163
164
  let r = JSON.stringify({
@@ -168,7 +169,7 @@ var y = e(function({ widget: e, data: c, onClick: l, onDrilldown: u }) {
168
169
  fz: A ?? null,
169
170
  g: j ? M.size : 0
170
171
  });
171
- if (r !== y.current) if (y.current = r, D) e.setView([D.lat, D.lng], O ?? e.getZoom());
172
+ if (r !== v.current) if (v.current = r, D) e.setView([D.lat, D.lng], O ?? e.getZoom());
172
173
  else if (!E.length && n) {
173
174
  let t = n.getBounds();
174
175
  t.isValid() && e.fitBounds(t, {
@@ -177,12 +178,12 @@ var y = e(function({ widget: e, data: c, onClick: l, onDrilldown: u }) {
177
178
  });
178
179
  } else if (E.length === 1) e.setView([E[0].lat, E[0].lng], O ?? 8);
179
180
  else if (E.length > 1) {
180
- let t = s.latLngBounds(E.map((e) => [e.lat, e.lng]));
181
+ let t = c.latLngBounds(E.map((e) => [e.lat, e.lng]));
181
182
  e.fitBounds(t, {
182
183
  padding: [32, 32],
183
184
  maxZoom: 12
184
185
  });
185
- } else k ? e.setView([k.lat, k.lng], O ?? A ?? e.getZoom()) : m(O ?? A) && e.setZoom(O ?? A);
186
+ } else k ? e.setView([k.lat, k.lng], O ?? A ?? e.getZoom()) : h(O ?? A) && e.setZoom(O ?? A);
186
187
  let i = window.setTimeout(() => e.invalidateSize(), 0);
187
188
  return () => {
188
189
  window.clearTimeout(i), t.remove();
@@ -198,37 +199,37 @@ var y = e(function({ widget: e, data: c, onClick: l, onDrilldown: u }) {
198
199
  j,
199
200
  M,
200
201
  T
201
- ]), /* @__PURE__ */ o("div", {
202
+ ]), /* @__PURE__ */ s("div", {
202
203
  className: "relative h-full w-full overflow-hidden rounded-lg bg-bg-sunken",
203
204
  children: [
204
- /* @__PURE__ */ a("div", {
205
- ref: f,
205
+ /* @__PURE__ */ o("div", {
206
+ ref: d,
206
207
  className: "h-full w-full"
207
208
  }),
208
- b !== "error" && E.length === 0 && !N && /* @__PURE__ */ a("div", {
209
+ b !== "error" && E.length === 0 && !N && /* @__PURE__ */ o("div", {
209
210
  className: "pointer-events-none absolute inset-0 z-[500] flex items-center justify-center bg-bg-sunken/70 text-sm text-text-secondary",
210
- children: /* @__PURE__ */ o("div", {
211
+ children: /* @__PURE__ */ s("div", {
211
212
  className: "text-center",
212
- children: [/* @__PURE__ */ o("svg", {
213
+ children: [/* @__PURE__ */ s("svg", {
213
214
  className: "mx-auto mb-2 h-12 w-12 text-text-muted",
214
215
  fill: "none",
215
216
  stroke: "currentColor",
216
217
  viewBox: "0 0 24 24",
217
- children: [/* @__PURE__ */ a("path", {
218
+ children: [/* @__PURE__ */ o("path", {
218
219
  strokeLinecap: "round",
219
220
  strokeLinejoin: "round",
220
221
  strokeWidth: 1.5,
221
222
  d: "M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"
222
- }), /* @__PURE__ */ a("path", {
223
+ }), /* @__PURE__ */ o("path", {
223
224
  strokeLinecap: "round",
224
225
  strokeLinejoin: "round",
225
226
  strokeWidth: 1.5,
226
227
  d: "M15 11a3 3 0 11-6 0 3 3 0 016 0z"
227
228
  })]
228
- }), /* @__PURE__ */ a("p", { children: "No map data" })]
229
+ }), /* @__PURE__ */ o("p", { children: "No map data" })]
229
230
  })
230
231
  }),
231
- b === "error" && /* @__PURE__ */ a("div", {
232
+ b === "error" && /* @__PURE__ */ o("div", {
232
233
  className: "absolute inset-0 z-[500] flex items-center justify-center bg-bg-sunken px-4 text-center text-sm text-text-secondary",
233
234
  children: "The map needs an internet connection and couldn’t load."
234
235
  })
@@ -236,4 +237,4 @@ var y = e(function({ widget: e, data: c, onClick: l, onDrilldown: u }) {
236
237
  });
237
238
  });
238
239
  //#endregion
239
- export { y as default };
240
+ export { b as default };
@@ -1,89 +1,89 @@
1
1
  import { memo as e, useCallback as t } from "react";
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";
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";
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 } = i(), s = t((t, n) => {
6
+ let { t: o } = n(), s = t((t, n) => {
7
7
  a({
8
8
  ...e,
9
9
  [t]: n
10
10
  });
11
11
  }, [e, a]);
12
- return /* @__PURE__ */ r("div", {
12
+ return /* @__PURE__ */ i("div", {
13
13
  className: "min-w-0 space-y-form-gap",
14
14
  children: [
15
- /* @__PURE__ */ r("div", { children: [
16
- /* @__PURE__ */ n("label", {
15
+ /* @__PURE__ */ i("div", { children: [
16
+ /* @__PURE__ */ r("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__ */ n("input", {
20
+ /* @__PURE__ */ r("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__ */ n("p", {
27
+ /* @__PURE__ */ r("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__ */ r("div", { children: [/* @__PURE__ */ n("label", {
32
+ /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("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__ */ n("input", {
35
+ }), /* @__PURE__ */ r("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__ */ r("div", { children: [/* @__PURE__ */ n("label", {
42
+ /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("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__ */ r("select", {
45
+ }), /* @__PURE__ */ i("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__ */ n("option", {
50
+ /* @__PURE__ */ r("option", {
51
51
  value: "auto",
52
52
  children: o("bigconsole.widget.config.metricCard.format.auto", "Auto (from data)")
53
53
  }),
54
- /* @__PURE__ */ n("option", {
54
+ /* @__PURE__ */ r("option", {
55
55
  value: "number",
56
56
  children: o("bigconsole.widget.config.metricCard.format.number", "Number")
57
57
  }),
58
- /* @__PURE__ */ n("option", {
58
+ /* @__PURE__ */ r("option", {
59
59
  value: "currency",
60
60
  children: o("bigconsole.widget.config.metricCard.format.currency", "Currency")
61
61
  }),
62
- /* @__PURE__ */ n("option", {
62
+ /* @__PURE__ */ r("option", {
63
63
  value: "percentage",
64
64
  children: o("bigconsole.widget.config.metricCard.format.percentage", "Percentage")
65
65
  }),
66
- /* @__PURE__ */ n("option", {
66
+ /* @__PURE__ */ r("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__ */ r("div", {
72
+ /* @__PURE__ */ i("div", {
73
73
  className: "grid grid-cols-1 gap-3 sm:grid-cols-2",
74
- children: [/* @__PURE__ */ r("div", { children: [/* @__PURE__ */ n("label", {
74
+ children: [/* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("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__ */ n("input", {
77
+ }), /* @__PURE__ */ r("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__ */ r("div", { children: [/* @__PURE__ */ n("label", {
83
+ })] }), /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("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__ */ n("input", {
86
+ }), /* @__PURE__ */ r("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__ */ r("div", { children: [/* @__PURE__ */ n("label", {
94
+ /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("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__ */ n("input", {
97
+ }), /* @__PURE__ */ r("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__ */ r("div", {
104
+ /* @__PURE__ */ i("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__ */ n("p", {
109
+ /* @__PURE__ */ r("p", {
110
110
  className: "text-xs font-bold uppercase tracking-wider text-text-secondary",
111
111
  children: "Display options"
112
112
  }),
113
- /* @__PURE__ */ r("label", {
113
+ /* @__PURE__ */ i("label", {
114
114
  className: "flex items-center gap-3",
115
- children: [/* @__PURE__ */ n("input", {
115
+ children: [/* @__PURE__ */ r("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__ */ n("span", {
120
+ }), /* @__PURE__ */ r("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__ */ r("label", {
125
+ /* @__PURE__ */ i("label", {
126
126
  className: "flex items-center gap-3",
127
- children: [/* @__PURE__ */ n("input", {
127
+ children: [/* @__PURE__ */ r("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__ */ n("span", {
132
+ }), /* @__PURE__ */ r("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__ */ r("label", {
137
+ /* @__PURE__ */ i("label", {
138
138
  className: "flex items-center gap-3",
139
- children: [/* @__PURE__ */ n("input", {
139
+ children: [/* @__PURE__ */ r("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__ */ n("span", {
144
+ }), /* @__PURE__ */ r("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__ */ r("label", {
149
+ /* @__PURE__ */ i("label", {
150
150
  className: "flex items-center gap-3",
151
- children: [/* @__PURE__ */ n("input", {
151
+ children: [/* @__PURE__ */ r("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__ */ n("span", {
156
+ }), /* @__PURE__ */ r("span", {
157
157
  className: "text-sm text-text-primary",
158
158
  children: o("bigconsole.widget.config.metricCard.positiveIsGood", "Positive change is good")
159
159
  })]
@@ -1,6 +1,6 @@
1
1
  import { memo as e, useMemo as t } from "react";
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";
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";
4
4
  //#region src/bigconsole/components/widgets/metric-card/SparklineChart.tsx
5
5
  var a = {
6
6
  primary: {
@@ -24,7 +24,7 @@ var a = {
24
24
  fill: "fill-text-secondary/10"
25
25
  }
26
26
  }, o = e(function({ data: e, width: o = 100, height: s = 32, color: c = "primary", showFill: l = !0, strokeWidth: u = 2 }) {
27
- let { t: d } = i(), f = t(() => {
27
+ let { t: d } = n(), f = t(() => {
28
28
  if (!e.length) return {
29
29
  line: "",
30
30
  area: "",
@@ -56,31 +56,31 @@ var a = {
56
56
  s,
57
57
  u
58
58
  ]);
59
- if (!f.end) return /* @__PURE__ */ n("div", {
59
+ if (!f.end) return /* @__PURE__ */ r("div", {
60
60
  className: "flex items-center justify-center text-text-secondary",
61
61
  style: {
62
62
  width: o,
63
63
  height: s
64
64
  },
65
- children: /* @__PURE__ */ n("span", {
65
+ children: /* @__PURE__ */ r("span", {
66
66
  className: "text-xs",
67
67
  children: d("bigconsole.widget.sparkline.noData", "No data")
68
68
  })
69
69
  });
70
70
  let p = a[c];
71
- return /* @__PURE__ */ r("svg", {
71
+ return /* @__PURE__ */ i("svg", {
72
72
  width: o,
73
73
  height: s,
74
74
  className: "overflow-visible",
75
75
  role: "img",
76
76
  "aria-label": d("bigconsole.widget.sparkline.ariaLabel", "Sparkline chart"),
77
77
  children: [
78
- l && /* @__PURE__ */ n("path", {
78
+ l && /* @__PURE__ */ r("path", {
79
79
  d: f.area,
80
80
  className: p.fill,
81
81
  strokeWidth: 0
82
82
  }),
83
- /* @__PURE__ */ n("path", {
83
+ /* @__PURE__ */ r("path", {
84
84
  d: f.line,
85
85
  className: p.stroke,
86
86
  fill: "none",
@@ -88,7 +88,7 @@ var a = {
88
88
  strokeLinecap: "round",
89
89
  strokeLinejoin: "round"
90
90
  }),
91
- /* @__PURE__ */ n("circle", {
91
+ /* @__PURE__ */ r("circle", {
92
92
  cx: f.end.x,
93
93
  cy: f.end.y,
94
94
  r: u + 1,
@@ -1,48 +1,48 @@
1
1
  import { memo as e } from "react";
2
- import { jsx as t } from "react/jsx-runtime";
3
- import { useI18n as n } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
2
+ import { useI18n as t } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
3
+ import { jsx as n } from "react/jsx-runtime";
4
4
  //#region src/bigconsole/components/widgets/metric-card/TrendIndicator.tsx
5
5
  var r = {
6
6
  sm: "w-3 h-3",
7
7
  md: "w-4 h-4",
8
8
  lg: "w-5 h-5"
9
9
  }, i = e(function({ direction: e, size: i = "md", positiveIsGood: a = !0 }) {
10
- let { t: o } = n(), s = () => {
10
+ let { t: o } = t(), s = () => {
11
11
  if (e === "flat") return "text-text-secondary";
12
12
  let t = e === "up";
13
13
  return (a ? t : !t) ? "text-status-success-text" : "text-status-error-text";
14
14
  }, c = r[i], l = s();
15
- return e === "flat" ? /* @__PURE__ */ t("svg", {
15
+ return e === "flat" ? /* @__PURE__ */ n("svg", {
16
16
  className: `${c} ${l}`,
17
17
  fill: "none",
18
18
  stroke: "currentColor",
19
19
  viewBox: "0 0 24 24",
20
20
  "aria-label": o("bigconsole.widget.trend.noChange", "No change"),
21
- children: /* @__PURE__ */ t("path", {
21
+ children: /* @__PURE__ */ n("path", {
22
22
  strokeLinecap: "round",
23
23
  strokeLinejoin: "round",
24
24
  strokeWidth: 2,
25
25
  d: "M5 12h14"
26
26
  })
27
- }) : e === "up" ? /* @__PURE__ */ t("svg", {
27
+ }) : e === "up" ? /* @__PURE__ */ n("svg", {
28
28
  className: `${c} ${l}`,
29
29
  fill: "none",
30
30
  stroke: "currentColor",
31
31
  viewBox: "0 0 24 24",
32
32
  "aria-label": o("bigconsole.widget.trend.up", "Trending up"),
33
- children: /* @__PURE__ */ t("path", {
33
+ children: /* @__PURE__ */ n("path", {
34
34
  strokeLinecap: "round",
35
35
  strokeLinejoin: "round",
36
36
  strokeWidth: 2,
37
37
  d: "M5 15l7-7 7 7"
38
38
  })
39
- }) : /* @__PURE__ */ t("svg", {
39
+ }) : /* @__PURE__ */ n("svg", {
40
40
  className: `${c} ${l}`,
41
41
  fill: "none",
42
42
  stroke: "currentColor",
43
43
  viewBox: "0 0 24 24",
44
44
  "aria-label": o("bigconsole.widget.trend.down", "Trending down"),
45
- children: /* @__PURE__ */ t("path", {
45
+ children: /* @__PURE__ */ n("path", {
46
46
  strokeLinecap: "round",
47
47
  strokeLinejoin: "round",
48
48
  strokeWidth: 2,