@bikdotai/bik-component-library 0.0.868-beta.3 → 0.0.868-beta.5

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 (249) hide show
  1. package/dist/cjs/components/bik-copilot/BIKCopilot.js +2 -0
  2. package/dist/cjs/components/bik-copilot/BIKCopilot.js.map +1 -0
  3. package/dist/cjs/components/bik-copilot/ControlledCopilot.js +2 -0
  4. package/dist/cjs/components/bik-copilot/ControlledCopilot.js.map +1 -0
  5. package/dist/cjs/components/bik-copilot/ControlledCopilot.styled.js +27 -0
  6. package/dist/cjs/components/bik-copilot/ControlledCopilot.styled.js.map +1 -0
  7. package/dist/cjs/components/bik-copilot/CopilotBall.js +2 -0
  8. package/dist/cjs/components/bik-copilot/CopilotBall.js.map +1 -0
  9. package/dist/cjs/components/bik-copilot/CopilotBall.styled.js +42 -0
  10. package/dist/cjs/components/bik-copilot/CopilotBall.styled.js.map +1 -0
  11. package/dist/cjs/components/bik-copilot/CopilotFeedbackModal.js +2 -0
  12. package/dist/cjs/components/bik-copilot/CopilotFeedbackModal.js.map +1 -0
  13. package/dist/cjs/components/bik-copilot/CopilotFeedbackModal.styled.js +108 -0
  14. package/dist/cjs/components/bik-copilot/CopilotFeedbackModal.styled.js.map +1 -0
  15. package/dist/cjs/components/bik-copilot/CopilotPanel.js +2 -0
  16. package/dist/cjs/components/bik-copilot/CopilotPanel.js.map +1 -0
  17. package/dist/cjs/components/bik-copilot/CopilotPanel.styled.js +534 -0
  18. package/dist/cjs/components/bik-copilot/CopilotPanel.styled.js.map +1 -0
  19. package/dist/cjs/components/bik-copilot/copilotPlacement.js +2 -0
  20. package/dist/cjs/components/bik-copilot/copilotPlacement.js.map +1 -0
  21. package/dist/cjs/components/bik-copilot/copilotRegenerate.js +2 -0
  22. package/dist/cjs/components/bik-copilot/copilotRegenerate.js.map +1 -0
  23. package/dist/cjs/components/bik-copilot/services/copilotDb.js +2 -0
  24. package/dist/cjs/components/bik-copilot/services/copilotDb.js.map +1 -0
  25. package/dist/cjs/components/bik-copilot/services/copilotFeedbackClient.js +2 -0
  26. package/dist/cjs/components/bik-copilot/services/copilotFeedbackClient.js.map +1 -0
  27. package/dist/cjs/components/bik-copilot/services/copilotIcebreakersClient.js +2 -0
  28. package/dist/cjs/components/bik-copilot/services/copilotIcebreakersClient.js.map +1 -0
  29. package/dist/cjs/components/bik-copilot/services/copilotMessagesClient.js +2 -0
  30. package/dist/cjs/components/bik-copilot/services/copilotMessagesClient.js.map +1 -0
  31. package/dist/cjs/components/bik-copilot/services/copilotPageSession.js +2 -0
  32. package/dist/cjs/components/bik-copilot/services/copilotPageSession.js.map +1 -0
  33. package/dist/cjs/components/bik-copilot/services/copilotSseParser.js +7 -0
  34. package/dist/cjs/components/bik-copilot/services/copilotSseParser.js.map +1 -0
  35. package/dist/cjs/components/bik-copilot/services/copilotStreamClient.js +2 -0
  36. package/dist/cjs/components/bik-copilot/services/copilotStreamClient.js.map +1 -0
  37. package/dist/cjs/components/bik-copilot/useCopilotIcebreakers.js +2 -0
  38. package/dist/cjs/components/bik-copilot/useCopilotIcebreakers.js.map +1 -0
  39. package/dist/cjs/components/bik-copilot/useCopilotStreamChat.js +2 -0
  40. package/dist/cjs/components/bik-copilot/useCopilotStreamChat.js.map +1 -0
  41. package/dist/cjs/components/bik-copilot/useDraggableFloater.js +2 -0
  42. package/dist/cjs/components/bik-copilot/useDraggableFloater.js.map +1 -0
  43. package/dist/cjs/components/bik-copilot/utils/markdown.js +4 -0
  44. package/dist/cjs/components/bik-copilot/utils/markdown.js.map +1 -0
  45. package/dist/cjs/components/bik-copilot/utils/toolCtas.js +2 -0
  46. package/dist/cjs/components/bik-copilot/utils/toolCtas.js.map +1 -0
  47. package/dist/cjs/index.js +1 -1
  48. package/dist/esm/components/ProgressChecklist/ProgressChecklist.style.d.ts +24 -59
  49. package/dist/esm/components/QueryBuilder/components/Connectors/Connector.styled.d.ts +1 -4
  50. package/dist/esm/components/QueryBuilder/components/QueryBuilderNode/Property/PropertyNode.styled.d.ts +1 -4
  51. package/dist/esm/components/QueryBuilder/components/QueryBuilderNode/Property/PropertyNodeUIWrapper.styled.d.ts +3 -10
  52. package/dist/esm/components/QueryBuilder/components/QueryBuilderNodes.styled.d.ts +2 -7
  53. package/dist/esm/components/TablePagination/TablePagination.styled.d.ts +3 -8
  54. package/dist/esm/components/TablePagination/TablePaginationCard.d.ts +2 -4
  55. package/dist/esm/components/TypographyStyle.d.ts +62 -141
  56. package/dist/esm/components/WhatsAppTextEditor/AIRephrase.styled.d.ts +2 -5
  57. package/dist/esm/components/WhatsAppTextEditor/CustomEditor.styled.d.ts +7 -20
  58. package/dist/esm/components/WhatsAppTextEditor/WhatsAppTextEditorHeader.d.ts +1 -3
  59. package/dist/esm/components/access-token-troubleshoot-dialog/AccessTokenTroubleshootDialog.styles.d.ts +9 -26
  60. package/dist/esm/components/accordion/Accordion.style.d.ts +4 -10
  61. package/dist/esm/components/action-button/ActionButton.styled.d.ts +2 -5
  62. package/dist/esm/components/adbanner/Banner.styled.d.ts +20 -88
  63. package/dist/esm/components/add-variableV2/AddVariableBox.styled.d.ts +1 -4
  64. package/dist/esm/components/add-variableV2/AddVariableV2.styled.d.ts +4 -9
  65. package/dist/esm/components/agent-builder/AgentBuilder.styled.d.ts +186 -328
  66. package/dist/esm/components/agent-listing/AgentListing.styled.d.ts +49 -88
  67. package/dist/esm/components/alerts/Alert.styled.d.ts +5 -11
  68. package/dist/esm/components/analytics-card/AnalyticsCard.styled.d.ts +4 -8
  69. package/dist/esm/components/analytics-chips-and-dropdowns/CommonStyles.d.ts +18 -27
  70. package/dist/esm/components/analytics-chips-and-dropdowns/chart/ComparisonBarChart/ComparisonBarChart.styled.d.ts +11 -26
  71. package/dist/esm/components/analytics-chips-and-dropdowns/chart/FunnelChart/FunnelChart.styled.d.ts +11 -26
  72. package/dist/esm/components/analytics-chips-and-dropdowns/chart/HorizontalBarGraph/HorizontalGraph.styles.d.ts +2 -5
  73. package/dist/esm/components/analytics-chips-and-dropdowns/chart/LineChart/LineChart.styled.d.ts +5 -12
  74. package/dist/esm/components/analytics-chips-and-dropdowns/chart/StackedBarChart/StackedBarChart.styles.d.ts +3 -8
  75. package/dist/esm/components/analytics-chips-and-dropdowns/chart/VerticalBarAndLinearGraph/VerticalBarAndLinearGraph.styles.d.ts +6 -17
  76. package/dist/esm/components/analytics-chips-and-dropdowns/chart/VerticalBarGraph/VerticalGraph.styles.d.ts +2 -5
  77. package/dist/esm/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapStyled.d.ts +11 -28
  78. package/dist/esm/components/analytics-chips-and-dropdowns/chart/heatmap/HeatMapVertical.d.ts +1 -3
  79. package/dist/esm/components/analytics-chips-and-dropdowns/chart/linearChipGroupedChart/LinearChipGroupedChart.styled.d.ts +7 -18
  80. package/dist/esm/components/analytics-chips-and-dropdowns/chart/scoreBlock/ScoreBlock.styled.d.ts +7 -18
  81. package/dist/esm/components/avatar/Avatar.styled.d.ts +2 -4
  82. package/dist/esm/components/bik-chatbot/components/ChatWindow.d.ts +2 -4
  83. package/dist/esm/components/bik-copilot/BIKCopilot.d.ts +31 -0
  84. package/dist/esm/components/bik-copilot/BIKCopilot.js +118 -0
  85. package/dist/esm/components/bik-copilot/BIKCopilot.js.map +1 -0
  86. package/dist/esm/components/bik-copilot/ControlledCopilot.d.ts +14 -0
  87. package/dist/esm/components/bik-copilot/ControlledCopilot.js +174 -0
  88. package/dist/esm/components/bik-copilot/ControlledCopilot.js.map +1 -0
  89. package/dist/esm/components/bik-copilot/ControlledCopilot.styled.d.ts +7 -0
  90. package/dist/esm/components/bik-copilot/ControlledCopilot.styled.js +31 -0
  91. package/dist/esm/components/bik-copilot/ControlledCopilot.styled.js.map +1 -0
  92. package/dist/esm/components/bik-copilot/CopilotBall.d.ts +13 -0
  93. package/dist/esm/components/bik-copilot/CopilotBall.js +50 -0
  94. package/dist/esm/components/bik-copilot/CopilotBall.js.map +1 -0
  95. package/dist/esm/components/bik-copilot/CopilotBall.styled.d.ts +9 -0
  96. package/dist/esm/components/bik-copilot/CopilotBall.styled.js +46 -0
  97. package/dist/esm/components/bik-copilot/CopilotBall.styled.js.map +1 -0
  98. package/dist/esm/components/bik-copilot/CopilotFeedbackModal.d.ts +29 -0
  99. package/dist/esm/components/bik-copilot/CopilotFeedbackModal.js +73 -0
  100. package/dist/esm/components/bik-copilot/CopilotFeedbackModal.js.map +1 -0
  101. package/dist/esm/components/bik-copilot/CopilotFeedbackModal.styled.d.ts +12 -0
  102. package/dist/esm/components/bik-copilot/CopilotFeedbackModal.styled.js +122 -0
  103. package/dist/esm/components/bik-copilot/CopilotFeedbackModal.styled.js.map +1 -0
  104. package/dist/esm/components/bik-copilot/CopilotPanel.d.ts +9 -0
  105. package/dist/esm/components/bik-copilot/CopilotPanel.js +536 -0
  106. package/dist/esm/components/bik-copilot/CopilotPanel.js.map +1 -0
  107. package/dist/esm/components/bik-copilot/CopilotPanel.styled.d.ts +67 -0
  108. package/dist/esm/components/bik-copilot/CopilotPanel.styled.js +573 -0
  109. package/dist/esm/components/bik-copilot/CopilotPanel.styled.js.map +1 -0
  110. package/dist/esm/components/bik-copilot/copilotPlacement.d.ts +24 -0
  111. package/dist/esm/components/bik-copilot/copilotPlacement.js +38 -0
  112. package/dist/esm/components/bik-copilot/copilotPlacement.js.map +1 -0
  113. package/dist/esm/components/bik-copilot/copilotRegenerate.d.ts +22 -0
  114. package/dist/esm/components/bik-copilot/copilotRegenerate.js +6 -0
  115. package/dist/esm/components/bik-copilot/copilotRegenerate.js.map +1 -0
  116. package/dist/esm/components/bik-copilot/index.d.ts +19 -0
  117. package/dist/esm/components/bik-copilot/model.d.ts +804 -0
  118. package/dist/esm/components/bik-copilot/services/copilotDb.d.ts +90 -0
  119. package/dist/esm/components/bik-copilot/services/copilotDb.js +96 -0
  120. package/dist/esm/components/bik-copilot/services/copilotDb.js.map +1 -0
  121. package/dist/esm/components/bik-copilot/services/copilotFeedbackClient.d.ts +15 -0
  122. package/dist/esm/components/bik-copilot/services/copilotFeedbackClient.js +55 -0
  123. package/dist/esm/components/bik-copilot/services/copilotFeedbackClient.js.map +1 -0
  124. package/dist/esm/components/bik-copilot/services/copilotIcebreakersClient.d.ts +11 -0
  125. package/dist/esm/components/bik-copilot/services/copilotIcebreakersClient.js +54 -0
  126. package/dist/esm/components/bik-copilot/services/copilotIcebreakersClient.js.map +1 -0
  127. package/dist/esm/components/bik-copilot/services/copilotMessagesClient.d.ts +23 -0
  128. package/dist/esm/components/bik-copilot/services/copilotMessagesClient.js +78 -0
  129. package/dist/esm/components/bik-copilot/services/copilotMessagesClient.js.map +1 -0
  130. package/dist/esm/components/bik-copilot/services/copilotPageSession.d.ts +37 -0
  131. package/dist/esm/components/bik-copilot/services/copilotPageSession.js +35 -0
  132. package/dist/esm/components/bik-copilot/services/copilotPageSession.js.map +1 -0
  133. package/dist/esm/components/bik-copilot/services/copilotSseParser.d.ts +22 -0
  134. package/dist/esm/components/bik-copilot/services/copilotSseParser.js +52 -0
  135. package/dist/esm/components/bik-copilot/services/copilotSseParser.js.map +1 -0
  136. package/dist/esm/components/bik-copilot/services/copilotStreamClient.d.ts +35 -0
  137. package/dist/esm/components/bik-copilot/services/copilotStreamClient.js +110 -0
  138. package/dist/esm/components/bik-copilot/services/copilotStreamClient.js.map +1 -0
  139. package/dist/esm/components/bik-copilot/useCopilotIcebreakers.d.ts +17 -0
  140. package/dist/esm/components/bik-copilot/useCopilotIcebreakers.js +60 -0
  141. package/dist/esm/components/bik-copilot/useCopilotIcebreakers.js.map +1 -0
  142. package/dist/esm/components/bik-copilot/useCopilotStreamChat.d.ts +20 -0
  143. package/dist/esm/components/bik-copilot/useCopilotStreamChat.js +377 -0
  144. package/dist/esm/components/bik-copilot/useCopilotStreamChat.js.map +1 -0
  145. package/dist/esm/components/bik-copilot/useDraggableFloater.d.ts +9 -0
  146. package/dist/esm/components/bik-copilot/useDraggableFloater.js +118 -0
  147. package/dist/esm/components/bik-copilot/useDraggableFloater.js.map +1 -0
  148. package/dist/esm/components/bik-copilot/utils/markdown.d.ts +1 -0
  149. package/dist/esm/components/bik-copilot/utils/markdown.js +48 -0
  150. package/dist/esm/components/bik-copilot/utils/markdown.js.map +1 -0
  151. package/dist/esm/components/bik-copilot/utils/toolCtas.d.ts +6 -0
  152. package/dist/esm/components/bik-copilot/utils/toolCtas.js +27 -0
  153. package/dist/esm/components/bik-copilot/utils/toolCtas.js.map +1 -0
  154. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2Styles.d.ts +18 -49
  155. package/dist/esm/components/bik-layout/CommonStyles.d.ts +28 -88
  156. package/dist/esm/components/bik-layout/SidebarStyles.d.ts +7 -17
  157. package/dist/esm/components/button/Button.styled.d.ts +2 -4
  158. package/dist/esm/components/button/themes.d.ts +2 -16
  159. package/dist/esm/components/buttonGroup/ButtonGroupStyle.d.ts +4 -9
  160. package/dist/esm/components/card-selection-modal/CardSelectionModal.styled.d.ts +2 -7
  161. package/dist/esm/components/card-selector/CardSelector.styled.d.ts +3 -8
  162. package/dist/esm/components/carousel-preview/CarouselPreview.style.d.ts +4 -9
  163. package/dist/esm/components/carousel-secondary/CarouselSecondary.style.d.ts +11 -23
  164. package/dist/esm/components/channel-playground/shell/TestingPlayground.style.d.ts +18 -74
  165. package/dist/esm/components/checkBox/CheckBox.styled.d.ts +4 -9
  166. package/dist/esm/components/checkList/CheckList.styled.d.ts +1 -4
  167. package/dist/esm/components/code-block/CodeBlock.styled.d.ts +20 -43
  168. package/dist/esm/components/colourInput/ColourInput.styled.d.ts +2 -7
  169. package/dist/esm/components/connected-app-dialog/ConnectedAppDialog.styled.d.ts +16 -49
  170. package/dist/esm/components/country-code-picker/CountryCodePicker.styled.d.ts +3 -8
  171. package/dist/esm/components/country-code-picker/CountryPicker.styled.d.ts +3 -8
  172. package/dist/esm/components/curtain/Curtain.styled.d.ts +5 -11
  173. package/dist/esm/components/custom-date-time/CustomDateTime.styled.d.ts +1 -4
  174. package/dist/esm/components/dashboard-review-popup/DashboardReviewPopUp.styled.d.ts +2 -7
  175. package/dist/esm/components/dashboard-review-popup/components/FiveStar.styled.d.ts +2 -7
  176. package/dist/esm/components/dashboard-review-popup/components/Form.styled.d.ts +7 -20
  177. package/dist/esm/components/data-source-panel/DataSourcePanel.style.d.ts +4 -13
  178. package/dist/esm/components/datePicker/DatePicker.styled.d.ts +15 -22
  179. package/dist/esm/components/datePicker/DatePickerWrapper.styled.d.ts +4 -8
  180. package/dist/esm/components/discount-modal/DiscountModal.styled.d.ts +6 -17
  181. package/dist/esm/components/discount-modal/DynamicCoupon/DynamicCoupon.styled.d.ts +8 -23
  182. package/dist/esm/components/dropdown/ChipDropdown.d.ts +2 -4
  183. package/dist/esm/components/dropdown/Common.styled.d.ts +6 -15
  184. package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.styled.d.ts +5 -12
  185. package/dist/esm/components/dropdown/OpenedDropdown/components/description/Description.styled.d.ts +2 -5
  186. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/FreeFormMenu.styled.d.ts +1 -4
  187. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.styled.d.ts +4 -18
  188. package/dist/esm/components/dropdown/OpenedDropdown/components/multiSelect/MultiSelectDropdownBottomBar.styled.d.ts +1 -4
  189. package/dist/esm/components/dropdown-button/DropdownButton.style.d.ts +5 -9
  190. package/dist/esm/components/dual-icon-button/DualIconButton.styled.d.ts +5 -12
  191. package/dist/esm/components/file-uploader/FileUploaderStyle.d.ts +4 -9
  192. package/dist/esm/components/floating-action-button/FloatingActionButton.styles.d.ts +13 -24
  193. package/dist/esm/components/half-doughnut-chart/HalfDoughnutChart.styled.d.ts +10 -29
  194. package/dist/esm/components/icon-button/IconButton.styled.d.ts +2 -4
  195. package/dist/esm/components/input/Input.styled.d.ts +29 -114
  196. package/dist/esm/components/keywords-input/KeywordsInput.styled.d.ts +1 -4
  197. package/dist/esm/components/list-item/ListItem.styled.d.ts +2 -4
  198. package/dist/esm/components/list-item/themes.d.ts +1 -1
  199. package/dist/esm/components/modals/modal.styled.d.ts +7 -16
  200. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.styled.d.ts +22 -60
  201. package/dist/esm/components/navigation-hyperlink/NavigationHyperlink.d.ts +1 -3
  202. package/dist/esm/components/pagination/Pagination.styled.d.ts +1 -4
  203. package/dist/esm/components/plans/DurationSelectorStyles.d.ts +1 -4
  204. package/dist/esm/components/plans/SubscriptionPlanSelector.d.ts +2 -6
  205. package/dist/esm/components/plans/SubscriptionPlanStyled.d.ts +4 -9
  206. package/dist/esm/components/postPicker/PostPicker.styled.d.ts +13 -43
  207. package/dist/esm/components/product-picker/ProductPicker.styled.d.ts +2 -7
  208. package/dist/esm/components/product-picker-v2/style.d.ts +25 -82
  209. package/dist/esm/components/progress-bar/ProgressBarComponent.d.ts +2 -5
  210. package/dist/esm/components/radioButton/RadioButton.styled.d.ts +3 -8
  211. package/dist/esm/components/radioList/RadioList.styled.d.ts +1 -4
  212. package/dist/esm/components/shimmer/ShimmerComponent/ShimmerStyled.d.ts +4 -9
  213. package/dist/esm/components/side-modal/SideModal.style.d.ts +12 -25
  214. package/dist/esm/components/spinner/Spinner.d.ts +2 -4
  215. package/dist/esm/components/states/StateComponent.styled.d.ts +9 -20
  216. package/dist/esm/components/stepper/Stepper.styled.d.ts +4 -10
  217. package/dist/esm/components/switch/Switch.d.ts +6 -12
  218. package/dist/esm/components/tabs/Tabs.styles.d.ts +9 -30
  219. package/dist/esm/components/tag/Tag.styled.d.ts +2 -4
  220. package/dist/esm/components/template-context-mapper/Badge/index.d.ts +2 -5
  221. package/dist/esm/components/template-context-mapper/modalElements/EditMediaV2.style.d.ts +5 -14
  222. package/dist/esm/components/template-context-mapper/modalElements/VariableConnector.d.ts +2 -4
  223. package/dist/esm/components/template-context-mapper/modalElements/VariableConnectorsPanel.d.ts +2 -7
  224. package/dist/esm/components/template-context-mapper/styles/TemplateAnalyticsStyles.d.ts +6 -24
  225. package/dist/esm/components/template-context-mapper/utils/TemplateConstants.d.ts +8 -16
  226. package/dist/esm/components/template-preview/EmailTemplatePreview.styled.d.ts +10 -23
  227. package/dist/esm/components/template-preview/RCS/RCSPreview.styled.d.ts +20 -70
  228. package/dist/esm/components/template-preview/SMS/SMSBubble.d.ts +2 -7
  229. package/dist/esm/components/template-preview/SmsTemplatePreview.styled.d.ts +10 -27
  230. package/dist/esm/components/template-preview/TemplatePreview.styled.d.ts +1 -4
  231. package/dist/esm/components/template-preview/WhatsApp/ChatHeader.style.d.ts +5 -16
  232. package/dist/esm/components/template-preview/WhatsApp/ChatUI.style.d.ts +11 -53
  233. package/dist/esm/components/template-preview/WhatsApp/ChatUiV2.d.ts +1 -3
  234. package/dist/esm/components/template-preview/WhatsApp/LimitedTimeOffer/LimitedTimeOffer.index.d.ts +3 -9
  235. package/dist/esm/components/template-preview/webpush/WebpushPreview.styled.d.ts +1 -4
  236. package/dist/esm/components/testimonial-card/TestimonialCard.style.d.ts +11 -30
  237. package/dist/esm/components/thumbnail/Thumbnail.styled.d.ts +2 -4
  238. package/dist/esm/components/toaster/Toaster.styled.d.ts +2 -4
  239. package/dist/esm/components/unsatisfactory-response-list/UnsatisfactoryCountIntentWiseModal.style.d.ts +1 -4
  240. package/dist/esm/components/unsatisfactory-response-list/UnsatisfactoryResponseList.style.d.ts +1 -4
  241. package/dist/esm/components/variable-picker-v3/styles.d.ts +6 -15
  242. package/dist/esm/components/vertical-full-screen-modal/styles.d.ts +6 -15
  243. package/dist/esm/components/whats-new/WhatsNew.styles.d.ts +7 -18
  244. package/dist/esm/editor/BikEditor.styles.d.ts +7 -18
  245. package/dist/esm/editor/extensions/editorDropdown.styles.d.ts +12 -47
  246. package/dist/esm/index.d.ts +1 -0
  247. package/dist/esm/index.js +820 -761
  248. package/dist/esm/index.js.map +1 -1
  249. package/package.json +3 -3
@@ -1,8 +1,6 @@
1
1
  import { AVATAR_BACKGROUND, AVATAR_TYPES, SIZE } from './AvatarHelper';
2
- export declare const AvatarStyle: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Merged<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
3
- style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars | undefined;
4
- }, {
2
+ export declare const AvatarStyle: import('styled-components').StyledComponent<"div", any, {
5
3
  size: SIZE;
6
4
  background: AVATAR_BACKGROUND;
7
5
  type: AVATAR_TYPES;
8
- }>> & string;
6
+ }, never>;
@@ -1,11 +1,9 @@
1
1
  import { default as React } from 'react';
2
2
  import { ChatWindowProps } from '../types';
3
- export declare const CustomGradientText: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Merged<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "style"> & {
4
- style?: React.CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars | undefined;
5
- }, {
3
+ export declare const CustomGradientText: import('styled-components').StyledComponent<"span", any, {
6
4
  colors?: string | undefined;
7
5
  angle?: number | undefined;
8
- }>> & string;
6
+ }, never>;
9
7
  export type { ChatState } from '../types';
10
8
  interface ChatWindowWithHeightProps extends ChatWindowProps {
11
9
  chatWindowHeight?: string | number;
@@ -0,0 +1,31 @@
1
+ import { default as React } from 'react';
2
+ import { BIKCopilotProps } from './model';
3
+ /**
4
+ * The copilot ball and panel wired to the streaming `/bik-ai/copilot-bikchatbot`
5
+ * endpoint, with the transcript persisted in IndexedDB and route-aware ice
6
+ * breakers from `/bik-ai/copilot-icebreakers`.
7
+ *
8
+ * Chunks arrive as `STREAM` events and are appended live; the final `TEXT` event
9
+ * replaces the bubble with the authoritative full message and carries the
10
+ * `responseId` that threads the next turn. A session id is created on first use
11
+ * and restored on reload, so a refresh resumes the same conversation. The
12
+ * header's reset button starts a new session id and a new OpenAI thread.
13
+ *
14
+ * Ice breakers are fetched for the current `agent` + `route` the first time the
15
+ * panel is opened, and refetched when the route changes.
16
+ *
17
+ * ```tsx
18
+ * <BIKCopilot
19
+ * baseUrl={AI_BACKEND_URL}
20
+ * getAuthToken={() => firebaseUser.getIdToken()}
21
+ * headers={{ 'bik-referer': 'dashboard' }}
22
+ * storeId={storeId}
23
+ * route={currentRoute}
24
+ * title="Copilot"
25
+ * badge="New"
26
+ * subtitle="Way smarter, wildly more capable"
27
+ * />
28
+ * ```
29
+ */
30
+ export declare const BIKCopilot: React.FC<BIKCopilotProps>;
31
+ export default BIKCopilot;
@@ -0,0 +1,118 @@
1
+ import { jsx as _ } from "react/jsx-runtime";
2
+ import { useState as $, useCallback as s } from "react";
3
+ import { ControlledCopilot as A } from "./ControlledCopilot.js";
4
+ import { useCopilotIcebreakers as I } from "./useCopilotIcebreakers.js";
5
+ import { useCopilotStreamChat as T } from "./useCopilotStreamChat.js";
6
+ const te = ({
7
+ // Transport + turn config
8
+ baseUrl: o,
9
+ endpointPath: h,
10
+ icebreakersPath: k,
11
+ headers: r,
12
+ authToken: t,
13
+ getAuthToken: n,
14
+ fetchImpl: i,
15
+ storeId: a,
16
+ agent: g,
17
+ route: m,
18
+ systemPrompt: H,
19
+ sessionId: O,
20
+ persist: R,
21
+ loadIcebreakers: y = !0,
22
+ onError: F,
23
+ onResponseComplete: L,
24
+ onSessionIdChange: j,
25
+ // Shell
26
+ suggestions: w,
27
+ inputDisabled: x,
28
+ onRefresh: d,
29
+ onFeedback: l,
30
+ open: p,
31
+ defaultOpen: c,
32
+ onOpenChange: C,
33
+ ...B
34
+ }) => {
35
+ const [D, K] = $(
36
+ c === !0 || p === !0
37
+ ), {
38
+ messages: N,
39
+ isThinking: q,
40
+ isStreaming: u,
41
+ isRestoring: v,
42
+ error: z,
43
+ isLoadingHistory: E,
44
+ hasMoreHistory: G,
45
+ sendMessage: J,
46
+ regenerate: P,
47
+ submitFeedback: b,
48
+ loadOlderMessages: Q,
49
+ stopStreaming: V,
50
+ startNewConversation: M
51
+ } = T({
52
+ baseUrl: o,
53
+ endpointPath: h,
54
+ headers: r,
55
+ authToken: t,
56
+ getAuthToken: n,
57
+ fetchImpl: i,
58
+ storeId: a,
59
+ agent: g,
60
+ route: m,
61
+ systemPrompt: H,
62
+ sessionId: O,
63
+ persist: R,
64
+ onError: F,
65
+ onResponseComplete: L,
66
+ onSessionIdChange: j
67
+ }), { icebreakers: W } = I({
68
+ baseUrl: o,
69
+ icebreakersPath: k,
70
+ headers: r,
71
+ authToken: t,
72
+ getAuthToken: n,
73
+ fetchImpl: i,
74
+ agent: g,
75
+ route: m,
76
+ storeId: a,
77
+ enabled: y && D
78
+ }), X = s(
79
+ (e) => {
80
+ e && K(!0), C?.(e);
81
+ },
82
+ [C]
83
+ ), Y = s(() => {
84
+ M(), d?.();
85
+ }, [d, M]), Z = s(
86
+ (e, S, f) => {
87
+ b(e, S, f), l?.(e, S, f);
88
+ },
89
+ [l, b]
90
+ );
91
+ return /* @__PURE__ */ _(
92
+ A,
93
+ {
94
+ ...B,
95
+ open: p,
96
+ defaultOpen: c,
97
+ onOpenChange: X,
98
+ messages: N,
99
+ onSendMessage: J,
100
+ onRegenerate: P,
101
+ onFeedback: Z,
102
+ isThinking: q,
103
+ isStreaming: u,
104
+ onStop: V,
105
+ isLoadingHistory: E,
106
+ hasMoreHistory: G,
107
+ onLoadOlderMessages: Q,
108
+ errorMessage: z,
109
+ suggestions: w ?? W,
110
+ inputDisabled: x || v || u,
111
+ onRefresh: Y
112
+ }
113
+ );
114
+ };
115
+ export {
116
+ te as BIKCopilot
117
+ };
118
+ //# sourceMappingURL=BIKCopilot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BIKCopilot.js","sources":["../../../../src/components/bik-copilot/BIKCopilot.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { ControlledCopilot } from './ControlledCopilot';\nimport {\n\tBIKCopilotProps,\n\tCopilotFeedbackDetail,\n\tCopilotFeedbackVote,\n} from './model';\nimport { useCopilotIcebreakers } from './useCopilotIcebreakers';\nimport { useCopilotStreamChat } from './useCopilotStreamChat';\n\n/**\n * The copilot ball and panel wired to the streaming `/bik-ai/copilot-bikchatbot`\n * endpoint, with the transcript persisted in IndexedDB and route-aware ice\n * breakers from `/bik-ai/copilot-icebreakers`.\n *\n * Chunks arrive as `STREAM` events and are appended live; the final `TEXT` event\n * replaces the bubble with the authoritative full message and carries the\n * `responseId` that threads the next turn. A session id is created on first use\n * and restored on reload, so a refresh resumes the same conversation. The\n * header's reset button starts a new session id and a new OpenAI thread.\n *\n * Ice breakers are fetched for the current `agent` + `route` the first time the\n * panel is opened, and refetched when the route changes.\n *\n * ```tsx\n * <BIKCopilot\n * baseUrl={AI_BACKEND_URL}\n * getAuthToken={() => firebaseUser.getIdToken()}\n * headers={{ 'bik-referer': 'dashboard' }}\n * storeId={storeId}\n * route={currentRoute}\n * title=\"Copilot\"\n * badge=\"New\"\n * subtitle=\"Way smarter, wildly more capable\"\n * />\n * ```\n */\nexport const BIKCopilot: React.FC<BIKCopilotProps> = ({\n\t// Transport + turn config\n\tbaseUrl,\n\tendpointPath,\n\ticebreakersPath,\n\theaders,\n\tauthToken,\n\tgetAuthToken,\n\tfetchImpl,\n\tstoreId,\n\tagent,\n\troute,\n\tsystemPrompt,\n\tsessionId,\n\tpersist,\n\tloadIcebreakers = true,\n\tonError,\n\tonResponseComplete,\n\tonSessionIdChange,\n\t// Shell\n\tsuggestions,\n\tinputDisabled,\n\tonRefresh,\n\tonFeedback,\n\topen,\n\tdefaultOpen,\n\tonOpenChange,\n\t...shellProps\n}) => {\n\t// Ice breakers only matter once the panel is visible, so a merchant who never\n\t// opens the copilot costs no request.\n\tconst [hasOpened, setHasOpened] = useState(\n\t\tdefaultOpen === true || open === true,\n\t);\n\n\tconst {\n\t\tmessages,\n\t\tisThinking,\n\t\tisStreaming,\n\t\tisRestoring,\n\t\terror,\n\t\tisLoadingHistory,\n\t\thasMoreHistory,\n\t\tsendMessage,\n\t\tregenerate,\n\t\tsubmitFeedback,\n\t\tloadOlderMessages,\n\t\tstopStreaming,\n\t\tstartNewConversation,\n\t} = useCopilotStreamChat({\n\t\tbaseUrl,\n\t\tendpointPath,\n\t\theaders,\n\t\tauthToken,\n\t\tgetAuthToken,\n\t\tfetchImpl,\n\t\tstoreId,\n\t\tagent,\n\t\troute,\n\t\tsystemPrompt,\n\t\tsessionId,\n\t\tpersist,\n\t\tonError,\n\t\tonResponseComplete,\n\t\tonSessionIdChange,\n\t});\n\n\tconst { icebreakers } = useCopilotIcebreakers({\n\t\tbaseUrl,\n\t\ticebreakersPath,\n\t\theaders,\n\t\tauthToken,\n\t\tgetAuthToken,\n\t\tfetchImpl,\n\t\tagent,\n\t\troute,\n\t\tstoreId,\n\t\tenabled: loadIcebreakers && hasOpened,\n\t});\n\n\tconst handleOpenChange = useCallback(\n\t\t(nextOpen: boolean) => {\n\t\t\tif (nextOpen) {\n\t\t\t\tsetHasOpened(true);\n\t\t\t}\n\t\t\tonOpenChange?.(nextOpen);\n\t\t},\n\t\t[onOpenChange],\n\t);\n\n\tconst handleRefresh = useCallback(() => {\n\t\tstartNewConversation();\n\t\tonRefresh?.();\n\t}, [onRefresh, startNewConversation]);\n\n\t// The vote is recorded either way; a host's own handler only observes it.\n\tconst handleFeedback = useCallback(\n\t\t(\n\t\t\tmessageId: string,\n\t\t\tvote: CopilotFeedbackVote,\n\t\t\tdetail?: CopilotFeedbackDetail,\n\t\t) => {\n\t\t\tsubmitFeedback(messageId, vote, detail);\n\t\t\tonFeedback?.(messageId, vote, detail);\n\t\t},\n\t\t[onFeedback, submitFeedback],\n\t);\n\n\treturn (\n\t\t<ControlledCopilot\n\t\t\t{...shellProps}\n\t\t\topen={open}\n\t\t\tdefaultOpen={defaultOpen}\n\t\t\tonOpenChange={handleOpenChange}\n\t\t\tmessages={messages}\n\t\t\tonSendMessage={sendMessage}\n\t\t\tonRegenerate={regenerate}\n\t\t\tonFeedback={handleFeedback}\n\t\t\tisThinking={isThinking}\n\t\t\tisStreaming={isStreaming}\n\t\t\tonStop={stopStreaming}\n\t\t\tisLoadingHistory={isLoadingHistory}\n\t\t\thasMoreHistory={hasMoreHistory}\n\t\t\tonLoadOlderMessages={loadOlderMessages}\n\t\t\terrorMessage={error}\n\t\t\t// An explicit list wins; otherwise the route's fetched prompts show. A\n\t\t\t// failed or empty fetch simply leaves the empty state without chips.\n\t\t\tsuggestions={suggestions ?? icebreakers}\n\t\t\t// A second prompt mid-stream would race the thread's responseId.\n\t\t\tinputDisabled={inputDisabled || isRestoring || isStreaming}\n\t\t\tonRefresh={handleRefresh}\n\t\t/>\n\t);\n};\n\nexport default BIKCopilot;\n"],"names":["BIKCopilot","baseUrl","endpointPath","icebreakersPath","headers","authToken","getAuthToken","fetchImpl","storeId","agent","route","systemPrompt","sessionId","persist","loadIcebreakers","onError","onResponseComplete","onSessionIdChange","suggestions","inputDisabled","onRefresh","onFeedback","open","defaultOpen","onOpenChange","shellProps","hasOpened","setHasOpened","useState","messages","isThinking","isStreaming","isRestoring","error","isLoadingHistory","hasMoreHistory","sendMessage","regenerate","submitFeedback","loadOlderMessages","stopStreaming","startNewConversation","useCopilotStreamChat","icebreakers","useCopilotIcebreakers","handleOpenChange","useCallback","nextOpen","handleRefresh","handleFeedback","messageId","vote","detail","jsx","ControlledCopilot"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { default as React } from 'react';
2
+ import { ControlledCopilotProps } from './model';
3
+ /**
4
+ * The presentational half of the copilot: a draggable floating ball that opens a
5
+ * chat panel beside it.
6
+ *
7
+ * Fully controlled — it renders the `messages` it is handed and reports every
8
+ * user action through callbacks, so it carries no backend knowledge. **Use
9
+ * `BIKCopilot` instead** unless you are wiring a backend other than
10
+ * `/bik-ai/copilot-bikchatbot`; `BIKCopilot` is this component plus the streaming
11
+ * transport, IndexedDB history and route-aware ice breakers.
12
+ */
13
+ export declare const ControlledCopilot: React.FC<ControlledCopilotProps>;
14
+ export default ControlledCopilot;
@@ -0,0 +1,174 @@
1
+ import { jsxs as ue, Fragment as ge, jsx as a } from "react/jsx-runtime";
2
+ import { useState as he, useRef as Ce, useCallback as C, useEffect as v } from "react";
3
+ import { COLORS as ve } from "../../constants/Theme.js";
4
+ import { PanelPositioner as we } from "./ControlledCopilot.styled.js";
5
+ import { CopilotBall as Le, COPILOT_BALL_ATTRIBUTE as Pe } from "./CopilotBall.js";
6
+ import { CopilotPanel as Ee } from "./CopilotPanel.js";
7
+ import { getCopilotPanelPlacement as ke } from "./copilotPlacement.js";
8
+ import { useDraggableFloater as $e } from "./useDraggableFloater.js";
9
+ const xe = ({
10
+ // Conversation
11
+ messages: w,
12
+ onSendMessage: L,
13
+ isThinking: P = !1,
14
+ thinkingLabel: E,
15
+ isStreaming: k = !1,
16
+ onStop: $,
17
+ interruptedLabel: b,
18
+ followUpsLabel: I,
19
+ hasMoreHistory: O = !1,
20
+ isLoadingHistory: T = !1,
21
+ onLoadOlderMessages: y,
22
+ historyLoadingLabel: B,
23
+ errorMessage: D,
24
+ // Ball
25
+ ballSize: r = 56,
26
+ corner: R = "bottom-right",
27
+ offset: x = 24,
28
+ initialPosition: j,
29
+ draggable: f = !0,
30
+ snapToEdge: A = !0,
31
+ onPositionChange: F,
32
+ ballIcon: U,
33
+ ballOpenIcon: _,
34
+ ballColor: z = ve.background.brand,
35
+ zIndex: c = 1200,
36
+ ballAriaLabel: H,
37
+ // Panel
38
+ panelWidth: K = 400,
39
+ panelHeight: S = 700,
40
+ panelGap: q = 12,
41
+ title: G = "Copilot",
42
+ badge: J,
43
+ subtitle: M,
44
+ avatar: N,
45
+ placeholder: Q,
46
+ disclaimer: V,
47
+ emptyStateTitle: W,
48
+ emptyStateSubtitle: X,
49
+ suggestions: Y,
50
+ onSuggestionClick: Z,
51
+ showRefresh: ee = !0,
52
+ onRefresh: oe,
53
+ onRegenerate: te,
54
+ onFeedback: ne,
55
+ inputDisabled: re = !1,
56
+ // Open state
57
+ open: d,
58
+ defaultOpen: ie = !1,
59
+ onOpenChange: p,
60
+ closeOnClickOutside: m = !1,
61
+ className: le,
62
+ style: se
63
+ }) => {
64
+ const [ae, fe] = he(ie), u = Ce(null), i = d !== void 0, e = i ? d : ae, t = C(
65
+ (o) => {
66
+ i || fe(o), p?.(o);
67
+ },
68
+ [i, p]
69
+ ), { position: g, isDragging: ce, viewport: de, dragHandlers: pe, shouldIgnoreClick: h } = $e({
70
+ size: r,
71
+ corner: R,
72
+ offset: x,
73
+ enabled: f,
74
+ snapToEdge: A,
75
+ initialPosition: j,
76
+ onPositionChange: F
77
+ }), me = C(() => {
78
+ h() || t(!e);
79
+ }, [e, t, h]);
80
+ v(() => {
81
+ if (!e)
82
+ return;
83
+ const o = (l) => {
84
+ l.key === "Escape" && t(!1);
85
+ };
86
+ return document.addEventListener("keydown", o), () => document.removeEventListener("keydown", o);
87
+ }, [e, t]), v(() => {
88
+ if (!e || !m)
89
+ return;
90
+ const o = (l) => {
91
+ const s = l.target;
92
+ s && (u.current?.contains(s) || s.closest(`[${Pe}]`) || t(!1));
93
+ };
94
+ return document.addEventListener("pointerdown", o), () => document.removeEventListener("pointerdown", o);
95
+ }, [m, e, t]);
96
+ const n = ke({
97
+ ballPosition: g,
98
+ ballSize: r,
99
+ panelWidth: K,
100
+ panelHeight: S,
101
+ gap: q,
102
+ viewport: de
103
+ });
104
+ return /* @__PURE__ */ ue(ge, { children: [
105
+ e && /* @__PURE__ */ a(
106
+ we,
107
+ {
108
+ ref: u,
109
+ $left: n.left,
110
+ $top: n.top,
111
+ $width: n.width,
112
+ $height: n.height,
113
+ $zIndex: c,
114
+ children: /* @__PURE__ */ a(
115
+ Ee,
116
+ {
117
+ messages: w,
118
+ onSend: L,
119
+ onClose: () => t(!1),
120
+ title: G,
121
+ badge: J,
122
+ subtitle: M,
123
+ avatar: N,
124
+ placeholder: Q,
125
+ disclaimer: V,
126
+ emptyStateTitle: W,
127
+ emptyStateSubtitle: X,
128
+ suggestions: Y,
129
+ onSuggestionClick: Z,
130
+ showRefresh: ee,
131
+ onRefresh: oe,
132
+ onRegenerate: te,
133
+ onFeedback: ne,
134
+ isThinking: P,
135
+ thinkingLabel: E,
136
+ isStreaming: k,
137
+ onStop: $,
138
+ interruptedLabel: b,
139
+ followUpsLabel: I,
140
+ hasMoreHistory: O,
141
+ isLoadingHistory: T,
142
+ onLoadOlderMessages: y,
143
+ historyLoadingLabel: B,
144
+ inputDisabled: re,
145
+ errorMessage: D,
146
+ className: le,
147
+ style: se
148
+ }
149
+ )
150
+ }
151
+ ),
152
+ /* @__PURE__ */ a(
153
+ Le,
154
+ {
155
+ isOpen: e,
156
+ onToggle: me,
157
+ position: g,
158
+ size: r,
159
+ isDragging: ce,
160
+ draggable: f,
161
+ color: z,
162
+ zIndex: c + 1,
163
+ icon: U,
164
+ openIcon: _,
165
+ ariaLabel: H,
166
+ ...pe
167
+ }
168
+ )
169
+ ] });
170
+ };
171
+ export {
172
+ xe as ControlledCopilot
173
+ };
174
+ //# sourceMappingURL=ControlledCopilot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControlledCopilot.js","sources":["../../../../src/components/bik-copilot/ControlledCopilot.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { COLORS } from '@src/constants/Theme';\nimport { PanelPositioner } from './ControlledCopilot.styled';\nimport { COPILOT_BALL_ATTRIBUTE, CopilotBall } from './CopilotBall';\nimport { CopilotPanel } from './CopilotPanel';\nimport { getCopilotPanelPlacement } from './copilotPlacement';\nimport { ControlledCopilotProps } from './model';\nimport { useDraggableFloater } from './useDraggableFloater';\n\n/**\n * The presentational half of the copilot: a draggable floating ball that opens a\n * chat panel beside it.\n *\n * Fully controlled — it renders the `messages` it is handed and reports every\n * user action through callbacks, so it carries no backend knowledge. **Use\n * `BIKCopilot` instead** unless you are wiring a backend other than\n * `/bik-ai/copilot-bikchatbot`; `BIKCopilot` is this component plus the streaming\n * transport, IndexedDB history and route-aware ice breakers.\n */\nexport const ControlledCopilot: React.FC<ControlledCopilotProps> = ({\n\t// Conversation\n\tmessages,\n\tonSendMessage,\n\tisThinking = false,\n\tthinkingLabel,\n\tisStreaming = false,\n\tonStop,\n\tinterruptedLabel,\n\tfollowUpsLabel,\n\thasMoreHistory = false,\n\tisLoadingHistory = false,\n\tonLoadOlderMessages,\n\thistoryLoadingLabel,\n\terrorMessage,\n\t// Ball\n\tballSize = 56,\n\tcorner = 'bottom-right',\n\toffset = 24,\n\tinitialPosition,\n\tdraggable = true,\n\tsnapToEdge = true,\n\tonPositionChange,\n\tballIcon,\n\tballOpenIcon,\n\tballColor = COLORS.background.brand,\n\tzIndex = 1200,\n\tballAriaLabel,\n\t// Panel\n\tpanelWidth = 400,\n\tpanelHeight = 700,\n\tpanelGap = 12,\n\ttitle = 'Copilot',\n\tbadge,\n\tsubtitle,\n\tavatar,\n\tplaceholder,\n\tdisclaimer,\n\temptyStateTitle,\n\temptyStateSubtitle,\n\tsuggestions,\n\tonSuggestionClick,\n\tshowRefresh = true,\n\tonRefresh,\n\tonRegenerate,\n\tonFeedback,\n\tinputDisabled = false,\n\t// Open state\n\topen,\n\tdefaultOpen = false,\n\tonOpenChange,\n\tcloseOnClickOutside = false,\n\tclassName,\n\tstyle,\n}) => {\n\tconst [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n\tconst panelRef = useRef<HTMLDivElement>(null);\n\n\tconst isControlled = open !== undefined;\n\tconst isOpen = isControlled ? open : uncontrolledOpen;\n\n\tconst setOpen = useCallback(\n\t\t(next: boolean) => {\n\t\t\tif (!isControlled) {\n\t\t\t\tsetUncontrolledOpen(next);\n\t\t\t}\n\t\t\tonOpenChange?.(next);\n\t\t},\n\t\t[isControlled, onOpenChange],\n\t);\n\n\tconst { position, isDragging, viewport, dragHandlers, shouldIgnoreClick } =\n\t\tuseDraggableFloater({\n\t\t\tsize: ballSize,\n\t\t\tcorner,\n\t\t\toffset,\n\t\t\tenabled: draggable,\n\t\t\tsnapToEdge,\n\t\t\tinitialPosition,\n\t\t\tonPositionChange,\n\t\t});\n\n\tconst handleBallClick = useCallback(() => {\n\t\t// The click that ends a drag gesture must not toggle the panel.\n\t\tif (shouldIgnoreClick()) {\n\t\t\treturn;\n\t\t}\n\t\tsetOpen(!isOpen);\n\t}, [isOpen, setOpen, shouldIgnoreClick]);\n\n\t// Escape closes the panel.\n\tuseEffect(() => {\n\t\tif (!isOpen) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst handleKeyDown = (event: KeyboardEvent) => {\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\tsetOpen(false);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('keydown', handleKeyDown);\n\t\treturn () => document.removeEventListener('keydown', handleKeyDown);\n\t}, [isOpen, setOpen]);\n\n\tuseEffect(() => {\n\t\tif (!isOpen || !closeOnClickOutside) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst handlePointerDown = (event: PointerEvent) => {\n\t\t\tconst target = event.target as HTMLElement | null;\n\t\t\tif (!target) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (panelRef.current?.contains(target)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (target.closest(`[${COPILOT_BALL_ATTRIBUTE}]`)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetOpen(false);\n\t\t};\n\t\tdocument.addEventListener('pointerdown', handlePointerDown);\n\t\treturn () => document.removeEventListener('pointerdown', handlePointerDown);\n\t}, [closeOnClickOutside, isOpen, setOpen]);\n\n\tconst placement = getCopilotPanelPlacement({\n\t\tballPosition: position,\n\t\tballSize,\n\t\tpanelWidth,\n\t\tpanelHeight,\n\t\tgap: panelGap,\n\t\tviewport,\n\t});\n\n\treturn (\n\t\t<>\n\t\t\t{isOpen && (\n\t\t\t\t<PanelPositioner\n\t\t\t\t\tref={panelRef}\n\t\t\t\t\t$left={placement.left}\n\t\t\t\t\t$top={placement.top}\n\t\t\t\t\t$width={placement.width}\n\t\t\t\t\t$height={placement.height}\n\t\t\t\t\t$zIndex={zIndex}\n\t\t\t\t>\n\t\t\t\t\t<CopilotPanel\n\t\t\t\t\t\tmessages={messages}\n\t\t\t\t\t\tonSend={onSendMessage}\n\t\t\t\t\t\tonClose={() => setOpen(false)}\n\t\t\t\t\t\ttitle={title}\n\t\t\t\t\t\tbadge={badge}\n\t\t\t\t\t\tsubtitle={subtitle}\n\t\t\t\t\t\tavatar={avatar}\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\tdisclaimer={disclaimer}\n\t\t\t\t\t\temptyStateTitle={emptyStateTitle}\n\t\t\t\t\t\temptyStateSubtitle={emptyStateSubtitle}\n\t\t\t\t\t\tsuggestions={suggestions}\n\t\t\t\t\t\tonSuggestionClick={onSuggestionClick}\n\t\t\t\t\t\tshowRefresh={showRefresh}\n\t\t\t\t\t\tonRefresh={onRefresh}\n\t\t\t\t\t\tonRegenerate={onRegenerate}\n\t\t\t\t\t\tonFeedback={onFeedback}\n\t\t\t\t\t\tisThinking={isThinking}\n\t\t\t\t\t\tthinkingLabel={thinkingLabel}\n\t\t\t\t\t\tisStreaming={isStreaming}\n\t\t\t\t\t\tonStop={onStop}\n\t\t\t\t\t\tinterruptedLabel={interruptedLabel}\n\t\t\t\t\t\tfollowUpsLabel={followUpsLabel}\n\t\t\t\t\t\thasMoreHistory={hasMoreHistory}\n\t\t\t\t\t\tisLoadingHistory={isLoadingHistory}\n\t\t\t\t\t\tonLoadOlderMessages={onLoadOlderMessages}\n\t\t\t\t\t\thistoryLoadingLabel={historyLoadingLabel}\n\t\t\t\t\t\tinputDisabled={inputDisabled}\n\t\t\t\t\t\terrorMessage={errorMessage}\n\t\t\t\t\t\tclassName={className}\n\t\t\t\t\t\tstyle={style}\n\t\t\t\t\t/>\n\t\t\t\t</PanelPositioner>\n\t\t\t)}\n\n\t\t\t<CopilotBall\n\t\t\t\tisOpen={isOpen}\n\t\t\t\tonToggle={handleBallClick}\n\t\t\t\tposition={position}\n\t\t\t\tsize={ballSize}\n\t\t\t\tisDragging={isDragging}\n\t\t\t\tdraggable={draggable}\n\t\t\t\tcolor={ballColor}\n\t\t\t\tzIndex={zIndex + 1}\n\t\t\t\ticon={ballIcon}\n\t\t\t\topenIcon={ballOpenIcon}\n\t\t\t\tariaLabel={ballAriaLabel}\n\t\t\t\t{...dragHandlers}\n\t\t\t/>\n\t\t</>\n\t);\n};\n\nexport default ControlledCopilot;\n"],"names":["ControlledCopilot","messages","onSendMessage","isThinking","thinkingLabel","isStreaming","onStop","interruptedLabel","followUpsLabel","hasMoreHistory","isLoadingHistory","onLoadOlderMessages","historyLoadingLabel","errorMessage","ballSize","corner","offset","initialPosition","draggable","snapToEdge","onPositionChange","ballIcon","ballOpenIcon","ballColor","COLORS","zIndex","ballAriaLabel","panelWidth","panelHeight","panelGap","title","badge","subtitle","avatar","placeholder","disclaimer","emptyStateTitle","emptyStateSubtitle","suggestions","onSuggestionClick","showRefresh","onRefresh","onRegenerate","onFeedback","inputDisabled","open","defaultOpen","onOpenChange","closeOnClickOutside","className","style","uncontrolledOpen","setUncontrolledOpen","useState","panelRef","useRef","isControlled","isOpen","setOpen","useCallback","next","position","isDragging","viewport","dragHandlers","shouldIgnoreClick","useDraggableFloater","handleBallClick","useEffect","handleKeyDown","event","handlePointerDown","target","COPILOT_BALL_ATTRIBUTE","placement","getCopilotPanelPlacement","jsxs","Fragment","jsx","PanelPositioner","CopilotPanel","CopilotBall"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare const PanelPositioner: import('styled-components').StyledComponent<"div", any, {
2
+ $left: number;
3
+ $top: number;
4
+ $width: number;
5
+ $height: number;
6
+ $zIndex: number;
7
+ }, never>;
@@ -0,0 +1,31 @@
1
+ import e from "styled-components";
2
+ const o = e.div`
3
+ position: fixed;
4
+ left: ${(t) => t.$left}px;
5
+ top: ${(t) => t.$top}px;
6
+ width: ${(t) => t.$width}px;
7
+ height: ${(t) => t.$height}px;
8
+ z-index: ${(t) => t.$zIndex};
9
+ display: flex;
10
+ animation: bikCopilotPanelIn 0.16s ease-out;
11
+
12
+ > * {
13
+ flex: 1;
14
+ min-width: 0;
15
+ }
16
+
17
+ @keyframes bikCopilotPanelIn {
18
+ from {
19
+ opacity: 0;
20
+ transform: translateY(6px) scale(0.98);
21
+ }
22
+ to {
23
+ opacity: 1;
24
+ transform: translateY(0) scale(1);
25
+ }
26
+ }
27
+ `;
28
+ export {
29
+ o as PanelPositioner
30
+ };
31
+ //# sourceMappingURL=ControlledCopilot.styled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControlledCopilot.styled.js","sources":["../../../../src/components/bik-copilot/ControlledCopilot.styled.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const PanelPositioner = styled.div<{\n\t$left: number;\n\t$top: number;\n\t$width: number;\n\t$height: number;\n\t$zIndex: number;\n}>`\n\tposition: fixed;\n\tleft: ${(props) => props.$left}px;\n\ttop: ${(props) => props.$top}px;\n\twidth: ${(props) => props.$width}px;\n\theight: ${(props) => props.$height}px;\n\tz-index: ${(props) => props.$zIndex};\n\tdisplay: flex;\n\tanimation: bikCopilotPanelIn 0.16s ease-out;\n\n\t> * {\n\t\tflex: 1;\n\t\tmin-width: 0;\n\t}\n\n\t@keyframes bikCopilotPanelIn {\n\t\tfrom {\n\t\t\topacity: 0;\n\t\t\ttransform: translateY(6px) scale(0.98);\n\t\t}\n\t\tto {\n\t\t\topacity: 1;\n\t\t\ttransform: translateY(0) scale(1);\n\t\t}\n\t}\n`;\n"],"names":["PanelPositioner","styled","props"],"mappings":";AAEO,MAAMA,IAAkBC,EAAO;AAAA;AAAA,SAQ7B,CAACC,MAAUA,EAAM,KAAK;AAAA,QACvB,CAACA,MAAUA,EAAM,IAAI;AAAA,UACnB,CAACA,MAAUA,EAAM,MAAM;AAAA,WACtB,CAACA,MAAUA,EAAM,OAAO;AAAA,YACvB,CAACA,MAAUA,EAAM,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -0,0 +1,13 @@
1
+ import { default as React } from 'react';
2
+ import { CopilotBallProps } from './model';
3
+ /**
4
+ * Marks the ball in the DOM so an outside-click handler can tell the ball apart
5
+ * from the rest of the page and not fight the ball's own toggle.
6
+ */
7
+ export declare const COPILOT_BALL_ATTRIBUTE = "data-bik-copilot-ball";
8
+ /**
9
+ * The floating ball that opens the copilot panel. Purely presentational — the
10
+ * drag gesture lives in `useDraggableFloater` and is passed in as handlers.
11
+ */
12
+ export declare const CopilotBall: React.FC<CopilotBallProps>;
13
+ export default CopilotBall;
@@ -0,0 +1,50 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import b from "../../assets/icons/bik_ai_stars_icon.svg.js";
3
+ import s from "../../assets/icons/chevronDown.svg.js";
4
+ import { BallButton as x } from "./CopilotBall.styled.js";
5
+ const C = "data-bik-copilot-ball", w = ({
6
+ isOpen: t,
7
+ onToggle: n,
8
+ position: i,
9
+ size: a,
10
+ isDragging: e,
11
+ draggable: c,
12
+ color: d,
13
+ zIndex: g,
14
+ icon: h,
15
+ openIcon: m,
16
+ ariaLabel: p,
17
+ onPointerDown: $,
18
+ onPointerMove: f,
19
+ onPointerUp: u,
20
+ onPointerCancel: B
21
+ }) => {
22
+ const o = Math.round(a * 0.42), l = t ? /* @__PURE__ */ r(s, { width: o, height: o }) : /* @__PURE__ */ r(b, { width: o, height: o }), I = t ? m ?? l : h ?? l;
23
+ return /* @__PURE__ */ r(
24
+ x,
25
+ {
26
+ type: "button",
27
+ [C]: "true",
28
+ $size: a,
29
+ $left: i.x,
30
+ $top: i.y,
31
+ $color: d,
32
+ $zIndex: g,
33
+ $isDragging: e,
34
+ $draggable: c,
35
+ "aria-label": p || "Copilot",
36
+ "aria-expanded": t,
37
+ onClick: n,
38
+ onPointerDown: $,
39
+ onPointerMove: f,
40
+ onPointerUp: u,
41
+ onPointerCancel: B,
42
+ children: I
43
+ }
44
+ );
45
+ };
46
+ export {
47
+ C as COPILOT_BALL_ATTRIBUTE,
48
+ w as CopilotBall
49
+ };
50
+ //# sourceMappingURL=CopilotBall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopilotBall.js","sources":["../../../../src/components/bik-copilot/CopilotBall.tsx"],"sourcesContent":["import AiStarsIcon from '@src/assets/icons/bik_ai_stars_icon.svg';\nimport ChevronDownIcon from '@src/assets/icons/chevronDown.svg';\nimport React from 'react';\nimport { BallButton } from './CopilotBall.styled';\nimport { CopilotBallProps } from './model';\n\n/**\n * Marks the ball in the DOM so an outside-click handler can tell the ball apart\n * from the rest of the page and not fight the ball's own toggle.\n */\nexport const COPILOT_BALL_ATTRIBUTE = 'data-bik-copilot-ball';\n\n/**\n * The floating ball that opens the copilot panel. Purely presentational — the\n * drag gesture lives in `useDraggableFloater` and is passed in as handlers.\n */\nexport const CopilotBall: React.FC<CopilotBallProps> = ({\n\tisOpen,\n\tonToggle,\n\tposition,\n\tsize,\n\tisDragging,\n\tdraggable,\n\tcolor,\n\tzIndex,\n\ticon,\n\topenIcon,\n\tariaLabel,\n\tonPointerDown,\n\tonPointerMove,\n\tonPointerUp,\n\tonPointerCancel,\n}) => {\n\tconst iconSize = Math.round(size * 0.42);\n\tconst defaultIcon = isOpen ? (\n\t\t<ChevronDownIcon width={iconSize} height={iconSize} />\n\t) : (\n\t\t<AiStarsIcon width={iconSize} height={iconSize} />\n\t);\n\tconst activeIcon = isOpen ? openIcon ?? defaultIcon : icon ?? defaultIcon;\n\n\treturn (\n\t\t<BallButton\n\t\t\ttype=\"button\"\n\t\t\t{...{ [COPILOT_BALL_ATTRIBUTE]: 'true' }}\n\t\t\t$size={size}\n\t\t\t$left={position.x}\n\t\t\t$top={position.y}\n\t\t\t$color={color}\n\t\t\t$zIndex={zIndex}\n\t\t\t$isDragging={isDragging}\n\t\t\t$draggable={draggable}\n\t\t\t/* A disclosure button keeps a stable name and reports its state through\n\t\t\t aria-expanded, so this must not become \"Open/Close copilot\" — that\n\t\t\t would also collide with the panel's own close button. */\n\t\t\taria-label={ariaLabel || 'Copilot'}\n\t\t\taria-expanded={isOpen}\n\t\t\tonClick={onToggle}\n\t\t\tonPointerDown={onPointerDown}\n\t\t\tonPointerMove={onPointerMove}\n\t\t\tonPointerUp={onPointerUp}\n\t\t\tonPointerCancel={onPointerCancel}\n\t\t>\n\t\t\t{activeIcon}\n\t\t</BallButton>\n\t);\n};\n\nexport default CopilotBall;\n"],"names":["COPILOT_BALL_ATTRIBUTE","CopilotBall","isOpen","onToggle","position","size","isDragging","draggable","color","zIndex","icon","openIcon","ariaLabel","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","iconSize","defaultIcon","jsx","ChevronDownIcon","AiStarsIcon","activeIcon","BallButton"],"mappings":";;;;AAUO,MAAMA,IAAyB,yBAMzBC,IAA0C,CAAC;AAAA,EACvD,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,iBAAAC;AACD,MAAM;AACL,QAAMC,IAAW,KAAK,MAAMZ,IAAO,IAAI,GACjCa,IAAchB,IACnB,gBAAAiB,EAACC,GAAA,EAAgB,OAAOH,GAAU,QAAQA,EAAA,CAAU,IAEpD,gBAAAE,EAACE,GAAA,EAAY,OAAOJ,GAAU,QAAQA,GAAU,GAE3CK,IAAapB,IAASS,KAAYO,IAAcR,KAAQQ;AAE9D,SACC,gBAAAC;AAAA,IAACI;AAAA,IAAA;AAAA,MACA,MAAK;AAAA,MACC,CAACvB,CAAsB,GAAG;AAAA,MAChC,OAAOK;AAAA,MACP,OAAOD,EAAS;AAAA,MAChB,MAAMA,EAAS;AAAA,MACf,QAAQI;AAAA,MACR,SAASC;AAAA,MACT,aAAaH;AAAA,MACb,YAAYC;AAAA,MAIZ,cAAYK,KAAa;AAAA,MACzB,iBAAeV;AAAA,MACf,SAASC;AAAA,MACT,eAAAU;AAAA,MACA,eAAAC;AAAA,MACA,aAAAC;AAAA,MACA,iBAAAC;AAAA,MAEC,UAAAM;AAAA,IAAA;AAAA,EAAA;AAGJ;"}
@@ -0,0 +1,9 @@
1
+ export declare const BallButton: import('styled-components').StyledComponent<"button", any, {
2
+ $size: number;
3
+ $left: number;
4
+ $top: number;
5
+ $color: string;
6
+ $zIndex: number;
7
+ $isDragging: boolean;
8
+ $draggable: boolean;
9
+ }, never>;
@@ -0,0 +1,46 @@
1
+ import s from "styled-components";
2
+ const t = s.button`
3
+ position: fixed;
4
+ left: ${(e) => e.$left}px;
5
+ top: ${(e) => e.$top}px;
6
+ width: ${(e) => e.$size}px;
7
+ height: ${(e) => e.$size}px;
8
+ z-index: ${(e) => e.$zIndex};
9
+
10
+ display: flex;
11
+ align-items: center;
12
+ justify-content: center;
13
+ padding: 0;
14
+ border: none;
15
+ border-radius: 50%;
16
+ background: ${(e) => e.$color};
17
+ color: #ffffff;
18
+ box-shadow: ${(e) => e.$isDragging ? "0 12px 32px rgba(40, 3, 78, 0.36)" : "0 6px 20px rgba(40, 3, 78, 0.24)"};
19
+
20
+ cursor: ${(e) => e.$isDragging ? "grabbing" : e.$draggable ? "grab" : "pointer"};
21
+ touch-action: none;
22
+ user-select: none;
23
+ -webkit-user-select: none;
24
+
25
+ /* Position changes animate on release but must track the pointer 1:1 while
26
+ the user is dragging. */
27
+ transition: ${(e) => e.$isDragging ? "box-shadow 0.15s ease, transform 0.15s ease" : "left 0.22s ease, top 0.22s ease, box-shadow 0.15s ease, transform 0.15s ease"};
28
+ transform: ${(e) => e.$isDragging ? "scale(1.06)" : "scale(1)"};
29
+
30
+ &:hover {
31
+ transform: scale(1.06);
32
+ }
33
+
34
+ &:focus-visible {
35
+ outline: 2px solid #ffffff;
36
+ outline-offset: 2px;
37
+ }
38
+
39
+ svg {
40
+ pointer-events: none;
41
+ }
42
+ `;
43
+ export {
44
+ t as BallButton
45
+ };
46
+ //# sourceMappingURL=CopilotBall.styled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopilotBall.styled.js","sources":["../../../../src/components/bik-copilot/CopilotBall.styled.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const BallButton = styled.button<{\n\t$size: number;\n\t$left: number;\n\t$top: number;\n\t$color: string;\n\t$zIndex: number;\n\t$isDragging: boolean;\n\t$draggable: boolean;\n}>`\n\tposition: fixed;\n\tleft: ${(props) => props.$left}px;\n\ttop: ${(props) => props.$top}px;\n\twidth: ${(props) => props.$size}px;\n\theight: ${(props) => props.$size}px;\n\tz-index: ${(props) => props.$zIndex};\n\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tpadding: 0;\n\tborder: none;\n\tborder-radius: 50%;\n\tbackground: ${(props) => props.$color};\n\tcolor: #ffffff;\n\tbox-shadow: ${(props) =>\n\t\tprops.$isDragging\n\t\t\t? '0 12px 32px rgba(40, 3, 78, 0.36)'\n\t\t\t: '0 6px 20px rgba(40, 3, 78, 0.24)'};\n\n\tcursor: ${(props) =>\n\t\tprops.$isDragging ? 'grabbing' : props.$draggable ? 'grab' : 'pointer'};\n\ttouch-action: none;\n\tuser-select: none;\n\t-webkit-user-select: none;\n\n\t/* Position changes animate on release but must track the pointer 1:1 while\n\t the user is dragging. */\n\ttransition: ${(props) =>\n\t\tprops.$isDragging\n\t\t\t? 'box-shadow 0.15s ease, transform 0.15s ease'\n\t\t\t: 'left 0.22s ease, top 0.22s ease, box-shadow 0.15s ease, transform 0.15s ease'};\n\ttransform: ${(props) => (props.$isDragging ? 'scale(1.06)' : 'scale(1)')};\n\n\t&:hover {\n\t\ttransform: scale(1.06);\n\t}\n\n\t&:focus-visible {\n\t\toutline: 2px solid #ffffff;\n\t\toutline-offset: 2px;\n\t}\n\n\tsvg {\n\t\tpointer-events: none;\n\t}\n`;\n"],"names":["BallButton","styled","props"],"mappings":";AAEO,MAAMA,IAAaC,EAAO;AAAA;AAAA,SAUxB,CAACC,MAAUA,EAAM,KAAK;AAAA,QACvB,CAACA,MAAUA,EAAM,IAAI;AAAA,UACnB,CAACA,MAAUA,EAAM,KAAK;AAAA,WACrB,CAACA,MAAUA,EAAM,KAAK;AAAA,YACrB,CAACA,MAAUA,EAAM,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAQrB,CAACA,MAAUA,EAAM,MAAM;AAAA;AAAA,eAEvB,CAACA,MACdA,EAAM,cACH,sCACA,kCAAkC;AAAA;AAAA,WAE5B,CAACA,MACVA,EAAM,cAAc,aAAaA,EAAM,aAAa,SAAS,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAOzD,CAACA,MACdA,EAAM,cACH,gDACA,8EAA8E;AAAA,cACrE,CAACA,MAAWA,EAAM,cAAc,gBAAgB,UAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -0,0 +1,29 @@
1
+ import { default as React } from 'react';
2
+ import { CopilotFeedbackDetail, CopilotFeedbackReasonOption } from './model';
3
+ /** The chips the modal offers, in the order they are shown. */
4
+ export declare const COPILOT_FEEDBACK_REASONS: CopilotFeedbackReasonOption[];
5
+ export interface CopilotFeedbackModalProps {
6
+ title?: string;
7
+ subtitle?: string;
8
+ reasons?: CopilotFeedbackReasonOption[];
9
+ notePlaceholder?: string;
10
+ submitLabel?: string;
11
+ /**
12
+ * The detail the reader chose to share. Called once, on submit.
13
+ */
14
+ onSubmit: (detail: CopilotFeedbackDetail) => void;
15
+ /**
16
+ * Dismissed without sharing. The rating itself is the host's business — see
17
+ * `CopilotPanel`, which records the thumbs-down either way.
18
+ */
19
+ onDismiss: () => void;
20
+ className?: string;
21
+ }
22
+ /**
23
+ * Asks what was wrong with a reply that was just rated down.
24
+ *
25
+ * Chips plus an optional note, and nothing is required: a reader who only wants
26
+ * to press the thumb can dismiss this and the rating still stands. Every string
27
+ * is overridable so a host can reword or localise it.
28
+ */
29
+ export declare const CopilotFeedbackModal: React.FC<CopilotFeedbackModalProps>;