@bikdotai/bik-component-library 0.0.868-beta.9 → 0.0.869-beta.0

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 (264) hide show
  1. package/README.md +0 -3
  2. package/dist/cjs/components/agent-builder/constants/tools.js +1 -1
  3. package/dist/cjs/components/agent-builder/constants/tools.js.map +1 -1
  4. package/dist/cjs/components/bik-copilot/BIKCopilot.js +2 -0
  5. package/dist/cjs/components/bik-copilot/BIKCopilot.js.map +1 -0
  6. package/dist/cjs/components/bik-copilot/ControlledCopilot.js +2 -0
  7. package/dist/cjs/components/bik-copilot/ControlledCopilot.js.map +1 -0
  8. package/dist/cjs/components/bik-copilot/ControlledCopilot.styled.js +27 -0
  9. package/dist/cjs/components/bik-copilot/ControlledCopilot.styled.js.map +1 -0
  10. package/dist/cjs/components/bik-copilot/CopilotBall.js +2 -0
  11. package/dist/cjs/components/bik-copilot/CopilotBall.js.map +1 -0
  12. package/dist/cjs/components/bik-copilot/CopilotBall.styled.js +42 -0
  13. package/dist/cjs/components/bik-copilot/CopilotBall.styled.js.map +1 -0
  14. package/dist/cjs/components/bik-copilot/CopilotFeedbackModal.js +2 -0
  15. package/dist/cjs/components/bik-copilot/CopilotFeedbackModal.js.map +1 -0
  16. package/dist/cjs/components/bik-copilot/CopilotFeedbackModal.styled.js +108 -0
  17. package/dist/cjs/components/bik-copilot/CopilotFeedbackModal.styled.js.map +1 -0
  18. package/dist/cjs/components/bik-copilot/CopilotPanel.js +2 -0
  19. package/dist/cjs/components/bik-copilot/CopilotPanel.js.map +1 -0
  20. package/dist/cjs/components/bik-copilot/CopilotPanel.styled.js +575 -0
  21. package/dist/cjs/components/bik-copilot/CopilotPanel.styled.js.map +1 -0
  22. package/dist/cjs/components/bik-copilot/copilotPlacement.js +2 -0
  23. package/dist/cjs/components/bik-copilot/copilotPlacement.js.map +1 -0
  24. package/dist/cjs/components/bik-copilot/copilotRegenerate.js +2 -0
  25. package/dist/cjs/components/bik-copilot/copilotRegenerate.js.map +1 -0
  26. package/dist/cjs/components/bik-copilot/copilotSelectionPrompt.js +2 -0
  27. package/dist/cjs/components/bik-copilot/copilotSelectionPrompt.js.map +1 -0
  28. package/dist/cjs/components/bik-copilot/services/copilotDb.js +2 -0
  29. package/dist/cjs/components/bik-copilot/services/copilotDb.js.map +1 -0
  30. package/dist/cjs/components/bik-copilot/services/copilotFeedbackClient.js +2 -0
  31. package/dist/cjs/components/bik-copilot/services/copilotFeedbackClient.js.map +1 -0
  32. package/dist/cjs/components/bik-copilot/services/copilotIcebreakersClient.js +2 -0
  33. package/dist/cjs/components/bik-copilot/services/copilotIcebreakersClient.js.map +1 -0
  34. package/dist/cjs/components/bik-copilot/services/copilotMessagesClient.js +2 -0
  35. package/dist/cjs/components/bik-copilot/services/copilotMessagesClient.js.map +1 -0
  36. package/dist/cjs/components/bik-copilot/services/copilotPageSession.js +2 -0
  37. package/dist/cjs/components/bik-copilot/services/copilotPageSession.js.map +1 -0
  38. package/dist/cjs/components/bik-copilot/services/copilotSseParser.js +7 -0
  39. package/dist/cjs/components/bik-copilot/services/copilotSseParser.js.map +1 -0
  40. package/dist/cjs/components/bik-copilot/services/copilotStreamClient.js +2 -0
  41. package/dist/cjs/components/bik-copilot/services/copilotStreamClient.js.map +1 -0
  42. package/dist/cjs/components/bik-copilot/useCopilotIcebreakers.js +2 -0
  43. package/dist/cjs/components/bik-copilot/useCopilotIcebreakers.js.map +1 -0
  44. package/dist/cjs/components/bik-copilot/useCopilotStreamChat.js +2 -0
  45. package/dist/cjs/components/bik-copilot/useCopilotStreamChat.js.map +1 -0
  46. package/dist/cjs/components/bik-copilot/useDraggableFloater.js +2 -0
  47. package/dist/cjs/components/bik-copilot/useDraggableFloater.js.map +1 -0
  48. package/dist/cjs/components/bik-copilot/utils/markdown.js +4 -0
  49. package/dist/cjs/components/bik-copilot/utils/markdown.js.map +1 -0
  50. package/dist/cjs/components/bik-copilot/utils/toolCtas.js +2 -0
  51. package/dist/cjs/components/bik-copilot/utils/toolCtas.js.map +1 -0
  52. package/dist/cjs/components/button/themes.js +2 -2
  53. package/dist/cjs/components/button/themes.js.map +1 -1
  54. package/dist/cjs/components/datePicker/DatePickerWrapper.js +1 -1
  55. package/dist/cjs/components/datePicker/DatePickerWrapper.js.map +1 -1
  56. package/dist/cjs/components/text-selection-ask/SelectionAskPill.js +2 -0
  57. package/dist/cjs/components/text-selection-ask/SelectionAskPill.js.map +1 -0
  58. package/dist/cjs/components/text-selection-ask/SelectionAskPill.styled.js +32 -0
  59. package/dist/cjs/components/text-selection-ask/SelectionAskPill.styled.js.map +1 -0
  60. package/dist/cjs/components/text-selection-ask/TextSelectionAsk.js +2 -0
  61. package/dist/cjs/components/text-selection-ask/TextSelectionAsk.js.map +1 -0
  62. package/dist/cjs/components/text-selection-ask/model.js +2 -0
  63. package/dist/cjs/components/text-selection-ask/model.js.map +1 -0
  64. package/dist/cjs/components/text-selection-ask/selectionText.js +2 -0
  65. package/dist/cjs/components/text-selection-ask/selectionText.js.map +1 -0
  66. package/dist/cjs/components/text-selection-ask/useTextSelectionAsk.js +2 -0
  67. package/dist/cjs/components/text-selection-ask/useTextSelectionAsk.js.map +1 -0
  68. package/dist/cjs/icons/Informational/Common UI/SquaresFour.js +2 -0
  69. package/dist/cjs/icons/Informational/Common UI/SquaresFour.js.map +1 -0
  70. package/dist/cjs/icons/index.js +1 -1
  71. package/dist/cjs/index.js +1 -1
  72. package/dist/esm/components/agent-builder/constants/tools.d.ts +1 -0
  73. package/dist/esm/components/agent-builder/constants/tools.js +18 -18
  74. package/dist/esm/components/agent-builder/constants/tools.js.map +1 -1
  75. package/dist/esm/components/bik-copilot/BIKCopilot.d.ts +31 -0
  76. package/dist/esm/components/bik-copilot/BIKCopilot.js +118 -0
  77. package/dist/esm/components/bik-copilot/BIKCopilot.js.map +1 -0
  78. package/dist/esm/components/bik-copilot/ControlledCopilot.d.ts +14 -0
  79. package/dist/esm/components/bik-copilot/ControlledCopilot.js +178 -0
  80. package/dist/esm/components/bik-copilot/ControlledCopilot.js.map +1 -0
  81. package/dist/esm/components/bik-copilot/ControlledCopilot.styled.d.ts +7 -0
  82. package/dist/esm/components/bik-copilot/ControlledCopilot.styled.js +31 -0
  83. package/dist/esm/components/bik-copilot/ControlledCopilot.styled.js.map +1 -0
  84. package/dist/esm/components/bik-copilot/CopilotBall.d.ts +13 -0
  85. package/dist/esm/components/bik-copilot/CopilotBall.js +50 -0
  86. package/dist/esm/components/bik-copilot/CopilotBall.js.map +1 -0
  87. package/dist/esm/components/bik-copilot/CopilotBall.styled.d.ts +9 -0
  88. package/dist/esm/components/bik-copilot/CopilotBall.styled.js +46 -0
  89. package/dist/esm/components/bik-copilot/CopilotBall.styled.js.map +1 -0
  90. package/dist/esm/components/bik-copilot/CopilotFeedbackModal.d.ts +29 -0
  91. package/dist/esm/components/bik-copilot/CopilotFeedbackModal.js +73 -0
  92. package/dist/esm/components/bik-copilot/CopilotFeedbackModal.js.map +1 -0
  93. package/dist/esm/components/bik-copilot/CopilotFeedbackModal.styled.d.ts +12 -0
  94. package/dist/esm/components/bik-copilot/CopilotFeedbackModal.styled.js +122 -0
  95. package/dist/esm/components/bik-copilot/CopilotFeedbackModal.styled.js.map +1 -0
  96. package/dist/esm/components/bik-copilot/CopilotPanel.d.ts +9 -0
  97. package/dist/esm/components/bik-copilot/CopilotPanel.js +560 -0
  98. package/dist/esm/components/bik-copilot/CopilotPanel.js.map +1 -0
  99. package/dist/esm/components/bik-copilot/CopilotPanel.styled.d.ts +75 -0
  100. package/dist/esm/components/bik-copilot/CopilotPanel.styled.js +617 -0
  101. package/dist/esm/components/bik-copilot/CopilotPanel.styled.js.map +1 -0
  102. package/dist/esm/components/bik-copilot/copilotPlacement.d.ts +24 -0
  103. package/dist/esm/components/bik-copilot/copilotPlacement.js +38 -0
  104. package/dist/esm/components/bik-copilot/copilotPlacement.js.map +1 -0
  105. package/dist/esm/components/bik-copilot/copilotRegenerate.d.ts +22 -0
  106. package/dist/esm/components/bik-copilot/copilotRegenerate.js +6 -0
  107. package/dist/esm/components/bik-copilot/copilotRegenerate.js.map +1 -0
  108. package/dist/esm/components/bik-copilot/copilotSelectionPrompt.d.ts +13 -0
  109. package/dist/esm/components/bik-copilot/copilotSelectionPrompt.js +8 -0
  110. package/dist/esm/components/bik-copilot/copilotSelectionPrompt.js.map +1 -0
  111. package/dist/esm/components/bik-copilot/index.d.ts +19 -0
  112. package/dist/esm/components/bik-copilot/model.d.ts +823 -0
  113. package/dist/esm/components/bik-copilot/services/copilotDb.d.ts +90 -0
  114. package/dist/esm/components/bik-copilot/services/copilotDb.js +96 -0
  115. package/dist/esm/components/bik-copilot/services/copilotDb.js.map +1 -0
  116. package/dist/esm/components/bik-copilot/services/copilotFeedbackClient.d.ts +15 -0
  117. package/dist/esm/components/bik-copilot/services/copilotFeedbackClient.js +55 -0
  118. package/dist/esm/components/bik-copilot/services/copilotFeedbackClient.js.map +1 -0
  119. package/dist/esm/components/bik-copilot/services/copilotIcebreakersClient.d.ts +11 -0
  120. package/dist/esm/components/bik-copilot/services/copilotIcebreakersClient.js +54 -0
  121. package/dist/esm/components/bik-copilot/services/copilotIcebreakersClient.js.map +1 -0
  122. package/dist/esm/components/bik-copilot/services/copilotMessagesClient.d.ts +23 -0
  123. package/dist/esm/components/bik-copilot/services/copilotMessagesClient.js +78 -0
  124. package/dist/esm/components/bik-copilot/services/copilotMessagesClient.js.map +1 -0
  125. package/dist/esm/components/bik-copilot/services/copilotPageSession.d.ts +37 -0
  126. package/dist/esm/components/bik-copilot/services/copilotPageSession.js +35 -0
  127. package/dist/esm/components/bik-copilot/services/copilotPageSession.js.map +1 -0
  128. package/dist/esm/components/bik-copilot/services/copilotSseParser.d.ts +22 -0
  129. package/dist/esm/components/bik-copilot/services/copilotSseParser.js +52 -0
  130. package/dist/esm/components/bik-copilot/services/copilotSseParser.js.map +1 -0
  131. package/dist/esm/components/bik-copilot/services/copilotStreamClient.d.ts +35 -0
  132. package/dist/esm/components/bik-copilot/services/copilotStreamClient.js +110 -0
  133. package/dist/esm/components/bik-copilot/services/copilotStreamClient.js.map +1 -0
  134. package/dist/esm/components/bik-copilot/useCopilotIcebreakers.d.ts +17 -0
  135. package/dist/esm/components/bik-copilot/useCopilotIcebreakers.js +60 -0
  136. package/dist/esm/components/bik-copilot/useCopilotIcebreakers.js.map +1 -0
  137. package/dist/esm/components/bik-copilot/useCopilotStreamChat.d.ts +20 -0
  138. package/dist/esm/components/bik-copilot/useCopilotStreamChat.js +377 -0
  139. package/dist/esm/components/bik-copilot/useCopilotStreamChat.js.map +1 -0
  140. package/dist/esm/components/bik-copilot/useDraggableFloater.d.ts +9 -0
  141. package/dist/esm/components/bik-copilot/useDraggableFloater.js +118 -0
  142. package/dist/esm/components/bik-copilot/useDraggableFloater.js.map +1 -0
  143. package/dist/esm/components/bik-copilot/utils/markdown.d.ts +1 -0
  144. package/dist/esm/components/bik-copilot/utils/markdown.js +48 -0
  145. package/dist/esm/components/bik-copilot/utils/markdown.js.map +1 -0
  146. package/dist/esm/components/bik-copilot/utils/toolCtas.d.ts +6 -0
  147. package/dist/esm/components/bik-copilot/utils/toolCtas.js +27 -0
  148. package/dist/esm/components/bik-copilot/utils/toolCtas.js.map +1 -0
  149. package/dist/esm/components/button/themes.js +1 -2
  150. package/dist/esm/components/button/themes.js.map +1 -1
  151. package/dist/esm/components/datePicker/DatePickerWrapper.d.ts +0 -7
  152. package/dist/esm/components/datePicker/DatePickerWrapper.js +64 -66
  153. package/dist/esm/components/datePicker/DatePickerWrapper.js.map +1 -1
  154. package/dist/esm/components/datePicker/index.d.ts +0 -1
  155. package/dist/esm/components/text-selection-ask/SelectionAskPill.d.ts +22 -0
  156. package/dist/esm/components/text-selection-ask/SelectionAskPill.js +44 -0
  157. package/dist/esm/components/text-selection-ask/SelectionAskPill.js.map +1 -0
  158. package/dist/esm/components/text-selection-ask/SelectionAskPill.styled.d.ts +5 -0
  159. package/dist/esm/components/text-selection-ask/SelectionAskPill.styled.js +37 -0
  160. package/dist/esm/components/text-selection-ask/SelectionAskPill.styled.js.map +1 -0
  161. package/dist/esm/components/text-selection-ask/TextSelectionAsk.d.ts +36 -0
  162. package/dist/esm/components/text-selection-ask/TextSelectionAsk.js +69 -0
  163. package/dist/esm/components/text-selection-ask/TextSelectionAsk.js.map +1 -0
  164. package/dist/esm/components/text-selection-ask/index.d.ts +7 -0
  165. package/dist/esm/components/text-selection-ask/model.d.ts +112 -0
  166. package/dist/esm/components/text-selection-ask/model.js +7 -0
  167. package/dist/esm/components/text-selection-ask/model.js.map +1 -0
  168. package/dist/esm/components/text-selection-ask/selectionText.d.ts +18 -0
  169. package/dist/esm/components/text-selection-ask/selectionText.js +7 -0
  170. package/dist/esm/components/text-selection-ask/selectionText.js.map +1 -0
  171. package/dist/esm/components/text-selection-ask/useTextSelectionAsk.d.ts +15 -0
  172. package/dist/esm/components/text-selection-ask/useTextSelectionAsk.js +53 -0
  173. package/dist/esm/components/text-selection-ask/useTextSelectionAsk.js.map +1 -0
  174. package/dist/esm/icons/Informational/Common UI/SquaresFour.d.ts +7 -0
  175. package/dist/esm/icons/Informational/Common UI/SquaresFour.js +33 -0
  176. package/dist/esm/icons/Informational/Common UI/SquaresFour.js.map +1 -0
  177. package/dist/esm/icons/Informational/Common UI/index.d.ts +1 -0
  178. package/dist/esm/icons/index.d.ts +1 -1
  179. package/dist/esm/icons/index.js +158 -156
  180. package/dist/esm/icons/index.js.map +1 -1
  181. package/dist/esm/index.d.ts +2 -3
  182. package/dist/esm/index.js +884 -853
  183. package/dist/esm/index.js.map +1 -1
  184. package/package.json +1 -1
  185. package/dist/cjs/components/chip-selector/ChipSelector.js +0 -2
  186. package/dist/cjs/components/chip-selector/ChipSelector.js.map +0 -1
  187. package/dist/cjs/components/chip-selector/ChipSelector.styled.js +0 -36
  188. package/dist/cjs/components/chip-selector/ChipSelector.styled.js.map +0 -1
  189. package/dist/cjs/components/chip-selector/ChipSelectorGroup.js +0 -2
  190. package/dist/cjs/components/chip-selector/ChipSelectorGroup.js.map +0 -1
  191. package/dist/cjs/components/combo-box/ComboBox.js +0 -2
  192. package/dist/cjs/components/combo-box/ComboBox.js.map +0 -1
  193. package/dist/cjs/components/combo-box/ComboBox.styled.js +0 -33
  194. package/dist/cjs/components/combo-box/ComboBox.styled.js.map +0 -1
  195. package/dist/cjs/components/schedule-builder/RefreshSegmentToggle.js +0 -2
  196. package/dist/cjs/components/schedule-builder/RefreshSegmentToggle.js.map +0 -1
  197. package/dist/cjs/components/schedule-builder/ScheduleBuilder.js +0 -2
  198. package/dist/cjs/components/schedule-builder/ScheduleBuilder.js.map +0 -1
  199. package/dist/cjs/components/schedule-builder/ScheduleBuilder.styled.js +0 -138
  200. package/dist/cjs/components/schedule-builder/ScheduleBuilder.styled.js.map +0 -1
  201. package/dist/cjs/components/schedule-builder/ScheduleEndPicker.js +0 -2
  202. package/dist/cjs/components/schedule-builder/ScheduleEndPicker.js.map +0 -1
  203. package/dist/cjs/components/schedule-builder/ScheduleFrequencyPicker.js +0 -2
  204. package/dist/cjs/components/schedule-builder/ScheduleFrequencyPicker.js.map +0 -1
  205. package/dist/cjs/components/schedule-builder/ScheduleHelper.js +0 -2
  206. package/dist/cjs/components/schedule-builder/ScheduleHelper.js.map +0 -1
  207. package/dist/cjs/components/schedule-builder/SendModeSelector.js +0 -2
  208. package/dist/cjs/components/schedule-builder/SendModeSelector.js.map +0 -1
  209. package/dist/cjs/components/schedule-builder/StartDateTimePicker.js +0 -2
  210. package/dist/cjs/components/schedule-builder/StartDateTimePicker.js.map +0 -1
  211. package/dist/cjs/components/schedule-builder/UpcomingRunsPreview.js +0 -2
  212. package/dist/cjs/components/schedule-builder/UpcomingRunsPreview.js.map +0 -1
  213. package/dist/cjs/components/schedule-builder/model.js +0 -2
  214. package/dist/cjs/components/schedule-builder/model.js.map +0 -1
  215. package/dist/esm/components/chip-selector/ChipSelector.d.ts +0 -9
  216. package/dist/esm/components/chip-selector/ChipSelector.js +0 -27
  217. package/dist/esm/components/chip-selector/ChipSelector.js.map +0 -1
  218. package/dist/esm/components/chip-selector/ChipSelector.styled.d.ts +0 -10
  219. package/dist/esm/components/chip-selector/ChipSelector.styled.js +0 -48
  220. package/dist/esm/components/chip-selector/ChipSelector.styled.js.map +0 -1
  221. package/dist/esm/components/chip-selector/ChipSelectorGroup.d.ts +0 -10
  222. package/dist/esm/components/chip-selector/ChipSelectorGroup.js +0 -48
  223. package/dist/esm/components/chip-selector/ChipSelectorGroup.js.map +0 -1
  224. package/dist/esm/components/chip-selector/index.d.ts +0 -4
  225. package/dist/esm/components/chip-selector/model.d.ts +0 -106
  226. package/dist/esm/components/combo-box/ComboBox.d.ts +0 -15
  227. package/dist/esm/components/combo-box/ComboBox.js +0 -118
  228. package/dist/esm/components/combo-box/ComboBox.js.map +0 -1
  229. package/dist/esm/components/combo-box/ComboBox.styled.d.ts +0 -12
  230. package/dist/esm/components/combo-box/ComboBox.styled.js +0 -40
  231. package/dist/esm/components/combo-box/ComboBox.styled.js.map +0 -1
  232. package/dist/esm/components/combo-box/index.d.ts +0 -3
  233. package/dist/esm/components/combo-box/model.d.ts +0 -55
  234. package/dist/esm/components/schedule-builder/RefreshSegmentToggle.d.ts +0 -22
  235. package/dist/esm/components/schedule-builder/RefreshSegmentToggle.js +0 -31
  236. package/dist/esm/components/schedule-builder/RefreshSegmentToggle.js.map +0 -1
  237. package/dist/esm/components/schedule-builder/ScheduleBuilder.d.ts +0 -88
  238. package/dist/esm/components/schedule-builder/ScheduleBuilder.js +0 -105
  239. package/dist/esm/components/schedule-builder/ScheduleBuilder.js.map +0 -1
  240. package/dist/esm/components/schedule-builder/ScheduleBuilder.styled.d.ts +0 -81
  241. package/dist/esm/components/schedule-builder/ScheduleBuilder.styled.js +0 -168
  242. package/dist/esm/components/schedule-builder/ScheduleBuilder.styled.js.map +0 -1
  243. package/dist/esm/components/schedule-builder/ScheduleEndPicker.d.ts +0 -17
  244. package/dist/esm/components/schedule-builder/ScheduleEndPicker.js +0 -105
  245. package/dist/esm/components/schedule-builder/ScheduleEndPicker.js.map +0 -1
  246. package/dist/esm/components/schedule-builder/ScheduleFrequencyPicker.d.ts +0 -21
  247. package/dist/esm/components/schedule-builder/ScheduleFrequencyPicker.js +0 -136
  248. package/dist/esm/components/schedule-builder/ScheduleFrequencyPicker.js.map +0 -1
  249. package/dist/esm/components/schedule-builder/ScheduleHelper.d.ts +0 -110
  250. package/dist/esm/components/schedule-builder/ScheduleHelper.js +0 -196
  251. package/dist/esm/components/schedule-builder/ScheduleHelper.js.map +0 -1
  252. package/dist/esm/components/schedule-builder/SendModeSelector.d.ts +0 -29
  253. package/dist/esm/components/schedule-builder/SendModeSelector.js +0 -41
  254. package/dist/esm/components/schedule-builder/SendModeSelector.js.map +0 -1
  255. package/dist/esm/components/schedule-builder/StartDateTimePicker.d.ts +0 -51
  256. package/dist/esm/components/schedule-builder/StartDateTimePicker.js +0 -120
  257. package/dist/esm/components/schedule-builder/StartDateTimePicker.js.map +0 -1
  258. package/dist/esm/components/schedule-builder/UpcomingRunsPreview.d.ts +0 -19
  259. package/dist/esm/components/schedule-builder/UpcomingRunsPreview.js +0 -44
  260. package/dist/esm/components/schedule-builder/UpcomingRunsPreview.js.map +0 -1
  261. package/dist/esm/components/schedule-builder/index.d.ts +0 -18
  262. package/dist/esm/components/schedule-builder/model.d.ts +0 -69
  263. package/dist/esm/components/schedule-builder/model.js +0 -8
  264. package/dist/esm/components/schedule-builder/model.js.map +0 -1
@@ -0,0 +1,575 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("styled-components"),e=require("../../constants/Theme.js"),a=n=>n&&typeof n=="object"&&"default"in n?n:{default:n},t=a(r),i="#F9F9F9",o=12,d=8,s=t.default.div`
2
+ display: flex;
3
+ flex-direction: column;
4
+ min-height: 0;
5
+ overflow: hidden;
6
+ background: ${e.COLORS.surface.standard};
7
+ border: 1px solid ${e.COLORS.stroke.primary};
8
+ border-radius: 16px;
9
+ box-shadow: 0 16px 48px rgba(40, 3, 78, 0.18);
10
+ `,l=t.default.div`
11
+ display: flex;
12
+ align-items: center;
13
+ gap: 10px;
14
+ padding: 16px;
15
+ border-bottom: 1px solid ${e.COLORS.stroke.primary};
16
+ flex-shrink: 0;
17
+ `,p=t.default.div`
18
+ width: 36px;
19
+ height: 36px;
20
+ flex-shrink: 0;
21
+ border-radius: 8px;
22
+ background: ${e.COLORS.background.base};
23
+ display: flex;
24
+ align-items: center;
25
+ justify-content: center;
26
+ color: ${e.COLORS.content.brand};
27
+ overflow: hidden;
28
+ `,c=t.default.div`
29
+ display: flex;
30
+ flex-direction: column;
31
+ gap: 2px;
32
+ min-width: 0;
33
+ flex: 1;
34
+ `,x=t.default.div`
35
+ display: flex;
36
+ align-items: center;
37
+ gap: 6px;
38
+ `,g=t.default.span`
39
+ padding: 1px 6px;
40
+ border-radius: 4px;
41
+ background: ${e.COLORS.background.brandLight};
42
+ color: ${e.COLORS.content.brand};
43
+ font-size: 10px;
44
+ font-weight: 600;
45
+ line-height: 16px;
46
+ white-space: nowrap;
47
+ `,u=t.default.div`
48
+ display: flex;
49
+ align-items: center;
50
+ gap: 2px;
51
+ flex-shrink: 0;
52
+ `,f=t.default.button`
53
+ width: 28px;
54
+ height: 28px;
55
+ display: flex;
56
+ align-items: center;
57
+ justify-content: center;
58
+ padding: 0;
59
+ border: none;
60
+ border-radius: 6px;
61
+ background: transparent;
62
+ color: ${e.COLORS.content.secondary};
63
+ cursor: pointer;
64
+ transition: background 0.15s ease, color 0.15s ease;
65
+
66
+ &:hover {
67
+ background: ${e.COLORS.surface.hovered};
68
+ color: ${e.COLORS.content.primary};
69
+ }
70
+
71
+ &:focus-visible {
72
+ outline: 2px solid ${e.COLORS.stroke.brand};
73
+ outline-offset: 1px;
74
+ }
75
+ `,b=t.default.div`
76
+ position: relative;
77
+ flex: 1;
78
+ min-height: 0;
79
+ display: flex;
80
+ flex-direction: column;
81
+ `,O=t.default.div`
82
+ flex: 1;
83
+ min-height: 0;
84
+ overflow-y: auto;
85
+ padding: 16px;
86
+ display: flex;
87
+ flex-direction: column;
88
+ gap: ${o}px;
89
+
90
+ &::-webkit-scrollbar {
91
+ width: 6px;
92
+ }
93
+
94
+ &::-webkit-scrollbar-thumb {
95
+ background: ${e.COLORS.background.inactive};
96
+ border-radius: 3px;
97
+ }
98
+ `,h=t.default.div`
99
+ position: absolute;
100
+ left: 0;
101
+ right: 0;
102
+ bottom: 0;
103
+ height: 40px;
104
+ pointer-events: none;
105
+ opacity: ${n=>n.$visible?1:0};
106
+ transition: opacity 0.2s ease;
107
+ background: linear-gradient(
108
+ to bottom,
109
+ ${e.COLORS.surface.standard}00 0%,
110
+ ${e.COLORS.surface.standard}99 60%,
111
+ ${e.COLORS.surface.standard} 100%
112
+ );
113
+
114
+ &::after {
115
+ content: '';
116
+ position: absolute;
117
+ inset: 0;
118
+ backdrop-filter: blur(1px);
119
+ -webkit-backdrop-filter: blur(1px);
120
+ mask-image: linear-gradient(to bottom, transparent 0%, #000 75%);
121
+ -webkit-mask-image: linear-gradient(to bottom, transparent 0%, #000 75%);
122
+ }
123
+ `,m=t.default.button`
124
+ position: absolute;
125
+ left: 50%;
126
+ bottom: 12px;
127
+ transform: translateX(-50%)
128
+ translateY(${n=>n.$visible?"0":"6px"});
129
+ width: 32px;
130
+ height: 32px;
131
+ display: flex;
132
+ align-items: center;
133
+ justify-content: center;
134
+ padding: 0;
135
+ border: none;
136
+ border-radius: 999px;
137
+ background: ${e.COLORS.background.inverse};
138
+ color: ${e.COLORS.content.primaryInverse};
139
+ box-shadow: 0 2px 8px rgba(40, 3, 78, 0.16);
140
+ cursor: pointer;
141
+ opacity: ${n=>n.$visible?1:0};
142
+ /* Hidden to the pointer and to focus order while it is faded out. */
143
+ visibility: ${n=>n.$visible?"visible":"hidden"};
144
+ transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s ease,
145
+ background 0.15s ease, color 0.15s ease;
146
+
147
+ &:hover {
148
+ background: ${e.COLORS.background.brandHovered};
149
+ }
150
+
151
+ &:focus-visible {
152
+ outline: 2px solid ${e.COLORS.stroke.brand};
153
+ outline-offset: 1px;
154
+ }
155
+ `,k=t.default.div`
156
+ flex: 1;
157
+ display: flex;
158
+ flex-direction: column;
159
+ align-items: center;
160
+ justify-content: center;
161
+ gap: 8px;
162
+ text-align: center;
163
+ padding: 8px 4px;
164
+ `,y=t.default.div`
165
+ color: ${e.COLORS.content.brand};
166
+ display: flex;
167
+ align-items: center;
168
+ justify-content: center;
169
+ margin-bottom: 4px;
170
+ `,L=t.default.div`
171
+ display: flex;
172
+ flex-direction: column;
173
+ align-items: center;
174
+ gap: 8px;
175
+ margin-top: 12px;
176
+ width: 100%;
177
+ `,S=t.default.button`
178
+ display: inline-flex;
179
+ align-items: center;
180
+ gap: 6px;
181
+ max-width: 100%;
182
+ padding: 8px 14px;
183
+ border: 1px solid ${e.COLORS.stroke.primary};
184
+ border-radius: 999px;
185
+ background: ${e.COLORS.surface.standard};
186
+ color: ${e.COLORS.content.primary};
187
+ font-family: Inter;
188
+ font-size: 13px;
189
+ line-height: 18px;
190
+ text-align: left;
191
+ cursor: pointer;
192
+ transition: border-color 0.15s ease, background 0.15s ease;
193
+
194
+ svg {
195
+ flex-shrink: 0;
196
+ color: ${e.COLORS.content.brand};
197
+ }
198
+
199
+ &:hover:not(:disabled) {
200
+ border-color: ${e.COLORS.stroke.brand};
201
+ background: ${e.COLORS.background.brandVeryLight};
202
+ }
203
+
204
+ &:disabled {
205
+ cursor: not-allowed;
206
+ opacity: 0.5;
207
+ }
208
+ `,C=t.default.div`
209
+ font-family: Inter;
210
+ font-size: 14px;
211
+ line-height: 20px;
212
+ word-break: break-word;
213
+ overflow-wrap: break-word;
214
+
215
+ ${n=>n.$role==="user"?`
216
+ align-self: flex-end;
217
+ margin-left: 32px;
218
+ padding: 10px 14px;
219
+ border-radius: 12px;
220
+ background: ${i};
221
+ color: ${e.COLORS.content.primary};
222
+ `:n.$role==="system"?`
223
+ align-self: center;
224
+ max-width: 90%;
225
+ padding: 6px 10px;
226
+ border-radius: 8px;
227
+ background: ${e.COLORS.surface.grey};
228
+ color: ${e.COLORS.content.secondary};
229
+ font-size: 12px;
230
+ text-align: center;
231
+ `:`
232
+ align-self: stretch;
233
+ padding: 0;
234
+ background: transparent;
235
+ color: ${e.COLORS.content.primary};
236
+ `}
237
+
238
+ /* Markdown emitted by renderCopilotMarkdown */
239
+ h1,
240
+ h2,
241
+ h3,
242
+ h4 {
243
+ font-size: 14px;
244
+ font-weight: 600;
245
+ margin: 4px 0;
246
+ }
247
+
248
+ pre {
249
+ background: ${e.COLORS.background.base};
250
+ border-radius: 6px;
251
+ padding: 8px;
252
+ margin: 6px 0;
253
+ overflow-x: auto;
254
+ font-size: 12px;
255
+ }
256
+
257
+ a {
258
+ color: ${e.COLORS.content.brand};
259
+ }
260
+
261
+ ul,
262
+ ol {
263
+ margin: 4px 0;
264
+ padding-left: 20px;
265
+ }
266
+
267
+ li {
268
+ margin: 2px 0;
269
+ }
270
+
271
+ code {
272
+ background: ${e.COLORS.background.base};
273
+ border-radius: 4px;
274
+ padding: 1px 4px;
275
+ font-size: 12px;
276
+ }
277
+ `,$=t.default.div`
278
+ align-self: flex-start;
279
+ display: inline-flex;
280
+ align-items: center;
281
+ gap: 8px;
282
+ padding: 12px 14px;
283
+ border-radius: 12px;
284
+ border-bottom-left-radius: 4px;
285
+ background: ${e.COLORS.surface.grey};
286
+ border: 1px solid ${e.COLORS.stroke.primary};
287
+ `,v=t.default.div`
288
+ align-self: center;
289
+ display: inline-flex;
290
+ align-items: center;
291
+ gap: 8px;
292
+ padding: 4px 0;
293
+ font-family: Inter;
294
+ font-size: 11px;
295
+ line-height: 16px;
296
+ color: ${e.COLORS.content.placeholder};
297
+ `,R=t.default.div`
298
+ display: flex;
299
+ flex-direction: column;
300
+ align-items: stretch;
301
+ gap: 8px;
302
+ margin-top: 4px;
303
+ `,w=t.default.div`
304
+ font-family: Inter;
305
+ font-size: 11px;
306
+ line-height: 16px;
307
+ color: ${e.COLORS.content.placeholder};
308
+ `,I=t.default.div`
309
+ display: flex;
310
+ flex-wrap: wrap;
311
+ gap: 8px;
312
+ margin-top: 8px;
313
+ `,A=t.default.a`
314
+ display: inline-flex;
315
+ align-items: center;
316
+ gap: 6px;
317
+ padding: 8px 14px;
318
+ border: 1px solid ${e.COLORS.stroke.brand};
319
+ border-radius: 10px;
320
+ background: ${e.COLORS.background.brandVeryLight};
321
+ color: ${e.COLORS.content.brand};
322
+ font-family: Inter;
323
+ font-size: 13px;
324
+ font-weight: 500;
325
+ line-height: 18px;
326
+ text-decoration: none;
327
+ cursor: pointer;
328
+ transition: background 0.15s ease, border-color 0.15s ease;
329
+
330
+ &:hover {
331
+ background: ${e.COLORS.background.brandLight};
332
+ }
333
+
334
+ &:focus-visible {
335
+ outline: 2px solid ${e.COLORS.stroke.brand};
336
+ outline-offset: 2px;
337
+ }
338
+ `,z=t.default.button`
339
+ display: flex;
340
+ align-items: center;
341
+ gap: 8px;
342
+ width: 100%;
343
+ padding: 10px 14px;
344
+ border: 1px solid ${e.COLORS.stroke.primary};
345
+ border-radius: 10px;
346
+ background: ${e.COLORS.surface.standard};
347
+ color: ${e.COLORS.content.primary};
348
+ font-family: Inter;
349
+ font-size: 13px;
350
+ line-height: 18px;
351
+ text-align: left;
352
+ cursor: pointer;
353
+ transition: border-color 0.15s ease, background 0.15s ease;
354
+
355
+ svg {
356
+ flex-shrink: 0;
357
+ color: ${e.COLORS.content.secondary};
358
+ }
359
+
360
+ &:hover:not(:disabled) {
361
+ border-color: ${e.COLORS.stroke.brand};
362
+ background: ${e.COLORS.background.brandVeryLight};
363
+ }
364
+
365
+ &:disabled {
366
+ cursor: not-allowed;
367
+ opacity: 0.5;
368
+ }
369
+ `,T=t.default.div`
370
+ align-self: flex-start;
371
+ display: inline-flex;
372
+ align-items: center;
373
+ gap: 6px;
374
+ font-family: Inter;
375
+ font-size: 12px;
376
+ line-height: 18px;
377
+ color: ${e.COLORS.content.secondary};
378
+
379
+ svg {
380
+ flex-shrink: 0;
381
+ color: ${e.COLORS.content.inactive};
382
+ }
383
+ `,M=t.default.div`
384
+ align-self: flex-end;
385
+ margin-top: -6px;
386
+ font-family: Inter;
387
+ font-size: 11px;
388
+ line-height: 16px;
389
+ color: ${e.COLORS.content.placeholder};
390
+ `,H=t.default.div`
391
+ align-self: flex-start;
392
+ display: flex;
393
+ align-items: center;
394
+ gap: 2px;
395
+ /* Pulls back out of the scroller's row gap to land on 8px. */
396
+ margin-top: ${d-o}px;
397
+ `,B=t.default.button`
398
+ display: inline-flex;
399
+ align-items: center;
400
+ justify-content: center;
401
+ gap: 4px;
402
+ width: 28px;
403
+ height: 28px;
404
+ padding: 0;
405
+ border: none;
406
+ border-radius: 4px;
407
+ background: transparent;
408
+ color: ${e.COLORS.content.placeholder};
409
+ font-family: Inter;
410
+ font-size: 11px;
411
+ line-height: 16px;
412
+ cursor: pointer;
413
+ transition: background 0.15s ease, color 0.15s ease;
414
+
415
+ svg {
416
+ flex-shrink: 0;
417
+ }
418
+
419
+ &:hover:not(:disabled) {
420
+ background: ${e.COLORS.surface.hovered};
421
+ color: ${e.COLORS.content.secondary};
422
+ }
423
+
424
+ &:focus-visible {
425
+ outline: 2px solid ${e.COLORS.stroke.brand};
426
+ outline-offset: 1px;
427
+ }
428
+
429
+ &:disabled {
430
+ cursor: not-allowed;
431
+ opacity: 0.5;
432
+ }
433
+
434
+ /* Confirmation reads as success, not as another affordance. */
435
+ &[data-copied='true'],
436
+ &[data-copied='true']:hover {
437
+ color: ${e.COLORS.content.positive};
438
+ }
439
+
440
+ /* A cast vote holds the brand colour, so it stays legible as chosen once the
441
+ pointer moves away. */
442
+ &[data-selected='true'],
443
+ &[data-selected='true']:hover {
444
+ color: ${e.COLORS.content.brand};
445
+ }
446
+ `,E=t.default.span`
447
+ font-family: Inter;
448
+ font-size: 13px;
449
+ line-height: 20px;
450
+ color: ${e.COLORS.content.secondary};
451
+ `,F=t.default.div`
452
+ margin: 0 16px;
453
+ padding: 8px 10px;
454
+ border-radius: 8px;
455
+ background: ${e.COLORS.background.negative.light};
456
+ color: ${e.COLORS.content.negative};
457
+ font-family: Inter;
458
+ font-size: 12px;
459
+ line-height: 18px;
460
+ flex-shrink: 0;
461
+ `,j=t.default.div`
462
+ padding: 16px 16px 4px;
463
+ flex-shrink: 0;
464
+ `,P=t.default.div`
465
+ box-sizing: border-box;
466
+ display: flex;
467
+ align-items: center;
468
+ gap: 6px;
469
+ margin-bottom: 8px;
470
+ padding: 6px 8px;
471
+ border: 1px solid ${e.COLORS.stroke.primary};
472
+ border-radius: 8px;
473
+ background: ${e.COLORS.background.brandVeryLight};
474
+
475
+ svg {
476
+ flex-shrink: 0;
477
+ }
478
+ `,_=t.default.span`
479
+ flex: 1;
480
+ min-width: 0;
481
+ overflow: hidden;
482
+ white-space: nowrap;
483
+ text-overflow: ellipsis;
484
+ font-family: Inter;
485
+ font-size: 12px;
486
+ line-height: 16px;
487
+ color: ${e.COLORS.content.primary};
488
+ `,U=t.default.button`
489
+ display: flex;
490
+ align-items: center;
491
+ justify-content: center;
492
+ flex-shrink: 0;
493
+ width: 16px;
494
+ height: 16px;
495
+ padding: 0;
496
+ border: none;
497
+ border-radius: 4px;
498
+ background: transparent;
499
+ color: ${e.COLORS.content.secondary};
500
+ cursor: pointer;
501
+
502
+ &:hover {
503
+ background: ${e.COLORS.background.brandLight};
504
+ }
505
+ `,V=t.default.div`
506
+ box-sizing: border-box;
507
+ min-height: 48px;
508
+ display: flex;
509
+ align-items: flex-end;
510
+ gap: 8px;
511
+ padding: 12px;
512
+ box-shadow: inset 0 0 0 1px
513
+ ${n=>n.$focused?e.COLORS.stroke.brand:e.COLORS.stroke.primary};
514
+ border-radius: 12px;
515
+ background: ${e.COLORS.surface.standard};
516
+ transition: box-shadow 0.15s ease;
517
+
518
+ &:hover {
519
+ box-shadow: inset 0 0 0 1px
520
+ ${n=>n.$focused?e.COLORS.stroke.brand:e.COLORS.content.inactive};
521
+ }
522
+ `,G=t.default.textarea`
523
+ flex: 1;
524
+ border: none;
525
+ outline: none;
526
+ resize: none;
527
+ background: transparent;
528
+ font-family: Inter;
529
+ font-size: 13px;
530
+ line-height: 24px;
531
+ color: ${e.COLORS.content.primary};
532
+ max-height: 96px;
533
+ min-height: 24px;
534
+ padding: 0;
535
+
536
+ &::placeholder {
537
+ color: ${e.COLORS.content.placeholder};
538
+ }
539
+
540
+ &:disabled {
541
+ cursor: not-allowed;
542
+ }
543
+ `,D=t.default.button`
544
+ width: 24px;
545
+ height: 24px;
546
+ flex-shrink: 0;
547
+ display: flex;
548
+ align-items: center;
549
+ justify-content: center;
550
+ padding: 0;
551
+ border: none;
552
+ border-radius: 6px;
553
+ background: ${n=>n.$active?e.COLORS.background.brand:e.COLORS.background.inactive};
554
+ color: ${e.COLORS.content.primaryInverse};
555
+ cursor: ${n=>n.$active?"pointer":"not-allowed"};
556
+ transition: background 0.15s ease;
557
+
558
+ &:hover:not(:disabled) {
559
+ background: ${e.COLORS.background.brandHovered};
560
+ }
561
+
562
+ &:focus-visible {
563
+ outline: 2px solid ${e.COLORS.stroke.brand};
564
+ outline-offset: 1px;
565
+ }
566
+ `,N=t.default.div`
567
+ padding: 4px 16px 16px;
568
+ text-align: center;
569
+ font-family: Inter;
570
+ font-size: 11px;
571
+ line-height: 16px;
572
+ color: ${e.COLORS.content.placeholder};
573
+ flex-shrink: 0;
574
+ `;exports.AttachmentChip=P;exports.AttachmentRemove=U;exports.AttachmentText=_;exports.Disclaimer=N;exports.EmptyState=k;exports.EmptyStateIcon=y;exports.ErrorBanner=F;exports.FollowUpChip=z;exports.FollowUpList=R;exports.FollowUpsLabel=w;exports.HeaderActions=u;exports.HeaderAvatar=p;exports.HeaderBadge=g;exports.HeaderText=c;exports.HeaderTitleRow=x;exports.HistoryLoader=v;exports.IconAction=f;exports.InputArea=j;exports.InputWrapper=V;exports.InterruptedNote=T;exports.JumpToLatestButton=m;exports.MessageAction=B;exports.MessageActions=H;exports.MessageBubble=C;exports.MessageInput=G;exports.MessageTimestamp=M;exports.MessagesArea=O;exports.MessagesViewport=b;exports.PanelContainer=s;exports.PanelHeader=l;exports.ScrollFade=h;exports.SendButton=D;exports.SuggestionChip=S;exports.SuggestionList=L;exports.ThinkingBubble=$;exports.ThinkingLabel=E;exports.ToolCtaLink=A;exports.ToolCtaList=I;
575
+ //# sourceMappingURL=CopilotPanel.styled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopilotPanel.styled.js","sources":["../../../../src/components/bik-copilot/CopilotPanel.styled.ts"],"sourcesContent":["import styled from 'styled-components';\nimport { COLORS } from '@src/constants/Theme';\n\nconst USER_BUBBLE_BACKGROUND = '#F9F9F9';\n\nconst MESSAGE_GAP_PX = 12;\n\nconst MESSAGE_ACTIONS_GAP_PX = 8;\n\nexport const PanelContainer = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tmin-height: 0;\n\toverflow: hidden;\n\tbackground: ${COLORS.surface.standard};\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 16px;\n\tbox-shadow: 0 16px 48px rgba(40, 3, 78, 0.18);\n`;\n\nexport const PanelHeader = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 10px;\n\tpadding: 16px;\n\tborder-bottom: 1px solid ${COLORS.stroke.primary};\n\tflex-shrink: 0;\n`;\n\nexport const HeaderAvatar = styled.div`\n\twidth: 36px;\n\theight: 36px;\n\tflex-shrink: 0;\n\tborder-radius: 8px;\n\tbackground: ${COLORS.background.base};\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tcolor: ${COLORS.content.brand};\n\toverflow: hidden;\n`;\n\nexport const HeaderText = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px;\n\tmin-width: 0;\n\tflex: 1;\n`;\n\nexport const HeaderTitleRow = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n`;\n\nexport const HeaderBadge = styled.span`\n\tpadding: 1px 6px;\n\tborder-radius: 4px;\n\tbackground: ${COLORS.background.brandLight};\n\tcolor: ${COLORS.content.brand};\n\tfont-size: 10px;\n\tfont-weight: 600;\n\tline-height: 16px;\n\twhite-space: nowrap;\n`;\n\nexport const HeaderActions = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 2px;\n\tflex-shrink: 0;\n`;\n\nexport const IconAction = styled.button`\n\twidth: 28px;\n\theight: 28px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tpadding: 0;\n\tborder: none;\n\tborder-radius: 6px;\n\tbackground: transparent;\n\tcolor: ${COLORS.content.secondary};\n\tcursor: pointer;\n\ttransition: background 0.15s ease, color 0.15s ease;\n\n\t&:hover {\n\t\tbackground: ${COLORS.surface.hovered};\n\t\tcolor: ${COLORS.content.primary};\n\t}\n\n\t&:focus-visible {\n\t\toutline: 2px solid ${COLORS.stroke.brand};\n\t\toutline-offset: 1px;\n\t}\n`;\n\n/**\n * Wraps the scroller so the bottom fade and the jump-to-latest button can be\n * absolutely positioned over it.\n */\nexport const MessagesViewport = styled.div`\n\tposition: relative;\n\tflex: 1;\n\tmin-height: 0;\n\tdisplay: flex;\n\tflex-direction: column;\n`;\n\nexport const MessagesArea = styled.div`\n\tflex: 1;\n\tmin-height: 0;\n\toverflow-y: auto;\n\tpadding: 16px;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: ${MESSAGE_GAP_PX}px;\n\n\t&::-webkit-scrollbar {\n\t\twidth: 6px;\n\t}\n\n\t&::-webkit-scrollbar-thumb {\n\t\tbackground: ${COLORS.background.inactive};\n\t\tborder-radius: 3px;\n\t}\n`;\n\n/**\n * Softens the cut-off edge of a long answer the reader has scrolled up from, so\n * the clipped line reads as continuing rather than as the end of the message.\n *\n * Two layers, because one element cannot ramp a gradient and a blur\n * independently: the element itself whitens the text out, and `::after` lays a\n * masked blur over it that strengthens towards the bottom. Browsers without\n * `backdrop-filter` still get the fade.\n */\nexport const ScrollFade = styled.div<{ $visible: boolean }>`\n\tposition: absolute;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\theight: 40px;\n\tpointer-events: none;\n\topacity: ${(props) => (props.$visible ? 1 : 0)};\n\ttransition: opacity 0.2s ease;\n\tbackground: linear-gradient(\n\t\tto bottom,\n\t\t${COLORS.surface.standard}00 0%,\n\t\t${COLORS.surface.standard}99 60%,\n\t\t${COLORS.surface.standard} 100%\n\t);\n\n\t&::after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tinset: 0;\n\t\tbackdrop-filter: blur(1px);\n\t\t-webkit-backdrop-filter: blur(1px);\n\t\tmask-image: linear-gradient(to bottom, transparent 0%, #000 75%);\n\t\t-webkit-mask-image: linear-gradient(to bottom, transparent 0%, #000 75%);\n\t}\n`;\n\nexport const JumpToLatestButton = styled.button<{ $visible: boolean }>`\n\tposition: absolute;\n\tleft: 50%;\n\tbottom: 12px;\n\ttransform: translateX(-50%)\n\t\ttranslateY(${(props) => (props.$visible ? '0' : '6px')});\n\twidth: 32px;\n\theight: 32px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tpadding: 0;\n\tborder: none;\n\tborder-radius: 999px;\n\tbackground: ${COLORS.background.inverse};\n\tcolor: ${COLORS.content.primaryInverse};\n\tbox-shadow: 0 2px 8px rgba(40, 3, 78, 0.16);\n\tcursor: pointer;\n\topacity: ${(props) => (props.$visible ? 1 : 0)};\n\t/* Hidden to the pointer and to focus order while it is faded out. */\n\tvisibility: ${(props) => (props.$visible ? 'visible' : 'hidden')};\n\ttransition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s ease,\n\t\tbackground 0.15s ease, color 0.15s ease;\n\n\t&:hover {\n\t\tbackground: ${COLORS.background.brandHovered};\n\t}\n\n\t&:focus-visible {\n\t\toutline: 2px solid ${COLORS.stroke.brand};\n\t\toutline-offset: 1px;\n\t}\n`;\n\nexport const EmptyState = styled.div`\n\tflex: 1;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: center;\n\tgap: 8px;\n\ttext-align: center;\n\tpadding: 8px 4px;\n`;\n\nexport const EmptyStateIcon = styled.div`\n\tcolor: ${COLORS.content.brand};\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin-bottom: 4px;\n`;\n\nexport const SuggestionList = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tgap: 8px;\n\tmargin-top: 12px;\n\twidth: 100%;\n`;\n\nexport const SuggestionChip = styled.button`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 6px;\n\tmax-width: 100%;\n\tpadding: 8px 14px;\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 999px;\n\tbackground: ${COLORS.surface.standard};\n\tcolor: ${COLORS.content.primary};\n\tfont-family: Inter;\n\tfont-size: 13px;\n\tline-height: 18px;\n\ttext-align: left;\n\tcursor: pointer;\n\ttransition: border-color 0.15s ease, background 0.15s ease;\n\n\tsvg {\n\t\tflex-shrink: 0;\n\t\tcolor: ${COLORS.content.brand};\n\t}\n\n\t&:hover:not(:disabled) {\n\t\tborder-color: ${COLORS.stroke.brand};\n\t\tbackground: ${COLORS.background.brandVeryLight};\n\t}\n\n\t&:disabled {\n\t\tcursor: not-allowed;\n\t\topacity: 0.5;\n\t}\n`;\n\nexport const MessageBubble = styled.div<{\n\t$role: 'user' | 'assistant' | 'system';\n}>`\n\tfont-family: Inter;\n\tfont-size: 14px;\n\tline-height: 20px;\n\tword-break: break-word;\n\toverflow-wrap: break-word;\n\n\t${(props) => {\n\t\tif (props.$role === 'user') {\n\t\t\treturn `\n\t\t\t\talign-self: flex-end;\n\t\t\t\tmargin-left: 32px;\n\t\t\t\tpadding: 10px 14px;\n\t\t\t\tborder-radius: 12px;\n\t\t\t\tbackground: ${USER_BUBBLE_BACKGROUND};\n\t\t\t\tcolor: ${COLORS.content.primary};\n\t\t\t`;\n\t\t}\n\t\tif (props.$role === 'system') {\n\t\t\treturn `\n\t\t\t\talign-self: center;\n\t\t\t\tmax-width: 90%;\n\t\t\t\tpadding: 6px 10px;\n\t\t\t\tborder-radius: 8px;\n\t\t\t\tbackground: ${COLORS.surface.grey};\n\t\t\t\tcolor: ${COLORS.content.secondary};\n\t\t\t\tfont-size: 12px;\n\t\t\t\ttext-align: center;\n\t\t\t`;\n\t\t}\n\t\treturn `\n\t\t\talign-self: stretch;\n\t\t\tpadding: 0;\n\t\t\tbackground: transparent;\n\t\t\tcolor: ${COLORS.content.primary};\n\t\t`;\n\t}}\n\n\t/* Markdown emitted by renderCopilotMarkdown */\n\th1,\n\th2,\n\th3,\n\th4 {\n\t\tfont-size: 14px;\n\t\tfont-weight: 600;\n\t\tmargin: 4px 0;\n\t}\n\n\tpre {\n\t\tbackground: ${COLORS.background.base};\n\t\tborder-radius: 6px;\n\t\tpadding: 8px;\n\t\tmargin: 6px 0;\n\t\toverflow-x: auto;\n\t\tfont-size: 12px;\n\t}\n\n\ta {\n\t\tcolor: ${COLORS.content.brand};\n\t}\n\n\tul,\n\tol {\n\t\tmargin: 4px 0;\n\t\tpadding-left: 20px;\n\t}\n\n\tli {\n\t\tmargin: 2px 0;\n\t}\n\n\tcode {\n\t\tbackground: ${COLORS.background.base};\n\t\tborder-radius: 4px;\n\t\tpadding: 1px 4px;\n\t\tfont-size: 12px;\n\t}\n`;\n\nexport const ThinkingBubble = styled.div`\n\talign-self: flex-start;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 8px;\n\tpadding: 12px 14px;\n\tborder-radius: 12px;\n\tborder-bottom-left-radius: 4px;\n\tbackground: ${COLORS.surface.grey};\n\tborder: 1px solid ${COLORS.stroke.primary};\n`;\n\n/** Sits above the oldest message while the page before it is fetched. */\nexport const HistoryLoader = styled.div`\n\talign-self: center;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 8px;\n\tpadding: 4px 0;\n\tfont-family: Inter;\n\tfont-size: 11px;\n\tline-height: 16px;\n\tcolor: ${COLORS.content.placeholder};\n`;\n\nexport const FollowUpList = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: stretch;\n\tgap: 8px;\n\tmargin-top: 4px;\n`;\n\nexport const FollowUpsLabel = styled.div`\n\tfont-family: Inter;\n\tfont-size: 11px;\n\tline-height: 16px;\n\tcolor: ${COLORS.content.placeholder};\n`;\n\nexport const ToolCtaList = styled.div`\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 8px;\n\tmargin-top: 8px;\n`;\n\n// An anchor rather than a button: a real link so the browser handles the new\n// tab, middle-click and copy-link-address the way merchants expect.\nexport const ToolCtaLink = styled.a`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 6px;\n\tpadding: 8px 14px;\n\tborder: 1px solid ${COLORS.stroke.brand};\n\tborder-radius: 10px;\n\tbackground: ${COLORS.background.brandVeryLight};\n\tcolor: ${COLORS.content.brand};\n\tfont-family: Inter;\n\tfont-size: 13px;\n\tfont-weight: 500;\n\tline-height: 18px;\n\ttext-decoration: none;\n\tcursor: pointer;\n\ttransition: background 0.15s ease, border-color 0.15s ease;\n\n\t&:hover {\n\t\tbackground: ${COLORS.background.brandLight};\n\t}\n\n\t&:focus-visible {\n\t\toutline: 2px solid ${COLORS.stroke.brand};\n\t\toutline-offset: 2px;\n\t}\n`;\n\nexport const FollowUpChip = styled.button`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n\twidth: 100%;\n\tpadding: 10px 14px;\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 10px;\n\tbackground: ${COLORS.surface.standard};\n\tcolor: ${COLORS.content.primary};\n\tfont-family: Inter;\n\tfont-size: 13px;\n\tline-height: 18px;\n\ttext-align: left;\n\tcursor: pointer;\n\ttransition: border-color 0.15s ease, background 0.15s ease;\n\n\tsvg {\n\t\tflex-shrink: 0;\n\t\tcolor: ${COLORS.content.secondary};\n\t}\n\n\t&:hover:not(:disabled) {\n\t\tborder-color: ${COLORS.stroke.brand};\n\t\tbackground: ${COLORS.background.brandVeryLight};\n\t}\n\n\t&:disabled {\n\t\tcursor: not-allowed;\n\t\topacity: 0.5;\n\t}\n`;\n\n/**\n * Bubble-less on purpose: a stopped reply is a note about the transcript, not a\n * message in it.\n */\nexport const InterruptedNote = styled.div`\n\talign-self: flex-start;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 6px;\n\tfont-family: Inter;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tcolor: ${COLORS.content.secondary};\n\n\tsvg {\n\t\tflex-shrink: 0;\n\t\tcolor: ${COLORS.content.inactive};\n\t}\n`;\n\nexport const MessageTimestamp = styled.div`\n\talign-self: flex-end;\n\tmargin-top: -6px;\n\tfont-family: Inter;\n\tfont-size: 11px;\n\tline-height: 16px;\n\tcolor: ${COLORS.content.placeholder};\n`;\n\n/**\n * Actions under a finished assistant reply. Kept low-contrast so a row of icons\n * under every message does not compete with the answer itself.\n */\nexport const MessageActions = styled.div`\n\talign-self: flex-start;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 2px;\n\t/* Pulls back out of the scroller's row gap to land on 8px. */\n\tmargin-top: ${MESSAGE_ACTIONS_GAP_PX - MESSAGE_GAP_PX}px;\n`;\n\nexport const MessageAction = styled.button`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tgap: 4px;\n\twidth: 28px;\n\theight: 28px;\n\tpadding: 0;\n\tborder: none;\n\tborder-radius: 4px;\n\tbackground: transparent;\n\tcolor: ${COLORS.content.placeholder};\n\tfont-family: Inter;\n\tfont-size: 11px;\n\tline-height: 16px;\n\tcursor: pointer;\n\ttransition: background 0.15s ease, color 0.15s ease;\n\n\tsvg {\n\t\tflex-shrink: 0;\n\t}\n\n\t&:hover:not(:disabled) {\n\t\tbackground: ${COLORS.surface.hovered};\n\t\tcolor: ${COLORS.content.secondary};\n\t}\n\n\t&:focus-visible {\n\t\toutline: 2px solid ${COLORS.stroke.brand};\n\t\toutline-offset: 1px;\n\t}\n\n\t&:disabled {\n\t\tcursor: not-allowed;\n\t\topacity: 0.5;\n\t}\n\n\t/* Confirmation reads as success, not as another affordance. */\n\t&[data-copied='true'],\n\t&[data-copied='true']:hover {\n\t\tcolor: ${COLORS.content.positive};\n\t}\n\n\t/* A cast vote holds the brand colour, so it stays legible as chosen once the\n\t pointer moves away. */\n\t&[data-selected='true'],\n\t&[data-selected='true']:hover {\n\t\tcolor: ${COLORS.content.brand};\n\t}\n`;\n\nexport const ThinkingLabel = styled.span`\n\tfont-family: Inter;\n\tfont-size: 13px;\n\tline-height: 20px;\n\tcolor: ${COLORS.content.secondary};\n`;\n\nexport const ErrorBanner = styled.div`\n\tmargin: 0 16px;\n\tpadding: 8px 10px;\n\tborder-radius: 8px;\n\tbackground: ${COLORS.background.negative.light};\n\tcolor: ${COLORS.content.negative};\n\tfont-family: Inter;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tflex-shrink: 0;\n`;\n\nexport const InputArea = styled.div`\n\tpadding: 16px 16px 4px;\n\tflex-shrink: 0;\n`;\n\n/**\n * The quoted selection above the input. Deliberately outside `InputWrapper` so\n * it does not grow the field's focus ring, and truncated rather than wrapped —\n * a long quote must not push the input off the panel.\n */\nexport const AttachmentChip = styled.div`\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n\tmargin-bottom: 8px;\n\tpadding: 6px 8px;\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 8px;\n\tbackground: ${COLORS.background.brandVeryLight};\n\n\tsvg {\n\t\tflex-shrink: 0;\n\t}\n`;\n\nexport const AttachmentText = styled.span`\n\tflex: 1;\n\tmin-width: 0;\n\toverflow: hidden;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n\tfont-family: Inter;\n\tfont-size: 12px;\n\tline-height: 16px;\n\tcolor: ${COLORS.content.primary};\n`;\n\nexport const AttachmentRemove = styled.button`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tflex-shrink: 0;\n\twidth: 16px;\n\theight: 16px;\n\tpadding: 0;\n\tborder: none;\n\tborder-radius: 4px;\n\tbackground: transparent;\n\tcolor: ${COLORS.content.secondary};\n\tcursor: pointer;\n\n\t&:hover {\n\t\tbackground: ${COLORS.background.brandLight};\n\t}\n`;\n\nexport const InputWrapper = styled.div<{ $focused: boolean }>`\n\tbox-sizing: border-box;\n\tmin-height: 48px;\n\tdisplay: flex;\n\talign-items: flex-end;\n\tgap: 8px;\n\tpadding: 12px;\n\tbox-shadow: inset 0 0 0 1px\n\t\t${(props) => (props.$focused ? COLORS.stroke.brand : COLORS.stroke.primary)};\n\tborder-radius: 12px;\n\tbackground: ${COLORS.surface.standard};\n\ttransition: box-shadow 0.15s ease;\n\n\t&:hover {\n\t\tbox-shadow: inset 0 0 0 1px\n\t\t\t${(props) =>\n\t\t\t\tprops.$focused ? COLORS.stroke.brand : COLORS.content.inactive};\n\t}\n`;\n\nexport const MessageInput = styled.textarea`\n\tflex: 1;\n\tborder: none;\n\toutline: none;\n\tresize: none;\n\tbackground: transparent;\n\tfont-family: Inter;\n\tfont-size: 13px;\n\tline-height: 24px;\n\tcolor: ${COLORS.content.primary};\n\tmax-height: 96px;\n\tmin-height: 24px;\n\tpadding: 0;\n\n\t&::placeholder {\n\t\tcolor: ${COLORS.content.placeholder};\n\t}\n\n\t&:disabled {\n\t\tcursor: not-allowed;\n\t}\n`;\n\nexport const SendButton = styled.button<{ $active: boolean }>`\n\twidth: 24px;\n\theight: 24px;\n\tflex-shrink: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tpadding: 0;\n\tborder: none;\n\tborder-radius: 6px;\n\tbackground: ${(props) =>\n\t\tprops.$active ? COLORS.background.brand : COLORS.background.inactive};\n\tcolor: ${COLORS.content.primaryInverse};\n\tcursor: ${(props) => (props.$active ? 'pointer' : 'not-allowed')};\n\ttransition: background 0.15s ease;\n\n\t&:hover:not(:disabled) {\n\t\tbackground: ${COLORS.background.brandHovered};\n\t}\n\n\t&:focus-visible {\n\t\toutline: 2px solid ${COLORS.stroke.brand};\n\t\toutline-offset: 1px;\n\t}\n`;\n\nexport const Disclaimer = styled.div`\n\tpadding: 4px 16px 16px;\n\ttext-align: center;\n\tfont-family: Inter;\n\tfont-size: 11px;\n\tline-height: 16px;\n\tcolor: ${COLORS.content.placeholder};\n\tflex-shrink: 0;\n`;\n"],"names":["USER_BUBBLE_BACKGROUND","MESSAGE_GAP_PX","MESSAGE_ACTIONS_GAP_PX","PanelContainer","styled","COLORS","PanelHeader","HeaderAvatar","HeaderText","HeaderTitleRow","HeaderBadge","HeaderActions","IconAction","MessagesViewport","MessagesArea","ScrollFade","props","JumpToLatestButton","EmptyState","EmptyStateIcon","SuggestionList","SuggestionChip","MessageBubble","ThinkingBubble","HistoryLoader","FollowUpList","FollowUpsLabel","ToolCtaList","ToolCtaLink","FollowUpChip","InterruptedNote","MessageTimestamp","MessageActions","MessageAction","ThinkingLabel","ErrorBanner","InputArea","AttachmentChip","AttachmentText","AttachmentRemove","InputWrapper","MessageInput","SendButton","Disclaimer"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=8,g=(t,n,c)=>Math.min(Math.max(t,n),Math.max(n,c)),y=({ballPosition:t,ballSize:n,panelWidth:c,panelHeight:r,gap:f,viewport:e})=>{if(!e.width||!e.height)return{left:h,top:h,width:c,height:r};const s=Math.min(c,e.width-h*2),d=Math.min(r,e.height-h*2),m=t.x+n/2,a=t.y+n/2,o=m>e.width/2,M=a>e.height/2,u=o?t.x+n-s:t.x,x=M?t.y-f-d:t.y+n+f;return{left:g(u,h,e.width-s-h),top:g(x,h,e.height-d-h),width:s,height:d}};exports.getCopilotPanelPlacement=y;
2
+ //# sourceMappingURL=copilotPlacement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilotPlacement.js","sources":["../../../../src/components/bik-copilot/copilotPlacement.ts"],"sourcesContent":["import { CopilotBallPosition, CopilotViewport } from './model';\n\n/** Smallest gap kept between the panel and the viewport edges. */\nconst VIEWPORT_MARGIN_PX = 8;\n\nexport interface CopilotPanelPlacementOptions {\n\tballPosition: CopilotBallPosition;\n\tballSize: number;\n\tpanelWidth: number;\n\tpanelHeight: number;\n\tgap: number;\n\tviewport: CopilotViewport;\n}\n\nexport interface CopilotPanelPlacement {\n\tleft: number;\n\ttop: number;\n\twidth: number;\n\theight: number;\n}\n\nconst clamp = (value: number, min: number, max: number) =>\n\tMath.min(Math.max(value, min), Math.max(min, max));\n\n/**\n * Places the panel next to the ball, on whichever side has room.\n *\n * The panel opens towards the middle of the screen: a ball parked bottom-right\n * gets a panel above and to its left, a ball parked top-left gets one below and\n * to its right. The result is always clamped inside the viewport, and the panel\n * shrinks on viewports too small to hold it at full size.\n */\nexport const getCopilotPanelPlacement = ({\n\tballPosition,\n\tballSize,\n\tpanelWidth,\n\tpanelHeight,\n\tgap,\n\tviewport,\n}: CopilotPanelPlacementOptions): CopilotPanelPlacement => {\n\tif (!viewport.width || !viewport.height) {\n\t\treturn {\n\t\t\tleft: VIEWPORT_MARGIN_PX,\n\t\t\ttop: VIEWPORT_MARGIN_PX,\n\t\t\twidth: panelWidth,\n\t\t\theight: panelHeight,\n\t\t};\n\t}\n\n\tconst width = Math.min(panelWidth, viewport.width - VIEWPORT_MARGIN_PX * 2);\n\tconst height = Math.min(\n\t\tpanelHeight,\n\t\tviewport.height - VIEWPORT_MARGIN_PX * 2,\n\t);\n\n\tconst ballCenterX = ballPosition.x + ballSize / 2;\n\tconst ballCenterY = ballPosition.y + ballSize / 2;\n\tconst opensLeftwards = ballCenterX > viewport.width / 2;\n\tconst opensUpwards = ballCenterY > viewport.height / 2;\n\n\t// Align the panel's near edge with the ball's, then push it towards the\n\t// screen centre.\n\tconst preferredLeft = opensLeftwards\n\t\t? ballPosition.x + ballSize - width\n\t\t: ballPosition.x;\n\tconst preferredTop = opensUpwards\n\t\t? ballPosition.y - gap - height\n\t\t: ballPosition.y + ballSize + gap;\n\n\treturn {\n\t\tleft: clamp(\n\t\t\tpreferredLeft,\n\t\t\tVIEWPORT_MARGIN_PX,\n\t\t\tviewport.width - width - VIEWPORT_MARGIN_PX,\n\t\t),\n\t\ttop: clamp(\n\t\t\tpreferredTop,\n\t\t\tVIEWPORT_MARGIN_PX,\n\t\t\tviewport.height - height - VIEWPORT_MARGIN_PX,\n\t\t),\n\t\twidth,\n\t\theight,\n\t};\n};\n"],"names":["VIEWPORT_MARGIN_PX","clamp","value","min","max","getCopilotPanelPlacement","ballPosition","ballSize","panelWidth","panelHeight","gap","viewport","width","height","ballCenterX","ballCenterY","opensLeftwards","opensUpwards","preferredLeft","preferredTop"],"mappings":"gFAGA,MAAMA,EAAqB,EAkBrBC,EAAQ,CAACC,EAAeC,EAAaC,IAC1C,KAAK,IAAI,KAAK,IAAIF,EAAOC,CAAG,EAAG,KAAK,IAAIA,EAAKC,CAAG,CAAC,EAUrCC,EAA2B,CAAC,CACxC,aAAAC,EACA,SAAAC,EACA,WAAAC,EACA,YAAAC,EACA,IAAAC,EACA,SAAAC,CACD,IAA2D,CAC1D,GAAI,CAACA,EAAS,OAAS,CAACA,EAAS,OAChC,MAAO,CACN,KAAMX,EACN,IAAKA,EACL,MAAOQ,EACP,OAAQC,CAAA,EAIV,MAAMG,EAAQ,KAAK,IAAIJ,EAAYG,EAAS,MAAQX,EAAqB,CAAC,EACpEa,EAAS,KAAK,IACnBJ,EACAE,EAAS,OAASX,EAAqB,CAAA,EAGlCc,EAAcR,EAAa,EAAIC,EAAW,EAC1CQ,EAAcT,EAAa,EAAIC,EAAW,EAC1CS,EAAiBF,EAAcH,EAAS,MAAQ,EAChDM,EAAeF,EAAcJ,EAAS,OAAS,EAI/CO,EAAgBF,EACnBV,EAAa,EAAIC,EAAWK,EAC5BN,EAAa,EACVa,EAAeF,EAClBX,EAAa,EAAII,EAAMG,EACvBP,EAAa,EAAIC,EAAWG,EAE/B,MAAO,CACN,KAAMT,EACLiB,EACAlB,EACAW,EAAS,MAAQC,EAAQZ,CAAA,EAE1B,IAAKC,EACJkB,EACAnB,EACAW,EAAS,OAASE,EAASb,CAAA,EAE5B,MAAAY,EACA,OAAAC,CAAA,CAEF"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="Please answer my previous question again — give a fresh, reworded response, not the same text as before.",o=t=>t.trim()===e;exports.COPILOT_REGENERATE_PROMPT=e;exports.isCopilotRegeneratePrompt=o;
2
+ //# sourceMappingURL=copilotRegenerate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilotRegenerate.js","sources":["../../../../src/components/bik-copilot/copilotRegenerate.ts"],"sourcesContent":["/**\n * The prompt a regenerate sends in place of the reader's own words.\n *\n * Regenerating is an ordinary `/bik-ai/copilot-bikchatbot` turn — the endpoint\n * needs a prompt on every call — so it carries this sentinel instead. It is sent\n * with `previous_response_id`, so the model already has the question and the last\n * answer in context; the wording asks it to answer again *differently* rather\n * than replay the same text. It is stored like any other turn, both by the\n * backend and in IndexedDB, and the transcript hides it when rendering rather\n * than trying to keep it out of storage — one filter covers the live turn, a\n * restored session and a page fetched from history.\n */\nexport const COPILOT_REGENERATE_PROMPT =\n\t'Please answer my previous question again — give a fresh, reworded response, ' +\n\t'not the same text as before.';\n\n/**\n * Whether a message is a regenerate request rather than something a reader\n * typed, and so must not be rendered.\n *\n * Matched on content alone, without checking the role: history rows are mapped\n * onto a role by pattern-matching the backend's `owner`, so a regenerate row\n * that lands on the wrong side must still stay hidden.\n */\nexport const isCopilotRegeneratePrompt = (content: string): boolean =>\n\tcontent.trim() === COPILOT_REGENERATE_PROMPT;\n"],"names":["COPILOT_REGENERATE_PROMPT","isCopilotRegeneratePrompt","content"],"mappings":"gFAYO,MAAMA,EACZ,2GAWYC,EAA6BC,GACzCA,EAAQ,SAAWF"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=(e,i)=>{const t=`"${e.trim()}"`,o=i.trim();return o?`About ${t} on this page: ${o}`:`Tell me about ${t} on this page.`};exports.buildCopilotSelectionPrompt=l;
2
+ //# sourceMappingURL=copilotSelectionPrompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilotSelectionPrompt.js","sources":["../../../../src/components/bik-copilot/copilotSelectionPrompt.ts"],"sourcesContent":["/**\n * The prompt a turn carries when the merchant started it from something they\n * selected on the page.\n *\n * `/bik-ai/copilot-chatbot` takes `user_query` and nothing else that could hold\n * context, so the quoted text has to be part of the question itself. The page is\n * referred to without naming it because the request already carries `route` —\n * the quote is the part the merchant could not have described in words.\n *\n * The selection arrives already whitespace-collapsed and length-capped from\n * `TextSelectionAsk`, so this only quotes it.\n */\nexport const buildCopilotSelectionPrompt = (\n\tselection: string,\n\tquestion: string,\n): string => {\n\tconst quoted = `\"${selection.trim()}\"`;\n\tconst trimmedQuestion = question.trim();\n\treturn trimmedQuestion\n\t\t? `About ${quoted} on this page: ${trimmedQuestion}`\n\t\t: `Tell me about ${quoted} on this page.`;\n};\n"],"names":["buildCopilotSelectionPrompt","selection","question","quoted","trimmedQuestion"],"mappings":"gFAYO,MAAMA,EAA8B,CAC1CC,EACAC,IACY,CACZ,MAAMC,EAAS,IAAIF,EAAU,KAAA,CAAM,IAC7BG,EAAkBF,EAAS,KAAA,EACjC,OAAOE,EACJ,SAASD,CAAM,kBAAkBC,CAAe,GAChD,iBAAiBD,CAAM,gBAC3B"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("idb-keyval"),_=require("./copilotMessagesClient.js"),a=i.createStore("bik-copilot","sessions"),p=1440*60*1e3,f=_.COPILOT_HISTORY_PAGE_SIZE,d=(t,e)=>`${e}:${t}`,r=async(t,e)=>{try{return await t()}catch{return e}},m=()=>typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`copilot-${Date.now()}-${Math.floor(Math.random()*1e6)}`,w=(t,e,n={})=>{const o=Date.now();return{sessionId:e,route:t,createdAt:o,updatedAt:o,expiresAt:o+p,messages:[],...n}},S=(t,e=Date.now())=>(t.expiresAt??t.updatedAt+p)<=e,I=(t,e)=>r(async()=>{const n=d(t,e),o=await i.get(n,a);return o?S(o)?(await i.del(n,a),null):o:null},null),A=t=>r(()=>i.set(d(t.route??"",t.sessionId),t,a),void 0),g=(t,e)=>r(()=>i.del(d(t,e),a),void 0),y=()=>r(async()=>(await i.keys(a)).filter(e=>typeof e=="string"),[]),O=t=>r(async()=>{const e=Date.now(),n=await y();await Promise.all(n.map(async o=>{const l=await i.get(o,a);if(!l)return;(t===void 0?S(l,e):l.updatedAt+t<=e)&&await i.del(o,a)}))},void 0),D=({route:t,storeId:e})=>r(async()=>{const n=`:${t}`,o=await y();return(await Promise.all(o.filter(s=>s.endsWith(n)).map(s=>i.get(s,a)))).filter(s=>!!s).filter(s=>!e||!s.storeId||s.storeId===e).filter(s=>!S(s)).sort((s,c)=>c.updatedAt-s.updatedAt)[0]?.sessionId??null},null),K=async({route:t,sessionId:e,messages:n,previousResponseId:o,storeId:l,agent:u})=>{const s=await I(t,e),c=Date.now(),E={...s??w(t,e),sessionId:e,route:t,updatedAt:c,expiresAt:c+p,messages:n.slice(-f).map(T=>{const C={...T};return delete C.isStreaming,C}),previousResponseId:o,storeId:l,agent:u};await A(E)};exports.COPILOT_SESSION_TTL_MS=p;exports.MAX_PERSISTED_MESSAGES=f;exports.copilotSessionKey=d;exports.createCopilotSession=w;exports.createCopilotSessionId=m;exports.deleteCopilotSession=g;exports.findLatestCopilotSessionId=D;exports.isCopilotSessionExpired=S;exports.listCopilotSessionKeys=y;exports.loadCopilotSession=I;exports.persistCopilotTurn=K;exports.pruneCopilotSessions=O;exports.saveCopilotSession=A;
2
+ //# sourceMappingURL=copilotDb.js.map