@redneckz/wildless-cms-uni-blocks 0.6.41 → 0.6.43

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 (381) hide show
  1. package/bin/migration-scripts/0.6.34.js +2 -0
  2. package/bin/migration-scripts/0.6.43.js +29 -0
  3. package/bundle/blocks.schema.json +1 -1
  4. package/bundle/bundle.umd.js +213 -101
  5. package/bundle/bundle.umd.min.js +1 -1
  6. package/bundle/components/CarouselRecommendationCard/CarouselRecommendationCard.d.ts +5 -0
  7. package/bundle/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +44 -0
  8. package/bundle/components/Header/HeaderSecondaryMenu.d.ts +2 -0
  9. package/bundle/components/ProductTile/ProductTileContent.d.ts +24 -2
  10. package/bundle/components/ProductTile/renderAdditionalDescription.d.ts +4 -0
  11. package/bundle/components/ProductTile/renderBenefit.d.ts +4 -0
  12. package/bundle/components/ProductTile/renderImage.d.ts +3 -0
  13. package/bundle/content-page-repository/transformImg.d.ts +1 -1
  14. package/bundle/hooks/useCachedAsyncData.d.ts +2 -0
  15. package/bundle/hooks/useLocation.d.ts +6 -0
  16. package/bundle/hooks/useRegions.d.ts +6 -0
  17. package/bundle/services/sitemap/SitemapProps.d.ts +8 -0
  18. package/bundle/ui-kit/Location/Location.d.ts +19 -0
  19. package/bundle/ui-kit/Location/SearchBar.d.ts +6 -0
  20. package/bundle/ui-kit/MarkdownText/MarkdownText.d.ts +2 -0
  21. package/bundle/ui-kit/MarkdownText/MarkdownTextProps.d.ts +6 -0
  22. package/bundle/utils/groupBy.d.ts +1 -0
  23. package/dist/components/Blocks.js +4 -2
  24. package/dist/components/Blocks.js.map +1 -1
  25. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.d.ts +5 -0
  26. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js +22 -0
  27. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -0
  28. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +44 -0
  29. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js +2 -0
  30. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js.map +1 -0
  31. package/dist/components/Header/Header.js +2 -2
  32. package/dist/components/Header/Header.js.map +1 -1
  33. package/dist/components/Header/HeaderBurger.js +4 -3
  34. package/dist/components/Header/HeaderBurger.js.map +1 -1
  35. package/dist/components/Header/HeaderSecondaryMenu.d.ts +2 -0
  36. package/dist/components/Header/HeaderSecondaryMenu.js +13 -4
  37. package/dist/components/Header/HeaderSecondaryMenu.js.map +1 -1
  38. package/dist/components/ProductTile/ProductTile.js +9 -22
  39. package/dist/components/ProductTile/ProductTile.js.map +1 -1
  40. package/dist/components/ProductTile/ProductTileContent.d.ts +24 -2
  41. package/dist/components/ProductTile/renderAdditionalDescription.d.ts +4 -0
  42. package/dist/components/ProductTile/renderAdditionalDescription.js +18 -0
  43. package/dist/components/ProductTile/renderAdditionalDescription.js.map +1 -0
  44. package/dist/components/ProductTile/renderBenefit.d.ts +4 -0
  45. package/dist/components/ProductTile/renderBenefit.js +32 -0
  46. package/dist/components/ProductTile/renderBenefit.js.map +1 -0
  47. package/dist/components/ProductTile/renderImage.d.ts +3 -0
  48. package/dist/components/ProductTile/renderImage.js +12 -0
  49. package/dist/components/ProductTile/renderImage.js.map +1 -0
  50. package/dist/components/Recommendation/RecommendationCard.js +1 -1
  51. package/dist/components/Recommendation/RecommendationCard.js.map +1 -1
  52. package/dist/components/TextBlock/TextBlock.js +13 -28
  53. package/dist/components/TextBlock/TextBlock.js.map +1 -1
  54. package/dist/content-page-repository/transformImg.d.ts +1 -1
  55. package/dist/content-page-repository/transformImg.js +4 -10
  56. package/dist/content-page-repository/transformImg.js.map +1 -1
  57. package/dist/content-page-repository/transformMarkdown.js +3 -3
  58. package/dist/content-page-repository/transformMarkdown.js.map +1 -1
  59. package/dist/hooks/useCachedAsyncData.d.ts +2 -0
  60. package/dist/hooks/useCachedAsyncData.js +25 -0
  61. package/dist/hooks/useCachedAsyncData.js.map +1 -0
  62. package/dist/hooks/useLocation.d.ts +6 -0
  63. package/dist/hooks/useLocation.js +26 -0
  64. package/dist/hooks/useLocation.js.map +1 -0
  65. package/dist/hooks/useRegions.d.ts +6 -0
  66. package/dist/hooks/useRegions.js +11 -0
  67. package/dist/hooks/useRegions.js.map +1 -0
  68. package/dist/services/sitemap/SitemapProps.d.ts +8 -0
  69. package/dist/ui-kit/Location/Location.d.ts +19 -0
  70. package/dist/ui-kit/Location/Location.js +44 -0
  71. package/dist/ui-kit/Location/Location.js.map +1 -0
  72. package/dist/ui-kit/Location/SearchBar.d.ts +6 -0
  73. package/dist/ui-kit/Location/SearchBar.js +9 -0
  74. package/dist/ui-kit/Location/SearchBar.js.map +1 -0
  75. package/dist/ui-kit/MarkdownText/MarkdownText.d.ts +2 -0
  76. package/dist/ui-kit/MarkdownText/MarkdownText.js +9 -0
  77. package/dist/ui-kit/MarkdownText/MarkdownText.js.map +1 -0
  78. package/dist/ui-kit/MarkdownText/MarkdownTextProps.d.ts +6 -0
  79. package/dist/ui-kit/MarkdownText/MarkdownTextProps.js +2 -0
  80. package/dist/ui-kit/MarkdownText/MarkdownTextProps.js.map +1 -0
  81. package/dist/ui-kit/SwipeListControl/SwipeListContainer.js +8 -4
  82. package/dist/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
  83. package/dist/ui-kit/Text/Text.js +1 -5
  84. package/dist/ui-kit/Text/Text.js.map +1 -1
  85. package/dist/utils/groupBy.d.ts +1 -0
  86. package/dist/utils/groupBy.js +13 -0
  87. package/dist/utils/groupBy.js.map +1 -0
  88. package/lib/common.css +1 -1
  89. package/lib/components/Blocks.js +4 -2
  90. package/lib/components/Blocks.js.map +1 -1
  91. package/lib/components/Carousel/Carousel.fixture.d.ts +1 -0
  92. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.d.ts +5 -0
  93. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.fixture.d.ts +9 -0
  94. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js +20 -0
  95. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -0
  96. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +44 -0
  97. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js +2 -0
  98. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js.map +1 -0
  99. package/lib/components/Header/Header.js +2 -2
  100. package/lib/components/Header/Header.js.map +1 -1
  101. package/lib/components/Header/HeaderBurger.js +4 -3
  102. package/lib/components/Header/HeaderBurger.js.map +1 -1
  103. package/lib/components/Header/HeaderSecondaryMenu.d.ts +2 -0
  104. package/lib/components/Header/HeaderSecondaryMenu.js +13 -4
  105. package/lib/components/Header/HeaderSecondaryMenu.js.map +1 -1
  106. package/lib/components/ProductTile/ProductTile.js +10 -23
  107. package/lib/components/ProductTile/ProductTile.js.map +1 -1
  108. package/lib/components/ProductTile/ProductTileContent.d.ts +24 -2
  109. package/lib/components/ProductTile/renderAdditionalDescription.d.ts +4 -0
  110. package/lib/components/ProductTile/renderAdditionalDescription.js +15 -0
  111. package/lib/components/ProductTile/renderAdditionalDescription.js.map +1 -0
  112. package/lib/components/ProductTile/renderBenefit.d.ts +4 -0
  113. package/lib/components/ProductTile/renderBenefit.js +29 -0
  114. package/lib/components/ProductTile/renderBenefit.js.map +1 -0
  115. package/lib/components/ProductTile/renderImage.d.ts +3 -0
  116. package/lib/components/ProductTile/renderImage.js +9 -0
  117. package/lib/components/ProductTile/renderImage.js.map +1 -0
  118. package/lib/components/Recommendation/Recommendation.fixture.d.ts +1 -1
  119. package/lib/components/Recommendation/RecommendationCard.js +1 -1
  120. package/lib/components/Recommendation/RecommendationCard.js.map +1 -1
  121. package/lib/components/TextBlock/TextBlock.js +13 -28
  122. package/lib/components/TextBlock/TextBlock.js.map +1 -1
  123. package/lib/content-page-repository/transformImg.d.ts +1 -1
  124. package/lib/content-page-repository/transformImg.js +4 -10
  125. package/lib/content-page-repository/transformImg.js.map +1 -1
  126. package/lib/content-page-repository/transformMarkdown.js +3 -3
  127. package/lib/content-page-repository/transformMarkdown.js.map +1 -1
  128. package/lib/hooks/useCachedAsyncData.d.ts +2 -0
  129. package/lib/hooks/useCachedAsyncData.js +22 -0
  130. package/lib/hooks/useCachedAsyncData.js.map +1 -0
  131. package/lib/hooks/useLocation.d.ts +6 -0
  132. package/lib/hooks/useLocation.js +23 -0
  133. package/lib/hooks/useLocation.js.map +1 -0
  134. package/lib/hooks/useRegions.d.ts +6 -0
  135. package/lib/hooks/useRegions.js +8 -0
  136. package/lib/hooks/useRegions.js.map +1 -0
  137. package/lib/services/sitemap/SitemapProps.d.ts +8 -0
  138. package/lib/ui-kit/Location/Location.d.ts +19 -0
  139. package/lib/ui-kit/Location/Location.fixture.d.ts +6 -0
  140. package/lib/ui-kit/Location/Location.js +42 -0
  141. package/lib/ui-kit/Location/Location.js.map +1 -0
  142. package/lib/ui-kit/Location/SearchBar.d.ts +6 -0
  143. package/lib/ui-kit/Location/SearchBar.js +7 -0
  144. package/lib/ui-kit/Location/SearchBar.js.map +1 -0
  145. package/lib/ui-kit/MarkdownText/MarkdownText.d.ts +2 -0
  146. package/lib/ui-kit/MarkdownText/MarkdownText.js +7 -0
  147. package/lib/ui-kit/MarkdownText/MarkdownText.js.map +1 -0
  148. package/lib/ui-kit/MarkdownText/MarkdownTextProps.d.ts +6 -0
  149. package/lib/ui-kit/MarkdownText/MarkdownTextProps.js +2 -0
  150. package/lib/ui-kit/MarkdownText/MarkdownTextProps.js.map +1 -0
  151. package/lib/ui-kit/SwipeListControl/SwipeListContainer.js +8 -4
  152. package/lib/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
  153. package/lib/ui-kit/Text/Text.js +1 -5
  154. package/lib/ui-kit/Text/Text.js.map +1 -1
  155. package/lib/utils/groupBy.d.ts +1 -0
  156. package/lib/utils/groupBy.js +10 -0
  157. package/lib/utils/groupBy.js.map +1 -0
  158. package/mobile/bundle/bundle.umd.js +49 -25
  159. package/mobile/bundle/bundle.umd.min.js +1 -1
  160. package/mobile/bundle/components/CarouselRecommendationCard/CarouselRecommendationCard.d.ts +5 -0
  161. package/mobile/bundle/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +44 -0
  162. package/mobile/bundle/components/Header/HeaderSecondaryMenu.d.ts +2 -0
  163. package/mobile/bundle/components/ProductTile/ProductTileContent.d.ts +24 -2
  164. package/mobile/bundle/components/ProductTile/renderAdditionalDescription.d.ts +4 -0
  165. package/mobile/bundle/components/ProductTile/renderBenefit.d.ts +4 -0
  166. package/mobile/bundle/components/ProductTile/renderImage.d.ts +3 -0
  167. package/mobile/bundle/content-page-repository/transformImg.d.ts +1 -1
  168. package/mobile/bundle/hooks/useCachedAsyncData.d.ts +2 -0
  169. package/mobile/bundle/hooks/useLocation.d.ts +6 -0
  170. package/mobile/bundle/hooks/useRegions.d.ts +6 -0
  171. package/mobile/bundle/services/sitemap/SitemapProps.d.ts +8 -0
  172. package/mobile/bundle/ui-kit/Location/Location.d.ts +19 -0
  173. package/mobile/bundle/ui-kit/Location/SearchBar.d.ts +6 -0
  174. package/mobile/bundle/ui-kit/MarkdownText/MarkdownText.d.ts +2 -0
  175. package/mobile/bundle/ui-kit/MarkdownText/MarkdownTextProps.d.ts +6 -0
  176. package/mobile/bundle/utils/groupBy.d.ts +1 -0
  177. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.d.ts +5 -0
  178. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js +22 -0
  179. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -0
  180. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +44 -0
  181. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js +2 -0
  182. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js.map +1 -0
  183. package/mobile/dist/components/Header/HeaderBurger.js +4 -3
  184. package/mobile/dist/components/Header/HeaderBurger.js.map +1 -1
  185. package/mobile/dist/components/Header/HeaderSecondaryMenu.d.ts +2 -0
  186. package/mobile/dist/components/Header/HeaderSecondaryMenu.js +13 -4
  187. package/mobile/dist/components/Header/HeaderSecondaryMenu.js.map +1 -1
  188. package/mobile/dist/components/ProductTile/ProductTile.js +9 -22
  189. package/mobile/dist/components/ProductTile/ProductTile.js.map +1 -1
  190. package/mobile/dist/components/ProductTile/ProductTileContent.d.ts +24 -2
  191. package/mobile/dist/components/ProductTile/renderAdditionalDescription.d.ts +4 -0
  192. package/mobile/dist/components/ProductTile/renderAdditionalDescription.js +18 -0
  193. package/mobile/dist/components/ProductTile/renderAdditionalDescription.js.map +1 -0
  194. package/mobile/dist/components/ProductTile/renderBenefit.d.ts +4 -0
  195. package/mobile/dist/components/ProductTile/renderBenefit.js +32 -0
  196. package/mobile/dist/components/ProductTile/renderBenefit.js.map +1 -0
  197. package/mobile/dist/components/ProductTile/renderImage.d.ts +3 -0
  198. package/mobile/dist/components/ProductTile/renderImage.js +12 -0
  199. package/mobile/dist/components/ProductTile/renderImage.js.map +1 -0
  200. package/mobile/dist/components/Recommendation/RecommendationCard.js +1 -1
  201. package/mobile/dist/components/Recommendation/RecommendationCard.js.map +1 -1
  202. package/mobile/dist/content-page-repository/transformImg.d.ts +1 -1
  203. package/mobile/dist/content-page-repository/transformImg.js +4 -10
  204. package/mobile/dist/content-page-repository/transformImg.js.map +1 -1
  205. package/mobile/dist/content-page-repository/transformMarkdown.js +3 -3
  206. package/mobile/dist/content-page-repository/transformMarkdown.js.map +1 -1
  207. package/mobile/dist/hooks/useCachedAsyncData.d.ts +2 -0
  208. package/mobile/dist/hooks/useCachedAsyncData.js +25 -0
  209. package/mobile/dist/hooks/useCachedAsyncData.js.map +1 -0
  210. package/mobile/dist/hooks/useLocation.d.ts +6 -0
  211. package/mobile/dist/hooks/useLocation.js +26 -0
  212. package/mobile/dist/hooks/useLocation.js.map +1 -0
  213. package/mobile/dist/hooks/useRegions.d.ts +6 -0
  214. package/mobile/dist/hooks/useRegions.js +11 -0
  215. package/mobile/dist/hooks/useRegions.js.map +1 -0
  216. package/mobile/dist/services/sitemap/SitemapProps.d.ts +8 -0
  217. package/mobile/dist/ui-kit/Location/Location.d.ts +19 -0
  218. package/mobile/dist/ui-kit/Location/Location.js +44 -0
  219. package/mobile/dist/ui-kit/Location/Location.js.map +1 -0
  220. package/mobile/dist/ui-kit/Location/SearchBar.d.ts +6 -0
  221. package/mobile/dist/ui-kit/Location/SearchBar.js +9 -0
  222. package/mobile/dist/ui-kit/Location/SearchBar.js.map +1 -0
  223. package/mobile/dist/ui-kit/MarkdownText/MarkdownText.d.ts +2 -0
  224. package/mobile/dist/ui-kit/MarkdownText/MarkdownText.js +9 -0
  225. package/mobile/dist/ui-kit/MarkdownText/MarkdownText.js.map +1 -0
  226. package/mobile/dist/ui-kit/MarkdownText/MarkdownTextProps.d.ts +6 -0
  227. package/mobile/dist/ui-kit/MarkdownText/MarkdownTextProps.js +2 -0
  228. package/mobile/dist/ui-kit/MarkdownText/MarkdownTextProps.js.map +1 -0
  229. package/mobile/dist/ui-kit/SwipeListControl/SwipeListContainer.js +8 -4
  230. package/mobile/dist/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
  231. package/mobile/dist/ui-kit/Text/Text.js +1 -5
  232. package/mobile/dist/ui-kit/Text/Text.js.map +1 -1
  233. package/mobile/dist/utils/groupBy.d.ts +1 -0
  234. package/mobile/dist/utils/groupBy.js +13 -0
  235. package/mobile/dist/utils/groupBy.js.map +1 -0
  236. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.d.ts +5 -0
  237. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js +20 -0
  238. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -0
  239. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +44 -0
  240. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js +2 -0
  241. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js.map +1 -0
  242. package/mobile/lib/components/Header/HeaderBurger.js +4 -3
  243. package/mobile/lib/components/Header/HeaderBurger.js.map +1 -1
  244. package/mobile/lib/components/Header/HeaderSecondaryMenu.d.ts +2 -0
  245. package/mobile/lib/components/Header/HeaderSecondaryMenu.js +13 -4
  246. package/mobile/lib/components/Header/HeaderSecondaryMenu.js.map +1 -1
  247. package/mobile/lib/components/ProductTile/ProductTile.js +10 -23
  248. package/mobile/lib/components/ProductTile/ProductTile.js.map +1 -1
  249. package/mobile/lib/components/ProductTile/ProductTileContent.d.ts +24 -2
  250. package/mobile/lib/components/ProductTile/renderAdditionalDescription.d.ts +4 -0
  251. package/mobile/lib/components/ProductTile/renderAdditionalDescription.js +15 -0
  252. package/mobile/lib/components/ProductTile/renderAdditionalDescription.js.map +1 -0
  253. package/mobile/lib/components/ProductTile/renderBenefit.d.ts +4 -0
  254. package/mobile/lib/components/ProductTile/renderBenefit.js +29 -0
  255. package/mobile/lib/components/ProductTile/renderBenefit.js.map +1 -0
  256. package/mobile/lib/components/ProductTile/renderImage.d.ts +3 -0
  257. package/mobile/lib/components/ProductTile/renderImage.js +9 -0
  258. package/mobile/lib/components/ProductTile/renderImage.js.map +1 -0
  259. package/mobile/lib/components/Recommendation/RecommendationCard.js +1 -1
  260. package/mobile/lib/components/Recommendation/RecommendationCard.js.map +1 -1
  261. package/mobile/lib/content-page-repository/transformImg.d.ts +1 -1
  262. package/mobile/lib/content-page-repository/transformImg.js +4 -10
  263. package/mobile/lib/content-page-repository/transformImg.js.map +1 -1
  264. package/mobile/lib/content-page-repository/transformMarkdown.js +3 -3
  265. package/mobile/lib/content-page-repository/transformMarkdown.js.map +1 -1
  266. package/mobile/lib/hooks/useCachedAsyncData.d.ts +2 -0
  267. package/mobile/lib/hooks/useCachedAsyncData.js +22 -0
  268. package/mobile/lib/hooks/useCachedAsyncData.js.map +1 -0
  269. package/mobile/lib/hooks/useLocation.d.ts +6 -0
  270. package/mobile/lib/hooks/useLocation.js +23 -0
  271. package/mobile/lib/hooks/useLocation.js.map +1 -0
  272. package/mobile/lib/hooks/useRegions.d.ts +6 -0
  273. package/mobile/lib/hooks/useRegions.js +8 -0
  274. package/mobile/lib/hooks/useRegions.js.map +1 -0
  275. package/mobile/lib/services/sitemap/SitemapProps.d.ts +8 -0
  276. package/mobile/lib/ui-kit/Location/Location.d.ts +19 -0
  277. package/mobile/lib/ui-kit/Location/Location.js +42 -0
  278. package/mobile/lib/ui-kit/Location/Location.js.map +1 -0
  279. package/mobile/lib/ui-kit/Location/SearchBar.d.ts +6 -0
  280. package/mobile/lib/ui-kit/Location/SearchBar.js +7 -0
  281. package/mobile/lib/ui-kit/Location/SearchBar.js.map +1 -0
  282. package/mobile/lib/ui-kit/MarkdownText/MarkdownText.d.ts +2 -0
  283. package/mobile/lib/ui-kit/MarkdownText/MarkdownText.js +7 -0
  284. package/mobile/lib/ui-kit/MarkdownText/MarkdownText.js.map +1 -0
  285. package/mobile/lib/ui-kit/MarkdownText/MarkdownTextProps.d.ts +6 -0
  286. package/mobile/lib/ui-kit/MarkdownText/MarkdownTextProps.js +2 -0
  287. package/mobile/lib/ui-kit/MarkdownText/MarkdownTextProps.js.map +1 -0
  288. package/mobile/lib/ui-kit/SwipeListControl/SwipeListContainer.js +8 -4
  289. package/mobile/lib/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
  290. package/mobile/lib/ui-kit/Text/Text.js +1 -5
  291. package/mobile/lib/ui-kit/Text/Text.js.map +1 -1
  292. package/mobile/lib/utils/groupBy.d.ts +1 -0
  293. package/mobile/lib/utils/groupBy.js +10 -0
  294. package/mobile/lib/utils/groupBy.js.map +1 -0
  295. package/mobile/src/common.css +50 -0
  296. package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCard.example.json +19 -0
  297. package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCard.tsx +62 -0
  298. package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCard.ui.json +9 -0
  299. package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCardContent.ts +45 -0
  300. package/mobile/src/components/Header/HeaderBurger.tsx +5 -7
  301. package/mobile/src/components/Header/HeaderSecondaryMenu.tsx +32 -5
  302. package/mobile/src/components/MiniGallery/MiniGallery.ui.json +1 -1
  303. package/mobile/src/components/ProductTile/ProductTile.example.json +3 -0
  304. package/mobile/src/components/ProductTile/ProductTile.tsx +13 -44
  305. package/mobile/src/components/ProductTile/ProductTile.ui.json +14 -1
  306. package/mobile/src/components/ProductTile/ProductTileContent.ts +26 -2
  307. package/mobile/src/components/ProductTile/renderAdditionalDescription.tsx +30 -0
  308. package/mobile/src/components/ProductTile/renderBenefit.tsx +39 -0
  309. package/mobile/src/components/ProductTile/renderImage.tsx +15 -0
  310. package/mobile/src/components/Recommendation/Recommendation.example.json +6 -5
  311. package/mobile/src/components/Recommendation/Recommendation.ui.json +8 -0
  312. package/mobile/src/components/Recommendation/RecommendationCard.tsx +1 -1
  313. package/mobile/src/content-page-repository/transformImg.ts +6 -14
  314. package/mobile/src/content-page-repository/transformMarkdown.ts +3 -3
  315. package/mobile/src/hooks/useCachedAsyncData.ts +37 -0
  316. package/mobile/src/hooks/useLocation.ts +48 -0
  317. package/mobile/src/hooks/useRegions.ts +16 -0
  318. package/mobile/src/services/sitemap/SitemapProps.ts +9 -0
  319. package/mobile/src/ui-kit/Location/Location.tsx +168 -0
  320. package/mobile/src/ui-kit/Location/SearchBar.tsx +30 -0
  321. package/mobile/src/ui-kit/MarkdownText/MarkdownText.tsx +8 -0
  322. package/mobile/src/ui-kit/MarkdownText/MarkdownTextProps.ts +6 -0
  323. package/mobile/src/ui-kit/SwipeListControl/SwipeListContainer.tsx +8 -4
  324. package/mobile/src/ui-kit/Text/Text.tsx +5 -7
  325. package/mobile/src/utils/groupBy.ts +10 -0
  326. package/package.json +2 -2
  327. package/src/common.css +50 -0
  328. package/src/components/Blocks.ts +4 -2
  329. package/src/components/Carousel/Carousel.fixture.tsx +22 -4
  330. package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.example.json +19 -0
  331. package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.fixture.tsx +47 -0
  332. package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.tsx +62 -0
  333. package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.ui.json +9 -0
  334. package/src/components/CarouselRecommendationCard/CarouselRecommendationCardContent.ts +45 -0
  335. package/src/components/Header/Header.tsx +6 -4
  336. package/src/components/Header/HeaderBurger.tsx +5 -7
  337. package/src/components/Header/HeaderSecondaryMenu.tsx +32 -5
  338. package/src/components/MiniGallery/MiniGallery.ui.json +1 -1
  339. package/src/components/ProductTile/ProductTile.example.json +3 -0
  340. package/src/components/ProductTile/ProductTile.fixture.tsx +11 -4
  341. package/src/components/ProductTile/ProductTile.tsx +13 -44
  342. package/src/components/ProductTile/ProductTile.ui.json +14 -1
  343. package/src/components/ProductTile/ProductTileContent.ts +26 -2
  344. package/src/components/ProductTile/renderAdditionalDescription.tsx +30 -0
  345. package/src/components/ProductTile/renderBenefit.tsx +39 -0
  346. package/src/components/ProductTile/renderImage.tsx +15 -0
  347. package/src/components/Recommendation/Recommendation.example.json +6 -5
  348. package/src/components/Recommendation/Recommendation.fixture.tsx +11 -10
  349. package/src/components/Recommendation/Recommendation.ui.json +8 -0
  350. package/src/components/Recommendation/RecommendationCard.tsx +1 -1
  351. package/src/components/TextBlock/TextBlock.tsx +49 -41
  352. package/src/content-page-repository/transformImg.ts +6 -14
  353. package/src/content-page-repository/transformMarkdown.ts +3 -3
  354. package/src/hooks/useCachedAsyncData.ts +37 -0
  355. package/src/hooks/useLocation.ts +48 -0
  356. package/src/hooks/useRegions.ts +16 -0
  357. package/src/services/sitemap/SitemapProps.ts +9 -0
  358. package/src/ui-kit/Location/Location.fixture.tsx +81 -0
  359. package/src/ui-kit/Location/Location.tsx +168 -0
  360. package/src/ui-kit/Location/SearchBar.tsx +30 -0
  361. package/src/ui-kit/MarkdownText/MarkdownText.tsx +8 -0
  362. package/src/ui-kit/MarkdownText/MarkdownTextProps.ts +6 -0
  363. package/src/ui-kit/SwipeListControl/SwipeListContainer.tsx +8 -4
  364. package/src/ui-kit/Text/Text.tsx +5 -7
  365. package/src/utils/groupBy.ts +10 -0
  366. package/bundle/hooks/useGeolocation.d.ts +0 -1
  367. package/dist/hooks/useGeolocation.d.ts +0 -1
  368. package/dist/hooks/useGeolocation.js +0 -21
  369. package/dist/hooks/useGeolocation.js.map +0 -1
  370. package/lib/hooks/useGeolocation.d.ts +0 -1
  371. package/lib/hooks/useGeolocation.js +0 -18
  372. package/lib/hooks/useGeolocation.js.map +0 -1
  373. package/mobile/bundle/hooks/useGeolocation.d.ts +0 -1
  374. package/mobile/dist/hooks/useGeolocation.d.ts +0 -1
  375. package/mobile/dist/hooks/useGeolocation.js +0 -21
  376. package/mobile/dist/hooks/useGeolocation.js.map +0 -1
  377. package/mobile/lib/hooks/useGeolocation.d.ts +0 -1
  378. package/mobile/lib/hooks/useGeolocation.js +0 -18
  379. package/mobile/lib/hooks/useGeolocation.js.map +0 -1
  380. package/mobile/src/hooks/useGeolocation.ts +0 -22
  381. package/src/hooks/useGeolocation.ts +0 -22
@@ -0,0 +1,48 @@
1
+ import { useCallback, useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
2
+ import { fetchJSONUnsafe } from '../utils/fetchJSON';
3
+ import { useCachedAsyncData } from './useCachedAsyncData';
4
+
5
+ const REGION_URL = '/api/v1/region';
6
+
7
+ export interface RegionData {
8
+ id?: number;
9
+ code?: string;
10
+ name?: string;
11
+ }
12
+
13
+ interface LocationStorageData {
14
+ manual?: boolean;
15
+ region: RegionData;
16
+ }
17
+
18
+ const localStorageLocation = globalThis?.localStorage.getItem('location');
19
+ const currentLocation: LocationStorageData | null = localStorageLocation
20
+ ? JSON.parse(localStorageLocation)
21
+ : null;
22
+
23
+ export function useLocation(
24
+ defaultLocation: string,
25
+ ): [RegionData, (newLocation: RegionData) => void] {
26
+ const [location, setLocation] = useState<RegionData>(
27
+ currentLocation?.region ?? { name: defaultLocation },
28
+ );
29
+ const { data } = useCachedAsyncData<RegionData>(REGION_URL, fetchJSONUnsafe);
30
+
31
+ useEffect(() => {
32
+ setLocation(
33
+ currentLocation?.region && currentLocation?.manual
34
+ ? currentLocation.region
35
+ : data || { name: defaultLocation },
36
+ );
37
+ }, [data]);
38
+
39
+ const onChangeLocation = useCallback(
40
+ (region: RegionData) => {
41
+ globalThis?.localStorage.setItem('location', JSON.stringify({ manual: true, region }));
42
+ setLocation(region);
43
+ },
44
+ [setLocation],
45
+ );
46
+
47
+ return [location, onChangeLocation];
48
+ }
@@ -0,0 +1,16 @@
1
+ import { useAsyncData } from '@redneckz/uni-jsx/lib/hooks/useAsyncData';
2
+ import { fetchJSONUnsafe } from '../utils/fetchJSON';
3
+
4
+ const REGIONS_URL = '/api/v1/regions';
5
+
6
+ export interface Region {
7
+ id?: number;
8
+ code?: string;
9
+ name?: string;
10
+ }
11
+
12
+ export function useRegions(): Region[] {
13
+ const { data } = useAsyncData<Region[]>(REGIONS_URL, fetchJSONUnsafe);
14
+
15
+ return data || [];
16
+ }
@@ -20,10 +20,19 @@ export interface DispositionItem extends LinkProps {
20
20
  icon?: Picture;
21
21
  }
22
22
 
23
+ /**
24
+ * @title Представительства за рубежом
25
+ * @required ["text", "href"]
26
+ */
27
+ export interface ForeignOffice extends LinkProps {
28
+ icon?: Picture;
29
+ }
30
+
23
31
  export interface SitemapDataProps {
24
32
  topItems?: TopMenuItem[];
25
33
  dispositions?: DispositionItem[];
26
34
  logo?: LogoType;
35
+ foreignOffices?: ForeignOffice[];
27
36
  defaultLocation?: string;
28
37
  officesLink?: string;
29
38
  }
@@ -0,0 +1,168 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
3
+ import { useLink } from '../../hooks/useLink';
4
+ import type { Region } from '../../hooks/useRegions';
5
+ import { useRegions } from '../../hooks/useRegions';
6
+ import { useSearch } from '../../hooks/useSearch';
7
+ import type { UniBlockProps } from '../../model/JSXBlock';
8
+ import type { ForeignOffice } from '../../services/sitemap/SitemapProps';
9
+ import { Text } from '../../ui-kit/Text/Text';
10
+ import { groupBy } from '../../utils/groupBy';
11
+ import { Img } from '../Img/Img';
12
+ import { SearchBar } from './SearchBar';
13
+
14
+ const SEARCH_TERM_MIN_LENGTH = 3;
15
+
16
+ interface RegionLinkProps {
17
+ onChangeLocation?: (region: Region) => void;
18
+ }
19
+
20
+ interface CloseButtonProps {
21
+ close?: () => void;
22
+ }
23
+
24
+ interface CurrentLocationProps {
25
+ currentLocation?: Region;
26
+ }
27
+
28
+ interface ForeignOfficeProps {
29
+ foreignOffices?: ForeignOffice[];
30
+ }
31
+
32
+ export type LocationProps = ForeignOfficeProps &
33
+ CloseButtonProps &
34
+ RegionLinkProps &
35
+ CurrentLocationProps &
36
+ UniBlockProps;
37
+
38
+ export const Location = JSX<LocationProps>(
39
+ ({ currentLocation, onChangeLocation, close, foreignOffices }) => {
40
+ const { term, setTerm } = useSearch();
41
+
42
+ const handleSearch = useCallback((_: string) => setTerm(_), []);
43
+
44
+ const regions: Region[] = cleanUpRegions(useRegions()).sort((a, b) =>
45
+ a.name.localeCompare(b.name),
46
+ );
47
+ const regionsGroupByLetter: Map<string, Region[]> = groupBy(regions, regionFirstLetter);
48
+
49
+ return (
50
+ <div className="absolute h-full w-full inset-0 bg-white text-l-light z-50">
51
+ <CloseButton close={close} />
52
+ <div className="container py-12">
53
+ <CurrentLocation currentLocation={currentLocation} />
54
+ <SearchBar onSearch={handleSearch} searchTerm={term} className="mb-7" />
55
+
56
+ {term && term.length >= SEARCH_TERM_MIN_LENGTH ? (
57
+ <div>
58
+ {regions
59
+ .filter((region) => region.name?.startsWith(term))
60
+ .map(renderRegion({ onChangeLocation, close }))}
61
+ </div>
62
+ ) : (
63
+ <div className="columns-5">
64
+ {Array.from(regionsGroupByLetter.entries()).map(
65
+ renderRegionGroup({ onChangeLocation, close }),
66
+ )}
67
+ </div>
68
+ )}
69
+
70
+ <ForeignOffices foreignOffices={foreignOffices} />
71
+ </div>
72
+ </div>
73
+ );
74
+ },
75
+ );
76
+
77
+ const regionFirstLetter = (region: Region) => region.name?.charAt(0) || '';
78
+
79
+ const cleanUpRegions = (regions: Region[]) =>
80
+ regions.map((region) => ({
81
+ ...region,
82
+ name: region.name?.replace(/республика|область|край'/gi, '').trim() || '',
83
+ }));
84
+
85
+ const CurrentLocation = JSX<CurrentLocationProps>(({ currentLocation }) =>
86
+ currentLocation ? (
87
+ <div className="mb-4">
88
+ <Text size="text-l" font="font-light">
89
+ Сейчас выбран:&nbsp;
90
+ </Text>
91
+ <button className="cursor-pointer" onClick={close}>
92
+ <Text color="text-green">{currentLocation.name}</Text>
93
+ </button>
94
+ </div>
95
+ ) : null,
96
+ );
97
+
98
+ const CloseButton = JSX<CloseButtonProps>(({ close }) => (
99
+ <button
100
+ className="visible peer-placeholder-shown:invisible absolute top-6 right-6 w-6 h-6 p-1 bg-transparent cursor-pointer border-none"
101
+ onClick={(e) => {
102
+ e.preventDefault();
103
+ close && close();
104
+ }}
105
+ >
106
+ <Img image="CloseIcon" width="24" height="24" />
107
+ </button>
108
+ ));
109
+
110
+ const renderRegionGroup =
111
+ ({ onChangeLocation, close }: RegionLinkProps & CloseButtonProps) =>
112
+ ([letter, regions]: [string, Region[]]) =>
113
+ (
114
+ <div key={letter} className="break-inside-avoid mb-7 w-[224px]">
115
+ <div className="mb-2.5">
116
+ <Text size="text-h6">{letter}</Text>
117
+ </div>
118
+ {regions.map(renderRegion({ onChangeLocation, close }))}
119
+ </div>
120
+ );
121
+
122
+ const renderRegion =
123
+ ({ onChangeLocation, close }: RegionLinkProps & CloseButtonProps) =>
124
+ (region: Region) =>
125
+ (
126
+ <div key={region.id} className="mb-1">
127
+ <button
128
+ className="cursor-pointer hover:text-primary-hover"
129
+ onClick={() => {
130
+ onChangeLocation && onChangeLocation(region);
131
+ close && close();
132
+ }}
133
+ >
134
+ {region.name}
135
+ </button>
136
+ </div>
137
+ );
138
+
139
+ const ForeignOffices = JSX<ForeignOfficeProps>(({ foreignOffices }) =>
140
+ foreignOffices?.length ? (
141
+ <div className="border-t border-main-divider mt-7 pt-7">
142
+ <div className="mb-4">
143
+ <Text size="text-m-light" color="text-secondary-text">
144
+ Представительства за рубежом:
145
+ </Text>
146
+ </div>
147
+ <div className="flex gap-10">
148
+ {foreignOffices.map((office, i: number) => (
149
+ <ForeignOffice key={String(i)} {...office} />
150
+ ))}
151
+ </div>
152
+ </div>
153
+ ) : null,
154
+ );
155
+
156
+ const ForeignOffice = JSX<ForeignOffice>(({ icon, ...rest }) => {
157
+ const link = useLink();
158
+ const { text, target, href, onClick } = link(rest);
159
+
160
+ return (
161
+ <div className="flex gap-x-3">
162
+ <Img image={icon} />
163
+ <a className="hover:text-primary-hover" href={href} target={target} onClick={onClick}>
164
+ {text}
165
+ </a>
166
+ </div>
167
+ );
168
+ });
@@ -0,0 +1,30 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+
3
+ export interface SearchBarInnerProps {
4
+ className?: string;
5
+ searchTerm?: string;
6
+ onSearch: (_: string) => void;
7
+ }
8
+
9
+ export const SearchBar = JSX<SearchBarInnerProps>(({ className, searchTerm, onSearch }) => {
10
+ return (
11
+ <form className={`font-sans relative ${className}`}>
12
+ <div className="absolute rounded h-full flex items-center justify-center pl-4 max-w-[170px] gap-3.5 pointer-events-none">
13
+ {searchTerm ? null : (
14
+ <label htmlFor="search-bar-input" className={`text-secondary-text `}>
15
+ Поиск по филиалам
16
+ </label>
17
+ )}
18
+ </div>
19
+ <input
20
+ id="search-bar-input"
21
+ className={`h-12 pl-4 w-full peer text-l text-black border border-solid rounded-md box-border
22
+ outline-none border-main-stroke hover:border-primary-hover active:border-primary-text focus:border-primary-text`}
23
+ value={searchTerm}
24
+ onChange={(e) => onSearch(e.target.value as string)}
25
+ type="text"
26
+ name="location-search-bar-input"
27
+ />
28
+ </form>
29
+ );
30
+ });
@@ -0,0 +1,8 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import type { MarkdownTextProps } from './MarkdownTextProps';
3
+
4
+ export const MarkdownText = JSX<MarkdownTextProps>((props) => {
5
+ const { md = '' } = props;
6
+
7
+ return <div className="md-container" dangerouslySetInnerHTML={{ __html: md }} />;
8
+ });
@@ -0,0 +1,6 @@
1
+ type Markdown = string;
2
+
3
+ export interface MarkdownTextProps {
4
+ /** @title Текст */
5
+ md?: Markdown;
6
+ }
@@ -29,7 +29,7 @@ export const SwipeListContainer = JSX<SwipeListContainerProps>(
29
29
  className = '',
30
30
  containerRef,
31
31
  activeIndex,
32
- visibleItemCount,
32
+ visibleItemCount = 0,
33
33
  gap = 0,
34
34
  padding = 0,
35
35
  snapAlign = 'snap-center',
@@ -54,11 +54,15 @@ export const SwipeListContainer = JSX<SwipeListContainerProps>(
54
54
  },
55
55
  [onVisibleItemsChange, onVisibleIndicesChange],
56
56
  );
57
+ const additionPadding = visibleItemCount > 0 ? gap * Number(visibleItemCount) - 1 : 0;
57
58
 
58
59
  return (
59
60
  <div
60
61
  className={`box-border overflow-auto flex horizontal-list no-scrollbar ${className}`}
61
- style={{ ...getContainerStyle(padding), gap: `${gap}px` }}
62
+ style={{
63
+ ...getContainerStyle(padding, additionPadding),
64
+ gap: `${gap}px`,
65
+ }}
62
66
  role="list"
63
67
  ref={containerRef}
64
68
  >
@@ -83,11 +87,11 @@ export const SwipeListContainer = JSX<SwipeListContainerProps>(
83
87
  );
84
88
 
85
89
  // Styles used to compensate outer container padding to get rid of clipping effect
86
- const getContainerStyle = (padding: number): Record<string, string> => ({
90
+ const getContainerStyle = (padding: number, additionalPadding = 0): Record<string, string> => ({
87
91
  marginLeft: `${-padding}px`,
88
92
  marginRight: `${-padding}px`,
89
93
  paddingLeft: `${padding}px`,
90
- paddingRight: `${padding}px`,
94
+ paddingRight: `${padding + additionalPadding}px`,
91
95
  });
92
96
 
93
97
  const getVisibleIndices = (itemsVisibilityList: ItemsVisibilityList) =>
@@ -8,10 +8,8 @@ interface TextProps {
8
8
  font?: FontWeight;
9
9
  }
10
10
 
11
- export const Text = JSX<TextProps>((props) => {
12
- const { size = '', color = '', align = '', font = '', children } = props;
13
-
14
- const textClasses = `font-sans ${size} ${color} ${align} ${font}`;
15
-
16
- return <span className={textClasses}>{children}</span>;
17
- });
11
+ export const Text = JSX<TextProps>(({ size, color, align, font, children }) => (
12
+ <span className={['font-sans', size, color, align, font].filter(Boolean).join(' ')}>
13
+ {children}
14
+ </span>
15
+ ));
@@ -0,0 +1,10 @@
1
+ export const groupBy = <K, V>(list: Array<V>, keyGetter: (input: V) => K): Map<K, Array<V>> => {
2
+ const map = new Map<K, Array<V>>();
3
+ list.forEach((item) => {
4
+ const key = keyGetter(item);
5
+ const collection = map.get(key);
6
+ map.set(key, [...(collection || []), item]);
7
+ });
8
+
9
+ return map;
10
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redneckz/wildless-cms-uni-blocks",
3
- "version": "0.6.41",
3
+ "version": "0.6.43",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "author": "ЦК",
@@ -185,7 +185,7 @@
185
185
  "path": "lib/common.css"
186
186
  },
187
187
  {
188
- "limit": "43 kB",
188
+ "limit": "45 kB",
189
189
  "path": "bundle/bundle.umd.min.js"
190
190
  }
191
191
  ],
package/src/common.css CHANGED
@@ -151,6 +151,56 @@ html {
151
151
  }
152
152
  }
153
153
 
154
+ @layer components {
155
+ .md-container .h1 {
156
+ @apply text-h1;
157
+ }
158
+
159
+ .md-container .h2 {
160
+ @apply text-h2;
161
+ }
162
+
163
+ .md-container .h3 {
164
+ @apply text-h3;
165
+ }
166
+
167
+ .md-container .h4 {
168
+ @apply text-h4;
169
+ }
170
+
171
+ .md-container .h5 {
172
+ @apply text-h5;
173
+ }
174
+
175
+ .md-container .h6 {
176
+ @apply text-h6;
177
+ }
178
+
179
+ .md-container ul {
180
+ @apply list-inside list-disc;
181
+ }
182
+
183
+ .md-container ol {
184
+ @apply list-inside list-decimal;
185
+ }
186
+
187
+ .md-container p {
188
+ @apply text-l font-light;
189
+ }
190
+
191
+ .md-container li {
192
+ @apply text-l font-light;
193
+ }
194
+
195
+ .md-container li > p {
196
+ @apply inline;
197
+ }
198
+
199
+ .md-container a {
200
+ @apply text-primary-main;
201
+ }
202
+ }
203
+
154
204
  /*
155
205
  Styling Yandex Map element
156
206
  */
@@ -43,6 +43,7 @@ import { ProductBlock } from './ProductBlock/ProductBlock';
43
43
  import { ProductGallery } from './ProductGallery/ProductGallery';
44
44
  import { ProductTile } from './ProductTile/ProductTile';
45
45
  import { PromoTile } from './PromoTile/PromoTile';
46
+ import { CarouselRecommendationCard } from './CarouselRecommendationCard/CarouselRecommendationCard';
46
47
  import { Recommendation } from './Recommendation/Recommendation';
47
48
  import { RollupItem } from './RollupItem/RollupItem';
48
49
  import { SafeDepositRental } from './SafeDepositRental/SafeDepositRental';
@@ -95,11 +96,10 @@ export const Blocks: BlocksRegistry = {
95
96
  ProductGallery,
96
97
  ProductTile,
97
98
  PromoTile,
98
- OfficeMap,
99
99
  OfficeServicesBlock,
100
100
  OtherProducts,
101
101
  OtherProductsItem,
102
- Recommendation,
102
+ CarouselRecommendationCard,
103
103
  RollupItem,
104
104
  SafeDepositRental,
105
105
  StepsBlock,
@@ -109,4 +109,6 @@ export const Blocks: BlocksRegistry = {
109
109
  Tile,
110
110
  VerticalLayout,
111
111
  Video,
112
+ Recommendation,
113
+ OfficeMap,
112
114
  };
@@ -1,13 +1,14 @@
1
- import type { BlockRendererOptions } from '../../BlockRenderer/BlockRendererOptions';
2
1
  import '../../setup-fixture';
3
2
  import { Blocks } from '../Blocks';
3
+ import { BUSINESS_CARD } from '../CarouselProgramsCard/CarouselProgramsCard.fixture';
4
4
  import { CARD, CARD_MINI, CARD_NEW } from '../CarouselCard/CarouselCard.fixture';
5
+ import { Carousel } from './Carousel';
6
+ import { CAROUSEL_RECOMMENDATION_CARD } from '../CarouselRecommendationCard/CarouselRecommendationCard.fixture';
5
7
  import { CATALOG_CARD } from '../CarouselCatalogCard/CarouselCatalogCard.fixture';
6
8
  import { INVESTMENT_CARD_WITH_SINGLE_COLUMN } from '../CarouselInvestmentCard/CarouselInvestmentCard.fixture';
7
9
  import { PRODUCT_CARD } from '../CarouselProductCard/CarouselProductCard.fixture';
8
- import { BUSINESS_CARD } from '../CarouselProgramsCard/CarouselProgramsCard.fixture';
9
10
  import { TARIFFS_CARD, TARIFFS_CARD_HIT } from '../CarouselTariffsCard/CarouselTariffsCard.fixture';
10
- import { Carousel } from './Carousel';
11
+ import type { BlockRendererOptions } from '../../BlockRenderer/BlockRendererOptions';
11
12
 
12
13
  const options = {
13
14
  blocksRegistry: Blocks,
@@ -127,7 +128,6 @@ export default {
127
128
  />
128
129
  </div>
129
130
  ),
130
-
131
131
  program: (
132
132
  <div className="container grid grid-cols-12">
133
133
  <Carousel
@@ -165,4 +165,22 @@ export default {
165
165
  />
166
166
  </div>
167
167
  ),
168
+ recommendations: (
169
+ <div className="container grid grid-cols-12">
170
+ <Carousel
171
+ className="col-span-12"
172
+ isBlur={true}
173
+ isCyclic={false}
174
+ block={{
175
+ type: 'Carousel',
176
+ blocks: new Array(6).fill({
177
+ type: 'CarouselRecommendationCard',
178
+ content: CAROUSEL_RECOMMENDATION_CARD,
179
+ style: ['col-span-4'],
180
+ }),
181
+ }}
182
+ options={options}
183
+ />
184
+ </div>
185
+ ),
168
186
  };
@@ -0,0 +1,19 @@
1
+ {
2
+ "content": {
3
+ "image": {
4
+ "format": "webp",
5
+ "size": {
6
+ "width": 180,
7
+ "height": 180
8
+ }
9
+ },
10
+ "title": "Заголовок 1",
11
+ "description": "Описание 1",
12
+ "socialMedia": [
13
+ { "href": "https://t.me" },
14
+ { "href": "https://vk.com" },
15
+ { "href": "https://ok.ru" }
16
+ ],
17
+ "version": "primary"
18
+ }
19
+ }
@@ -0,0 +1,47 @@
1
+ import type { LinkProps } from '../../model/LinkProps';
2
+ import type { Picture } from '../../model/Picture';
3
+ import '../../setup-fixture';
4
+ import { CarouselRecommendationCard } from './CarouselRecommendationCard';
5
+ import type { CarouselRecommendationCardContent } from './CarouselRecommendationCardContent';
6
+
7
+ const image: Picture = {
8
+ src: 'product-basket.png',
9
+ format: 'webp',
10
+ size: {
11
+ width: 290,
12
+ height: 290,
13
+ },
14
+ title: 'product-basket',
15
+ };
16
+
17
+ const socialMedia: LinkProps[] = [
18
+ { href: 'https://t.me' },
19
+ { href: 'https://vk.com' },
20
+ { href: 'https://ok.ru' },
21
+ ];
22
+
23
+ const items = ['Свежие новости', 'Акции и предложения', 'Ставки и котировки'];
24
+
25
+ export const CAROUSEL_RECOMMENDATION_CARD: CarouselRecommendationCardContent = {
26
+ title: 'РоссельхозБанк',
27
+ items,
28
+ image,
29
+ socialMedia,
30
+ };
31
+
32
+ export default {
33
+ default: (
34
+ <div className="container grid grid-cols-12 mb-1">
35
+ <CarouselRecommendationCard className="col-span-4" {...CAROUSEL_RECOMMENDATION_CARD} />
36
+ </div>
37
+ ),
38
+ secondary: (
39
+ <div className="container grid grid-cols-12 mb-1">
40
+ <CarouselRecommendationCard
41
+ className="col-span-4"
42
+ version="secondary"
43
+ {...CAROUSEL_RECOMMENDATION_CARD}
44
+ />
45
+ </div>
46
+ ),
47
+ };
@@ -0,0 +1,62 @@
1
+ import { BaseTile } from '../BaseTile/BaseTile';
2
+ import { BlockWrapper } from '../../ui-kit/BlockWrapper';
3
+ import { BorderVersionStyleMap } from '../../model/BorderVersion';
4
+ import { Heading } from '../../ui-kit/Heading/Heading';
5
+ import { Img } from '../../ui-kit/Img/Img';
6
+ import { JSX } from '@redneckz/uni-jsx';
7
+ import { List } from '../../ui-kit/List/List';
8
+ import { renderButton } from '../../ui-kit/Button/ButtonSection';
9
+ import { SocialMedia } from '../Footer/SocialMedia';
10
+ import { VersionStyleMap } from '../../model/BlockVersion';
11
+ import type { CarouselRecommendationCardContent } from './CarouselRecommendationCardContent';
12
+ import type { UniBlockProps } from '../../model/JSXBlock';
13
+
14
+ export interface RecommendationCardProps extends CarouselRecommendationCardContent, UniBlockProps {}
15
+
16
+ export const CarouselRecommendationCard = JSX<RecommendationCardProps>(
17
+ ({
18
+ button,
19
+ className = '',
20
+ description,
21
+ image,
22
+ items = [],
23
+ socialMedia = [],
24
+ title,
25
+ version = 'primary',
26
+ ...rest
27
+ }) => {
28
+ const tileTitle = title ? (
29
+ <Heading headingType="h5" as="h3" className="mb-3.5 z-10" title={title} />
30
+ ) : null;
31
+ const tileImage = image?.src ? (
32
+ <Img className="absolute bottom-0 right-0 m-0" image={image} />
33
+ ) : null;
34
+
35
+ return (
36
+ <BlockWrapper
37
+ className={`relative text-left border border-solid box-border p-7 min-w-[524px]
38
+ ${BorderVersionStyleMap[version]}
39
+ ${VersionStyleMap[version]}
40
+ ${className}`}
41
+ {...rest}
42
+ >
43
+ <BaseTile className="flex justify-between" title={tileTitle} image={tileImage}>
44
+ <div className="h-full flex flex-col justify-between">
45
+ {description ? <span className="mb-2">{description}</span> : null}
46
+ {items.length ? (
47
+ <List
48
+ className="text-xl-light flex flex-col flex-1 gap-2 max-w-[236px]"
49
+ items={items}
50
+ version={version}
51
+ />
52
+ ) : null}
53
+ {socialMedia.length ? (
54
+ <SocialMedia className="pt-10 pb-0" media={socialMedia} version={version} />
55
+ ) : null}
56
+ {button?.text ? <div className="pt-2 mt-16">{renderButton({ button })}</div> : null}
57
+ </div>
58
+ </BaseTile>
59
+ </BlockWrapper>
60
+ );
61
+ },
62
+ );
@@ -0,0 +1,9 @@
1
+ {
2
+ "content": {
3
+ "items": {
4
+ "image": {
5
+ "ui:field": "picture"
6
+ }
7
+ }
8
+ }
9
+ }