@envive-ai/react-toolkit 0.2.11 → 0.2.13-arthur-1

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 (309) hide show
  1. package/dist/{Accordion-B8aUlf0q.js → Accordion-8zFBEEaN.js} +25 -6
  2. package/dist/{Accordion-FyCFBOen.cjs → Accordion-DPUaEXiE.cjs} +23 -8
  3. package/dist/{AnimatedChevron-wpcAHp6d.cjs → AnimatedChevron-CPW5KPLr.cjs} +0 -2
  4. package/dist/{AnimatedChevron-Dee6Pe81.js → AnimatedChevron-DO_jcnJg.js} +1 -1
  5. package/dist/{ButtonBase-B6vDKbGQ.cjs → ButtonBase-C44g6llb.cjs} +1 -3
  6. package/dist/{ButtonBase-Bpc7nOpz.js → ButtonBase-Cjo-fBg2.js} +3 -3
  7. package/dist/{DynamicFiltersScrollbar-DIwHWq6v.cjs → DynamicFiltersScrollbar-IO886VXD.cjs} +3 -6
  8. package/dist/{DynamicFiltersScrollbar-D8OqC4DA.js → DynamicFiltersScrollbar-s5yfmMau.js} +5 -7
  9. package/dist/FourPointStar-3DqnYmfN.js +21 -0
  10. package/dist/FourPointStar-AQ9OSu0S.cjs +26 -0
  11. package/dist/{ImageWithFallback-DvaVpR6v.cjs → ImageWithFallback-C-ZQn7tR.cjs} +1 -2
  12. package/dist/{ImageWithFallback-BW57cQw-.js → ImageWithFallback-DjDNefaG.js} +2 -2
  13. package/dist/{ModalSheet-DFva7krP.js → ModalSheet-C5f5abw1.js} +12 -13
  14. package/dist/{ModalSheet-BvM2PJbH.cjs → ModalSheet-JZerJZ1T.cjs} +11 -16
  15. package/dist/OutlinedStar-CC0V_jAK.cjs +26 -0
  16. package/dist/OutlinedStar-WWs3gRwt.js +21 -0
  17. package/dist/{ProductCard-C2KvH4MN.cjs → ProductCard-C7rZyWpj.cjs} +31 -28
  18. package/dist/{ProductCard-BiWAcPO4.js → ProductCard-GxpFxjh0.js} +19 -24
  19. package/dist/{ProductGrid-DkOyRAEg.cjs → ProductGrid-0A8vml2y.cjs} +2 -3
  20. package/dist/{ProductGrid-B1RtE58G.js → ProductGrid-DAwc9dKV.js} +3 -3
  21. package/dist/{RadioButton-CQ6qOvBl.js → RadioButton-DOc8g47U.js} +3 -3
  22. package/dist/{RadioButton-DP-qs5cy.cjs → RadioButton-DpF1wymL.cjs} +1 -3
  23. package/dist/{RadioButtonGroup-CJPWfAaA.cjs → RadioButtonGroup-ByzTXNAb.cjs} +2 -3
  24. package/dist/{RadioButtonGroup-Ce8cKqYw.js → RadioButtonGroup-YQIxmR7j.js} +3 -3
  25. package/dist/RecommendedProducts-C6dLpLPP.js +49 -0
  26. package/dist/RecommendedProducts-qkPxXVJn.cjs +56 -0
  27. package/dist/{SearchAutocomplete-bbMvWWjI.cjs → SearchAutocomplete-BdTWETDB.cjs} +5 -9
  28. package/dist/{SearchAutocomplete-CjjL2_lm.js → SearchAutocomplete-DNe193EV.js} +7 -8
  29. package/dist/{SearchFilter-BLi6E9Wx.cjs → SearchFilter-BRtCSuAn.cjs} +38 -44
  30. package/dist/{SearchFilter-wHwOym_n.js → SearchFilter-DvJx0b0W.js} +40 -44
  31. package/dist/{SearchInput-BA6bepV_.cjs → SearchInput-CImlqrau.cjs} +64 -13
  32. package/dist/{SearchInput-C3nNkmBm.js → SearchInput-kLhxkpgq.js} +64 -9
  33. package/dist/{SearchInputForm/index.js → SearchInputForm-CFm_hUvX.js} +7 -9
  34. package/dist/{SearchInputForm/index.cjs → SearchInputForm-ZgNNEX6E.cjs} +13 -12
  35. package/dist/SearchResultsFilterButton-D929tRt9.cjs +96 -0
  36. package/dist/SearchResultsFilterButton-Dk7u7rgn.js +90 -0
  37. package/dist/{SearchResultsFilterSidebar/index.cjs → SearchResultsFilterSidebar-BRFONIEq.cjs} +11 -18
  38. package/dist/{SearchResultsFilterSidebar/index.js → SearchResultsFilterSidebar-DLzQoFGD.js} +5 -14
  39. package/dist/SearchResultsStates-CQR5Il4l.cjs +196 -0
  40. package/dist/SearchResultsStates-D7HfsLeZ.js +177 -0
  41. package/dist/{SparkleAnimation-BFAj73CF.cjs → SparkleAnimation-BikAiAmb.cjs} +20 -15
  42. package/dist/{SparkleAnimation-BYDUEqWX.js → SparkleAnimation-szzXiTam.js} +15 -12
  43. package/dist/{Spinner-Ccy6VFEp.cjs → Spinner-7HblFCja.cjs} +1 -2
  44. package/dist/{Spinner-D2HbRsuw.js → Spinner-OFbXMms8.js} +2 -2
  45. package/dist/{TextInput-CYTko3-n.cjs → TextInput-CaynCoDf.cjs} +3 -5
  46. package/dist/{TextInput-CmxnphaT.js → TextInput-CsdOvLBQ.js} +5 -6
  47. package/dist/{ToggleButton-V9Qsaks7.js → ToggleButton-D8--AKKK.js} +3 -3
  48. package/dist/{ToggleButton-CvxNLMe_.cjs → ToggleButton-Dxk3U1hR.cjs} +1 -2
  49. package/dist/{Typography-C3QmJzFK.js → Typography-xehJH05l.js} +1 -1
  50. package/dist/colorsConfig-CFI1KN8R.js +26 -0
  51. package/dist/colorsConfig-Dp7w5LPb.cjs +38 -0
  52. package/dist/{Accordion/index.d.ts → components/Accordion/index-D_7-KJa0.d.cts} +2 -2
  53. package/dist/{Accordion/index.d.cts → components/Accordion/index-Dd_9XeqA.d.ts} +2 -2
  54. package/dist/components/Accordion/index.cjs +5 -0
  55. package/dist/components/Accordion/index.js +5 -0
  56. package/dist/{AnimatedChevron/index.d.cts → components/AnimatedChevron/index-BwQ6tJL8.d.cts} +2 -2
  57. package/dist/{AnimatedChevron/index.d.ts → components/AnimatedChevron/index-DZdGWikh.d.ts} +2 -2
  58. package/dist/components/AnimatedChevron/index.cjs +3 -0
  59. package/dist/components/AnimatedChevron/index.js +3 -0
  60. package/dist/{AppliedFiltersScrollbar/index.d.ts → components/AppliedFiltersScrollbar/index-Dcyc-5Bv.d.ts} +3 -3
  61. package/dist/{AppliedFiltersScrollbar/index.d.cts → components/AppliedFiltersScrollbar/index-VbXAIfym.d.cts} +3 -3
  62. package/dist/{AppliedFiltersScrollbar → components/AppliedFiltersScrollbar}/index.cjs +4 -6
  63. package/dist/{AppliedFiltersScrollbar → components/AppliedFiltersScrollbar}/index.js +3 -4
  64. package/dist/{ButtonBase/index.d.ts → components/ButtonBase/index-Bxdhf_O8.d.cts} +3 -3
  65. package/dist/{ButtonBase/index.d.cts → components/ButtonBase/index-VoanK6Pr.d.ts} +3 -3
  66. package/dist/components/ButtonBase/index.cjs +6 -0
  67. package/dist/components/ButtonBase/index.js +5 -0
  68. package/dist/{DynamicFiltersScrollbar/index.d.cts → components/DynamicFiltersScrollbar/index-CHzxQmaW.d.cts} +2 -2
  69. package/dist/{DynamicFiltersScrollbar/index.d.ts → components/DynamicFiltersScrollbar/index-vVNOOaOF.d.ts} +2 -2
  70. package/dist/{DynamicFiltersScrollbar → components/DynamicFiltersScrollbar}/index.cjs +4 -6
  71. package/dist/{DynamicFiltersScrollbar → components/DynamicFiltersScrollbar}/index.js +3 -4
  72. package/dist/{FilterScrollbar/index.d.cts → components/FilterScrollbar/index-DXcZLcQi.d.cts} +4 -4
  73. package/dist/{FilterScrollbar/index.d.ts → components/FilterScrollbar/index-DwLyxqQl.d.ts} +4 -4
  74. package/dist/components/FilterScrollbar/index.cjs +5 -0
  75. package/dist/components/FilterScrollbar/index.js +4 -0
  76. package/dist/{ImageWithFallback/index.d.cts → components/ImageWithFallback/index-BLbkDyG8.d.cts} +2 -2
  77. package/dist/{ImageWithFallback/index.d.ts → components/ImageWithFallback/index-NJZsMOXc.d.ts} +2 -2
  78. package/dist/components/ImageWithFallback/index.cjs +3 -0
  79. package/dist/components/ImageWithFallback/index.js +3 -0
  80. package/dist/{ModalSheet/index.d.cts → components/ModalSheet/index-B5q4MHdq.d.cts} +2 -2
  81. package/dist/{ModalSheet/index.d.ts → components/ModalSheet/index-BN20-QS0.d.ts} +2 -2
  82. package/dist/components/ModalSheet/index.cjs +4 -0
  83. package/dist/components/ModalSheet/index.js +4 -0
  84. package/dist/components/ProductCard/index-CglXQ3wh.d.ts +2 -0
  85. package/dist/components/ProductCard/index-XVlN6iMl.d.cts +2 -0
  86. package/dist/{ProductCard → components/ProductCard}/index.cjs +7 -4
  87. package/dist/components/ProductCard/index.js +7 -0
  88. package/dist/{ProductGrid/index.d.ts → components/ProductGrid/index-BPBgwFsa.d.cts} +4 -3
  89. package/dist/{ProductGrid/index.d.cts → components/ProductGrid/index-D_YpwJCd.d.ts} +4 -3
  90. package/dist/components/ProductGrid/index.cjs +9 -0
  91. package/dist/components/ProductGrid/index.js +8 -0
  92. package/dist/{RadioButton/index.d.cts → components/RadioButton/index-BeOT_AlW.d.cts} +3 -3
  93. package/dist/{RadioButton/index.d.ts → components/RadioButton/index-CxluCaJw.d.ts} +3 -3
  94. package/dist/components/RadioButton/index.cjs +4 -0
  95. package/dist/components/RadioButton/index.js +4 -0
  96. package/dist/{RadioButtonGroup/index.d.cts → components/RadioButtonGroup/index-BOhV-rG3.d.cts} +3 -3
  97. package/dist/{RadioButtonGroup/index.d.ts → components/RadioButtonGroup/index-KeOIiYNW.d.ts} +3 -3
  98. package/dist/components/RadioButtonGroup/index.cjs +6 -0
  99. package/dist/components/RadioButtonGroup/index.js +5 -0
  100. package/dist/components/RecommendedProducts/index-BFM83Qu3.d.cts +15 -0
  101. package/dist/components/RecommendedProducts/index-DlbCfGof.d.ts +15 -0
  102. package/dist/components/RecommendedProducts/index.cjs +12 -0
  103. package/dist/components/RecommendedProducts/index.js +12 -0
  104. package/dist/{SearchAutocomplete/index.d.cts → components/SearchAutocomplete/index-BcnHcv7Q.d.cts} +2 -2
  105. package/dist/{SearchAutocomplete/index.d.ts → components/SearchAutocomplete/index-Br_POGOz.d.ts} +2 -2
  106. package/dist/components/SearchAutocomplete/index.cjs +6 -0
  107. package/dist/components/SearchAutocomplete/index.js +6 -0
  108. package/dist/components/SearchFilter/index-BbIqmoO8.d.ts +91 -0
  109. package/dist/components/SearchFilter/index-DAL3Wl6U.d.cts +91 -0
  110. package/dist/components/SearchFilter/index.cjs +18 -0
  111. package/dist/components/SearchFilter/index.js +13 -0
  112. package/dist/{SearchInput/index.d.cts → components/SearchInput/index-C0H51Flv.d.ts} +4 -3
  113. package/dist/{SearchInput/index.d.ts → components/SearchInput/index-rFDdhvqg.d.cts} +4 -3
  114. package/dist/components/SearchInput/index.cjs +8 -0
  115. package/dist/components/SearchInput/index.js +7 -0
  116. package/dist/{SearchInputForm/index.d.cts → components/SearchInputForm/index-Cleto06d.d.cts} +4 -2
  117. package/dist/{SearchInputForm/index.d.ts → components/SearchInputForm/index-DjjoY7MQ.d.ts} +6 -4
  118. package/dist/components/SearchInputForm/index.cjs +10 -0
  119. package/dist/components/SearchInputForm/index.js +10 -0
  120. package/dist/{SearchResultsContent/index.d.ts → components/SearchResultsContent/index-C4qsTFUd.d.cts} +19 -7
  121. package/dist/{SearchResultsContent/index.d.cts → components/SearchResultsContent/index-KdFf9yzs.d.ts} +17 -5
  122. package/dist/components/SearchResultsContent/index.cjs +62 -0
  123. package/dist/components/SearchResultsContent/index.js +60 -0
  124. package/dist/components/SearchResultsFilterButton/index-BvntKdyC.d.ts +13 -0
  125. package/dist/components/SearchResultsFilterButton/index-zgQsT6vz.d.cts +13 -0
  126. package/dist/components/SearchResultsFilterButton/index.cjs +10 -0
  127. package/dist/components/SearchResultsFilterButton/index.js +10 -0
  128. package/dist/components/SearchResultsFilterModal/index-CNBQ1ikL.d.ts +27 -0
  129. package/dist/components/SearchResultsFilterModal/index-mRcnKysU.d.cts +27 -0
  130. package/dist/components/SearchResultsFilterModal/index.cjs +48 -0
  131. package/dist/components/SearchResultsFilterModal/index.js +47 -0
  132. package/dist/components/SearchResultsFilterSidebar/index-C7PE9z5a.d.ts +2 -0
  133. package/dist/components/SearchResultsFilterSidebar/index-DKzEKFV3.d.cts +2 -0
  134. package/dist/components/SearchResultsFilterSidebar/index.cjs +17 -0
  135. package/dist/components/SearchResultsFilterSidebar/index.js +16 -0
  136. package/dist/{SearchResultsStates/index.d.ts → components/SearchResultsStates/index-Dugoegtn.d.ts} +20 -9
  137. package/dist/{SearchResultsStates/index.d.cts → components/SearchResultsStates/index-RVgPTFiH.d.cts} +16 -5
  138. package/dist/components/SearchResultsStates/index.cjs +18 -0
  139. package/dist/components/SearchResultsStates/index.js +16 -0
  140. package/dist/components/SearchResultsToolbar/index-CIvuccni.d.ts +49 -0
  141. package/dist/components/SearchResultsToolbar/index-PYr086HM.d.cts +49 -0
  142. package/dist/components/SearchResultsToolbar/index.cjs +68 -0
  143. package/dist/components/SearchResultsToolbar/index.js +65 -0
  144. package/dist/components/SparkleAnimation/index-BFqUibyY.d.ts +23 -0
  145. package/dist/components/SparkleAnimation/index-CSBR76H5.d.cts +23 -0
  146. package/dist/components/SparkleAnimation/index.cjs +6 -0
  147. package/dist/components/SparkleAnimation/index.js +5 -0
  148. package/dist/{Spinner/index.d.cts → components/Spinner/index-DrYhRG9D.d.cts} +2 -2
  149. package/dist/{Spinner/index.d.ts → components/Spinner/index-TKsPifGM.d.ts} +2 -2
  150. package/dist/components/Spinner/index.cjs +3 -0
  151. package/dist/components/Spinner/index.js +3 -0
  152. package/dist/{SuggestionButton/index.d.cts → components/SuggestionButton/index-BioM3QHW.d.ts} +3 -3
  153. package/dist/{SuggestionButton/index.d.ts → components/SuggestionButton/index-CjV6Ar4Y.d.cts} +3 -3
  154. package/dist/{SuggestionButton → components/SuggestionButton}/index.cjs +11 -14
  155. package/dist/{SuggestionButton → components/SuggestionButton}/index.js +10 -10
  156. package/dist/{TextInput/index.d.cts → components/TextInput/index-CRJMRe-b.d.cts} +2 -2
  157. package/dist/{TextInput/index.d.ts → components/TextInput/index-DAhxej1K.d.ts} +2 -2
  158. package/dist/components/TextInput/index.cjs +4 -0
  159. package/dist/components/TextInput/index.js +4 -0
  160. package/dist/{ToggleButton/index.d.cts → components/ToggleButton/index-eLDrp4ic.d.cts} +2 -2
  161. package/dist/{ToggleButton/index.d.ts → components/ToggleButton/index-pFQuGdoj.d.ts} +2 -2
  162. package/dist/components/ToggleButton/index.cjs +4 -0
  163. package/dist/components/ToggleButton/index.js +4 -0
  164. package/dist/components/Typography/index-DzSBreyM.d.cts +3 -0
  165. package/dist/components/Typography/index-ymH7f3jB.d.ts +3 -0
  166. package/dist/{Typography → components/Typography}/index.cjs +1 -1
  167. package/dist/components/Typography/index.js +3 -0
  168. package/dist/formatPrice-CyfkjZ3R.cjs +19 -0
  169. package/dist/formatPrice-DexQu2aZ.js +13 -0
  170. package/dist/index-BCBtAzCc.d.ts +325 -0
  171. package/dist/{SearchResultsFilterSidebar/index.d.ts → index-BiKhzraQ.d.cts} +9 -5
  172. package/dist/{index-DoTNu3mL.d.cts → index-Bw6lDfEp.d.cts} +2 -2
  173. package/dist/index-CzbumwVZ.d.cts +325 -0
  174. package/dist/{SearchResultsFilterSidebar/index.d.cts → index-DK0xpfMg.d.ts} +9 -5
  175. package/dist/{index-C5iOTsRG.d.ts → index-DXGw5Z56.d.ts} +2 -2
  176. package/dist/jsx-runtime-Dg2m6dxZ-B-pkyyHT.cjs +2586 -0
  177. package/dist/jsx-runtime-Dg2m6dxZ-CU_SzTu4.js +2580 -0
  178. package/dist/{searchFilterSidebarVariants-BQ7OC862.cjs → searchFilterSidebarVariants-CjyRGKK_.cjs} +7 -10
  179. package/dist/{searchFilterSidebarVariants-C_rWIcxf.js → searchFilterSidebarVariants-gkgkflXx.js} +2 -3
  180. package/dist/types--eyQnaEA.d.cts +4 -0
  181. package/dist/types-D6fl4HOx.d.ts +4 -0
  182. package/dist/{typographyVariantClasses-BFRoEloZ.d.cts → typographyVariantClasses-CoRhazCU.d.cts} +1 -1
  183. package/dist/{typographyVariantClasses-D7h3ACAj.d.ts → typographyVariantClasses-_oNpv-aN.d.ts} +1 -1
  184. package/dist/util/index-C2ueYGXh.d.ts +21 -0
  185. package/dist/util/index-DUzbpjPa.d.cts +21 -0
  186. package/dist/util/index.cjs +80 -0
  187. package/dist/util/index.js +76 -0
  188. package/package.json +79 -53
  189. package/src/atoms/search/types.ts +1 -0
  190. package/src/components/AppliedFiltersScrollbar/AppliedFiltersScrollbar.tsx +1 -1
  191. package/src/components/ButtonBase/types.ts +1 -1
  192. package/src/components/FilterScrollbar/AppliedFiltersScrollbar.tsx +1 -1
  193. package/src/components/ProductCard/ProductCard.tsx +12 -12
  194. package/src/components/ProductCard/ProductCardSkeleton.tsx +1 -13
  195. package/src/components/ProductCard/index.ts +1 -0
  196. package/src/components/ProductCard/productCardVariants.ts +1 -1
  197. package/src/components/ProductCard/types.ts +49 -0
  198. package/src/components/ProductGrid/ProductGrid.tsx +2 -6
  199. package/src/components/ProductGrid/productGridVariants.ts +1 -1
  200. package/src/components/RadioButton/RadioButton.tsx +1 -1
  201. package/src/components/RadioButtonGroup/RadioButtonGroup.tsx +1 -1
  202. package/src/components/RecommendedProducts/RecommendedProducts.tsx +97 -0
  203. package/src/components/RecommendedProducts/index.ts +3 -0
  204. package/src/components/SearchFilter/SearchFilter.tsx +2 -1
  205. package/src/components/SearchFilter/SearchFilterFooter.tsx +1 -1
  206. package/src/components/SearchFilter/SearchFilterHeader.tsx +1 -1
  207. package/src/components/SearchFilter/SearchFilterItem.tsx +1 -1
  208. package/src/components/SearchFilter/types.ts +45 -0
  209. package/src/components/SearchFilter/useHasFilterStateChanged.tsx +1 -1
  210. package/src/components/SearchFilter/utils.ts +1 -1
  211. package/src/components/SearchInput/SearchInput.tsx +1 -1
  212. package/src/components/SearchInput/searchInputVariants.ts +2 -2
  213. package/src/components/SearchInputForm/SearchInputForm.tsx +10 -4
  214. package/src/components/SearchResultsContent/SearchResultsContent.tsx +72 -39
  215. package/src/components/SearchResultsFilterButton/SearchResultsFilterButton.tsx +30 -0
  216. package/src/components/SearchResultsFilterButton/index.ts +3 -0
  217. package/src/components/SearchResultsFilterModal/SearchResultsFilterModal.tsx +61 -0
  218. package/src/components/SearchResultsFilterModal/index.ts +3 -0
  219. package/src/components/SearchResultsFilterSidebar/SearchResultsFilter.tsx +2 -1
  220. package/src/components/SearchResultsFilterSidebar/index.ts +1 -0
  221. package/src/components/SearchResultsFilterSidebar/searchFilterSidebarVariants.ts +2 -2
  222. package/src/components/SearchResultsFilterSidebar/types.ts +2 -0
  223. package/src/components/SearchResultsStates/NoSearchResultsFound.tsx +43 -11
  224. package/src/components/SearchResultsStates/SearchResultsGrid.tsx +8 -7
  225. package/src/components/SearchResultsStates/SearchResultsLoadingGrid.tsx +1 -2
  226. package/src/components/SearchResultsToolbar/SearchResultsToolbar.tsx +111 -0
  227. package/src/components/SearchResultsToolbar/index.ts +3 -0
  228. package/src/components/SparkleAnimation/SparkleAnimation.tsx +1 -7
  229. package/src/components/SparkleAnimation/index.ts +1 -0
  230. package/src/components/SparkleAnimation/types.ts +6 -0
  231. package/src/components/SuggestionButton/SuggestionButton.tsx +1 -1
  232. package/src/config/chatElementDisplayLocation.ts +23 -0
  233. package/src/models/colorsConfig.ts +28 -0
  234. package/src/stories/AppliedFiltersScrollbar.stories.tsx +42 -0
  235. package/src/stories/ButtonBase.stories.tsx +54 -0
  236. package/src/stories/DynamicFiltersScrollbar.stories.tsx +42 -0
  237. package/src/stories/NoSearchResultsFound.stories.tsx +30 -0
  238. package/src/stories/ProductCard.stories.tsx +78 -0
  239. package/src/stories/ProductCardSkeleton.stories.tsx +48 -0
  240. package/src/stories/ProductGrid.stories.tsx +82 -0
  241. package/src/stories/SearchInputForm.stories.tsx +39 -0
  242. package/src/stories/SearchResultsFilter.stories.tsx +56 -0
  243. package/src/stories/SearchResultsGrid.stories.tsx +98 -0
  244. package/src/stories/SearchResultsLoadingGrid.stories.tsx +30 -0
  245. package/src/stories/SparkleAnimation.stories.tsx +47 -0
  246. package/src/stories/Typography.stories.tsx +140 -0
  247. package/src/util/camelCase.ts +87 -0
  248. package/src/util/camelCasedPropertiesDeep.ts +81 -0
  249. package/src/util/colorVar.ts +1 -1
  250. package/src/util/index.ts +4 -0
  251. package/src/util/internal.ts +97 -0
  252. package/src/util/primitive.ts +8 -0
  253. package/src/util/splitWords.ts +76 -0
  254. package/src/util/trim.ts +28 -0
  255. package/src/util/unknownArray.ts +25 -0
  256. package/src/util/useScrollDirection.ts +60 -0
  257. package/src/util/useStickyVisibility.ts +37 -0
  258. package/dist/Accordion/index.cjs +0 -4
  259. package/dist/Accordion/index.js +0 -4
  260. package/dist/AnimatedChevron/index.cjs +0 -3
  261. package/dist/AnimatedChevron/index.js +0 -3
  262. package/dist/ButtonBase/index.cjs +0 -6
  263. package/dist/ButtonBase/index.js +0 -5
  264. package/dist/FilterScrollbar/index.cjs +0 -5
  265. package/dist/FilterScrollbar/index.js +0 -4
  266. package/dist/ImageWithFallback/index.cjs +0 -3
  267. package/dist/ImageWithFallback/index.js +0 -3
  268. package/dist/ModalSheet/index.cjs +0 -4
  269. package/dist/ModalSheet/index.js +0 -4
  270. package/dist/ProductCard/index.d.cts +0 -82
  271. package/dist/ProductCard/index.d.ts +0 -82
  272. package/dist/ProductCard/index.js +0 -6
  273. package/dist/ProductGrid/index.cjs +0 -8
  274. package/dist/ProductGrid/index.js +0 -7
  275. package/dist/RadioButton/index.cjs +0 -4
  276. package/dist/RadioButton/index.js +0 -4
  277. package/dist/RadioButtonGroup/index.cjs +0 -6
  278. package/dist/RadioButtonGroup/index.js +0 -5
  279. package/dist/SearchAutocomplete/index.cjs +0 -4
  280. package/dist/SearchAutocomplete/index.js +0 -4
  281. package/dist/SearchFilter/index.cjs +0 -17
  282. package/dist/SearchFilter/index.d.cts +0 -54
  283. package/dist/SearchFilter/index.d.ts +0 -54
  284. package/dist/SearchFilter/index.js +0 -12
  285. package/dist/SearchInput/index.cjs +0 -7
  286. package/dist/SearchInput/index.js +0 -6
  287. package/dist/SearchResultsContent/index.cjs +0 -44
  288. package/dist/SearchResultsContent/index.js +0 -41
  289. package/dist/SearchResultsStates/index.cjs +0 -14
  290. package/dist/SearchResultsStates/index.js +0 -12
  291. package/dist/SearchResultsStates-C-8fh8B9.cjs +0 -132
  292. package/dist/SearchResultsStates-D62WbDTD.js +0 -110
  293. package/dist/SparkleAnimation/index.cjs +0 -3
  294. package/dist/SparkleAnimation/index.d.cts +0 -15
  295. package/dist/SparkleAnimation/index.d.ts +0 -15
  296. package/dist/SparkleAnimation/index.js +0 -3
  297. package/dist/Spinner/index.cjs +0 -3
  298. package/dist/Spinner/index.js +0 -3
  299. package/dist/TextInput/index.cjs +0 -4
  300. package/dist/TextInput/index.js +0 -4
  301. package/dist/ToggleButton/index.cjs +0 -4
  302. package/dist/ToggleButton/index.js +0 -4
  303. package/dist/Typography/index.d.cts +0 -3
  304. package/dist/Typography/index.d.ts +0 -3
  305. package/dist/Typography/index.js +0 -3
  306. package/dist/colorVar-B5CLhSof.cjs +0 -11
  307. package/dist/colorVar-BJve0Z4_.js +0 -5
  308. /package/dist/{ButtonBase-DbWQ25n-.cjs → ButtonBase-Cb6Iec6f.cjs} +0 -0
  309. /package/dist/{ButtonBase-C_uKnl48.js → ButtonBase-D2eXuapk.js} +0 -0
@@ -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
+ };
@@ -0,0 +1,140 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { Typography } from '@envive-ai/react-toolkit/Typography';
3
+
4
+ // More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
5
+ const meta = {
6
+ title: 'Common/Typography',
7
+ component: Typography,
8
+ parameters: {
9
+ // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/react/configure/story-layout
10
+ layout: 'centered',
11
+ },
12
+ // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/react/writing-docs/autodocs
13
+ tags: ['autodocs'],
14
+ args: {
15
+ className: undefined,
16
+ style: undefined,
17
+ noOfLines: undefined,
18
+ testId: undefined,
19
+ },
20
+ // More on argTypes: https://storybook.js.org/docs/react/api/argtypes
21
+ argTypes: {
22
+ variant: {
23
+ control: {
24
+ type: 'select',
25
+ options: [
26
+ 't1',
27
+ 't2',
28
+ 't3',
29
+ 'h1',
30
+ 'h2',
31
+ 'h3',
32
+ 'h4',
33
+ 'body1',
34
+ 'body2',
35
+ 'body3',
36
+ 'body4',
37
+ 'body5',
38
+ ],
39
+ },
40
+ },
41
+ elementType: {
42
+ control: {
43
+ type: 'select',
44
+ options: ['span', 'p', 'sub', 'h1', 'h2', 'h3', 'h4'],
45
+ },
46
+ },
47
+ className: { control: 'text' },
48
+ style: { control: 'object' },
49
+ noOfLines: { control: 'number' },
50
+ testId: { control: 'text' },
51
+ },
52
+ } satisfies Meta<typeof Typography>;
53
+
54
+ export default meta;
55
+ type Story = StoryObj<typeof meta>;
56
+
57
+ // More on writing stories with args: https://storybook.js.org/docs/react/writing-stories/args
58
+ export const Body1: Story = {
59
+ args: {
60
+ variant: 'body1',
61
+ children: 'This is a body1 text',
62
+ },
63
+ };
64
+
65
+ export const Body2: Story = {
66
+ args: {
67
+ variant: 'body2',
68
+ children: 'This is a body2 text',
69
+ },
70
+ };
71
+
72
+ export const Body3: Story = {
73
+ args: {
74
+ variant: 'body3',
75
+ children: 'This is a body3 text',
76
+ },
77
+ };
78
+
79
+ export const Body4: Story = {
80
+ args: {
81
+ variant: 'body4',
82
+ children: 'This is a body4 text',
83
+ },
84
+ };
85
+
86
+ export const Body5: Story = {
87
+ args: {
88
+ variant: 'body5',
89
+ children: 'This is a body5 text',
90
+ },
91
+ };
92
+
93
+ export const T1: Story = {
94
+ args: {
95
+ variant: 't1',
96
+ children: 'This is a t1 text',
97
+ },
98
+ };
99
+
100
+ export const T2: Story = {
101
+ args: {
102
+ variant: 't2',
103
+ children: 'This is a t2 text',
104
+ },
105
+ };
106
+
107
+ export const T3: Story = {
108
+ args: {
109
+ variant: 't3',
110
+ children: 'This is a t3 text',
111
+ },
112
+ };
113
+
114
+ export const H1: Story = {
115
+ args: {
116
+ variant: 'h1',
117
+ children: 'This is a h1 text',
118
+ },
119
+ };
120
+
121
+ export const H2: Story = {
122
+ args: {
123
+ variant: 'h2',
124
+ children: 'This is a h2 text',
125
+ },
126
+ };
127
+
128
+ export const H3: Story = {
129
+ args: {
130
+ variant: 'h3',
131
+ children: 'This is a h3 text',
132
+ },
133
+ };
134
+
135
+ export const H4: Story = {
136
+ args: {
137
+ variant: 'h4',
138
+ children: 'This is a h4 text',
139
+ },
140
+ };
@@ -0,0 +1,87 @@
1
+ // these types come from https://github.com/sindresorhus/type-fest/blob/main/source/camel-case.d.ts
2
+
3
+ import type { SplitWords } from './splitWords';
4
+
5
+ /**
6
+ * CamelCase options.
7
+ *
8
+ * @see {@link CamelCase}
9
+ */
10
+ export type CamelCaseOptions = {
11
+ /**
12
+ * Whether to preserved consecutive uppercase letter.
13
+ *
14
+ * @default true
15
+ */
16
+ preserveConsecutiveUppercase?: boolean;
17
+ };
18
+
19
+ /**
20
+ * Convert an array of words to camel-case.
21
+ */
22
+ type CamelCaseFromArray<
23
+ Words extends string[],
24
+ Options extends CamelCaseOptions,
25
+ OutputString extends string = '',
26
+ > = Words extends [infer FirstWord extends string, ...infer RemainingWords extends string[]]
27
+ ? Options['preserveConsecutiveUppercase'] extends true
28
+ ? `${Capitalize<FirstWord>}${CamelCaseFromArray<RemainingWords, Options>}`
29
+ : `${Capitalize<Lowercase<FirstWord>>}${CamelCaseFromArray<RemainingWords, Options>}`
30
+ : OutputString;
31
+
32
+ /**
33
+ * Convert a string literal to camel-case.
34
+ *
35
+ * This can be useful when, for example, converting some kebab-cased command-line flags or a snake-cased database result.
36
+ *
37
+ * By default, consecutive uppercase letter are preserved. See {@link CamelCaseOptions.preserveConsecutiveUppercase preserveConsecutiveUppercase} option to change this behaviour.
38
+ *
39
+ * @example
40
+ * ```
41
+ * import type {CamelCase} from 'type-fest';
42
+ *
43
+ * // Simple
44
+ *
45
+ * const someVariable: CamelCase<'foo-bar'> = 'fooBar';
46
+ *
47
+ * // Advanced
48
+ *
49
+ * type CamelCasedProperties<T> = {
50
+ * [K in keyof T as CamelCase<K>]: T[K]
51
+ * };
52
+ *
53
+ * interface RawOptions {
54
+ * 'dry-run': boolean;
55
+ * 'full_family_name': string;
56
+ * foo: number;
57
+ * BAR: string;
58
+ * QUZ_QUX: number;
59
+ * 'OTHER-FIELD': boolean;
60
+ * }
61
+ *
62
+ * const dbResult: CamelCasedProperties<RawOptions> = {
63
+ * dryRun: true,
64
+ * fullFamilyName: 'bar.js',
65
+ * foo: 123,
66
+ * bar: 'foo',
67
+ * quzQux: 6,
68
+ * otherField: false
69
+ * };
70
+ * ```
71
+ *
72
+ * @category Change case
73
+ * @category Template literal
74
+ */
75
+ export type CamelCase<
76
+ Type,
77
+ Options extends CamelCaseOptions = { preserveConsecutiveUppercase: true },
78
+ > = Type extends string
79
+ ? string extends Type
80
+ ? Type
81
+ : Uncapitalize<
82
+ CamelCaseFromArray<
83
+ SplitWords<Type extends Uppercase<Type> ? Lowercase<Type> : Type>,
84
+ Options
85
+ >
86
+ >
87
+ : Type;
@@ -0,0 +1,81 @@
1
+ import type { CamelCase, CamelCaseOptions } from './camelCase';
2
+ import type { UnknownArray } from './unknownArray';
3
+
4
+ /**
5
+ * Convert object properties to camel case recursively.
6
+ *
7
+ * This can be useful when, for example, converting some API types from a different style.
8
+ *
9
+ * @see CamelCasedProperties
10
+ * @see CamelCase
11
+ *
12
+ * @example
13
+ * ```
14
+ * import type {CamelCasedPropertiesDeep} from 'type-fest';
15
+ *
16
+ * interface User {
17
+ * UserId: number;
18
+ * UserName: string;
19
+ * }
20
+ *
21
+ * interface UserWithFriends {
22
+ * UserInfo: User;
23
+ * UserFriends: User[];
24
+ * }
25
+ *
26
+ * const result: CamelCasedPropertiesDeep<UserWithFriends> = {
27
+ * userInfo: {
28
+ * userId: 1,
29
+ * userName: 'Tom',
30
+ * },
31
+ * userFriends: [
32
+ * {
33
+ * userId: 2,
34
+ * userName: 'Jerry',
35
+ * },
36
+ * {
37
+ * userId: 3,
38
+ * userName: 'Spike',
39
+ * },
40
+ * ],
41
+ * };
42
+ * ```
43
+ *
44
+ * @category Change case
45
+ * @category Template literal
46
+ * @category Object
47
+ */
48
+ export type CamelCasedPropertiesDeep<
49
+ Value,
50
+ Options extends CamelCaseOptions = { preserveConsecutiveUppercase: true },
51
+ // eslint-disable-next-line @typescript-eslint/ban-types
52
+ > = Value extends Function
53
+ ? Value
54
+ : Value extends UnknownArray
55
+ ? CamelCasedPropertiesArrayDeep<Value>
56
+ : Value extends Set<infer U>
57
+ ? Set<CamelCasedPropertiesDeep<U, Options>>
58
+ : {
59
+ [K in keyof Value as CamelCase<K, Options>]: CamelCasedPropertiesDeep<Value[K], Options>;
60
+ };
61
+
62
+ // This is a copy of DelimiterCasedPropertiesArrayDeep (see: delimiter-cased-properties-deep.d.ts).
63
+ // These types should be kept in sync.
64
+ type CamelCasedPropertiesArrayDeep<Value extends UnknownArray> = Value extends []
65
+ ? []
66
+ : // Tailing spread array
67
+ Value extends [infer U, ...infer V]
68
+ ? [CamelCasedPropertiesDeep<U>, ...CamelCasedPropertiesDeep<V>]
69
+ : Value extends readonly [infer U, ...infer V]
70
+ ? readonly [CamelCasedPropertiesDeep<U>, ...CamelCasedPropertiesDeep<V>]
71
+ : // Leading spread array
72
+ Value extends readonly [...infer U, infer V]
73
+ ? [...CamelCasedPropertiesDeep<U>, CamelCasedPropertiesDeep<V>]
74
+ : Value extends readonly [...infer U, infer V]
75
+ ? readonly [...CamelCasedPropertiesDeep<U>, CamelCasedPropertiesDeep<V>]
76
+ : // Array
77
+ Value extends Array<infer U>
78
+ ? Array<CamelCasedPropertiesDeep<U>>
79
+ : Value extends ReadonlyArray<infer U>
80
+ ? ReadonlyArray<CamelCasedPropertiesDeep<U>>
81
+ : never;
@@ -1,3 +1,3 @@
1
- import { ColorNames } from '@envive-ai/types';
1
+ import { ColorNames } from "@envive-ai/react-hooks/contexts/types";
2
2
 
3
3
  export const colorVar = (color: ColorNames): string => `var(--spiffy-colors-${color})`;
@@ -0,0 +1,4 @@
1
+ export * from './formatPrice';
2
+ export * from './useScrollDirection';
3
+ export * from './useStickyVisibility';
4
+ export * from './colorVar';