@seekora-ai/ui-sdk-react 0.0.0-stage-20260517092419

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 (357) hide show
  1. package/dist/components/Breadcrumb.d.ts +43 -0
  2. package/dist/components/Breadcrumb.d.ts.map +1 -0
  3. package/dist/components/Breadcrumb.js +119 -0
  4. package/dist/components/ClearRefinements.d.ts +42 -0
  5. package/dist/components/ClearRefinements.d.ts.map +1 -0
  6. package/dist/components/ClearRefinements.js +81 -0
  7. package/dist/components/CurrentRefinements.d.ts +63 -0
  8. package/dist/components/CurrentRefinements.d.ts.map +1 -0
  9. package/dist/components/CurrentRefinements.js +302 -0
  10. package/dist/components/FacetDropdown.d.ts +94 -0
  11. package/dist/components/FacetDropdown.d.ts.map +1 -0
  12. package/dist/components/FacetDropdown.js +396 -0
  13. package/dist/components/Facets.d.ts +118 -0
  14. package/dist/components/Facets.d.ts.map +1 -0
  15. package/dist/components/Facets.js +785 -0
  16. package/dist/components/FederatedDropdown.d.ts +98 -0
  17. package/dist/components/FederatedDropdown.d.ts.map +1 -0
  18. package/dist/components/FederatedDropdown.js +526 -0
  19. package/dist/components/HierarchicalMenu.d.ts +55 -0
  20. package/dist/components/HierarchicalMenu.d.ts.map +1 -0
  21. package/dist/components/HierarchicalMenu.js +276 -0
  22. package/dist/components/Highlight.d.ts +51 -0
  23. package/dist/components/Highlight.d.ts.map +1 -0
  24. package/dist/components/Highlight.js +155 -0
  25. package/dist/components/HitsPerPage.d.ts +41 -0
  26. package/dist/components/HitsPerPage.d.ts.map +1 -0
  27. package/dist/components/HitsPerPage.js +82 -0
  28. package/dist/components/InfiniteHits.d.ts +51 -0
  29. package/dist/components/InfiniteHits.d.ts.map +1 -0
  30. package/dist/components/InfiniteHits.js +173 -0
  31. package/dist/components/MobileFilters.d.ts +71 -0
  32. package/dist/components/MobileFilters.d.ts.map +1 -0
  33. package/dist/components/MobileFilters.js +242 -0
  34. package/dist/components/Pagination.d.ts +90 -0
  35. package/dist/components/Pagination.d.ts.map +1 -0
  36. package/dist/components/Pagination.js +298 -0
  37. package/dist/components/QuerySuggestions.d.ts +36 -0
  38. package/dist/components/QuerySuggestions.d.ts.map +1 -0
  39. package/dist/components/QuerySuggestions.js +71 -0
  40. package/dist/components/QuerySuggestionsDropdown.d.ts +82 -0
  41. package/dist/components/QuerySuggestionsDropdown.d.ts.map +1 -0
  42. package/dist/components/QuerySuggestionsDropdown.js +394 -0
  43. package/dist/components/RangeInput.d.ts +58 -0
  44. package/dist/components/RangeInput.d.ts.map +1 -0
  45. package/dist/components/RangeInput.js +203 -0
  46. package/dist/components/RangeSlider.d.ts +51 -0
  47. package/dist/components/RangeSlider.d.ts.map +1 -0
  48. package/dist/components/RangeSlider.js +262 -0
  49. package/dist/components/Recommendations.d.ts +89 -0
  50. package/dist/components/Recommendations.d.ts.map +1 -0
  51. package/dist/components/Recommendations.js +256 -0
  52. package/dist/components/RichQuerySuggestions.d.ts +88 -0
  53. package/dist/components/RichQuerySuggestions.d.ts.map +1 -0
  54. package/dist/components/RichQuerySuggestions.js +498 -0
  55. package/dist/components/SearchBar.d.ts +57 -0
  56. package/dist/components/SearchBar.d.ts.map +1 -0
  57. package/dist/components/SearchBar.js +361 -0
  58. package/dist/components/SearchBarWithSuggestions.d.ts +105 -0
  59. package/dist/components/SearchBarWithSuggestions.d.ts.map +1 -0
  60. package/dist/components/SearchBarWithSuggestions.js +275 -0
  61. package/dist/components/SearchLayout.d.ts +35 -0
  62. package/dist/components/SearchLayout.d.ts.map +1 -0
  63. package/dist/components/SearchLayout.js +61 -0
  64. package/dist/components/SearchProvider.d.ts +35 -0
  65. package/dist/components/SearchProvider.d.ts.map +1 -0
  66. package/dist/components/SearchProvider.js +53 -0
  67. package/dist/components/SearchResults.d.ts +57 -0
  68. package/dist/components/SearchResults.d.ts.map +1 -0
  69. package/dist/components/SearchResults.js +456 -0
  70. package/dist/components/SortBy.d.ts +84 -0
  71. package/dist/components/SortBy.d.ts.map +1 -0
  72. package/dist/components/SortBy.js +183 -0
  73. package/dist/components/Stats.d.ts +51 -0
  74. package/dist/components/Stats.d.ts.map +1 -0
  75. package/dist/components/Stats.js +201 -0
  76. package/dist/components/primitives/ActionButtons.d.ts +27 -0
  77. package/dist/components/primitives/ActionButtons.d.ts.map +1 -0
  78. package/dist/components/primitives/ActionButtons.js +102 -0
  79. package/dist/components/primitives/AnalyticsProvider.d.ts +22 -0
  80. package/dist/components/primitives/AnalyticsProvider.d.ts.map +1 -0
  81. package/dist/components/primitives/AnalyticsProvider.js +87 -0
  82. package/dist/components/primitives/BadgeList.d.ts +14 -0
  83. package/dist/components/primitives/BadgeList.d.ts.map +1 -0
  84. package/dist/components/primitives/BadgeList.js +65 -0
  85. package/dist/components/primitives/CustomSelect.d.ts +40 -0
  86. package/dist/components/primitives/CustomSelect.d.ts.map +1 -0
  87. package/dist/components/primitives/CustomSelect.js +196 -0
  88. package/dist/components/primitives/ImageDisplay.d.ts +28 -0
  89. package/dist/components/primitives/ImageDisplay.d.ts.map +1 -0
  90. package/dist/components/primitives/ImageDisplay.js +127 -0
  91. package/dist/components/primitives/ImageZoom.d.ts +33 -0
  92. package/dist/components/primitives/ImageZoom.d.ts.map +1 -0
  93. package/dist/components/primitives/ImageZoom.js +433 -0
  94. package/dist/components/primitives/PriceDisplay.d.ts +21 -0
  95. package/dist/components/primitives/PriceDisplay.d.ts.map +1 -0
  96. package/dist/components/primitives/PriceDisplay.js +44 -0
  97. package/dist/components/primitives/RatingDisplay.d.ts +43 -0
  98. package/dist/components/primitives/RatingDisplay.d.ts.map +1 -0
  99. package/dist/components/primitives/RatingDisplay.js +114 -0
  100. package/dist/components/primitives/VariantSelector.d.ts +30 -0
  101. package/dist/components/primitives/VariantSelector.d.ts.map +1 -0
  102. package/dist/components/primitives/VariantSelector.js +155 -0
  103. package/dist/components/primitives/VariantSwatches.d.ts +28 -0
  104. package/dist/components/primitives/VariantSwatches.d.ts.map +1 -0
  105. package/dist/components/primitives/VariantSwatches.js +188 -0
  106. package/dist/components/primitives/index.d.ts +12 -0
  107. package/dist/components/primitives/index.d.ts.map +1 -0
  108. package/dist/components/primitives/index.js +11 -0
  109. package/dist/components/primitives/withAnalytics.d.ts +24 -0
  110. package/dist/components/primitives/withAnalytics.d.ts.map +1 -0
  111. package/dist/components/primitives/withAnalytics.js +73 -0
  112. package/dist/components/product-page/ProductGallery.d.ts +26 -0
  113. package/dist/components/product-page/ProductGallery.d.ts.map +1 -0
  114. package/dist/components/product-page/ProductGallery.js +13 -0
  115. package/dist/components/product-page/ProductInfo.d.ts +44 -0
  116. package/dist/components/product-page/ProductInfo.d.ts.map +1 -0
  117. package/dist/components/product-page/ProductInfo.js +34 -0
  118. package/dist/components/product-page/ProductRecommendations.d.ts +21 -0
  119. package/dist/components/product-page/ProductRecommendations.d.ts.map +1 -0
  120. package/dist/components/product-page/ProductRecommendations.js +17 -0
  121. package/dist/components/product-page/index.d.ts +4 -0
  122. package/dist/components/product-page/index.d.ts.map +1 -0
  123. package/dist/components/product-page/index.js +3 -0
  124. package/dist/components/section-primitives/SectionError.d.ts +11 -0
  125. package/dist/components/section-primitives/SectionError.d.ts.map +1 -0
  126. package/dist/components/section-primitives/SectionError.js +13 -0
  127. package/dist/components/section-primitives/SectionItemGrid.d.ts +18 -0
  128. package/dist/components/section-primitives/SectionItemGrid.d.ts.map +1 -0
  129. package/dist/components/section-primitives/SectionItemGrid.js +14 -0
  130. package/dist/components/section-primitives/SectionLoading.d.ts +11 -0
  131. package/dist/components/section-primitives/SectionLoading.d.ts.map +1 -0
  132. package/dist/components/section-primitives/SectionLoading.js +11 -0
  133. package/dist/components/section-primitives/SectionSearchContext.d.ts +17 -0
  134. package/dist/components/section-primitives/SectionSearchContext.d.ts.map +1 -0
  135. package/dist/components/section-primitives/SectionSearchContext.js +17 -0
  136. package/dist/components/section-primitives/SectionSearchProvider.d.ts +25 -0
  137. package/dist/components/section-primitives/SectionSearchProvider.d.ts.map +1 -0
  138. package/dist/components/section-primitives/SectionSearchProvider.js +106 -0
  139. package/dist/components/section-primitives/index.d.ts +5 -0
  140. package/dist/components/section-primitives/index.d.ts.map +1 -0
  141. package/dist/components/section-primitives/index.js +4 -0
  142. package/dist/components/suggestions/AmazonDropdown.d.ts +30 -0
  143. package/dist/components/suggestions/AmazonDropdown.d.ts.map +1 -0
  144. package/dist/components/suggestions/AmazonDropdown.js +509 -0
  145. package/dist/components/suggestions/GoogleDropdown.d.ts +31 -0
  146. package/dist/components/suggestions/GoogleDropdown.d.ts.map +1 -0
  147. package/dist/components/suggestions/GoogleDropdown.js +349 -0
  148. package/dist/components/suggestions/MinimalDropdown.d.ts +24 -0
  149. package/dist/components/suggestions/MinimalDropdown.d.ts.map +1 -0
  150. package/dist/components/suggestions/MinimalDropdown.js +312 -0
  151. package/dist/components/suggestions/MobileSheetDropdown.d.ts +31 -0
  152. package/dist/components/suggestions/MobileSheetDropdown.d.ts.map +1 -0
  153. package/dist/components/suggestions/MobileSheetDropdown.js +483 -0
  154. package/dist/components/suggestions/PinterestDropdown.d.ts +29 -0
  155. package/dist/components/suggestions/PinterestDropdown.d.ts.map +1 -0
  156. package/dist/components/suggestions/PinterestDropdown.js +446 -0
  157. package/dist/components/suggestions/ShopifyDropdown.d.ts +27 -0
  158. package/dist/components/suggestions/ShopifyDropdown.d.ts.map +1 -0
  159. package/dist/components/suggestions/ShopifyDropdown.js +448 -0
  160. package/dist/components/suggestions/SpotlightDropdown.d.ts +33 -0
  161. package/dist/components/suggestions/SpotlightDropdown.d.ts.map +1 -0
  162. package/dist/components/suggestions/SpotlightDropdown.js +544 -0
  163. package/dist/components/suggestions/SuggestionSearchBar.d.ts +127 -0
  164. package/dist/components/suggestions/SuggestionSearchBar.d.ts.map +1 -0
  165. package/dist/components/suggestions/SuggestionSearchBar.js +644 -0
  166. package/dist/components/suggestions/index.d.ts +37 -0
  167. package/dist/components/suggestions/index.d.ts.map +1 -0
  168. package/dist/components/suggestions/index.js +59 -0
  169. package/dist/components/suggestions/styles/index.d.ts +11 -0
  170. package/dist/components/suggestions/styles/index.d.ts.map +1 -0
  171. package/dist/components/suggestions/styles/index.js +289 -0
  172. package/dist/components/suggestions/styles/responsive.d.ts +107 -0
  173. package/dist/components/suggestions/styles/responsive.d.ts.map +1 -0
  174. package/dist/components/suggestions/styles/responsive.js +237 -0
  175. package/dist/components/suggestions/types.d.ts +511 -0
  176. package/dist/components/suggestions/types.d.ts.map +1 -0
  177. package/dist/components/suggestions/types.js +6 -0
  178. package/dist/components/suggestions/utils.d.ts +259 -0
  179. package/dist/components/suggestions/utils.d.ts.map +1 -0
  180. package/dist/components/suggestions/utils.js +668 -0
  181. package/dist/components/suggestions-primitives/CategoriesTabs.d.ts +13 -0
  182. package/dist/components/suggestions-primitives/CategoriesTabs.d.ts.map +1 -0
  183. package/dist/components/suggestions-primitives/CategoriesTabs.js +35 -0
  184. package/dist/components/suggestions-primitives/DropdownPanel.d.ts +24 -0
  185. package/dist/components/suggestions-primitives/DropdownPanel.d.ts.map +1 -0
  186. package/dist/components/suggestions-primitives/DropdownPanel.js +67 -0
  187. package/dist/components/suggestions-primitives/ItemCard.d.ts +48 -0
  188. package/dist/components/suggestions-primitives/ItemCard.d.ts.map +1 -0
  189. package/dist/components/suggestions-primitives/ItemCard.js +103 -0
  190. package/dist/components/suggestions-primitives/ItemGrid.d.ts +28 -0
  191. package/dist/components/suggestions-primitives/ItemGrid.d.ts.map +1 -0
  192. package/dist/components/suggestions-primitives/ItemGrid.js +55 -0
  193. package/dist/components/suggestions-primitives/ProductCard.d.ts +45 -0
  194. package/dist/components/suggestions-primitives/ProductCard.d.ts.map +1 -0
  195. package/dist/components/suggestions-primitives/ProductCard.js +177 -0
  196. package/dist/components/suggestions-primitives/ProductCardLayouts.d.ts +44 -0
  197. package/dist/components/suggestions-primitives/ProductCardLayouts.d.ts.map +1 -0
  198. package/dist/components/suggestions-primitives/ProductCardLayouts.js +137 -0
  199. package/dist/components/suggestions-primitives/ProductGrid.d.ts +22 -0
  200. package/dist/components/suggestions-primitives/ProductGrid.d.ts.map +1 -0
  201. package/dist/components/suggestions-primitives/ProductGrid.js +41 -0
  202. package/dist/components/suggestions-primitives/RecentSearchesList.d.ts +17 -0
  203. package/dist/components/suggestions-primitives/RecentSearchesList.d.ts.map +1 -0
  204. package/dist/components/suggestions-primitives/RecentSearchesList.js +46 -0
  205. package/dist/components/suggestions-primitives/SearchInput.d.ts +23 -0
  206. package/dist/components/suggestions-primitives/SearchInput.d.ts.map +1 -0
  207. package/dist/components/suggestions-primitives/SearchInput.js +114 -0
  208. package/dist/components/suggestions-primitives/SuggestionItem.d.ts +31 -0
  209. package/dist/components/suggestions-primitives/SuggestionItem.d.ts.map +1 -0
  210. package/dist/components/suggestions-primitives/SuggestionItem.js +47 -0
  211. package/dist/components/suggestions-primitives/SuggestionList.d.ts +26 -0
  212. package/dist/components/suggestions-primitives/SuggestionList.d.ts.map +1 -0
  213. package/dist/components/suggestions-primitives/SuggestionList.js +35 -0
  214. package/dist/components/suggestions-primitives/SuggestionsContext.d.ts +44 -0
  215. package/dist/components/suggestions-primitives/SuggestionsContext.d.ts.map +1 -0
  216. package/dist/components/suggestions-primitives/SuggestionsContext.js +18 -0
  217. package/dist/components/suggestions-primitives/SuggestionsDropdownComposition.d.ts +24 -0
  218. package/dist/components/suggestions-primitives/SuggestionsDropdownComposition.d.ts.map +1 -0
  219. package/dist/components/suggestions-primitives/SuggestionsDropdownComposition.js +30 -0
  220. package/dist/components/suggestions-primitives/SuggestionsError.d.ts +11 -0
  221. package/dist/components/suggestions-primitives/SuggestionsError.d.ts.map +1 -0
  222. package/dist/components/suggestions-primitives/SuggestionsError.js +19 -0
  223. package/dist/components/suggestions-primitives/SuggestionsLoading.d.ts +11 -0
  224. package/dist/components/suggestions-primitives/SuggestionsLoading.d.ts.map +1 -0
  225. package/dist/components/suggestions-primitives/SuggestionsLoading.js +17 -0
  226. package/dist/components/suggestions-primitives/SuggestionsProvider.d.ts +38 -0
  227. package/dist/components/suggestions-primitives/SuggestionsProvider.d.ts.map +1 -0
  228. package/dist/components/suggestions-primitives/SuggestionsProvider.js +259 -0
  229. package/dist/components/suggestions-primitives/TrendingList.d.ts +17 -0
  230. package/dist/components/suggestions-primitives/TrendingList.d.ts.map +1 -0
  231. package/dist/components/suggestions-primitives/TrendingList.js +48 -0
  232. package/dist/components/suggestions-primitives/highlightMarkup.d.ts +31 -0
  233. package/dist/components/suggestions-primitives/highlightMarkup.d.ts.map +1 -0
  234. package/dist/components/suggestions-primitives/highlightMarkup.js +70 -0
  235. package/dist/components/suggestions-primitives/index.d.ts +39 -0
  236. package/dist/components/suggestions-primitives/index.d.ts.map +1 -0
  237. package/dist/components/suggestions-primitives/index.js +24 -0
  238. package/dist/docsearch/components/DocSearch.d.ts +4 -0
  239. package/dist/docsearch/components/DocSearch.d.ts.map +1 -0
  240. package/dist/docsearch/components/DocSearch.js +93 -0
  241. package/dist/docsearch/components/DocSearchButton.d.ts +4 -0
  242. package/dist/docsearch/components/DocSearchButton.d.ts.map +1 -0
  243. package/dist/docsearch/components/DocSearchButton.js +12 -0
  244. package/dist/docsearch/components/Footer.d.ts +8 -0
  245. package/dist/docsearch/components/Footer.d.ts.map +1 -0
  246. package/dist/docsearch/components/Footer.js +40 -0
  247. package/dist/docsearch/components/Highlight.d.ts +9 -0
  248. package/dist/docsearch/components/Highlight.d.ts.map +1 -0
  249. package/dist/docsearch/components/Highlight.js +48 -0
  250. package/dist/docsearch/components/Hit.d.ts +15 -0
  251. package/dist/docsearch/components/Hit.d.ts.map +1 -0
  252. package/dist/docsearch/components/Hit.js +96 -0
  253. package/dist/docsearch/components/Modal.d.ts +10 -0
  254. package/dist/docsearch/components/Modal.d.ts.map +1 -0
  255. package/dist/docsearch/components/Modal.js +57 -0
  256. package/dist/docsearch/components/Results.d.ts +23 -0
  257. package/dist/docsearch/components/Results.d.ts.map +1 -0
  258. package/dist/docsearch/components/Results.js +141 -0
  259. package/dist/docsearch/components/SearchBox.d.ts +11 -0
  260. package/dist/docsearch/components/SearchBox.d.ts.map +1 -0
  261. package/dist/docsearch/components/SearchBox.js +16 -0
  262. package/dist/docsearch/hooks/useDocSearch.d.ts +33 -0
  263. package/dist/docsearch/hooks/useDocSearch.d.ts.map +1 -0
  264. package/dist/docsearch/hooks/useDocSearch.js +224 -0
  265. package/dist/docsearch/hooks/useKeyboard.d.ts +17 -0
  266. package/dist/docsearch/hooks/useKeyboard.d.ts.map +1 -0
  267. package/dist/docsearch/hooks/useKeyboard.js +71 -0
  268. package/dist/docsearch/hooks/useSeekoraSearch.d.ts +27 -0
  269. package/dist/docsearch/hooks/useSeekoraSearch.d.ts.map +1 -0
  270. package/dist/docsearch/hooks/useSeekoraSearch.js +213 -0
  271. package/dist/docsearch/index.d.ts +13 -0
  272. package/dist/docsearch/index.d.ts.map +1 -0
  273. package/dist/docsearch/index.js +11 -0
  274. package/dist/docsearch/types.d.ts +175 -0
  275. package/dist/docsearch/types.d.ts.map +1 -0
  276. package/dist/docsearch/types.js +4 -0
  277. package/dist/docsearch.css +234 -0
  278. package/dist/hooks/useAnalytics.d.ts +24 -0
  279. package/dist/hooks/useAnalytics.d.ts.map +1 -0
  280. package/dist/hooks/useAnalytics.js +67 -0
  281. package/dist/hooks/useClickTracking.d.ts +36 -0
  282. package/dist/hooks/useClickTracking.d.ts.map +1 -0
  283. package/dist/hooks/useClickTracking.js +89 -0
  284. package/dist/hooks/useExperiment.d.ts +25 -0
  285. package/dist/hooks/useExperiment.d.ts.map +1 -0
  286. package/dist/hooks/useExperiment.js +123 -0
  287. package/dist/hooks/useFilters.d.ts +27 -0
  288. package/dist/hooks/useFilters.d.ts.map +1 -0
  289. package/dist/hooks/useFilters.js +86 -0
  290. package/dist/hooks/useKeyboardNavigation.d.ts +51 -0
  291. package/dist/hooks/useKeyboardNavigation.d.ts.map +1 -0
  292. package/dist/hooks/useKeyboardNavigation.js +113 -0
  293. package/dist/hooks/useNaturalLanguageFilters.d.ts +48 -0
  294. package/dist/hooks/useNaturalLanguageFilters.d.ts.map +1 -0
  295. package/dist/hooks/useNaturalLanguageFilters.js +221 -0
  296. package/dist/hooks/useProductAnalytics.d.ts +49 -0
  297. package/dist/hooks/useProductAnalytics.d.ts.map +1 -0
  298. package/dist/hooks/useProductAnalytics.js +116 -0
  299. package/dist/hooks/useQuerySuggestions.d.ts +21 -0
  300. package/dist/hooks/useQuerySuggestions.d.ts.map +1 -0
  301. package/dist/hooks/useQuerySuggestions.js +84 -0
  302. package/dist/hooks/useQuerySuggestionsEnhanced.d.ts +120 -0
  303. package/dist/hooks/useQuerySuggestionsEnhanced.d.ts.map +1 -0
  304. package/dist/hooks/useQuerySuggestionsEnhanced.js +444 -0
  305. package/dist/hooks/useSearchState.d.ts +35 -0
  306. package/dist/hooks/useSearchState.d.ts.map +1 -0
  307. package/dist/hooks/useSearchState.js +68 -0
  308. package/dist/hooks/useSeekoraSearch.d.ts +20 -0
  309. package/dist/hooks/useSeekoraSearch.d.ts.map +1 -0
  310. package/dist/hooks/useSeekoraSearch.js +63 -0
  311. package/dist/hooks/useSmartSuggestions.d.ts +55 -0
  312. package/dist/hooks/useSmartSuggestions.d.ts.map +1 -0
  313. package/dist/hooks/useSmartSuggestions.js +236 -0
  314. package/dist/hooks/useSuggestionsAnalytics.d.ts +93 -0
  315. package/dist/hooks/useSuggestionsAnalytics.d.ts.map +1 -0
  316. package/dist/hooks/useSuggestionsAnalytics.js +239 -0
  317. package/dist/hooks/useVariantSelection.d.ts +28 -0
  318. package/dist/hooks/useVariantSelection.d.ts.map +1 -0
  319. package/dist/hooks/useVariantSelection.js +44 -0
  320. package/dist/index.d.ts +105 -0
  321. package/dist/index.d.ts.map +1 -0
  322. package/dist/index.js +110 -0
  323. package/dist/index.umd.js +1 -0
  324. package/dist/src/index.d.ts +4469 -0
  325. package/dist/src/index.esm.js +18952 -0
  326. package/dist/src/index.esm.js.map +1 -0
  327. package/dist/src/index.js +19086 -0
  328. package/dist/src/index.js.map +1 -0
  329. package/dist/themes/createTheme.d.ts +8 -0
  330. package/dist/themes/createTheme.d.ts.map +1 -0
  331. package/dist/themes/createTheme.js +10 -0
  332. package/dist/themes/dark.d.ts +6 -0
  333. package/dist/themes/dark.d.ts.map +1 -0
  334. package/dist/themes/dark.js +34 -0
  335. package/dist/themes/default.d.ts +6 -0
  336. package/dist/themes/default.d.ts.map +1 -0
  337. package/dist/themes/default.js +71 -0
  338. package/dist/themes/mergeThemes.d.ts +7 -0
  339. package/dist/themes/mergeThemes.d.ts.map +1 -0
  340. package/dist/themes/mergeThemes.js +6 -0
  341. package/dist/themes/minimal.d.ts +6 -0
  342. package/dist/themes/minimal.d.ts.map +1 -0
  343. package/dist/themes/minimal.js +34 -0
  344. package/dist/themes/suggestions.d.ts +216 -0
  345. package/dist/themes/suggestions.d.ts.map +1 -0
  346. package/dist/themes/suggestions.js +546 -0
  347. package/dist/themes/types.d.ts +7 -0
  348. package/dist/themes/types.d.ts.map +1 -0
  349. package/dist/themes/types.js +6 -0
  350. package/dist/types/index.d.ts +33 -0
  351. package/dist/types/index.d.ts.map +1 -0
  352. package/dist/types/index.js +4 -0
  353. package/dist/utils/responsive.d.ts +130 -0
  354. package/dist/utils/responsive.d.ts.map +1 -0
  355. package/dist/utils/responsive.js +225 -0
  356. package/package.json +68 -0
  357. package/src/docsearch/docsearch.css +234 -0
@@ -0,0 +1,275 @@
1
+ /**
2
+ * SearchBarWithSuggestions Component
3
+ *
4
+ * Integrated search bar with query suggestions dropdown.
5
+ * Combines SearchBar with any of the suggestion dropdown variants.
6
+ */
7
+ import React, { useState, useRef, useCallback, useEffect, forwardRef, useImperativeHandle, } from 'react';
8
+ import { useSearchContext } from './SearchProvider';
9
+ import { QuerySuggestionsDropdown } from './QuerySuggestionsDropdown';
10
+ import { RichQuerySuggestions } from './RichQuerySuggestions';
11
+ import { FederatedDropdown } from './FederatedDropdown';
12
+ import { useSuggestionsAnalytics } from '../hooks/useSuggestionsAnalytics';
13
+ import { clsx } from 'clsx';
14
+ // ============================================================================
15
+ // Styles
16
+ // ============================================================================
17
+ const styles = {
18
+ wrapper: {
19
+ position: 'relative',
20
+ width: '100%',
21
+ },
22
+ inputWrapper: {
23
+ display: 'flex',
24
+ alignItems: 'center',
25
+ backgroundColor: 'var(--seekora-bg-surface, #ffffff)',
26
+ border: '1px solid var(--seekora-border-color, #e5e7eb)',
27
+ borderRadius: 'var(--seekora-border-radius-lg, 8px)',
28
+ overflow: 'hidden',
29
+ transition: 'border-color 150ms ease, box-shadow 150ms ease',
30
+ },
31
+ inputWrapperFocused: {
32
+ borderColor: 'var(--seekora-border-focus, var(--seekora-primary, #3b82f6))',
33
+ boxShadow: '0 0 0 3px var(--seekora-border-focus-alpha, var(--seekora-primary-light, rgba(59, 130, 246, 0.1)))',
34
+ },
35
+ input: {
36
+ flex: 1,
37
+ padding: '12px 16px',
38
+ fontSize: '16px',
39
+ border: 'none',
40
+ outline: 'none',
41
+ backgroundColor: 'transparent',
42
+ color: 'var(--seekora-text-primary, #111827)',
43
+ fontFamily: 'inherit',
44
+ },
45
+ searchIcon: {
46
+ width: '20px',
47
+ height: '20px',
48
+ color: 'var(--seekora-text-secondary, #9ca3af)',
49
+ marginLeft: '12px',
50
+ flexShrink: 0,
51
+ },
52
+ clearButton: {
53
+ display: 'flex',
54
+ alignItems: 'center',
55
+ justifyContent: 'center',
56
+ width: '32px',
57
+ height: '32px',
58
+ marginRight: '4px',
59
+ padding: 0,
60
+ border: 'none',
61
+ backgroundColor: 'transparent',
62
+ color: 'var(--seekora-text-secondary, #9ca3af)',
63
+ borderRadius: '50%',
64
+ cursor: 'pointer',
65
+ transition: 'background-color 150ms ease, color 150ms ease',
66
+ },
67
+ searchButton: {
68
+ display: 'flex',
69
+ alignItems: 'center',
70
+ justifyContent: 'center',
71
+ gap: '8px',
72
+ padding: '12px 20px',
73
+ margin: '4px',
74
+ border: 'none',
75
+ backgroundColor: 'var(--seekora-primary, #3b82f6)',
76
+ color: 'var(--seekora-primary-text, white)',
77
+ borderRadius: 'var(--seekora-border-radius, 6px)',
78
+ fontSize: '14px',
79
+ fontWeight: 600,
80
+ cursor: 'pointer',
81
+ transition: 'background-color 150ms ease',
82
+ },
83
+ };
84
+ // ============================================================================
85
+ // Icons
86
+ // ============================================================================
87
+ const SearchIcon = () => (React.createElement("svg", { viewBox: "0 0 20 20", fill: "currentColor", style: styles.searchIcon },
88
+ React.createElement("path", { fillRule: "evenodd", d: "M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z", clipRule: "evenodd" })));
89
+ const ClearIcon = () => (React.createElement("svg", { viewBox: "0 0 20 20", fill: "currentColor", style: { width: 16, height: 16 } },
90
+ React.createElement("path", { fillRule: "evenodd", d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z", clipRule: "evenodd" })));
91
+ // ============================================================================
92
+ // Component
93
+ // ============================================================================
94
+ export const SearchBarWithSuggestions = forwardRef(function SearchBarWithSuggestions(props, ref) {
95
+ const { variant = 'classic', placeholder = 'Powered by Seekora', initialQuery = '', value, onQueryChange, onSearch, onSuggestionSelect, onProductClick, showSearchButton = false, searchButtonText = 'Search', showClearButton = true, autoFocus = false, minQueryLength = 1, maxSuggestions = 8, maxProducts = 8, debounceMs = 200, showRecentSearches = true, showTrendingOnEmpty = true, includeDropdownRecommendations = false, filteredTabs, enableAnalytics = true, analyticsTags, includeFacets, includeCategories, dropdownWidth, dropdownMaxHeight, classNames = {}, style, inputStyle, ariaLabel = 'Search', } = props;
96
+ const { client } = useSearchContext();
97
+ const inputRef = useRef(null);
98
+ const dropdownRef = useRef(null);
99
+ const [query, setQuery] = useState(value ?? initialQuery);
100
+ const [isFocused, setIsFocused] = useState(false);
101
+ const [isDropdownOpen, setIsDropdownOpen] = useState(false);
102
+ // Analytics
103
+ const analytics = useSuggestionsAnalytics({
104
+ client,
105
+ enabled: enableAnalytics,
106
+ analyticsTags,
107
+ });
108
+ // Sync controlled value
109
+ useEffect(() => {
110
+ if (value !== undefined && value !== query) {
111
+ setQuery(value);
112
+ }
113
+ }, [value]);
114
+ // Handle query change
115
+ const handleQueryChange = useCallback((e) => {
116
+ const newQuery = e.target.value;
117
+ setQuery(newQuery);
118
+ onQueryChange?.(newQuery);
119
+ // Open dropdown when typing
120
+ if (newQuery.length >= minQueryLength || (showTrendingOnEmpty && newQuery.length === 0)) {
121
+ setIsDropdownOpen(true);
122
+ }
123
+ }, [onQueryChange, minQueryLength, showTrendingOnEmpty]);
124
+ // Handle search submit
125
+ const handleSubmit = useCallback((e) => {
126
+ e?.preventDefault();
127
+ if (query.trim()) {
128
+ onSearch?.(query.trim());
129
+ analytics.trackSearchSubmit(query.trim(), false);
130
+ setIsDropdownOpen(false);
131
+ }
132
+ }, [query, onSearch, analytics]);
133
+ // Handle suggestion select
134
+ const handleSuggestionSelect = useCallback((suggestion) => {
135
+ setQuery(suggestion.query);
136
+ onQueryChange?.(suggestion.query);
137
+ onSuggestionSelect?.(suggestion);
138
+ analytics.trackSuggestionClick({
139
+ suggestion,
140
+ position: 0, // Would need to track actual position
141
+ query,
142
+ });
143
+ setIsDropdownOpen(false);
144
+ // Optionally trigger search
145
+ onSearch?.(suggestion.query);
146
+ }, [query, onQueryChange, onSuggestionSelect, onSearch, analytics]);
147
+ // Handle product click
148
+ const handleProductClick = useCallback((product) => {
149
+ onProductClick?.(product);
150
+ analytics.trackProductClick({
151
+ product,
152
+ position: 0,
153
+ query,
154
+ });
155
+ setIsDropdownOpen(false);
156
+ }, [query, onProductClick, analytics]);
157
+ // Handle recent search click
158
+ const handleRecentSearchClick = useCallback((search) => {
159
+ setQuery(search.query);
160
+ onQueryChange?.(search.query);
161
+ analytics.trackRecentSearchClick(search);
162
+ setIsDropdownOpen(false);
163
+ onSearch?.(search.query);
164
+ }, [onQueryChange, onSearch, analytics]);
165
+ // Handle focus
166
+ const handleFocus = useCallback(() => {
167
+ setIsFocused(true);
168
+ setIsDropdownOpen(true);
169
+ analytics.trackDropdownOpen(query);
170
+ }, [query, analytics]);
171
+ // Handle blur
172
+ const handleBlur = useCallback(() => {
173
+ setIsFocused(false);
174
+ // Delay closing to allow click events on dropdown
175
+ setTimeout(() => {
176
+ setIsDropdownOpen(false);
177
+ analytics.trackDropdownClose(query);
178
+ }, 200);
179
+ }, [query, analytics]);
180
+ // Handle clear
181
+ const handleClear = useCallback(() => {
182
+ setQuery('');
183
+ onQueryChange?.('');
184
+ inputRef.current?.focus();
185
+ }, [onQueryChange]);
186
+ // Handle keyboard navigation
187
+ const handleKeyDown = useCallback((e) => {
188
+ if (!isDropdownOpen) {
189
+ if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {
190
+ setIsDropdownOpen(true);
191
+ }
192
+ return;
193
+ }
194
+ switch (e.key) {
195
+ case 'ArrowDown':
196
+ e.preventDefault();
197
+ dropdownRef.current?.navigateNext?.();
198
+ break;
199
+ case 'ArrowUp':
200
+ e.preventDefault();
201
+ dropdownRef.current?.navigatePrevious?.();
202
+ break;
203
+ case 'Enter':
204
+ e.preventDefault();
205
+ if ((dropdownRef.current?.getActiveIndex?.() ?? -1) >= 0) {
206
+ dropdownRef.current?.selectActive?.();
207
+ }
208
+ else {
209
+ handleSubmit();
210
+ }
211
+ break;
212
+ case 'Escape':
213
+ e.preventDefault();
214
+ setIsDropdownOpen(false);
215
+ inputRef.current?.blur();
216
+ break;
217
+ }
218
+ }, [isDropdownOpen, handleSubmit]);
219
+ // Expose ref methods
220
+ useImperativeHandle(ref, () => ({
221
+ focus: () => inputRef.current?.focus(),
222
+ blur: () => inputRef.current?.blur(),
223
+ clear: handleClear,
224
+ getQuery: () => query,
225
+ setQuery: (newQuery) => {
226
+ setQuery(newQuery);
227
+ onQueryChange?.(newQuery);
228
+ },
229
+ openDropdown: () => setIsDropdownOpen(true),
230
+ closeDropdown: () => setIsDropdownOpen(false),
231
+ navigateNext: () => dropdownRef.current?.navigateNext?.(),
232
+ navigatePrevious: () => dropdownRef.current?.navigatePrevious?.(),
233
+ selectCurrent: () => dropdownRef.current?.selectActive?.(),
234
+ }), [query, handleClear, onQueryChange]);
235
+ // Render dropdown based on variant
236
+ const renderDropdown = () => {
237
+ const commonProps = {
238
+ query,
239
+ isOpen: isDropdownOpen,
240
+ maxSuggestions,
241
+ minQueryLength,
242
+ debounceMs,
243
+ showRecentSearches,
244
+ classNames,
245
+ onSuggestionSelect: handleSuggestionSelect,
246
+ onRecentSearchClick: handleRecentSearchClick,
247
+ onClose: () => setIsDropdownOpen(false),
248
+ analyticsTags,
249
+ };
250
+ switch (variant) {
251
+ case 'rich':
252
+ return (React.createElement(RichQuerySuggestions, { ref: dropdownRef, ...commonProps, includeDropdownRecommendations: includeDropdownRecommendations, includeCategories: true, width: dropdownWidth || '100%', maxHeight: dropdownMaxHeight || '480px' }));
253
+ case 'federated':
254
+ return (React.createElement(FederatedDropdown, { ref: dropdownRef, ...commonProps, maxProducts: maxProducts, filteredTabs: filteredTabs, showProducts: true, showBrands: true, showFilteredTabs: !!filteredTabs, onProductClick: handleProductClick, width: dropdownWidth || '800px', maxHeight: dropdownMaxHeight || '600px', includeFacets: includeFacets, includeCategories: includeCategories, includeDropdownRecommendations: includeDropdownRecommendations }));
255
+ case 'compact':
256
+ return (React.createElement(QuerySuggestionsDropdown, { ref: dropdownRef, ...commonProps, maxSuggestions: 5, showCounts: false, width: dropdownWidth || '100%' }));
257
+ case 'classic':
258
+ default:
259
+ return (React.createElement(QuerySuggestionsDropdown, { ref: dropdownRef, ...commonProps, width: dropdownWidth || '100%' }));
260
+ }
261
+ };
262
+ return (React.createElement("div", { className: clsx('seekora-search-bar-with-suggestions', classNames.wrapper), style: { ...styles.wrapper, ...style } },
263
+ React.createElement("form", { onSubmit: handleSubmit },
264
+ React.createElement("div", { style: {
265
+ ...styles.inputWrapper,
266
+ ...(isFocused ? styles.inputWrapperFocused : {}),
267
+ } },
268
+ React.createElement(SearchIcon, null),
269
+ React.createElement("input", { ref: inputRef, type: "text", value: query, onChange: handleQueryChange, onFocus: handleFocus, onBlur: handleBlur, onKeyDown: handleKeyDown, placeholder: placeholder, autoFocus: autoFocus, autoComplete: "off", autoCorrect: "off", autoCapitalize: "off", spellCheck: false, "aria-label": ariaLabel, "aria-expanded": isDropdownOpen, "aria-haspopup": "listbox", "aria-autocomplete": "list", role: "combobox", className: classNames.input, style: { ...styles.input, ...inputStyle } }),
270
+ showClearButton && query && (React.createElement("button", { type: "button", onClick: handleClear, className: classNames.clearButton, style: styles.clearButton, "aria-label": "Clear search" },
271
+ React.createElement(ClearIcon, null))),
272
+ showSearchButton && (React.createElement("button", { type: "submit", className: classNames.button, style: styles.searchButton }, searchButtonText)))),
273
+ React.createElement("div", { className: classNames.dropdown }, renderDropdown())));
274
+ });
275
+ export default SearchBarWithSuggestions;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * SearchLayout Component
3
+ *
4
+ * Provides a layout structure for search interfaces with sidebar and main content
5
+ */
6
+ import React from 'react';
7
+ export interface SearchLayoutTheme {
8
+ container?: string;
9
+ sidebar?: string;
10
+ main?: string;
11
+ header?: string;
12
+ footer?: string;
13
+ }
14
+ export interface SearchLayoutProps {
15
+ /** Content to render in the sidebar (filters, facets, etc.) */
16
+ sidebar?: React.ReactNode;
17
+ /** Content to render in the main area (results, etc.) */
18
+ children: React.ReactNode;
19
+ /** Header content */
20
+ header?: React.ReactNode;
21
+ /** Footer content */
22
+ footer?: React.ReactNode;
23
+ /** Sidebar width */
24
+ sidebarWidth?: string;
25
+ /** Custom className */
26
+ className?: string;
27
+ /** Custom styles */
28
+ style?: React.CSSProperties;
29
+ /** Custom theme */
30
+ theme?: SearchLayoutTheme;
31
+ /** Show sidebar on mobile */
32
+ showSidebarOnMobile?: boolean;
33
+ }
34
+ export declare const SearchLayout: React.FC<SearchLayoutProps>;
35
+ //# sourceMappingURL=SearchLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchLayout.d.ts","sourceRoot":"","sources":["../../src/components/SearchLayout.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AAKnD,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,+DAA+D;IAC/D,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,yDAAyD;IACzD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,qBAAqB;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,qBAAqB;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,mBAAmB;IACnB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,6BAA6B;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAoGpD,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * SearchLayout Component
3
+ *
4
+ * Provides a layout structure for search interfaces with sidebar and main content
5
+ */
6
+ import React from 'react';
7
+ import { useSearchContext } from './SearchProvider';
8
+ import { clsx } from 'clsx';
9
+ import { useIsMobile, useResponsivePadding, useResponsiveGap } from '../utils/responsive';
10
+ export const SearchLayout = ({ sidebar, children, header, footer, sidebarWidth = '300px', className, style, theme: customTheme, showSidebarOnMobile = false, }) => {
11
+ const { theme } = useSearchContext();
12
+ const layoutTheme = customTheme || {};
13
+ const isMobile = useIsMobile();
14
+ const responsivePadding = useResponsivePadding(parseInt(theme.spacing.medium) || 16);
15
+ const responsiveGap = useResponsiveGap(parseInt(theme.spacing.large) || 24);
16
+ return (React.createElement("div", { className: clsx(layoutTheme.container, className), style: {
17
+ display: 'flex',
18
+ flexDirection: 'column',
19
+ minHeight: '100vh',
20
+ width: '100%',
21
+ maxWidth: '100%',
22
+ backgroundColor: theme.colors.background,
23
+ ...style,
24
+ } },
25
+ header && (React.createElement("header", { className: layoutTheme.header, style: {
26
+ padding: responsivePadding,
27
+ borderBottom: `1px solid ${theme.colors.border}`,
28
+ backgroundColor: theme.colors.background,
29
+ } }, header)),
30
+ React.createElement("div", { style: {
31
+ display: 'flex',
32
+ flex: 1,
33
+ width: '100%',
34
+ maxWidth: '100%',
35
+ flexDirection: isMobile ? 'column' : 'row',
36
+ gap: responsiveGap,
37
+ padding: responsivePadding,
38
+ backgroundColor: theme.colors.background,
39
+ color: theme.colors.text,
40
+ overflow: 'visible',
41
+ } },
42
+ sidebar && (!isMobile || showSidebarOnMobile) && (React.createElement("aside", { className: layoutTheme.sidebar, style: {
43
+ width: isMobile ? '100%' : sidebarWidth,
44
+ minWidth: isMobile ? '100%' : sidebarWidth,
45
+ flexShrink: 0,
46
+ } }, sidebar)),
47
+ React.createElement("main", { className: layoutTheme.main, style: {
48
+ flex: 1,
49
+ minWidth: 0,
50
+ width: '100%',
51
+ maxWidth: '100%',
52
+ backgroundColor: theme.colors.background,
53
+ color: theme.colors.text,
54
+ overflow: 'auto',
55
+ } }, children)),
56
+ footer && (React.createElement("footer", { className: layoutTheme.footer, style: {
57
+ padding: responsivePadding,
58
+ borderTop: `1px solid ${theme.colors.border}`,
59
+ backgroundColor: theme.colors.background,
60
+ } }, footer))));
61
+ };
@@ -0,0 +1,35 @@
1
+ /**
2
+ * SearchProvider Component
3
+ *
4
+ * Provides Seekora client and context to child components.
5
+ * Supports A/B testing via abTestId/abVariant props.
6
+ */
7
+ import React, { ReactNode } from 'react';
8
+ import type { SeekoraClient } from '@seekora-ai/search-sdk';
9
+ import { SearchStateManager, type SearchStateManagerConfig } from '@seekora-ai/ui-sdk-core';
10
+ import type { Theme, ThemeConfig } from '../themes/types';
11
+ interface SearchContextValue {
12
+ client: SeekoraClient;
13
+ theme: Theme;
14
+ enableAnalytics: boolean;
15
+ autoTrackSearch: boolean;
16
+ stateManager: SearchStateManager;
17
+ }
18
+ export interface SearchProviderProps {
19
+ client: SeekoraClient;
20
+ theme?: ThemeConfig;
21
+ enableAnalytics?: boolean;
22
+ autoTrackSearch?: boolean;
23
+ stateManager?: SearchStateManagerConfig;
24
+ children: ReactNode;
25
+ /** A/B test experiment ID to include in all analytics events */
26
+ abTestId?: string;
27
+ /** A/B test variant to include in all analytics events */
28
+ abVariant?: string;
29
+ /** Auto-fetch experiment assignments on mount (default: false) */
30
+ experiments?: boolean;
31
+ }
32
+ export declare const SearchProvider: React.FC<SearchProviderProps>;
33
+ export declare const useSearchContext: () => SearchContextValue;
34
+ export {};
35
+ //# sourceMappingURL=SearchProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchProvider.d.ts","sourceRoot":"","sources":["../../src/components/SearchProvider.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAA6B,SAAS,EAAsB,MAAM,OAAO,CAAC;AACxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAO,kBAAkB,EAAE,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACjG,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAI1D,UAAU,kBAAkB;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,kBAAkB,CAAC;CAClC;AAID,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,QAAQ,EAAE,SAAS,CAAC;IACpB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAkDxD,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAO,kBAQnC,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * SearchProvider Component
3
+ *
4
+ * Provides Seekora client and context to child components.
5
+ * Supports A/B testing via abTestId/abVariant props.
6
+ */
7
+ import React, { createContext, useContext, useMemo, useEffect } from 'react';
8
+ import { log, SearchStateManager } from '@seekora-ai/ui-sdk-core';
9
+ import { defaultTheme } from '../themes/default';
10
+ import { createTheme } from '../themes/createTheme';
11
+ const SearchContext = createContext(null);
12
+ export const SearchProvider = ({ client, theme: themeConfig, enableAnalytics = true, autoTrackSearch = true, stateManager: stateManagerConfig, children, abTestId, abVariant, experiments: _experiments, }) => {
13
+ const theme = useMemo(() => {
14
+ return themeConfig ? createTheme(themeConfig) : defaultTheme;
15
+ }, [themeConfig]);
16
+ // Create state manager instance (memoized to avoid recreating on every render)
17
+ const stateManager = useMemo(() => {
18
+ return new SearchStateManager({
19
+ client,
20
+ autoSearch: true,
21
+ debounceMs: 300,
22
+ itemsPerPage: 10,
23
+ defaultSearchOptions: { widget_mode: true },
24
+ ...stateManagerConfig,
25
+ abTestId,
26
+ abVariant,
27
+ });
28
+ }, [client, stateManagerConfig, abTestId, abVariant]);
29
+ // Update A/B test fields on state manager and SDK client when props change
30
+ useEffect(() => {
31
+ if (abTestId !== undefined || abVariant !== undefined) {
32
+ stateManager.setAbTest(abTestId, abVariant);
33
+ client.setAbTest(abTestId, abVariant);
34
+ }
35
+ }, [stateManager, client, abTestId, abVariant]);
36
+ const value = useMemo(() => ({
37
+ client,
38
+ theme,
39
+ enableAnalytics,
40
+ autoTrackSearch,
41
+ stateManager,
42
+ }), [client, theme, enableAnalytics, autoTrackSearch, stateManager]);
43
+ return (React.createElement(SearchContext.Provider, { value: value }, children));
44
+ };
45
+ export const useSearchContext = () => {
46
+ const context = useContext(SearchContext);
47
+ if (!context) {
48
+ const error = new Error('useSearchContext must be used within a SearchProvider');
49
+ log.error('SearchProvider: Context not available', { error: error.message });
50
+ throw error;
51
+ }
52
+ return context;
53
+ };
@@ -0,0 +1,57 @@
1
+ /**
2
+ * SearchResults Component
3
+ *
4
+ * Displays search results with customizable rendering
5
+ * Includes keyboard navigation support (arrow keys, Enter to select)
6
+ */
7
+ import React from 'react';
8
+ import type { SearchResponse } from '@seekora-ai/search-sdk';
9
+ import type { ResultItem, FieldMapping, ViewMode } from '@seekora-ai/ui-sdk-types';
10
+ export interface SearchResultsTheme {
11
+ container?: string;
12
+ header?: string;
13
+ resultsList?: string;
14
+ resultItem?: string;
15
+ resultItemHover?: string;
16
+ resultTitle?: string;
17
+ resultDescription?: string;
18
+ resultImage?: string;
19
+ resultPrice?: string;
20
+ emptyState?: string;
21
+ errorState?: string;
22
+ pagination?: string;
23
+ /** Custom min-height class override */
24
+ minHeight?: string;
25
+ /** Custom min-width class override */
26
+ minWidth?: string;
27
+ }
28
+ export interface SearchResultsProps {
29
+ results?: SearchResponse | null;
30
+ loading?: boolean;
31
+ error?: Error | null;
32
+ onResultClick?: (result: ResultItem, index: number) => void;
33
+ renderResult?: (result: ResultItem, index: number, isActive?: boolean) => React.ReactNode;
34
+ renderEmpty?: () => React.ReactNode;
35
+ renderError?: (error: Error) => React.ReactNode;
36
+ className?: string;
37
+ style?: React.CSSProperties;
38
+ theme?: SearchResultsTheme;
39
+ itemsPerPage?: number;
40
+ showPagination?: boolean;
41
+ /** Display mode: 'list' (default), 'card', or 'grid' */
42
+ viewMode?: ViewMode;
43
+ /** Field mapping configuration for extracting data from results */
44
+ fieldMapping?: FieldMapping;
45
+ /** Function to extract results array from the response (if custom structure) */
46
+ extractResults?: (response: any) => any[];
47
+ /** Enable keyboard navigation (arrow keys, Enter to select) */
48
+ enableKeyboardNavigation?: boolean;
49
+ /** Auto-focus the results container */
50
+ autoFocus?: boolean;
51
+ /** Minimum height to prevent container collapse when empty (default: '400px') */
52
+ minHeight?: string;
53
+ /** Minimum width to prevent container shrinking (default: '100%') */
54
+ minWidth?: string;
55
+ }
56
+ export declare const SearchResults: React.FC<SearchResultsProps>;
57
+ //# sourceMappingURL=SearchResults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchResults.d.ts","sourceRoot":"","sources":["../../src/components/SearchResults.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAKxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEnF,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1F,WAAW,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IACpC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,mEAAmE;IACnE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,gFAAgF;IAChF,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC;IAC1C,+DAA+D;IAC/D,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAoBD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAqlBtD,CAAC"}