@octaviaflow/core 3.1.0-beta.107 → 3.1.0-beta.109

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.js CHANGED
@@ -2420,14 +2420,32 @@ import { useBreadcrumbItem, useBreadcrumbs } from "react-aria";
2420
2420
  import { Fragment as Fragment5, jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
2421
2421
  function BreadcrumbItem({ item, isCurrent }) {
2422
2422
  const ref = useRef3(null);
2423
+ const interactive = !isCurrent && (!!item.href || !!item.onClick);
2423
2424
  const { itemProps } = useBreadcrumbItem(
2424
- { children: item.label, isCurrent, elementType: item.href ? "a" : "span" },
2425
+ {
2426
+ children: item.label,
2427
+ isCurrent,
2428
+ elementType: item.href ? "a" : item.onClick && !isCurrent ? "button" : "span"
2429
+ },
2425
2430
  ref
2426
2431
  );
2427
2432
  const content = /* @__PURE__ */ jsxs8(Fragment5, { children: [
2428
2433
  item.icon && /* @__PURE__ */ jsx8("span", { className: "ods-breadcrumb__icon", children: item.icon }),
2429
2434
  /* @__PURE__ */ jsx8("span", { children: item.label })
2430
2435
  ] });
2436
+ if (item.onClick && !item.href && interactive) {
2437
+ return /* @__PURE__ */ jsx8(
2438
+ "button",
2439
+ {
2440
+ ...itemProps,
2441
+ ref,
2442
+ type: "button",
2443
+ onClick: item.onClick,
2444
+ className: cn("ods-breadcrumb__link", "ods-breadcrumb__link--button"),
2445
+ children: content
2446
+ }
2447
+ );
2448
+ }
2431
2449
  if (item.href && !isCurrent) {
2432
2450
  return /* @__PURE__ */ jsx8(
2433
2451
  "a",
@@ -34428,6 +34446,8 @@ import {
34428
34446
  useRef as useRef50,
34429
34447
  useState as useState71
34430
34448
  } from "react";
34449
+ import { createPortal as createPortal19 } from "react-dom";
34450
+ import { AddIcon as AddIcon6, CloseIcon as CloseIcon20 } from "@octaviaflow/icons";
34431
34451
 
34432
34452
  // src/components/ExpressionField/parseExpression.ts
34433
34453
  var CALL_NAME_SOURCE = "(?:[A-Z_][A-Z0-9_]*|user\\.[A-Za-z_][A-Za-z0-9_]*)";
@@ -34647,6 +34667,16 @@ function insideCallArguments(textBeforeCaret) {
34647
34667
  }
34648
34668
  return depth > 0;
34649
34669
  }
34670
+ function anchorRect(el) {
34671
+ const box = el.getBoundingClientRect();
34672
+ const width = Math.max(300, box.width);
34673
+ return {
34674
+ top: box.bottom + 4,
34675
+ // Keep it on screen when the chip sits near the right edge.
34676
+ left: Math.max(8, Math.min(box.left, window.innerWidth - width - 8)),
34677
+ width
34678
+ };
34679
+ }
34650
34680
  function argSummary(arg, nameOf, depth = 2) {
34651
34681
  const trimmed = arg.trim();
34652
34682
  const call = parseCall(trimmed);
@@ -34835,17 +34865,7 @@ function ExpressionField({
34835
34865
  const openEditor = useCallback50((chip) => {
34836
34866
  const raw = chip.getAttribute("data-value") ?? "";
34837
34867
  if (!parseCall(raw)) return;
34838
- const box = chip.getBoundingClientRect();
34839
- const host = fieldRef.current?.getBoundingClientRect();
34840
- setEditing({
34841
- el: chip,
34842
- raw,
34843
- rect: {
34844
- top: box.bottom - (host?.top ?? 0) + 4,
34845
- left: Math.max(0, box.left - (host?.left ?? 0)),
34846
- width: Math.max(300, box.width)
34847
- }
34848
- });
34868
+ setEditing({ el: chip, raw, rect: anchorRect(chip) });
34849
34869
  }, []);
34850
34870
  const applyEditor = useCallback50(
34851
34871
  (raw) => {
@@ -35071,156 +35091,173 @@ function CallEditor({
35071
35091
  setDraft((d) => replaceArgument(d, [...path, index], bare));
35072
35092
  if (kind === "function" || parseCall(bare)) setPath((pth) => [...pth, index]);
35073
35093
  };
35074
- return /* @__PURE__ */ jsxs141(
35075
- "div",
35076
- {
35077
- ref: panelRef,
35078
- className: "ods-expression-field__editor",
35079
- style: { top: rect.top, left: rect.left, width: rect.width },
35080
- role: "dialog",
35081
- "aria-label": `Edit ${crumbs[0]?.label ?? "function"}`,
35082
- children: [
35083
- /* @__PURE__ */ jsxs141("div", { className: "ods-expression-field__editor-head", children: [
35084
- /* @__PURE__ */ jsx147("nav", { className: "ods-expression-field__editor-crumbs", "aria-label": "Nested functions", children: crumbs.map((crumb, i) => /* @__PURE__ */ jsxs141("span", { children: [
35085
- i > 0 && /* @__PURE__ */ jsx147("span", { "aria-hidden": "true", children: " \u203A " }),
35094
+ const [pos, setPos] = useState71(rect);
35095
+ useEffect56(() => {
35096
+ const follow = () => setPos(anchorRect(anchor));
35097
+ window.addEventListener("scroll", follow, true);
35098
+ window.addEventListener("resize", follow);
35099
+ return () => {
35100
+ window.removeEventListener("scroll", follow, true);
35101
+ window.removeEventListener("resize", follow);
35102
+ };
35103
+ }, [anchor]);
35104
+ if (typeof document === "undefined") return null;
35105
+ return createPortal19(
35106
+ /* @__PURE__ */ jsxs141(
35107
+ "div",
35108
+ {
35109
+ ref: panelRef,
35110
+ "data-ods-floating": "",
35111
+ className: "ods-expression-field__editor",
35112
+ style: { top: pos.top, left: pos.left, width: pos.width },
35113
+ role: "dialog",
35114
+ "aria-label": `Edit ${crumbs[0]?.label ?? "function"}`,
35115
+ children: [
35116
+ /* @__PURE__ */ jsxs141("div", { className: "ods-expression-field__editor-head", children: [
35086
35117
  /* @__PURE__ */ jsx147(
35087
- "button",
35118
+ Breadcrumb,
35088
35119
  {
35089
- type: "button",
35090
- disabled: i === crumbs.length - 1,
35091
- onClick: () => setPath(crumb.path),
35092
- children: crumb.label
35120
+ className: "ods-expression-field__editor-crumbs",
35121
+ items: crumbs.map((crumb) => ({
35122
+ label: crumb.label,
35123
+ onClick: () => setPath(crumb.path)
35124
+ }))
35093
35125
  }
35094
- )
35095
- ] }, crumb.path.join(".") || "root")) }),
35096
- /* @__PURE__ */ jsx147(
35097
- "button",
35126
+ ),
35127
+ /* @__PURE__ */ jsx147(Button, { variant: "ghost", size: "sm", onClick: () => setRawMode((r) => !r), children: rawMode ? "Back to fields" : "Edit as text" })
35128
+ ] }),
35129
+ rawMode ? /* @__PURE__ */ jsx147(
35130
+ "textarea",
35098
35131
  {
35099
- type: "button",
35100
- className: "ods-expression-field__editor-link",
35101
- onClick: () => setRawMode((r) => !r),
35102
- children: rawMode ? "Back to fields" : "Edit as text"
35132
+ className: "ods-expression-field__editor-raw",
35133
+ value: draft,
35134
+ rows: 3,
35135
+ "aria-label": "Expression",
35136
+ onChange: (e) => setDraft(e.target.value)
35103
35137
  }
35104
- )
35105
- ] }),
35106
- rawMode ? /* @__PURE__ */ jsx147(
35107
- "textarea",
35108
- {
35109
- className: "ods-expression-field__editor-raw",
35110
- value: draft,
35111
- rows: 3,
35112
- "aria-label": "Expression",
35113
- onChange: (e) => setDraft(e.target.value)
35114
- }
35115
- ) : /* @__PURE__ */ jsxs141("div", { className: "ods-expression-field__editor-rows", children: [
35116
- args.map((arg, index) => {
35117
- const kind = argumentKind(arg);
35118
- const rowLabel = names[index] ?? `argument ${index + 1}`;
35119
- const nested = kind === "call" ? parseCall(arg) : void 0;
35120
- return (
35121
- // eslint-disable-next-line react/no-array-index-key
35122
- /* @__PURE__ */ jsxs141("div", { className: "ods-expression-field__editor-row", children: [
35123
- /* @__PURE__ */ jsxs141("span", { className: "ods-expression-field__editor-row-head", children: [
35124
- /* @__PURE__ */ jsx147("span", { id: `arg-${index}-label`, children: rowLabel }),
35125
- /* @__PURE__ */ jsx147(
35126
- "button",
35127
- {
35128
- type: "button",
35129
- className: "ods-expression-field__editor-remove",
35130
- "aria-label": `Remove ${rowLabel}`,
35131
- title: "Remove this argument",
35132
- onClick: () => removeArg(index),
35133
- children: "\u2715"
35134
- }
35135
- )
35136
- ] }),
35137
- nested ? /* @__PURE__ */ jsxs141(
35138
- "div",
35139
- {
35140
- className: "ods-expression-field__editor-nested",
35141
- onDragOver: (e) => {
35142
- if (e.dataTransfer.types.includes("application/x-fx-insert")) e.preventDefault();
35143
- },
35144
- onDrop: dropInto(index),
35145
- children: [
35146
- /* @__PURE__ */ jsx147("code", { children: argSummary(arg, nameOf) }),
35147
- /* @__PURE__ */ jsxs141("span", { children: [
35148
- /* @__PURE__ */ jsx147("button", { type: "button", onClick: () => setPath([...path, index]), children: "Open" }),
35149
- /* @__PURE__ */ jsx147("button", { type: "button", onClick: () => setArg(index, ""), "aria-label": `Clear ${rowLabel}`, children: "Clear" })
35150
- ] })
35151
- ]
35152
- }
35153
- ) : kind === "reference" ? (
35154
- // A reference is a value from somewhere else — named, never
35155
- // its raw `ods://…` path, here as much as in the field.
35156
- /* @__PURE__ */ jsxs141(
35138
+ ) : /* @__PURE__ */ jsxs141("div", { className: "ods-expression-field__editor-rows", children: [
35139
+ args.map((arg, index) => {
35140
+ const kind = argumentKind(arg);
35141
+ const rowLabel = names[index] ?? `argument ${index + 1}`;
35142
+ const nested = kind === "call" ? parseCall(arg) : void 0;
35143
+ return (
35144
+ // eslint-disable-next-line react/no-array-index-key
35145
+ /* @__PURE__ */ jsxs141("div", { className: "ods-expression-field__editor-row", children: [
35146
+ /* @__PURE__ */ jsxs141("span", { className: "ods-expression-field__editor-row-head", children: [
35147
+ /* @__PURE__ */ jsx147("span", { className: "ods-expression-field__editor-row-name", id: `arg-${index}-label`, children: rowLabel }),
35148
+ /* @__PURE__ */ jsx147(
35149
+ Button,
35150
+ {
35151
+ variant: "icon",
35152
+ size: "sm",
35153
+ "aria-label": `Remove ${rowLabel}`,
35154
+ title: "Remove this argument",
35155
+ onClick: () => removeArg(index),
35156
+ children: /* @__PURE__ */ jsx147(CloseIcon20, { size: "sm" })
35157
+ }
35158
+ )
35159
+ ] }),
35160
+ nested ? /* @__PURE__ */ jsxs141(
35157
35161
  "div",
35158
35162
  {
35159
- className: "ods-expression-field__editor-ref",
35163
+ className: "ods-expression-field__editor-nested",
35160
35164
  onDragOver: (e) => {
35161
35165
  if (e.dataTransfer.types.includes("application/x-fx-insert")) e.preventDefault();
35162
35166
  },
35163
35167
  onDrop: dropInto(index),
35164
35168
  children: [
35165
- /* @__PURE__ */ jsx147(
35166
- "span",
35167
- {
35168
- className: "ods-expression-field__pill",
35169
- title: arg,
35170
- "aria-labelledby": `arg-${index}-label`,
35171
- children: labelFor(arg.startsWith("ods://") ? `{{${arg}}}` : arg)
35172
- }
35173
- ),
35174
- /* @__PURE__ */ jsx147("button", { type: "button", onClick: () => setArg(index, ""), "aria-label": `Clear ${rowLabel}`, children: "Clear" })
35169
+ /* @__PURE__ */ jsx147("code", { children: argSummary(arg, nameOf) }),
35170
+ /* @__PURE__ */ jsxs141("span", { children: [
35171
+ /* @__PURE__ */ jsx147(Button, { variant: "secondary", size: "sm", onClick: () => setPath([...path, index]), children: "Open" }),
35172
+ /* @__PURE__ */ jsx147(
35173
+ Button,
35174
+ {
35175
+ variant: "ghost",
35176
+ size: "sm",
35177
+ "aria-label": `Clear ${rowLabel}`,
35178
+ onClick: () => setArg(index, ""),
35179
+ children: "Clear"
35180
+ }
35181
+ )
35182
+ ] })
35175
35183
  ]
35176
35184
  }
35185
+ ) : kind === "reference" ? (
35186
+ // A reference is a value from somewhere else — named, never
35187
+ // its raw `ods://…` path, here as much as in the field.
35188
+ /* @__PURE__ */ jsxs141(
35189
+ "div",
35190
+ {
35191
+ className: "ods-expression-field__editor-ref",
35192
+ onDragOver: (e) => {
35193
+ if (e.dataTransfer.types.includes("application/x-fx-insert")) e.preventDefault();
35194
+ },
35195
+ onDrop: dropInto(index),
35196
+ children: [
35197
+ /* @__PURE__ */ jsx147(
35198
+ "span",
35199
+ {
35200
+ className: "ods-expression-field__pill",
35201
+ title: arg,
35202
+ "aria-labelledby": `arg-${index}-label`,
35203
+ children: labelFor(arg.startsWith("ods://") ? `{{${arg}}}` : arg)
35204
+ }
35205
+ ),
35206
+ /* @__PURE__ */ jsx147(
35207
+ Button,
35208
+ {
35209
+ variant: "ghost",
35210
+ size: "sm",
35211
+ "aria-label": `Clear ${rowLabel}`,
35212
+ onClick: () => setArg(index, ""),
35213
+ children: "Clear"
35214
+ }
35215
+ )
35216
+ ]
35217
+ }
35218
+ )
35219
+ ) : /* @__PURE__ */ jsx147(
35220
+ "input",
35221
+ {
35222
+ "aria-labelledby": `arg-${index}-label`,
35223
+ value: arg,
35224
+ placeholder: 'a value, "text", or drag one in',
35225
+ "data-kind": kind,
35226
+ onChange: (e) => setArg(index, e.target.value),
35227
+ onDragOver: (e) => {
35228
+ if (e.dataTransfer.types.includes("application/x-fx-insert")) e.preventDefault();
35229
+ },
35230
+ onDrop: dropInto(index)
35231
+ }
35177
35232
  )
35178
- ) : /* @__PURE__ */ jsx147(
35179
- "input",
35180
- {
35181
- "aria-labelledby": `arg-${index}-label`,
35182
- value: arg,
35183
- placeholder: 'a value, "text", or drag one in',
35184
- "data-kind": kind,
35185
- onChange: (e) => setArg(index, e.target.value),
35186
- onDragOver: (e) => {
35187
- if (e.dataTransfer.types.includes("application/x-fx-insert")) e.preventDefault();
35188
- },
35189
- onDrop: dropInto(index)
35190
- }
35191
- )
35192
- ] }, index)
35193
- );
35194
- }),
35195
- /* @__PURE__ */ jsx147(
35196
- "button",
35197
- {
35198
- type: "button",
35199
- className: "ods-expression-field__editor-add",
35200
- onClick: () => setDraft((d) => {
35201
- const at = callAt(d, path);
35202
- if (!at) return d;
35203
- const next = [...at.args, '""'];
35204
- return path.length === 0 ? formatCall(at.name, next) : replaceArgument(d, path, `${at.name}(${next.join(", ")})`);
35205
- }),
35206
- children: "+ Add argument"
35207
- }
35208
- )
35209
- ] }),
35210
- /* @__PURE__ */ jsxs141("div", { className: "ods-expression-field__editor-foot", children: [
35211
- /* @__PURE__ */ jsx147("button", { type: "button", onClick: onCancel, children: "Cancel" }),
35212
- /* @__PURE__ */ jsx147(
35213
- "button",
35214
- {
35215
- type: "button",
35216
- className: "ods-expression-field__editor-primary",
35217
- onClick: () => onApply(draft),
35218
- children: "Apply"
35219
- }
35220
- )
35221
- ] })
35222
- ]
35223
- }
35233
+ ] }, index)
35234
+ );
35235
+ }),
35236
+ /* @__PURE__ */ jsx147(
35237
+ Button,
35238
+ {
35239
+ variant: "ghost",
35240
+ size: "sm",
35241
+ fullWidth: true,
35242
+ leftIcon: /* @__PURE__ */ jsx147(AddIcon6, { size: "sm" }),
35243
+ onClick: () => setDraft((d) => {
35244
+ const at = callAt(d, path);
35245
+ if (!at) return d;
35246
+ const next = [...at.args, '""'];
35247
+ return path.length === 0 ? formatCall(at.name, next) : replaceArgument(d, path, `${at.name}(${next.join(", ")})`);
35248
+ }),
35249
+ children: "Add argument"
35250
+ }
35251
+ )
35252
+ ] }),
35253
+ /* @__PURE__ */ jsxs141("div", { className: "ods-expression-field__editor-foot", children: [
35254
+ /* @__PURE__ */ jsx147(Button, { variant: "secondary", size: "sm", onClick: onCancel, children: "Cancel" }),
35255
+ /* @__PURE__ */ jsx147(Button, { variant: "primary", size: "sm", onClick: () => onApply(draft), children: "Apply" })
35256
+ ] })
35257
+ ]
35258
+ }
35259
+ ),
35260
+ document.body
35224
35261
  );
35225
35262
  }
35226
35263
 
@@ -39613,7 +39650,7 @@ function draftFromChannel(channel, fallbackType = "slack") {
39613
39650
  }
39614
39651
 
39615
39652
  // src/notifications/components/NotificationChannelForm/NotificationChannelForm.tsx
39616
- import { AddIcon as AddIcon6, CheckmarkFilledIcon as CheckmarkFilledIcon3, LaunchIcon as LaunchIcon2 } from "@octaviaflow/icons";
39653
+ import { AddIcon as AddIcon7, CheckmarkFilledIcon as CheckmarkFilledIcon3, LaunchIcon as LaunchIcon2 } from "@octaviaflow/icons";
39617
39654
  import { useId as useId68, useState as useState83 } from "react";
39618
39655
  import { jsx as jsx164, jsxs as jsxs156 } from "react/jsx-runtime";
39619
39656
  var DEFAULT_TYPES = [
@@ -39779,7 +39816,7 @@ function NotificationChannelForm({
39779
39816
  {
39780
39817
  size,
39781
39818
  variant: "ghost",
39782
- leftIcon: /* @__PURE__ */ jsx164(AddIcon6, { size: "sm", "aria-hidden": "true" }),
39819
+ leftIcon: /* @__PURE__ */ jsx164(AddIcon7, { size: "sm", "aria-hidden": "true" }),
39783
39820
  onClick: () => onConnectNew(value.type),
39784
39821
  className: "ods-notif-channel-form__connect",
39785
39822
  children: "Connect new"
@@ -40069,7 +40106,7 @@ function NotificationChannelDialog({
40069
40106
  NotificationChannelDialog.displayName = "NotificationChannelDialog";
40070
40107
 
40071
40108
  // src/notifications/components/NotificationChannelList/NotificationChannelList.tsx
40072
- import { AddIcon as AddIcon7, ConnectIcon } from "@octaviaflow/icons";
40109
+ import { AddIcon as AddIcon8, ConnectIcon } from "@octaviaflow/icons";
40073
40110
  import { jsx as jsx166, jsxs as jsxs158 } from "react/jsx-runtime";
40074
40111
  function NotificationChannelList({
40075
40112
  channels,
@@ -40098,7 +40135,7 @@ function NotificationChannelList({
40098
40135
  {
40099
40136
  size: "sm",
40100
40137
  variant: "secondary",
40101
- leftIcon: /* @__PURE__ */ jsx166(AddIcon7, { size: "sm", "aria-hidden": "true" }),
40138
+ leftIcon: /* @__PURE__ */ jsx166(AddIcon8, { size: "sm", "aria-hidden": "true" }),
40102
40139
  onClick: onAdd,
40103
40140
  children: "Add channel"
40104
40141
  }
@@ -40114,7 +40151,7 @@ function NotificationChannelList({
40114
40151
  Button,
40115
40152
  {
40116
40153
  variant: "primary",
40117
- leftIcon: /* @__PURE__ */ jsx166(AddIcon7, { size: "sm", "aria-hidden": "true" }),
40154
+ leftIcon: /* @__PURE__ */ jsx166(AddIcon8, { size: "sm", "aria-hidden": "true" }),
40118
40155
  onClick: onAdd,
40119
40156
  children: "Add channel"
40120
40157
  }
@@ -40138,7 +40175,7 @@ function NotificationChannelList({
40138
40175
  channel.id
40139
40176
  )),
40140
40177
  canAdd && /* @__PURE__ */ jsxs158("button", { type: "button", className: "ods-notif-channels__add", onClick: onAdd, children: [
40141
- /* @__PURE__ */ jsx166("span", { className: "ods-notif-channels__add-icon", "aria-hidden": "true", children: /* @__PURE__ */ jsx166(AddIcon7, { size: "sm" }) }),
40178
+ /* @__PURE__ */ jsx166("span", { className: "ods-notif-channels__add-icon", "aria-hidden": "true", children: /* @__PURE__ */ jsx166(AddIcon8, { size: "sm" }) }),
40142
40179
  "Add channel"
40143
40180
  ] })
40144
40181
  ] })
@@ -40420,7 +40457,7 @@ function NotificationPreferenceMatrix({
40420
40457
  NotificationPreferenceMatrix.displayName = "NotificationPreferenceMatrix";
40421
40458
 
40422
40459
  // src/notifications/components/NotificationRuleEditor/NotificationRuleEditor.tsx
40423
- import { AddIcon as AddIcon8, RuleIcon } from "@octaviaflow/icons";
40460
+ import { AddIcon as AddIcon9, RuleIcon } from "@octaviaflow/icons";
40424
40461
  import { useId as useId70, useMemo as useMemo45 } from "react";
40425
40462
  import { Fragment as Fragment68, jsx as jsx168, jsxs as jsxs160 } from "react/jsx-runtime";
40426
40463
  var COOLDOWN_OPTIONS = [
@@ -40571,7 +40608,7 @@ function NotificationRuleEditor({
40571
40608
  {
40572
40609
  size: "sm",
40573
40610
  variant: "ghost",
40574
- leftIcon: /* @__PURE__ */ jsx168(AddIcon8, { size: "sm", "aria-hidden": "true" }),
40611
+ leftIcon: /* @__PURE__ */ jsx168(AddIcon9, { size: "sm", "aria-hidden": "true" }),
40575
40612
  onClick: onAddChannel,
40576
40613
  children: "Add channel"
40577
40614
  }
@@ -40765,7 +40802,7 @@ function NotificationRuleEditor({
40765
40802
  NotificationRuleEditor.displayName = "NotificationRuleEditor";
40766
40803
 
40767
40804
  // src/notifications/components/NotificationRuleList/NotificationRuleList.tsx
40768
- import { AddIcon as AddIcon9, CopyIcon as CopyIcon6, EditIcon as EditIcon2, RuleIcon as RuleIcon2, TrashCanIcon as TrashCanIcon4 } from "@octaviaflow/icons";
40805
+ import { AddIcon as AddIcon10, CopyIcon as CopyIcon6, EditIcon as EditIcon2, RuleIcon as RuleIcon2, TrashCanIcon as TrashCanIcon4 } from "@octaviaflow/icons";
40769
40806
  import { Fragment as Fragment69, jsx as jsx169, jsxs as jsxs161 } from "react/jsx-runtime";
40770
40807
  function NotificationRuleList({
40771
40808
  rules,
@@ -40795,7 +40832,7 @@ function NotificationRuleList({
40795
40832
  {
40796
40833
  size: "sm",
40797
40834
  variant: "secondary",
40798
- leftIcon: /* @__PURE__ */ jsx169(AddIcon9, { size: "sm", "aria-hidden": "true" }),
40835
+ leftIcon: /* @__PURE__ */ jsx169(AddIcon10, { size: "sm", "aria-hidden": "true" }),
40799
40836
  onClick: onCreate,
40800
40837
  children: "New rule"
40801
40838
  }
@@ -40812,7 +40849,7 @@ function NotificationRuleList({
40812
40849
  Button,
40813
40850
  {
40814
40851
  variant: "primary",
40815
- leftIcon: /* @__PURE__ */ jsx169(AddIcon9, { size: "sm", "aria-hidden": "true" }),
40852
+ leftIcon: /* @__PURE__ */ jsx169(AddIcon10, { size: "sm", "aria-hidden": "true" }),
40816
40853
  onClick: onCreate,
40817
40854
  children: "New rule"
40818
40855
  }