@bikdotai/bik-component-library 0.0.839-beta.6 → 0.0.839

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/dist/cjs/components/BikGiftedChat/GiftedChat/GiftedChat.js +1 -1
  2. package/dist/cjs/components/BikGiftedChat/GiftedChat/GiftedChat.js.map +1 -1
  3. package/dist/cjs/components/agent-builder/AgentBuilder.js +1 -1
  4. package/dist/cjs/components/agent-builder/AgentBuilder.js.map +1 -1
  5. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js +20 -44
  6. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js.map +1 -1
  7. package/dist/cjs/components/agent-builder/components/AgentBuilderFooter.js +1 -1
  8. package/dist/cjs/components/agent-builder/components/AgentBuilderFooter.js.map +1 -1
  9. package/dist/cjs/components/agent-builder/components/AgentBuilderTopBar.js +1 -1
  10. package/dist/cjs/components/agent-builder/components/AgentBuilderTopBar.js.map +1 -1
  11. package/dist/cjs/components/agent-builder/components/ConfigToolPanel.js +2 -2
  12. package/dist/cjs/components/agent-builder/components/ConfigToolPanel.js.map +1 -1
  13. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js +1 -1
  14. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  15. package/dist/cjs/components/agent-builder/components/DiscardModal.js +1 -1
  16. package/dist/cjs/components/agent-builder/components/DiscardModal.js.map +1 -1
  17. package/dist/cjs/components/agent-builder/components/GoLiveModal.js +1 -1
  18. package/dist/cjs/components/agent-builder/components/GoLiveModal.js.map +1 -1
  19. package/dist/cjs/components/agent-builder/components/MentionEditor.js +1 -1
  20. package/dist/cjs/components/agent-builder/components/MentionEditor.js.map +1 -1
  21. package/dist/cjs/components/agent-builder/components/MentionPicker.js +13 -13
  22. package/dist/cjs/components/agent-builder/components/MentionPicker.js.map +1 -1
  23. package/dist/cjs/components/agent-builder/components/RestApiToolPanel.js +4 -4
  24. package/dist/cjs/components/agent-builder/components/RestApiToolPanel.js.map +1 -1
  25. package/dist/cjs/components/agent-builder/components/SelectableListSection.js +6 -6
  26. package/dist/cjs/components/agent-builder/components/SelectableListSection.js.map +1 -1
  27. package/dist/cjs/components/agent-builder/components/StepSectionHeader.js +1 -1
  28. package/dist/cjs/components/agent-builder/components/StepSectionHeader.js.map +1 -1
  29. package/dist/cjs/components/agent-builder/constants/tools.js +1 -1
  30. package/dist/cjs/components/agent-builder/constants/tools.js.map +1 -1
  31. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js +1 -1
  32. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  33. package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js +1 -3
  34. package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
  35. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js +1 -1
  36. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
  37. package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js +1 -1
  38. package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js.map +1 -1
  39. package/dist/cjs/components/agent-builder/utils/mentionSerialization.js +3 -5
  40. package/dist/cjs/components/agent-builder/utils/mentionSerialization.js.map +1 -1
  41. package/dist/cjs/components/agent-listing/AgentListing.js +1 -1
  42. package/dist/cjs/components/agent-listing/AgentListing.js.map +1 -1
  43. package/dist/cjs/components/agent-listing/AgentTable.js +1 -1
  44. package/dist/cjs/components/agent-listing/AgentTable.js.map +1 -1
  45. package/dist/cjs/components/agent-listing/AgentTableRow.js +1 -1
  46. package/dist/cjs/components/agent-listing/AgentTableRow.js.map +1 -1
  47. package/dist/cjs/components/agent-listing/DeleteAgentModal.js +1 -1
  48. package/dist/cjs/components/agent-listing/DeleteAgentModal.js.map +1 -1
  49. package/dist/cjs/components/button/Button.styled.js +0 -1
  50. package/dist/cjs/components/button/Button.styled.js.map +1 -1
  51. package/dist/cjs/components/button/themes.js +11 -11
  52. package/dist/cjs/components/button/themes.js.map +1 -1
  53. package/dist/cjs/components/dropdown/Dropdown.js +1 -1
  54. package/dist/cjs/components/dropdown/Dropdown.js.map +1 -1
  55. package/dist/cjs/components/dropdown-button/DropdownButton.js +1 -1
  56. package/dist/cjs/components/dropdown-button/DropdownButton.js.map +1 -1
  57. package/dist/cjs/editor/BikEditor.js +1 -1
  58. package/dist/cjs/editor/BikEditor.js.map +1 -1
  59. package/dist/cjs/editor/BikEditor.styles.js +54 -97
  60. package/dist/cjs/editor/BikEditor.styles.js.map +1 -1
  61. package/dist/cjs/editor/extensions/jsonHighlight/JsonHighlightExtension.js +3 -3
  62. package/dist/cjs/editor/extensions/jsonHighlight/JsonHighlightExtension.js.map +1 -1
  63. package/dist/cjs/icons/Media/Visual/FormkitNeutral.js +2 -0
  64. package/dist/cjs/icons/Media/Visual/FormkitNeutral.js.map +1 -0
  65. package/dist/cjs/icons/Media/Visual/FormkitSad.js +2 -0
  66. package/dist/cjs/icons/Media/Visual/FormkitSad.js.map +1 -0
  67. package/dist/cjs/icons/index.js +1 -1
  68. package/dist/esm/components/BikGiftedChat/GiftedChat/GiftedChat.js +66 -61
  69. package/dist/esm/components/BikGiftedChat/GiftedChat/GiftedChat.js.map +1 -1
  70. package/dist/esm/components/agent-builder/AgentBuilder.js +102 -106
  71. package/dist/esm/components/agent-builder/AgentBuilder.js.map +1 -1
  72. package/dist/esm/components/agent-builder/AgentBuilder.styled.d.ts +0 -3
  73. package/dist/esm/components/agent-builder/AgentBuilder.styled.js +82 -110
  74. package/dist/esm/components/agent-builder/AgentBuilder.styled.js.map +1 -1
  75. package/dist/esm/components/agent-builder/components/AgentBuilderFooter.js +21 -29
  76. package/dist/esm/components/agent-builder/components/AgentBuilderFooter.js.map +1 -1
  77. package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.js +26 -27
  78. package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.js.map +1 -1
  79. package/dist/esm/components/agent-builder/components/ConfigToolPanel.js +25 -25
  80. package/dist/esm/components/agent-builder/components/ConfigToolPanel.js.map +1 -1
  81. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js +23 -24
  82. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  83. package/dist/esm/components/agent-builder/components/DiscardModal.d.ts +1 -3
  84. package/dist/esm/components/agent-builder/components/DiscardModal.js +16 -25
  85. package/dist/esm/components/agent-builder/components/DiscardModal.js.map +1 -1
  86. package/dist/esm/components/agent-builder/components/GoLiveModal.js +34 -36
  87. package/dist/esm/components/agent-builder/components/GoLiveModal.js.map +1 -1
  88. package/dist/esm/components/agent-builder/components/MentionEditor.js +19 -19
  89. package/dist/esm/components/agent-builder/components/MentionEditor.js.map +1 -1
  90. package/dist/esm/components/agent-builder/components/MentionPicker.js +60 -64
  91. package/dist/esm/components/agent-builder/components/MentionPicker.js.map +1 -1
  92. package/dist/esm/components/agent-builder/components/RestApiToolPanel.d.ts +0 -2
  93. package/dist/esm/components/agent-builder/components/RestApiToolPanel.js +105 -111
  94. package/dist/esm/components/agent-builder/components/RestApiToolPanel.js.map +1 -1
  95. package/dist/esm/components/agent-builder/components/SelectableListSection.d.ts +4 -13
  96. package/dist/esm/components/agent-builder/components/SelectableListSection.js +148 -173
  97. package/dist/esm/components/agent-builder/components/SelectableListSection.js.map +1 -1
  98. package/dist/esm/components/agent-builder/components/StepSectionHeader.js +7 -7
  99. package/dist/esm/components/agent-builder/components/StepSectionHeader.js.map +1 -1
  100. package/dist/esm/components/agent-builder/constants/tools.js +1 -1
  101. package/dist/esm/components/agent-builder/constants/tools.js.map +1 -1
  102. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js +103 -104
  103. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  104. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js +98 -102
  105. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
  106. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js +142 -144
  107. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
  108. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js +79 -23
  109. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js.map +1 -1
  110. package/dist/esm/components/agent-builder/utils/mentionSerialization.js +23 -35
  111. package/dist/esm/components/agent-builder/utils/mentionSerialization.js.map +1 -1
  112. package/dist/esm/components/agent-listing/AgentListing.js +65 -70
  113. package/dist/esm/components/agent-listing/AgentListing.js.map +1 -1
  114. package/dist/esm/components/agent-listing/AgentTable.d.ts +0 -2
  115. package/dist/esm/components/agent-listing/AgentTable.js +15 -16
  116. package/dist/esm/components/agent-listing/AgentTable.js.map +1 -1
  117. package/dist/esm/components/agent-listing/AgentTableRow.js +11 -11
  118. package/dist/esm/components/agent-listing/AgentTableRow.js.map +1 -1
  119. package/dist/esm/components/agent-listing/DeleteAgentModal.js +8 -8
  120. package/dist/esm/components/agent-listing/DeleteAgentModal.js.map +1 -1
  121. package/dist/esm/components/button/Button.styled.js +19 -25
  122. package/dist/esm/components/button/Button.styled.js.map +1 -1
  123. package/dist/esm/components/button/themes.d.ts +1 -0
  124. package/dist/esm/components/button/themes.js +61 -51
  125. package/dist/esm/components/button/themes.js.map +1 -1
  126. package/dist/esm/components/dropdown/Dropdown.js +13 -18
  127. package/dist/esm/components/dropdown/Dropdown.js.map +1 -1
  128. package/dist/esm/components/dropdown-button/DropdownButton.js +13 -13
  129. package/dist/esm/components/dropdown-button/DropdownButton.js.map +1 -1
  130. package/dist/esm/editor/BikEditor.js +160 -173
  131. package/dist/esm/editor/BikEditor.js.map +1 -1
  132. package/dist/esm/editor/BikEditor.styles.d.ts +3 -20
  133. package/dist/esm/editor/BikEditor.styles.js +57 -102
  134. package/dist/esm/editor/BikEditor.styles.js.map +1 -1
  135. package/dist/esm/editor/extensions/jsonHighlight/JsonHighlightExtension.d.ts +8 -5
  136. package/dist/esm/editor/extensions/jsonHighlight/JsonHighlightExtension.js +68 -87
  137. package/dist/esm/editor/extensions/jsonHighlight/JsonHighlightExtension.js.map +1 -1
  138. package/dist/esm/icons/Media/Visual/FormkitNeutral.js +58 -0
  139. package/dist/esm/icons/Media/Visual/FormkitNeutral.js.map +1 -0
  140. package/dist/esm/icons/Media/Visual/FormkitSad.js +61 -0
  141. package/dist/esm/icons/Media/Visual/FormkitSad.js.map +1 -0
  142. package/dist/esm/icons/Media/Visual/index.d.ts +2 -0
  143. package/dist/esm/icons/index.d.ts +25 -25
  144. package/dist/esm/icons/index.js +420 -416
  145. package/dist/esm/icons/index.js.map +1 -1
  146. package/package.json +1 -1
  147. package/dist/cjs/components/agent-listing/AgentTableShimmer.js +0 -2
  148. package/dist/cjs/components/agent-listing/AgentTableShimmer.js.map +0 -1
  149. package/dist/esm/components/agent-builder/__fixtures__/agentValue.d.ts +0 -11
  150. package/dist/esm/components/agent-listing/AgentTableShimmer.d.ts +0 -12
  151. package/dist/esm/components/agent-listing/AgentTableShimmer.js +0 -20
  152. package/dist/esm/components/agent-listing/AgentTableShimmer.js.map +0 -1
  153. package/dist/esm/components/agent-listing/__fixtures__/agents.d.ts +0 -3
@@ -1,90 +1,82 @@
1
- import { jsx as o, jsxs as i, Fragment as q } from "react/jsx-runtime";
2
- import ce from "../../../assets/icons/delete.svg.js";
3
- import ie from "../../../assets/icons/edit.svg.js";
4
- import U from "../../../assets/icons/plus.svg.js";
5
- import { useState as f, useRef as J, useEffect as de } from "react";
6
- import _ from "styled-components";
7
- import { TitleSmall as se, BodyCaption as v, BodySecondary as ue } from "../../TypographyStyle.js";
1
+ import { jsx as o, jsxs as i, Fragment as j } from "react/jsx-runtime";
2
+ import ne from "../../../assets/icons/delete.svg.js";
3
+ import te from "../../../assets/icons/edit.svg.js";
4
+ import F from "../../../assets/icons/plus.svg.js";
5
+ import { useState as v, useRef as K, useEffect as le } from "react";
6
+ import E from "styled-components";
7
+ import { TitleSmall as re, BodyCaption as U, BodySecondary as C } from "../../TypographyStyle.js";
8
8
  import { COLORS as d } from "../../../constants/Theme.js";
9
- import { SideSection as ae, SideSectionHeader as he, AddIconButton as pe, SourceButtonRow as fe, SourceButton as P, SelectableRow as me, RowText as Se, RowActions as ge, RowMenuButton as Q, RowActionDivider as we } from "../AgentBuilder.styled.js";
10
- import { renderSourceIcon as A, SOURCE_ICONS as ye } from "../utils/sourceIcons.js";
11
- import { MentionPicker as ve } from "./MentionPicker.js";
12
- import { Dropdown as X } from "../../dropdown/Dropdown.js";
13
- import { unwrapDropdownValue as Y } from "../../dropdown/utils.js";
14
- import { Button as $e } from "../../button/Button.js";
15
- import { DeleteConfirmationModal as be } from "../../states-modal/DeleteConfirmationModal.js";
16
- import { Tooltip as E } from "../../tooltips/Tooltip.js";
17
- const Z = "__bik_create_new__", Ke = ({
18
- title: s,
19
- helper: D,
20
- items: a,
21
- addableOptions: m,
22
- onAdd: $,
23
- onRemove: I,
24
- dataTestPrefix: l,
25
- emptyText: T,
26
- createOption: t,
27
- onConfigure: R,
28
- sourceGroups: S,
9
+ import { SideSection as ce, SideSectionHeader as ie, AddIconButton as de, SourceButtonRow as se, SourceButton as V, SelectableRow as ae, RowText as ue, RowActions as he, RowMenuButton as q, RowActionDivider as fe } from "../AgentBuilder.styled.js";
10
+ import { renderSourceIcon as A, SOURCE_ICONS as pe } from "../utils/sourceIcons.js";
11
+ import { MentionPicker as me } from "./MentionPicker.js";
12
+ import { Dropdown as J } from "../../dropdown/Dropdown.js";
13
+ import { unwrapDropdownValue as P } from "../../dropdown/utils.js";
14
+ import { Button as Se } from "../../button/Button.js";
15
+ import { DeleteConfirmationModal as we } from "../../states-modal/DeleteConfirmationModal.js";
16
+ const Q = "__bik_create_new__", He = ({
17
+ title: u,
18
+ helper: _,
19
+ items: s,
20
+ addableOptions: f,
21
+ onAdd: g,
22
+ onRemove: R,
23
+ dataTestPrefix: t,
24
+ emptyText: Y,
25
+ createOption: n,
26
+ onConfigure: D,
27
+ sourceGroups: p,
29
28
  mentionItems: B,
30
- actionSources: g,
31
- confirmDelete: p,
32
- pickerOpensUp: L
29
+ actionSources: m,
30
+ confirmDelete: h
33
31
  }) => {
34
- const [h, r] = f(!1), [z, b] = f(null), [x, H] = f(null), [O, C] = f(null), w = !!S && S.length > 0, k = S?.find((e) => e.source === O), c = B !== void 0, M = J(null), N = J(null), [y, W] = f(null);
35
- de(() => {
36
- if (!c || !h)
32
+ const [a, c] = v(!1), [I, $] = v(null), [Z, y] = v(null), S = !!p && p.length > 0, b = p?.find((e) => e.source === Z), l = B !== void 0, L = K(null), z = K(null), [w, x] = v(null);
33
+ le(() => {
34
+ if (!l || !a)
37
35
  return;
38
- const e = (u) => {
39
- const V = u.target;
40
- !M.current?.contains(V) && !N.current?.contains(V) && r(!1);
41
- }, n = (u) => {
42
- u.key === "Escape" && r(!1);
36
+ const e = (k) => {
37
+ const W = k.target;
38
+ !L.current?.contains(W) && !z.current?.contains(W) && c(!1);
39
+ }, r = (k) => {
40
+ k.key === "Escape" && c(!1);
43
41
  };
44
- return document.addEventListener("mousedown", e), document.addEventListener("keydown", n), () => {
45
- document.removeEventListener("mousedown", e), document.removeEventListener("keydown", n);
42
+ return document.addEventListener("mousedown", e), document.addEventListener("keydown", r), () => {
43
+ document.removeEventListener("mousedown", e), document.removeEventListener("keydown", r);
46
44
  };
47
- }, [c, h]);
48
- const ee = w ? c || a.length > 0 : c || m.length > 0 || !!t && a.length > 0, oe = a.length === 0 && !!t && !w && !c, j = !!g && g.length > 0, ne = (w || j) && a.length === 0, te = () => {
49
- if (c) {
50
- W(null), r((e) => !e);
45
+ }, [l, a]);
46
+ const G = S ? l || s.length > 0 : l || f.length > 0 || !!n && s.length > 0, T = s.length === 0 && !!n && !S && !l, H = !!m && m.length > 0, O = (S || H) && s.length === 0, ee = () => {
47
+ if (l) {
48
+ x(null), c((e) => !e);
51
49
  return;
52
50
  }
53
- if (w) {
54
- C(null), r((e) => !e);
51
+ if (S) {
52
+ y(null), c((e) => !e);
55
53
  return;
56
54
  }
57
- if (m.length === 0 && t) {
58
- t.onSelect();
55
+ if (f.length === 0 && n) {
56
+ n.onSelect();
59
57
  return;
60
58
  }
61
- r((e) => !e);
62
- }, le = (e, n) => {
63
- if (x)
64
- return;
65
- const u = n();
66
- u && typeof u.then == "function" && (H(e), u.finally(() => H(null)));
67
- }, re = () => a.map((e) => {
68
- const n = e.onConfigure ?? (R ? () => R(e.id) : void 0);
59
+ c((e) => !e);
60
+ }, oe = () => s.map((e) => {
61
+ const r = e.onConfigure ?? (D ? () => D(e.id) : void 0);
69
62
  return /* @__PURE__ */ i(
70
- me,
63
+ ae,
71
64
  {
72
- "data-test": `${l}-row-${e.id}`,
65
+ "data-test": `${t}-row-${e.id}`,
73
66
  children: [
74
67
  A(e.icon),
75
- /* @__PURE__ */ o(E, { body: e.label, placement: "top", children: /* @__PURE__ */ o(Se, { children: /* @__PURE__ */ o(ue, { numberOfLines: 1, color: d.content.primary, children: e.label }) }) }),
76
- /* @__PURE__ */ i(ge, { children: [
77
- n && // Configurable rows (sub-agents, Rest API / email tools) get an
68
+ /* @__PURE__ */ o(ue, { children: /* @__PURE__ */ o(C, { numberOfLines: 1, color: d.content.primary, children: e.label }) }),
69
+ /* @__PURE__ */ i(he, { children: [
70
+ r && // Configurable rows (sub-agents, Rest API / email tools) get an
78
71
  // always-visible edit icon.
79
- /* @__PURE__ */ o(E, { body: "Edit", placement: "top", children: /* @__PURE__ */ o(
80
- Q,
72
+ /* @__PURE__ */ o(
73
+ q,
81
74
  {
82
- "data-test": `${l}-edit-${e.id}`,
75
+ "data-test": `${t}-edit-${e.id}`,
83
76
  "aria-label": `Edit ${e.label}`,
84
- disabled: x !== null,
85
- onClick: () => le(e.id, n),
77
+ onClick: r,
86
78
  children: /* @__PURE__ */ o(
87
- ie,
79
+ te,
88
80
  {
89
81
  width: 16,
90
82
  height: 16,
@@ -92,16 +84,16 @@ const Z = "__bik_create_new__", Ke = ({
92
84
  }
93
85
  )
94
86
  }
95
- ) }),
96
- n && /* @__PURE__ */ o(we, { "aria-hidden": !0 }),
97
- /* @__PURE__ */ o(E, { body: "Delete", placement: "top", children: /* @__PURE__ */ o(
98
- Q,
87
+ ),
88
+ r && /* @__PURE__ */ o(fe, { "aria-hidden": !0 }),
89
+ /* @__PURE__ */ o(
90
+ q,
99
91
  {
100
- "data-test": `${l}-delete-${e.id}`,
92
+ "data-test": `${t}-delete-${e.id}`,
101
93
  "aria-label": `Delete ${e.label}`,
102
- onClick: () => p ? b(e.id) : I(e.id),
94
+ onClick: () => h ? $(e.id) : R(e.id),
103
95
  children: /* @__PURE__ */ o(
104
- ce,
96
+ ne,
105
97
  {
106
98
  width: 16,
107
99
  height: 16,
@@ -109,18 +101,18 @@ const Z = "__bik_create_new__", Ke = ({
109
101
  }
110
102
  )
111
103
  }
112
- ) })
104
+ )
113
105
  ] })
114
106
  ]
115
107
  },
116
108
  e.id
117
109
  );
118
- }), F = t ? [
119
- ...m,
110
+ }), M = n ? [
111
+ ...f,
120
112
  {
121
- label: t.label,
122
- value: Z,
123
- searchKey: t.label,
113
+ label: n.label,
114
+ value: Q,
115
+ searchKey: n.label,
124
116
  customComponent: /* @__PURE__ */ o(
125
117
  "div",
126
118
  {
@@ -132,180 +124,163 @@ const Z = "__bik_create_new__", Ke = ({
132
124
  fontSize: 14,
133
125
  fontWeight: 600
134
126
  },
135
- children: t.label
127
+ children: n.label
136
128
  }
137
129
  )
138
130
  }
139
- ] : m, K = c ? /* @__PURE__ */ o(
140
- ve,
131
+ ] : f, N = l ? /* @__PURE__ */ o(
132
+ me,
141
133
  {
142
134
  items: B ?? [],
143
135
  query: "",
144
136
  activeIndex: 0,
145
- initialSource: y ?? void 0,
137
+ initialSource: w ?? void 0,
146
138
  onSelect: (e) => {
147
- r(!1), $(String(e.id));
139
+ c(!1), g(String(e.id));
148
140
  },
149
- onClose: () => r(!1),
150
- onCreateSubAgent: t ? () => {
151
- r(!1), t.onSelect();
141
+ onClose: () => c(!1),
142
+ onCreateSubAgent: n ? () => {
143
+ c(!1), n.onSelect();
152
144
  } : void 0,
153
- toolActions: j ? g?.map((e) => ({
145
+ toolActions: H ? m?.map((e) => ({
154
146
  ...e,
155
147
  onSelect: () => {
156
- r(!1), e.onSelect();
148
+ c(!1), e.onSelect();
157
149
  }
158
150
  })) : void 0
159
151
  },
160
- y ?? "__root__"
152
+ w ?? "__root__"
161
153
  ) : null;
162
- return /* @__PURE__ */ i(ae, { children: [
163
- /* @__PURE__ */ i(he, { children: [
164
- /* @__PURE__ */ o(se, { color: d.content.primary, children: s }),
165
- ee && /* @__PURE__ */ i(Ce, { ref: M, children: [
154
+ return /* @__PURE__ */ i(ce, { children: [
155
+ /* @__PURE__ */ i(ie, { children: [
156
+ /* @__PURE__ */ o(re, { color: d.content.primary, children: u }),
157
+ G && /* @__PURE__ */ i(ve, { ref: L, children: [
166
158
  /* @__PURE__ */ o(
167
- pe,
159
+ de,
168
160
  {
169
- "data-test": `${l}-add`,
170
- onClick: te,
171
- "aria-label": `Add ${s}`,
172
- children: /* @__PURE__ */ o(U, { width: 16, height: 16, color: d.content.primary })
161
+ "data-test": `${t}-add`,
162
+ onClick: ee,
163
+ "aria-label": `Add ${u}`,
164
+ children: /* @__PURE__ */ o(F, { width: 20, height: 20, color: d.content.brand })
173
165
  }
174
166
  ),
175
- c && h && y === null && /* @__PURE__ */ o(
176
- G,
177
- {
178
- $up: L,
179
- "data-test": `${l}-picker`,
180
- children: K
181
- }
182
- )
167
+ l && a && w === null && /* @__PURE__ */ o(X, { "data-test": `${t}-picker`, children: N })
183
168
  ] })
184
169
  ] }),
185
- D && /* @__PURE__ */ o(v, { color: d.content.secondary, children: D }),
186
- ne ? /* @__PURE__ */ i(ke, { ref: c ? N : void 0, children: [
187
- /* @__PURE__ */ i(fe, { "data-test": `${l}-sources`, children: [
188
- S?.map((e) => /* @__PURE__ */ i(
189
- P,
170
+ _ && /* @__PURE__ */ o(U, { color: d.content.secondary, children: _ }),
171
+ O ? /* @__PURE__ */ i(ge, { ref: l ? z : void 0, children: [
172
+ /* @__PURE__ */ i(se, { "data-test": `${t}-sources`, children: [
173
+ p?.map((e) => /* @__PURE__ */ i(
174
+ V,
190
175
  {
191
176
  type: "button",
192
- "data-test": `${l}-source-${e.source}`,
177
+ "data-test": `${t}-source-${e.source}`,
193
178
  onClick: () => {
194
- if (c) {
195
- W(e.source), r(!0);
179
+ if (l) {
180
+ x(e.source), c(!0);
196
181
  return;
197
182
  }
198
- C(e.source);
183
+ y(e.source);
199
184
  },
200
185
  children: [
201
- A(ye[e.source], -4),
202
- /* @__PURE__ */ o(v, { color: d.content.primary, children: e.label })
186
+ A(pe[e.source], -4),
187
+ /* @__PURE__ */ o(C, { color: d.content.primary, children: e.label })
203
188
  ]
204
189
  },
205
190
  e.source
206
191
  )),
207
- g?.map((e) => /* @__PURE__ */ i(
208
- P,
192
+ m?.map((e) => /* @__PURE__ */ i(
193
+ V,
209
194
  {
210
195
  type: "button",
211
- "data-test": `${l}-action-${e.source}`,
212
- onClick: () => {
213
- r(!1), e.onSelect();
214
- },
196
+ "data-test": `${t}-action-${e.source}`,
197
+ onClick: e.onSelect,
215
198
  children: [
216
199
  A(e.icon, -4),
217
- /* @__PURE__ */ o(v, { color: d.content.primary, children: e.label })
200
+ /* @__PURE__ */ o(C, { color: d.content.primary, children: e.label })
218
201
  ]
219
202
  },
220
203
  e.source
221
204
  ))
222
205
  ] }),
223
- c && h && y !== null && /* @__PURE__ */ o(
224
- G,
225
- {
226
- $align: "left",
227
- $up: L,
228
- "data-test": `${l}-picker`,
229
- children: K
230
- }
231
- ),
232
- !c && k && /* @__PURE__ */ o(
233
- X,
206
+ l && a && w !== null && /* @__PURE__ */ o(X, { $align: "left", "data-test": `${t}-picker`, children: N }),
207
+ !l && b && /* @__PURE__ */ o(
208
+ J,
234
209
  {
235
- "data-test": `${l}-dropdown`,
210
+ "data-test": `${t}-dropdown`,
236
211
  size: "small",
237
212
  width: "100%",
238
213
  isSearchable: !0,
239
- placeHolder: `Search ${k.label} tools`,
240
- options: k.options,
214
+ placeHolder: `Search ${b.label} tools`,
215
+ options: b.options,
241
216
  onSelect: (e) => {
242
- const n = Y(e);
243
- C(null), r(!1), n && $(n);
217
+ const r = P(e);
218
+ y(null), c(!1), r && g(r);
244
219
  }
245
220
  }
246
221
  )
247
- ] }) : /* @__PURE__ */ i(q, { children: [
248
- !c && h && F.length > 0 && /* @__PURE__ */ o(
249
- X,
222
+ ] }) : /* @__PURE__ */ i(j, { children: [
223
+ !l && a && M.length > 0 && /* @__PURE__ */ o(
224
+ J,
250
225
  {
251
- "data-test": `${l}-dropdown`,
226
+ "data-test": `${t}-dropdown`,
252
227
  size: "small",
253
228
  width: "100%",
254
229
  isSearchable: !0,
255
- placeHolder: `Select ${s.toLowerCase()}`,
256
- options: F,
230
+ placeHolder: `Select ${u.toLowerCase()}`,
231
+ options: M,
257
232
  onSelect: (e) => {
258
- const n = Y(e);
259
- r(!1), n && (n === Z ? t?.onSelect() : $(n));
233
+ const r = P(e);
234
+ c(!1), r && (r === Q ? n?.onSelect() : g(r));
260
235
  }
261
236
  }
262
237
  ),
263
- a.length === 0 && !h ? /* @__PURE__ */ i(q, { children: [
264
- /* @__PURE__ */ o(v, { color: d.content.placeholder, children: T }),
265
- oe && t && /* @__PURE__ */ o(
266
- $e,
238
+ s.length === 0 && !a ? /* @__PURE__ */ i(j, { children: [
239
+ /* @__PURE__ */ o(U, { color: d.content.placeholder, children: Y }),
240
+ T && n && /* @__PURE__ */ o(
241
+ Se,
267
242
  {
268
- "data-test": `${l}-create`,
243
+ "data-test": `${t}-create`,
269
244
  buttonType: "secondary",
270
245
  size: "small",
271
246
  matchParentWidth: !0,
272
- LeadingIcon: U,
273
- buttonText: t.label,
274
- onClick: t.onSelect
247
+ LeadingIcon: F,
248
+ buttonText: n.label,
249
+ onClick: n.onSelect
275
250
  }
276
251
  )
277
- ] }) : re()
252
+ ] }) : oe()
278
253
  ] }),
279
- p && z && /* @__PURE__ */ o(
280
- be,
254
+ h && I && /* @__PURE__ */ o(
255
+ we,
281
256
  {
282
- "data-test": `${l}-delete-confirm`,
283
- header: `Delete this ${p.noun}?`,
284
- subHeader: `Deleting this ${p.noun} will also remove it from your instructions, wherever it's referenced.`,
257
+ "data-test": `${t}-delete-confirm`,
258
+ header: `Delete this ${h.noun}?`,
259
+ subHeader: `Deleting this ${h.noun} will also remove it from your instructions, wherever it's referenced.`,
285
260
  confirmationText: "Delete",
286
- zIndex: p.zIndex,
261
+ zIndex: h.zIndex,
287
262
  onDeleteConfirmed: () => {
288
- I(z), b(null);
263
+ R(I), $(null);
289
264
  },
290
- onCancelClicked: () => b(null)
265
+ onCancelClicked: () => $(null)
291
266
  }
292
267
  )
293
268
  ] });
294
- }, Ce = _.div`
269
+ }, ve = E.div`
295
270
  position: relative;
296
271
  display: flex;
297
- `, ke = _.div`
272
+ `, ge = E.div`
298
273
  position: relative;
299
274
  display: flex;
300
275
  flex-direction: column;
301
276
  gap: 8px;
302
- `, G = _.div`
277
+ `, X = E.div`
303
278
  position: absolute;
304
- ${(s) => s.$up ? "bottom: calc(100% + 4px);" : "top: calc(100% + 4px);"}
305
- ${(s) => s.$align === "left" ? "left: 0;" : "right: 0;"}
279
+ top: calc(100% + 4px);
280
+ ${(u) => u.$align === "left" ? "left: 0;" : "right: 0;"}
306
281
  z-index: 30;
307
282
  `;
308
283
  export {
309
- Ke as SelectableListSection
284
+ He as SelectableListSection
310
285
  };
311
286
  //# sourceMappingURL=SelectableListSection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectableListSection.js","sources":["../../../../../src/components/agent-builder/components/SelectableListSection.tsx"],"sourcesContent":["import DeleteIcon from '@src/assets/icons/delete.svg';\nimport EditIcon from '@src/assets/icons/edit.svg';\nimport PlusIcon from '@src/assets/icons/plus.svg';\nimport { MentionItem } from '@src/editor';\nimport React, { useEffect, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport { Button } from '@src/components/button';\nimport { Dropdown, unwrapDropdownValue } from '@src/components/dropdown';\nimport { SingleOption } from '@src/components/dropdown/type';\nimport { DeleteConfirmationModal } from '@src/components/states-modal';\nimport { Tooltip } from '@src/components/tooltips';\nimport {\n\tBodyCaption,\n\tBodySecondary,\n\tTitleSmall,\n} from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport {\n\tAddIconButton,\n\tRowActionDivider,\n\tRowActions,\n\tRowMenuButton,\n\tRowText,\n\tSelectableRow,\n\tSideSection,\n\tSideSectionHeader,\n\tSourceButton,\n\tSourceButtonRow,\n} from '../AgentBuilder.styled';\nimport { ToolAction } from '../constants/tools';\nimport {\n\trenderSourceIcon,\n\tSOURCE_ICONS,\n\tSourceIcon,\n} from '../utils/sourceIcons';\nimport { MentionPicker } from './MentionPicker';\n\nexport interface SelectableItem {\n\tid: string;\n\tlabel: string;\n\t/** Leading brand glyph (e.g. a tool's source icon). */\n\ticon?: SourceIcon;\n\t/**\n\t * When set, this row shows an edit (Configure) icon that calls this instead of\n\t * the section-level `onConfigure`. Use for rows that open their own drawer\n\t * (e.g. a configured Rest API / email-handover tool). A pending promise\n\t * disables the row's edit button until it settles (e.g. while the consumer\n\t * fetches the sub-agent's data before opening its drawer).\n\t */\n\tonConfigure?: () => void | Promise<void>;\n}\n\n/** A tool source for the empty-state picker (Tools): a button → its searchable list. */\nexport interface SourceGroup {\n\tsource: string;\n\tlabel: string;\n\toptions: SingleOption[];\n}\n\n/** Sentinel value for the \"create new\" entry in the add dropdown. */\nconst CREATE_OPTION_VALUE = '__bik_create_new__';\n\ninterface SelectableListSectionProps {\n\ttitle: string;\n\thelper?: string;\n\titems: SelectableItem[];\n\t/**\n\t * Options shown in the add dropdown. Pass ALL items (not just unselected\n\t * ones) when re-picking an already-added item is allowed (e.g. to insert its\n\t * mention again) — the chip list still shows each item only once.\n\t */\n\taddableOptions: SingleOption[];\n\tonAdd: (id: string) => void;\n\tonRemove: (id: string) => void;\n\tdataTestPrefix: string;\n\temptyText: string;\n\t/**\n\t * Adds a \"create new\" entry at the top of the add dropdown (e.g. \"Create\n\t * sub-agent\"). Selecting it calls `onSelect` instead of `onAdd`.\n\t */\n\tcreateOption?: { label: string; onSelect: () => void };\n\t/**\n\t * When provided, each row shows an edit (Configure) icon next to Delete.\n\t * Omit for tools (Delete only). A pending promise disables the edit buttons\n\t * until it settles.\n\t */\n\tonConfigure?: (id: string) => void | Promise<void>;\n\t/**\n\t * Tool sources (e.g. Manifest / Shopify). When set, the empty state shows a\n\t * button per source; clicking one reveals a searchable dropdown of just that\n\t * source's options. Selecting calls `onAdd`. Takes precedence over the plain\n\t * `addableOptions` dropdown.\n\t */\n\tsourceGroups?: SourceGroup[];\n\t/**\n\t * When provided, the header \"+\" opens the same `@` reference picker used in the\n\t * Instructions editor (a {@link MentionPicker} popover) instead of the inline\n\t * select dropdown. Pass the items for THIS section only (tools OR sub-agents) —\n\t * the picker auto-drills into the single category. Selecting a row calls\n\t * `onAdd(id)`; the picker's \"Create new\" row (sub-agents) calls\n\t * `createOption.onSelect`.\n\t */\n\tmentionItems?: MentionItem[];\n\t/**\n\t * Built-in \"action\" tools (e.g. Rest API / Handover to email) that open a\n\t * config drawer via `onSelect` instead of adding a mention. Shown as\n\t * empty-state source buttons (only while no items exist, alongside\n\t * `sourceGroups`) AND as rows inside the `@` picker's Tools view.\n\t */\n\tactionSources?: ToolAction[];\n\t/**\n\t * When set, the row Delete icon opens a confirmation modal (instead of\n\t * removing immediately); `onRemove` runs only on confirm. `noun` fills the one\n\t * shared message template (\"Delete this <noun>?\" …); `zIndex` raises the modal\n\t * above a parent drawer. Omit to delete directly.\n\t */\n\tconfirmDelete?: { noun: string; zIndex?: number };\n\t/**\n\t * Open the `@` picker popover above the trigger instead of below. Use inside\n\t * a drawer where the section sits near the bottom — opening downward\n\t * stretches the drawer and leaves a gap.\n\t */\n\tpickerOpensUp?: boolean;\n}\n\nexport const SelectableListSection: React.FC<SelectableListSectionProps> = ({\n\ttitle,\n\thelper,\n\titems,\n\taddableOptions,\n\tonAdd,\n\tonRemove,\n\tdataTestPrefix,\n\temptyText,\n\tcreateOption,\n\tonConfigure,\n\tsourceGroups,\n\tmentionItems,\n\tactionSources,\n\tconfirmDelete,\n\tpickerOpensUp,\n}) => {\n\tconst [adding, setAdding] = useState(false);\n\t// Row id awaiting delete confirmation (null = modal closed).\n\tconst [pendingDeleteId, setPendingDeleteId] = useState<string | null>(null);\n\t// Row id whose configure handler is in flight (async fetch before its drawer\n\t// opens) — all edit buttons are disabled meanwhile so the UI isn't\n\t// unresponsive to double clicks.\n\tconst [configuringId, setConfiguringId] = useState<string | null>(null);\n\t// Tools: which source's searchable list is open (null = just show the buttons).\n\tconst [activeSource, setActiveSource] = useState<string | null>(null);\n\tconst hasSourceGroups = !!sourceGroups && sourceGroups.length > 0;\n\tconst activeGroup = sourceGroups?.find((g) => g.source === activeSource);\n\t// When set, \"+\" opens the `@` MentionPicker popover instead of a select input.\n\tconst usePicker = mentionItems !== undefined;\n\t// Separate anchors for the header \"+\" popover and the empty-state source-button\n\t// popover — when empty both render at once, so a shared ref would misfire the\n\t// outside-click check (closing the header picker when a source row is clicked).\n\tconst headerPickerRef = useRef<HTMLDivElement>(null);\n\tconst sourcePickerRef = useRef<HTMLDivElement>(null);\n\t// Source (Shopify / Manifest) the empty-state button opened the picker into;\n\t// null when \"+\" opened it at the root source list.\n\tconst [pickerSource, setPickerSource] = useState<string | null>(null);\n\n\t// Dismiss the picker popover on outside click / Escape.\n\tuseEffect(() => {\n\t\tif (!usePicker || !adding) {\n\t\t\treturn;\n\t\t}\n\t\tconst onDocMouseDown = (e: MouseEvent) => {\n\t\t\tconst target = e.target as Node;\n\t\t\tif (\n\t\t\t\t!headerPickerRef.current?.contains(target) &&\n\t\t\t\t!sourcePickerRef.current?.contains(target)\n\t\t\t) {\n\t\t\t\tsetAdding(false);\n\t\t\t}\n\t\t};\n\t\tconst onKeyDown = (e: KeyboardEvent) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tsetAdding(false);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('mousedown', onDocMouseDown);\n\t\tdocument.addEventListener('keydown', onKeyDown);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', onDocMouseDown);\n\t\t\tdocument.removeEventListener('keydown', onKeyDown);\n\t\t};\n\t}, [usePicker, adding]);\n\n\t// Header \"+\" picks an EXISTING item (and, once some exist, re-creates via the\n\t// dropdown's footer row). With an empty list + a createOption the body shows a\n\t// dedicated \"Create new\" button instead, so the header \"+\" would be redundant.\n\t// In picker mode the \"+\" always shows (even empty) — for tools it sits next to\n\t// the empty-state source buttons; the create flow lives inside the picker.\n\tconst showAddButton = hasSourceGroups\n\t\t? usePicker || items.length > 0\n\t\t: usePicker ||\n\t\t addableOptions.length > 0 ||\n\t\t (!!createOption && items.length > 0);\n\t// Empty state offers a one-click \"Create new\" (sub-agents) rather than burying\n\t// it behind a single-item dropdown. In picker mode the \"+\" opens the picker\n\t// (with its own \"Create new\" row) instead, so skip the standalone button.\n\tconst showEmptyCreate =\n\t\titems.length === 0 && !!createOption && !hasSourceGroups && !usePicker;\n\tconst hasActionSources = !!actionSources && actionSources.length > 0;\n\t// Source buttons ONLY while no item is added — the tool sources (Manifest /\n\t// Shopify …) plus the built-in action tools (Rest API / Handover to email).\n\t// Once an item exists, adding more uses the header \"+\" → picker (the buttons\n\t// never come back); the action tools still live inside that picker.\n\tconst showSourceButtons =\n\t\t(hasSourceGroups || hasActionSources) && items.length === 0;\n\t// Nothing existing to pick → skip the 1-item dropdown and create directly.\n\tconst handleAddClick = () => {\n\t\tif (usePicker) {\n\t\t\t// Toggle the `@` reference-picker popover (rendered under the \"+\"), opened\n\t\t\t// at the root source list (no pre-drilled source).\n\t\t\tsetPickerSource(null);\n\t\t\tsetAdding((v) => !v);\n\t\t\treturn;\n\t\t}\n\t\tif (hasSourceGroups) {\n\t\t\tsetActiveSource(null);\n\t\t\tsetAdding((v) => !v);\n\t\t\treturn;\n\t\t}\n\t\tif (addableOptions.length === 0 && createOption) {\n\t\t\tcreateOption.onSelect();\n\t\t\treturn;\n\t\t}\n\t\tsetAdding((v) => !v);\n\t};\n\n\t// Run a row's configure handler; a returned promise disables the edit\n\t// buttons until it settles (same promise-sniff as the drawer Save buttons).\n\tconst handleConfigureClick = (\n\t\tid: string,\n\t\tconfigure: () => void | Promise<void>,\n\t) => {\n\t\tif (configuringId) {\n\t\t\treturn;\n\t\t}\n\t\tconst result = configure();\n\t\tif (result && typeof (result as Promise<void>).then === 'function') {\n\t\t\tsetConfiguringId(id);\n\t\t\tvoid (result as Promise<void>).finally(() => setConfiguringId(null));\n\t\t}\n\t};\n\n\tconst renderChipRows = () =>\n\t\titems.map((item) => {\n\t\t\t// Per-item configure wins; otherwise fall back to the section-level one.\n\t\t\tconst configure =\n\t\t\t\titem.onConfigure ??\n\t\t\t\t(onConfigure ? () => onConfigure(item.id) : undefined);\n\t\t\treturn (\n\t\t\t\t<SelectableRow\n\t\t\t\t\tkey={item.id}\n\t\t\t\t\tdata-test={`${dataTestPrefix}-row-${item.id}`}\n\t\t\t\t>\n\t\t\t\t\t{renderSourceIcon(item.icon)}\n\t\t\t\t\t{/* Row label truncates to one line; tooltip surfaces the full name. */}\n\t\t\t\t\t<Tooltip body={item.label} placement=\"top\">\n\t\t\t\t\t\t<RowText>\n\t\t\t\t\t\t\t<BodySecondary numberOfLines={1} color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t</RowText>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t\t<RowActions>\n\t\t\t\t\t\t{configure && (\n\t\t\t\t\t\t\t// Configurable rows (sub-agents, Rest API / email tools) get an\n\t\t\t\t\t\t\t// always-visible edit icon.\n\t\t\t\t\t\t\t<Tooltip body=\"Edit\" placement=\"top\">\n\t\t\t\t\t\t\t\t<RowMenuButton\n\t\t\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-edit-${item.id}`}\n\t\t\t\t\t\t\t\t\taria-label={`Edit ${item.label}`}\n\t\t\t\t\t\t\t\t\tdisabled={configuringId !== null}\n\t\t\t\t\t\t\t\t\tonClick={() => handleConfigureClick(item.id, configure)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<EditIcon\n\t\t\t\t\t\t\t\t\t\twidth={16}\n\t\t\t\t\t\t\t\t\t\theight={16}\n\t\t\t\t\t\t\t\t\t\tcolor={COLORS.content.secondary}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</RowMenuButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{configure && <RowActionDivider aria-hidden />}\n\t\t\t\t\t\t<Tooltip body=\"Delete\" placement=\"top\">\n\t\t\t\t\t\t\t<RowMenuButton\n\t\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-delete-${item.id}`}\n\t\t\t\t\t\t\t\taria-label={`Delete ${item.label}`}\n\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\tconfirmDelete\n\t\t\t\t\t\t\t\t\t\t? setPendingDeleteId(item.id)\n\t\t\t\t\t\t\t\t\t\t: onRemove(item.id)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<DeleteIcon\n\t\t\t\t\t\t\t\t\twidth={16}\n\t\t\t\t\t\t\t\t\theight={16}\n\t\t\t\t\t\t\t\t\tcolor={COLORS.content.secondary}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</RowMenuButton>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</RowActions>\n\t\t\t\t</SelectableRow>\n\t\t\t);\n\t\t});\n\t// \"Create new\" is a brand-coloured footer row at the BOTTOM of the dropdown,\n\t// separated from the selectable items by a divider.\n\tconst dropdownOptions: SingleOption[] = createOption\n\t\t? [\n\t\t\t\t...addableOptions,\n\t\t\t\t{\n\t\t\t\t\tlabel: createOption.label,\n\t\t\t\t\tvalue: CREATE_OPTION_VALUE,\n\t\t\t\t\tsearchKey: createOption.label,\n\t\t\t\t\tcustomComponent: (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\ttextAlign: 'center',\n\t\t\t\t\t\t\t\tcolor: COLORS.content.brand,\n\t\t\t\t\t\t\t\tfontFamily: 'Inter',\n\t\t\t\t\t\t\t\tfontSize: 14,\n\t\t\t\t\t\t\t\tfontWeight: 600,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{createOption.label}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t ]\n\t\t: addableOptions;\n\n\t// One picker instance reused by the header \"+\" and the empty-state source\n\t// buttons. `key` remounts it so a source button re-drills into its own tools\n\t// (the initial drill-in level is read once, on mount).\n\tconst pickerNode = usePicker ? (\n\t\t<MentionPicker\n\t\t\tkey={pickerSource ?? '__root__'}\n\t\t\titems={mentionItems ?? []}\n\t\t\tquery=\"\"\n\t\t\tactiveIndex={0}\n\t\t\tinitialSource={pickerSource ?? undefined}\n\t\t\tonSelect={(item) => {\n\t\t\t\tsetAdding(false);\n\t\t\t\tonAdd(String(item.id));\n\t\t\t}}\n\t\t\tonClose={() => setAdding(false)}\n\t\t\tonCreateSubAgent={\n\t\t\t\tcreateOption\n\t\t\t\t\t? () => {\n\t\t\t\t\t\t\tsetAdding(false);\n\t\t\t\t\t\t\tcreateOption.onSelect();\n\t\t\t\t\t }\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\ttoolActions={\n\t\t\t\thasActionSources\n\t\t\t\t\t? actionSources?.map((a) => ({\n\t\t\t\t\t\t\t...a,\n\t\t\t\t\t\t\tonSelect: () => {\n\t\t\t\t\t\t\t\tsetAdding(false);\n\t\t\t\t\t\t\t\ta.onSelect();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t }))\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t/>\n\t) : null;\n\n\treturn (\n\t\t<SideSection>\n\t\t\t<SideSectionHeader>\n\t\t\t\t<TitleSmall color={COLORS.content.primary}>{title}</TitleSmall>\n\t\t\t\t{showAddButton && (\n\t\t\t\t\t<AddButtonWrap ref={headerPickerRef}>\n\t\t\t\t\t\t<AddIconButton\n\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-add`}\n\t\t\t\t\t\t\tonClick={handleAddClick}\n\t\t\t\t\t\t\taria-label={`Add ${title}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<PlusIcon width={16} height={16} color={COLORS.content.primary} />\n\t\t\t\t\t\t</AddIconButton>\n\t\t\t\t\t\t{usePicker && adding && pickerSource === null && (\n\t\t\t\t\t\t\t<PickerPopover\n\t\t\t\t\t\t\t\t$up={pickerOpensUp}\n\t\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-picker`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{pickerNode}\n\t\t\t\t\t\t\t</PickerPopover>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</AddButtonWrap>\n\t\t\t\t)}\n\t\t\t</SideSectionHeader>\n\n\t\t\t{helper && (\n\t\t\t\t<BodyCaption color={COLORS.content.secondary}>{helper}</BodyCaption>\n\t\t\t)}\n\n\t\t\t{showSourceButtons ? (\n\t\t\t\t<SourcePickerAnchor ref={usePicker ? sourcePickerRef : undefined}>\n\t\t\t\t\t{/* No tools yet: one button per source (never shown once a tool exists). */}\n\t\t\t\t\t<SourceButtonRow data-test={`${dataTestPrefix}-sources`}>\n\t\t\t\t\t\t{sourceGroups?.map((g) => (\n\t\t\t\t\t\t\t<SourceButton\n\t\t\t\t\t\t\t\tkey={g.source}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-source-${g.source}`}\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tif (usePicker) {\n\t\t\t\t\t\t\t\t\t\t// Open the `@` picker drilled straight into this source's tools.\n\t\t\t\t\t\t\t\t\t\tsetPickerSource(g.source);\n\t\t\t\t\t\t\t\t\t\tsetAdding(true);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tsetActiveSource(g.source);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderSourceIcon(SOURCE_ICONS[g.source], -4)}\n\t\t\t\t\t\t\t\t<BodyCaption color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\t\t{g.label}\n\t\t\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t\t</SourceButton>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t{actionSources?.map((a) => (\n\t\t\t\t\t\t\t<SourceButton\n\t\t\t\t\t\t\t\tkey={a.source}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-action-${a.source}`}\n\t\t\t\t\t\t\t\t// Close any open source picker before this opens its drawer,\n\t\t\t\t\t\t\t\t// otherwise the previous source's popup lingers behind it.\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tsetAdding(false);\n\t\t\t\t\t\t\t\t\ta.onSelect();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderSourceIcon(a.icon, -4)}\n\t\t\t\t\t\t\t\t<BodyCaption color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\t\t{a.label}\n\t\t\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t\t</SourceButton>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</SourceButtonRow>\n\n\t\t\t\t\t{/* Picker mode: clicking a source opens its tools in the `@` picker. */}\n\t\t\t\t\t{usePicker && adding && pickerSource !== null && (\n\t\t\t\t\t\t<PickerPopover\n\t\t\t\t\t\t\t$align=\"left\"\n\t\t\t\t\t\t\t$up={pickerOpensUp}\n\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-picker`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{pickerNode}\n\t\t\t\t\t\t</PickerPopover>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{/* Legacy (non-picker) mode: chosen source → its searchable tool list. */}\n\t\t\t\t\t{!usePicker && activeGroup && (\n\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-dropdown`}\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\tisSearchable\n\t\t\t\t\t\t\tplaceHolder={`Search ${activeGroup.label} tools`}\n\t\t\t\t\t\t\toptions={activeGroup.options}\n\t\t\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\t\t\tconst v = unwrapDropdownValue(opt);\n\t\t\t\t\t\t\t\tsetActiveSource(null);\n\t\t\t\t\t\t\t\tsetAdding(false);\n\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\tonAdd(v);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</SourcePickerAnchor>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{!usePicker && adding && dropdownOptions.length > 0 && (\n\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-dropdown`}\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\tisSearchable\n\t\t\t\t\t\t\tplaceHolder={`Select ${title.toLowerCase()}`}\n\t\t\t\t\t\t\toptions={dropdownOptions}\n\t\t\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\t\t\tconst v = unwrapDropdownValue(opt);\n\t\t\t\t\t\t\t\tsetAdding(false);\n\t\t\t\t\t\t\t\tif (!v) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (v === CREATE_OPTION_VALUE) {\n\t\t\t\t\t\t\t\t\tcreateOption?.onSelect();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tonAdd(v);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{items.length === 0 && !adding ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<BodyCaption color={COLORS.content.placeholder}>\n\t\t\t\t\t\t\t\t{emptyText}\n\t\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t\t{showEmptyCreate && createOption && (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-create`}\n\t\t\t\t\t\t\t\t\tbuttonType=\"secondary\"\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tmatchParentWidth\n\t\t\t\t\t\t\t\t\tLeadingIcon={PlusIcon}\n\t\t\t\t\t\t\t\t\tbuttonText={createOption.label}\n\t\t\t\t\t\t\t\t\tonClick={createOption.onSelect}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : (\n\t\t\t\t\t\trenderChipRows()\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t\t{confirmDelete && pendingDeleteId && (\n\t\t\t\t<DeleteConfirmationModal\n\t\t\t\t\tdata-test={`${dataTestPrefix}-delete-confirm`}\n\t\t\t\t\theader={`Delete this ${confirmDelete.noun}?`}\n\t\t\t\t\tsubHeader={`Deleting this ${confirmDelete.noun} will also remove it from your instructions, wherever it's referenced.`}\n\t\t\t\t\tconfirmationText=\"Delete\"\n\t\t\t\t\tzIndex={confirmDelete.zIndex}\n\t\t\t\t\tonDeleteConfirmed={() => {\n\t\t\t\t\t\tonRemove(pendingDeleteId);\n\t\t\t\t\t\tsetPendingDeleteId(null);\n\t\t\t\t\t}}\n\t\t\t\t\tonCancelClicked={() => setPendingDeleteId(null)}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</SideSection>\n\t);\n};\n\n// Anchors the `@`-picker popover to the header \"+\" button.\nconst AddButtonWrap = styled.div`\n\tposition: relative;\n\tdisplay: flex;\n`;\n\n// Anchors the `@`-picker popover to the empty-state source buttons.\nconst SourcePickerAnchor = styled.div`\n\tposition: relative;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px;\n`;\n\n// Floating card under the trigger. Aligns to the \"+\" (right) or the source\n// buttons (left) so it stays inside the side panel.\nconst PickerPopover = styled.div<{ $align?: 'left' | 'right'; $up?: boolean }>`\n\tposition: absolute;\n\t${(p) => (p.$up ? 'bottom: calc(100% + 4px);' : 'top: calc(100% + 4px);')}\n\t${(p) => (p.$align === 'left' ? 'left: 0;' : 'right: 0;')}\n\tz-index: 30;\n`;\n"],"names":["CREATE_OPTION_VALUE","SelectableListSection","title","helper","items","addableOptions","onAdd","onRemove","dataTestPrefix","emptyText","createOption","onConfigure","sourceGroups","mentionItems","actionSources","confirmDelete","pickerOpensUp","adding","setAdding","useState","pendingDeleteId","setPendingDeleteId","configuringId","setConfiguringId","activeSource","setActiveSource","hasSourceGroups","activeGroup","g","usePicker","headerPickerRef","useRef","sourcePickerRef","pickerSource","setPickerSource","useEffect","onDocMouseDown","e","target","onKeyDown","showAddButton","showEmptyCreate","hasActionSources","showSourceButtons","handleAddClick","v","handleConfigureClick","id","configure","result","renderChipRows","item","jsxs","SelectableRow","renderSourceIcon","jsx","Tooltip","RowText","BodySecondary","COLORS","RowActions","RowMenuButton","EditIcon","RowActionDivider","DeleteIcon","dropdownOptions","pickerNode","MentionPicker","a","SideSection","SideSectionHeader","TitleSmall","AddButtonWrap","AddIconButton","PlusIcon","PickerPopover","BodyCaption","SourcePickerAnchor","SourceButtonRow","SourceButton","SOURCE_ICONS","Dropdown","opt","unwrapDropdownValue","Fragment","Button","DeleteConfirmationModal","styled","p"],"mappings":"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"}
1
+ {"version":3,"file":"SelectableListSection.js","sources":["../../../../../src/components/agent-builder/components/SelectableListSection.tsx"],"sourcesContent":["import DeleteIcon from '@src/assets/icons/delete.svg';\nimport EditIcon from '@src/assets/icons/edit.svg';\nimport PlusIcon from '@src/assets/icons/plus.svg';\nimport { MentionItem } from '@src/editor';\nimport React, { useEffect, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport { Button } from '@src/components/button';\nimport { Dropdown, unwrapDropdownValue } from '@src/components/dropdown';\nimport { SingleOption } from '@src/components/dropdown/type';\nimport { DeleteConfirmationModal } from '@src/components/states-modal';\nimport {\n\tBodyCaption,\n\tBodySecondary,\n\tTitleSmall,\n} from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport {\n\tAddIconButton,\n\tRowActionDivider,\n\tRowActions,\n\tRowMenuButton,\n\tRowText,\n\tSelectableRow,\n\tSideSection,\n\tSideSectionHeader,\n\tSourceButton,\n\tSourceButtonRow,\n} from '../AgentBuilder.styled';\nimport { ToolAction } from '../constants/tools';\nimport {\n\trenderSourceIcon,\n\tSOURCE_ICONS,\n\tSourceIcon,\n} from '../utils/sourceIcons';\nimport { MentionPicker } from './MentionPicker';\n\nexport interface SelectableItem {\n\tid: string;\n\tlabel: string;\n\t/** Leading brand glyph (e.g. a tool's source icon). */\n\ticon?: SourceIcon;\n\t/**\n\t * When set, this row shows an edit (Configure) icon that calls this instead of\n\t * the section-level `onConfigure`. Use for rows that open their own drawer\n\t * (e.g. a configured Rest API / email-handover tool).\n\t */\n\tonConfigure?: () => void;\n}\n\n/** A tool source for the empty-state picker (Tools): a button → its searchable list. */\nexport interface SourceGroup {\n\tsource: string;\n\tlabel: string;\n\toptions: SingleOption[];\n}\n\n/** Sentinel value for the \"create new\" entry in the add dropdown. */\nconst CREATE_OPTION_VALUE = '__bik_create_new__';\n\ninterface SelectableListSectionProps {\n\ttitle: string;\n\thelper?: string;\n\titems: SelectableItem[];\n\t/**\n\t * Options shown in the add dropdown. Pass ALL items (not just unselected\n\t * ones) when re-picking an already-added item is allowed (e.g. to insert its\n\t * mention again) — the chip list still shows each item only once.\n\t */\n\taddableOptions: SingleOption[];\n\tonAdd: (id: string) => void;\n\tonRemove: (id: string) => void;\n\tdataTestPrefix: string;\n\temptyText: string;\n\t/**\n\t * Adds a \"create new\" entry at the top of the add dropdown (e.g. \"Create\n\t * sub-agent\"). Selecting it calls `onSelect` instead of `onAdd`.\n\t */\n\tcreateOption?: { label: string; onSelect: () => void };\n\t/**\n\t * When provided, each row shows an edit (Configure) icon next to Delete.\n\t * Omit for tools (Delete only).\n\t */\n\tonConfigure?: (id: string) => void;\n\t/**\n\t * Tool sources (e.g. Manifest / Shopify). When set, the empty state shows a\n\t * button per source; clicking one reveals a searchable dropdown of just that\n\t * source's options. Selecting calls `onAdd`. Takes precedence over the plain\n\t * `addableOptions` dropdown.\n\t */\n\tsourceGroups?: SourceGroup[];\n\t/**\n\t * When provided, the header \"+\" opens the same `@` reference picker used in the\n\t * Instructions editor (a {@link MentionPicker} popover) instead of the inline\n\t * select dropdown. Pass the items for THIS section only (tools OR sub-agents) —\n\t * the picker auto-drills into the single category. Selecting a row calls\n\t * `onAdd(id)`; the picker's \"Create new\" row (sub-agents) calls\n\t * `createOption.onSelect`.\n\t */\n\tmentionItems?: MentionItem[];\n\t/**\n\t * Built-in \"action\" tools (e.g. Rest API / Handover to email) that open a\n\t * config drawer via `onSelect` instead of adding a mention. Shown as\n\t * empty-state source buttons (only while no items exist, alongside\n\t * `sourceGroups`) AND as rows inside the `@` picker's Tools view.\n\t */\n\tactionSources?: ToolAction[];\n\t/**\n\t * When set, the row Delete icon opens a confirmation modal (instead of\n\t * removing immediately); `onRemove` runs only on confirm. `noun` fills the one\n\t * shared message template (\"Delete this <noun>?\" …); `zIndex` raises the modal\n\t * above a parent drawer. Omit to delete directly.\n\t */\n\tconfirmDelete?: { noun: string; zIndex?: number };\n}\n\nexport const SelectableListSection: React.FC<SelectableListSectionProps> = ({\n\ttitle,\n\thelper,\n\titems,\n\taddableOptions,\n\tonAdd,\n\tonRemove,\n\tdataTestPrefix,\n\temptyText,\n\tcreateOption,\n\tonConfigure,\n\tsourceGroups,\n\tmentionItems,\n\tactionSources,\n\tconfirmDelete,\n}) => {\n\tconst [adding, setAdding] = useState(false);\n\t// Row id awaiting delete confirmation (null = modal closed).\n\tconst [pendingDeleteId, setPendingDeleteId] = useState<string | null>(null);\n\t// Tools: which source's searchable list is open (null = just show the buttons).\n\tconst [activeSource, setActiveSource] = useState<string | null>(null);\n\tconst hasSourceGroups = !!sourceGroups && sourceGroups.length > 0;\n\tconst activeGroup = sourceGroups?.find((g) => g.source === activeSource);\n\t// When set, \"+\" opens the `@` MentionPicker popover instead of a select input.\n\tconst usePicker = mentionItems !== undefined;\n\t// Separate anchors for the header \"+\" popover and the empty-state source-button\n\t// popover — when empty both render at once, so a shared ref would misfire the\n\t// outside-click check (closing the header picker when a source row is clicked).\n\tconst headerPickerRef = useRef<HTMLDivElement>(null);\n\tconst sourcePickerRef = useRef<HTMLDivElement>(null);\n\t// Source (Shopify / Manifest) the empty-state button opened the picker into;\n\t// null when \"+\" opened it at the root source list.\n\tconst [pickerSource, setPickerSource] = useState<string | null>(null);\n\n\t// Dismiss the picker popover on outside click / Escape.\n\tuseEffect(() => {\n\t\tif (!usePicker || !adding) {\n\t\t\treturn;\n\t\t}\n\t\tconst onDocMouseDown = (e: MouseEvent) => {\n\t\t\tconst target = e.target as Node;\n\t\t\tif (\n\t\t\t\t!headerPickerRef.current?.contains(target) &&\n\t\t\t\t!sourcePickerRef.current?.contains(target)\n\t\t\t) {\n\t\t\t\tsetAdding(false);\n\t\t\t}\n\t\t};\n\t\tconst onKeyDown = (e: KeyboardEvent) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tsetAdding(false);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('mousedown', onDocMouseDown);\n\t\tdocument.addEventListener('keydown', onKeyDown);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', onDocMouseDown);\n\t\t\tdocument.removeEventListener('keydown', onKeyDown);\n\t\t};\n\t}, [usePicker, adding]);\n\n\t// Header \"+\" picks an EXISTING item (and, once some exist, re-creates via the\n\t// dropdown's footer row). With an empty list + a createOption the body shows a\n\t// dedicated \"Create new\" button instead, so the header \"+\" would be redundant.\n\t// In picker mode the \"+\" always shows (even empty) — for tools it sits next to\n\t// the empty-state source buttons; the create flow lives inside the picker.\n\tconst showAddButton = hasSourceGroups\n\t\t? usePicker || items.length > 0\n\t\t: usePicker ||\n\t\t addableOptions.length > 0 ||\n\t\t (!!createOption && items.length > 0);\n\t// Empty state offers a one-click \"Create new\" (sub-agents) rather than burying\n\t// it behind a single-item dropdown. In picker mode the \"+\" opens the picker\n\t// (with its own \"Create new\" row) instead, so skip the standalone button.\n\tconst showEmptyCreate =\n\t\titems.length === 0 && !!createOption && !hasSourceGroups && !usePicker;\n\tconst hasActionSources = !!actionSources && actionSources.length > 0;\n\t// Source buttons ONLY while no item is added — the tool sources (Manifest /\n\t// Shopify …) plus the built-in action tools (Rest API / Handover to email).\n\t// Once an item exists, adding more uses the header \"+\" → picker (the buttons\n\t// never come back); the action tools still live inside that picker.\n\tconst showSourceButtons =\n\t\t(hasSourceGroups || hasActionSources) && items.length === 0;\n\t// Nothing existing to pick → skip the 1-item dropdown and create directly.\n\tconst handleAddClick = () => {\n\t\tif (usePicker) {\n\t\t\t// Toggle the `@` reference-picker popover (rendered under the \"+\"), opened\n\t\t\t// at the root source list (no pre-drilled source).\n\t\t\tsetPickerSource(null);\n\t\t\tsetAdding((v) => !v);\n\t\t\treturn;\n\t\t}\n\t\tif (hasSourceGroups) {\n\t\t\tsetActiveSource(null);\n\t\t\tsetAdding((v) => !v);\n\t\t\treturn;\n\t\t}\n\t\tif (addableOptions.length === 0 && createOption) {\n\t\t\tcreateOption.onSelect();\n\t\t\treturn;\n\t\t}\n\t\tsetAdding((v) => !v);\n\t};\n\n\tconst renderChipRows = () =>\n\t\titems.map((item) => {\n\t\t\t// Per-item configure wins; otherwise fall back to the section-level one.\n\t\t\tconst configure =\n\t\t\t\titem.onConfigure ??\n\t\t\t\t(onConfigure ? () => onConfigure(item.id) : undefined);\n\t\t\treturn (\n\t\t\t\t<SelectableRow\n\t\t\t\t\tkey={item.id}\n\t\t\t\t\tdata-test={`${dataTestPrefix}-row-${item.id}`}\n\t\t\t\t>\n\t\t\t\t\t{renderSourceIcon(item.icon)}\n\t\t\t\t\t<RowText>\n\t\t\t\t\t\t<BodySecondary numberOfLines={1} color={COLORS.content.primary}>\n\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t</RowText>\n\t\t\t\t\t<RowActions>\n\t\t\t\t\t\t{configure && (\n\t\t\t\t\t\t\t// Configurable rows (sub-agents, Rest API / email tools) get an\n\t\t\t\t\t\t\t// always-visible edit icon.\n\t\t\t\t\t\t\t<RowMenuButton\n\t\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-edit-${item.id}`}\n\t\t\t\t\t\t\t\taria-label={`Edit ${item.label}`}\n\t\t\t\t\t\t\t\tonClick={configure}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<EditIcon\n\t\t\t\t\t\t\t\t\twidth={16}\n\t\t\t\t\t\t\t\t\theight={16}\n\t\t\t\t\t\t\t\t\tcolor={COLORS.content.secondary}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</RowMenuButton>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{configure && <RowActionDivider aria-hidden />}\n\t\t\t\t\t\t<RowMenuButton\n\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-delete-${item.id}`}\n\t\t\t\t\t\t\taria-label={`Delete ${item.label}`}\n\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\tconfirmDelete ? setPendingDeleteId(item.id) : onRemove(item.id)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<DeleteIcon\n\t\t\t\t\t\t\t\twidth={16}\n\t\t\t\t\t\t\t\theight={16}\n\t\t\t\t\t\t\t\tcolor={COLORS.content.secondary}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</RowMenuButton>\n\t\t\t\t\t</RowActions>\n\t\t\t\t</SelectableRow>\n\t\t\t);\n\t\t});\n\t// \"Create new\" is a brand-coloured footer row at the BOTTOM of the dropdown,\n\t// separated from the selectable items by a divider.\n\tconst dropdownOptions: SingleOption[] = createOption\n\t\t? [\n\t\t\t\t...addableOptions,\n\t\t\t\t{\n\t\t\t\t\tlabel: createOption.label,\n\t\t\t\t\tvalue: CREATE_OPTION_VALUE,\n\t\t\t\t\tsearchKey: createOption.label,\n\t\t\t\t\tcustomComponent: (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\ttextAlign: 'center',\n\t\t\t\t\t\t\t\tcolor: COLORS.content.brand,\n\t\t\t\t\t\t\t\tfontFamily: 'Inter',\n\t\t\t\t\t\t\t\tfontSize: 14,\n\t\t\t\t\t\t\t\tfontWeight: 600,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{createOption.label}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t ]\n\t\t: addableOptions;\n\n\t// One picker instance reused by the header \"+\" and the empty-state source\n\t// buttons. `key` remounts it so a source button re-drills into its own tools\n\t// (the initial drill-in level is read once, on mount).\n\tconst pickerNode = usePicker ? (\n\t\t<MentionPicker\n\t\t\tkey={pickerSource ?? '__root__'}\n\t\t\titems={mentionItems ?? []}\n\t\t\tquery=\"\"\n\t\t\tactiveIndex={0}\n\t\t\tinitialSource={pickerSource ?? undefined}\n\t\t\tonSelect={(item) => {\n\t\t\t\tsetAdding(false);\n\t\t\t\tonAdd(String(item.id));\n\t\t\t}}\n\t\t\tonClose={() => setAdding(false)}\n\t\t\tonCreateSubAgent={\n\t\t\t\tcreateOption\n\t\t\t\t\t? () => {\n\t\t\t\t\t\t\tsetAdding(false);\n\t\t\t\t\t\t\tcreateOption.onSelect();\n\t\t\t\t\t }\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\ttoolActions={\n\t\t\t\thasActionSources\n\t\t\t\t\t? actionSources?.map((a) => ({\n\t\t\t\t\t\t\t...a,\n\t\t\t\t\t\t\tonSelect: () => {\n\t\t\t\t\t\t\t\tsetAdding(false);\n\t\t\t\t\t\t\t\ta.onSelect();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t }))\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t/>\n\t) : null;\n\n\treturn (\n\t\t<SideSection>\n\t\t\t<SideSectionHeader>\n\t\t\t\t<TitleSmall color={COLORS.content.primary}>{title}</TitleSmall>\n\t\t\t\t{showAddButton && (\n\t\t\t\t\t<AddButtonWrap ref={headerPickerRef}>\n\t\t\t\t\t\t<AddIconButton\n\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-add`}\n\t\t\t\t\t\t\tonClick={handleAddClick}\n\t\t\t\t\t\t\taria-label={`Add ${title}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<PlusIcon width={20} height={20} color={COLORS.content.brand} />\n\t\t\t\t\t\t</AddIconButton>\n\t\t\t\t\t\t{usePicker && adding && pickerSource === null && (\n\t\t\t\t\t\t\t<PickerPopover data-test={`${dataTestPrefix}-picker`}>\n\t\t\t\t\t\t\t\t{pickerNode}\n\t\t\t\t\t\t\t</PickerPopover>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</AddButtonWrap>\n\t\t\t\t)}\n\t\t\t</SideSectionHeader>\n\n\t\t\t{helper && (\n\t\t\t\t<BodyCaption color={COLORS.content.secondary}>{helper}</BodyCaption>\n\t\t\t)}\n\n\t\t\t{showSourceButtons ? (\n\t\t\t\t<SourcePickerAnchor ref={usePicker ? sourcePickerRef : undefined}>\n\t\t\t\t\t{/* No tools yet: one button per source (never shown once a tool exists). */}\n\t\t\t\t\t<SourceButtonRow data-test={`${dataTestPrefix}-sources`}>\n\t\t\t\t\t\t{sourceGroups?.map((g) => (\n\t\t\t\t\t\t\t<SourceButton\n\t\t\t\t\t\t\t\tkey={g.source}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-source-${g.source}`}\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tif (usePicker) {\n\t\t\t\t\t\t\t\t\t\t// Open the `@` picker drilled straight into this source's tools.\n\t\t\t\t\t\t\t\t\t\tsetPickerSource(g.source);\n\t\t\t\t\t\t\t\t\t\tsetAdding(true);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tsetActiveSource(g.source);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderSourceIcon(SOURCE_ICONS[g.source], -4)}\n\t\t\t\t\t\t\t\t<BodySecondary color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\t\t{g.label}\n\t\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t</SourceButton>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t{/* Built-in action tools (Rest API / Handover to email) open a drawer. */}\n\t\t\t\t\t\t{actionSources?.map((a) => (\n\t\t\t\t\t\t\t<SourceButton\n\t\t\t\t\t\t\t\tkey={a.source}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-action-${a.source}`}\n\t\t\t\t\t\t\t\tonClick={a.onSelect}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderSourceIcon(a.icon, -4)}\n\t\t\t\t\t\t\t\t<BodySecondary color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\t\t{a.label}\n\t\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t</SourceButton>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</SourceButtonRow>\n\n\t\t\t\t\t{/* Picker mode: clicking a source opens its tools in the `@` picker. */}\n\t\t\t\t\t{usePicker && adding && pickerSource !== null && (\n\t\t\t\t\t\t<PickerPopover $align=\"left\" data-test={`${dataTestPrefix}-picker`}>\n\t\t\t\t\t\t\t{pickerNode}\n\t\t\t\t\t\t</PickerPopover>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{/* Legacy (non-picker) mode: chosen source → its searchable tool list. */}\n\t\t\t\t\t{!usePicker && activeGroup && (\n\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-dropdown`}\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\tisSearchable\n\t\t\t\t\t\t\tplaceHolder={`Search ${activeGroup.label} tools`}\n\t\t\t\t\t\t\toptions={activeGroup.options}\n\t\t\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\t\t\tconst v = unwrapDropdownValue(opt);\n\t\t\t\t\t\t\t\tsetActiveSource(null);\n\t\t\t\t\t\t\t\tsetAdding(false);\n\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\tonAdd(v);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</SourcePickerAnchor>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{!usePicker && adding && dropdownOptions.length > 0 && (\n\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-dropdown`}\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\tisSearchable\n\t\t\t\t\t\t\tplaceHolder={`Select ${title.toLowerCase()}`}\n\t\t\t\t\t\t\toptions={dropdownOptions}\n\t\t\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\t\t\tconst v = unwrapDropdownValue(opt);\n\t\t\t\t\t\t\t\tsetAdding(false);\n\t\t\t\t\t\t\t\tif (!v) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (v === CREATE_OPTION_VALUE) {\n\t\t\t\t\t\t\t\t\tcreateOption?.onSelect();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tonAdd(v);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{items.length === 0 && !adding ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<BodyCaption color={COLORS.content.placeholder}>\n\t\t\t\t\t\t\t\t{emptyText}\n\t\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t\t{showEmptyCreate && createOption && (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-create`}\n\t\t\t\t\t\t\t\t\tbuttonType=\"secondary\"\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tmatchParentWidth\n\t\t\t\t\t\t\t\t\tLeadingIcon={PlusIcon}\n\t\t\t\t\t\t\t\t\tbuttonText={createOption.label}\n\t\t\t\t\t\t\t\t\tonClick={createOption.onSelect}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : (\n\t\t\t\t\t\trenderChipRows()\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t\t{confirmDelete && pendingDeleteId && (\n\t\t\t\t<DeleteConfirmationModal\n\t\t\t\t\tdata-test={`${dataTestPrefix}-delete-confirm`}\n\t\t\t\t\theader={`Delete this ${confirmDelete.noun}?`}\n\t\t\t\t\tsubHeader={`Deleting this ${confirmDelete.noun} will also remove it from your instructions, wherever it's referenced.`}\n\t\t\t\t\tconfirmationText=\"Delete\"\n\t\t\t\t\tzIndex={confirmDelete.zIndex}\n\t\t\t\t\tonDeleteConfirmed={() => {\n\t\t\t\t\t\tonRemove(pendingDeleteId);\n\t\t\t\t\t\tsetPendingDeleteId(null);\n\t\t\t\t\t}}\n\t\t\t\t\tonCancelClicked={() => setPendingDeleteId(null)}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</SideSection>\n\t);\n};\n\n// Anchors the `@`-picker popover to the header \"+\" button.\nconst AddButtonWrap = styled.div`\n\tposition: relative;\n\tdisplay: flex;\n`;\n\n// Anchors the `@`-picker popover to the empty-state source buttons.\nconst SourcePickerAnchor = styled.div`\n\tposition: relative;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px;\n`;\n\n// Floating card under the trigger. Aligns to the \"+\" (right) or the source\n// buttons (left) so it stays inside the side panel.\nconst PickerPopover = styled.div<{ $align?: 'left' | 'right' }>`\n\tposition: absolute;\n\ttop: calc(100% + 4px);\n\t${(p) => (p.$align === 'left' ? 'left: 0;' : 'right: 0;')}\n\tz-index: 30;\n`;\n"],"names":["CREATE_OPTION_VALUE","SelectableListSection","title","helper","items","addableOptions","onAdd","onRemove","dataTestPrefix","emptyText","createOption","onConfigure","sourceGroups","mentionItems","actionSources","confirmDelete","adding","setAdding","useState","pendingDeleteId","setPendingDeleteId","activeSource","setActiveSource","hasSourceGroups","activeGroup","g","usePicker","headerPickerRef","useRef","sourcePickerRef","pickerSource","setPickerSource","useEffect","onDocMouseDown","e","target","onKeyDown","showAddButton","showEmptyCreate","hasActionSources","showSourceButtons","handleAddClick","v","renderChipRows","item","configure","jsxs","SelectableRow","renderSourceIcon","jsx","RowText","BodySecondary","COLORS","RowActions","RowMenuButton","EditIcon","RowActionDivider","DeleteIcon","dropdownOptions","pickerNode","MentionPicker","a","SideSection","SideSectionHeader","TitleSmall","AddButtonWrap","AddIconButton","PlusIcon","PickerPopover","BodyCaption","SourcePickerAnchor","SourceButtonRow","SourceButton","SOURCE_ICONS","Dropdown","opt","unwrapDropdownValue","Fragment","Button","DeleteConfirmationModal","styled","p"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
- import { jsxs as i, jsx as r } from "react/jsx-runtime";
2
- import { TitleRegular as n, BodyCaption as c } from "../../TypographyStyle.js";
3
- import { COLORS as t } from "../../../constants/Theme.js";
1
+ import { jsxs as c, jsx as r } from "react/jsx-runtime";
2
+ import { TitleRegular as n, BodySecondary as i } from "../../TypographyStyle.js";
3
+ import { COLORS as e } from "../../../constants/Theme.js";
4
4
  import { SectionHeaderWrap as m } from "../AgentBuilder.styled.js";
5
5
  const s = ({
6
- title: e,
6
+ title: t,
7
7
  helper: o
8
- }) => /* @__PURE__ */ i(m, { children: [
9
- /* @__PURE__ */ r(n, { color: t.content.primary, children: e }),
10
- o && /* @__PURE__ */ r(c, { color: t.content.secondary, children: o })
8
+ }) => /* @__PURE__ */ c(m, { children: [
9
+ /* @__PURE__ */ r(n, { color: e.content.primary, children: t }),
10
+ o && /* @__PURE__ */ r(i, { color: e.content.secondary, children: o })
11
11
  ] });
12
12
  export {
13
13
  s as StepSectionHeader