@burdenoff/fluidgrids-fe-sdk 2026.701.2 → 2026.701.4

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.
@@ -1,4 +1,4 @@
1
- export { WorkflowBuilder } from './chunk-5LQLF5FT.js';
1
+ export { WorkflowBuilder } from './chunk-QBI22GDG.js';
2
2
  import './chunk-7VEOUEIN.js';
3
3
  import './chunk-BQXHJIER.js';
4
4
  import './chunk-KU64CCSV.js';
@@ -9,5 +9,5 @@ import './chunk-WWU2O2SR.js';
9
9
  import './chunk-LUGJJ7LL.js';
10
10
  import './chunk-XQP33UJR.js';
11
11
  import './chunk-Z54K22LP.js';
12
- //# sourceMappingURL=WorkflowBuilder-PGCX2I7G.js.map
13
- //# sourceMappingURL=WorkflowBuilder-PGCX2I7G.js.map
12
+ //# sourceMappingURL=WorkflowBuilder-KV6VFVII.js.map
13
+ //# sourceMappingURL=WorkflowBuilder-KV6VFVII.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"WorkflowBuilder-PGCX2I7G.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"WorkflowBuilder-KV6VFVII.js"}
@@ -836,6 +836,13 @@ var AdaptiveCardRenderer = forwardRef(function AdaptiveCardRenderer2({ cardData,
836
836
  useImperativeHandle(
837
837
  ref,
838
838
  () => ({
839
+ validateInputs() {
840
+ const adaptiveCard = adaptiveCardInstanceRef.current;
841
+ if (!adaptiveCard) return true;
842
+ const invalidInputs = adaptiveCard.getAllInputs().filter((input) => !input.validateValue());
843
+ invalidInputs[0]?.focus();
844
+ return invalidInputs.length === 0;
845
+ },
839
846
  collectValues() {
840
847
  const adaptiveCard = adaptiveCardInstanceRef.current;
841
848
  if (!adaptiveCard || !cardData) return {};
@@ -890,7 +897,11 @@ function synthesizeCardFromInputFields(inputFields) {
890
897
  const required = field.required === true;
891
898
  const multiline = name === "body" || name === "htmlBody";
892
899
  const label = humanizeFieldName(name);
893
- body.push({ type: "TextBlock", text: required ? `${label} *` : label, wrap: true });
900
+ body.push({
901
+ type: "TextBlock",
902
+ text: required ? `${label} *` : label,
903
+ wrap: true
904
+ });
894
905
  body.push({
895
906
  type: "Input.Text",
896
907
  id: `args.state.${name}`,
@@ -942,7 +953,11 @@ function validateUiSpec(raw) {
942
953
  return `ui.blocks[${index}] ("${id}") has unknown type "${String(rawBlock.type)}"`;
943
954
  }
944
955
  }
945
- return { version: 1, blocks };
956
+ return {
957
+ version: 1,
958
+ blocks,
959
+ ...typeof raw.applyLabel === "string" && raw.applyLabel.trim().length > 0 ? { applyLabel: raw.applyLabel } : {}
960
+ };
946
961
  }
947
962
  function resolveUiSpec(operation) {
948
963
  if (!operation) return null;
@@ -1045,6 +1060,9 @@ var AdaptiveCardBlock = forwardRef(function AdaptiveCardBlock2({ card, state, su
1045
1060
  useImperativeHandle(
1046
1061
  ref,
1047
1062
  () => ({
1063
+ validate() {
1064
+ return rendererRef.current?.validateInputs() ?? true;
1065
+ },
1048
1066
  collectValues() {
1049
1067
  return rendererRef.current?.collectValues() ?? {};
1050
1068
  }
@@ -1097,6 +1115,13 @@ function BlocksRenderer({
1097
1115
  };
1098
1116
  const handleApply = useCallback(() => {
1099
1117
  const merged = {};
1118
+ for (const block of spec.blocks) {
1119
+ const handle = handlesRef.current.get(block.id);
1120
+ if (!handle?.validate) continue;
1121
+ if (!handle.validate()) {
1122
+ return;
1123
+ }
1124
+ }
1100
1125
  for (const block of spec.blocks) {
1101
1126
  const handle = handlesRef.current.get(block.id);
1102
1127
  if (!handle) continue;
@@ -1162,7 +1187,7 @@ function BlocksRenderer({
1162
1187
  block.id
1163
1188
  );
1164
1189
  }),
1165
- !synthesized && /* @__PURE__ */ jsx(Button, { type: "button", onClick: handleApply, className: "self-start", children: "Apply" })
1190
+ !synthesized && /* @__PURE__ */ jsx(Button, { type: "button", onClick: handleApply, className: "self-start", children: spec.applyLabel ?? "Apply" })
1166
1191
  ] });
1167
1192
  }
1168
1193
  var PROVIDER_FIELDS = gql`
@@ -6471,187 +6496,200 @@ function ConnectionFormDialog({
6471
6496
  { key: "details", label: "Details", icon: "mdi:information" }
6472
6497
  ];
6473
6498
  return /* @__PURE__ */ jsx(Dialog2.Root, { open, onOpenChange: (isOpen) => !isOpen && onClose(), children: /* @__PURE__ */ jsxs(Dialog2.Portal, { children: [
6474
- /* @__PURE__ */ jsx(Dialog2.Overlay, { className: "fixed inset-0 bg-black/50 z-50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0" }),
6475
- /* @__PURE__ */ jsxs(Dialog2.Content, { className: "fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-50 w-full max-w-2xl max-h-[85vh] bg-background border border-border rounded-xl shadow-2xl data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] flex flex-col overflow-hidden", children: [
6476
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-5 py-4 border-b border-border flex-shrink-0", children: [
6477
- /* @__PURE__ */ jsx("div", { className: "flex items-center gap-3", children: selectedProvider ? /* @__PURE__ */ jsxs(Fragment, { children: [
6478
- /* @__PURE__ */ jsx(
6479
- Icon,
6480
- {
6481
- icon: getProviderIcon(selectedProvider.key),
6482
- className: "w-7 h-7"
6483
- }
6484
- ),
6485
- /* @__PURE__ */ jsxs("div", { children: [
6486
- /* @__PURE__ */ jsxs(Dialog2.Title, { className: "text-base font-semibold text-foreground", children: [
6487
- selectedProvider.name,
6488
- " account"
6489
- ] }),
6490
- /* @__PURE__ */ jsx(Dialog2.Description, { className: "text-xs text-muted-foreground", children: getAuthTypeLabel(selectedProvider.authType) })
6491
- ] })
6492
- ] }) : /* @__PURE__ */ jsxs("div", { children: [
6493
- /* @__PURE__ */ jsx(Dialog2.Title, { className: "text-base font-semibold text-foreground", children: "Add new credential" }),
6494
- /* @__PURE__ */ jsx(Dialog2.Description, { className: "text-xs text-muted-foreground", children: "Select an app or service to connect to" })
6495
- ] }) }),
6496
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
6497
- selectedProvider && !showPicker && !success && /* @__PURE__ */ jsx(
6498
- "button",
6499
- {
6500
- type: "button",
6501
- onClick: () => handleFormSubmit({
6502
- name: connectionName,
6503
- description: connectionDescription
6504
- }),
6505
- disabled: isSubmitting || !connectionName.trim(),
6506
- className: "px-4 py-1.5 text-sm font-medium rounded-md bg-primary text-primary-foreground hover:bg-primary/90 transition-colors disabled:opacity-50",
6507
- children: "Save"
6508
- }
6509
- ),
6510
- /* @__PURE__ */ jsx(Dialog2.Close, { asChild: true, children: /* @__PURE__ */ jsx(
6511
- "button",
6512
- {
6513
- type: "button",
6514
- className: "p-1.5 rounded-md hover:bg-accent transition-colors text-muted-foreground hover:text-foreground",
6515
- "aria-label": "Close",
6516
- children: /* @__PURE__ */ jsx(Icon, { icon: "mdi:close", className: "w-5 h-5" })
6517
- }
6518
- ) })
6519
- ] })
6520
- ] }),
6521
- /* @__PURE__ */ jsxs("div", { className: "flex flex-1 min-h-0 overflow-hidden", children: [
6522
- showPicker && !selectedProvider && /* @__PURE__ */ jsx("div", { className: "flex-1 p-5 overflow-y-auto", children: /* @__PURE__ */ jsx(
6523
- ProviderPicker,
6524
- {
6525
- providers: catalogProviders,
6526
- loading: catalogLoading,
6527
- onSelect: handleProviderSelect
6528
- }
6529
- ) }),
6530
- providerLoading && !selectedProvider && !showPicker && /* @__PURE__ */ jsx("div", { className: "flex-1 flex items-center justify-center", children: /* @__PURE__ */ jsx(
6531
- Icon,
6532
- {
6533
- icon: "mdi:loading",
6534
- className: "w-8 h-8 animate-spin text-muted-foreground"
6535
- }
6536
- ) }),
6537
- success && selectedProvider && /* @__PURE__ */ jsxs("div", { className: "flex-1 flex flex-col items-center justify-center p-8 text-center", children: [
6538
- /* @__PURE__ */ jsx("div", { className: "p-3 rounded-full bg-green-500/10 mb-4", children: /* @__PURE__ */ jsx(
6539
- Icon,
6540
- {
6541
- icon: "mdi:check-circle",
6542
- className: "w-12 h-12 text-green-600"
6543
- }
6544
- ) }),
6545
- /* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold text-foreground mb-1", children: "Connection Created!" }),
6546
- /* @__PURE__ */ jsxs("p", { className: "text-sm text-muted-foreground mb-6", children: [
6547
- "Your ",
6548
- selectedProvider.name,
6549
- " connection has been set up successfully."
6499
+ /* @__PURE__ */ jsx(
6500
+ Dialog2.Overlay,
6501
+ {
6502
+ style: { zIndex: 1100 },
6503
+ className: "fixed inset-0 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"
6504
+ }
6505
+ ),
6506
+ /* @__PURE__ */ jsxs(
6507
+ Dialog2.Content,
6508
+ {
6509
+ style: { zIndex: 1101 },
6510
+ className: "fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 w-full max-w-2xl max-h-[85vh] bg-background border border-border rounded-xl shadow-2xl data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] flex flex-col overflow-hidden",
6511
+ children: [
6512
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-5 py-4 border-b border-border flex-shrink-0", children: [
6513
+ /* @__PURE__ */ jsx("div", { className: "flex items-center gap-3", children: selectedProvider ? /* @__PURE__ */ jsxs(Fragment, { children: [
6514
+ /* @__PURE__ */ jsx(
6515
+ Icon,
6516
+ {
6517
+ icon: getProviderIcon(selectedProvider.key),
6518
+ className: "w-7 h-7"
6519
+ }
6520
+ ),
6521
+ /* @__PURE__ */ jsxs("div", { children: [
6522
+ /* @__PURE__ */ jsxs(Dialog2.Title, { className: "text-base font-semibold text-foreground", children: [
6523
+ selectedProvider.name,
6524
+ " account"
6525
+ ] }),
6526
+ /* @__PURE__ */ jsx(Dialog2.Description, { className: "text-xs text-muted-foreground", children: getAuthTypeLabel(selectedProvider.authType) })
6527
+ ] })
6528
+ ] }) : /* @__PURE__ */ jsxs("div", { children: [
6529
+ /* @__PURE__ */ jsx(Dialog2.Title, { className: "text-base font-semibold text-foreground", children: "Add new credential" }),
6530
+ /* @__PURE__ */ jsx(Dialog2.Description, { className: "text-xs text-muted-foreground", children: "Select an app or service to connect to" })
6531
+ ] }) }),
6532
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
6533
+ selectedProvider && !showPicker && !success && /* @__PURE__ */ jsx(
6534
+ "button",
6535
+ {
6536
+ type: "button",
6537
+ onClick: () => handleFormSubmit({
6538
+ name: connectionName,
6539
+ description: connectionDescription
6540
+ }),
6541
+ disabled: isSubmitting || !connectionName.trim(),
6542
+ className: "px-4 py-1.5 text-sm font-medium rounded-md bg-primary text-primary-foreground hover:bg-primary/90 transition-colors disabled:opacity-50",
6543
+ children: "Save"
6544
+ }
6545
+ ),
6546
+ /* @__PURE__ */ jsx(Dialog2.Close, { asChild: true, children: /* @__PURE__ */ jsx(
6547
+ "button",
6548
+ {
6549
+ type: "button",
6550
+ className: "p-1.5 rounded-md hover:bg-accent transition-colors text-muted-foreground hover:text-foreground",
6551
+ "aria-label": "Close",
6552
+ children: /* @__PURE__ */ jsx(Icon, { icon: "mdi:close", className: "w-5 h-5" })
6553
+ }
6554
+ ) })
6555
+ ] })
6550
6556
  ] }),
6551
- /* @__PURE__ */ jsx(
6552
- "button",
6553
- {
6554
- type: "button",
6555
- onClick: onClose,
6556
- className: "px-4 py-2 text-sm font-medium rounded-md bg-primary text-primary-foreground hover:bg-primary/90 transition-colors",
6557
- children: "Done"
6558
- }
6559
- )
6560
- ] }),
6561
- selectedProvider && !showPicker && !success && /* @__PURE__ */ jsxs(Fragment, { children: [
6562
- /* @__PURE__ */ jsx("div", { className: "w-40 border-r border-border flex-shrink-0 py-3", children: tabs.map((tab) => /* @__PURE__ */ jsxs(
6563
- "button",
6564
- {
6565
- type: "button",
6566
- onClick: () => setActiveTab(tab.key),
6567
- className: `w-full flex items-center gap-2 px-4 py-2 text-sm font-medium transition-colors ${activeTab === tab.key ? "text-foreground bg-accent/50 border-l-2 border-primary" : "text-muted-foreground hover:text-foreground hover:bg-accent/30 border-l-2 border-transparent"}`,
6568
- children: [
6569
- /* @__PURE__ */ jsx(Icon, { icon: tab.icon, className: "w-4 h-4" }),
6570
- tab.label
6571
- ]
6572
- },
6573
- tab.key
6574
- )) }),
6575
- /* @__PURE__ */ jsxs("div", { className: "flex-1 p-5 overflow-y-auto", children: [
6576
- activeTab === "connection" && FormComponent && /* @__PURE__ */ jsx(
6577
- FormComponent,
6557
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-1 min-h-0 overflow-hidden", children: [
6558
+ showPicker && !selectedProvider && /* @__PURE__ */ jsx("div", { className: "flex-1 p-5 overflow-y-auto", children: /* @__PURE__ */ jsx(
6559
+ ProviderPicker,
6578
6560
  {
6579
- provider: selectedProvider,
6580
- connectionId: connectionId ?? null,
6581
- connectionName,
6582
- connectionDescription,
6583
- onNameChange: setConnectionName,
6584
- onDescriptionChange: setConnectionDescription,
6585
- onSubmit: handleFormSubmit,
6586
- isSubmitting: isSubmitting || oauthWaiting,
6587
- error
6561
+ providers: catalogProviders,
6562
+ loading: catalogLoading,
6563
+ onSelect: handleProviderSelect
6588
6564
  }
6589
- ),
6590
- activeTab === "sharing" && /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
6591
- /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-foreground", children: "Sharing" }),
6592
- /* @__PURE__ */ jsxs("div", { className: "p-4 rounded-md bg-muted/50 border border-border text-center", children: [
6593
- /* @__PURE__ */ jsx(
6594
- Icon,
6565
+ ) }),
6566
+ providerLoading && !selectedProvider && !showPicker && /* @__PURE__ */ jsx("div", { className: "flex-1 flex items-center justify-center", children: /* @__PURE__ */ jsx(
6567
+ Icon,
6568
+ {
6569
+ icon: "mdi:loading",
6570
+ className: "w-8 h-8 animate-spin text-muted-foreground"
6571
+ }
6572
+ ) }),
6573
+ success && selectedProvider && /* @__PURE__ */ jsxs("div", { className: "flex-1 flex flex-col items-center justify-center p-8 text-center", children: [
6574
+ /* @__PURE__ */ jsx("div", { className: "p-3 rounded-full bg-green-500/10 mb-4", children: /* @__PURE__ */ jsx(
6575
+ Icon,
6576
+ {
6577
+ icon: "mdi:check-circle",
6578
+ className: "w-12 h-12 text-green-600"
6579
+ }
6580
+ ) }),
6581
+ /* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold text-foreground mb-1", children: "Connection Created!" }),
6582
+ /* @__PURE__ */ jsxs("p", { className: "text-sm text-muted-foreground mb-6", children: [
6583
+ "Your ",
6584
+ selectedProvider.name,
6585
+ " connection has been set up successfully."
6586
+ ] }),
6587
+ /* @__PURE__ */ jsx(
6588
+ "button",
6589
+ {
6590
+ type: "button",
6591
+ onClick: onClose,
6592
+ className: "px-4 py-2 text-sm font-medium rounded-md bg-primary text-primary-foreground hover:bg-primary/90 transition-colors",
6593
+ children: "Done"
6594
+ }
6595
+ )
6596
+ ] }),
6597
+ selectedProvider && !showPicker && !success && /* @__PURE__ */ jsxs(Fragment, { children: [
6598
+ /* @__PURE__ */ jsx("div", { className: "w-40 border-r border-border flex-shrink-0 py-3", children: tabs.map((tab) => /* @__PURE__ */ jsxs(
6599
+ "button",
6600
+ {
6601
+ type: "button",
6602
+ onClick: () => setActiveTab(tab.key),
6603
+ className: `w-full flex items-center gap-2 px-4 py-2 text-sm font-medium transition-colors ${activeTab === tab.key ? "text-foreground bg-accent/50 border-l-2 border-primary" : "text-muted-foreground hover:text-foreground hover:bg-accent/30 border-l-2 border-transparent"}`,
6604
+ children: [
6605
+ /* @__PURE__ */ jsx(Icon, { icon: tab.icon, className: "w-4 h-4" }),
6606
+ tab.label
6607
+ ]
6608
+ },
6609
+ tab.key
6610
+ )) }),
6611
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 p-5 overflow-y-auto", children: [
6612
+ activeTab === "connection" && FormComponent && /* @__PURE__ */ jsx(
6613
+ FormComponent,
6595
6614
  {
6596
- icon: "mdi:share-variant",
6597
- className: "w-8 h-8 mx-auto text-muted-foreground mb-2"
6615
+ provider: selectedProvider,
6616
+ connectionId: connectionId ?? null,
6617
+ connectionName,
6618
+ connectionDescription,
6619
+ onNameChange: setConnectionName,
6620
+ onDescriptionChange: setConnectionDescription,
6621
+ onSubmit: handleFormSubmit,
6622
+ isSubmitting: isSubmitting || oauthWaiting,
6623
+ error
6598
6624
  }
6599
6625
  ),
6600
- /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Connection sharing settings will be available in a future update." })
6601
- ] })
6602
- ] }),
6603
- activeTab === "details" && /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
6604
- /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-foreground", children: "Details" }),
6605
- /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
6606
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 p-3 rounded-md border border-border", children: [
6607
- /* @__PURE__ */ jsx(
6608
- Icon,
6609
- {
6610
- icon: getProviderIcon(selectedProvider.key),
6611
- className: "w-8 h-8"
6612
- }
6613
- ),
6614
- /* @__PURE__ */ jsxs("div", { children: [
6615
- /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-foreground", children: selectedProvider.name }),
6616
- /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: getAuthTypeLabel(selectedProvider.authType) })
6626
+ activeTab === "sharing" && /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
6627
+ /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-foreground", children: "Sharing" }),
6628
+ /* @__PURE__ */ jsxs("div", { className: "p-4 rounded-md bg-muted/50 border border-border text-center", children: [
6629
+ /* @__PURE__ */ jsx(
6630
+ Icon,
6631
+ {
6632
+ icon: "mdi:share-variant",
6633
+ className: "w-8 h-8 mx-auto text-muted-foreground mb-2"
6634
+ }
6635
+ ),
6636
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Connection sharing settings will be available in a future update." })
6617
6637
  ] })
6618
6638
  ] }),
6619
- selectedProvider.description && /* @__PURE__ */ jsxs("div", { children: [
6620
- /* @__PURE__ */ jsx("label", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider", children: "Description" }),
6621
- /* @__PURE__ */ jsx("p", { className: "text-sm text-foreground mt-1", children: selectedProvider.description })
6622
- ] }),
6623
- selectedProvider.website && /* @__PURE__ */ jsxs("div", { children: [
6624
- /* @__PURE__ */ jsx("label", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider", children: "Website" }),
6625
- /* @__PURE__ */ jsx(
6626
- "a",
6627
- {
6628
- href: selectedProvider.website,
6629
- target: "_blank",
6630
- rel: "noopener noreferrer",
6631
- className: "block text-sm text-primary hover:underline mt-1",
6632
- children: selectedProvider.website
6633
- }
6634
- )
6635
- ] }),
6636
- selectedProvider.docsUrl && /* @__PURE__ */ jsxs("div", { children: [
6637
- /* @__PURE__ */ jsx("label", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider", children: "Documentation" }),
6638
- /* @__PURE__ */ jsx(
6639
- "a",
6640
- {
6641
- href: selectedProvider.docsUrl,
6642
- target: "_blank",
6643
- rel: "noopener noreferrer",
6644
- className: "block text-sm text-primary hover:underline mt-1",
6645
- children: selectedProvider.docsUrl
6646
- }
6647
- )
6639
+ activeTab === "details" && /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
6640
+ /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-foreground", children: "Details" }),
6641
+ /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
6642
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 p-3 rounded-md border border-border", children: [
6643
+ /* @__PURE__ */ jsx(
6644
+ Icon,
6645
+ {
6646
+ icon: getProviderIcon(selectedProvider.key),
6647
+ className: "w-8 h-8"
6648
+ }
6649
+ ),
6650
+ /* @__PURE__ */ jsxs("div", { children: [
6651
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-foreground", children: selectedProvider.name }),
6652
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: getAuthTypeLabel(selectedProvider.authType) })
6653
+ ] })
6654
+ ] }),
6655
+ selectedProvider.description && /* @__PURE__ */ jsxs("div", { children: [
6656
+ /* @__PURE__ */ jsx("label", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider", children: "Description" }),
6657
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-foreground mt-1", children: selectedProvider.description })
6658
+ ] }),
6659
+ selectedProvider.website && /* @__PURE__ */ jsxs("div", { children: [
6660
+ /* @__PURE__ */ jsx("label", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider", children: "Website" }),
6661
+ /* @__PURE__ */ jsx(
6662
+ "a",
6663
+ {
6664
+ href: selectedProvider.website,
6665
+ target: "_blank",
6666
+ rel: "noopener noreferrer",
6667
+ className: "block text-sm text-primary hover:underline mt-1",
6668
+ children: selectedProvider.website
6669
+ }
6670
+ )
6671
+ ] }),
6672
+ selectedProvider.docsUrl && /* @__PURE__ */ jsxs("div", { children: [
6673
+ /* @__PURE__ */ jsx("label", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider", children: "Documentation" }),
6674
+ /* @__PURE__ */ jsx(
6675
+ "a",
6676
+ {
6677
+ href: selectedProvider.docsUrl,
6678
+ target: "_blank",
6679
+ rel: "noopener noreferrer",
6680
+ className: "block text-sm text-primary hover:underline mt-1",
6681
+ children: selectedProvider.docsUrl
6682
+ }
6683
+ )
6684
+ ] })
6685
+ ] })
6648
6686
  ] })
6649
6687
  ] })
6650
6688
  ] })
6651
6689
  ] })
6652
- ] })
6653
- ] })
6654
- ] })
6690
+ ]
6691
+ }
6692
+ )
6655
6693
  ] }) });
6656
6694
  }
6657
6695
  function formatAge(dateString) {
@@ -6908,6 +6946,7 @@ function ConnectionSelector({
6908
6946
  DropdownMenuContent,
6909
6947
  {
6910
6948
  align: "start",
6949
+ style: { zIndex: 1100 },
6911
6950
  className: "w-[280px] max-h-[400px] overflow-y-auto",
6912
6951
  children: [
6913
6952
  connectionsLoading ? /* @__PURE__ */ jsxs("div", { className: "p-4 text-center text-sm text-muted-foreground", children: [
@@ -7320,11 +7359,49 @@ function NodePropertyPanel({
7320
7359
  if (nodeType === "store/bigconsole_datasink" && currentOperation?.name === "postDataToDataSink") {
7321
7360
  return {
7322
7361
  ...currentOperation,
7323
- // Force the DataSink-key card below to win even if an older registry
7324
- // manifest already has a block-based `ui` declaration. resolveUiSpec()
7325
- // prefers `ui` over `adaptive_card`, so leaving it in place would keep
7326
- // rendering the stale connection-oriented form.
7327
- ui: void 0,
7362
+ // Force the DataSink-key UI below to win even if an older registry
7363
+ // manifest already has a connection-oriented `ui` declaration.
7364
+ // Use a block UI (not legacy AdaptiveCard submit mode) so the save
7365
+ // action is rendered by the app's Button component and reliably calls
7366
+ // the panel-level onApply handler.
7367
+ ui: {
7368
+ version: 1,
7369
+ applyLabel: "Save Configuration",
7370
+ blocks: [
7371
+ {
7372
+ id: "main",
7373
+ type: "adaptive_card",
7374
+ card: {
7375
+ type: "AdaptiveCard",
7376
+ version: "1.5",
7377
+ body: [
7378
+ {
7379
+ type: "TextBlock",
7380
+ text: "Send Data to BigConsole DataSink",
7381
+ weight: "bolder",
7382
+ size: "medium"
7383
+ },
7384
+ {
7385
+ type: "TextBlock",
7386
+ text: "Choose the DataSink key. Data is taken automatically from the previous node, and the BigConsole connection is handled automatically.",
7387
+ wrap: true,
7388
+ size: "small",
7389
+ isSubtle: true
7390
+ },
7391
+ {
7392
+ type: "Input.Text",
7393
+ placeholder: "Target DataSink key (e.g., users_analytics)",
7394
+ id: "args.state.dataSinkKey",
7395
+ label: "DataSink Key",
7396
+ isRequired: true,
7397
+ value: "${dataSinkKey}"
7398
+ }
7399
+ ],
7400
+ defaultValue: { dataSinkKey: "" }
7401
+ }
7402
+ }
7403
+ ]
7404
+ },
7328
7405
  description: "Push data to a BigConsole DataSink. Data is taken from the previous node's output; choose the target DataSink key and the BigConsole connection is handled automatically.",
7329
7406
  input_fields: {
7330
7407
  ...currentOperation.input_fields,
@@ -7333,43 +7410,6 @@ function NodePropertyPanel({
7333
7410
  required: true,
7334
7411
  description: "Target DataSink key. The workflow writes directly to this DataSink and auto-links on first run."
7335
7412
  }
7336
- },
7337
- adaptive_card: {
7338
- type: "AdaptiveCard",
7339
- version: "1.5",
7340
- body: [
7341
- {
7342
- type: "TextBlock",
7343
- text: "Send Data to BigConsole DataSink",
7344
- weight: "bolder",
7345
- size: "medium"
7346
- },
7347
- {
7348
- type: "TextBlock",
7349
- text: "Choose the DataSink key. Data is taken automatically from the previous node, and the BigConsole connection is handled automatically.",
7350
- wrap: true,
7351
- size: "small",
7352
- isSubtle: true
7353
- },
7354
- {
7355
- type: "Input.Text",
7356
- placeholder: "Target DataSink key (e.g., users_analytics)",
7357
- id: "args.state.dataSinkKey",
7358
- label: "DataSink Key",
7359
- isRequired: true,
7360
- value: "${dataSinkKey}"
7361
- },
7362
- {
7363
- type: "ActionSet",
7364
- actions: [
7365
- {
7366
- type: "Action.Submit",
7367
- title: "Save Configuration"
7368
- }
7369
- ]
7370
- }
7371
- ],
7372
- defaultValue: { dataSinkKey: "" }
7373
7413
  }
7374
7414
  };
7375
7415
  }
@@ -22030,5 +22070,5 @@ function WorkflowBuilder() {
22030
22070
  }
22031
22071
 
22032
22072
  export { Card2 as Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ConfigSchemaForm, ConnectionFormDialog, ConnectionSelector, FluidGridsProvider, ProviderPicker, TemplateCard, WorkflowBuilder, getProviderForm, listCustomBlocks, registerCustomBlock, resolveUiSpec, stripSubmitActions, useConnection, useConnectionDialog, useConnections, useConnectionsByProvider, useCreateConnection, useFluidGridsContext, useImportWorkflowTemplate, useInitiateOAuth, useNodeExecution, useProviderByKey, useProviderCatalog, useProviders, useWorkflowTemplates };
22033
- //# sourceMappingURL=chunk-5LQLF5FT.js.map
22034
- //# sourceMappingURL=chunk-5LQLF5FT.js.map
22073
+ //# sourceMappingURL=chunk-QBI22GDG.js.map
22074
+ //# sourceMappingURL=chunk-QBI22GDG.js.map