@envive-ai/react-toolkit 0.2.11 → 0.2.12

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 (301) hide show
  1. package/dist/{Accordion-FyCFBOen.cjs → Accordion-B0TzPN3m.cjs} +2 -5
  2. package/dist/{Accordion-B8aUlf0q.js → Accordion-D8Vm8J1y.js} +4 -4
  3. package/dist/{AnimatedChevron-wpcAHp6d.cjs → AnimatedChevron-9xf90bpP.cjs} +0 -2
  4. package/dist/{AnimatedChevron-Dee6Pe81.js → AnimatedChevron-DghLnmlM.js} +1 -1
  5. package/dist/{ButtonBase-B6vDKbGQ.cjs → ButtonBase-BMEAmPnS.cjs} +1 -3
  6. package/dist/{ButtonBase-Bpc7nOpz.js → ButtonBase-CT397aT3.js} +3 -3
  7. package/dist/{DynamicFiltersScrollbar-D8OqC4DA.js → DynamicFiltersScrollbar-CibstqNd.js} +5 -7
  8. package/dist/{DynamicFiltersScrollbar-DIwHWq6v.cjs → DynamicFiltersScrollbar-DqIydLJu.cjs} +3 -6
  9. package/dist/{ImageWithFallback-DvaVpR6v.cjs → ImageWithFallback-CuPe6XF6.cjs} +1 -2
  10. package/dist/{ImageWithFallback-BW57cQw-.js → ImageWithFallback-_QZT0EKI.js} +2 -2
  11. package/dist/{ModalSheet-BvM2PJbH.cjs → ModalSheet-Be7-bkXK.cjs} +11 -16
  12. package/dist/{ModalSheet-DFva7krP.js → ModalSheet-DVrY7Mw0.js} +12 -13
  13. package/dist/{ProductCard-C2KvH4MN.cjs → ProductCard-BeY85PBf.cjs} +31 -28
  14. package/dist/{ProductCard-BiWAcPO4.js → ProductCard-BoyYu6mI.js} +19 -24
  15. package/dist/{ProductGrid-DkOyRAEg.cjs → ProductGrid-CxKK7w_X.cjs} +2 -3
  16. package/dist/{ProductGrid-B1RtE58G.js → ProductGrid-DmtSXfyE.js} +3 -3
  17. package/dist/{RadioButton-CQ6qOvBl.js → RadioButton-Bm0qK3bX.js} +3 -3
  18. package/dist/{RadioButton-DP-qs5cy.cjs → RadioButton-Dcdj8pNp.cjs} +1 -3
  19. package/dist/{RadioButtonGroup-CJPWfAaA.cjs → RadioButtonGroup-BnnMx8sE.cjs} +2 -3
  20. package/dist/{RadioButtonGroup-Ce8cKqYw.js → RadioButtonGroup-hme7gSiQ.js} +3 -3
  21. package/dist/RecommendedProducts-C2eNVrLo.cjs +56 -0
  22. package/dist/RecommendedProducts-LalI8aVC.js +49 -0
  23. package/dist/{SearchAutocomplete-bbMvWWjI.cjs → SearchAutocomplete-A3HXkHwK.cjs} +3 -6
  24. package/dist/{SearchAutocomplete-CjjL2_lm.js → SearchAutocomplete-Rza3A-gs.js} +5 -6
  25. package/dist/{SearchFilter-wHwOym_n.js → SearchFilter-CYY5sNXV.js} +40 -44
  26. package/dist/{SearchFilter-BLi6E9Wx.cjs → SearchFilter-DxrQOLx0.cjs} +38 -44
  27. package/dist/{SearchInput-BA6bepV_.cjs → SearchInput-3ppsm2Ke.cjs} +4 -7
  28. package/dist/{SearchInput-C3nNkmBm.js → SearchInput-DE9Iz7A8.js} +4 -5
  29. package/dist/{SearchInputForm/index.cjs → SearchInputForm-CZz62rOX.cjs} +10 -10
  30. package/dist/{SearchInputForm/index.js → SearchInputForm-DrI4WHDt.js} +4 -7
  31. package/dist/SearchResultsFilterButton-BedTofz5.cjs +29 -0
  32. package/dist/SearchResultsFilterButton-CV11UTGi.js +22 -0
  33. package/dist/{SearchResultsFilterSidebar/index.js → SearchResultsFilterSidebar-Bvpk7Uoo.js} +5 -14
  34. package/dist/{SearchResultsFilterSidebar/index.cjs → SearchResultsFilterSidebar-Dgz98oyD.cjs} +11 -18
  35. package/dist/{SearchResultsStates-C-8fh8B9.cjs → SearchResultsStates-D37wFr9h.cjs} +42 -16
  36. package/dist/{SearchResultsStates-D62WbDTD.js → SearchResultsStates-DrGtw0pM.js} +44 -16
  37. package/dist/{SparkleAnimation-BFAj73CF.cjs → SparkleAnimation-B5A_NCuy.cjs} +16 -10
  38. package/dist/{SparkleAnimation-BYDUEqWX.js → SparkleAnimation-BSI_34HX.js} +11 -8
  39. package/dist/{Spinner-D2HbRsuw.js → Spinner-CDDFWySo.js} +2 -2
  40. package/dist/{Spinner-Ccy6VFEp.cjs → Spinner-FQpy5bGu.cjs} +1 -2
  41. package/dist/{TextInput-CYTko3-n.cjs → TextInput-Do5-j1V_.cjs} +3 -5
  42. package/dist/{TextInput-CmxnphaT.js → TextInput-PtrUXoZo.js} +5 -6
  43. package/dist/{ToggleButton-V9Qsaks7.js → ToggleButton-BTz_zIdc.js} +3 -3
  44. package/dist/{ToggleButton-CvxNLMe_.cjs → ToggleButton-CmxTz-ou.cjs} +1 -2
  45. package/dist/{Typography-C3QmJzFK.js → Typography-xehJH05l.js} +1 -1
  46. package/dist/colorsConfig-BjdoRtRK.js +26 -0
  47. package/dist/colorsConfig-D-MZuBvt.cjs +38 -0
  48. package/dist/{Accordion/index.d.ts → components/Accordion/index-BPofgdcd.d.cts} +2 -2
  49. package/dist/components/Accordion/index.cjs +4 -0
  50. package/dist/components/Accordion/index.js +4 -0
  51. package/dist/{AnimatedChevron/index.d.cts → components/AnimatedChevron/index-Bvff3AGS.d.ts} +2 -2
  52. package/dist/{AnimatedChevron/index.d.ts → components/AnimatedChevron/index-BwQ6tJL8.d.cts} +2 -2
  53. package/dist/components/AnimatedChevron/index.cjs +3 -0
  54. package/dist/components/AnimatedChevron/index.js +3 -0
  55. package/dist/{AppliedFiltersScrollbar/index.d.ts → components/AppliedFiltersScrollbar/index-BKNoroAl.d.ts} +3 -3
  56. package/dist/{AppliedFiltersScrollbar/index.d.cts → components/AppliedFiltersScrollbar/index-DADY550R.d.cts} +3 -3
  57. package/dist/{AppliedFiltersScrollbar → components/AppliedFiltersScrollbar}/index.cjs +4 -6
  58. package/dist/{AppliedFiltersScrollbar → components/AppliedFiltersScrollbar}/index.js +3 -4
  59. package/dist/{ButtonBase/index.d.ts → components/ButtonBase/index-BCw2WQ-2.d.ts} +3 -3
  60. package/dist/{ButtonBase/index.d.cts → components/ButtonBase/index-pBSmWoqg.d.cts} +3 -3
  61. package/dist/components/ButtonBase/index.cjs +6 -0
  62. package/dist/components/ButtonBase/index.js +5 -0
  63. package/dist/{DynamicFiltersScrollbar/index.d.cts → components/DynamicFiltersScrollbar/index-BvAT64cX.d.ts} +2 -2
  64. package/dist/{DynamicFiltersScrollbar/index.d.ts → components/DynamicFiltersScrollbar/index-X--ALCSa.d.cts} +2 -2
  65. package/dist/{DynamicFiltersScrollbar → components/DynamicFiltersScrollbar}/index.cjs +4 -6
  66. package/dist/{DynamicFiltersScrollbar → components/DynamicFiltersScrollbar}/index.js +3 -4
  67. package/dist/{FilterScrollbar/index.d.cts → components/FilterScrollbar/index-DgxXE1ff.d.cts} +4 -4
  68. package/dist/{FilterScrollbar/index.d.ts → components/FilterScrollbar/index-xlg1Q06Q.d.ts} +4 -4
  69. package/dist/components/FilterScrollbar/index.cjs +5 -0
  70. package/dist/components/FilterScrollbar/index.js +4 -0
  71. package/dist/{ImageWithFallback/index.d.cts → components/ImageWithFallback/index-C8Fqb7AQ.d.cts} +2 -2
  72. package/dist/{ImageWithFallback/index.d.ts → components/ImageWithFallback/index-yxDWrUCQ.d.ts} +2 -2
  73. package/dist/components/ImageWithFallback/index.cjs +3 -0
  74. package/dist/components/ImageWithFallback/index.js +3 -0
  75. package/dist/{ModalSheet/index.d.cts → components/ModalSheet/index-Cp_h5dbe.d.ts} +2 -2
  76. package/dist/{ModalSheet/index.d.ts → components/ModalSheet/index-Dnt-aUte.d.cts} +2 -2
  77. package/dist/components/ModalSheet/index.cjs +4 -0
  78. package/dist/components/ModalSheet/index.js +4 -0
  79. package/dist/components/ProductCard/index-BF8pv46P.d.ts +2 -0
  80. package/dist/components/ProductCard/index-C6TLdXjC.d.cts +2 -0
  81. package/dist/{ProductCard → components/ProductCard}/index.cjs +7 -4
  82. package/dist/components/ProductCard/index.js +7 -0
  83. package/dist/{ProductGrid/index.d.ts → components/ProductGrid/index-B1eVXjB4.d.cts} +4 -3
  84. package/dist/{ProductGrid/index.d.cts → components/ProductGrid/index-CyDy1V6o.d.ts} +4 -3
  85. package/dist/components/ProductGrid/index.cjs +9 -0
  86. package/dist/components/ProductGrid/index.js +8 -0
  87. package/dist/{RadioButton/index.d.ts → components/RadioButton/index-BHl3dM6k.d.cts} +3 -3
  88. package/dist/{RadioButton/index.d.cts → components/RadioButton/index-BZrcz8-J.d.ts} +3 -3
  89. package/dist/components/RadioButton/index.cjs +4 -0
  90. package/dist/components/RadioButton/index.js +4 -0
  91. package/dist/{RadioButtonGroup/index.d.ts → components/RadioButtonGroup/index-DdyMuFCX.d.ts} +3 -3
  92. package/dist/{RadioButtonGroup/index.d.cts → components/RadioButtonGroup/index-DtdjcXo-.d.cts} +3 -3
  93. package/dist/components/RadioButtonGroup/index.cjs +6 -0
  94. package/dist/components/RadioButtonGroup/index.js +5 -0
  95. package/dist/components/RecommendedProducts/index-BFM83Qu3.d.cts +15 -0
  96. package/dist/components/RecommendedProducts/index-DlbCfGof.d.ts +15 -0
  97. package/dist/components/RecommendedProducts/index.cjs +12 -0
  98. package/dist/components/RecommendedProducts/index.js +12 -0
  99. package/dist/{SearchAutocomplete/index.d.cts → components/SearchAutocomplete/index-Br_POGOz.d.ts} +2 -2
  100. package/dist/{SearchAutocomplete/index.d.ts → components/SearchAutocomplete/index-Ce9gkkbU.d.cts} +2 -2
  101. package/dist/components/SearchAutocomplete/index.cjs +4 -0
  102. package/dist/components/SearchAutocomplete/index.js +4 -0
  103. package/dist/components/SearchFilter/index-DAR4UKSA.d.cts +91 -0
  104. package/dist/components/SearchFilter/index-VygXUBM9.d.ts +91 -0
  105. package/dist/components/SearchFilter/index.cjs +17 -0
  106. package/dist/components/SearchFilter/index.js +12 -0
  107. package/dist/{SearchInput/index.d.cts → components/SearchInput/index-UY0W77Y0.d.ts} +4 -3
  108. package/dist/{SearchInput/index.d.ts → components/SearchInput/index-rFDdhvqg.d.cts} +4 -3
  109. package/dist/components/SearchInput/index.cjs +7 -0
  110. package/dist/components/SearchInput/index.js +6 -0
  111. package/dist/{SearchInputForm/index.d.ts → components/SearchInputForm/index-_sR_KugL.d.ts} +3 -3
  112. package/dist/{SearchInputForm/index.d.cts → components/SearchInputForm/index-dlLBivQA.d.cts} +3 -3
  113. package/dist/components/SearchInputForm/index.cjs +8 -0
  114. package/dist/components/SearchInputForm/index.js +8 -0
  115. package/dist/{SearchResultsContent/index.d.cts → components/SearchResultsContent/index-B_6-7-t-.d.ts} +19 -7
  116. package/dist/{SearchResultsContent/index.d.ts → components/SearchResultsContent/index-CayvNVCK.d.cts} +19 -7
  117. package/dist/components/SearchResultsContent/index.cjs +60 -0
  118. package/dist/components/SearchResultsContent/index.js +58 -0
  119. package/dist/components/SearchResultsFilterButton/index-D_u8PzTc.d.cts +13 -0
  120. package/dist/components/SearchResultsFilterButton/index-DuTGqa7-.d.ts +13 -0
  121. package/dist/components/SearchResultsFilterButton/index.cjs +9 -0
  122. package/dist/components/SearchResultsFilterButton/index.js +9 -0
  123. package/dist/components/SearchResultsFilterModal/index-BNZEJiXR.d.cts +27 -0
  124. package/dist/components/SearchResultsFilterModal/index-CXBAA2-F.d.ts +27 -0
  125. package/dist/components/SearchResultsFilterModal/index.cjs +47 -0
  126. package/dist/components/SearchResultsFilterModal/index.js +46 -0
  127. package/dist/components/SearchResultsFilterSidebar/index-BDcl27l4.d.ts +2 -0
  128. package/dist/components/SearchResultsFilterSidebar/index-DgPB1knO.d.cts +2 -0
  129. package/dist/components/SearchResultsFilterSidebar/index.cjs +16 -0
  130. package/dist/components/SearchResultsFilterSidebar/index.js +15 -0
  131. package/dist/{SearchResultsStates/index.d.cts → components/SearchResultsStates/index-CjYl1v-v.d.cts} +16 -5
  132. package/dist/{SearchResultsStates/index.d.ts → components/SearchResultsStates/index-DJaUfKjE.d.ts} +20 -9
  133. package/dist/components/SearchResultsStates/index.cjs +16 -0
  134. package/dist/components/SearchResultsStates/index.js +14 -0
  135. package/dist/components/SearchResultsToolbar/index-CVstdvRQ.d.cts +49 -0
  136. package/dist/components/SearchResultsToolbar/index-tAB6lEUm.d.ts +49 -0
  137. package/dist/components/SearchResultsToolbar/index.cjs +66 -0
  138. package/dist/components/SearchResultsToolbar/index.js +63 -0
  139. package/dist/components/SparkleAnimation/index-BQOC3G_6.d.cts +23 -0
  140. package/dist/components/SparkleAnimation/index-DjRK3Dys.d.ts +23 -0
  141. package/dist/components/SparkleAnimation/index.cjs +4 -0
  142. package/dist/components/SparkleAnimation/index.js +3 -0
  143. package/dist/{Spinner/index.d.cts → components/Spinner/index-C0pGovHC.d.cts} +2 -2
  144. package/dist/{Spinner/index.d.ts → components/Spinner/index-CIr1izou.d.ts} +2 -2
  145. package/dist/components/Spinner/index.cjs +3 -0
  146. package/dist/components/Spinner/index.js +3 -0
  147. package/dist/{SuggestionButton/index.d.ts → components/SuggestionButton/index-B4J70IPS.d.cts} +3 -3
  148. package/dist/{SuggestionButton/index.d.cts → components/SuggestionButton/index-D6_y1hTj.d.ts} +3 -3
  149. package/dist/{SuggestionButton → components/SuggestionButton}/index.cjs +6 -8
  150. package/dist/{SuggestionButton → components/SuggestionButton}/index.js +5 -6
  151. package/dist/{TextInput/index.d.cts → components/TextInput/index-CRJMRe-b.d.cts} +2 -2
  152. package/dist/{TextInput/index.d.ts → components/TextInput/index-CkQtHiR9.d.ts} +2 -2
  153. package/dist/components/TextInput/index.cjs +4 -0
  154. package/dist/components/TextInput/index.js +4 -0
  155. package/dist/{ToggleButton/index.d.ts → components/ToggleButton/index-B2rBwaVX.d.cts} +2 -2
  156. package/dist/{ToggleButton/index.d.cts → components/ToggleButton/index-Dc-cs_tK.d.ts} +2 -2
  157. package/dist/components/ToggleButton/index.cjs +4 -0
  158. package/dist/components/ToggleButton/index.js +4 -0
  159. package/dist/components/Typography/index-DE1Nhjra.d.ts +3 -0
  160. package/dist/components/Typography/index-DzSBreyM.d.cts +3 -0
  161. package/dist/{Typography → components/Typography}/index.cjs +1 -1
  162. package/dist/components/Typography/index.js +3 -0
  163. package/dist/formatPrice-CyfkjZ3R.cjs +19 -0
  164. package/dist/formatPrice-DexQu2aZ.js +13 -0
  165. package/dist/{SearchResultsFilterSidebar/index.d.ts → index-8cIrhPDk.d.ts} +9 -5
  166. package/dist/{SearchResultsFilterSidebar/index.d.cts → index-BKYA7uMB.d.cts} +9 -5
  167. package/dist/{index-DoTNu3mL.d.cts → index-Bw6lDfEp.d.cts} +2 -2
  168. package/dist/index-CqfgJHj8.d.cts +325 -0
  169. package/dist/{index-C5iOTsRG.d.ts → index-Cr8VXccr.d.ts} +2 -2
  170. package/dist/index-Cz6qxTZG.d.ts +325 -0
  171. package/dist/{searchFilterSidebarVariants-BQ7OC862.cjs → searchFilterSidebarVariants-C61Byr1S.cjs} +7 -10
  172. package/dist/{searchFilterSidebarVariants-C_rWIcxf.js → searchFilterSidebarVariants-DcwlBfvY.js} +2 -3
  173. package/dist/types--eyQnaEA.d.cts +4 -0
  174. package/dist/types-CQpdBL3M.d.ts +4 -0
  175. package/dist/{typographyVariantClasses-BFRoEloZ.d.cts → typographyVariantClasses-CoRhazCU.d.cts} +1 -1
  176. package/dist/{typographyVariantClasses-D7h3ACAj.d.ts → typographyVariantClasses-CrT5OfVw.d.ts} +1 -1
  177. package/dist/util/index-C2ueYGXh.d.ts +21 -0
  178. package/dist/util/index-DUzbpjPa.d.cts +21 -0
  179. package/dist/util/index.cjs +80 -0
  180. package/dist/util/index.js +76 -0
  181. package/package.json +79 -53
  182. package/src/atoms/search/types.ts +1 -0
  183. package/src/components/AppliedFiltersScrollbar/AppliedFiltersScrollbar.tsx +1 -1
  184. package/src/components/ButtonBase/types.ts +1 -1
  185. package/src/components/FilterScrollbar/AppliedFiltersScrollbar.tsx +1 -1
  186. package/src/components/ProductCard/ProductCard.tsx +12 -12
  187. package/src/components/ProductCard/ProductCardSkeleton.tsx +1 -13
  188. package/src/components/ProductCard/index.ts +1 -0
  189. package/src/components/ProductCard/productCardVariants.ts +1 -1
  190. package/src/components/ProductCard/types.ts +49 -0
  191. package/src/components/ProductGrid/ProductGrid.tsx +2 -6
  192. package/src/components/ProductGrid/productGridVariants.ts +1 -1
  193. package/src/components/RadioButton/RadioButton.tsx +1 -1
  194. package/src/components/RadioButtonGroup/RadioButtonGroup.tsx +1 -1
  195. package/src/components/RecommendedProducts/RecommendedProducts.tsx +97 -0
  196. package/src/components/RecommendedProducts/index.ts +3 -0
  197. package/src/components/SearchFilter/SearchFilter.tsx +2 -1
  198. package/src/components/SearchFilter/SearchFilterFooter.tsx +1 -1
  199. package/src/components/SearchFilter/SearchFilterHeader.tsx +1 -1
  200. package/src/components/SearchFilter/SearchFilterItem.tsx +1 -1
  201. package/src/components/SearchFilter/types.ts +45 -0
  202. package/src/components/SearchFilter/useHasFilterStateChanged.tsx +1 -1
  203. package/src/components/SearchFilter/utils.ts +1 -1
  204. package/src/components/SearchInput/SearchInput.tsx +1 -1
  205. package/src/components/SearchInput/searchInputVariants.ts +2 -2
  206. package/src/components/SearchInputForm/SearchInputForm.tsx +7 -4
  207. package/src/components/SearchResultsContent/SearchResultsContent.tsx +72 -39
  208. package/src/components/SearchResultsFilterButton/SearchResultsFilterButton.tsx +30 -0
  209. package/src/components/SearchResultsFilterButton/index.ts +3 -0
  210. package/src/components/SearchResultsFilterModal/SearchResultsFilterModal.tsx +61 -0
  211. package/src/components/SearchResultsFilterModal/index.ts +3 -0
  212. package/src/components/SearchResultsFilterSidebar/SearchResultsFilter.tsx +2 -1
  213. package/src/components/SearchResultsFilterSidebar/index.ts +1 -0
  214. package/src/components/SearchResultsFilterSidebar/searchFilterSidebarVariants.ts +2 -2
  215. package/src/components/SearchResultsFilterSidebar/types.ts +2 -0
  216. package/src/components/SearchResultsStates/NoSearchResultsFound.tsx +43 -11
  217. package/src/components/SearchResultsStates/SearchResultsGrid.tsx +8 -7
  218. package/src/components/SearchResultsStates/SearchResultsLoadingGrid.tsx +1 -2
  219. package/src/components/SearchResultsToolbar/SearchResultsToolbar.tsx +111 -0
  220. package/src/components/SearchResultsToolbar/index.ts +3 -0
  221. package/src/components/SparkleAnimation/SparkleAnimation.tsx +1 -7
  222. package/src/components/SparkleAnimation/index.ts +1 -0
  223. package/src/components/SparkleAnimation/types.ts +6 -0
  224. package/src/components/SuggestionButton/SuggestionButton.tsx +1 -1
  225. package/src/config/chatElementDisplayLocation.ts +23 -0
  226. package/src/models/colorsConfig.ts +28 -0
  227. package/src/stories/AppliedFiltersScrollbar.stories.tsx +42 -0
  228. package/src/stories/ButtonBase.stories.tsx +54 -0
  229. package/src/stories/DynamicFiltersScrollbar.stories.tsx +42 -0
  230. package/src/stories/NoSearchResultsFound.stories.tsx +30 -0
  231. package/src/stories/ProductCard.stories.tsx +78 -0
  232. package/src/stories/ProductCardSkeleton.stories.tsx +48 -0
  233. package/src/stories/ProductGrid.stories.tsx +82 -0
  234. package/src/stories/SearchInputForm.stories.tsx +39 -0
  235. package/src/stories/SearchResultsFilter.stories.tsx +56 -0
  236. package/src/stories/SearchResultsGrid.stories.tsx +98 -0
  237. package/src/stories/SearchResultsLoadingGrid.stories.tsx +30 -0
  238. package/src/stories/SparkleAnimation.stories.tsx +47 -0
  239. package/src/stories/Typography.stories.tsx +140 -0
  240. package/src/util/camelCase.ts +87 -0
  241. package/src/util/camelCasedPropertiesDeep.ts +81 -0
  242. package/src/util/colorVar.ts +1 -1
  243. package/src/util/index.ts +4 -0
  244. package/src/util/internal.ts +97 -0
  245. package/src/util/primitive.ts +8 -0
  246. package/src/util/splitWords.ts +76 -0
  247. package/src/util/trim.ts +28 -0
  248. package/src/util/unknownArray.ts +25 -0
  249. package/src/util/useScrollDirection.ts +60 -0
  250. package/src/util/useStickyVisibility.ts +37 -0
  251. package/dist/Accordion/index.cjs +0 -4
  252. package/dist/Accordion/index.js +0 -4
  253. package/dist/AnimatedChevron/index.cjs +0 -3
  254. package/dist/AnimatedChevron/index.js +0 -3
  255. package/dist/ButtonBase/index.cjs +0 -6
  256. package/dist/ButtonBase/index.js +0 -5
  257. package/dist/FilterScrollbar/index.cjs +0 -5
  258. package/dist/FilterScrollbar/index.js +0 -4
  259. package/dist/ImageWithFallback/index.cjs +0 -3
  260. package/dist/ImageWithFallback/index.js +0 -3
  261. package/dist/ModalSheet/index.cjs +0 -4
  262. package/dist/ModalSheet/index.js +0 -4
  263. package/dist/ProductCard/index.d.cts +0 -82
  264. package/dist/ProductCard/index.d.ts +0 -82
  265. package/dist/ProductCard/index.js +0 -6
  266. package/dist/ProductGrid/index.cjs +0 -8
  267. package/dist/ProductGrid/index.js +0 -7
  268. package/dist/RadioButton/index.cjs +0 -4
  269. package/dist/RadioButton/index.js +0 -4
  270. package/dist/RadioButtonGroup/index.cjs +0 -6
  271. package/dist/RadioButtonGroup/index.js +0 -5
  272. package/dist/SearchAutocomplete/index.cjs +0 -4
  273. package/dist/SearchAutocomplete/index.js +0 -4
  274. package/dist/SearchFilter/index.cjs +0 -17
  275. package/dist/SearchFilter/index.d.cts +0 -54
  276. package/dist/SearchFilter/index.d.ts +0 -54
  277. package/dist/SearchFilter/index.js +0 -12
  278. package/dist/SearchInput/index.cjs +0 -7
  279. package/dist/SearchInput/index.js +0 -6
  280. package/dist/SearchResultsContent/index.cjs +0 -44
  281. package/dist/SearchResultsContent/index.js +0 -41
  282. package/dist/SearchResultsStates/index.cjs +0 -14
  283. package/dist/SearchResultsStates/index.js +0 -12
  284. package/dist/SparkleAnimation/index.cjs +0 -3
  285. package/dist/SparkleAnimation/index.d.cts +0 -15
  286. package/dist/SparkleAnimation/index.d.ts +0 -15
  287. package/dist/SparkleAnimation/index.js +0 -3
  288. package/dist/Spinner/index.cjs +0 -3
  289. package/dist/Spinner/index.js +0 -3
  290. package/dist/TextInput/index.cjs +0 -4
  291. package/dist/TextInput/index.js +0 -4
  292. package/dist/ToggleButton/index.cjs +0 -4
  293. package/dist/ToggleButton/index.js +0 -4
  294. package/dist/Typography/index.d.cts +0 -3
  295. package/dist/Typography/index.d.ts +0 -3
  296. package/dist/Typography/index.js +0 -3
  297. package/dist/colorVar-B5CLhSof.cjs +0 -11
  298. package/dist/colorVar-BJve0Z4_.js +0 -5
  299. /package/dist/{ButtonBase-DbWQ25n-.cjs → ButtonBase-BIXx56hq.cjs} +0 -0
  300. /package/dist/{ButtonBase-C_uKnl48.js → ButtonBase-C9fn-c5h.js} +0 -0
  301. /package/dist/{Accordion/index.d.cts → components/Accordion/index-DBEaF9x5.d.ts} +0 -0
@@ -0,0 +1,28 @@
1
+ enum ColorNames {
2
+ TextPrimary = 'text-primary',
3
+ TextSecondary = 'text-secondary',
4
+ TextAccent = 'text-accent',
5
+ TextLink = 'text-link',
6
+ TextLight = 'text-light',
7
+ BackgroundPrimary = 'background-primary',
8
+ BackgroundSecondary = 'background-secondary',
9
+ BackgroundSecondaryDark = 'background-secondary-dark',
10
+ BackgroundTertiary = 'background-tertiary',
11
+ BackgroundDark = 'background-dark',
12
+ BackgroundLight = 'background-light',
13
+ BackgroundSaturated = 'background-saturated',
14
+ BorderLight = 'border-light',
15
+ BorderMedium = 'border-medium',
16
+ BorderDark = 'border-dark',
17
+ BorderOutline = 'border-outline',
18
+ AccentPrimary = 'accent-primary',
19
+ AccentSecondary = 'accent-secondary',
20
+ }
21
+
22
+ type ColorMapping = {
23
+ [key in ColorNames]: string;
24
+ };
25
+
26
+ const colorVar = (color: ColorNames): string => `var(--spiffy-colors-${color})`;
27
+ export { ColorNames, colorVar };
28
+ export type { ColorMapping };
@@ -0,0 +1,42 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { SelectedFilterOption } from '@envive-ai/react-hooks/atoms/search';
3
+ import { AppliedFiltersScrollbar } from '@envive-ai/react-toolkit/AppliedFiltersScrollbar';
4
+
5
+ const mockSelectedFilterOptions: SelectedFilterOption[] = [
6
+ { id: 'cat2', displayName: 'Category 2', filterId: 'category', filterItemId: 'cat2' },
7
+ { id: 'brandA', displayName: 'Brand A', filterId: 'brand', filterItemId: 'brandA' },
8
+ { id: 'colorRed', displayName: 'Color: Red', filterId: 'color', filterItemId: 'red' },
9
+ { id: 'sizeM', displayName: 'Size: M', filterId: 'size', filterItemId: 'M' },
10
+ ];
11
+
12
+ const meta: Meta<typeof AppliedFiltersScrollbar> = {
13
+ title: 'Search/AppliedFiltersScrollbar',
14
+ component: AppliedFiltersScrollbar,
15
+ parameters: {
16
+ layout: 'centered',
17
+ },
18
+ tags: ['autodocs'],
19
+ };
20
+
21
+ export default meta;
22
+ type Story = StoryObj<typeof AppliedFiltersScrollbar>;
23
+
24
+ export const Default: Story = {
25
+ args: {
26
+ selectedFilterOptions: mockSelectedFilterOptions,
27
+ filterBarClassNames:
28
+ 'spiffy-suggestion-bar spiffy-tw-no-scrollbar spiffy-tw-flex spiffy-tw-flex-row spiffy-tw-gap-2 spiffy-tw-mb-[16px] spiffy-tw-overflow-x-scroll spiffy-tw-px-[16px] sm:spiffy-tw-px-[46px]',
29
+ filterDefaultClasses:
30
+ 'spiffy-tw-bg-[--spiffy-colors-background-light] spiffy-tw-border-[--spiffy-colors-border-light] spiffy-tw-text-[--spiffy-colors-text-primary]',
31
+ filterHoverClasses: 'hover:spiffy-tw-border-[--spiffy-colors-accent-primary]',
32
+ appliedFilterBackgroundClasses: 'spiffy-tw-bg-[--spiffy-colors-accent-primary]',
33
+ onRemoveFilter: () => {},
34
+ },
35
+ };
36
+
37
+ export const NoFilters: Story = {
38
+ args: {
39
+ ...Default.args,
40
+ selectedFilterOptions: [],
41
+ },
42
+ };
@@ -0,0 +1,54 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { ButtonBase } from '@envive-ai/react-toolkit/ButtonBase';
3
+ import SettingsVariant from '@envive-ai/react-icons/SettingsVariant';
4
+
5
+ const meta = {
6
+ title: 'Common/ButtonBase',
7
+ component: ButtonBase,
8
+ parameters: {
9
+ layout: 'centered',
10
+ },
11
+ tags: ['autodocs'],
12
+ args: {
13
+ dataAttributes: undefined,
14
+ buttonClass: undefined,
15
+ textClass: undefined,
16
+ icon: undefined,
17
+ dataTestId: undefined,
18
+ onClick: undefined,
19
+ },
20
+ argTypes: {
21
+ onClick: { action: 'clicked' },
22
+ dataAttributes: { control: 'object' },
23
+ buttonClass: { control: 'text' },
24
+ textClass: { control: 'text' },
25
+ dataTestId: { control: 'text' },
26
+ type: { control: 'select', options: ['button', 'submit', 'reset'] },
27
+ isDisabled: { control: 'boolean' },
28
+ iconClass: { control: 'text' },
29
+ disablePadding: { control: 'boolean' },
30
+ },
31
+ } satisfies Meta<typeof ButtonBase>;
32
+
33
+ export default meta;
34
+ type Story = StoryObj<typeof meta>;
35
+
36
+ export const Primary: Story = {
37
+ args: {
38
+ text: 'Button',
39
+ },
40
+ };
41
+
42
+ export const WithIcon: Story = {
43
+ args: {
44
+ text: 'Settings',
45
+ icon: SettingsVariant,
46
+ },
47
+ };
48
+
49
+ export const Disabled: Story = {
50
+ args: {
51
+ text: 'Disabled Button',
52
+ isDisabled: true,
53
+ },
54
+ };
@@ -0,0 +1,42 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { DynamicFiltersScrollbar } from '@envive-ai/react-toolkit/DynamicFiltersScrollbar';
3
+
4
+ const mockAvailableDynamicFilters = [
5
+ { name: 'color', displayName: 'Color' },
6
+ { name: 'size', displayName: 'Size' },
7
+ { name: 'material', displayName: 'Material' },
8
+ { name: 'brand', displayName: 'Brand' },
9
+ { name: 'price', displayName: 'Price Range' },
10
+ { name: 'rating', displayName: 'Customer Rating' },
11
+ ];
12
+
13
+ const meta: Meta<typeof DynamicFiltersScrollbar> = {
14
+ title: 'Search/DynamicFiltersScrollbar',
15
+ component: DynamicFiltersScrollbar,
16
+ parameters: {
17
+ layout: 'centered',
18
+ },
19
+ tags: ['autodocs'],
20
+ };
21
+
22
+ export default meta;
23
+ type Story = StoryObj<typeof DynamicFiltersScrollbar>;
24
+
25
+ export const Default: Story = {
26
+ args: {
27
+ availableDynamicFilters: mockAvailableDynamicFilters,
28
+ filterBarClassNames:
29
+ 'spiffy-suggestion-bar spiffy-tw-no-scrollbar spiffy-tw-flex spiffy-tw-flex-row spiffy-tw-gap-2 spiffy-tw-mb-[16px] spiffy-tw-overflow-x-scroll spiffy-tw-px-[16px] sm:spiffy-tw-px-[46px]',
30
+ filterDefaultClasses:
31
+ 'spiffy-tw-bg-[--spiffy-colors-background-light] spiffy-tw-border-[--spiffy-colors-border-light] spiffy-tw-text-[--spiffy-colors-text-primary]',
32
+ filterHoverClasses: 'hover:spiffy-tw-border-[--spiffy-colors-accent-primary]',
33
+ onToggleDynamicFilter: () => {},
34
+ },
35
+ };
36
+
37
+ export const NoFilters: Story = {
38
+ args: {
39
+ ...Default.args,
40
+ availableDynamicFilters: [],
41
+ },
42
+ };
@@ -0,0 +1,30 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { NoSearchResultsFound } from '@envive-ai/react-toolkit/SearchResultsStates';
3
+
4
+ const meta: Meta<typeof NoSearchResultsFound> = {
5
+ title: 'Search/NoSearchResultsFound',
6
+ component: NoSearchResultsFound,
7
+ parameters: {
8
+ layout: 'centered',
9
+ },
10
+ tags: ['autodocs'],
11
+ };
12
+
13
+ export default meta;
14
+ type Story = StoryObj<typeof NoSearchResultsFound>;
15
+
16
+ export const Default: Story = {
17
+ args: {
18
+ containerPaddingClasses: 'spiffy-tw-px-[16px]',
19
+ noResultsFoundText:
20
+ 'I’m sorry, I wasn’t able to find an exact match. Try changing your filters or adjusting your search query.',
21
+ sparkleIconColor: 'var(--spiffy-colors-accent-primary)',
22
+ },
23
+ };
24
+
25
+ export const CustomText: Story = {
26
+ args: {
27
+ ...Default.args,
28
+ noResultsFoundText: 'No items found matching your criteria. Please try again.',
29
+ },
30
+ };
@@ -0,0 +1,78 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { ProductCard } from '@envive-ai/react-toolkit/ProductCard';
3
+ import { productGridVariantClasses } from '@envive-ai/react-toolkit/ProductGrid';
4
+
5
+ const meta: Meta<typeof ProductCard> = {
6
+ title: 'Common/ProductCard',
7
+ component: ProductCard,
8
+ parameters: {
9
+ layout: 'centered',
10
+ },
11
+ tags: ['autodocs'],
12
+ argTypes: {
13
+ layoutVariant: {
14
+ control: 'select',
15
+ options: Object.values(productGridVariantClasses),
16
+ },
17
+ variant: {
18
+ control: 'select',
19
+ options: Object.values(productGridVariantClasses),
20
+ },
21
+ hoverVariant: {
22
+ control: 'select',
23
+ options: Object.values(productGridVariantClasses),
24
+ },
25
+ aspectRatio: {
26
+ control: 'select',
27
+ options: Object.values(productGridVariantClasses),
28
+ },
29
+ },
30
+ };
31
+
32
+ export default meta;
33
+ type Story = StoryObj<typeof ProductCard>;
34
+
35
+ export const Default: Story = {
36
+ args: {
37
+ productCardConfig: {
38
+ variant: 'minimal',
39
+ hoverVariant: 'backgroundDark',
40
+ layoutVariant: 'tall',
41
+ },
42
+ imageUrl: 'https://dummyimage.com/250x250/cccccc/aeaeae.jpg',
43
+ title: 'Example Product Title',
44
+ url: '#',
45
+ originalPrice: 25.0,
46
+ salePrice: 20.0,
47
+ averageRating: 4.5,
48
+ numberReviews: 120,
49
+ layoutVariant: 'tall',
50
+ variant: 'minimal',
51
+ hoverVariant: 'backgroundDark',
52
+ zoomOnHover: true,
53
+ aspectRatio: 'none',
54
+ growWithContainer: true,
55
+ },
56
+ };
57
+
58
+ export const TallLayout: Story = {
59
+ args: {
60
+ ...Default.args,
61
+ layoutVariant: 'tall',
62
+ },
63
+ };
64
+
65
+ export const NoSalePrice: Story = {
66
+ args: {
67
+ ...Default.args,
68
+ salePrice: undefined,
69
+ },
70
+ };
71
+
72
+ export const NoRating: Story = {
73
+ args: {
74
+ ...Default.args,
75
+ averageRating: undefined,
76
+ numberReviews: undefined,
77
+ },
78
+ };
@@ -0,0 +1,48 @@
1
+ import { ProductCardSkeleton } from '@envive-ai/react-toolkit/ProductCard';
2
+ import { productGridVariantClasses } from '@envive-ai/react-toolkit/ProductGrid';
3
+
4
+ import type { Meta, StoryObj } from '@storybook/react-vite';
5
+
6
+ const meta: Meta<typeof ProductCardSkeleton> = {
7
+ title: 'Common/ProductCardSkeleton',
8
+ component: ProductCardSkeleton,
9
+ parameters: {
10
+ layout: 'centered',
11
+ },
12
+ tags: ['autodocs'],
13
+ argTypes: {
14
+ layoutVariant: {
15
+ control: 'select',
16
+ options: Object.values(productGridVariantClasses),
17
+ },
18
+ aspectRatio: {
19
+ control: 'select',
20
+ options: Object.values(productGridVariantClasses),
21
+ },
22
+ },
23
+ };
24
+
25
+ export default meta;
26
+ type Story = StoryObj<typeof ProductCardSkeleton>;
27
+
28
+ export const Default: Story = {
29
+ args: {
30
+ layoutVariant: 'normal',
31
+ aspectRatio: 'none',
32
+ growWithContainer: true,
33
+ },
34
+ };
35
+
36
+ export const MinimalLayout: Story = {
37
+ args: {
38
+ ...Default.args,
39
+ layoutVariant: 'normal',
40
+ },
41
+ };
42
+
43
+ export const AspectRatio3x4: Story = {
44
+ args: {
45
+ ...Default.args,
46
+ aspectRatio: '3:4',
47
+ },
48
+ };
@@ -0,0 +1,82 @@
1
+ import { ProductGrid, productGridVariantClasses } from '@envive-ai/react-toolkit/ProductGrid';
2
+ import type { Meta, StoryObj } from '@storybook/react-vite';
3
+
4
+ const mockProductList = [
5
+ {
6
+ id: '1',
7
+ responseId: 'prod1',
8
+ imageUrl: 'https://dummyimage.com/250x250/cccccc/aeaeae.jpg',
9
+ title: 'Product 1',
10
+ url: '#',
11
+ originalPrice: 25.0,
12
+ salePrice: 20.0,
13
+ averageRating: 4.5,
14
+ numberReviews: 120,
15
+ },
16
+ {
17
+ id: '2',
18
+ responseId: 'prod2',
19
+ imageUrl: 'https://dummyimage.com/250x250/cccccc/aeaeae.jpg',
20
+ title: 'Product 2',
21
+ url: '#',
22
+ originalPrice: 30.0,
23
+ salePrice: 28.0,
24
+ averageRating: 3.9,
25
+ numberReviews: 85,
26
+ },
27
+ {
28
+ id: '3',
29
+ responseId: 'prod3',
30
+ imageUrl: 'https://dummyimage.com/250x250/cccccc/aeaeae.jpg',
31
+ title: 'Product 3',
32
+ url: '#',
33
+ originalPrice: 15.0,
34
+ salePrice: 12.5,
35
+ averageRating: 4.8,
36
+ numberReviews: 200,
37
+ },
38
+ {
39
+ id: '4',
40
+ responseId: 'prod4',
41
+ imageUrl: 'https://dummyimage.com/250x250/cccccc/aeaeae.jpg',
42
+ title: 'Product 4',
43
+ url: '#',
44
+ originalPrice: 50.0,
45
+ salePrice: 45.0,
46
+ averageRating: 4.2,
47
+ numberReviews: 50,
48
+ },
49
+ ];
50
+
51
+ const meta: Meta<typeof ProductGrid> = {
52
+ title: 'Common/ProductGrid',
53
+ component: ProductGrid,
54
+ parameters: {
55
+ layout: 'fullscreen',
56
+ },
57
+ tags: ['autodocs'],
58
+ argTypes: {
59
+ productGridVariant: {
60
+ control: 'select',
61
+ options: Object.values(productGridVariantClasses),
62
+ },
63
+ },
64
+ };
65
+
66
+ export default meta;
67
+ type Story = StoryObj<typeof ProductGrid>;
68
+
69
+ export const Default: Story = {
70
+ args: {
71
+ productList: mockProductList,
72
+ productGridVariant: 'standard',
73
+ productGridClasses:
74
+ 'spiffy-tw-grid spiffy-tw-justify-items-stretch spiffy-tw-grid-cols-2 md:spiffy-tw-grid-cols-3 lg:spiffy-tw-grid-cols-4 spiffy-tw-gap-x-[4px] spiffy-tw-gap-y-[24px] spiffy-tw-h-full spiffy-tw-w-full spiffy-tw-items-stretch',
75
+ cardsGrowWithContainer: true,
76
+ productCardConfig: {
77
+ variant: 'minimal',
78
+ hoverVariant: 'backgroundDark',
79
+ layoutVariant: 'tall',
80
+ },
81
+ },
82
+ };
@@ -0,0 +1,39 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { SearchInputForm } from '@envive-ai/react-toolkit/SearchInputForm';
3
+
4
+ export type SearchInputVariant = 'standard';
5
+
6
+ const mockAutocompleteResults = ['apple', 'banana', 'orange', 'grape', 'strawberry'];
7
+
8
+ const meta: Meta<typeof SearchInputForm> = {
9
+ title: 'Search/SearchInputForm',
10
+ component: SearchInputForm,
11
+ parameters: {
12
+ layout: 'centered',
13
+ },
14
+ tags: ['autodocs'],
15
+ argTypes: {
16
+ searchInputVariant: {
17
+ control: 'select',
18
+ options: ['standard'],
19
+ },
20
+ },
21
+ };
22
+
23
+ export default meta;
24
+ type Story = StoryObj<typeof SearchInputForm>;
25
+
26
+ export const Default: Story = {
27
+ args: {
28
+ searchInputVariant: 'standard' as SearchInputVariant,
29
+ searchText: '',
30
+ autocompleteResults: mockAutocompleteResults,
31
+ searchBoxPlaceholder: 'Search for products...',
32
+ focusedOptionId: undefined,
33
+ focusedIndex: -1,
34
+ onKeyDown: () => {},
35
+ onAutocompleteSelect: () => {},
36
+ onSearchInputChange: () => {},
37
+ onSearchSubmit: () => {},
38
+ },
39
+ };
@@ -0,0 +1,56 @@
1
+ import { SearchFilterDatum } from '@envive-ai/react-hooks/types';
2
+ import {
3
+ searchFilterSidebarVariantClasses,
4
+ SearchResultsFilter,
5
+ } from '@envive-ai/react-toolkit/SearchResultsFilterSidebar';
6
+ import type { Meta, StoryObj } from '@storybook/react-vite';
7
+
8
+ const mockSearchFilters: SearchFilterDatum[] = [
9
+ {
10
+ filterId: 'category',
11
+ displayName: 'Category',
12
+ items: [
13
+ { filterItemId: 'cat1', displayName: 'Category 1', productCount: 10, isSelected: false },
14
+ { filterItemId: 'cat2', displayName: 'Category 2', productCount: 10, isSelected: true },
15
+ ],
16
+ },
17
+ {
18
+ filterId: 'brand',
19
+ displayName: 'Brand',
20
+ items: [
21
+ { filterItemId: 'brandA', displayName: 'Brand A', productCount: 10, isSelected: false },
22
+ { filterItemId: 'brandB', displayName: 'Brand B', productCount: 10, isSelected: false },
23
+ ],
24
+ },
25
+ ];
26
+
27
+ const meta: Meta<typeof SearchResultsFilter> = {
28
+ title: 'Search/SearchResultsFilter',
29
+ component: SearchResultsFilter,
30
+ parameters: {
31
+ layout: 'fullscreen',
32
+ },
33
+ tags: ['autodocs'],
34
+ argTypes: {
35
+ searchFilterSidebarVariant: {
36
+ control: 'select',
37
+ options: Object.keys(searchFilterSidebarVariantClasses),
38
+ },
39
+ },
40
+ };
41
+
42
+ export default meta;
43
+ type Story = StoryObj<typeof SearchResultsFilter>;
44
+
45
+ export const Default: Story = {
46
+ args: {
47
+ productCount: 100,
48
+ isOpen: true,
49
+ setIsOpen: () => {},
50
+ searchFilters: mockSearchFilters,
51
+ searchFilterSidebarVariant: 'darkButton',
52
+ onSelectFilterItem: () => {},
53
+ onClearAllFilters: () => {},
54
+ filterButtonText: 'Filter',
55
+ },
56
+ };
@@ -0,0 +1,98 @@
1
+ import { SelectedFilterOption } from '@envive-ai/react-hooks/atoms/search';
2
+ import { productGridVariantClasses } from '@envive-ai/react-toolkit/ProductGrid';
3
+ import { SearchResultsGrid } from '@envive-ai/react-toolkit/SearchResultsStates';
4
+ import type { Meta, StoryObj } from '@storybook/react-vite';
5
+
6
+ const mockProductList = [
7
+ {
8
+ id: '1',
9
+ responseId: 'prod1',
10
+ imageUrl: 'https://dummyimage.com/250x250/cccccc/aeaeae.jpg',
11
+ title: 'Product 1',
12
+ url: '#',
13
+ originalPrice: 25.0,
14
+ salePrice: 20.0,
15
+ averageRating: 4.5,
16
+ numberReviews: 120,
17
+ },
18
+ {
19
+ id: '2',
20
+ responseId: 'prod2',
21
+ imageUrl: 'https://dummyimage.com/250x250/cccccc/aeaeae.jpg',
22
+ title: 'Product 2',
23
+ url: '#',
24
+ originalPrice: 30.0,
25
+ salePrice: 28.0,
26
+ averageRating: 3.9,
27
+ numberReviews: 85,
28
+ },
29
+ {
30
+ id: '3',
31
+ responseId: 'prod3',
32
+ imageUrl: 'https://dummyimage.com/250x250/cccccc/aeaeae.jpg',
33
+ title: 'Product 3',
34
+ url: '#',
35
+ originalPrice: 15.0,
36
+ salePrice: 12.5,
37
+ averageRating: 4.8,
38
+ numberReviews: 200,
39
+ },
40
+ {
41
+ id: '4',
42
+ responseId: 'prod4',
43
+ imageUrl: 'https://dummyimage.com/250x250/cccccc/aeaeae.jpg',
44
+ title: 'Product 4',
45
+ url: '#',
46
+ originalPrice: 50.0,
47
+ salePrice: 45.0,
48
+ averageRating: 4.2,
49
+ numberReviews: 50,
50
+ },
51
+ ];
52
+
53
+ const mockAvailableDynamicFilters = [
54
+ { name: 'color', displayName: 'Color' },
55
+ { name: 'size', displayName: 'Size' },
56
+ { name: 'material', displayName: 'Material' },
57
+ ];
58
+
59
+ const mockSelectedFilterOptions: SelectedFilterOption[] = [
60
+ { id: 'cat2', displayName: 'Category 2', filterId: 'cat2', filterItemId: 'cat2' },
61
+ ];
62
+
63
+ const meta: Meta<typeof SearchResultsGrid> = {
64
+ title: 'Search/SearchResultsGrid',
65
+ component: SearchResultsGrid,
66
+ parameters: {
67
+ layout: 'fullscreen',
68
+ },
69
+ tags: ['autodocs'],
70
+ argTypes: {
71
+ productGridVariant: {
72
+ control: 'select',
73
+ options: Object.values(productGridVariantClasses),
74
+ },
75
+ searchFilterSidebarVariant: {
76
+ control: 'select',
77
+ options: ['darkButton', 'lightButton'],
78
+ },
79
+ },
80
+ };
81
+
82
+ export default meta;
83
+ type Story = StoryObj<typeof SearchResultsGrid>;
84
+
85
+ export const Default: Story = {
86
+ args: {
87
+ productList: mockProductList,
88
+ availableDynamicFilters: mockAvailableDynamicFilters,
89
+ searchFilterSidebarVariant: 'darkButton',
90
+ productGridVariant: 'standard',
91
+ selectedFilterOptions: mockSelectedFilterOptions,
92
+ containerXPaddingClasses: 'spiffy-tw-px-[16px] sm:spiffy-tw-px-[46px]',
93
+ productGridClasses:
94
+ 'spiffy-tw-grid spiffy-tw-justify-items-stretch spiffy-tw-grid-cols-2 md:spiffy-tw-grid-cols-3 lg:spiffy-tw-grid-cols-4 spiffy-tw-gap-x-[4px] spiffy-tw-gap-y-[24px] spiffy-tw-h-full spiffy-tw-w-full spiffy-tw-items-stretch',
95
+ onRemoveFilter: () => {},
96
+ onToggleDynamicFilter: () => {},
97
+ },
98
+ };
@@ -0,0 +1,30 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { SearchResultsLoadingGrid } from '@envive-ai/react-toolkit/SearchResultsStates';
3
+ import { productGridVariantClasses } from '@envive-ai/react-toolkit/ProductGrid';
4
+
5
+ const meta: Meta<typeof SearchResultsLoadingGrid> = {
6
+ title: 'Search/SearchResultsLoadingGrid',
7
+ component: SearchResultsLoadingGrid,
8
+ parameters: {
9
+ layout: 'fullscreen',
10
+ },
11
+ tags: ['autodocs'],
12
+ argTypes: {
13
+ productGridVariant: {
14
+ control: 'select',
15
+ options: Object.values(productGridVariantClasses),
16
+ },
17
+ },
18
+ };
19
+
20
+ export default meta;
21
+ type Story = StoryObj<typeof SearchResultsLoadingGrid>;
22
+
23
+ export const Default: Story = {
24
+ args: {
25
+ productGridVariant: 'standard',
26
+ productGridClasses:
27
+ 'spiffy-tw-grid spiffy-tw-justify-items-stretch spiffy-tw-grid-cols-2 md:spiffy-tw-grid-cols-3 lg:spiffy-tw-grid-cols-4 spiffy-tw-gap-x-[4px] spiffy-tw-gap-y-[24px] spiffy-tw-h-full spiffy-tw-w-full spiffy-tw-items-stretch',
28
+ sparkleIconColor: 'var(--spiffy-colors-accent-primary)',
29
+ },
30
+ };
@@ -0,0 +1,47 @@
1
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
2
+ import { SparkleAnimation } from '@envive-ai/react-toolkit/SparkleAnimation';
3
+ import classNames from 'classnames';
4
+
5
+ const meta: Meta<typeof SparkleAnimation> = {
6
+ title: 'Common/SparkleAnimation',
7
+ component: SparkleAnimation,
8
+ parameters: {
9
+ layout: 'centered',
10
+ },
11
+ tags: ['autodocs'],
12
+ argTypes: {
13
+ color: { control: 'color' },
14
+ animate: { control: 'boolean' },
15
+ },
16
+ };
17
+
18
+ export default meta;
19
+ type Story = StoryObj<typeof SparkleAnimation>;
20
+
21
+ export const Default: Story = {
22
+ args: {
23
+ color: 'var(--spiffy-colors-accent-primary)',
24
+ animate: true,
25
+ },
26
+ render: (args) => {
27
+ const classes = classNames(
28
+ 'spiffy-tw-flex',
29
+ 'spiffy-tw-flex-row',
30
+ 'spiffy-tw-items-center', // Center items vertically
31
+ 'spiffy-tw-gap-[4px]',
32
+ 'spiffy-tw-h-[24px]',
33
+ );
34
+ return (
35
+ <div>
36
+ <SparkleAnimation {...args} className={classes} />
37
+ </div>
38
+ );
39
+ },
40
+ };
41
+
42
+ export const NotAnimating: Story = {
43
+ args: {
44
+ ...Default.args,
45
+ animate: false,
46
+ },
47
+ };