@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redneckz/wildless-cms-uni-blocks",
3
- "version": "0.2.92",
3
+ "version": "0.2.93",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "author": "ЦК",
@@ -65,16 +65,18 @@
65
65
  "postbuild:lib": "replace-in-file --configFile=replace-config.lib.cjs --verbose",
66
66
  "build:commonjs": "rimraf ./dist && tsc --module commonjs --noImplicitUseStrict --outDir dist",
67
67
  "bundle": "rimraf ./bundle && rollup -c && npm run build:schema",
68
- "build:schema": "ts-json-schema-generator --path './src/**/*Content.ts' --additional-properties --validation-keywords enumNames --validation-keywords required --minify --no-type-check -o ./bundle/blocks.schema.json",
68
+ "build:schema": "ts-json-schema-generator --path './src/**/*Content.ts' --additional-properties --unstable --validation-keywords enumNames --validation-keywords required --minify --no-type-check -o ./bundle/blocks.schema.json",
69
69
  "build:style": "postcss ./src/**/*.css --env production --dir ./lib",
70
70
  "build:icons": "svgo -f ./src/icons -o ./cosmos-static/icons",
71
71
  "size": "size-limit",
72
+ "lint": "eslint ./src",
73
+ "pretest": "npm run lint",
72
74
  "test": "jest --coverage",
73
75
  "precosmos": "npm run build:icons",
74
76
  "cosmos": "cosmos",
75
77
  "precosmos:export": "npm run build:icons",
76
78
  "cosmos:export": "cosmos-export",
77
- "prepare": "husky install || exit 0"
79
+ "prepare": "husky install && npm run --prefix ./eslint-rules build || exit 0"
78
80
  },
79
81
  "peerDependencies": {
80
82
  "react": ">=16.8.0",
@@ -92,14 +94,18 @@
92
94
  "@rollup/plugin-node-resolve": "^13.3.0",
93
95
  "@rollup/plugin-typescript": "^8.3.3",
94
96
  "@size-limit/file": "^7.0.8",
95
- "@types/jest": "^28.1.1",
97
+ "@types/jest": "^28.1.5",
98
+ "@typescript-eslint/eslint-plugin": "^5.30.6",
99
+ "@typescript-eslint/experimental-utils": "^5.30.6",
100
+ "@typescript-eslint/parser": "^5.30.6",
96
101
  "autoprefixer": "^10.4.7",
97
102
  "copyfiles": "^2.4.1",
98
103
  "css-loader": "^6.7.1",
99
104
  "cssnano": "^5.1.11",
105
+ "eslint": "^8.19.0",
100
106
  "html-webpack-plugin": "^5.5.0",
101
107
  "husky": "^8.0.1",
102
- "jest": "^28.1.1",
108
+ "jest": "^28.1.3",
103
109
  "lint-staged": "^13.0.1",
104
110
  "postcss": "^8.4.14",
105
111
  "postcss-cli": "^9.1.0",
@@ -114,12 +120,13 @@
114
120
  "style-loader": "^3.3.1",
115
121
  "svgo": "^2.8.0",
116
122
  "tailwindcss": "^3.1.1",
117
- "ts-jest": "^28.0.4",
123
+ "ts-jest": "^28.0.6",
118
124
  "ts-json-schema-generator": "^1.0.0",
119
125
  "ts-loader": "^9.3.0",
120
- "typescript": "^4.7.3",
126
+ "typescript": "^4.7.4",
121
127
  "webpack": "^5.73.0",
122
- "webpack-cli": "^4.9.2"
128
+ "webpack-cli": "^4.9.2",
129
+ "eslint-plugin-local-eslint-rules": "./eslint-rules"
123
130
  },
124
131
  "size-limit": [
125
132
  {
@@ -132,7 +139,10 @@
132
139
  }
133
140
  ],
134
141
  "lint-staged": {
135
- "src/**/*.{js,jsx,ts,tsx,css}": "prettier --write",
142
+ "src/**/*.{js,jsx,ts,tsx,css}": [
143
+ "prettier --write",
144
+ "eslint"
145
+ ],
136
146
  "*.{js,jsx,ts,tsx,css,json}": [
137
147
  "npm run cosmos:export",
138
148
  "git add ./docs"
@@ -10,6 +10,7 @@ export interface LikeData {
10
10
  const AUTH_PREFIX = 'guest';
11
11
  const STORAGE_KEY = 'likesToken';
12
12
 
13
+ // eslint-disable-next-line max-lines-per-function
13
14
  export function LikeAPI(projectId: string, baseURL = '') {
14
15
  async function getLikeCount(...nodeIds: string[]): Promise<LikeData[]> {
15
16
  if (!nodeIds.length) {
@@ -5,22 +5,14 @@
5
5
  "label": "Accordion label 1",
6
6
  "blocks": [
7
7
  {
8
- "type": "TextBlock",
9
- "data": {
10
- "title": "Title",
11
- "description": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Doloremque minima odio soluta cupiditate pariatur, labore molestias quas necessitatibus nesciunt in praesentium accusamus provident sequi maiores autem. Voluptas quam neque iste?",
12
- "blockVersion": "secondary-light",
13
- "iconVersion": "small"
14
- }
8
+ "accordionBlockType": "TextBlock",
9
+ "title": "Текстовый блок",
10
+ "description": "Описание текстового блока"
15
11
  },
16
12
  {
17
- "type": "TextBlock",
18
- "data": {
19
- "title": "Title",
20
- "description": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Doloremque minima odio soluta cupiditate pariatur, labore molestias quas necessitatibus nesciunt in praesentium accusamus provident sequi maiores autem. Voluptas quam neque iste?",
21
- "blockVersion": "secondary-light",
22
- "iconVersion": "small"
23
- }
13
+ "accordionBlockType": "TextBlock",
14
+ "title": "Текстовый блок №2",
15
+ "description": "Описание текстового блока №2"
24
16
  }
25
17
  ]
26
18
  },
@@ -28,22 +20,14 @@
28
20
  "label": "Accordion label 2",
29
21
  "blocks": [
30
22
  {
31
- "type": "TextBlock",
32
- "data": {
33
- "title": "Title",
34
- "description": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Doloremque minima odio soluta cupiditate pariatur, labore molestias quas necessitatibus nesciunt in praesentium accusamus provident sequi maiores autem. Voluptas quam neque iste?",
35
- "blockVersion": "secondary-light",
36
- "iconVersion": "small"
37
- }
23
+ "accordionBlockType": "TextBlock",
24
+ "title": "Текстовый блок",
25
+ "description": "Описание текстового блока"
38
26
  },
39
27
  {
40
- "type": "TextBlock",
41
- "data": {
42
- "title": "Title",
43
- "description": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Doloremque minima odio soluta cupiditate pariatur, labore molestias quas necessitatibus nesciunt in praesentium accusamus provident sequi maiores autem. Voluptas quam neque iste?",
44
- "blockVersion": "secondary-light",
45
- "iconVersion": "small"
46
- }
28
+ "accordionBlockType": "TextBlock",
29
+ "title": "Текстовый блок №2",
30
+ "description": "Описание текстового блока №2"
47
31
  }
48
32
  ]
49
33
  },
@@ -51,22 +35,14 @@
51
35
  "label": "Accordion label 3",
52
36
  "blocks": [
53
37
  {
54
- "type": "TextBlock",
55
- "data": {
56
- "title": "Title",
57
- "description": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Doloremque minima odio soluta cupiditate pariatur, labore molestias quas necessitatibus nesciunt in praesentium accusamus provident sequi maiores autem. Voluptas quam neque iste?",
58
- "blockVersion": "secondary-light",
59
- "iconVersion": "small"
60
- }
38
+ "accordionBlockType": "TextBlock",
39
+ "title": "Текстовый блок",
40
+ "description": "Описание текстового блока"
61
41
  },
62
42
  {
63
- "type": "TextBlock",
64
- "data": {
65
- "title": "Title",
66
- "description": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Doloremque minima odio soluta cupiditate pariatur, labore molestias quas necessitatibus nesciunt in praesentium accusamus provident sequi maiores autem. Voluptas quam neque iste?",
67
- "blockVersion": "secondary-light",
68
- "iconVersion": "small"
69
- }
43
+ "accordionBlockType": "TextBlock",
44
+ "title": "Текстовый блок №2",
45
+ "description": "Описание текстового блока №2"
70
46
  }
71
47
  ]
72
48
  }
@@ -1,52 +1,35 @@
1
1
  import { context } from '../../setup-fixture';
2
+ import { HEADLINE } from '../Headline/Headline.fixture';
3
+ import { LINK_DOCS } from '../LinkDocs/LinkDocs.fixture';
4
+ import { PICTURE_TEXT } from '../PictureText/PictureText.fixture';
5
+ import { TEXT_BLOCK } from '../TextBlock/TextBlock.fixture';
2
6
  import type { AccordionProps } from './Accordion';
3
- import type { HeadlineProps } from '../Headline/Headline';
4
- import type { PictureTextContent } from '../PictureText/PictureTextContent';
5
- import type { TextBlockContent } from '../TextBlock/TextBlockContent';
6
-
7
7
  import { Accordion } from './Accordion';
8
- import {
9
- LinkDocsFixtureSetOne,
10
- LinkDocsFixtureSetThree,
11
- LinkDocsFixtureSetTwo,
12
- } from '../LinkDocs/LinkDocs.fixture';
8
+ import type {
9
+ HeadlineAccordionBlock,
10
+ LinkDocsAccordionBlock,
11
+ PictureTextAccordionBlock,
12
+ TextBlockAccordionBlock,
13
+ } from './AccordionContent';
13
14
 
14
- const TEXT_BLOCK: TextBlockContent = {
15
- description:
16
- 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Doloremque minima odio soluta cupiditate pariatur, labore molestias quas necessitatibus nesciunt in praesentium accusamus provident sequi maiores autem. Voluptas quam neque iste?',
15
+ const TEXT_BLOCK_ACCORDION_BLOCK: TextBlockAccordionBlock = {
16
+ accordionBlockType: 'TextBlock',
17
+ ...TEXT_BLOCK,
17
18
  };
18
19
 
19
- const HEADLINE: HeadlineProps = {
20
- context,
21
- title: 'Своя кредитная карта',
22
- description: 'Карта работает в 180 странах мира. Бесплатное снятие наличных в любых банкоматах.',
23
- align: 'left',
24
- bgColor: 'bg-white',
20
+ const HEADLINE_ACCORDION_BLOCK: HeadlineAccordionBlock = {
21
+ accordionBlockType: 'Headline',
22
+ ...HEADLINE,
25
23
  };
26
24
 
27
- const PICTURE_TEXT: PictureTextContent = {
28
- title: 'Варианты потребительского кредита',
29
- benefits: [
30
- {
31
- label: 'Кредит по одному документу',
32
- description: 'До 300 тыс ₽ по упрощённой процедуре получения кредита',
33
- icon: 'DocumentText',
34
- },
35
- {
36
- label: 'Кредит на общих условиях',
37
- description: 'До 5 млн ₽ на общих условиях получения кредита',
38
- icon: 'DiscountShape',
39
- },
40
- ],
41
- image: {
42
- src: 'legal-support-business.png',
43
- alt: 'Варианты потребительского кредита',
44
- format: 'webp',
45
- size: {
46
- width: 200,
47
- height: 200,
48
- },
49
- },
25
+ const PICTURE_TEXT_ACCORDION_BLOCK: PictureTextAccordionBlock = {
26
+ accordionBlockType: 'PictureText',
27
+ ...PICTURE_TEXT,
28
+ };
29
+
30
+ const LINK_DOCS_ACCORDION_BLOCK: LinkDocsAccordionBlock = {
31
+ accordionBlockType: 'LinkDocs',
32
+ ...LINK_DOCS,
50
33
  };
51
34
 
52
35
  const propsTextBlock: AccordionProps = {
@@ -55,94 +38,21 @@ const propsTextBlock: AccordionProps = {
55
38
  accordionItems: [
56
39
  {
57
40
  label: 'Accordion label 1',
58
- blocks: [
59
- {
60
- type: 'TextBlock',
61
- data: TEXT_BLOCK,
62
- },
63
- {
64
- type: 'TextBlock',
65
- data: TEXT_BLOCK,
66
- },
67
- ],
41
+ blocks: [TEXT_BLOCK_ACCORDION_BLOCK, TEXT_BLOCK_ACCORDION_BLOCK],
68
42
  },
69
43
  {
70
44
  label: 'Accordion label 2',
71
- blocks: [
72
- {
73
- type: 'TextBlock',
74
- data: TEXT_BLOCK,
75
- },
76
- {
77
- type: 'TextBlock',
78
- data: TEXT_BLOCK,
79
- },
80
- ],
45
+ blocks: [PICTURE_TEXT_ACCORDION_BLOCK],
81
46
  },
82
47
  {
83
48
  label: 'Accordion label 3',
84
- blocks: [
85
- {
86
- type: 'PictureText',
87
- data: PICTURE_TEXT,
88
- },
89
- {
90
- type: 'PictureText',
91
- data: PICTURE_TEXT,
92
- },
93
- ],
49
+ blocks: [HEADLINE_ACCORDION_BLOCK],
94
50
  },
95
51
  {
96
52
  label: 'Accordion label 4',
97
- blocks: [
98
- {
99
- type: 'Headline',
100
- data: HEADLINE,
101
- },
102
- {
103
- type: 'Headline',
104
- data: HEADLINE,
105
- },
106
- ],
53
+ blocks: [LINK_DOCS_ACCORDION_BLOCK],
107
54
  },
108
55
  ],
109
56
  };
110
57
 
111
- const propsLinkDocs: AccordionProps = {
112
- title: 'Accordion title',
113
- context,
114
- accordionItems: [
115
- {
116
- label: 'Список документов в 2 колонки',
117
- blocks: [
118
- {
119
- type: 'LinkDocs',
120
- data: { ...LinkDocsFixtureSetOne, title: '' },
121
- },
122
- ],
123
- },
124
- {
125
- label: 'Список документов в одну колонку',
126
- blocks: [
127
- {
128
- type: 'LinkDocs',
129
- data: { ...LinkDocsFixtureSetTwo, title: '' },
130
- },
131
- ],
132
- },
133
- {
134
- label: 'Немного кастомизированный список',
135
- blocks: [
136
- {
137
- type: 'LinkDocs',
138
- data: LinkDocsFixtureSetThree,
139
- },
140
- ],
141
- },
142
- ],
143
- };
144
-
145
- export default {
146
- 'with text block': <Accordion {...propsTextBlock} />,
147
- 'with link docs block': <Accordion {...propsLinkDocs} />,
148
- };
58
+ export default <Accordion {...propsTextBlock} />;
@@ -2,41 +2,70 @@ import type { HeadlineContent } from '../Headline/HeadlineContent';
2
2
  import type { LinkDocsContent } from '../LinkDocs/LinkDocsContent';
3
3
  import type { PictureTextContent } from '../PictureText/PictureTextContent';
4
4
  import type { TextBlockContent } from '../TextBlock/TextBlockContent';
5
- import AccordionBlocks from './AccordionBlocks';
6
5
 
7
6
  /**
8
- * @hidden
9
- * @title Содержимое блока
7
+ * @title Тип блока
10
8
  */
11
- export type AccordionData =
12
- | HeadlineContent
13
- | LinkDocsContent
14
- | TextBlockContent
15
- | PictureTextContent;
9
+ export type AccordionTypeBlock = 'Headline' | 'LinkDocs' | 'TextBlock' | 'PictureText';
16
10
 
17
11
  /**
18
- * @hidden
19
- * @title Тип блока
20
- * @enumNames ["Заголовок", "Блок документов", Текстовый блок", "Картинка с текстом"]
12
+ * @title Заголовок
21
13
  */
22
- export type AccordionTypeBlock = keyof typeof AccordionBlocks;
14
+ export interface HeadlineAccordionBlock extends HeadlineContent {
15
+ /** @default Headline */
16
+ accordionBlockType: AccordionTypeBlock;
17
+ }
23
18
 
24
19
  /**
25
- * Блок
20
+ * @title Список документов
26
21
  */
27
- export interface AccordionBlock {
28
- type?: AccordionTypeBlock;
29
- data?: AccordionData;
22
+ export interface LinkDocsAccordionBlock extends LinkDocsContent {
23
+ /** @default LinkDocs */
24
+ accordionBlockType: AccordionTypeBlock;
30
25
  }
31
26
 
27
+ /**
28
+ * @title Текстовый блок
29
+ */
30
+ export interface TextBlockAccordionBlock extends TextBlockContent {
31
+ /** @default TextBlock */
32
+ accordionBlockType: AccordionTypeBlock;
33
+ }
34
+
35
+ /**
36
+ * @title Картинка с текстом
37
+ */
38
+ export interface PictureTextAccordionBlock extends PictureTextContent {
39
+ /** @default PictureText */
40
+ accordionBlockType: AccordionTypeBlock;
41
+ }
42
+
43
+ /**
44
+ * @title Выберите блок
45
+ */
46
+ export type EmptyOption = null;
47
+
48
+ /**
49
+ * @title Содержимое аккордеона
50
+ */
51
+ export type AccordionBlockProps =
52
+ | EmptyOption
53
+ | HeadlineAccordionBlock
54
+ | LinkDocsAccordionBlock
55
+ | TextBlockAccordionBlock
56
+ | PictureTextAccordionBlock;
57
+
32
58
  /**
33
59
  * @title Элемент списка
34
60
  */
35
61
  export interface AccordionItemCommonProps {
36
- /** @title Название */
62
+ /**
63
+ * @title Название
64
+ * @default Список
65
+ */
37
66
  label?: string;
38
67
  /** @title Блоки */
39
- blocks?: AccordionBlock[];
68
+ blocks?: AccordionBlockProps[];
40
69
  }
41
70
 
42
71
  /**
@@ -4,7 +4,7 @@ import { Icon } from '../../ui-kit/Icon/Icon';
4
4
  import type { JSXBlock } from '../ContentPage/ContentPage';
5
5
  import { ContentPageContext } from '../ContentPage/ContentPageContext';
6
6
  import AccordionBlocks from './AccordionBlocks';
7
- import type { AccordionBlock, AccordionItemCommonProps } from './AccordionContent';
7
+ import type { AccordionBlockProps, AccordionItemCommonProps } from './AccordionContent';
8
8
 
9
9
  export interface AccordionItemProps extends AccordionItemCommonProps, UniBlockProps {}
10
10
 
@@ -13,8 +13,11 @@ export const AccordionItem = JSX<AccordionItemProps>(({ label, blocks, context }
13
13
  const hasContent = blocks?.length;
14
14
  const icon = isActive ? 'MinusIcon' : 'PlusIcon';
15
15
 
16
- const handleToggle = (e) => {
17
- if (!hasContent) return null;
16
+ const handleToggle = (e: MouseEvent) => {
17
+ if (!hasContent) {
18
+ return;
19
+ }
20
+
18
21
  setIsActive(!isActive);
19
22
  const contentBlock = getContentBlock(e);
20
23
  contentBlock.style.maxHeight = contentBlock.style.maxHeight
@@ -51,18 +54,19 @@ export const AccordionItem = JSX<AccordionItemProps>(({ label, blocks, context }
51
54
  );
52
55
  });
53
56
 
54
- const renderBlock = (block: AccordionBlock, i: number, context: ContentPageContext) => {
55
- if (!block.type || !block.data || !AccordionBlocks.hasOwnProperty(block.type)) {
57
+ const renderBlock = (block: AccordionBlockProps, i: number, context: ContentPageContext) => {
58
+ const type = block?.accordionBlockType;
59
+ if (!type || !(type in AccordionBlocks)) {
56
60
  return null;
57
61
  }
58
62
 
59
- const AccordionBlock: JSXBlock = AccordionBlocks[block.type];
63
+ const AccordionBlock: JSXBlock = AccordionBlocks[type];
60
64
  return (
61
65
  <div className="mb-5 last:mb-0" key={`block_${i}`}>
62
- <AccordionBlock context={context} {...block.data} />
66
+ <AccordionBlock context={context} {...block} />
63
67
  </div>
64
68
  );
65
69
  };
66
70
 
67
- const getContentBlock = (e) =>
68
- e.target.tagName === 'BUTTON' ? e.target.nextSibling : e.target.parentNode.nextSibling;
71
+ const getContentBlock = ({ target }) =>
72
+ target.tagName === 'BUTTON' ? target.nextSibling : target.parentNode.nextSibling;
@@ -44,11 +44,14 @@ export const BaseTile = JSX<BaseTileProps>(
44
44
  return (
45
45
  <div className={`font-sans flex flex-col grow h-full ${alignBlock[align]}`}>
46
46
  {title && (
47
- <Title size={titleSize || getTitleSizeByClassName(className)} className={TITLE_CLASSES}>
47
+ <Title
48
+ size={titleSize || getTitleSizeByClassName(className)}
49
+ className={`${TITLE_CLASSES} ${version === 'primary' ? 'text-primary-text' : ''}`}
50
+ >
48
51
  {title}
49
52
  </Title>
50
53
  )}
51
- <div className="flex grow justify-between">
54
+ <div className="flex grow justify-between w-full">
52
55
  <div className={`flex flex-col justify-between ${alignBlock[align]}`}>
53
56
  <div>
54
57
  {description ? (
@@ -74,7 +77,7 @@ export const BaseTile = JSX<BaseTileProps>(
74
77
  },
75
78
  );
76
79
 
77
- function getTitleSizeByClassName(className: string = '') {
80
+ function getTitleSizeByClassName(className = '') {
78
81
  const colSpan = getColSpan(className);
79
82
  if (colSpan <= 4) {
80
83
  return 'S';
@@ -17,9 +17,9 @@ import { ProductGallery } from './ProductGallery/ProductGallery';
17
17
  import { ProductTile } from './ProductTile/ProductTile';
18
18
  import { PromoTile } from './PromoTile/PromoTile';
19
19
  import { StepsBlock } from './StepsBlock/StepsBlock';
20
+ import { TariffsTable } from './TariffsTable/TariffsTable';
20
21
  import { TextBlock } from './TextBlock/TextBlock';
21
22
  import { Tile } from './Tile/Tile';
22
- import { TariffsTable } from './TariffsTable/TariffsTable';
23
23
 
24
24
  export const Blocks = {
25
25
  Accordion,
@@ -1,15 +1,15 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
+ import { useComparisonTableScroll } from '../../hooks/useComparisonTableScroll';
3
+ import { useLink } from '../../hooks/useLink';
2
4
  import type { UniBlockProps } from '../../types';
3
5
  import { ArrowButton } from '../../ui-kit/Button/ArrowButton';
4
6
  import { Title } from '../../ui-kit/Title/Title';
5
- import { TableRowContainer } from './TableRowContainer';
6
- import { TableCarouselContainer } from './TableCarouselContainer';
7
- import { useLink } from '../../hooks/useLink';
8
7
  import type { ComparisonTableContent } from './ComparisonTableContent';
8
+ import { COLS_LENGTH_FOR_SCROLL, COLUMN_WIDTH, FIRST_CELL_CLASSES } from './constants';
9
9
  import { HeaderCell } from './HeaderCell';
10
+ import { TableCarouselContainer } from './TableCarouselContainer';
10
11
  import { TableRow } from './TableRow';
11
- import { COLS_LENGTH_FOR_SCROLL, COLUMN_WIDTH, FIRST_CELL_CLASSES } from './constants';
12
- import { useComparisonTableScroll } from '../../hooks/useComparisonTableScroll';
12
+ import { TableRowContainer } from './TableRowContainer';
13
13
 
14
14
  export interface ComparisonTableProps extends ComparisonTableContent, UniBlockProps {}
15
15
 
@@ -39,12 +39,12 @@ export const ComparisonTable = JSX<ComparisonTableProps>(
39
39
  .slice(0, isShowAllRow ? rowHeaders.length : visibleRowLength);
40
40
 
41
41
  const { nextClick, prevClick, isScrollAvailable, showNextButton, showPrevButton } =
42
- useComparisonTableScroll(
42
+ useComparisonTableScroll({
43
43
  colData,
44
- COLS_LENGTH_FOR_SCROLL,
44
+ colsLengthForScroll: COLS_LENGTH_FOR_SCROLL,
45
45
  activeCardIndex,
46
46
  setActiveCardIndex,
47
- );
47
+ });
48
48
 
49
49
  const showToggle = () => setIsShowAllRow(!isShowAllRow);
50
50
 
@@ -17,7 +17,7 @@ export interface HeaderCellProps {
17
17
 
18
18
  export const HeaderCell = JSX<HeaderCellProps>(({ icon, image, title, link }) => (
19
19
  <div
20
- className={`w-80 box-border flex flex-col items-center rounded-t-md border-b-0 px-7 pt-7 pb-12 ${BORDER_CLASSES} ${GRADIENT}`}
20
+ className={`w-80 box-border flex flex-col items-center rounded-t-md border-b-0 px-7 pt-7 pb-[46px] ${BORDER_CLASSES} ${GRADIENT}`}
21
21
  role="columnheader"
22
22
  scope="col"
23
23
  >
@@ -29,7 +29,7 @@ export const HeaderCell = JSX<HeaderCellProps>(({ icon, image, title, link }) =>
29
29
  height="63"
30
30
  />
31
31
  )}
32
- {image?.src && <Img className="mb-4" image={image} />}
32
+ {image?.src && <Img className="mb-[18px]" image={image} />}
33
33
  {title && (
34
34
  <Title size="S" className="font-medium m-0 text-center text-white">
35
35
  {title}
@@ -42,7 +42,7 @@ export const HeaderCell = JSX<HeaderCellProps>(({ icon, image, title, link }) =>
42
42
  target={link.target}
43
43
  className="mt-4 w-full text-primary-main bg-white hover:bg-secondary-hover active:bg-secondary-active"
44
44
  >
45
- <div className="text-xs py-[11px]">{link.text}</div>
45
+ <div className="font-medium text-xs py-[11px]">{link.text}</div>
46
46
  </Button>
47
47
  </div>
48
48
  )}
@@ -1,12 +1,12 @@
1
1
  import { context, mobileContext } from '../../setup-fixture';
2
2
 
3
+ import type { ContentPageDef } from '../../types';
3
4
  import { Blocks } from '../Blocks';
4
- import { BlockDecorator, ContentPage } from './ContentPage';
5
5
  import { MobileBlocks } from '../MobileBlocks';
6
+ import { BlockDecorator, ContentPage } from './ContentPage';
6
7
  import { toMobilePage } from './toMobilePage';
7
- import type { ContentPageDef } from '../../types';
8
8
 
9
- const data = require('./ContentPage.page.json');
9
+ import data from './ContentPage.page.json';
10
10
 
11
11
  const blockDecorator: BlockDecorator = ({ blockClassName, block, render }, i) => (
12
12
  <div