@meduza/ui-kit-2 0.1.37 → 0.1.38

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 (35) hide show
  1. package/dist/SensitiveBlock/SensitiveBlock.stories.d.ts +10 -0
  2. package/dist/SensitiveBlock/SensitiveBlock.types.d.ts +15 -0
  3. package/dist/SensitiveBlock/index.d.ts +3 -0
  4. package/dist/index.d.ts +1 -0
  5. package/dist/ui-kit-2.cjs.development.js +195 -126
  6. package/dist/ui-kit-2.cjs.development.js.map +1 -1
  7. package/dist/ui-kit-2.cjs.production.min.js +1 -1
  8. package/dist/ui-kit-2.cjs.production.min.js.map +1 -1
  9. package/dist/ui-kit-2.esm.js +195 -127
  10. package/dist/ui-kit-2.esm.js.map +1 -1
  11. package/dist/ui-kit.css +1282 -1162
  12. package/package.json +6 -6
  13. package/src/.DS_Store +0 -0
  14. package/src/EmbedBlock/EmbedBlock.module.css +20 -60
  15. package/src/EmbedBlock/EmbedBlock.tsx +10 -12
  16. package/src/GroupedBlock/index.tsx +22 -8
  17. package/src/GroupedBlock/mock.json +54 -47
  18. package/src/RawHtmlBlock/RawHtmlBlock.stories.module.css +3 -0
  19. package/src/RawHtmlBlock/RawHtmlBlock.stories.tsx +6 -1
  20. package/src/RawHtmlBlock/index.tsx +5 -0
  21. package/src/RawHtmlBlock/mock.json +113 -24
  22. package/src/RelatedRichBlock/RelatedRichBlock.module.css +19 -12
  23. package/src/RenderBlocks/index.tsx +4 -5
  24. package/src/RenderBlocks/mock.json +0 -73
  25. package/src/SensitiveBlock/SensitiveBlock.module.css +143 -0
  26. package/src/SensitiveBlock/SensitiveBlock.stories.module.css +8 -0
  27. package/src/SensitiveBlock/SensitiveBlock.stories.tsx +40 -0
  28. package/src/SensitiveBlock/SensitiveBlock.test.tsx +20 -0
  29. package/src/SensitiveBlock/SensitiveBlock.types.ts +15 -0
  30. package/src/SensitiveBlock/index.tsx +70 -0
  31. package/src/SensitiveBlock/mock.json +61 -0
  32. package/src/Spoiler/index.tsx +2 -1
  33. package/src/SvgSymbol/SvgSymbol.module.css +1 -1
  34. package/src/index.tsx +1 -0
  35. package/src/vars.css +8 -8
@@ -13,17 +13,23 @@
13
13
  outline-width: 0;
14
14
  }
15
15
 
16
+ .root:hover {
17
+ @media $mobile {
18
+ opacity: 0.95;
19
+ }
20
+ }
21
+
16
22
  .root::after {
17
23
  position: absolute;
18
- z-index: 20;
19
24
  top: 0;
20
25
  right: 0;
21
26
  bottom: 0;
22
27
  left: 0;
23
-
24
- content: '';
28
+ z-index: 20;
25
29
 
26
30
  border-radius: 8px;
31
+
32
+ content: '';
27
33
  }
28
34
 
29
35
  .root::before {
@@ -49,9 +55,9 @@
49
55
  .overlay,
50
56
  .overlayHeader {
51
57
  position: absolute;
52
- z-index: 10;
53
58
  right: 0;
54
59
  left: 0;
60
+ z-index: 10;
55
61
  }
56
62
 
57
63
  .overlay {
@@ -71,16 +77,16 @@
71
77
  flex-flow: column nowrap;
72
78
  justify-content: flex-end;
73
79
 
74
- padding: 12px 15px 12px;
80
+ padding: 12px 15px;
75
81
 
76
82
  background-color: #f7f7f7;
77
83
 
78
84
  @media $mobile {
79
85
  position: absolute;
80
- z-index: 10;
81
86
  right: 0;
82
87
  bottom: 0;
83
88
  left: 0;
89
+ z-index: 10;
84
90
 
85
91
  min-height: 295px;
86
92
  padding: 20px;
@@ -100,10 +106,10 @@
100
106
  .isRich.hasGradient .body {
101
107
  @media $mobile {
102
108
  position: absolute;
103
- z-index: 10;
104
109
  right: 0;
105
110
  bottom: 0;
106
111
  left: 0;
112
+ z-index: 10;
107
113
 
108
114
  min-height: 295px;
109
115
 
@@ -117,15 +123,15 @@
117
123
 
118
124
  .isRich .picture::after {
119
125
  position: absolute;
120
- z-index: 10;
121
126
  right: 1px;
122
127
  bottom: 0;
123
128
  left: 1px;
124
-
125
- content: '';
129
+ z-index: 10;
126
130
 
127
131
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
128
132
 
133
+ content: '';
134
+
129
135
  @media $mobile {
130
136
  content: '';
131
137
  }
@@ -133,6 +139,7 @@
133
139
 
134
140
  .isCard {
135
141
  color: #fff;
142
+
136
143
  background-color: #191919;
137
144
 
138
145
  @media $mobile {
@@ -145,10 +152,10 @@
145
152
 
146
153
  @media $mobile {
147
154
  position: absolute;
148
- z-index: 10;
149
155
  right: 0;
150
156
  bottom: 0;
151
157
  left: 0;
158
+ z-index: 10;
152
159
 
153
160
  min-height: 295px;
154
161
  }
@@ -205,10 +212,10 @@
205
212
 
206
213
  .tag {
207
214
  position: absolute;
208
- z-index: 10;
209
215
  top: 14px;
210
216
  right: 15px;
211
217
  left: 15px;
218
+ z-index: 10;
212
219
 
213
220
  color: rgba(255, 255, 255, 0.7);
214
221
 
@@ -11,11 +11,11 @@ import { CardTitle } from '../CardTitle'
11
11
  import { RelatedBlock } from '../RelatedBlock'
12
12
  import { SourceBlock } from '../SourceBlock'
13
13
  import { EmbedBlockContainer } from '../EmbedBlock'
14
- import { RelatedRichBlock } from '../RelatedRichBlock'
15
14
  import { GroupedBlock } from '../GroupedBlock'
16
15
  import { MetaContainer } from '../Meta/MetaContainer'
17
16
  import { Table } from '../Table'
18
17
  import { MaterialNote } from '../MaterialNote'
18
+ import { SensitiveBlock } from '../SensitiveBlock'
19
19
 
20
20
  export const RenderBlocks: React.FC<RenderBlocksProps> = ({
21
21
  block,
@@ -82,10 +82,6 @@ export const RenderBlocks: React.FC<RenderBlocksProps> = ({
82
82
  return <ListBlock block={block} styleContext={styleContext} />
83
83
  }
84
84
 
85
- case 'related_rich': {
86
- return <RelatedRichBlock block={block} styleContext={styleContext} />
87
- }
88
-
89
85
  case 'chapter-subtitle': {
90
86
  return <ChapterBlock block={block} styleContext={styleContext} />
91
87
  }
@@ -104,6 +100,9 @@ export const RenderBlocks: React.FC<RenderBlocksProps> = ({
104
100
  case 'table':
105
101
  return <Table block={block} styleContext={styleContext} />
106
102
 
103
+ case 'sensitive':
104
+ return <SensitiveBlock block={block} styleContext={styleContext} />
105
+
107
106
  case 'embed':
108
107
  case 'embed_code':
109
108
  case 'game_embed':
@@ -5,79 +5,6 @@
5
5
  "data": "Hello Component",
6
6
  "length": 9,
7
7
  "id": "11-1ff7b114f405e532387ad41ebfc3c794c3baaa413180d495c00a60273f0d2eb400d"
8
- },
9
- {
10
- "type": "related_rich",
11
- "data": {
12
- "url": "https://meduza.io/",
13
- "fallback": {
14
- "data": {
15
- "title": "Не богато вышло",
16
- "related": [
17
- {
18
- "title": "«Если кто-нибудь видит меня и слышит, пожалуйста, распространите это видео любым способом! Чтобы я существовал!»",
19
- "second": "Автор фильма «Котлован» — о том, как сделал его из обращений россиян к Путину",
20
- "layout": "rich",
21
- "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",
22
- "id": "0-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
23
- }
24
- ]
25
- },
26
- "only_on": "desktop"
27
- },
28
- "cover": {
29
- "ratio": 1.4976958525,
30
- "layout": "rich",
31
- "urls": {
32
- "w325": {
33
- "1x": "http://meduza.io/image/attachments/images/006/087/556/elarge/E_3uGWnvssXzgtJ05-_Rfw.jpg",
34
- "2x": "http://meduza.io/image/attachments/images/006/087/556/elarge/E_3uGWnvssXzgtJ05-_Rfw.jpg",
35
- "1x_webp": "http://meduza.io/impro/MbBIK4vj9YMr8INLi6GMIYF4muqHFCWV0b1rxhhM6aI/fill/0/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODcvNTU2L2VsYXJn/ZS9FXzN1R1dudnNz/WHpndEowNS1fUmZ3/LmpwZw.webp",
36
- "2x_webp": "http://meduza.io/impro/MbBIK4vj9YMr8INLi6GMIYF4muqHFCWV0b1rxhhM6aI/fill/0/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODcvNTU2L2VsYXJn/ZS9FXzN1R1dudnNz/WHpndEowNS1fUmZ3/LmpwZw.webp"
37
- },
38
- "w600": {
39
- "1x": "http://meduza.io/image/attachments/images/006/087/556/elarge/E_3uGWnvssXzgtJ05-_Rfw.jpg",
40
- "2x": "http://meduza.io/image/attachments/images/006/087/556/elarge/E_3uGWnvssXzgtJ05-_Rfw.jpg",
41
- "1x_webp": "http://meduza.io/impro/MbBIK4vj9YMr8INLi6GMIYF4muqHFCWV0b1rxhhM6aI/fill/0/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODcvNTU2L2VsYXJn/ZS9FXzN1R1dudnNz/WHpndEowNS1fUmZ3/LmpwZw.webp",
42
- "2x_webp": "http://meduza.io/impro/MbBIK4vj9YMr8INLi6GMIYF4muqHFCWV0b1rxhhM6aI/fill/0/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8w/ODcvNTU2L2VsYXJn/ZS9FXzN1R1dudnNz/WHpndEowNS1fUmZ3/LmpwZw.webp"
43
- }
44
- },
45
- "tag": "Читайте также",
46
- "gradients": {
47
- "text_rgb": "255,255,255",
48
- "bg_rgb": "0,0,0"
49
- }
50
- },
51
- "blocks": [
52
- {
53
- "type": "rich_title",
54
- "data": {
55
- "first": "«Если кто-нибудь видит меня и слышит, пожалуйста, распространите это видео любым способом! Чтобы я существовал!»",
56
- "second": "Автор фильма «Котлован» — о том, как сделал его из обращений россиян к Путину",
57
- "as": "h3",
58
- "featured": false
59
- },
60
- "id": "1-7b53ea24bd8ae1cfa59f45e4e4027bdabb5bf9667b97f0a6ed45d6b464c47356"
61
- },
62
- {
63
- "type": "meta",
64
- "data": {
65
- "lang": "ru",
66
- "components": [
67
- {
68
- "type": "datetime",
69
- "datetime": 1600593764,
70
- "id": "7639a7d1455a1ca907de0fc98a22b017e23f30e7df15b0739c78418848d674b5"
71
- }
72
- ],
73
- "theme": "light"
74
- },
75
- "id": "2-e09585bd2b15e886b22728975010295dae47dd7ace948bc8aa012080f713290d"
76
- }
77
- ]
78
- },
79
- "only_on": "desktop",
80
- "id": "11-1ff7b114f405e532387ad41ebfc3c7941313c3baaa413180d495c00a60273f0d2eb400d"
81
8
  }
82
9
  ]
83
10
  }
@@ -0,0 +1,143 @@
1
+ @import '../vars.css';
2
+
3
+ .root {
4
+ position: relative;
5
+
6
+ margin: 15px 0;
7
+
8
+ @media $mobile {
9
+ margin: 25px 0 20px;
10
+ }
11
+ }
12
+
13
+ .root:first-child {
14
+ margin-top: 0;
15
+ }
16
+
17
+ .root:last-child {
18
+ margin-bottom: 0;
19
+ }
20
+
21
+ .root figcaption {
22
+ width: 100%;
23
+ max-width: 650px;
24
+ margin-right: auto;
25
+ margin-left: auto;
26
+
27
+ font-family: $secondaryFont;
28
+ }
29
+
30
+ .container {
31
+ position: relative;
32
+ transition: min-height 350ms ease;
33
+ min-height: 170px;
34
+ }
35
+
36
+ .overlay {
37
+ position: absolute;
38
+ z-index: 10;
39
+ top: 0;
40
+ right: -20px;
41
+ bottom: 0;
42
+ left: -20px;
43
+
44
+ display: flex;
45
+ align-items: center;
46
+ flex-flow: column nowrap;
47
+ justify-content: center;
48
+
49
+ padding: 30px 20px;
50
+
51
+ transition: opacity 500ms ease, visibility 500ms ease;
52
+
53
+ background-color: rgba(255, 255, 255, 1);
54
+ background-repeat: no-repeat;
55
+ background-position: center top;
56
+ background-size: cover;
57
+
58
+ @media $mobile {
59
+ right: 0;
60
+ left: 0;
61
+ }
62
+ }
63
+
64
+ .content {
65
+ user-select: none;
66
+
67
+ color: #fff;
68
+
69
+ font-family: $secondaryFont;
70
+ }
71
+
72
+ .content p {
73
+ display: block;
74
+
75
+ width: 100%;
76
+ max-width: 368px;
77
+ margin-top: 0;
78
+ margin-bottom: 24px;
79
+
80
+ text-align: center;
81
+
82
+ font-size: 16px;
83
+ line-height: 22px;
84
+ }
85
+
86
+ .button {
87
+ width: 100%;
88
+ max-width: 348px;
89
+ margin: 0 auto;
90
+ }
91
+
92
+ .default {
93
+ max-width: 650px;
94
+
95
+ @media $mobile {
96
+ margin-right: auto;
97
+ margin-left: auto;
98
+ }
99
+ }
100
+
101
+ .full {
102
+ max-width: 980px;
103
+
104
+ @media $mobile {
105
+ margin-right: auto;
106
+ margin-left: auto;
107
+ }
108
+ }
109
+
110
+ .full .container {
111
+ margin-right: -20px;
112
+ margin-left: -20px;
113
+
114
+ @media $mobile {
115
+ margin-right: 0;
116
+ margin-left: 0;
117
+ }
118
+ }
119
+
120
+ .super_full {
121
+ max-width: 100%;
122
+ }
123
+
124
+ .super_full .container {
125
+ @media $mobile {
126
+ margin-right: -15px;
127
+ margin-left: -15px;
128
+ }
129
+ }
130
+
131
+
132
+ /* STATE */
133
+ .visible .overlay {
134
+ visibility: hidden;
135
+
136
+ pointer-events: none;
137
+
138
+ opacity: 0;
139
+ }
140
+
141
+ .visible .container {
142
+ min-height: 0;
143
+ }
@@ -0,0 +1,8 @@
1
+ @import '../vars.css';
2
+
3
+ .root {
4
+ display: block;
5
+
6
+ max-width: 1200px;
7
+ margin: 0 auto;
8
+ }
@@ -0,0 +1,40 @@
1
+ import React from 'react'
2
+ import { SensitiveBlock } from './'
3
+ import { PreviewWrapper } from '../_storybook/PreviewWrapper'
4
+
5
+ import styles from './SensitiveBlock.stories.module.css'
6
+
7
+ import mock from './mock.json'
8
+
9
+ export default {
10
+ title: 'Main / SensitiveBlock',
11
+ component: SensitiveBlock,
12
+ parameters: {
13
+ themeWrapperSideBySide: true
14
+ }
15
+ }
16
+
17
+ const Example: React.FC = () => {
18
+ const { blocks } = mock
19
+
20
+ return (
21
+ <>
22
+ <div className={styles.root}>
23
+ {blocks.map((item) => (
24
+ <SensitiveBlock block={item} key={item.id} styleContext={[]} />
25
+ ))}
26
+ </div>
27
+ </>
28
+ )
29
+ }
30
+
31
+ export const Default: React.FC = () => (
32
+ <>
33
+ <PreviewWrapper theme="light">
34
+ <Example />
35
+ </PreviewWrapper>
36
+ {/* <PreviewWrapper theme="dark">
37
+ <Example />
38
+ </PreviewWrapper> */}
39
+ </>
40
+ )
@@ -0,0 +1,20 @@
1
+ import React from 'react'
2
+ import { render } from '@testing-library/react'
3
+ import { SensitiveBlock } from './'
4
+ import { SensitiveBlockProps } from './SensitiveBlock.types'
5
+
6
+ import styles from './SensitiveBlock.module.css'
7
+
8
+ describe('Sensitive Block', () => {
9
+ let props: SensitiveBlockProps
10
+
11
+ const renderComponent = () => render(<SensitiveBlock {...props} />)
12
+
13
+ it('should have root style', () => {
14
+ const { getByTestId } = renderComponent()
15
+
16
+ const sensitiveBlock = getByTestId('sensitive-block')
17
+
18
+ expect(sensitiveBlock).toHaveClass(styles.root)
19
+ })
20
+ })
@@ -0,0 +1,15 @@
1
+ export interface SensitiveBlockProps {
2
+ block: {
3
+ id: string
4
+ title: string
5
+ blurred_image: string
6
+ button: {
7
+ text: string
8
+ }
9
+ item: any
10
+ credit?: string
11
+ caption?: string
12
+ cc: string
13
+ }
14
+ styleContext?: string[] | string
15
+ }
@@ -0,0 +1,70 @@
1
+ import React, { useState } from 'react'
2
+ import { SensitiveBlockProps } from './SensitiveBlock.types'
3
+ import makeClassName from '../utils/makeClassName'
4
+
5
+ import { EmbedBlockContainer } from '../EmbedBlock'
6
+ import { MediaCaption } from '../MediaCaption'
7
+ import { Button } from '../Button'
8
+
9
+ import styles from './SensitiveBlock.module.css'
10
+
11
+ export const SensitiveBlock: React.FC<SensitiveBlockProps> = ({
12
+ block,
13
+ block: { cc, caption, credit, blurred_image: blurredImage },
14
+ block: {
15
+ item: {
16
+ data: { display }
17
+ }
18
+ },
19
+ styleContext
20
+ }) => {
21
+ const [visible, isVisible] = useState(false)
22
+
23
+ const handleClick = () => {
24
+ isVisible(true)
25
+ }
26
+
27
+ return (
28
+ <div
29
+ data-testid="sensitive-block"
30
+ className={makeClassName([
31
+ [styles.root, true],
32
+ [styles.visible, visible],
33
+ [styles[display], display && styles[display]]
34
+ ])}
35
+ >
36
+ <div className={styles.container}>
37
+ <div
38
+ className={styles.overlay}
39
+ style={{ backgroundImage: `url(${blurredImage})` }}
40
+ >
41
+ <div className={styles.content}>
42
+ <p dangerouslySetInnerHTML={{ __html: block.title }} />
43
+
44
+ <div className={styles.button}>
45
+ <Button onClick={() => handleClick()} theme="light">
46
+ {block.button.text}
47
+ </Button>
48
+ </div>
49
+ </div>
50
+ </div>
51
+ <div className={styles.media}>
52
+ <EmbedBlockContainer
53
+ block={block.item}
54
+ styleContext={['isInSensitiveBlock']}
55
+ />
56
+ </div>
57
+ </div>
58
+
59
+ {cc && (
60
+ <figcaption className={styles.figcaption}>
61
+ <MediaCaption
62
+ credit={credit}
63
+ caption={caption}
64
+ styleContext={styleContext}
65
+ />
66
+ </figcaption>
67
+ )}
68
+ </div>
69
+ )
70
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "blocks": [
3
+ {
4
+ "type": "sensitive",
5
+ "title": "18 ноября несколько тысяч человек устроили возле Бранденбургских ворот в&nbsp;Берлине акцию против антикоронавирусных мер",
6
+ "caption": "18 ноября несколько тысяч человек устроили возле Бранденбургских ворот в Берлине акцию против антикоронавирусных мер, введенных правительством Германии. <a href=\"https://www.zeit.de/politik/deutschland/2020-11/bevoelkerungsschutzgesetz-berlin-corona-proteste-abstimmung-corona-politik-regierungsviertel-infektionsschutzgesetz\" target=\"_blank\">Как сообщает Die Zeit</a>, протестующие не соблюдали дистанцию и не носили защитных масок. В полиции <a href=\"https://twitter.com/PolizeiBerlin_E/status/1329033384409116679\" target=\"_blank\">заявили</a>, что участники протестов бросали в полицейских бутылки, камни и петарды, а также использовали перцовый спрей. Полиция применила против демонстрантов водометы, что «очень необычно для Берлина», <a href=\"https://www.bild.de/regional/berlin/berlin-aktuell/gegner-der-corona-massnahmen-demonstrieren-wieder-in-berlin-74003922.bild.html\" target=\"_blank\">пишет Bild</a>. В полиции <a href=\"https://twitter.com/PolizeiBerlin_E/status/1329063341776642053\" target=\"_blank\">сообщили</a> о 190 задержанных.",
7
+ "credit": "Odd Andersen / AFP / Scanpix / LETA",
8
+ "cc": "default",
9
+ "button": {
10
+ "text": "Трогни чтобы увидеть"
11
+ },
12
+ "blurred_image": "https://meduza.io/image/attachments/images/006/179/198/original/7E08Oyt5qSKpRywhXLwrLg.webp",
13
+ "item": {
14
+ "type": "image",
15
+ "data": {
16
+ "small_url": "https://meduza.io/image/attachments/images/006/177/130/small/5Ei7odv4IYiUaPJIicJDLQ.jpg",
17
+ "large_url": "https://meduza.io/image/attachments/images/006/177/130/large/5Ei7odv4IYiUaPJIicJDLQ.jpg",
18
+ "elarge_url": "https://meduza.io/image/attachments/images/006/177/130/elarge/5Ei7odv4IYiUaPJIicJDLQ.jpg",
19
+ "height": 1328,
20
+ "width": 1960,
21
+ "display": "full",
22
+ "optimized": {
23
+ "original": "https://meduza.io/impro/anHT0Vh2OPD2xtF9H8CcIZcYPwMfg1Xs3luucAMANCs/fill/2670/0/ce/0/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.jpg",
24
+ "w325": {
25
+ "1x": "https://meduza.io/impro/Pppv1xRwyEPWgTYcWdDtLTyMfKk1yiSWYWbSocZaPX4/fill/325/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.jpg",
26
+ "2x": "https://meduza.io/impro/K2boyZjzctKBpp6eEndOswVplmSviEntVMF7sS-HfGM/fill/650/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.jpg",
27
+ "1x_webp": "https://meduza.io/impro/ju9g9g9NRCZRhAiGXQ28_tUQciVtLPtfGEq4QwzXF6o/fill/325/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.webp",
28
+ "2x_webp": "https://meduza.io/impro/mAkn7bkT3SAKd-eYYPXBuzXl-947G0Z-2OiSYWLYOG8/fill/650/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.webp"
29
+ },
30
+ "w520": {
31
+ "1x": "https://meduza.io/impro/wq7cnaFcyfi4BwlJCPntDAqBPevcWzJplOq66sWFhNE/fill/520/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.jpg",
32
+ "2x": "https://meduza.io/impro/KQypYyxEx7jf8rdM8AY-6C1UKsY7F8VsaWfqbwbR95k/fill/1040/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.jpg",
33
+ "1x_webp": "https://meduza.io/impro/X4geRHzOaIiljNaZlD1_0kP8G_OoWcdKFVKlCrKdHds/fill/520/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.webp",
34
+ "2x_webp": "https://meduza.io/impro/p0-QkEHBdVvxXX052mvP7XXSDav12VvsQ-drzO47VlI/fill/1040/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.webp"
35
+ },
36
+ "w650": {
37
+ "1x": "https://meduza.io/impro/K2boyZjzctKBpp6eEndOswVplmSviEntVMF7sS-HfGM/fill/650/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.jpg",
38
+ "2x": "https://meduza.io/impro/IsiZ5kDEhsWzIds0csL_oz5ml2HHOQU_JIksf1CKlkk/fill/1300/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.jpg",
39
+ "1x_webp": "https://meduza.io/impro/mAkn7bkT3SAKd-eYYPXBuzXl-947G0Z-2OiSYWLYOG8/fill/650/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.webp",
40
+ "2x_webp": "https://meduza.io/impro/tglX8IWWkUPexJezwDfoQg6xDrenUpWaMAgAwHckg7M/fill/1300/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.webp"
41
+ },
42
+ "w980": {
43
+ "1x": "https://meduza.io/impro/XLntahPDRv2sWhqa6zmvKeXIBC_rJe-Gm-QzZidE_v4/fill/980/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.jpg",
44
+ "2x": "https://meduza.io/impro/B3JjZn3hHC6k_evpEmUept2DLnPb3NjuiVKORxlQe8E/fill/1960/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.jpg",
45
+ "1x_webp": "https://meduza.io/impro/XneTbp8xG5tiRfLqkrQR93VBh2bjvsnXsW9TSKVIHu0/fill/980/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.webp",
46
+ "2x_webp": "https://meduza.io/impro/phgrh-EpPeXDBZ1ypW0Z_ZttXFISniLFICLoePQHCas/fill/1960/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.webp"
47
+ },
48
+ "w1335": {
49
+ "1x": "https://meduza.io/impro/GLUfXXJOrHhkW6IcxUfkZ9-ezIJJ7Pcj2ozTVuc-O9c/fill/1335/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.jpg",
50
+ "2x": "https://meduza.io/impro/EEPDi9TRZbxf6P4bDKMKMy_X-rNnZv28Aze1GuTWgS4/fill/2670/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.jpg",
51
+ "1x_webp": "https://meduza.io/impro/kr_f7-7yvpCWTM5VGPq1ydB_wwo6s4AChrbae9S6yDc/fill/1335/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.webp",
52
+ "2x_webp": "https://meduza.io/impro/wJ26MavDdFbHCQ3kzRuEpmfKwZS05Z-8FtM8HkBc3nQ/fill/2670/0/ce/1/aHR0cHM6Ly9tZWR1/emEuaW8vaW1hZ2Uv/YXR0YWNobWVudHMv/aW1hZ2VzLzAwNi8x/NzcvMTMwL29yaWdp/bmFsLzVFaTdvZHY0/SVlpVWFQSklpY0pE/TFEuanBn.webp"
53
+ }
54
+ }
55
+ },
56
+ "id": "0-55ff26409b089e78cd332f7125eb6efd2bc2522fb3f0742332ff6b3480916ab0"
57
+ },
58
+ "id": "0-55ff26409b089e78cd332f7125eb6efdere2bc2522fb3f0742332ff6b3480916ab0"
59
+ }
60
+ ]
61
+ }
@@ -45,9 +45,10 @@ export const Spoiler: React.FC<SpoilerProps> = ({
45
45
  [[styles.spoiled], !!spoiled]
46
46
  ]
47
47
 
48
- const context = ['center'].concat(styleContext)
48
+ const context = ['center']
49
49
 
50
50
  if (styleContext) {
51
+ context.concat(styleContext)
51
52
  classNames = makeStyleContext(classNames, styleContext, styles)
52
53
  }
53
54
 
@@ -63,7 +63,7 @@
63
63
  .reaction {
64
64
  width: 16px;
65
65
 
66
- color: $gold;
66
+ color: #dcad76;
67
67
 
68
68
  fill: #262626;
69
69
  }
package/src/index.tsx CHANGED
@@ -38,4 +38,5 @@ export * from './DocumentItemsCount'
38
38
  export * from './ToolbarButton'
39
39
  export * from './Footnote'
40
40
  export * from './RelatedRichBlock'
41
+ export * from './SensitiveBlock'
41
42
  // /* PLOP_INJECT_LINK */ //
package/src/vars.css CHANGED
@@ -27,15 +27,15 @@ $gapMedium: 15px;
27
27
  $gapSmall: 12px;
28
28
 
29
29
  /* Media */
30
- $mobile: only screen and (min-device-width: 32em); /* 512 */
31
- $contentWidth: only screen and (min-device-width: 40.625em); /* 650 */
32
- $portraitTablet: only screen and (min-device-width: 48em); /* 768 */
33
- $landscapeTablet: only screen and (min-device-width: 64em); /* 1024 */
34
- $desktop: only screen and (min-device-width: 63.125em); /* 1010 */
35
- $wideDesktop: only screen and (min-device-width: 75em); /* 1200 */
30
+ $mobile: only screen and (min-width: 32em); /* 512 */
31
+ $contentWidth: only screen and (min-width: 40.625em); /* 650 */
32
+ $portraitTablet: only screen and (min-width: 48em); /* 768 */
33
+ $landscapeTablet: only screen and (min-width: 64em); /* 1024 */
34
+ $desktop: only screen and (min-width: 63.125em); /* 1010 */
35
+ $wideDesktop: only screen and (min-width: 75em); /* 1200 */
36
36
 
37
- $mobileMax: only screen and (max-device-width: 32.1875em); /* 511 */
38
- $landscapeTabletMax: only screen and (max-device-width: 63.9375em); /* 1023 */
37
+ $mobileMax: only screen and (max-width: 32.1875em); /* 511 */
38
+ $landscapeTabletMax: only screen and (max-width: 63.9375em); /* 1023 */
39
39
 
40
40
  /* Zindex */
41
41
  $zIndex-1: 100;