@meduza/ui-kit-2 0.1.18 → 0.1.20

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 (86) hide show
  1. package/dist/Cover/Cover.types.d.ts +21 -1
  2. package/dist/DotsOnImage/DotsOnImage.types.d.ts +1 -1
  3. package/dist/Image/Image.types.d.ts +1 -6
  4. package/dist/ListBlock/ListBlock.stories.d.ts +2 -1
  5. package/dist/ListBlock/ListBlock.types.d.ts +7 -1
  6. package/dist/RelatedBlock/RelatedBlock.types.d.ts +14 -1
  7. package/dist/RelatedRichBlock/RelatedRichBlock.stories.d.ts +10 -0
  8. package/dist/RelatedRichBlock/RelatedRichBlock.types.d.ts +4 -0
  9. package/dist/RelatedRichBlock/index.d.ts +3 -0
  10. package/dist/RichTitle/RichTitle.types.d.ts +8 -1
  11. package/dist/SimpleTitle/SimpleTitle.types.d.ts +6 -1
  12. package/dist/SourceBlock/SourceBlock.types.d.ts +12 -1
  13. package/dist/index.d.ts +1 -0
  14. package/dist/types.d.ts +6 -0
  15. package/dist/ui-kit-2.cjs.development.js +97 -7
  16. package/dist/ui-kit-2.cjs.development.js.map +1 -1
  17. package/dist/ui-kit-2.cjs.production.min.js +1 -1
  18. package/dist/ui-kit-2.cjs.production.min.js.map +1 -1
  19. package/dist/ui-kit-2.esm.js +97 -8
  20. package/dist/ui-kit-2.esm.js.map +1 -1
  21. package/dist/ui-kit.css +1240 -1042
  22. package/dist/utils/converCase.d.ts +2 -0
  23. package/dist/utils/generateGradient.d.ts +1 -1
  24. package/package.json +4 -1
  25. package/src/.DS_Store +0 -0
  26. package/src/BookmarkButton/BookmarkButton.test.tsx +17 -4
  27. package/src/Button/Button.module.css +2 -0
  28. package/src/CardTitle/CardTitle.test.tsx +4 -3
  29. package/src/ChapterBlock/ChapterBlock.test.tsx +4 -3
  30. package/src/Cover/Cover.test.tsx +3 -3
  31. package/src/Cover/Cover.types.ts +22 -1
  32. package/src/Cover/index.tsx +1 -1
  33. package/src/DocumentItemsCount/DocumentItemsCount.test.tsx +4 -3
  34. package/src/DotsOnImage/DotsOnImage.test.tsx +4 -2
  35. package/src/DotsOnImage/DotsOnImage.types.ts +1 -1
  36. package/src/EmbedBlock/EmbedBlock.test.tsx +16 -3
  37. package/src/EmbedBlock/index.tsx +1 -1
  38. package/src/GroupedBlock/GroupedBlock.test.tsx +5 -3
  39. package/src/HalfBlock/HalfBlock.test.tsx +4 -3
  40. package/src/Image/Image.test.tsx +3 -0
  41. package/src/Image/Image.types.ts +1 -6
  42. package/src/Image/RenderPicture.tsx +1 -1
  43. package/src/ImportantLead/ImportantLead.test.tsx +10 -8
  44. package/src/ImportantLead/mock.json +6 -0
  45. package/src/Lazy/Lazy.test.tsx +3 -0
  46. package/src/ListBlock/ListBlock.stories.tsx +2 -1
  47. package/src/ListBlock/ListBlock.test.tsx +8 -4
  48. package/src/ListBlock/ListBlock.types.ts +6 -1
  49. package/src/ListBlock/index.tsx +1 -1
  50. package/src/ListBlock/mock.json +1 -1
  51. package/src/MaterialNote/MaterialNote.test.tsx +4 -3
  52. package/src/Meta/Meta.module.css +1 -1
  53. package/src/QuoteBlock/QuoteBlock.test.tsx +4 -3
  54. package/src/RawHtmlBlock/RawHtmlBlock.test.tsx +18 -9
  55. package/src/RawHtmlBlock/mock.json +6 -0
  56. package/src/RelatedBlock/RelatedBlock.test.tsx +4 -3
  57. package/src/RelatedBlock/RelatedBlock.types.ts +14 -1
  58. package/src/RelatedRichBlock/RelatedRichBlock.module.css +165 -0
  59. package/src/RelatedRichBlock/RelatedRichBlock.stories.module.css +12 -0
  60. package/src/RelatedRichBlock/RelatedRichBlock.stories.tsx +55 -0
  61. package/src/RelatedRichBlock/RelatedRichBlock.test.tsx +20 -0
  62. package/src/RelatedRichBlock/RelatedRichBlock.types.ts +4 -0
  63. package/src/RelatedRichBlock/index.tsx +105 -0
  64. package/src/RelatedRichBlock/mock.json +354 -0
  65. package/src/RenderBlocks/RenderBlocks.stories.tsx +4 -1
  66. package/src/RenderBlocks/RenderBlocks.test.tsx +15 -9
  67. package/src/RenderBlocks/mock.json +10 -0
  68. package/src/RichTitle/RichTitle.module.css +37 -7
  69. package/src/RichTitle/RichTitle.test.tsx +4 -3
  70. package/src/RichTitle/RichTitle.types.ts +8 -1
  71. package/src/SimpleBlock/SimpleBlock.test.tsx +16 -9
  72. package/src/SimpleBlock/mock.json +6 -0
  73. package/src/SimpleTitle/SimpleTitle.test.tsx +4 -3
  74. package/src/SimpleTitle/SimpleTitle.types.ts +6 -1
  75. package/src/SourceBlock/SourceBlock.test.tsx +4 -3
  76. package/src/SourceBlock/SourceBlock.types.ts +13 -1
  77. package/src/Spoiler/Spoiler.test.tsx +4 -3
  78. package/src/Table/Table.test.tsx +3 -3
  79. package/src/Timestamp/Timestamp.test.tsx +4 -3
  80. package/src/ToolbarButton/ToolbarButton.test.tsx +8 -3
  81. package/src/_storybook/PreviewWrapper/PreviewWrapper.module.css +3 -1
  82. package/src/index.tsx +1 -0
  83. package/src/types.ts +6 -0
  84. package/src/utils/{toCamel.ts → converCase.ts} +3 -0
  85. package/src/utils/generateGradient.ts +21 -15
  86. package/dist/utils/toCamel.d.ts +0 -1
@@ -0,0 +1,354 @@
1
+ {
2
+ "rich": {
3
+ "type": "related_rich",
4
+ "data": {
5
+ "url": "https://meduza.io/",
6
+ "fallback": {
7
+ "data": {
8
+ "title": "Не богато вышло",
9
+ "related": [
10
+ {
11
+ "title": "«Если кто-нибудь видит меня и слышит, пожалуйста, распространите это видео любым способом! Чтобы я существовал!»",
12
+ "second": "Автор фильма «Котлован» — о том, как сделал его из обращений россиян к Путину",
13
+ "layout": "rich",
14
+ "url": "feature/2018/09/18/na-rossiyskuyu-bolnitsu-pervye-podali-v-sud-za-otkaz-v-poseschenii-umirayuschego-v-reanimatsii-rodstvennika-sud-vstal-na-storonu-medikov",
15
+ "id": "0-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
16
+ }
17
+ ]
18
+ },
19
+ "only_on": "mobile"
20
+ },
21
+ "cover": {
22
+ "ratio": 1.4976958525,
23
+ "layout": "rich",
24
+ "urls": {
25
+ "w325": {
26
+ "1x": "http://meduza.io/image/attachments/images/006/087/556/elarge/E_3uGWnvssXzgtJ05-_Rfw.jpg",
27
+ "2x": "http://meduza.io/image/attachments/images/006/087/556/elarge/E_3uGWnvssXzgtJ05-_Rfw.jpg",
28
+ "1x_webp": "http://meduza.io/impro/MbBIK4vj9YMr8INLi6GMIYF4muqHFCWV0b1rxhhM6aI/fill/0/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODcvNTU2L2VsYXJn/ZS9FXzN1R1dudnNz/WHpndEowNS1fUmZ3/LmpwZw.webp",
29
+ "2x_webp": "http://meduza.io/impro/MbBIK4vj9YMr8INLi6GMIYF4muqHFCWV0b1rxhhM6aI/fill/0/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODcvNTU2L2VsYXJn/ZS9FXzN1R1dudnNz/WHpndEowNS1fUmZ3/LmpwZw.webp"
30
+ },
31
+ "w600": {
32
+ "1x": "http://meduza.io/image/attachments/images/006/087/556/elarge/E_3uGWnvssXzgtJ05-_Rfw.jpg",
33
+ "2x": "http://meduza.io/image/attachments/images/006/087/556/elarge/E_3uGWnvssXzgtJ05-_Rfw.jpg",
34
+ "1x_webp": "http://meduza.io/impro/MbBIK4vj9YMr8INLi6GMIYF4muqHFCWV0b1rxhhM6aI/fill/0/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODcvNTU2L2VsYXJn/ZS9FXzN1R1dudnNz/WHpndEowNS1fUmZ3/LmpwZw.webp",
35
+ "2x_webp": "http://meduza.io/impro/MbBIK4vj9YMr8INLi6GMIYF4muqHFCWV0b1rxhhM6aI/fill/0/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODcvNTU2L2VsYXJn/ZS9FXzN1R1dudnNz/WHpndEowNS1fUmZ3/LmpwZw.webp"
36
+ }
37
+ },
38
+ "tag": "Читайте также"
39
+ },
40
+ "blocks": [
41
+ {
42
+ "type": "rich_title",
43
+ "data": {
44
+ "first": "«Если кто-нибудь видит меня и слышит, пожалуйста, распространите это видео любым способом! Чтобы я существовал!»",
45
+ "second": "Автор фильма «Котлован» — о том, как сделал его из обращений россиян к Путину",
46
+ "as": "h3",
47
+ "featured": false
48
+ },
49
+ "id": "1-7b53ea24bd8ae1cfa59f45e4e4027bdabb5bf9667b97f0a6ed45d6b464c47356"
50
+ },
51
+ {
52
+ "type": "meta",
53
+ "data": {
54
+ "lang": "ru",
55
+ "components": [
56
+ {
57
+ "type": "datetime",
58
+ "datetime": 1600593764,
59
+ "id": "7639a7d1455a1ca907de0fc98a22b017e23f30e7df15b0739c78418848d674b5"
60
+ }
61
+ ],
62
+ "theme": "dark"
63
+ },
64
+ "id": "2-e09585bd2b15e886b22728975010295dae47dd7ace948bc8aa012080f713290d"
65
+ }
66
+ ]
67
+ },
68
+ "only_on": "mobile"
69
+ },
70
+
71
+ "rich_dark": {
72
+ "type": "related_rich",
73
+ "data": {
74
+ "url": "https://meduza.io/",
75
+ "fallback": {
76
+ "data": {
77
+ "title": "Не богато вышло",
78
+ "related": [
79
+ {
80
+ "title": "«Если кто-нибудь видит меня и слышит, пожалуйста, распространите это видео любым способом! Чтобы я существовал!»",
81
+ "second": "Автор фильма «Котлован» — о том, как сделал его из обращений россиян к Путину",
82
+ "layout": "rich",
83
+ "url": "feature/2018/09/18/na-rossiyskuyu-bolnitsu-pervye-podali-v-sud-za-otkaz-v-poseschenii-umirayuschego-v-reanimatsii-rodstvennika-sud-vstal-na-storonu-medikov",
84
+ "id": "0-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
85
+ }
86
+ ]
87
+ },
88
+ "only_on": "desktop"
89
+ },
90
+ "cover": {
91
+ "ratio": 1.4976958525,
92
+ "layout": "rich",
93
+ "urls": {
94
+ "w325": {
95
+ "1x": "http://meduza.io/image/attachments/images/006/087/556/elarge/E_3uGWnvssXzgtJ05-_Rfw.jpg",
96
+ "2x": "http://meduza.io/image/attachments/images/006/087/556/elarge/E_3uGWnvssXzgtJ05-_Rfw.jpg",
97
+ "1x_webp": "http://meduza.io/impro/MbBIK4vj9YMr8INLi6GMIYF4muqHFCWV0b1rxhhM6aI/fill/0/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODcvNTU2L2VsYXJn/ZS9FXzN1R1dudnNz/WHpndEowNS1fUmZ3/LmpwZw.webp",
98
+ "2x_webp": "http://meduza.io/impro/MbBIK4vj9YMr8INLi6GMIYF4muqHFCWV0b1rxhhM6aI/fill/0/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODcvNTU2L2VsYXJn/ZS9FXzN1R1dudnNz/WHpndEowNS1fUmZ3/LmpwZw.webp"
99
+ },
100
+ "w600": {
101
+ "1x": "http://meduza.io/image/attachments/images/006/087/556/elarge/E_3uGWnvssXzgtJ05-_Rfw.jpg",
102
+ "2x": "http://meduza.io/image/attachments/images/006/087/556/elarge/E_3uGWnvssXzgtJ05-_Rfw.jpg",
103
+ "1x_webp": "http://meduza.io/impro/MbBIK4vj9YMr8INLi6GMIYF4muqHFCWV0b1rxhhM6aI/fill/0/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODcvNTU2L2VsYXJn/ZS9FXzN1R1dudnNz/WHpndEowNS1fUmZ3/LmpwZw.webp",
104
+ "2x_webp": "http://meduza.io/impro/MbBIK4vj9YMr8INLi6GMIYF4muqHFCWV0b1rxhhM6aI/fill/0/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODcvNTU2L2VsYXJn/ZS9FXzN1R1dudnNz/WHpndEowNS1fUmZ3/LmpwZw.webp"
105
+ }
106
+ },
107
+ "tag": "Читайте также",
108
+ "gradients": {
109
+ "text_rgb": "255,255,255",
110
+ "bg_rgb": "0,0,0"
111
+ }
112
+ },
113
+ "blocks": [
114
+ {
115
+ "type": "rich_title",
116
+ "data": {
117
+ "first": "«Если кто-нибудь видит меня и слышит, пожалуйста, распространите это видео любым способом! Чтобы я существовал!»",
118
+ "second": "Автор фильма «Котлован» — о том, как сделал его из обращений россиян к Путину",
119
+ "as": "h3",
120
+ "featured": false
121
+ },
122
+ "id": "1-7b53ea24bd8ae1cfa59f45e4e4027bdabb5bf9667b97f0a6ed45d6b464c47356"
123
+ },
124
+ {
125
+ "type": "meta",
126
+ "data": {
127
+ "lang": "ru",
128
+ "components": [
129
+ {
130
+ "type": "datetime",
131
+ "datetime": 1600593764,
132
+ "id": "7639a7d1455a1ca907de0fc98a22b017e23f30e7df15b0739c78418848d674b5"
133
+ }
134
+ ],
135
+ "theme": "light"
136
+ },
137
+ "id": "2-e09585bd2b15e886b22728975010295dae47dd7ace948bc8aa012080f713290d"
138
+ }
139
+ ]
140
+ },
141
+ "only_on": "desktop"
142
+ },
143
+
144
+ "rich_and_featured_desktop": {
145
+ "type": "related_rich",
146
+ "data": {
147
+ "url": "https://meduza.io/",
148
+ "fallback": {
149
+ "data": {
150
+ "title": "Не богато вышло",
151
+ "related": [
152
+ {
153
+ "title": "«Если кто-нибудь видит меня и слышит, пожалуйста, распространите это видео любым способом! Чтобы я существовал!»",
154
+ "second": "Автор фильма «Котлован» — о том, как сделал его из обращений россиян к Путину",
155
+ "layout": "rich",
156
+ "url": "feature/2018/09/18/na-rossiyskuyu-bolnitsu-pervye-podali-v-sud-za-otkaz-v-poseschenii-umirayuschego-v-reanimatsii-rodstvennika-sud-vstal-na-storonu-medikov",
157
+ "id": "0-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
158
+ }
159
+ ]
160
+ },
161
+ "only_on": "desktop"
162
+ },
163
+ "cover": {
164
+ "ratio": 1.4976958525,
165
+ "layout": "rich",
166
+ "urls": {
167
+ "w325": {
168
+ "1x": "http://meduza.io/image/attachments/images/006/087/556/elarge/E_3uGWnvssXzgtJ05-_Rfw.jpg",
169
+ "2x": "http://meduza.io/image/attachments/images/006/087/556/elarge/E_3uGWnvssXzgtJ05-_Rfw.jpg",
170
+ "1x_webp": "http://meduza.io/impro/MbBIK4vj9YMr8INLi6GMIYF4muqHFCWV0b1rxhhM6aI/fill/0/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODcvNTU2L2VsYXJn/ZS9FXzN1R1dudnNz/WHpndEowNS1fUmZ3/LmpwZw.webp",
171
+ "2x_webp": "http://meduza.io/impro/MbBIK4vj9YMr8INLi6GMIYF4muqHFCWV0b1rxhhM6aI/fill/0/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODcvNTU2L2VsYXJn/ZS9FXzN1R1dudnNz/WHpndEowNS1fUmZ3/LmpwZw.webp"
172
+ },
173
+ "w600": {
174
+ "1x": "http://meduza.io/image/attachments/images/006/087/556/elarge/E_3uGWnvssXzgtJ05-_Rfw.jpg",
175
+ "2x": "http://meduza.io/image/attachments/images/006/087/556/elarge/E_3uGWnvssXzgtJ05-_Rfw.jpg",
176
+ "1x_webp": "http://meduza.io/impro/MbBIK4vj9YMr8INLi6GMIYF4muqHFCWV0b1rxhhM6aI/fill/0/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODcvNTU2L2VsYXJn/ZS9FXzN1R1dudnNz/WHpndEowNS1fUmZ3/LmpwZw.webp",
177
+ "2x_webp": "http://meduza.io/impro/MbBIK4vj9YMr8INLi6GMIYF4muqHFCWV0b1rxhhM6aI/fill/0/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODcvNTU2L2VsYXJn/ZS9FXzN1R1dudnNz/WHpndEowNS1fUmZ3/LmpwZw.webp"
178
+ }
179
+ },
180
+ "tag": "Читайте также",
181
+ "gradients": {
182
+ "text_rgb": "0,0,0",
183
+ "bg_rgb": "171,209,171"
184
+ }
185
+ },
186
+ "blocks": [
187
+ {
188
+ "type": "rich_title",
189
+ "data": {
190
+ "first": "«Если кто-нибудь видит меня и слышит, пожалуйста, распространите это видео любым способом! Чтобы я существовал!»",
191
+ "second": "Автор фильма «Котлован» — о том, как сделал его из обращений россиян к Путину",
192
+ "as": "h3",
193
+ "featured": false
194
+ },
195
+ "id": "1-7b53ea24bd8ae1cfa59f45e4e4027bdabb5bf9667b97f0a6ed45d6b464c47356"
196
+ },
197
+ {
198
+ "type": "meta",
199
+ "data": {
200
+ "lang": "ru",
201
+ "components": [
202
+ {
203
+ "type": "datetime",
204
+ "datetime": 1600593764,
205
+ "id": "7639a7d1455a1ca907de0fc98a22b017e23f30e7df15b0739c78418848d674b5"
206
+ }
207
+ ],
208
+ "theme": "dark"
209
+ },
210
+ "id": "2-e09585bd2b15e886b22728975010295dae47dd7ace948bc8aa012080f713290d"
211
+ }
212
+ ]
213
+ },
214
+ "only_on": "desktop"
215
+ },
216
+
217
+ "rich_and_featured_mobile": {
218
+ "type": "related_rich",
219
+ "data": {
220
+ "url": "https://meduza.io/",
221
+ "fallback": {
222
+ "data": {
223
+ "title": "Не богато вышло",
224
+ "related": [
225
+ {
226
+ "title": "«Если кто-нибудь видит меня и слышит, пожалуйста, распространите это видео любым способом! Чтобы я существовал!»",
227
+ "second": "Автор фильма «Котлован» — о том, как сделал его из обращений россиян к Путину",
228
+ "layout": "rich",
229
+ "url": "feature/2018/09/18/na-rossiyskuyu-bolnitsu-pervye-podali-v-sud-za-otkaz-v-poseschenii-umirayuschego-v-reanimatsii-rodstvennika-sud-vstal-na-storonu-medikov",
230
+ "id": "0-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
231
+ }
232
+ ]
233
+ },
234
+ "only_on": "mobile"
235
+ },
236
+ "cover": {
237
+ "ratio": 0.63,
238
+ "layout": "rich",
239
+ "urls": {
240
+ "w325": {
241
+ "1x": "http://meduza.io/impro/YW9jtqBkQc7dgyPKdgtvS8JlSvPyIgY7p-7-9C49csw/fill/325/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNC81/NDMvOTE4L29yaWdp/bmFsLzRDeHQwdFR5/YWhlUGhnZHd4YVBz/R1EuanBn.jpg",
242
+ "2x": "http://meduza.io/impro/jQf0sx4Df9y23YQ0HKyGauLGYB6kMxQ_jR2QExB4_Q0/fill/650/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNC81/NDMvOTE4L29yaWdp/bmFsLzRDeHQwdFR5/YWhlUGhnZHd4YVBz/R1EuanBn.jpg",
243
+ "1x_webp": "http://meduza.io/impro/dROSpimx8lYjBAbaWxhjPzPggOoz_RxV8useloSPgbQ/fill/325/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNC81/NDMvOTE4L29yaWdp/bmFsLzRDeHQwdFR5/YWhlUGhnZHd4YVBz/R1EuanBn.webp",
244
+ "2x_webp": "http://meduza.io/impro/dgkov3ooEbjTSe1sUvY-NLVUr6y56Dbmtpke_g-i65c/fill/650/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNC81/NDMvOTE4L29yaWdp/bmFsLzRDeHQwdFR5/YWhlUGhnZHd4YVBz/R1EuanBn.webp"
245
+ },
246
+ "w600": {
247
+ "1x": "http://meduza.io/impro/03bNGjN3Exb5vIT4jm4-VouBTahiFgH9gF8MhGd5hdw/fill/600/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNC81/NDMvOTE4L29yaWdp/bmFsLzRDeHQwdFR5/YWhlUGhnZHd4YVBz/R1EuanBn.jpg",
248
+ "2x": "http://meduza.io/impro/k7qCc2LDxE-qv6L2P5LBGo-Qmdlm68WxC2OIi6yg_SY/fill/1200/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNC81/NDMvOTE4L29yaWdp/bmFsLzRDeHQwdFR5/YWhlUGhnZHd4YVBz/R1EuanBn.jpg",
249
+ "1x_webp": "http://meduza.io/impro/4So4ZS9GWd3WTs4fUY7Lbk4CiKkoPhUQiigwXxZVGo0/fill/600/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNC81/NDMvOTE4L29yaWdp/bmFsLzRDeHQwdFR5/YWhlUGhnZHd4YVBz/R1EuanBn.webp",
250
+ "2x_webp": "http://meduza.io/impro/VZ5TtAH8GN9hENkyuoPhG7TvCLemOhHf1fgJKG9i5T4/fill/1200/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNC81/NDMvOTE4L29yaWdp/bmFsLzRDeHQwdFR5/YWhlUGhnZHd4YVBz/R1EuanBn.webp"
251
+ }
252
+ },
253
+ "tag": "Читайте также",
254
+ "gradients": {
255
+ "text_rgb": "255,255,255",
256
+ "bg_rgb": "0,0,0"
257
+ }
258
+ },
259
+ "blocks": [
260
+ {
261
+ "type": "rich_title",
262
+ "data": {
263
+ "first": "«В биеннале есть что-то очень садистское»",
264
+ "second": "Куратор Венецианской биеннале современного искусства Ральф Ругофф — как он добивался, чтобы выставка не была для зрителей мучением",
265
+ "as": "h3",
266
+ "featured": true
267
+ },
268
+ "id": "1-7b53ea24bd8ae1cfa59f45e4e4027bdabb5bf9667b97f0a6ed45d6b464c47356"
269
+ },
270
+ {
271
+ "type": "meta",
272
+ "data": {
273
+ "lang": "ru",
274
+ "components": [
275
+ {
276
+ "type": "datetime",
277
+ "datetime": 1600593764,
278
+ "id": "7639a7d1455a1ca907de0fc98a22b017e23f30e7df15b0739c78418848d674b5"
279
+ }
280
+ ],
281
+ "theme": "light"
282
+ },
283
+ "id": "2-e09585bd2b15e886b22728975010295dae47dd7ace948bc8aa012080f713290d"
284
+ }
285
+ ]
286
+ },
287
+ "only_on": "mobile"
288
+ },
289
+
290
+ "card": {
291
+ "type": "related_rich",
292
+ "data": {
293
+ "url": "https://meduza.io/",
294
+ "fallback": {
295
+ "data": {
296
+ "title": "Не богато вышло",
297
+ "related": [
298
+ {
299
+ "title": "До «обнуления» много говорили, что Путин в 2024 году может уйти в Госсовет. Теперь закон о нем внесли в Думу. Что там сказано?",
300
+ "layout": "rich",
301
+ "url": "feature/2018/09/18/na-rossiyskuyu-bolnitsu-pervye-podali-v-sud-za-otkaz-v-poseschenii-umirayuschego-v-reanimatsii-rodstvennika-sud-vstal-na-storonu-medikov",
302
+ "id": "0-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
303
+ }
304
+ ]
305
+ }
306
+ },
307
+ "cover": {
308
+ "ratio": 1,
309
+ "layout": "card",
310
+ "urls": {
311
+ "w325": {
312
+ "1x": "http://meduza.io/impro/xqOclGw-6OXsqpQ4P0hApkF9KXvd3KLnvJLT4xCvW8g/fill/360/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/NDgvMDk3L2xhcmdl/L2xaN3VUdklEUVFE/ekJUb1l3blpZeWcu/cG5n.png",
313
+ "2x": "http://meduza.io/impro/xqOclGw-6OXsqpQ4P0hApkF9KXvd3KLnvJLT4xCvW8g/fill/360/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/NDgvMDk3L2xhcmdl/L2xaN3VUdklEUVFE/ekJUb1l3blpZeWcu/cG5n.png",
314
+ "1x_webp": "http://meduza.io/impro/hQuT4tOA7mQ-GH959fn5zNu3T2f6Mem9XerH12N1JRc/resizing_type:fit/width:360/height:0/enlarge:1/quality:95/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODAvNDAzL29yaWdp/bmFsL0k3UFBtSm02/XzkzSjJWWjBvTV93/cmcucG5n.webp",
315
+ "2x_webp": "http://meduza.io/impro/hQuT4tOA7mQ-GH959fn5zNu3T2f6Mem9XerH12N1JRc/resizing_type:fit/width:360/height:0/enlarge:1/quality:95/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODAvNDAzL29yaWdp/bmFsL0k3UFBtSm02/XzkzSjJWWjBvTV93/cmcucG5n.webp"
316
+ },
317
+ "w600": {
318
+ "1x": "http://meduza.io/impro/xqOclGw-6OXsqpQ4P0hApkF9KXvd3KLnvJLT4xCvW8g/fill/360/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/NDgvMDk3L2xhcmdl/L2xaN3VUdklEUVFE/ekJUb1l3blpZeWcu/cG5n.png",
319
+ "2x": "http://meduza.io/impro/xqOclGw-6OXsqpQ4P0hApkF9KXvd3KLnvJLT4xCvW8g/fill/360/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/NDgvMDk3L2xhcmdl/L2xaN3VUdklEUVFE/ekJUb1l3blpZeWcu/cG5n.png",
320
+ "1x_webp": "http://meduza.io/impro/hQuT4tOA7mQ-GH959fn5zNu3T2f6Mem9XerH12N1JRc/resizing_type:fit/width:360/height:0/enlarge:1/quality:95/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODAvNDAzL29yaWdp/bmFsL0k3UFBtSm02/XzkzSjJWWjBvTV93/cmcucG5n.webp",
321
+ "2x_webp": "http://meduza.io/impro/hQuT4tOA7mQ-GH959fn5zNu3T2f6Mem9XerH12N1JRc/resizing_type:fit/width:360/height:0/enlarge:1/quality:95/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODAvNDAzL29yaWdp/bmFsL0k3UFBtSm02/XzkzSjJWWjBvTV93/cmcucG5n.webp"
322
+ }
323
+ },
324
+ "tag": "Читайте также"
325
+ },
326
+ "blocks": [
327
+ {
328
+ "type": "rich_title",
329
+ "data": {
330
+ "first": "До «обнуления» много говорили, что Путин в 2024 году может уйти в Госсовет. Теперь закон о нем внесли в Думу. Что там сказано?",
331
+ "as": "h3",
332
+ "featured": false
333
+ },
334
+ "id": "1-7b53ea24bd8ae1cfa59f45e4e4027bdabb5bf9667b97f0a6ed45d6b464c47356"
335
+ },
336
+ {
337
+ "type": "meta",
338
+ "data": {
339
+ "lang": "ru",
340
+ "components": [
341
+ {
342
+ "type": "datetime",
343
+ "datetime": 1600593764,
344
+ "id": "7639a7d1455a1ca907de0fc98a22b017e23f30e7df15b0739c78418848d674b5"
345
+ }
346
+ ],
347
+ "theme": "light"
348
+ },
349
+ "id": "2-e09585bd2b15e886b22728975010295dae47dd7ace948bc8aa012080f713290d"
350
+ }
351
+ ]
352
+ }
353
+ }
354
+ }
@@ -3,6 +3,7 @@ import { RenderBlocks } from './'
3
3
  import { PreviewWrapper } from '../_storybook/PreviewWrapper'
4
4
 
5
5
  import styles from './RenderBlocks.stories.module.css'
6
+ import mock from './mock.json'
6
7
 
7
8
  export default {
8
9
  title: 'Main / RenderBlocks',
@@ -16,7 +17,9 @@ const Example: React.FC = () => {
16
17
  return (
17
18
  <>
18
19
  <div className={styles.root}>
19
- <RenderBlocks block={[]} />
20
+ {mock.blocks.map((block) => (
21
+ <RenderBlocks block={block} key={block.id} />
22
+ ))}
20
23
  </div>
21
24
  </>
22
25
  )
@@ -3,18 +3,24 @@ import { render } from '@testing-library/react'
3
3
  import { RenderBlocks } from './'
4
4
  import { RenderBlocksProps } from './RenderBlocks.types'
5
5
 
6
- import styles from './RenderBlocks.module.css'
6
+ import mock from './mock.json'
7
7
 
8
8
  describe('Render Blocks', () => {
9
- let props: RenderBlocksProps
9
+ const renderComponent = () =>
10
+ render(
11
+ <div>
12
+ {mock.blocks.map((block) => (
13
+ <RenderBlocks
14
+ block={block as RenderBlocksProps['block']}
15
+ key={block.id}
16
+ />
17
+ ))}
18
+ </div>
19
+ )
10
20
 
11
- const renderComponent = () => render(<RenderBlocks {...props} />)
21
+ it('should have some blocks', () => {
22
+ const { getByText } = renderComponent()
12
23
 
13
- it('should have root style', () => {
14
- const { getByTestId } = renderComponent()
15
-
16
- const renderBlocks = getByTestId('render-blocks')
17
-
18
- expect(renderBlocks).toHaveClass(styles.root)
24
+ getByText('Hello Component')
19
25
  })
20
26
  })
@@ -0,0 +1,10 @@
1
+ {
2
+ "blocks": [
3
+ {
4
+ "type": "p",
5
+ "data": "Hello Component",
6
+ "length": 9,
7
+ "id": "11-1ff7b114f405e532387ad41ebfc3c794c3baaa413180d495c00a60273f0d2eb400d"
8
+ }
9
+ ]
10
+ }
@@ -55,19 +55,49 @@
55
55
  }
56
56
 
57
57
  .featured {
58
- letter-spacing: 0.3px;
58
+ @media $landscapeTabletMax {
59
+ letter-spacing: 0.3px;
59
60
 
60
- font-size: 28px;
61
- line-height: 30px;
61
+ font-size: 28px;
62
+ line-height: 30px;
63
+ }
62
64
  }
63
65
 
64
66
  .featured span {
65
- display: block;
67
+ @media $landscapeTabletMax {
68
+ display: block;
69
+
70
+ padding-top: 2px;
66
71
 
67
- padding-top: 2px;
72
+ font-size: 18px;
73
+ line-height: 24px;
74
+ }
75
+ }
68
76
 
69
- font-size: 18px;
70
- line-height: 24px;
77
+ .isInMediaBlock {
78
+ @media $landscapeTablet {
79
+ margin-bottom: 18px;
80
+ }
81
+ }
82
+
83
+ .isInMediaBlock:not(.featured) {
84
+ font-size: 19px;
85
+ line-height: 23px;
86
+
87
+ @media $landscapeTablet {
88
+ font-size: 26px;
89
+ line-height: 32px;
90
+ }
91
+ }
92
+
93
+ .isInMediaBlock:not(.featured) span {
94
+ font-size: 20px;
95
+ line-height: 23px;
96
+
97
+ @media $landscapeTablet {
98
+ font-size: 27px;
99
+ line-height: 32px;
100
+ }
71
101
  }
72
102
 
73
103
  .mobile {
@@ -5,10 +5,11 @@ import { RichTitleProps } from './RichTitle.types'
5
5
 
6
6
  import styles from './RichTitle.module.css'
7
7
 
8
- describe('Rich Title', () => {
9
- let props: RichTitleProps
8
+ import mock from './mock.json'
10
9
 
11
- const renderComponent = () => render(<RichTitle {...props} />)
10
+ describe('Rich Title', () => {
11
+ const renderComponent = () =>
12
+ render(<RichTitle block={mock as RichTitleProps['block']} />)
12
13
 
13
14
  it('should have root style', () => {
14
15
  const { getByTestId } = renderComponent()
@@ -1,4 +1,11 @@
1
1
  export interface RichTitleProps {
2
- block: any
2
+ block: {
3
+ only_on?: string
4
+ data: {
5
+ featured?: boolean
6
+ first: string
7
+ second?: string
8
+ }
9
+ }
3
10
  styleContext?: string[] | string
4
11
  }
@@ -3,18 +3,25 @@ import { render } from '@testing-library/react'
3
3
  import { SimpleBlock } from './'
4
4
  import { SimpleBlockProps } from './SimpleBlock.types'
5
5
 
6
- import styles from './SimpleBlock.module.css'
6
+ import mock from './mock.json'
7
7
 
8
8
  describe('Simple Block', () => {
9
- let props: SimpleBlockProps
9
+ const renderComponent = () =>
10
+ render(
11
+ <div>
12
+ {mock.blocks.map((item) => (
13
+ <SimpleBlock
14
+ block={item as SimpleBlockProps['block']}
15
+ styleContext={['no_mods', 'center', 'rich']}
16
+ key={item.id}
17
+ />
18
+ ))}
19
+ </div>
20
+ )
10
21
 
11
- const renderComponent = () => render(<SimpleBlock {...props} />)
22
+ it('should have some blocks', () => {
23
+ const { getByText } = renderComponent()
12
24
 
13
- it('should have root style', () => {
14
- const { getByTestId } = renderComponent()
15
-
16
- const simpleBlock = getByTestId('simple-block')
17
-
18
- expect(simpleBlock).toHaveClass(styles.root)
25
+ getByText('Hello Component')
19
26
  })
20
27
  })
@@ -1,5 +1,11 @@
1
1
  {
2
2
  "blocks": [
3
+ {
4
+ "type": "p",
5
+ "data": "Hello Component",
6
+ "length": 0,
7
+ "id": "1-a3d239200edd759999e5493fd4a6311710f16774927df9907ffbabf57a915a901f"
8
+ },
3
9
  {
4
10
  "type": "lead",
5
11
  "data": "В России качество медицинской помощи даже в одной больнице может значительно отличаться. Это прямое следствие того, что обучение врачей и проверку их знаний и навыков нельзя назвать хорошими. При этом у самих медицинских специалистов даже нет возможности понять, что с ними что-то не так: им дают дипломы, им разрешают работать. И если студент, ординатор или состоявшийся врач захотят получить хорошее образование (и будут понимать, что это значит), у них, скорее всего, возникнут проблемы, потому что в государственном секторе таких возможностей может не быть вообще либо они окажутся труднодоступны. В последнее время все чаще публично выступают люди, которые недовольны таким положением вещей. Они не только говорят о недостатках образования, которые видят, но и пытаются хотя бы локально что-то изменить. «Медуза» решила рассказать о некоторых студентах, врачах и благотворителях, которые меняют то, что им не нравится в вузах, ординатуре и в целом образовании врачей (и заодно объясняем, что не устраивает этих людей).",
@@ -5,10 +5,11 @@ import { SimpleTitleProps } from './SimpleTitle.types'
5
5
 
6
6
  import styles from './SimpleTitle.module.css'
7
7
 
8
- describe('Simple Title', () => {
9
- let props: SimpleTitleProps
8
+ import mock from './mock.json'
10
9
 
11
- const renderComponent = () => render(<SimpleTitle {...props} />)
10
+ describe('Simple Title', () => {
11
+ const renderComponent = () =>
12
+ render(<SimpleTitle block={mock as SimpleTitleProps['block']} />)
12
13
 
13
14
  it('should have root style', () => {
14
15
  const { getByTestId } = renderComponent()
@@ -1,4 +1,9 @@
1
1
  export interface SimpleTitleProps {
2
- block: any
2
+ block: {
3
+ data: {
4
+ first: string
5
+ }
6
+ only_on?: string
7
+ }
3
8
  styleContext?: string[] | string
4
9
  }
@@ -5,10 +5,11 @@ import { SourceBlockProps } from './SourceBlock.types'
5
5
 
6
6
  import styles from './SourceBlock.module.css'
7
7
 
8
- describe('Source Block', () => {
9
- let props: SourceBlockProps
8
+ import mock from './mock.json'
10
9
 
11
- const renderComponent = () => render(<SourceBlock {...props} />)
10
+ describe('Source Block', () => {
11
+ const renderComponent = () =>
12
+ render(<SourceBlock block={mock as SourceBlockProps['block']} />)
12
13
 
13
14
  it('should have root style', () => {
14
15
  const { getByTestId } = renderComponent()
@@ -1,4 +1,16 @@
1
1
  export interface SourceBlockProps {
2
- block: any
2
+ block: {
3
+ only_on?: string
4
+ data: {
5
+ quote: {
6
+ type: string
7
+ data: string
8
+ length: number
9
+ }[]
10
+
11
+ origin: string
12
+ url: string
13
+ }
14
+ }
3
15
  styleContext?: string[] | string
4
16
  }
@@ -5,10 +5,11 @@ import { SpoilerProps } from './Spoiler.types'
5
5
 
6
6
  import styles from './Spoiler.module.css'
7
7
 
8
- describe('Spoiler', () => {
9
- let props: SpoilerProps
8
+ import mock from './mock.json'
10
9
 
11
- const renderComponent = () => render(<Spoiler {...props} />)
10
+ describe('Spoiler', () => {
11
+ const renderComponent = () =>
12
+ render(<Spoiler block={mock as SpoilerProps['block']} />)
12
13
 
13
14
  it('should have root style', () => {
14
15
  const { getByTestId } = renderComponent()
@@ -4,11 +4,11 @@ import { Table } from './'
4
4
  import { TableProps } from './Table.types'
5
5
 
6
6
  import styles from './Table.module.css'
7
+ import mock from './mock.json'
7
8
 
8
9
  describe('Table', () => {
9
- let props: TableProps
10
-
11
- const renderComponent = () => render(<Table {...props} />)
10
+ const renderComponent = () =>
11
+ render(<Table block={mock as TableProps['block']} />)
12
12
 
13
13
  it('should have root style', () => {
14
14
  const { getByTestId } = renderComponent()