@redneckz/wildless-cms-uni-blocks 0.14.49 → 0.14.50

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 (169) hide show
  1. package/bin/migration-scripts/0.14.31.js +66 -0
  2. package/bundle/blocks.schema.json +1 -1
  3. package/bundle/bundle.umd.js +27 -34
  4. package/bundle/bundle.umd.min.js +1 -1
  5. package/bundle/model/JSXBlock.d.ts +2 -2
  6. package/bundle/ui-kit/BaseProductTile/BaseProductTile.d.ts +1 -0
  7. package/bundle/ui-kit/BaseTile/BaseTile.d.ts +1 -0
  8. package/dist/components/Blocks.js +0 -4
  9. package/dist/components/Blocks.js.map +1 -1
  10. package/dist/components/Blocks.mobile.js +0 -4
  11. package/dist/components/Blocks.mobile.js.map +1 -1
  12. package/dist/components/ProductBlock/ProductBlock.js +1 -13
  13. package/dist/components/ProductBlock/ProductBlock.js.map +1 -1
  14. package/dist/model/JSXBlock.d.ts +2 -2
  15. package/dist/ui-kit/BaseProductTile/BaseProductTile.d.ts +1 -0
  16. package/dist/ui-kit/BaseProductTile/BaseProductTile.js +2 -2
  17. package/dist/ui-kit/BaseProductTile/BaseProductTile.js.map +1 -1
  18. package/dist/ui-kit/BaseTile/BaseTile.d.ts +1 -0
  19. package/dist/ui-kit/BaseTile/BaseTile.js +16 -5
  20. package/dist/ui-kit/BaseTile/BaseTile.js.map +1 -1
  21. package/lib/common.css +1 -1
  22. package/lib/components/Blocks.js +0 -4
  23. package/lib/components/Blocks.js.map +1 -1
  24. package/lib/components/Blocks.mobile.js +0 -4
  25. package/lib/components/Blocks.mobile.js.map +1 -1
  26. package/lib/components/ProductBlock/ProductBlock.fixture.d.ts +1 -0
  27. package/lib/components/ProductBlock/ProductBlock.fixture.mobile.d.ts +2 -0
  28. package/lib/components/ProductBlock/ProductBlock.js +2 -14
  29. package/lib/components/ProductBlock/ProductBlock.js.map +1 -1
  30. package/lib/model/JSXBlock.d.ts +2 -2
  31. package/lib/ui-kit/BaseProductTile/BaseProductTile.d.ts +1 -0
  32. package/lib/ui-kit/BaseProductTile/BaseProductTile.js +2 -2
  33. package/lib/ui-kit/BaseProductTile/BaseProductTile.js.map +1 -1
  34. package/lib/ui-kit/BaseTile/BaseTile.d.ts +1 -0
  35. package/lib/ui-kit/BaseTile/BaseTile.js +16 -5
  36. package/lib/ui-kit/BaseTile/BaseTile.js.map +1 -1
  37. package/mobile/bundle/bundle.umd.js +27 -34
  38. package/mobile/bundle/bundle.umd.min.js +1 -1
  39. package/mobile/bundle/model/JSXBlock.d.ts +2 -2
  40. package/mobile/bundle/ui-kit/BaseProductTile/BaseProductTile.d.ts +1 -0
  41. package/mobile/bundle/ui-kit/BaseTile/BaseTile.d.ts +1 -0
  42. package/mobile/dist/components/Blocks.js +0 -4
  43. package/mobile/dist/components/Blocks.js.map +1 -1
  44. package/mobile/dist/components/ProductBlock/ProductBlock.js +1 -13
  45. package/mobile/dist/components/ProductBlock/ProductBlock.js.map +1 -1
  46. package/mobile/dist/model/JSXBlock.d.ts +2 -2
  47. package/mobile/dist/ui-kit/BaseProductTile/BaseProductTile.d.ts +1 -0
  48. package/mobile/dist/ui-kit/BaseProductTile/BaseProductTile.js +2 -2
  49. package/mobile/dist/ui-kit/BaseProductTile/BaseProductTile.js.map +1 -1
  50. package/mobile/dist/ui-kit/BaseTile/BaseTile.d.ts +1 -0
  51. package/mobile/dist/ui-kit/BaseTile/BaseTile.js +16 -5
  52. package/mobile/dist/ui-kit/BaseTile/BaseTile.js.map +1 -1
  53. package/mobile/lib/common.css +1 -1
  54. package/mobile/lib/components/Blocks.js +0 -4
  55. package/mobile/lib/components/Blocks.js.map +1 -1
  56. package/mobile/lib/components/ProductBlock/ProductBlock.js +2 -14
  57. package/mobile/lib/components/ProductBlock/ProductBlock.js.map +1 -1
  58. package/mobile/lib/model/JSXBlock.d.ts +2 -2
  59. package/mobile/lib/ui-kit/BaseProductTile/BaseProductTile.d.ts +1 -0
  60. package/mobile/lib/ui-kit/BaseProductTile/BaseProductTile.js +2 -2
  61. package/mobile/lib/ui-kit/BaseProductTile/BaseProductTile.js.map +1 -1
  62. package/mobile/lib/ui-kit/BaseTile/BaseTile.d.ts +1 -0
  63. package/mobile/lib/ui-kit/BaseTile/BaseTile.js +16 -5
  64. package/mobile/lib/ui-kit/BaseTile/BaseTile.js.map +1 -1
  65. package/mobile/src/common.css +4 -0
  66. package/mobile/src/components/Blocks.ts +0 -4
  67. package/mobile/src/components/ProductBlock/ProductBlock.tsx +13 -32
  68. package/mobile/src/model/JSXBlock.ts +2 -2
  69. package/mobile/src/ui-kit/BaseProductTile/BaseProductTile.tsx +5 -1
  70. package/mobile/src/ui-kit/BaseTile/BaseTile.tsx +48 -35
  71. package/package.json +1 -1
  72. package/src/common.css +4 -0
  73. package/src/components/Blocks.mobile.ts +0 -4
  74. package/src/components/Blocks.ts +0 -4
  75. package/src/components/DepositFiltration/DepositFiltration.fixture.mobile.tsx +5 -5
  76. package/src/components/DepositFiltration/DepositFiltration.fixture.tsx +5 -5
  77. package/src/components/HorizontalLayout/HorizontalLayout.fixture.tsx +15 -15
  78. package/src/components/MortgageFiltration/MortgageFiltration.fixture.mobile.tsx +8 -8
  79. package/src/components/MortgageFiltration/MortgageFiltration.fixture.tsx +8 -8
  80. package/src/components/ProductBlock/ProductBlock.fixture.mobile.tsx +41 -0
  81. package/src/components/ProductBlock/ProductBlock.fixture.tsx +40 -0
  82. package/src/components/ProductBlock/ProductBlock.tsx +13 -32
  83. package/src/components/SwipeListControlBlock/SwipeListControlBlock.fixture.mobile.tsx +9 -9
  84. package/src/components/SwipeListControlBlock/SwipeListControlBlock.fixture.tsx +11 -11
  85. package/src/components/VerticalLayout/VerticalLayout.fixture.mobile.tsx +3 -3
  86. package/src/components/VerticalLayout/VerticalLayout.fixture.tsx +9 -10
  87. package/src/model/JSXBlock.ts +2 -2
  88. package/src/ui-kit/BaseProductTile/BaseProductTile.tsx +5 -1
  89. package/src/ui-kit/BaseTile/BaseTile.tsx +48 -35
  90. package/bundle/components/ProductTile/ProductTile.d.ts +0 -5
  91. package/bundle/components/ProductTile/ProductTileContent.d.ts +0 -7
  92. package/bundle/components/Tile/Tile.d.ts +0 -5
  93. package/bundle/components/Tile/TileContent.d.ts +0 -6
  94. package/dist/components/ProductTile/ProductTile.d.ts +0 -5
  95. package/dist/components/ProductTile/ProductTile.js +0 -9
  96. package/dist/components/ProductTile/ProductTile.js.map +0 -1
  97. package/dist/components/ProductTile/ProductTileContent.d.ts +0 -7
  98. package/dist/components/ProductTile/ProductTileContent.js +0 -2
  99. package/dist/components/ProductTile/ProductTileContent.js.map +0 -1
  100. package/dist/components/Tile/Tile.d.ts +0 -5
  101. package/dist/components/Tile/Tile.js +0 -8
  102. package/dist/components/Tile/Tile.js.map +0 -1
  103. package/dist/components/Tile/TileContent.d.ts +0 -6
  104. package/dist/components/Tile/TileContent.js +0 -2
  105. package/dist/components/Tile/TileContent.js.map +0 -1
  106. package/lib/components/ProductTile/ProductTile.d.ts +0 -5
  107. package/lib/components/ProductTile/ProductTile.fixture.d.ts +0 -17
  108. package/lib/components/ProductTile/ProductTile.fixture.mobile.d.ts +0 -16
  109. package/lib/components/ProductTile/ProductTile.js +0 -7
  110. package/lib/components/ProductTile/ProductTile.js.map +0 -1
  111. package/lib/components/ProductTile/ProductTileContent.d.ts +0 -7
  112. package/lib/components/ProductTile/ProductTileContent.js +0 -2
  113. package/lib/components/ProductTile/ProductTileContent.js.map +0 -1
  114. package/lib/components/Tile/Tile.d.ts +0 -5
  115. package/lib/components/Tile/Tile.fixture.d.ts +0 -15
  116. package/lib/components/Tile/Tile.fixture.mobile.d.ts +0 -9
  117. package/lib/components/Tile/Tile.js +0 -6
  118. package/lib/components/Tile/Tile.js.map +0 -1
  119. package/lib/components/Tile/TileContent.d.ts +0 -6
  120. package/lib/components/Tile/TileContent.js +0 -2
  121. package/lib/components/Tile/TileContent.js.map +0 -1
  122. package/mobile/bundle/components/ProductTile/ProductTile.d.ts +0 -5
  123. package/mobile/bundle/components/ProductTile/ProductTileContent.d.ts +0 -7
  124. package/mobile/bundle/components/Tile/Tile.d.ts +0 -5
  125. package/mobile/bundle/components/Tile/TileContent.d.ts +0 -6
  126. package/mobile/dist/components/ProductTile/ProductTile.d.ts +0 -5
  127. package/mobile/dist/components/ProductTile/ProductTile.js +0 -9
  128. package/mobile/dist/components/ProductTile/ProductTile.js.map +0 -1
  129. package/mobile/dist/components/ProductTile/ProductTileContent.d.ts +0 -7
  130. package/mobile/dist/components/ProductTile/ProductTileContent.js +0 -2
  131. package/mobile/dist/components/ProductTile/ProductTileContent.js.map +0 -1
  132. package/mobile/dist/components/Tile/Tile.d.ts +0 -5
  133. package/mobile/dist/components/Tile/Tile.js +0 -8
  134. package/mobile/dist/components/Tile/Tile.js.map +0 -1
  135. package/mobile/dist/components/Tile/TileContent.d.ts +0 -6
  136. package/mobile/dist/components/Tile/TileContent.js +0 -2
  137. package/mobile/dist/components/Tile/TileContent.js.map +0 -1
  138. package/mobile/lib/components/ProductTile/ProductTile.d.ts +0 -5
  139. package/mobile/lib/components/ProductTile/ProductTile.js +0 -7
  140. package/mobile/lib/components/ProductTile/ProductTile.js.map +0 -1
  141. package/mobile/lib/components/ProductTile/ProductTileContent.d.ts +0 -7
  142. package/mobile/lib/components/ProductTile/ProductTileContent.js +0 -2
  143. package/mobile/lib/components/ProductTile/ProductTileContent.js.map +0 -1
  144. package/mobile/lib/components/Tile/Tile.d.ts +0 -5
  145. package/mobile/lib/components/Tile/Tile.js +0 -6
  146. package/mobile/lib/components/Tile/Tile.js.map +0 -1
  147. package/mobile/lib/components/Tile/TileContent.d.ts +0 -6
  148. package/mobile/lib/components/Tile/TileContent.js +0 -2
  149. package/mobile/lib/components/Tile/TileContent.js.map +0 -1
  150. package/mobile/src/components/ProductTile/ProductTile.example.json +0 -44
  151. package/mobile/src/components/ProductTile/ProductTile.tsx +0 -40
  152. package/mobile/src/components/ProductTile/ProductTile.ui.json +0 -17
  153. package/mobile/src/components/ProductTile/ProductTileContent.ts +0 -10
  154. package/mobile/src/components/Tile/Tile.example.json +0 -28
  155. package/mobile/src/components/Tile/Tile.tsx +0 -23
  156. package/mobile/src/components/Tile/Tile.ui.json +0 -17
  157. package/mobile/src/components/Tile/TileContent.ts +0 -7
  158. package/src/components/ProductTile/ProductTile.example.json +0 -44
  159. package/src/components/ProductTile/ProductTile.fixture.mobile.tsx +0 -217
  160. package/src/components/ProductTile/ProductTile.fixture.tsx +0 -227
  161. package/src/components/ProductTile/ProductTile.tsx +0 -40
  162. package/src/components/ProductTile/ProductTile.ui.json +0 -17
  163. package/src/components/ProductTile/ProductTileContent.ts +0 -10
  164. package/src/components/Tile/Tile.example.json +0 -28
  165. package/src/components/Tile/Tile.fixture.mobile.tsx +0 -48
  166. package/src/components/Tile/Tile.fixture.tsx +0 -146
  167. package/src/components/Tile/Tile.tsx +0 -23
  168. package/src/components/Tile/Tile.ui.json +0 -17
  169. package/src/components/Tile/TileContent.ts +0 -7
@@ -2,7 +2,7 @@ import '../../setup-fixture';
2
2
 
3
3
  import { type BlockRendererOptions } from '../../BlockRenderer/BlockRendererOptions';
4
4
  import { Blocks } from '../Blocks';
5
- import { PRODUCT_TILE } from '../ProductTile/ProductTile.fixture';
5
+ import { PRODUCT_BLOCK_WITH_IMAGE } from '../ProductBlock/ProductBlock.fixture';
6
6
  import { MortgageFiltration } from './MortgageFiltration';
7
7
  import {
8
8
  type MortgageFiltrationContent,
@@ -46,7 +46,7 @@ const CATEGORY_SALARY = {
46
46
  };
47
47
 
48
48
  const generateBlock = (...presets: any[]) => ({
49
- type: 'ProductTile',
49
+ type: 'ProductBlock',
50
50
  style: ['col-span-6'],
51
51
  content: { ...presets.reduce((acc, p) => ({ ...acc, ...p })) },
52
52
  });
@@ -155,42 +155,42 @@ export default {
155
155
  type: 'MortgageFiltration',
156
156
  blocks: [
157
157
  generateBlock(
158
- PRODUCT_TILE,
158
+ PRODUCT_BLOCK_WITH_IMAGE,
159
159
  PROPERTY_APARTMENT,
160
160
  STAGE_IN_PROGRESS,
161
161
  EXTRA_MORTGAGE,
162
162
  CATEGORY_IT,
163
163
  ),
164
164
  generateBlock(
165
- PRODUCT_TILE,
165
+ PRODUCT_BLOCK_WITH_IMAGE,
166
166
  PROPERTY_APARTMENT,
167
167
  STAGE_BUILT,
168
168
  EXTRA_CHILDREN,
169
169
  CATEGORY_SALARY,
170
170
  ),
171
171
  generateBlock(
172
- PRODUCT_TILE,
172
+ PRODUCT_BLOCK_WITH_IMAGE,
173
173
  PROPERTY_FLAT,
174
174
  STAGE_IN_PROGRESS,
175
175
  EXTRA_MORTGAGE,
176
176
  CATEGORY_SALARY,
177
177
  ),
178
178
  generateBlock(
179
- PRODUCT_TILE,
179
+ PRODUCT_BLOCK_WITH_IMAGE,
180
180
  PROPERTY_FLAT,
181
181
  STAGE_BUILT,
182
182
  EXTRA_MORTGAGE,
183
183
  CATEGORY_SALARY,
184
184
  ),
185
185
  generateBlock(
186
- PRODUCT_TILE,
186
+ PRODUCT_BLOCK_WITH_IMAGE,
187
187
  PROPERTY_APARTMENT,
188
188
  STAGE_BUILT,
189
189
  EXTRA_CHILDREN,
190
190
  CATEGORY_IT,
191
191
  ),
192
192
  generateBlock(
193
- PRODUCT_TILE,
193
+ PRODUCT_BLOCK_WITH_IMAGE,
194
194
  PROPERTY_HOUSE,
195
195
  STAGE_BUILT,
196
196
  EXTRA_MORTGAGE,
@@ -3,6 +3,7 @@ import '../../setup-fixture';
3
3
  import { type ComplexBenefitContent } from '../../ui-kit/BenefitItem/BenefitItemContent';
4
4
  import { type ButtonContent } from '../../ui-kit/Button/ButtonContent';
5
5
  import { ProductBlock } from './ProductBlock';
6
+ import { type ProductBlockContent } from './ProductBlockContent';
6
7
 
7
8
  const title = 'Кредит до 5 000 000 Р\nбез залога и поручителей';
8
9
  const description =
@@ -50,6 +51,12 @@ const benefits: ComplexBenefitContent[] = [
50
51
  },
51
52
  ];
52
53
 
54
+ const benefit: ComplexBenefitContent = {
55
+ type: 'default',
56
+ label: 'до 5 млн Р',
57
+ description: 'Кредитный лимит',
58
+ };
59
+
53
60
  const buttons: ButtonContent[] = [
54
61
  {
55
62
  href: 'https://rshb.ru',
@@ -73,6 +80,40 @@ const items = [
73
80
 
74
81
  const props = { title, description, image, buttons };
75
82
 
83
+ export const PRODUCT_BLOCK_WITH_IMAGE: ProductBlockContent = {
84
+ title: 'Акция! “Кредит На все, что хочется!”',
85
+ headlineVersion: 'S',
86
+ description: 'Потребительский кредит на любые цели, без залога и поручительства',
87
+ benefits: [
88
+ benefit,
89
+ { ...benefit, label: 'от 12,5%', description: 'Процентная ставка' },
90
+ {
91
+ ...benefit,
92
+ label: 'до 5 лет',
93
+ description: 'Срок кредитования',
94
+ },
95
+ ],
96
+ buttons: [
97
+ {
98
+ text: 'Подробнее',
99
+ href: '/credit-cards',
100
+ version: 'secondary',
101
+ },
102
+ ],
103
+ image: {
104
+ src: 'card-with-diamond.png',
105
+ alt: 'Кредиты в РСХБ',
106
+ format: 'webp',
107
+ size: {
108
+ height: 200,
109
+ width: 200,
110
+ },
111
+ },
112
+ isTabularBenefits: true,
113
+ isFullWidthTitle: true,
114
+ imageOptions: { isImageSecondary: true },
115
+ };
116
+
76
117
  export default {
77
118
  default: (
78
119
  <div className="container grid grid-cols-12">
@@ -36,6 +36,12 @@ const benefits: ComplexBenefitContent[] = [
36
36
  },
37
37
  ];
38
38
 
39
+ const benefit: ComplexBenefitContent = {
40
+ type: 'default',
41
+ label: 'до 5 млн Р',
42
+ description: 'Кредитный лимит',
43
+ };
44
+
39
45
  const buttons: ButtonContent[] = [
40
46
  {
41
47
  href: 'https://rshb.ru',
@@ -66,6 +72,40 @@ const items = [
66
72
  'Расходы для бизнеса на УСН 15% позволят снизить налоговую базу',
67
73
  ];
68
74
 
75
+ export const PRODUCT_BLOCK_WITH_IMAGE: ProductBlockContent = {
76
+ title: 'Акция! “Кредит На все, что хочется!”',
77
+ headlineVersion: 'S',
78
+ description: 'Потребительский кредит на любые цели, без залога и поручительства',
79
+ benefits: [
80
+ benefit,
81
+ { ...benefit, label: 'от 12,5%', description: 'Процентная ставка' },
82
+ {
83
+ ...benefit,
84
+ label: 'до 5 лет',
85
+ description: 'Срок кредитования',
86
+ },
87
+ ],
88
+ buttons: [
89
+ {
90
+ text: 'Подробнее',
91
+ href: '/credit-cards',
92
+ version: 'secondary',
93
+ },
94
+ ],
95
+ image: {
96
+ src: 'card-with-diamond.png',
97
+ alt: 'Кредиты в РСХБ',
98
+ format: 'webp',
99
+ size: {
100
+ height: 242,
101
+ width: 242,
102
+ },
103
+ },
104
+ isTabularBenefits: true,
105
+ isFullWidthTitle: true,
106
+ imageOptions: { isImageSecondary: true },
107
+ };
108
+
69
109
  export const PRODUCT_BLOCK: ProductBlockContent = {
70
110
  title: 'Оплата проходит в 180 странах мира',
71
111
  headlineVersion: 'L',
@@ -1,44 +1,25 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
- import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
3
- import { useRouter } from '../../hooks/useRouter';
4
2
  import { type UniBlockProps } from '../../model/JSXBlock';
5
3
  import { BaseProductTile } from '../../ui-kit/BaseProductTile/BaseProductTile';
6
4
  import { BlockWrapper } from '../../ui-kit/BlockWrapper';
7
- import { type PreventableEvent } from '../../ui-kit/PreventableEvent';
8
5
  import { getBorderStyle } from '../../utils/getBorderStyle';
9
6
  import { style } from '../../utils/style';
10
7
  import { type ProductBlockContent } from './ProductBlockContent';
11
- import { renderBackwardButton } from './renderBackwardButton';
12
8
 
13
9
  export interface ProductBlockProps extends UniBlockProps, ProductBlockContent {}
14
10
 
15
11
  export const ProductBlock = JSX<ProductBlockProps>(
16
- ({ className, padding, backwardButton, showBorder, ...rest }) => {
17
- const router = useRouter();
18
- const handleClick = useCallback((ev?: PreventableEvent) => {
19
- ev?.preventDefault();
20
- router.back();
21
- }, []);
22
-
23
- return (
24
- <BlockWrapper
25
- className={style(
26
- 'overflow-hidden flex flex-col gap-3xl box-border',
27
- getBorderStyle(showBorder),
28
- className,
29
- )}
30
- defaultPadding="p-6xl"
31
- padding={padding}
32
- {...rest}
33
- >
34
- {backwardButton
35
- ? renderBackwardButton(
36
- !rest.version || rest.version === 'primary' ? 'primary' : 'white',
37
- handleClick,
38
- )
39
- : null}
40
- <BaseProductTile className="grow h-full" {...rest} />
41
- </BlockWrapper>
42
- );
43
- },
12
+ ({ className, padding, showBorder, ...rest }) => (
13
+ <BlockWrapper
14
+ className={style(
15
+ 'overflow-hidden flex flex-col gap-3xl box-border',
16
+ getBorderStyle(showBorder),
17
+ className,
18
+ )}
19
+ padding="p-0"
20
+ {...rest}
21
+ >
22
+ <BaseProductTile defaultPadding="p-6xl" padding={padding} className="grow h-full" {...rest} />
23
+ </BlockWrapper>
24
+ ),
44
25
  );
@@ -2,7 +2,7 @@ import '../../setup-fixture';
2
2
 
3
3
  import { type BlockRendererOptions } from '../../BlockRenderer/BlockRendererOptions';
4
4
  import { Blocks } from '../Blocks';
5
- import { PRODUCT_TILE } from '../ProductTile/ProductTile.fixture';
5
+ import { PRODUCT_BLOCK_WITH_IMAGE } from '../ProductBlock/ProductBlock.fixture';
6
6
  import { SwipeListControlBlock } from './SwipeListControlBlock';
7
7
 
8
8
  const options = {
@@ -17,10 +17,10 @@ export default {
17
17
  block={{
18
18
  type: 'SwipeListControlBlock',
19
19
  blocks: [
20
- { type: 'ProductTile', content: PRODUCT_TILE },
21
- { type: 'ProductTile', content: PRODUCT_TILE },
22
- { type: 'ProductTile', content: PRODUCT_TILE },
23
- { type: 'ProductTile', content: PRODUCT_TILE },
20
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
21
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
22
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
23
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
24
24
  ],
25
25
  }}
26
26
  showDots={true}
@@ -36,8 +36,8 @@ export default {
36
36
  block={{
37
37
  type: 'SwipeListControlBlock',
38
38
  blocks: [
39
- { type: 'ProductTile', content: { ...PRODUCT_TILE, version: '' } },
40
- { type: 'ProductTile', content: { ...PRODUCT_TILE, version: '' } },
39
+ { type: 'ProductBlock', content: { ...PRODUCT_BLOCK_WITH_IMAGE, version: '' } },
40
+ { type: 'ProductBlock', content: { ...PRODUCT_BLOCK_WITH_IMAGE, version: '' } },
41
41
  ],
42
42
  }}
43
43
  listType="vertical-list"
@@ -53,8 +53,8 @@ export default {
53
53
  block={{
54
54
  type: 'SwipeListControlBlock',
55
55
  blocks: [
56
- { type: 'ProductTile', content: { ...PRODUCT_TILE, version: '' } },
57
- { type: 'ProductTile', content: { ...PRODUCT_TILE, version: '' } },
56
+ { type: 'ProductBlock', content: { ...PRODUCT_BLOCK_WITH_IMAGE, version: '' } },
57
+ { type: 'ProductBlock', content: { ...PRODUCT_BLOCK_WITH_IMAGE, version: '' } },
58
58
  ],
59
59
  }}
60
60
  listType="vertical-list"
@@ -2,7 +2,7 @@ import '../../setup-fixture';
2
2
 
3
3
  import { type BlockRendererOptions } from '../../BlockRenderer/BlockRendererOptions';
4
4
  import { Blocks } from '../Blocks';
5
- import { PRODUCT_TILE } from '../ProductTile/ProductTile.fixture';
5
+ import { PRODUCT_BLOCK_WITH_IMAGE } from '../ProductBlock/ProductBlock.fixture';
6
6
  import { SwipeListControlBlock } from './SwipeListControlBlock';
7
7
 
8
8
  const options = {
@@ -17,8 +17,8 @@ export default {
17
17
  block={{
18
18
  type: 'SwipeListControlBlock',
19
19
  blocks: [
20
- { type: 'ProductTile', content: PRODUCT_TILE },
21
- { type: 'ProductTile', content: PRODUCT_TILE },
20
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
21
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
22
22
  ],
23
23
  }}
24
24
  listType="vertical-list"
@@ -33,8 +33,8 @@ export default {
33
33
  block={{
34
34
  type: 'SwipeListControlBlock',
35
35
  blocks: [
36
- { type: 'ProductTile', content: { ...PRODUCT_TILE, version: '' } },
37
- { type: 'ProductTile', content: { ...PRODUCT_TILE, version: '' } },
36
+ { type: 'ProductBlock', content: { ...PRODUCT_BLOCK_WITH_IMAGE, version: '' } },
37
+ { type: 'ProductBlock', content: { ...PRODUCT_BLOCK_WITH_IMAGE, version: '' } },
38
38
  ],
39
39
  }}
40
40
  listType="vertical-list"
@@ -50,8 +50,8 @@ export default {
50
50
  block={{
51
51
  type: 'SwipeListControlBlock',
52
52
  blocks: [
53
- { type: 'ProductTile', content: { ...PRODUCT_TILE, version: '' } },
54
- { type: 'ProductTile', content: { ...PRODUCT_TILE, version: '' } },
53
+ { type: 'ProductBlock', content: { ...PRODUCT_BLOCK_WITH_IMAGE, version: '' } },
54
+ { type: 'ProductBlock', content: { ...PRODUCT_BLOCK_WITH_IMAGE, version: '' } },
55
55
  ],
56
56
  }}
57
57
  listType="vertical-list"
@@ -68,10 +68,10 @@ export default {
68
68
  block={{
69
69
  type: 'SwipeListControlBlock',
70
70
  blocks: [
71
- { type: 'ProductTile', content: PRODUCT_TILE },
72
- { type: 'ProductTile', content: PRODUCT_TILE },
73
- { type: 'ProductTile', content: PRODUCT_TILE },
74
- { type: 'ProductTile', content: PRODUCT_TILE },
71
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
72
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
73
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
74
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
75
75
  ],
76
76
  }}
77
77
  listType="vertical-list"
@@ -4,7 +4,7 @@ import { type BlockRendererOptions } from '../../BlockRenderer/BlockRendererOpti
4
4
  import { type Picture } from '../../model/Picture';
5
5
  import { Blocks } from '../Blocks';
6
6
  import { type LinkDocsContent } from '../LinkDocs/LinkDocsContent';
7
- import { PRODUCT_TILE } from '../ProductTile/ProductTile.fixture';
7
+ import { PRODUCT_BLOCK_WITH_IMAGE } from '../ProductBlock/ProductBlock.fixture';
8
8
  import { RICH_TEXT_SEPARATOR } from '../RichTextBlock/RichTextBlock.fixture';
9
9
  import { type TextBlockContent } from '../TextBlock/TextBlockContent';
10
10
  import { VerticalLayout } from './VerticalLayout';
@@ -50,8 +50,8 @@ export default {
50
50
  block={{
51
51
  type: 'VerticalLayout',
52
52
  blocks: [
53
- { type: 'ProductTile', content: PRODUCT_TILE },
54
- { type: 'ProductTile', content: PRODUCT_TILE },
53
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
54
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
55
55
  ],
56
56
  }}
57
57
  options={options}
@@ -5,8 +5,8 @@ import { Headline } from '../Headline/Headline';
5
5
  import { HorizontalLayout } from '../HorizontalLayout/HorizontalLayout';
6
6
  import { type LinkDocsContent } from '../LinkDocs/LinkDocsContent';
7
7
  import { ProductBlock } from '../ProductBlock/ProductBlock';
8
+ import { PRODUCT_BLOCK_WITH_IMAGE } from '../ProductBlock/ProductBlock.fixture';
8
9
  import { type ProductBlockContent } from '../ProductBlock/ProductBlockContent';
9
- import { PRODUCT_TILE } from '../ProductTile/ProductTile.fixture';
10
10
  import { RICH_TEXT_SEPARATOR } from '../RichTextBlock/RichTextBlock.fixture';
11
11
  import { TEXT_BLOCK } from '../TextBlock/TextBlock.fixture';
12
12
  import { VerticalLayout } from './VerticalLayout';
@@ -78,8 +78,8 @@ export default {
78
78
  block={{
79
79
  type: 'VerticalLayout',
80
80
  blocks: [
81
- { type: 'ProductTile', content: PRODUCT_TILE },
82
- { type: 'ProductTile', content: PRODUCT_TILE },
81
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
82
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
83
83
  ],
84
84
  }}
85
85
  options={options}
@@ -94,8 +94,8 @@ export default {
94
94
  block={{
95
95
  type: 'VerticalLayout',
96
96
  blocks: [
97
- { type: 'ProductTile', content: PRODUCT_TILE },
98
- { type: 'ProductTile', content: PRODUCT_TILE },
97
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
98
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
99
99
  ],
100
100
  }}
101
101
  options={options}
@@ -111,8 +111,8 @@ export default {
111
111
  block={{
112
112
  type: 'VerticalLayout',
113
113
  blocks: [
114
- { type: 'ProductTile', content: PRODUCT_TILE },
115
- { type: 'ProductTile', content: PRODUCT_TILE },
114
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
115
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
116
116
  ],
117
117
  }}
118
118
  options={options}
@@ -129,15 +129,14 @@ export default {
129
129
  block={{
130
130
  type: 'VerticalLayout',
131
131
  blocks: [
132
- { type: 'ProductTile', content: PRODUCT_TILE },
133
- { type: 'ProductTile', content: PRODUCT_TILE },
132
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
133
+ { type: 'ProductBlock', content: PRODUCT_BLOCK_WITH_IMAGE },
134
134
  ],
135
135
  }}
136
136
  options={options}
137
137
  />
138
138
  </div>
139
139
  ),
140
-
141
140
  rollup: (
142
141
  <div className="container grid grid-cols-12">
143
142
  <VerticalLayout
@@ -9,9 +9,9 @@ import { type VNode } from './VNode';
9
9
  /**
10
10
  * @title Внутренний отступ
11
11
  * @default ""
12
- * @enumNames ["По умолчанию", "Большой", "Средний", "Маленький", "Оч. маленький", "Нулевой"]
12
+ * @enumNames ["По умолчанию", "Оч. Большой", "Большой", "Средний", "Маленький", "Оч. маленький", "Нулевой"]
13
13
  */
14
- export type UniBlockPadding = '' | 'p-3xl' | 'p-xl' | 'p-m' | 'p-xs' | 'p-0';
14
+ export type UniBlockPadding = '' | 'p-6xl' | 'p-3xl' | 'p-xl' | 'p-m' | 'p-xs' | 'p-0';
15
15
 
16
16
  export interface UniBlockContent {
17
17
  version?: BlockVersion;
@@ -14,7 +14,9 @@ import { Tags } from '../Tags/Tags';
14
14
  import { type TextAlign } from '../Text/TextProps';
15
15
  import { type BaseProductTileContent } from './BaseProductTileContent';
16
16
 
17
- interface BaseProductTileProps extends UniBlockProps, BaseProductTileContent {}
17
+ interface BaseProductTileProps extends UniBlockProps, BaseProductTileContent {
18
+ backwardButton?: boolean;
19
+ }
18
20
 
19
21
  export const BaseProductTile = JSX<BaseProductTileProps>(
20
22
  ({
@@ -43,6 +45,7 @@ export const BaseProductTile = JSX<BaseProductTileProps>(
43
45
  isImageAlwaysOnRight,
44
46
  isImageSecondary = false,
45
47
  } = {},
48
+ backwardButton,
46
49
  children,
47
50
  }) => {
48
51
  const img = image?.src ? <Img image={image} /> : null;
@@ -62,6 +65,7 @@ export const BaseProductTile = JSX<BaseProductTileProps>(
62
65
  imageAlign={imageAlign}
63
66
  isImageAlwaysOnRight={isImageAlwaysOnRight}
64
67
  buttons={renderButtonsSection(buttons)}
68
+ backwardButton={backwardButton}
65
69
  >
66
70
  <div className="flex flex-col sm:gap-xl gap-4xl">
67
71
  {filteredBenefits?.length ? (
@@ -1,8 +1,12 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
3
+ import { renderBackwardButton } from '../../components/ProductBlock/renderBackwardButton';
4
+ import { useRouter } from '../../hooks/useRouter';
2
5
  import { type Align } from '../../model/Align';
3
6
  import { type UniBlockProps } from '../../model/JSXBlock';
4
7
  import { type VNode } from '../../model/VNode';
5
8
  import { style } from '../../utils/style';
9
+ import { type PreventableEvent } from '../PreventableEvent';
6
10
 
7
11
  interface BaseTileProps extends UniBlockProps {
8
12
  title?: VNode;
@@ -13,6 +17,7 @@ interface BaseTileProps extends UniBlockProps {
13
17
  buttons?: VNode;
14
18
  isImageAlwaysOnRight?: boolean;
15
19
  isImageSecondary?: boolean;
20
+ backwardButton?: boolean;
16
21
  }
17
22
 
18
23
  const imageAlignmentMap: Record<Align, string> = {
@@ -24,6 +29,7 @@ const imageAlignmentMap: Record<Align, string> = {
24
29
  export const BaseTile = JSX<BaseTileProps>(
25
30
  ({
26
31
  className,
32
+ version = 'primary',
27
33
  defaultPadding,
28
34
  padding,
29
35
  title = '',
@@ -34,55 +40,62 @@ export const BaseTile = JSX<BaseTileProps>(
34
40
  imageAlign,
35
41
  isImageAlwaysOnRight = false,
36
42
  isImageSecondary = false,
43
+ backwardButton,
37
44
  children,
38
- }) => (
39
- <div
40
- className={style(
41
- 'relative flex flex-col gap-3xl overflow-hidden',
42
- padding || defaultPadding,
43
- className,
44
- )}
45
- >
46
- {title ? <div className="relative">{title}</div> : null}
47
- <div
48
- className={style(
49
- 'grow relative flex flex-col @xl:flex-row gap-3xl',
50
- leftImage ? 'self-start' : '',
51
- )}
52
- >
53
- {renderImageContainer(leftImage, { imageAlign, className: 'mx-auto' })}
45
+ }) => {
46
+ const router = useRouter();
47
+ const handleClick = useCallback((ev?: PreventableEvent) => {
48
+ ev?.preventDefault();
49
+ router.back();
50
+ }, []);
51
+
52
+ return (
53
+ <div className={getStyle(padding, defaultPadding, className)}>
54
+ {backwardButton ? renderBackwardButton(version, handleClick) : null}
55
+ {title ? <div className="relative">{title}</div> : null}
54
56
  <div
55
57
  className={style(
56
- 'grid gap-3xl',
57
- rightImage ? '@xl:grid-cols-2' : '',
58
- leftImage ? '' : 'grow',
58
+ 'grow relative flex flex-col @xl:flex-row gap-3xl',
59
+ leftImage ? 'self-start' : '',
59
60
  )}
60
61
  >
61
- <div className="grow space-y-lg min-w-fit">
62
- {insetTitle}
63
- {children}
62
+ {renderImageContainer(leftImage, { imageAlign, className: 'mx-auto' })}
63
+ <div
64
+ className={style(
65
+ 'grid gap-3xl',
66
+ rightImage ? '@xl:grid-cols-2' : '',
67
+ leftImage ? '' : 'grow',
68
+ )}
69
+ >
70
+ <div className="grow space-y-lg min-w-fit">
71
+ {insetTitle}
72
+ {children}
73
+ </div>
74
+ {renderImageContainer(rightImage, {
75
+ className: style(
76
+ '@xl:justify-self-end @xl:col-start-2',
77
+ buttons ? rowSpanStyle(isImageAlwaysOnRight) : '',
78
+ positionStyle(isImageAlwaysOnRight),
79
+ imageSecondaryStyle(isImageSecondary),
80
+ ),
81
+ imageAlign,
82
+ })}
83
+ {renderButtons(buttons)}
64
84
  </div>
65
- {renderImageContainer(rightImage, {
66
- className: style(
67
- '@xl:justify-self-end @xl:col-start-2',
68
- buttons ? rowSpanStyle(isImageAlwaysOnRight) : '',
69
- positionStyle(isImageAlwaysOnRight),
70
- imageSecondaryStyle(isImageSecondary),
71
- ),
72
- imageAlign,
73
- })}
74
- {renderButtons(buttons)}
75
85
  </div>
76
86
  </div>
77
- </div>
78
- ),
87
+ );
88
+ },
79
89
  );
80
90
 
91
+ const getStyle = (padding = '', defaultPadding = '', className = '') =>
92
+ style('relative flex flex-col gap-3xl overflow-hidden', padding || defaultPadding, className);
93
+
81
94
  const rowSpanStyle = (isImageAlwaysOnRight: boolean) =>
82
95
  isImageAlwaysOnRight ? 'row-span-2' : '@xl:row-span-2';
83
96
 
84
97
  const positionStyle = (isImageAlwaysOnRight: boolean) =>
85
- isImageAlwaysOnRight ? 'justify-self-end col-start-2 self-center' : '';
98
+ isImageAlwaysOnRight ? 'col-start-2 self-center' : '';
86
99
 
87
100
  const renderButtons = (buttons: VNode) =>
88
101
  buttons ? <div className="self-end">{buttons}</div> : null;
@@ -1,5 +0,0 @@
1
- import { type UniBlockProps } from '../../model/JSXBlock';
2
- import { type ProductTileContent } from './ProductTileContent';
3
- export interface ProductTileProps extends ProductTileContent, UniBlockProps {
4
- }
5
- export declare const ProductTile: import("@redneckz/uni-jsx").UNIComponent<ProductTileProps, any, any>;
@@ -1,7 +0,0 @@
1
- import { type AdditionalDescriptionProps } from '../../model/HeadlineType';
2
- import { type UniBlockContent } from '../../model/JSXBlock';
3
- import { type BaseProductTileContent } from '../../ui-kit/BaseProductTile/BaseProductTileContent';
4
- /**
5
- * @title Продуктовая плитка
6
- */
7
- export declare type ProductTileContent = UniBlockContent & BaseProductTileContent & AdditionalDescriptionProps;
@@ -1,5 +0,0 @@
1
- import { type UniBlockProps } from '../../model/JSXBlock';
2
- import { type TileContent } from './TileContent';
3
- export interface TileProps extends TileContent, UniBlockProps {
4
- }
5
- export declare const Tile: import("@redneckz/uni-jsx").UNIComponent<TileProps, any, any>;
@@ -1,6 +0,0 @@
1
- import { type UniBlockContent } from '../../model/JSXBlock';
2
- import { type BaseProductTileContent } from '../../ui-kit/BaseProductTile/BaseProductTileContent';
3
- /**
4
- * @title Плитка
5
- */
6
- export declare type TileContent = UniBlockContent & BaseProductTileContent;
@@ -1,5 +0,0 @@
1
- import { type UniBlockProps } from '../../model/JSXBlock';
2
- import { type ProductTileContent } from './ProductTileContent';
3
- export interface ProductTileProps extends ProductTileContent, UniBlockProps {
4
- }
5
- export declare const ProductTile: import("@redneckz/uni-jsx").UNIComponent<ProductTileProps, any, any>;
@@ -1,9 +0,0 @@
1
- Object.defineProperty(exports, "__esModule", { value: true });
2
- exports.ProductTile = void 0;
3
- const jsx_runtime_1 = require("@redneckz/uni-jsx/jsx-runtime");
4
- const uni_jsx_1 = require("@redneckz/uni-jsx");
5
- const BaseProductTile_1 = require("../../ui-kit/BaseProductTile/BaseProductTile");
6
- const BlockWrapper_1 = require("../../ui-kit/BlockWrapper");
7
- const Paragraph_1 = require("../../ui-kit/Paragraph/Paragraph");
8
- exports.ProductTile = (0, uni_jsx_1.JSX)(({ className, padding, headlineVersion = 'S', isTabularBenefits = true, additionalDescription, imageOptions, isFullWidthTitle = true, ...rest }) => ((0, jsx_runtime_1.jsx)(BlockWrapper_1.BlockWrapper, { className: className, padding: "p-0", ...rest, children: (0, jsx_runtime_1.jsx)(BaseProductTile_1.BaseProductTile, { className: "h-full", defaultPadding: "p-4xl sm:p-xl", padding: padding, headlineVersion: headlineVersion, isTabularBenefits: isTabularBenefits, imageOptions: { isImageSecondary: true, ...imageOptions }, isFullWidthTitle: isFullWidthTitle, ...rest, children: additionalDescription ? ((0, jsx_runtime_1.jsx)(Paragraph_1.Paragraph, { size: "text-m", font: "font-light", color: "group-data-primary:text-secondary-text", children: additionalDescription })) : null }) })));
9
- //# sourceMappingURL=ProductTile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductTile.js","sourceRoot":"","sources":["../../../src/components/ProductTile/ProductTile.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AAExC,kFAA+E;AAC/E,4DAAyD;AACzD,gEAA6D;AAKhD,QAAA,WAAW,GAAG,IAAA,aAAG,EAC5B,CAAC,EACC,SAAS,EACT,OAAO,EACP,eAAe,GAAG,GAAG,EACrB,iBAAiB,GAAG,IAAI,EACxB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,GAAG,IAAI,EACvB,GAAG,IAAI,EACR,EAAE,EAAE,CAAC,CACJ,uBAAC,2BAAY,IAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAC,KAAK,KAAK,IAAI,YACxD,uBAAC,iCAAe,IACd,SAAS,EAAC,QAAQ,EAClB,cAAc,EAAC,eAAe,EAC9B,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,eAAe,EAChC,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,YAAY,EAAE,EACzD,gBAAgB,EAAE,gBAAgB,KAC9B,IAAI,YAEP,qBAAqB,CAAC,CAAC,CAAC,CACvB,uBAAC,qBAAS,IAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,YAAY,EAAC,KAAK,EAAC,wCAAwC,YACtF,qBAAqB,GACZ,CACb,CAAC,CAAC,CAAC,IAAI,GACQ,GACL,CAChB,CACF,CAAC"}
@@ -1,7 +0,0 @@
1
- import { type AdditionalDescriptionProps } from '../../model/HeadlineType';
2
- import { type UniBlockContent } from '../../model/JSXBlock';
3
- import { type BaseProductTileContent } from '../../ui-kit/BaseProductTile/BaseProductTileContent';
4
- /**
5
- * @title Продуктовая плитка
6
- */
7
- export declare type ProductTileContent = UniBlockContent & BaseProductTileContent & AdditionalDescriptionProps;