instantsearch.js 4.81.0 → 4.82.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 (291) hide show
  1. package/cjs/components/Answers/Answers.js +4 -4
  2. package/cjs/components/Breadcrumb/Breadcrumb.js +2 -2
  3. package/cjs/components/ClearRefinements/ClearRefinements.js +2 -2
  4. package/cjs/components/GeoSearchControls/GeoSearchControls.js +2 -2
  5. package/cjs/components/Highlight/Highlight.js +3 -3
  6. package/cjs/components/InfiniteHits/InfiniteHits.js +4 -4
  7. package/cjs/components/MenuSelect/MenuSelect.js +2 -2
  8. package/cjs/components/Pagination/Pagination.js +1 -1
  9. package/cjs/components/Panel/Panel.js +5 -5
  10. package/cjs/components/QueryRuleCustomData/QueryRuleCustomData.js +1 -1
  11. package/cjs/components/RangeInput/RangeInput.js +14 -14
  12. package/cjs/components/RefinementList/RefinementList.js +16 -16
  13. package/cjs/components/RefinementList/RefinementListItem.js +2 -2
  14. package/cjs/components/RelevantSort/RelevantSort.js +1 -1
  15. package/cjs/components/ReverseHighlight/ReverseHighlight.js +3 -3
  16. package/cjs/components/ReverseSnippet/ReverseSnippet.js +3 -3
  17. package/cjs/components/SearchBox/SearchBox.js +31 -19
  18. package/cjs/components/Slider/Pit.js +2 -2
  19. package/cjs/components/Slider/Rheostat.js +13 -13
  20. package/cjs/components/Slider/Slider.js +19 -19
  21. package/cjs/components/Snippet/Snippet.js +3 -3
  22. package/cjs/components/Stats/Stats.js +6 -6
  23. package/cjs/components/Template/Template.js +18 -18
  24. package/cjs/components/ToggleRefinement/ToggleRefinement.js +2 -2
  25. package/cjs/components/VoiceSearch/VoiceSearch.js +1 -1
  26. package/cjs/connectors/answers/connectAnswers.js +2 -2
  27. package/cjs/connectors/autocomplete/connectAutocomplete.js +2 -2
  28. package/cjs/connectors/breadcrumb/connectBreadcrumb.js +6 -6
  29. package/cjs/connectors/chat/connectChat.js +29 -8
  30. package/cjs/connectors/clear-refinements/connectClearRefinements.js +7 -7
  31. package/cjs/connectors/configure/connectConfigure.js +3 -3
  32. package/cjs/connectors/configure-related-items/connectConfigureRelatedItems.js +8 -8
  33. package/cjs/connectors/current-refinements/connectCurrentRefinements.js +7 -7
  34. package/cjs/connectors/dynamic-widgets/connectDynamicWidgets.js +2 -2
  35. package/cjs/connectors/frequently-bought-together/connectFrequentlyBoughtTogether.js +6 -3
  36. package/cjs/connectors/geo-search/connectGeoSearch.js +2 -2
  37. package/cjs/connectors/hierarchical-menu/connectHierarchicalMenu.js +28 -16
  38. package/cjs/connectors/hits/connectHits.js +2 -2
  39. package/cjs/connectors/hits/connectHitsWithInsights.js +1 -1
  40. package/cjs/connectors/hits-per-page/connectHitsPerPage.js +7 -7
  41. package/cjs/connectors/index.js +1 -1
  42. package/cjs/connectors/index.umd.js +1 -1
  43. package/cjs/connectors/infinite-hits/connectInfiniteHits.js +11 -11
  44. package/cjs/connectors/infinite-hits/connectInfiniteHitsWithInsights.js +1 -1
  45. package/cjs/connectors/looking-similar/connectLookingSimilar.js +3 -3
  46. package/cjs/connectors/menu/connectMenu.js +8 -8
  47. package/cjs/connectors/numeric-menu/connectNumericMenu.js +7 -7
  48. package/cjs/connectors/pagination/Paginator.js +5 -5
  49. package/cjs/connectors/pagination/connectPagination.js +3 -3
  50. package/cjs/connectors/powered-by/connectPoweredBy.js +2 -2
  51. package/cjs/connectors/query-rules/connectQueryRules.js +7 -7
  52. package/cjs/connectors/range/connectRange.js +22 -22
  53. package/cjs/connectors/rating-menu/connectRatingMenu.js +9 -9
  54. package/cjs/connectors/refinement-list/connectRefinementList.js +4 -4
  55. package/cjs/connectors/related-products/connectRelatedProducts.js +3 -3
  56. package/cjs/connectors/relevant-sort/connectRelevantSort.js +2 -2
  57. package/cjs/connectors/search-box/connectSearchBox.js +2 -2
  58. package/cjs/connectors/sort-by/connectSortBy.js +2 -2
  59. package/cjs/connectors/stats/connectStats.js +2 -2
  60. package/cjs/connectors/toggle-refinement/connectToggleRefinement.js +10 -10
  61. package/cjs/connectors/trending-items/connectTrendingItems.js +3 -3
  62. package/cjs/connectors/voice-search/connectVoiceSearch.js +3 -3
  63. package/cjs/helpers/components/Highlight.js +3 -3
  64. package/cjs/helpers/components/ReverseHighlight.js +5 -5
  65. package/cjs/helpers/components/ReverseSnippet.js +5 -5
  66. package/cjs/helpers/components/Snippet.js +3 -3
  67. package/cjs/helpers/index.js +2 -3
  68. package/cjs/index.js +2 -3
  69. package/cjs/lib/InstantSearch.js +13 -13
  70. package/cjs/lib/chat/chat.js +19 -19
  71. package/cjs/lib/createHelpers.js +2 -2
  72. package/cjs/lib/infiniteHitsCache/index.js +1 -1
  73. package/cjs/lib/infiniteHitsCache/sessionStorage.js +2 -2
  74. package/cjs/lib/insights/client.js +2 -2
  75. package/cjs/lib/insights/index.js +2 -3
  76. package/cjs/lib/routers/history.js +8 -8
  77. package/cjs/lib/routers/index.js +1 -1
  78. package/cjs/lib/server.js +2 -2
  79. package/cjs/lib/stateMappings/index.js +1 -1
  80. package/cjs/lib/stateMappings/simple.js +4 -4
  81. package/cjs/lib/stateMappings/singleIndex.js +4 -4
  82. package/cjs/lib/templating/prepareTemplateProps.js +7 -7
  83. package/cjs/lib/templating/renderTemplate.js +3 -3
  84. package/cjs/lib/utils/checkIndexUiState.js +14 -14
  85. package/cjs/lib/utils/createSendEventForFacet.js +6 -6
  86. package/cjs/lib/utils/createSendEventForHits.js +6 -6
  87. package/cjs/lib/utils/escape-highlight.js +4 -4
  88. package/cjs/lib/utils/geo-search.js +4 -4
  89. package/cjs/lib/utils/hits-absolute-position.js +2 -2
  90. package/cjs/lib/utils/hits-query-id.js +2 -2
  91. package/cjs/lib/utils/hydrateRecommendCache.js +2 -2
  92. package/cjs/lib/utils/hydrateSearchClient.js +6 -6
  93. package/cjs/lib/utils/mergeSearchParameters.js +4 -4
  94. package/cjs/lib/utils/range.js +5 -5
  95. package/cjs/lib/utils/reverseHighlightedParts.js +2 -2
  96. package/cjs/lib/version.js +1 -1
  97. package/cjs/lib/voiceSearchHelper/index.js +2 -2
  98. package/cjs/middlewares/createInsightsMiddleware.js +13 -13
  99. package/cjs/middlewares/createRouterMiddleware.js +3 -3
  100. package/cjs/templates/carousel/carousel.js +7 -7
  101. package/cjs/widgets/analytics/analytics.js +2 -2
  102. package/cjs/widgets/answers/answers.js +3 -3
  103. package/cjs/widgets/autocomplete/autocomplete.js +281 -0
  104. package/cjs/widgets/breadcrumb/breadcrumb.js +3 -3
  105. package/cjs/widgets/chat/chat.js +73 -76
  106. package/cjs/widgets/clear-refinements/clear-refinements.js +3 -3
  107. package/cjs/widgets/configure/configure.js +3 -3
  108. package/cjs/widgets/configure-related-items/configure-related-items.js +3 -3
  109. package/cjs/widgets/current-refinements/current-refinements.js +3 -3
  110. package/cjs/widgets/dynamic-widgets/dynamic-widgets.js +5 -5
  111. package/cjs/widgets/frequently-bought-together/frequently-bought-together.js +8 -6
  112. package/cjs/widgets/geo-search/GeoSearchRenderer.js +7 -7
  113. package/cjs/widgets/geo-search/createHTMLMarker.js +12 -12
  114. package/cjs/widgets/geo-search/geo-search.js +5 -5
  115. package/cjs/widgets/hierarchical-menu/hierarchical-menu.js +3 -3
  116. package/cjs/widgets/hits/hits.js +7 -7
  117. package/cjs/widgets/hits-per-page/hits-per-page.js +3 -3
  118. package/cjs/widgets/index/index.js +12 -10
  119. package/cjs/widgets/index.js +10 -2
  120. package/cjs/widgets/index.umd.js +10 -2
  121. package/cjs/widgets/infinite-hits/infinite-hits.js +3 -3
  122. package/cjs/widgets/looking-similar/looking-similar.js +6 -6
  123. package/cjs/widgets/menu/menu.js +3 -3
  124. package/cjs/widgets/menu-select/menu-select.js +3 -3
  125. package/cjs/widgets/numeric-menu/numeric-menu.js +3 -3
  126. package/cjs/widgets/pagination/pagination.js +3 -3
  127. package/cjs/widgets/panel/panel.js +3 -3
  128. package/cjs/widgets/places/places.js +4 -4
  129. package/cjs/widgets/powered-by/powered-by.js +3 -3
  130. package/cjs/widgets/query-rule-context/query-rule-context.js +3 -3
  131. package/cjs/widgets/query-rule-custom-data/query-rule-custom-data.js +3 -3
  132. package/cjs/widgets/range-input/range-input.js +7 -7
  133. package/cjs/widgets/range-slider/range-slider.js +7 -7
  134. package/cjs/widgets/rating-menu/rating-menu.js +3 -3
  135. package/cjs/widgets/refinement-list/refinement-list.js +3 -3
  136. package/cjs/widgets/related-products/related-products.js +6 -6
  137. package/cjs/widgets/relevant-sort/relevant-sort.js +3 -3
  138. package/cjs/widgets/search-box/search-box.js +3 -3
  139. package/cjs/widgets/sort-by/sort-by.js +3 -3
  140. package/cjs/widgets/stats/stats.js +3 -3
  141. package/cjs/widgets/toggle-refinement/toggle-refinement.js +3 -3
  142. package/cjs/widgets/trending-items/trending-items.js +6 -6
  143. package/cjs/widgets/voice-search/voice-search.js +3 -3
  144. package/dist/instantsearch.development.d.ts +90 -3
  145. package/dist/instantsearch.development.js +1338 -616
  146. package/dist/instantsearch.development.js.map +1 -1
  147. package/dist/instantsearch.production.d.ts +90 -3
  148. package/dist/instantsearch.production.min.d.ts +90 -3
  149. package/dist/instantsearch.production.min.js +2 -2
  150. package/dist/instantsearch.production.min.js.map +1 -1
  151. package/es/components/Answers/Answers.js +3 -3
  152. package/es/components/Breadcrumb/Breadcrumb.js +1 -1
  153. package/es/components/ClearRefinements/ClearRefinements.js +1 -1
  154. package/es/components/GeoSearchControls/GeoSearchControls.js +1 -1
  155. package/es/components/Highlight/Highlight.js +3 -3
  156. package/es/components/InfiniteHits/InfiniteHits.js +3 -3
  157. package/es/components/MenuSelect/MenuSelect.js +1 -1
  158. package/es/components/Panel/Panel.js +4 -4
  159. package/es/components/RangeInput/RangeInput.js +13 -13
  160. package/es/components/RefinementList/RefinementList.js +15 -15
  161. package/es/components/RefinementList/RefinementListItem.js +1 -1
  162. package/es/components/ReverseHighlight/ReverseHighlight.js +3 -3
  163. package/es/components/ReverseSnippet/ReverseSnippet.js +3 -3
  164. package/es/components/SearchBox/SearchBox.d.ts +4 -0
  165. package/es/components/SearchBox/SearchBox.js +30 -18
  166. package/es/components/Slider/Pit.js +2 -2
  167. package/es/components/Slider/Rheostat.js +13 -13
  168. package/es/components/Slider/Slider.js +18 -18
  169. package/es/components/Snippet/Snippet.js +3 -3
  170. package/es/components/Stats/Stats.js +5 -5
  171. package/es/components/Template/Template.js +18 -18
  172. package/es/components/ToggleRefinement/ToggleRefinement.js +1 -1
  173. package/es/connectors/answers/connectAnswers.js +2 -2
  174. package/es/connectors/autocomplete/connectAutocomplete.js +2 -2
  175. package/es/connectors/breadcrumb/connectBreadcrumb.js +6 -6
  176. package/es/connectors/chat/connectChat.d.ts +20 -0
  177. package/es/connectors/chat/connectChat.js +29 -8
  178. package/es/connectors/clear-refinements/connectClearRefinements.js +7 -7
  179. package/es/connectors/configure/connectConfigure.js +2 -2
  180. package/es/connectors/configure-related-items/connectConfigureRelatedItems.js +7 -7
  181. package/es/connectors/current-refinements/connectCurrentRefinements.js +7 -7
  182. package/es/connectors/dynamic-widgets/connectDynamicWidgets.js +2 -2
  183. package/es/connectors/frequently-bought-together/connectFrequentlyBoughtTogether.d.ts +4 -0
  184. package/es/connectors/frequently-bought-together/connectFrequentlyBoughtTogether.js +6 -3
  185. package/es/connectors/geo-search/connectGeoSearch.js +2 -2
  186. package/es/connectors/hierarchical-menu/connectHierarchicalMenu.js +28 -16
  187. package/es/connectors/hits/connectHits.js +2 -2
  188. package/es/connectors/hits-per-page/connectHitsPerPage.js +7 -7
  189. package/es/connectors/infinite-hits/connectInfiniteHits.js +11 -11
  190. package/es/connectors/looking-similar/connectLookingSimilar.js +3 -3
  191. package/es/connectors/menu/connectMenu.js +8 -8
  192. package/es/connectors/numeric-menu/connectNumericMenu.js +7 -7
  193. package/es/connectors/pagination/Paginator.js +5 -5
  194. package/es/connectors/pagination/connectPagination.js +2 -2
  195. package/es/connectors/powered-by/connectPoweredBy.js +2 -2
  196. package/es/connectors/query-rules/connectQueryRules.js +7 -7
  197. package/es/connectors/range/connectRange.js +22 -22
  198. package/es/connectors/rating-menu/connectRatingMenu.js +9 -9
  199. package/es/connectors/refinement-list/connectRefinementList.js +4 -4
  200. package/es/connectors/related-products/connectRelatedProducts.js +3 -3
  201. package/es/connectors/relevant-sort/connectRelevantSort.js +2 -2
  202. package/es/connectors/search-box/connectSearchBox.js +2 -2
  203. package/es/connectors/sort-by/connectSortBy.js +2 -2
  204. package/es/connectors/stats/connectStats.js +2 -2
  205. package/es/connectors/toggle-refinement/connectToggleRefinement.js +10 -10
  206. package/es/connectors/trending-items/connectTrendingItems.js +3 -3
  207. package/es/connectors/voice-search/connectVoiceSearch.js +2 -2
  208. package/es/helpers/components/Highlight.js +3 -3
  209. package/es/helpers/components/ReverseHighlight.js +5 -5
  210. package/es/helpers/components/ReverseSnippet.js +5 -5
  211. package/es/helpers/components/Snippet.js +3 -3
  212. package/es/lib/InstantSearch.d.ts +1 -1
  213. package/es/lib/InstantSearch.js +12 -12
  214. package/es/lib/chat/chat.js +19 -19
  215. package/es/lib/createHelpers.js +2 -2
  216. package/es/lib/infiniteHitsCache/sessionStorage.js +2 -2
  217. package/es/lib/insights/client.js +2 -2
  218. package/es/lib/routers/history.js +7 -7
  219. package/es/lib/server.js +2 -2
  220. package/es/lib/stateMappings/simple.js +4 -4
  221. package/es/lib/stateMappings/singleIndex.js +4 -4
  222. package/es/lib/templating/prepareTemplateProps.js +7 -7
  223. package/es/lib/templating/renderTemplate.js +2 -2
  224. package/es/lib/utils/checkIndexUiState.js +14 -14
  225. package/es/lib/utils/createSendEventForFacet.js +6 -6
  226. package/es/lib/utils/createSendEventForHits.js +6 -6
  227. package/es/lib/utils/escape-highlight.js +4 -4
  228. package/es/lib/utils/geo-search.js +4 -4
  229. package/es/lib/utils/hits-absolute-position.js +2 -2
  230. package/es/lib/utils/hits-query-id.js +2 -2
  231. package/es/lib/utils/hydrateRecommendCache.js +2 -2
  232. package/es/lib/utils/hydrateSearchClient.js +6 -6
  233. package/es/lib/utils/mergeSearchParameters.js +4 -4
  234. package/es/lib/utils/range.js +5 -5
  235. package/es/lib/utils/reverseHighlightedParts.js +2 -2
  236. package/es/lib/version.d.ts +1 -1
  237. package/es/lib/version.js +1 -1
  238. package/es/lib/voiceSearchHelper/index.js +2 -2
  239. package/es/middlewares/createInsightsMiddleware.js +13 -13
  240. package/es/middlewares/createRouterMiddleware.js +2 -2
  241. package/es/templates/carousel/carousel.js +7 -7
  242. package/es/types/widget.d.ts +8 -1
  243. package/es/widgets/analytics/analytics.js +2 -2
  244. package/es/widgets/answers/answers.js +2 -2
  245. package/es/widgets/autocomplete/autocomplete.d.ts +57 -0
  246. package/es/widgets/autocomplete/autocomplete.js +274 -0
  247. package/es/widgets/breadcrumb/breadcrumb.js +2 -2
  248. package/es/widgets/chat/chat.d.ts +4 -0
  249. package/es/widgets/chat/chat.js +72 -75
  250. package/es/widgets/clear-refinements/clear-refinements.js +2 -2
  251. package/es/widgets/configure/configure.js +2 -2
  252. package/es/widgets/configure-related-items/configure-related-items.js +2 -2
  253. package/es/widgets/current-refinements/current-refinements.js +2 -2
  254. package/es/widgets/dynamic-widgets/dynamic-widgets.js +4 -4
  255. package/es/widgets/frequently-bought-together/frequently-bought-together.js +7 -5
  256. package/es/widgets/geo-search/GeoSearchRenderer.js +6 -6
  257. package/es/widgets/geo-search/createHTMLMarker.js +12 -12
  258. package/es/widgets/geo-search/geo-search.js +4 -4
  259. package/es/widgets/hierarchical-menu/hierarchical-menu.js +2 -2
  260. package/es/widgets/hits/hits.js +6 -6
  261. package/es/widgets/hits-per-page/hits-per-page.js +2 -2
  262. package/es/widgets/index/index.d.ts +1 -1
  263. package/es/widgets/index/index.js +11 -9
  264. package/es/widgets/index.d.ts +1 -0
  265. package/es/widgets/index.js +1 -0
  266. package/es/widgets/index.umd.d.ts +1 -0
  267. package/es/widgets/index.umd.js +1 -0
  268. package/es/widgets/infinite-hits/infinite-hits.js +2 -2
  269. package/es/widgets/looking-similar/looking-similar.js +5 -5
  270. package/es/widgets/menu/menu.js +2 -2
  271. package/es/widgets/menu-select/menu-select.js +2 -2
  272. package/es/widgets/numeric-menu/numeric-menu.js +2 -2
  273. package/es/widgets/pagination/pagination.js +2 -2
  274. package/es/widgets/panel/panel.js +2 -2
  275. package/es/widgets/places/places.js +4 -4
  276. package/es/widgets/powered-by/powered-by.js +2 -2
  277. package/es/widgets/query-rule-context/query-rule-context.js +2 -2
  278. package/es/widgets/query-rule-custom-data/query-rule-custom-data.js +2 -2
  279. package/es/widgets/range-input/range-input.js +6 -6
  280. package/es/widgets/range-slider/range-slider.js +6 -6
  281. package/es/widgets/rating-menu/rating-menu.js +2 -2
  282. package/es/widgets/refinement-list/refinement-list.js +2 -2
  283. package/es/widgets/related-products/related-products.js +5 -5
  284. package/es/widgets/relevant-sort/relevant-sort.js +2 -2
  285. package/es/widgets/search-box/search-box.js +2 -2
  286. package/es/widgets/sort-by/sort-by.js +2 -2
  287. package/es/widgets/stats/stats.js +2 -2
  288. package/es/widgets/toggle-refinement/toggle-refinement.js +2 -2
  289. package/es/widgets/trending-items/trending-items.js +5 -5
  290. package/es/widgets/voice-search/voice-search.js +2 -2
  291. package/package.json +6 -6
@@ -1,5 +1,8 @@
1
1
  import { AbstractChat } from 'ai';
2
2
  import { AlgoliaSearchHelper } from 'algoliasearch-helper';
3
+ import type { AutocompleteClassNames } from 'instantsearch-ui-components';
4
+ import type { AutocompleteIndexClassNames } from 'instantsearch-ui-components';
5
+ import type { AutocompleteIndexConfig } from 'instantsearch-ui-components';
3
6
  import { Banner } from 'algoliasearch-helper';
4
7
  import type { CarouselProps } from 'instantsearch-ui-components';
5
8
  import { CompositionClient } from 'algoliasearch-helper/types/algoliasearch.js';
@@ -30,6 +33,7 @@ import { SearchParameters } from 'algoliasearch-helper';
30
33
  import { SearchResults } from 'algoliasearch-helper';
31
34
  import type { TrendingItemsProps } from 'instantsearch-ui-components';
32
35
  import type { UIMessage } from 'ai';
36
+ import type { UserClientSideTool } from 'instantsearch-ui-components';
33
37
  import { VNode } from 'preact';
34
38
  import type { VNode as VNode_2 } from 'instantsearch-ui-components';
35
39
 
@@ -267,6 +271,8 @@ declare type AutocompleteConnectorParams = {
267
271
  escapeHTML?: boolean;
268
272
  };
269
273
 
274
+ declare type AutocompleteCSSClasses = Partial<AutocompleteClassNames>;
275
+
270
276
  declare type AutocompleteRenderState = {
271
277
  /**
272
278
  * The current value of the query.
@@ -303,6 +309,8 @@ declare type AutocompleteRenderState = {
303
309
  refine: (query: string) => void;
304
310
  };
305
311
 
312
+ declare type AutocompleteTemplates<TItem extends BaseHit> = Partial<Record<string, TItem>>;
313
+
306
314
  declare type AutocompleteWidgetDescription = {
307
315
  $$type: 'ais.autocomplete';
308
316
  renderState: AutocompleteRenderState;
@@ -314,6 +322,33 @@ declare type AutocompleteWidgetDescription = {
314
322
  };
315
323
  };
316
324
 
325
+ declare type AutocompleteWidgetParams<TItem extends BaseHit> = {
326
+ /**
327
+ * CSS Selector or HTMLElement to insert the widget.
328
+ */
329
+ container: string | HTMLElement;
330
+ /**
331
+ * Indices to use in the Autocomplete.
332
+ */
333
+ indices?: Array<IndexConfig<TItem>>;
334
+ /**
335
+ * Index to use for retrieving and showing query suggestions.
336
+ */
337
+ showSuggestions?: Partial<Pick<IndexConfig<{
338
+ query: string;
339
+ }>, 'indexName' | 'getURL' | 'templates' | 'cssClasses'>>;
340
+ getSearchPageURL?: (nextUiState: IndexUiState) => string;
341
+ onSelect?: AutocompleteIndexConfig<TItem>['onSelect'];
342
+ /**
343
+ * Templates to use for the widget.
344
+ */
345
+ templates?: AutocompleteTemplates<TItem>;
346
+ /**
347
+ * CSS classes to add.
348
+ */
349
+ cssClasses?: AutocompleteCSSClasses;
350
+ };
351
+
317
352
  declare type BaseHit = Record<string, any>;
318
353
 
319
354
  declare type BindEventForHits = BuiltInBindEventForHits & CustomBindEventForHits;
@@ -595,6 +630,22 @@ declare type ChatRenderState<TUiMessage extends UIMessage = UIMessage> = {
595
630
  * manually to regenerate the AI response.
596
631
  */
597
632
  setMessages: (messages: TUiMessage[] | ((m: TUiMessage[]) => TUiMessage[])) => void;
633
+ /**
634
+ * Whether the chat is in the process of clearing messages.
635
+ */
636
+ isClearing: boolean;
637
+ /**
638
+ * Clear all messages.
639
+ */
640
+ clearMessages: () => void;
641
+ /**
642
+ * Callback to be called when the clear transition ends.
643
+ */
644
+ onClearTransitionEnd: () => void;
645
+ /**
646
+ * Tools configuration passed to the connector.
647
+ */
648
+ tools: Record<string, Omit<UserClientSideTool, 'layoutComponent'>>;
598
649
  } & Pick<AbstractChat<TUiMessage>, 'addToolResult' | 'clearError' | 'error' | 'id' | 'messages' | 'regenerate' | 'resumeStream' | 'sendMessage' | 'status' | 'stop'>;
599
650
 
600
651
  declare type ChatWidgetDescription<TUiMessage extends UIMessage = UIMessage> = {
@@ -3866,6 +3917,10 @@ declare type Expand<T> = T extends infer O ? {
3866
3917
  /** @deprecated answers is no longer supported */
3867
3918
  declare const EXPERIMENTAL_answers: AnswersWidget;
3868
3919
 
3920
+ declare function EXPERIMENTAL_autocomplete<TItem extends BaseHit = BaseHit>(widgetParams: AutocompleteWidgetParams<TItem> & AutocompleteConnectorParams): (IndexWidget<UiState> | Widget<SearchBoxWidgetDescription & {
3921
+ widgetParams: SearchBoxConnectorParams & object;
3922
+ }>)[];
3923
+
3869
3924
  /** @deprecated use relatedItems instead */
3870
3925
  declare const EXPERIMENTAL_configureRelatedItems: ConfigureRelatedItemsWidget;
3871
3926
 
@@ -3892,6 +3947,10 @@ declare type FrequentlyBoughtTogetherConnectorParams<THit extends NonNullable<ob
3892
3947
  * Threshold for the recommendations confidence score (between 0 and 100). Only recommendations with a greater score are returned.
3893
3948
  */
3894
3949
  threshold?: number;
3950
+ /**
3951
+ * List of search parameters to send.
3952
+ */
3953
+ fallbackParameters?: Omit<PlainSearchParameters, 'page' | 'hitsPerPage' | 'offset' | 'length'>;
3895
3954
  /**
3896
3955
  * The maximum number of recommendations to return.
3897
3956
  */
@@ -4794,6 +4853,25 @@ declare type HTMLMarkerArguments = {
4794
4853
 
4795
4854
  declare const index: (widgetParams: IndexWidgetParams) => IndexWidget;
4796
4855
 
4856
+ declare type IndexConfig<TItem extends BaseHit> = AutocompleteIndexConfig<TItem> & {
4857
+ templates?: Partial<{
4858
+ /**
4859
+ * Template to use for the header, before the list of items.
4860
+ */
4861
+ header: Template<{
4862
+ items: TItem[];
4863
+ }>;
4864
+ /**
4865
+ * Template to use for each result. This template will receive an object containing a single record.
4866
+ */
4867
+ item: Template<{
4868
+ item: TItem;
4869
+ onSelect: () => void;
4870
+ }>;
4871
+ }>;
4872
+ cssClasses?: Partial<AutocompleteIndexClassNames>;
4873
+ };
4874
+
4797
4875
  declare type IndexInitOptions = {
4798
4876
  instantSearchInstance: InstantSearch;
4799
4877
  parent: IndexWidget | null;
@@ -4821,7 +4899,7 @@ declare type IndexWidget<TUiState extends UiState = UiState> = Omit<Widget<Index
4821
4899
  getParent: () => IndexWidget | null;
4822
4900
  getWidgets: () => Array<Widget | IndexWidget>;
4823
4901
  createURL: (nextState: SearchParameters | ((state: IndexUiState) => IndexUiState)) => string;
4824
- addWidgets: (widgets: Array<Widget | IndexWidget | Widget[]>) => IndexWidget;
4902
+ addWidgets: (widgets: Array<Widget | IndexWidget | Array<IndexWidget | Widget>>) => IndexWidget;
4825
4903
  removeWidgets: (widgets: Array<Widget | IndexWidget | Widget[]>) => IndexWidget;
4826
4904
  init: (options: IndexInitOptions) => void;
4827
4905
  render: (options: IndexRenderOptions) => void;
@@ -5232,7 +5310,7 @@ declare class InstantSearch<TUiState extends UiState = UiState, TRouteState = TU
5232
5310
  * Widgets can be added either before or after InstantSearch has started.
5233
5311
  * @param widgets The array of widgets to add to InstantSearch.
5234
5312
  */
5235
- addWidgets(widgets: Array<Widget | IndexWidget | Widget[]>): this;
5313
+ addWidgets(widgets: Array<Widget | IndexWidget | Array<IndexWidget | Widget>>): this;
5236
5314
  /**
5237
5315
  * Removes a widget from the search instance.
5238
5316
  * @deprecated This method will still be supported in 4.x releases, but not further. It is replaced by `removeWidgets([widget])`
@@ -6302,6 +6380,14 @@ declare type ParamTrackedFilters = {
6302
6380
 
6303
6381
  declare type ParamTransformRuleContexts = (ruleContexts: string[]) => string[];
6304
6382
 
6383
+ declare type Parent = {
6384
+ /**
6385
+ * This gets dynamically added by the `index` widget.
6386
+ * If the widget has gone through `addWidget`, it will have a parent.
6387
+ */
6388
+ parent?: IndexWidget;
6389
+ };
6390
+
6305
6391
  declare type ParseURL<TRouteState> = (args: {
6306
6392
  qsModule: typeof qs_2;
6307
6393
  location: Location;
@@ -8634,7 +8720,7 @@ declare type VoiceSearchWidgetParams = {
8634
8720
 
8635
8721
  declare type Widget<TWidgetDescription extends WidgetDescription & WidgetParams = {
8636
8722
  $$type: string;
8637
- }> = Expand<RequiredWidgetLifeCycle<TWidgetDescription> & WidgetType<TWidgetDescription> & UiStateLifeCycle<TWidgetDescription> & RenderStateLifeCycle<TWidgetDescription>> & (SearchWidget<TWidgetDescription> | RecommendWidget<TWidgetDescription>);
8723
+ }> = Expand<Parent & RequiredWidgetLifeCycle<TWidgetDescription> & WidgetType<TWidgetDescription> & UiStateLifeCycle<TWidgetDescription> & RenderStateLifeCycle<TWidgetDescription>> & (SearchWidget<TWidgetDescription> | RecommendWidget<TWidgetDescription>);
8638
8724
 
8639
8725
  declare type WidgetDescription = {
8640
8726
  $$type: string;
@@ -8672,6 +8758,7 @@ declare namespace widgets {
8672
8758
  EXPERIMENTAL_dynamicWidgets,
8673
8759
  dynamicWidgets,
8674
8760
  analytics,
8761
+ EXPERIMENTAL_autocomplete,
8675
8762
  breadcrumb,
8676
8763
  clearRefinements,
8677
8764
  configure,
@@ -1,5 +1,8 @@
1
1
  import { AbstractChat } from 'ai';
2
2
  import { AlgoliaSearchHelper } from 'algoliasearch-helper';
3
+ import type { AutocompleteClassNames } from 'instantsearch-ui-components';
4
+ import type { AutocompleteIndexClassNames } from 'instantsearch-ui-components';
5
+ import type { AutocompleteIndexConfig } from 'instantsearch-ui-components';
3
6
  import { Banner } from 'algoliasearch-helper';
4
7
  import type { CarouselProps } from 'instantsearch-ui-components';
5
8
  import { CompositionClient } from 'algoliasearch-helper/types/algoliasearch.js';
@@ -30,6 +33,7 @@ import { SearchParameters } from 'algoliasearch-helper';
30
33
  import { SearchResults } from 'algoliasearch-helper';
31
34
  import type { TrendingItemsProps } from 'instantsearch-ui-components';
32
35
  import type { UIMessage } from 'ai';
36
+ import type { UserClientSideTool } from 'instantsearch-ui-components';
33
37
  import { VNode } from 'preact';
34
38
  import type { VNode as VNode_2 } from 'instantsearch-ui-components';
35
39
 
@@ -267,6 +271,8 @@ declare type AutocompleteConnectorParams = {
267
271
  escapeHTML?: boolean;
268
272
  };
269
273
 
274
+ declare type AutocompleteCSSClasses = Partial<AutocompleteClassNames>;
275
+
270
276
  declare type AutocompleteRenderState = {
271
277
  /**
272
278
  * The current value of the query.
@@ -303,6 +309,8 @@ declare type AutocompleteRenderState = {
303
309
  refine: (query: string) => void;
304
310
  };
305
311
 
312
+ declare type AutocompleteTemplates<TItem extends BaseHit> = Partial<Record<string, TItem>>;
313
+
306
314
  declare type AutocompleteWidgetDescription = {
307
315
  $$type: 'ais.autocomplete';
308
316
  renderState: AutocompleteRenderState;
@@ -314,6 +322,33 @@ declare type AutocompleteWidgetDescription = {
314
322
  };
315
323
  };
316
324
 
325
+ declare type AutocompleteWidgetParams<TItem extends BaseHit> = {
326
+ /**
327
+ * CSS Selector or HTMLElement to insert the widget.
328
+ */
329
+ container: string | HTMLElement;
330
+ /**
331
+ * Indices to use in the Autocomplete.
332
+ */
333
+ indices?: Array<IndexConfig<TItem>>;
334
+ /**
335
+ * Index to use for retrieving and showing query suggestions.
336
+ */
337
+ showSuggestions?: Partial<Pick<IndexConfig<{
338
+ query: string;
339
+ }>, 'indexName' | 'getURL' | 'templates' | 'cssClasses'>>;
340
+ getSearchPageURL?: (nextUiState: IndexUiState) => string;
341
+ onSelect?: AutocompleteIndexConfig<TItem>['onSelect'];
342
+ /**
343
+ * Templates to use for the widget.
344
+ */
345
+ templates?: AutocompleteTemplates<TItem>;
346
+ /**
347
+ * CSS classes to add.
348
+ */
349
+ cssClasses?: AutocompleteCSSClasses;
350
+ };
351
+
317
352
  declare type BaseHit = Record<string, any>;
318
353
 
319
354
  declare type BindEventForHits = BuiltInBindEventForHits & CustomBindEventForHits;
@@ -595,6 +630,22 @@ declare type ChatRenderState<TUiMessage extends UIMessage = UIMessage> = {
595
630
  * manually to regenerate the AI response.
596
631
  */
597
632
  setMessages: (messages: TUiMessage[] | ((m: TUiMessage[]) => TUiMessage[])) => void;
633
+ /**
634
+ * Whether the chat is in the process of clearing messages.
635
+ */
636
+ isClearing: boolean;
637
+ /**
638
+ * Clear all messages.
639
+ */
640
+ clearMessages: () => void;
641
+ /**
642
+ * Callback to be called when the clear transition ends.
643
+ */
644
+ onClearTransitionEnd: () => void;
645
+ /**
646
+ * Tools configuration passed to the connector.
647
+ */
648
+ tools: Record<string, Omit<UserClientSideTool, 'layoutComponent'>>;
598
649
  } & Pick<AbstractChat<TUiMessage>, 'addToolResult' | 'clearError' | 'error' | 'id' | 'messages' | 'regenerate' | 'resumeStream' | 'sendMessage' | 'status' | 'stop'>;
599
650
 
600
651
  declare type ChatWidgetDescription<TUiMessage extends UIMessage = UIMessage> = {
@@ -3866,6 +3917,10 @@ declare type Expand<T> = T extends infer O ? {
3866
3917
  /** @deprecated answers is no longer supported */
3867
3918
  declare const EXPERIMENTAL_answers: AnswersWidget;
3868
3919
 
3920
+ declare function EXPERIMENTAL_autocomplete<TItem extends BaseHit = BaseHit>(widgetParams: AutocompleteWidgetParams<TItem> & AutocompleteConnectorParams): (IndexWidget<UiState> | Widget<SearchBoxWidgetDescription & {
3921
+ widgetParams: SearchBoxConnectorParams & object;
3922
+ }>)[];
3923
+
3869
3924
  /** @deprecated use relatedItems instead */
3870
3925
  declare const EXPERIMENTAL_configureRelatedItems: ConfigureRelatedItemsWidget;
3871
3926
 
@@ -3892,6 +3947,10 @@ declare type FrequentlyBoughtTogetherConnectorParams<THit extends NonNullable<ob
3892
3947
  * Threshold for the recommendations confidence score (between 0 and 100). Only recommendations with a greater score are returned.
3893
3948
  */
3894
3949
  threshold?: number;
3950
+ /**
3951
+ * List of search parameters to send.
3952
+ */
3953
+ fallbackParameters?: Omit<PlainSearchParameters, 'page' | 'hitsPerPage' | 'offset' | 'length'>;
3895
3954
  /**
3896
3955
  * The maximum number of recommendations to return.
3897
3956
  */
@@ -4794,6 +4853,25 @@ declare type HTMLMarkerArguments = {
4794
4853
 
4795
4854
  declare const index: (widgetParams: IndexWidgetParams) => IndexWidget;
4796
4855
 
4856
+ declare type IndexConfig<TItem extends BaseHit> = AutocompleteIndexConfig<TItem> & {
4857
+ templates?: Partial<{
4858
+ /**
4859
+ * Template to use for the header, before the list of items.
4860
+ */
4861
+ header: Template<{
4862
+ items: TItem[];
4863
+ }>;
4864
+ /**
4865
+ * Template to use for each result. This template will receive an object containing a single record.
4866
+ */
4867
+ item: Template<{
4868
+ item: TItem;
4869
+ onSelect: () => void;
4870
+ }>;
4871
+ }>;
4872
+ cssClasses?: Partial<AutocompleteIndexClassNames>;
4873
+ };
4874
+
4797
4875
  declare type IndexInitOptions = {
4798
4876
  instantSearchInstance: InstantSearch;
4799
4877
  parent: IndexWidget | null;
@@ -4821,7 +4899,7 @@ declare type IndexWidget<TUiState extends UiState = UiState> = Omit<Widget<Index
4821
4899
  getParent: () => IndexWidget | null;
4822
4900
  getWidgets: () => Array<Widget | IndexWidget>;
4823
4901
  createURL: (nextState: SearchParameters | ((state: IndexUiState) => IndexUiState)) => string;
4824
- addWidgets: (widgets: Array<Widget | IndexWidget | Widget[]>) => IndexWidget;
4902
+ addWidgets: (widgets: Array<Widget | IndexWidget | Array<IndexWidget | Widget>>) => IndexWidget;
4825
4903
  removeWidgets: (widgets: Array<Widget | IndexWidget | Widget[]>) => IndexWidget;
4826
4904
  init: (options: IndexInitOptions) => void;
4827
4905
  render: (options: IndexRenderOptions) => void;
@@ -5232,7 +5310,7 @@ declare class InstantSearch<TUiState extends UiState = UiState, TRouteState = TU
5232
5310
  * Widgets can be added either before or after InstantSearch has started.
5233
5311
  * @param widgets The array of widgets to add to InstantSearch.
5234
5312
  */
5235
- addWidgets(widgets: Array<Widget | IndexWidget | Widget[]>): this;
5313
+ addWidgets(widgets: Array<Widget | IndexWidget | Array<IndexWidget | Widget>>): this;
5236
5314
  /**
5237
5315
  * Removes a widget from the search instance.
5238
5316
  * @deprecated This method will still be supported in 4.x releases, but not further. It is replaced by `removeWidgets([widget])`
@@ -6302,6 +6380,14 @@ declare type ParamTrackedFilters = {
6302
6380
 
6303
6381
  declare type ParamTransformRuleContexts = (ruleContexts: string[]) => string[];
6304
6382
 
6383
+ declare type Parent = {
6384
+ /**
6385
+ * This gets dynamically added by the `index` widget.
6386
+ * If the widget has gone through `addWidget`, it will have a parent.
6387
+ */
6388
+ parent?: IndexWidget;
6389
+ };
6390
+
6305
6391
  declare type ParseURL<TRouteState> = (args: {
6306
6392
  qsModule: typeof qs_2;
6307
6393
  location: Location;
@@ -8634,7 +8720,7 @@ declare type VoiceSearchWidgetParams = {
8634
8720
 
8635
8721
  declare type Widget<TWidgetDescription extends WidgetDescription & WidgetParams = {
8636
8722
  $$type: string;
8637
- }> = Expand<RequiredWidgetLifeCycle<TWidgetDescription> & WidgetType<TWidgetDescription> & UiStateLifeCycle<TWidgetDescription> & RenderStateLifeCycle<TWidgetDescription>> & (SearchWidget<TWidgetDescription> | RecommendWidget<TWidgetDescription>);
8723
+ }> = Expand<Parent & RequiredWidgetLifeCycle<TWidgetDescription> & WidgetType<TWidgetDescription> & UiStateLifeCycle<TWidgetDescription> & RenderStateLifeCycle<TWidgetDescription>> & (SearchWidget<TWidgetDescription> | RecommendWidget<TWidgetDescription>);
8638
8724
 
8639
8725
  declare type WidgetDescription = {
8640
8726
  $$type: string;
@@ -8672,6 +8758,7 @@ declare namespace widgets {
8672
8758
  EXPERIMENTAL_dynamicWidgets,
8673
8759
  dynamicWidgets,
8674
8760
  analytics,
8761
+ EXPERIMENTAL_autocomplete,
8675
8762
  breadcrumb,
8676
8763
  clearRefinements,
8677
8764
  configure,