@redneckz/wildless-cms-uni-blocks 0.12.11 → 0.12.13

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 (1239) hide show
  1. package/bin/migration-scripts/0.12.10.js +59 -0
  2. package/bundle/BlockRenderer/renderBlock.d.ts +2 -4
  3. package/bundle/BlockRenderer/renderBlockList.d.ts +5 -2
  4. package/bundle/BlockRenderer/renderChildren.d.ts +5 -4
  5. package/bundle/blocks.schema.json +1 -1
  6. package/bundle/bundle.umd.js +322 -380
  7. package/bundle/bundle.umd.min.js +1 -1
  8. package/bundle/components/ApplicationForm/ApplicationFormContent.d.ts +52 -6
  9. package/bundle/components/ApplicationForm/ApplicationFormGrantSupport.d.ts +2 -0
  10. package/bundle/components/ApplicationForm/ApplicationFormsProps.d.ts +1 -0
  11. package/bundle/components/ApplicationForm/EmbeddableForms.d.ts +8 -0
  12. package/bundle/components/BonusBenefitsBlock/renderBonusBenefits.mobile.d.ts +1 -1
  13. package/bundle/components/Carousel/Carousel.d.ts +1 -1
  14. package/bundle/components/Carousel/CarouselContent.d.ts +3 -9
  15. package/bundle/components/Carousel/CarouselScrollButtons.d.ts +5 -6
  16. package/bundle/components/Carousel/renderControlButtons.d.ts +2 -3
  17. package/bundle/components/CarouselBankHistoryCard/CarouselBankHistoryCard.d.ts +2 -2
  18. package/bundle/components/CarouselCard/CarouselCard.d.ts +1 -1
  19. package/bundle/components/CarouselLinks/CarouselLinks.d.ts +1 -0
  20. package/bundle/components/CarouselLinks/CarouselLinksContent.d.ts +2 -0
  21. package/bundle/components/Footer/Contacts.d.ts +0 -1
  22. package/bundle/components/Footer/Footer.d.ts +1 -4
  23. package/bundle/components/Footer/Footer.mobile.d.ts +1 -4
  24. package/bundle/components/Footer/FooterProps.d.ts +6 -0
  25. package/bundle/components/Footer/MediaButton.d.ts +1 -1
  26. package/bundle/components/Footer/buttonSizeStyles.d.ts +4 -0
  27. package/bundle/components/Footer/buttonSizeStyles.mobile.d.ts +4 -0
  28. package/bundle/components/Header/Header.d.ts +1 -4
  29. package/bundle/components/Header/Header.mobile.d.ts +2 -5
  30. package/bundle/components/Header/HeaderContent.d.ts +0 -2
  31. package/bundle/components/Header/HeaderProps.d.ts +8 -0
  32. package/bundle/components/HorizontalLayout/HorizontalLayout.mobile.d.ts +5 -0
  33. package/bundle/components/SafeDepositRental/RadioButtons.d.ts +6 -0
  34. package/bundle/components/VerticalLayout/VerticalLayoutContent.d.ts +0 -2
  35. package/bundle/hooks/useCarouselControls.d.ts +1 -1
  36. package/bundle/services/regionsGrantSupport/RegionsGrantSupportData.d.ts +7 -0
  37. package/bundle/ui-kit/BaseProductTile/BaseProductTileContent.d.ts +5 -5
  38. package/bundle/ui-kit/SwipeListControl/useSwipeListScroll.d.ts +1 -2
  39. package/dist/BlockRenderer/renderBlock.d.ts +2 -4
  40. package/dist/BlockRenderer/renderBlock.js +1 -2
  41. package/dist/BlockRenderer/renderBlock.js.map +1 -1
  42. package/dist/BlockRenderer/renderBlockList.d.ts +5 -2
  43. package/dist/BlockRenderer/renderBlockList.js +12 -7
  44. package/dist/BlockRenderer/renderBlockList.js.map +1 -1
  45. package/dist/BlockRenderer/renderChildren.d.ts +5 -4
  46. package/dist/BlockRenderer/renderChildren.js +2 -2
  47. package/dist/BlockRenderer/renderChildren.js.map +1 -1
  48. package/dist/components/ApplicationForm/ApplicationForm.js +16 -14
  49. package/dist/components/ApplicationForm/ApplicationForm.js.map +1 -1
  50. package/dist/components/ApplicationForm/ApplicationFormContent.d.ts +52 -6
  51. package/dist/components/ApplicationForm/ApplicationFormGrantSupport.d.ts +2 -0
  52. package/dist/components/ApplicationForm/ApplicationFormGrantSupport.js +22 -0
  53. package/dist/components/ApplicationForm/ApplicationFormGrantSupport.js.map +1 -0
  54. package/dist/components/ApplicationForm/ApplicationFormsProps.d.ts +1 -0
  55. package/dist/components/ApplicationForm/EmbeddableForms.d.ts +8 -0
  56. package/dist/components/ApplicationForm/EmbeddableForms.js +17 -0
  57. package/dist/components/ApplicationForm/EmbeddableForms.js.map +1 -0
  58. package/dist/components/BenefitsBlock/BenefitsBlock.js +1 -1
  59. package/dist/components/Blocks.mobile.js +6 -0
  60. package/dist/components/Blocks.mobile.js.map +1 -1
  61. package/dist/components/Bonus/Bonus.js +10 -13
  62. package/dist/components/Bonus/Bonus.js.map +1 -1
  63. package/dist/components/BonusBenefitsBlock/renderBonusBenefits.mobile.d.ts +1 -1
  64. package/dist/components/BonusBenefitsBlock/renderBonusBenefits.mobile.js.map +1 -1
  65. package/dist/components/Calculator/BusinessDepositCalculatorForm.js +4 -4
  66. package/dist/components/Calculator/BusinessDepositCalculatorForm.js.map +1 -1
  67. package/dist/components/Calculator/CreditCalculatorForm.js +1 -1
  68. package/dist/components/Calculator/CreditCalculatorForm.js.map +1 -1
  69. package/dist/components/Calculator/DepositCalculatorForm.js +3 -3
  70. package/dist/components/Calculator/DepositCalculatorForm.js.map +1 -1
  71. package/dist/components/Calculator/UnknownRate.js +1 -1
  72. package/dist/components/Calculator/UnknownRate.js.map +1 -1
  73. package/dist/components/Carousel/Carousel.d.ts +1 -1
  74. package/dist/components/Carousel/Carousel.js +18 -33
  75. package/dist/components/Carousel/Carousel.js.map +1 -1
  76. package/dist/components/Carousel/CarouselContent.d.ts +3 -9
  77. package/dist/components/Carousel/CarouselScrollButtons.d.ts +5 -6
  78. package/dist/components/Carousel/CarouselScrollButtons.js +4 -4
  79. package/dist/components/Carousel/CarouselScrollButtons.js.map +1 -1
  80. package/dist/components/Carousel/renderControlButtons.d.ts +2 -3
  81. package/dist/components/Carousel/renderControlButtons.js +3 -3
  82. package/dist/components/Carousel/renderControlButtons.js.map +1 -1
  83. package/dist/components/CarouselBankHistoryCard/CarouselBankHistoryCard.d.ts +2 -2
  84. package/dist/components/CarouselBankHistoryCard/CarouselBankHistoryCard.js +7 -40
  85. package/dist/components/CarouselBankHistoryCard/CarouselBankHistoryCard.js.map +1 -1
  86. package/dist/components/CarouselBankHistoryCard/CarouselBankHistoryCard.mobile.js +1 -2
  87. package/dist/components/CarouselBankHistoryCard/CarouselBankHistoryCard.mobile.js.map +1 -1
  88. package/dist/components/CarouselCard/CarouselCard.d.ts +1 -1
  89. package/dist/components/CarouselCard/CarouselCard.js +6 -5
  90. package/dist/components/CarouselCard/CarouselCard.js.map +1 -1
  91. package/dist/components/CarouselCard/constants.js +2 -2
  92. package/dist/components/CarouselCard/constants.js.map +1 -1
  93. package/dist/components/CarouselCatalogCard/CarouselCatalogCard.js +2 -2
  94. package/dist/components/CarouselCatalogCard/CarouselCatalogCard.js.map +1 -1
  95. package/dist/components/CarouselEventCard/CarouselEventCard.js +1 -2
  96. package/dist/components/CarouselEventCard/CarouselEventCard.js.map +1 -1
  97. package/dist/components/CarouselInvestmentCard/CarouselInvestmentCard.js +1 -1
  98. package/dist/components/CarouselInvestmentCard/CarouselInvestmentCard.js.map +1 -1
  99. package/dist/components/CarouselLinks/CarouselLinks.d.ts +1 -0
  100. package/dist/components/CarouselLinks/CarouselLinks.js +7 -8
  101. package/dist/components/CarouselLinks/CarouselLinks.js.map +1 -1
  102. package/dist/components/CarouselLinks/CarouselLinksContent.d.ts +2 -0
  103. package/dist/components/CarouselProductCard/CarouselProductCard.js +4 -4
  104. package/dist/components/CarouselProductCard/CarouselProductCard.js.map +1 -1
  105. package/dist/components/CarouselProgramsCard/CarouselProgramsCard.js +1 -4
  106. package/dist/components/CarouselProgramsCard/CarouselProgramsCard.js.map +1 -1
  107. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js +3 -4
  108. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -1
  109. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.mobile.js +1 -2
  110. package/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.mobile.js.map +1 -1
  111. package/dist/components/CarouselRichTextCard/CarouselRichTextCard.js +1 -2
  112. package/dist/components/CarouselRichTextCard/CarouselRichTextCard.js.map +1 -1
  113. package/dist/components/CarouselTariffsCard/CarouselTariffsCard.js +2 -2
  114. package/dist/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
  115. package/dist/components/ComparisonTable/ComparisonTable.js +1 -1
  116. package/dist/components/ComparisonTable/ComparisonTable.js.map +1 -1
  117. package/dist/components/ComparisonTable/ComparisonTable.mobile.js +1 -1
  118. package/dist/components/ComparisonTable/ComparisonTable.mobile.js.map +1 -1
  119. package/dist/components/ComparisonTable/ComparisonTableBody.js +1 -1
  120. package/dist/components/ComparisonTable/ComparisonTableBody.js.map +1 -1
  121. package/dist/components/ComparisonTable/ComparisonTableRows.js +1 -1
  122. package/dist/components/ComparisonTable/ComparisonTableRows.js.map +1 -1
  123. package/dist/components/ComparisonTable/HeaderCell.js +1 -1
  124. package/dist/components/ComparisonTable/HeaderCell.js.map +1 -1
  125. package/dist/components/ContactsBlock/ContactsBlock.js +1 -1
  126. package/dist/components/ContactsBlock/ContactsBlock.js.map +1 -1
  127. package/dist/components/ContentPage/ContentPage.js +17 -10
  128. package/dist/components/ContentPage/ContentPage.js.map +1 -1
  129. package/dist/components/ExchangeRateTile/CurrencyTable.js +4 -3
  130. package/dist/components/ExchangeRateTile/CurrencyTable.js.map +1 -1
  131. package/dist/components/ExchangeRateTile/CurrentLocation.js +3 -2
  132. package/dist/components/ExchangeRateTile/CurrentLocation.js.map +1 -1
  133. package/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +1 -1
  134. package/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -1
  135. package/dist/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
  136. package/dist/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
  137. package/dist/components/Footer/Contacts.d.ts +0 -1
  138. package/dist/components/Footer/Contacts.js +3 -4
  139. package/dist/components/Footer/Contacts.js.map +1 -1
  140. package/dist/components/Footer/Footer.d.ts +1 -4
  141. package/dist/components/Footer/Footer.js +4 -6
  142. package/dist/components/Footer/Footer.js.map +1 -1
  143. package/dist/components/Footer/Footer.mobile.d.ts +1 -4
  144. package/dist/components/Footer/Footer.mobile.js +5 -6
  145. package/dist/components/Footer/Footer.mobile.js.map +1 -1
  146. package/dist/components/Footer/FooterProps.d.ts +6 -0
  147. package/dist/components/Footer/FooterProps.js +2 -0
  148. package/dist/components/Footer/FooterProps.js.map +1 -0
  149. package/dist/components/Footer/HorizontalNavigation.js +1 -1
  150. package/dist/components/Footer/HorizontalNavigation.js.map +1 -1
  151. package/dist/components/Footer/HorizontalNavigation.mobile.js +1 -1
  152. package/dist/components/Footer/HorizontalNavigation.mobile.js.map +1 -1
  153. package/dist/components/Footer/MediaButton.d.ts +1 -1
  154. package/dist/components/Footer/SocialMedia.js +2 -1
  155. package/dist/components/Footer/SocialMedia.js.map +1 -1
  156. package/dist/components/Footer/TextInformation.js +1 -1
  157. package/dist/components/Footer/TextInformation.js.map +1 -1
  158. package/dist/components/Footer/buttonSizeStyles.d.ts +4 -0
  159. package/dist/components/Footer/buttonSizeStyles.js +7 -0
  160. package/dist/components/Footer/buttonSizeStyles.js.map +1 -0
  161. package/dist/components/Footer/buttonSizeStyles.mobile.d.ts +4 -0
  162. package/dist/components/Footer/buttonSizeStyles.mobile.js +7 -0
  163. package/dist/components/Footer/buttonSizeStyles.mobile.js.map +1 -0
  164. package/dist/components/Footer/buttonStylesWithText.js +2 -5
  165. package/dist/components/Footer/buttonStylesWithText.js.map +1 -1
  166. package/dist/components/GracePeriod/GracePeriod.js +2 -2
  167. package/dist/components/GracePeriod/GracePeriod.js.map +1 -1
  168. package/dist/components/Header/Header.d.ts +1 -4
  169. package/dist/components/Header/Header.js +3 -9
  170. package/dist/components/Header/Header.js.map +1 -1
  171. package/dist/components/Header/Header.mobile.d.ts +2 -5
  172. package/dist/components/Header/Header.mobile.js +2 -5
  173. package/dist/components/Header/Header.mobile.js.map +1 -1
  174. package/dist/components/Header/HeaderContent.d.ts +0 -2
  175. package/dist/components/Header/HeaderProps.d.ts +8 -0
  176. package/dist/components/Header/HeaderProps.js +2 -0
  177. package/dist/components/Header/HeaderProps.js.map +1 -0
  178. package/dist/components/Header/HeaderTop.js +1 -1
  179. package/dist/components/Header/HeaderTop.js.map +1 -1
  180. package/dist/components/HorizontalLayout/HorizontalLayout.mobile.d.ts +5 -0
  181. package/dist/components/HorizontalLayout/HorizontalLayout.mobile.js +8 -0
  182. package/dist/components/HorizontalLayout/HorizontalLayout.mobile.js.map +1 -0
  183. package/dist/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js +1 -1
  184. package/dist/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js.map +1 -1
  185. package/dist/components/InvestmentInfo/InvestmentInfo.js +5 -5
  186. package/dist/components/InvestmentInfo/InvestmentInfo.js.map +1 -1
  187. package/dist/components/LinkDocs/LinkDocs.js +2 -2
  188. package/dist/components/LinkDocs/LinkDocs.js.map +1 -1
  189. package/dist/components/MobileAppTile/MobileAppTile.js +1 -1
  190. package/dist/components/MobileAppTile/MobileAppTile.js.map +1 -1
  191. package/dist/components/MobileAppTile/renderDescription.js +1 -1
  192. package/dist/components/MobileAppTile/renderDescription.js.map +1 -1
  193. package/dist/components/OfficeMap/OfficeMap.js +1 -1
  194. package/dist/components/OfficeMap/OfficeMap.js.map +1 -1
  195. package/dist/components/OfficeServicesBlock/OfficeServicesBlock.js +2 -2
  196. package/dist/components/OfficeServicesBlock/OfficeServicesBlock.js.map +1 -1
  197. package/dist/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.js +4 -8
  198. package/dist/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.js.map +1 -1
  199. package/dist/components/RollupItem/RollupItem.js +5 -2
  200. package/dist/components/RollupItem/RollupItem.js.map +1 -1
  201. package/dist/components/SafeDepositRental/RadioButtons.d.ts +6 -0
  202. package/dist/components/SafeDepositRental/RadioButtons.js +13 -0
  203. package/dist/components/SafeDepositRental/RadioButtons.js.map +1 -0
  204. package/dist/components/SafeDepositRental/RegionsAndBranches.js +1 -1
  205. package/dist/components/SafeDepositRental/RegionsAndBranches.js.map +1 -1
  206. package/dist/components/SafeDepositRental/RentalPeriod.js +2 -1
  207. package/dist/components/SafeDepositRental/RentalPeriod.js.map +1 -1
  208. package/dist/components/SafeDepositRental/SafeBoxCases.js +1 -1
  209. package/dist/components/SafeDepositRental/SafeBoxCases.js.map +1 -1
  210. package/dist/components/SafeDepositRental/SafeDepositRentalFields.js +2 -2
  211. package/dist/components/SafeDepositRental/SafeDepositRentalFields.js.map +1 -1
  212. package/dist/components/SafeDepositRental/SafeDepositRentalForm.js +1 -1
  213. package/dist/components/SafeDepositRental/SafeDepositRentalForm.js.map +1 -1
  214. package/dist/components/SafeDepositRental/SafeDepositRentalTotal.js +4 -3
  215. package/dist/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -1
  216. package/dist/components/StepsBlock/renderStep.js +1 -1
  217. package/dist/components/StepsBlock/renderStep.js.map +1 -1
  218. package/dist/components/Tabs/ScrollableTabs.js +0 -1
  219. package/dist/components/Tabs/ScrollableTabs.js.map +1 -1
  220. package/dist/components/TariffsTable/TariffsTable.js +3 -3
  221. package/dist/components/TariffsTable/TariffsTable.js.map +1 -1
  222. package/dist/components/VerticalLayout/VerticalLayout.js +4 -14
  223. package/dist/components/VerticalLayout/VerticalLayout.js.map +1 -1
  224. package/dist/components/VerticalLayout/VerticalLayoutContent.d.ts +0 -2
  225. package/dist/hooks/useCarouselControls.d.ts +1 -1
  226. package/dist/hooks/useCarouselControls.js +5 -6
  227. package/dist/hooks/useCarouselControls.js.map +1 -1
  228. package/dist/services/regionsGrantSupport/RegionsGrantSupportData.d.ts +7 -0
  229. package/dist/services/regionsGrantSupport/RegionsGrantSupportData.js +2 -0
  230. package/dist/services/regionsGrantSupport/RegionsGrantSupportData.js.map +1 -0
  231. package/dist/ui-kit/BaseProductTile/BaseProductTileContent.d.ts +5 -5
  232. package/dist/ui-kit/BaseTile/BaseTile.js +1 -1
  233. package/dist/ui-kit/BaseTile/BaseTile.js.map +1 -1
  234. package/dist/ui-kit/BlockWrapper.js +1 -1
  235. package/dist/ui-kit/BlockWrapper.js.map +1 -1
  236. package/dist/ui-kit/LinkButton/LinkButton.js +4 -3
  237. package/dist/ui-kit/LinkButton/LinkButton.js.map +1 -1
  238. package/dist/ui-kit/LinkList/LinkList.js +2 -2
  239. package/dist/ui-kit/LinkList/LinkList.js.map +1 -1
  240. package/dist/ui-kit/LocationDialog/LocationDialog.js +2 -2
  241. package/dist/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
  242. package/dist/ui-kit/LocationDialog/SearchBar.js +1 -1
  243. package/dist/ui-kit/LocationDialog/SearchBar.js.map +1 -1
  244. package/dist/ui-kit/SearchDialog/SearchDialog.js +1 -1
  245. package/dist/ui-kit/SearchDialog/SearchDialog.js.map +1 -1
  246. package/dist/ui-kit/SlideCheckbox/SlideCheckbox.js +1 -1
  247. package/dist/ui-kit/SlideCheckbox/SlideCheckbox.js.map +1 -1
  248. package/dist/ui-kit/SwipeListControl/SwipeListContainer.js +1 -1
  249. package/dist/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
  250. package/dist/ui-kit/SwipeListControl/useSwipeListScroll.d.ts +1 -2
  251. package/dist/ui-kit/SwipeListControl/useSwipeListScroll.js +11 -11
  252. package/dist/ui-kit/SwipeListControl/useSwipeListScroll.js.map +1 -1
  253. package/dist/ui-kit/TableArrowScrollControl/TableArrowScrollControl.js +1 -1
  254. package/dist/ui-kit/TableArrowScrollControl/TableArrowScrollControl.js.map +1 -1
  255. package/dist/ui-kit/YandexMap/YandexMap.js +1 -1
  256. package/dist/ui-kit/YandexMap/YandexMap.js.map +1 -1
  257. package/lib/BlockRenderer/renderBlock.d.ts +2 -4
  258. package/lib/BlockRenderer/renderBlock.js +1 -2
  259. package/lib/BlockRenderer/renderBlock.js.map +1 -1
  260. package/lib/BlockRenderer/renderBlockList.d.ts +5 -2
  261. package/lib/BlockRenderer/renderBlockList.js +12 -7
  262. package/lib/BlockRenderer/renderBlockList.js.map +1 -1
  263. package/lib/BlockRenderer/renderChildren.d.ts +5 -4
  264. package/lib/BlockRenderer/renderChildren.js +2 -2
  265. package/lib/BlockRenderer/renderChildren.js.map +1 -1
  266. package/lib/common.css +1 -1
  267. package/lib/components/ApplicationForm/ApplicationForm.fixture.d.ts +1 -0
  268. package/lib/components/ApplicationForm/ApplicationForm.fixture.mobile.d.ts +1 -0
  269. package/lib/components/ApplicationForm/ApplicationForm.js +16 -14
  270. package/lib/components/ApplicationForm/ApplicationForm.js.map +1 -1
  271. package/lib/components/ApplicationForm/ApplicationFormContent.d.ts +52 -6
  272. package/lib/components/ApplicationForm/ApplicationFormGrantSupport.d.ts +2 -0
  273. package/lib/components/ApplicationForm/ApplicationFormGrantSupport.js +20 -0
  274. package/lib/components/ApplicationForm/ApplicationFormGrantSupport.js.map +1 -0
  275. package/lib/components/ApplicationForm/ApplicationFormsProps.d.ts +1 -0
  276. package/lib/components/ApplicationForm/EmbeddableForms.d.ts +8 -0
  277. package/lib/components/ApplicationForm/EmbeddableForms.js +15 -0
  278. package/lib/components/ApplicationForm/EmbeddableForms.js.map +1 -0
  279. package/lib/components/BenefitsBlock/BenefitsBlock.js +1 -1
  280. package/lib/components/Blocks.mobile.js +6 -0
  281. package/lib/components/Blocks.mobile.js.map +1 -1
  282. package/lib/components/Bonus/Bonus.fixture.mobile.d.ts +8 -0
  283. package/lib/components/Bonus/Bonus.js +10 -13
  284. package/lib/components/Bonus/Bonus.js.map +1 -1
  285. package/lib/components/BonusBenefitsBlock/renderBonusBenefits.mobile.d.ts +1 -1
  286. package/lib/components/BonusBenefitsBlock/renderBonusBenefits.mobile.js.map +1 -1
  287. package/lib/components/Calculator/BusinessDepositCalculatorForm.js +4 -4
  288. package/lib/components/Calculator/BusinessDepositCalculatorForm.js.map +1 -1
  289. package/lib/components/Calculator/CreditCalculatorForm.js +1 -1
  290. package/lib/components/Calculator/CreditCalculatorForm.js.map +1 -1
  291. package/lib/components/Calculator/DepositCalculatorForm.js +3 -3
  292. package/lib/components/Calculator/DepositCalculatorForm.js.map +1 -1
  293. package/lib/components/Calculator/UnknownRate.js +1 -1
  294. package/lib/components/Calculator/UnknownRate.js.map +1 -1
  295. package/lib/components/Carousel/Carousel.d.ts +1 -1
  296. package/lib/components/Carousel/Carousel.js +18 -33
  297. package/lib/components/Carousel/Carousel.js.map +1 -1
  298. package/lib/components/Carousel/CarouselContent.d.ts +3 -9
  299. package/lib/components/Carousel/CarouselScrollButtons.d.ts +5 -6
  300. package/lib/components/Carousel/CarouselScrollButtons.js +4 -4
  301. package/lib/components/Carousel/CarouselScrollButtons.js.map +1 -1
  302. package/lib/components/Carousel/renderControlButtons.d.ts +3 -3
  303. package/lib/components/Carousel/renderControlButtons.js +3 -3
  304. package/lib/components/Carousel/renderControlButtons.js.map +1 -1
  305. package/lib/components/CarouselBankHistoryCard/CarouselBankHistoryCard.d.ts +2 -2
  306. package/lib/components/CarouselBankHistoryCard/CarouselBankHistoryCard.js +7 -40
  307. package/lib/components/CarouselBankHistoryCard/CarouselBankHistoryCard.js.map +1 -1
  308. package/lib/components/CarouselBankHistoryCard/CarouselBankHistoryCard.mobile.js +1 -2
  309. package/lib/components/CarouselBankHistoryCard/CarouselBankHistoryCard.mobile.js.map +1 -1
  310. package/lib/components/CarouselCard/CarouselCard.d.ts +1 -1
  311. package/lib/components/CarouselCard/CarouselCard.js +6 -5
  312. package/lib/components/CarouselCard/CarouselCard.js.map +1 -1
  313. package/lib/components/CarouselCard/constants.js +2 -2
  314. package/lib/components/CarouselCard/constants.js.map +1 -1
  315. package/lib/components/CarouselCatalogCard/CarouselCatalogCard.js +2 -2
  316. package/lib/components/CarouselCatalogCard/CarouselCatalogCard.js.map +1 -1
  317. package/lib/components/CarouselEventCard/CarouselEventCard.js +1 -2
  318. package/lib/components/CarouselEventCard/CarouselEventCard.js.map +1 -1
  319. package/lib/components/CarouselInvestmentCard/CarouselInvestmentCard.js +1 -1
  320. package/lib/components/CarouselInvestmentCard/CarouselInvestmentCard.js.map +1 -1
  321. package/lib/components/CarouselLinks/CarouselLinks.d.ts +1 -0
  322. package/lib/components/CarouselLinks/CarouselLinks.fixture.mobile.d.ts +6 -0
  323. package/lib/components/CarouselLinks/CarouselLinks.js +7 -8
  324. package/lib/components/CarouselLinks/CarouselLinks.js.map +1 -1
  325. package/lib/components/CarouselLinks/CarouselLinksContent.d.ts +2 -0
  326. package/lib/components/CarouselProductCard/CarouselProductCard.js +4 -4
  327. package/lib/components/CarouselProductCard/CarouselProductCard.js.map +1 -1
  328. package/lib/components/CarouselProgramsCard/CarouselProgramsCard.js +1 -4
  329. package/lib/components/CarouselProgramsCard/CarouselProgramsCard.js.map +1 -1
  330. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js +4 -5
  331. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -1
  332. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.mobile.js +1 -2
  333. package/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.mobile.js.map +1 -1
  334. package/lib/components/CarouselRichTextCard/CarouselRichTextCard.js +1 -2
  335. package/lib/components/CarouselRichTextCard/CarouselRichTextCard.js.map +1 -1
  336. package/lib/components/CarouselTariffsCard/CarouselTariffsCard.js +2 -2
  337. package/lib/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
  338. package/lib/components/ComparisonTable/ComparisonTable.js +1 -1
  339. package/lib/components/ComparisonTable/ComparisonTable.js.map +1 -1
  340. package/lib/components/ComparisonTable/ComparisonTable.mobile.js +1 -1
  341. package/lib/components/ComparisonTable/ComparisonTable.mobile.js.map +1 -1
  342. package/lib/components/ComparisonTable/ComparisonTableBody.js +1 -1
  343. package/lib/components/ComparisonTable/ComparisonTableBody.js.map +1 -1
  344. package/lib/components/ComparisonTable/ComparisonTableRows.js +1 -1
  345. package/lib/components/ComparisonTable/ComparisonTableRows.js.map +1 -1
  346. package/lib/components/ComparisonTable/HeaderCell.js +1 -1
  347. package/lib/components/ComparisonTable/HeaderCell.js.map +1 -1
  348. package/lib/components/ContactsBlock/ContactsBlock.js +1 -1
  349. package/lib/components/ContactsBlock/ContactsBlock.js.map +1 -1
  350. package/lib/components/ContentPage/ContentPage.js +17 -10
  351. package/lib/components/ContentPage/ContentPage.js.map +1 -1
  352. package/lib/components/ExchangeRateTile/CurrencyTable.js +4 -3
  353. package/lib/components/ExchangeRateTile/CurrencyTable.js.map +1 -1
  354. package/lib/components/ExchangeRateTile/CurrentLocation.js +3 -2
  355. package/lib/components/ExchangeRateTile/CurrentLocation.js.map +1 -1
  356. package/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +1 -1
  357. package/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -1
  358. package/lib/components/ExchangeRateTile/ExchangeRateTile.fixture.mobile.d.ts +6 -0
  359. package/lib/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
  360. package/lib/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
  361. package/lib/components/Footer/Contacts.d.ts +0 -1
  362. package/lib/components/Footer/Contacts.js +3 -4
  363. package/lib/components/Footer/Contacts.js.map +1 -1
  364. package/lib/components/Footer/Footer.d.ts +1 -4
  365. package/lib/components/Footer/Footer.js +4 -6
  366. package/lib/components/Footer/Footer.js.map +1 -1
  367. package/lib/components/Footer/Footer.mobile.d.ts +1 -4
  368. package/lib/components/Footer/Footer.mobile.js +5 -6
  369. package/lib/components/Footer/Footer.mobile.js.map +1 -1
  370. package/lib/components/Footer/FooterProps.d.ts +6 -0
  371. package/lib/components/Footer/FooterProps.js +2 -0
  372. package/lib/components/Footer/FooterProps.js.map +1 -0
  373. package/lib/components/Footer/HorizontalNavigation.js +1 -1
  374. package/lib/components/Footer/HorizontalNavigation.js.map +1 -1
  375. package/lib/components/Footer/HorizontalNavigation.mobile.js +1 -1
  376. package/lib/components/Footer/HorizontalNavigation.mobile.js.map +1 -1
  377. package/lib/components/Footer/MediaButton.d.ts +1 -1
  378. package/lib/components/Footer/SocialMedia.js +2 -1
  379. package/lib/components/Footer/SocialMedia.js.map +1 -1
  380. package/lib/components/Footer/TextInformation.js +1 -1
  381. package/lib/components/Footer/TextInformation.js.map +1 -1
  382. package/lib/components/Footer/buttonSizeStyles.d.ts +4 -0
  383. package/lib/components/Footer/buttonSizeStyles.js +5 -0
  384. package/lib/components/Footer/buttonSizeStyles.js.map +1 -0
  385. package/lib/components/Footer/buttonSizeStyles.mobile.d.ts +4 -0
  386. package/lib/components/Footer/buttonSizeStyles.mobile.js +5 -0
  387. package/lib/components/Footer/buttonSizeStyles.mobile.js.map +1 -0
  388. package/lib/components/Footer/buttonStylesWithText.js +1 -4
  389. package/lib/components/Footer/buttonStylesWithText.js.map +1 -1
  390. package/lib/components/GracePeriod/GracePeriod.js +2 -2
  391. package/lib/components/GracePeriod/GracePeriod.js.map +1 -1
  392. package/lib/components/Header/Header.d.ts +1 -4
  393. package/lib/components/Header/Header.fixture.d.ts +0 -1
  394. package/lib/components/Header/Header.js +3 -9
  395. package/lib/components/Header/Header.js.map +1 -1
  396. package/lib/components/Header/Header.mobile.d.ts +2 -5
  397. package/lib/components/Header/Header.mobile.js +2 -5
  398. package/lib/components/Header/Header.mobile.js.map +1 -1
  399. package/lib/components/Header/HeaderContent.d.ts +0 -2
  400. package/lib/components/Header/HeaderProps.d.ts +8 -0
  401. package/lib/components/Header/HeaderProps.js +2 -0
  402. package/lib/components/Header/HeaderProps.js.map +1 -0
  403. package/lib/components/Header/HeaderTop.js +1 -1
  404. package/lib/components/Header/HeaderTop.js.map +1 -1
  405. package/lib/components/HorizontalLayout/HorizontalLayout.fixture.mobile.d.ts +8 -0
  406. package/lib/components/HorizontalLayout/HorizontalLayout.mobile.d.ts +5 -0
  407. package/lib/components/HorizontalLayout/HorizontalLayout.mobile.js +6 -0
  408. package/lib/components/HorizontalLayout/HorizontalLayout.mobile.js.map +1 -0
  409. package/lib/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js +1 -1
  410. package/lib/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js.map +1 -1
  411. package/lib/components/InvestmentInfo/InvestmentInfo.js +5 -5
  412. package/lib/components/InvestmentInfo/InvestmentInfo.js.map +1 -1
  413. package/lib/components/LinkDocs/LinkDocs.js +2 -2
  414. package/lib/components/LinkDocs/LinkDocs.js.map +1 -1
  415. package/lib/components/MobileAppTile/MobileAppTile.js +1 -1
  416. package/lib/components/MobileAppTile/MobileAppTile.js.map +1 -1
  417. package/lib/components/MobileAppTile/renderDescription.js +1 -1
  418. package/lib/components/MobileAppTile/renderDescription.js.map +1 -1
  419. package/lib/components/OfficeMap/OfficeMap.js +1 -1
  420. package/lib/components/OfficeMap/OfficeMap.js.map +1 -1
  421. package/lib/components/OfficeServicesBlock/OfficeServicesBlock.js +2 -2
  422. package/lib/components/OfficeServicesBlock/OfficeServicesBlock.js.map +1 -1
  423. package/lib/components/ProductTile/ProductTile.fixture.mobile.d.ts +16 -0
  424. package/lib/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.js +4 -8
  425. package/lib/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.js.map +1 -1
  426. package/lib/components/RollupItem/RollupItem.js +5 -2
  427. package/lib/components/RollupItem/RollupItem.js.map +1 -1
  428. package/lib/components/SafeDepositRental/RadioButtons.d.ts +6 -0
  429. package/lib/components/SafeDepositRental/RadioButtons.js +11 -0
  430. package/lib/components/SafeDepositRental/RadioButtons.js.map +1 -0
  431. package/lib/components/SafeDepositRental/RegionsAndBranches.js +1 -1
  432. package/lib/components/SafeDepositRental/RegionsAndBranches.js.map +1 -1
  433. package/lib/components/SafeDepositRental/RentalPeriod.js +2 -1
  434. package/lib/components/SafeDepositRental/RentalPeriod.js.map +1 -1
  435. package/lib/components/SafeDepositRental/SafeBoxCases.js +1 -1
  436. package/lib/components/SafeDepositRental/SafeBoxCases.js.map +1 -1
  437. package/lib/components/SafeDepositRental/SafeDepositRental.fixture.mobile.d.ts +6 -0
  438. package/lib/components/SafeDepositRental/SafeDepositRentalFields.js +2 -2
  439. package/lib/components/SafeDepositRental/SafeDepositRentalFields.js.map +1 -1
  440. package/lib/components/SafeDepositRental/SafeDepositRentalForm.js +1 -1
  441. package/lib/components/SafeDepositRental/SafeDepositRentalForm.js.map +1 -1
  442. package/lib/components/SafeDepositRental/SafeDepositRentalTotal.js +4 -3
  443. package/lib/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -1
  444. package/lib/components/StepsBlock/renderStep.js +1 -1
  445. package/lib/components/StepsBlock/renderStep.js.map +1 -1
  446. package/lib/components/Tabs/ScrollableTabs.js +0 -1
  447. package/lib/components/Tabs/ScrollableTabs.js.map +1 -1
  448. package/lib/components/TariffsTable/TariffsTable.js +3 -3
  449. package/lib/components/TariffsTable/TariffsTable.js.map +1 -1
  450. package/lib/components/VerticalLayout/VerticalLayout.fixture.d.ts +2 -2
  451. package/lib/components/VerticalLayout/VerticalLayout.js +4 -14
  452. package/lib/components/VerticalLayout/VerticalLayout.js.map +1 -1
  453. package/lib/components/VerticalLayout/VerticalLayoutContent.d.ts +0 -2
  454. package/lib/hooks/useCarouselControls.d.ts +1 -1
  455. package/lib/hooks/useCarouselControls.js +5 -6
  456. package/lib/hooks/useCarouselControls.js.map +1 -1
  457. package/lib/services/regionsGrantSupport/RegionsGrantSupportData.d.ts +7 -0
  458. package/lib/services/regionsGrantSupport/RegionsGrantSupportData.js +2 -0
  459. package/lib/services/regionsGrantSupport/RegionsGrantSupportData.js.map +1 -0
  460. package/lib/ui-kit/BaseProductTile/BaseProductTileContent.d.ts +5 -5
  461. package/lib/ui-kit/BaseTile/BaseTile.js +1 -1
  462. package/lib/ui-kit/BaseTile/BaseTile.js.map +1 -1
  463. package/lib/ui-kit/BlockWrapper.js +1 -1
  464. package/lib/ui-kit/BlockWrapper.js.map +1 -1
  465. package/lib/ui-kit/LinkButton/LinkButton.fixture.mobile.d.ts +6 -0
  466. package/lib/ui-kit/LinkButton/LinkButton.js +4 -3
  467. package/lib/ui-kit/LinkButton/LinkButton.js.map +1 -1
  468. package/lib/ui-kit/LinkList/LinkList.js +2 -2
  469. package/lib/ui-kit/LinkList/LinkList.js.map +1 -1
  470. package/lib/ui-kit/LocationDialog/LocationDialog.js +2 -2
  471. package/lib/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
  472. package/lib/ui-kit/LocationDialog/SearchBar.js +1 -1
  473. package/lib/ui-kit/LocationDialog/SearchBar.js.map +1 -1
  474. package/lib/ui-kit/SearchDialog/SearchDialog.js +1 -1
  475. package/lib/ui-kit/SearchDialog/SearchDialog.js.map +1 -1
  476. package/lib/ui-kit/SlideCheckbox/SlideCheckbox.js +1 -1
  477. package/lib/ui-kit/SlideCheckbox/SlideCheckbox.js.map +1 -1
  478. package/lib/ui-kit/SwipeListControl/SwipeListContainer.js +1 -1
  479. package/lib/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
  480. package/lib/ui-kit/SwipeListControl/useSwipeListScroll.d.ts +1 -2
  481. package/lib/ui-kit/SwipeListControl/useSwipeListScroll.js +11 -11
  482. package/lib/ui-kit/SwipeListControl/useSwipeListScroll.js.map +1 -1
  483. package/lib/ui-kit/TableArrowScrollControl/TableArrowScrollControl.js +1 -1
  484. package/lib/ui-kit/TableArrowScrollControl/TableArrowScrollControl.js.map +1 -1
  485. package/lib/ui-kit/YandexMap/YandexMap.js +1 -1
  486. package/lib/ui-kit/YandexMap/YandexMap.js.map +1 -1
  487. package/lib/ui-kit/YandexMap/renderOpenMap.d.ts +0 -1
  488. package/lib/ui-kit/YandexMap/renderSearchField.d.ts +0 -1
  489. package/lib/ui-kit/YandexMap/renderUserGeolocation.d.ts +0 -1
  490. package/mobile/bundle/BlockRenderer/renderBlock.d.ts +2 -4
  491. package/mobile/bundle/BlockRenderer/renderBlockList.d.ts +5 -2
  492. package/mobile/bundle/BlockRenderer/renderChildren.d.ts +5 -4
  493. package/mobile/bundle/bundle.umd.js +1071 -200
  494. package/mobile/bundle/bundle.umd.min.js +1 -1
  495. package/mobile/bundle/components/ApplicationForm/ApplicationFormContent.d.ts +52 -6
  496. package/mobile/bundle/components/ApplicationForm/ApplicationFormGrantSupport.d.ts +2 -0
  497. package/mobile/bundle/components/ApplicationForm/ApplicationFormsProps.d.ts +1 -0
  498. package/mobile/bundle/components/ApplicationForm/EmbeddableForms.d.ts +8 -0
  499. package/mobile/bundle/components/BonusBenefitsBlock/renderBonusBenefits.d.ts +1 -1
  500. package/mobile/bundle/components/Carousel/Carousel.d.ts +1 -1
  501. package/mobile/bundle/components/Carousel/CarouselContent.d.ts +3 -9
  502. package/mobile/bundle/components/Carousel/CarouselScrollButtons.d.ts +5 -6
  503. package/mobile/bundle/components/Carousel/renderControlButtons.d.ts +2 -3
  504. package/mobile/bundle/components/CarouselCard/CarouselCard.d.ts +1 -1
  505. package/mobile/bundle/components/CarouselLinks/CarouselLinks.d.ts +1 -0
  506. package/mobile/bundle/components/CarouselLinks/CarouselLinksContent.d.ts +2 -0
  507. package/mobile/bundle/components/Footer/Contacts.d.ts +0 -1
  508. package/mobile/bundle/components/Footer/Footer.d.ts +1 -4
  509. package/mobile/bundle/components/Footer/FooterProps.d.ts +6 -0
  510. package/mobile/bundle/components/Footer/MediaButton.d.ts +1 -1
  511. package/mobile/bundle/components/Footer/SocialMedia.d.ts +4 -2
  512. package/mobile/bundle/components/Footer/buttonSizeStyles.d.ts +4 -0
  513. package/mobile/bundle/components/Header/Header.d.ts +2 -5
  514. package/mobile/bundle/components/Header/HeaderContent.d.ts +0 -2
  515. package/mobile/bundle/components/Header/HeaderProps.d.ts +8 -0
  516. package/mobile/bundle/components/SafeDepositRental/RadioButtons.d.ts +6 -0
  517. package/mobile/bundle/components/VerticalLayout/VerticalLayoutContent.d.ts +0 -2
  518. package/mobile/bundle/hooks/useCarouselControls.d.ts +1 -1
  519. package/mobile/bundle/services/regionsGrantSupport/RegionsGrantSupportData.d.ts +7 -0
  520. package/mobile/bundle/ui-kit/BaseProductTile/BaseProductTileContent.d.ts +5 -5
  521. package/mobile/bundle/ui-kit/SwipeListControl/useSwipeListScroll.d.ts +1 -2
  522. package/mobile/dist/BlockRenderer/renderBlock.d.ts +2 -4
  523. package/mobile/dist/BlockRenderer/renderBlock.js +1 -2
  524. package/mobile/dist/BlockRenderer/renderBlock.js.map +1 -1
  525. package/mobile/dist/BlockRenderer/renderBlockList.d.ts +5 -2
  526. package/mobile/dist/BlockRenderer/renderBlockList.js +12 -7
  527. package/mobile/dist/BlockRenderer/renderBlockList.js.map +1 -1
  528. package/mobile/dist/BlockRenderer/renderChildren.d.ts +5 -4
  529. package/mobile/dist/BlockRenderer/renderChildren.js +2 -2
  530. package/mobile/dist/BlockRenderer/renderChildren.js.map +1 -1
  531. package/mobile/dist/components/ApplicationForm/ApplicationForm.js +16 -14
  532. package/mobile/dist/components/ApplicationForm/ApplicationForm.js.map +1 -1
  533. package/mobile/dist/components/ApplicationForm/ApplicationFormContent.d.ts +52 -6
  534. package/mobile/dist/components/ApplicationForm/ApplicationFormGrantSupport.d.ts +2 -0
  535. package/mobile/dist/components/ApplicationForm/ApplicationFormGrantSupport.js +22 -0
  536. package/mobile/dist/components/ApplicationForm/ApplicationFormGrantSupport.js.map +1 -0
  537. package/mobile/dist/components/ApplicationForm/ApplicationFormsProps.d.ts +1 -0
  538. package/mobile/dist/components/ApplicationForm/EmbeddableForms.d.ts +8 -0
  539. package/mobile/dist/components/ApplicationForm/EmbeddableForms.js +17 -0
  540. package/mobile/dist/components/ApplicationForm/EmbeddableForms.js.map +1 -0
  541. package/mobile/dist/components/BenefitsBlock/BenefitsBlock.js +1 -1
  542. package/mobile/dist/components/Blocks.js +6 -0
  543. package/mobile/dist/components/Blocks.js.map +1 -1
  544. package/mobile/dist/components/Bonus/Bonus.js +10 -13
  545. package/mobile/dist/components/Bonus/Bonus.js.map +1 -1
  546. package/mobile/dist/components/BonusBenefitsBlock/renderBonusBenefits.d.ts +1 -1
  547. package/mobile/dist/components/BonusBenefitsBlock/renderBonusBenefits.js.map +1 -1
  548. package/mobile/dist/components/Calculator/BusinessDepositCalculatorForm.js +4 -4
  549. package/mobile/dist/components/Calculator/BusinessDepositCalculatorForm.js.map +1 -1
  550. package/mobile/dist/components/Calculator/CreditCalculatorForm.js +1 -1
  551. package/mobile/dist/components/Calculator/CreditCalculatorForm.js.map +1 -1
  552. package/mobile/dist/components/Calculator/DepositCalculatorForm.js +3 -3
  553. package/mobile/dist/components/Calculator/DepositCalculatorForm.js.map +1 -1
  554. package/mobile/dist/components/Calculator/UnknownRate.js +1 -1
  555. package/mobile/dist/components/Calculator/UnknownRate.js.map +1 -1
  556. package/mobile/dist/components/Carousel/Carousel.d.ts +1 -1
  557. package/mobile/dist/components/Carousel/Carousel.js +18 -33
  558. package/mobile/dist/components/Carousel/Carousel.js.map +1 -1
  559. package/mobile/dist/components/Carousel/CarouselContent.d.ts +3 -9
  560. package/mobile/dist/components/Carousel/CarouselScrollButtons.d.ts +5 -6
  561. package/mobile/dist/components/Carousel/CarouselScrollButtons.js +4 -4
  562. package/mobile/dist/components/Carousel/CarouselScrollButtons.js.map +1 -1
  563. package/mobile/dist/components/Carousel/renderControlButtons.d.ts +2 -3
  564. package/mobile/dist/components/Carousel/renderControlButtons.js +3 -3
  565. package/mobile/dist/components/Carousel/renderControlButtons.js.map +1 -1
  566. package/mobile/dist/components/CarouselBankHistoryCard/CarouselBankHistoryCard.js +1 -2
  567. package/mobile/dist/components/CarouselBankHistoryCard/CarouselBankHistoryCard.js.map +1 -1
  568. package/mobile/dist/components/CarouselCard/CarouselCard.d.ts +1 -1
  569. package/mobile/dist/components/CarouselCard/CarouselCard.js +6 -5
  570. package/mobile/dist/components/CarouselCard/CarouselCard.js.map +1 -1
  571. package/mobile/dist/components/CarouselCard/constants.js +2 -2
  572. package/mobile/dist/components/CarouselCard/constants.js.map +1 -1
  573. package/mobile/dist/components/CarouselCatalogCard/CarouselCatalogCard.js +2 -2
  574. package/mobile/dist/components/CarouselCatalogCard/CarouselCatalogCard.js.map +1 -1
  575. package/mobile/dist/components/CarouselEventCard/CarouselEventCard.js +1 -2
  576. package/mobile/dist/components/CarouselEventCard/CarouselEventCard.js.map +1 -1
  577. package/mobile/dist/components/CarouselInvestmentCard/CarouselInvestmentCard.js +1 -1
  578. package/mobile/dist/components/CarouselInvestmentCard/CarouselInvestmentCard.js.map +1 -1
  579. package/mobile/dist/components/CarouselLinks/CarouselLinks.d.ts +1 -0
  580. package/mobile/dist/components/CarouselLinks/CarouselLinks.js +7 -8
  581. package/mobile/dist/components/CarouselLinks/CarouselLinks.js.map +1 -1
  582. package/mobile/dist/components/CarouselLinks/CarouselLinksContent.d.ts +2 -0
  583. package/mobile/dist/components/CarouselProductCard/CarouselProductCard.js +4 -4
  584. package/mobile/dist/components/CarouselProductCard/CarouselProductCard.js.map +1 -1
  585. package/mobile/dist/components/CarouselProgramsCard/CarouselProgramsCard.js +1 -4
  586. package/mobile/dist/components/CarouselProgramsCard/CarouselProgramsCard.js.map +1 -1
  587. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js +1 -2
  588. package/mobile/dist/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -1
  589. package/mobile/dist/components/CarouselRichTextCard/CarouselRichTextCard.js +1 -2
  590. package/mobile/dist/components/CarouselRichTextCard/CarouselRichTextCard.js.map +1 -1
  591. package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCard.js +2 -2
  592. package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
  593. package/mobile/dist/components/ComparisonTable/ComparisonTable.js +1 -1
  594. package/mobile/dist/components/ComparisonTable/ComparisonTable.js.map +1 -1
  595. package/mobile/dist/components/ComparisonTable/ComparisonTableBody.js +1 -1
  596. package/mobile/dist/components/ComparisonTable/ComparisonTableBody.js.map +1 -1
  597. package/mobile/dist/components/ComparisonTable/ComparisonTableRows.js +1 -1
  598. package/mobile/dist/components/ComparisonTable/ComparisonTableRows.js.map +1 -1
  599. package/mobile/dist/components/ContactsBlock/ContactsBlock.js +1 -1
  600. package/mobile/dist/components/ContactsBlock/ContactsBlock.js.map +1 -1
  601. package/mobile/dist/components/ContentPage/ContentPage.js +17 -10
  602. package/mobile/dist/components/ContentPage/ContentPage.js.map +1 -1
  603. package/mobile/dist/components/ExchangeRateTile/CurrencyTable.js +4 -3
  604. package/mobile/dist/components/ExchangeRateTile/CurrencyTable.js.map +1 -1
  605. package/mobile/dist/components/ExchangeRateTile/CurrentLocation.js +3 -2
  606. package/mobile/dist/components/ExchangeRateTile/CurrentLocation.js.map +1 -1
  607. package/mobile/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +1 -1
  608. package/mobile/dist/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -1
  609. package/mobile/dist/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
  610. package/mobile/dist/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
  611. package/mobile/dist/components/Footer/Contacts.d.ts +0 -1
  612. package/mobile/dist/components/Footer/Contacts.js +3 -4
  613. package/mobile/dist/components/Footer/Contacts.js.map +1 -1
  614. package/mobile/dist/components/Footer/Footer.d.ts +1 -4
  615. package/mobile/dist/components/Footer/Footer.js +5 -6
  616. package/mobile/dist/components/Footer/Footer.js.map +1 -1
  617. package/mobile/dist/components/Footer/FooterProps.d.ts +6 -0
  618. package/mobile/dist/components/Footer/FooterProps.js +2 -0
  619. package/mobile/dist/components/Footer/FooterProps.js.map +1 -0
  620. package/mobile/dist/components/Footer/HorizontalNavigation.js +1 -1
  621. package/mobile/dist/components/Footer/HorizontalNavigation.js.map +1 -1
  622. package/mobile/dist/components/Footer/MediaButton.d.ts +1 -1
  623. package/mobile/dist/components/Footer/SocialMedia.d.ts +4 -2
  624. package/mobile/dist/components/Footer/SocialMedia.js +3 -1
  625. package/mobile/dist/components/Footer/SocialMedia.js.map +1 -1
  626. package/mobile/dist/components/Footer/TextInformation.js +1 -1
  627. package/mobile/dist/components/Footer/TextInformation.js.map +1 -1
  628. package/mobile/dist/components/Footer/buttonSizeStyles.d.ts +4 -0
  629. package/mobile/dist/components/Footer/buttonSizeStyles.js +7 -0
  630. package/mobile/dist/components/Footer/buttonSizeStyles.js.map +1 -0
  631. package/mobile/dist/components/Footer/buttonStylesWithText.js +2 -5
  632. package/mobile/dist/components/Footer/buttonStylesWithText.js.map +1 -1
  633. package/mobile/dist/components/GracePeriod/GracePeriod.js +2 -2
  634. package/mobile/dist/components/GracePeriod/GracePeriod.js.map +1 -1
  635. package/mobile/dist/components/Header/Header.d.ts +2 -5
  636. package/mobile/dist/components/Header/Header.js +2 -5
  637. package/mobile/dist/components/Header/Header.js.map +1 -1
  638. package/mobile/dist/components/Header/HeaderContent.d.ts +0 -2
  639. package/mobile/dist/components/Header/HeaderProps.d.ts +8 -0
  640. package/mobile/dist/components/Header/HeaderProps.js +2 -0
  641. package/mobile/dist/components/Header/HeaderProps.js.map +1 -0
  642. package/mobile/dist/components/Header/HeaderTop.js +1 -1
  643. package/mobile/dist/components/Header/HeaderTop.js.map +1 -1
  644. package/mobile/dist/components/HorizontalLayout/HorizontalLayout.js +3 -8
  645. package/mobile/dist/components/HorizontalLayout/HorizontalLayout.js.map +1 -1
  646. package/mobile/dist/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js +1 -1
  647. package/mobile/dist/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js.map +1 -1
  648. package/mobile/dist/components/InvestmentInfo/InvestmentInfo.js +5 -5
  649. package/mobile/dist/components/InvestmentInfo/InvestmentInfo.js.map +1 -1
  650. package/mobile/dist/components/LinkDocs/LinkDocs.js +2 -2
  651. package/mobile/dist/components/LinkDocs/LinkDocs.js.map +1 -1
  652. package/mobile/dist/components/MobileAppTile/MobileAppTile.js +1 -1
  653. package/mobile/dist/components/MobileAppTile/MobileAppTile.js.map +1 -1
  654. package/mobile/dist/components/MobileAppTile/renderDescription.js +1 -1
  655. package/mobile/dist/components/MobileAppTile/renderDescription.js.map +1 -1
  656. package/mobile/dist/components/OfficeMap/OfficeMap.js +1 -1
  657. package/mobile/dist/components/OfficeMap/OfficeMap.js.map +1 -1
  658. package/mobile/dist/components/OfficeServicesBlock/OfficeServicesBlock.js +2 -2
  659. package/mobile/dist/components/OfficeServicesBlock/OfficeServicesBlock.js.map +1 -1
  660. package/mobile/dist/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.js +4 -8
  661. package/mobile/dist/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.js.map +1 -1
  662. package/mobile/dist/components/RollupItem/RollupItem.js +5 -2
  663. package/mobile/dist/components/RollupItem/RollupItem.js.map +1 -1
  664. package/mobile/dist/components/SafeDepositRental/RadioButtons.d.ts +6 -0
  665. package/mobile/dist/components/SafeDepositRental/RadioButtons.js +13 -0
  666. package/mobile/dist/components/SafeDepositRental/RadioButtons.js.map +1 -0
  667. package/mobile/dist/components/SafeDepositRental/RegionsAndBranches.js +1 -1
  668. package/mobile/dist/components/SafeDepositRental/RegionsAndBranches.js.map +1 -1
  669. package/mobile/dist/components/SafeDepositRental/RentalPeriod.js +2 -1
  670. package/mobile/dist/components/SafeDepositRental/RentalPeriod.js.map +1 -1
  671. package/mobile/dist/components/SafeDepositRental/SafeBoxCases.js +1 -1
  672. package/mobile/dist/components/SafeDepositRental/SafeBoxCases.js.map +1 -1
  673. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalFields.js +2 -2
  674. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalFields.js.map +1 -1
  675. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalForm.js +1 -1
  676. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalForm.js.map +1 -1
  677. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalTotal.js +4 -3
  678. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -1
  679. package/mobile/dist/components/StepsBlock/renderStep.js +1 -1
  680. package/mobile/dist/components/StepsBlock/renderStep.js.map +1 -1
  681. package/mobile/dist/components/Tabs/ScrollableTabs.js +0 -1
  682. package/mobile/dist/components/Tabs/ScrollableTabs.js.map +1 -1
  683. package/mobile/dist/components/VerticalLayout/VerticalLayout.js +4 -14
  684. package/mobile/dist/components/VerticalLayout/VerticalLayout.js.map +1 -1
  685. package/mobile/dist/components/VerticalLayout/VerticalLayoutContent.d.ts +0 -2
  686. package/mobile/dist/hooks/useCarouselControls.d.ts +1 -1
  687. package/mobile/dist/hooks/useCarouselControls.js +5 -6
  688. package/mobile/dist/hooks/useCarouselControls.js.map +1 -1
  689. package/mobile/dist/services/regionsGrantSupport/RegionsGrantSupportData.d.ts +7 -0
  690. package/mobile/dist/services/regionsGrantSupport/RegionsGrantSupportData.js +2 -0
  691. package/mobile/dist/services/regionsGrantSupport/RegionsGrantSupportData.js.map +1 -0
  692. package/mobile/dist/ui-kit/BaseProductTile/BaseProductTileContent.d.ts +5 -5
  693. package/mobile/dist/ui-kit/BaseTile/BaseTile.js +1 -1
  694. package/mobile/dist/ui-kit/BaseTile/BaseTile.js.map +1 -1
  695. package/mobile/dist/ui-kit/BlockWrapper.js +1 -1
  696. package/mobile/dist/ui-kit/BlockWrapper.js.map +1 -1
  697. package/mobile/dist/ui-kit/LinkButton/LinkButton.js +4 -3
  698. package/mobile/dist/ui-kit/LinkButton/LinkButton.js.map +1 -1
  699. package/mobile/dist/ui-kit/LinkList/LinkList.js +2 -2
  700. package/mobile/dist/ui-kit/LinkList/LinkList.js.map +1 -1
  701. package/mobile/dist/ui-kit/LocationDialog/LocationDialog.js +2 -2
  702. package/mobile/dist/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
  703. package/mobile/dist/ui-kit/LocationDialog/SearchBar.js +1 -1
  704. package/mobile/dist/ui-kit/LocationDialog/SearchBar.js.map +1 -1
  705. package/mobile/dist/ui-kit/SearchDialog/SearchDialog.js +1 -1
  706. package/mobile/dist/ui-kit/SearchDialog/SearchDialog.js.map +1 -1
  707. package/mobile/dist/ui-kit/SlideCheckbox/SlideCheckbox.js +1 -1
  708. package/mobile/dist/ui-kit/SlideCheckbox/SlideCheckbox.js.map +1 -1
  709. package/mobile/dist/ui-kit/SwipeListControl/SwipeListContainer.js +1 -1
  710. package/mobile/dist/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
  711. package/mobile/dist/ui-kit/SwipeListControl/useSwipeListScroll.d.ts +1 -2
  712. package/mobile/dist/ui-kit/SwipeListControl/useSwipeListScroll.js +11 -11
  713. package/mobile/dist/ui-kit/SwipeListControl/useSwipeListScroll.js.map +1 -1
  714. package/mobile/dist/ui-kit/TableArrowScrollControl/TableArrowScrollControl.js +1 -1
  715. package/mobile/dist/ui-kit/TableArrowScrollControl/TableArrowScrollControl.js.map +1 -1
  716. package/mobile/dist/ui-kit/YandexMap/YandexMap.js +1 -1
  717. package/mobile/dist/ui-kit/YandexMap/YandexMap.js.map +1 -1
  718. package/mobile/lib/BlockRenderer/renderBlock.d.ts +2 -4
  719. package/mobile/lib/BlockRenderer/renderBlock.js +1 -2
  720. package/mobile/lib/BlockRenderer/renderBlock.js.map +1 -1
  721. package/mobile/lib/BlockRenderer/renderBlockList.d.ts +5 -2
  722. package/mobile/lib/BlockRenderer/renderBlockList.js +12 -7
  723. package/mobile/lib/BlockRenderer/renderBlockList.js.map +1 -1
  724. package/mobile/lib/BlockRenderer/renderChildren.d.ts +5 -4
  725. package/mobile/lib/BlockRenderer/renderChildren.js +2 -2
  726. package/mobile/lib/BlockRenderer/renderChildren.js.map +1 -1
  727. package/mobile/lib/common.css +1 -1
  728. package/mobile/lib/components/ApplicationForm/ApplicationForm.js +16 -14
  729. package/mobile/lib/components/ApplicationForm/ApplicationForm.js.map +1 -1
  730. package/mobile/lib/components/ApplicationForm/ApplicationFormContent.d.ts +52 -6
  731. package/mobile/lib/components/ApplicationForm/ApplicationFormGrantSupport.d.ts +2 -0
  732. package/mobile/lib/components/ApplicationForm/ApplicationFormGrantSupport.js +20 -0
  733. package/mobile/lib/components/ApplicationForm/ApplicationFormGrantSupport.js.map +1 -0
  734. package/mobile/lib/components/ApplicationForm/ApplicationFormsProps.d.ts +1 -0
  735. package/mobile/lib/components/ApplicationForm/EmbeddableForms.d.ts +8 -0
  736. package/mobile/lib/components/ApplicationForm/EmbeddableForms.js +15 -0
  737. package/mobile/lib/components/ApplicationForm/EmbeddableForms.js.map +1 -0
  738. package/mobile/lib/components/BenefitsBlock/BenefitsBlock.js +1 -1
  739. package/mobile/lib/components/Blocks.js +6 -0
  740. package/mobile/lib/components/Blocks.js.map +1 -1
  741. package/mobile/lib/components/Bonus/Bonus.js +10 -13
  742. package/mobile/lib/components/Bonus/Bonus.js.map +1 -1
  743. package/mobile/lib/components/BonusBenefitsBlock/renderBonusBenefits.d.ts +1 -1
  744. package/mobile/lib/components/BonusBenefitsBlock/renderBonusBenefits.js.map +1 -1
  745. package/mobile/lib/components/Calculator/BusinessDepositCalculatorForm.js +4 -4
  746. package/mobile/lib/components/Calculator/BusinessDepositCalculatorForm.js.map +1 -1
  747. package/mobile/lib/components/Calculator/CreditCalculatorForm.js +1 -1
  748. package/mobile/lib/components/Calculator/CreditCalculatorForm.js.map +1 -1
  749. package/mobile/lib/components/Calculator/DepositCalculatorForm.js +3 -3
  750. package/mobile/lib/components/Calculator/DepositCalculatorForm.js.map +1 -1
  751. package/mobile/lib/components/Calculator/UnknownRate.js +1 -1
  752. package/mobile/lib/components/Calculator/UnknownRate.js.map +1 -1
  753. package/mobile/lib/components/Carousel/Carousel.d.ts +1 -1
  754. package/mobile/lib/components/Carousel/Carousel.js +18 -33
  755. package/mobile/lib/components/Carousel/Carousel.js.map +1 -1
  756. package/mobile/lib/components/Carousel/CarouselContent.d.ts +3 -9
  757. package/mobile/lib/components/Carousel/CarouselScrollButtons.d.ts +5 -6
  758. package/mobile/lib/components/Carousel/CarouselScrollButtons.js +4 -4
  759. package/mobile/lib/components/Carousel/CarouselScrollButtons.js.map +1 -1
  760. package/mobile/lib/components/Carousel/renderControlButtons.d.ts +2 -3
  761. package/mobile/lib/components/Carousel/renderControlButtons.js +3 -3
  762. package/mobile/lib/components/Carousel/renderControlButtons.js.map +1 -1
  763. package/mobile/lib/components/CarouselBankHistoryCard/CarouselBankHistoryCard.js +1 -2
  764. package/mobile/lib/components/CarouselBankHistoryCard/CarouselBankHistoryCard.js.map +1 -1
  765. package/mobile/lib/components/CarouselCard/CarouselCard.d.ts +1 -1
  766. package/mobile/lib/components/CarouselCard/CarouselCard.js +6 -5
  767. package/mobile/lib/components/CarouselCard/CarouselCard.js.map +1 -1
  768. package/mobile/lib/components/CarouselCard/constants.js +2 -2
  769. package/mobile/lib/components/CarouselCard/constants.js.map +1 -1
  770. package/mobile/lib/components/CarouselCatalogCard/CarouselCatalogCard.js +2 -2
  771. package/mobile/lib/components/CarouselCatalogCard/CarouselCatalogCard.js.map +1 -1
  772. package/mobile/lib/components/CarouselEventCard/CarouselEventCard.js +1 -2
  773. package/mobile/lib/components/CarouselEventCard/CarouselEventCard.js.map +1 -1
  774. package/mobile/lib/components/CarouselInvestmentCard/CarouselInvestmentCard.js +1 -1
  775. package/mobile/lib/components/CarouselInvestmentCard/CarouselInvestmentCard.js.map +1 -1
  776. package/mobile/lib/components/CarouselLinks/CarouselLinks.d.ts +1 -0
  777. package/mobile/lib/components/CarouselLinks/CarouselLinks.js +7 -8
  778. package/mobile/lib/components/CarouselLinks/CarouselLinks.js.map +1 -1
  779. package/mobile/lib/components/CarouselLinks/CarouselLinksContent.d.ts +2 -0
  780. package/mobile/lib/components/CarouselProductCard/CarouselProductCard.js +4 -4
  781. package/mobile/lib/components/CarouselProductCard/CarouselProductCard.js.map +1 -1
  782. package/mobile/lib/components/CarouselProgramsCard/CarouselProgramsCard.js +1 -4
  783. package/mobile/lib/components/CarouselProgramsCard/CarouselProgramsCard.js.map +1 -1
  784. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js +1 -2
  785. package/mobile/lib/components/CarouselRecommendationCard/CarouselRecommendationCard.js.map +1 -1
  786. package/mobile/lib/components/CarouselRichTextCard/CarouselRichTextCard.js +1 -2
  787. package/mobile/lib/components/CarouselRichTextCard/CarouselRichTextCard.js.map +1 -1
  788. package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCard.js +2 -2
  789. package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
  790. package/mobile/lib/components/ComparisonTable/ComparisonTable.js +1 -1
  791. package/mobile/lib/components/ComparisonTable/ComparisonTable.js.map +1 -1
  792. package/mobile/lib/components/ComparisonTable/ComparisonTableBody.js +1 -1
  793. package/mobile/lib/components/ComparisonTable/ComparisonTableBody.js.map +1 -1
  794. package/mobile/lib/components/ComparisonTable/ComparisonTableRows.js +1 -1
  795. package/mobile/lib/components/ComparisonTable/ComparisonTableRows.js.map +1 -1
  796. package/mobile/lib/components/ContactsBlock/ContactsBlock.js +1 -1
  797. package/mobile/lib/components/ContactsBlock/ContactsBlock.js.map +1 -1
  798. package/mobile/lib/components/ContentPage/ContentPage.js +17 -10
  799. package/mobile/lib/components/ContentPage/ContentPage.js.map +1 -1
  800. package/mobile/lib/components/ExchangeRateTile/CurrencyTable.js +4 -3
  801. package/mobile/lib/components/ExchangeRateTile/CurrencyTable.js.map +1 -1
  802. package/mobile/lib/components/ExchangeRateTile/CurrentLocation.js +3 -2
  803. package/mobile/lib/components/ExchangeRateTile/CurrentLocation.js.map +1 -1
  804. package/mobile/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js +1 -1
  805. package/mobile/lib/components/ExchangeRateTile/ExchangeCurrencyCalculator.js.map +1 -1
  806. package/mobile/lib/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
  807. package/mobile/lib/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
  808. package/mobile/lib/components/Footer/Contacts.d.ts +0 -1
  809. package/mobile/lib/components/Footer/Contacts.js +3 -4
  810. package/mobile/lib/components/Footer/Contacts.js.map +1 -1
  811. package/mobile/lib/components/Footer/Footer.d.ts +1 -4
  812. package/mobile/lib/components/Footer/Footer.js +5 -6
  813. package/mobile/lib/components/Footer/Footer.js.map +1 -1
  814. package/mobile/lib/components/Footer/FooterProps.d.ts +6 -0
  815. package/mobile/lib/components/Footer/FooterProps.js +2 -0
  816. package/mobile/lib/components/Footer/FooterProps.js.map +1 -0
  817. package/mobile/lib/components/Footer/HorizontalNavigation.js +1 -1
  818. package/mobile/lib/components/Footer/HorizontalNavigation.js.map +1 -1
  819. package/mobile/lib/components/Footer/MediaButton.d.ts +1 -1
  820. package/mobile/lib/components/Footer/SocialMedia.d.ts +4 -2
  821. package/mobile/lib/components/Footer/SocialMedia.js +4 -2
  822. package/mobile/lib/components/Footer/SocialMedia.js.map +1 -1
  823. package/mobile/lib/components/Footer/TextInformation.js +1 -1
  824. package/mobile/lib/components/Footer/TextInformation.js.map +1 -1
  825. package/mobile/lib/components/Footer/buttonSizeStyles.d.ts +4 -0
  826. package/mobile/lib/components/Footer/buttonSizeStyles.js +5 -0
  827. package/mobile/lib/components/Footer/buttonSizeStyles.js.map +1 -0
  828. package/mobile/lib/components/Footer/buttonStylesWithText.js +1 -4
  829. package/mobile/lib/components/Footer/buttonStylesWithText.js.map +1 -1
  830. package/mobile/lib/components/GracePeriod/GracePeriod.js +2 -2
  831. package/mobile/lib/components/GracePeriod/GracePeriod.js.map +1 -1
  832. package/mobile/lib/components/Header/Header.d.ts +2 -5
  833. package/mobile/lib/components/Header/Header.js +2 -5
  834. package/mobile/lib/components/Header/Header.js.map +1 -1
  835. package/mobile/lib/components/Header/HeaderContent.d.ts +0 -2
  836. package/mobile/lib/components/Header/HeaderProps.d.ts +8 -0
  837. package/mobile/lib/components/Header/HeaderProps.js +2 -0
  838. package/mobile/lib/components/Header/HeaderProps.js.map +1 -0
  839. package/mobile/lib/components/Header/HeaderTop.js +1 -1
  840. package/mobile/lib/components/Header/HeaderTop.js.map +1 -1
  841. package/mobile/lib/components/HorizontalLayout/HorizontalLayout.js +3 -8
  842. package/mobile/lib/components/HorizontalLayout/HorizontalLayout.js.map +1 -1
  843. package/mobile/lib/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js +1 -1
  844. package/mobile/lib/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js.map +1 -1
  845. package/mobile/lib/components/InvestmentInfo/InvestmentInfo.js +5 -5
  846. package/mobile/lib/components/InvestmentInfo/InvestmentInfo.js.map +1 -1
  847. package/mobile/lib/components/LinkDocs/LinkDocs.js +2 -2
  848. package/mobile/lib/components/LinkDocs/LinkDocs.js.map +1 -1
  849. package/mobile/lib/components/MobileAppTile/MobileAppTile.js +1 -1
  850. package/mobile/lib/components/MobileAppTile/MobileAppTile.js.map +1 -1
  851. package/mobile/lib/components/MobileAppTile/renderDescription.js +1 -1
  852. package/mobile/lib/components/MobileAppTile/renderDescription.js.map +1 -1
  853. package/mobile/lib/components/OfficeMap/OfficeMap.js +1 -1
  854. package/mobile/lib/components/OfficeMap/OfficeMap.js.map +1 -1
  855. package/mobile/lib/components/OfficeServicesBlock/OfficeServicesBlock.js +2 -2
  856. package/mobile/lib/components/OfficeServicesBlock/OfficeServicesBlock.js.map +1 -1
  857. package/mobile/lib/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.js +4 -8
  858. package/mobile/lib/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.js.map +1 -1
  859. package/mobile/lib/components/RollupItem/RollupItem.js +5 -2
  860. package/mobile/lib/components/RollupItem/RollupItem.js.map +1 -1
  861. package/mobile/lib/components/SafeDepositRental/RadioButtons.d.ts +6 -0
  862. package/mobile/lib/components/SafeDepositRental/RadioButtons.js +11 -0
  863. package/mobile/lib/components/SafeDepositRental/RadioButtons.js.map +1 -0
  864. package/mobile/lib/components/SafeDepositRental/RegionsAndBranches.js +1 -1
  865. package/mobile/lib/components/SafeDepositRental/RegionsAndBranches.js.map +1 -1
  866. package/mobile/lib/components/SafeDepositRental/RentalPeriod.js +2 -1
  867. package/mobile/lib/components/SafeDepositRental/RentalPeriod.js.map +1 -1
  868. package/mobile/lib/components/SafeDepositRental/SafeBoxCases.js +1 -1
  869. package/mobile/lib/components/SafeDepositRental/SafeBoxCases.js.map +1 -1
  870. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalFields.js +2 -2
  871. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalFields.js.map +1 -1
  872. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalForm.js +1 -1
  873. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalForm.js.map +1 -1
  874. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalTotal.js +4 -3
  875. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -1
  876. package/mobile/lib/components/StepsBlock/renderStep.js +1 -1
  877. package/mobile/lib/components/StepsBlock/renderStep.js.map +1 -1
  878. package/mobile/lib/components/Tabs/ScrollableTabs.js +0 -1
  879. package/mobile/lib/components/Tabs/ScrollableTabs.js.map +1 -1
  880. package/mobile/lib/components/VerticalLayout/VerticalLayout.js +4 -14
  881. package/mobile/lib/components/VerticalLayout/VerticalLayout.js.map +1 -1
  882. package/mobile/lib/components/VerticalLayout/VerticalLayoutContent.d.ts +0 -2
  883. package/mobile/lib/hooks/useCarouselControls.d.ts +1 -1
  884. package/mobile/lib/hooks/useCarouselControls.js +5 -6
  885. package/mobile/lib/hooks/useCarouselControls.js.map +1 -1
  886. package/mobile/lib/services/regionsGrantSupport/RegionsGrantSupportData.d.ts +7 -0
  887. package/mobile/lib/services/regionsGrantSupport/RegionsGrantSupportData.js +2 -0
  888. package/mobile/lib/services/regionsGrantSupport/RegionsGrantSupportData.js.map +1 -0
  889. package/mobile/lib/ui-kit/BaseProductTile/BaseProductTileContent.d.ts +5 -5
  890. package/mobile/lib/ui-kit/BaseTile/BaseTile.js +1 -1
  891. package/mobile/lib/ui-kit/BaseTile/BaseTile.js.map +1 -1
  892. package/mobile/lib/ui-kit/BlockWrapper.js +1 -1
  893. package/mobile/lib/ui-kit/BlockWrapper.js.map +1 -1
  894. package/mobile/lib/ui-kit/LinkButton/LinkButton.js +4 -3
  895. package/mobile/lib/ui-kit/LinkButton/LinkButton.js.map +1 -1
  896. package/mobile/lib/ui-kit/LinkList/LinkList.js +2 -2
  897. package/mobile/lib/ui-kit/LinkList/LinkList.js.map +1 -1
  898. package/mobile/lib/ui-kit/LocationDialog/LocationDialog.js +2 -2
  899. package/mobile/lib/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
  900. package/mobile/lib/ui-kit/LocationDialog/SearchBar.js +1 -1
  901. package/mobile/lib/ui-kit/LocationDialog/SearchBar.js.map +1 -1
  902. package/mobile/lib/ui-kit/SearchDialog/SearchDialog.js +1 -1
  903. package/mobile/lib/ui-kit/SearchDialog/SearchDialog.js.map +1 -1
  904. package/mobile/lib/ui-kit/SlideCheckbox/SlideCheckbox.js +1 -1
  905. package/mobile/lib/ui-kit/SlideCheckbox/SlideCheckbox.js.map +1 -1
  906. package/mobile/lib/ui-kit/SwipeListControl/SwipeListContainer.js +1 -1
  907. package/mobile/lib/ui-kit/SwipeListControl/SwipeListContainer.js.map +1 -1
  908. package/mobile/lib/ui-kit/SwipeListControl/useSwipeListScroll.d.ts +1 -2
  909. package/mobile/lib/ui-kit/SwipeListControl/useSwipeListScroll.js +11 -11
  910. package/mobile/lib/ui-kit/SwipeListControl/useSwipeListScroll.js.map +1 -1
  911. package/mobile/lib/ui-kit/TableArrowScrollControl/TableArrowScrollControl.js +1 -1
  912. package/mobile/lib/ui-kit/TableArrowScrollControl/TableArrowScrollControl.js.map +1 -1
  913. package/mobile/lib/ui-kit/YandexMap/YandexMap.js +1 -1
  914. package/mobile/lib/ui-kit/YandexMap/YandexMap.js.map +1 -1
  915. package/mobile/src/BlockRenderer/renderBlock.tsx +3 -6
  916. package/mobile/src/BlockRenderer/renderBlockList.tsx +29 -12
  917. package/mobile/src/BlockRenderer/renderChildren.ts +7 -6
  918. package/mobile/src/common.css +1 -1
  919. package/mobile/src/components/ApplicationForm/ApplicationForm.tsx +31 -19
  920. package/mobile/src/components/ApplicationForm/ApplicationForm.ui.json +12 -0
  921. package/mobile/src/components/ApplicationForm/ApplicationFormContent.ts +70 -11
  922. package/mobile/src/components/ApplicationForm/ApplicationFormGrantSupport.tsx +51 -0
  923. package/mobile/src/components/ApplicationForm/ApplicationFormsProps.ts +1 -0
  924. package/mobile/src/components/ApplicationForm/EmbeddableForms.tsx +15 -0
  925. package/mobile/src/components/BenefitsBlock/BenefitsBlock.tsx +1 -1
  926. package/mobile/src/components/Blocks.ts +6 -0
  927. package/mobile/src/components/Bonus/Bonus.tsx +33 -28
  928. package/mobile/src/components/BonusBenefitsBlock/renderBonusBenefits.tsx +2 -1
  929. package/mobile/src/components/Calculator/BusinessDepositCalculatorForm.tsx +11 -6
  930. package/mobile/src/components/Calculator/CreditCalculatorForm.tsx +1 -1
  931. package/mobile/src/components/Calculator/DepositCalculatorForm.tsx +3 -3
  932. package/mobile/src/components/Calculator/UnknownRate.tsx +1 -1
  933. package/mobile/src/components/Carousel/Carousel.tsx +51 -47
  934. package/mobile/src/components/Carousel/CarouselContent.ts +3 -9
  935. package/mobile/src/components/Carousel/CarouselScrollButtons.tsx +30 -26
  936. package/mobile/src/components/Carousel/renderControlButtons.tsx +2 -4
  937. package/mobile/src/components/CarouselBankHistoryCard/CarouselBankHistoryCard.tsx +1 -2
  938. package/mobile/src/components/CarouselCard/CarouselCard.tsx +15 -21
  939. package/mobile/src/components/CarouselCard/constants.ts +2 -2
  940. package/mobile/src/components/CarouselCatalogCard/CarouselCatalogCard.tsx +3 -5
  941. package/mobile/src/components/CarouselEventCard/CarouselEventCard.tsx +3 -4
  942. package/mobile/src/components/CarouselInvestmentCard/CarouselInvestmentCard.tsx +1 -9
  943. package/mobile/src/components/CarouselLinks/CarouselLinks.tsx +23 -17
  944. package/mobile/src/components/CarouselLinks/CarouselLinksContent.ts +2 -0
  945. package/mobile/src/components/CarouselProductCard/CarouselProductCard.tsx +6 -11
  946. package/mobile/src/components/CarouselProgramsCard/CarouselProgramsCard.tsx +15 -22
  947. package/mobile/src/components/CarouselRecommendationCard/CarouselRecommendationCard.tsx +1 -6
  948. package/mobile/src/components/CarouselRichTextCard/CarouselRichTextCard.tsx +1 -2
  949. package/mobile/src/components/CarouselTariffsCard/CarouselTariffsCard.tsx +3 -3
  950. package/mobile/src/components/ComparisonTable/ComparisonTable.tsx +2 -2
  951. package/mobile/src/components/ComparisonTable/ComparisonTableBody.tsx +1 -1
  952. package/mobile/src/components/ComparisonTable/ComparisonTableRows.tsx +1 -1
  953. package/mobile/src/components/ContactsBlock/ContactsBlock.tsx +1 -1
  954. package/mobile/src/components/ContentPage/ContentPage.tsx +68 -50
  955. package/mobile/src/components/ExchangeRateTile/CurrencyTable.tsx +24 -8
  956. package/mobile/src/components/ExchangeRateTile/CurrentLocation.tsx +5 -2
  957. package/mobile/src/components/ExchangeRateTile/ExchangeCurrencyCalculator.tsx +1 -1
  958. package/mobile/src/components/ExchangeRateTile/ExchangeRateTile.tsx +1 -1
  959. package/mobile/src/components/Footer/Contacts.tsx +15 -19
  960. package/mobile/src/components/Footer/Footer.tsx +30 -20
  961. package/mobile/src/components/Footer/FooterProps.ts +7 -0
  962. package/mobile/src/components/Footer/HorizontalNavigation.tsx +10 -3
  963. package/mobile/src/components/Footer/MediaButton.tsx +1 -1
  964. package/mobile/src/components/Footer/SocialMedia.tsx +22 -9
  965. package/mobile/src/components/Footer/TextInformation.tsx +2 -2
  966. package/mobile/src/components/Footer/buttonSizeStyles.ts +6 -0
  967. package/mobile/src/components/Footer/buttonStylesWithText.ts +1 -5
  968. package/mobile/src/components/GracePeriod/GracePeriod.tsx +10 -4
  969. package/mobile/src/components/Header/Header.tsx +4 -15
  970. package/mobile/src/components/Header/HeaderContent.ts +0 -2
  971. package/mobile/src/components/Header/HeaderProps.ts +9 -0
  972. package/mobile/src/components/Header/HeaderTop.tsx +1 -1
  973. package/mobile/src/components/Header/sitemap.wcms-resource.json +144 -0
  974. package/mobile/src/components/HorizontalLayout/HorizontalLayout.tsx +3 -25
  975. package/mobile/src/components/InsuranceAmountBlock/InsuranceAmountBlockInner.tsx +1 -1
  976. package/mobile/src/components/InvestmentInfo/InvestmentInfo.tsx +5 -5
  977. package/mobile/src/components/LinkDocs/LinkDocs.tsx +3 -2
  978. package/mobile/src/components/MobileAppTile/MobileAppTile.tsx +1 -1
  979. package/mobile/src/components/MobileAppTile/renderDescription.tsx +1 -1
  980. package/mobile/src/components/OfficeMap/OfficeMap.tsx +6 -6
  981. package/mobile/src/components/OfficeServicesBlock/OfficeServicesBlock.tsx +5 -5
  982. package/mobile/src/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.tsx +15 -16
  983. package/mobile/src/components/RollupItem/RollupItem.tsx +6 -3
  984. package/mobile/src/components/SafeDepositRental/{RenderRadioButtons.tsx → RadioButtons.tsx} +7 -2
  985. package/mobile/src/components/SafeDepositRental/RegionsAndBranches.tsx +3 -3
  986. package/mobile/src/components/SafeDepositRental/RentalPeriod.tsx +5 -2
  987. package/mobile/src/components/SafeDepositRental/SafeBoxCases.tsx +3 -3
  988. package/mobile/src/components/SafeDepositRental/SafeDepositRentalFields.tsx +10 -8
  989. package/mobile/src/components/SafeDepositRental/SafeDepositRentalForm.tsx +1 -1
  990. package/mobile/src/components/SafeDepositRental/SafeDepositRentalTotal.tsx +15 -12
  991. package/mobile/src/components/StepsBlock/renderStep.tsx +2 -2
  992. package/mobile/src/components/Tabs/ScrollableTabs.tsx +0 -1
  993. package/mobile/src/components/VerticalLayout/VerticalLayout.example.json +0 -1
  994. package/mobile/src/components/VerticalLayout/VerticalLayout.tsx +14 -35
  995. package/mobile/src/components/VerticalLayout/VerticalLayoutContent.ts +0 -2
  996. package/mobile/src/hooks/useCarouselControls.ts +8 -7
  997. package/mobile/src/services/regionsGrantSupport/RegionsGrantSupportData.ts +8 -0
  998. package/mobile/src/ui-kit/BaseProductTile/BaseProductTileContent.ts +5 -5
  999. package/mobile/src/ui-kit/BaseTile/BaseTile.tsx +5 -3
  1000. package/mobile/src/ui-kit/BlockWrapper.tsx +1 -1
  1001. package/mobile/src/ui-kit/LinkButton/LinkButton.tsx +22 -9
  1002. package/mobile/src/ui-kit/LinkList/LinkList.tsx +3 -3
  1003. package/mobile/src/ui-kit/LocationDialog/LocationDialog.tsx +2 -3
  1004. package/mobile/src/ui-kit/LocationDialog/SearchBar.tsx +1 -1
  1005. package/mobile/src/ui-kit/SearchDialog/SearchDialog.tsx +1 -4
  1006. package/mobile/src/ui-kit/SlideCheckbox/SlideCheckbox.tsx +3 -3
  1007. package/mobile/src/ui-kit/SwipeListControl/SwipeListContainer.tsx +1 -1
  1008. package/mobile/src/ui-kit/SwipeListControl/useSwipeListScroll.ts +10 -12
  1009. package/mobile/src/ui-kit/TableArrowScrollControl/TableArrowScrollControl.tsx +1 -1
  1010. package/mobile/src/ui-kit/YandexMap/YandexMap.tsx +1 -1
  1011. package/package.json +2 -1
  1012. package/src/BlockRenderer/renderBlock.tsx +3 -6
  1013. package/src/BlockRenderer/renderBlockList.tsx +29 -12
  1014. package/src/BlockRenderer/renderChildren.ts +7 -6
  1015. package/src/common.css +1 -1
  1016. package/src/components/ApplicationForm/ApplicationForm.fixture.mobile.tsx +41 -7
  1017. package/src/components/ApplicationForm/ApplicationForm.fixture.tsx +41 -7
  1018. package/src/components/ApplicationForm/ApplicationForm.tsx +31 -19
  1019. package/src/components/ApplicationForm/ApplicationForm.ui.json +12 -0
  1020. package/src/components/ApplicationForm/ApplicationFormContent.ts +70 -11
  1021. package/src/components/ApplicationForm/ApplicationFormGrantSupport.tsx +51 -0
  1022. package/src/components/ApplicationForm/ApplicationFormsProps.ts +1 -0
  1023. package/src/components/ApplicationForm/EmbeddableForms.tsx +15 -0
  1024. package/src/components/BenefitsBlock/BenefitsBlock.tsx +1 -1
  1025. package/src/components/Blocks.mobile.ts +6 -0
  1026. package/src/components/Bonus/Bonus.fixture.mobile.tsx +72 -0
  1027. package/src/components/Bonus/Bonus.tsx +33 -28
  1028. package/src/components/BonusBenefitsBlock/renderBonusBenefits.mobile.tsx +2 -1
  1029. package/src/components/Calculator/BusinessDepositCalculatorForm.tsx +11 -6
  1030. package/src/components/Calculator/CreditCalculatorForm.tsx +1 -1
  1031. package/src/components/Calculator/DepositCalculatorForm.tsx +3 -3
  1032. package/src/components/Calculator/UnknownRate.tsx +1 -1
  1033. package/src/components/Carousel/Carousel.fixture.mobile.tsx +8 -53
  1034. package/src/components/Carousel/Carousel.fixture.tsx +4 -26
  1035. package/src/components/Carousel/Carousel.tsx +51 -47
  1036. package/src/components/Carousel/CarouselContent.ts +3 -9
  1037. package/src/components/Carousel/CarouselScrollButtons.tsx +30 -26
  1038. package/src/components/Carousel/renderControlButtons.tsx +2 -4
  1039. package/src/components/CarouselBankHistoryCard/CarouselBankHistoryCard.fixture.tsx +2 -7
  1040. package/src/components/CarouselBankHistoryCard/CarouselBankHistoryCard.mobile.tsx +1 -2
  1041. package/src/components/CarouselBankHistoryCard/CarouselBankHistoryCard.tsx +34 -67
  1042. package/src/components/CarouselCard/CarouselCard.fixture.mobile.tsx +1 -1
  1043. package/src/components/CarouselCard/CarouselCard.fixture.tsx +1 -1
  1044. package/src/components/CarouselCard/CarouselCard.tsx +15 -21
  1045. package/src/components/CarouselCard/constants.ts +2 -2
  1046. package/src/components/CarouselCatalogCard/CarouselCatalogCard.tsx +3 -5
  1047. package/src/components/CarouselEventCard/CarouselEventCard.fixture.tsx +5 -3
  1048. package/src/components/CarouselEventCard/CarouselEventCard.tsx +3 -4
  1049. package/src/components/CarouselInvestmentCard/CarouselInvestmentCard.tsx +1 -9
  1050. package/src/components/CarouselLinks/CarouselLinks.fixture.mobile.tsx +34 -0
  1051. package/src/components/CarouselLinks/CarouselLinks.fixture.tsx +3 -0
  1052. package/src/components/CarouselLinks/CarouselLinks.tsx +23 -17
  1053. package/src/components/CarouselLinks/CarouselLinksContent.ts +2 -0
  1054. package/src/components/CarouselProductCard/CarouselProductCard.fixture.tsx +5 -2
  1055. package/src/components/CarouselProductCard/CarouselProductCard.tsx +6 -11
  1056. package/src/components/CarouselProgramsCard/CarouselProgramsCard.tsx +15 -22
  1057. package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.mobile.tsx +1 -6
  1058. package/src/components/CarouselRecommendationCard/CarouselRecommendationCard.tsx +25 -31
  1059. package/src/components/CarouselRichTextCard/CarouselRichTextCard.fixture.tsx +1 -1
  1060. package/src/components/CarouselRichTextCard/CarouselRichTextCard.tsx +1 -2
  1061. package/src/components/CarouselTariffsCard/CarouselTariffsCard.tsx +3 -3
  1062. package/src/components/ComparisonTable/ComparisonTable.mobile.tsx +2 -2
  1063. package/src/components/ComparisonTable/ComparisonTable.tsx +1 -1
  1064. package/src/components/ComparisonTable/ComparisonTableBody.tsx +1 -1
  1065. package/src/components/ComparisonTable/ComparisonTableRows.tsx +1 -1
  1066. package/src/components/ComparisonTable/HeaderCell.tsx +5 -10
  1067. package/src/components/ContactsBlock/ContactsBlock.tsx +1 -1
  1068. package/src/components/ContentPage/ContentPage.tsx +68 -50
  1069. package/src/components/ExchangeRateTile/CurrencyTable.tsx +24 -8
  1070. package/src/components/ExchangeRateTile/CurrentLocation.tsx +5 -2
  1071. package/src/components/ExchangeRateTile/ExchangeCurrencyCalculator.tsx +1 -1
  1072. package/src/components/ExchangeRateTile/ExchangeRateTile.fixture.mobile.tsx +19 -0
  1073. package/src/components/ExchangeRateTile/ExchangeRateTile.tsx +1 -1
  1074. package/src/components/Footer/Contacts.tsx +15 -19
  1075. package/src/components/Footer/Footer.fixture.mobile.tsx +3 -1
  1076. package/src/components/Footer/Footer.fixture.tsx +4 -17
  1077. package/src/components/Footer/Footer.mobile.tsx +30 -20
  1078. package/src/components/Footer/Footer.tsx +12 -18
  1079. package/src/components/Footer/FooterProps.ts +7 -0
  1080. package/src/components/Footer/HorizontalNavigation.mobile.tsx +10 -3
  1081. package/src/components/Footer/HorizontalNavigation.tsx +1 -1
  1082. package/src/components/Footer/MediaButton.tsx +1 -1
  1083. package/src/components/Footer/SocialMedia.tsx +9 -6
  1084. package/src/components/Footer/TextInformation.tsx +2 -2
  1085. package/src/components/Footer/buttonSizeStyles.mobile.ts +6 -0
  1086. package/src/components/Footer/buttonSizeStyles.ts +6 -0
  1087. package/src/components/Footer/buttonStylesWithText.ts +1 -5
  1088. package/src/components/GracePeriod/GracePeriod.tsx +10 -4
  1089. package/src/components/Header/Header.fixture.mobile.tsx +5 -2
  1090. package/src/components/Header/Header.fixture.tsx +4 -3
  1091. package/src/components/Header/Header.mobile.tsx +4 -15
  1092. package/src/components/Header/Header.tsx +8 -29
  1093. package/src/components/Header/HeaderContent.ts +0 -2
  1094. package/src/components/Header/HeaderProps.ts +9 -0
  1095. package/src/components/Header/HeaderTop.tsx +1 -1
  1096. package/src/components/Header/sitemap.wcms-resource.json +144 -0
  1097. package/src/components/HorizontalLayout/HorizontalLayout.fixture.mobile.tsx +72 -0
  1098. package/src/components/HorizontalLayout/HorizontalLayout.mobile.tsx +12 -0
  1099. package/src/components/InsuranceAmountBlock/InsuranceAmountBlockInner.tsx +1 -1
  1100. package/src/components/InvestmentInfo/InvestmentInfo.tsx +5 -5
  1101. package/src/components/LinkDocs/LinkDocs.tsx +3 -2
  1102. package/src/components/MobileAppTile/MobileAppTile.tsx +1 -1
  1103. package/src/components/MobileAppTile/renderDescription.tsx +1 -1
  1104. package/src/components/OfficeMap/OfficeMap.tsx +6 -6
  1105. package/src/components/OfficeServicesBlock/OfficeServicesBlock.tsx +5 -5
  1106. package/src/components/ProductTile/ProductTile.fixture.mobile.tsx +214 -0
  1107. package/src/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.fixture.mobile.tsx +1 -1
  1108. package/src/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.fixture.tsx +1 -1
  1109. package/src/components/RepresentativeOfficeInfo/RepresentativeOfficeInfo.tsx +15 -16
  1110. package/src/components/RollupItem/RollupItem.fixture.mobile.tsx +15 -19
  1111. package/src/components/RollupItem/RollupItem.tsx +6 -3
  1112. package/src/components/SafeDepositRental/{RenderRadioButtons.tsx → RadioButtons.tsx} +7 -2
  1113. package/src/components/SafeDepositRental/RegionsAndBranches.tsx +3 -3
  1114. package/src/components/SafeDepositRental/RentalPeriod.tsx +5 -2
  1115. package/src/components/SafeDepositRental/SafeBoxCases.tsx +3 -3
  1116. package/src/components/SafeDepositRental/SafeDepositRental.fixture.mobile.tsx +15 -0
  1117. package/src/components/SafeDepositRental/SafeDepositRentalFields.tsx +10 -8
  1118. package/src/components/SafeDepositRental/SafeDepositRentalForm.tsx +1 -1
  1119. package/src/components/SafeDepositRental/SafeDepositRentalTotal.tsx +15 -12
  1120. package/src/components/StepsBlock/renderStep.tsx +2 -2
  1121. package/src/components/Tabs/ScrollableTabs.tsx +0 -1
  1122. package/src/components/TariffsTable/TariffsTable.tsx +3 -3
  1123. package/src/components/VerticalLayout/VerticalLayout.example.json +0 -1
  1124. package/src/components/VerticalLayout/VerticalLayout.fixture.mobile.tsx +0 -3
  1125. package/src/components/VerticalLayout/VerticalLayout.fixture.tsx +2 -9
  1126. package/src/components/VerticalLayout/VerticalLayout.tsx +14 -35
  1127. package/src/components/VerticalLayout/VerticalLayoutContent.ts +0 -2
  1128. package/src/hooks/useCarouselControls.ts +8 -7
  1129. package/src/services/regionsGrantSupport/RegionsGrantSupportData.ts +8 -0
  1130. package/src/ui-kit/BaseProductTile/BaseProductTileContent.ts +5 -5
  1131. package/src/ui-kit/BaseTile/BaseTile.tsx +5 -3
  1132. package/src/ui-kit/BlockWrapper.tsx +1 -1
  1133. package/src/ui-kit/LinkButton/LinkButton.fixture.mobile.tsx +11 -0
  1134. package/src/ui-kit/LinkButton/LinkButton.fixture.tsx +1 -1
  1135. package/src/ui-kit/LinkButton/LinkButton.tsx +22 -9
  1136. package/src/ui-kit/LinkList/LinkList.tsx +3 -3
  1137. package/src/ui-kit/LocationDialog/LocationDialog.tsx +2 -3
  1138. package/src/ui-kit/LocationDialog/SearchBar.tsx +1 -1
  1139. package/src/ui-kit/SearchDialog/SearchDialog.tsx +1 -4
  1140. package/src/ui-kit/SlideCheckbox/SlideCheckbox.tsx +3 -3
  1141. package/src/ui-kit/SwipeListControl/SwipeListContainer.tsx +1 -1
  1142. package/src/ui-kit/SwipeListControl/useSwipeListScroll.ts +10 -12
  1143. package/src/ui-kit/TableArrowScrollControl/TableArrowScrollControl.tsx +1 -1
  1144. package/src/ui-kit/YandexMap/YandexMap.tsx +1 -1
  1145. package/tailwind.config.cjs +6 -12
  1146. package/bundle/components/Calculator/renderProposalMortgage.d.ts +0 -8
  1147. package/bundle/components/CarouselCard/getCardWidth.d.ts +0 -1
  1148. package/bundle/components/CarouselRecommendationCard/cardStyle.d.ts +0 -1
  1149. package/bundle/components/Footer/SocialMedia.mobile.d.ts +0 -6
  1150. package/bundle/components/Footer/buttonStylesWithText.mobile.d.ts +0 -2
  1151. package/bundle/components/Header/HeaderBurger.d.ts +0 -9
  1152. package/bundle/components/SafeDepositRental/RenderRadioButtons.d.ts +0 -2
  1153. package/dist/components/Calculator/renderProposalMortgage.d.ts +0 -8
  1154. package/dist/components/Calculator/renderProposalMortgage.js +0 -10
  1155. package/dist/components/Calculator/renderProposalMortgage.js.map +0 -1
  1156. package/dist/components/CarouselCard/getCardWidth.d.ts +0 -1
  1157. package/dist/components/CarouselCard/getCardWidth.js +0 -18
  1158. package/dist/components/CarouselCard/getCardWidth.js.map +0 -1
  1159. package/dist/components/CarouselRecommendationCard/cardStyle.d.ts +0 -1
  1160. package/dist/components/CarouselRecommendationCard/cardStyle.js +0 -4
  1161. package/dist/components/CarouselRecommendationCard/cardStyle.js.map +0 -1
  1162. package/dist/components/Footer/SocialMedia.mobile.d.ts +0 -6
  1163. package/dist/components/Footer/SocialMedia.mobile.js +0 -7
  1164. package/dist/components/Footer/SocialMedia.mobile.js.map +0 -1
  1165. package/dist/components/Footer/buttonStylesWithText.mobile.d.ts +0 -2
  1166. package/dist/components/Footer/buttonStylesWithText.mobile.js +0 -12
  1167. package/dist/components/Footer/buttonStylesWithText.mobile.js.map +0 -1
  1168. package/dist/components/Header/HeaderBurger.d.ts +0 -9
  1169. package/dist/components/Header/HeaderBurger.js +0 -17
  1170. package/dist/components/Header/HeaderBurger.js.map +0 -1
  1171. package/dist/components/SafeDepositRental/RenderRadioButtons.d.ts +0 -2
  1172. package/dist/components/SafeDepositRental/RenderRadioButtons.js +0 -12
  1173. package/dist/components/SafeDepositRental/RenderRadioButtons.js.map +0 -1
  1174. package/lib/components/Calculator/renderProposalMortgage.d.ts +0 -8
  1175. package/lib/components/Calculator/renderProposalMortgage.js +0 -7
  1176. package/lib/components/Calculator/renderProposalMortgage.js.map +0 -1
  1177. package/lib/components/CarouselCard/getCardWidth.d.ts +0 -1
  1178. package/lib/components/CarouselCard/getCardWidth.js +0 -15
  1179. package/lib/components/CarouselCard/getCardWidth.js.map +0 -1
  1180. package/lib/components/CarouselRecommendationCard/cardStyle.d.ts +0 -1
  1181. package/lib/components/CarouselRecommendationCard/cardStyle.js +0 -2
  1182. package/lib/components/CarouselRecommendationCard/cardStyle.js.map +0 -1
  1183. package/lib/components/Footer/SocialMedia.mobile.d.ts +0 -6
  1184. package/lib/components/Footer/SocialMedia.mobile.js +0 -5
  1185. package/lib/components/Footer/SocialMedia.mobile.js.map +0 -1
  1186. package/lib/components/Footer/buttonStylesWithText.mobile.d.ts +0 -2
  1187. package/lib/components/Footer/buttonStylesWithText.mobile.js +0 -9
  1188. package/lib/components/Footer/buttonStylesWithText.mobile.js.map +0 -1
  1189. package/lib/components/Header/HeaderBurger.d.ts +0 -9
  1190. package/lib/components/Header/HeaderBurger.js +0 -15
  1191. package/lib/components/Header/HeaderBurger.js.map +0 -1
  1192. package/lib/components/SafeDepositRental/RenderRadioButtons.d.ts +0 -2
  1193. package/lib/components/SafeDepositRental/RenderRadioButtons.js +0 -10
  1194. package/lib/components/SafeDepositRental/RenderRadioButtons.js.map +0 -1
  1195. package/mobile/bundle/components/Calculator/renderProposalMortgage.d.ts +0 -8
  1196. package/mobile/bundle/components/CarouselCard/getCardWidth.d.ts +0 -1
  1197. package/mobile/bundle/components/CarouselRecommendationCard/cardStyle.d.ts +0 -1
  1198. package/mobile/bundle/components/Header/HeaderBurger.d.ts +0 -9
  1199. package/mobile/bundle/components/SafeDepositRental/RenderRadioButtons.d.ts +0 -2
  1200. package/mobile/dist/components/Calculator/renderProposalMortgage.d.ts +0 -8
  1201. package/mobile/dist/components/Calculator/renderProposalMortgage.js +0 -10
  1202. package/mobile/dist/components/Calculator/renderProposalMortgage.js.map +0 -1
  1203. package/mobile/dist/components/CarouselCard/getCardWidth.d.ts +0 -1
  1204. package/mobile/dist/components/CarouselCard/getCardWidth.js +0 -18
  1205. package/mobile/dist/components/CarouselCard/getCardWidth.js.map +0 -1
  1206. package/mobile/dist/components/CarouselRecommendationCard/cardStyle.d.ts +0 -1
  1207. package/mobile/dist/components/CarouselRecommendationCard/cardStyle.js +0 -4
  1208. package/mobile/dist/components/CarouselRecommendationCard/cardStyle.js.map +0 -1
  1209. package/mobile/dist/components/Header/HeaderBurger.d.ts +0 -9
  1210. package/mobile/dist/components/Header/HeaderBurger.js +0 -17
  1211. package/mobile/dist/components/Header/HeaderBurger.js.map +0 -1
  1212. package/mobile/dist/components/SafeDepositRental/RenderRadioButtons.d.ts +0 -2
  1213. package/mobile/dist/components/SafeDepositRental/RenderRadioButtons.js +0 -12
  1214. package/mobile/dist/components/SafeDepositRental/RenderRadioButtons.js.map +0 -1
  1215. package/mobile/lib/components/Calculator/renderProposalMortgage.d.ts +0 -8
  1216. package/mobile/lib/components/Calculator/renderProposalMortgage.js +0 -7
  1217. package/mobile/lib/components/Calculator/renderProposalMortgage.js.map +0 -1
  1218. package/mobile/lib/components/CarouselCard/getCardWidth.d.ts +0 -1
  1219. package/mobile/lib/components/CarouselCard/getCardWidth.js +0 -15
  1220. package/mobile/lib/components/CarouselCard/getCardWidth.js.map +0 -1
  1221. package/mobile/lib/components/CarouselRecommendationCard/cardStyle.d.ts +0 -1
  1222. package/mobile/lib/components/CarouselRecommendationCard/cardStyle.js +0 -2
  1223. package/mobile/lib/components/CarouselRecommendationCard/cardStyle.js.map +0 -1
  1224. package/mobile/lib/components/Header/HeaderBurger.d.ts +0 -9
  1225. package/mobile/lib/components/Header/HeaderBurger.js +0 -15
  1226. package/mobile/lib/components/Header/HeaderBurger.js.map +0 -1
  1227. package/mobile/lib/components/SafeDepositRental/RenderRadioButtons.d.ts +0 -2
  1228. package/mobile/lib/components/SafeDepositRental/RenderRadioButtons.js +0 -10
  1229. package/mobile/lib/components/SafeDepositRental/RenderRadioButtons.js.map +0 -1
  1230. package/mobile/src/components/Calculator/renderProposalMortgage.tsx +0 -22
  1231. package/mobile/src/components/CarouselCard/getCardWidth.tsx +0 -16
  1232. package/mobile/src/components/CarouselRecommendationCard/cardStyle.ts +0 -2
  1233. package/mobile/src/components/Header/HeaderBurger.tsx +0 -54
  1234. package/src/components/Calculator/renderProposalMortgage.tsx +0 -22
  1235. package/src/components/CarouselCard/getCardWidth.tsx +0 -16
  1236. package/src/components/CarouselRecommendationCard/cardStyle.ts +0 -2
  1237. package/src/components/Footer/SocialMedia.mobile.tsx +0 -16
  1238. package/src/components/Footer/buttonStylesWithText.mobile.ts +0 -15
  1239. package/src/components/Header/HeaderBurger.tsx +0 -54
@@ -345,7 +345,7 @@
345
345
  setHidden(Boolean(event.label && block?.labels?.length && !block.labels.includes(event.label)));
346
346
  }), [block]);
347
347
  const isGroup = version && isTheme;
348
- return (jsx(Tag, { className: style('font-sans', isGroup ? 'group' : '', blockStyles[version], isHidden ? 'hidden' : '', padding || defaultPadding, className), ...(isGroup ? { 'data-ver': version } : {}), ...(block?.anchor ? { id: block.anchor, ref } : {}), role: role, children: children }));
348
+ return (jsx(Tag, { className: style('@container font-sans', isGroup ? 'group' : '', blockStyles[version], isHidden ? 'hidden' : '', padding || defaultPadding, className), ...(isGroup ? { 'data-ver': version } : {}), ...(block?.anchor ? { id: block.anchor, ref } : {}), role: role, children: children }));
349
349
  });
350
350
 
351
351
  const mobileHeadingTagMap = {
@@ -358,7 +358,7 @@
358
358
  };
359
359
  const headingTag = (tag) => mobileHeadingTagMap[tag] || 'h3';
360
360
 
361
- const styles = {
361
+ const styles$4 = {
362
362
  h0: 'text-h0',
363
363
  h1: 'text-h1',
364
364
  h2: 'text-h2',
@@ -369,7 +369,7 @@
369
369
  };
370
370
  const Heading = JSX(({ className = '', headingType = 'h3', as = 'h3', title, children }) => {
371
371
  const Tag = headingTag(as);
372
- return (jsx(Tag, { className: style('font-sans m-0', styles[headingType], className), children: title || children }));
372
+ return (jsx(Tag, { className: style('font-sans m-0', styles$4[headingType], className), children: title || children }));
373
373
  });
374
374
 
375
375
  const identity = (_) => _;
@@ -505,11 +505,11 @@
505
505
  return await response.json();
506
506
  }
507
507
 
508
- const REGIONS_URL = '/api/v1/regions';
509
- const EMPTY_VALUE$2 = [];
508
+ const REGIONS_URL$1 = '/api/v1/regions';
509
+ const EMPTY_VALUE$3 = [];
510
510
  function useGetRegions() {
511
- const { data } = useAsyncData(REGIONS_URL, fetchJSONUnsafe);
512
- return data || EMPTY_VALUE$2;
511
+ const { data } = useAsyncData(REGIONS_URL$1, fetchJSONUnsafe);
512
+ return data || EMPTY_VALUE$3;
513
513
  }
514
514
 
515
515
  const useDialog = (id = '') => ({
@@ -818,7 +818,7 @@
818
818
 
819
819
  const renderAcquiringRegion = ({ regions, field }) => (jsxs("div", { className: "mb-4 pb-1 border-b border-b-main-divider sm:flex sm:justify-between sm:gap-5 sm:mb-7 sm:border-none sm:pb-0", children: [jsx("div", { className: "mb-3 sm:mb-0 sm:w-1/2", children: jsx(SelectControl, { label: "\u0412\u0438\u0434 \u044D\u043A\u0432\u0430\u0439\u0440\u0438\u043D\u0433\u0430", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u044D\u043A\u0432\u0430\u0439\u0440\u0438\u043D\u0433", options: ACQUIRING_TYPES.map(({ name: key = '' }) => ({ key, text: key })), ...withValidator(field('acquiringType'), defaultValidator) }) }), jsx("div", { className: "mb-3 sm:mb-0 sm:w-1/2", children: jsx(SelectControl, { label: "\u0410\u0434\u0440\u0435\u0441", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441", options: regions.map(({ code = '', name = '' }) => ({ key: code, text: name })), ...withValidator(field('region'), defaultValidator) }) })] }));
820
820
 
821
- const SlideCheckbox = JSX(({ value = false, text, type = 'checkbox', onChange }) => (jsxs("div", { role: type, "aria-checked": value, className: "flex justify-start items-center w-full cursor-pointer mb-3", onClick: () => onChange && onChange(!value), children: [jsx("div", { className: style('relative flex-shrink-0 duration-300 w-9 h-5 mr-3 rounded-2xl', value ? 'bg-primary-main' : 'bg-main-divider'), children: jsx("div", { className: style('absolute opacity-80 duration-500 top-0.5 w-4 h-4 bg-white rounded-full', value ? 'left-[50%]' : 'left-[5%]') }) }), jsx(Text, { size: "text-l", font: "font-light", color: "text-primary-text", children: text })] })));
821
+ const SlideCheckbox = JSX(({ value = false, text, type = 'checkbox', onChange }) => (jsxs("div", { role: type, "aria-checked": value, className: "flex justify-start items-center w-full cursor-pointer mb-s", onClick: () => onChange && onChange(!value), children: [jsx("div", { className: style('relative flex-shrink-0 duration-300 w-9 h-5 mr-s rounded-2xl', value ? 'bg-primary-main' : 'bg-main-divider'), children: jsx("div", { className: style('absolute opacity-80 duration-500 top-0.5 w-4 h-4 bg-white rounded-full', value ? 'left-1/2' : 'left-[5%]') }) }), jsx(Text, { size: "text-l", font: "font-light", color: "text-primary-text", children: text })] })));
822
822
 
823
823
  const renderSlideCheckboxes = (field) => (jsxs("div", { className: "sm:mb-5", children: [jsx(SlideCheckbox, { text: "\u0425\u043E\u0447\u0443 \u043A\u0443\u043F\u0438\u0442\u044C \u043E\u043D\u043B\u0430\u0439\u043D-\u043A\u0430\u0441\u0441\u0443", ...field('onlineCheckout') }), jsx(SlideCheckbox, { text: "\u0425\u043E\u0447\u0443 \u043A\u0443\u043F\u0438\u0442\u044C POS-\u0442\u0435\u0440\u043C\u0438\u043D\u0430\u043B", ...field('posTerminal') })] }));
824
824
 
@@ -869,7 +869,7 @@
869
869
 
870
870
  const renderBusinessCardDataOrganization = (field) => (jsxs("div", { className: "sm:flex sm:justify-between sm:gap-5", children: [jsxs("div", { className: "sm:w-1/2", children: [jsx(InputControl, { className: "shrink-0 w-full mb-3", label: "\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u043D\u043E\u0435 \u043B\u0438\u0446\u043E", ...withValidator(field('name'), nameValidator) }), jsx(InputControl, { className: "shrink-0 w-full mb-3", label: "\u0418\u041D\u041D", ...withValidator(field('inn'), innValidator) })] }), jsxs("div", { className: "sm:w-1/2", children: [jsx(PhoneInputControl, { className: "shrink-0 w-full mb-3", label: "\u0422\u0435\u043B\u0435\u0444\u043E\u043D", ...withValidator(field('phone'), phoneValidator) }), jsx(InputControl, { className: "shrink-0 w-full mb-3", label: "\u042D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u0430\u044F \u043F\u043E\u0447\u0442\u0430", ...withValidator(field('mail'), defaultValidator) })] })] }));
871
871
 
872
- const renderRegion = ({ regions, field }) => (jsx("div", { className: "w-full mb-3 sm:mb-5", children: jsx(SelectControl, { label: "\u0420\u0435\u0433\u0438\u043E\u043D", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0440\u0435\u0433\u0438\u043E\u043D", options: regions.map(({ code = '', name = '' }) => ({ key: code, text: name })), ...withValidator(field('region'), defaultValidator) }) }));
872
+ const renderRegion$1 = ({ regions, field }) => (jsx("div", { className: "w-full mb-3 sm:mb-5", children: jsx(SelectControl, { label: "\u0420\u0435\u0433\u0438\u043E\u043D", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0440\u0435\u0433\u0438\u043E\u043D", options: regions.map(({ code = '', name = '' }) => ({ key: code, text: name })), ...withValidator(field('region'), defaultValidator) }) }));
873
873
 
874
874
  const initialFormState$3 = {
875
875
  name: '',
@@ -900,18 +900,18 @@
900
900
  }, [onSubmit]);
901
901
  const [, { field, ...formProps }] = useForm(initialFormState$3, handleSubmit);
902
902
  const regions = useGetRegions();
903
- return (jsxs("form", { className: "container", onSubmit: formProps.onSubmit, children: [renderRegion({ regions, field }), renderBusinessCardDataOrganization(field), renderSubmitButton(button, 'mb-4'), jsx(Footnote, { link: link })] }));
903
+ return (jsxs("form", { className: "container", onSubmit: formProps.onSubmit, children: [renderRegion$1({ regions, field }), renderBusinessCardDataOrganization(field), renderSubmitButton(button, 'mb-4'), jsx(Footnote, { link: link })] }));
904
904
  });
905
905
 
906
906
  const BRANCHES_URL = '/api/v1/branches';
907
- const EMPTY_VALUE$1 = [];
907
+ const EMPTY_VALUE$2 = [];
908
908
  function useBranches(regionCode) {
909
- const { data } = useAsyncData(regionCode ? `${BRANCHES_URL}?regionCode=${regionCode}` : null, fetchSafeBoxes);
910
- return data || EMPTY_VALUE$1;
909
+ const { data } = useAsyncData(regionCode ? `${BRANCHES_URL}?regionCode=${regionCode}` : null, fetchSafeBoxes$1);
910
+ return data || EMPTY_VALUE$2;
911
911
  }
912
- const fetchSafeBoxes = async (url) => {
912
+ const fetchSafeBoxes$1 = async (url) => {
913
913
  const result = await fetchJSON(url, { method: 'GET' });
914
- return result || EMPTY_VALUE$1;
914
+ return result || EMPTY_VALUE$2;
915
915
  };
916
916
 
917
917
  const MIN_CREDIT_AMOUNT = 1000;
@@ -1054,6 +1054,26 @@
1054
1054
  return (jsxs("form", { className: "container", onSubmit: formProps.onSubmit, children: [jsx(Heading, { headingType: "h6", title: "\u041E\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \u0437\u0430\u044F\u0432\u043A\u0443 \u0438 \u043C\u044B \u043E\u0442\u0432\u0435\u0442\u0438\u043C \u043D\u0430 \u043B\u044E\u0431\u044B\u0435 \u0432\u043E\u043F\u0440\u043E\u0441\u044B \u043F\u043E \u0434\u0435\u043F\u043E\u0437\u0438\u0442\u0430\u043C", className: "sm:text-center mb-4" }), jsxs("div", { className: "max-w-[560px] m-auto", children: [jsx(InputControl, { className: "shrink-0 w-full mb-3", label: "\u0418\u043C\u044F", ...withValidator(field('name'), nameValidator) }), jsx(PhoneInputControl, { className: "shrink-0 w-full mb-3", label: "\u0422\u0435\u043B\u0435\u0444\u043E\u043D", ...withValidator(field('phone'), phoneValidator) })] }), jsxs("div", { className: "flex justify-between flex-col-reverse sm:items-center sm:flex-row max-w-[560px] m-auto", children: [jsx("div", { className: "flex-1 mt-4 sm:mt-0", children: jsx(Footnote, { link: link }) }), renderSubmitButton(button)] })] }));
1055
1055
  });
1056
1056
 
1057
+ const EMPTY_VALUE$1 = {};
1058
+ function useSWRResource(filename, fallback = {}) {
1059
+ const { data } = useAsyncData(`/wcms-resources/${filename}.json`, fetchJSONUnsafe, {
1060
+ fallback,
1061
+ });
1062
+ return data || EMPTY_VALUE$1;
1063
+ }
1064
+
1065
+ const ApplicationFormGrantSupport = JSX((props) => {
1066
+ const { button, sourceBookDir } = props;
1067
+ const { regions } = useSWRResource(sourceBookDir || 'regions-grant-support');
1068
+ const [region, setRegion] = useState({ key: '' });
1069
+ const buttonStyle = getRegularButtonClasses({
1070
+ className: 'text-white',
1071
+ version: button?.version,
1072
+ });
1073
+ const regionHref = regions?.find((_) => _.name === region.key)?.href;
1074
+ return (jsxs("div", { className: "container space-y-s sm:space-y-lg", children: [regions ? (jsx(SelectControl, { label: "\u0412\u0430\u0448 \u0440\u0435\u0433\u0438\u043E\u043D", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0440\u0435\u0433\u0438\u043E\u043D", options: regions.map(({ name = '' }) => ({ key: name })), value: region, onChange: setRegion })) : null, regionHref ? (jsx("div", { className: "text-center", children: jsx(Button, { href: regionHref, target: "_blank", className: style('p-4 w-full sm:w-auto', buttonStyle), children: button?.text ? button.text : 'Перейти' }) })) : null] }));
1075
+ });
1076
+
1057
1077
  const sourcesComparator = (a, b) => a?.media && b?.media ? a.media - b.media : 0;
1058
1078
  const ImgAsPicture = JSX(({ className = '', image, imageClassName = '', pathPrefix }) => {
1059
1079
  const router = useRouter();
@@ -1148,30 +1168,45 @@
1148
1168
  return (jsxs("form", { className: "container", onSubmit: formProps.onSubmit, children: [jsx(Heading, { headingType: "h6", title: "\u0414\u0430\u043D\u043D\u044B\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438", className: "sm:text-center mb-m" }), renderWedDataOrganization(field), jsx(Heading, { headingType: "h6", title: "\u0418\u043D\u0442\u0435\u0440\u0435\u0441\u0443\u044E\u0449\u0438\u0439 \u0432\u043E\u043F\u0440\u043E\u0441", className: "sm:text-center mb-m" }), renderQuestionsInterested(field), jsxs("div", { className: "flex flex-col border-b border-main-divider mb-5 pb-5 sm:items-center sm:flex-row sm:mb-9 sm:pb-9", children: [renderSubmitButton(button, 'mb-m sm:mr-lg sm:mb-0'), jsx(Footnote, { link: link })] }), jsx(Heading, { headingType: "h6", title: "\u0418\u043B\u0438 \u0441\u0432\u044F\u0436\u0438\u0442\u0435\u0441\u044C \u0441 \u043D\u0430\u043C\u0438 \u0443\u0434\u043E\u0431\u043D\u044B\u043C \u0441\u043F\u043E\u0441\u043E\u0431\u043E\u043C", className: "sm:text-center mb-m" }), renderContacts()] }));
1149
1169
  });
1150
1170
 
1171
+ const EmbeddableForms = {
1172
+ ApplicationFormBusinessCard,
1173
+ ApplicationFormWed,
1174
+ ApplicationFormDeposit,
1175
+ ApplicationFormCredit,
1176
+ ApplicationFormAcquiring,
1177
+ ApplicationFormGrantSupport,
1178
+ };
1179
+
1151
1180
  const ResponseNotification = JSX(({ responseType }) => {
1152
1181
  const responseOK = responseType === 'OK';
1153
1182
  const backgroundColor = responseOK ? 'bg-ok' : 'bg-fail';
1154
1183
  return (jsxs("div", { className: `flex items-center mt-lg p-lg rounded-md space-x-m ${backgroundColor}`, children: [responseOK ? (jsx(Img, { image: { icon: 'ResponceOKIcon' }, width: "42", height: "42" })) : (jsx(Img, { image: { icon: 'ResponceFailIcon' }, width: "37", height: "34" })), jsxs("div", { children: [jsx(Heading, { headingType: "h6", title: responseOK ? 'Ваша заявка отправлена' : 'Не удалось отправить заявку', className: "mb-1" }), jsx(Text, { size: "text-l", font: "font-light", color: "text-secondary-text", children: responseOK ? 'Совсем скоро мы с вами свяжемся' : 'Пожалуйста, повторите позднее' })] })] }));
1155
1184
  });
1156
1185
 
1157
- const COMPONENTS_MAP = {
1158
- credit: (props) => jsx(ApplicationFormCredit, { ...props }),
1159
- acquiring: (props) => jsx(ApplicationFormAcquiring, { ...props }),
1160
- 'business-card': (props) => jsx(ApplicationFormBusinessCard, { ...props }),
1161
- deposit: (props) => jsx(ApplicationFormDeposit, { ...props }),
1162
- wed: (props) => jsx(ApplicationFormWed, { ...props }),
1163
- };
1164
1186
  const API = CorporateLeadAPI();
1165
1187
  const ApplicationForm = JSX((props) => {
1166
- const { className, title, typeForm = 'credit', button, link, ...rest } = props;
1188
+ const { className, formBlock, ...rest } = props;
1189
+ // const type = formBlock?.formType;
1190
+ // if (!type || !(type in EmbeddableForms)) {
1191
+ // return null;
1192
+ // }
1193
+ // const EmbeddedForm = EmbeddableForms[type];
1167
1194
  const [responseType, setResponseType] = useState('');
1168
1195
  const handleSubmit = useCallback(async (data) => {
1169
1196
  const status = (await API.send(data)) ? 'OK' : 'Fail';
1170
1197
  setResponseType(status);
1171
1198
  return status;
1172
1199
  }, []);
1173
- return (jsx(BlockWrapper, { className: className, defaultPadding: "p-6xl", ...rest, children: jsxs("div", { className: "container max-w-[978px]", children: [title ? (jsx(Heading, { headingType: "h3", title: title, className: "mb-4 sm:mb-8 sm:text-center" })) : null, COMPONENTS_MAP[typeForm]({ button, link, onSubmit: handleSubmit }), responseType ? jsx(ResponseNotification, { responseType: responseType }) : null] }) }));
1200
+ return (jsx(BlockWrapper, { className: className, defaultPadding: "p-6xl", ...rest, children: jsxs("div", { className: "container max-w-[978px]", children: [formBlock?.title ? (jsx(Heading, { headingType: "h3", title: formBlock.title, className: "mb-4 sm:mb-8 sm:text-center" })) : null, formBlock ? renderEmbeddedForm(formBlock, handleSubmit) : null, responseType ? jsx(ResponseNotification, { responseType: responseType }) : null] }) }));
1174
1201
  });
1202
+ const renderEmbeddedForm = (formBlock, handleSubmit) => {
1203
+ const type = formBlock?.formType;
1204
+ if (!type || !(type in EmbeddableForms)) {
1205
+ return null;
1206
+ }
1207
+ const EmbeddedForm = EmbeddableForms[type];
1208
+ return jsx(EmbeddedForm, { ...formBlock, onSubmit: handleSubmit });
1209
+ };
1175
1210
 
1176
1211
  const iconBgStyles = {
1177
1212
  '': 'bg-main-divider group-data-secondary:bg-white/30',
@@ -1190,7 +1225,7 @@
1190
1225
  const defaultIconSize = 56;
1191
1226
 
1192
1227
  const BenefitsBlock = JSX(({ className = '', title, benefitList, ...rest }) => (jsxs(BlockWrapper, { className: className, defaultPadding: "p-6xl", ...rest, children: [title ? jsx(Heading, { headingType: "h3", as: "h2", className: "text-center", title: title }) : null, benefitList?.length ? (jsx("div", { className: "flex flex-wrap w-full sm:justify-center mt-xl gap-5xl", role: "list", children: benefitList.map(renderBenefit) })) : null] })));
1193
- const renderBenefit = (benefit, i) => (jsxs("div", { className: "flex gap-m items-center md:basis-1/2 md:max-w-[400px]", role: "listitem", children: [benefit?.icon?.icon ? (jsx(RoundedIcon, { className: "shrink-0", defaultIconSize: defaultIconSize, iconBgVersion: benefit?.iconBgVersion || '', ...benefit?.icon })) : null, benefit?.icon?.src ? jsx(Img, { className: "shrink-0", image: benefit.icon }) : null, benefit?.label ? (jsxs("div", { className: "sm:h-full", children: [jsx(Heading, { headingType: "h6", children: benefit.label }), renderDescription$3(benefit.description)] })) : null] }, String(i)));
1228
+ const renderBenefit = (benefit, i) => (jsxs("div", { className: "flex gap-m items-center md:basis-1/2 md:max-w-[500px]", role: "listitem", children: [benefit?.icon?.icon ? (jsx(RoundedIcon, { className: "shrink-0", defaultIconSize: defaultIconSize, iconBgVersion: benefit?.iconBgVersion || '', ...benefit?.icon })) : null, benefit?.icon?.src ? jsx(Img, { className: "shrink-0", image: benefit.icon }) : null, benefit?.label ? (jsxs("div", { className: "sm:h-full", children: [jsx(Heading, { headingType: "h6", children: benefit.label }), renderDescription$3(benefit.description)] })) : null] }, String(i)));
1194
1229
  const renderDescription$3 = (description) => {
1195
1230
  const benefitType = description?.benefitType || null;
1196
1231
  return description && benefitType ? (jsx("div", { className: "mt-xs text-l font-light text-secondary-text group-data-secondary:text-white/80", children: benefitType === 'list'
@@ -1286,7 +1321,7 @@
1286
1321
  return (jsx("div", { className: `inline-block snap-always box-border ${className}`, style: style, "aria-current": Boolean(idx === activeIndex), ref: ref, children: children }));
1287
1322
  });
1288
1323
 
1289
- const childStyleMap = ['min-w-[100%]', 'min-w-[50%]', 'min-w-[33.33%]', 'min-w-[25%]'];
1324
+ const childStyleMap = ['min-w-full', 'min-w-1/2', 'min-w-1/3', 'min-w-1/4'];
1290
1325
  const SwipeListContainer = JSX(({ className = '', containerRef, activeIndex, visibleItemCount = 0, gap = 0, padding = 0, listType = 'horizontal-list', snapAlign = 'snap-center', minHeight, children, onVisibleItemsChange, onVisibleIndicesChange, }) => {
1291
1326
  const observerOptions = {
1292
1327
  sensitivity: 1,
@@ -1348,6 +1383,7 @@
1348
1383
 
1349
1384
  const defaultDiscriminator = (_) => _;
1350
1385
  const maxBy = (discriminator = defaultDiscriminator) => (list) => list.reduceRight((a, b) => (discriminator(a) > discriminator(b) ? a : b));
1386
+ const max = maxBy();
1351
1387
 
1352
1388
  const minBy = (discriminator = defaultDiscriminator) => maxBy((_) => -discriminator(_));
1353
1389
 
@@ -1364,7 +1400,7 @@
1364
1400
  container.scrollTo({ left: 0, behavior: 'smooth' });
1365
1401
  };
1366
1402
 
1367
- const useSwipeListScroll = ({ itemCount, isCyclic, onVisibleIndicesChange, }) => {
1403
+ const useSwipeListScroll = ({ itemCount, onVisibleIndicesChange, }) => {
1368
1404
  const containerRef = useRef(null);
1369
1405
  const [visibleIndices, setVisibleIndices] = useState([]);
1370
1406
  const handleVisibleIndicesChange = useCallback((indices) => {
@@ -1380,31 +1416,31 @@
1380
1416
  if (!containerRef.current) {
1381
1417
  return;
1382
1418
  }
1383
- if (isCyclic && !canScrollLeft) {
1384
- scrollToEnd(containerRef.current);
1419
+ if (canScrollLeft) {
1420
+ scrollBy(containerRef.current)(itemCount, -1);
1385
1421
  }
1386
1422
  else {
1387
- scrollBy(containerRef.current)(itemCount, -1);
1423
+ scrollToEnd(containerRef.current);
1388
1424
  }
1389
- }, [isCyclic, itemCount, canScrollLeft]);
1425
+ }, [itemCount, canScrollLeft]);
1390
1426
  const scrollRight = useCallback(() => {
1391
1427
  if (!containerRef.current) {
1392
1428
  return;
1393
1429
  }
1394
- if (isCyclic && !canScrollRight) {
1395
- scrollToStart(containerRef.current);
1430
+ if (canScrollRight) {
1431
+ scrollBy(containerRef.current)(itemCount, 1);
1396
1432
  }
1397
1433
  else {
1398
- scrollBy(containerRef.current)(itemCount, 1);
1434
+ scrollToStart(containerRef.current);
1399
1435
  }
1400
- }, [itemCount, isCyclic, canScrollRight]);
1436
+ }, [itemCount, canScrollRight]);
1401
1437
  return [
1402
1438
  containerRef,
1403
1439
  {
1404
1440
  scrollLeft,
1405
1441
  scrollRight,
1406
- canScrollLeft: isCyclic || canScrollLeft,
1407
- canScrollRight: isCyclic || canScrollRight,
1442
+ canScrollLeft,
1443
+ canScrollRight,
1408
1444
  visibleIndicesRange: [minIndex, maxIndex],
1409
1445
  handleVisibleIndicesChange,
1410
1446
  },
@@ -1497,8 +1533,7 @@
1497
1533
  }
1498
1534
  const BlockComponent = type && blocksRegistry[type];
1499
1535
  return blockDecorator({
1500
- blockClassName: style('scroll-mt-12', // TODO scroll-mt-12 ? here?
1501
- className, block.style || defaultStyle),
1536
+ blockClassName: style(block.style?.length ? block.style : defaultStyle, className),
1502
1537
  block,
1503
1538
  ancestors,
1504
1539
  // Adjusted by decorator block and blockClassName
@@ -1512,24 +1547,49 @@
1512
1547
  const DEFAULT_SLOT_NAME = null;
1513
1548
 
1514
1549
  const EMPTY_ANCESTORS = [];
1515
- const renderBlocksList = (blocks, { key, ancestors = EMPTY_ANCESTORS, slotName = DEFAULT_SLOT_NAME, renderProps = renderBlock, ...options }) => (blocks || []).map((_, j) => renderProps(_, {
1516
- ...options,
1517
- key: `${key ? key : _.type}-${j}`,
1518
- ancestors: options.parent
1519
- ? [...(ancestors || EMPTY_ANCESTORS), [options.parent, slotName]]
1520
- : ancestors,
1521
- }));
1550
+ const renderBlocksList = (blocks, { key, ancestors = EMPTY_ANCESTORS, slotName = DEFAULT_SLOT_NAME, extraProps, renderProps = renderBlock, ...options }) => {
1551
+ const renderChildBlock = extraProps
1552
+ ? (childBlock, childOptions) => renderBlock(childBlock, childOptions, extraProps)
1553
+ : renderProps;
1554
+ return (blocks || []).map((_, i) => renderChildBlock(_, {
1555
+ ...options,
1556
+ key: `${key ? key : _.type}-${i}`,
1557
+ ancestors: options.parent
1558
+ ? [...(ancestors || EMPTY_ANCESTORS), [options.parent, slotName]]
1559
+ : ancestors,
1560
+ }, i));
1561
+ };
1522
1562
 
1523
- function renderChildren({ children, block, options, renderProps, }) {
1563
+ function renderChildren({ block, options, children, extraProps, renderProps, }) {
1524
1564
  if (children) {
1525
1565
  return children;
1526
1566
  }
1527
1567
  return block && options
1528
- ? renderBlocksList(block.blocks, { ...options, parent: block, renderProps })
1568
+ ? renderBlocksList(block.blocks, { ...options, parent: block, extraProps, renderProps })
1529
1569
  : null;
1530
1570
  }
1531
1571
 
1532
- const ITEMS_GAP = 16;
1572
+ const useCarouselControls = (props, initialIndex = 0) => {
1573
+ const { itemCount, visibleItemCount } = props;
1574
+ const [activeIndex, setActiveIndex] = useState(initialIndex);
1575
+ const inc = useCallback(() => setActiveIndex((_) => Math.min(_ + 1, itemCount - 1)), [itemCount]);
1576
+ const dec = useCallback(() => setActiveIndex((_) => Math.max(_ - 1, 0)), [itemCount]);
1577
+ const canInc = visibleItemCount
1578
+ ? itemCount > visibleItemCount && activeIndex < itemCount - visibleItemCount
1579
+ : activeIndex < itemCount - 1;
1580
+ const canDec = activeIndex > 0;
1581
+ const isScrollAvailable = canDec || canInc;
1582
+ return [
1583
+ activeIndex,
1584
+ {
1585
+ inc,
1586
+ dec,
1587
+ canInc,
1588
+ canDec,
1589
+ isScrollAvailable,
1590
+ },
1591
+ ];
1592
+ };
1533
1593
 
1534
1594
  const ArrowButton = JSX(({ className, disabled, ...rest }) => (jsx(Button, { rounded: true, className: `group/btn shadow-[0_4px_25px_rgba(0,0,0,0.07)] w-12 h-12 min-h-12 max-h-12 flex items-center justify-center ${disabled
1535
1595
  ? 'bg-secondary-light text-secondary-text'
@@ -1538,8 +1598,8 @@
1538
1598
  const ScrollRightButton = JSX((props) => (jsx(ArrowButton, { ...props, className: `${props.className || ''} rotate-180`, ariaLabel: "\u041F\u0440\u043E\u043B\u0438\u0441\u0442\u0430\u0442\u044C \u0432\u043F\u0440\u0430\u0432\u043E", "data-block-control": "scroll-right" })));
1539
1599
 
1540
1600
  const scrollButtonStyle$1 = 'absolute top-[calc(50%-24px)] z-40';
1541
- const blurBaseStyle = 'absolute top-0 bottom-0 z-40 w-[84px] pointer-events-none';
1542
- const CarouselScrollButtons = JSX(({ scroll, arrowsPadded, isBlur, onScrollLeft, onScrollRight, hasEdgeBlocks, activeIndex, itemCount, }) => {
1601
+ const blurBaseStyle = 'absolute top-0 bottom-0 z-40 hidden @lg:block w-20 pointer-events-none';
1602
+ const CarouselScrollButtons = JSX(({ scroll, activeIndex, itemCount, arrowsPadded, hasEdgeBlocks, onScrollLeft, onScrollRight, }) => {
1543
1603
  const { canScrollLeft, canScrollRight, scrollLeft, scrollRight } = scroll;
1544
1604
  const canMoveLeft = hasEdgeBlocks ? activeIndex > 0 : canScrollLeft;
1545
1605
  const canMoveRight = hasEdgeBlocks ? activeIndex < itemCount - 1 : canScrollRight;
@@ -1561,52 +1621,33 @@
1561
1621
  onScrollRight();
1562
1622
  }
1563
1623
  }, [scrollRight, onScrollRight, hasEdgeBlocks, canScrollLeft, activeIndex, itemCount]);
1564
- return (jsxs("div", { children: [renderBlur(isBlur, scroll), canMoveLeft ? (jsx(ScrollLeftButton, { className: style(scrollButtonStyle$1, arrowsPadded ? 'left-8' : 'left-0'), onClick: handleScrollLeft })) : null, canMoveRight ? (jsx(ScrollRightButton, { className: style(scrollButtonStyle$1, arrowsPadded ? 'right-8' : 'right-0'), onClick: handleScrollRight })) : null] }));
1624
+ return (jsxs("div", { className: "hidden @lg:block", children: [renderBlur(scroll), canMoveLeft ? (jsx(ScrollLeftButton, { className: style(scrollButtonStyle$1, arrowsPadded ? 'left-1 @lg:left-8' : 'left-0'), onClick: handleScrollLeft })) : null, canMoveRight ? (jsx(ScrollRightButton, { className: style(scrollButtonStyle$1, arrowsPadded ? 'right-1 @lg:right-8' : 'right-0'), onClick: handleScrollRight })) : null] }));
1565
1625
  });
1566
- const renderBlur = (isBlur, scroll) => isBlur ? (jsxs("div", { children: [scroll.canScrollLeft ? (jsx("div", { className: style(blurBaseStyle, 'left-0 bg-opacity-from-white') })) : null, scroll.canScrollRight ? (jsx("div", { className: style(blurBaseStyle, 'right-0 bg-opacity-to-white') })) : null] })) : null;
1626
+ const renderBlur = (scroll) => (jsxs("div", { children: [scroll.canScrollLeft ? (jsx("div", { className: style(blurBaseStyle, 'left-0 bg-opacity-from-white group-data-secondary:bg-none') })) : null, scroll.canScrollRight ? (jsx("div", { className: style(blurBaseStyle, 'right-0 bg-opacity-to-white group-data-secondary:bg-none') })) : null] }));
1567
1627
 
1568
- const renderControlButtons = ({ showArrows, showDots, scrollButtonsProps, dotsProps, }) => {
1569
- return [
1570
- showArrows ? jsx(CarouselScrollButtons, { ...scrollButtonsProps }, "0") : null,
1571
- showDots ? jsx(SwipeListControlDots, { ...dotsProps, listType: "horizontal-list" }, "1") : null,
1572
- ];
1573
- };
1628
+ const ITEMS_GAP = 16;
1574
1629
 
1575
- const Carousel = JSX(({ className = '', itemCount, visibleItemCount = 0, isBlur = true, isCyclic = false, arrowsPadded = true, isPadding = true, showDots = false, isAlignCenter = false, showArrows = true, isGap = true, ...rest }) => {
1630
+ const Carousel = JSX(({ className, itemCount, visibleItemCount = 0, noCardBorder, isAlignCenter, showDots, arrowsPadded = true, isGap = true, ...rest }) => {
1576
1631
  const { blocks: childBlocks = [] } = rest.block || {};
1577
1632
  const count = itemCount || childBlocks?.length;
1578
- const [activeIndex, setActiveIndex] = useState(Math.floor(visibleItemCount / 2));
1579
- const increaseActiveIndex = useCallback(() => setActiveIndex((_) => _ + 1), []);
1580
- const decreaseActiveIndex = useCallback(() => setActiveIndex((_) => _ - 1), []);
1581
- const [containerRef, scroll] = useSwipeListScroll({
1633
+ const [activeIndex, { inc: increaseActiveIndex, dec: decreaseActiveIndex }] = useCarouselControls({
1582
1634
  itemCount: count,
1583
- isCyclic,
1584
- });
1635
+ visibleItemCount,
1636
+ }, Math.floor(visibleItemCount / 2));
1637
+ const [containerRef, scroll] = useSwipeListScroll({ itemCount: count });
1585
1638
  const [dotsActiveIndex] = scroll.visibleIndicesRange;
1639
+ // TODO Remove
1586
1640
  const isBankHistoryCarousel = childBlocks && childBlocks[0]?.type === 'CarouselBankHistoryCard';
1587
- return (jsx(BlockWrapper, { className: className, defaultPadding: getPaddingStyle$1(isPadding), ...rest, children: jsxs("div", { className: style(getAlignStyle(isAlignCenter), 'relative max-w-full'), children: [jsx(SwipeListContainer, { containerRef: containerRef, visibleItemCount: visibleItemCount, snapAlign: "snap-start", gap: isGap ? ITEMS_GAP : undefined, onVisibleIndicesChange: scroll.handleVisibleIndicesChange, children: renderChildren({
1641
+ return (jsx(BlockWrapper, { className: className, defaultPadding: "p-6xl", ...rest, children: jsxs("div", { className: style(isAlignCenter ? 'flex justify-center' : '', 'relative max-w-full'), children: [jsx(SwipeListContainer, { containerRef: containerRef, visibleItemCount: visibleItemCount, snapAlign: "snap-start", gap: isGap ? ITEMS_GAP : undefined, onVisibleIndicesChange: scroll.handleVisibleIndicesChange, children: renderChildren({
1588
1642
  ...rest,
1589
- renderProps: isBankHistoryCarousel
1590
- ? (block, options) => renderBlock(block, options, {
1591
- blocksLength: childBlocks?.length,
1592
- activeIndex: activeIndex,
1593
- })
1594
- : renderBlock,
1595
- }) }), renderControlButtons({
1596
- showArrows,
1597
- showDots,
1598
- scrollButtonsProps: {
1599
- scroll,
1600
- arrowsPadded,
1601
- isBlur,
1602
- onScrollLeft: decreaseActiveIndex,
1603
- onScrollRight: increaseActiveIndex,
1604
- hasEdgeBlocks: isBankHistoryCarousel,
1605
- activeIndex,
1606
- itemCount: count,
1607
- },
1608
- dotsProps: { containerRef, activeIndex: dotsActiveIndex, dotCount: count },
1609
- })] }) }));
1643
+ renderProps: (block, options, blockIndex) => renderBlock(block, options, {
1644
+ className: style('h-full min-w-80 sm:min-w-96', noCardBorder
1645
+ ? ''
1646
+ : 'border border-solid border-gray group-data-secondary:border-white/50 group-data-gray:border-main-divider'),
1647
+ blockIndex,
1648
+ isActive: activeIndex === blockIndex,
1649
+ }),
1650
+ }) }), jsx(CarouselScrollButtons, { scroll: scroll, arrowsPadded: arrowsPadded, onScrollLeft: decreaseActiveIndex, onScrollRight: increaseActiveIndex, hasEdgeBlocks: isBankHistoryCarousel, activeIndex: activeIndex, itemCount: count }), showDots ? (jsx(SwipeListControlDots, { containerRef: containerRef, activeIndex: dotsActiveIndex, dotCount: count, listType: "horizontal-list" })) : null] }) }));
1610
1651
  });
1611
1652
  Carousel.childrenTypes = [
1612
1653
  'CarouselCard',
@@ -1621,10 +1662,8 @@
1621
1662
  'CarouselInvestmentCard',
1622
1663
  'CarouselEventCard',
1623
1664
  ];
1624
- const getPaddingStyle$1 = (isPadding) => (isPadding ? 'p-6xl' : '');
1625
- const getAlignStyle = (isAlignCenter) => isAlignCenter ? 'flex justify-center' : '';
1626
1665
 
1627
- const CarouselBankHistoryCard = JSX(({ title, description, className }) => (jsx(BlockWrapper, { className: style(className), defaultPadding: "p-6xl", children: jsx(Headline, { headlineVersion: "S", title: title, description: description, align: "text-left", className: "text-primary-text", isPadding: false }) })));
1666
+ const CarouselBankHistoryCard = JSX(({ title, description, className }) => (jsx(BlockWrapper, { className: className, defaultPadding: "p-6xl", children: jsx(Headline, { headlineVersion: "S", title: title, description: description, align: "text-left", className: "text-primary-text", isPadding: false }) })));
1628
1667
 
1629
1668
  const LinkWrapper = JSX(({ className = '', href, target, isRemote = false, children }) => {
1630
1669
  const link = useLink({ isRemote });
@@ -1636,9 +1675,7 @@
1636
1675
  const cardTitleFont = 'font-light';
1637
1676
  const cardDescriptionColor = '';
1638
1677
 
1639
- const CarouselProgramsCard = JSX(({ className = '', title, icon, list = [], href, target, ...rest }) => {
1640
- return (jsx(BlockWrapper, { className: style('border border-gray', className), defaultPadding: "p-3xl sm:p-0", ...rest, children: jsxs(LinkWrapper, { className: "sm:flex sm:items-center", href: href, target: target, children: [jsx("div", { className: "min-w-[200px] flex justify-center", children: icon?.src || icon?.icon ? jsx(Img, { image: icon }) : null }), jsxs("div", { className: "sm:px-s p-5xl", children: [title ? jsx(Heading, { className: "mb-xs sm:mb-m", headingType: "h6", title: title }) : null, list.length ? (jsx("div", { className: "flex flex-col gap-xs sm:gap-s", children: list?.map(renderList$2) })) : null] })] }) }));
1641
- });
1678
+ const CarouselProgramsCard = JSX(({ className, title, icon, list = [], href, target, ...rest }) => (jsx(BlockWrapper, { className: className, defaultPadding: "p-3xl sm:p-0", ...rest, children: jsxs(LinkWrapper, { className: "sm:flex sm:items-center", href: href, target: target, children: [jsx("div", { className: "flex justify-center px-xl", children: icon?.src || icon?.icon ? jsx(Img, { image: icon }) : null }), jsxs("div", { className: "sm:px-s p-5xl", children: [title ? jsx(Heading, { className: "mb-xs sm:mb-m", headingType: "h6", title: title }) : null, list.length ? (jsx("div", { className: "flex flex-col gap-xs sm:gap-s", children: list?.map(renderList$2) })) : null] })] }) })));
1642
1679
  const renderList$2 = (_, i) => (jsxs("div", { className: "flex flex-row-reverse justify-between gap-y-2xs sm:flex-col", children: [_.title ? (jsx(Text, { size: "text-l", font: cardTitleFont, children: _.title })) : null, _.description ? (jsx(Paragraph, { size: "text-l", font: "font-light", color: cardDescriptionColor, children: _.description })) : null] }, String(i)));
1643
1680
 
1644
1681
  const DOT_SIZE_MAP = {
@@ -1662,8 +1699,9 @@
1662
1699
 
1663
1700
  const buttonSizeStyles = {
1664
1701
  default: 'w-24 h-14',
1665
- small: 'w-12 h-12',
1702
+ stretched: 'flex-1 h-14',
1666
1703
  };
1704
+
1667
1705
  const buttonStylesWithText = (text, buttonSize) => text
1668
1706
  ? ''
1669
1707
  : style('group/media flex items-center justify-center box-border', buttonSizeStyles[buttonSize]);
@@ -1711,12 +1749,10 @@
1711
1749
  });
1712
1750
  const getFilteredIcon = (icon) => (icon?.src || icon?.icon ? icon : undefined);
1713
1751
 
1714
- const SocialMedia = JSX(({ className = '', media }) => (jsx("div", { className: `flex gap-2 items-start justify-start ${className}`, children: media?.map((_, index) => (jsx(MediaButton, { ..._ }, String(index)))) })));
1715
-
1716
- const BORDER_STYLE = 'border border-solid border-gray group-data-secondary:border-white/50 group-data-gray:border-main-divider';
1752
+ const SocialMedia = JSX(({ className = '', media, children, buttonSize }) => (jsxs("div", { className: "flex flex-col sm:flex-col-reverse gap-xs", children: [children ? (jsx(Text, { size: "text-s", font: "font-light", color: "text-secondary-text", children: children })) : null, jsx("div", { className: style('flex gap-xs', className), children: media?.map((_, index) => (jsx(MediaButton, { buttonSize: buttonSize, ..._ }, String(index)))) })] })));
1717
1753
 
1718
1754
  const CarouselRecommendationCard = JSX(({ className = '', description, href, icon, items = [], socialMedia = [], target, title, align = 'text-left', ...rest }) => {
1719
- return (jsx(BlockWrapper, { className: style('relative box-border group-data-gray:bg-main-divider/50', BORDER_STYLE, className), defaultPadding: "p-6xl", ...rest, children: jsxs(LinkWrapper, { href: href, target: target, children: [jsx(Headline, { className: "mb-xs", title: title, description: description, headlineVersion: "S", isPadding: false, align: align }), items.length ? (jsx(List, { className: "flex flex-col gap-2", items: items, listItemSize: "S" })) : null, renderIcon$1(icon), socialMedia.length ? jsx(SocialMedia, { className: "mt-5", media: socialMedia }) : null] }) }));
1755
+ return (jsx(BlockWrapper, { className: style('relative group-data-gray:bg-main-divider/50', className), defaultPadding: "p-6xl", ...rest, children: jsxs(LinkWrapper, { href: href, target: target, children: [jsx(Headline, { className: "mb-xs", title: title, description: description, headlineVersion: "S", isPadding: false, align: align }), items.length ? (jsx(List, { className: "flex flex-col gap-2", items: items, listItemSize: "S" })) : null, renderIcon$1(icon), socialMedia.length ? jsx(SocialMedia, { className: "mt-5", media: socialMedia }) : null] }) }));
1720
1756
  });
1721
1757
  const renderIcon$1 = (icon) => icon?.src || icon?.icon ? (jsx("div", { children: jsx(Img, { image: icon }) })) : null;
1722
1758
 
@@ -1754,37 +1790,18 @@
1754
1790
  const cellsNode = cardCells.map(renderCardInfo);
1755
1791
  const visibleCells = cellsNode.slice(0, VISIBLE_CELLS_COUNT);
1756
1792
  const hiddenCells = cellsNode.slice(VISIBLE_CELLS_COUNT);
1757
- return (jsxs(BlockWrapper, { className: style('relative border border-gray flex flex-col', className), defaultPadding: getPaddingStyle(isHighlighting), ...rest, children: [isHighlighting ? renderHitIcon() : null, renderIconBlock(icon), title ? (jsx(Heading, { className: style('pt-xs', align), headingType: "h5", title: title })) : null, button ? jsx(Button, { className: "w-full mt-4", ...button }) : null, cardCells.length ? (jsx(Foldable, { renderFoldableSection: ({ isUnfolded }) => (jsxs("div", { children: [visibleCells, jsx(FoldableSection, { isUnfolded: isUnfolded, children: hiddenCells })] })), renderFoldButton: cardCells.length > 1 ? renderFoldButton$1 : null })) : null] }));
1793
+ return (jsxs(BlockWrapper, { className: style('relative flex flex-col', className), defaultPadding: getPaddingStyle(isHighlighting), ...rest, children: [isHighlighting ? renderHitIcon() : null, renderIconBlock(icon), title ? (jsx(Heading, { className: style('pt-xs', align), headingType: "h5", title: title })) : null, button ? jsx(Button, { className: "w-full mt-m", ...button }) : null, cardCells.length ? (jsx(Foldable, { renderFoldableSection: ({ isUnfolded }) => (jsxs("div", { children: [visibleCells, jsx(FoldableSection, { isUnfolded: isUnfolded, children: hiddenCells })] })), renderFoldButton: cardCells.length > 1 ? renderFoldButton$1 : null })) : null] }));
1758
1794
  });
1759
- const renderIconBlock = (icon) => (jsx("div", { className: "w-[267px] min-w-[267px] self-center", children: icon?.src || icon?.icon ? jsx(Img, { image: icon }) : null }));
1795
+ const renderIconBlock = (icon) => (jsx("div", { className: "basis-full self-center", children: icon?.src || icon?.icon ? jsx(Img, { image: icon }) : null }));
1760
1796
  const renderFoldButton$1 = ({ isUnfolded, onToggle }) => (jsxs("button", { className: "w-full cursor-pointer text-primary-main pt-5 flex justify-between items-center", onClick: onToggle, children: [jsx("div", { children: isUnfolded ? 'Скрыть' : 'Подробнее о тарифе' }), jsx(Icon, { className: "text-primary-text", name: isUnfolded ? 'ArrowUpIcon' : 'ArrowDownIcon', width: "16", height: "16" })] }));
1761
1797
  const renderHitIcon = () => (jsxs("div", { className: "absolute -top-7 -right-4 h-[60px] w-[60px] bg-white flex flex-col items-center justify-center rounded-md shadow-[0_4px_25px_rgba(0,0,0,0.07)]", children: [jsx(Icon, { iconVersion: "black", name: "HeartIcon", width: "23", height: "22" }), jsx(Paragraph, { size: "text-s", font: "font-normal", align: "text-center", color: "text-primary-text", children: "\u0425\u0418\u0422" })] }));
1762
1798
 
1763
- const getColSpan = (className) => {
1764
- const colSpanPrefix = 'col-span-';
1765
- const colSpanStr = className?.split(/\s+/).find((_) => _.startsWith(colSpanPrefix));
1766
- return colSpanStr ? parseInt(colSpanStr.substring(colSpanPrefix.length), 10) : 12;
1767
- };
1768
-
1769
- const CARD_WIDTH_MAP = {
1770
- normal: 'min-w-[970px]',
1771
- small: 'min-w-[355px]',
1772
- };
1773
- function getCardWidth(className = '', carouselVersion = 'normal') {
1774
- const colSpan = getColSpan(className);
1775
- if (colSpan <= 4) {
1776
- return 'w-[375px]';
1777
- }
1778
- else {
1779
- return CARD_WIDTH_MAP[carouselVersion];
1780
- }
1781
- }
1782
-
1783
1799
  const titleSize = 'XS';
1784
1800
 
1785
- const BLOCK_CLASSES = 'absolute border border-solid border-gray w-full h-full hidden sm:block';
1786
- const CarouselCard = JSX(({ className = '', button, description, title, carouselVersion = 'normal', version = '' }) => (jsx("section", { className: style('flex pl-6xl sm:p-lg border-box h-full sm:max-w-[375px]', getCardWidth(className, carouselVersion), className), children: jsxs("div", { className: "relative w-full", children: [jsx("div", { className: `${BLOCK_CLASSES} z-10 top-9 right-12 bg-green-dark` }), jsx("div", { className: `${BLOCK_CLASSES} z-10 top-6 right-8 bg-green` }), jsx("div", { className: `${BLOCK_CLASSES} z-10 top-3 right-4 bg-green-light` }), jsxs("div", { className: "relative h-full bg-white z-10 p-10 border border-solid border-green-light", children: [jsx(Headline, { className: "!p-0", title: title, description: description, headlineVersion: titleSize, align: "text-left", version: version }), renderButtonsSection([button], {
1787
- className: 'mt-14 sm:justify-center',
1801
+ const layerBaseStyle = 'z-10 border border-solid w-full h-full';
1802
+ const layerStyle = style(layerBaseStyle, 'absolute hidden sm:block border-transparent');
1803
+ const CarouselCard = JSX(({ className, title, description, button, ...rest }) => (jsx(BlockWrapper, { className: style('sm:pl-12 sm:pb-9', className), defaultPadding: "p-0", ...rest, children: jsxs("div", { className: "relative", children: [jsx("div", { className: style(layerStyle, 'top-9 right-12 bg-green-dark') }), jsx("div", { className: style(layerStyle, 'top-6 right-8 bg-green') }), jsx("div", { className: style(layerStyle, 'top-3 right-4 bg-green-light') }), jsxs("div", { className: style(layerBaseStyle, 'relative p-10 bg-white border-green-light'), children: [jsx(Headline, { title: title, description: description, headlineVersion: titleSize, align: "text-left", isPadding: false }), renderButtonsSection([button], {
1804
+ className: 'mt-6xl sm:justify-center',
1788
1805
  isVertical: true,
1789
1806
  })] })] }) })));
1790
1807
 
@@ -1792,13 +1809,13 @@
1792
1809
  black: 'bg-black',
1793
1810
  white: 'bg-white',
1794
1811
  };
1795
- const CarouselCatalogCard = JSX(({ className = '', title, description, image, price, button, colors, ...rest }) => (jsxs(BlockWrapper, { className: style('border box-border border-gray p-6xl sm:p-7 h-full flex flex-col justify-left gap-m', className), ...rest, children: [image?.src ? jsx(Img, { className: "flex justify-center", image: image }) : null, jsx(Headline, { title: title, description: description, headlineVersion: "XS", isPadding: false, align: "text-left" }), colors?.length ? (jsxs("div", { className: "flex text-secondary-text", children: [jsx("div", { className: "mr-xs", children: jsx(Text, { size: "text-s", align: "text-left", font: "font-light", children: "\u0426\u0432\u0435\u0442\u0430:" }) }), colors.map(renderColorOption)] })) : null, price ? (jsxs(Text, { size: "text-h3", align: "text-left", children: [price, "\u00A0\u20BD"] })) : null, renderButtonsSection([button], { buttonClassName: 'w-full' })] })));
1812
+ const CarouselCatalogCard = JSX(({ className = '', title, description, image, price, button, colors, ...rest }) => (jsxs(BlockWrapper, { className: style('flex flex-col justify-left gap-m', className), defaultPadding: "p-6xl sm:p-7", ...rest, children: [image?.src ? jsx(Img, { className: "flex justify-center", image: image }) : null, jsx(Headline, { title: title, description: description, headlineVersion: "XS", isPadding: false, align: "text-left" }), colors?.length ? (jsxs("div", { className: "flex text-secondary-text", children: [jsx("div", { className: "mr-xs", children: jsx(Text, { size: "text-s", align: "text-left", font: "font-light", children: "\u0426\u0432\u0435\u0442\u0430:" }) }), colors.map(renderColorOption)] })) : null, price ? (jsxs(Text, { size: "text-h3", align: "text-left", children: [price, "\u00A0\u20BD"] })) : null, renderButtonsSection([button], { buttonClassName: 'w-full' })] })));
1796
1813
  const renderColorOption = (color, i) => (jsx("div", { role: "figure", className: `w-6 h-6 ml-1 sm:ml-3 border border-solid border-main-divider rounded-full ${cardStyleMap[color]}` }, String(i)));
1797
1814
 
1798
1815
  const alignTextStyle = 'text-left';
1799
1816
 
1800
1817
  const CarouselProductCard = JSX(({ additionalDescription, align = alignTextStyle, button = {}, className = '', description, headlineSmallVersion = 'H6', href, icon, isDotted = true, isButtonFullWidth = true, isImageFullWidth = false, isTopPosition = false, items = [], target, title, version = 'primary', ...rest }) => {
1801
- return (jsxs(BlockWrapper, { className: style('h-full flex flex-col justify-between min-w-[260px]', 'box-border border-solid border border-gray', align, className), defaultPadding: "p-0", version: version, ...rest, children: [jsxs(LinkWrapper, { className: "p-m flex flex-col gap-xs", href: href, target: target, children: [renderCardTitle(headlineSmallVersion, title), renderDescription$2(description), renderItems(items, isDotted, version), renderAdditionalDescription(additionalDescription), renderImage$2(icon, isImageFullWidth, isTopPosition)] }), renderButtonsSection([button], {
1818
+ return (jsxs(BlockWrapper, { className: style('flex flex-col justify-between', align, className), defaultPadding: "p-0", version: version, ...rest, children: [jsxs(LinkWrapper, { className: "p-m flex flex-col gap-xs", href: href, target: target, children: [renderCardTitle(headlineSmallVersion, title), renderDescription$2(description), renderItems(items, isDotted, version), renderAdditionalDescription(additionalDescription), renderImage$2(icon, isImageFullWidth, isTopPosition)] }), renderButtonsSection([button], {
1802
1819
  className: style('p-m pt-0', isButtonFullWidth ? '' : 'self-center'),
1803
1820
  isVertical: isButtonFullWidth,
1804
1821
  })] }));
@@ -1835,7 +1852,7 @@
1835
1852
 
1836
1853
  const ComparisonTable = JSX((props) => {
1837
1854
  const { className, title } = props;
1838
- return (jsxs("section", { className: `bg-white font-sans px-4 py-6 overflow-hidden text-primary-text relative ${className || ''}`, children: [title ? (jsx(Heading, { headingType: "h3", className: "font-medium text-center m-0 mb-5", title: title })) : null, jsx("div", { role: "table", children: jsx(TableInner, { ...props }) })] }));
1855
+ return (jsxs("section", { className: `bg-white font-sans p-6xl overflow-hidden text-primary-text relative space-y-lg ${className || ''}`, children: [title ? (jsx(Heading, { headingType: "h3", className: "font-medium text-center", title: title })) : null, jsx("div", { role: "table", children: jsx(TableInner, { ...props }) })] }));
1839
1856
  });
1840
1857
  const TableInner = JSX(({ columns = [], rowHeaders, isColoredFirstColumn, visibleRowLength, orientation, ...rest }) => {
1841
1858
  const [columnsViewState, setColumnsViewState] = useState(new Array(columns.length).fill(!visibleRowLength));
@@ -1849,20 +1866,195 @@
1849
1866
  return orientation === 'horizontal' ? (jsx(SwipeListControl, { onVisibleIndicesChange: handleSlideChange, children: tableColumns })) : (tableColumns);
1850
1867
  });
1851
1868
 
1852
- const EMPTY_VALUE = {};
1853
- function useSWRResource(filename, fallback = {}) {
1854
- const { data } = useAsyncData(`/wcms-resources/${filename}.json`, fetchJSONUnsafe, {
1855
- fallback,
1869
+ const imageAlignmentMap = {
1870
+ start: 'self-start',
1871
+ center: 'self-center',
1872
+ end: 'self-end',
1873
+ };
1874
+ const BaseTile = JSX(({ className, defaultPadding, padding, title = '', insetTitle = '', buttons, leftImage, rightImage, imageAlign, backImage, children, }) => (jsxs("div", { className: style('relative flex flex-col gap-3xl font-sans overflow-hidden', padding || defaultPadding, className), children: [title ? jsx("div", { className: "relative", children: title }) : null, jsxs("div", { className: "grow relative flex flex-wrap @xl:flex-nowrap justify-between items-stretch gap-3xl", children: [renderImageContainer(leftImage, { imageAlign }), jsxs("div", { className: style('flex flex-col gap-3xl max-w-[600px] xl:max-w-[728px]', leftImage ? '' : 'grow'), children: [insetTitle, jsx("div", { className: "grow", children: children }), backImage ? (jsx("div", { className: "mx-auto sm:absolute sm:-z-10 sm:-bottom-4 sm:-right-4", children: backImage })) : null, buttons] }), renderImageContainer(rightImage, { className: '-order-1 @xl:order-1', imageAlign })] })] })));
1875
+ const renderImageContainer = (image, { className, imageAlign }) => image ? (jsx("div", { className: style('flex-shrink-0', imageAlign && imageAlignmentMap[imageAlign], className), children: image })) : null;
1876
+
1877
+ var Currency;
1878
+ (function (Currency) {
1879
+ Currency["RUB"] = "RUB";
1880
+ Currency["EUR"] = "EUR";
1881
+ Currency["USD"] = "USD";
1882
+ })(Currency || (Currency = {}));
1883
+
1884
+ const currencyNumberFormat = new Intl.NumberFormat('ru', {
1885
+ style: 'currency',
1886
+ currency: Currency.RUB,
1887
+ });
1888
+ const formatCurrency = (value) => (value ? currencyNumberFormat.format(value) : '');
1889
+
1890
+ const TABLE_HEAD_STYLE = 'text-left text-m font-light text-secondary-text';
1891
+ const TABLE_HEAD_STYLE_WITH_PADDING = `${TABLE_HEAD_STYLE} pl-5xl`;
1892
+ const CURRENCY_ICONS_MAP = {
1893
+ USD: 'DollarIcon',
1894
+ EUR: 'EuroIcon',
1895
+ };
1896
+ const CurrencyTable = JSX(({ className, exchangeCurrencyItems }) => (jsxs("table", { className: `h-fit w-fit ${className}`, children: [jsx("thead", { children: jsxs("tr", { children: [jsx("th", { className: TABLE_HEAD_STYLE, children: jsx(Text, { size: "text-m", children: "\u0412\u0430\u043B\u044E\u0442\u0430" }) }), jsx("th", { className: TABLE_HEAD_STYLE_WITH_PADDING, children: jsx(Text, { size: "text-m", children: "\u041A\u0443\u043F\u0438\u0442\u044C" }) }), jsx("th", { className: TABLE_HEAD_STYLE_WITH_PADDING, children: jsx(Text, { size: "text-m", children: "\u041F\u0440\u043E\u0434\u0430\u0442\u044C" }) })] }) }), jsx("tbody", { children: exchangeCurrencyItems.map(renderCurrencyRow) })] })));
1897
+ const renderCurrencyRow = (exchangeCurrencyItem) => {
1898
+ const currency = exchangeCurrencyItem?.currency?.currency;
1899
+ return (jsxs("tr", { className: "pb-2xs text-h6", children: [jsx("td", { className: "pt-m", children: jsxs("div", { className: "flex items-center", children: [currency ? (jsx(Img, { image: { icon: CURRENCY_ICONS_MAP[currency] }, width: "24", height: "24", className: "mr-2" })) : null, jsx(Text, { size: "text-h6", children: currency })] }) }), jsx("td", { className: "pt-m pl-5xl", children: jsx(Text, { size: "text-h6", children: formatCurrency(exchangeCurrencyItem?.saleExchangeRate) }) }), jsx("td", { className: "pt-m pl-5xl", children: jsx(Text, { size: "text-h6", children: formatCurrency(exchangeCurrencyItem?.buyExchangeRate) }) })] }, currency));
1900
+ };
1901
+
1902
+ const icon = { icon: 'GpsIcon' };
1903
+ const CurrentLocation$1 = JSX(({ className = '', address }) => (jsxs("div", { className: `flex gap-s ${className}`, children: [jsx(RoundedIcon, { ...icon, iconBgVersion: "primary" }), jsxs("div", { className: "space-y-2xs", children: [address ? jsx("p", { className: "text-primary-main text-l", children: address }) : null, jsx("p", { className: "text-secondary-text 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" })] })] })));
1904
+
1905
+ const roundTo = (value, precision = 2) => {
1906
+ const factor = 10 ** precision;
1907
+ return Math.round(parseFloat(String(value)) * factor) / factor;
1908
+ };
1909
+
1910
+ const calculateResult = (value, rate, precision) => {
1911
+ const result = Number(formatValue(value)) * Math.pow(rate, precision ? -1 : 1);
1912
+ return Number.isInteger(result) ? result : roundTo(result);
1913
+ };
1914
+ const formatValue = (value) => value.replace(/[^\d.,]/g, '').replace(',', '.');
1915
+
1916
+ const tableFunc = (table) => (input) => {
1917
+ const [, output] = table.find(([predicate]) => predicate(input)) || [];
1918
+ return output;
1919
+ };
1920
+
1921
+ const callbackCurrencySelect = (props) => tableFunc([
1922
+ [
1923
+ (_) => _.value !== Currency.RUB && _.oppositeValue !== Currency.RUB,
1924
+ () => props.handleConvert(props.value, Currency.RUB),
1925
+ ],
1926
+ [
1927
+ (_) => _.value === Currency.RUB && _.oppositeValue === Currency.RUB,
1928
+ () => props.handleConvert(props.value, Currency.USD),
1929
+ ],
1930
+ [() => true, () => props.handleConvert(props.value)],
1931
+ ])(props)?.();
1932
+
1933
+ function renderInput(props) {
1934
+ const { placeholder, rates, selected, value, setValue, setSelected } = props;
1935
+ const ratesOptions = rates.map((_) => ({
1936
+ key: _?.currency?.currency ?? '',
1937
+ text: _?.currency?.currency ?? '',
1938
+ }));
1939
+ const selectedValue = { key: selected, text: selected };
1940
+ return (jsxs("div", { className: "relative flex", children: [jsx(Input, { className: "shrink-0 text-l w-full appearance-none mr-[-90px]", placeholder: placeholder, type: "text", value: value, onChange: setValue }), ratesOptions.length ? (jsx(Select, { isBorder: false, onChange: (_) => setSelected(_.key), options: ratesOptions, value: selectedValue })) : null] }));
1941
+ }
1942
+
1943
+ const ExchangeCurrencyCalculator = JSX(({ className = '', currencyRatesBuy, currencyRatesSell, button }) => {
1944
+ const [calcState, setCalcState] = useState({
1945
+ inputSell: '',
1946
+ inputBuy: '',
1947
+ selectSell: currencyRatesBuy?.[0]?.currency?.currency || Currency.RUB,
1948
+ selectBuy: currencyRatesSell?.[0]?.currency?.currency || Currency.USD,
1856
1949
  });
1857
- return data || EMPTY_VALUE;
1950
+ const handleSetCalcState = useCallback((newState) => setCalcState((oldState) => ({ ...oldState, ...newState })), []);
1951
+ return (jsxs("div", { className: `grid gap-m pt-2xl ${className}`, children: [renderInput({
1952
+ placeholder: 'Хочу продать',
1953
+ rates: currencyRatesSell,
1954
+ selected: calcState.selectSell,
1955
+ setSelected: handleSelectSell(calcState, handleSetCalcState, currencyRatesSell),
1956
+ value: calcState.inputSell,
1957
+ setValue: (value) => handleInputSell(handleSetCalcState, currencyRatesSell)(value, calcState.selectSell, calcState.selectBuy),
1958
+ }), renderInput({
1959
+ placeholder: 'Получу',
1960
+ rates: currencyRatesBuy,
1961
+ selected: calcState.selectBuy,
1962
+ setSelected: handleSelectBuy(calcState, handleSetCalcState, currencyRatesBuy),
1963
+ value: calcState.inputBuy,
1964
+ setValue: (value) => handleInputBuy(handleSetCalcState, currencyRatesBuy)(value, calcState.selectBuy, calcState.selectSell),
1965
+ }), button?.text ? (jsx(Button, { className: "py-4", version: button?.version, ...button, children: button.text })) : null] }));
1966
+ });
1967
+ const handleSelectSell = (calcState, setCalcState, currencyRatesSell) => (value) => {
1968
+ setCalcState({ selectSell: value });
1969
+ callbackCurrencySelect({
1970
+ value,
1971
+ oppositeValue: calcState.selectBuy,
1972
+ handleConvert: (currencyFrom = calcState.selectSell, currencyTo = calcState.selectBuy) => {
1973
+ handleInputSell(setCalcState, currencyRatesSell)(calcState.inputSell, currencyFrom, currencyTo);
1974
+ },
1975
+ });
1976
+ };
1977
+ const handleSelectBuy = (calcState, setCalcState, currencyRatesBuy) => (value) => {
1978
+ setCalcState({ selectBuy: value });
1979
+ callbackCurrencySelect({
1980
+ value,
1981
+ oppositeValue: calcState.selectSell,
1982
+ handleConvert: (currencyTo = calcState.selectBuy, currencyFrom = calcState.selectSell) => handleInputBuy(setCalcState, currencyRatesBuy)(calcState.inputBuy, currencyTo, currencyFrom),
1983
+ });
1984
+ };
1985
+ const handleInputSell = (setCalcState, currencyRatesSell) => (value, currencyFrom, currencyTo) => {
1986
+ setCalcState({ inputSell: formatValue(value), selectBuy: currencyTo });
1987
+ const rate = currencyRatesSell.find((_) => _.currency?.currency === currencyTo)?.buyExchangeRate ||
1988
+ currencyRatesSell.find((_) => _.currency?.currency === currencyFrom)?.saleExchangeRate;
1989
+ if (rate) {
1990
+ setCalcState({
1991
+ inputBuy: String(calculateResult(value, rate, currencyFrom === Currency.RUB) || ''),
1992
+ });
1993
+ }
1994
+ };
1995
+ const handleInputBuy = (setCalcState, currencyRatesBuy) => (value, currencyTo, currencyFrom) => {
1996
+ setCalcState({ inputBuy: formatValue(value), selectSell: currencyFrom });
1997
+ const rate = currencyRatesBuy.find((_) => _.currency?.currency === currencyFrom)?.saleExchangeRate ||
1998
+ currencyRatesBuy.find((_) => _.currency?.currency === currencyTo)?.buyExchangeRate;
1999
+ if (rate) {
2000
+ setCalcState({
2001
+ inputSell: String(calculateResult(value, rate, currencyTo === Currency.RUB) || ''),
2002
+ });
2003
+ }
2004
+ };
2005
+
2006
+ const EXCHANGE_RATES_URL = '/api/v1/exchangerates';
2007
+ const REGION_URL$1 = '/api/v1/region';
2008
+ function useFetchExchangeRateData() {
2009
+ const { data } = useAsyncData(EXCHANGE_RATES_URL, fetchData);
2010
+ return data || {};
1858
2011
  }
2012
+ const fetchData = async (urlExchangeRates) => {
2013
+ const region = await fetchRegion();
2014
+ const regionCode = region?.code || '000';
2015
+ const exchangeRates = await fetchExchangeRates(urlExchangeRates, regionCode);
2016
+ return { region, exchangeRates };
2017
+ };
2018
+ const fetchRegion = async () => {
2019
+ try {
2020
+ return await fetchJSONUnsafe(REGION_URL$1, { method: 'GET' });
2021
+ }
2022
+ catch (error) {
2023
+ console.log(error);
2024
+ return {};
2025
+ }
2026
+ };
2027
+ const fetchExchangeRates = async (url, regionCode) => {
2028
+ try {
2029
+ return await fetchJSONUnsafe(url + `?regionCode=${regionCode}`, {
2030
+ method: 'GET',
2031
+ });
2032
+ }
2033
+ catch (error) {
2034
+ console.log(error);
2035
+ return {};
2036
+ }
2037
+ };
2038
+
2039
+ const ExchangeRateTile = JSX(({ className = '', title = 'Курсы обмена валют', button, ...rest }) => {
2040
+ const { exchangeRates } = useFetchExchangeRateData();
2041
+ const currencyRates = getCurrencyRates(exchangeRates?.exchangeRate?.currencies);
2042
+ const currencyRatesBuy = currencyRates.filter((_) => _.buyExchangeRate);
2043
+ currencyRatesBuy.unshift({ currency: { currency: Currency.RUB } });
2044
+ const currencyRatesSell = currencyRates.filter((_) => _.saleExchangeRate);
2045
+ currencyRatesSell.push({ currency: { currency: Currency.RUB } });
2046
+ return (jsx(BlockWrapper, { className: style('box-border min-h-80', className), ...rest, children: jsx(BaseTile, { className: "h-full", title: jsx(Heading, { headingType: "h4", title: title, className: "whitespace-pre-wrap" }), children: jsxs("div", { className: "flex gap-6xl flex-wrap", children: [jsxs("div", { children: [currencyRates ? (jsx(CurrencyTable, { className: "mb-xl", 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] }) }) }));
2047
+ });
2048
+ const getCurrencyRates = (currencies) => {
2049
+ return currencies?.filter((_) => _?.currency?.id === 1 || _?.currency?.id === 2) || [];
2050
+ };
1859
2051
 
1860
2052
  const linkListStyles = '';
1861
2053
 
1862
- const LinkList = JSX(({ className = '', items }) => items?.length ? (jsx("ul", { className: style('flex flex-col p-0', linkListStyles, className), children: items.map(renderLinkListItem) })) : null);
2054
+ const LinkList = JSX(({ className = '', items }) => items?.length ? (jsx("ul", { className: style('flex flex-col', linkListStyles, className), children: items.map(renderLinkListItem) })) : null);
1863
2055
  const renderLinkListItem = (item, i) => {
1864
2056
  const { text, ...linkProps } = item;
1865
- return (jsx("li", { className: "list-none mb-4 sm:mb-6 sm:last:mb-0", children: jsx("a", { className: "hover:text-primary-main sm:font-light", role: "link", ...linkProps, children: text ? text : null }) }, `list_item_${String(i)}`));
2057
+ return (jsx("li", { className: "list-none my-xs", children: jsx("a", { className: "hover:text-primary-main font-light", role: "link", ...linkProps, children: text ? text : null }) }, `list_item_${String(i)}`));
1866
2058
  };
1867
2059
 
1868
2060
  const DefaultFoldButton = JSX(({ className = '', label, icon, dataTheme = '', disabled = false, onClick }) => {
@@ -1885,7 +2077,10 @@
1885
2077
  const rollupItemStyles = '';
1886
2078
 
1887
2079
  const RollupItem = JSX(({ className = '', label = 'Развернуть', labelIcon, labelIconBgVersion, isExpanded, isFoldButtonOnTop = true, version = 'primary', ...rest }) => {
1888
- return (jsx(BlockWrapper, { className: style('w-full', rollupItemStyles, className), defaultPadding: "p-0", tag: "div", version: "transparent", ...rest, children: jsx(Foldable, { isFoldButtonOnTop: isFoldButtonOnTop, unfoldedByDefault: isExpanded, renderFoldableSection: ({ isUnfolded }) => (jsx(FoldableSection, { className: style('gap-5 [&>*]:p-0', foldableSectionStyles), isUnfolded: isUnfolded, children: renderChildren(rest) })), renderFoldButton: ({ isUnfolded, onToggle }) => renderFoldButton({
2080
+ return (jsx(BlockWrapper, { className: style('w-full', rollupItemStyles, className), defaultPadding: "p-0", tag: "div", version: "transparent", ...rest, children: jsx(Foldable, { isFoldButtonOnTop: isFoldButtonOnTop, unfoldedByDefault: isExpanded, renderFoldableSection: ({ isUnfolded }) => (jsx(FoldableSection, { className: style('gap-5', foldableSectionStyles), isUnfolded: isUnfolded, children: renderChildren({
2081
+ ...rest,
2082
+ extraProps: { className: 'w-full', padding: 'p-0' },
2083
+ }) })), renderFoldButton: ({ isUnfolded, onToggle }) => renderFoldButton({
1889
2084
  version,
1890
2085
  label,
1891
2086
  labelIcon,
@@ -1908,12 +2103,12 @@
1908
2103
  })) : (jsx(DefaultFoldButton, { label: label, icon: isUnfolded ? 'ArrowUpIcon' : 'ArrowDownIcon', onClick: onToggle }));
1909
2104
  };
1910
2105
  const renderPrimaryFoldButton = ({ label, labelIconBgVersion, icon, onToggle, labelIcon, }) => {
1911
- return (jsxs("button", { className: style('border-none bg-transparent px-0 flex justify-between items-center w-full group/button', labelIcon?.icon ? 'py-xs' : 'py-lg'), onClick: onToggle, children: [jsxs("div", { className: "flex items-center group-hover/button:text-primary-main gap-s", children: [renderRoundedIcon(labelIcon, labelIconBgVersion), label ? (jsx(Text, { size: "text-h6", font: "font-normal", children: label })) : null] }), icon ? jsx(Icon, { name: icon, iconVersion: rollupIconVersion, width: "24", height: "24" }) : null] }));
2106
+ return (jsxs("button", { className: style('border-none bg-transparent flex justify-between items-center w-full group/button', labelIcon?.icon ? 'py-xs' : 'py-lg'), onClick: onToggle, children: [jsxs("div", { className: "flex items-center group-hover/button:text-primary-main gap-s", children: [renderRoundedIcon(labelIcon, labelIconBgVersion), label ? (jsx(Text, { size: "text-h6", font: "font-normal", children: label })) : null] }), icon ? jsx(Icon, { name: icon, iconVersion: rollupIconVersion, width: "24", height: "24" }) : null] }));
1912
2107
  };
1913
2108
 
1914
- const Contacts = JSX(({ className = '', items, hasButton }) => (jsxs("div", { className: style('space-y-xl', className), children: [items?.length ? items.map(renderContactsGroup) : null, hasButton ? (jsx(Button, { version: "primary", className: "mb-6 w-full", href: "https://www.rshb.ru/feedback/question/", 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] })));
1915
- const renderContactsGroup = (item, i) => (jsxs("div", { className: "space-y-m", children: [jsx("div", { className: "", children: jsx(Text, { size: "text-l", font: "font-medium", children: item?.title }) }), jsx("div", { className: "space-y-m", children: item.items?.map(renderContact) })] }, String(i)));
1916
- const renderContact = (item, index) => (jsxs("div", { className: "space-y-2xs", children: [jsx("div", { children: renderText(item.type, item.text) }), jsx("div", { className: "text-s font-light text-secondary-text", children: item.description })] }, String(index)));
2109
+ const Contacts = JSX(({ className = '', items }) => (jsxs("div", { className: className, children: [items?.length ? items.map(renderContactsGroup) : null, jsx(Button, { version: "primary", className: "w-full", href: "https://www.rshb.ru/feedback/question/", 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" })] })));
2110
+ const renderContactsGroup = (item, i) => (jsxs("div", { className: "mb-m", children: [jsx("div", { className: "mb-m", children: jsx(Text, { size: "text-l", font: "font-medium", children: item?.title }) }), jsx("div", { children: item.items?.map(renderContact) })] }, String(i)));
2111
+ const renderContact = (item, index) => (jsxs("div", { className: "mb-m", children: [jsx("div", { children: renderText(item.type, item.text) }), jsx("div", { className: "mt-2xs text-s font-light text-secondary-text", children: item.description })] }, String(index)));
1917
2112
  const renderText = (type, text = '') => {
1918
2113
  switch (type) {
1919
2114
  case 'tel':
@@ -1934,7 +2129,7 @@
1934
2129
  return (jsx("a", { className: style(horizontalNavigationLinkStyles, className), href: href, target: target, onClick: onClick, children: text || `Документ ${index}` }));
1935
2130
  });
1936
2131
 
1937
- const HorizontalNavigation = JSX(({ title, links, className = '' }) => (jsxs("div", { className: className, children: [jsx(Text, { size: "text-h6", children: title }), links?.length ? (jsx("div", { className: "flex flex-col gap-6 mt-7", children: links.map((_, i) => (jsx(HorizontalNavigationLink, { index: i, ..._ }, String(i)))) })) : null] })));
2132
+ const HorizontalNavigation = JSX(({ title, links, className = '' }) => (jsxs("div", { className: className, children: [jsx(Text, { size: "text-l", font: "font-normal", children: title }), links?.length ? (jsx("div", { className: "flex flex-col gap-lg mt-lg", children: links.map((_, i) => (jsx(HorizontalNavigationLink, { className: "text-l font-light", index: i, ..._ }, String(i)))) })) : null] })));
1938
2133
 
1939
2134
  const TextInformationLink = JSX(({ className = '', index, ...rest }) => {
1940
2135
  const link = useLink({ isRemote: true });
@@ -1942,17 +2137,15 @@
1942
2137
  return (jsx("a", { className: `text-xs font-light text-secondary-text visited:text-secondary-text hover:text-primary-main inline-block no-underline max-w-[292px] ${className}`, href: href, target: target, onClick: onClick, children: text || `Документ ${index}` }));
1943
2138
  });
1944
2139
 
1945
- const TextInformation = JSX(({ className = '', links }) => (jsxs("div", { className: className, children: [jsx("div", { className: "pt-4 xl:pt-5", children: jsx(Text, { size: "text-xs", font: "font-light", color: "text-secondary-text", children: `\u00a9\u00A02000-${new Date().getFullYear()}\u00A0АО \u00ABРоссельхозбанк\u00BB Генеральная лицензия Банка России \u2116\u00A03349 от\u00A012.08.2015\u00A0г.` }) }), links?.length ? (jsx("div", { className: "flex justify-start items-start gap-5 pt-4", children: links.map((_, i) => (jsx(TextInformationLink, { index: i, ..._ }, String(i)))) })) : null] })));
2140
+ const TextInformation = JSX(({ className = '', links }) => (jsxs("div", { className: className, children: [jsx("div", { className: "pt-lg", children: jsx(Text, { size: "text-xs", font: "font-light", color: "text-secondary-text", children: `\u00a9\u00A02000-${new Date().getFullYear()}\u00A0АО \u00ABРоссельхозбанк\u00BB Генеральная лицензия Банка России \u2116\u00A03349 от\u00A012.08.2015\u00A0г.` }) }), links?.length ? (jsx("div", { className: "flex flex-col sm:flex-row justify-start items-start gap-x-lg gap-y-xs pt-lg", children: links.map((_, i) => (jsx(TextInformationLink, { index: i, ..._ }, String(i)))) })) : null] })));
1946
2141
 
1947
- const Footer = JSX(({ className = '', ...rest }) => {
1948
- const fallback = rest.options?.page?.fallback;
1949
- const sitemap = useSWRResource(projectSettings.SITEMAP || 'sitemap', fallback);
1950
- const { relatedEnterprises, contacts, socialMedia, mobileApps, horizontalNavigationTitle } = useSWRResource(projectSettings.FOOTER || 'footer', fallback);
1951
- return (jsxs(BlockWrapper, { tag: "footer", className: className, defaultPadding: "px-4 py-6", ...rest, children: [jsx("div", { className: "mb-4 pb-5 border-b border-main-divider", children: sitemap.topItems?.map((item, i) => (jsx(RollupItem, { label: item?.text, labelIcon: item?.icon, children: jsx(LinkList, { items: item.items, className: "my-3" }) }, String(i)))) }), jsx(Contacts, { className: "overflow-hidden", items: contacts }), jsx(SocialMedia, { className: "mb-4", media: socialMedia }), mobileApps?.map(renderButton), jsx(HorizontalNavigation, { className: "pt-m pb-2xl border-y border-main-divider", title: horizontalNavigationTitle, links: relatedEnterprises }), jsx(TextInformation, {})] }));
2142
+ const Footer = JSX(({ className, sitemap, ...rest }) => {
2143
+ const { relatedEnterprises, contacts, socialMedia, mobileApps, horizontalNavigationTitle, documents, } = useSWRResource(projectSettings.FOOTER || 'footer', rest.options?.page?.fallback);
2144
+ return (jsxs(BlockWrapper, { tag: "footer", className: className, ...rest, children: [jsx("div", { className: "mb-lg pb-xs border-b border-main-divider", children: sitemap?.topItems?.map((item, i) => (jsx(RollupItem, { label: item?.text, labelIcon: item?.icon, children: jsx(LinkList, { items: item.items }) }, String(i)))) }), jsx(Contacts, { className: "overflow-hidden", items: contacts }), jsxs("div", { className: "mt-xl", children: [jsx(SocialMedia, { className: "mb-xl", media: socialMedia, buttonSize: "stretched", children: "\u0421\u043E\u0446\u0441\u0435\u0442\u0438" }), jsx(Text, { size: "text-s", font: "font-light", color: "text-secondary-text", children: "\u041C\u043E\u0431\u0438\u043B\u044C\u043D\u043E\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435" }), jsx("div", { className: "mt-xs", children: mobileApps?.map(renderButton) })] }), jsx(HorizontalNavigation, { className: "py-lg border-y border-main-divider", title: horizontalNavigationTitle, links: relatedEnterprises }), jsx(TextInformation, { links: documents })] }));
1952
2145
  });
1953
2146
  const renderButton = ({ href = '/' }, i) => {
1954
2147
  const { label } = findIconByHref(href);
1955
- return (jsx(Button, { className: "w-full mb-4", text: label, version: "secondary", href: href, target: "_blank" }, String(i)));
2148
+ return (jsx(Button, { className: "w-full mb-lg", text: label, version: "secondary", href: href, target: "_blank" }, String(i)));
1956
2149
  };
1957
2150
 
1958
2151
  const ICON_VERSION_MAP = {
@@ -1995,19 +2188,37 @@
1995
2188
  return (jsxs("div", { className: "flex items-center justify-between w-full", children: [isRootLocation ? (jsx(Logo, { bgColor: bgColor, logo: logo })) : (jsxs(Button, { className: "flex items-center text-l", ariaLabel: "\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043D\u0430\u0437\u0430\u0434", onClick: onClick, children: [jsx(Img, { className: "w-6 h-6", image: {
1996
2189
  icon: 'ChevronLeft',
1997
2190
  iconVersion: 'black',
1998
- } }), "\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043D\u0430\u0437\u0430\u0434"] })), internetBankUrl ? (jsx(Button, { href: internetBankUrl, ariaLabel: "\u0412\u043E\u0439\u0442\u0438", target: "_blank", className: style('p-3 my-1 text-s whitespace-nowrap text-primary-main hover:text-primary-hover', BUTTON_STYLE[version === 'transparent' ? 'transparent' : 'default']), children: "\u0412\u043E\u0439\u0442\u0438" })) : null] }));
2191
+ } }), "\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043D\u0430\u0437\u0430\u0434"] })), internetBankUrl ? (jsx(Button, { href: internetBankUrl, ariaLabel: "\u0412\u043E\u0439\u0442\u0438", target: "_blank", className: style('p-s my-2xs text-s whitespace-nowrap text-primary-main hover:text-primary-hover', BUTTON_STYLE[version === 'transparent' ? 'transparent' : 'default']), children: "\u0412\u043E\u0439\u0442\u0438" })) : null] }));
1999
2192
  });
2000
2193
 
2001
2194
  const BG_COLOR_TO_BLOCK_VERSION = {
2002
2195
  'bg-white': 'primary',
2003
2196
  transparent: 'transparent',
2004
2197
  };
2005
- const Header = JSX(({ bgColor = 'bg-white', version = BG_COLOR_TO_BLOCK_VERSION[bgColor], ...rest }) => {
2006
- const fallback = rest.options?.page?.fallback;
2007
- const { logo, internetBankUrl } = useSWRResource(projectSettings.SITEMAP || 'sitemap', fallback);
2198
+ const Header = JSX(({ bgColor = 'bg-white', version = BG_COLOR_TO_BLOCK_VERSION[bgColor], sitemap, ...rest }) => {
2199
+ const { logo, internetBankUrl } = sitemap || {};
2008
2200
  return (jsx(BlockWrapper, { tag: "header", defaultPadding: "", version: version, ...rest, children: jsx("div", { className: "container px-4 py-2xs box-border", children: jsx(HeaderTop, { bgColor: bgColor, logo: logo, internetBankUrl: internetBankUrl, version: version, ...rest }) }) }));
2009
2201
  });
2010
2202
 
2203
+ const gapStyles = {
2204
+ XXL: 'gap-6xl',
2205
+ XL: 'gap-5xl',
2206
+ L: 'gap-3xl',
2207
+ M: 'gap-m',
2208
+ S: 'gap-xs',
2209
+ XS: 'gap-2xs',
2210
+ '': '',
2211
+ };
2212
+
2213
+ const VerticalLayout = JSX(({ className = '', gap = '', isPadding = false, isInnerPadding = true, version = 'transparent', isTheme = false, ...rest }) => (jsx(BlockWrapper, { className: style('relative flex flex-col', gapStyles[gap], className), defaultPadding: isPadding ? 'p-6xl' : '', version: version, isTheme: isTheme, ...rest, children: renderChildren({
2214
+ ...rest,
2215
+ extraProps: { className: 'w-full', padding: isInnerPadding ? '' : 'p-0' },
2216
+ }) })));
2217
+ VerticalLayout.childrenTypes = [];
2218
+
2219
+ const HorizontalLayout = JSX((props) => jsx(VerticalLayout, { ...props }));
2220
+ HorizontalLayout.childrenTypes = [];
2221
+
2011
2222
  const ImgBlock = JSX((props) => {
2012
2223
  const { className, image, ...rest } = props;
2013
2224
  return (jsx(BlockWrapper, { className: className, defaultPadding: "p-0", ...rest, children: jsx(Img, { image: image }) }));
@@ -2046,7 +2257,7 @@
2046
2257
  };
2047
2258
  const LinkDocs = JSX(({ className = '', title, description, align = 'text-center', documents, icon = { icon: 'DocIcon' }, columnsMode = 'double', ...rest }) => {
2048
2259
  const router = useRouter();
2049
- return (jsxs(BlockWrapper, { className: className, defaultPadding: "p-6xl", ...rest, children: [jsx(Headline, { className: "!p-0", title: title, description: description, align: align, headlineVersion: "M", as: "h2" }), documents?.length ? (jsx("div", { className: style('mt-5 sm:mt-8 flex flex-col gap-6', linkColumnsModeStyleMap[columnsMode]), role: "list", children: documents.map(renderLinkDocItem(router, columnsMode, icon)) })) : null] }));
2260
+ return (jsxs(BlockWrapper, { className: className, defaultPadding: "p-6xl", ...rest, children: [jsx(Headline, { title: title, description: description, align: align, headlineVersion: "M", as: "h2", isPadding: false }), documents?.length ? (jsx("div", { className: style('mt-5 sm:mt-8 flex flex-col gap-6', linkColumnsModeStyleMap[columnsMode]), role: "list", children: documents.map(renderLinkDocItem(router, columnsMode, icon)) })) : null] }));
2050
2261
  });
2051
2262
  const renderLinkDocItem = (router, columnsMode, icon) => (docBlockDef, i) => {
2052
2263
  const href = docBlockDef?.docType === 'Attachment'
@@ -2055,7 +2266,7 @@
2055
2266
  const fileSize = docBlockDef?.docType === 'Attachment'
2056
2267
  ? formatBytes(docBlockDef?.attachment?.fileSize || 0)
2057
2268
  : docBlockDef?.fileSize;
2058
- return (jsx("div", { className: columnsMode === 'double' ? 'basis-[calc(50%-20px)]' : '', role: "listitem", children: jsx(LinkDocItem, { ...docBlockDef, href: href, fileSize: fileSize, icon: icon ? jsx(Img, { className: linkIconStyle, image: icon, width: "24", height: "24" }) : null }) }, String(i)));
2269
+ return (jsx("div", { className: columnsMode === 'double' ? 'basis-[calc(50%-20px)]' : '', role: "listitem", children: jsx(LinkDocItem, { text: docBlockDef?.text, target: docBlockDef?.target, href: href, fileSize: fileSize, icon: icon ? jsx(Img, { className: linkIconStyle, image: icon, width: "24", height: "24" }) : null }) }, String(i)));
2059
2270
  };
2060
2271
 
2061
2272
  /**
@@ -2067,22 +2278,14 @@
2067
2278
  right: 'text-right',
2068
2279
  };
2069
2280
 
2070
- const imageAlignmentMap = {
2071
- start: 'self-start',
2072
- center: 'self-center',
2073
- end: 'self-end',
2074
- };
2075
- const BaseTile = JSX(({ className, defaultPadding, padding, title = '', insetTitle = '', buttons, leftImage, rightImage, imageAlign, backImage, children, }) => (jsxs("div", { className: style('relative flex flex-col gap-3xl font-sans overflow-hidden', padding || defaultPadding, className), children: [backImage ? jsx("div", { className: "absolute bottom-0 right-0 z-0", children: backImage }) : null, title ? jsx("div", { className: "relative", children: title }) : null, jsxs("div", { className: "grow relative flex flex-wrap sm:flex-nowrap justify-between items-stretch gap-3xl", children: [renderImageContainer(leftImage, { imageAlign }), jsxs("div", { className: style('flex flex-col gap-3xl max-w-[600px] xl:max-w-[728px]', leftImage ? '' : 'grow'), children: [insetTitle, jsx("div", { className: "grow", children: children }), buttons] }), renderImageContainer(rightImage, { className: '-order-1 sm:order-1', imageAlign })] })] })));
2076
- const renderImageContainer = (image, { className, imageAlign }) => image ? (jsx("div", { className: style('flex-shrink-0', imageAlign && imageAlignmentMap[imageAlign], className), children: image })) : null;
2077
-
2078
- const renderDescription$1 = (description) => description ? (jsx("div", { className: "mb-5 pt-3xs sm:mb-0 sm:pt-0", children: jsx(Text, { size: "text-xl", "font-weight": "light", children: description }) })) : null;
2281
+ const renderDescription$1 = (description) => description ? (jsx("div", { className: "mb-lg pt-3xs", children: jsx(Text, { size: "text-xl", "font-weight": "light", children: description }) })) : null;
2079
2282
 
2080
2283
  const renderList$1 = (items) => {
2081
2284
  return items?.length ? (jsx(List, { items: items, className: "text-l font-light mb-xs last:mb-0" })) : (jsx("span", { className: "text-m font-light text-secondary-text", children: "\u041D\u0430\u0432\u0435\u0434\u0438\u0442\u0435 \u043A\u0430\u043C\u0435\u0440\u0443 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u043D\u0430 QR-\u043A\u043E\u0434 \u0438 \u0441\u043A\u0430\u0447\u0430\u0439\u0442\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435" }));
2082
2285
  };
2083
2286
 
2084
2287
  const MobileAppTile = JSX(({ className, padding, alignTitle = 'left', buttons = [], description, headingType = 'h4', image, items, qr, title = 'Мобильное приложение', version = 'primary', ...rest }) => {
2085
- const containerStyle = version === 'secondary' ? 'p-m min-w-[120px]' : 'min-w-[92px]';
2288
+ const containerStyle = version === 'secondary' ? 'p-m min-w-32' : 'min-w-24';
2086
2289
  return (jsx(BlockWrapper, { className: style('min-h-80', className), padding: "p-0", version: version, ...rest, children: jsxs(BaseTile, { className: "h-full", padding: padding, defaultPadding: "p-6xl", title: title ? (jsx(Heading, { headingType: headingType, title: title, className: style('whitespace-pre-wrap', AlignText[alignTitle]) })) : null, buttons: renderButtonsSection(buttons, { isVertical: buttons.length > 4 }), children: [renderDescription$1(description), jsxs("div", { className: "flex flex-1 flex-wrap gap-m items-center", children: [qr?.src ? (jsx("div", { className: style('flex justify-center bg-white rounded-md', containerStyle), children: jsx(Img, { className: "w-fit", image: qr }) })) : null, renderList$1(items), image?.src ? jsx(Img, { image: image }) : null] })] }) }));
2087
2290
  });
2088
2291
 
@@ -2169,6 +2372,387 @@
2169
2372
  return (jsx(BlockWrapper, { defaultPadding: "p-0", ...rest, children: jsx(RichText, { __html: __html, richVersion: richVersion }) }));
2170
2373
  });
2171
2374
 
2375
+ const mockPoints = [
2376
+ { coords: [55.77, 37.46], text: 'Трактир' },
2377
+ { coords: [55.66, 37.48], text: 'Трактор' },
2378
+ { coords: [55.65, 37.42], text: 'Ресторан' },
2379
+ { coords: [55.64, 37.54], text: 'Музей' },
2380
+ { coords: [55.54, 37.52], text: 'Библиотека' },
2381
+ { coords: [55.53, 37.56], text: 'Школа' },
2382
+ { coords: [55.61, 37.61], text: 'Аптека' },
2383
+ { coords: [55.8, 37.58], text: 'Бар' },
2384
+ { coords: [55.71, 37.35], text: 'Институт' },
2385
+ { coords: [55.74, 37.57], text: 'Университет' },
2386
+ { coords: [55.58, 37.69], text: 'Больница' },
2387
+ { coords: [55.57, 37.7], text: 'Цирк' },
2388
+ { coords: [55.55, 37.64], text: 'Магазин' },
2389
+ { coords: [55.5, 37.75], text: 'Булочная' },
2390
+ { coords: [55.81, 37.73], text: 'Полиция' },
2391
+ { coords: [55.73, 37.68], text: 'Салон красоты' },
2392
+ { coords: [55.86, 37.76], text: 'Баня' },
2393
+ { coords: [55.38, 37.69], text: 'Гараж' },
2394
+ { coords: [55.91, 37.5], text: 'Дом' },
2395
+ { coords: [55.62, 37.32], text: 'Прачечная' },
2396
+ { coords: [55.85, 37.41], text: 'Стадион' },
2397
+ { coords: [55.67, 37.24], text: 'Вокзал' },
2398
+ { coords: [55.79, 37.41], text: 'Кафе' },
2399
+ ];
2400
+
2401
+ function renderClusterer(yandexMaps, map, points) {
2402
+ map.geoObjects.removeAll();
2403
+ const clusterIconContentLayout = yandexMaps.templateLayoutFactory.createClass('<div style="margin-top: -3px;">{{properties.geoObjects.length}}</div>');
2404
+ const clusterer = new yandexMaps.Clusterer({
2405
+ clusterIcons: [
2406
+ {
2407
+ href: 'icons/MapMarkerClusterIcon.svg',
2408
+ size: [78, 84],
2409
+ offset: [-35, -50],
2410
+ },
2411
+ ],
2412
+ clusterIconContentLayout,
2413
+ clusterHideIconOnBalloonOpen: false,
2414
+ geoObjectHideIconOnBalloonOpen: false,
2415
+ });
2416
+ const geoObjects = points.map((point) => new yandexMaps.Placemark(point, {}, {
2417
+ iconLayout: 'default#image',
2418
+ iconImageHref: 'icons/MapMarkerSingleIcon.svg',
2419
+ iconImageSize: [78, 84],
2420
+ iconImageOffset: [-35, -50],
2421
+ }));
2422
+ clusterer.add(geoObjects);
2423
+ map.geoObjects.add(clusterer);
2424
+ // TODO: Fix
2425
+ // @ts-ignore
2426
+ map.setBounds(yandexMaps.util.bounds.fromPoints(points)).then(() => {
2427
+ if (map.getZoom() > 10) {
2428
+ map.setZoom(10);
2429
+ }
2430
+ });
2431
+ }
2432
+
2433
+ const styles$3 = {
2434
+ focus: 'focus:border-primary-text focus:border',
2435
+ hover: 'hover:bg-primary-hover',
2436
+ active: 'active:bg-primary-active',
2437
+ border: 'border border-transparent rounded-md',
2438
+ position: 'flex items-center justify-center',
2439
+ font: 'text-center font-sans',
2440
+ };
2441
+ const renderOpenMap = (pointsCenter) => {
2442
+ const getYandexMapUrl = () => {
2443
+ return `https://yandex.ru/maps/?ll=${[pointsCenter[1], pointsCenter[0]]}&z=10&l=map`;
2444
+ };
2445
+ return (jsx("a", { className: `select-none cursor-pointer px-9 h-12 bg-primary-main text-white ${Object.values(styles$3).join(' ')}`, href: getYandexMapUrl(), target: "_blank", children: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u043D\u0430 \u043A\u0430\u0440\u0442\u0435" }));
2446
+ };
2447
+
2448
+ const styles$2 = {
2449
+ border: 'border border-transparent rounded-md',
2450
+ position: 'relative flex items-center',
2451
+ font: 'text-center font-sans',
2452
+ shadow: 'shadow-[0_4px_25px_rgba(0,0,0,0.07)]',
2453
+ };
2454
+ const renderSearchField = (points, yandexMaps, updatePointsToRender) => {
2455
+ const onChange = (e) => {
2456
+ const value = e.target?.value ? e.target?.value.toLowerCase() : '';
2457
+ if (value) {
2458
+ const searchResult = points.filter((_) => {
2459
+ const textLowerCase = _.text.toLowerCase();
2460
+ if (textLowerCase.indexOf(value) > -1) {
2461
+ return _;
2462
+ }
2463
+ return null;
2464
+ });
2465
+ updatePointsToRender(searchResult);
2466
+ }
2467
+ else {
2468
+ updatePointsToRender(null);
2469
+ }
2470
+ };
2471
+ return (jsxs("div", { className: `${Object.values(styles$2).join(' ')} bg-white py-s pl-5xl pr-m w-full`, children: [jsx(Icon, { name: "LoupeIcon", iconVersion: "black", width: "20", height: "20", className: "absolute left-4" }), jsx("input", { type: "text", placeholder: "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441 \u0438\u043B\u0438 \u043C\u0435\u0442\u0440\u043E", onChange: onChange, className: "border-0 focus:border-0 outline-0 w-full" })] }));
2472
+ };
2473
+
2474
+ const styles$1 = {
2475
+ focus: 'focus:border-primary-text focus:border',
2476
+ hover: 'hover:bg-primary-hover',
2477
+ active: 'active:bg-primary-active',
2478
+ border: 'border border-transparent rounded-md',
2479
+ position: 'absolute flex items-center justify-center',
2480
+ font: 'text-center font-sans',
2481
+ };
2482
+ const renderUserGeolocation = (map, yandexMaps, className) => {
2483
+ const setUserGeoLocation = () => {
2484
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
2485
+ // @ts-ignore
2486
+ yandexMaps.geolocation
2487
+ .get({
2488
+ provider: 'yandex',
2489
+ autoReverseGeocode: true,
2490
+ mapStateAutoApply: true,
2491
+ })
2492
+ .then(function (result) {
2493
+ map.geoObjects.add(result.geoObjects);
2494
+ });
2495
+ };
2496
+ return (jsx("div", { className: `select-none cursor-pointer py-4 w-12 bg-white ${Object.values(styles$1).join(' ')} ${className}`, onClick: setUserGeoLocation, children: jsx(Icon, { name: "UserGeoLocationIcon", width: "20", height: "16" }) }));
2497
+ };
2498
+
2499
+ const getNS = (_) => globalThis[_];
2500
+ function useExternalNS(namespaceName, url) {
2501
+ const [externalNS, setExternalNS] = useState();
2502
+ const setNS = useCallback(() => setExternalNS(getNS(namespaceName)), [namespaceName]);
2503
+ useEffect(() => {
2504
+ const script = document.getElementById(url);
2505
+ if (script) {
2506
+ if (getNS(namespaceName)) {
2507
+ setNS();
2508
+ }
2509
+ else {
2510
+ script.addEventListener('load', setNS);
2511
+ return () => {
2512
+ script.removeEventListener('load', setNS);
2513
+ };
2514
+ }
2515
+ }
2516
+ else {
2517
+ const newScript = document.createElement('script');
2518
+ newScript.src = url;
2519
+ newScript.async = true;
2520
+ newScript.id = url;
2521
+ newScript.addEventListener('load', setNS);
2522
+ document.head.appendChild(newScript);
2523
+ return () => {
2524
+ document.head.removeChild(newScript);
2525
+ setExternalNS(undefined);
2526
+ };
2527
+ }
2528
+ return undefined;
2529
+ }, [namespaceName, url]);
2530
+ return externalNS;
2531
+ }
2532
+
2533
+ const YMAPS_NAMESPACE = 'ymaps';
2534
+ const useYandexMaps = () => {
2535
+ const url = `https://api-maps.yandex.ru/2.1/?apikey=${projectSettings.YANDEX_MAP_API_KEY || ''}&lang=ru_RU`;
2536
+ return useExternalNS(YMAPS_NAMESPACE, url);
2537
+ };
2538
+
2539
+ const styles = {
2540
+ focus: 'focus:border-primary-text focus:border',
2541
+ hover: 'hover:bg-primary-hover',
2542
+ active: 'active:bg-primary-active',
2543
+ border: 'border-b border-b-2 border-gray last:border-0',
2544
+ position: 'relative flex items-center justify-center',
2545
+ font: 'text-center font-sans text-l',
2546
+ };
2547
+ // TODO: Добавить метод определения центральной точки
2548
+ const ZoomButton = JSX(({ yandexMaps, direction = 'in' }) => {
2549
+ const iconName = direction === 'in' ? 'PlusIcon' : 'MinusIcon';
2550
+ const changeZoom = () => {
2551
+ const currentZoom = yandexMaps.current.getZoom();
2552
+ const newZoom = direction === 'in' ? currentZoom + 1 : currentZoom - 1;
2553
+ yandexMaps.current.setZoom(newZoom, { checkZoomRange: true });
2554
+ };
2555
+ return (jsx("div", { onClick: changeZoom, className: `${Object.values(styles).join(' ')} bg-white select-none cursor-pointer w-12 h-12`, children: jsx(Icon, { name: iconName, width: "20", height: "16" }) }));
2556
+ });
2557
+
2558
+ const FULLSCREEN_STYLES = {
2559
+ border: 'border border-transparent rounded-md ',
2560
+ position: 'absolute flex items-center justify-center',
2561
+ size: 'w-12 h-12',
2562
+ focus: 'focus:border-primary-text focus:border',
2563
+ font: 'text-center font-sans',
2564
+ active: 'active:bg-primary-active',
2565
+ hover: 'hover:bg-primary-hover',
2566
+ other: 'select-none cursor-pointer',
2567
+ };
2568
+ // TODO: Поле для поиска: невыяснено среди каких данных делать поиск (искать в имени офиса, в адресе, метро и т.д.).
2569
+ // Сейчас реализован поиск среди тестовых данных
2570
+ // TODO: Также выяснить что делать когда ничего не найдено
2571
+ // TODO: На макетах также когда есть поле поиска нет кнопки открыть на карте.
2572
+ const YandexMap = JSX(({ points, className = '', zoom = 5, showSearchField = false }) => {
2573
+ const map = useRef(null);
2574
+ const yandexMaps = useYandexMaps();
2575
+ const [isFullScreen, setIsFullScreen] = useState();
2576
+ const [pointsToRender, setPointsToRender] = useState(normalizePoints(mockPoints));
2577
+ const pointsCenter = getCenterPoint(points);
2578
+ useEffect(() => {
2579
+ if (!map?.current) {
2580
+ yandexMaps?.ready(() => {
2581
+ map.current = new yandexMaps.Map('map', {
2582
+ center: pointsCenter,
2583
+ zoom,
2584
+ controls: [],
2585
+ suppressMapOpenBlock: true,
2586
+ });
2587
+ renderClusterer(yandexMaps, map.current, pointsToRender);
2588
+ });
2589
+ }
2590
+ }, [yandexMaps, map, pointsToRender]);
2591
+ useEffect(() => {
2592
+ if (map.current && pointsToRender && yandexMaps) {
2593
+ const newPoints = pointsToRender.length < 1 ? normalizePoints(mockPoints) : pointsToRender;
2594
+ renderClusterer(yandexMaps, map.current, newPoints);
2595
+ }
2596
+ }, [map, pointsToRender, yandexMaps]);
2597
+ if (!yandexMaps) {
2598
+ return null;
2599
+ }
2600
+ const toggleFullscreen = () => {
2601
+ const container = map.current.container;
2602
+ if (!isFullScreen) {
2603
+ container.enterFullscreen();
2604
+ }
2605
+ else {
2606
+ container.exitFullscreen();
2607
+ }
2608
+ setIsFullScreen(container.isFullscreen());
2609
+ };
2610
+ const zIndex = isFullScreen ? 'z-[100000]' : 'z-10';
2611
+ const updatePointsToRender = (newPoints) => {
2612
+ if (newPoints) {
2613
+ const normalizedPoints = normalizePoints(newPoints);
2614
+ setPointsToRender(normalizedPoints);
2615
+ }
2616
+ };
2617
+ return (jsxs("div", { id: "map", className: `${isFullScreen ? '' : 'relative'} w-full ${className}`, children: [jsx("div", { className: `absolute flex left-2 top-4 w-1/2 ${zIndex}`, children: showSearchField
2618
+ ? renderSearchField(mockPoints, yandexMaps, updatePointsToRender)
2619
+ : renderOpenMap(pointsCenter) }), jsx("div", { className: `${Object.values(FULLSCREEN_STYLES).join(' ')} ${zIndex} right-2 top-4 bg-white`, onClick: toggleFullscreen, children: jsx(Icon, { name: "FullScreenIcon", width: "16", height: "16" }) }), jsxs("div", { className: `absolute right-2 top-52 z-10 w-12 overflow-hidden border border-transparent rounded-md ${zIndex}`, children: [jsx(ZoomButton, { yandexMaps: map }), jsx(ZoomButton, { yandexMaps: map, direction: "out" })] }), renderUserGeolocation(map.current, yandexMaps, `right-2 top-80 ${zIndex}`)] }));
2620
+ });
2621
+ const getCenterPoint = (points) => [
2622
+ getArraySumAndAverage(mapByIndex(points, 0)),
2623
+ getArraySumAndAverage(mapByIndex(points, 1)),
2624
+ ];
2625
+ const mapByIndex = (arr, index) => arr.map((a) => a[index]);
2626
+ const getArraySumAndAverage = (arr) => arr.reduce((a, b) => a + b) / arr.length;
2627
+ const normalizePoints = (points) => (points ? points.map((_) => _.coords) : null);
2628
+
2629
+ const WrapperSelect = JSX(({ data, fieldLabel, fieldValue, selected, placeholder = '', setSelected, label }) => {
2630
+ const dataFormat = data
2631
+ .filter(Boolean)
2632
+ .map((_) => ({ key: _?.[fieldValue || fieldLabel], text: _?.[fieldLabel] }));
2633
+ const selectedObj = dataFormat.find((_) => _.key === selected);
2634
+ return (jsx(Select, { options: dataFormat, label: label, placeholder: placeholder || selected, onChange: (_) => setSelected(_.key), value: selectedObj }));
2635
+ });
2636
+
2637
+ const RegionsAndBranches = JSX(({ regions = [], selectedRegion, onSelectedRegion: onSelectedRegion, branches = [], selectedBranch, onSelectedBranch, }) => (jsxs("div", { className: "flex flex-col sm:flex-row gap-m order-1", children: [jsx("div", { className: "flex-1 min-w-0", children: jsx(WrapperSelect, { data: regions, fieldValue: "code", fieldLabel: "name", selected: selectedRegion, setSelected: onSelectedRegion, label: "\u0420\u0435\u0433\u0438\u043E\u043D" }) }), jsx("div", { className: "flex-1 min-w-0", children: jsx(WrapperSelect, { data: branches, fieldValue: "branchCode", fieldLabel: "address", selected: selectedBranch, setSelected: onSelectedBranch, label: "\u041E\u0442\u0434\u0435\u043B\u0435\u043D\u0438\u0435", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043E\u0442\u0434\u0435\u043B\u0435\u043D\u0438\u0435" }) })] })));
2638
+
2639
+ const Radio = JSX(({ name, text, value, checked, onChange, className }) => (jsx("div", { className: className, children: jsxs("label", { className: "font-sans flex items-center relative cursor-pointer", children: [jsx("input", { className: "appearance-none flex justify-center items-center shrink-0 w-5 h-5 border border-gray hover:border-primary-hover\n checked:border-2 checked:!border-primary-main focus:checked:border-primary-main focus:border-primary-text active:border-primary-text\n after:block after:w-2.5 after:h-2.5 after:rounded-full checked:after:bg-primary-main outline-none rounded-full cursor-pointer", type: "radio", value: value, name: name, checked: checked, onChange: (_) => onChange(_.target.value) }), text ? jsx("span", { className: "text-primary-text ml-3 cursor-pointer", children: text }) : null] }) })));
2640
+
2641
+ const RadioButtons = JSX(({ className }) => {
2642
+ const [selectedOption, setSelectedOption] = useState('option2');
2643
+ const onChange = useCallback((_) => setSelectedOption(_), []);
2644
+ return (jsxs("div", { className: style('order-4', className), children: [jsx(Radio, { className: "mb-xs", name: "contractType", text: "\u041F\u0440\u043E\u0441\u0442\u043E\u0435 \u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435", value: "option1", checked: selectedOption === 'option1', onChange: onChange }), jsx(Radio, { name: "contractType", text: "\u0421\u0434\u0435\u043B\u043A\u0430 \u0441 \u043D\u0435\u0434\u0432\u0438\u0436\u0438\u043C\u043E\u0441\u0442\u044C\u044E", value: "option2", checked: selectedOption === 'option2', onChange: onChange })] }));
2645
+ });
2646
+
2647
+ const ITEMS = ['От 1 дня', 'До 365 дней'];
2648
+ const MIN = 1;
2649
+ const MAX = 365;
2650
+ const RentalPeriod = JSX(({ days, setDays }) => (jsxs("div", { className: "order-1", children: [jsx(Text, { size: "text-m", font: "font-light", children: "\u0421\u0440\u043E\u043A \u0430\u0440\u0435\u043D\u0434\u044B" }), jsx(InputRange, { min: MIN, max: MAX, value: days, items: ITEMS, onChange: setDays })] })));
2651
+
2652
+ const SafeBoxCases = JSX(({ caseVolumes = [], selectedCaseVolume, onSelectedCaseVolume, safeBoxCases = [], selectedBoxSize, onSelectedBoxSize, }) => {
2653
+ return (jsxs("div", { className: "flex flex-col sm:flex-row gap-4 order-1", children: [jsx("div", { className: "flex-1 min-w-0", children: jsx(WrapperSelect, { data: caseVolumes, fieldLabel: "volume", selected: selectedCaseVolume, setSelected: onSelectedCaseVolume, label: "\u0420\u0430\u0437\u043C\u0435\u0440", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0440\u0430\u0437\u043C\u0435\u0440" }) }), jsx("div", { className: "flex-1 min-w-0", children: jsx(WrapperSelect, { data: safeBoxCases, fieldLabel: "safeBoxCasesSize", selected: selectedBoxSize, setSelected: onSelectedBoxSize, label: "\u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u044F\u0447\u0435\u0439\u043A\u0438, \u043C\u043C (\u0412\u0445\u0428\u0445\u0414)", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u044F\u0447\u0435\u0439\u043A\u0438" }) })] }));
2654
+ });
2655
+
2656
+ const SafeDepositRentalFields = JSX(({ regions, selectedRegion, branches, selectedBranch, days, selectedCaseVolume, selectedBoxSize, safeBoxCases, caseVolumes, onChange, onClick, }) => {
2657
+ return (jsxs("div", { className: "contents sm:block flex-1 space-y-xl", children: [jsx(RegionsAndBranches, { regions: regions, selectedRegion: selectedRegion, onSelectedRegion: (value) => onChange({ selectedRegion: value }), branches: branches, selectedBranch: selectedBranch, onSelectedBranch: onSelectedBranch(onChange) }), jsx(RentalPeriod, { days: days, setDays: (value) => onChange({ days: value }) }), jsx(SafeBoxCases, { caseVolumes: caseVolumes, selectedCaseVolume: selectedCaseVolume, onSelectedCaseVolume: onSelectedCaseVolume(onChange), safeBoxCases: safeBoxCases, selectedBoxSize: selectedBoxSize, onSelectedBoxSize: (value) => onChange({ selectedBoxSize: value }) }), jsx("div", { className: "order-4", children: jsx(Text, { size: "text-l", font: "font-light", color: "text-secondary-text", children: "\u0422\u0438\u043F \u0434\u043E\u0433\u043E\u0432\u043E\u0440\u0430" }) }), jsxs("div", { className: "contents sm:flex justify-between items-center", children: [jsx(RadioButtons, { className: "mb-4 sm:mb-0" }), jsx(Button, { text: "\u041E\u0444\u0438\u0441\u044B \u043D\u0430 \u043A\u0430\u0440\u0442\u0435", version: "primary", onClick: onClick, className: "order-6" })] })] }));
2658
+ });
2659
+ const onSelectedBranch = (onChange) => (value) => {
2660
+ onChange({ selectedBranch: value, selectedCaseVolume: '', selectedBoxSize: '' });
2661
+ };
2662
+ const onSelectedCaseVolume = (onChange) => (value) => {
2663
+ onChange({ selectedCaseVolume: value, selectedBoxSize: '' });
2664
+ };
2665
+
2666
+ const SafeDepositRentalTotal = JSX(({ days, tariffs = [] }) => {
2667
+ const price = calculatePrice(days, tariffs);
2668
+ const imageDescription = 'На рисунке изображена пачка листов\nформата А4';
2669
+ return (jsxs("div", { className: "contents sm:flex flex-col justify-between order-2", children: [jsxs("div", { className: "flex flex-col sm:flex-row gap-x-11 gap-y-7 order-5 sm:order-none py-7 sm:py-0 border-t border-main-divider sm:border-none", children: [renderTotal('Аренда за', days), renderTotal('Цена', price + ' ₽')] }), jsx("span", { className: "sm:hidden order-3 mb-2 text-s-light text-secondary-text", children: imageDescription }), jsxs("div", { className: "flex flex-col items-center gap-3 order-3 sm:order-none mb-6 sm:mb-0 bg-primary-main py-3 sm:p-8 text-center", children: [jsx(Img, { image: { icon: 'PackA4Icon' }, className: "sm:h-[246px]" }), jsx("span", { className: "hidden sm:inline text-s font-light text-white opacity-80 whitespace-pre-line", children: imageDescription })] })] }));
2670
+ });
2671
+ const renderTotal = (label, total) => {
2672
+ return (jsxs("div", { className: "flex justify-between items-center gap-y-1 sm:flex-col sm:items-start", children: [jsx("div", { className: "text-l font-light text-secondary-text", children: label }), jsx("span", { className: "text-l sm:text-h3 text-primary-text", children: total })] }));
2673
+ };
2674
+ const calculatePrice = (days, tariffs) => {
2675
+ const tariffType = getTariffType(days);
2676
+ const tariffValue = tariffs?.find((_) => _.tariffType === String(tariffType))?.tariffValue || 0;
2677
+ return days * tariffValue;
2678
+ };
2679
+ const getTariffType = (days) => {
2680
+ let tariffType = 1;
2681
+ switch (true) {
2682
+ case days > 30 && days <= 90:
2683
+ tariffType = 2;
2684
+ break;
2685
+ case days > 90 && days <= 180:
2686
+ tariffType = 3;
2687
+ break;
2688
+ case days > 180 && days <= 365:
2689
+ tariffType = 4;
2690
+ break;
2691
+ }
2692
+ return tariffType;
2693
+ };
2694
+
2695
+ const getCoordinates = (data) => {
2696
+ if (Array.isArray(data)) {
2697
+ return data.map((_) => _.gpsLatitude && _.gpsLongitude ? [_.gpsLatitude, _.gpsLongitude] : []);
2698
+ }
2699
+ if (data?.gpsLatitude && data?.gpsLongitude) {
2700
+ return [[data.gpsLatitude, data.gpsLongitude]];
2701
+ }
2702
+ return [];
2703
+ };
2704
+ const getBranch = (branches, selectedBranch) => branches.find((_) => _.branchCode === selectedBranch);
2705
+
2706
+ const SafeDepositRentalForm = JSX((props) => {
2707
+ const { regions, data, branches, onChange, onClick } = props;
2708
+ useEffect(() => {
2709
+ onChange({
2710
+ selectedBranch: '',
2711
+ selectedCaseVolume: '',
2712
+ selectedBoxSize: '',
2713
+ });
2714
+ }, [data.selectedRegion, onChange]);
2715
+ const branch = getBranch(branches, data.selectedBranch);
2716
+ const caseVolumes = getCaseVolumes(branch?.safeBoxCaseVolumes);
2717
+ const safeBoxCases = getCaseVolume(branch?.safeBoxCaseVolumes, data.selectedCaseVolume)?.safeBoxCases;
2718
+ const tariffs = getTariffs(safeBoxCases, data.selectedBoxSize);
2719
+ return (jsxs("div", { className: "flex flex-col sm:flex-row gap-x-9 align-top mb-6", children: [jsx(SafeDepositRentalFields, { ...data, regions: regions, onClick: onClick, branches: branches, caseVolumes: caseVolumes, safeBoxCases: safeBoxCases, onChange: onChange }), jsx(SafeDepositRentalTotal, { days: data.days, tariffs: tariffs })] }));
2720
+ });
2721
+ const getCaseVolumes = (safeBoxCaseVolumes) => safeBoxCaseVolumes?.length ? safeBoxCaseVolumes?.filter((_) => _?.safeBoxCases?.length) : [];
2722
+ const getCaseVolume = (caseVolumes, selectedCaseVolume) => caseVolumes?.find((_) => _.volume === selectedCaseVolume);
2723
+ const getTariffs = (safeBoxCases, selectedBoxSize) => safeBoxCases?.find((_) => _.safeBoxCasesSize === selectedBoxSize)?.tariffs;
2724
+
2725
+ const SAFEBOXES_URL = '/api/v1/safeboxes';
2726
+ const EMPTY_VALUE = [];
2727
+ function useSafeBoxes(regionCode) {
2728
+ const { data } = useAsyncData(regionCode ? `${SAFEBOXES_URL}?regionCode=${regionCode}` : null, fetchSafeBoxes);
2729
+ return data || EMPTY_VALUE;
2730
+ }
2731
+ const fetchSafeBoxes = async (url) => {
2732
+ const result = await fetchJSON(url, { method: 'GET' });
2733
+ return result || EMPTY_VALUE;
2734
+ };
2735
+
2736
+ const DEFAULT_DAYS = 26;
2737
+ const SafeDepositRental = JSX(({ title, footnote, className = '', ...rest }) => {
2738
+ const [showMap, setShowMap] = useState(false);
2739
+ const handleShowMap = useCallback(() => setShowMap((_) => !_), []);
2740
+ const [safeDepositState, setStateDepositState] = useState({
2741
+ selectedRegion: '',
2742
+ selectedBranch: '',
2743
+ selectedCaseVolume: '',
2744
+ selectedBoxSize: '',
2745
+ days: DEFAULT_DAYS,
2746
+ });
2747
+ const regions = useGetRegions();
2748
+ const selectedRegion = normalizeSelectedRegion(safeDepositState.selectedRegion, regions);
2749
+ const branches = useSafeBoxes(selectedRegion);
2750
+ const handleChangeSafeDepositState = useCallback((state) => setStateDepositState((oldState) => ({ ...oldState, ...state })), [setStateDepositState]);
2751
+ const points = getCoordinates(getBranch(branches, safeDepositState.selectedBranch) || branches);
2752
+ return (jsxs(BlockWrapper, { className: className, defaultPadding: "", ...rest, children: [jsxs("div", { className: "p-4xl", children: [title ? (jsx(Heading, { title: title, headingType: "h3", as: "h2", className: "text-primary-text mb-s text-center" })) : null, jsx(SafeDepositRentalForm, { regions: regions, branches: branches, data: { ...safeDepositState, selectedRegion }, onClick: handleShowMap, onChange: handleChangeSafeDepositState }), footnote ? (jsx(Paragraph, { size: "text-s", font: "font-light", children: footnote })) : null] }), points.length && showMap ? jsx(YandexMap, { points: points, className: "h-[640px]" }) : null] }));
2753
+ });
2754
+ const normalizeSelectedRegion = (selectedRegion, regions) => !selectedRegion && regions?.length && regions[0]?.code ? regions[0].code : selectedRegion;
2755
+
2172
2756
  function assertUnreachable(x) {
2173
2757
  throw new Error(x);
2174
2758
  }
@@ -2314,7 +2898,6 @@
2314
2898
  const { tabs, ...rest } = props;
2315
2899
  const [containerRef, scroll] = useSwipeListScroll({
2316
2900
  itemCount: tabs?.length || 0,
2317
- isCyclic: false,
2318
2901
  });
2319
2902
  return (jsxs("div", { className: "relative max-w-full m-auto", children: [jsx("div", { className: `font-sans max-w-full w-full overflow-hidden relative bg-white`, children: jsx(SwipeListContainer, { containerRef: containerRef, snapAlign: "snap-start", onVisibleIndicesChange: scroll.handleVisibleIndicesChange, children: tabs?.map(renderTab({ ...rest })) }) }), scroll.canScrollLeft ? (jsx(ScrollLeftButton, { className: `${scrollButtonStyle} left-6`, onClick: scroll.scrollLeft })) : null, scroll.canScrollRight ? (jsx(ScrollRightButton, { className: `${scrollButtonStyle} rotate-180 right-6`, onClick: scroll.scrollRight })) : null] }));
2320
2903
  });
@@ -2410,31 +2993,6 @@
2410
2993
  return (jsx("ul", { className: style('text-secondary-text group-data-secondary:text-white/80', listStyle), children: items.map((_, i) => (jsx("li", { children: jsx(Text, { size: "text-s", font: "font-light", children: _ }) }, `listItem-${i}`))) }));
2411
2994
  };
2412
2995
 
2413
- const gapStyles = {
2414
- XXL: 'gap-6xl',
2415
- XL: 'gap-5xl',
2416
- L: 'gap-3xl',
2417
- M: 'gap-m',
2418
- S: 'gap-xs',
2419
- XS: 'gap-2xs',
2420
- '': '',
2421
- };
2422
-
2423
- const alignStyle = {
2424
- stretch: 'items-stretch',
2425
- left: 'items-start',
2426
- center: 'items-center',
2427
- right: 'items-end',
2428
- };
2429
- const VerticalLayout = JSX(({ className = '', gap = '', align = 'stretch', isPadding = false, isInnerPadding = true, version = 'transparent', isTheme = false, ...rest }) => {
2430
- const innerPaddingStyle = isInnerPadding ? '' : '!p-0';
2431
- return (jsx(BlockWrapper, { className: style('relative', 'flex flex-col [&>*]:max-w-full', gapStyles[gap], align && alignStyle[align], className), defaultPadding: isPadding ? 'p-6xl' : '', version: version, isTheme: isTheme, ...rest, children: renderChildren({
2432
- ...rest,
2433
- renderProps: (block, options) => renderBlock(block, options, { className: innerPaddingStyle }),
2434
- }) }));
2435
- });
2436
- VerticalLayout.childrenTypes = [];
2437
-
2438
2996
  const Blocks = {
2439
2997
  ApplicationForm,
2440
2998
  ButtonsBlock,
@@ -2450,6 +3008,7 @@
2450
3008
  Footer,
2451
3009
  Header,
2452
3010
  Headline,
3011
+ HorizontalLayout,
2453
3012
  ImgBlock,
2454
3013
  LinkDocs,
2455
3014
  MobileAppTile,
@@ -2462,13 +3021,61 @@
2462
3021
  TextBlock,
2463
3022
  RichTextBlock,
2464
3023
  RollupItem,
3024
+ SafeDepositRental,
2465
3025
  VerticalLayout,
2466
3026
  CarouselRecommendationCard,
3027
+ ExchangeRateTile,
2467
3028
  CarouselProgramsCard,
2468
3029
  ProductGallery,
2469
3030
  BenefitsBlock,
2470
3031
  };
2471
3032
 
3033
+ const STORAGE_DEFAULT_TTL = 86400000; // 24 * 60 * 60 * 1000
3034
+ function useCachedAsyncData(key, fetcher, storage = globalThis?.localStorage) {
3035
+ const cachedFetcher = useCallback(async (...args) => {
3036
+ const storageKey = `async:${key}`;
3037
+ const storageData = storage.getItem(storageKey);
3038
+ const cachedData = getParsedData(storageData);
3039
+ if (cachedData) {
3040
+ return cachedData;
3041
+ }
3042
+ const data = await fetcher(...args);
3043
+ storage.setItem(storageKey, JSON.stringify({ data, timestamp: Date.now() }));
3044
+ return data;
3045
+ }, [key, fetcher]);
3046
+ return useAsyncData(key, cachedFetcher);
3047
+ }
3048
+ function getParsedData(storageData) {
3049
+ const { data = null, timestamp = null } = storageData ? JSON.parse(storageData) : {};
3050
+ return data && Date.now() - timestamp < STORAGE_DEFAULT_TTL ? data : undefined;
3051
+ }
3052
+
3053
+ const REGION_URL = '/api/v1/region';
3054
+ function useLocation(defaultLocation = 'Москва') {
3055
+ const currentLocation = getLocalStorageLocation();
3056
+ const [location, setLocation] = useState(currentLocation?.region ?? { name: defaultLocation });
3057
+ const { data } = useCachedAsyncData(REGION_URL, fetchJSONUnsafe);
3058
+ useEffect(() => {
3059
+ setLocation(currentLocation?.region && currentLocation?.manual
3060
+ ? currentLocation.region
3061
+ : data || { name: defaultLocation });
3062
+ }, [data]);
3063
+ const onChangeLocation = useCallback((region) => {
3064
+ globalThis.localStorage?.setItem('location', JSON.stringify({ manual: true, region }));
3065
+ setLocation(region);
3066
+ }, []);
3067
+ return [location, onChangeLocation];
3068
+ }
3069
+ const getLocalStorageLocation = () => {
3070
+ const localStorageLocation = globalThis.localStorage?.getItem('location');
3071
+ try {
3072
+ return localStorageLocation ? JSON.parse(localStorageLocation) : null;
3073
+ }
3074
+ catch (_) {
3075
+ return null;
3076
+ }
3077
+ };
3078
+
2472
3079
  const debounce = (fn, delay = 600) => {
2473
3080
  let timerId;
2474
3081
  const debouncedCallback = (...args) => {
@@ -2597,6 +3204,269 @@
2597
3204
  });
2598
3205
  const getStyleLinkWrapper = (href) => ['inline mx-1', href ? 'text-green-dark' : ''];
2599
3206
 
3207
+ const REGIONS_URL = '/api/v1/regions';
3208
+ function useRegions() {
3209
+ const { data } = useAsyncData(REGIONS_URL, fetchJSONUnsafe);
3210
+ return data || [];
3211
+ }
3212
+
3213
+ const JARO_WINKLER_P = 0.1;
3214
+ const JARO_WINKLER_MAX_L = 4;
3215
+ const jaroWinklerDistance = (s1) => (s2) => {
3216
+ if (s1 === s2) {
3217
+ return 1;
3218
+ }
3219
+ if (!s1 || !s2) {
3220
+ return 0;
3221
+ }
3222
+ const { m, s1Matches, s2Matches } = computeM(s1, s2);
3223
+ if (m === 0) {
3224
+ return 0;
3225
+ }
3226
+ const t = computeT(s1, s2, { s1Matches, s2Matches });
3227
+ const jaroWeight = (m / s1.length + m / s2.length + (m - t / 2) / m) / 3;
3228
+ const winklerWeight = jaroWeight > 0.7 ? computePrefixL(s1, s2) * JARO_WINKLER_P : 0;
3229
+ return jaroWeight + winklerWeight * (1 - jaroWeight);
3230
+ };
3231
+ function computeM(s1, s2) {
3232
+ const range = Math.max(0, Math.floor(Math.max(s1.length, s2.length) / 2) - 1);
3233
+ const s1Matches = new Array(s1.length);
3234
+ const s2Matches = new Array(s2.length);
3235
+ let m = 0;
3236
+ for (let i = 0; i < s1.length; i++) {
3237
+ const low = Math.max(0, i - range);
3238
+ const high = Math.min(i + range, s2.length - 1);
3239
+ for (let j = low; j <= high; j++) {
3240
+ if (s1Matches[i] || s2Matches[j] || s1[i] !== s2[j]) {
3241
+ continue;
3242
+ }
3243
+ m++;
3244
+ s1Matches[i] = true;
3245
+ s2Matches[j] = true;
3246
+ }
3247
+ }
3248
+ return { m, s1Matches, s2Matches };
3249
+ }
3250
+ function computeT(s1, s2, { s1Matches, s2Matches }) {
3251
+ let t = 0;
3252
+ for (let i = 0, k = 0; i < s1.length; i++) {
3253
+ if (!s1Matches[i]) {
3254
+ continue;
3255
+ }
3256
+ let j = k;
3257
+ for (; j < s2.length; j++) {
3258
+ if (s2Matches[j]) {
3259
+ k = j + 1;
3260
+ break;
3261
+ }
3262
+ }
3263
+ if (s1[i] !== s2[j]) {
3264
+ t++;
3265
+ }
3266
+ }
3267
+ return t;
3268
+ }
3269
+ function computePrefixL(s1, s2) {
3270
+ let prefixL = 0;
3271
+ while (s1[prefixL] === s2[prefixL] && prefixL < JARO_WINKLER_MAX_L) {
3272
+ prefixL++;
3273
+ }
3274
+ return prefixL;
3275
+ }
3276
+
3277
+ const groupBy = (list, keyGetter) => {
3278
+ const result = new Map();
3279
+ for (const item of list) {
3280
+ const key = keyGetter(item);
3281
+ const group = result.get(key) || [];
3282
+ result.set(key, [...group, item]);
3283
+ }
3284
+ return result;
3285
+ };
3286
+
3287
+ const Dialog = JSX(({ className, isOpened, head, children, onClose }) => {
3288
+ useEffect(() => {
3289
+ const handleEscape = ({ key }) => {
3290
+ if (key === 'Escape') {
3291
+ onClose && onClose();
3292
+ }
3293
+ };
3294
+ globalThis.document?.addEventListener('keydown', handleEscape);
3295
+ return () => {
3296
+ globalThis.document?.removeEventListener('keydown', handleEscape);
3297
+ };
3298
+ }, [onClose]);
3299
+ return isOpened ? (jsx("div", { className: style('fixed inset-0 bg-white text-l font-light z-50 overflow-x-hidden overflow-y-scroll no-scrollbar', className), role: "dialog", children: jsxs("div", { className: "relative container pb-6xl min-h-full", children: [jsxs("div", { className: "sticky bg-white pt-xl top-0", children: [jsx(CloseButton, { className: "absolute top-0 -right-6xl", onClick: onClose }), head] }), children] }) })) : null;
3300
+ });
3301
+
3302
+ const SearchBar = JSX(({ className, searchTerm, onSearch }) => {
3303
+ 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-44 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
3304
+ outline-none border-gray hover:border-primary-hover active:border-primary-text focus:border-primary-text`, value: searchTerm, onChange: (e) => onSearch(e.target.value.toLowerCase()), type: "text", name: "location-search-bar-input" })] }));
3305
+ });
3306
+
3307
+ const SEARCH_TERM_MIN_LENGTH = 3;
3308
+ const LOCATION_DIALOG_ID = 'location';
3309
+ const LocationDialog = JSX(({ currentLocation, onChangeLocation, foreignOffices }) => {
3310
+ const dialogProps = useDialogProps(LOCATION_DIALOG_ID);
3311
+ const [query, setQuery] = useState('');
3312
+ const regions = cleanUpRegions(useRegions()).sort((a, b) => a.name.localeCompare(b.name));
3313
+ const regionsGroupByLetter = groupBy(regions, regionFirstLetter);
3314
+ const handleChangeLocation = useCallback((region) => {
3315
+ dialogProps.onClose && dialogProps.onClose();
3316
+ onChangeLocation && onChangeLocation(region);
3317
+ }, [dialogProps.onClose, onChangeLocation]);
3318
+ return (jsxs(Dialog, { ...dialogProps, head: jsxs("div", { children: [jsx(CurrentLocation, { currentLocation: currentLocation, onChangeLocation: handleChangeLocation }), jsx(SearchBar, { onSearch: setQuery, searchTerm: query })] }), children: [query && query.length >= SEARCH_TERM_MIN_LENGTH ? (jsx("div", { children: regions
3319
+ .filter(({ name }) => name && jaroWinklerDistance(name.toLowerCase())(query.toLowerCase()) >= 0.8)
3320
+ .map(renderRegion(handleChangeLocation)) })) : (jsx("div", { className: "columns-5", children: Array.from(regionsGroupByLetter.entries()).map(renderRegionGroup(handleChangeLocation)) })), jsx(ForeignOffices, { foreignOffices: foreignOffices })] }));
3321
+ });
3322
+ const regionFirstLetter = (region) => region.name?.charAt(0) || '';
3323
+ const cleanUpRegions = (regions) => regions.map((region) => ({
3324
+ ...region,
3325
+ name: region.name?.replace(/республика|область|край'/gi, '').trim() || '',
3326
+ }));
3327
+ const CurrentLocation = JSX(({ currentLocation, onChangeLocation }) => 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: () => {
3328
+ onChangeLocation && onChangeLocation(currentLocation);
3329
+ }, children: jsx(Text, { color: "text-primary-main", children: currentLocation.name }) })] })) : null);
3330
+ const renderRegionGroup = (onChangeLocation) => ([letter, regions]) => (jsxs("div", { className: "break-inside-avoid mb-2xl w-56", children: [jsx("div", { className: "mb-s", children: jsx(Text, { size: "text-h6", children: letter }) }), regions.map(renderRegion(onChangeLocation))] }, letter));
3331
+ const renderRegion = (onChangeLocation) => (region) => (jsx("div", { className: "mb-2xs", children: jsx("button", { className: "cursor-pointer hover:text-primary-hover", onClick: () => {
3332
+ onChangeLocation && onChangeLocation(region);
3333
+ }, children: region.name || '' }) }, region.id));
3334
+ const ForeignOffices = JSX(({ foreignOffices }) => foreignOffices?.length ? (jsxs("div", { className: "border-t border-main-divider mt-2xs pt-2xs", children: [jsx("div", { className: "mb-m", children: jsx(Text, { size: "text-m", font: "font-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);
3335
+ const ForeignOffice = JSX(({ icon, ...rest }) => {
3336
+ const link = useLink();
3337
+ const { text, target, href, onClick } = link(rest);
3338
+ return (jsxs("div", { className: "flex gap-x-3", children: [icon ? jsx(Img, { pathPrefix: "/wcms-resources/", image: icon }) : null, text ? (jsx("a", { className: "hover:text-primary-hover", href: href, target: target, onClick: onClick, children: text })) : null] }));
3339
+ });
3340
+
3341
+ const compareBy = (indexOf) => (a, b) => indexOf(a) - indexOf(b);
3342
+ const desc = (cmp) => (a, b) => -cmp(a, b);
3343
+
3344
+ function zip(firstCol, ...restCols) {
3345
+ return firstCol.map((firstEl, rowIndex) => [firstEl, ...restCols.map((col) => col[rowIndex])]);
3346
+ }
3347
+
3348
+ const joinMaps = (aggregate, emptyVal) => (acc, map) => {
3349
+ for (const [key, b] of map) {
3350
+ acc.set(key, aggregate(acc.get(key) || emptyVal, b));
3351
+ }
3352
+ return acc;
3353
+ };
3354
+
3355
+ const MIN_TERM_LEN = 3;
3356
+ const tokenize = (text) => text
3357
+ .toLowerCase()
3358
+ .split(/[^0-9a-zа-я-]+/)
3359
+ .filter((token) => token.length >= MIN_TERM_LEN && !/[0-9a-z]/.test(token));
3360
+
3361
+ const textRank = (queryTokens) => (text) => {
3362
+ const textTokens = tokenize(text || '');
3363
+ return textTokens.length
3364
+ ? sum(queryTokens.map((qToken) => max(textTokens.map(jaroWinklerDistance(qToken)))))
3365
+ : 0;
3366
+ };
3367
+
3368
+ const JW_THRESHOLD = 0.8;
3369
+ const RANK_EPS = 0.001;
3370
+ const search = (query) => (searchIndex) => {
3371
+ const { corpus, dictionary } = searchIndex || {};
3372
+ if (!query || !corpus?.length || !dictionary || !Object.keys(dictionary).length) {
3373
+ return [];
3374
+ }
3375
+ const queryTokens = tokenize(query);
3376
+ if (!queryTokens.length) {
3377
+ return [];
3378
+ }
3379
+ const dictEntries = Object.entries(dictionary);
3380
+ const pagesRanking = queryTokens
3381
+ .map(computePagesRankingPerToken(dictEntries))
3382
+ .reduce(joinMaps((a, b) => a + b, 0), new Map());
3383
+ const relevantPages = [...pagesRanking.entries()]
3384
+ .filter(([, pageRank]) => pageRank >= (JW_THRESHOLD - RANK_EPS) * queryTokens.length) // Multiplication of query tokens
3385
+ .map(([pageIndex]) => corpus[pageIndex]);
3386
+ return sortResultsByRank(queryTokens)(relevantPages);
3387
+ };
3388
+ const computePagesRankingPerToken = (dictEntries) => (qToken) => dictEntries
3389
+ .map(([stem, pageIndices]) => [jaroWinklerDistance(qToken)(stem), pageIndices])
3390
+ .filter(([stemRank]) => stemRank >= JW_THRESHOLD)
3391
+ .map(([stemRank, pageIndices]) => fillMapWith(pageIndices, stemRank))
3392
+ .reduce(joinMaps(Math.max, 0), new Map());
3393
+ const sortResultsByRank = (queryTokens) => (results) => zip(results, results.map(({ title }) => title).map(textRank(queryTokens)))
3394
+ .sort(desc(compareBy(([, pageTitleRank]) => pageTitleRank)))
3395
+ .map(([corpusItem]) => corpusItem);
3396
+ const fillMapWith = (keys, value) => new Map(keys.map((_) => [_, value]));
3397
+
3398
+ const SEARCH_INDEX_FILENAME = 'search.index.json';
3399
+ const DEFAULT_BASE_PATH = ['/'];
3400
+ const useSearch = ({ basePathList = DEFAULT_BASE_PATH, initialQuery = '', wasOpened, }) => {
3401
+ const [query, setQuery] = useState(initialQuery || '');
3402
+ useEffect(() => {
3403
+ if (initialQuery !== undefined && initialQuery !== null) {
3404
+ setQuery(initialQuery);
3405
+ }
3406
+ }, [initialQuery]);
3407
+ const key = useMemo(() => basePathList.map((_) => (wasOpened ? _ : null)), // Load search index on very first search
3408
+ [wasOpened, basePathList]);
3409
+ const { data } = useAsyncData(key, fetchSearchIndex);
3410
+ const [result, setResult] = useState(null);
3411
+ useDebouncedEffect(() => {
3412
+ if (data) {
3413
+ setResult(data.map(search(query)));
3414
+ }
3415
+ }, [data, query]);
3416
+ return [result, { value: query, onChange: setQuery }];
3417
+ };
3418
+ const fetchSearchIndex = async (...basePathList) => (await Promise.allSettled(basePathList.map((basePath) => fetchJSON(joinPath(basePath, '/', SEARCH_INDEX_FILENAME))))).map((_) => (_.status === 'fulfilled' ? _.value : {}));
3419
+
3420
+ const Sitemap = JSX(({ className, topItems }) => {
3421
+ const link = useLink({ isRemote: true });
3422
+ return (jsx("div", { className: style('flex items-start justify-between', className), children: topItems?.map(link).map(renderColumn) }));
3423
+ });
3424
+ const renderColumn = (menuItem, index) => {
3425
+ const { text, items, href, target, onClick } = menuItem;
3426
+ return (jsxs("div", { className: "flex flex-col gap-3.5 w-1/4", children: [jsx("a", { className: "leading-5 text-l text-primary-text hover:text-primary-main no-underline", href: href, target: target || '_self', onClick: onClick, children: text || `Раздел ${index}` }), items?.map((_, i) => (jsx(ColumnItem, { ..._, basePath: appendSlash(href), index: i }, String(i))))] }, String(index)));
3427
+ };
3428
+ const ColumnItem = JSX(({ text, index, basePath, ...rest }) => {
3429
+ const isAnotherPortal = projectSettings.BASE_PATH && basePath ? !projectSettings.BASE_PATH.startsWith(basePath) : false;
3430
+ const link = useLink({ isRemote: isAnotherPortal, basePath });
3431
+ const { href, target, onClick } = link(rest);
3432
+ return (jsx("a", { className: style('text-l font-light text-secondary-text hover:text-primary-main no-underline', 'overflow-x-hidden overflow-ellipsis whitespace-nowrap'), href: href, target: target || '_self', onClick: onClick, children: text || `Раздел ${index}` }));
3433
+ });
3434
+
3435
+ const SearchInput = JSX(({ className, value, autoFocus, onChange, onFocus }) => {
3436
+ const handleChange = useCallback((ev) => {
3437
+ onChange && onChange(ev.target?.value || '');
3438
+ }, [onChange]);
3439
+ return (jsxs("div", { className: style('font-sans relative', className), role: "form", children: [jsx("div", { className: "absolute h-full flex items-center pl-m pointer-events-none", children: jsx(Img, { image: { icon: 'LoupeIcon' }, width: "24", height: "24" }) }), jsx("input", { className: style('h-12 pl-12 w-full text-l text-black outline-none box-border', 'border border-solid rounded-md border-gray hover:border-primary-hover active:border-primary-text focus:border-primary-text'), value: value, type: "text", name: "search-bar-input", placeholder: "\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0441\u0430\u0439\u0442\u0443", autoFocus: autoFocus, onChange: handleChange, onFocus: onFocus })] }));
3440
+ });
3441
+
3442
+ const SEARCH_DIALOG_ID = 'search';
3443
+ const SearchDialog = JSX(({ topItems }) => {
3444
+ const dialogProps = useDialogProps(SEARCH_DIALOG_ID);
3445
+ const basePathList = useMemo(() => topItems?.map((_) => _.href || '/'), [topItems]);
3446
+ const [searchResult, searchInputProps] = useSearch({
3447
+ basePathList,
3448
+ initialQuery: dialogProps.message,
3449
+ wasOpened: dialogProps.wasOpened,
3450
+ });
3451
+ const searchItems = useMemo(() => combineTopItemsAndSearchResult(topItems)(searchResult), [topItems, searchResult]);
3452
+ useEffect(() => printSearchItems(searchItems), [searchItems]); // Temp
3453
+ return (jsx(Dialog, { ...dialogProps, head: jsx(SearchInput, { autoFocus: true, ...searchInputProps }), children: jsx(Sitemap, { topItems: searchItems }) }));
3454
+ });
3455
+ const combineTopItemsAndSearchResult = (topItems) => (searchResult) => topItems?.length && searchResult?.length
3456
+ ? zip(topItems, searchResult).map(([_, portalSearchResult]) => ({
3457
+ ..._,
3458
+ items: portalSearchResult?.map(({ title, uri }) => ({ text: title, href: joinPath('/', uri) })),
3459
+ }))
3460
+ : [];
3461
+ // Temp
3462
+ function printSearchItems(topItems) {
3463
+ for (const _ of topItems.filter(({ items }) => items?.length)) {
3464
+ console.group(_.text);
3465
+ console.table(_.items, ['text', 'href']);
3466
+ console.groupEnd();
3467
+ }
3468
+ }
3469
+
2600
3470
  const api = LikeAPI();
2601
3471
  function useLikeService(pagePath) {
2602
3472
  const [likeCount, setLikeCount] = useState(0);
@@ -2638,9 +3508,8 @@
2638
3508
  return (jsxs("div", { className: `border-main border-2 border-solid bg-white flex w-[125px] items-center justify-center gap-3 p-2 font-sans ${className}`, children: [jsx(LikeButton, { onClick: handlerDecorator(likeService.like), ariaLabel: "\u041F\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043E\u0442\u043C\u0435\u0442\u043A\u0443 \u00AB\u043B\u0430\u0439\u043A\u00BB" }), jsx(LikeButton, { onClick: handlerDecorator(likeService.dislike), className: "rotate-180", ariaLabel: "\u041F\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043E\u0442\u043C\u0435\u0442\u043A\u0443 \u00AB\u0434\u0438\u0437\u043B\u0430\u0439\u043A\u00BB" }), jsx("span", { className: "select-none", children: likeService.likeCount })] }));
2639
3509
  });
2640
3510
 
2641
- const ContentPage = JSX((props) => {
2642
- const { className = '', blocksRegistry, blockDecorator, data = {} } = props;
2643
- const { style: pageStyle, blocks, slots, likeControl, colorPalette = 'pc' } = data;
3511
+ const ContentPage = JSX(({ className, blocksRegistry, blockDecorator, data = {} }) => {
3512
+ const { style: pageStyle, slots, likeControl, colorPalette = 'pc' } = data;
2644
3513
  const options = {
2645
3514
  key: '',
2646
3515
  page: data,
@@ -2648,21 +3517,23 @@
2648
3517
  blockDecorator,
2649
3518
  parent: data,
2650
3519
  };
3520
+ const sitemap = useSWRResource(projectSettings.SITEMAP || 'sitemap', data?.fallback);
3521
+ const [location, onChangeLocation] = useLocation(sitemap?.defaultLocation);
2651
3522
  useBlockRouterProvider();
2652
3523
  const [isSomeDialogOpened, { setTrue: setSomeDialogOpened, setFalse: resetSomeDialogOpened }] = useBool();
2653
3524
  useDialogHandlers({
2654
3525
  onOpen: setSomeDialogOpened,
2655
3526
  onClose: resetSomeDialogOpened,
2656
3527
  });
2657
- return (jsxs("section", { className: style('relative', pageStyle, className, isSomeDialogOpened ? 'overflow-hidden h-screen' : ''), "data-theme": colorPalette, children: [slots?.header ? (jsx("div", { className: "mb-5 shadow-[0_8px_32px_0px_#00000014]", children: renderBlocksList(slots?.header, {
3528
+ return (jsxs("section", { className: style('relative @container', pageStyle, className, isSomeDialogOpened ? 'overflow-hidden h-screen' : ''), "data-theme": colorPalette, children: [slots?.header ? (jsx("div", { className: "relative z-10 mb-5 shadow-[0_8px_32px_0px_#00000014]", children: renderBlocksList(slots?.header, {
2658
3529
  ...options,
2659
3530
  slotName: 'header',
2660
- }) })) : null, jsxs("div", { className: "container grid grid-cols-12 gap-1", children: [renderBlocksList(blocks, options), slots?.footer
2661
- ? renderBlocksList(slots?.footer, {
2662
- ...options,
2663
- slotName: 'footer',
2664
- })
2665
- : null] }), likeControl ? renderLikeControl() : null, jsx(CookiePopup, { termLink: { href: '/pd-policy#cookie', target: '_blank' }, personalDataPolicyLink: { href: '/pd-policy', target: '_blank' } })] }));
3531
+ extraProps: { sitemap, location },
3532
+ }) })) : null, jsxs("div", { className: "container @lg:grid @lg:grid-cols-12 @lg:gap-1", children: [renderChildren({ block: data, options, extraProps: { className: 'scroll-mt-12' } }), renderBlocksList(slots?.footer, {
3533
+ ...options,
3534
+ slotName: 'footer',
3535
+ extraProps: { sitemap, location },
3536
+ })] }), likeControl ? renderLikeControl() : null, jsx(CookiePopup, { termLink: { href: '/pd-policy#cookie', target: '_blank' }, personalDataPolicyLink: { href: '/pd-policy', target: '_blank' } }), jsx(SearchDialog, { topItems: sitemap?.topItems }), jsx(LocationDialog, { currentLocation: location, foreignOffices: sitemap?.foreignOffices, onChangeLocation: onChangeLocation })] }));
2666
3537
  });
2667
3538
  ContentPage.childrenTypes = [];
2668
3539
  ContentPage.slots = () => ['header', 'footer'];
@@ -2672,7 +3543,7 @@
2672
3543
 
2673
3544
  const joinList = (sep) => (list) => list.reduce((acc, el, i) => (acc.length ? acc.concat({ ...sep, key: `sep-${i}` }, el) : [el]), []);
2674
3545
 
2675
- const packageVersion = "0.12.11";
3546
+ const packageVersion = "0.12.13";
2676
3547
 
2677
3548
  exports.Blocks = Blocks;
2678
3549
  exports.ContentPage = ContentPage;