@redneckz/wildless-cms-uni-blocks 0.6.41 → 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 (233) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +130 -32
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/bundle/components/CarouselRecommendationCard/CarouselRecommendationCard.d.ts +5 -0
  5. package/bundle/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +44 -0
  6. package/bundle/components/Header/HeaderSecondaryMenu.d.ts +2 -0
  7. package/bundle/hooks/useCachedAsyncData.d.ts +2 -0
  8. package/bundle/hooks/useLocation.d.ts +6 -0
  9. package/bundle/hooks/useRegions.d.ts +6 -0
  10. package/bundle/services/sitemap/SitemapProps.d.ts +8 -0
  11. package/bundle/ui-kit/Location/Location.d.ts +19 -0
  12. package/bundle/ui-kit/Location/SearchBar.d.ts +6 -0
  13. package/bundle/utils/groupBy.d.ts +1 -0
  14. package/dist/components/Blocks.js +4 -2
  15. package/dist/components/Blocks.js.map +1 -1
  16. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.d.ts +5 -0
  17. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js +22 -0
  18. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -0
  19. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +44 -0
  20. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js +2 -0
  21. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js.map +1 -0
  22. package/dist/components/Header/Header.js +2 -2
  23. package/dist/components/Header/Header.js.map +1 -1
  24. package/dist/components/Header/HeaderBurger.js +4 -3
  25. package/dist/components/Header/HeaderBurger.js.map +1 -1
  26. package/dist/components/Header/HeaderSecondaryMenu.d.ts +2 -0
  27. package/dist/components/Header/HeaderSecondaryMenu.js +13 -4
  28. package/dist/components/Header/HeaderSecondaryMenu.js.map +1 -1
  29. package/dist/components/Recommendation/RecommendationCard.js +1 -1
  30. package/dist/components/Recommendation/RecommendationCard.js.map +1 -1
  31. package/dist/hooks/useCachedAsyncData.d.ts +2 -0
  32. package/dist/hooks/useCachedAsyncData.js +25 -0
  33. package/dist/hooks/useCachedAsyncData.js.map +1 -0
  34. package/dist/hooks/useLocation.d.ts +6 -0
  35. package/dist/hooks/useLocation.js +26 -0
  36. package/dist/hooks/useLocation.js.map +1 -0
  37. package/dist/hooks/useRegions.d.ts +6 -0
  38. package/dist/hooks/useRegions.js +11 -0
  39. package/dist/hooks/useRegions.js.map +1 -0
  40. package/dist/services/sitemap/SitemapProps.d.ts +8 -0
  41. package/dist/ui-kit/Location/Location.d.ts +19 -0
  42. package/dist/ui-kit/Location/Location.js +44 -0
  43. package/dist/ui-kit/Location/Location.js.map +1 -0
  44. package/dist/ui-kit/Location/SearchBar.d.ts +6 -0
  45. package/dist/ui-kit/Location/SearchBar.js +9 -0
  46. package/dist/ui-kit/Location/SearchBar.js.map +1 -0
  47. package/dist/ui-kit/SwipeListControl/SwipeListContainer.js +8 -4
  48. package/dist/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
  49. package/dist/utils/groupBy.d.ts +1 -0
  50. package/dist/utils/groupBy.js +13 -0
  51. package/dist/utils/groupBy.js.map +1 -0
  52. package/lib/common.css +1 -1
  53. package/lib/components/Blocks.js +4 -2
  54. package/lib/components/Blocks.js.map +1 -1
  55. package/lib/components/Carousel/Carousel.fixture.d.ts +1 -0
  56. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.d.ts +5 -0
  57. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.fixture.d.ts +9 -0
  58. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js +20 -0
  59. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -0
  60. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +44 -0
  61. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js +2 -0
  62. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js.map +1 -0
  63. package/lib/components/Header/Header.js +2 -2
  64. package/lib/components/Header/Header.js.map +1 -1
  65. package/lib/components/Header/HeaderBurger.js +4 -3
  66. package/lib/components/Header/HeaderBurger.js.map +1 -1
  67. package/lib/components/Header/HeaderSecondaryMenu.d.ts +2 -0
  68. package/lib/components/Header/HeaderSecondaryMenu.js +13 -4
  69. package/lib/components/Header/HeaderSecondaryMenu.js.map +1 -1
  70. package/lib/components/Recommendation/Recommendation.fixture.d.ts +1 -1
  71. package/lib/components/Recommendation/RecommendationCard.js +1 -1
  72. package/lib/components/Recommendation/RecommendationCard.js.map +1 -1
  73. package/lib/hooks/useCachedAsyncData.d.ts +2 -0
  74. package/lib/hooks/useCachedAsyncData.js +22 -0
  75. package/lib/hooks/useCachedAsyncData.js.map +1 -0
  76. package/lib/hooks/useLocation.d.ts +6 -0
  77. package/lib/hooks/useLocation.js +23 -0
  78. package/lib/hooks/useLocation.js.map +1 -0
  79. package/lib/hooks/useRegions.d.ts +6 -0
  80. package/lib/hooks/useRegions.js +8 -0
  81. package/lib/hooks/useRegions.js.map +1 -0
  82. package/lib/services/sitemap/SitemapProps.d.ts +8 -0
  83. package/lib/ui-kit/Location/Location.d.ts +19 -0
  84. package/lib/ui-kit/Location/Location.fixture.d.ts +6 -0
  85. package/lib/ui-kit/Location/Location.js +42 -0
  86. package/lib/ui-kit/Location/Location.js.map +1 -0
  87. package/lib/ui-kit/Location/SearchBar.d.ts +6 -0
  88. package/lib/ui-kit/Location/SearchBar.js +7 -0
  89. package/lib/ui-kit/Location/SearchBar.js.map +1 -0
  90. package/lib/ui-kit/SwipeListControl/SwipeListContainer.js +8 -4
  91. package/lib/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
  92. package/lib/utils/groupBy.d.ts +1 -0
  93. package/lib/utils/groupBy.js +10 -0
  94. package/lib/utils/groupBy.js.map +1 -0
  95. package/mobile/bundle/bundle.umd.js +48 -20
  96. package/mobile/bundle/bundle.umd.min.js +1 -1
  97. package/mobile/bundle/components/CarouselRecommendationCard/CarouselRecommendationCard.d.ts +5 -0
  98. package/mobile/bundle/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +44 -0
  99. package/mobile/bundle/components/Header/HeaderSecondaryMenu.d.ts +2 -0
  100. package/mobile/bundle/hooks/useCachedAsyncData.d.ts +2 -0
  101. package/mobile/bundle/hooks/useLocation.d.ts +6 -0
  102. package/mobile/bundle/hooks/useRegions.d.ts +6 -0
  103. package/mobile/bundle/services/sitemap/SitemapProps.d.ts +8 -0
  104. package/mobile/bundle/ui-kit/Location/Location.d.ts +19 -0
  105. package/mobile/bundle/ui-kit/Location/SearchBar.d.ts +6 -0
  106. package/mobile/bundle/utils/groupBy.d.ts +1 -0
  107. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.d.ts +5 -0
  108. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js +22 -0
  109. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -0
  110. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +44 -0
  111. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js +2 -0
  112. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js.map +1 -0
  113. package/mobile/dist/components/Header/HeaderBurger.js +4 -3
  114. package/mobile/dist/components/Header/HeaderBurger.js.map +1 -1
  115. package/mobile/dist/components/Header/HeaderSecondaryMenu.d.ts +2 -0
  116. package/mobile/dist/components/Header/HeaderSecondaryMenu.js +13 -4
  117. package/mobile/dist/components/Header/HeaderSecondaryMenu.js.map +1 -1
  118. package/mobile/dist/components/Recommendation/RecommendationCard.js +1 -1
  119. package/mobile/dist/components/Recommendation/RecommendationCard.js.map +1 -1
  120. package/mobile/dist/hooks/useCachedAsyncData.d.ts +2 -0
  121. package/mobile/dist/hooks/useCachedAsyncData.js +25 -0
  122. package/mobile/dist/hooks/useCachedAsyncData.js.map +1 -0
  123. package/mobile/dist/hooks/useLocation.d.ts +6 -0
  124. package/mobile/dist/hooks/useLocation.js +26 -0
  125. package/mobile/dist/hooks/useLocation.js.map +1 -0
  126. package/mobile/dist/hooks/useRegions.d.ts +6 -0
  127. package/mobile/dist/hooks/useRegions.js +11 -0
  128. package/mobile/dist/hooks/useRegions.js.map +1 -0
  129. package/mobile/dist/services/sitemap/SitemapProps.d.ts +8 -0
  130. package/mobile/dist/ui-kit/Location/Location.d.ts +19 -0
  131. package/mobile/dist/ui-kit/Location/Location.js +44 -0
  132. package/mobile/dist/ui-kit/Location/Location.js.map +1 -0
  133. package/mobile/dist/ui-kit/Location/SearchBar.d.ts +6 -0
  134. package/mobile/dist/ui-kit/Location/SearchBar.js +9 -0
  135. package/mobile/dist/ui-kit/Location/SearchBar.js.map +1 -0
  136. package/mobile/dist/ui-kit/SwipeListControl/SwipeListContainer.js +8 -4
  137. package/mobile/dist/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
  138. package/mobile/dist/utils/groupBy.d.ts +1 -0
  139. package/mobile/dist/utils/groupBy.js +13 -0
  140. package/mobile/dist/utils/groupBy.js.map +1 -0
  141. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.d.ts +5 -0
  142. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js +20 -0
  143. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -0
  144. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.d.ts +44 -0
  145. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js +2 -0
  146. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCardContent.js.map +1 -0
  147. package/mobile/lib/components/Header/HeaderBurger.js +4 -3
  148. package/mobile/lib/components/Header/HeaderBurger.js.map +1 -1
  149. package/mobile/lib/components/Header/HeaderSecondaryMenu.d.ts +2 -0
  150. package/mobile/lib/components/Header/HeaderSecondaryMenu.js +13 -4
  151. package/mobile/lib/components/Header/HeaderSecondaryMenu.js.map +1 -1
  152. package/mobile/lib/components/Recommendation/RecommendationCard.js +1 -1
  153. package/mobile/lib/components/Recommendation/RecommendationCard.js.map +1 -1
  154. package/mobile/lib/hooks/useCachedAsyncData.d.ts +2 -0
  155. package/mobile/lib/hooks/useCachedAsyncData.js +22 -0
  156. package/mobile/lib/hooks/useCachedAsyncData.js.map +1 -0
  157. package/mobile/lib/hooks/useLocation.d.ts +6 -0
  158. package/mobile/lib/hooks/useLocation.js +23 -0
  159. package/mobile/lib/hooks/useLocation.js.map +1 -0
  160. package/mobile/lib/hooks/useRegions.d.ts +6 -0
  161. package/mobile/lib/hooks/useRegions.js +8 -0
  162. package/mobile/lib/hooks/useRegions.js.map +1 -0
  163. package/mobile/lib/services/sitemap/SitemapProps.d.ts +8 -0
  164. package/mobile/lib/ui-kit/Location/Location.d.ts +19 -0
  165. package/mobile/lib/ui-kit/Location/Location.js +42 -0
  166. package/mobile/lib/ui-kit/Location/Location.js.map +1 -0
  167. package/mobile/lib/ui-kit/Location/SearchBar.d.ts +6 -0
  168. package/mobile/lib/ui-kit/Location/SearchBar.js +7 -0
  169. package/mobile/lib/ui-kit/Location/SearchBar.js.map +1 -0
  170. package/mobile/lib/ui-kit/SwipeListControl/SwipeListContainer.js +8 -4
  171. package/mobile/lib/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
  172. package/mobile/lib/utils/groupBy.d.ts +1 -0
  173. package/mobile/lib/utils/groupBy.js +10 -0
  174. package/mobile/lib/utils/groupBy.js.map +1 -0
  175. package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCard.example.json +19 -0
  176. package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCard.tsx +62 -0
  177. package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCard.ui.json +9 -0
  178. package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCardContent.ts +45 -0
  179. package/mobile/src/components/Header/HeaderBurger.tsx +5 -7
  180. package/mobile/src/components/Header/HeaderSecondaryMenu.tsx +32 -5
  181. package/mobile/src/components/MiniGallery/MiniGallery.ui.json +1 -1
  182. package/mobile/src/components/Recommendation/Recommendation.example.json +6 -5
  183. package/mobile/src/components/Recommendation/Recommendation.ui.json +8 -0
  184. package/mobile/src/components/Recommendation/RecommendationCard.tsx +1 -1
  185. package/mobile/src/hooks/useCachedAsyncData.ts +37 -0
  186. package/mobile/src/hooks/useLocation.ts +48 -0
  187. package/mobile/src/hooks/useRegions.ts +16 -0
  188. package/mobile/src/services/sitemap/SitemapProps.ts +9 -0
  189. package/mobile/src/ui-kit/Location/Location.tsx +168 -0
  190. package/mobile/src/ui-kit/Location/SearchBar.tsx +30 -0
  191. package/mobile/src/ui-kit/SwipeListControl/SwipeListContainer.tsx +8 -4
  192. package/mobile/src/utils/groupBy.ts +10 -0
  193. package/package.json +2 -2
  194. package/src/components/Blocks.ts +4 -2
  195. package/src/components/Carousel/Carousel.fixture.tsx +22 -4
  196. package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.example.json +19 -0
  197. package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.fixture.tsx +47 -0
  198. package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.tsx +62 -0
  199. package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.ui.json +9 -0
  200. package/src/components/CarouselRecommendationCard/CarouselRecommendationCardContent.ts +45 -0
  201. package/src/components/Header/Header.tsx +6 -4
  202. package/src/components/Header/HeaderBurger.tsx +5 -7
  203. package/src/components/Header/HeaderSecondaryMenu.tsx +32 -5
  204. package/src/components/MiniGallery/MiniGallery.ui.json +1 -1
  205. package/src/components/Recommendation/Recommendation.example.json +6 -5
  206. package/src/components/Recommendation/Recommendation.fixture.tsx +11 -10
  207. package/src/components/Recommendation/Recommendation.ui.json +8 -0
  208. package/src/components/Recommendation/RecommendationCard.tsx +1 -1
  209. package/src/hooks/useCachedAsyncData.ts +37 -0
  210. package/src/hooks/useLocation.ts +48 -0
  211. package/src/hooks/useRegions.ts +16 -0
  212. package/src/services/sitemap/SitemapProps.ts +9 -0
  213. package/src/ui-kit/Location/Location.fixture.tsx +81 -0
  214. package/src/ui-kit/Location/Location.tsx +168 -0
  215. package/src/ui-kit/Location/SearchBar.tsx +30 -0
  216. package/src/ui-kit/SwipeListControl/SwipeListContainer.tsx +8 -4
  217. package/src/utils/groupBy.ts +10 -0
  218. package/bundle/hooks/useGeolocation.d.ts +0 -1
  219. package/dist/hooks/useGeolocation.d.ts +0 -1
  220. package/dist/hooks/useGeolocation.js +0 -21
  221. package/dist/hooks/useGeolocation.js.map +0 -1
  222. package/lib/hooks/useGeolocation.d.ts +0 -1
  223. package/lib/hooks/useGeolocation.js +0 -18
  224. package/lib/hooks/useGeolocation.js.map +0 -1
  225. package/mobile/bundle/hooks/useGeolocation.d.ts +0 -1
  226. package/mobile/dist/hooks/useGeolocation.d.ts +0 -1
  227. package/mobile/dist/hooks/useGeolocation.js +0 -21
  228. package/mobile/dist/hooks/useGeolocation.js.map +0 -1
  229. package/mobile/lib/hooks/useGeolocation.d.ts +0 -1
  230. package/mobile/lib/hooks/useGeolocation.js +0 -18
  231. package/mobile/lib/hooks/useGeolocation.js.map +0 -1
  232. package/mobile/src/hooks/useGeolocation.ts +0 -22
  233. package/src/hooks/useGeolocation.ts +0 -22
@@ -1444,7 +1444,7 @@
1444
1444
  });
1445
1445
 
1446
1446
  const childStyleMap = ['min-w-[100%]', 'min-w-[50%]', 'min-w-[33.33%]', 'min-w-[25%]'];
1447
- 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, }) => {
1448
1448
  const observerOptions = {
1449
1449
  sensitivity: 1,
1450
1450
  rootRef: containerRef,
@@ -1457,14 +1457,18 @@
1457
1457
  onVisibleItemsChange && onVisibleItemsChange(itemsVisibilityList);
1458
1458
  onVisibleIndicesChange && onVisibleIndicesChange(getVisibleIndices(itemsVisibilityList));
1459
1459
  }, [onVisibleItemsChange, onVisibleIndicesChange]);
1460
- 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) }));
1461
1465
  });
1462
1466
  // Styles used to compensate outer container padding to get rid of clipping effect
1463
- const getContainerStyle = (padding) => ({
1467
+ const getContainerStyle = (padding, additionalPadding = 0) => ({
1464
1468
  marginLeft: `${-padding}px`,
1465
1469
  marginRight: `${-padding}px`,
1466
1470
  paddingLeft: `${padding}px`,
1467
- paddingRight: `${padding}px`,
1471
+ paddingRight: `${padding + additionalPadding}px`,
1468
1472
  });
1469
1473
  const getVisibleIndices = (itemsVisibilityList) => itemsVisibilityList
1470
1474
  .map((_, i) => [_, i])
@@ -1827,7 +1831,7 @@
1827
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));
1828
1832
  };
1829
1833
 
1830
- 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" })] })] })));
1831
1835
 
1832
1836
  const roundTo = (value, precision = 2) => {
1833
1837
  const factor = 10 ** precision;
@@ -1975,7 +1979,7 @@
1975
1979
  };
1976
1980
 
1977
1981
  const EXCHANGE_RATES_URL = '/api/v1/exchangerates';
1978
- const REGION_URL = '/api/v1/region';
1982
+ const REGION_URL$1 = '/api/v1/region';
1979
1983
  function useFetchExchangeRateData() {
1980
1984
  const { data } = useAsyncData(EXCHANGE_RATES_URL, fetchData);
1981
1985
  return data || {};
@@ -1988,7 +1992,7 @@
1988
1992
  };
1989
1993
  const fetchRegion = async () => {
1990
1994
  try {
1991
- return await fetchJSONUnsafe(REGION_URL, { method: 'GET' });
1995
+ return await fetchJSONUnsafe(REGION_URL$1, { method: 'GET' });
1992
1996
  }
1993
1997
  catch (error) {
1994
1998
  console.log(error);
@@ -2014,7 +2018,7 @@
2014
2018
  currencyRatesBuy.unshift({ currency: { currency: Currency.RUB } });
2015
2019
  const currencyRatesSell = currencyRates.filter((_) => _.saleExchangeRate);
2016
2020
  currencyRatesSell.push({ currency: { currency: Currency.RUB } });
2017
- 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] }) }) }));
2018
2022
  });
2019
2023
  const getCurrencyRates = (currencies) => {
2020
2024
  return currencies?.filter((_) => _?.currency?.id === 1 || _?.currency?.id === 2) || [];
@@ -2078,7 +2082,7 @@
2078
2082
  }, children: jsx("div", { className: "text-s px-9 py-2.5", children: "\u041D\u0430\u0439\u0442\u0438" }) }))] }));
2079
2083
  });
2080
2084
 
2081
- const SearchBar = JSX((props) => jsx(SearchBarInner, { ...props }));
2085
+ const SearchBar$1 = JSX((props) => jsx(SearchBarInner, { ...props }));
2082
2086
 
2083
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] })));
2084
2088
  const renderContact = (item, index) => {
@@ -2183,7 +2187,7 @@
2183
2187
  const Footer = JSX(({ className, ...rest }) => {
2184
2188
  const fallback = rest.options?.page?.fallback;
2185
2189
  const { documents, relatedEnterprises, contacts, socialMedia, mobileApps, topItems, logo } = useSWRResource(projectSettings.FOOTER || 'footer', fallback);
2186
- 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 })] }));
2187
2191
  });
2188
2192
 
2189
2193
  const galleryLengthForScrollMap = {
@@ -2282,22 +2286,99 @@
2282
2286
  return `${active ? 'text-primary-main' : nonActiveAtoms} ${TEXT_CLASSES$2}`;
2283
2287
  };
2284
2288
 
2285
- const DaData = DaDataAPI('https://10.80.4.9');
2286
- function useGeolocation(defaultLocation) {
2287
- 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);
2288
2317
  useEffect(() => {
2289
- setCity(globalThis?.localStorage.getItem('location') || defaultLocation);
2290
- }, [defaultLocation]);
2291
- const getCity = useCallback(() => {
2292
- DaData.getFetcherAddress().then((_) => {
2293
- const location = _ || defaultLocation;
2294
- globalThis?.localStorage.setItem('location', location);
2295
- setCity(location);
2296
- });
2297
- }, [defaultLocation]);
2298
- 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 || [];
2299
2333
  }
2300
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
+
2301
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 })));
2302
2383
 
2303
2384
  const COLORS_MAP = {
@@ -2312,9 +2393,16 @@
2312
2393
  'bg-white': 'black',
2313
2394
  transparent: 'white',
2314
2395
  };
2315
- const HeaderSecondaryMenu = JSX(({ className, officesLink, defaultLocation = 'Москва', bgColor = 'bg-white' }) => {
2316
- const [city, getCity] = useGeolocation(defaultLocation);
2317
- 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] }));
2318
2406
  });
2319
2407
 
2320
2408
  const findActiveSubItem = (router) => (items = []) => {
@@ -2395,10 +2483,10 @@
2395
2483
  };
2396
2484
  const Header = JSX(({ bgColor = 'bg-white', className = '', showSubMenu = true, ...rest }) => {
2397
2485
  const router = useRouter();
2398
- 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);
2399
2487
  const activeTopItem = showSubMenu ? getActiveItem(topItems, router) : null;
2400
2488
  const topMenu = topItems?.map((_, i) => (jsx(TopItem, { active: _ === activeTopItem, "aria-label": _.text, bgColor: bgColor, ..._ }, String(i))));
2401
- 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] }) }));
2402
2490
  });
2403
2491
  const getActiveItem = (topItems, router) => {
2404
2492
  const [firstPortal] = topItems || [];
@@ -3229,10 +3317,19 @@
3229
3317
  return dateObj.toLocaleString('ru-RU', dateFormat).replace('г.', '');
3230
3318
  }
3231
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
+
3232
3329
  const RecommendationCard = JSX(({ className = '', title, description, items, image, version, socialMedia, button }) => {
3233
3330
  const tileTitle = title ? (jsx(Heading, { headingType: "h5", as: "h3", className: "mb-3.5 z-10", title: title })) : null;
3234
3331
  const tileImage = image?.src ? (jsx(ImgInner, { className: "absolute bottom-0 right-0 m-0", image: image })) : null;
3235
- 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] }) }) }));
3236
3333
  });
3237
3334
 
3238
3335
  const BLUR_BLOCK_CLASSES = 'absolute top-0 bottom-0 w-[84px]';
@@ -3854,11 +3951,10 @@
3854
3951
  ProductGallery,
3855
3952
  ProductTile,
3856
3953
  PromoTile,
3857
- OfficeMap,
3858
3954
  OfficeServicesBlock,
3859
3955
  OtherProducts,
3860
3956
  OtherProductsItem,
3861
- Recommendation,
3957
+ CarouselRecommendationCard,
3862
3958
  RollupItem,
3863
3959
  SafeDepositRental,
3864
3960
  StepsBlock,
@@ -3868,6 +3964,8 @@
3868
3964
  Tile,
3869
3965
  VerticalLayout,
3870
3966
  Video,
3967
+ Recommendation,
3968
+ OfficeMap,
3871
3969
  };
3872
3970
 
3873
3971
  const debounce = (fn, delay = 600) => {
@@ -3995,7 +4093,7 @@
3995
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" }) }));
3996
4094
  }
3997
4095
 
3998
- const packageVersion = "0.6.41";
4096
+ const packageVersion = "0.6.42";
3999
4097
 
4000
4098
  exports.Blocks = Blocks;
4001
4099
  exports.ContentPage = ContentPage;