@octaviaflow/core 3.0.18-beta.15 → 3.0.18-beta.16

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.
@@ -17,6 +17,12 @@ export interface ConfigPanelProps {
17
17
  kindLabel?: string;
18
18
  /** Optional icon rendered before the title. */
19
19
  icon?: ReactNode;
20
+ /**
21
+ * Modular header action slot — buttons rendered between the title and
22
+ * the close (✕). Use it for per-action affordances like the FX
23
+ * toggle; omit entirely for actions that don't need them.
24
+ */
25
+ headerActions?: ReactNode;
20
26
  /** Inline status banner — error / warning / hint, shown at the top of the body. */
21
27
  banner?: ReactNode;
22
28
  /** Tab definitions. When omitted, `children` renders directly (no tabs). */
@@ -25,7 +31,8 @@ export interface ConfigPanelProps {
25
31
  activeTab?: string;
26
32
  defaultActiveTab?: string;
27
33
  onTabChange?: (id: string) => void;
28
- /** Save-state pill in the footer. */
34
+ /** Save-state pill in the footer. Omit it entirely to hide the pill —
35
+ * the footer then shows only its action buttons. */
29
36
  saveState?: ConfigPanelSaveState;
30
37
  /** Fires on the title editor's commit. Omit to disable title editing. */
31
38
  onTitleChange?: (next: string) => void;
@@ -55,10 +62,15 @@ export interface ConfigPanelProps {
55
62
  variant?: "pinned" | "floating";
56
63
  /** Body slot used only when `tabs` is omitted. */
57
64
  children?: ReactNode;
58
- /** Custom footer slot — replaces the default save/cancel buttons. */
59
- footer?: ReactNode;
65
+ /**
66
+ * Modular footer action buttons — replaces the built-in Cancel/Save
67
+ * pair. The footer bar itself stays static and pinned; this slot just
68
+ * decides which buttons live in it, so a consumer can add, remove, or
69
+ * reorder actions freely.
70
+ */
71
+ footerActions?: ReactNode;
60
72
  className?: string;
61
73
  style?: CSSProperties;
62
74
  }
63
- export declare function ConfigPanel({ open, title, kindLabel, icon, banner, tabs, activeTab: controlledActive, defaultActiveTab, onTabChange, saveState, onTitleChange, onClose, onSave, onCancel, resizable, defaultWidth, minWidth, maxWidth, maxWidthContainerInset, variant, children, footer, className, style, }: ConfigPanelProps): import("react/jsx-runtime").JSX.Element;
75
+ export declare function ConfigPanel({ open, title, kindLabel, icon, headerActions, banner, tabs, activeTab: controlledActive, defaultActiveTab, onTabChange, saveState, onTitleChange, onClose, onSave, onCancel, resizable, defaultWidth, minWidth, maxWidth, maxWidthContainerInset, variant, children, footerActions, className, style, }: ConfigPanelProps): import("react/jsx-runtime").JSX.Element;
64
76
  //# sourceMappingURL=ConfigPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigPanel.d.ts","sourceRoot":"","sources":["../../../../src/workflow/components/ConfigPanel/ConfigPanel.tsx"],"names":[],"mappings":"AAeA,OAAO,EACL,KAAK,aAAa,EAGlB,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAGf,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAEpF,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,mFAAmF;IACnF,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,cAAc,EAAE,CAAC;IACxB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,qCAAqC;IACrC,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,yEAAyE;IACzE,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,yDAAyD;IACzD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,6EAA6E;IAC7E,OAAO,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAChC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,qEAAqE;IACrE,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAkBD,wBAAgB,WAAW,CAAC,EAC1B,IAAW,EACX,KAAK,EACL,SAAS,EACT,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,SAAS,EAAE,gBAAgB,EAC3B,gBAAgB,EAChB,WAAW,EACX,SAAmB,EACnB,aAAa,EACb,OAAO,EACP,MAAM,EACN,QAAQ,EACR,SAAgB,EAChB,YAAkB,EAClB,QAAc,EACd,QAAc,EACd,sBAA2B,EAC3B,OAAkB,EAClB,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,GACN,EAAE,gBAAgB,2CAsOlB"}
1
+ {"version":3,"file":"ConfigPanel.d.ts","sourceRoot":"","sources":["../../../../src/workflow/components/ConfigPanel/ConfigPanel.tsx"],"names":[],"mappings":"AAeA,OAAO,EACL,KAAK,aAAa,EAGlB,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAGf,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAEpF,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,mFAAmF;IACnF,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,cAAc,EAAE,CAAC;IACxB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;yDACqD;IACrD,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,yEAAyE;IACzE,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,yDAAyD;IACzD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,6EAA6E;IAC7E,OAAO,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAChC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAkBD,wBAAgB,WAAW,CAAC,EAC1B,IAAW,EACX,KAAK,EACL,SAAS,EACT,IAAI,EACJ,aAAa,EACb,MAAM,EACN,IAAI,EACJ,SAAS,EAAE,gBAAgB,EAC3B,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,aAAa,EACb,OAAO,EACP,MAAM,EACN,QAAQ,EACR,SAAgB,EAChB,YAAkB,EAClB,QAAc,EACd,QAAc,EACd,sBAA2B,EAC3B,OAAkB,EAClB,QAAQ,EACR,aAAa,EACb,SAAS,EACT,KAAK,GACN,EAAE,gBAAgB,2CA+OlB"}
package/dist/workflow.cjs CHANGED
@@ -728,12 +728,13 @@ function ConfigPanel({
728
728
  title,
729
729
  kindLabel,
730
730
  icon,
731
+ headerActions,
731
732
  banner,
732
733
  tabs,
733
734
  activeTab: controlledActive,
734
735
  defaultActiveTab,
735
736
  onTabChange,
736
- saveState = "clean",
737
+ saveState,
737
738
  onTitleChange,
738
739
  onClose,
739
740
  onSave,
@@ -745,7 +746,7 @@ function ConfigPanel({
745
746
  maxWidthContainerInset = 80,
746
747
  variant = "pinned",
747
748
  children,
748
- footer,
749
+ footerActions,
749
750
  className,
750
751
  style
751
752
  }) {
@@ -871,6 +872,7 @@ function ConfigPanel({
871
872
  children: title ?? "Untitled"
872
873
  }
873
874
  ),
875
+ headerActions && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "ods-flow-config-panel__header-actions", children: headerActions }),
874
876
  onClose && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
875
877
  "button",
876
878
  {
@@ -913,7 +915,7 @@ function ConfigPanel({
913
915
  banner && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "ods-flow-config-panel__banner", children: banner }),
914
916
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "ods-flow-config-panel__body", role: "tabpanel", children: tabs ? activeTab?.content : children }),
915
917
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("footer", { className: "ods-flow-config-panel__footer", children: [
916
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
918
+ saveState && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
917
919
  "span",
918
920
  {
919
921
  className: cn(
@@ -933,7 +935,7 @@ function ConfigPanel({
933
935
  ]
934
936
  }
935
937
  ),
936
- footer ?? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "ods-flow-config-panel__footer-actions", children: [
938
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "ods-flow-config-panel__footer-actions", children: footerActions ?? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
937
939
  onCancel && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
938
940
  "button",
939
941
  {
@@ -949,11 +951,11 @@ function ConfigPanel({
949
951
  type: "button",
950
952
  className: "ods-flow-config-panel__btn ods-flow-config-panel__btn--primary",
951
953
  onClick: onSave,
952
- disabled: saveState === "saving" || saveState === "clean",
954
+ disabled: saveState === "saving",
953
955
  children: saveState === "saving" ? "Saving\u2026" : "Save"
954
956
  }
955
957
  )
956
- ] })
958
+ ] }) })
957
959
  ] })
958
960
  ]
959
961
  }