@burdenoff/fluidgrids-fe-sdk 2026.1113.4 → 2026.1113.6

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 (61) hide show
  1. package/dist/{AiStudioPage-DmgLQG62.js → AiStudioPage-DzvEkuoS.js} +6 -6
  2. package/dist/{ApprovalInboxPage-BsJX4osU.js → ApprovalInboxPage-CbkmOXaq.js} +9 -9
  3. package/dist/{DataSinkDashboardPage-iBalc66y.js → DataSinkDashboardPage-DYuBqD2Y.js} +15 -15
  4. package/dist/{DataTablesPage-BBvABuxE.js → DataTablesPage-DR6BesNp.js} +18 -18
  5. package/dist/{Disclosure-DQiUKrqd.js → Disclosure-CsxDspR7.js} +7 -3
  6. package/dist/{ExecutionDetailPage-D1E_Rf3U.js → ExecutionDetailPage-D40dK9iB.js} +133 -133
  7. package/dist/{ExecutionsListPage-LsqVMwck.js → ExecutionsListPage-C-dujSS3.js} +141 -107
  8. package/dist/{FailureTriagePanel-CM-vmvbA.js → FailureTriagePanel-DA91XKVj.js} +3 -3
  9. package/dist/{FluidGridsProvider-BgP5c-hH.js → FluidGridsProvider-gB2POEu6.js} +1 -1
  10. package/dist/{HistoryPage-BTAkQ7O1.js → HistoryPage-8lQ6xf5Q.js} +12 -12
  11. package/dist/{InsightsPage-CVSoyuat.js → InsightsPage-YC1Bpqiz.js} +30 -30
  12. package/dist/{NodesPage-C5Dq-ru-.js → NodesPage-DeBc3zix.js} +10 -10
  13. package/dist/{PaidTemplateConfirm-DfFrr1pk.js → PaidTemplateConfirm-BadoJJPx.js} +1 -1
  14. package/dist/{QuotaExhaustedDialog-BHZm4tQy.js → QuotaExhaustedDialog-BBK3aX_0.js} +1 -1
  15. package/dist/{RunActionsMenu-BE_1r3bF.js → RunActionsMenu-BZY4NreS.js} +8 -6
  16. package/dist/{RunnersPage-DHeuUDil.js → RunnersPage-BXODCbq0.js} +2 -2
  17. package/dist/{SettingsPage-DPWog4BR.js → SettingsPage-BfBa-qSk.js} +72 -72
  18. package/dist/{TaskQueuesPage-BwnNad_J.js → TaskQueuesPage-DsGNGmGN.js} +15 -15
  19. package/dist/{TechnicalDetails-D4xGy201.js → TechnicalDetails-r5JXr1jZ.js} +1 -1
  20. package/dist/{TemplateCard-trfaDJLe.js → TemplateCard-lKGodHU8.js} +2 -2
  21. package/dist/{TemplatePreview-BuEMVZiI.js → TemplatePreview-CwJfGqoH.js} +5 -5
  22. package/dist/{TemplatesPage-UISz_6vU.js → TemplatesPage-mRzYPtOC.js} +20 -20
  23. package/dist/{VariablesPage-CgUBKhAe.js → VariablesPage-8yuyDzCH.js} +8 -8
  24. package/dist/{WorkflowBuilder-Cmj59UU-.js → WorkflowBuilder-DKqz8W6n.js} +3 -3
  25. package/dist/{WorkflowBuilder-nnSlI7Fd.js → WorkflowBuilder-DtSOvYST.js} +6 -6
  26. package/dist/{WorkflowProposalCard-zCdUpCk8.js → WorkflowProposalCard-SmRv_Egf.js} +1 -1
  27. package/dist/{WorkflowSearchRedirect-pEIU2nvw.js → WorkflowSearchRedirect-mX-YNhkj.js} +1 -1
  28. package/dist/{WorkflowsList-B6ASopzn.js → WorkflowsList-DBKQLEUU.js} +7 -7
  29. package/dist/{agentTools-7CFfwySg.js → agentTools-Dle04WMj.js} +1 -1
  30. package/dist/{api-BqA-f-AD.js → api-CEnNq15C.js} +1 -1
  31. package/dist/{api-BZVyX5d2.js → api-DKfMt0IX.js} +1 -1
  32. package/dist/{app-BJUvugPM.js → app-BIsCEL65.js} +5 -5
  33. package/dist/{canvasNoteTools-BikeF-pN.js → canvasNoteTools-Bror30X8.js} +1 -1
  34. package/dist/executions.js +2 -2
  35. package/dist/{flow-builder-CksAvhgV.js → flow-builder-CErj7Fgi.js} +21 -21
  36. package/dist/history.js +1 -1
  37. package/dist/index.js +72 -72
  38. package/dist/{logs-panel-DtG93ocy.js → logs-panel-2L4TLGcG.js} +10 -10
  39. package/dist/{node-detail-view-BgmxkGJe.js → node-detail-view-BqGpYHEE.js} +6 -6
  40. package/dist/{node-editor-tab-body-2Y-lqY4_.js → node-editor-tab-body-f2EIl5lh.js} +2 -2
  41. package/dist/nodes.js +1 -1
  42. package/dist/observability.js +2 -2
  43. package/dist/{popover-DL7fSPgH.js → popover-3Vs4f1Uy.js} +2 -2
  44. package/dist/{quick-config-panel-nmIRDTFB.js → quick-config-panel-Aja-lh3W.js} +3 -3
  45. package/dist/{schedule-panel-Bk5MJumG.js → schedule-panel-DCzLeJvi.js} +6 -6
  46. package/dist/settings.js +1 -1
  47. package/dist/{shared-Ctl9ZHo1.js → shared-C0LCTtyh.js} +3 -3
  48. package/dist/{sidebar-node-editor-BnUjER8A.js → sidebar-node-editor-CWdejdLi.js} +3 -3
  49. package/dist/templates.js +2 -2
  50. package/dist/{useAgentDefinitions-BmyWUoyo.js → useAgentDefinitions-DoMEv0kS.js} +1 -1
  51. package/dist/{useDurableParity-AowXKgBZ.js → useDurableParity-9mQYNpiP.js} +1 -1
  52. package/dist/{useExecutions-BemEN_Zb.js → useExecutions-BvldyVgF.js} +1 -1
  53. package/dist/{useGlobalStoreClient-BmjWfAjc.js → useGlobalStoreClient-CpTRykJx.js} +1 -1
  54. package/dist/{useObservability-BGrwZS5X.js → useObservability-Cps9Y9a3.js} +1 -1
  55. package/dist/{useRunHistory-GzyLco45.js → useRunHistory-DoxQsQIm.js} +9 -9
  56. package/dist/{useWorkflowCodeExport-ej7y3Gi3.js → useWorkflowCodeExport-BLl0hv2J.js} +1 -1
  57. package/dist/{useWorkflows-DwDzP-AD.js → useWorkflows-Z4M64JlD.js} +1 -1
  58. package/dist/workflow-builder.js +4 -4
  59. package/dist/workflow-pages.js +19 -19
  60. package/dist/workflows-list.js +1 -1
  61. package/package.json +1 -1
@@ -1,26 +1,26 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
3
  import { g as useExecutionsStore, h as DEFAULT_EXECUTIONS_FILTER } from "./config-X97zrIvn.js";
4
- import { b as validateDateRange, c as EMPTY_SEARCH_FILTER, d as searchFilterConflicts, i as useExecutionStats, l as OPERATORS_BY_TYPE, o as useExecutionsWithStore, r as useExecutionActions, t as useAutoRefresh, u as buildSearchAttributeFilter } from "./useExecutions-BemEN_Zb.js";
4
+ import { b as validateDateRange, c as EMPTY_SEARCH_FILTER, d as searchFilterConflicts, i as useExecutionStats, l as OPERATORS_BY_TYPE, o as useExecutionsWithStore, r as useExecutionActions, t as useAutoRefresh, u as buildSearchAttributeFilter } from "./useExecutions-BvldyVgF.js";
5
5
  import { m as usePhaseCFlags, u as useDurableParityEnabled } from "./feature-flags-B_b8PJ6Z.js";
6
6
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
7
7
  import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
8
8
  import { t as executionsControls } from "./pageControlSpecs-DZJ9K37m.js";
9
9
  import { t as TagFilterSelect } from "./TagFilterSelect-CAShgvbS.js";
10
10
  import { n as useNavigationV2 } from "./useNavigationV2-C2WeqN7d.js";
11
- import { a as useRunStatusCounts, c as errorAdvice, f as runStatusLabels, o as ConfirmStopRunDialog, p as RUN_STATUS_CONFIG, s as ADVICE_ERROR_TYPES, u as ExecutionStatusBadge } from "./useDurableParity-AowXKgBZ.js";
12
- import { t as Disclosure } from "./Disclosure-DQiUKrqd.js";
11
+ import { a as useRunStatusCounts, c as errorAdvice, f as runStatusLabels, o as ConfirmStopRunDialog, p as RUN_STATUS_CONFIG, s as ADVICE_ERROR_TYPES, u as ExecutionStatusBadge } from "./useDurableParity-9mQYNpiP.js";
12
+ import { t as Disclosure } from "./Disclosure-CsxDspR7.js";
13
13
  import { n as formatRunVersion } from "./run-display-BycKYSU0.js";
14
- import { Yt as formatElapsedMs, Zt as runDurationMs } from "./FluidGridsProvider-BgP5c-hH.js";
14
+ import { Yt as formatElapsedMs, Zt as runDurationMs } from "./FluidGridsProvider-gB2POEu6.js";
15
15
  import { r as useRunHumanRequests } from "./useHumanRequests-DwG2tQ3f.js";
16
16
  import { n as runListLinkKey, t as runListFilterFromSearch } from "./run-list-links-DZ8Q5l35.js";
17
- import { t as TechnicalDetails } from "./TechnicalDetails-D4xGy201.js";
18
- import { t as RunActionsMenu } from "./RunActionsMenu-BE_1r3bF.js";
19
- import { h as useWorkflowDefinitions } from "./useWorkflows-DwDzP-AD.js";
17
+ import { t as TechnicalDetails } from "./TechnicalDetails-r5JXr1jZ.js";
18
+ import { t as RunActionsMenu } from "./RunActionsMenu-BZY4NreS.js";
19
+ import { h as useWorkflowDefinitions } from "./useWorkflows-Z4M64JlD.js";
20
20
  import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-JxkBpOeb.js";
21
21
  import { s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
22
- import { C as jsonArg, F as startBatchOperation, I as startBatchTerminate, P as startBatchExport, m as fetchBatchOperations, n as cancelBatchOperation, p as fetchBatchOperation, x as fetchSearchAttributes } from "./api-BqA-f-AD.js";
23
- import { a as RUN_CONTROL_DIALOG_STYLE, c as parseJsonInput, i as NativeSelect, o as StatusPill, r as JsonField, t as FieldError, u as useResource } from "./shared-Ctl9ZHo1.js";
22
+ import { C as jsonArg, F as startBatchOperation, I as startBatchTerminate, P as startBatchExport, m as fetchBatchOperations, n as cancelBatchOperation, p as fetchBatchOperation, x as fetchSearchAttributes } from "./api-CEnNq15C.js";
23
+ import { a as RUN_CONTROL_DIALOG_STYLE, c as parseJsonInput, i as NativeSelect, o as StatusPill, r as JsonField, t as FieldError, u as useResource } from "./shared-C0LCTtyh.js";
24
24
  import { t as describeOperationError } from "./errors-xPZ-IbQd.js";
25
25
  import { n as getFluidGridsClient } from "./client-Ctl4jmY3.js";
26
26
  import { bI as WorkflowResetType, eI as WorkflowBatchOperationType } from "./graphql-types-C5Tr6508.js";
@@ -355,7 +355,7 @@ function FailedNodeTypeChip({ nodeType, onClear }) {
355
355
  })]
356
356
  });
357
357
  }
358
- function ExecutionFilters({ workflows = [], onRefresh }) {
358
+ function ExecutionFilters({ workflows = [], onRefresh, moreFilters, moreFiltersActive = 0, onClearMoreFilters }) {
359
359
  const tr = useTr();
360
360
  const v2 = useNavigationV2();
361
361
  const statusOptions = useMemo(() => [
@@ -502,8 +502,13 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
502
502
  });
503
503
  }, [setDateRange]);
504
504
  const parityEnabled = useDurableParityEnabled();
505
- const activeFiltersCount = countActiveFilters(filter, parityEnabled);
506
- const hasMoreFiltersSet = filter.tagId !== "" || filter.triggerType !== "all" || filter.errorType !== "all" || filter.nodeId !== "" || filter.failedNodeType !== "" || filter.durationMinSeconds !== null || filter.durationMaxSeconds !== null || filter.dateRange.preset === "custom";
505
+ const pageFiltersActive = v2 ? moreFiltersActive : 0;
506
+ const activeFiltersCount = countActiveFilters(filter, parityEnabled) + pageFiltersActive;
507
+ const hasMoreFiltersSet = filter.tagId !== "" || filter.triggerType !== "all" || filter.errorType !== "all" || filter.nodeId !== "" || filter.failedNodeType !== "" || filter.durationMinSeconds !== null || filter.durationMaxSeconds !== null || filter.dateRange.preset === "custom" || parityEnabled && filter.workflowId.trim() !== "" || pageFiltersActive > 0;
508
+ const clearFilters = () => {
509
+ resetFilters();
510
+ if (v2) onClearMoreFilters?.();
511
+ };
507
512
  const assistantControls = useMemo(() => executionsControls({
508
513
  page: tr("fluidgrids.executions.executionsList.title", "Executions"),
509
514
  search: setSearchQuery,
@@ -554,7 +559,7 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
554
559
  placeholder: tr("fluidgrids.executions.executionFilters.searchPlaceholder", "Search by workflow name or run ID..."),
555
560
  value: filter.search,
556
561
  onChange: (e) => setSearchQuery(e.target.value),
557
- className: "w-full pl-[3.25rem] pr-4 py-2 bg-background-secondary border border-border-secondary rounded-lg text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-action-primary-bg focus:border-transparent"
562
+ className: "w-full pl-[3.25rem] pr-4 py-2 bg-surface border border-border-default rounded-lg text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-action-primary-bg focus:border-transparent"
558
563
  }),
559
564
  filter.search && /* @__PURE__ */ jsx("button", {
560
565
  onClick: () => setSearchQuery(""),
@@ -617,6 +622,11 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
617
622
  closedLabel: tr("fluidgrids.executions.executionFilters.moreFilters", "More filters"),
618
623
  openLabel: tr("fluidgrids.executions.executionFilters.fewerFilters", "Fewer filters"),
619
624
  defaultOpen: hasMoreFiltersSet,
625
+ keptContent: moreFilters === void 0 ? void 0 : /* @__PURE__ */ jsx("div", {
626
+ className: "mt-3 flex flex-col gap-3",
627
+ "data-testid": "runs-more-filters-page-rows",
628
+ children: moreFilters
629
+ }),
620
630
  "data-testid": "runs-more-filters",
621
631
  children: /* @__PURE__ */ jsxs("div", {
622
632
  className: "grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-5",
@@ -707,7 +717,7 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
707
717
  /* @__PURE__ */ jsx("button", {
708
718
  type: "button",
709
719
  onClick: () => handleDatePresetChange("custom"),
710
- className: "px-3 py-2 border border-border-default rounded-lg text-text-primary text-left hover:bg-background-tertiary",
720
+ className: "px-3 py-2 border border-border-default rounded-lg text-text-primary text-left hover:bg-surface-sunken",
711
721
  "data-testid": "runs-custom-range",
712
722
  children: tr("fluidgrids.executions.executionFilters.dateCustomRange", "Custom Range")
713
723
  }),
@@ -717,7 +727,7 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
717
727
  type: "checkbox",
718
728
  checked: autoRefresh,
719
729
  onChange: (e) => setAutoRefresh(e.target.checked),
720
- className: "w-4 h-4 rounded border-border-secondary text-action-primary-bg focus:ring-action-primary-bg"
730
+ className: "w-4 h-4 rounded border-border-default text-action-primary-bg focus:ring-action-primary-bg"
721
731
  }), /* @__PURE__ */ jsx("span", {
722
732
  className: "text-sm text-text-secondary",
723
733
  children: tr("fluidgrids.executions.executionFilters.liveUpdates", "Live updates")
@@ -811,7 +821,7 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
811
821
  showCustomDate && /* @__PURE__ */ jsxs("div", {
812
822
  className: "space-y-2",
813
823
  children: [/* @__PURE__ */ jsxs("div", {
814
- className: "flex flex-wrap gap-3 items-center p-3 bg-background-secondary rounded-lg border border-border-secondary",
824
+ className: "flex flex-wrap gap-3 items-center p-3 bg-surface rounded-lg border border-border-default",
815
825
  children: [
816
826
  /* @__PURE__ */ jsx("label", {
817
827
  className: "text-sm text-text-secondary",
@@ -825,7 +835,7 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
825
835
  start: e.target.value ? new Date(e.target.value) : null,
826
836
  preset: "custom"
827
837
  }),
828
- className: "px-3 py-1.5 bg-background-primary border border-border-secondary rounded text-text-primary text-sm"
838
+ className: "px-3 py-1.5 bg-surface-canvas border border-border-default rounded text-text-primary text-sm"
829
839
  }),
830
840
  /* @__PURE__ */ jsx("label", {
831
841
  className: "text-sm text-text-secondary",
@@ -839,7 +849,7 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
839
849
  end: e.target.value ? new Date(e.target.value) : null,
840
850
  preset: "custom"
841
851
  }),
842
- className: "px-3 py-1.5 bg-background-primary border border-border-secondary rounded text-text-primary text-sm"
852
+ className: "px-3 py-1.5 bg-surface-canvas border border-border-default rounded text-text-primary text-sm"
843
853
  }),
844
854
  /* @__PURE__ */ jsx("button", {
845
855
  onClick: () => setShowCustomDate(false),
@@ -866,7 +876,7 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
866
876
  type: "checkbox",
867
877
  checked: autoRefresh,
868
878
  onChange: (e) => setAutoRefresh(e.target.checked),
869
- className: "w-4 h-4 rounded border-border-secondary text-action-primary-bg focus:ring-action-primary-bg"
879
+ className: "w-4 h-4 rounded border-border-default text-action-primary-bg focus:ring-action-primary-bg"
870
880
  }), /* @__PURE__ */ jsx("span", {
871
881
  className: "text-sm text-text-secondary",
872
882
  children: tr("fluidgrids.executions.executionFilters.autoRefresh", "Auto-refresh")
@@ -895,7 +905,7 @@ function ExecutionFilters({ workflows = [], onRefresh }) {
895
905
  }), activeFiltersCount > 0 && /* @__PURE__ */ jsxs(Button$1, {
896
906
  variant: "ghost",
897
907
  size: "sm",
898
- onClick: resetFilters,
908
+ onClick: clearFilters,
899
909
  className: "gap-1.5",
900
910
  children: [/* @__PURE__ */ jsx(Icon, {
901
911
  icon: "mdi:filter-remove",
@@ -914,8 +924,8 @@ function StatCard({ label, value, icon, color, trend, onClick }) {
914
924
  onClick,
915
925
  disabled: !onClick,
916
926
  className: `
917
- flex flex-col p-4 bg-background-secondary rounded-lg border border-border-secondary
918
- hover:border-border-primary transition-colors
927
+ flex flex-col p-4 bg-surface rounded-lg border border-border-default
928
+ hover:border-border-strong transition-colors
919
929
  ${onClick ? "cursor-pointer" : "cursor-default"}
920
930
  text-left w-full
921
931
  `,
@@ -951,7 +961,7 @@ function ExecutionStats({ stats, loading, scoped = false, onFilterByStatus }) {
951
961
  const v2 = useNavigationV2();
952
962
  if (loading) return /* @__PURE__ */ jsx("div", {
953
963
  className: "grid grid-cols-2 sm:grid-cols-4 lg:grid-cols-6 gap-4",
954
- children: [...Array(v2 ? 4 : 6)].map((_, i) => /* @__PURE__ */ jsx("div", { className: "h-24 bg-background-secondary rounded-lg border border-border-secondary animate-pulse" }, i))
964
+ children: [...Array(v2 ? 4 : 6)].map((_, i) => /* @__PURE__ */ jsx("div", { className: "h-24 bg-surface rounded-lg border border-border-default animate-pulse" }, i))
955
965
  });
956
966
  if (!stats) return null;
957
967
  const formatDuration = (seconds) => {
@@ -1189,13 +1199,13 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
1189
1199
  }));
1190
1200
  };
1191
1201
  if (loading && executions.length === 0) return /* @__PURE__ */ jsx("div", {
1192
- className: "bg-background-secondary rounded-lg border border-border-secondary overflow-hidden",
1202
+ className: "bg-surface rounded-lg border border-border-default overflow-hidden",
1193
1203
  children: /* @__PURE__ */ jsx("div", {
1194
1204
  className: "overflow-x-auto",
1195
1205
  children: /* @__PURE__ */ jsxs("table", {
1196
1206
  className: "w-full min-w-[800px]",
1197
1207
  children: [/* @__PURE__ */ jsx("thead", {
1198
- className: "bg-background-tertiary border-b border-border-secondary",
1208
+ className: "bg-surface-sunken border-b border-border-default",
1199
1209
  children: /* @__PURE__ */ jsxs("tr", { children: [
1200
1210
  /* @__PURE__ */ jsx("th", { className: "w-10 px-4 py-3" }),
1201
1211
  /* @__PURE__ */ jsx("th", {
@@ -1225,18 +1235,18 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
1225
1235
  /* @__PURE__ */ jsx("th", { className: "px-4 py-3" })
1226
1236
  ] })
1227
1237
  }), /* @__PURE__ */ jsx("tbody", { children: [...Array(5)].map((_, i) => /* @__PURE__ */ jsx("tr", {
1228
- className: "border-b border-border-secondary",
1238
+ className: "border-b border-border-default",
1229
1239
  children: /* @__PURE__ */ jsx("td", {
1230
1240
  colSpan: 8,
1231
1241
  className: "px-4 py-4",
1232
- children: /* @__PURE__ */ jsx("div", { className: "h-8 bg-background-tertiary rounded animate-pulse" })
1242
+ children: /* @__PURE__ */ jsx("div", { className: "h-8 bg-surface-sunken rounded animate-pulse" })
1233
1243
  })
1234
1244
  }, i)) })]
1235
1245
  })
1236
1246
  })
1237
1247
  });
1238
1248
  if (executions.length === 0) return /* @__PURE__ */ jsxs("div", {
1239
- className: "bg-background-secondary rounded-lg border border-border-secondary p-12 text-center",
1249
+ className: "bg-surface rounded-lg border border-border-default p-12 text-center",
1240
1250
  children: [
1241
1251
  /* @__PURE__ */ jsx(Icon, {
1242
1252
  icon: "mdi:play-box-outline",
@@ -1259,13 +1269,13 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
1259
1269
  ]
1260
1270
  });
1261
1271
  return /* @__PURE__ */ jsxs("div", {
1262
- className: "bg-background-secondary rounded-lg border border-border-secondary overflow-hidden",
1272
+ className: "bg-surface rounded-lg border border-border-default overflow-hidden",
1263
1273
  children: [/* @__PURE__ */ jsx("div", {
1264
1274
  className: "overflow-x-auto",
1265
1275
  children: /* @__PURE__ */ jsxs("table", {
1266
1276
  className: "w-full min-w-[800px]",
1267
1277
  children: [/* @__PURE__ */ jsx("thead", {
1268
- className: "bg-background-tertiary border-b border-border-secondary",
1278
+ className: "bg-surface-sunken border-b border-border-default",
1269
1279
  children: /* @__PURE__ */ jsxs("tr", { children: [
1270
1280
  /* @__PURE__ */ jsx("th", {
1271
1281
  className: "w-10 px-4 py-3",
@@ -1273,7 +1283,7 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
1273
1283
  type: "checkbox",
1274
1284
  checked: selection.allSelected,
1275
1285
  onChange: () => selectAll(allRunIds),
1276
- className: "w-4 h-4 rounded border-border-secondary"
1286
+ className: "w-4 h-4 rounded border-border-default"
1277
1287
  })
1278
1288
  }),
1279
1289
  /* @__PURE__ */ jsx("th", {
@@ -1303,13 +1313,13 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
1303
1313
  /* @__PURE__ */ jsx("th", { className: "px-4 py-3 w-32" })
1304
1314
  ] })
1305
1315
  }), /* @__PURE__ */ jsx("tbody", {
1306
- className: "divide-y divide-border-secondary",
1316
+ className: "divide-y divide-border-default",
1307
1317
  children: executions.map((execution) => {
1308
1318
  const isSelected = selection.runIds.includes(execution.id);
1309
1319
  const isExpanded = expandedRows.has(execution.id);
1310
1320
  return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("tr", {
1311
1321
  className: `
1312
- hover:bg-background-tertiary/50 cursor-pointer transition-colors
1322
+ hover:bg-surface-sunken/50 cursor-pointer transition-colors
1313
1323
  ${isSelected ? "bg-action-primary-bg/10" : ""}
1314
1324
  `,
1315
1325
  onClick: () => onRowClick?.(execution),
@@ -1321,7 +1331,7 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
1321
1331
  type: "checkbox",
1322
1332
  checked: isSelected,
1323
1333
  onChange: () => toggleSelectRun(execution.id),
1324
- className: "w-4 h-4 rounded border-border-secondary"
1334
+ className: "w-4 h-4 rounded border-border-default"
1325
1335
  })
1326
1336
  }),
1327
1337
  /* @__PURE__ */ jsx("td", {
@@ -1370,7 +1380,7 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
1370
1380
  children: /* @__PURE__ */ jsxs("div", {
1371
1381
  className: "flex items-center gap-2",
1372
1382
  children: [/* @__PURE__ */ jsx("div", {
1373
- className: "flex-1 h-2 bg-background-tertiary rounded-full overflow-hidden max-w-[100px]",
1383
+ className: "flex-1 h-2 bg-surface-sunken rounded-full overflow-hidden max-w-[100px]",
1374
1384
  children: /* @__PURE__ */ jsx("div", {
1375
1385
  className: `h-full transition-all ${execution.status === "FAILED" ? "bg-[var(--color-status-error-bg)]" : execution.status === "COMPLETED" ? "bg-[var(--color-status-success-bg)]" : "bg-[var(--color-status-info-bg)]"}`,
1376
1386
  style: { width: `${execution.progress}%` }
@@ -1396,7 +1406,7 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
1396
1406
  onClick: () => toggleRowExpanded(execution.id),
1397
1407
  "aria-expanded": isExpanded,
1398
1408
  "aria-label": isExpanded ? tr("fluidgrids.executions.executionTable.collapseRow", "Hide run details") : tr("fluidgrids.executions.executionTable.expandRow", "Show run details"),
1399
- className: "p-1.5 rounded hover:bg-background-tertiary text-text-secondary",
1409
+ className: "p-1.5 rounded hover:bg-surface-sunken text-text-secondary",
1400
1410
  children: /* @__PURE__ */ jsx(Icon, {
1401
1411
  icon: isExpanded ? "mdi:chevron-up" : "mdi:chevron-down",
1402
1412
  width: 18
@@ -1408,7 +1418,7 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
1408
1418
  "data-agent": "confirm",
1409
1419
  type: "button",
1410
1420
  onClick: () => onAction?.(action.action, execution),
1411
- className: "p-1.5 rounded hover:bg-background-tertiary text-text-secondary",
1421
+ className: "p-1.5 rounded hover:bg-surface-sunken text-text-secondary",
1412
1422
  title: action.label,
1413
1423
  "aria-label": action.label,
1414
1424
  children: /* @__PURE__ */ jsx(Icon, {
@@ -1419,7 +1429,7 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
1419
1429
  }),
1420
1430
  /* @__PURE__ */ jsx("button", {
1421
1431
  onClick: () => navigate(`../runs/${execution.id}`),
1422
- className: "p-1.5 rounded hover:bg-background-tertiary text-text-secondary",
1432
+ className: "p-1.5 rounded hover:bg-surface-sunken text-text-secondary",
1423
1433
  title: tr("fluidgrids.executions.executionTable.viewDetails", "View Details"),
1424
1434
  "aria-label": tr("fluidgrids.executions.executionTable.viewDetails", "View Details"),
1425
1435
  children: /* @__PURE__ */ jsx(Icon, {
@@ -1433,7 +1443,7 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
1433
1443
  ]
1434
1444
  }, execution.id), isExpanded && /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", {
1435
1445
  colSpan: 8,
1436
- className: "px-4 py-4 bg-background-tertiary/30",
1446
+ className: "px-4 py-4 bg-surface-sunken/30",
1437
1447
  children: /* @__PURE__ */ jsxs("div", {
1438
1448
  className: "grid grid-cols-2 lg:grid-cols-4 gap-4",
1439
1449
  children: [
@@ -1467,7 +1477,7 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
1467
1477
  ]
1468
1478
  }),
1469
1479
  (execution.skippedNodes ?? 0) > 0 && /* @__PURE__ */ jsxs("span", {
1470
- className: "text-tertiary",
1480
+ className: "text-text-muted",
1471
1481
  children: [
1472
1482
  execution.skippedNodes,
1473
1483
  " ",
@@ -1500,7 +1510,7 @@ function ExecutionTable({ executions, workflowNames, loading, canExecute = true,
1500
1510
  })]
1501
1511
  })
1502
1512
  }), /* @__PURE__ */ jsx("div", {
1503
- className: "sm:hidden px-4 py-2 bg-background-tertiary border-t border-border-secondary text-xs text-text-secondary text-center",
1513
+ className: "sm:hidden px-4 py-2 bg-surface-sunken border-t border-border-default text-xs text-text-secondary text-center",
1504
1514
  children: tr("fluidgrids.executions.executionTable.swipeHint", "Swipe to see more columns")
1505
1515
  })]
1506
1516
  });
@@ -1561,17 +1571,17 @@ function ExecutionCards({ executions, workflowNames, loading, onCardClick, onAct
1561
1571
  if (loading) return /* @__PURE__ */ jsx("div", {
1562
1572
  className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",
1563
1573
  children: Array.from({ length: 6 }).map((_, i) => /* @__PURE__ */ jsxs("div", {
1564
- className: "rounded-lg border border-border-secondary bg-background-secondary p-4 animate-pulse",
1574
+ className: "rounded-lg border border-border-default bg-surface p-4 animate-pulse",
1565
1575
  children: [
1566
1576
  /* @__PURE__ */ jsxs("div", {
1567
1577
  className: "flex justify-between mb-3",
1568
- children: [/* @__PURE__ */ jsx("div", { className: "h-4 bg-background-tertiary rounded w-32" }), /* @__PURE__ */ jsx("div", { className: "h-5 bg-background-tertiary rounded-full w-20" })]
1578
+ children: [/* @__PURE__ */ jsx("div", { className: "h-4 bg-surface-sunken rounded w-32" }), /* @__PURE__ */ jsx("div", { className: "h-5 bg-surface-sunken rounded-full w-20" })]
1569
1579
  }),
1570
- /* @__PURE__ */ jsx("div", { className: "h-3 bg-background-tertiary rounded w-48 mb-2" }),
1571
- /* @__PURE__ */ jsx("div", { className: "h-2 bg-background-tertiary rounded w-full mb-3" }),
1580
+ /* @__PURE__ */ jsx("div", { className: "h-3 bg-surface-sunken rounded w-48 mb-2" }),
1581
+ /* @__PURE__ */ jsx("div", { className: "h-2 bg-surface-sunken rounded w-full mb-3" }),
1572
1582
  /* @__PURE__ */ jsxs("div", {
1573
1583
  className: "flex justify-between",
1574
- children: [/* @__PURE__ */ jsx("div", { className: "h-3 bg-background-tertiary rounded w-16" }), /* @__PURE__ */ jsx("div", { className: "h-3 bg-background-tertiary rounded w-24" })]
1584
+ children: [/* @__PURE__ */ jsx("div", { className: "h-3 bg-surface-sunken rounded w-16" }), /* @__PURE__ */ jsx("div", { className: "h-3 bg-surface-sunken rounded w-24" })]
1575
1585
  })
1576
1586
  ]
1577
1587
  }, i))
@@ -1601,8 +1611,8 @@ function ExecutionCards({ executions, workflowNames, loading, onCardClick, onAct
1601
1611
  return /* @__PURE__ */ jsxs("div", {
1602
1612
  onClick: () => onCardClick(execution),
1603
1613
  className: `
1604
- rounded-lg border bg-background-secondary p-4 cursor-pointer
1605
- transition-all duration-200 hover:shadow-md hover:border-border-primary
1614
+ rounded-lg border bg-surface p-4 cursor-pointer
1615
+ transition-all duration-200 hover:shadow-md hover:border-border-strong
1606
1616
  ${config.borderColor}
1607
1617
  `,
1608
1618
  children: [
@@ -1614,7 +1624,7 @@ function ExecutionCards({ executions, workflowNames, loading, onCardClick, onAct
1614
1624
  className: "text-sm font-semibold text-text-primary truncate",
1615
1625
  children: execution.workflow?.name || workflowNames?.[execution.workflowKey] || execution.workflowKey
1616
1626
  }), /* @__PURE__ */ jsx("p", {
1617
- className: "text-xs text-text-tertiary mt-0.5",
1627
+ className: "text-xs text-text-muted mt-0.5",
1618
1628
  children: formatRunVersion(execution.version)
1619
1629
  })]
1620
1630
  }), /* @__PURE__ */ jsx(ExecutionStatusBadge, {
@@ -1625,10 +1635,10 @@ function ExecutionCards({ executions, workflowNames, loading, onCardClick, onAct
1625
1635
  /* @__PURE__ */ jsxs("div", {
1626
1636
  className: "mb-3",
1627
1637
  children: [/* @__PURE__ */ jsxs("div", {
1628
- className: "flex justify-between text-xs text-text-tertiary mb-1",
1638
+ className: "flex justify-between text-xs text-text-muted mb-1",
1629
1639
  children: [/* @__PURE__ */ jsx("span", { children: tr("fluidgrids.executions.executionCards.progressLabel", "Progress") }), /* @__PURE__ */ jsxs("span", { children: [Math.round(execution.progress), "%"] })]
1630
1640
  }), /* @__PURE__ */ jsx("div", {
1631
- className: "h-1.5 bg-background-tertiary rounded-full overflow-hidden",
1641
+ className: "h-1.5 bg-surface-sunken rounded-full overflow-hidden",
1632
1642
  children: /* @__PURE__ */ jsx("div", {
1633
1643
  className: `h-full rounded-full transition-all duration-500 ${getProgressColor(execution.status)}`,
1634
1644
  style: { width: `${Math.min(execution.progress, 100)}%` }
@@ -1672,7 +1682,7 @@ function ExecutionCards({ executions, workflowNames, loading, onCardClick, onAct
1672
1682
  ]
1673
1683
  }),
1674
1684
  /* @__PURE__ */ jsxs("div", {
1675
- className: "flex items-center justify-between text-xs text-text-tertiary pt-2 border-t border-border-secondary",
1685
+ className: "flex items-center justify-between text-xs text-text-muted pt-2 border-t border-border-default",
1676
1686
  children: [/* @__PURE__ */ jsxs("span", {
1677
1687
  className: "flex items-center gap-1",
1678
1688
  children: [/* @__PURE__ */ jsx(Icon, {
@@ -1687,7 +1697,7 @@ function ExecutionCards({ executions, workflowNames, loading, onCardClick, onAct
1687
1697
  const actions = runQuickActions(execution.status, { resumeOffered });
1688
1698
  if (actions.length === 0) return null;
1689
1699
  return /* @__PURE__ */ jsx("div", {
1690
- className: "flex gap-1 mt-2 pt-2 border-t border-border-secondary",
1700
+ className: "flex gap-1 mt-2 pt-2 border-t border-border-default",
1691
1701
  children: actions.map((action) => {
1692
1702
  const { icon, label, hover } = CARD_ACTIONS(tr)[action];
1693
1703
  return /* @__PURE__ */ jsxs("button", {
@@ -1697,7 +1707,7 @@ function ExecutionCards({ executions, workflowNames, loading, onCardClick, onAct
1697
1707
  e.stopPropagation();
1698
1708
  onAction(action, execution);
1699
1709
  },
1700
- className: `flex items-center gap-1 text-xs px-2 py-1 rounded bg-background-tertiary text-text-secondary transition-colors ${hover}`,
1710
+ className: `flex items-center gap-1 text-xs px-2 py-1 rounded bg-surface-sunken text-text-secondary transition-colors ${hover}`,
1701
1711
  children: [
1702
1712
  /* @__PURE__ */ jsx(Icon, {
1703
1713
  icon,
@@ -1766,12 +1776,12 @@ function ExecutionTimeline({ executions, workflowNames, loading, onItemClick, on
1766
1776
  className: "space-y-6 pl-8",
1767
1777
  children: Array.from({ length: 4 }).map((_, i) => /* @__PURE__ */ jsxs("div", {
1768
1778
  className: "flex gap-4 animate-pulse",
1769
- children: [/* @__PURE__ */ jsx("div", { className: "w-3 h-3 rounded-full bg-background-tertiary mt-1.5 shrink-0" }), /* @__PURE__ */ jsxs("div", {
1779
+ children: [/* @__PURE__ */ jsx("div", { className: "w-3 h-3 rounded-full bg-surface-sunken mt-1.5 shrink-0" }), /* @__PURE__ */ jsxs("div", {
1770
1780
  className: "flex-1",
1771
1781
  children: [
1772
- /* @__PURE__ */ jsx("div", { className: "h-4 bg-background-tertiary rounded w-48 mb-2" }),
1773
- /* @__PURE__ */ jsx("div", { className: "h-3 bg-background-tertiary rounded w-32 mb-1" }),
1774
- /* @__PURE__ */ jsx("div", { className: "h-3 bg-background-tertiary rounded w-24" })
1782
+ /* @__PURE__ */ jsx("div", { className: "h-4 bg-surface-sunken rounded w-48 mb-2" }),
1783
+ /* @__PURE__ */ jsx("div", { className: "h-3 bg-surface-sunken rounded w-32 mb-1" }),
1784
+ /* @__PURE__ */ jsx("div", { className: "h-3 bg-surface-sunken rounded w-24" })
1775
1785
  ]
1776
1786
  })]
1777
1787
  }, i))
@@ -1803,15 +1813,15 @@ function ExecutionTimeline({ executions, workflowNames, loading, onItemClick, on
1803
1813
  /* @__PURE__ */ jsx(Icon, {
1804
1814
  icon: "mdi:calendar",
1805
1815
  width: 14,
1806
- className: "text-text-tertiary"
1816
+ className: "text-text-muted"
1807
1817
  }),
1808
1818
  /* @__PURE__ */ jsx("span", {
1809
- className: "text-xs font-semibold text-text-tertiary uppercase tracking-wider",
1819
+ className: "text-xs font-semibold text-text-muted uppercase tracking-wider",
1810
1820
  children: dateLabel
1811
1821
  }),
1812
- /* @__PURE__ */ jsx("div", { className: "flex-1 h-px bg-border-secondary" }),
1822
+ /* @__PURE__ */ jsx("div", { className: "flex-1 h-px bg-border-default" }),
1813
1823
  /* @__PURE__ */ jsxs("span", {
1814
- className: "text-xs text-text-tertiary",
1824
+ className: "text-xs text-text-muted",
1815
1825
  children: [
1816
1826
  dateExecutions.length,
1817
1827
  " ",
@@ -1821,7 +1831,7 @@ function ExecutionTimeline({ executions, workflowNames, loading, onItemClick, on
1821
1831
  ]
1822
1832
  }), /* @__PURE__ */ jsxs("div", {
1823
1833
  className: "relative ml-4",
1824
- children: [/* @__PURE__ */ jsx("div", { className: "absolute left-[5px] top-0 bottom-0 w-px bg-border-secondary" }), /* @__PURE__ */ jsx("div", {
1834
+ children: [/* @__PURE__ */ jsx("div", { className: "absolute left-[5px] top-0 bottom-0 w-px bg-border-default" }), /* @__PURE__ */ jsx("div", {
1825
1835
  className: "space-y-4",
1826
1836
  children: dateExecutions.map((execution, idx) => {
1827
1837
  const isLast = idx === dateExecutions.length - 1;
@@ -1831,11 +1841,11 @@ function ExecutionTimeline({ executions, workflowNames, loading, onItemClick, on
1831
1841
  className: "relative flex gap-4 cursor-pointer group",
1832
1842
  children: [/* @__PURE__ */ jsx("div", {
1833
1843
  className: "relative z-10 shrink-0 mt-1.5",
1834
- children: /* @__PURE__ */ jsx("div", { className: `w-[11px] h-[11px] rounded-full border-2 border-background-primary ${getStatusDotColor(execution.status)}` })
1844
+ children: /* @__PURE__ */ jsx("div", { className: `w-[11px] h-[11px] rounded-full border-2 border-surface-canvas ${getStatusDotColor(execution.status)}` })
1835
1845
  }), /* @__PURE__ */ jsxs("div", {
1836
1846
  className: `
1837
- flex-1 rounded-lg border border-border-secondary bg-background-secondary p-3
1838
- transition-all duration-200 group-hover:shadow-sm group-hover:border-border-primary
1847
+ flex-1 rounded-lg border border-border-default bg-surface p-3
1848
+ transition-all duration-200 group-hover:shadow-sm group-hover:border-border-strong
1839
1849
  ${isLast ? "" : "mb-0"}
1840
1850
  `,
1841
1851
  children: [/* @__PURE__ */ jsxs("div", {
@@ -1849,7 +1859,7 @@ function ExecutionTimeline({ executions, workflowNames, loading, onItemClick, on
1849
1859
  className: "text-sm font-semibold text-text-primary truncate",
1850
1860
  children: execution.workflow?.name || workflowNames?.[execution.workflowKey] || execution.workflowKey
1851
1861
  }), /* @__PURE__ */ jsx("span", {
1852
- className: "text-xs text-text-tertiary",
1862
+ className: "text-xs text-text-muted",
1853
1863
  children: formatRunVersion(execution.version)
1854
1864
  })]
1855
1865
  }),
@@ -1902,7 +1912,7 @@ function ExecutionTimeline({ executions, workflowNames, loading, onItemClick, on
1902
1912
  e.stopPropagation();
1903
1913
  onAction("cancel", execution);
1904
1914
  },
1905
- className: "p-1 rounded opacity-60 group-hover:opacity-100 focus-visible:opacity-100 hover:bg-status-error-bg-subtle text-text-tertiary hover:text-status-error-text transition-all",
1915
+ className: "p-1 rounded opacity-60 group-hover:opacity-100 focus-visible:opacity-100 hover:bg-status-error-bg-subtle text-text-muted hover:text-status-error-text transition-all",
1906
1916
  title: tr("fluidgrids.executions.executionTimeline.cancelTooltip", "Cancel execution"),
1907
1917
  "aria-label": tr("fluidgrids.executions.executionTimeline.cancelTooltip", "Cancel execution"),
1908
1918
  children: /* @__PURE__ */ jsx(Icon, {
@@ -1914,7 +1924,7 @@ function ExecutionTimeline({ executions, workflowNames, loading, onItemClick, on
1914
1924
  }), execution.status === "RUNNING" && /* @__PURE__ */ jsx("div", {
1915
1925
  className: "mt-2",
1916
1926
  children: /* @__PURE__ */ jsx("div", {
1917
- className: "h-1 bg-background-tertiary rounded-full overflow-hidden",
1927
+ className: "h-1 bg-surface-sunken rounded-full overflow-hidden",
1918
1928
  children: /* @__PURE__ */ jsx("div", {
1919
1929
  className: "h-full bg-status-info-bg rounded-full transition-all duration-500 animate-pulse",
1920
1930
  style: { width: `${Math.min(execution.progress, 100)}%` }
@@ -2012,7 +2022,7 @@ function Pagination({ totalItems, showPageSize = true }) {
2012
2022
  /* @__PURE__ */ jsx("button", {
2013
2023
  onClick: () => goToPage(page - 1),
2014
2024
  disabled: page === 1,
2015
- className: "p-2 rounded hover:bg-background-tertiary disabled:opacity-50 disabled:cursor-not-allowed",
2025
+ className: "p-2 rounded hover:bg-surface-sunken disabled:opacity-50 disabled:cursor-not-allowed",
2016
2026
  children: /* @__PURE__ */ jsx(Icon, {
2017
2027
  icon: "mdi:chevron-left",
2018
2028
  width: 20,
@@ -2028,7 +2038,7 @@ function Pagination({ totalItems, showPageSize = true }) {
2028
2038
  onClick: () => goToPage(pageNum),
2029
2039
  className: `
2030
2040
  min-w-[32px] h-8 px-2 rounded text-sm font-medium
2031
- ${pageNum === page ? "bg-action-primary-bg text-action-primary-text" : "hover:bg-background-tertiary text-text-secondary"}
2041
+ ${pageNum === page ? "bg-action-primary-bg text-action-primary-text" : "hover:bg-surface-sunken text-text-secondary"}
2032
2042
  `,
2033
2043
  children: pageNum
2034
2044
  }, pageNum))
@@ -2044,7 +2054,7 @@ function Pagination({ totalItems, showPageSize = true }) {
2044
2054
  /* @__PURE__ */ jsx("button", {
2045
2055
  onClick: () => goToPage(page + 1),
2046
2056
  disabled: page === totalPages,
2047
- className: "p-2 rounded hover:bg-background-tertiary disabled:opacity-50 disabled:cursor-not-allowed",
2057
+ className: "p-2 rounded hover:bg-surface-sunken disabled:opacity-50 disabled:cursor-not-allowed",
2048
2058
  children: /* @__PURE__ */ jsx(Icon, {
2049
2059
  icon: "mdi:chevron-right",
2050
2060
  width: 20,
@@ -2188,7 +2198,7 @@ function RunsPlainTable({ executions, workflowNames, loading, canExecute = true,
2188
2198
  if (loading && executions.length === 0) return /* @__PURE__ */ jsx("div", {
2189
2199
  className: "space-y-2",
2190
2200
  "aria-busy": "true",
2191
- children: [...Array(5)].map((_, i) => /* @__PURE__ */ jsx("div", { className: "h-12 rounded-lg bg-background-tertiary animate-pulse" }, i))
2201
+ children: [...Array(5)].map((_, i) => /* @__PURE__ */ jsx("div", { className: "h-12 rounded-lg bg-surface-sunken animate-pulse" }, i))
2192
2202
  });
2193
2203
  return /* @__PURE__ */ jsx("div", {
2194
2204
  "data-testid": "runs-plain-table",
@@ -2332,7 +2342,7 @@ const OPERATOR_LABELS = {
2332
2342
  STARTS_WITH: "starts with",
2333
2343
  CONTAINS: "contains"
2334
2344
  };
2335
- function SearchAttributeFilterBar({ applied, onApply, conflicts }) {
2345
+ function SearchAttributeFilterBar({ applied, onApply, conflicts, className }) {
2336
2346
  const tr = useTr();
2337
2347
  const definitions = useResource("search-attributes", true, fetchSearchAttributes);
2338
2348
  const [state, setState] = useState(EMPTY_SEARCH_FILTER);
@@ -2366,7 +2376,7 @@ function SearchAttributeFilterBar({ applied, onApply, conflicts }) {
2366
2376
  }));
2367
2377
  };
2368
2378
  return /* @__PURE__ */ jsxs("section", {
2369
- className: "mb-4 space-y-3 rounded-lg border border-border-secondary bg-background-secondary p-3",
2379
+ className: cn("mb-4 space-y-3 rounded-lg border border-border-default bg-surface p-3", className),
2370
2380
  "data-testid": "search-attribute-filter",
2371
2381
  children: [
2372
2382
  /* @__PURE__ */ jsxs("div", {
@@ -2809,7 +2819,7 @@ function BatchOperationDialog({ type, input, selection, onClose, onStarted }) {
2809
2819
  })]
2810
2820
  }),
2811
2821
  dryRun && /* @__PURE__ */ jsx("p", {
2812
- className: "rounded-md bg-background-primary p-2 text-sm text-text-primary",
2822
+ className: "rounded-md bg-surface-canvas p-2 text-sm text-text-primary",
2813
2823
  "data-testid": "batch-dry-run-result",
2814
2824
  children: tr("fluidgrids.runControl.batch.dryRunResult", "The job would select {{count}} runs.", { count: dryRun.total })
2815
2825
  }),
@@ -2920,7 +2930,7 @@ function BatchProgressDrawer({ job: initial, open, onOpenChange, canCancel }) {
2920
2930
  /* @__PURE__ */ jsx(FieldError, { message: jobs.error }),
2921
2931
  (jobs.data?.items ?? []).map((item) => /* @__PURE__ */ jsxs("button", {
2922
2932
  type: "button",
2923
- className: "w-full rounded-md border border-border-secondary p-2 text-left hover:bg-background-tertiary",
2933
+ className: "w-full rounded-md border border-border-default p-2 text-left hover:bg-surface-sunken",
2924
2934
  onClick: () => setJob(item),
2925
2935
  "data-testid": `batch-job-${item.id}`,
2926
2936
  children: [/* @__PURE__ */ jsxs("div", {
@@ -2979,7 +2989,7 @@ function BatchJobProgress({ job, onCancel }) {
2979
2989
  })]
2980
2990
  }),
2981
2991
  /* @__PURE__ */ jsx("div", {
2982
- className: "h-2 overflow-hidden rounded-full bg-background-tertiary",
2992
+ className: "h-2 overflow-hidden rounded-full bg-surface-sunken",
2983
2993
  children: /* @__PURE__ */ jsx("div", {
2984
2994
  className: "h-full bg-[var(--color-status-info-bg)]",
2985
2995
  style: { width: `${progress.percent}%` }
@@ -3057,7 +3067,7 @@ const RUN_STATUSES = [
3057
3067
  function isRunStatus(value) {
3058
3068
  return RUN_STATUSES.includes(value);
3059
3069
  }
3060
- function RunsParityBar({ workflowId, onWorkflowIdChange, total, counts, countsError, selectedStatus, onSelectStatus }) {
3070
+ function RunsParityBar({ workflowId, onWorkflowIdChange, total, counts, countsError, selectedStatus, onSelectStatus, className }) {
3061
3071
  const tr = useTr();
3062
3072
  const statusLabels = runStatusLabels(tr);
3063
3073
  const [draft, setDraft] = useState(workflowId);
@@ -3075,7 +3085,7 @@ function RunsParityBar({ workflowId, onWorkflowIdChange, total, counts, countsEr
3075
3085
  ]);
3076
3086
  return /* @__PURE__ */ jsxs("div", {
3077
3087
  "data-testid": "runs-parity-bar",
3078
- className: "mb-6 flex flex-col gap-3 lg:flex-row lg:items-center",
3088
+ className: cn("mb-6 flex flex-col gap-3 lg:flex-row lg:items-center", className),
3079
3089
  children: [/* @__PURE__ */ jsxs("label", {
3080
3090
  className: "flex min-w-0 items-center gap-2 text-sm text-text-secondary lg:w-80",
3081
3091
  children: [
@@ -3109,14 +3119,14 @@ function RunsParityBar({ workflowId, onWorkflowIdChange, total, counts, countsEr
3109
3119
  }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [total !== null && /* @__PURE__ */ jsx("button", {
3110
3120
  type: "button",
3111
3121
  onClick: () => onSelectStatus("all"),
3112
- className: cn("rounded-full border px-2.5 py-1 text-xs", selectedStatus === "all" ? "border-action-primary-bg bg-action-primary-bg text-action-primary-text" : "border-border-secondary text-text-secondary hover:text-text-primary"),
3122
+ className: cn("rounded-full border px-2.5 py-1 text-xs", selectedStatus === "all" ? "border-action-primary-bg bg-action-primary-bg text-action-primary-text" : "border-border-default text-text-secondary hover:text-text-primary"),
3113
3123
  "aria-pressed": selectedStatus === "all",
3114
3124
  "data-testid": "runs-count-all",
3115
3125
  children: tr("fluidgrids.executions.parity.countAll", "All {{count}}", { count: total })
3116
3126
  }), counts.map(({ status, count }) => isRunStatus(status) ? /* @__PURE__ */ jsx("button", {
3117
3127
  type: "button",
3118
3128
  onClick: () => onSelectStatus(status),
3119
- className: cn("rounded-full border px-2.5 py-1 text-xs", selectedStatus === status ? "border-action-primary-bg bg-action-primary-bg text-action-primary-text" : "border-border-secondary text-text-secondary hover:text-text-primary"),
3129
+ className: cn("rounded-full border px-2.5 py-1 text-xs", selectedStatus === status ? "border-action-primary-bg bg-action-primary-bg text-action-primary-text" : "border-border-default text-text-secondary hover:text-text-primary"),
3120
3130
  "aria-pressed": selectedStatus === status,
3121
3131
  "data-testid": `runs-count-${status}`,
3122
3132
  children: tr("fluidgrids.executions.parity.countStatus", "{{status}} {{count}}", {
@@ -3158,6 +3168,11 @@ function ExecutionsListPage() {
3158
3168
  const parityEnabled = useDurableParityEnabled();
3159
3169
  const phaseC = usePhaseCFlags();
3160
3170
  const [searchFilter, setSearchFilter] = useState(null);
3171
+ const [searchFilterBuilderKey, setSearchFilterBuilderKey] = useState(0);
3172
+ const clearSearchFilter = () => {
3173
+ setSearchFilter(null);
3174
+ setSearchFilterBuilderKey((key) => key + 1);
3175
+ };
3161
3176
  const [allMatching, setAllMatching] = useState(false);
3162
3177
  const [batchType, setBatchType] = useState(null);
3163
3178
  const [batchDrawer, setBatchDrawer] = useState(null);
@@ -3354,6 +3369,17 @@ function ExecutionsListPage() {
3354
3369
  label: viewLabel(mode),
3355
3370
  onSelect: () => setViewMode(mode)
3356
3371
  }));
3372
+ const showBatchJobs = phaseC.runControl && selection.runIds.length === 0;
3373
+ const batchJobsLabel = tr("fluidgrids.runControl.batch.jobs", "Batch jobs");
3374
+ const openBatchJobs = () => setBatchDrawer({ job: null });
3375
+ const headerMenuItems = showBatchJobs ? [...viewMenuItems, {
3376
+ id: "batch-jobs",
3377
+ icon: "mdi:layers-triple-outline",
3378
+ label: batchJobsLabel,
3379
+ onSelect: openBatchJobs,
3380
+ separatorBefore: true,
3381
+ testId: "batch-jobs-button"
3382
+ }] : viewMenuItems;
3357
3383
  const viewMenuToggles = [{
3358
3384
  id: "details",
3359
3385
  label: tr("fluidgrids.executions.executionsList.showRunDetails", "Show run details and bulk actions"),
@@ -3361,6 +3387,23 @@ function ExecutionsListPage() {
3361
3387
  onCheckedChange: setShowDetails
3362
3388
  }];
3363
3389
  const filtersActive = countActiveFilters(filter, parityEnabled) > 0 || searchFilter !== null;
3390
+ const parityBar = parityEnabled ? /* @__PURE__ */ jsx(RunsParityBar, {
3391
+ workflowId: filter.workflowId,
3392
+ onWorkflowIdChange: setWorkflowIdFilter,
3393
+ total: statusCounts.total,
3394
+ counts: statusCounts.counts,
3395
+ countsError: statusCounts.error,
3396
+ selectedStatus: filter.status,
3397
+ onSelectStatus: handleFilterByStatus,
3398
+ className: v2 ? "mb-0" : void 0
3399
+ }) : null;
3400
+ const searchAttributeBar = phaseC.searchAttributes ? /* @__PURE__ */ jsx(SearchAttributeFilterBar, {
3401
+ applied: searchFilter,
3402
+ onApply: setSearchFilter,
3403
+ conflicts: searchFilter ? searchFilterConflicts(input) : [],
3404
+ className: v2 ? "mb-0" : void 0
3405
+ }, searchFilterBuilderKey) : null;
3406
+ const moreFilterRows = v2 && (parityBar || searchAttributeBar) ? /* @__PURE__ */ jsxs(Fragment$1, { children: [parityBar, searchAttributeBar] }) : void 0;
3364
3407
  const showEmptyState = v2 && !loading && !error && executions.length === 0;
3365
3408
  const scopedWorkflowName = workflowKeyParam ? workflowNames[workflowKeyParam] ?? workflowKeyParam : null;
3366
3409
  const showAllWorkflows = () => {
@@ -3372,7 +3415,7 @@ function ExecutionsListPage() {
3372
3415
  }, { replace: true });
3373
3416
  };
3374
3417
  return /* @__PURE__ */ jsxs("div", {
3375
- className: "p-4 sm:p-6 bg-background-primary min-h-screen",
3418
+ className: "p-4 sm:p-6 bg-surface-canvas min-h-screen",
3376
3419
  children: [
3377
3420
  /* @__PURE__ */ jsxs("div", {
3378
3421
  className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 mb-6",
@@ -3393,18 +3436,18 @@ function ExecutionsListPage() {
3393
3436
  ] }), /* @__PURE__ */ jsxs("div", {
3394
3437
  className: "flex flex-wrap items-center gap-3",
3395
3438
  children: [v2 ? /* @__PURE__ */ jsx(RunActionsMenu, {
3396
- items: viewMenuItems,
3439
+ items: headerMenuItems,
3397
3440
  toggles: viewMenuToggles,
3398
3441
  label: tr("fluidgrids.executions.executionsList.moreOptions", "More options"),
3399
3442
  "data-testid": "runs-view-menu"
3400
3443
  }) : /* @__PURE__ */ jsxs("div", {
3401
- className: "flex items-center bg-background-secondary rounded-lg border border-border-secondary p-1",
3444
+ className: "flex items-center bg-surface rounded-lg border border-border-default p-1",
3402
3445
  children: [
3403
3446
  /* @__PURE__ */ jsx("button", {
3404
3447
  onClick: () => setViewMode("table"),
3405
3448
  "aria-pressed": viewMode === "table",
3406
3449
  "aria-label": tr("fluidgrids.executions.executionsList.tableViewTooltip", "Table View"),
3407
- className: `p-2 rounded ${viewMode === "table" ? "bg-background-tertiary text-text-primary" : "text-text-secondary hover:text-text-primary"}`,
3450
+ className: `p-2 rounded ${viewMode === "table" ? "bg-surface-sunken text-text-primary" : "text-text-secondary hover:text-text-primary"}`,
3408
3451
  title: tr("fluidgrids.executions.executionsList.tableViewTooltip", "Table View"),
3409
3452
  children: /* @__PURE__ */ jsx(Icon, {
3410
3453
  icon: "mdi:table",
@@ -3415,7 +3458,7 @@ function ExecutionsListPage() {
3415
3458
  onClick: () => setViewMode("cards"),
3416
3459
  "aria-pressed": viewMode === "cards",
3417
3460
  "aria-label": tr("fluidgrids.executions.executionsList.cardViewTooltip", "Card View"),
3418
- className: `p-2 rounded ${viewMode === "cards" ? "bg-background-tertiary text-text-primary" : "text-text-secondary hover:text-text-primary"}`,
3461
+ className: `p-2 rounded ${viewMode === "cards" ? "bg-surface-sunken text-text-primary" : "text-text-secondary hover:text-text-primary"}`,
3419
3462
  title: tr("fluidgrids.executions.executionsList.cardViewTooltip", "Card View"),
3420
3463
  children: /* @__PURE__ */ jsx(Icon, {
3421
3464
  icon: "mdi:view-grid",
@@ -3426,7 +3469,7 @@ function ExecutionsListPage() {
3426
3469
  onClick: () => setViewMode("timeline"),
3427
3470
  "aria-pressed": viewMode === "timeline",
3428
3471
  "aria-label": tr("fluidgrids.executions.executionsList.timelineViewTooltip", "Timeline View"),
3429
- className: `p-2 rounded ${viewMode === "timeline" ? "bg-background-tertiary text-text-primary" : "text-text-secondary hover:text-text-primary"}`,
3472
+ className: `p-2 rounded ${viewMode === "timeline" ? "bg-surface-sunken text-text-primary" : "text-text-secondary hover:text-text-primary"}`,
3430
3473
  title: tr("fluidgrids.executions.executionsList.timelineViewTooltip", "Timeline View"),
3431
3474
  children: /* @__PURE__ */ jsx(Icon, {
3432
3475
  icon: "mdi:timeline",
@@ -3474,35 +3517,26 @@ function ExecutionsListPage() {
3474
3517
  "data-tour": "fluidgrids-runs-filters",
3475
3518
  children: /* @__PURE__ */ jsx(ExecutionFilters, {
3476
3519
  workflows: workflowOptions,
3477
- onRefresh: refetch
3520
+ onRefresh: refetch,
3521
+ moreFilters: moreFilterRows,
3522
+ moreFiltersActive: phaseC.searchAttributes && searchFilter !== null ? 1 : 0,
3523
+ onClearMoreFilters: clearSearchFilter
3478
3524
  })
3479
3525
  }),
3480
- parityEnabled && /* @__PURE__ */ jsx(RunsParityBar, {
3481
- workflowId: filter.workflowId,
3482
- onWorkflowIdChange: setWorkflowIdFilter,
3483
- total: statusCounts.total,
3484
- counts: statusCounts.counts,
3485
- countsError: statusCounts.error,
3486
- selectedStatus: filter.status,
3487
- onSelectStatus: handleFilterByStatus
3488
- }),
3489
- phaseC.searchAttributes && /* @__PURE__ */ jsx(SearchAttributeFilterBar, {
3490
- applied: searchFilter,
3491
- onApply: setSearchFilter,
3492
- conflicts: searchFilter ? searchFilterConflicts(input) : []
3493
- }),
3494
- phaseC.runControl && selection.runIds.length === 0 && /* @__PURE__ */ jsx("div", {
3526
+ !v2 && parityBar,
3527
+ !v2 && searchAttributeBar,
3528
+ !v2 && showBatchJobs && /* @__PURE__ */ jsx("div", {
3495
3529
  className: "mb-4 flex justify-end",
3496
3530
  children: /* @__PURE__ */ jsxs(Button$1, {
3497
3531
  variant: "ghost",
3498
3532
  size: "sm",
3499
- onClick: () => setBatchDrawer({ job: null }),
3533
+ onClick: openBatchJobs,
3500
3534
  "data-testid": "batch-jobs-button",
3501
3535
  children: [/* @__PURE__ */ jsx(Icon, {
3502
3536
  icon: "mdi:layers-triple-outline",
3503
3537
  className: "mr-1",
3504
3538
  width: 14
3505
- }), tr("fluidgrids.runControl.batch.jobs", "Batch jobs")]
3539
+ }), batchJobsLabel]
3506
3540
  })
3507
3541
  }),
3508
3542
  selection.runIds.length > 0 && (!v2 || canExecuteRuns) && /* @__PURE__ */ jsxs("div", {
@@ -3623,7 +3657,7 @@ function ExecutionsListPage() {
3623
3657
  showEmptyState && /* @__PURE__ */ jsx(RunsEmptyState, {
3624
3658
  filtered: filtersActive,
3625
3659
  onClearFilters: () => {
3626
- setSearchFilter(null);
3660
+ clearSearchFilter();
3627
3661
  resetFilters();
3628
3662
  },
3629
3663
  onOpenWorkflows: () => navigate("../list"),