@redneckz/wildless-cms-uni-blocks 0.6.40 → 0.6.42

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 (397) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +161 -47
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/bundle/components/ButtonBlock/ButtonBlock.d.ts +6 -0
  5. package/bundle/components/ButtonBlock/ButtonBlockContent.d.ts +8 -0
  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/Header/HeaderTop.d.ts +2 -0
  10. package/bundle/components/ProductTile/ProductTileContent.d.ts +2 -0
  11. package/bundle/hooks/useCachedAsyncData.d.ts +2 -0
  12. package/bundle/hooks/useLocation.d.ts +6 -0
  13. package/bundle/hooks/useRegions.d.ts +6 -0
  14. package/bundle/model/LogoType.d.ts +5 -0
  15. package/bundle/services/sitemap/SitemapProps.d.ts +10 -4
  16. package/bundle/ui-kit/Location/Location.d.ts +19 -0
  17. package/bundle/ui-kit/Location/SearchBar.d.ts +6 -0
  18. package/bundle/ui-kit/Logo/Logo.d.ts +2 -5
  19. package/bundle/ui-kit/Logo/Logo.mobile.d.ts +2 -0
  20. package/bundle/ui-kit/Logo/renderImage.d.ts +6 -0
  21. package/bundle/ui-kit/Logo/renderTitle.d.ts +3 -0
  22. package/bundle/utils/groupBy.d.ts +1 -0
  23. package/dist/components/Blocks.js +6 -2
  24. package/dist/components/Blocks.js.map +1 -1
  25. package/dist/components/ButtonBlock/ButtonBlock.d.ts +6 -0
  26. package/dist/components/ButtonBlock/ButtonBlock.js +11 -0
  27. package/dist/components/ButtonBlock/ButtonBlock.js.map +1 -0
  28. package/dist/components/ButtonBlock/ButtonBlockContent.d.ts +8 -0
  29. package/dist/components/ButtonBlock/ButtonBlockContent.js +2 -0
  30. package/dist/components/ButtonBlock/ButtonBlockContent.js.map +1 -0
  31. package/dist/components/Calculator/constants.js +1 -1
  32. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.d.ts +5 -0
  33. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js +22 -0
  34. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -0
  35. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +44 -0
  36. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js +2 -0
  37. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js.map +1 -0
  38. package/dist/components/Header/Header.js +2 -2
  39. package/dist/components/Header/Header.js.map +1 -1
  40. package/dist/components/Header/Header.mobile.js +2 -2
  41. package/dist/components/Header/Header.mobile.js.map +1 -1
  42. package/dist/components/Header/HeaderBurger.js +4 -3
  43. package/dist/components/Header/HeaderBurger.js.map +1 -1
  44. package/dist/components/Header/HeaderSecondaryMenu.d.ts +2 -0
  45. package/dist/components/Header/HeaderSecondaryMenu.js +13 -4
  46. package/dist/components/Header/HeaderSecondaryMenu.js.map +1 -1
  47. package/dist/components/Header/HeaderTop.d.ts +2 -0
  48. package/dist/components/Header/HeaderTop.js +1 -1
  49. package/dist/components/Header/HeaderTop.js.map +1 -1
  50. package/dist/components/ProductTile/ProductTile.js +8 -2
  51. package/dist/components/ProductTile/ProductTile.js.map +1 -1
  52. package/dist/components/ProductTile/ProductTileContent.d.ts +2 -0
  53. package/dist/components/Recommendation/RecommendationCard.js +1 -1
  54. package/dist/components/Recommendation/RecommendationCard.js.map +1 -1
  55. package/dist/hooks/useCachedAsyncData.d.ts +2 -0
  56. package/dist/hooks/useCachedAsyncData.js +25 -0
  57. package/dist/hooks/useCachedAsyncData.js.map +1 -0
  58. package/dist/hooks/useLocation.d.ts +6 -0
  59. package/dist/hooks/useLocation.js +26 -0
  60. package/dist/hooks/useLocation.js.map +1 -0
  61. package/dist/hooks/useRegions.d.ts +6 -0
  62. package/dist/hooks/useRegions.js +11 -0
  63. package/dist/hooks/useRegions.js.map +1 -0
  64. package/dist/model/LogoType.d.ts +5 -0
  65. package/dist/model/LogoType.js +2 -0
  66. package/dist/model/LogoType.js.map +1 -0
  67. package/dist/services/sitemap/SitemapProps.d.ts +10 -4
  68. package/dist/ui-kit/Location/Location.d.ts +19 -0
  69. package/dist/ui-kit/Location/Location.js +44 -0
  70. package/dist/ui-kit/Location/Location.js.map +1 -0
  71. package/dist/ui-kit/Location/SearchBar.d.ts +6 -0
  72. package/dist/ui-kit/Location/SearchBar.js +9 -0
  73. package/dist/ui-kit/Location/SearchBar.js.map +1 -0
  74. package/dist/ui-kit/Logo/Logo.d.ts +2 -5
  75. package/dist/ui-kit/Logo/Logo.js +3 -21
  76. package/dist/ui-kit/Logo/Logo.js.map +1 -1
  77. package/dist/ui-kit/Logo/Logo.mobile.d.ts +2 -0
  78. package/dist/ui-kit/Logo/Logo.mobile.js +4 -15
  79. package/dist/ui-kit/Logo/Logo.mobile.js.map +1 -1
  80. package/dist/ui-kit/Logo/renderImage.d.ts +6 -0
  81. package/dist/ui-kit/Logo/renderImage.js +20 -0
  82. package/dist/ui-kit/Logo/renderImage.js.map +1 -0
  83. package/dist/ui-kit/Logo/renderTitle.d.ts +3 -0
  84. package/dist/ui-kit/Logo/renderTitle.js +12 -0
  85. package/dist/ui-kit/Logo/renderTitle.js.map +1 -0
  86. package/dist/ui-kit/SwipeListControl/SwipeListContainer.js +8 -4
  87. package/dist/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
  88. package/dist/utils/groupBy.d.ts +1 -0
  89. package/dist/utils/groupBy.js +13 -0
  90. package/dist/utils/groupBy.js.map +1 -0
  91. package/lib/common.css +1 -1
  92. package/lib/components/Blocks.js +6 -2
  93. package/lib/components/Blocks.js.map +1 -1
  94. package/lib/components/ButtonBlock/ButtonBlock.d.ts +6 -0
  95. package/lib/components/ButtonBlock/ButtonBlock.fixture.d.ts +6 -0
  96. package/lib/components/ButtonBlock/ButtonBlock.js +9 -0
  97. package/lib/components/ButtonBlock/ButtonBlock.js.map +1 -0
  98. package/lib/components/ButtonBlock/ButtonBlockContent.d.ts +8 -0
  99. package/lib/components/ButtonBlock/ButtonBlockContent.js +2 -0
  100. package/lib/components/ButtonBlock/ButtonBlockContent.js.map +1 -0
  101. package/lib/components/Calculator/constants.js +1 -1
  102. package/lib/components/Carousel/Carousel.fixture.d.ts +1 -0
  103. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.d.ts +5 -0
  104. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.fixture.d.ts +9 -0
  105. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js +20 -0
  106. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -0
  107. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +44 -0
  108. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js +2 -0
  109. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js.map +1 -0
  110. package/lib/components/Header/Header.js +2 -2
  111. package/lib/components/Header/Header.js.map +1 -1
  112. package/lib/components/Header/Header.mobile.js +2 -2
  113. package/lib/components/Header/Header.mobile.js.map +1 -1
  114. package/lib/components/Header/HeaderBurger.js +4 -3
  115. package/lib/components/Header/HeaderBurger.js.map +1 -1
  116. package/lib/components/Header/HeaderSecondaryMenu.d.ts +2 -0
  117. package/lib/components/Header/HeaderSecondaryMenu.js +13 -4
  118. package/lib/components/Header/HeaderSecondaryMenu.js.map +1 -1
  119. package/lib/components/Header/HeaderTop.d.ts +2 -0
  120. package/lib/components/Header/HeaderTop.js +1 -1
  121. package/lib/components/Header/HeaderTop.js.map +1 -1
  122. package/lib/components/ProductTile/ProductTile.fixture.d.ts +1 -0
  123. package/lib/components/ProductTile/ProductTile.js +8 -2
  124. package/lib/components/ProductTile/ProductTile.js.map +1 -1
  125. package/lib/components/ProductTile/ProductTileContent.d.ts +2 -0
  126. package/lib/components/Recommendation/Recommendation.fixture.d.ts +1 -1
  127. package/lib/components/Recommendation/RecommendationCard.js +1 -1
  128. package/lib/components/Recommendation/RecommendationCard.js.map +1 -1
  129. package/lib/hooks/useCachedAsyncData.d.ts +2 -0
  130. package/lib/hooks/useCachedAsyncData.js +22 -0
  131. package/lib/hooks/useCachedAsyncData.js.map +1 -0
  132. package/lib/hooks/useLocation.d.ts +6 -0
  133. package/lib/hooks/useLocation.js +23 -0
  134. package/lib/hooks/useLocation.js.map +1 -0
  135. package/lib/hooks/useRegions.d.ts +6 -0
  136. package/lib/hooks/useRegions.js +8 -0
  137. package/lib/hooks/useRegions.js.map +1 -0
  138. package/lib/model/LogoType.d.ts +5 -0
  139. package/lib/model/LogoType.js +2 -0
  140. package/lib/model/LogoType.js.map +1 -0
  141. package/lib/services/sitemap/SitemapProps.d.ts +10 -4
  142. package/lib/ui-kit/Location/Location.d.ts +19 -0
  143. package/lib/ui-kit/Location/Location.fixture.d.ts +6 -0
  144. package/lib/ui-kit/Location/Location.js +42 -0
  145. package/lib/ui-kit/Location/Location.js.map +1 -0
  146. package/lib/ui-kit/Location/SearchBar.d.ts +6 -0
  147. package/lib/ui-kit/Location/SearchBar.js +7 -0
  148. package/lib/ui-kit/Location/SearchBar.js.map +1 -0
  149. package/lib/ui-kit/Logo/Logo.d.ts +2 -5
  150. package/lib/ui-kit/Logo/Logo.js +4 -22
  151. package/lib/ui-kit/Logo/Logo.js.map +1 -1
  152. package/lib/ui-kit/Logo/Logo.mobile.d.ts +2 -0
  153. package/lib/ui-kit/Logo/Logo.mobile.js +5 -16
  154. package/lib/ui-kit/Logo/Logo.mobile.js.map +1 -1
  155. package/lib/ui-kit/Logo/renderImage.d.ts +5 -0
  156. package/lib/ui-kit/Logo/renderImage.js +17 -0
  157. package/lib/ui-kit/Logo/renderImage.js.map +1 -0
  158. package/lib/ui-kit/Logo/renderTitle.d.ts +2 -0
  159. package/lib/ui-kit/Logo/renderTitle.js +9 -0
  160. package/lib/ui-kit/Logo/renderTitle.js.map +1 -0
  161. package/lib/ui-kit/SwipeListControl/SwipeListContainer.js +8 -4
  162. package/lib/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
  163. package/lib/utils/groupBy.d.ts +1 -0
  164. package/lib/utils/groupBy.js +10 -0
  165. package/lib/utils/groupBy.js.map +1 -0
  166. package/mobile/bundle/bundle.umd.js +65 -26
  167. package/mobile/bundle/bundle.umd.min.js +1 -1
  168. package/mobile/bundle/components/ButtonBlock/ButtonBlock.d.ts +6 -0
  169. package/mobile/bundle/components/ButtonBlock/ButtonBlockContent.d.ts +8 -0
  170. package/mobile/bundle/components/CarouselRecommendationCard/CarouselRecommendationCard.d.ts +5 -0
  171. package/mobile/bundle/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +44 -0
  172. package/mobile/bundle/components/Header/HeaderSecondaryMenu.d.ts +2 -0
  173. package/mobile/bundle/components/Header/HeaderTop.d.ts +2 -0
  174. package/mobile/bundle/components/ProductTile/ProductTileContent.d.ts +2 -0
  175. package/mobile/bundle/hooks/useCachedAsyncData.d.ts +2 -0
  176. package/mobile/bundle/hooks/useLocation.d.ts +6 -0
  177. package/mobile/bundle/hooks/useRegions.d.ts +6 -0
  178. package/mobile/bundle/model/LogoType.d.ts +5 -0
  179. package/mobile/bundle/services/sitemap/SitemapProps.d.ts +10 -4
  180. package/mobile/bundle/ui-kit/Location/Location.d.ts +19 -0
  181. package/mobile/bundle/ui-kit/Location/SearchBar.d.ts +6 -0
  182. package/mobile/bundle/ui-kit/Logo/Logo.d.ts +2 -0
  183. package/mobile/bundle/ui-kit/Logo/renderImage.d.ts +6 -0
  184. package/mobile/bundle/ui-kit/Logo/renderTitle.d.ts +3 -0
  185. package/mobile/bundle/utils/groupBy.d.ts +1 -0
  186. package/mobile/dist/components/ButtonBlock/ButtonBlock.d.ts +6 -0
  187. package/mobile/dist/components/ButtonBlock/ButtonBlock.js +11 -0
  188. package/mobile/dist/components/ButtonBlock/ButtonBlock.js.map +1 -0
  189. package/mobile/dist/components/ButtonBlock/ButtonBlockContent.d.ts +8 -0
  190. package/mobile/dist/components/ButtonBlock/ButtonBlockContent.js +2 -0
  191. package/mobile/dist/components/ButtonBlock/ButtonBlockContent.js.map +1 -0
  192. package/mobile/dist/components/Calculator/constants.js +1 -1
  193. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.d.ts +5 -0
  194. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js +22 -0
  195. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -0
  196. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +44 -0
  197. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js +2 -0
  198. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js.map +1 -0
  199. package/mobile/dist/components/Header/Header.js +2 -2
  200. package/mobile/dist/components/Header/Header.js.map +1 -1
  201. package/mobile/dist/components/Header/HeaderBurger.js +4 -3
  202. package/mobile/dist/components/Header/HeaderBurger.js.map +1 -1
  203. package/mobile/dist/components/Header/HeaderSecondaryMenu.d.ts +2 -0
  204. package/mobile/dist/components/Header/HeaderSecondaryMenu.js +13 -4
  205. package/mobile/dist/components/Header/HeaderSecondaryMenu.js.map +1 -1
  206. package/mobile/dist/components/Header/HeaderTop.d.ts +2 -0
  207. package/mobile/dist/components/Header/HeaderTop.js +1 -1
  208. package/mobile/dist/components/Header/HeaderTop.js.map +1 -1
  209. package/mobile/dist/components/ProductTile/ProductTile.js +8 -2
  210. package/mobile/dist/components/ProductTile/ProductTile.js.map +1 -1
  211. package/mobile/dist/components/ProductTile/ProductTileContent.d.ts +2 -0
  212. package/mobile/dist/components/Recommendation/RecommendationCard.js +1 -1
  213. package/mobile/dist/components/Recommendation/RecommendationCard.js.map +1 -1
  214. package/mobile/dist/hooks/useCachedAsyncData.d.ts +2 -0
  215. package/mobile/dist/hooks/useCachedAsyncData.js +25 -0
  216. package/mobile/dist/hooks/useCachedAsyncData.js.map +1 -0
  217. package/mobile/dist/hooks/useLocation.d.ts +6 -0
  218. package/mobile/dist/hooks/useLocation.js +26 -0
  219. package/mobile/dist/hooks/useLocation.js.map +1 -0
  220. package/mobile/dist/hooks/useRegions.d.ts +6 -0
  221. package/mobile/dist/hooks/useRegions.js +11 -0
  222. package/mobile/dist/hooks/useRegions.js.map +1 -0
  223. package/mobile/dist/model/LogoType.d.ts +5 -0
  224. package/mobile/dist/model/LogoType.js +2 -0
  225. package/mobile/dist/model/LogoType.js.map +1 -0
  226. package/mobile/dist/services/sitemap/SitemapProps.d.ts +10 -4
  227. package/mobile/dist/ui-kit/Location/Location.d.ts +19 -0
  228. package/mobile/dist/ui-kit/Location/Location.js +44 -0
  229. package/mobile/dist/ui-kit/Location/Location.js.map +1 -0
  230. package/mobile/dist/ui-kit/Location/SearchBar.d.ts +6 -0
  231. package/mobile/dist/ui-kit/Location/SearchBar.js +9 -0
  232. package/mobile/dist/ui-kit/Location/SearchBar.js.map +1 -0
  233. package/mobile/dist/ui-kit/Logo/Logo.d.ts +2 -0
  234. package/mobile/dist/ui-kit/Logo/Logo.js +4 -15
  235. package/mobile/dist/ui-kit/Logo/Logo.js.map +1 -1
  236. package/mobile/dist/ui-kit/Logo/renderImage.d.ts +6 -0
  237. package/mobile/dist/ui-kit/Logo/renderImage.js +20 -0
  238. package/mobile/dist/ui-kit/Logo/renderImage.js.map +1 -0
  239. package/mobile/dist/ui-kit/Logo/renderTitle.d.ts +3 -0
  240. package/mobile/dist/ui-kit/Logo/renderTitle.js +12 -0
  241. package/mobile/dist/ui-kit/Logo/renderTitle.js.map +1 -0
  242. package/mobile/dist/ui-kit/SwipeListControl/SwipeListContainer.js +8 -4
  243. package/mobile/dist/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
  244. package/mobile/dist/utils/groupBy.d.ts +1 -0
  245. package/mobile/dist/utils/groupBy.js +13 -0
  246. package/mobile/dist/utils/groupBy.js.map +1 -0
  247. package/mobile/lib/components/ButtonBlock/ButtonBlock.d.ts +6 -0
  248. package/mobile/lib/components/ButtonBlock/ButtonBlock.js +9 -0
  249. package/mobile/lib/components/ButtonBlock/ButtonBlock.js.map +1 -0
  250. package/mobile/lib/components/ButtonBlock/ButtonBlockContent.d.ts +8 -0
  251. package/mobile/lib/components/ButtonBlock/ButtonBlockContent.js +2 -0
  252. package/mobile/lib/components/ButtonBlock/ButtonBlockContent.js.map +1 -0
  253. package/mobile/lib/components/Calculator/constants.js +1 -1
  254. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.d.ts +5 -0
  255. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js +20 -0
  256. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -0
  257. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +44 -0
  258. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js +2 -0
  259. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js.map +1 -0
  260. package/mobile/lib/components/Header/Header.js +2 -2
  261. package/mobile/lib/components/Header/Header.js.map +1 -1
  262. package/mobile/lib/components/Header/HeaderBurger.js +4 -3
  263. package/mobile/lib/components/Header/HeaderBurger.js.map +1 -1
  264. package/mobile/lib/components/Header/HeaderSecondaryMenu.d.ts +2 -0
  265. package/mobile/lib/components/Header/HeaderSecondaryMenu.js +13 -4
  266. package/mobile/lib/components/Header/HeaderSecondaryMenu.js.map +1 -1
  267. package/mobile/lib/components/Header/HeaderTop.d.ts +2 -0
  268. package/mobile/lib/components/Header/HeaderTop.js +1 -1
  269. package/mobile/lib/components/Header/HeaderTop.js.map +1 -1
  270. package/mobile/lib/components/ProductTile/ProductTile.js +8 -2
  271. package/mobile/lib/components/ProductTile/ProductTile.js.map +1 -1
  272. package/mobile/lib/components/ProductTile/ProductTileContent.d.ts +2 -0
  273. package/mobile/lib/components/Recommendation/RecommendationCard.js +1 -1
  274. package/mobile/lib/components/Recommendation/RecommendationCard.js.map +1 -1
  275. package/mobile/lib/hooks/useCachedAsyncData.d.ts +2 -0
  276. package/mobile/lib/hooks/useCachedAsyncData.js +22 -0
  277. package/mobile/lib/hooks/useCachedAsyncData.js.map +1 -0
  278. package/mobile/lib/hooks/useLocation.d.ts +6 -0
  279. package/mobile/lib/hooks/useLocation.js +23 -0
  280. package/mobile/lib/hooks/useLocation.js.map +1 -0
  281. package/mobile/lib/hooks/useRegions.d.ts +6 -0
  282. package/mobile/lib/hooks/useRegions.js +8 -0
  283. package/mobile/lib/hooks/useRegions.js.map +1 -0
  284. package/mobile/lib/model/LogoType.d.ts +5 -0
  285. package/mobile/lib/model/LogoType.js +2 -0
  286. package/mobile/lib/model/LogoType.js.map +1 -0
  287. package/mobile/lib/services/sitemap/SitemapProps.d.ts +10 -4
  288. package/mobile/lib/ui-kit/Location/Location.d.ts +19 -0
  289. package/mobile/lib/ui-kit/Location/Location.js +42 -0
  290. package/mobile/lib/ui-kit/Location/Location.js.map +1 -0
  291. package/mobile/lib/ui-kit/Location/SearchBar.d.ts +6 -0
  292. package/mobile/lib/ui-kit/Location/SearchBar.js +7 -0
  293. package/mobile/lib/ui-kit/Location/SearchBar.js.map +1 -0
  294. package/mobile/lib/ui-kit/Logo/Logo.d.ts +2 -0
  295. package/mobile/lib/ui-kit/Logo/Logo.js +5 -16
  296. package/mobile/lib/ui-kit/Logo/Logo.js.map +1 -1
  297. package/mobile/lib/ui-kit/Logo/renderImage.d.ts +6 -0
  298. package/mobile/lib/ui-kit/Logo/renderImage.js +17 -0
  299. package/mobile/lib/ui-kit/Logo/renderImage.js.map +1 -0
  300. package/mobile/lib/ui-kit/Logo/renderTitle.d.ts +3 -0
  301. package/mobile/lib/ui-kit/Logo/renderTitle.js +9 -0
  302. package/mobile/lib/ui-kit/Logo/renderTitle.js.map +1 -0
  303. package/mobile/lib/ui-kit/SwipeListControl/SwipeListContainer.js +8 -4
  304. package/mobile/lib/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
  305. package/mobile/lib/utils/groupBy.d.ts +1 -0
  306. package/mobile/lib/utils/groupBy.js +10 -0
  307. package/mobile/lib/utils/groupBy.js.map +1 -0
  308. package/mobile/src/components/ButtonBlock/ButtonBlock.example.json +10 -0
  309. package/mobile/src/components/ButtonBlock/ButtonBlock.tsx +17 -0
  310. package/mobile/src/components/ButtonBlock/ButtonBlock.ui.json +12 -0
  311. package/mobile/src/components/ButtonBlock/ButtonBlockContent.ts +9 -0
  312. package/mobile/src/components/Calculator/constants.ts +1 -1
  313. package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCard.example.json +19 -0
  314. package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCard.tsx +62 -0
  315. package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCard.ui.json +9 -0
  316. package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCardContent.ts +45 -0
  317. package/mobile/src/components/Header/Header.tsx +2 -2
  318. package/mobile/src/components/Header/HeaderBurger.tsx +5 -7
  319. package/mobile/src/components/Header/HeaderSecondaryMenu.tsx +32 -5
  320. package/mobile/src/components/Header/HeaderTop.tsx +4 -2
  321. package/mobile/src/components/MiniGallery/MiniGallery.ui.json +1 -1
  322. package/mobile/src/components/ProductTile/ProductTile.example.json +2 -1
  323. package/mobile/src/components/ProductTile/ProductTile.tsx +34 -18
  324. package/mobile/src/components/ProductTile/ProductTileContent.ts +2 -0
  325. package/mobile/src/components/Recommendation/Recommendation.example.json +6 -5
  326. package/mobile/src/components/Recommendation/Recommendation.ui.json +8 -0
  327. package/mobile/src/components/Recommendation/RecommendationCard.tsx +1 -1
  328. package/mobile/src/hooks/useCachedAsyncData.ts +37 -0
  329. package/mobile/src/hooks/useLocation.ts +48 -0
  330. package/mobile/src/hooks/useRegions.ts +16 -0
  331. package/mobile/src/model/LogoType.ts +6 -0
  332. package/mobile/src/services/sitemap/SitemapProps.ts +11 -4
  333. package/mobile/src/ui-kit/Location/Location.tsx +168 -0
  334. package/mobile/src/ui-kit/Location/SearchBar.tsx +30 -0
  335. package/mobile/src/ui-kit/Logo/Logo.tsx +16 -31
  336. package/mobile/src/ui-kit/Logo/renderImage.tsx +40 -0
  337. package/mobile/src/ui-kit/Logo/renderTitle.tsx +15 -0
  338. package/mobile/src/ui-kit/SwipeListControl/SwipeListContainer.tsx +8 -4
  339. package/mobile/src/utils/groupBy.ts +10 -0
  340. package/package.json +2 -2
  341. package/src/components/Blocks.ts +6 -2
  342. package/src/components/ButtonBlock/ButtonBlock.example.json +10 -0
  343. package/src/components/ButtonBlock/ButtonBlock.fixture.tsx +18 -0
  344. package/src/components/ButtonBlock/ButtonBlock.tsx +17 -0
  345. package/src/components/ButtonBlock/ButtonBlock.ui.json +12 -0
  346. package/src/components/ButtonBlock/ButtonBlockContent.ts +9 -0
  347. package/src/components/Calculator/constants.ts +1 -1
  348. package/src/components/Carousel/Carousel.fixture.tsx +22 -4
  349. package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.example.json +19 -0
  350. package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.fixture.tsx +47 -0
  351. package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.tsx +62 -0
  352. package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.ui.json +9 -0
  353. package/src/components/CarouselRecommendationCard/CarouselRecommendationCardContent.ts +45 -0
  354. package/src/components/Header/Header.mobile.tsx +2 -2
  355. package/src/components/Header/Header.tsx +6 -4
  356. package/src/components/Header/HeaderBurger.tsx +5 -7
  357. package/src/components/Header/HeaderSecondaryMenu.tsx +32 -5
  358. package/src/components/Header/HeaderTop.tsx +4 -2
  359. package/src/components/MiniGallery/MiniGallery.ui.json +1 -1
  360. package/src/components/ProductTile/ProductTile.example.json +2 -1
  361. package/src/components/ProductTile/ProductTile.fixture.tsx +13 -0
  362. package/src/components/ProductTile/ProductTile.tsx +34 -18
  363. package/src/components/ProductTile/ProductTileContent.ts +2 -0
  364. package/src/components/Recommendation/Recommendation.example.json +6 -5
  365. package/src/components/Recommendation/Recommendation.fixture.tsx +11 -10
  366. package/src/components/Recommendation/Recommendation.ui.json +8 -0
  367. package/src/components/Recommendation/RecommendationCard.tsx +1 -1
  368. package/src/hooks/useCachedAsyncData.ts +37 -0
  369. package/src/hooks/useLocation.ts +48 -0
  370. package/src/hooks/useRegions.ts +16 -0
  371. package/src/model/LogoType.ts +6 -0
  372. package/src/services/sitemap/SitemapProps.ts +11 -4
  373. package/src/ui-kit/Location/Location.fixture.tsx +81 -0
  374. package/src/ui-kit/Location/Location.tsx +168 -0
  375. package/src/ui-kit/Location/SearchBar.tsx +30 -0
  376. package/src/ui-kit/Logo/Logo.mobile.tsx +16 -31
  377. package/src/ui-kit/Logo/Logo.tsx +6 -43
  378. package/src/ui-kit/Logo/renderImage.tsx +40 -0
  379. package/src/ui-kit/Logo/renderTitle.tsx +15 -0
  380. package/src/ui-kit/SwipeListControl/SwipeListContainer.tsx +8 -4
  381. package/src/utils/groupBy.ts +10 -0
  382. package/bundle/hooks/useGeolocation.d.ts +0 -1
  383. package/dist/hooks/useGeolocation.d.ts +0 -1
  384. package/dist/hooks/useGeolocation.js +0 -21
  385. package/dist/hooks/useGeolocation.js.map +0 -1
  386. package/lib/hooks/useGeolocation.d.ts +0 -1
  387. package/lib/hooks/useGeolocation.js +0 -18
  388. package/lib/hooks/useGeolocation.js.map +0 -1
  389. package/mobile/bundle/hooks/useGeolocation.d.ts +0 -1
  390. package/mobile/dist/hooks/useGeolocation.d.ts +0 -1
  391. package/mobile/dist/hooks/useGeolocation.js +0 -21
  392. package/mobile/dist/hooks/useGeolocation.js.map +0 -1
  393. package/mobile/lib/hooks/useGeolocation.d.ts +0 -1
  394. package/mobile/lib/hooks/useGeolocation.js +0 -18
  395. package/mobile/lib/hooks/useGeolocation.js.map +0 -1
  396. package/mobile/src/hooks/useGeolocation.ts +0 -22
  397. package/src/hooks/useGeolocation.ts +0 -22
@@ -868,6 +868,11 @@
868
868
 
869
869
  const BusinessBlock = JSX(({ className = '', title, cards, ...rest }) => (jsxs(BlockWrapper, { className: `font-sans bg-white p-12 pb-9 ${className}`, ...rest, children: [jsx(Heading, { headingType: "h3", title: title, className: "text-center mb-8" }), jsx("div", { className: "flex gap-5", children: cards?.length ? cards.map((_, i) => jsx(BusinessCard, { ..._ }, String(i))) : null })] })));
870
870
 
871
+ const ButtonBlock = JSX((props) => {
872
+ const { className, button, ...rest } = props;
873
+ return (jsx(BlockWrapper, { className: className, ...rest, children: button ? renderButton({ button }) : null }));
874
+ });
875
+
871
876
  const useCarouselControls = (props) => {
872
877
  const { itemCount, visibleItemCount, isCyclic } = props;
873
878
  const [activeIndex, setActiveIndex] = useState(0);
@@ -927,7 +932,7 @@
927
932
  maxSum: DEFAULT_MAX_SUM,
928
933
  minMonths: DEFAULT_MIN_MONTHS,
929
934
  maxMonths: DEFAULT_MAX_MONTHS,
930
- rateBottomRange: 10,
935
+ rateBottomRange: 12,
931
936
  rateTopRange: 7,
932
937
  isSalaryClient: true,
933
938
  isStateEmployee: true,
@@ -1439,7 +1444,7 @@
1439
1444
  });
1440
1445
 
1441
1446
  const childStyleMap = ['min-w-[100%]', 'min-w-[50%]', 'min-w-[33.33%]', 'min-w-[25%]'];
1442
- const SwipeListContainer = JSX(({ className = '', containerRef, activeIndex, visibleItemCount, gap = 0, padding = 0, snapAlign = 'snap-center', children, onVisibleItemsChange, onVisibleIndicesChange, }) => {
1447
+ const SwipeListContainer = JSX(({ className = '', containerRef, activeIndex, visibleItemCount = 0, gap = 0, padding = 0, snapAlign = 'snap-center', children, onVisibleItemsChange, onVisibleIndicesChange, }) => {
1443
1448
  const observerOptions = {
1444
1449
  sensitivity: 1,
1445
1450
  rootRef: containerRef,
@@ -1452,14 +1457,18 @@
1452
1457
  onVisibleItemsChange && onVisibleItemsChange(itemsVisibilityList);
1453
1458
  onVisibleIndicesChange && onVisibleIndicesChange(getVisibleIndices(itemsVisibilityList));
1454
1459
  }, [onVisibleItemsChange, onVisibleIndicesChange]);
1455
- return (jsx("div", { className: `box-border overflow-auto flex horizontal-list no-scrollbar ${className}`, style: { ...getContainerStyle(padding), gap: `${gap}px` }, role: "list", ref: containerRef, children: mapChildren((child, idx) => (jsx(SwipeListItem, { className: `${snapAlign} ${visibleItemCount ? childStyleMap[visibleItemCount - 1] : ''}`, style: getContainerStyle(padding / 4), activeIndex: activeIndex, idx: idx, observerOptions: observerOptions, onIntersection: handleIntersection, children: child }, String(idx))))(children) }));
1460
+ const additionPadding = visibleItemCount > 0 ? gap * Number(visibleItemCount) - 1 : 0;
1461
+ return (jsx("div", { className: `box-border overflow-auto flex horizontal-list no-scrollbar ${className}`, style: {
1462
+ ...getContainerStyle(padding, additionPadding),
1463
+ gap: `${gap}px`,
1464
+ }, role: "list", ref: containerRef, children: mapChildren((child, idx) => (jsx(SwipeListItem, { className: `${snapAlign} ${visibleItemCount ? childStyleMap[visibleItemCount - 1] : ''}`, style: getContainerStyle(padding / 4), activeIndex: activeIndex, idx: idx, observerOptions: observerOptions, onIntersection: handleIntersection, children: child }, String(idx))))(children) }));
1456
1465
  });
1457
1466
  // Styles used to compensate outer container padding to get rid of clipping effect
1458
- const getContainerStyle = (padding) => ({
1467
+ const getContainerStyle = (padding, additionalPadding = 0) => ({
1459
1468
  marginLeft: `${-padding}px`,
1460
1469
  marginRight: `${-padding}px`,
1461
1470
  paddingLeft: `${padding}px`,
1462
- paddingRight: `${padding}px`,
1471
+ paddingRight: `${padding + additionalPadding}px`,
1463
1472
  });
1464
1473
  const getVisibleIndices = (itemsVisibilityList) => itemsVisibilityList
1465
1474
  .map((_, i) => [_, i])
@@ -1667,9 +1676,9 @@
1667
1676
  BORDER_STYLE,
1668
1677
  AlignText[align],
1669
1678
  VersionStyleMap[version],
1670
- ].join(' '), role: "listitem", children: [jsxs("div", { className: "flex flex-col h-full", children: [renderImage$2(icon, version), renderCardTitle$1(headlineSmallVersion, title), renderDescription$3(description, title), renderItems$2(items, isDotted, version), renderAdditionalDescription$2(additionalDescription, version)] }), renderButton({ button, buttonClassName: 'mt-6' })] }));
1679
+ ].join(' '), role: "listitem", children: [jsxs("div", { className: "flex flex-col h-full", children: [renderImage$4(icon, version), renderCardTitle$1(headlineSmallVersion, title), renderDescription$3(description, title), renderItems$2(items, isDotted, version), renderAdditionalDescription$2(additionalDescription, version)] }), renderButton({ button, buttonClassName: 'mt-6' })] }));
1671
1680
  });
1672
- const renderImage$2 = (image, version) => (jsxs("div", { className: "flex justify-center", children: [image?.src ? jsx(ImgInner, { className: "mb-5", image: image }) : null, image?.icon ? (jsx(ImgInner, { className: `w-[32px] h-[32px] min-w-[32px] mb-5 rounded-full`, image: getIconWithVersion(image, version), asSVG: true })) : null] }));
1681
+ const renderImage$4 = (image, version) => (jsxs("div", { className: "flex justify-center", children: [image?.src ? jsx(ImgInner, { className: "mb-5", image: image }) : null, image?.icon ? (jsx(ImgInner, { className: `w-[32px] h-[32px] min-w-[32px] mb-5 rounded-full`, image: getIconWithVersion(image, version), asSVG: true })) : null] }));
1673
1682
  const renderCardTitle$1 = (headlineSmallVersion, title) => title ? jsx(Text, { size: HEADLINE_SMALL_VERSION[headlineSmallVersion], children: title }) : null;
1674
1683
  const renderDescription$3 = (description, title) => description ? (jsx("div", { className: title ? 'mt-2' : '', children: jsx(Paragraph, { size: "text-l", children: description }) })) : null;
1675
1684
  const renderAdditionalDescription$2 = (additionalDescription, version = 'primary') => additionalDescription ? (jsx("div", { className: "mt-auto", children: jsx(Text, { size: "text-m", font: "font-light", color: descriptionStyleMap[version], children: additionalDescription }) })) : null;
@@ -1822,7 +1831,7 @@
1822
1831
  return (jsxs("tr", { className: "pb-1 text-h6", children: [jsx("td", { className: "pt-4", children: jsxs("div", { className: "flex items-center", children: [currency ? (jsx(ImgInner, { image: { icon: CURRENCY_ICONS_MAP[currency] }, width: "24", height: "24" })) : null, jsx("span", { className: "ml-2", children: currency })] }) }), jsx("td", { className: "pt-4 pl-11", children: formatCurrency(exchangeCurrencyItem?.saleExchangeRate) }), jsx("td", { className: "pt-4 pl-11", children: formatCurrency(exchangeCurrencyItem?.buyExchangeRate) })] }, currency));
1823
1832
  };
1824
1833
 
1825
- const CurrentLocation = JSX(({ className = '', address }) => (jsxs("div", { className: `flex ${className}`, children: [jsx(ImgInner, { image: { icon: 'GpsIcon' }, width: "24", height: "24", asSVG: true }), jsxs("div", { className: "ml-3", children: [address ? jsx("p", { className: "text-primary-main m-0 mb-1 text-l", children: address }) : null, jsx("p", { className: "text-secondary-text m-0 text-m", children: "\u041A\u0443\u0440\u0441 \u0443\u043A\u0430\u0437\u0430\u043D \u0434\u043B\u044F \u0437\u0430\u0434\u0430\u043D\u043D\u043E\u0433\u043E \u043E\u0444\u0438\u0441\u0430" })] })] })));
1834
+ const CurrentLocation$1 = JSX(({ className = '', address }) => (jsxs("div", { className: `flex ${className}`, children: [jsx(ImgInner, { image: { icon: 'GpsIcon' }, width: "24", height: "24", asSVG: true }), jsxs("div", { className: "ml-3", children: [address ? jsx("p", { className: "text-primary-main m-0 mb-1 text-l", children: address }) : null, jsx("p", { className: "text-secondary-text m-0 text-m", children: "\u041A\u0443\u0440\u0441 \u0443\u043A\u0430\u0437\u0430\u043D \u0434\u043B\u044F \u0437\u0430\u0434\u0430\u043D\u043D\u043E\u0433\u043E \u043E\u0444\u0438\u0441\u0430" })] })] })));
1826
1835
 
1827
1836
  const roundTo = (value, precision = 2) => {
1828
1837
  const factor = 10 ** precision;
@@ -1970,7 +1979,7 @@
1970
1979
  };
1971
1980
 
1972
1981
  const EXCHANGE_RATES_URL = '/api/v1/exchangerates';
1973
- const REGION_URL = '/api/v1/region';
1982
+ const REGION_URL$1 = '/api/v1/region';
1974
1983
  function useFetchExchangeRateData() {
1975
1984
  const { data } = useAsyncData(EXCHANGE_RATES_URL, fetchData);
1976
1985
  return data || {};
@@ -1983,7 +1992,7 @@
1983
1992
  };
1984
1993
  const fetchRegion = async () => {
1985
1994
  try {
1986
- return await fetchJSONUnsafe(REGION_URL, { method: 'GET' });
1995
+ return await fetchJSONUnsafe(REGION_URL$1, { method: 'GET' });
1987
1996
  }
1988
1997
  catch (error) {
1989
1998
  console.log(error);
@@ -2009,7 +2018,7 @@
2009
2018
  currencyRatesBuy.unshift({ currency: { currency: Currency.RUB } });
2010
2019
  const currencyRatesSell = currencyRates.filter((_) => _.saleExchangeRate);
2011
2020
  currencyRatesSell.push({ currency: { currency: Currency.RUB } });
2012
- return (jsx(BlockWrapper, { className: `bg-white text-primary-text font-sans p-9 box-border min-h-80 ${className}`, ...rest, children: jsx(BaseTile, { title: jsx(Heading, { headingType: "h4", title: title, className: "whitespace-pre-wrap text-h4 mb-5" }), children: jsxs("div", { className: "flex", children: [jsxs("div", { className: "mr-14 pt-4", children: [currencyRates ? (jsx(CurrencyTable, { className: "mb-[30px]", exchangeCurrencyItems: currencyRates })) : null, jsx(CurrentLocation, { address: exchangeRates?.address })] }), currencyRates.length && currencyRatesBuy.length && currencyRatesSell.length ? (jsx(ExchangeCurrencyCalculator, { className: "grow", currencyRatesBuy: currencyRatesBuy, currencyRatesSell: currencyRatesSell, button: button })) : null] }) }) }));
2021
+ return (jsx(BlockWrapper, { className: `bg-white text-primary-text font-sans p-9 box-border min-h-80 ${className}`, ...rest, children: jsx(BaseTile, { title: jsx(Heading, { headingType: "h4", title: title, className: "whitespace-pre-wrap text-h4 mb-5" }), children: jsxs("div", { className: "flex", children: [jsxs("div", { className: "mr-14 pt-4", children: [currencyRates ? (jsx(CurrencyTable, { className: "mb-[30px]", exchangeCurrencyItems: currencyRates })) : null, jsx(CurrentLocation$1, { address: exchangeRates?.address })] }), currencyRates.length && currencyRatesBuy.length && currencyRatesSell.length ? (jsx(ExchangeCurrencyCalculator, { className: "grow", currencyRatesBuy: currencyRatesBuy, currencyRatesSell: currencyRatesSell, button: button })) : null] }) }) }));
2013
2022
  });
2014
2023
  const getCurrencyRates = (currencies) => {
2015
2024
  return currencies?.filter((_) => _?.currency?.id === 1 || _?.currency?.id === 2) || [];
@@ -2030,20 +2039,24 @@
2030
2039
  'bg-white': 'text-primary-main',
2031
2040
  transparent: 'text-white',
2032
2041
  };
2042
+ const renderImage$3 = (bgColor, image, size) => {
2043
+ return image?.src ? (jsx(ImgInner, { image: image, className: SVG_COLOR[bgColor], width: size?.width, height: size?.height, asSVG: true })) : (jsx(ImgInner, { image: {
2044
+ icon: image?.icon || 'LogoIcon',
2045
+ iconVersion: ICON_VERSION_MAP[bgColor],
2046
+ }, className: SVG_COLOR[bgColor], width: size?.width, height: size?.height, asSVG: true }));
2047
+ };
2048
+
2033
2049
  const TEXT_COLOR = {
2034
2050
  'bg-white': 'text-primary-text',
2035
2051
  transparent: 'text-white',
2036
2052
  };
2053
+ const renderTitle$2 = (title, bgColor, className) => {
2054
+ return (jsx("span", { className: `${TEXT_COLOR[bgColor]} ml-2.5 font-medium ${className || ''}`, children: title || 'Россельхозбанк' }));
2055
+ };
2056
+
2037
2057
  const Logo = JSX(({ className = '', href, logo, children = logo?.title, targetBlank, bgColor = 'bg-white', showTitle = true, }) => {
2038
- return (jsxs("a", { className: `inline-flex items-center font-sans no-underline ${className}`, href: href || '/', target: targetBlank ? '_blank' : '_self', "aria-label": logo?.title || 'Россельхозбанк', children: [logo?.image?.src ? (jsx(ImgInner, { image: logo.image, className: SVG_COLOR[bgColor], width: "40", height: "45", asSVG: true })) : (jsx(ImgInner, { image: {
2039
- icon: logo?.image?.icon || 'LogoIcon',
2040
- iconVersion: ICON_VERSION_MAP[bgColor],
2041
- }, className: `${SVG_COLOR[bgColor]} w-10`, width: "40", height: "45", asSVG: true })), showTitle ? renderTitle$2(children, bgColor, logo?.title) : null] }));
2058
+ return (jsxs("a", { className: `inline-flex items-center font-sans no-underline ${className}`, href: href || '/', target: targetBlank ? '_blank' : '_self', "aria-label": logo?.title || 'Россельхозбанк', children: [renderImage$3(bgColor, logo?.image, { width: '40', height: '45' }), showTitle ? renderTitle$2(children || logo?.title, bgColor) : null] }));
2042
2059
  });
2043
- const renderTitle$2 = (children, bgColor, title) => {
2044
- const text = children || title || 'Россельхозбанк';
2045
- return jsx("span", { className: `${TEXT_COLOR[bgColor]} font-medium ml-2.5`, children: text });
2046
- };
2047
2060
 
2048
2061
  const useSearch = () => {
2049
2062
  const [term, setTerm] = useState('');
@@ -2069,7 +2082,7 @@
2069
2082
  }, children: jsx("div", { className: "text-s px-9 py-2.5", children: "\u041D\u0430\u0439\u0442\u0438" }) }))] }));
2070
2083
  });
2071
2084
 
2072
- const SearchBar = JSX((props) => jsx(SearchBarInner, { ...props }));
2085
+ const SearchBar$1 = JSX((props) => jsx(SearchBarInner, { ...props }));
2073
2086
 
2074
2087
  const Contacts = JSX(({ className = '', items, hasButton }) => (jsxs("div", { className: className, children: [items?.length ? items.map(renderContact) : null, hasButton ? (jsx(Button, { version: "primary", className: "mb-6 w-full", href: "/", target: "_blank", ariaLabel: "\u041E\u0431\u0440\u0430\u0442\u043D\u0430\u044F \u0441\u0432\u044F\u0437\u044C", text: "\u041E\u0431\u0440\u0430\u0442\u043D\u0430\u044F \u0441\u0432\u044F\u0437\u044C" })) : null] })));
2075
2088
  const renderContact = (item, index) => {
@@ -2174,7 +2187,7 @@
2174
2187
  const Footer = JSX(({ className, ...rest }) => {
2175
2188
  const fallback = rest.options?.page?.fallback;
2176
2189
  const { documents, relatedEnterprises, contacts, socialMedia, mobileApps, topItems, logo } = useSWRResource(projectSettings.FOOTER || 'footer', fallback);
2177
- return (jsxs(BlockWrapper, { tag: "footer", className: `p-9 bg-white font-sans ${className || ''}`, ...rest, children: [jsxs("div", { className: "flex items-stretch gap-[54px] pb-[30px] xl:gap-8", children: [jsx(Logo, { className: LEFT_COL_WIDTH_FULL_HD, logo: logo }), jsx(SearchBar, { className: "grow" })] }), jsxs("div", { className: "flex items-stretch gap-[54px] xl:gap-8", children: [jsxs("div", { className: `${LEFT_COL_WIDTH_FULL_HD} flex flex-col shrink-0 overflow-hidden`, children: [jsx(Contacts, { items: contacts, hasButton: true }), jsx(SocialMedia, { media: socialMedia, children: "\u0421\u043E\u0446\u0441\u0435\u0442\u0438" }), jsx(SocialMedia, { className: "mt-6", media: mobileApps, children: "\u041C\u043E\u0431\u0438\u043B\u044C\u043D\u043E\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435" })] }), jsx(Sitemap, { className: "pt-[3px]", items: topItems, fallback: fallback })] }), jsx(HorizontalNavigation, { className: "mt-[98px]", links: relatedEnterprises }), jsx(TextInformation, { links: documents })] }));
2190
+ return (jsxs(BlockWrapper, { tag: "footer", className: `p-9 bg-white font-sans ${className || ''}`, ...rest, children: [jsxs("div", { className: "flex items-stretch gap-[54px] pb-[30px] xl:gap-8", children: [jsx(Logo, { className: LEFT_COL_WIDTH_FULL_HD, logo: logo }), jsx(SearchBar$1, { className: "grow" })] }), jsxs("div", { className: "flex items-stretch gap-[54px] xl:gap-8", children: [jsxs("div", { className: `${LEFT_COL_WIDTH_FULL_HD} flex flex-col shrink-0 overflow-hidden`, children: [jsx(Contacts, { items: contacts, hasButton: true }), jsx(SocialMedia, { media: socialMedia, children: "\u0421\u043E\u0446\u0441\u0435\u0442\u0438" }), jsx(SocialMedia, { className: "mt-6", media: mobileApps, children: "\u041C\u043E\u0431\u0438\u043B\u044C\u043D\u043E\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435" })] }), jsx(Sitemap, { className: "pt-[3px]", items: topItems, fallback: fallback })] }), jsx(HorizontalNavigation, { className: "mt-[98px]", links: relatedEnterprises }), jsx(TextInformation, { links: documents })] }));
2178
2191
  });
2179
2192
 
2180
2193
  const galleryLengthForScrollMap = {
@@ -2190,13 +2203,13 @@
2190
2203
  mini: 276,
2191
2204
  };
2192
2205
 
2193
- const GalleryCardInner = JSX(({ title, headlineSmallVersion = 'H6', description, additionalDescription, icon, items, button, version, isFullWidth = true, isDotted = true, align = 'center', }) => (jsxs("div", { className: `h-full flex flex-col justify-between ${AlignText[align]}`, children: [jsxs("div", { className: "flex flex-col h-full", children: [renderImage$1(icon, version), renderCardTitle(headlineSmallVersion, title), renderDescription$2(description, title), items?.length ? renderItems$1(items, isDotted, version) : null, renderAdditionalDescription$1(additionalDescription, version)] }), button?.text
2206
+ const GalleryCardInner = JSX(({ title, headlineSmallVersion = 'H6', description, additionalDescription, icon, items, button, version, isFullWidth = true, isDotted = true, align = 'center', }) => (jsxs("div", { className: `h-full flex flex-col justify-between ${AlignText[align]}`, children: [jsxs("div", { className: "flex flex-col h-full", children: [renderImage$2(icon, version), renderCardTitle(headlineSmallVersion, title), renderDescription$2(description, title), items?.length ? renderItems$1(items, isDotted, version) : null, renderAdditionalDescription$1(additionalDescription, version)] }), button?.text
2194
2207
  ? renderButton({
2195
2208
  button,
2196
2209
  buttonClassName: `mt-6 ${isFullWidth ? '' : 'self-center'}`,
2197
2210
  })
2198
2211
  : null] })));
2199
- const renderImage$1 = (image, version) => (jsxs("div", { className: "flex justify-center", children: [image?.src ? jsx(ImgInner, { className: "mb-5", image: image }) : null, image?.icon ? (jsx(ImgInner, { className: `w-8 h-8 min-w-8 mb-5 rounded-full`, image: getIconWithVersion(image, version), asSVG: true })) : null] }));
2212
+ const renderImage$2 = (image, version) => (jsxs("div", { className: "flex justify-center", children: [image?.src ? jsx(ImgInner, { className: "mb-5", image: image }) : null, image?.icon ? (jsx(ImgInner, { className: `w-8 h-8 min-w-8 mb-5 rounded-full`, image: getIconWithVersion(image, version), asSVG: true })) : null] }));
2200
2213
  const renderCardTitle = (headlineSmallVersion, title) => title ? jsx("div", { className: HEADLINE_SMALL_VERSION[headlineSmallVersion], children: title }) : null;
2201
2214
  const renderDescription$2 = (description, title) => description ? jsx("div", { className: `text-l ${title ? 'mt-2' : ''}`, children: description }) : null;
2202
2215
  const renderAdditionalDescription$1 = (additionalDescription, version) => additionalDescription ? (jsx("div", { className: `text-m-light mt-auto ${VersionAdditionalStyleMap[version ?? 'primary']}`, children: additionalDescription })) : null;
@@ -2273,22 +2286,99 @@
2273
2286
  return `${active ? 'text-primary-main' : nonActiveAtoms} ${TEXT_CLASSES$2}`;
2274
2287
  };
2275
2288
 
2276
- const DaData = DaDataAPI('https://10.80.4.9');
2277
- function useGeolocation(defaultLocation) {
2278
- const [city, setCity] = useState(defaultLocation);
2289
+ const STORAGE_DEFAULT_TTL = 86400000; // 24 * 60 * 60 * 1000
2290
+ function useCachedAsyncData(key, fetcher, storage = globalThis?.localStorage) {
2291
+ const cachedFetcher = useCallback(async (...args) => {
2292
+ const storageKey = `async:${key}`;
2293
+ const storageData = storage.getItem(storageKey);
2294
+ const cachedData = getParsedData(storageData);
2295
+ if (cachedData) {
2296
+ return cachedData;
2297
+ }
2298
+ const data = await fetcher(...args);
2299
+ storage.setItem(storageKey, JSON.stringify({ data, timestamp: Date.now() }));
2300
+ return data;
2301
+ }, [key, fetcher]);
2302
+ return useAsyncData(key, cachedFetcher);
2303
+ }
2304
+ function getParsedData(storageData) {
2305
+ const { data = null, timestamp = null } = storageData ? JSON.parse(storageData) : {};
2306
+ return data && Date.now() - timestamp < STORAGE_DEFAULT_TTL ? data : undefined;
2307
+ }
2308
+
2309
+ const REGION_URL = '/api/v1/region';
2310
+ const localStorageLocation = globalThis?.localStorage.getItem('location');
2311
+ const currentLocation = localStorageLocation
2312
+ ? JSON.parse(localStorageLocation)
2313
+ : null;
2314
+ function useLocation(defaultLocation) {
2315
+ const [location, setLocation] = useState(currentLocation?.region ?? { name: defaultLocation });
2316
+ const { data } = useCachedAsyncData(REGION_URL, fetchJSONUnsafe);
2279
2317
  useEffect(() => {
2280
- setCity(globalThis?.localStorage.getItem('location') || defaultLocation);
2281
- }, [defaultLocation]);
2282
- const getCity = useCallback(() => {
2283
- DaData.getFetcherAddress().then((_) => {
2284
- const location = _ || defaultLocation;
2285
- globalThis?.localStorage.setItem('location', location);
2286
- setCity(location);
2287
- });
2288
- }, [defaultLocation]);
2289
- return [city, getCity];
2318
+ setLocation(currentLocation?.region && currentLocation?.manual
2319
+ ? currentLocation.region
2320
+ : data || { name: defaultLocation });
2321
+ }, [data]);
2322
+ const onChangeLocation = useCallback((region) => {
2323
+ globalThis?.localStorage.setItem('location', JSON.stringify({ manual: true, region }));
2324
+ setLocation(region);
2325
+ }, [setLocation]);
2326
+ return [location, onChangeLocation];
2327
+ }
2328
+
2329
+ const REGIONS_URL$1 = '/api/v1/regions';
2330
+ function useRegions() {
2331
+ const { data } = useAsyncData(REGIONS_URL$1, fetchJSONUnsafe);
2332
+ return data || [];
2290
2333
  }
2291
2334
 
2335
+ const groupBy = (list, keyGetter) => {
2336
+ const map = new Map();
2337
+ list.forEach((item) => {
2338
+ const key = keyGetter(item);
2339
+ const collection = map.get(key);
2340
+ map.set(key, [...(collection || []), item]);
2341
+ });
2342
+ return map;
2343
+ };
2344
+
2345
+ const SearchBar = JSX(({ className, searchTerm, onSearch }) => {
2346
+ return (jsxs("form", { className: `font-sans relative ${className}`, children: [jsx("div", { className: "absolute rounded h-full flex items-center justify-center pl-4 max-w-[170px] gap-3.5 pointer-events-none", children: searchTerm ? null : (jsx("label", { htmlFor: "search-bar-input", className: `text-secondary-text `, children: "\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0444\u0438\u043B\u0438\u0430\u043B\u0430\u043C" })) }), jsx("input", { id: "search-bar-input", className: `h-12 pl-4 w-full peer text-l text-black border border-solid rounded-md box-border
2347
+ outline-none border-main-stroke hover:border-primary-hover active:border-primary-text focus:border-primary-text`, value: searchTerm, onChange: (e) => onSearch(e.target.value), type: "text", name: "location-search-bar-input" })] }));
2348
+ });
2349
+
2350
+ const SEARCH_TERM_MIN_LENGTH = 3;
2351
+ const Location = JSX(({ currentLocation, onChangeLocation, close, foreignOffices }) => {
2352
+ const { term, setTerm } = useSearch();
2353
+ const handleSearch = useCallback((_) => setTerm(_), []);
2354
+ const regions = cleanUpRegions(useRegions()).sort((a, b) => a.name.localeCompare(b.name));
2355
+ const regionsGroupByLetter = groupBy(regions, regionFirstLetter);
2356
+ return (jsxs("div", { className: "absolute h-full w-full inset-0 bg-white text-l-light z-50", children: [jsx(CloseButton, { close: close }), jsxs("div", { className: "container py-12", children: [jsx(CurrentLocation, { currentLocation: currentLocation }), jsx(SearchBar, { onSearch: handleSearch, searchTerm: term, className: "mb-7" }), term && term.length >= SEARCH_TERM_MIN_LENGTH ? (jsx("div", { children: regions
2357
+ .filter((region) => region.name?.startsWith(term))
2358
+ .map(renderRegion({ onChangeLocation, close })) })) : (jsx("div", { className: "columns-5", children: Array.from(regionsGroupByLetter.entries()).map(renderRegionGroup({ onChangeLocation, close })) })), jsx(ForeignOffices, { foreignOffices: foreignOffices })] })] }));
2359
+ });
2360
+ const regionFirstLetter = (region) => region.name?.charAt(0) || '';
2361
+ const cleanUpRegions = (regions) => regions.map((region) => ({
2362
+ ...region,
2363
+ name: region.name?.replace(/республика|область|край'/gi, '').trim() || '',
2364
+ }));
2365
+ const CurrentLocation = JSX(({ currentLocation }) => currentLocation ? (jsxs("div", { className: "mb-4", children: [jsx(Text, { size: "text-l", font: "font-light", children: "\u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u044B\u0431\u0440\u0430\u043D:\u00A0" }), jsx("button", { className: "cursor-pointer", onClick: close, children: jsx(Text, { color: "text-green", children: currentLocation.name }) })] })) : null);
2366
+ const CloseButton = JSX(({ close }) => (jsx("button", { className: "visible peer-placeholder-shown:invisible absolute top-6 right-6 w-6 h-6 p-1 bg-transparent cursor-pointer border-none", onClick: (e) => {
2367
+ e.preventDefault();
2368
+ close && close();
2369
+ }, children: jsx(ImgInner, { image: "CloseIcon", width: "24", height: "24" }) })));
2370
+ const renderRegionGroup = ({ onChangeLocation, close }) => ([letter, regions]) => (jsxs("div", { className: "break-inside-avoid mb-7 w-[224px]", children: [jsx("div", { className: "mb-2.5", children: jsx(Text, { size: "text-h6", children: letter }) }), regions.map(renderRegion({ onChangeLocation, close }))] }, letter));
2371
+ const renderRegion = ({ onChangeLocation, close }) => (region) => (jsx("div", { className: "mb-1", children: jsx("button", { className: "cursor-pointer hover:text-primary-hover", onClick: () => {
2372
+ onChangeLocation && onChangeLocation(region);
2373
+ close && close();
2374
+ }, children: region.name }) }, region.id));
2375
+ const ForeignOffices = JSX(({ foreignOffices }) => foreignOffices?.length ? (jsxs("div", { className: "border-t border-main-divider mt-7 pt-7", children: [jsx("div", { className: "mb-4", children: jsx(Text, { size: "text-m-light", color: "text-secondary-text", children: "\u041F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u0435\u043B\u044C\u0441\u0442\u0432\u0430 \u0437\u0430 \u0440\u0443\u0431\u0435\u0436\u043E\u043C:" }) }), jsx("div", { className: "flex gap-10", children: foreignOffices.map((office, i) => (jsx(ForeignOffice, { ...office }, String(i)))) })] })) : null);
2376
+ const ForeignOffice = JSX(({ icon, ...rest }) => {
2377
+ const link = useLink();
2378
+ const { text, target, href, onClick } = link(rest);
2379
+ return (jsxs("div", { className: "flex gap-x-3", children: [jsx(ImgInner, { image: icon }), jsx("a", { className: "hover:text-primary-hover", href: href, target: target, onClick: onClick, children: text })] }));
2380
+ });
2381
+
2292
2382
  const HeaderSecondaryMenuButton = JSX(({ className = '', children, ariaLabel }) => (jsx("button", { type: "button", className: `border-0 p-0 w-6 h-6 flex items-center bg-inherit cursor-pointer ${className}`, disabled: true, "aria-label": ariaLabel, children: children })));
2293
2383
 
2294
2384
  const COLORS_MAP = {
@@ -2303,9 +2393,16 @@
2303
2393
  'bg-white': 'black',
2304
2394
  transparent: 'white',
2305
2395
  };
2306
- const HeaderSecondaryMenu = JSX(({ className, officesLink, defaultLocation = 'Москва', bgColor = 'bg-white' }) => {
2307
- const [city, getCity] = useGeolocation(defaultLocation);
2308
- return (jsxs("div", { className: `flex items-center ${className || ''}`, children: [jsx(TopItem, { className: "mr-5", flat: true, href: "#", text: city, ariaLabel: "\u041C\u0435\u0441\u0442\u043E\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435", onClick: getCity, bgColor: bgColor }), officesLink ? (jsx(TopItem, { className: "mr-7", flat: true, href: officesLink, text: "\u041E\u0444\u0438\u0441\u044B \u0438 \u0431\u0430\u043D\u043A\u043E\u043C\u0430\u0442\u044B", ariaLabel: "\u0421\u043F\u0438\u0441\u043E\u043A \u0432\u0441\u0435\u0445 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u043E\u0444\u0438\u0441\u043E\u0432 \u0438 \u0431\u0430\u043D\u043A\u043E\u043C\u0430\u0442\u043E\u0432", bgColor: bgColor })) : null, jsx(HeaderSecondaryMenuButton, { className: `mr-5 group ${COLORS_MAP[bgColor]}`, ariaLabel: "\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0441\u0430\u0439\u0442\u0443", children: jsx(ImgInner, { image: { icon: 'LoupeIcon', iconVersion: LINKS_ICON_VERSION_MAP[bgColor] }, className: "h-full pointer-events-none", imageClassName: "group-hover:text-primary-hover group-hover:invert-0 pointer-events-none", asSVG: true }) }), jsx(HeaderSecondaryMenuButton, { className: `${LINKS_COLORS_MAP[bgColor]} group min-w-8 min-h-8`, ariaLabel: "\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0441\u0441\u044B\u043B\u043A\u0438", children: jsx(ImgInner, { image: { icon: 'GridIcon', iconVersion: LINKS_ICON_VERSION_MAP[bgColor] }, className: "h-full bg-main-divider/20 rounded-full pointer-events-none", imageClassName: "group-hover:text-primary-hover group-hover:invert-0", asSVG: true }) })] }));
2396
+ const HeaderSecondaryMenu = JSX(({ className, officesLink, defaultLocation = 'Москва', foreignOffices, bgColor = 'bg-white', }) => {
2397
+ const [isShowLocationModal, setShowLocationModal] = useState(false);
2398
+ const [location, onChangeLocation] = useLocation(defaultLocation);
2399
+ const showLocationModal = () => {
2400
+ setShowLocationModal(true);
2401
+ };
2402
+ const hideLocationModal = () => {
2403
+ setShowLocationModal(false);
2404
+ };
2405
+ return (jsxs("div", { className: `flex items-center ${className || ''}`, children: [jsx(TopItem, { className: "mr-5", flat: true, href: "#", text: location.name, ariaLabel: "\u041C\u0435\u0441\u0442\u043E\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435", onClick: showLocationModal, bgColor: bgColor }), officesLink ? (jsx(TopItem, { className: "mr-7", flat: true, href: officesLink, text: "\u041E\u0444\u0438\u0441\u044B \u0438 \u0431\u0430\u043D\u043A\u043E\u043C\u0430\u0442\u044B", ariaLabel: "\u0421\u043F\u0438\u0441\u043E\u043A \u0432\u0441\u0435\u0445 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u043E\u0444\u0438\u0441\u043E\u0432 \u0438 \u0431\u0430\u043D\u043A\u043E\u043C\u0430\u0442\u043E\u0432", bgColor: bgColor })) : null, jsx(HeaderSecondaryMenuButton, { className: `mr-5 group ${COLORS_MAP[bgColor]}`, ariaLabel: "\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0441\u0430\u0439\u0442\u0443", children: jsx(ImgInner, { image: { icon: 'LoupeIcon', iconVersion: LINKS_ICON_VERSION_MAP[bgColor] }, className: "h-full pointer-events-none", imageClassName: "group-hover:text-primary-hover group-hover:invert-0 pointer-events-none", asSVG: true }) }), jsx(HeaderSecondaryMenuButton, { className: `${LINKS_COLORS_MAP[bgColor]} group min-w-8 min-h-8`, ariaLabel: "\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0441\u0441\u044B\u043B\u043A\u0438", children: jsx(ImgInner, { image: { icon: 'GridIcon', iconVersion: LINKS_ICON_VERSION_MAP[bgColor] }, className: "h-full bg-main-divider/20 rounded-full pointer-events-none", imageClassName: "group-hover:text-primary-hover group-hover:invert-0", asSVG: true }) }), isShowLocationModal ? (jsx(Location, { currentLocation: location, foreignOffices: foreignOffices, onChangeLocation: onChangeLocation, close: hideLocationModal })) : null] }));
2309
2406
  });
2310
2407
 
2311
2408
  const findActiveSubItem = (router) => (items = []) => {
@@ -2386,10 +2483,10 @@
2386
2483
  };
2387
2484
  const Header = JSX(({ bgColor = 'bg-white', className = '', showSubMenu = true, ...rest }) => {
2388
2485
  const router = useRouter();
2389
- const { topItems, logo, defaultLocation, officesLink } = useSWRResource(projectSettings.SITEMAP || 'sitemap', rest.options?.page?.fallback);
2486
+ const { topItems, logo, defaultLocation, foreignOffices, officesLink } = useSWRResource(projectSettings.SITEMAP || 'sitemap', rest.options?.page?.fallback);
2390
2487
  const activeTopItem = showSubMenu ? getActiveItem(topItems, router) : null;
2391
2488
  const topMenu = topItems?.map((_, i) => (jsx(TopItem, { active: _ === activeTopItem, "aria-label": _.text, bgColor: bgColor, ..._ }, String(i))));
2392
- return (jsx(BlockWrapper, { tag: "header", className: `pt-6 px-20 ${bgColor} ${className} ${showSubMenu && activeTopItem?.items?.length ? 'pb-4' : 'pb-5'}`, ...rest, children: jsxs("div", { className: "container", children: [jsxs("div", { className: "flex items-center", children: [jsx(Logo, { className: "mr-8", bgColor: bgColor, logo: logo }), topMenu, jsx(HeaderSecondaryMenu, { className: "ml-auto", defaultLocation: defaultLocation, officesLink: officesLink, bgColor: bgColor })] }), jsx("div", { className: `mt-6 h-px ${BORDER_COLORS[bgColor]}` }), showSubMenu && activeTopItem?.items?.length ? (jsx(HeaderSubMenu, { subItems: activeTopItem.items, bgColor: bgColor })) : null] }) }));
2489
+ return (jsx(BlockWrapper, { tag: "header", className: `pt-6 px-20 ${bgColor} ${className} ${showSubMenu && activeTopItem?.items?.length ? 'pb-4' : 'pb-5'}`, ...rest, children: jsxs("div", { className: "container", children: [jsxs("div", { className: "flex items-center", children: [jsx(Logo, { className: "mr-8", bgColor: bgColor, logo: logo }), topMenu, jsx(HeaderSecondaryMenu, { className: "ml-auto", foreignOffices: foreignOffices, defaultLocation: defaultLocation, officesLink: officesLink, bgColor: bgColor })] }), jsx("div", { className: `mt-6 h-px ${BORDER_COLORS[bgColor]}` }), showSubMenu && activeTopItem?.items?.length ? (jsx(HeaderSubMenu, { subItems: activeTopItem.items, bgColor: bgColor })) : null] }) }));
2393
2490
  });
2394
2491
  const getActiveItem = (topItems, router) => {
2395
2492
  const [firstPortal] = topItems || [];
@@ -3182,8 +3279,8 @@
3182
3279
  `, children: jsxs("div", { className: "border-0 px-6", children: [jsx("div", { className: `last:pb-0 ${btnTitleClassName}`, children: slide?.title }), jsx("div", { className: `text-secondary-text ${btnDescClassName}`, children: slide?.description })] }) }, String(i)));
3183
3280
  }
3184
3281
 
3185
- const ProductTile = JSX(({ className = '', title, headlineVersion = 'S', description, additionalDescription, benefits = [], buttons, image, version = 'primary', ...rest }) => (jsxs(BlockWrapper, { className: `overflow-hidden font-sans p-9 box-border relative justify-between grid min-h-[364px]
3186
- ${className} ${VersionStyleMap[version]} ${getTileRightPadding(className)}`, ...rest, children: [jsx(Headline, { className: `!p-0 !bg-transparent z-10 ${title || description ? 'mb-3.5' : ''}`, as: "h2", title: title, description: description, headlineVersion: headlineVersion, bgColorHeadline: version, align: "left", ...rest }), renderBenefits(benefits, version, image), additionalDescription ? renderAdditionalDescription(additionalDescription, image) : null, buttons?.length ? (jsx(ButtonSection, { buttons: buttons, className: "flex self-end mt-5 gap-4 z-10 text-l" })) : null, image?.src ? jsx(ImgInner, { className: "absolute right-0 bottom-0", image: image }) : null] })));
3282
+ const ProductTile = JSX(({ className = '', title, headlineVersion = 'S', description, additionalDescription, benefits = [], buttons, image, isImageOnRightSide = true, version = 'primary', ...rest }) => (jsxs(BlockWrapper, { className: `overflow-hidden font-sans p-9 box-border relative min-h-[364px]
3283
+ ${VersionStyleMap[version]} ${getTileRightPadding(className)} ${className}`, ...rest, children: [jsxs("div", { className: `flex flex-col ${isImageOnRightSide ? '' : 'items-end'}`, children: [jsx(Headline, { className: `!p-0 !bg-transparent z-10 ${title || description ? 'mb-3.5' : ''}`, as: "h2", title: title, description: description, headlineVersion: headlineVersion, bgColorHeadline: version, align: "left", ...rest }), renderBenefits(benefits, version, image), additionalDescription ? renderAdditionalDescription(additionalDescription, image) : null, buttons?.length ? (jsx(ButtonSection, { buttons: buttons, className: "mt-5 gap-4 z-10 text-l" })) : null] }), renderImage$1(image, isImageOnRightSide)] })));
3187
3284
  function renderBenefits(benefits, version, image) {
3188
3285
  // picture width = 242px. Text can overlay picture 20px deep. Outer paddings_x = 36px. 242-36-20 = 186px
3189
3286
  const BENEFITS_WIDTH = image?.src ? 'max-w-[calc(100%-186px)]' : '100%';
@@ -3202,6 +3299,12 @@
3202
3299
  const DESCRIPTION_WIDTH = image?.src ? 'max-w-[calc(100%-186px)]' : '100%';
3203
3300
  return (jsx("div", { className: `text-m-light mt-2.5 z-10 ${DESCRIPTION_WIDTH}`, children: additionalDescription }));
3204
3301
  }
3302
+ function renderImage$1(image, isImageOnRightSide) {
3303
+ if (!image?.src) {
3304
+ return null;
3305
+ }
3306
+ return (jsx(ImgInner, { className: `absolute ${isImageOnRightSide ? 'right-0' : 'left-0'} bottom-0`, image: image }));
3307
+ }
3205
3308
 
3206
3309
  const PromoTile = JSX(({ className = '', title = 'Акции и спецпредложения', date, description, buttons = [], version = 'primary', ...rest }) => (jsx(BlockWrapper, { className: `bg-white text-primary-text font-sans p-9 box-border ${className} ${VersionStyleMap[version]} ${getTileRightPadding(className)} ${getTileMinHeight(className)} `, ...rest, children: jsx(BaseTile, { title: title ? (jsx(Headline, { title: title, className: `!p-0 max-w-[600px]`, headlineVersion: getTileHeadingType(className), bgColorHeadline: version, align: "left", as: "h2", ...rest })) : null, buttons: buttons?.length ? jsx(ButtonSection, { buttons: buttons, className: "flex gap-3" }) : null, children: jsxs("div", { className: "mt-1.5", children: [date ? jsx("div", { className: "text-s mb-2", children: formatDate(date) }) : null, jsx("div", { className: "text-l", children: description })] }) }) })));
3207
3310
  function formatDate(date) {
@@ -3214,10 +3317,19 @@
3214
3317
  return dateObj.toLocaleString('ru-RU', dateFormat).replace('г.', '');
3215
3318
  }
3216
3319
 
3320
+ const CarouselRecommendationCard = JSX(({ button, className = '', description, image, items = [], socialMedia = [], title, version = 'primary', ...rest }) => {
3321
+ const tileTitle = title ? (jsx(Heading, { headingType: "h5", as: "h3", className: "mb-3.5 z-10", title: title })) : null;
3322
+ const tileImage = image?.src ? (jsx(ImgInner, { className: "absolute bottom-0 right-0 m-0", image: image })) : null;
3323
+ return (jsx(BlockWrapper, { className: `relative text-left border border-solid box-border p-7 min-w-[524px]
3324
+ ${BorderVersionStyleMap[version]}
3325
+ ${VersionStyleMap[version]}
3326
+ ${className}`, ...rest, children: jsx(BaseTile, { className: "flex justify-between", title: tileTitle, image: tileImage, children: jsxs("div", { className: "h-full flex flex-col justify-between", children: [description ? jsx("span", { className: "mb-2", children: description }) : null, items.length ? (jsx(List, { className: "text-xl-light flex flex-col flex-1 gap-2 max-w-[236px]", items: items, version: version })) : null, socialMedia.length ? (jsx(SocialMedia, { className: "pt-10 pb-0", media: socialMedia, version: version })) : null, button?.text ? jsx("div", { className: "pt-2 mt-16", children: renderButton({ button }) }) : null] }) }) }));
3327
+ });
3328
+
3217
3329
  const RecommendationCard = JSX(({ className = '', title, description, items, image, version, socialMedia, button }) => {
3218
3330
  const tileTitle = title ? (jsx(Heading, { headingType: "h5", as: "h3", className: "mb-3.5 z-10", title: title })) : null;
3219
3331
  const tileImage = image?.src ? (jsx(ImgInner, { className: "absolute bottom-0 right-0 m-0", image: image })) : null;
3220
- return (jsx("section", { className: `relative overflow-hidden text-left border border-solid box-border p-7 min-w-[524px] min-h-[218px] ${className}`, role: "listitem", children: jsx(BaseTile, { className: "flex justify-between", title: tileTitle, image: tileImage, children: jsxs("div", { className: "h-full flex flex-col justify-between", children: [description ? jsx("span", { className: "mb-2", children: description }) : null, items?.length ? (jsx(List, { className: "text-xl-light flex flex-col flex-1 gap-2 max-w-[236px]", items: items, version: version })) : null, socialMedia ? (jsx(SocialMedia, { className: "pt-10 pb-0", media: socialMedia, version: version })) : null, button?.text ? (jsx("div", { className: "pt-2", children: renderButton({ button, buttonClassName: 'mt-16' }) })) : null] }) }) }));
3332
+ return (jsx("section", { className: `relative overflow-hidden text-left border border-solid box-border p-7 min-w-[524px] min-h-[218px] ${className}`, role: "listitem", children: jsx(BaseTile, { className: "flex justify-between", title: tileTitle, image: tileImage, children: jsxs("div", { className: "h-full flex flex-col justify-between", children: [description ? jsx("span", { className: "mb-2", children: description }) : null, items?.length ? (jsx(List, { className: "text-xl-light flex flex-col flex-1 gap-2 max-w-[236px]", items: items, version: version })) : null, socialMedia ? (jsx(SocialMedia, { className: "pt-10 pb-0", media: socialMedia, version: version })) : null, button?.text ? (jsx("div", { className: "pt-2", children: renderButton({ button, buttonClassName: 'mt-16 px-5' }) })) : null] }) }) }));
3221
3333
  });
3222
3334
 
3223
3335
  const BLUR_BLOCK_CLASSES = 'absolute top-0 bottom-0 w-[84px]';
@@ -3803,6 +3915,7 @@
3803
3915
  AccordionItem,
3804
3916
  BenefitsBlock,
3805
3917
  BusinessBlock,
3918
+ ButtonBlock,
3806
3919
  Bonus,
3807
3920
  BonusBenefitsBlock,
3808
3921
  CardTransfer,
@@ -3838,11 +3951,10 @@
3838
3951
  ProductGallery,
3839
3952
  ProductTile,
3840
3953
  PromoTile,
3841
- OfficeMap,
3842
3954
  OfficeServicesBlock,
3843
3955
  OtherProducts,
3844
3956
  OtherProductsItem,
3845
- Recommendation,
3957
+ CarouselRecommendationCard,
3846
3958
  RollupItem,
3847
3959
  SafeDepositRental,
3848
3960
  StepsBlock,
@@ -3852,6 +3964,8 @@
3852
3964
  Tile,
3853
3965
  VerticalLayout,
3854
3966
  Video,
3967
+ Recommendation,
3968
+ OfficeMap,
3855
3969
  };
3856
3970
 
3857
3971
  const debounce = (fn, delay = 600) => {
@@ -3979,7 +4093,7 @@
3979
4093
  return (jsx("div", { className: "flex items-end absolute bottom-0 right-0 h-full pointer-events-none", children: jsx(LikeControl, { className: "rounded-tl-lg sticky bottom-0 pointer-events-auto" }) }));
3980
4094
  }
3981
4095
 
3982
- const packageVersion = "0.6.40";
4096
+ const packageVersion = "0.6.42";
3983
4097
 
3984
4098
  exports.Blocks = Blocks;
3985
4099
  exports.ContentPage = ContentPage;