@burdenoff/microfe-bigconsole 2026.805.2 → 2026.805.3

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 (134) hide show
  1. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js +109 -113
  2. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js.map +1 -1
  3. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js +115 -113
  4. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js.map +1 -1
  5. package/dist/bigconsole/components/dashboard/DashboardCanvas.js +71 -62
  6. package/dist/bigconsole/components/dashboard/DashboardCanvas.js.map +1 -1
  7. package/dist/bigconsole/components/dashboard/DashboardToolbar.js +90 -89
  8. package/dist/bigconsole/components/dashboard/DashboardToolbar.js.map +1 -1
  9. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js +56 -54
  10. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js.map +1 -1
  11. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js +126 -125
  12. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js.map +1 -1
  13. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +151 -150
  14. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js.map +1 -1
  15. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js +77 -76
  16. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js.map +1 -1
  17. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +97 -96
  18. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js.map +1 -1
  19. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js +172 -191
  20. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js.map +1 -1
  21. package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js +75 -83
  22. package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js.map +1 -1
  23. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js +151 -154
  24. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js.map +1 -1
  25. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js +181 -190
  26. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js.map +1 -1
  27. package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.js +1 -0
  28. package/dist/bigconsole/components/dashboard/WidgetPalette.js +110 -108
  29. package/dist/bigconsole/components/dashboard/WidgetPalette.js.map +1 -1
  30. package/dist/bigconsole/components/datasink/CacheTTLSelector.js +102 -103
  31. package/dist/bigconsole/components/datasink/CacheTTLSelector.js.map +1 -1
  32. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js +36 -41
  33. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js.map +1 -1
  34. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js +38 -37
  35. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js.map +1 -1
  36. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js +113 -117
  37. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js.map +1 -1
  38. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +182 -197
  39. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js.map +1 -1
  40. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js +166 -168
  41. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js.map +1 -1
  42. package/dist/bigconsole/components/parser/DataSinkSelector.js +87 -86
  43. package/dist/bigconsole/components/parser/DataSinkSelector.js.map +1 -1
  44. package/dist/bigconsole/components/parser/ImportParserDialog.js +196 -211
  45. package/dist/bigconsole/components/parser/ImportParserDialog.js.map +1 -1
  46. package/dist/bigconsole/components/parser/ParserSelector.js +130 -128
  47. package/dist/bigconsole/components/parser/ParserSelector.js.map +1 -1
  48. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js +66 -63
  49. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js.map +1 -1
  50. package/dist/bigconsole/components/preview/AiPreviewPanel.js +95 -91
  51. package/dist/bigconsole/components/preview/AiPreviewPanel.js.map +1 -1
  52. package/dist/bigconsole/components/widgets/ActionConfigDialog.js +222 -215
  53. package/dist/bigconsole/components/widgets/ActionConfigDialog.js.map +1 -1
  54. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js +149 -145
  55. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js.map +1 -1
  56. package/dist/bigconsole/components/widgets/PropertiesPanel.js +504 -470
  57. package/dist/bigconsole/components/widgets/PropertiesPanel.js.map +1 -1
  58. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js +44 -47
  59. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js.map +1 -1
  60. package/dist/bigconsole/components/widgets/chart/ChartConfig.js +143 -142
  61. package/dist/bigconsole/components/widgets/chart/ChartConfig.js.map +1 -1
  62. package/dist/bigconsole/components/widgets/comments/WidgetComments.js +101 -88
  63. package/dist/bigconsole/components/widgets/comments/WidgetComments.js.map +1 -1
  64. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js +135 -134
  65. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js.map +1 -1
  66. package/dist/bigconsole/components/widgets/form/FormWidget.js +167 -159
  67. package/dist/bigconsole/components/widgets/form/FormWidget.js.map +1 -1
  68. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js +69 -68
  69. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js.map +1 -1
  70. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js +64 -72
  71. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js.map +1 -1
  72. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js +60 -59
  73. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js.map +1 -1
  74. package/dist/bigconsole/components/widgets/list/ListConfig.js +57 -56
  75. package/dist/bigconsole/components/widgets/list/ListConfig.js.map +1 -1
  76. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js +70 -69
  77. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js.map +1 -1
  78. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js +35 -34
  79. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js.map +1 -1
  80. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js +20 -19
  81. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js.map +1 -1
  82. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js +178 -177
  83. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js.map +1 -1
  84. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js +76 -75
  85. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js.map +1 -1
  86. package/dist/bigconsole/components/widgets/table/TableConfig.js +183 -168
  87. package/dist/bigconsole/components/widgets/table/TableConfig.js.map +1 -1
  88. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js +187 -180
  89. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js.map +1 -1
  90. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js +40 -38
  91. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js.map +1 -1
  92. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js +150 -148
  93. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js.map +1 -1
  94. package/dist/bigconsole/pages/DashboardBuilderPage.js +181 -176
  95. package/dist/bigconsole/pages/DashboardBuilderPage.js.map +1 -1
  96. package/dist/bigconsole/pages/DashboardViewPage.js +196 -192
  97. package/dist/bigconsole/pages/DashboardViewPage.js.map +1 -1
  98. package/dist/bigconsole/pages/DashboardsPage.js +223 -219
  99. package/dist/bigconsole/pages/DashboardsPage.js.map +1 -1
  100. package/dist/bigconsole/pages/DataParsersPage.js +167 -170
  101. package/dist/bigconsole/pages/DataParsersPage.js.map +1 -1
  102. package/dist/bigconsole/pages/DataSinkBuilderPage.js +204 -189
  103. package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +1 -1
  104. package/dist/bigconsole/pages/DataSinkViewPage.js +175 -169
  105. package/dist/bigconsole/pages/DataSinkViewPage.js.map +1 -1
  106. package/dist/bigconsole/pages/DataSourcesPage.js +8 -7
  107. package/dist/bigconsole/pages/DataSourcesPage.js.map +1 -1
  108. package/dist/bigconsole/pages/InsightsPage.js +238 -208
  109. package/dist/bigconsole/pages/InsightsPage.js.map +1 -1
  110. package/dist/bigconsole/pages/ParserBuilderPage.js +464 -412
  111. package/dist/bigconsole/pages/ParserBuilderPage.js.map +1 -1
  112. package/dist/bigconsole/pages/ParserViewPage.js +92 -90
  113. package/dist/bigconsole/pages/ParserViewPage.js.map +1 -1
  114. package/dist/bigconsole/pages/PipelineBuilderPage.js +221 -194
  115. package/dist/bigconsole/pages/PipelineBuilderPage.js.map +1 -1
  116. package/dist/bigconsole/pages/PipelineViewPage.js +181 -184
  117. package/dist/bigconsole/pages/PipelineViewPage.js.map +1 -1
  118. package/dist/bigconsole/pages/PipelinesPage.js +128 -127
  119. package/dist/bigconsole/pages/PipelinesPage.js.map +1 -1
  120. package/dist/bigconsole/pages/SettingsPage.js +177 -172
  121. package/dist/bigconsole/pages/SettingsPage.js.map +1 -1
  122. package/dist/bigconsole/pages/WidgetDemoPage.js +121 -83
  123. package/dist/bigconsole/pages/WidgetDemoPage.js.map +1 -1
  124. package/dist/bigconsole/pages/WorkflowViewPage.js +199 -193
  125. package/dist/bigconsole/pages/WorkflowViewPage.js.map +1 -1
  126. package/dist/bigconsole/pages/WorkflowsPage.js +129 -128
  127. package/dist/bigconsole/pages/WorkflowsPage.js.map +1 -1
  128. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js +111 -109
  129. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js.map +1 -1
  130. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js +127 -126
  131. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js.map +1 -1
  132. package/dist/bigconsole/renderers/adapters/CustomRenderer.js +103 -103
  133. package/dist/bigconsole/renderers/adapters/CustomRenderer.js.map +1 -1
  134. package/package.json +2 -1
@@ -1,80 +1,75 @@
1
1
  import { memo as e, useCallback as t } from "react";
2
- import { jsx as n, jsxs as r } from "react/jsx-runtime";
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";
3
4
  //#region src/bigconsole/components/datasink/DataSinkDeleteDialog.tsx
4
- var i = e(function({ dataSink: e, isOpen: i, onClose: a, onConfirm: o, isDeleting: s = !1 }) {
5
- let c = t((e) => {
6
- e.target === e.currentTarget && !s && a();
7
- }, [s, a]), l = t((e) => {
8
- e.key === "Escape" && !s && a();
9
- }, [s, a]);
10
- return i ? /* @__PURE__ */ n("div", {
5
+ var a = e(function({ dataSink: e, isOpen: a, onClose: o, onConfirm: s, isDeleting: c = !1 }) {
6
+ let { t: l } = n(), u = t((e) => {
7
+ e.target === e.currentTarget && !c && o();
8
+ }, [c, o]), d = t((e) => {
9
+ e.key === "Escape" && !c && o();
10
+ }, [c, o]);
11
+ return a ? /* @__PURE__ */ r("div", {
11
12
  className: "fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50",
12
- onClick: c,
13
- onKeyDown: l,
13
+ onClick: u,
14
+ onKeyDown: d,
14
15
  role: "dialog",
15
16
  "aria-modal": "true",
16
17
  "aria-labelledby": "delete-dialog-title",
17
- children: /* @__PURE__ */ r("div", {
18
+ children: /* @__PURE__ */ i("div", {
18
19
  className: "bg-bg-surface border border-border-default rounded-lg shadow-xl max-w-md w-full",
19
20
  children: [
20
- /* @__PURE__ */ n("div", {
21
+ /* @__PURE__ */ r("div", {
21
22
  className: "p-6 border-b border-border-default",
22
- children: /* @__PURE__ */ n("h2", {
23
+ children: /* @__PURE__ */ r("h2", {
23
24
  id: "delete-dialog-title",
24
25
  className: "text-lg font-semibold text-text-primary",
25
- children: "Delete DataSink"
26
+ children: l("bigconsole.dataSinks.deleteDialog.title", "Delete DataSink")
26
27
  })
27
28
  }),
28
- /* @__PURE__ */ r("div", {
29
+ /* @__PURE__ */ i("div", {
29
30
  className: "p-6",
30
31
  children: [
31
- /* @__PURE__ */ n("p", {
32
+ /* @__PURE__ */ r("p", {
32
33
  className: "text-sm text-text-primary mb-4",
33
- children: "Are you sure you want to delete this DataSink?"
34
+ children: l("bigconsole.dataSinks.deleteDialog.confirmMessage", "Are you sure you want to delete this DataSink?")
34
35
  }),
35
- /* @__PURE__ */ r("div", {
36
+ /* @__PURE__ */ i("div", {
36
37
  className: "bg-bg-sunken p-3 rounded-md",
37
- children: [/* @__PURE__ */ n("p", {
38
+ children: [/* @__PURE__ */ r("p", {
38
39
  className: "text-sm font-medium text-text-primary",
39
- children: e.name || "Untitled DataSink"
40
- }), /* @__PURE__ */ n("p", {
40
+ children: e.name || l("bigconsole.dataSinks.deleteDialog.untitledName", "Untitled DataSink")
41
+ }), /* @__PURE__ */ r("p", {
41
42
  className: "text-xs text-text-secondary mt-1 font-mono",
42
43
  children: e.key
43
44
  })]
44
45
  }),
45
- e.linkedWorkflowCount && e.linkedWorkflowCount > 0 && /* @__PURE__ */ n("div", {
46
+ e.linkedWorkflowCount && e.linkedWorkflowCount > 0 && /* @__PURE__ */ r("div", {
46
47
  className: "mt-4 p-3 bg-status-warning-bg/10 border border-status-warning-border/20 rounded-md",
47
48
  children: /* @__PURE__ */ r("p", {
48
49
  className: "text-sm text-status-warning-text",
49
- children: [
50
- "This DataSink is linked to ",
51
- e.linkedWorkflowCount,
52
- " workflow",
53
- e.linkedWorkflowCount === 1 ? "" : "s",
54
- ". Deleting it will remove these links."
55
- ]
50
+ children: e.linkedWorkflowCount === 1 ? l("bigconsole.dataSinks.deleteDialog.linkedWorkflowWarningSingular", "This DataSink is linked to {{count}} workflow. Deleting it will remove these links.", { count: e.linkedWorkflowCount }) : l("bigconsole.dataSinks.deleteDialog.linkedWorkflowWarningPlural", "This DataSink is linked to {{count}} workflows. Deleting it will remove these links.", { count: e.linkedWorkflowCount })
56
51
  })
57
52
  }),
58
- /* @__PURE__ */ n("p", {
53
+ /* @__PURE__ */ r("p", {
59
54
  className: "text-sm text-status-error-text mt-4",
60
- children: "This action cannot be undone."
55
+ children: l("bigconsole.dataSinks.deleteDialog.cannotBeUndone", "This action cannot be undone.")
61
56
  })
62
57
  ]
63
58
  }),
64
- /* @__PURE__ */ r("div", {
59
+ /* @__PURE__ */ i("div", {
65
60
  className: "p-6 border-t border-border-default flex items-center justify-end gap-3",
66
- children: [/* @__PURE__ */ n("button", {
61
+ children: [/* @__PURE__ */ r("button", {
67
62
  type: "button",
68
- onClick: a,
69
- disabled: s,
63
+ onClick: o,
64
+ disabled: c,
70
65
  className: "\n px-4 py-2\n text-sm font-medium\n text-text-primary\n bg-bg-sunken\n hover:bg-border-default\n disabled:opacity-50 disabled:cursor-not-allowed\n rounded-md\n transition-colors\n ",
71
- children: "Cancel"
72
- }), /* @__PURE__ */ n("button", {
66
+ children: l("bigconsole.dataSinks.deleteDialog.cancelButton", "Cancel")
67
+ }), /* @__PURE__ */ r("button", {
73
68
  type: "button",
74
- onClick: o,
75
- disabled: s,
69
+ onClick: s,
70
+ disabled: c,
76
71
  className: "\n px-4 py-2\n text-sm font-medium\n text-white\n bg-status-error-bg\n hover:bg-status-error-bg/90\n disabled:opacity-50 disabled:cursor-not-allowed\n rounded-md\n transition-colors\n ",
77
- children: s ? "Deleting..." : "Delete"
72
+ children: c ? l("bigconsole.dataSinks.deleteDialog.deletingButton", "Deleting...") : l("bigconsole.dataSinks.deleteDialog.deleteButton", "Delete")
78
73
  })]
79
74
  })
80
75
  ]
@@ -82,6 +77,6 @@ var i = e(function({ dataSink: e, isOpen: i, onClose: a, onConfirm: o, isDeletin
82
77
  }) : null;
83
78
  });
84
79
  //#endregion
85
- export { i as default };
80
+ export { a as default };
86
81
 
87
82
  //# sourceMappingURL=DataSinkDeleteDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataSinkDeleteDialog.js","names":[],"sources":["../../../../src/bigconsole/components/datasink/DataSinkDeleteDialog.tsx"],"sourcesContent":["/**\n * DataSink Delete Dialog\n *\n * Confirmation dialog for deleting a DataSink.\n */\n\nimport { memo, useCallback } from 'react';\nimport type { DataSink } from '../../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface DataSinkDeleteDialogProps {\n /** DataSink to delete */\n dataSink: DataSink;\n /** Whether dialog is open */\n isOpen: boolean;\n /** Callback when dialog is closed */\n onClose: () => void;\n /** Callback when delete is confirmed */\n onConfirm: () => void;\n /** Whether delete is in progress */\n isDeleting?: boolean;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const DataSinkDeleteDialog = memo(function DataSinkDeleteDialog({\n dataSink,\n isOpen,\n onClose,\n onConfirm,\n isDeleting = false,\n}: DataSinkDeleteDialogProps) {\n // Handle backdrop click\n const handleBackdropClick = useCallback(\n (e: React.MouseEvent) => {\n if (e.target === e.currentTarget && !isDeleting) {\n onClose();\n }\n },\n [isDeleting, onClose]\n );\n\n // Handle escape key\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Escape' && !isDeleting) {\n onClose();\n }\n },\n [isDeleting, onClose]\n );\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50\"\n onClick={handleBackdropClick}\n onKeyDown={handleKeyDown}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"delete-dialog-title\"\n >\n <div className=\"bg-bg-surface border border-border-default rounded-lg shadow-xl max-w-md w-full\">\n {/* Header */}\n <div className=\"p-6 border-b border-border-default\">\n <h2 id=\"delete-dialog-title\" className=\"text-lg font-semibold text-text-primary\">\n Delete DataSink\n </h2>\n </div>\n\n {/* Content */}\n <div className=\"p-6\">\n <p className=\"text-sm text-text-primary mb-4\">Are you sure you want to delete this DataSink?</p>\n\n <div className=\"bg-bg-sunken p-3 rounded-md\">\n <p className=\"text-sm font-medium text-text-primary\">{dataSink.name || 'Untitled DataSink'}</p>\n <p className=\"text-xs text-text-secondary mt-1 font-mono\">{dataSink.key}</p>\n </div>\n\n {dataSink.linkedWorkflowCount && dataSink.linkedWorkflowCount > 0 && (\n <div className=\"mt-4 p-3 bg-status-warning-bg/10 border border-status-warning-border/20 rounded-md\">\n <p className=\"text-sm text-status-warning-text\">\n This DataSink is linked to {dataSink.linkedWorkflowCount} workflow\n {dataSink.linkedWorkflowCount !== 1 ? 's' : ''}. Deleting it will remove these links.\n </p>\n </div>\n )}\n\n <p className=\"text-sm text-status-error-text mt-4\">This action cannot be undone.</p>\n </div>\n\n {/* Footer */}\n <div className=\"p-6 border-t border-border-default flex items-center justify-end gap-3\">\n <button\n type=\"button\"\n onClick={onClose}\n disabled={isDeleting}\n className={`\n px-4 py-2\n text-sm font-medium\n text-text-primary\n bg-bg-sunken\n hover:bg-border-default\n disabled:opacity-50 disabled:cursor-not-allowed\n rounded-md\n transition-colors\n `}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n onClick={onConfirm}\n disabled={isDeleting}\n className={`\n px-4 py-2\n text-sm font-medium\n text-white\n bg-status-error-bg\n hover:bg-status-error-bg/90\n disabled:opacity-50 disabled:cursor-not-allowed\n rounded-md\n transition-colors\n `}\n >\n {isDeleting ? 'Deleting...' : 'Delete'}\n </button>\n </div>\n </div>\n </div>\n );\n});\n\nexport default DataSinkDeleteDialog;\n"],"mappings":";;;AA8BA,IAAa,IAAuB,EAAK,SAA8B,EACrE,aACA,WACA,YACA,cACA,gBAAa,MACe;CAE5B,IAAM,IAAsB,GACzB,MAAwB;AACvB,EAAI,EAAE,WAAW,EAAE,iBAAiB,CAAC,KACnC,GAAS;IAGb,CAAC,GAAY,EAAQ,CACtB,EAGK,IAAgB,GACnB,MAA2B;AAC1B,EAAI,EAAE,QAAQ,YAAY,CAAC,KACzB,GAAS;IAGb,CAAC,GAAY,EAAQ,CACtB;AAMD,QAJK,IAKH,kBAAC,OAAD;EACE,WAAU;EACV,SAAS;EACT,WAAW;EACX,MAAK;EACL,cAAW;EACX,mBAAgB;YAEhB,kBAAC,OAAD;GAAK,WAAU;aAAf;IAEE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,MAAD;MAAI,IAAG;MAAsB,WAAU;gBAA0C;MAE5E,CAAA;KACD,CAAA;IAGN,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,KAAD;OAAG,WAAU;iBAAiC;OAAkD,CAAA;MAEhG,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,KAAD;QAAG,WAAU;kBAAyC,EAAS,QAAQ;QAAwB,CAAA,EAC/F,kBAAC,KAAD;QAAG,WAAU;kBAA8C,EAAS;QAAQ,CAAA,CACxE;;MAEL,EAAS,uBAAuB,EAAS,sBAAsB,KAC9D,kBAAC,OAAD;OAAK,WAAU;iBACb,kBAAC,KAAD;QAAG,WAAU;kBAAb;SAAgD;SAClB,EAAS;SAAoB;SACxD,EAAS,wBAAwB,IAAU,KAAN;SAAS;SAC7C;;OACA,CAAA;MAGR,kBAAC,KAAD;OAAG,WAAU;iBAAsC;OAAiC,CAAA;MAChF;;IAGN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,UAAD;MACE,MAAK;MACL,SAAS;MACT,UAAU;MACV,WAAW;gBAUZ;MAEQ,CAAA,EACT,kBAAC,UAAD;MACE,MAAK;MACL,SAAS;MACT,UAAU;MACV,WAAW;gBAWV,IAAa,gBAAgB;MACvB,CAAA,CACL;;IACF;;EACF,CAAA,GA/EC;EAiFT"}
1
+ {"version":3,"file":"DataSinkDeleteDialog.js","names":[],"sources":["../../../../src/bigconsole/components/datasink/DataSinkDeleteDialog.tsx"],"sourcesContent":["/**\n * DataSink Delete Dialog\n *\n * Confirmation dialog for deleting a DataSink.\n */\n\nimport { memo, useCallback } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport type { DataSink } from '../../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface DataSinkDeleteDialogProps {\n /** DataSink to delete */\n dataSink: DataSink;\n /** Whether dialog is open */\n isOpen: boolean;\n /** Callback when dialog is closed */\n onClose: () => void;\n /** Callback when delete is confirmed */\n onConfirm: () => void;\n /** Whether delete is in progress */\n isDeleting?: boolean;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const DataSinkDeleteDialog = memo(function DataSinkDeleteDialog({\n dataSink,\n isOpen,\n onClose,\n onConfirm,\n isDeleting = false,\n}: DataSinkDeleteDialogProps) {\n const { t } = useI18n();\n\n // Handle backdrop click\n const handleBackdropClick = useCallback(\n (e: React.MouseEvent) => {\n if (e.target === e.currentTarget && !isDeleting) {\n onClose();\n }\n },\n [isDeleting, onClose]\n );\n\n // Handle escape key\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Escape' && !isDeleting) {\n onClose();\n }\n },\n [isDeleting, onClose]\n );\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50\"\n onClick={handleBackdropClick}\n onKeyDown={handleKeyDown}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"delete-dialog-title\"\n >\n <div className=\"bg-bg-surface border border-border-default rounded-lg shadow-xl max-w-md w-full\">\n {/* Header */}\n <div className=\"p-6 border-b border-border-default\">\n <h2 id=\"delete-dialog-title\" className=\"text-lg font-semibold text-text-primary\">\n {t('bigconsole.dataSinks.deleteDialog.title', 'Delete DataSink')}\n </h2>\n </div>\n\n {/* Content */}\n <div className=\"p-6\">\n <p className=\"text-sm text-text-primary mb-4\">\n {t('bigconsole.dataSinks.deleteDialog.confirmMessage', 'Are you sure you want to delete this DataSink?')}\n </p>\n\n <div className=\"bg-bg-sunken p-3 rounded-md\">\n <p className=\"text-sm font-medium text-text-primary\">\n {dataSink.name || t('bigconsole.dataSinks.deleteDialog.untitledName', 'Untitled DataSink')}\n </p>\n <p className=\"text-xs text-text-secondary mt-1 font-mono\">{dataSink.key}</p>\n </div>\n\n {dataSink.linkedWorkflowCount && dataSink.linkedWorkflowCount > 0 && (\n <div className=\"mt-4 p-3 bg-status-warning-bg/10 border border-status-warning-border/20 rounded-md\">\n <p className=\"text-sm text-status-warning-text\">\n {dataSink.linkedWorkflowCount === 1\n ? t(\n 'bigconsole.dataSinks.deleteDialog.linkedWorkflowWarningSingular',\n 'This DataSink is linked to {{count}} workflow. Deleting it will remove these links.',\n { count: dataSink.linkedWorkflowCount }\n )\n : t(\n 'bigconsole.dataSinks.deleteDialog.linkedWorkflowWarningPlural',\n 'This DataSink is linked to {{count}} workflows. Deleting it will remove these links.',\n { count: dataSink.linkedWorkflowCount }\n )}\n </p>\n </div>\n )}\n\n <p className=\"text-sm text-status-error-text mt-4\">\n {t('bigconsole.dataSinks.deleteDialog.cannotBeUndone', 'This action cannot be undone.')}\n </p>\n </div>\n\n {/* Footer */}\n <div className=\"p-6 border-t border-border-default flex items-center justify-end gap-3\">\n <button\n type=\"button\"\n onClick={onClose}\n disabled={isDeleting}\n className={`\n px-4 py-2\n text-sm font-medium\n text-text-primary\n bg-bg-sunken\n hover:bg-border-default\n disabled:opacity-50 disabled:cursor-not-allowed\n rounded-md\n transition-colors\n `}\n >\n {t('bigconsole.dataSinks.deleteDialog.cancelButton', 'Cancel')}\n </button>\n <button\n type=\"button\"\n onClick={onConfirm}\n disabled={isDeleting}\n className={`\n px-4 py-2\n text-sm font-medium\n text-white\n bg-status-error-bg\n hover:bg-status-error-bg/90\n disabled:opacity-50 disabled:cursor-not-allowed\n rounded-md\n transition-colors\n `}\n >\n {isDeleting\n ? t('bigconsole.dataSinks.deleteDialog.deletingButton', 'Deleting...')\n : t('bigconsole.dataSinks.deleteDialog.deleteButton', 'Delete')}\n </button>\n </div>\n </div>\n </div>\n );\n});\n\nexport default DataSinkDeleteDialog;\n"],"mappings":";;;;AA+BA,IAAa,IAAuB,EAAK,SAA8B,EACrE,aACA,WACA,YACA,cACA,gBAAa,MACe;CAC5B,IAAM,EAAE,SAAM,GAAS,EAGjB,IAAsB,GACzB,MAAwB;AACvB,EAAI,EAAE,WAAW,EAAE,iBAAiB,CAAC,KACnC,GAAS;IAGb,CAAC,GAAY,EAAQ,CACtB,EAGK,IAAgB,GACnB,MAA2B;AAC1B,EAAI,EAAE,QAAQ,YAAY,CAAC,KACzB,GAAS;IAGb,CAAC,GAAY,EAAQ,CACtB;AAMD,QAJK,IAKH,kBAAC,OAAD;EACE,WAAU;EACV,SAAS;EACT,WAAW;EACX,MAAK;EACL,cAAW;EACX,mBAAgB;YAEhB,kBAAC,OAAD;GAAK,WAAU;aAAf;IAEE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,MAAD;MAAI,IAAG;MAAsB,WAAU;gBACpC,EAAE,2CAA2C,kBAAkB;MAC7D,CAAA;KACD,CAAA;IAGN,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,KAAD;OAAG,WAAU;iBACV,EAAE,oDAAoD,iDAAiD;OACtG,CAAA;MAEJ,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,KAAD;QAAG,WAAU;kBACV,EAAS,QAAQ,EAAE,kDAAkD,oBAAoB;QACxF,CAAA,EACJ,kBAAC,KAAD;QAAG,WAAU;kBAA8C,EAAS;QAAQ,CAAA,CACxE;;MAEL,EAAS,uBAAuB,EAAS,sBAAsB,KAC9D,kBAAC,OAAD;OAAK,WAAU;iBACb,kBAAC,KAAD;QAAG,WAAU;kBACV,EAAS,wBAAwB,IAC9B,EACE,mEACA,uFACA,EAAE,OAAO,EAAS,qBAAqB,CACxC,GACD,EACE,iEACA,wFACA,EAAE,OAAO,EAAS,qBAAqB,CACxC;QACH,CAAA;OACA,CAAA;MAGR,kBAAC,KAAD;OAAG,WAAU;iBACV,EAAE,oDAAoD,gCAAgC;OACrF,CAAA;MACA;;IAGN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,UAAD;MACE,MAAK;MACL,SAAS;MACT,UAAU;MACV,WAAW;gBAWV,EAAE,kDAAkD,SAAS;MACvD,CAAA,EACT,kBAAC,UAAD;MACE,MAAK;MACL,SAAS;MACT,UAAU;MACV,WAAW;gBAWV,IACG,EAAE,oDAAoD,cAAc,GACpE,EAAE,kDAAkD,SAAS;MAC1D,CAAA,CACL;;IACF;;EACF,CAAA,GAhGC;EAkGT"}
@@ -1,81 +1,82 @@
1
1
  import { memo as e, useCallback as t, useState as n } from "react";
2
- import { jsx as r, jsxs as i } from "react/jsx-runtime";
2
+ import { useI18n as r } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
3
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
3
4
  //#region src/bigconsole/components/datasink/DataSinkRefreshDialog.tsx
4
- var a = e(function({ dataSink: e, isOpen: a, onClose: o, onConfirm: s, isRefreshing: c = !1 }) {
5
- let [l, u] = n(!1), d = t((e) => {
6
- e.target === e.currentTarget && !c && o();
7
- }, [c, o]), f = (e) => new Date(e).toLocaleString(), p = t(() => {
8
- s(l);
9
- }, [s, l]);
10
- return a ? /* @__PURE__ */ r("div", {
5
+ var o = e(function({ dataSink: e, isOpen: o, onClose: s, onConfirm: c, isRefreshing: l = !1 }) {
6
+ let { t: u } = r(), [d, f] = n(!1), p = t((e) => {
7
+ e.target === e.currentTarget && !l && s();
8
+ }, [l, s]), m = (e) => new Date(e).toLocaleString(), h = t(() => {
9
+ c(d);
10
+ }, [c, d]);
11
+ return o ? /* @__PURE__ */ i("div", {
11
12
  className: "fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50",
12
- onClick: d,
13
+ onClick: p,
13
14
  role: "dialog",
14
15
  "aria-modal": "true",
15
16
  "aria-labelledby": "refresh-dialog-title",
16
- children: /* @__PURE__ */ i("div", {
17
+ children: /* @__PURE__ */ a("div", {
17
18
  className: "bg-bg-surface border border-border-default rounded-lg shadow-xl max-w-md w-full",
18
19
  children: [
19
- /* @__PURE__ */ r("div", {
20
+ /* @__PURE__ */ i("div", {
20
21
  className: "p-6 border-b border-border-default",
21
- children: /* @__PURE__ */ r("h2", {
22
+ children: /* @__PURE__ */ i("h2", {
22
23
  id: "refresh-dialog-title",
23
24
  className: "text-lg font-semibold text-text-primary",
24
- children: "Refresh DataSink"
25
+ children: u("bigconsole.dataSinks.refreshDialog.title", "Refresh DataSink")
25
26
  })
26
27
  }),
27
- /* @__PURE__ */ i("div", {
28
+ /* @__PURE__ */ a("div", {
28
29
  className: "p-6",
29
30
  children: [
30
- /* @__PURE__ */ i("div", {
31
+ /* @__PURE__ */ a("div", {
31
32
  className: "bg-bg-sunken p-3 rounded-md mb-4",
32
33
  children: [
33
- /* @__PURE__ */ r("p", {
34
+ /* @__PURE__ */ i("p", {
34
35
  className: "text-sm font-medium text-text-primary",
35
- children: e.name || "Untitled DataSink"
36
+ children: e.name || u("bigconsole.dataSinks.refreshDialog.untitledName", "Untitled DataSink")
36
37
  }),
37
- /* @__PURE__ */ r("p", {
38
+ /* @__PURE__ */ i("p", {
38
39
  className: "text-xs text-text-secondary mt-1 font-mono",
39
40
  children: e.key
40
41
  }),
41
42
  e.lastRefreshedAt && /* @__PURE__ */ i("p", {
42
43
  className: "text-xs text-text-secondary mt-2",
43
- children: ["Last refreshed: ", f(e.lastRefreshedAt)]
44
+ children: u("bigconsole.dataSinks.refreshDialog.lastRefreshed", "Last refreshed: {{date}}", { date: m(e.lastRefreshedAt) })
44
45
  })
45
46
  ]
46
47
  }),
47
- /* @__PURE__ */ i("label", {
48
+ /* @__PURE__ */ a("label", {
48
49
  className: "flex items-center gap-2 cursor-pointer",
49
- children: [/* @__PURE__ */ r("input", {
50
+ children: [/* @__PURE__ */ i("input", {
50
51
  type: "checkbox",
51
- checked: l,
52
- onChange: (e) => u(e.target.checked),
52
+ checked: d,
53
+ onChange: (e) => f(e.target.checked),
53
54
  className: "w-4 h-4 text-action-primary-bg focus:ring-action-primary-bg rounded"
54
- }), /* @__PURE__ */ r("span", {
55
+ }), /* @__PURE__ */ i("span", {
55
56
  className: "text-sm text-text-primary",
56
- children: "Force refresh (bypass cache)"
57
+ children: u("bigconsole.dataSinks.refreshDialog.forceRefreshLabel", "Force refresh (bypass cache)")
57
58
  })]
58
59
  }),
59
- /* @__PURE__ */ r("p", {
60
+ /* @__PURE__ */ i("p", {
60
61
  className: "mt-2 text-xs text-text-secondary",
61
- children: "Force refresh will re-fetch all data from the source, ignoring any cached values."
62
+ children: u("bigconsole.dataSinks.refreshDialog.forceRefreshDescription", "Force refresh will re-fetch all data from the source, ignoring any cached values.")
62
63
  })
63
64
  ]
64
65
  }),
65
- /* @__PURE__ */ i("div", {
66
+ /* @__PURE__ */ a("div", {
66
67
  className: "p-6 border-t border-border-default flex items-center justify-end gap-3",
67
- children: [/* @__PURE__ */ r("button", {
68
+ children: [/* @__PURE__ */ i("button", {
68
69
  type: "button",
69
- onClick: o,
70
- disabled: c,
70
+ onClick: s,
71
+ disabled: l,
71
72
  className: "\n px-4 py-2\n text-sm font-medium\n text-text-primary\n bg-bg-sunken\n hover:bg-border-default\n disabled:opacity-50 disabled:cursor-not-allowed\n rounded-md\n transition-colors\n ",
72
- children: "Cancel"
73
- }), /* @__PURE__ */ r("button", {
73
+ children: u("bigconsole.dataSinks.refreshDialog.cancelButton", "Cancel")
74
+ }), /* @__PURE__ */ i("button", {
74
75
  type: "button",
75
- onClick: p,
76
- disabled: c,
76
+ onClick: h,
77
+ disabled: l,
77
78
  className: "\n px-4 py-2\n text-sm font-medium\n text-action-primary-fg\n bg-action-primary-bg\n hover:bg-action-primary-bgHover\n disabled:opacity-50 disabled:cursor-not-allowed\n rounded-md\n transition-colors\n ",
78
- children: c ? "Refreshing..." : "Refresh"
79
+ children: l ? u("bigconsole.dataSinks.refreshDialog.refreshingButton", "Refreshing...") : u("bigconsole.dataSinks.refreshDialog.refreshButton", "Refresh")
79
80
  })]
80
81
  })
81
82
  ]
@@ -83,6 +84,6 @@ var a = e(function({ dataSink: e, isOpen: a, onClose: o, onConfirm: s, isRefresh
83
84
  }) : null;
84
85
  });
85
86
  //#endregion
86
- export { a as default };
87
+ export { o as default };
87
88
 
88
89
  //# sourceMappingURL=DataSinkRefreshDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataSinkRefreshDialog.js","names":[],"sources":["../../../../src/bigconsole/components/datasink/DataSinkRefreshDialog.tsx"],"sourcesContent":["/**\n * DataSink Refresh Dialog\n *\n * Dialog for confirming DataSink refresh with force option.\n */\n\nimport { memo, useState, useCallback } from 'react';\nimport type { DataSink } from '../../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface DataSinkRefreshDialogProps {\n /** DataSink to refresh */\n dataSink: DataSink;\n /** Whether dialog is open */\n isOpen: boolean;\n /** Callback when dialog is closed */\n onClose: () => void;\n /** Callback when refresh is confirmed (with force flag) */\n onConfirm: (force: boolean) => void;\n /** Whether refresh is in progress */\n isRefreshing?: boolean;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const DataSinkRefreshDialog = memo(function DataSinkRefreshDialog({\n dataSink,\n isOpen,\n onClose,\n onConfirm,\n isRefreshing = false,\n}: DataSinkRefreshDialogProps) {\n const [forceRefresh, setForceRefresh] = useState(false);\n\n // Handle backdrop click\n const handleBackdropClick = useCallback(\n (e: React.MouseEvent) => {\n if (e.target === e.currentTarget && !isRefreshing) {\n onClose();\n }\n },\n [isRefreshing, onClose]\n );\n\n // Format date\n const formatDate = (dateString: string) => {\n return new Date(dateString).toLocaleString();\n };\n\n // Handle confirm\n const handleConfirm = useCallback(() => {\n onConfirm(forceRefresh);\n }, [onConfirm, forceRefresh]);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50\"\n onClick={handleBackdropClick}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"refresh-dialog-title\"\n >\n <div className=\"bg-bg-surface border border-border-default rounded-lg shadow-xl max-w-md w-full\">\n {/* Header */}\n <div className=\"p-6 border-b border-border-default\">\n <h2 id=\"refresh-dialog-title\" className=\"text-lg font-semibold text-text-primary\">\n Refresh DataSink\n </h2>\n </div>\n\n {/* Content */}\n <div className=\"p-6\">\n {/* DataSink info */}\n <div className=\"bg-bg-sunken p-3 rounded-md mb-4\">\n <p className=\"text-sm font-medium text-text-primary\">{dataSink.name || 'Untitled DataSink'}</p>\n <p className=\"text-xs text-text-secondary mt-1 font-mono\">{dataSink.key}</p>\n {dataSink.lastRefreshedAt && (\n <p className=\"text-xs text-text-secondary mt-2\">Last refreshed: {formatDate(dataSink.lastRefreshedAt)}</p>\n )}\n </div>\n\n {/* Force refresh option */}\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={forceRefresh}\n onChange={(e) => setForceRefresh(e.target.checked)}\n className=\"w-4 h-4 text-action-primary-bg focus:ring-action-primary-bg rounded\"\n />\n <span className=\"text-sm text-text-primary\">Force refresh (bypass cache)</span>\n </label>\n <p className=\"mt-2 text-xs text-text-secondary\">\n Force refresh will re-fetch all data from the source, ignoring any cached values.\n </p>\n </div>\n\n {/* Footer */}\n <div className=\"p-6 border-t border-border-default flex items-center justify-end gap-3\">\n <button\n type=\"button\"\n onClick={onClose}\n disabled={isRefreshing}\n className={`\n px-4 py-2\n text-sm font-medium\n text-text-primary\n bg-bg-sunken\n hover:bg-border-default\n disabled:opacity-50 disabled:cursor-not-allowed\n rounded-md\n transition-colors\n `}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n onClick={handleConfirm}\n disabled={isRefreshing}\n className={`\n px-4 py-2\n text-sm font-medium\n text-action-primary-fg\n bg-action-primary-bg\n hover:bg-action-primary-bgHover\n disabled:opacity-50 disabled:cursor-not-allowed\n rounded-md\n transition-colors\n `}\n >\n {isRefreshing ? 'Refreshing...' : 'Refresh'}\n </button>\n </div>\n </div>\n </div>\n );\n});\n\nexport default DataSinkRefreshDialog;\n"],"mappings":";;;AA8BA,IAAa,IAAwB,EAAK,SAA+B,EACvE,aACA,WACA,YACA,cACA,kBAAe,MACc;CAC7B,IAAM,CAAC,GAAc,KAAmB,EAAS,GAAM,EAGjD,IAAsB,GACzB,MAAwB;AACvB,EAAI,EAAE,WAAW,EAAE,iBAAiB,CAAC,KACnC,GAAS;IAGb,CAAC,GAAc,EAAQ,CACxB,EAGK,KAAc,MACX,IAAI,KAAK,EAAW,CAAC,gBAAgB,EAIxC,IAAgB,QAAkB;AACtC,IAAU,EAAa;IACtB,CAAC,GAAW,EAAa,CAAC;AAM7B,QAJK,IAKH,kBAAC,OAAD;EACE,WAAU;EACV,SAAS;EACT,MAAK;EACL,cAAW;EACX,mBAAgB;YAEhB,kBAAC,OAAD;GAAK,WAAU;aAAf;IAEE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,MAAD;MAAI,IAAG;MAAuB,WAAU;gBAA0C;MAE7E,CAAA;KACD,CAAA;IAGN,kBAAC,OAAD;KAAK,WAAU;eAAf;MAEE,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACE,kBAAC,KAAD;SAAG,WAAU;mBAAyC,EAAS,QAAQ;SAAwB,CAAA;QAC/F,kBAAC,KAAD;SAAG,WAAU;mBAA8C,EAAS;SAAQ,CAAA;QAC3E,EAAS,mBACR,kBAAC,KAAD;SAAG,WAAU;mBAAb,CAAgD,oBAAiB,EAAW,EAAS,gBAAgB,CAAK;;QAExG;;MAGN,kBAAC,SAAD;OAAO,WAAU;iBAAjB,CACE,kBAAC,SAAD;QACE,MAAK;QACL,SAAS;QACT,WAAW,MAAM,EAAgB,EAAE,OAAO,QAAQ;QAClD,WAAU;QACV,CAAA,EACF,kBAAC,QAAD;QAAM,WAAU;kBAA4B;QAAmC,CAAA,CACzE;;MACR,kBAAC,KAAD;OAAG,WAAU;iBAAmC;OAE5C,CAAA;MACA;;IAGN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,UAAD;MACE,MAAK;MACL,SAAS;MACT,UAAU;MACV,WAAW;gBAUZ;MAEQ,CAAA,EACT,kBAAC,UAAD;MACE,MAAK;MACL,SAAS;MACT,UAAU;MACV,WAAW;gBAWV,IAAe,kBAAkB;MAC3B,CAAA,CACL;;IACF;;EACF,CAAA,GAnFC;EAqFT"}
1
+ {"version":3,"file":"DataSinkRefreshDialog.js","names":[],"sources":["../../../../src/bigconsole/components/datasink/DataSinkRefreshDialog.tsx"],"sourcesContent":["/**\n * DataSink Refresh Dialog\n *\n * Dialog for confirming DataSink refresh with force option.\n */\n\nimport { memo, useState, useCallback } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport type { DataSink } from '../../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface DataSinkRefreshDialogProps {\n /** DataSink to refresh */\n dataSink: DataSink;\n /** Whether dialog is open */\n isOpen: boolean;\n /** Callback when dialog is closed */\n onClose: () => void;\n /** Callback when refresh is confirmed (with force flag) */\n onConfirm: (force: boolean) => void;\n /** Whether refresh is in progress */\n isRefreshing?: boolean;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const DataSinkRefreshDialog = memo(function DataSinkRefreshDialog({\n dataSink,\n isOpen,\n onClose,\n onConfirm,\n isRefreshing = false,\n}: DataSinkRefreshDialogProps) {\n const { t } = useI18n();\n const [forceRefresh, setForceRefresh] = useState(false);\n\n // Handle backdrop click\n const handleBackdropClick = useCallback(\n (e: React.MouseEvent) => {\n if (e.target === e.currentTarget && !isRefreshing) {\n onClose();\n }\n },\n [isRefreshing, onClose]\n );\n\n // Format date\n const formatDate = (dateString: string) => {\n return new Date(dateString).toLocaleString();\n };\n\n // Handle confirm\n const handleConfirm = useCallback(() => {\n onConfirm(forceRefresh);\n }, [onConfirm, forceRefresh]);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50\"\n onClick={handleBackdropClick}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"refresh-dialog-title\"\n >\n <div className=\"bg-bg-surface border border-border-default rounded-lg shadow-xl max-w-md w-full\">\n {/* Header */}\n <div className=\"p-6 border-b border-border-default\">\n <h2 id=\"refresh-dialog-title\" className=\"text-lg font-semibold text-text-primary\">\n {t('bigconsole.dataSinks.refreshDialog.title', 'Refresh DataSink')}\n </h2>\n </div>\n\n {/* Content */}\n <div className=\"p-6\">\n {/* DataSink info */}\n <div className=\"bg-bg-sunken p-3 rounded-md mb-4\">\n <p className=\"text-sm font-medium text-text-primary\">\n {dataSink.name || t('bigconsole.dataSinks.refreshDialog.untitledName', 'Untitled DataSink')}\n </p>\n <p className=\"text-xs text-text-secondary mt-1 font-mono\">{dataSink.key}</p>\n {dataSink.lastRefreshedAt && (\n <p className=\"text-xs text-text-secondary mt-2\">\n {t('bigconsole.dataSinks.refreshDialog.lastRefreshed', 'Last refreshed: {{date}}', {\n date: formatDate(dataSink.lastRefreshedAt),\n })}\n </p>\n )}\n </div>\n\n {/* Force refresh option */}\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={forceRefresh}\n onChange={(e) => setForceRefresh(e.target.checked)}\n className=\"w-4 h-4 text-action-primary-bg focus:ring-action-primary-bg rounded\"\n />\n <span className=\"text-sm text-text-primary\">\n {t('bigconsole.dataSinks.refreshDialog.forceRefreshLabel', 'Force refresh (bypass cache)')}\n </span>\n </label>\n <p className=\"mt-2 text-xs text-text-secondary\">\n {t(\n 'bigconsole.dataSinks.refreshDialog.forceRefreshDescription',\n 'Force refresh will re-fetch all data from the source, ignoring any cached values.'\n )}\n </p>\n </div>\n\n {/* Footer */}\n <div className=\"p-6 border-t border-border-default flex items-center justify-end gap-3\">\n <button\n type=\"button\"\n onClick={onClose}\n disabled={isRefreshing}\n className={`\n px-4 py-2\n text-sm font-medium\n text-text-primary\n bg-bg-sunken\n hover:bg-border-default\n disabled:opacity-50 disabled:cursor-not-allowed\n rounded-md\n transition-colors\n `}\n >\n {t('bigconsole.dataSinks.refreshDialog.cancelButton', 'Cancel')}\n </button>\n <button\n type=\"button\"\n onClick={handleConfirm}\n disabled={isRefreshing}\n className={`\n px-4 py-2\n text-sm font-medium\n text-action-primary-fg\n bg-action-primary-bg\n hover:bg-action-primary-bgHover\n disabled:opacity-50 disabled:cursor-not-allowed\n rounded-md\n transition-colors\n `}\n >\n {isRefreshing\n ? t('bigconsole.dataSinks.refreshDialog.refreshingButton', 'Refreshing...')\n : t('bigconsole.dataSinks.refreshDialog.refreshButton', 'Refresh')}\n </button>\n </div>\n </div>\n </div>\n );\n});\n\nexport default DataSinkRefreshDialog;\n"],"mappings":";;;;AA+BA,IAAa,IAAwB,EAAK,SAA+B,EACvE,aACA,WACA,YACA,cACA,kBAAe,MACc;CAC7B,IAAM,EAAE,SAAM,GAAS,EACjB,CAAC,GAAc,KAAmB,EAAS,GAAM,EAGjD,IAAsB,GACzB,MAAwB;AACvB,EAAI,EAAE,WAAW,EAAE,iBAAiB,CAAC,KACnC,GAAS;IAGb,CAAC,GAAc,EAAQ,CACxB,EAGK,KAAc,MACX,IAAI,KAAK,EAAW,CAAC,gBAAgB,EAIxC,IAAgB,QAAkB;AACtC,IAAU,EAAa;IACtB,CAAC,GAAW,EAAa,CAAC;AAM7B,QAJK,IAKH,kBAAC,OAAD;EACE,WAAU;EACV,SAAS;EACT,MAAK;EACL,cAAW;EACX,mBAAgB;YAEhB,kBAAC,OAAD;GAAK,WAAU;aAAf;IAEE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,MAAD;MAAI,IAAG;MAAuB,WAAU;gBACrC,EAAE,4CAA4C,mBAAmB;MAC/D,CAAA;KACD,CAAA;IAGN,kBAAC,OAAD;KAAK,WAAU;eAAf;MAEE,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACE,kBAAC,KAAD;SAAG,WAAU;mBACV,EAAS,QAAQ,EAAE,mDAAmD,oBAAoB;SACzF,CAAA;QACJ,kBAAC,KAAD;SAAG,WAAU;mBAA8C,EAAS;SAAQ,CAAA;QAC3E,EAAS,mBACR,kBAAC,KAAD;SAAG,WAAU;mBACV,EAAE,oDAAoD,4BAA4B,EACjF,MAAM,EAAW,EAAS,gBAAgB,EAC3C,CAAC;SACA,CAAA;QAEF;;MAGN,kBAAC,SAAD;OAAO,WAAU;iBAAjB,CACE,kBAAC,SAAD;QACE,MAAK;QACL,SAAS;QACT,WAAW,MAAM,EAAgB,EAAE,OAAO,QAAQ;QAClD,WAAU;QACV,CAAA,EACF,kBAAC,QAAD;QAAM,WAAU;kBACb,EAAE,wDAAwD,+BAA+B;QACrF,CAAA,CACD;;MACR,kBAAC,KAAD;OAAG,WAAU;iBACV,EACC,8DACA,oFACD;OACC,CAAA;MACA;;IAGN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,UAAD;MACE,MAAK;MACL,SAAS;MACT,UAAU;MACV,WAAW;gBAWV,EAAE,mDAAmD,SAAS;MACxD,CAAA,EACT,kBAAC,UAAD;MACE,MAAK;MACL,SAAS;MACT,UAAU;MACV,WAAW;gBAWV,IACG,EAAE,uDAAuD,gBAAgB,GACzE,EAAE,oDAAoD,UAAU;MAC7D,CAAA,CACL;;IACF;;EACF,CAAA,GAhGC;EAkGT"}