@octaviaflow/core 3.1.0-beta.106 → 3.1.0-beta.108

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.
package/dist/index.cjs CHANGED
@@ -5887,14 +5887,32 @@ var import_react_aria3 = require("react-aria");
5887
5887
  var import_jsx_runtime18 = require("react/jsx-runtime");
5888
5888
  function BreadcrumbItem({ item, isCurrent }) {
5889
5889
  const ref = (0, import_react37.useRef)(null);
5890
+ const interactive = !isCurrent && (!!item.href || !!item.onClick);
5890
5891
  const { itemProps } = (0, import_react_aria3.useBreadcrumbItem)(
5891
- { children: item.label, isCurrent, elementType: item.href ? "a" : "span" },
5892
+ {
5893
+ children: item.label,
5894
+ isCurrent,
5895
+ elementType: item.href ? "a" : item.onClick && !isCurrent ? "button" : "span"
5896
+ },
5892
5897
  ref
5893
5898
  );
5894
5899
  const content = /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [
5895
5900
  item.icon && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "ods-breadcrumb__icon", children: item.icon }),
5896
5901
  /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: item.label })
5897
5902
  ] });
5903
+ if (item.onClick && !item.href && interactive) {
5904
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
5905
+ "button",
5906
+ {
5907
+ ...itemProps,
5908
+ ref,
5909
+ type: "button",
5910
+ onClick: item.onClick,
5911
+ className: cn("ods-breadcrumb__link", "ods-breadcrumb__link--button"),
5912
+ children: content
5913
+ }
5914
+ );
5915
+ }
5898
5916
  if (item.href && !isCurrent) {
5899
5917
  return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
5900
5918
  "a",
@@ -41339,6 +41357,7 @@ ToolCard.displayName = "ToolCard";
41339
41357
 
41340
41358
  // src/components/ExpressionField/ExpressionField.tsx
41341
41359
  var import_react188 = require("react");
41360
+ var import_icons68 = require("@octaviaflow/icons");
41342
41361
 
41343
41362
  // src/components/ExpressionField/parseExpression.ts
41344
41363
  var CALL_NAME_SOURCE = "(?:[A-Z_][A-Z0-9_]*|user\\.[A-Za-z_][A-Za-z0-9_]*)";
@@ -41907,6 +41926,7 @@ function ExpressionField({
41907
41926
  CallEditor,
41908
41927
  {
41909
41928
  raw: editing.raw,
41929
+ anchor: editing.el,
41910
41930
  rect: editing.rect,
41911
41931
  nameOf: callLabel,
41912
41932
  labelFor,
@@ -41921,6 +41941,7 @@ function ExpressionField({
41921
41941
  }
41922
41942
  function CallEditor({
41923
41943
  raw,
41944
+ anchor,
41924
41945
  rect,
41925
41946
  nameOf,
41926
41947
  labelFor,
@@ -41932,13 +41953,27 @@ function CallEditor({
41932
41953
  const [path, setPath] = (0, import_react188.useState)([]);
41933
41954
  const [rawMode, setRawMode] = (0, import_react188.useState)(false);
41934
41955
  const panelRef = (0, import_react188.useRef)(null);
41956
+ const onApplyRef = (0, import_react188.useRef)(onApply);
41957
+ onApplyRef.current = onApply;
41958
+ const draftRef = (0, import_react188.useRef)(draft);
41959
+ draftRef.current = draft;
41935
41960
  (0, import_react188.useEffect)(() => {
41936
41961
  const onKey = (e) => {
41937
41962
  if (e.key === "Escape") onCancel();
41938
41963
  };
41964
+ const onPointerDown = (e) => {
41965
+ const target = e.target;
41966
+ if (panelRef.current?.contains(target)) return;
41967
+ if (anchor.contains(target)) return;
41968
+ onApplyRef.current(draftRef.current);
41969
+ };
41939
41970
  document.addEventListener("keydown", onKey);
41940
- return () => document.removeEventListener("keydown", onKey);
41941
- }, [onCancel]);
41971
+ document.addEventListener("mousedown", onPointerDown, true);
41972
+ return () => {
41973
+ document.removeEventListener("keydown", onKey);
41974
+ document.removeEventListener("mousedown", onPointerDown, true);
41975
+ };
41976
+ }, [anchor, onCancel]);
41942
41977
  const current = callAt(draft, path);
41943
41978
  const signature = current ? resolveCall?.(current.name) : void 0;
41944
41979
  const names = signature?.args ?? [];
@@ -41976,27 +42011,17 @@ function CallEditor({
41976
42011
  "aria-label": `Edit ${crumbs[0]?.label ?? "function"}`,
41977
42012
  children: [
41978
42013
  /* @__PURE__ */ (0, import_jsx_runtime174.jsxs)("div", { className: "ods-expression-field__editor-head", children: [
41979
- /* @__PURE__ */ (0, import_jsx_runtime174.jsx)("nav", { className: "ods-expression-field__editor-crumbs", "aria-label": "Nested functions", children: crumbs.map((crumb, i) => /* @__PURE__ */ (0, import_jsx_runtime174.jsxs)("span", { children: [
41980
- i > 0 && /* @__PURE__ */ (0, import_jsx_runtime174.jsx)("span", { "aria-hidden": "true", children: " \u203A " }),
41981
- /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(
41982
- "button",
41983
- {
41984
- type: "button",
41985
- disabled: i === crumbs.length - 1,
41986
- onClick: () => setPath(crumb.path),
41987
- children: crumb.label
41988
- }
41989
- )
41990
- ] }, crumb.path.join(".") || "root")) }),
41991
42014
  /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(
41992
- "button",
42015
+ Breadcrumb,
41993
42016
  {
41994
- type: "button",
41995
- className: "ods-expression-field__editor-link",
41996
- onClick: () => setRawMode((r) => !r),
41997
- children: rawMode ? "Back to fields" : "Edit as text"
42017
+ className: "ods-expression-field__editor-crumbs",
42018
+ items: crumbs.map((crumb) => ({
42019
+ label: crumb.label,
42020
+ onClick: () => setPath(crumb.path)
42021
+ }))
41998
42022
  }
41999
- )
42023
+ ),
42024
+ /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(Button, { variant: "ghost", size: "sm", onClick: () => setRawMode((r) => !r), children: rawMode ? "Back to fields" : "Edit as text" })
42000
42025
  ] }),
42001
42026
  rawMode ? /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(
42002
42027
  "textarea",
@@ -42016,16 +42041,16 @@ function CallEditor({
42016
42041
  // eslint-disable-next-line react/no-array-index-key
42017
42042
  /* @__PURE__ */ (0, import_jsx_runtime174.jsxs)("div", { className: "ods-expression-field__editor-row", children: [
42018
42043
  /* @__PURE__ */ (0, import_jsx_runtime174.jsxs)("span", { className: "ods-expression-field__editor-row-head", children: [
42019
- /* @__PURE__ */ (0, import_jsx_runtime174.jsx)("span", { id: `arg-${index}-label`, children: rowLabel }),
42044
+ /* @__PURE__ */ (0, import_jsx_runtime174.jsx)("span", { className: "ods-expression-field__editor-row-name", id: `arg-${index}-label`, children: rowLabel }),
42020
42045
  /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(
42021
- "button",
42046
+ Button,
42022
42047
  {
42023
- type: "button",
42024
- className: "ods-expression-field__editor-remove",
42048
+ variant: "icon",
42049
+ size: "sm",
42025
42050
  "aria-label": `Remove ${rowLabel}`,
42026
42051
  title: "Remove this argument",
42027
42052
  onClick: () => removeArg(index),
42028
- children: "\u2715"
42053
+ children: /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(import_icons68.CloseIcon, { size: "sm" })
42029
42054
  }
42030
42055
  )
42031
42056
  ] }),
@@ -42040,8 +42065,17 @@ function CallEditor({
42040
42065
  children: [
42041
42066
  /* @__PURE__ */ (0, import_jsx_runtime174.jsx)("code", { children: argSummary(arg, nameOf) }),
42042
42067
  /* @__PURE__ */ (0, import_jsx_runtime174.jsxs)("span", { children: [
42043
- /* @__PURE__ */ (0, import_jsx_runtime174.jsx)("button", { type: "button", onClick: () => setPath([...path, index]), children: "Open" }),
42044
- /* @__PURE__ */ (0, import_jsx_runtime174.jsx)("button", { type: "button", onClick: () => setArg(index, ""), "aria-label": `Clear ${rowLabel}`, children: "Clear" })
42068
+ /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(Button, { variant: "secondary", size: "sm", onClick: () => setPath([...path, index]), children: "Open" }),
42069
+ /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(
42070
+ Button,
42071
+ {
42072
+ variant: "ghost",
42073
+ size: "sm",
42074
+ "aria-label": `Clear ${rowLabel}`,
42075
+ onClick: () => setArg(index, ""),
42076
+ children: "Clear"
42077
+ }
42078
+ )
42045
42079
  ] })
42046
42080
  ]
42047
42081
  }
@@ -42066,7 +42100,16 @@ function CallEditor({
42066
42100
  children: labelFor(arg.startsWith("ods://") ? `{{${arg}}}` : arg)
42067
42101
  }
42068
42102
  ),
42069
- /* @__PURE__ */ (0, import_jsx_runtime174.jsx)("button", { type: "button", onClick: () => setArg(index, ""), "aria-label": `Clear ${rowLabel}`, children: "Clear" })
42103
+ /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(
42104
+ Button,
42105
+ {
42106
+ variant: "ghost",
42107
+ size: "sm",
42108
+ "aria-label": `Clear ${rowLabel}`,
42109
+ onClick: () => setArg(index, ""),
42110
+ children: "Clear"
42111
+ }
42112
+ )
42070
42113
  ]
42071
42114
  }
42072
42115
  )
@@ -42088,31 +42131,25 @@ function CallEditor({
42088
42131
  );
42089
42132
  }),
42090
42133
  /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(
42091
- "button",
42134
+ Button,
42092
42135
  {
42093
- type: "button",
42094
- className: "ods-expression-field__editor-add",
42136
+ variant: "ghost",
42137
+ size: "sm",
42138
+ fullWidth: true,
42139
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(import_icons68.AddIcon, { size: "sm" }),
42095
42140
  onClick: () => setDraft((d) => {
42096
42141
  const at = callAt(d, path);
42097
42142
  if (!at) return d;
42098
42143
  const next = [...at.args, '""'];
42099
42144
  return path.length === 0 ? formatCall(at.name, next) : replaceArgument(d, path, `${at.name}(${next.join(", ")})`);
42100
42145
  }),
42101
- children: "+ Add argument"
42146
+ children: "Add argument"
42102
42147
  }
42103
42148
  )
42104
42149
  ] }),
42105
42150
  /* @__PURE__ */ (0, import_jsx_runtime174.jsxs)("div", { className: "ods-expression-field__editor-foot", children: [
42106
- /* @__PURE__ */ (0, import_jsx_runtime174.jsx)("button", { type: "button", onClick: onCancel, children: "Cancel" }),
42107
- /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(
42108
- "button",
42109
- {
42110
- type: "button",
42111
- className: "ods-expression-field__editor-primary",
42112
- onClick: () => onApply(draft),
42113
- children: "Apply"
42114
- }
42115
- )
42151
+ /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(Button, { variant: "secondary", size: "sm", onClick: onCancel, children: "Cancel" }),
42152
+ /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(Button, { variant: "primary", size: "sm", onClick: () => onApply(draft), children: "Apply" })
42116
42153
  ] })
42117
42154
  ]
42118
42155
  }
@@ -42203,14 +42240,14 @@ function TopBar({
42203
42240
  // src/components/TraceStep/TraceStep.tsx
42204
42241
  var import_framer_motion38 = require("framer-motion");
42205
42242
  var import_react189 = require("react");
42206
- var import_icons68 = require("@octaviaflow/icons");
42243
+ var import_icons69 = require("@octaviaflow/icons");
42207
42244
  var import_jsx_runtime176 = require("react/jsx-runtime");
42208
42245
  var DEFAULT_KIND_GLYPH = {
42209
- thought: /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(import_icons68.IdeaIcon, { size: "xs" }),
42210
- tool: /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(import_icons68.BuildToolIcon, { size: "xs" }),
42211
- input: /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(import_icons68.ConnectionReceiveIcon, { size: "xs" }),
42212
- output: /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(import_icons68.ConnectionSendIcon, { size: "xs" }),
42213
- error: /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(import_icons68.WarningAltIcon, { size: "xs" })
42246
+ thought: /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(import_icons69.IdeaIcon, { size: "xs" }),
42247
+ tool: /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(import_icons69.BuildToolIcon, { size: "xs" }),
42248
+ input: /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(import_icons69.ConnectionReceiveIcon, { size: "xs" }),
42249
+ output: /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(import_icons69.ConnectionSendIcon, { size: "xs" }),
42250
+ error: /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(import_icons69.WarningAltIcon, { size: "xs" })
42214
42251
  };
42215
42252
  var FALLBACK_GLYPH = DEFAULT_KIND_GLYPH.thought;
42216
42253
  var TraceStep = (0, import_react189.forwardRef)(
@@ -42274,7 +42311,7 @@ var TraceStep = (0, import_react189.forwardRef)(
42274
42311
  initial: disableAnimation ? false : { scale: 0.6, opacity: 0 },
42275
42312
  animate: { scale: 1, opacity: 1 },
42276
42313
  transition: { duration: 0.2, ease: [0.16, 1, 0.3, 1] },
42277
- children: status === "running" ? /* @__PURE__ */ (0, import_jsx_runtime176.jsx)("span", { className: "ods-trace-step__spin", children: /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(import_icons68.CircleDashIcon, { size: "xs" }) }) : resolvedGlyph
42314
+ children: status === "running" ? /* @__PURE__ */ (0, import_jsx_runtime176.jsx)("span", { className: "ods-trace-step__spin", children: /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(import_icons69.CircleDashIcon, { size: "xs" }) }) : resolvedGlyph
42278
42315
  }
42279
42316
  ),
42280
42317
  !isLast && /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(
@@ -42317,7 +42354,7 @@ var TraceStep = (0, import_react189.forwardRef)(
42317
42354
  title: tool,
42318
42355
  "aria-label": `Tool: ${tool}`,
42319
42356
  children: [
42320
- /* @__PURE__ */ (0, import_jsx_runtime176.jsx)("span", { className: "ods-trace-step__tool-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(import_icons68.BuildToolIcon, { size: "xs" }) }),
42357
+ /* @__PURE__ */ (0, import_jsx_runtime176.jsx)("span", { className: "ods-trace-step__tool-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(import_icons69.BuildToolIcon, { size: "xs" }) }),
42321
42358
  tool
42322
42359
  ]
42323
42360
  }
@@ -42350,7 +42387,7 @@ var TraceStep = (0, import_react189.forwardRef)(
42350
42387
  "aria-hidden": "true",
42351
42388
  animate: { rotate: open ? 180 : 0 },
42352
42389
  transition: { duration: 0.18, ease: [0.16, 1, 0.3, 1] },
42353
- children: /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(import_icons68.CaretDownIcon, { size: "xs" })
42390
+ children: /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(import_icons69.CaretDownIcon, { size: "xs" })
42354
42391
  }
42355
42392
  )
42356
42393
  ]
@@ -44251,7 +44288,7 @@ function cursorFor(corner) {
44251
44288
  }
44252
44289
 
44253
44290
  // src/workflow/components/kinds/BaseNode.tsx
44254
- var import_icons69 = require("@octaviaflow/icons");
44291
+ var import_icons70 = require("@octaviaflow/icons");
44255
44292
  var import_react199 = require("react");
44256
44293
  var import_jsx_runtime183 = require("react/jsx-runtime");
44257
44294
  function BaseNode({
@@ -44318,7 +44355,7 @@ function BaseNode({
44318
44355
  "aria-label": "Delete node",
44319
44356
  "data-flow-no-drag": "true",
44320
44357
  title: "Delete node",
44321
- children: /* @__PURE__ */ (0, import_jsx_runtime183.jsx)(import_icons69.TrashCanIcon, { size: 16, "aria-hidden": true })
44358
+ children: /* @__PURE__ */ (0, import_jsx_runtime183.jsx)(import_icons70.TrashCanIcon, { size: 16, "aria-hidden": true })
44322
44359
  }
44323
44360
  )
44324
44361
  ] }),
@@ -46237,7 +46274,7 @@ function DefaultEmptyState() {
46237
46274
  }
46238
46275
 
46239
46276
  // src/components/WorkflowHeader/WorkflowHeader.tsx
46240
- var import_icons70 = require("@octaviaflow/icons");
46277
+ var import_icons71 = require("@octaviaflow/icons");
46241
46278
 
46242
46279
  // src/hooks/useWorkflowRuntime.ts
46243
46280
  var import_react202 = require("react");
@@ -46328,7 +46365,7 @@ function WorkflowHeader({
46328
46365
  onClick: onBack,
46329
46366
  "aria-label": `Back to ${typeof parentLabel === "string" ? parentLabel : "previous"}`,
46330
46367
  children: [
46331
- /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(import_icons70.ChevronLeftIcon, { size: "sm" }),
46368
+ /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(import_icons71.ChevronLeftIcon, { size: "sm" }),
46332
46369
  /* @__PURE__ */ (0, import_jsx_runtime187.jsx)("span", { className: "ods-workflow-header__back-label", children: parentLabel }),
46333
46370
  /* @__PURE__ */ (0, import_jsx_runtime187.jsx)("span", { className: "ods-workflow-header__back-separator", "aria-hidden": "true", children: "/" })
46334
46371
  ]
@@ -46367,14 +46404,14 @@ function WorkflowHeader({
46367
46404
  title: saveState === "error" ? saveError ?? void 0 : void 0,
46368
46405
  children: [
46369
46406
  saveState === "saving" ? /* @__PURE__ */ (0, import_jsx_runtime187.jsx)("span", { className: "ods-workflow-header__save-spinner", "aria-hidden": "true" }) : saveState === "error" ? /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(
46370
- import_icons70.WarningAltIcon,
46407
+ import_icons71.WarningAltIcon,
46371
46408
  {
46372
46409
  size: "sm",
46373
46410
  className: "ods-workflow-header__save-icon",
46374
46411
  "aria-hidden": "true"
46375
46412
  }
46376
46413
  ) : /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(
46377
- import_icons70.CheckmarkIcon,
46414
+ import_icons71.CheckmarkIcon,
46378
46415
  {
46379
46416
  size: "sm",
46380
46417
  className: "ods-workflow-header__save-icon",
@@ -46415,7 +46452,7 @@ function WorkflowHeader({
46415
46452
  size: "sm",
46416
46453
  pressed: !!isConsoleOpen,
46417
46454
  "aria-label": isConsoleOpen ? "Hide execution console" : "Show execution console",
46418
- leftIcon: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(import_icons70.TerminalIcon, { size: "sm" }),
46455
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(import_icons71.TerminalIcon, { size: "sm" }),
46419
46456
  onClick: onToggleConsole,
46420
46457
  children: "Console"
46421
46458
  }
@@ -46427,7 +46464,7 @@ function WorkflowHeader({
46427
46464
  variant: "ghost",
46428
46465
  size: "sm",
46429
46466
  "aria-label": runtime ? `Stop execution (running ${runtime})` : "Stop execution",
46430
- leftIcon: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(import_icons70.StopFilledAltIcon, { size: "sm", className: "ods-workflow-header__stop-glyph" }),
46467
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(import_icons71.StopFilledAltIcon, { size: "sm", className: "ods-workflow-header__stop-glyph" }),
46431
46468
  onClick: onStop,
46432
46469
  children: /* @__PURE__ */ (0, import_jsx_runtime187.jsxs)("span", { className: "ods-workflow-header__stop-label", children: [
46433
46470
  /* @__PURE__ */ (0, import_jsx_runtime187.jsx)("span", { children: "Stop" }),
@@ -46443,7 +46480,7 @@ function WorkflowHeader({
46443
46480
  variant: "primary",
46444
46481
  size: "sm",
46445
46482
  "aria-label": "Run workflow",
46446
- leftIcon: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(import_icons70.PlayFilledAltIcon, { size: "sm" }),
46483
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(import_icons71.PlayFilledAltIcon, { size: "sm" }),
46447
46484
  onClick: onRun,
46448
46485
  children: "Run"
46449
46486
  }
@@ -46455,7 +46492,7 @@ function WorkflowHeader({
46455
46492
  align: "end",
46456
46493
  triggerClassName: "ods-workflow-header__menu-trigger",
46457
46494
  ...menuProps,
46458
- trigger: menuTrigger ?? /* @__PURE__ */ (0, import_jsx_runtime187.jsx)("span", { "aria-hidden": "true", className: "ods-workflow-header__menu-icon", children: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(import_icons70.OverflowMenuVerticalIcon, { size: "sm" }) }),
46495
+ trigger: menuTrigger ?? /* @__PURE__ */ (0, import_jsx_runtime187.jsx)("span", { "aria-hidden": "true", className: "ods-workflow-header__menu-icon", children: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(import_icons71.OverflowMenuVerticalIcon, { size: "sm" }) }),
46459
46496
  items: menuItems
46460
46497
  }
46461
46498
  ))
@@ -46465,7 +46502,7 @@ function WorkflowHeader({
46465
46502
  }
46466
46503
 
46467
46504
  // src/components/WorkflowHeader/WorkflowHeaderExpanded.tsx
46468
- var import_icons71 = require("@octaviaflow/icons");
46505
+ var import_icons72 = require("@octaviaflow/icons");
46469
46506
  var import_jsx_runtime188 = require("react/jsx-runtime");
46470
46507
  function WorkflowHeaderExpanded({
46471
46508
  name,
@@ -46510,7 +46547,7 @@ function WorkflowHeaderExpanded({
46510
46547
  onClick: onBack,
46511
46548
  "aria-label": `Back to ${typeof parentLabel === "string" ? parentLabel : "previous"}`,
46512
46549
  children: [
46513
- /* @__PURE__ */ (0, import_jsx_runtime188.jsx)(import_icons71.ChevronLeftIcon, { size: "sm" }),
46550
+ /* @__PURE__ */ (0, import_jsx_runtime188.jsx)(import_icons72.ChevronLeftIcon, { size: "sm" }),
46514
46551
  /* @__PURE__ */ (0, import_jsx_runtime188.jsx)("span", { children: parentLabel }),
46515
46552
  /* @__PURE__ */ (0, import_jsx_runtime188.jsx)("span", { "aria-hidden": "true", className: "ods-workflow-header-expanded__back-sep", children: "/" })
46516
46553
  ]
@@ -46549,7 +46586,7 @@ function WorkflowHeaderExpanded({
46549
46586
  size: "sm",
46550
46587
  pressed: !!isConsoleOpen,
46551
46588
  "aria-label": isConsoleOpen ? "Hide execution console" : "Show execution console",
46552
- leftIcon: /* @__PURE__ */ (0, import_jsx_runtime188.jsx)(import_icons71.TerminalIcon, { size: "sm" }),
46589
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime188.jsx)(import_icons72.TerminalIcon, { size: "sm" }),
46553
46590
  onClick: onToggleConsole,
46554
46591
  children: "Console"
46555
46592
  }
@@ -46562,7 +46599,7 @@ function WorkflowHeaderExpanded({
46562
46599
  size: "sm",
46563
46600
  "aria-label": runtime ? `Stop execution (running ${runtime})` : "Stop execution",
46564
46601
  leftIcon: /* @__PURE__ */ (0, import_jsx_runtime188.jsx)(
46565
- import_icons71.StopFilledAltIcon,
46602
+ import_icons72.StopFilledAltIcon,
46566
46603
  {
46567
46604
  size: "sm",
46568
46605
  className: "ods-workflow-header-expanded__stop-glyph"
@@ -46583,7 +46620,7 @@ function WorkflowHeaderExpanded({
46583
46620
  variant: "primary",
46584
46621
  size: "sm",
46585
46622
  "aria-label": "Run workflow",
46586
- leftIcon: /* @__PURE__ */ (0, import_jsx_runtime188.jsx)(import_icons71.PlayFilledAltIcon, { size: "sm" }),
46623
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime188.jsx)(import_icons72.PlayFilledAltIcon, { size: "sm" }),
46587
46624
  onClick: onRun,
46588
46625
  children: "Run"
46589
46626
  }
@@ -46599,7 +46636,7 @@ function WorkflowHeaderExpanded({
46599
46636
  {
46600
46637
  variant: "ghost",
46601
46638
  size: "sm",
46602
- leftIcon: /* @__PURE__ */ (0, import_jsx_runtime188.jsx)(import_icons71.OverflowMenuVerticalIcon, { size: "sm" })
46639
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime188.jsx)(import_icons72.OverflowMenuVerticalIcon, { size: "sm" })
46603
46640
  }
46604
46641
  ),
46605
46642
  items: menuItems
@@ -48096,60 +48133,60 @@ function DeliveryFrequencyControl({
48096
48133
  DeliveryFrequencyControl.displayName = "DeliveryFrequencyControl";
48097
48134
 
48098
48135
  // src/notifications/components/EventCatalogPicker/EventCatalogPicker.tsx
48099
- var import_icons73 = require("@octaviaflow/icons");
48136
+ var import_icons74 = require("@octaviaflow/icons");
48100
48137
  var import_react212 = require("react");
48101
48138
 
48102
48139
  // src/notifications/components/meta.tsx
48103
- var import_icons72 = require("@octaviaflow/icons");
48140
+ var import_icons73 = require("@octaviaflow/icons");
48104
48141
  var import_jsx_runtime192 = require("react/jsx-runtime");
48105
48142
  var CHANNEL_TYPE_META = {
48106
48143
  in_app: {
48107
48144
  label: "In-app",
48108
48145
  hint: "The bell in the top bar. Always on.",
48109
48146
  connected: false,
48110
- icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons72.NotificationIcon, { size: "sm", "aria-hidden": "true" })
48147
+ icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons73.NotificationIcon, { size: "sm", "aria-hidden": "true" })
48111
48148
  },
48112
48149
  email: {
48113
48150
  label: "Email",
48114
48151
  hint: "One or more addresses.",
48115
48152
  connected: false,
48116
- icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons72.EmailIcon, { size: "sm", "aria-hidden": "true" })
48153
+ icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons73.EmailIcon, { size: "sm", "aria-hidden": "true" })
48117
48154
  },
48118
48155
  slack: {
48119
48156
  label: "Slack",
48120
48157
  hint: "A channel in a connected workspace.",
48121
48158
  connected: true,
48122
- icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons72.LogoSlackIcon, { size: "sm", "aria-hidden": "true" })
48159
+ icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons73.LogoSlackIcon, { size: "sm", "aria-hidden": "true" })
48123
48160
  },
48124
48161
  teams: {
48125
48162
  label: "Microsoft Teams",
48126
48163
  hint: "A channel in a connected team.",
48127
48164
  connected: true,
48128
- icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons72.ChatOperationalIcon, { size: "sm", "aria-hidden": "true" })
48165
+ icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons73.ChatOperationalIcon, { size: "sm", "aria-hidden": "true" })
48129
48166
  },
48130
48167
  google_chat: {
48131
48168
  label: "Google Chat",
48132
48169
  hint: "A space in a connected account.",
48133
48170
  connected: true,
48134
- icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons72.ChatIcon, { size: "sm", "aria-hidden": "true" })
48171
+ icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons73.ChatIcon, { size: "sm", "aria-hidden": "true" })
48135
48172
  },
48136
48173
  whatsapp: {
48137
48174
  label: "WhatsApp",
48138
48175
  hint: "Template messages to a phone number.",
48139
48176
  connected: false,
48140
- icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons72.ChatLaunchIcon, { size: "sm", "aria-hidden": "true" })
48177
+ icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons73.ChatLaunchIcon, { size: "sm", "aria-hidden": "true" })
48141
48178
  },
48142
48179
  webhook: {
48143
48180
  label: "Webhook",
48144
48181
  hint: "Signed JSON to a URL you own.",
48145
48182
  connected: false,
48146
- icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons72.WebhookIcon, { size: "sm", "aria-hidden": "true" })
48183
+ icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons73.WebhookIcon, { size: "sm", "aria-hidden": "true" })
48147
48184
  }
48148
48185
  };
48149
48186
  var PERSONAL_CHANNEL_META = {
48150
- in_app: { label: "In-app", icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons72.NotificationIcon, { size: "sm", "aria-hidden": "true" }) },
48151
- email: { label: "Email", icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons72.EmailIcon, { size: "sm", "aria-hidden": "true" }) },
48152
- slack_dm: { label: "Slack DM", icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons72.LogoSlackIcon, { size: "sm", "aria-hidden": "true" }) }
48187
+ in_app: { label: "In-app", icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons73.NotificationIcon, { size: "sm", "aria-hidden": "true" }) },
48188
+ email: { label: "Email", icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons73.EmailIcon, { size: "sm", "aria-hidden": "true" }) },
48189
+ slack_dm: { label: "Slack DM", icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons73.LogoSlackIcon, { size: "sm", "aria-hidden": "true" }) }
48153
48190
  };
48154
48191
  var CHANNEL_STATUS_META = {
48155
48192
  verified: { label: "Verified", variant: "success" },
@@ -48161,17 +48198,17 @@ var SEVERITY_META = {
48161
48198
  info: {
48162
48199
  label: "Info",
48163
48200
  variant: "info",
48164
- icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons72.InformationFilledIcon, { size: "sm", "aria-hidden": "true" })
48201
+ icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons73.InformationFilledIcon, { size: "sm", "aria-hidden": "true" })
48165
48202
  },
48166
48203
  warning: {
48167
48204
  label: "Warning",
48168
48205
  variant: "warning",
48169
- icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons72.WarningFilledIcon, { size: "sm", "aria-hidden": "true" })
48206
+ icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons73.WarningFilledIcon, { size: "sm", "aria-hidden": "true" })
48170
48207
  },
48171
48208
  error: {
48172
48209
  label: "Error",
48173
48210
  variant: "error",
48174
- icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons72.ErrorFilledIcon, { size: "sm", "aria-hidden": "true" })
48211
+ icon: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_icons73.ErrorFilledIcon, { size: "sm", "aria-hidden": "true" })
48175
48212
  }
48176
48213
  };
48177
48214
 
@@ -48246,7 +48283,7 @@ function EventCatalogPicker({
48246
48283
  type: "search",
48247
48284
  "aria-label": "Search events",
48248
48285
  placeholder: "Search events",
48249
- leftIcon: /* @__PURE__ */ (0, import_jsx_runtime193.jsx)(import_icons73.SearchIcon, { size: "sm", "aria-hidden": "true" }),
48286
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime193.jsx)(import_icons74.SearchIcon, { size: "sm", "aria-hidden": "true" }),
48250
48287
  value: query,
48251
48288
  onChange: (e) => setQuery(e.target.value),
48252
48289
  clearable: true,
@@ -48338,7 +48375,7 @@ function EventCatalogPicker({
48338
48375
  EventCatalogPicker.displayName = "EventCatalogPicker";
48339
48376
 
48340
48377
  // src/notifications/components/NotificationBell/NotificationBell.tsx
48341
- var import_icons76 = require("@octaviaflow/icons");
48378
+ var import_icons77 = require("@octaviaflow/icons");
48342
48379
  var import_react214 = require("react");
48343
48380
 
48344
48381
  // src/notifications/engine/inbox.ts
@@ -48409,7 +48446,7 @@ function groupInboxByDay(items, now2 = Date.now()) {
48409
48446
  }
48410
48447
 
48411
48448
  // src/notifications/components/NotificationDetailDialog/NotificationDetailDialog.tsx
48412
- var import_icons74 = require("@octaviaflow/icons");
48449
+ var import_icons75 = require("@octaviaflow/icons");
48413
48450
  var import_jsx_runtime194 = require("react/jsx-runtime");
48414
48451
  function NotificationDetailDialog({
48415
48452
  item,
@@ -48440,7 +48477,7 @@ function NotificationDetailDialog({
48440
48477
  Button,
48441
48478
  {
48442
48479
  variant: "ghost",
48443
- leftIcon: /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(import_icons74.ArchiveIcon, { size: "sm", "aria-hidden": "true" }),
48480
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(import_icons75.ArchiveIcon, { size: "sm", "aria-hidden": "true" }),
48444
48481
  onClick: () => {
48445
48482
  onArchive(item);
48446
48483
  onClose();
@@ -48465,7 +48502,7 @@ function NotificationDetailDialog({
48465
48502
  },
48466
48503
  children: [
48467
48504
  resolved.label ?? "Open",
48468
- /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(import_icons74.LaunchIcon, { size: "sm", "aria-hidden": "true" })
48505
+ /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(import_icons75.LaunchIcon, { size: "sm", "aria-hidden": "true" })
48469
48506
  ]
48470
48507
  }
48471
48508
  ) })
@@ -48493,7 +48530,7 @@ function NotificationDetailDialog({
48493
48530
  NotificationDetailDialog.displayName = "NotificationDetailDialog";
48494
48531
 
48495
48532
  // src/notifications/components/NotificationInbox/NotificationInbox.tsx
48496
- var import_icons75 = require("@octaviaflow/icons");
48533
+ var import_icons76 = require("@octaviaflow/icons");
48497
48534
  var import_react213 = require("react");
48498
48535
  var import_jsx_runtime195 = require("react/jsx-runtime");
48499
48536
  var FILTER_OPTIONS = [
@@ -48608,7 +48645,7 @@ function NotificationInbox({
48608
48645
  variant: "ghost",
48609
48646
  "aria-label": "Mark as read",
48610
48647
  onClick: () => onMarkRead([item.id]),
48611
- children: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)(import_icons75.CheckmarkIcon, { size: "sm", "aria-hidden": "true" })
48648
+ children: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)(import_icons76.CheckmarkIcon, { size: "sm", "aria-hidden": "true" })
48612
48649
  }
48613
48650
  ),
48614
48651
  onArchive && /* @__PURE__ */ (0, import_jsx_runtime195.jsx)(
@@ -48618,7 +48655,7 @@ function NotificationInbox({
48618
48655
  variant: "ghost",
48619
48656
  "aria-label": "Archive",
48620
48657
  onClick: () => onArchive([item.id]),
48621
- children: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)(import_icons75.ArchiveIcon, { size: "sm", "aria-hidden": "true" })
48658
+ children: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)(import_icons76.ArchiveIcon, { size: "sm", "aria-hidden": "true" })
48622
48659
  }
48623
48660
  )
48624
48661
  ] })
@@ -48646,7 +48683,7 @@ function NotificationInbox({
48646
48683
  EmptyState,
48647
48684
  {
48648
48685
  size: compact ? "sm" : "md",
48649
- icon: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)(import_icons75.NotificationOffIcon, { "aria-hidden": "true" }),
48686
+ icon: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)(import_icons76.NotificationOffIcon, { "aria-hidden": "true" }),
48650
48687
  title: emptyTitle ?? (activeFilter === "unread" ? "You're all caught up" : activeFilter === "archived" ? "Nothing archived" : "No notifications yet"),
48651
48688
  description: emptyDescription ?? (activeFilter === "all" ? "Run failures, apps that need re-authentication and account activity will show up here." : void 0)
48652
48689
  }
@@ -48774,7 +48811,7 @@ function NotificationBell({
48774
48811
  size: "md",
48775
48812
  className: "ods-notif-bell__trigger",
48776
48813
  "aria-label": hasUnread ? `${label}, ${countLabel} unread` : label,
48777
- children: /* @__PURE__ */ (0, import_jsx_runtime196.jsx)(import_icons76.NotificationIcon, { size: "sm", "aria-hidden": "true" })
48814
+ children: /* @__PURE__ */ (0, import_jsx_runtime196.jsx)(import_icons77.NotificationIcon, { size: "sm", "aria-hidden": "true" })
48778
48815
  }
48779
48816
  ),
48780
48817
  hasUnread && /* @__PURE__ */ (0, import_jsx_runtime196.jsx)("span", { className: "ods-notif-bell__count", "aria-hidden": "true", children: countLabel })
@@ -48798,7 +48835,7 @@ function NotificationBell({
48798
48835
  NotificationBell.displayName = "NotificationBell";
48799
48836
 
48800
48837
  // src/notifications/components/NotificationChannelCard/NotificationChannelCard.tsx
48801
- var import_icons77 = require("@octaviaflow/icons");
48838
+ var import_icons78 = require("@octaviaflow/icons");
48802
48839
  var import_jsx_runtime197 = require("react/jsx-runtime");
48803
48840
  function NotificationChannelCard({
48804
48841
  channel,
@@ -48855,7 +48892,7 @@ function NotificationChannelCard({
48855
48892
  {
48856
48893
  size: "sm",
48857
48894
  variant: "secondary",
48858
- leftIcon: /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(import_icons77.SendIcon, { size: "sm", "aria-hidden": "true" }),
48895
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(import_icons78.SendIcon, { size: "sm", "aria-hidden": "true" }),
48859
48896
  loading: testing,
48860
48897
  loadingText: "Sending\u2026",
48861
48898
  disabled: !channel.enabled,
@@ -48871,7 +48908,7 @@ function NotificationChannelCard({
48871
48908
  variant: "ghost",
48872
48909
  "aria-label": `Edit ${channel.label}`,
48873
48910
  onClick: () => onEdit(channel),
48874
- children: /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(import_icons77.EditIcon, { size: "sm", "aria-hidden": "true" })
48911
+ children: /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(import_icons78.EditIcon, { size: "sm", "aria-hidden": "true" })
48875
48912
  }
48876
48913
  ),
48877
48914
  onRemove && /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(
@@ -48882,7 +48919,7 @@ function NotificationChannelCard({
48882
48919
  "aria-label": `Remove ${channel.label}`,
48883
48920
  className: "ods-notif-channel__remove",
48884
48921
  onClick: () => onRemove(channel),
48885
- children: /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(import_icons77.TrashCanIcon, { size: "sm", "aria-hidden": "true" })
48922
+ children: /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(import_icons78.TrashCanIcon, { size: "sm", "aria-hidden": "true" })
48886
48923
  }
48887
48924
  ),
48888
48925
  onToggle && /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(
@@ -48902,7 +48939,7 @@ function NotificationChannelCard({
48902
48939
  NotificationChannelCard.displayName = "NotificationChannelCard";
48903
48940
 
48904
48941
  // src/notifications/components/NotificationChannelDialog/NotificationChannelDialog.tsx
48905
- var import_icons79 = require("@octaviaflow/icons");
48942
+ var import_icons80 = require("@octaviaflow/icons");
48906
48943
  var import_react216 = require("react");
48907
48944
 
48908
48945
  // src/notifications/engine/channels.ts
@@ -49008,7 +49045,7 @@ function draftFromChannel(channel, fallbackType = "slack") {
49008
49045
  }
49009
49046
 
49010
49047
  // src/notifications/components/NotificationChannelForm/NotificationChannelForm.tsx
49011
- var import_icons78 = require("@octaviaflow/icons");
49048
+ var import_icons79 = require("@octaviaflow/icons");
49012
49049
  var import_react215 = require("react");
49013
49050
  var import_jsx_runtime198 = require("react/jsx-runtime");
49014
49051
  var DEFAULT_TYPES = [
@@ -49124,7 +49161,7 @@ function NotificationChannelForm({
49124
49161
  /* @__PURE__ */ (0, import_jsx_runtime198.jsx)("span", { className: "ods-notif-channel-form__type-label", children: meta2.label }),
49125
49162
  /* @__PURE__ */ (0, import_jsx_runtime198.jsx)("span", { className: "ods-notif-channel-form__type-hint", children: meta2.connected && hasApp ? "Connected" : meta2.hint })
49126
49163
  ] }),
49127
- selected && /* @__PURE__ */ (0, import_jsx_runtime198.jsx)("span", { className: "ods-notif-channel-form__type-check", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime198.jsx)(import_icons78.CheckmarkFilledIcon, { size: "sm" }) })
49164
+ selected && /* @__PURE__ */ (0, import_jsx_runtime198.jsx)("span", { className: "ods-notif-channel-form__type-check", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime198.jsx)(import_icons79.CheckmarkFilledIcon, { size: "sm" }) })
49128
49165
  ]
49129
49166
  },
49130
49167
  type
@@ -49140,7 +49177,7 @@ function NotificationChannelForm({
49140
49177
  {
49141
49178
  size: "sm",
49142
49179
  variant: "primary",
49143
- leftIcon: /* @__PURE__ */ (0, import_jsx_runtime198.jsx)(import_icons78.LaunchIcon, { size: "sm", "aria-hidden": "true" }),
49180
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime198.jsx)(import_icons79.LaunchIcon, { size: "sm", "aria-hidden": "true" }),
49144
49181
  onClick: () => onConnectNew(value.type),
49145
49182
  children: [
49146
49183
  "Connect ",
@@ -49174,7 +49211,7 @@ function NotificationChannelForm({
49174
49211
  {
49175
49212
  size,
49176
49213
  variant: "ghost",
49177
- leftIcon: /* @__PURE__ */ (0, import_jsx_runtime198.jsx)(import_icons78.AddIcon, { size: "sm", "aria-hidden": "true" }),
49214
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime198.jsx)(import_icons79.AddIcon, { size: "sm", "aria-hidden": "true" }),
49178
49215
  onClick: () => onConnectNew(value.type),
49179
49216
  className: "ods-notif-channel-form__connect",
49180
49217
  children: "Connect new"
@@ -49325,7 +49362,7 @@ function NotificationChannelForm({
49325
49362
  )
49326
49363
  ] }),
49327
49364
  showSummary && summary && /* @__PURE__ */ (0, import_jsx_runtime198.jsxs)("div", { className: "ods-notif-channel-form__summary", "aria-live": "polite", children: [
49328
- /* @__PURE__ */ (0, import_jsx_runtime198.jsx)(import_icons78.CheckmarkFilledIcon, { size: "sm", "aria-hidden": "true" }),
49365
+ /* @__PURE__ */ (0, import_jsx_runtime198.jsx)(import_icons79.CheckmarkFilledIcon, { size: "sm", "aria-hidden": "true" }),
49329
49366
  /* @__PURE__ */ (0, import_jsx_runtime198.jsx)("span", { children: summary })
49330
49367
  ] })
49331
49368
  ] });
@@ -49419,7 +49456,7 @@ function NotificationChannelDialog({
49419
49456
  Button,
49420
49457
  {
49421
49458
  variant: "secondary",
49422
- leftIcon: /* @__PURE__ */ (0, import_jsx_runtime199.jsx)(import_icons79.SendIcon, { size: "sm", "aria-hidden": "true" }),
49459
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime199.jsx)(import_icons80.SendIcon, { size: "sm", "aria-hidden": "true" }),
49423
49460
  loading: testing,
49424
49461
  loadingText: "Sending\u2026",
49425
49462
  disabled: !complete || saving,
@@ -49464,7 +49501,7 @@ function NotificationChannelDialog({
49464
49501
  NotificationChannelDialog.displayName = "NotificationChannelDialog";
49465
49502
 
49466
49503
  // src/notifications/components/NotificationChannelList/NotificationChannelList.tsx
49467
- var import_icons80 = require("@octaviaflow/icons");
49504
+ var import_icons81 = require("@octaviaflow/icons");
49468
49505
  var import_jsx_runtime200 = require("react/jsx-runtime");
49469
49506
  function NotificationChannelList({
49470
49507
  channels,
@@ -49493,7 +49530,7 @@ function NotificationChannelList({
49493
49530
  {
49494
49531
  size: "sm",
49495
49532
  variant: "secondary",
49496
- leftIcon: /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(import_icons80.AddIcon, { size: "sm", "aria-hidden": "true" }),
49533
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(import_icons81.AddIcon, { size: "sm", "aria-hidden": "true" }),
49497
49534
  onClick: onAdd,
49498
49535
  children: "Add channel"
49499
49536
  }
@@ -49502,14 +49539,14 @@ function NotificationChannelList({
49502
49539
  channels.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(
49503
49540
  EmptyState,
49504
49541
  {
49505
- icon: /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(import_icons80.ConnectIcon, { "aria-hidden": "true" }),
49542
+ icon: /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(import_icons81.ConnectIcon, { "aria-hidden": "true" }),
49506
49543
  title: "No channels yet",
49507
49544
  description: "A channel is somewhere alerts go besides the in-app inbox \u2014 a Slack channel, an email address, a webhook. Add one, then point rules at it.",
49508
49545
  action: canAdd ? /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(
49509
49546
  Button,
49510
49547
  {
49511
49548
  variant: "primary",
49512
- leftIcon: /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(import_icons80.AddIcon, { size: "sm", "aria-hidden": "true" }),
49549
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(import_icons81.AddIcon, { size: "sm", "aria-hidden": "true" }),
49513
49550
  onClick: onAdd,
49514
49551
  children: "Add channel"
49515
49552
  }
@@ -49533,7 +49570,7 @@ function NotificationChannelList({
49533
49570
  channel.id
49534
49571
  )),
49535
49572
  canAdd && /* @__PURE__ */ (0, import_jsx_runtime200.jsxs)("button", { type: "button", className: "ods-notif-channels__add", onClick: onAdd, children: [
49536
- /* @__PURE__ */ (0, import_jsx_runtime200.jsx)("span", { className: "ods-notif-channels__add-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(import_icons80.AddIcon, { size: "sm" }) }),
49573
+ /* @__PURE__ */ (0, import_jsx_runtime200.jsx)("span", { className: "ods-notif-channels__add-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(import_icons81.AddIcon, { size: "sm" }) }),
49537
49574
  "Add channel"
49538
49575
  ] })
49539
49576
  ] })
@@ -49542,7 +49579,7 @@ function NotificationChannelList({
49542
49579
  NotificationChannelList.displayName = "NotificationChannelList";
49543
49580
 
49544
49581
  // src/notifications/components/NotificationPreferenceMatrix/NotificationPreferenceMatrix.tsx
49545
- var import_icons81 = require("@octaviaflow/icons");
49582
+ var import_icons82 = require("@octaviaflow/icons");
49546
49583
  var import_react217 = require("react");
49547
49584
 
49548
49585
  // src/notifications/engine/preferences.ts
@@ -49784,7 +49821,7 @@ function NotificationPreferenceMatrix({
49784
49821
  "aria-label": `${event.label} via ${colLabel}`
49785
49822
  }
49786
49823
  ),
49787
- locked && /* @__PURE__ */ (0, import_jsx_runtime201.jsx)("span", { className: "ods-pref-matrix__lock", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime201.jsx)(import_icons81.LockedIcon, { size: "sm" }) })
49824
+ locked && /* @__PURE__ */ (0, import_jsx_runtime201.jsx)("span", { className: "ods-pref-matrix__lock", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime201.jsx)(import_icons82.LockedIcon, { size: "sm" }) })
49788
49825
  ] });
49789
49826
  return /* @__PURE__ */ (0, import_jsx_runtime201.jsx)(
49790
49827
  "div",
@@ -49815,7 +49852,7 @@ function NotificationPreferenceMatrix({
49815
49852
  NotificationPreferenceMatrix.displayName = "NotificationPreferenceMatrix";
49816
49853
 
49817
49854
  // src/notifications/components/NotificationRuleEditor/NotificationRuleEditor.tsx
49818
- var import_icons82 = require("@octaviaflow/icons");
49855
+ var import_icons83 = require("@octaviaflow/icons");
49819
49856
  var import_react218 = require("react");
49820
49857
  var import_jsx_runtime202 = require("react/jsx-runtime");
49821
49858
  var COOLDOWN_OPTIONS = [
@@ -49901,7 +49938,7 @@ function NotificationRuleEditor({
49901
49938
  const canSave = value.events.length > 0 && value.channelIds.length > 0 && !saving && !readOnly;
49902
49939
  return /* @__PURE__ */ (0, import_jsx_runtime202.jsxs)("div", { className: cn("ods-rule-editor", className), id: baseId, children: [
49903
49940
  /* @__PURE__ */ (0, import_jsx_runtime202.jsxs)("div", { className: "ods-rule-editor__summary", "aria-live": "polite", children: [
49904
- /* @__PURE__ */ (0, import_jsx_runtime202.jsx)("span", { className: "ods-rule-editor__summary-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime202.jsx)(import_icons82.RuleIcon, { size: "sm" }) }),
49941
+ /* @__PURE__ */ (0, import_jsx_runtime202.jsx)("span", { className: "ods-rule-editor__summary-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime202.jsx)(import_icons83.RuleIcon, { size: "sm" }) }),
49905
49942
  /* @__PURE__ */ (0, import_jsx_runtime202.jsx)("span", { children: sentence })
49906
49943
  ] }),
49907
49944
  /* @__PURE__ */ (0, import_jsx_runtime202.jsx)(
@@ -49966,7 +50003,7 @@ function NotificationRuleEditor({
49966
50003
  {
49967
50004
  size: "sm",
49968
50005
  variant: "ghost",
49969
- leftIcon: /* @__PURE__ */ (0, import_jsx_runtime202.jsx)(import_icons82.AddIcon, { size: "sm", "aria-hidden": "true" }),
50006
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime202.jsx)(import_icons83.AddIcon, { size: "sm", "aria-hidden": "true" }),
49970
50007
  onClick: onAddChannel,
49971
50008
  children: "Add channel"
49972
50009
  }
@@ -50160,7 +50197,7 @@ function NotificationRuleEditor({
50160
50197
  NotificationRuleEditor.displayName = "NotificationRuleEditor";
50161
50198
 
50162
50199
  // src/notifications/components/NotificationRuleList/NotificationRuleList.tsx
50163
- var import_icons83 = require("@octaviaflow/icons");
50200
+ var import_icons84 = require("@octaviaflow/icons");
50164
50201
  var import_jsx_runtime203 = require("react/jsx-runtime");
50165
50202
  function NotificationRuleList({
50166
50203
  rules,
@@ -50190,7 +50227,7 @@ function NotificationRuleList({
50190
50227
  {
50191
50228
  size: "sm",
50192
50229
  variant: "secondary",
50193
- leftIcon: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(import_icons83.AddIcon, { size: "sm", "aria-hidden": "true" }),
50230
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(import_icons84.AddIcon, { size: "sm", "aria-hidden": "true" }),
50194
50231
  onClick: onCreate,
50195
50232
  children: "New rule"
50196
50233
  }
@@ -50200,14 +50237,14 @@ function NotificationRuleList({
50200
50237
  /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(
50201
50238
  EmptyState,
50202
50239
  {
50203
- icon: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(import_icons83.RuleIcon, { "aria-hidden": "true" }),
50240
+ icon: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(import_icons84.RuleIcon, { "aria-hidden": "true" }),
50204
50241
  title: "No rules yet",
50205
50242
  description: "Rules route events to shared channels \u2014 a Slack channel, an ops mailbox, a webhook \u2014 with thresholds and timing you choose. Everyone still gets their personal inbox and email without a rule.",
50206
50243
  action: canCreate ? /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(
50207
50244
  Button,
50208
50245
  {
50209
50246
  variant: "primary",
50210
- leftIcon: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(import_icons83.AddIcon, { size: "sm", "aria-hidden": "true" }),
50247
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(import_icons84.AddIcon, { size: "sm", "aria-hidden": "true" }),
50211
50248
  onClick: onCreate,
50212
50249
  children: "New rule"
50213
50250
  }
@@ -50267,7 +50304,7 @@ function NotificationRuleList({
50267
50304
  variant: "ghost",
50268
50305
  "aria-label": `Edit ${rule.name || "rule"}`,
50269
50306
  onClick: () => onEdit(rule),
50270
- children: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(import_icons83.EditIcon, { size: "sm", "aria-hidden": "true" })
50307
+ children: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(import_icons84.EditIcon, { size: "sm", "aria-hidden": "true" })
50271
50308
  }
50272
50309
  ),
50273
50310
  onDuplicate && /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(
@@ -50277,7 +50314,7 @@ function NotificationRuleList({
50277
50314
  variant: "ghost",
50278
50315
  "aria-label": `Duplicate ${rule.name || "rule"}`,
50279
50316
  onClick: () => onDuplicate(rule),
50280
- children: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(import_icons83.CopyIcon, { size: "sm", "aria-hidden": "true" })
50317
+ children: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(import_icons84.CopyIcon, { size: "sm", "aria-hidden": "true" })
50281
50318
  }
50282
50319
  ),
50283
50320
  onDelete && /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(
@@ -50287,7 +50324,7 @@ function NotificationRuleList({
50287
50324
  variant: "ghost",
50288
50325
  "aria-label": `Delete ${rule.name || "rule"}`,
50289
50326
  onClick: () => onDelete(rule),
50290
- children: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(import_icons83.TrashCanIcon, { size: "sm", "aria-hidden": "true" })
50327
+ children: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(import_icons84.TrashCanIcon, { size: "sm", "aria-hidden": "true" })
50291
50328
  }
50292
50329
  )
50293
50330
  ] })