@bikdotai/bik-component-library 0.0.840 → 0.0.841-beta.1

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 (241) hide show
  1. package/dist/cjs/components/agent-builder/AgentBuilder.js +1 -1
  2. package/dist/cjs/components/agent-builder/AgentBuilder.js.map +1 -1
  3. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js +51 -39
  4. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js.map +1 -1
  5. package/dist/cjs/components/agent-builder/components/AgentBuilderFooter.js +1 -1
  6. package/dist/cjs/components/agent-builder/components/AgentBuilderFooter.js.map +1 -1
  7. package/dist/cjs/components/agent-builder/components/AgentBuilderTopBar.js +1 -1
  8. package/dist/cjs/components/agent-builder/components/AgentBuilderTopBar.js.map +1 -1
  9. package/dist/cjs/components/agent-builder/components/ConfigToolPanel.js +2 -2
  10. package/dist/cjs/components/agent-builder/components/ConfigToolPanel.js.map +1 -1
  11. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js +1 -1
  12. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  13. package/dist/cjs/components/agent-builder/components/DiscardModal.js +1 -1
  14. package/dist/cjs/components/agent-builder/components/DiscardModal.js.map +1 -1
  15. package/dist/cjs/components/agent-builder/components/GoLiveModal.js +1 -1
  16. package/dist/cjs/components/agent-builder/components/GoLiveModal.js.map +1 -1
  17. package/dist/cjs/components/agent-builder/components/MentionEditor.js +1 -1
  18. package/dist/cjs/components/agent-builder/components/MentionEditor.js.map +1 -1
  19. package/dist/cjs/components/agent-builder/components/MentionPicker.js +28 -22
  20. package/dist/cjs/components/agent-builder/components/MentionPicker.js.map +1 -1
  21. package/dist/cjs/components/agent-builder/components/RequireVerificationModal.js +2 -0
  22. package/dist/cjs/components/agent-builder/components/RequireVerificationModal.js.map +1 -0
  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 +3 -1
  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 +5 -3
  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/AgentTableShimmer.js +2 -0
  48. package/dist/cjs/components/agent-listing/AgentTableShimmer.js.map +1 -0
  49. package/dist/cjs/components/agent-listing/DeleteAgentModal.js +1 -1
  50. package/dist/cjs/components/agent-listing/DeleteAgentModal.js.map +1 -1
  51. package/dist/cjs/components/button/Button.styled.js +1 -0
  52. package/dist/cjs/components/button/Button.styled.js.map +1 -1
  53. package/dist/cjs/components/card-selector/CardSelector.js +1 -1
  54. package/dist/cjs/components/card-selector/CardSelector.js.map +1 -1
  55. package/dist/cjs/components/card-selector/CardSelectorGroup.js +1 -1
  56. package/dist/cjs/components/card-selector/CardSelectorGroup.js.map +1 -1
  57. package/dist/cjs/components/carousel/carousel.js +2 -2
  58. package/dist/cjs/components/carousel/carousel.js.map +1 -1
  59. package/dist/cjs/components/checkBox/CheckBox.js +1 -1
  60. package/dist/cjs/components/checkBox/CheckBox.js.map +1 -1
  61. package/dist/cjs/components/code-block/CodeBlock.js +2 -2
  62. package/dist/cjs/components/code-block/CodeBlock.js.map +1 -1
  63. package/dist/cjs/components/colourInput/ColourInput.js +1 -1
  64. package/dist/cjs/components/colourInput/ColourInput.js.map +1 -1
  65. package/dist/cjs/components/dot-pulse/DotPulse.js +3 -3
  66. package/dist/cjs/components/dot-pulse/DotPulse.js.map +1 -1
  67. package/dist/cjs/components/dropShadow/DropShadow.js +1 -1
  68. package/dist/cjs/components/dropShadow/DropShadow.js.map +1 -1
  69. package/dist/cjs/components/dropdown/ChipInput.js +1 -1
  70. package/dist/cjs/components/dropdown/ChipInput.js.map +1 -1
  71. package/dist/cjs/components/dropdown/Dropdown.js +1 -1
  72. package/dist/cjs/components/dropdown/Dropdown.js.map +1 -1
  73. package/dist/cjs/components/dropdown/DropdownPopover/index.js +1 -1
  74. package/dist/cjs/components/dropdown/DropdownPopover/index.js.map +1 -1
  75. package/dist/cjs/components/floater/floater.js +1 -1
  76. package/dist/cjs/components/floater/floater.js.map +1 -1
  77. package/dist/cjs/components/modals/styledModal.js +2 -2
  78. package/dist/cjs/components/modals/styledModal.js.map +1 -1
  79. package/dist/cjs/components/pagination/Pagination.js +1 -1
  80. package/dist/cjs/components/pagination/Pagination.js.map +1 -1
  81. package/dist/cjs/components/progress-bar/CircularProgressBar.js +1 -1
  82. package/dist/cjs/components/progress-bar/CircularProgressBar.js.map +1 -1
  83. package/dist/cjs/components/progress-bar/ProgressBarComponent.js +2 -2
  84. package/dist/cjs/components/progress-bar/ProgressBarComponent.js.map +1 -1
  85. package/dist/cjs/components/progress-bar-v2/ProgressBarV2.js +17 -17
  86. package/dist/cjs/components/progress-bar-v2/ProgressBarV2.js.map +1 -1
  87. package/dist/cjs/components/shimmer-image/ShimmerImage.js +1 -1
  88. package/dist/cjs/components/shimmer-image/ShimmerImage.js.map +1 -1
  89. package/dist/cjs/components/spinner/Spinner.js +3 -3
  90. package/dist/cjs/components/spinner/Spinner.js.map +1 -1
  91. package/dist/cjs/components/states/StateComponent.js +1 -1
  92. package/dist/cjs/components/states/StateComponent.js.map +1 -1
  93. package/dist/cjs/components/stepper/Stepper.js +1 -1
  94. package/dist/cjs/components/stepper/Stepper.js.map +1 -1
  95. package/dist/cjs/components/testimonial-card/TestimonialCard.js +1 -1
  96. package/dist/cjs/components/testimonial-card/TestimonialCard.js.map +1 -1
  97. package/dist/cjs/components/unsatisfactory-response-list/UnsatisfactoryResponseList.js +1 -1
  98. package/dist/cjs/components/unsatisfactory-response-list/UnsatisfactoryResponseList.js.map +1 -1
  99. package/dist/cjs/editor/BikEditor.js +1 -1
  100. package/dist/cjs/editor/BikEditor.js.map +1 -1
  101. package/dist/cjs/editor/BikEditor.styles.js +97 -54
  102. package/dist/cjs/editor/BikEditor.styles.js.map +1 -1
  103. package/dist/cjs/editor/extensions/jsonHighlight/JsonHighlightExtension.js +3 -3
  104. package/dist/cjs/editor/extensions/jsonHighlight/JsonHighlightExtension.js.map +1 -1
  105. package/dist/cjs/icons/Informational/Common UI/Shield.js +2 -0
  106. package/dist/cjs/icons/Informational/Common UI/Shield.js.map +1 -0
  107. package/dist/cjs/icons/index.js +1 -1
  108. package/dist/esm/components/agent-builder/AgentBuilder.js +106 -102
  109. package/dist/esm/components/agent-builder/AgentBuilder.js.map +1 -1
  110. package/dist/esm/components/agent-builder/AgentBuilder.model.d.ts +31 -1
  111. package/dist/esm/components/agent-builder/AgentBuilder.styled.d.ts +3 -6
  112. package/dist/esm/components/agent-builder/AgentBuilder.styled.js +118 -106
  113. package/dist/esm/components/agent-builder/AgentBuilder.styled.js.map +1 -1
  114. package/dist/esm/components/agent-builder/__fixtures__/agentValue.d.ts +11 -0
  115. package/dist/esm/components/agent-builder/components/AgentBuilderFooter.js +29 -21
  116. package/dist/esm/components/agent-builder/components/AgentBuilderFooter.js.map +1 -1
  117. package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.js +27 -26
  118. package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.js.map +1 -1
  119. package/dist/esm/components/agent-builder/components/ConfigToolPanel.js +25 -25
  120. package/dist/esm/components/agent-builder/components/ConfigToolPanel.js.map +1 -1
  121. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js +24 -23
  122. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  123. package/dist/esm/components/agent-builder/components/DiscardModal.d.ts +3 -1
  124. package/dist/esm/components/agent-builder/components/DiscardModal.js +33 -24
  125. package/dist/esm/components/agent-builder/components/DiscardModal.js.map +1 -1
  126. package/dist/esm/components/agent-builder/components/GoLiveModal.js +23 -21
  127. package/dist/esm/components/agent-builder/components/GoLiveModal.js.map +1 -1
  128. package/dist/esm/components/agent-builder/components/MentionEditor.js +19 -19
  129. package/dist/esm/components/agent-builder/components/MentionEditor.js.map +1 -1
  130. package/dist/esm/components/agent-builder/components/MentionPicker.js +205 -154
  131. package/dist/esm/components/agent-builder/components/MentionPicker.js.map +1 -1
  132. package/dist/esm/components/agent-builder/components/RequireVerificationModal.d.ts +18 -0
  133. package/dist/esm/components/agent-builder/components/RequireVerificationModal.js +74 -0
  134. package/dist/esm/components/agent-builder/components/RequireVerificationModal.js.map +1 -0
  135. package/dist/esm/components/agent-builder/components/RestApiToolPanel.d.ts +2 -0
  136. package/dist/esm/components/agent-builder/components/RestApiToolPanel.js +111 -105
  137. package/dist/esm/components/agent-builder/components/RestApiToolPanel.js.map +1 -1
  138. package/dist/esm/components/agent-builder/components/SelectableListSection.d.ts +18 -4
  139. package/dist/esm/components/agent-builder/components/SelectableListSection.js +174 -138
  140. package/dist/esm/components/agent-builder/components/SelectableListSection.js.map +1 -1
  141. package/dist/esm/components/agent-builder/components/StepSectionHeader.js +7 -7
  142. package/dist/esm/components/agent-builder/components/StepSectionHeader.js.map +1 -1
  143. package/dist/esm/components/agent-builder/constants/tools.js +6 -6
  144. package/dist/esm/components/agent-builder/constants/tools.js.map +1 -1
  145. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js +104 -103
  146. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  147. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js +101 -102
  148. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
  149. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js +289 -205
  150. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
  151. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js +23 -79
  152. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js.map +1 -1
  153. package/dist/esm/components/agent-builder/utils/mentionSerialization.d.ts +2 -0
  154. package/dist/esm/components/agent-builder/utils/mentionSerialization.js +59 -46
  155. package/dist/esm/components/agent-builder/utils/mentionSerialization.js.map +1 -1
  156. package/dist/esm/components/agent-listing/AgentListing.js +70 -65
  157. package/dist/esm/components/agent-listing/AgentListing.js.map +1 -1
  158. package/dist/esm/components/agent-listing/AgentTable.d.ts +2 -0
  159. package/dist/esm/components/agent-listing/AgentTable.js +16 -15
  160. package/dist/esm/components/agent-listing/AgentTable.js.map +1 -1
  161. package/dist/esm/components/agent-listing/AgentTableRow.js +11 -11
  162. package/dist/esm/components/agent-listing/AgentTableRow.js.map +1 -1
  163. package/dist/esm/components/agent-listing/AgentTableShimmer.d.ts +12 -0
  164. package/dist/esm/components/agent-listing/AgentTableShimmer.js +20 -0
  165. package/dist/esm/components/agent-listing/AgentTableShimmer.js.map +1 -0
  166. package/dist/esm/components/agent-listing/DeleteAgentModal.js +8 -8
  167. package/dist/esm/components/agent-listing/DeleteAgentModal.js.map +1 -1
  168. package/dist/esm/components/agent-listing/__fixtures__/agents.d.ts +3 -0
  169. package/dist/esm/components/button/Button.styled.js +25 -19
  170. package/dist/esm/components/button/Button.styled.js.map +1 -1
  171. package/dist/esm/components/card-selector/CardSelector.js +11 -9
  172. package/dist/esm/components/card-selector/CardSelector.js.map +1 -1
  173. package/dist/esm/components/card-selector/CardSelectorGroup.js +1 -0
  174. package/dist/esm/components/card-selector/CardSelectorGroup.js.map +1 -1
  175. package/dist/esm/components/carousel/carousel.js +8 -8
  176. package/dist/esm/components/carousel/carousel.js.map +1 -1
  177. package/dist/esm/components/checkBox/CheckBox.js +8 -5
  178. package/dist/esm/components/checkBox/CheckBox.js.map +1 -1
  179. package/dist/esm/components/code-block/CodeBlock.js +14 -14
  180. package/dist/esm/components/code-block/CodeBlock.js.map +1 -1
  181. package/dist/esm/components/colourInput/ColourInput.js +11 -10
  182. package/dist/esm/components/colourInput/ColourInput.js.map +1 -1
  183. package/dist/esm/components/dot-pulse/DotPulse.js +15 -15
  184. package/dist/esm/components/dot-pulse/DotPulse.js.map +1 -1
  185. package/dist/esm/components/dropShadow/DropShadow.js +6 -6
  186. package/dist/esm/components/dropShadow/DropShadow.js.map +1 -1
  187. package/dist/esm/components/dropdown/ChipInput.js +10 -9
  188. package/dist/esm/components/dropdown/ChipInput.js.map +1 -1
  189. package/dist/esm/components/dropdown/Dropdown.js +18 -13
  190. package/dist/esm/components/dropdown/Dropdown.js.map +1 -1
  191. package/dist/esm/components/dropdown/DropdownPopover/index.js +26 -25
  192. package/dist/esm/components/dropdown/DropdownPopover/index.js.map +1 -1
  193. package/dist/esm/components/floater/floater.js +14 -13
  194. package/dist/esm/components/floater/floater.js.map +1 -1
  195. package/dist/esm/components/modals/styledModal.js +6 -5
  196. package/dist/esm/components/modals/styledModal.js.map +1 -1
  197. package/dist/esm/components/pagination/Pagination.js +7 -7
  198. package/dist/esm/components/pagination/Pagination.js.map +1 -1
  199. package/dist/esm/components/progress-bar/CircularProgressBar.js +61 -50
  200. package/dist/esm/components/progress-bar/CircularProgressBar.js.map +1 -1
  201. package/dist/esm/components/progress-bar/ProgressBarComponent.js +14 -13
  202. package/dist/esm/components/progress-bar/ProgressBarComponent.js.map +1 -1
  203. package/dist/esm/components/progress-bar-v2/ProgressBarV2.js +57 -39
  204. package/dist/esm/components/progress-bar-v2/ProgressBarV2.js.map +1 -1
  205. package/dist/esm/components/shimmer-image/ShimmerImage.js +19 -18
  206. package/dist/esm/components/shimmer-image/ShimmerImage.js.map +1 -1
  207. package/dist/esm/components/spinner/Spinner.js +19 -11
  208. package/dist/esm/components/spinner/Spinner.js.map +1 -1
  209. package/dist/esm/components/states/StateComponent.js +47 -30
  210. package/dist/esm/components/states/StateComponent.js.map +1 -1
  211. package/dist/esm/components/stepper/Stepper.js +24 -16
  212. package/dist/esm/components/stepper/Stepper.js.map +1 -1
  213. package/dist/esm/components/testimonial-card/TestimonialCard.js +5 -4
  214. package/dist/esm/components/testimonial-card/TestimonialCard.js.map +1 -1
  215. package/dist/esm/components/unsatisfactory-response-list/UnsatisfactoryResponseList.js +19 -18
  216. package/dist/esm/components/unsatisfactory-response-list/UnsatisfactoryResponseList.js.map +1 -1
  217. package/dist/esm/editor/BikEditor.js +173 -160
  218. package/dist/esm/editor/BikEditor.js.map +1 -1
  219. package/dist/esm/editor/BikEditor.styles.d.ts +20 -3
  220. package/dist/esm/editor/BikEditor.styles.js +102 -57
  221. package/dist/esm/editor/BikEditor.styles.js.map +1 -1
  222. package/dist/esm/editor/extensions/jsonHighlight/JsonHighlightExtension.d.ts +5 -8
  223. package/dist/esm/editor/extensions/jsonHighlight/JsonHighlightExtension.js +87 -68
  224. package/dist/esm/editor/extensions/jsonHighlight/JsonHighlightExtension.js.map +1 -1
  225. package/dist/esm/icons/Informational/Common UI/Shield.d.ts +6 -0
  226. package/dist/esm/icons/Informational/Common UI/Shield.js +33 -0
  227. package/dist/esm/icons/Informational/Common UI/Shield.js.map +1 -0
  228. package/dist/esm/icons/Informational/Common UI/index.d.ts +1 -0
  229. package/dist/esm/icons/Media/Visual/index.d.ts +0 -2
  230. package/dist/esm/icons/index.d.ts +25 -25
  231. package/dist/esm/icons/index.js +418 -420
  232. package/dist/esm/icons/index.js.map +1 -1
  233. package/package.json +1 -1
  234. package/dist/cjs/icons/Media/Visual/FormkitNeutral.js +0 -2
  235. package/dist/cjs/icons/Media/Visual/FormkitNeutral.js.map +0 -1
  236. package/dist/cjs/icons/Media/Visual/FormkitSad.js +0 -2
  237. package/dist/cjs/icons/Media/Visual/FormkitSad.js.map +0 -1
  238. package/dist/esm/icons/Media/Visual/FormkitNeutral.js +0 -58
  239. package/dist/esm/icons/Media/Visual/FormkitNeutral.js.map +0 -1
  240. package/dist/esm/icons/Media/Visual/FormkitSad.js +0 -61
  241. package/dist/esm/icons/Media/Visual/FormkitSad.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RestApiToolPanel.js","sources":["../../../../../src/components/agent-builder/components/RestApiToolPanel.tsx"],"sourcesContent":["import DeleteIcon from '@src/assets/icons/delete.svg';\nimport PlusIcon from '@src/assets/icons/plus.svg';\nimport { BikEditor } from '@src/editor';\nimport React, { 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 { Input } from '@src/components/input';\nimport { SideModal } from '@src/components/side-modal';\nimport { TitleSmall } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport {\n\tRestApiHeader,\n\tRestApiMethod,\n\tRestApiToolConfig,\n} from '../AgentBuilder.model';\nimport { FieldBlock } from '../AgentBuilder.styled';\nimport type { AgentCharLimits } from '../constants/charLimits';\nimport { AGENT_CHAR_LIMITS } from '../constants/charLimits';\nimport {\n\tDRAWER_BODY_STYLE,\n\tDRAWER_HEADER_STYLE,\n\tDrawerHeaderText,\n} from './DrawerHeaderText';\nimport { ToolInstructionsField } from './ToolInstructionsField';\n\ninterface RestApiToolPanelProps {\n\tonClose: () => void;\n\t/** Persist the config. A pending promise shows the Save loader. */\n\tonSave: (config: RestApiToolConfig) => void | Promise<void>;\n\t/** Seed values when editing an existing tool. */\n\tinitial?: RestApiToolConfig;\n\t/** Optional \"Improve with AI\" for the instructions field. Omit to hide it. */\n\tonImprove?: (text: string) => Promise<string>;\n\tcharLimits?: AgentCharLimits;\n\t/** SideModal stacking order — raise it when opened over another drawer. */\n\tzIndex?: number;\n}\n\nconst METHODS: RestApiMethod[] = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'];\nconst METHOD_OPTIONS: SingleOption[] = METHODS.map((m) => ({\n\tlabel: m,\n\tvalue: m,\n}));\n\n/**\n * Right-side drawer to configure a \"Rest API\" tool: the endpoint the agent can\n * call, plus a JSON request-body template and a sample response. Mount it fresh\n * per open (key it) so `initial` seeds the state. Built on the shared `SideModal`\n * shell and the BikEditor JSON body mode for the Request / Response editors.\n */\nexport const RestApiToolPanel: React.FC<RestApiToolPanelProps> = ({\n\tonClose,\n\tonSave,\n\tinitial,\n\tonImprove,\n\tcharLimits = AGENT_CHAR_LIMITS,\n\tzIndex,\n}) => {\n\tconst [name, setName] = useState(initial?.name ?? '');\n\tconst [instructions, setInstructions] = useState(initial?.instructions ?? '');\n\tconst [url, setUrl] = useState(initial?.url ?? '');\n\tconst [method, setMethod] = useState<RestApiMethod>(\n\t\tinitial?.method ?? 'POST',\n\t);\n\tconst [headers, setHeaders] = useState<RestApiHeader[]>(\n\t\tinitial?.headers ?? [{ key: '', value: '' }],\n\t);\n\tconst [requestBody, setRequestBody] = useState(initial?.requestBody ?? '');\n\tconst [responseSample, setResponseSample] = useState(\n\t\tinitial?.responseSample ?? '',\n\t);\n\tconst [saving, setSaving] = useState(false);\n\n\tconst patchHeader = (i: number, patch: Partial<RestApiHeader>) =>\n\t\tsetHeaders((prev) =>\n\t\t\tprev.map((h, idx) => (idx === i ? { ...h, ...patch } : h)),\n\t\t);\n\tconst addHeader = () =>\n\t\tsetHeaders((prev) => [...prev, { key: '', value: '' }]);\n\tconst removeHeader = (i: number) =>\n\t\tsetHeaders((prev) => prev.filter((_, idx) => idx !== i));\n\n\tconst canSave = name.trim().length > 0 && url.trim().length > 0;\n\n\tconst handleSave = async () => {\n\t\tif (!canSave || saving) {\n\t\t\treturn;\n\t\t}\n\t\tconst config: RestApiToolConfig = {\n\t\t\tid: initial?.id ?? `restapi_${Date.now().toString(36)}`,\n\t\t\tname: name.trim(),\n\t\t\tinstructions,\n\t\t\turl: url.trim(),\n\t\t\tmethod,\n\t\t\t// Drop fully-empty header rows.\n\t\t\theaders: headers.filter((h) => h.key.trim() || h.value.trim()),\n\t\t\trequestBody,\n\t\t\tresponseSample,\n\t\t};\n\t\tconst result = onSave(config);\n\t\tif (result && typeof (result as Promise<void>).then === 'function') {\n\t\t\tsetSaving(true);\n\t\t\ttry {\n\t\t\t\tawait result;\n\t\t\t} finally {\n\t\t\t\tsetSaving(false);\n\t\t\t}\n\t\t}\n\t};\n\n\treturn (\n\t\t<SideModal\n\t\t\theader=\"Rest API\"\n\t\t\tcloseOnEscapeKey={false}\n\t\t\tzIndex={zIndex}\n\t\t\theaderCustomComponent={\n\t\t\t\t<DrawerHeaderText\n\t\t\t\t\ttitle=\"Rest API\"\n\t\t\t\t\tsubtitle=\"Connect to any API endpoint. Configure the request, then test it with a sample response.\"\n\t\t\t\t/>\n\t\t\t}\n\t\t\twidth=\"431px\"\n\t\t\theaderStyle={DRAWER_HEADER_STYLE}\n\t\t\tbodyStyle={DRAWER_BODY_STYLE}\n\t\t\tonClose={onClose}\n\t\t\tsaveButtonProps={{\n\t\t\t\t'data-test': 'restapi-save',\n\t\t\t\tbuttonText: 'Save',\n\t\t\t\tbuttonType: 'primary',\n\t\t\t\tsize: 'small',\n\t\t\t\tdisabled: !canSave,\n\t\t\t\tisLoading: saving,\n\t\t\t\tonClick: handleSave,\n\t\t\t}}\n\t\t\tcancelButtonProps={{\n\t\t\t\t'data-test': 'restapi-cancel',\n\t\t\t\tbuttonText: 'Cancel',\n\t\t\t\tbuttonType: 'tertiaryGray',\n\t\t\t\tsize: 'small',\n\t\t\t\tonClick: onClose,\n\t\t\t}}\n\t\t>\n\t\t\t<Input\n\t\t\t\tdata-test=\"restapi-name\"\n\t\t\t\tvariant=\"small\"\n\t\t\t\tlabelText=\"Name\"\n\t\t\t\tlabelTextBold\n\t\t\t\tplaceholder=\"Enter name\"\n\t\t\t\tvalue={name}\n\t\t\t\tmaxCharLimit={charLimits.name}\n\t\t\t\tonChangeText={setName}\n\t\t\t/>\n\n\t\t\t<ToolInstructionsField\n\t\t\t\tdata-test=\"restapi-instructions\"\n\t\t\t\tlabel=\"Instructions\"\n\t\t\t\tvalue={instructions}\n\t\t\t\tonChange={setInstructions}\n\t\t\t\tmaxLength={charLimits.instructions}\n\t\t\t\tplaceholder=\"Describe how should the LLM generate the rest API\"\n\t\t\t\tonImprove={onImprove}\n\t\t\t/>\n\n\t\t\t<FieldBlock>\n\t\t\t\t<Input\n\t\t\t\t\tdata-test=\"restapi-url\"\n\t\t\t\t\tvariant=\"small\"\n\t\t\t\t\tlabelText=\"Request URL\"\n\t\t\t\t\tlabelTextBold\n\t\t\t\t\tplaceholder=\"https://\"\n\t\t\t\t\ttype=\"url\"\n\t\t\t\t\tvalue={url}\n\t\t\t\t\tonChangeText={setUrl}\n\t\t\t\t/>\n\t\t\t</FieldBlock>\n\n\t\t\t<FieldBlock>\n\t\t\t\t<TitleSmall color={COLORS.content.primary}>HTTP method</TitleSmall>\n\t\t\t\t<Dropdown\n\t\t\t\t\tdata-test=\"restapi-method\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\toptions={METHOD_OPTIONS}\n\t\t\t\t\tdefaultOptions={[{ label: method, value: method }]}\n\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\tconst v = unwrapDropdownValue(opt);\n\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\tsetMethod(v as RestApiMethod);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</FieldBlock>\n\n\t\t\t<FieldBlock>\n\t\t\t\t<TitleSmall color={COLORS.content.primary}>Headers</TitleSmall>\n\t\t\t\t{headers.map((h, i) => (\n\t\t\t\t\t// eslint-disable-next-line react/no-array-index-key\n\t\t\t\t\t<HeaderRow key={i} data-test={`restapi-header-${i}`}>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tvariant=\"small\"\n\t\t\t\t\t\t\thideInputHeader\n\t\t\t\t\t\t\tplaceholder=\"Accept\"\n\t\t\t\t\t\t\tvalue={h.key}\n\t\t\t\t\t\t\tonChangeText={(v) => patchHeader(i, { key: v })}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tvariant=\"small\"\n\t\t\t\t\t\t\thideInputHeader\n\t\t\t\t\t\t\tplaceholder=\"Value\"\n\t\t\t\t\t\t\tvalue={h.value}\n\t\t\t\t\t\t\tonChangeText={(v) => patchHeader(i, { value: v })}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<IconBtn\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-label=\"Remove header\"\n\t\t\t\t\t\t\tdata-test={`restapi-header-remove-${i}`}\n\t\t\t\t\t\t\tonClick={() => removeHeader(i)}\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</IconBtn>\n\t\t\t\t\t</HeaderRow>\n\t\t\t\t))}\n\t\t\t\t<AddHeaderRow>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdata-test=\"restapi-add-header\"\n\t\t\t\t\t\tbuttonType=\"dashRegular\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tLeadingIcon={PlusIcon}\n\t\t\t\t\t\tbuttonText=\"Add header\"\n\t\t\t\t\t\tonClick={addHeader}\n\t\t\t\t\t/>\n\t\t\t\t</AddHeaderRow>\n\t\t\t</FieldBlock>\n\n\t\t\t<FieldBlock>\n\t\t\t\t<TitleSmall color={COLORS.content.primary}>Request </TitleSmall>\n\t\t\t\t<BikEditor\n\t\t\t\t\tfeatures={{ jsonMode: true }}\n\t\t\t\t\tinitialContent={requestBody}\n\t\t\t\t\tstyle={JsonFieldBox}\n\t\t\t\t\tplaceholder=\"Type or paste JSON here\"\n\t\t\t\t\tonChange={(c) => setRequestBody(c.text)}\n\t\t\t\t\tminHeight=\"120px\"\n\t\t\t\t\tmaxHeight=\"240px\"\n\t\t\t\t/>\n\t\t\t</FieldBlock>\n\n\t\t\t<FieldBlock>\n\t\t\t\t<TitleSmall color={COLORS.content.primary}>Response </TitleSmall>\n\t\t\t\t<BikEditor\n\t\t\t\t\tfeatures={{ jsonMode: true }}\n\t\t\t\t\tstyle={JsonFieldBox}\n\t\t\t\t\tinitialContent={responseSample}\n\t\t\t\t\tplaceholder=\"Type or paste JSON here\"\n\t\t\t\t\tonChange={(c) => setResponseSample(c.text)}\n\t\t\t\t\tminHeight=\"120px\"\n\t\t\t\t\tmaxHeight=\"240px\"\n\t\t\t\t/>\n\t\t\t</FieldBlock>\n\t\t</SideModal>\n\t);\n};\n\nconst HeaderRow = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n`;\n\nconst AddHeaderRow = styled.div`\n\tdisplay: flex;\n`;\n\nconst IconBtn = styled.button`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tflex-shrink: 0;\n\twidth: 32px;\n\theight: 32px;\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 4px;\n\tbackground: ${COLORS.surface.standard};\n\tcursor: pointer;\n\n\t&:hover {\n\t\tborder-color: ${COLORS.content.secondary};\n\t}\n`;\n\nexport const JsonFieldBox = {\n\tborderRadius: '4px',\n\toverflow: 'hidden',\n};\n"],"names":["METHODS","METHOD_OPTIONS","m","RestApiToolPanel","onClose","onSave","initial","onImprove","charLimits","AGENT_CHAR_LIMITS","zIndex","name","setName","useState","instructions","setInstructions","url","setUrl","method","setMethod","headers","setHeaders","requestBody","setRequestBody","responseSample","setResponseSample","saving","setSaving","patchHeader","i","patch","prev","h","idx","addHeader","removeHeader","_","canSave","jsxs","SideModal","jsx","DrawerHeaderText","DRAWER_HEADER_STYLE","DRAWER_BODY_STYLE","config","result","Input","ToolInstructionsField","FieldBlock","TitleSmall","COLORS","Dropdown","opt","v","unwrapDropdownValue","HeaderRow","IconBtn","DeleteIcon","AddHeaderRow","Button","PlusIcon","BikEditor","JsonFieldBox","c","styled"],"mappings":"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"}
1
+ {"version":3,"file":"RestApiToolPanel.js","sources":["../../../../../src/components/agent-builder/components/RestApiToolPanel.tsx"],"sourcesContent":["import DeleteIcon from '@src/assets/icons/delete.svg';\nimport PlusIcon from '@src/assets/icons/plus.svg';\nimport { BikEditor } from '@src/editor';\nimport React, { 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 { Input } from '@src/components/input';\nimport { SideModal } from '@src/components/side-modal';\nimport { TitleSmall } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport {\n\tRestApiHeader,\n\tRestApiMethod,\n\tRestApiToolConfig,\n} from '../AgentBuilder.model';\nimport { FieldBlock } from '../AgentBuilder.styled';\nimport type { AgentCharLimits } from '../constants/charLimits';\nimport { AGENT_CHAR_LIMITS } from '../constants/charLimits';\nimport {\n\tDRAWER_BODY_STYLE,\n\tDRAWER_HEADER_STYLE,\n\tDrawerHeaderText,\n} from './DrawerHeaderText';\nimport { ToolInstructionsField } from './ToolInstructionsField';\n\ninterface RestApiToolPanelProps {\n\tonClose: () => void;\n\t/** Persist the config. A pending promise shows the Save loader. */\n\tonSave: (config: RestApiToolConfig) => void | Promise<void>;\n\t/** Seed values when editing an existing tool. */\n\tinitial?: RestApiToolConfig;\n\t/** Optional \"Improve with AI\" for the instructions field. Omit to hide it. */\n\tonImprove?: (text: string) => Promise<string>;\n\tcharLimits?: AgentCharLimits;\n\t/** SideModal stacking order — raise it when opened over another drawer. */\n\tzIndex?: number;\n\t/** Names of the OTHER tools — a new tool can't reuse one of these. */\n\texistingNames?: string[];\n}\n\nconst METHODS: RestApiMethod[] = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'];\nconst METHOD_OPTIONS: SingleOption[] = METHODS.map((m) => ({\n\tlabel: m,\n\tvalue: m,\n}));\n\n/**\n * Right-side drawer to configure a \"Rest API\" tool: the endpoint the agent can\n * call, plus a JSON request-body template and a sample response. Mount it fresh\n * per open (key it) so `initial` seeds the state. Built on the shared `SideModal`\n * shell and the BikEditor JSON body mode for the Request / Response editors.\n */\nexport const RestApiToolPanel: React.FC<RestApiToolPanelProps> = ({\n\tonClose,\n\tonSave,\n\tinitial,\n\tonImprove,\n\tcharLimits = AGENT_CHAR_LIMITS,\n\tzIndex,\n\texistingNames = [],\n}) => {\n\tconst [name, setName] = useState(initial?.name ?? '');\n\tconst [instructions, setInstructions] = useState(initial?.instructions ?? '');\n\t// New tools start with the scheme pre-filled so the user only types the host.\n\tconst [url, setUrl] = useState(initial?.url ?? 'https://');\n\tconst [method, setMethod] = useState<RestApiMethod>(\n\t\tinitial?.method ?? 'POST',\n\t);\n\tconst [headers, setHeaders] = useState<RestApiHeader[]>(\n\t\tinitial?.headers ?? [{ key: '', value: '' }],\n\t);\n\tconst [requestBody, setRequestBody] = useState(initial?.requestBody ?? '');\n\tconst [responseSample, setResponseSample] = useState(\n\t\tinitial?.responseSample ?? '',\n\t);\n\tconst [saving, setSaving] = useState(false);\n\n\tconst patchHeader = (i: number, patch: Partial<RestApiHeader>) =>\n\t\tsetHeaders((prev) =>\n\t\t\tprev.map((h, idx) => (idx === i ? { ...h, ...patch } : h)),\n\t\t);\n\tconst addHeader = () =>\n\t\tsetHeaders((prev) => [...prev, { key: '', value: '' }]);\n\tconst removeHeader = (i: number) =>\n\t\tsetHeaders((prev) => prev.filter((_, idx) => idx !== i));\n\n\tconst nameTrimmed = name.trim();\n\t// Case-insensitive: two tools can't share a name (the LLM references them by it).\n\tconst isDuplicateName =\n\t\tnameTrimmed.length > 0 &&\n\t\texistingNames.some(\n\t\t\t(n) => n.trim().toLowerCase() === nameTrimmed.toLowerCase(),\n\t\t);\n\tconst canSave =\n\t\tnameTrimmed.length > 0 && url.trim().length > 0 && !isDuplicateName;\n\n\tconst handleSave = async () => {\n\t\tif (!canSave || saving) {\n\t\t\treturn;\n\t\t}\n\t\tconst config: RestApiToolConfig = {\n\t\t\tid: initial?.id ?? `restapi_${Date.now().toString(36)}`,\n\t\t\tname: name.trim(),\n\t\t\tinstructions,\n\t\t\turl: url.trim(),\n\t\t\tmethod,\n\t\t\t// Drop fully-empty header rows.\n\t\t\theaders: headers.filter((h) => h.key.trim() || h.value.trim()),\n\t\t\trequestBody,\n\t\t\tresponseSample,\n\t\t};\n\t\tconst result = onSave(config);\n\t\tif (result && typeof (result as Promise<void>).then === 'function') {\n\t\t\tsetSaving(true);\n\t\t\ttry {\n\t\t\t\tawait result;\n\t\t\t} finally {\n\t\t\t\tsetSaving(false);\n\t\t\t}\n\t\t}\n\t};\n\n\treturn (\n\t\t<SideModal\n\t\t\theader=\"Rest API\"\n\t\t\tcloseOnEscapeKey={false}\n\t\t\tzIndex={zIndex}\n\t\t\theaderCustomComponent={\n\t\t\t\t<DrawerHeaderText\n\t\t\t\t\ttitle=\"Rest API\"\n\t\t\t\t\tsubtitle=\"Connect to any API endpoint. Define the request and a sample response for the agent to reference.\"\n\t\t\t\t/>\n\t\t\t}\n\t\t\twidth=\"431px\"\n\t\t\theaderStyle={DRAWER_HEADER_STYLE}\n\t\t\tbodyStyle={DRAWER_BODY_STYLE}\n\t\t\tonClose={onClose}\n\t\t\tsaveButtonProps={{\n\t\t\t\t'data-test': 'restapi-save',\n\t\t\t\tbuttonText: 'Save',\n\t\t\t\tbuttonType: 'primary',\n\t\t\t\tsize: 'small',\n\t\t\t\tdisabled: !canSave,\n\t\t\t\tisLoading: saving,\n\t\t\t\tonClick: handleSave,\n\t\t\t}}\n\t\t\tcancelButtonProps={{\n\t\t\t\t'data-test': 'restapi-cancel',\n\t\t\t\tbuttonText: 'Cancel',\n\t\t\t\tbuttonType: 'tertiaryGray',\n\t\t\t\tsize: 'small',\n\t\t\t\tonClick: onClose,\n\t\t\t}}\n\t\t>\n\t\t\t<Input\n\t\t\t\tdata-test=\"restapi-name\"\n\t\t\t\tvariant=\"small\"\n\t\t\t\tlabelText=\"Name\"\n\t\t\t\tlabelTextBold\n\t\t\t\tplaceholder=\"Enter action name\"\n\t\t\t\tvalue={name}\n\t\t\t\tmaxCharLimit={charLimits.name}\n\t\t\t\tstate={isDuplicateName ? 'invalid' : undefined}\n\t\t\t\terrorMessage={\n\t\t\t\t\tisDuplicateName ? 'A tool with this name already exists' : undefined\n\t\t\t\t}\n\t\t\t\tonChangeText={setName}\n\t\t\t/>\n\n\t\t\t<ToolInstructionsField\n\t\t\t\tdata-test=\"restapi-instructions\"\n\t\t\t\tlabel=\"Instructions\"\n\t\t\t\tvalue={instructions}\n\t\t\t\tonChange={setInstructions}\n\t\t\t\tmaxLength={charLimits.instructions}\n\t\t\t\tplaceholder=\"Describe how should the LLM generate the rest API\"\n\t\t\t\tonImprove={onImprove}\n\t\t\t/>\n\n\t\t\t<FieldBlock>\n\t\t\t\t<Input\n\t\t\t\t\tdata-test=\"restapi-url\"\n\t\t\t\t\tvariant=\"small\"\n\t\t\t\t\tlabelText=\"Request URL\"\n\t\t\t\t\tlabelTextBold\n\t\t\t\t\tplaceholder=\"https://\"\n\t\t\t\t\ttype=\"url\"\n\t\t\t\t\tvalue={url}\n\t\t\t\t\tonChangeText={setUrl}\n\t\t\t\t/>\n\t\t\t</FieldBlock>\n\n\t\t\t<FieldBlock>\n\t\t\t\t<TitleSmall color={COLORS.content.primary}>HTTP method</TitleSmall>\n\t\t\t\t<Dropdown\n\t\t\t\t\tdata-test=\"restapi-method\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\tdropdownWidth=\"399px\"\n\t\t\t\t\toptions={METHOD_OPTIONS}\n\t\t\t\t\tdefaultOptions={[{ label: method, value: method }]}\n\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\tconst v = unwrapDropdownValue(opt);\n\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\tsetMethod(v as RestApiMethod);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</FieldBlock>\n\n\t\t\t<FieldBlock>\n\t\t\t\t<TitleSmall color={COLORS.content.primary}>Headers</TitleSmall>\n\t\t\t\t{headers.map((h, i) => (\n\t\t\t\t\t// eslint-disable-next-line react/no-array-index-key\n\t\t\t\t\t<HeaderRow key={i} data-test={`restapi-header-${i}`}>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tvariant=\"small\"\n\t\t\t\t\t\t\thideInputHeader\n\t\t\t\t\t\t\tplaceholder=\"Enter name\"\n\t\t\t\t\t\t\tvalue={h.key}\n\t\t\t\t\t\t\tonChangeText={(v) => patchHeader(i, { key: v })}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tvariant=\"small\"\n\t\t\t\t\t\t\thideInputHeader\n\t\t\t\t\t\t\tplaceholder=\"Enter value\"\n\t\t\t\t\t\t\tvalue={h.value}\n\t\t\t\t\t\t\tonChangeText={(v) => patchHeader(i, { value: v })}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<IconBtn\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-label=\"Remove header\"\n\t\t\t\t\t\t\tdata-test={`restapi-header-remove-${i}`}\n\t\t\t\t\t\t\tonClick={() => removeHeader(i)}\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</IconBtn>\n\t\t\t\t\t</HeaderRow>\n\t\t\t\t))}\n\t\t\t\t<AddHeaderRow>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdata-test=\"restapi-add-header\"\n\t\t\t\t\t\tbuttonType=\"dashRegular\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tLeadingIcon={PlusIcon}\n\t\t\t\t\t\tbuttonText=\"Add header\"\n\t\t\t\t\t\tonClick={addHeader}\n\t\t\t\t\t/>\n\t\t\t\t</AddHeaderRow>\n\t\t\t</FieldBlock>\n\n\t\t\t<FieldBlock>\n\t\t\t\t<TitleSmall color={COLORS.content.primary}>Request </TitleSmall>\n\t\t\t\t<BikEditor\n\t\t\t\t\tfeatures={{ jsonMode: true }}\n\t\t\t\t\tinitialContent={requestBody}\n\t\t\t\t\tstyle={JsonFieldBox}\n\t\t\t\t\tplaceholder=\"Type or paste JSON here\"\n\t\t\t\t\tonChange={(c) => setRequestBody(c.text)}\n\t\t\t\t\tminHeight=\"120px\"\n\t\t\t\t\tmaxHeight=\"240px\"\n\t\t\t\t/>\n\t\t\t</FieldBlock>\n\n\t\t\t<FieldBlock>\n\t\t\t\t<TitleSmall color={COLORS.content.primary}>Response </TitleSmall>\n\t\t\t\t<BikEditor\n\t\t\t\t\tfeatures={{ jsonMode: true }}\n\t\t\t\t\tstyle={JsonFieldBox}\n\t\t\t\t\tinitialContent={responseSample}\n\t\t\t\t\tplaceholder=\"Type or paste JSON here\"\n\t\t\t\t\tonChange={(c) => setResponseSample(c.text)}\n\t\t\t\t\tminHeight=\"120px\"\n\t\t\t\t\tmaxHeight=\"240px\"\n\t\t\t\t/>\n\t\t\t</FieldBlock>\n\t\t</SideModal>\n\t);\n};\n\nconst HeaderRow = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n`;\n\nconst AddHeaderRow = styled.div`\n\tdisplay: flex;\n`;\n\nconst IconBtn = styled.button`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tflex-shrink: 0;\n\twidth: 32px;\n\theight: 32px;\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 4px;\n\tbackground: ${COLORS.surface.standard};\n\tcursor: pointer;\n\n\t&:hover {\n\t\tborder-color: ${COLORS.content.secondary};\n\t}\n`;\n\nexport const JsonFieldBox = {\n\tborderRadius: '4px',\n\toverflow: 'hidden',\n};\n"],"names":["METHODS","METHOD_OPTIONS","m","RestApiToolPanel","onClose","onSave","initial","onImprove","charLimits","AGENT_CHAR_LIMITS","zIndex","existingNames","name","setName","useState","instructions","setInstructions","url","setUrl","method","setMethod","headers","setHeaders","requestBody","setRequestBody","responseSample","setResponseSample","saving","setSaving","patchHeader","i","patch","prev","h","idx","addHeader","removeHeader","_","nameTrimmed","isDuplicateName","n","canSave","jsxs","SideModal","jsx","DrawerHeaderText","DRAWER_HEADER_STYLE","DRAWER_BODY_STYLE","config","result","Input","ToolInstructionsField","FieldBlock","TitleSmall","COLORS","Dropdown","opt","v","unwrapDropdownValue","HeaderRow","IconBtn","DeleteIcon","AddHeaderRow","Button","PlusIcon","BikEditor","JsonFieldBox","c","styled"],"mappings":"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"}
@@ -8,12 +8,19 @@ export interface SelectableItem {
8
8
  label: string;
9
9
  /** Leading brand glyph (e.g. a tool's source icon). */
10
10
  icon?: SourceIcon;
11
+ /**
12
+ * True when the tool touches customer-private data and the agent must verify
13
+ * the customer first (backend `auth_required`). Shows a shield glyph on the row.
14
+ */
15
+ authRequired?: boolean;
11
16
  /**
12
17
  * When set, this row shows an edit (Configure) icon that calls this instead of
13
18
  * the section-level `onConfigure`. Use for rows that open their own drawer
14
- * (e.g. a configured Rest API / email-handover tool).
19
+ * (e.g. a configured Rest API / email-handover tool). A pending promise
20
+ * disables the row's edit button until it settles (e.g. while the consumer
21
+ * fetches the sub-agent's data before opening its drawer).
15
22
  */
16
- onConfigure?: () => void;
23
+ onConfigure?: () => void | Promise<void>;
17
24
  }
18
25
  /** A tool source for the empty-state picker (Tools): a button → its searchable list. */
19
26
  export interface SourceGroup {
@@ -53,9 +60,10 @@ interface SelectableListSectionProps {
53
60
  };
54
61
  /**
55
62
  * When provided, each row shows an edit (Configure) icon next to Delete.
56
- * Omit for tools (Delete only).
63
+ * Omit for tools (Delete only). A pending promise disables the edit buttons
64
+ * until it settles.
57
65
  */
58
- onConfigure?: (id: string) => void;
66
+ onConfigure?: (id: string) => void | Promise<void>;
59
67
  /**
60
68
  * Tool sources (e.g. Manifest / Shopify). When set, the empty state shows a
61
69
  * button per source; clicking one reveals a searchable dropdown of just that
@@ -89,6 +97,12 @@ interface SelectableListSectionProps {
89
97
  noun: string;
90
98
  zIndex?: number;
91
99
  };
100
+ /**
101
+ * Open the `@` picker popover above the trigger instead of below. Use inside
102
+ * a drawer where the section sits near the bottom — opening downward
103
+ * stretches the drawer and leaves a gap.
104
+ */
105
+ pickerOpensUp?: boolean;
92
106
  }
93
107
  export declare const SelectableListSection: React.FC<SelectableListSectionProps>;
94
108
  export {};
@@ -1,82 +1,101 @@
1
- import { jsx as n, jsxs as d, Fragment as W } from "react/jsx-runtime";
2
- import oe 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 b, useRef as K, useEffect as le } from "react";
6
- import E from "styled-components";
7
- import { TitleSmall as re, BodyCaption as U, BodySecondary as m } from "../../TypographyStyle.js";
1
+ import { jsx as n, jsxs as d, Fragment as U } from "react/jsx-runtime";
2
+ import ie from "../../../assets/icons/delete.svg.js";
3
+ import de from "../../../assets/icons/edit.svg.js";
4
+ import J from "../../../assets/icons/plus.svg.js";
5
+ import { useState as m, useRef as Q, useEffect as se } from "react";
6
+ import I from "styled-components";
7
+ import { TitleSmall as ae, BodyCaption as $, BodySecondary as A } from "../../TypographyStyle.js";
8
8
  import { COLORS as i } from "../../../constants/Theme.js";
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 me } from "../utils/sourceIcons.js";
11
- import { MentionPicker as Se } from "./MentionPicker.js";
12
- import { Dropdown as J } from "../../dropdown/Dropdown.js";
9
+ import { SideSection as ue, SideSectionHeader as he, AddIconButton as fe, SourceButtonRow as pe, SourceButton as X, SelectableRow as me, RowText as Se, RowActions as ye, RowMenuButton as Y, RowActionDivider as be } from "../AgentBuilder.styled.js";
10
+ import { renderSourceIcon as R, SOURCE_ICONS as ve } from "../utils/sourceIcons.js";
11
+ import { MentionPicker as $e } from "./MentionPicker.js";
12
+ import { Dropdown as Z } from "../../dropdown/Dropdown.js";
13
13
  import { unwrapDropdownValue as P } from "../../dropdown/utils.js";
14
- import { Button as pe } from "../../button/Button.js";
14
+ import { Button as ge } from "../../button/Button.js";
15
15
  import { DeleteConfirmationModal as we } from "../../states-modal/DeleteConfirmationModal.js";
16
- const Q = "__bik_create_new__", He = ({
17
- title: h,
16
+ import { Tooltip as g } from "../../tooltips/Tooltip.js";
17
+ import Ce from "../../../icons/Informational/Common UI/Shield.js";
18
+ const G = "__bik_create_new__", Ve = ({
19
+ title: s,
18
20
  helper: _,
19
- items: s,
21
+ items: u,
20
22
  addableOptions: S,
21
- onAdd: C,
22
- onRemove: R,
23
- dataTestPrefix: l,
24
- emptyText: Y,
25
- createOption: t,
26
- onConfigure: D,
27
- sourceGroups: a,
28
- mentionItems: I,
29
- actionSources: p,
30
- confirmDelete: f
23
+ onAdd: w,
24
+ onRemove: D,
25
+ dataTestPrefix: t,
26
+ emptyText: O,
27
+ createOption: l,
28
+ onConfigure: B,
29
+ sourceGroups: h,
30
+ mentionItems: L,
31
+ actionSources: y,
32
+ confirmDelete: p,
33
+ pickerOpensUp: z
31
34
  }) => {
32
- const [u, r] = b(!1), [B, $] = b(null), [Z, g] = b(null), w = !!a && a.length > 0, y = a?.find((e) => e.source === Z), c = I !== void 0, L = K(null), z = K(null), [v, x] = b(null);
33
- le(() => {
34
- if (!c || !u)
35
+ const [f, r] = m(!1), [x, C] = m(null), [H, M] = m(null), [ee, k] = m(null), b = !!h && h.length > 0, E = h?.find((e) => e.source === ee), c = L !== void 0, j = Q(null), q = Q(null), [v, N] = m(null);
36
+ se(() => {
37
+ if (!c || !f)
35
38
  return;
36
- const e = (k) => {
37
- const N = k.target;
38
- !L.current?.contains(N) && !z.current?.contains(N) && r(!1);
39
- }, o = (k) => {
40
- k.key === "Escape" && r(!1);
39
+ const e = (a) => {
40
+ const V = a.target;
41
+ !j.current?.contains(V) && !q.current?.contains(V) && r(!1);
42
+ }, o = (a) => {
43
+ a.key === "Escape" && r(!1);
41
44
  };
42
45
  return document.addEventListener("mousedown", e), document.addEventListener("keydown", o), () => {
43
46
  document.removeEventListener("mousedown", e), document.removeEventListener("keydown", o);
44
47
  };
45
- }, [c, u]);
46
- const G = w ? c || s.length > 0 : c || S.length > 0 || !!t && s.length > 0, T = s.length === 0 && !!t && !w && !c, H = !!p && p.length > 0, O = (w || H) && s.length === 0, ee = () => {
48
+ }, [c, f]);
49
+ const ne = b ? c || u.length > 0 : c || S.length > 0 || !!l && u.length > 0, oe = u.length === 0 && !!l && !b && !c, W = !!y && y.length > 0, te = (b || W) && u.length === 0, le = () => {
47
50
  if (c) {
48
- x(null), r((e) => !e);
51
+ N(null), r((e) => !e);
49
52
  return;
50
53
  }
51
- if (w) {
52
- g(null), r((e) => !e);
54
+ if (b) {
55
+ k(null), r((e) => !e);
53
56
  return;
54
57
  }
55
- if (S.length === 0 && t) {
56
- t.onSelect();
58
+ if (S.length === 0 && l) {
59
+ l.onSelect();
57
60
  return;
58
61
  }
59
62
  r((e) => !e);
60
- }, ne = () => s.map((e) => {
61
- const o = e.onConfigure ?? (D ? () => D(e.id) : void 0);
63
+ }, re = (e, o) => {
64
+ if (H)
65
+ return;
66
+ const a = o();
67
+ a && typeof a.then == "function" && (M(e), a.finally(() => M(null)));
68
+ }, ce = () => u.map((e) => {
69
+ const o = e.onConfigure ?? (B ? () => B(e.id) : void 0);
62
70
  return /* @__PURE__ */ d(
63
- ae,
71
+ me,
64
72
  {
65
- "data-test": `${l}-row-${e.id}`,
73
+ "data-test": `${t}-row-${e.id}`,
66
74
  children: [
67
- A(e.icon),
68
- /* @__PURE__ */ n(ue, { children: /* @__PURE__ */ n(m, { numberOfLines: 1, color: i.content.primary, children: e.label }) }),
69
- /* @__PURE__ */ d(he, { children: [
75
+ R(e.icon),
76
+ e.authRequired && // Order tools touch customer-private data — the shield flags that
77
+ // this agent must verify the customer before the tool can run.
78
+ /* @__PURE__ */ n(g, { body: "Requires customer verification", placement: "top", children: /* @__PURE__ */ n(
79
+ "span",
80
+ {
81
+ "data-test": `${t}-auth-${e.id}`,
82
+ style: { display: "inline-flex", flexShrink: 0 },
83
+ children: /* @__PURE__ */ n(Ce, { size: 16, color: i.content.secondary })
84
+ }
85
+ ) }),
86
+ /* @__PURE__ */ n(g, { body: e.label, placement: "top", children: /* @__PURE__ */ n(Se, { children: /* @__PURE__ */ n(A, { numberOfLines: 1, color: i.content.primary, children: e.label }) }) }),
87
+ /* @__PURE__ */ d(ye, { children: [
70
88
  o && // Configurable rows (sub-agents, Rest API / email tools) get an
71
89
  // always-visible edit icon.
72
- /* @__PURE__ */ n(
73
- q,
90
+ /* @__PURE__ */ n(g, { body: "Edit", placement: "top", children: /* @__PURE__ */ n(
91
+ Y,
74
92
  {
75
- "data-test": `${l}-edit-${e.id}`,
93
+ "data-test": `${t}-edit-${e.id}`,
76
94
  "aria-label": `Edit ${e.label}`,
77
- onClick: o,
95
+ disabled: H !== null,
96
+ onClick: () => re(e.id, o),
78
97
  children: /* @__PURE__ */ n(
79
- te,
98
+ de,
80
99
  {
81
100
  width: 16,
82
101
  height: 16,
@@ -84,16 +103,16 @@ const Q = "__bik_create_new__", He = ({
84
103
  }
85
104
  )
86
105
  }
87
- ),
88
- o && /* @__PURE__ */ n(fe, { "aria-hidden": !0 }),
89
- /* @__PURE__ */ n(
90
- q,
106
+ ) }),
107
+ o && /* @__PURE__ */ n(be, { "aria-hidden": !0 }),
108
+ /* @__PURE__ */ n(g, { body: "Delete", placement: "top", children: /* @__PURE__ */ n(
109
+ Y,
91
110
  {
92
- "data-test": `${l}-delete-${e.id}`,
111
+ "data-test": `${t}-delete-${e.id}`,
93
112
  "aria-label": `Delete ${e.label}`,
94
- onClick: () => f ? $(e.id) : R(e.id),
113
+ onClick: () => p ? C(e.id) : D(e.id),
95
114
  children: /* @__PURE__ */ n(
96
- oe,
115
+ ie,
97
116
  {
98
117
  width: 16,
99
118
  height: 16,
@@ -101,18 +120,18 @@ const Q = "__bik_create_new__", He = ({
101
120
  }
102
121
  )
103
122
  }
104
- )
123
+ ) })
105
124
  ] })
106
125
  ]
107
126
  },
108
127
  e.id
109
128
  );
110
- }), M = t ? [
129
+ }), F = l ? [
111
130
  ...S,
112
131
  {
113
- label: t.label,
114
- value: Q,
115
- searchKey: t.label,
132
+ label: l.label,
133
+ value: G,
134
+ searchKey: l.label,
116
135
  customComponent: /* @__PURE__ */ n(
117
136
  "div",
118
137
  {
@@ -124,179 +143,196 @@ const Q = "__bik_create_new__", He = ({
124
143
  fontSize: 14,
125
144
  fontWeight: 600
126
145
  },
127
- children: t.label
146
+ children: l.label
128
147
  }
129
148
  )
130
149
  }
131
- ] : S, j = c ? /* @__PURE__ */ n(
132
- Se,
150
+ ] : S, K = c ? /* @__PURE__ */ n(
151
+ $e,
133
152
  {
134
- items: I ?? [],
153
+ items: L ?? [],
135
154
  query: "",
136
155
  activeIndex: 0,
137
156
  initialSource: v ?? void 0,
138
157
  onSelect: (e) => {
139
- r(!1), C(String(e.id));
158
+ r(!1), w(String(e.id));
140
159
  },
141
160
  onClose: () => r(!1),
142
- onCreateSubAgent: t ? () => {
143
- r(!1), t.onSelect();
161
+ onCreateSubAgent: l ? () => {
162
+ r(!1), l.onSelect();
144
163
  } : void 0,
145
- toolActions: H ? p?.map((e) => ({
164
+ toolActions: W ? y?.map((e) => ({
146
165
  ...e,
147
166
  onSelect: () => {
148
167
  r(!1), e.onSelect();
149
168
  }
150
169
  })) : void 0,
151
170
  integrationStatus: Object.fromEntries(
152
- (a ?? []).filter((e) => e.connected !== void 0).map((e) => [e.source, e.connected])
171
+ (h ?? []).filter((e) => e.connected !== void 0).map((e) => [e.source, e.connected])
153
172
  ),
154
173
  onConnectIntegration: (e) => {
155
- r(!1), a?.find((o) => o.source === e)?.onConnect?.();
174
+ r(!1), h?.find((o) => o.source === e)?.onConnect?.();
156
175
  }
157
176
  },
158
177
  v ?? "__root__"
159
178
  ) : null;
160
- return /* @__PURE__ */ d(ce, { children: [
161
- /* @__PURE__ */ d(ie, { children: [
162
- /* @__PURE__ */ n(re, { color: i.content.primary, children: h }),
163
- G && /* @__PURE__ */ d(ve, { ref: L, children: [
179
+ return /* @__PURE__ */ d(ue, { children: [
180
+ /* @__PURE__ */ d(he, { children: [
181
+ /* @__PURE__ */ n(ae, { color: i.content.primary, children: s }),
182
+ ne && /* @__PURE__ */ d(ke, { ref: j, children: [
164
183
  /* @__PURE__ */ n(
165
- de,
184
+ fe,
166
185
  {
167
- "data-test": `${l}-add`,
168
- onClick: ee,
169
- "aria-label": `Add ${h}`,
170
- children: /* @__PURE__ */ n(F, { width: 20, height: 20, color: i.content.brand })
186
+ "data-test": `${t}-add`,
187
+ onClick: le,
188
+ "aria-label": `Add ${s}`,
189
+ children: /* @__PURE__ */ n(J, { width: 16, height: 16, color: i.content.primary })
171
190
  }
172
191
  ),
173
- c && u && v === null && /* @__PURE__ */ n(X, { "data-test": `${l}-picker`, children: j })
192
+ c && f && v === null && /* @__PURE__ */ n(
193
+ T,
194
+ {
195
+ $up: z,
196
+ "data-test": `${t}-picker`,
197
+ children: K
198
+ }
199
+ )
174
200
  ] })
175
201
  ] }),
176
- _ && /* @__PURE__ */ n(U, { color: i.content.secondary, children: _ }),
177
- O ? /* @__PURE__ */ d(be, { ref: c ? z : void 0, children: [
178
- /* @__PURE__ */ d(se, { "data-test": `${l}-sources`, children: [
179
- a?.map((e) => /* @__PURE__ */ d(
180
- V,
202
+ _ && /* @__PURE__ */ n($, { color: i.content.secondary, children: _ }),
203
+ te ? /* @__PURE__ */ d(Ee, { ref: c ? q : void 0, children: [
204
+ /* @__PURE__ */ d(pe, { "data-test": `${t}-sources`, children: [
205
+ h?.map((e) => /* @__PURE__ */ d(
206
+ X,
181
207
  {
182
208
  type: "button",
183
- "data-test": `${l}-source-${e.source}`,
209
+ "data-test": `${t}-source-${e.source}`,
184
210
  onClick: () => {
185
211
  if (e.connected === !1) {
186
212
  e.onConnect?.();
187
213
  return;
188
214
  }
189
215
  if (c) {
190
- x(e.source), r(!0);
216
+ N(e.source), r(!0);
191
217
  return;
192
218
  }
193
- g(e.source);
219
+ k(e.source);
194
220
  },
195
221
  children: [
196
- A(me[e.source], -4),
197
- /* @__PURE__ */ n(m, { color: i.content.primary, children: e.label }),
222
+ R(ve[e.source], -4),
223
+ /* @__PURE__ */ n($, { color: i.content.primary, children: e.label }),
198
224
  e.connected === !1 && // Not connected → show "Connect" upfront (consistent with
199
225
  // the `@` picker); clicking runs the connect flow.
200
- /* @__PURE__ */ n(m, { color: i.content.brand, children: "Connect" })
226
+ /* @__PURE__ */ n(A, { color: i.content.brand, children: "Connect" })
201
227
  ]
202
228
  },
203
229
  e.source
204
230
  )),
205
- p?.map((e) => /* @__PURE__ */ d(
206
- V,
231
+ y?.map((e) => /* @__PURE__ */ d(
232
+ X,
207
233
  {
208
234
  type: "button",
209
- "data-test": `${l}-action-${e.source}`,
210
- onClick: e.connected === !1 ? () => e.onConnect?.() : e.onSelect,
235
+ "data-test": `${t}-action-${e.source}`,
236
+ onClick: e.connected === !1 ? () => e.onConnect?.() : () => {
237
+ r(!1), e.onSelect();
238
+ },
211
239
  children: [
212
- A(e.icon, -4),
213
- /* @__PURE__ */ n(m, { color: i.content.primary, children: e.label }),
240
+ R(e.icon, -4),
241
+ /* @__PURE__ */ n($, { color: i.content.primary, children: e.label }),
214
242
  e.connected === !1 && // Not connected → "Connect" upfront (consistent with the
215
243
  // source buttons and the `@` picker).
216
- /* @__PURE__ */ n(m, { color: i.content.brand, children: "Connect" })
244
+ /* @__PURE__ */ n(A, { color: i.content.brand, children: "Connect" })
217
245
  ]
218
246
  },
219
247
  e.source
220
248
  ))
221
249
  ] }),
222
- c && u && v !== null && /* @__PURE__ */ n(X, { $align: "left", "data-test": `${l}-picker`, children: j }),
223
- !c && y && /* @__PURE__ */ n(
224
- J,
250
+ c && f && v !== null && /* @__PURE__ */ n(
251
+ T,
252
+ {
253
+ $align: "left",
254
+ $up: z,
255
+ "data-test": `${t}-picker`,
256
+ children: K
257
+ }
258
+ ),
259
+ !c && E && /* @__PURE__ */ n(
260
+ Z,
225
261
  {
226
- "data-test": `${l}-dropdown`,
262
+ "data-test": `${t}-dropdown`,
227
263
  size: "small",
228
264
  width: "100%",
229
265
  isSearchable: !0,
230
- placeHolder: `Search ${y.label} tools`,
231
- options: y.options,
266
+ placeHolder: `Search ${E.label} tools`,
267
+ options: E.options,
232
268
  onSelect: (e) => {
233
269
  const o = P(e);
234
- g(null), r(!1), o && C(o);
270
+ k(null), r(!1), o && w(o);
235
271
  }
236
272
  }
237
273
  )
238
- ] }) : /* @__PURE__ */ d(W, { children: [
239
- !c && u && M.length > 0 && /* @__PURE__ */ n(
240
- J,
274
+ ] }) : /* @__PURE__ */ d(U, { children: [
275
+ !c && f && F.length > 0 && /* @__PURE__ */ n(
276
+ Z,
241
277
  {
242
- "data-test": `${l}-dropdown`,
278
+ "data-test": `${t}-dropdown`,
243
279
  size: "small",
244
280
  width: "100%",
245
281
  isSearchable: !0,
246
- placeHolder: `Select ${h.toLowerCase()}`,
247
- options: M,
282
+ placeHolder: `Select ${s.toLowerCase()}`,
283
+ options: F,
248
284
  onSelect: (e) => {
249
285
  const o = P(e);
250
- r(!1), o && (o === Q ? t?.onSelect() : C(o));
286
+ r(!1), o && (o === G ? l?.onSelect() : w(o));
251
287
  }
252
288
  }
253
289
  ),
254
- s.length === 0 && !u ? /* @__PURE__ */ d(W, { children: [
255
- /* @__PURE__ */ n(U, { color: i.content.placeholder, children: Y }),
256
- T && t && /* @__PURE__ */ n(
257
- pe,
290
+ u.length === 0 && !f ? /* @__PURE__ */ d(U, { children: [
291
+ /* @__PURE__ */ n($, { color: i.content.placeholder, children: O }),
292
+ oe && l && /* @__PURE__ */ n(
293
+ ge,
258
294
  {
259
- "data-test": `${l}-create`,
295
+ "data-test": `${t}-create`,
260
296
  buttonType: "secondary",
261
297
  size: "small",
262
298
  matchParentWidth: !0,
263
- LeadingIcon: F,
264
- buttonText: t.label,
265
- onClick: t.onSelect
299
+ LeadingIcon: J,
300
+ buttonText: l.label,
301
+ onClick: l.onSelect
266
302
  }
267
303
  )
268
- ] }) : ne()
304
+ ] }) : ce()
269
305
  ] }),
270
- f && B && /* @__PURE__ */ n(
306
+ p && x && /* @__PURE__ */ n(
271
307
  we,
272
308
  {
273
- "data-test": `${l}-delete-confirm`,
274
- header: `Delete this ${f.noun}?`,
275
- subHeader: `Deleting this ${f.noun} will also remove it from your instructions, wherever it's referenced.`,
309
+ "data-test": `${t}-delete-confirm`,
310
+ header: `Delete this ${p.noun}?`,
311
+ subHeader: `Deleting this ${p.noun} will also remove it from your instructions, wherever it's referenced.`,
276
312
  confirmationText: "Delete",
277
- zIndex: f.zIndex,
313
+ zIndex: p.zIndex,
278
314
  onDeleteConfirmed: () => {
279
- R(B), $(null);
315
+ D(x), C(null);
280
316
  },
281
- onCancelClicked: () => $(null)
317
+ onCancelClicked: () => C(null)
282
318
  }
283
319
  )
284
320
  ] });
285
- }, ve = E.div`
321
+ }, ke = I.div`
286
322
  position: relative;
287
323
  display: flex;
288
- `, be = E.div`
324
+ `, Ee = I.div`
289
325
  position: relative;
290
326
  display: flex;
291
327
  flex-direction: column;
292
328
  gap: 8px;
293
- `, X = E.div`
329
+ `, T = I.div`
294
330
  position: absolute;
295
- top: calc(100% + 4px);
296
- ${(h) => h.$align === "left" ? "left: 0;" : "right: 0;"}
331
+ ${(s) => s.$up ? "bottom: calc(100% + 4px);" : "top: calc(100% + 4px);"}
332
+ ${(s) => s.$align === "left" ? "left: 0;" : "right: 0;"}
297
333
  z-index: 30;
298
334
  `;
299
335
  export {
300
- He as SelectableListSection
336
+ Ve as SelectableListSection
301
337
  };
302
338
  //# sourceMappingURL=SelectableListSection.js.map