@redneckz/wildless-cms-uni-blocks 0.2.92 → 0.2.93

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 (192) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +79 -56
  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/Blocks.js +1 -1
  12. package/dist/components/Blocks.js.map +1 -1
  13. package/dist/components/ComparisonTable/ComparisonTable.js +11 -6
  14. package/dist/components/ComparisonTable/ComparisonTable.js.map +1 -1
  15. package/dist/components/ComparisonTable/HeaderCell.js +1 -1
  16. package/dist/components/ComparisonTable/HeaderCell.js.map +1 -1
  17. package/dist/components/ContentPage/ContentPageHead.d.ts +1 -1
  18. package/dist/components/CreditCalculator/CreditCalculator.js +1 -1
  19. package/dist/components/CreditCalculator/CreditCalculator.js.map +1 -1
  20. package/dist/components/Footer/Contacts.js +1 -1
  21. package/dist/components/Footer/Contacts.js.map +1 -1
  22. package/dist/components/Footer/FooterContent.d.ts +1 -2
  23. package/dist/components/Footer/HorizontalNavigation.js +1 -1
  24. package/dist/components/Footer/SocialMedia.js +1 -2
  25. package/dist/components/Footer/SocialMedia.js.map +1 -1
  26. package/dist/components/Gallery/GalleryInner.js +2 -2
  27. package/dist/components/Gallery/GalleryInner.js.map +1 -1
  28. package/dist/components/LinkDocs/LinkDocs.js +5 -5
  29. package/dist/components/LinkDocs/LinkDocs.js.map +1 -1
  30. package/dist/components/MiniGallery/MiniGalleryContent.d.ts +1 -2
  31. package/dist/components/MobileBlocks.js +0 -3
  32. package/dist/components/MobileBlocks.js.map +1 -1
  33. package/dist/components/PictureText/PictureTextContent.d.ts +1 -3
  34. package/dist/components/Placeholder/Placeholder.js.map +1 -1
  35. package/dist/components/ProductBlock/ProductBlock.mobile.js +3 -1
  36. package/dist/components/ProductBlock/ProductBlock.mobile.js.map +1 -1
  37. package/dist/components/ProductBlock/ProductBlockInner.js +1 -4
  38. package/dist/components/ProductBlock/ProductBlockInner.js.map +1 -1
  39. package/dist/components/ProductGallery/ProductGallery.js +2 -2
  40. package/dist/components/ProductGallery/ProductGallery.js.map +1 -1
  41. package/dist/components/PromoTile/PromoTile.d.ts +1 -1
  42. package/dist/components/PromoTile/PromoTile.js +1 -1
  43. package/dist/components/PromoTile/PromoTile.js.map +1 -1
  44. package/dist/components/TariffsTable/TariffsTable.js +8 -3
  45. package/dist/components/TariffsTable/TariffsTable.js.map +1 -1
  46. package/dist/components/TariffsTable/TariffsTableCell.js +3 -3
  47. package/dist/components/TariffsTable/TariffsTableCell.js.map +1 -1
  48. package/dist/components/TextBlock/TextBlockContent.d.ts +1 -2
  49. package/dist/components/Tile/Tile.d.ts +1 -1
  50. package/dist/components/Tile/Tile.js +14 -2
  51. package/dist/components/Tile/Tile.js.map +1 -1
  52. package/dist/content-page-repository/ContentPageRepository.js +1 -0
  53. package/dist/content-page-repository/ContentPageRepository.js.map +1 -1
  54. package/dist/hooks/useComparisonTableScroll.d.ts +6 -1
  55. package/dist/hooks/useComparisonTableScroll.js +1 -1
  56. package/dist/hooks/useComparisonTableScroll.js.map +1 -1
  57. package/dist/hooks/useLink.js +1 -1
  58. package/dist/hooks/useLink.js.map +1 -1
  59. package/dist/ui-kit/InputRange/InputRange.js +1 -1
  60. package/dist/ui-kit/InputRange/InputRange.js.map +1 -1
  61. package/dist/ui-kit/SearchBar.js +2 -1
  62. package/dist/ui-kit/SearchBar.js.map +1 -1
  63. package/lib/api/LikeAPI.js +1 -0
  64. package/lib/api/LikeAPI.js.map +1 -1
  65. package/lib/common.css +1 -1
  66. package/lib/components/Accordion/Accordion.fixture.d.ts +1 -4
  67. package/lib/components/Accordion/AccordionContent.d.ts +38 -14
  68. package/lib/components/Accordion/AccordionItem.js +8 -6
  69. package/lib/components/Accordion/AccordionItem.js.map +1 -1
  70. package/lib/components/BaseTile/BaseTile.js +1 -1
  71. package/lib/components/BaseTile/BaseTile.js.map +1 -1
  72. package/lib/components/Blocks.js +1 -1
  73. package/lib/components/Blocks.js.map +1 -1
  74. package/lib/components/ComparisonTable/ComparisonTable.js +11 -6
  75. package/lib/components/ComparisonTable/ComparisonTable.js.map +1 -1
  76. package/lib/components/ComparisonTable/HeaderCell.js +1 -1
  77. package/lib/components/ComparisonTable/HeaderCell.js.map +1 -1
  78. package/lib/components/ContentPage/ContentPageHead.d.ts +1 -1
  79. package/lib/components/CreditCalculator/CreditCalculator.js +1 -1
  80. package/lib/components/CreditCalculator/CreditCalculator.js.map +1 -1
  81. package/lib/components/Footer/Contacts.js +1 -1
  82. package/lib/components/Footer/Contacts.js.map +1 -1
  83. package/lib/components/Footer/FooterContent.d.ts +1 -2
  84. package/lib/components/Footer/HorizontalNavigation.js +1 -1
  85. package/lib/components/Footer/SocialMedia.js +1 -2
  86. package/lib/components/Footer/SocialMedia.js.map +1 -1
  87. package/lib/components/Gallery/GalleryInner.js +2 -2
  88. package/lib/components/Gallery/GalleryInner.js.map +1 -1
  89. package/lib/components/Headline/Headline.fixture.d.ts +3 -2
  90. package/lib/components/LinkDocs/LinkDocs.fixture.d.ts +6 -6
  91. package/lib/components/LinkDocs/LinkDocs.js +5 -5
  92. package/lib/components/LinkDocs/LinkDocs.js.map +1 -1
  93. package/lib/components/MiniGallery/MiniGalleryContent.d.ts +1 -2
  94. package/lib/components/MobileBlocks.js +0 -3
  95. package/lib/components/MobileBlocks.js.map +1 -1
  96. package/lib/components/PictureText/PictureText.fixture.d.ts +2 -0
  97. package/lib/components/PictureText/PictureTextContent.d.ts +1 -3
  98. package/lib/components/Placeholder/Placeholder.js.map +1 -1
  99. package/lib/components/ProductBlock/ProductBlock.mobile.js +3 -1
  100. package/lib/components/ProductBlock/ProductBlock.mobile.js.map +1 -1
  101. package/lib/components/ProductBlock/ProductBlockInner.js +1 -4
  102. package/lib/components/ProductBlock/ProductBlockInner.js.map +1 -1
  103. package/lib/components/ProductGallery/ProductGallery.js +2 -2
  104. package/lib/components/ProductGallery/ProductGallery.js.map +1 -1
  105. package/lib/components/PromoTile/PromoTile.d.ts +1 -1
  106. package/lib/components/PromoTile/PromoTile.js +1 -1
  107. package/lib/components/PromoTile/PromoTile.js.map +1 -1
  108. package/lib/components/TariffsTable/TariffsTable.js +8 -3
  109. package/lib/components/TariffsTable/TariffsTable.js.map +1 -1
  110. package/lib/components/TariffsTable/TariffsTableCell.js +3 -3
  111. package/lib/components/TariffsTable/TariffsTableCell.js.map +1 -1
  112. package/lib/components/TextBlock/TextBlock.fixture.d.ts +2 -0
  113. package/lib/components/TextBlock/TextBlockContent.d.ts +1 -2
  114. package/lib/components/Tile/Tile.d.ts +1 -1
  115. package/lib/components/Tile/Tile.js +14 -2
  116. package/lib/components/Tile/Tile.js.map +1 -1
  117. package/lib/content-page-repository/ContentPageRepository.js +1 -0
  118. package/lib/content-page-repository/ContentPageRepository.js.map +1 -1
  119. package/lib/hooks/useComparisonTableScroll.d.ts +6 -1
  120. package/lib/hooks/useComparisonTableScroll.js +1 -1
  121. package/lib/hooks/useComparisonTableScroll.js.map +1 -1
  122. package/lib/hooks/useLink.js +1 -1
  123. package/lib/hooks/useLink.js.map +1 -1
  124. package/lib/ui-kit/InputRange/InputRange.js +1 -1
  125. package/lib/ui-kit/InputRange/InputRange.js.map +1 -1
  126. package/lib/ui-kit/SearchBar.js +2 -1
  127. package/lib/ui-kit/SearchBar.js.map +1 -1
  128. package/package.json +19 -9
  129. package/src/api/LikeAPI.ts +1 -0
  130. package/src/components/Accordion/Accordion.example.json +18 -42
  131. package/src/components/Accordion/Accordion.fixture.tsx +29 -119
  132. package/src/components/Accordion/AccordionContent.ts +47 -18
  133. package/src/components/Accordion/AccordionItem.tsx +13 -9
  134. package/src/components/BaseTile/BaseTile.tsx +6 -3
  135. package/src/components/Blocks.ts +1 -1
  136. package/src/components/ComparisonTable/ComparisonTable.tsx +8 -8
  137. package/src/components/ComparisonTable/HeaderCell.tsx +3 -3
  138. package/src/components/ContentPage/ContentPage.fixture.tsx +3 -3
  139. package/src/components/ContentPage/ContentPage.page.json +14 -7
  140. package/src/components/ContentPage/ContentPageHead.tsx +1 -1
  141. package/src/components/CreditCalculator/CreditCalculator.tsx +1 -1
  142. package/src/components/Footer/Contacts.tsx +1 -1
  143. package/src/components/Footer/FooterContent.ts +1 -1
  144. package/src/components/Footer/HorizontalNavigation.tsx +1 -1
  145. package/src/components/Footer/SocialMedia.tsx +5 -6
  146. package/src/components/Gallery/GalleryInner.tsx +2 -1
  147. package/src/components/Headline/Headline.fixture.tsx +11 -34
  148. package/src/components/LinkDocs/LinkDocs.fixture.tsx +14 -14
  149. package/src/components/LinkDocs/LinkDocs.tsx +8 -7
  150. package/src/components/MiniGallery/MiniGalleryContent.ts +1 -1
  151. package/src/components/MobileBlocks.ts +0 -3
  152. package/src/components/PictureText/PictureText.fixture.tsx +20 -20
  153. package/src/components/PictureText/PictureTextContent.ts +1 -3
  154. package/src/components/Placeholder/Placeholder.tsx +2 -2
  155. package/src/components/ProductBlock/ProductBlock.mobile.tsx +1 -0
  156. package/src/components/ProductBlock/ProductBlockInner.tsx +8 -11
  157. package/src/components/ProductGallery/ProductGallery.example.json +1 -1
  158. package/src/components/ProductGallery/ProductGallery.fixture.tsx +7 -13
  159. package/src/components/ProductGallery/ProductGallery.tsx +7 -5
  160. package/src/components/PromoTile/PromoTile.tsx +3 -3
  161. package/src/components/TariffsTable/TariffsTable.example.json +3 -1
  162. package/src/components/TariffsTable/TariffsTable.fixture.tsx +3 -0
  163. package/src/components/TariffsTable/TariffsTable.tsx +39 -37
  164. package/src/components/TariffsTable/TariffsTableCell.tsx +4 -4
  165. package/src/components/TextBlock/TextBlock.example.json +9 -2
  166. package/src/components/TextBlock/TextBlock.fixture.tsx +20 -64
  167. package/src/components/TextBlock/TextBlockContent.ts +1 -2
  168. package/src/components/Tile/Tile.example.json +5 -2
  169. package/src/components/Tile/Tile.tsx +16 -5
  170. package/src/content-page-repository/ContentPageRepository.ts +1 -0
  171. package/src/hooks/useComparisonTableScroll.ts +11 -6
  172. package/src/hooks/useLink.ts +1 -1
  173. package/src/ui-kit/InputRange/InputRange.tsx +2 -2
  174. package/src/ui-kit/SearchBar.tsx +16 -6
  175. package/src/Icons/CalendarCircleIcon.svg +0 -14
  176. package/src/Icons/CardIcon.svg +0 -11
  177. package/src/Icons/CardPosIcon.svg +0 -12
  178. package/src/Icons/CardTickIcon.svg +0 -13
  179. package/src/Icons/EmptyWalletChangeIcon.svg +0 -21
  180. package/src/Icons/JCBIcon.svg +0 -42
  181. package/src/Icons/MastercardIcon.svg +0 -6
  182. package/src/Icons/MinusIcon.svg +0 -1
  183. package/src/Icons/MirIcon.svg +0 -13
  184. package/src/Icons/MoneyIcon.svg +0 -13
  185. package/src/Icons/MonitorMobileIcon.svg +0 -14
  186. package/src/Icons/PlusIcon.svg +0 -1
  187. package/src/Icons/Profile2UserIcon.svg +0 -14
  188. package/src/Icons/ShieldTickIcon.svg +0 -7
  189. package/src/Icons/UnionPayIcon.svg +0 -7
  190. package/src/Icons/UserIcon.svg +0 -11
  191. package/src/Icons/VisaIcon.svg +0 -7
  192. package/src/Icons/WalletIcon.svg +0 -19
@@ -92,6 +92,7 @@
92
92
  "src": "worker.png",
93
93
  "title": "Рабочий",
94
94
  "format": "webp",
95
+ "alt": "Кредит наличными",
95
96
  "size": {
96
97
  "width": 280,
97
98
  "height": 280
@@ -106,7 +107,6 @@
106
107
  },
107
108
  "productBlock": {
108
109
  "title": "Дополнительные бонусные баллы за покупки!»",
109
- "description": "Кредит наличными без залога и поручительства. Потребительский кредит на любые цели. Нужен только паспорт.",
110
110
  "buttons": [
111
111
  {
112
112
  "href": "https://rshb.ru",
@@ -119,6 +119,7 @@
119
119
  "src": "credit-card-1.png",
120
120
  "title": "Кредитка",
121
121
  "format": "webp",
122
+ "alt": "Кредит наличными",
122
123
  "size": {
123
124
  "width": 280,
124
125
  "height": 280
@@ -133,7 +134,6 @@
133
134
  },
134
135
  "productBlock": {
135
136
  "title": "Карты Unionpay»",
136
- "description": "Кэшбэк до 20% у партнеров",
137
137
  "items": [
138
138
  "Потребительский кредит по специальной процентной ставке",
139
139
  "Получите деньги без залога и поручительства",
@@ -151,6 +151,7 @@
151
151
  "src": "credit-card-1.png",
152
152
  "title": "Кредитка",
153
153
  "format": "webp",
154
+ "alt": "Кредит наличными",
154
155
  "size": {
155
156
  "width": 280,
156
157
  "height": 280
@@ -1408,7 +1409,7 @@
1408
1409
  "href": "/abc7/yolo.png"
1409
1410
  },
1410
1411
  {
1411
- "text": "Some more generic text, and even more, more text",
1412
+ "text": "Some more generic text, and even more, more text, and more generic text, and even more, more text, and even more",
1412
1413
  "href": "/abc8/archive.zip",
1413
1414
  "fileSize": "2.3МБ"
1414
1415
  },
@@ -1490,7 +1491,9 @@
1490
1491
  "size": {
1491
1492
  "width": 288,
1492
1493
  "height": 56
1493
- }
1494
+ },
1495
+ "alt": "Платёжные системы",
1496
+ "title": "Платёжные системы"
1494
1497
  }
1495
1498
  }
1496
1499
  ],
@@ -1536,7 +1539,8 @@
1536
1539
  "size": {
1537
1540
  "width": 140,
1538
1541
  "height": 140
1539
- }
1542
+ },
1543
+ "alt": "Деньги"
1540
1544
  }
1541
1545
  }
1542
1546
  ]
@@ -1680,7 +1684,9 @@
1680
1684
  "size": {
1681
1685
  "width": 288,
1682
1686
  "height": 56
1683
- }
1687
+ },
1688
+ "alt": "Платёжные системы",
1689
+ "title": "Платёжные системы"
1684
1690
  }
1685
1691
  }
1686
1692
  ],
@@ -1726,7 +1732,8 @@
1726
1732
  "size": {
1727
1733
  "width": 140,
1728
1734
  "height": 140
1729
- }
1735
+ },
1736
+ "alt": "Деньги"
1730
1737
  }
1731
1738
  }
1732
1739
  ]
@@ -2,7 +2,7 @@ import { JSX } from '@redneckz/uni-jsx';
2
2
  import type { ContentPageMeta } from '../../types';
3
3
 
4
4
  export interface ContentPageHeadProps {
5
- HeadComponent: Function;
5
+ HeadComponent: <Props, Context, VNode>(props: Props, context?: Context) => VNode;
6
6
  data: ContentPageMeta;
7
7
  }
8
8
 
@@ -129,7 +129,7 @@ export const CreditCalculator = JSX<CreditCalculatorProps>(
129
129
  aria-label="Соглашение на обработку персональных данных"
130
130
  >
131
131
  Отправляя заявку, вы соглашаетесь на обработку персональных данных соответственно
132
- требованиям ФЗ «О персональных данных»
132
+ требованиям ФЗ «О персональных данных»
133
133
  </div>
134
134
  </div>
135
135
  </div>
@@ -70,4 +70,4 @@ const renderText = (type: ContactInfo['type'], text = '') => {
70
70
  }
71
71
  };
72
72
 
73
- const formatTel = (s: string) => s.replaceAll(/(\-|\s|\(|\)|\D+)/g, '');
73
+ const formatTel = (s: string) => s.replaceAll(/\D/g, '');
@@ -24,7 +24,7 @@ export interface ContactInfo {
24
24
  /**
25
25
  * @required ["href"]
26
26
  */
27
- export interface SocialMedia extends Omit<LinkProps, 'text'> {}
27
+ export type SocialMedia = Omit<LinkProps, 'text'>;
28
28
 
29
29
  /**
30
30
  * @title Подвал
@@ -33,7 +33,7 @@ interface HorizontalNavigationLinkProps extends LinkProps {
33
33
  const HorizontalNavigationLink = JSX<Partial<HorizontalNavigationLinkProps>>(
34
34
  ({ className, index, text, href, target, onClick }) => (
35
35
  <a
36
- className={`font-sans font-normal text-sm text-secondary-text hover:text-primary-text inline-block no-underline max-w-[292px] ${
36
+ className={`font-sans font-normal text-sm text-secondary-text hover:text-primary-main inline-block no-underline max-w-[292px] ${
37
37
  className || ''
38
38
  }`}
39
39
  href={href}
@@ -51,14 +51,13 @@ const MediaButton = JSX<MediaButtonProps>(({ href }) => {
51
51
  if (!icon) return null;
52
52
 
53
53
  return (
54
- <Button
55
- rounded
54
+ <a
55
+ className="flex items-center justify-center border border-solid border-main-divider rounded-full no-underline outline-none w-[38px] h-[38px] hover:fill-primary-main"
56
56
  href={href}
57
57
  target="_blank"
58
58
  rel="noopener noreferrer"
59
- aria-label={label}
60
- className="border-solid border border-main-divider w-9 h-9 flex items-center justify-center hover:fill-primary-main"
61
- appendLeft={<Icon name={icon} width={width} height={height} asSVG />}
62
- />
59
+ >
60
+ {Icon && <Icon name={icon} width={width} height={height} asSVG className="block" />}
61
+ </a>
63
62
  );
64
63
  });
@@ -49,7 +49,7 @@ export const GalleryInner = JSX<GalleryInnerProps>(
49
49
 
50
50
  return (
51
51
  <section
52
- className={`relative font-sans text-primary-text bg-white p-12 overflow-hidden ${className}`}
52
+ className={`relative font-sans text-primary-text bg-white p-12 py-[50px] overflow-hidden ${className}`}
53
53
  >
54
54
  <div className="flex flex-col items-center mb-8">
55
55
  {title ? <Title className="font-medium m-0 text-center">{title}</Title> : null}
@@ -68,6 +68,7 @@ export const GalleryInner = JSX<GalleryInnerProps>(
68
68
  >
69
69
  {cards?.map((card, i) => renderCard(card, i, version))}
70
70
  </div>
71
+ <div className="absolute top-0 left-0 bottom-0 w-[84px] bg-gradient-to-r from-white to-transparent"></div>
71
72
  {showPrevButton && (
72
73
  <ArrowButton
73
74
  className="absolute top-1/2 left-8 rotate-180"
@@ -1,42 +1,19 @@
1
1
  import { context } from '../../setup-fixture';
2
2
 
3
3
  import { Headline } from './Headline';
4
+ import { HeadlineContent } from './HeadlineContent';
5
+
6
+ export const HEADLINE: HeadlineContent = {
7
+ title: 'Своя кредитная карта',
8
+ description: 'Карта работает в 180 странах мира. Бесплатное снятие наличных в любых банкоматах.',
9
+ align: 'center',
10
+ bgColor: 'transparent',
11
+ };
4
12
 
5
13
  export default {
6
- default: (
7
- <Headline
8
- title="Своя кредитная карта"
9
- description="Карта работает в 180 странах мира. Бесплатное снятие наличных в любых банкоматах."
10
- align="left"
11
- bgColor="bg-white"
12
- context={context}
13
- />
14
- ),
15
- 'center transparent': (
16
- <Headline
17
- title="Своя кредитная карта"
18
- description="Карта работает в 180 странах мира. Бесплатное снятие наличных в любых банкоматах."
19
- align="center"
20
- bgColor="transparent"
21
- context={context}
22
- />
23
- ),
14
+ default: <Headline context={context} {...HEADLINE} />,
15
+ 'left white': <Headline context={context} {...HEADLINE} align="left" bgColor="bg-white" />,
24
16
  'right transparent': (
25
- <Headline
26
- title="Своя кредитная карта"
27
- description="Карта работает в 180 странах мира. Бесплатное снятие наличных в любых банкоматах."
28
- align="right"
29
- bgColor="transparent"
30
- context={context}
31
- />
32
- ),
33
- 'right white': (
34
- <Headline
35
- title="Своя кредитная карта"
36
- description="Карта работает в 180 странах мира. Бесплатное снятие наличных в любых банкоматах."
37
- align="right"
38
- bgColor="bg-white"
39
- context={context}
40
- />
17
+ <Headline context={context} {...HEADLINE} align="right" bgColor="transparent" />
41
18
  ),
42
19
  };
@@ -1,8 +1,8 @@
1
- import { LinkDocs } from './LinkDocs';
2
1
  import { context } from '../../setup-fixture';
2
+ import { LinkDocs } from './LinkDocs';
3
3
  import type { LinkDocsContent } from './LinkDocsContent';
4
4
 
5
- export const LinkDocsFixtureSetOne: LinkDocsContent = {
5
+ export const LINK_DOCS: LinkDocsContent = {
6
6
  title: 'Дополнительные документы',
7
7
  icon: 'DocIcon',
8
8
  documents: [
@@ -14,7 +14,7 @@ export const LinkDocsFixtureSetOne: LinkDocsContent = {
14
14
  { text: 'документ 6', href: '/abc6/abc.pdf' },
15
15
  { text: 'Text text text', href: '/abc7/yolo.png' },
16
16
  {
17
- text: 'Some more generic text, and even more, more text',
17
+ text: 'Some more generic text to stretch item, and even more, more text, and more generic text, and even more, more text, and even more',
18
18
  href: '/abc8/archive.zip',
19
19
  fileSize: '2.3МБ',
20
20
  },
@@ -27,25 +27,25 @@ export const LinkDocsFixtureSetOne: LinkDocsContent = {
27
27
  ],
28
28
  };
29
29
 
30
- export const LinkDocsFixtureSetTwo: LinkDocsContent = {
31
- ...LinkDocsFixtureSetOne,
32
- columnsMode: 'single',
30
+ export const LINK_DOCS_TWO_COLUMNS: LinkDocsContent = {
31
+ ...LINK_DOCS,
32
+ columnsMode: 'double',
33
33
  };
34
34
 
35
- export const LinkDocsFixtureSetThree: LinkDocsContent = {
36
- ...LinkDocsFixtureSetOne,
35
+ export const LINK_DOCS_ANOTHER_ICON: LinkDocsContent = {
36
+ ...LINK_DOCS,
37
37
  icon: 'GlassIcon',
38
38
  title: '',
39
39
  };
40
40
 
41
- export const LinkDocsFixtureSetFour: LinkDocsContent = {
42
- ...LinkDocsFixtureSetOne,
41
+ export const LINK_DOCS_NO_ICON: LinkDocsContent = {
42
+ ...LINK_DOCS,
43
43
  icon: undefined,
44
44
  };
45
45
 
46
46
  export default {
47
- 'default, 2 columns': <LinkDocs context={context} {...LinkDocsFixtureSetOne} />,
48
- 'one column': <LinkDocs context={context} {...LinkDocsFixtureSetTwo} />,
49
- 'another icon, no extensions': <LinkDocs context={context} {...LinkDocsFixtureSetThree} />,
50
- 'no icon': <LinkDocs context={context} {...LinkDocsFixtureSetFour} />,
47
+ 'one column': <LinkDocs context={context} {...LINK_DOCS} />,
48
+ 'two column': <LinkDocs context={context} {...LINK_DOCS_TWO_COLUMNS} />,
49
+ 'another icon': <LinkDocs context={context} {...LINK_DOCS_ANOTHER_ICON} />,
50
+ 'no icon': <LinkDocs context={context} {...LINK_DOCS_NO_ICON} />,
51
51
  };
@@ -24,14 +24,14 @@ const linkColumnsModeStyleMap: Record<LinkColumnsMode, string> = {
24
24
  export interface LinkDocsProps extends LinkDocsContent, UniBlockProps {}
25
25
 
26
26
  export const LinkDocs = JSX<LinkDocsProps>(
27
- ({ className, title, align, documents, icon, columnsMode = 'double' }) => {
27
+ ({ className, title, align, documents, icon, columnsMode = 'single' }) => {
28
28
  const containerClasses = linkColumnsModeStyleMap[columnsMode];
29
29
 
30
30
  return (
31
31
  <section className={`font-sans p-[50px] bg-white ${className}`}>
32
32
  {title && (
33
33
  <Title
34
- className={`font-medium m-0 ${titleMarginsStyleMap[columnsMode]} ${
34
+ className={`font-medium mt-0 ${titleMarginsStyleMap[columnsMode]} ${
35
35
  titleAlignStyleMap[align ?? 'center']
36
36
  }`}
37
37
  >
@@ -40,16 +40,17 @@ export const LinkDocs = JSX<LinkDocsProps>(
40
40
  )}
41
41
  <div className={`flex ${containerClasses}`} role="list">
42
42
  {documents?.length
43
- ? documents.map(({ text, fileSize, ...linkProps }) => (
43
+ ? documents.map(({ text, fileSize, ...linkProps }, i) => (
44
44
  <a
45
- className={`group flex items-center text-sm
46
- text-sm font-sans align-middle items-center text-primary-text no-underline group hover:text-primary-main
47
- ${columnsMode === 'double' ? 'basis-[calc(50%-20px)]' : ''}`}
45
+ key={String(i)}
46
+ className={`group flex text-sm align-middle h-fit
47
+ text-primary-text no-underline hover:text-primary-main
48
+ ${columnsMode === 'double' ? 'basis-[calc(50%-20px)]' : ''}`}
48
49
  role="listitem"
49
50
  {...linkProps}
50
51
  >
51
52
  {icon && <Icon className="mr-3.5" name={icon} width="24px" height="24px" />}
52
- <span>
53
+ <span className="self-center">
53
54
  {text}
54
55
  <span className="text-secondary-text group-hover:text-primary-main">
55
56
  {linkProps?.href && formatSuffix(getExtFromHref(linkProps.href), fileSize)}
@@ -3,4 +3,4 @@ import type { GalleryContent } from '../Gallery/GalleryContent';
3
3
  /**
4
4
  * @title Мини-галерея
5
5
  */
6
- export interface MiniGalleryContent extends GalleryContent {}
6
+ export type MiniGalleryContent = GalleryContent;
@@ -24,7 +24,4 @@ export const MobileBlocks = {
24
24
  ProductTile,
25
25
  TextBlock,
26
26
  Tile,
27
- // TODO StepsBlock,
28
- // TODO BenefitsBlock,
29
- // TODO ProductGallery
30
27
  };
@@ -1,7 +1,8 @@
1
1
  import { context } from '../../setup-fixture';
2
2
 
3
- import { PictureText } from './PictureText';
4
3
  import type { Picture } from '../../model/Picture';
4
+ import { PictureText } from './PictureText';
5
+ import type { PictureTextContent } from './PictureTextContent';
5
6
 
6
7
  const image: Picture = {
7
8
  src: 'legal-support-business.png',
@@ -13,24 +14,23 @@ const image: Picture = {
13
14
  alt: 'Варианты потребительского кредита',
14
15
  };
15
16
 
17
+ export const PICTURE_TEXT: PictureTextContent = {
18
+ title: 'Варианты потребительского кредита',
19
+ benefits: [
20
+ {
21
+ label: 'Кредит по одному документу',
22
+ description: 'До 300 тыс ₽ по упрощённой процедуре получения кредита',
23
+ icon: 'DocumentText',
24
+ },
25
+ {
26
+ label: 'Кредит на общих условиях',
27
+ description: 'До 5 млн ₽ на общих условиях получения кредита',
28
+ icon: 'DiscountShape',
29
+ },
30
+ ],
31
+ image,
32
+ };
33
+
16
34
  export default {
17
- default: (
18
- <PictureText
19
- context={context}
20
- title={'Варианты потребительского кредита'}
21
- benefits={[
22
- {
23
- label: 'Кредит по одному документу',
24
- description: 'До 300 тыс ₽ по упрощённой процедуре получения кредита',
25
- icon: 'DocumentText',
26
- },
27
- {
28
- label: 'Кредит на общих условиях',
29
- description: 'До 5 млн ₽ на общих условиях получения кредита',
30
- icon: 'DiscountShape',
31
- },
32
- ]}
33
- image={image}
34
- />
35
- ),
35
+ default: <PictureText context={context} {...PICTURE_TEXT} />,
36
36
  };
@@ -5,8 +5,6 @@ import type { Benefit } from '../BenefitsBlock/BenefitsBlockContent';
5
5
  * @title Картинка с текстом
6
6
  */
7
7
  export interface PictureTextContent extends Pick<BaseTileCommonProps, 'title' | 'image'> {
8
- /**
9
- * @title Список преимуществ
10
- */
8
+ /** @title Список преимуществ */
11
9
  benefits?: Benefit[];
12
10
  }
@@ -17,12 +17,12 @@ export const Placeholder = JSX<PlaceholderProps>(({ className, context, title })
17
17
  );
18
18
  });
19
19
 
20
- const renderShimmer = (size: number = 3) =>
20
+ const renderShimmer = (size = 3) =>
21
21
  goldenSequence(100, size)
22
22
  .map((_) => Math.floor(_))
23
23
  .map(renderShimmerItem);
24
24
 
25
- const renderShimmerItem = (width: number = 100, index: number) => (
25
+ const renderShimmerItem = (width = 100, index: number) => (
26
26
  <div key={String(index)} style={{ width: `${width}%` }} className="h-4 mt-2 bg-secondary-light" />
27
27
  );
28
28
 
@@ -6,6 +6,7 @@ import { ProductBlockInner } from './ProductBlockInner';
6
6
  export interface ProductBlockProps extends ProductBlockInnerCommonProps, UniBlockProps {}
7
7
 
8
8
  export const ProductBlock = JSX<ProductBlockProps>(
9
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
9
10
  ({ titleSize, image, benefits, ...props } /* Get rid of image and benefits */) => {
10
11
  const { className } = props;
11
12
  return (
@@ -2,7 +2,6 @@ import { JSX } from '@redneckz/uni-jsx';
2
2
  import type { UniBlockProps } from '../../types';
3
3
  import { Icon } from '../../ui-kit/Icon/Icon';
4
4
  import { Img } from '../../ui-kit/Img';
5
- import { Title } from '../../ui-kit/Title/Title';
6
5
  import { BaseTile } from '../BaseTile/BaseTile';
7
6
  import type { Benefit } from '../BenefitsBlock/BenefitsBlockContent';
8
7
  import type { ProductBlockInnerCommonProps } from './ProductBlockContent';
@@ -14,16 +13,14 @@ export const ProductBlockInner = JSX<ProductBlockInnerProps>(
14
13
  return (
15
14
  <div className={`flex grow justify-between items-stretch ${className || ''}`}>
16
15
  <div className={'flex flex-col'}>
17
- {title && (
18
- /* TODO Why <Title> is duplicated here? */
19
- <Title
20
- size={titleSize || 'XL'}
21
- className="font-medium m-0 mb-4 whitespace-pre-wrap max-w-[600px] text-primary-text"
22
- >
23
- {title}
24
- </Title>
25
- )}
26
- <BaseTile context={context} description={description} items={items} buttons={buttons}>
16
+ <BaseTile
17
+ context={context}
18
+ title={title}
19
+ titleSize={titleSize || 'XL'}
20
+ description={description}
21
+ items={items}
22
+ buttons={buttons}
23
+ >
27
24
  {benefits?.length ? (
28
25
  <div className="flex gap-6 mt-6 mb-3.5">{benefits.map(renderBenefit)}</div>
29
26
  ) : null}
@@ -10,7 +10,7 @@
10
10
  "image": {
11
11
  "format": "webp",
12
12
  "size": {
13
- "width": 300
13
+ "width": 280
14
14
  }
15
15
  },
16
16
  "description": "Описание",
@@ -7,17 +7,18 @@ const moneyImage: Picture = {
7
7
  src: 'money-1.png',
8
8
  format: 'webp',
9
9
  size: {
10
- width: 300,
11
- height: 300,
10
+ width: 280,
11
+ height: 280,
12
12
  },
13
+ alt: 'Варианты потребительского кредита',
13
14
  };
14
15
 
15
16
  const worker: Picture = {
16
17
  src: 'worker.png',
17
18
  format: 'webp',
18
19
  size: {
19
- width: 300,
20
- height: 300,
20
+ width: 280,
21
+ height: 280,
21
22
  },
22
23
  };
23
24
 
@@ -25,8 +26,8 @@ const creditCard: Picture = {
25
26
  src: 'credit-card-1.png',
26
27
  format: 'webp',
27
28
  size: {
28
- width: 300,
29
- height: 300,
29
+ width: 280,
30
+ height: 280,
30
31
  },
31
32
  };
32
33
 
@@ -41,8 +42,6 @@ export default (
41
42
  },
42
43
  productBlock: {
43
44
  title: 'Ставка от 12,5% годовых на срок до 5 лет!»',
44
- description:
45
- 'Кредит наличными без залога и поручительства. Потребительский кредит на любые цели. Нужен только паспорт.',
46
45
  items: [
47
46
  'Потребительский кредит по специальной процентной ставке',
48
47
  'Получите деньги без залога и поручительства',
@@ -66,8 +65,6 @@ export default (
66
65
  },
67
66
  productBlock: {
68
67
  title: 'Ставка от 12,5% годовых на срок до 3 лет!»',
69
- description:
70
- 'Кредит наличными без залога и поручительства. Потребительский кредит на любые цели. Нужен только паспорт.',
71
68
  items: [
72
69
  'Потребительский кредит по специальной процентной ставке',
73
70
  'Получите деньги без залога и поручительства',
@@ -91,8 +88,6 @@ export default (
91
88
  },
92
89
  productBlock: {
93
90
  title: 'Дополнительные бонусные баллы за покупки!»',
94
- description:
95
- 'Кредит наличными без залога и поручительства. Потребительский кредит на любые цели. Нужен только паспорт.',
96
91
  items: [
97
92
  'Потребительский кредит по специальной процентной ставке',
98
93
  'Получите деньги без залога и поручительства',
@@ -116,7 +111,6 @@ export default (
116
111
  },
117
112
  productBlock: {
118
113
  title: 'Карты Unionpay»',
119
- description: 'Кэшбэк до 20% у партнеров',
120
114
  items: [
121
115
  'Потребительский кредит по специальной процентной ставке',
122
116
  'Получите деньги без залога и поручительства',
@@ -22,7 +22,7 @@ export const ProductGallery = JSX<ProductGalleryProps>(
22
22
  {galleryBlocks.map((_, i) => renderProductBlock(_, i, context))}
23
23
  </div>
24
24
 
25
- <div className={`border-t border-solid border-main-divider flex`}>
25
+ <div className="flex">
26
26
  {galleryNav.map((slide, i) =>
27
27
  renderNavButton({
28
28
  slide,
@@ -61,17 +61,19 @@ function renderNavButton({ slide, i, activeSlideIndex, onClick, duration }) {
61
61
  type="button"
62
62
  key={String(i)}
63
63
  onClick={onClick}
64
- className={`group relative overflow-hidden border-0 bg-inherit cursor-pointer text-left px-0 py-4 grow basis-0`}
64
+ className={`font-sans group relative overflow-hidden border-0 bg-inherit cursor-pointer text-left px-0 pt-4 pb-5 grow basis-0`}
65
65
  >
66
66
  <div className="border-0 border-r border-solid border-main-divider px-6">
67
- <div className={`text-sm font-medium group-hover:text-primary-text ${btnTitleClassName}`}>
67
+ <div
68
+ className={`text-sm font-medium pb-1 group-hover:text-primary-text ${btnTitleClassName}`}
69
+ >
68
70
  {slide?.title}
69
71
  </div>
70
- <div className="text-xs text-secondary-text">{slide.desc}</div>
72
+ <div className="text-xs text-secondary-text pb-[2px]">{slide.desc}</div>
71
73
  </div>
72
74
  <div
73
75
  className={`absolute bottom-0 left-0 w-full h-[3px] bg-primary-main -translate-x-full ${progressBarClassName}`}
74
- style={{ animationDuration: `${duration}s` }}
76
+ style={{ animationDuration: `${duration}s`, animationFillMode: 'forwards' }}
75
77
  ></div>
76
78
  </button>
77
79
  );
@@ -1,7 +1,7 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
- import type { PromoTileContent } from './PromoTileContent';
3
- import { Tile } from '../Tile/Tile';
4
2
  import type { UniBlockProps } from '../../types';
3
+ import { Tile } from '../Tile/Tile';
4
+ import type { PromoTileContent } from './PromoTileContent';
5
5
 
6
6
  export interface PromoTileProps extends PromoTileContent, UniBlockProps {}
7
7
 
@@ -23,7 +23,7 @@ export const PromoTile = JSX<PromoTileProps>(
23
23
  buttons={buttons}
24
24
  version={version}
25
25
  >
26
- <div>
26
+ <div className="mt-1.5">
27
27
  {date && <div className="text-sm mb-2">{formatDate(date)}</div>}
28
28
  <div className="text-base">{description}</div>
29
29
  </div>
@@ -66,7 +66,9 @@
66
66
  "size": {
67
67
  "width": 288,
68
68
  "height": 56
69
- }
69
+ },
70
+ "alt": "Описание картинки",
71
+ "title": "Подсказка"
70
72
  }
71
73
  },
72
74
  {
@@ -10,6 +10,8 @@ const image: Picture = {
10
10
  width: 288,
11
11
  height: 56,
12
12
  },
13
+ alt: 'Платёжные системы',
14
+ title: 'Платёжные системы',
13
15
  };
14
16
 
15
17
  const rowHeaders: TariffsTableRowHeader[] = [
@@ -75,6 +77,7 @@ const columns: TariffsTableColumn[] = [
75
77
  width: 140,
76
78
  height: 140,
77
79
  },
80
+ alt: 'Деньги',
78
81
  },
79
82
  },
80
83
  ],