@redneckz/wildless-cms-uni-blocks 0.2.91 → 0.2.94

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 (284) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +156 -80
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/dist/api/LikeAPI.js +1 -0
  5. package/dist/api/LikeAPI.js.map +1 -1
  6. package/dist/components/Accordion/AccordionContent.d.ts +38 -14
  7. package/dist/components/Accordion/AccordionItem.js +8 -6
  8. package/dist/components/Accordion/AccordionItem.js.map +1 -1
  9. package/dist/components/BaseTile/BaseTile.js +1 -1
  10. package/dist/components/BaseTile/BaseTile.js.map +1 -1
  11. package/dist/components/BlockContent.d.ts +2 -1
  12. package/dist/components/Blocks.d.ts +1 -0
  13. package/dist/components/Blocks.js +2 -0
  14. package/dist/components/Blocks.js.map +1 -1
  15. package/dist/components/ComparisonTable/ComparisonTable.js +12 -10
  16. package/dist/components/ComparisonTable/ComparisonTable.js.map +1 -1
  17. package/dist/components/ComparisonTable/ComparisonTableContent.d.ts +0 -18
  18. package/dist/components/ComparisonTable/HeaderCell.js +1 -1
  19. package/dist/components/ComparisonTable/HeaderCell.js.map +1 -1
  20. package/dist/components/ComparisonTable/TableCarouselContainer.d.ts +3 -0
  21. package/dist/components/ComparisonTable/TableCarouselContainer.js +5 -2
  22. package/dist/components/ComparisonTable/TableCarouselContainer.js.map +1 -1
  23. package/dist/components/ComparisonTable/TableRow.js +1 -1
  24. package/dist/components/ComparisonTable/TableRow.js.map +1 -1
  25. package/dist/components/ContentPage/ContentPage.d.ts +9 -1
  26. package/dist/components/ContentPage/ContentPage.js +20 -17
  27. package/dist/components/ContentPage/ContentPage.js.map +1 -1
  28. package/dist/components/ContentPage/ContentPageHead.d.ts +1 -1
  29. package/dist/components/ContentPage/toMobilePage.js +13 -2
  30. package/dist/components/ContentPage/toMobilePage.js.map +1 -1
  31. package/dist/components/CreditCalculator/CreditCalculator.js +1 -1
  32. package/dist/components/CreditCalculator/CreditCalculator.js.map +1 -1
  33. package/dist/components/Footer/Contacts.js +1 -1
  34. package/dist/components/Footer/Contacts.js.map +1 -1
  35. package/dist/components/Footer/FooterContent.d.ts +1 -2
  36. package/dist/components/Footer/HorizontalNavigation.js +1 -1
  37. package/dist/components/Footer/SocialMedia.js +1 -2
  38. package/dist/components/Footer/SocialMedia.js.map +1 -1
  39. package/dist/components/Gallery/GalleryInner.js +2 -2
  40. package/dist/components/Gallery/GalleryInner.js.map +1 -1
  41. package/dist/components/Header/Header.js +3 -3
  42. package/dist/components/Header/Header.js.map +1 -1
  43. package/dist/components/LinkDocs/LinkDocs.js +5 -5
  44. package/dist/components/LinkDocs/LinkDocs.js.map +1 -1
  45. package/dist/components/MiniGallery/MiniGalleryContent.d.ts +1 -2
  46. package/dist/components/MobileBlocks.js +0 -3
  47. package/dist/components/MobileBlocks.js.map +1 -1
  48. package/dist/components/PictureText/PictureTextContent.d.ts +1 -3
  49. package/dist/components/Placeholder/Placeholder.js.map +1 -1
  50. package/dist/components/ProductBlock/ProductBlock.js +1 -1
  51. package/dist/components/ProductBlock/ProductBlock.js.map +1 -1
  52. package/dist/components/ProductBlock/ProductBlock.mobile.js +3 -1
  53. package/dist/components/ProductBlock/ProductBlock.mobile.js.map +1 -1
  54. package/dist/components/ProductBlock/ProductBlockInner.js +2 -5
  55. package/dist/components/ProductBlock/ProductBlockInner.js.map +1 -1
  56. package/dist/components/ProductGallery/ProductGallery.js +2 -2
  57. package/dist/components/ProductGallery/ProductGallery.js.map +1 -1
  58. package/dist/components/PromoTile/PromoTile.d.ts +1 -1
  59. package/dist/components/PromoTile/PromoTile.js +1 -1
  60. package/dist/components/PromoTile/PromoTile.js.map +1 -1
  61. package/dist/components/TariffsTable/TariffsTable.d.ts +5 -0
  62. package/dist/components/TariffsTable/TariffsTable.js +25 -0
  63. package/dist/components/TariffsTable/TariffsTable.js.map +1 -0
  64. package/dist/components/TariffsTable/TariffsTableCell.d.ts +6 -0
  65. package/dist/components/TariffsTable/TariffsTableCell.js +18 -0
  66. package/dist/components/TariffsTable/TariffsTableCell.js.map +1 -0
  67. package/dist/components/TariffsTable/TariffsTableContent.d.ts +55 -0
  68. package/dist/components/TariffsTable/TariffsTableContent.js +2 -0
  69. package/dist/components/TariffsTable/TariffsTableContent.js.map +1 -0
  70. package/dist/components/TariffsTable/TariffsTableRow.d.ts +8 -0
  71. package/dist/components/TariffsTable/TariffsTableRow.js +13 -0
  72. package/dist/components/TariffsTable/TariffsTableRow.js.map +1 -0
  73. package/dist/components/TariffsTable/constants.d.ts +4 -0
  74. package/dist/components/TariffsTable/constants.js +7 -0
  75. package/dist/components/TariffsTable/constants.js.map +1 -0
  76. package/dist/components/TextBlock/TextBlock.d.ts +1 -1
  77. package/dist/components/TextBlock/TextBlock.js +1 -1
  78. package/dist/components/TextBlock/TextBlock.js.map +1 -1
  79. package/dist/components/TextBlock/TextBlockContent.d.ts +1 -2
  80. package/dist/components/Tile/Tile.d.ts +1 -1
  81. package/dist/components/Tile/Tile.js +14 -2
  82. package/dist/components/Tile/Tile.js.map +1 -1
  83. package/dist/content-page-repository/ContentPageRepository.js +1 -0
  84. package/dist/content-page-repository/ContentPageRepository.js.map +1 -1
  85. package/dist/hooks/useComparisonTableScroll.d.ts +12 -0
  86. package/dist/hooks/useComparisonTableScroll.js +12 -0
  87. package/dist/hooks/useComparisonTableScroll.js.map +1 -0
  88. package/dist/hooks/useLink.js +1 -1
  89. package/dist/hooks/useLink.js.map +1 -1
  90. package/dist/model/TableVersion.d.ts +1 -0
  91. package/dist/model/TableVersion.js +2 -0
  92. package/dist/model/TableVersion.js.map +1 -0
  93. package/dist/types.d.ts +8 -0
  94. package/dist/ui-kit/BlockItem/BlockItem.d.ts +1 -9
  95. package/dist/ui-kit/BlockItem/BlockItem.js +5 -5
  96. package/dist/ui-kit/BlockItem/BlockItem.js.map +1 -1
  97. package/dist/ui-kit/BlockItem/BlockItemProps.d.ts +20 -0
  98. package/dist/ui-kit/BlockItem/BlockItemProps.js +2 -0
  99. package/dist/ui-kit/BlockItem/BlockItemProps.js.map +1 -0
  100. package/dist/ui-kit/Icon/IconProps.d.ts +57 -25
  101. package/dist/ui-kit/Icon/IconProps.js +39 -23
  102. package/dist/ui-kit/Icon/IconProps.js.map +1 -1
  103. package/dist/ui-kit/InputRange/InputRange.js +1 -1
  104. package/dist/ui-kit/InputRange/InputRange.js.map +1 -1
  105. package/dist/ui-kit/SearchBar.js +2 -1
  106. package/dist/ui-kit/SearchBar.js.map +1 -1
  107. package/lib/api/LikeAPI.js +1 -0
  108. package/lib/api/LikeAPI.js.map +1 -1
  109. package/lib/common.css +1 -1
  110. package/lib/components/Accordion/Accordion.fixture.d.ts +1 -4
  111. package/lib/components/Accordion/AccordionContent.d.ts +38 -14
  112. package/lib/components/Accordion/AccordionItem.js +8 -6
  113. package/lib/components/Accordion/AccordionItem.js.map +1 -1
  114. package/lib/components/BaseTile/BaseTile.js +1 -1
  115. package/lib/components/BaseTile/BaseTile.js.map +1 -1
  116. package/lib/components/BlockContent.d.ts +2 -1
  117. package/lib/components/Blocks.d.ts +1 -0
  118. package/lib/components/Blocks.js +2 -0
  119. package/lib/components/Blocks.js.map +1 -1
  120. package/lib/components/ComparisonTable/ComparisonTable.js +12 -10
  121. package/lib/components/ComparisonTable/ComparisonTable.js.map +1 -1
  122. package/lib/components/ComparisonTable/ComparisonTableContent.d.ts +0 -18
  123. package/lib/components/ComparisonTable/HeaderCell.js +1 -1
  124. package/lib/components/ComparisonTable/HeaderCell.js.map +1 -1
  125. package/lib/components/ComparisonTable/TableCarouselContainer.d.ts +3 -0
  126. package/lib/components/ComparisonTable/TableCarouselContainer.js +5 -2
  127. package/lib/components/ComparisonTable/TableCarouselContainer.js.map +1 -1
  128. package/lib/components/ComparisonTable/TableRow.js +2 -2
  129. package/lib/components/ComparisonTable/TableRow.js.map +1 -1
  130. package/lib/components/ContentPage/ContentPage.d.ts +9 -1
  131. package/lib/components/ContentPage/ContentPage.js +20 -17
  132. package/lib/components/ContentPage/ContentPage.js.map +1 -1
  133. package/lib/components/ContentPage/ContentPageHead.d.ts +1 -1
  134. package/lib/components/ContentPage/toMobilePage.js +13 -2
  135. package/lib/components/ContentPage/toMobilePage.js.map +1 -1
  136. package/lib/components/CreditCalculator/CreditCalculator.js +1 -1
  137. package/lib/components/CreditCalculator/CreditCalculator.js.map +1 -1
  138. package/lib/components/Footer/Contacts.js +1 -1
  139. package/lib/components/Footer/Contacts.js.map +1 -1
  140. package/lib/components/Footer/FooterContent.d.ts +1 -2
  141. package/lib/components/Footer/HorizontalNavigation.js +1 -1
  142. package/lib/components/Footer/SocialMedia.js +1 -2
  143. package/lib/components/Footer/SocialMedia.js.map +1 -1
  144. package/lib/components/Gallery/GalleryInner.js +2 -2
  145. package/lib/components/Gallery/GalleryInner.js.map +1 -1
  146. package/lib/components/Header/Header.js +3 -3
  147. package/lib/components/Header/Header.js.map +1 -1
  148. package/lib/components/Headline/Headline.fixture.d.ts +3 -2
  149. package/lib/components/LinkDocs/LinkDocs.fixture.d.ts +7 -7
  150. package/lib/components/LinkDocs/LinkDocs.js +5 -5
  151. package/lib/components/LinkDocs/LinkDocs.js.map +1 -1
  152. package/lib/components/MiniGallery/MiniGalleryContent.d.ts +1 -2
  153. package/lib/components/MobileBlocks.js +0 -3
  154. package/lib/components/MobileBlocks.js.map +1 -1
  155. package/lib/components/PictureText/PictureText.fixture.d.ts +2 -0
  156. package/lib/components/PictureText/PictureTextContent.d.ts +1 -3
  157. package/lib/components/Placeholder/Placeholder.js.map +1 -1
  158. package/lib/components/ProductBlock/ProductBlock.js +1 -1
  159. package/lib/components/ProductBlock/ProductBlock.js.map +1 -1
  160. package/lib/components/ProductBlock/ProductBlock.mobile.js +3 -1
  161. package/lib/components/ProductBlock/ProductBlock.mobile.js.map +1 -1
  162. package/lib/components/ProductBlock/ProductBlockInner.js +2 -5
  163. package/lib/components/ProductBlock/ProductBlockInner.js.map +1 -1
  164. package/lib/components/ProductGallery/ProductGallery.js +2 -2
  165. package/lib/components/ProductGallery/ProductGallery.js.map +1 -1
  166. package/lib/components/PromoTile/PromoTile.d.ts +1 -1
  167. package/lib/components/PromoTile/PromoTile.js +1 -1
  168. package/lib/components/PromoTile/PromoTile.js.map +1 -1
  169. package/lib/components/TariffsTable/TariffsTable.d.ts +5 -0
  170. package/lib/components/TariffsTable/TariffsTable.fixture.d.ts +7 -0
  171. package/lib/components/TariffsTable/TariffsTable.js +23 -0
  172. package/lib/components/TariffsTable/TariffsTable.js.map +1 -0
  173. package/lib/components/TariffsTable/TariffsTableCell.d.ts +6 -0
  174. package/lib/components/TariffsTable/TariffsTableCell.js +16 -0
  175. package/lib/components/TariffsTable/TariffsTableCell.js.map +1 -0
  176. package/lib/components/TariffsTable/TariffsTableContent.d.ts +55 -0
  177. package/lib/components/TariffsTable/TariffsTableContent.js +2 -0
  178. package/lib/components/TariffsTable/TariffsTableContent.js.map +1 -0
  179. package/lib/components/TariffsTable/TariffsTableRow.d.ts +8 -0
  180. package/lib/components/TariffsTable/TariffsTableRow.js +11 -0
  181. package/lib/components/TariffsTable/TariffsTableRow.js.map +1 -0
  182. package/lib/components/TariffsTable/constants.d.ts +4 -0
  183. package/lib/components/TariffsTable/constants.js +5 -0
  184. package/lib/components/TariffsTable/constants.js.map +1 -0
  185. package/lib/components/TextBlock/TextBlock.d.ts +1 -1
  186. package/lib/components/TextBlock/TextBlock.fixture.d.ts +2 -0
  187. package/lib/components/TextBlock/TextBlock.js +1 -1
  188. package/lib/components/TextBlock/TextBlock.js.map +1 -1
  189. package/lib/components/TextBlock/TextBlockContent.d.ts +1 -2
  190. package/lib/components/Tile/Tile.d.ts +1 -1
  191. package/lib/components/Tile/Tile.js +14 -2
  192. package/lib/components/Tile/Tile.js.map +1 -1
  193. package/lib/content-page-repository/ContentPageRepository.js +1 -0
  194. package/lib/content-page-repository/ContentPageRepository.js.map +1 -1
  195. package/lib/hooks/useComparisonTableScroll.d.ts +12 -0
  196. package/lib/hooks/useComparisonTableScroll.js +9 -0
  197. package/lib/hooks/useComparisonTableScroll.js.map +1 -0
  198. package/lib/hooks/useLink.js +1 -1
  199. package/lib/hooks/useLink.js.map +1 -1
  200. package/lib/model/TableVersion.d.ts +1 -0
  201. package/lib/model/TableVersion.js +2 -0
  202. package/lib/model/TableVersion.js.map +1 -0
  203. package/lib/types.d.ts +8 -0
  204. package/lib/ui-kit/BlockItem/BlockItem.d.ts +1 -9
  205. package/lib/ui-kit/BlockItem/BlockItem.fixture.d.ts +6 -1
  206. package/lib/ui-kit/BlockItem/BlockItem.js +5 -5
  207. package/lib/ui-kit/BlockItem/BlockItem.js.map +1 -1
  208. package/lib/ui-kit/BlockItem/BlockItemProps.d.ts +20 -0
  209. package/lib/ui-kit/BlockItem/BlockItemProps.js +2 -0
  210. package/lib/ui-kit/BlockItem/BlockItemProps.js.map +1 -0
  211. package/lib/ui-kit/Icon/IconProps.d.ts +57 -25
  212. package/lib/ui-kit/Icon/IconProps.js +39 -23
  213. package/lib/ui-kit/Icon/IconProps.js.map +1 -1
  214. package/lib/ui-kit/InputRange/InputRange.js +1 -1
  215. package/lib/ui-kit/InputRange/InputRange.js.map +1 -1
  216. package/lib/ui-kit/SearchBar.js +2 -1
  217. package/lib/ui-kit/SearchBar.js.map +1 -1
  218. package/package.json +19 -9
  219. package/src/api/LikeAPI.ts +1 -0
  220. package/src/components/Accordion/Accordion.example.json +18 -42
  221. package/src/components/Accordion/Accordion.fixture.tsx +29 -119
  222. package/src/components/Accordion/AccordionContent.ts +47 -18
  223. package/src/components/Accordion/AccordionItem.tsx +13 -9
  224. package/src/components/BaseTile/BaseTile.tsx +6 -3
  225. package/src/components/BlockContent.ts +2 -0
  226. package/src/components/Blocks.ts +2 -0
  227. package/src/components/ComparisonTable/ComparisonTable.tsx +17 -14
  228. package/src/components/ComparisonTable/ComparisonTableContent.ts +0 -19
  229. package/src/components/ComparisonTable/HeaderCell.tsx +3 -3
  230. package/src/components/ComparisonTable/TableCarouselContainer.tsx +11 -4
  231. package/src/components/ComparisonTable/TableRow.tsx +2 -2
  232. package/src/components/ContentPage/ContentPage.fixture.tsx +3 -3
  233. package/src/components/ContentPage/ContentPage.page.json +426 -22
  234. package/src/components/ContentPage/ContentPage.tsx +71 -36
  235. package/src/components/ContentPage/ContentPageHead.tsx +1 -1
  236. package/src/components/ContentPage/toMobilePage.ts +19 -2
  237. package/src/components/CreditCalculator/CreditCalculator.tsx +1 -1
  238. package/src/components/Footer/Contacts.tsx +1 -1
  239. package/src/components/Footer/FooterContent.ts +1 -1
  240. package/src/components/Footer/HorizontalNavigation.tsx +1 -1
  241. package/src/components/Footer/SocialMedia.tsx +5 -6
  242. package/src/components/Gallery/GalleryInner.tsx +2 -1
  243. package/src/components/Header/Header.tsx +14 -12
  244. package/src/components/Headline/Headline.fixture.tsx +11 -34
  245. package/src/components/LinkDocs/LinkDocs.example.json +26 -0
  246. package/src/components/LinkDocs/LinkDocs.fixture.tsx +13 -13
  247. package/src/components/LinkDocs/LinkDocs.tsx +9 -8
  248. package/src/components/MiniGallery/MiniGalleryContent.ts +1 -1
  249. package/src/components/MobileBlocks.ts +0 -3
  250. package/src/components/PictureText/PictureText.fixture.tsx +20 -20
  251. package/src/components/PictureText/PictureTextContent.ts +1 -3
  252. package/src/components/Placeholder/Placeholder.tsx +2 -2
  253. package/src/components/ProductBlock/ProductBlock.fixture.tsx +1 -0
  254. package/src/components/ProductBlock/ProductBlock.mobile.tsx +1 -0
  255. package/src/components/ProductBlock/ProductBlock.tsx +3 -1
  256. package/src/components/ProductBlock/ProductBlockInner.tsx +9 -12
  257. package/src/components/ProductGallery/ProductGallery.example.json +1 -1
  258. package/src/components/ProductGallery/ProductGallery.fixture.tsx +7 -13
  259. package/src/components/ProductGallery/ProductGallery.tsx +7 -5
  260. package/src/components/PromoTile/PromoTile.tsx +3 -3
  261. package/src/components/TariffsTable/TariffsTable.example.json +87 -0
  262. package/src/components/TariffsTable/TariffsTable.fixture.tsx +195 -0
  263. package/src/components/TariffsTable/TariffsTable.tsx +74 -0
  264. package/src/components/TariffsTable/TariffsTableCell.tsx +64 -0
  265. package/src/components/TariffsTable/TariffsTableContent.ts +61 -0
  266. package/src/components/TariffsTable/TariffsTableRow.tsx +46 -0
  267. package/src/components/TariffsTable/constants.ts +4 -0
  268. package/src/components/TextBlock/TextBlock.example.json +9 -2
  269. package/src/components/TextBlock/TextBlock.fixture.tsx +20 -64
  270. package/src/components/TextBlock/TextBlock.tsx +2 -2
  271. package/src/components/TextBlock/TextBlockContent.ts +1 -2
  272. package/src/components/Tile/Tile.example.json +5 -2
  273. package/src/components/Tile/Tile.tsx +16 -5
  274. package/src/content-page-repository/ContentPageRepository.ts +1 -0
  275. package/src/hooks/useComparisonTableScroll.ts +21 -0
  276. package/src/hooks/useLink.ts +1 -1
  277. package/src/model/TableVersion.ts +1 -0
  278. package/src/types.ts +11 -1
  279. package/src/ui-kit/BlockItem/BlockItem.fixture.tsx +8 -1
  280. package/src/ui-kit/BlockItem/BlockItem.tsx +7 -18
  281. package/src/ui-kit/BlockItem/BlockItemProps.ts +22 -0
  282. package/src/ui-kit/Icon/IconProps.ts +34 -2
  283. package/src/ui-kit/InputRange/InputRange.tsx +2 -2
  284. package/src/ui-kit/SearchBar.tsx +16 -6
@@ -0,0 +1,87 @@
1
+ {
2
+ "title": "Заголовок",
3
+ "rowHeaders": [
4
+ {
5
+ "title": "Параметр 1",
6
+ "icon": "MoneyIcon"
7
+ },
8
+ {
9
+ "title": "Параметр 2",
10
+ "icon": "DollarIcon"
11
+ },
12
+ {
13
+ "title": "Параметр 3"
14
+ },
15
+ {
16
+ "title": "Параметр 4"
17
+ }
18
+ ],
19
+ "columns": [
20
+ {
21
+ "data": [
22
+ [
23
+ {
24
+ "label": "Ячейка 1"
25
+ }
26
+ ],
27
+ [
28
+ {
29
+ "label": "Ячейка 2-1",
30
+ "description": "Описание для ячейки 2-1"
31
+ },
32
+ {
33
+ "label": "Ячейка 2-2",
34
+ "description": "Описание для ячейки 2-2"
35
+ }
36
+ ],
37
+ [
38
+ {
39
+ "label": "Ячейка 3-1",
40
+ "description": "Описание для ячейки 3-1"
41
+ },
42
+ {
43
+ "label": "Ячейка 3-2",
44
+ "buttons": [
45
+ {
46
+ "icon": "AppleIcon",
47
+ "rounded": true,
48
+ "version": "secondary",
49
+ "href": "/_blank",
50
+ "target": "_blank"
51
+ },
52
+ {
53
+ "icon": "PlayMarketIcon",
54
+ "rounded": true,
55
+ "version": "secondary",
56
+ "href": "/secondary"
57
+ }
58
+ ]
59
+ }
60
+ ],
61
+ [
62
+ {
63
+ "image": {
64
+ "src": "payment-systems.png",
65
+ "format": "webp",
66
+ "size": {
67
+ "width": 288,
68
+ "height": 56
69
+ },
70
+ "alt": "Описание картинки",
71
+ "title": "Подсказка"
72
+ }
73
+ },
74
+ {
75
+ "list": {
76
+ "items": [
77
+ "item 1",
78
+ "item 2",
79
+ "item 3"
80
+ ]
81
+ }
82
+ }
83
+ ]
84
+ ]
85
+ }
86
+ ]
87
+ }
@@ -0,0 +1,195 @@
1
+ import { context } from '../../setup-fixture';
2
+ import { TariffsTable } from './TariffsTable';
3
+ import type { Picture } from '../../model/Picture';
4
+ import type { TariffsTableColumn, TariffsTableRowHeader } from './TariffsTableContent';
5
+
6
+ const image: Picture = {
7
+ src: 'payment-systems.png',
8
+ format: 'webp',
9
+ size: {
10
+ width: 288,
11
+ height: 56,
12
+ },
13
+ alt: 'Платёжные системы',
14
+ title: 'Платёжные системы',
15
+ };
16
+
17
+ const rowHeaders: TariffsTableRowHeader[] = [
18
+ { title: 'Начисление процентов на остаток по счету', icon: 'OkIcon' },
19
+ { title: 'Снятие наличных', icon: 'GlassIcon' },
20
+ { title: 'Оформление онлайн', icon: 'ShieldTickIcon' },
21
+ { title: 'Кэшбэк баллами' },
22
+ { title: 'Стоимость обслуживания' },
23
+ { title: 'Стоимость SMS-сервиса' },
24
+ { title: 'Дополнительная информация' },
25
+ ];
26
+
27
+ const columns: TariffsTableColumn[] = [
28
+ {
29
+ data: [
30
+ [{ label: 'Нет' }],
31
+ [
32
+ {
33
+ label: 'Бесплатно',
34
+ description: 'В банкоматах и кассах Россельхозбанка и банков-партнеров',
35
+ },
36
+ {
37
+ label: 'Бесплатно',
38
+ description: 'В сторонних банкоматах - 1 раз в месяц, далее 1% минимум 150 руб',
39
+ },
40
+ ],
41
+ [{ label: 'Нет' }],
42
+ [{ label: 'Платёжные системы картинкой' }, { image: image }],
43
+ [
44
+ { label: 'Кнопки-иконки' },
45
+ {
46
+ buttons: [
47
+ {
48
+ icon: 'AppleIcon',
49
+ rounded: true,
50
+ version: 'secondary',
51
+ href: '/_blank',
52
+ target: '_blank',
53
+ },
54
+ {
55
+ icon: 'PlayMarketIcon',
56
+ rounded: true,
57
+ version: 'secondary',
58
+ href: '/secondary',
59
+ },
60
+ ],
61
+ },
62
+ ],
63
+ [
64
+ {
65
+ label: 'Бесплатно',
66
+ list: {
67
+ items: ['item 1', 'item 2', 'item 3'],
68
+ },
69
+ },
70
+ ],
71
+ [
72
+ {
73
+ image: {
74
+ src: 'money-1.png',
75
+ format: 'webp',
76
+ size: {
77
+ width: 140,
78
+ height: 140,
79
+ },
80
+ alt: 'Деньги',
81
+ },
82
+ },
83
+ ],
84
+ ],
85
+ },
86
+ {
87
+ data: [
88
+ [{ label: 'Нет' }],
89
+ [
90
+ {
91
+ label: 'Бесплатно',
92
+ description: 'В банкоматах и кассах Россельхозбанка и банков-партнеров',
93
+ },
94
+ {
95
+ label: '1%',
96
+ description: 'В сторонних банкоматах, минимум 150 руб',
97
+ },
98
+ ],
99
+ [{ label: 'Нет' }],
100
+ [
101
+ { label: 'До 20%' },
102
+ {
103
+ list: {
104
+ isDotted: false,
105
+ items: ['item 1', 'item 2', 'item 3'],
106
+ },
107
+ },
108
+ ],
109
+ [
110
+ {
111
+ label: 'Бесплатно',
112
+ description: 'При обороте по карте от 10000 ₽ в месяц',
113
+ },
114
+ ],
115
+ [
116
+ { label: '69 рублей в месяц' },
117
+ {
118
+ list: {
119
+ version: 'primary',
120
+ items: ['item 1', 'item 2', 'item 3'],
121
+ },
122
+ },
123
+ ],
124
+ [
125
+ {
126
+ description:
127
+ 'Копите баллы каждый день и обменивайте их на скидки на электронику и бытовую технику Panasonic',
128
+ },
129
+ ],
130
+ ],
131
+ },
132
+ {
133
+ data: [
134
+ [{ label: 'Нет' }],
135
+ [{ label: 'Бесплатно' }],
136
+ [{ label: 'Есть' }],
137
+ [{ label: 'До 20%' }],
138
+ [
139
+ {
140
+ label: 'Бесплатно',
141
+ description: 'При обороте по карте от 10000 ₽ в месяц',
142
+ },
143
+ ],
144
+ [{ label: '69 рублей в месяц' }],
145
+ [{ description: 'Для членов профсоюзных организаций' }],
146
+ ],
147
+ },
148
+ ];
149
+
150
+ export default {
151
+ default: (
152
+ <div className="w-[1280px]">
153
+ <TariffsTable
154
+ className="col-span-12"
155
+ title="Другие дебетовые карты Россельхозбанка"
156
+ context={context}
157
+ rowHeaders={rowHeaders}
158
+ columns={Array(2).fill(columns).flat()}
159
+ />
160
+ </div>
161
+ ),
162
+ '1 column': (
163
+ <div className="w-[1280px]">
164
+ <TariffsTable
165
+ className="col-span-12"
166
+ title="Другие дебетовые карты Россельхозбанка"
167
+ context={context}
168
+ rowHeaders={rowHeaders}
169
+ columns={columns.slice(0, 1)}
170
+ />
171
+ </div>
172
+ ),
173
+ '2 columns': (
174
+ <div className="w-[1280px]">
175
+ <TariffsTable
176
+ className="col-span-12"
177
+ title="Другие дебетовые карты Россельхозбанка"
178
+ context={context}
179
+ rowHeaders={rowHeaders}
180
+ columns={columns.slice(0, 2)}
181
+ />
182
+ </div>
183
+ ),
184
+ '3 columns': (
185
+ <div className="w-[1280px]">
186
+ <TariffsTable
187
+ className="col-span-12"
188
+ title="Другие дебетовые карты Россельхозбанка"
189
+ context={context}
190
+ rowHeaders={rowHeaders}
191
+ columns={columns.slice(0, 3)}
192
+ />
193
+ </div>
194
+ ),
195
+ };
@@ -0,0 +1,74 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { useComparisonTableScroll } from '../../hooks/useComparisonTableScroll';
3
+ import type { UniBlockProps } from '../../types';
4
+ import { ArrowButton } from '../../ui-kit/Button/ArrowButton';
5
+ import { Title } from '../../ui-kit/Title/Title';
6
+ import { COLS_LENGTH_FOR_SCROLL } from './constants';
7
+ import type { TariffsTableContent } from './TariffsTableContent';
8
+ import { TariffsTableRow } from './TariffsTableRow';
9
+
10
+ export interface TariffsTableProps extends TariffsTableContent, UniBlockProps {}
11
+
12
+ export const TariffsTable = JSX<TariffsTableProps>(
13
+ ({ className, context, title, rowHeaders, columns }) => {
14
+ const [activeCardIndex, setActiveCardIndex] = context.useState(0);
15
+
16
+ const colData = columns?.map(({ data }) => data) || [];
17
+ const rowData = rowHeaders?.map((header, i) => ({
18
+ header,
19
+ data: colData.map((col) => col?.[i] || [{}]),
20
+ }));
21
+
22
+ const { nextClick, prevClick, isScrollAvailable, showNextButton, showPrevButton } =
23
+ useComparisonTableScroll({
24
+ colData,
25
+ colsLengthForScroll: COLS_LENGTH_FOR_SCROLL,
26
+ activeCardIndex,
27
+ setActiveCardIndex,
28
+ });
29
+
30
+ return (
31
+ <section
32
+ className={`bg-white font-sans py-[50px] pl-[50px] overflow-hidden text-primary-text relative ${
33
+ className || ''
34
+ }`}
35
+ >
36
+ <Title className="font-medium m-0 max-w-[47rem] text-center mb-9 mx-auto">{title}</Title>
37
+ <div role="table">
38
+ {rowData?.length ? (
39
+ <div className="relative">
40
+ {rowData.map((row, i, { length }) => (
41
+ <TariffsTableRow
42
+ key={String(i)}
43
+ row={row}
44
+ isLastRow={i + 1 === length}
45
+ activeCardIndex={activeCardIndex}
46
+ />
47
+ ))}
48
+ {isScrollAvailable ? (
49
+ <div>
50
+ <div className="absolute top-7 right-7 z-10">
51
+ <ArrowButton
52
+ onClick={nextClick}
53
+ disabled={!showNextButton}
54
+ ariaLabel="Пролистать вправо"
55
+ />
56
+ <ArrowButton
57
+ className="mt-4 rotate-180"
58
+ onClick={prevClick}
59
+ disabled={!showPrevButton}
60
+ ariaLabel="Пролистать влево"
61
+ />
62
+ </div>
63
+ </div>
64
+ ) : null}
65
+ </div>
66
+ ) : null}
67
+ {isScrollAvailable ? (
68
+ <div className="absolute top-0 right-0 bottom-0 w-[84px] bg-opacity-to-white" />
69
+ ) : null}
70
+ </div>
71
+ </section>
72
+ );
73
+ },
74
+ );
@@ -0,0 +1,64 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { DIVIDER_CLASSES } from './constants';
3
+ import { BlockItem } from '../../ui-kit/BlockItem/BlockItem';
4
+ import { Img } from '../../ui-kit/Img';
5
+ import { Button } from '../../ui-kit/Button/Button';
6
+ import type { TariffsTableCellData } from './TariffsTableContent';
7
+ import { Icon } from '../../ui-kit/Icon/Icon';
8
+
9
+ export interface TariffsTableCellProps {
10
+ cell: TariffsTableCellData[];
11
+ isLastRow: boolean;
12
+ }
13
+
14
+ export const TariffsTableCell = JSX<TariffsTableCellProps>(({ cell, isLastRow }) => {
15
+ const cellWrapperClasses = `first:pl-0 pl-10 w-80 flex-grow flex flex-col border-solid border-main-divider border border-t-0 border-x-0 ${
16
+ isLastRow ? 'border-t-0 rounded-b-md' : ''
17
+ }`;
18
+
19
+ const cellClasses = `h-full ${DIVIDER_CLASSES}`;
20
+
21
+ return (
22
+ <div className={cellWrapperClasses} role="cell">
23
+ <div className={cellClasses}>{cell.map((item, i) => renderCellInner(item, i))}</div>
24
+ </div>
25
+ );
26
+ });
27
+
28
+ const renderCellInner = (
29
+ { label, description, list, image, buttons }: TariffsTableCellData,
30
+ i: number,
31
+ ) => (
32
+ <div key={String(i)} className="first:pt-5 last:pb-5">
33
+ {i > 0 && (
34
+ <div className="border-main-divider border border-solid border-t-0 border-x-0 my-4" />
35
+ )}
36
+ {label && <div className="text-xl font-medium m-0">{label}</div>}
37
+ {description && <div className="text-sm text-secondary-text">{description}</div>}
38
+ {list?.items?.length ? (
39
+ <div className="flex flex-col justify-between items-start">
40
+ <div role="list">
41
+ {list.items.map((text, idx) => (
42
+ <BlockItem
43
+ key={String(idx)}
44
+ text={text}
45
+ version={list.version ?? 'secondary'}
46
+ isDotted={list.isDotted ?? true}
47
+ />
48
+ ))}
49
+ </div>
50
+ </div>
51
+ ) : null}
52
+ {image && <Img image={image} />}
53
+ {buttons?.length
54
+ ? buttons.map(({ icon, ...buttonProps }, idx) => (
55
+ <Button
56
+ className={`${idx > 0 ? 'ml-3' : ''} w-12 h-12`}
57
+ key={String(idx)}
58
+ appendLeft={icon && <Icon name={icon} width="24px" height="24px" />}
59
+ {...buttonProps}
60
+ />
61
+ ))
62
+ : null}
63
+ </div>
64
+ );
@@ -0,0 +1,61 @@
1
+ import type { CellData, RowHeader } from '../ComparisonTable/ComparisonTableContent';
2
+ import type { IconName } from '../../ui-kit/Icon/IconProps';
3
+ import type { Picture } from '../../model/Picture';
4
+ import type { BlockItemVersion } from '../../ui-kit/BlockItem/BlockItemProps';
5
+ import type { BaseTileIconButton } from '../BaseTile/BaseTileProps';
6
+
7
+ /**
8
+ * @title Ряд
9
+ */
10
+ export type TariffsTableRowData = {
11
+ header: TariffsTableRowHeader;
12
+ data: TariffsTableCellData[][];
13
+ };
14
+
15
+ /**
16
+ * @title Колонка
17
+ */
18
+ export interface TariffsTableColumn {
19
+ /** @title Данные */
20
+ data?: TariffsTableCellData[][];
21
+ }
22
+
23
+ /**
24
+ * @title Список
25
+ */
26
+ export interface TariffsTableList {
27
+ version?: BlockItemVersion;
28
+ /** @title Маркеры */
29
+ isDotted?: boolean;
30
+ /** @title Элементы списка */
31
+ items?: string[];
32
+ }
33
+
34
+ /**
35
+ * @title Ячейка
36
+ */
37
+ export interface TariffsTableCellData extends CellData {
38
+ list?: TariffsTableList;
39
+ image?: Picture;
40
+ /** @title Кнопки */
41
+ buttons?: BaseTileIconButton[];
42
+ }
43
+
44
+ /**
45
+ * @title Параметр
46
+ */
47
+ export interface TariffsTableRowHeader extends RowHeader {
48
+ icon?: IconName;
49
+ }
50
+
51
+ /**
52
+ * @title Таблица тарифов
53
+ */
54
+ export interface TariffsTableContent {
55
+ /** @title Заголовок */
56
+ title?: string;
57
+ /** @title Колонки */
58
+ columns?: TariffsTableColumn[];
59
+ /** @title Параметры */
60
+ rowHeaders?: TariffsTableRowHeader[];
61
+ }
@@ -0,0 +1,46 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { COLUMN_WIDTH, DIVIDER_CLASSES, FIRST_CELL_CLASSES } from './constants';
3
+ import { Icon } from '../../ui-kit/Icon/Icon';
4
+ import { TariffsTableCell } from './TariffsTableCell';
5
+ import { TableRowContainer } from '../ComparisonTable/TableRowContainer';
6
+ import { TableCarouselContainer } from '../ComparisonTable/TableCarouselContainer';
7
+ import type { TariffsTableRowData } from './TariffsTableContent';
8
+
9
+ export interface TariffsTableRowProps {
10
+ className?: string;
11
+ row: TariffsTableRowData;
12
+ activeCardIndex: number;
13
+ isLastRow: boolean;
14
+ }
15
+
16
+ export const TariffsTableRow = JSX<TariffsTableRowProps>(
17
+ ({ row: { header, data }, activeCardIndex, isLastRow }) => {
18
+ return (
19
+ <TableRowContainer>
20
+ <div
21
+ className={`text-sm py-5 ${FIRST_CELL_CLASSES} ${DIVIDER_CLASSES} ${
22
+ !isLastRow ? 'border-solid' : ''
23
+ }`}
24
+ >
25
+ <div className="flex items-center text-primary-text">
26
+ {header?.icon && (
27
+ <Icon className="pr-[14px]" name={header.icon} width="24px" height="24px" />
28
+ )}
29
+ {header?.title}
30
+ </div>
31
+ </div>
32
+ {data?.length ? (
33
+ <TableCarouselContainer
34
+ activeCardIndex={activeCardIndex}
35
+ columnWidth={COLUMN_WIDTH}
36
+ version="tariff"
37
+ >
38
+ {data.map((cell, i) => (
39
+ <TariffsTableCell key={String(i)} cell={cell} isLastRow={isLastRow} />
40
+ ))}
41
+ </TableCarouselContainer>
42
+ ) : null}
43
+ </TableRowContainer>
44
+ );
45
+ },
46
+ );
@@ -0,0 +1,4 @@
1
+ export const DIVIDER_CLASSES = 'border-main-divider border border-t-0 border-x-0';
2
+ export const FIRST_CELL_CLASSES = 'w-[354px] flex-shrink-0';
3
+ export const COLS_LENGTH_FOR_SCROLL = 2;
4
+ export const COLUMN_WIDTH = 4 * 80 + 40; // w-80 + pl-10 = 360px
@@ -1,6 +1,13 @@
1
1
  {
2
- "title": "Заголовок",
2
+ "title": "Текстовый блок",
3
3
  "description": "Описание",
4
4
  "blockVersion": "primary",
5
- "iconVersion": "small"
5
+ "iconVersion": "small",
6
+ "image": {
7
+ "format": "webp",
8
+ "size": {
9
+ "width": 48,
10
+ "height": 48
11
+ }
12
+ }
6
13
  }
@@ -1,6 +1,7 @@
1
+ import type { Picture } from '../../model/Picture';
1
2
  import { context } from '../../setup-fixture';
2
3
  import { TextBlock } from './TextBlock';
3
- import type { Picture } from '../../model/Picture';
4
+ import { TextBlockContent } from './TextBlockContent';
4
5
 
5
6
  const image: Picture = {
6
7
  src: 'bank-card.png',
@@ -11,50 +12,31 @@ const image: Picture = {
11
12
  },
12
13
  };
13
14
 
15
+ export const TEXT_BLOCK: TextBlockContent = {
16
+ title: 'Все карты Россельхозбанка работают',
17
+ description:
18
+ "Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка",
19
+ };
20
+
14
21
  export default (
15
22
  <div className="font-sans overflow-hidden">
16
23
  <div>
17
24
  <p>Private clients</p>
18
25
  <div className="flex flex-col gap-6" data-theme="pc">
26
+ <TextBlock context={context} {...TEXT_BLOCK} blockVersion="primary" iconVersion="small" />
19
27
  <TextBlock
20
28
  context={context}
21
- title="Все карты Россельхозбанка работают"
22
- description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
23
- blockVersion="primary"
24
- iconVersion="small"
25
- />
26
- <TextBlock
27
- context={context}
28
- title="Все карты Россельхозбанка работают"
29
- description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
29
+ {...TEXT_BLOCK}
30
30
  blockVersion="primary"
31
31
  iconVersion="big"
32
32
  image={image}
33
33
  />
34
+ <TextBlock context={context} {...TEXT_BLOCK} blockVersion="primary" iconVersion="none" />
35
+ <TextBlock context={context} {...TEXT_BLOCK} blockVersion="primary" iconVersion="small" />
36
+ <TextBlock context={context} {...TEXT_BLOCK} blockVersion="secondary" iconVersion="small" />
34
37
  <TextBlock
35
38
  context={context}
36
- title="Все карты Россельхозбанка работают"
37
- description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
38
- blockVersion="primary"
39
- iconVersion="none"
40
- />
41
- <TextBlock
42
- context={context}
43
- description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
44
- blockVersion="primary"
45
- iconVersion="small"
46
- />
47
- <TextBlock
48
- context={context}
49
- title="Все карты Россельхозбанка работают"
50
- description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
51
- blockVersion="secondary"
52
- iconVersion="small"
53
- />
54
- <TextBlock
55
- context={context}
56
- title="Все карты Россельхозбанка работают"
57
- description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
39
+ {...TEXT_BLOCK}
58
40
  blockVersion="secondary-light"
59
41
  iconVersion="small"
60
42
  />
@@ -63,24 +45,11 @@ export default (
63
45
  <div>
64
46
  <p>Business clients</p>
65
47
  <div className="flex flex-col gap-6" data-theme="bc">
48
+ <TextBlock context={context} {...TEXT_BLOCK} blockVersion="primary" iconVersion="small" />
49
+ <TextBlock context={context} {...TEXT_BLOCK} blockVersion="secondary" iconVersion="small" />
66
50
  <TextBlock
67
51
  context={context}
68
- title="Все карты Россельхозбанка работают"
69
- description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
70
- blockVersion="primary"
71
- iconVersion="small"
72
- />
73
- <TextBlock
74
- context={context}
75
- title="Все карты Россельхозбанка работают"
76
- description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
77
- blockVersion="secondary"
78
- iconVersion="small"
79
- />
80
- <TextBlock
81
- context={context}
82
- title="Все карты Россельхозбанка работают"
83
- description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
52
+ {...TEXT_BLOCK}
84
53
  blockVersion="secondary-light"
85
54
  iconVersion="small"
86
55
  />
@@ -89,24 +58,11 @@ export default (
89
58
  <div>
90
59
  <p>Ecosystem own</p>
91
60
  <div className="flex flex-col gap-6" data-theme="eo">
61
+ <TextBlock context={context} {...TEXT_BLOCK} blockVersion="primary" iconVersion="small" />
62
+ <TextBlock context={context} {...TEXT_BLOCK} blockVersion="secondary" iconVersion="small" />
92
63
  <TextBlock
93
64
  context={context}
94
- title="Все карты Россельхозбанка работают"
95
- description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
96
- blockVersion="primary"
97
- iconVersion="small"
98
- />
99
- <TextBlock
100
- context={context}
101
- title="Все карты Россельхозбанка работают"
102
- description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
103
- blockVersion="secondary"
104
- iconVersion="small"
105
- />
106
- <TextBlock
107
- context={context}
108
- title="Все карты Россельхозбанка работают"
109
- description="Если не планируете поездку за границу, продолжайте пользоваться картой Своя. Для поездок за границу можно заказать карту 'Кредитная карта Своя Union Pay' на сайте и в приложении Россельхозбанка"
65
+ {...TEXT_BLOCK}
110
66
  blockVersion="secondary-light"
111
67
  iconVersion="small"
112
68
  />