@meduza/ui-kit-2 0.4.15 → 0.5.1

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 (166) hide show
  1. package/package.json +12 -7
  2. package/src/Cover/index.tsx +2 -10
  3. package/src/DocumentItemsCount/DocumentItemsCount.module.css +12 -1
  4. package/src/DocumentItemsCount/DocumentItemsCount.test.tsx +9 -2
  5. package/src/DocumentItemsCount/index.tsx +3 -3
  6. package/src/Footnote/Footnote.module.css +6 -46
  7. package/src/Footnote/Footnote.stories.tsx +9 -26
  8. package/src/Image/Image.module.css +0 -11
  9. package/src/Meta/Meta.module.css +0 -5
  10. package/src/Meta/Meta.stories.module.css +0 -16
  11. package/src/Meta/Meta.stories.tsx +4 -51
  12. package/src/Meta/MetaContainer.tsx +0 -8
  13. package/src/Popover/Popover.module.css +29 -47
  14. package/src/Popover/Popover.stories.tsx +1 -25
  15. package/src/Popover/index.tsx +21 -1
  16. package/src/RawHtmlBlock/index.tsx +5 -0
  17. package/src/RelatedRichBlock/RelatedRichBlock.module.css +1 -11
  18. package/src/RenderBlocks/index.tsx +1 -5
  19. package/src/RichTitle/RichTitle.module.css +6 -16
  20. package/src/ShopRelatedBlock/ShopRelatedBlock.module.css +210 -0
  21. package/src/ShopRelatedBlock/ShopRelatedBlock.stories.module.css +12 -0
  22. package/src/ShopRelatedBlock/ShopRelatedBlock.stories.tsx +52 -0
  23. package/src/ShopRelatedBlock/ShopRelatedBlock.test.tsx +20 -0
  24. package/src/ShopRelatedBlock/ShopRelatedBlock.types.ts +4 -0
  25. package/src/ShopRelatedBlock/index.tsx +120 -0
  26. package/src/ShopRelatedBlock/mock.json +153 -0
  27. package/src/SimpleBlock/SimpleBlock.types.ts +1 -0
  28. package/src/SimpleBlock/index.tsx +3 -1
  29. package/src/Tag/Tag.module.css +3 -8
  30. package/src/Tag/Tag.stories.tsx +3 -16
  31. package/src/Tag/Tag.types.ts +1 -7
  32. package/src/index.tsx +1 -1
  33. package/dist/AnnouncementInText/AnnouncementInText.types.d.ts +0 -4
  34. package/dist/AnnouncementInText/index.d.ts +0 -3
  35. package/dist/BookmarkButton/BookmarkButton.types.d.ts +0 -6
  36. package/dist/BookmarkButton/index.d.ts +0 -3
  37. package/dist/Button/Button.d.ts +0 -3
  38. package/dist/Button/Button.types.d.ts +0 -16
  39. package/dist/Button/ButtonLoader.d.ts +0 -2
  40. package/dist/Button/index.d.ts +0 -2
  41. package/dist/CardTitle/CardTitle.types.d.ts +0 -10
  42. package/dist/CardTitle/index.d.ts +0 -3
  43. package/dist/ChapterBlock/ChapterBlock.types.d.ts +0 -7
  44. package/dist/ChapterBlock/index.d.ts +0 -3
  45. package/dist/Cover/Cover.types.d.ts +0 -24
  46. package/dist/Cover/index.d.ts +0 -3
  47. package/dist/DocumentItemsCount/DocumentItemsCount.types.d.ts +0 -7
  48. package/dist/DocumentItemsCount/index.d.ts +0 -3
  49. package/dist/DonatesTeaser/DonatesTeaser.types.d.ts +0 -4
  50. package/dist/DonatesTeaser/index.d.ts +0 -3
  51. package/dist/DotsOnImage/DotsOnImage.types.d.ts +0 -46
  52. package/dist/DotsOnImage/index.d.ts +0 -3
  53. package/dist/Dropdown/Dropdown.types.d.ts +0 -6
  54. package/dist/Dropdown/index.d.ts +0 -4
  55. package/dist/EmbedBlock/EmbedBlock.d.ts +0 -3
  56. package/dist/EmbedBlock/EmbedBlock.types.d.ts +0 -12
  57. package/dist/EmbedBlock/EmbedGif.d.ts +0 -3
  58. package/dist/EmbedBlock/IframeBlock.d.ts +0 -3
  59. package/dist/EmbedBlock/index.d.ts +0 -3
  60. package/dist/Footnote/Footnote.types.d.ts +0 -5
  61. package/dist/Footnote/index.d.ts +0 -3
  62. package/dist/GroupedBlock/GroupedBlock.types.d.ts +0 -4
  63. package/dist/GroupedBlock/index.d.ts +0 -3
  64. package/dist/HalfBlock/HalfBlock.types.d.ts +0 -4
  65. package/dist/HalfBlock/index.d.ts +0 -3
  66. package/dist/Image/Image.types.d.ts +0 -35
  67. package/dist/Image/RenderPicture.d.ts +0 -4
  68. package/dist/Image/index.d.ts +0 -3
  69. package/dist/ImportantLead/ImportantLead.types.d.ts +0 -4
  70. package/dist/ImportantLead/index.d.ts +0 -3
  71. package/dist/Lazy/Lazy.types.d.ts +0 -5
  72. package/dist/Lazy/index.d.ts +0 -3
  73. package/dist/ListBlock/ListBlock.types.d.ts +0 -10
  74. package/dist/ListBlock/index.d.ts +0 -3
  75. package/dist/MaterialNote/MaterialNote.types.d.ts +0 -13
  76. package/dist/MaterialNote/index.d.ts +0 -3
  77. package/dist/MaterialTitle/MaterialTitle.types.d.ts +0 -4
  78. package/dist/MaterialTitle/index.d.ts +0 -5
  79. package/dist/MediaCaption/MediaCaption.types.d.ts +0 -5
  80. package/dist/MediaCaption/index.d.ts +0 -3
  81. package/dist/Meta/Meta.mock.d.ts +0 -12
  82. package/dist/Meta/Meta.types.d.ts +0 -19
  83. package/dist/Meta/MetaContainer.d.ts +0 -3
  84. package/dist/Meta/index.d.ts +0 -3
  85. package/dist/MetaItem/MetaItem.types.d.ts +0 -7
  86. package/dist/MetaItem/index.d.ts +0 -3
  87. package/dist/MetaItemLive/MetaItemLive.types.d.ts +0 -3
  88. package/dist/MetaItemLive/index.d.ts +0 -3
  89. package/dist/Popover/Popover.types.d.ts +0 -5
  90. package/dist/Popover/index.d.ts +0 -3
  91. package/dist/QuoteBlock/QuoteBlock.types.d.ts +0 -6
  92. package/dist/QuoteBlock/index.d.ts +0 -3
  93. package/dist/RawHtmlBlock/RawHtmlBlock.types.d.ts +0 -17
  94. package/dist/RawHtmlBlock/index.d.ts +0 -3
  95. package/dist/RelatedBlock/RelatedBlock.types.d.ts +0 -17
  96. package/dist/RelatedBlock/index.d.ts +0 -3
  97. package/dist/RelatedBook/RelatedBook.mock.d.ts +0 -65
  98. package/dist/RelatedBook/RelatedBook.types.d.ts +0 -4
  99. package/dist/RelatedBook/index.d.ts +0 -3
  100. package/dist/RelatedRichBlock/RelatedRichBlock.types.d.ts +0 -4
  101. package/dist/RelatedRichBlock/index.d.ts +0 -3
  102. package/dist/RenderBlocks/RenderBlocks.types.d.ts +0 -11
  103. package/dist/RenderBlocks/index.d.ts +0 -3
  104. package/dist/RichTitle/RichTitle.types.d.ts +0 -13
  105. package/dist/RichTitle/index.d.ts +0 -3
  106. package/dist/SensitiveBlock/SensitiveBlock.types.d.ts +0 -15
  107. package/dist/SensitiveBlock/index.d.ts +0 -3
  108. package/dist/SimpleBlock/SimpleBlock.types.d.ts +0 -4
  109. package/dist/SimpleBlock/index.d.ts +0 -3
  110. package/dist/SimpleTitle/SimpleTitle.types.d.ts +0 -9
  111. package/dist/SimpleTitle/index.d.ts +0 -3
  112. package/dist/SourceBlock/SourceBlock.types.d.ts +0 -15
  113. package/dist/SourceBlock/index.d.ts +0 -3
  114. package/dist/Spoiler/Spoiler.types.d.ts +0 -4
  115. package/dist/Spoiler/index.d.ts +0 -3
  116. package/dist/SvgSymbol/SvgSymbol.types.d.ts +0 -8
  117. package/dist/SvgSymbol/icons.d.ts +0 -167
  118. package/dist/SvgSymbol/index.d.ts +0 -3
  119. package/dist/Switcher/Switcher.types.d.ts +0 -12
  120. package/dist/Switcher/index.d.ts +0 -3
  121. package/dist/Table/Table.types.d.ts +0 -25
  122. package/dist/Table/index.d.ts +0 -3
  123. package/dist/Tag/Tag.types.d.ts +0 -12
  124. package/dist/Tag/index.d.ts +0 -3
  125. package/dist/Timestamp/Timestamp.types.d.ts +0 -5
  126. package/dist/Timestamp/index.d.ts +0 -4
  127. package/dist/Toolbar/Toolbar.d.ts +0 -3
  128. package/dist/Toolbar/Toolbar.types.d.ts +0 -8
  129. package/dist/Toolbar/ToolbarItem.d.ts +0 -3
  130. package/dist/Toolbar/index.d.ts +0 -2
  131. package/dist/ToolbarButton/ToolbarButton.types.d.ts +0 -10
  132. package/dist/ToolbarButton/index.d.ts +0 -3
  133. package/dist/Tooltip/Tooltip.d.ts +0 -3
  134. package/dist/Tooltip/Tooltip.types.d.ts +0 -8
  135. package/dist/Tooltip/TooltipFooter.d.ts +0 -3
  136. package/dist/Tooltip/index.d.ts +0 -2
  137. package/dist/constants.d.ts +0 -41
  138. package/dist/index.d.ts +0 -45
  139. package/dist/types.d.ts +0 -20
  140. package/dist/ui-kit-2.cjs.development.js +0 -2639
  141. package/dist/ui-kit-2.cjs.development.js.map +0 -1
  142. package/dist/ui-kit-2.cjs.production.min.js +0 -2
  143. package/dist/ui-kit-2.cjs.production.min.js.map +0 -1
  144. package/dist/ui-kit-2.esm.js +0 -2585
  145. package/dist/ui-kit-2.esm.js.map +0 -1
  146. package/dist/ui-kit.css +0 -6068
  147. package/dist/utils/BlockContext.d.ts +0 -8
  148. package/dist/utils/DangerousHtml.d.ts +0 -8
  149. package/dist/utils/capitalizeFirstLetter.d.ts +0 -1
  150. package/dist/utils/converCase.d.ts +0 -2
  151. package/dist/utils/generateGradient.d.ts +0 -2
  152. package/dist/utils/getElementPositionRelativeToViewport.d.ts +0 -2
  153. package/dist/utils/makeClassName.d.ts +0 -3
  154. package/dist/utils/makeStyleContext.d.ts +0 -3
  155. package/dist/utils/pluralize.d.ts +0 -2
  156. package/dist/utils/postMessage.d.ts +0 -2
  157. package/dist/utils/viewportSize.d.ts +0 -6
  158. package/src/.DS_Store +0 -0
  159. package/src/Meta/Meta.mock.ts +0 -19
  160. package/src/RelatedBook/RelatedBook.mock.ts +0 -68
  161. package/src/RelatedBook/RelatedBook.module.css +0 -210
  162. package/src/RelatedBook/RelatedBook.stories.module.css +0 -5
  163. package/src/RelatedBook/RelatedBook.stories.tsx +0 -35
  164. package/src/RelatedBook/RelatedBook.test.tsx +0 -20
  165. package/src/RelatedBook/RelatedBook.types.ts +0 -4
  166. package/src/RelatedBook/index.tsx +0 -68
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.4.15",
2
+ "version": "0.5.1",
3
3
  "license": "MIT",
4
4
  "description": "UIKit for Meduza",
5
5
  "repository": "https://github.com/meduza-corp/ui-kit-2.git",
@@ -27,9 +27,9 @@
27
27
  "build-storybook": "storybook build"
28
28
  },
29
29
  "peerDependencies": {
30
- "dayjs": "^1.11.9",
31
- "react": ">=18",
32
- "react-intersection-observer": "^9.5.2",
30
+ "dayjs": "^1.10.3",
31
+ "react": ">=16",
32
+ "react-intersection-observer": "^8.31.0",
33
33
  "react-router-dom": "^5.2.0"
34
34
  },
35
35
  "lint-staged": {
@@ -51,6 +51,12 @@
51
51
  "@commitlint/config-conventional"
52
52
  ]
53
53
  },
54
+ "husky": {
55
+ "hooks": {
56
+ "pre-commit": "tsc --noEmit && lint-staged",
57
+ "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
58
+ }
59
+ },
54
60
  "devDependencies": {
55
61
  "@babel/core": "^7.22.9",
56
62
  "@babel/preset-env": "^7.22.9",
@@ -72,7 +78,6 @@
72
78
  "@typescript-eslint/eslint-plugin": "^6.1.0",
73
79
  "@typescript-eslint/parser": "^6.1.0",
74
80
  "babel-loader": "^9.1.3",
75
- "css-loader": "^6.8.1",
76
81
  "dayjs": "^1.11.9",
77
82
  "dts-cli": "^2.0.3",
78
83
  "eslint": "^8.45.0",
@@ -104,7 +109,6 @@
104
109
  "storybook": "^7.1.0",
105
110
  "storybook-addon-react-docgen": "^1.2.43",
106
111
  "storybook-addon-react-router-v6": "^1.0.2",
107
- "style-loader": "^3.3.3",
108
112
  "stylelint": "^15.10.2",
109
113
  "stylelint-config-rational-order": "^0.1.2",
110
114
  "stylelint-config-sass-guidelines": "^10.0.0",
@@ -116,5 +120,6 @@
116
120
  "typescript": "^5.1.6",
117
121
  "typescript-plugin-css-modules": "^5.0.1",
118
122
  "utils": "^0.3.1"
119
- }
123
+ },
124
+ "dependencies": {}
120
125
  }
@@ -38,10 +38,7 @@ export const Cover: React.FC<CoverProps> = ({
38
38
 
39
39
  classNames = makeStyleContext(classNames, theme, styles)
40
40
 
41
- style.backgroundImage = generateGradient(
42
- gradients.bg_rgb,
43
- 'mediaBlockBottom'
44
- )
41
+ style.backgroundImage = generateGradient(gradients.bg_rgb, 'mediaBlockBottom')
45
42
  }
46
43
 
47
44
  const renderCC = (context?: string): JSX.Element => (
@@ -55,12 +52,7 @@ export const Cover: React.FC<CoverProps> = ({
55
52
  return (
56
53
  <div data-testid="cover" className={makeClassName(classNames)}>
57
54
  <div className={styles.image}>
58
- <Image
59
- optimized={urls}
60
- ratio={mobileRatio}
61
- display="narrow"
62
- lazy={true}
63
- />
55
+ <Image optimized={urls} ratio={mobileRatio} display="narrow" />
64
56
  </div>
65
57
  <div className={styles.body} style={style}>
66
58
  {blocks.map((item) => (
@@ -1,6 +1,17 @@
1
+ /* stylelint-disable declaration-empty-line-before */
1
2
  @import '../vars';
2
3
 
3
- .root:not(:first-child) {
4
+ .root {
5
+ display: inline;
6
+
7
+ line-height: inherit;
8
+ }
9
+
10
+ .root svg {
11
+ vertical-align: top;
12
+ }
13
+
14
+ .items {
4
15
  margin-left: 1px;
5
16
 
6
17
  vertical-align: top;
@@ -1,14 +1,21 @@
1
1
  import React from 'react'
2
2
  import { render } from '@testing-library/react'
3
3
  import { DocumentItemsCount } from './'
4
+ // import { DocumentItemsCountProps } from './DocumentItemsCount.types'
5
+
6
+ import styles from './DocumentItemsCount.module.css'
4
7
 
5
8
  describe('Document Items Count', () => {
9
+ // let props: DocumentItemsCountProps
10
+
6
11
  const renderComponent = () =>
7
12
  render(<DocumentItemsCount type="card" items={4} />)
8
13
 
9
14
  it('should have root style', () => {
10
- const { container } = renderComponent()
15
+ const { getByTestId } = renderComponent()
16
+
17
+ const documentItemsCount = getByTestId('document-items-count')
11
18
 
12
- expect(container).toBeInTheDocument
19
+ expect(documentItemsCount).toHaveClass(styles.root)
13
20
  })
14
21
  })
@@ -45,9 +45,9 @@ export const DocumentItemsCount: React.FC<DocumentItemsCountProps> = ({
45
45
  )}`
46
46
 
47
47
  return (
48
- <>
48
+ <div data-testid="document-items-count" className={styles.root}>
49
49
  {children}
50
- <span className={styles.root}>{itemsCount}</span>
51
- </>
50
+ <span className={styles.items}>{itemsCount}</span>
51
+ </div>
52
52
  )
53
53
  }
@@ -3,58 +3,18 @@
3
3
  .root {
4
4
  position: relative;
5
5
 
6
+ width: 320px;
7
+ padding: 20px;
8
+
6
9
  border-radius: 8px;
7
10
  background-color: #fff;
8
- box-shadow:
9
- 0 0 0 1px rgba(0, 0, 0, 0.1),
10
- 0 5px 20px rgba(0, 0, 0, 0.2);
11
+ box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), 0 5px 20px rgba(0, 0, 0, 0.2);
11
12
  }
12
13
 
13
14
  .body {
14
- overflow-y: auto;
15
- -webkit-overflow-scrolling: touch;
16
-
17
- max-height: 400px;
18
- padding: 20px 20px 28px;
19
-
20
- color: #000;
21
-
22
- font-family: $secondaryFont;
23
15
  font-family: $secondaryFont;
24
16
  font-size: 16px;
25
- font-size: 16px;
26
17
  line-height: 22px;
27
- line-height: 22px;
28
-
29
- overscroll-behavior: none;
30
- }
31
-
32
- .body::before,
33
- .body::after {
34
- position: absolute;
35
- right: 0;
36
- left: 0;
37
-
38
- content: '';
39
- pointer-events: none;
40
- }
41
-
42
- .body::before {
43
- top: 0;
44
-
45
- height: 29px;
46
-
47
- border-radius: 8px 8px 0 0;
48
- background: linear-gradient(0deg, rgba(255, 255, 255, 0) 0%, #fff 100%);
49
- }
50
-
51
- .body::after {
52
- bottom: 0;
53
-
54
- height: 48px;
55
-
56
- border-radius: 0 0 8px 8px;
57
- background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, #fff 100%);
58
18
  }
59
19
 
60
20
  .body h3 {
@@ -84,12 +44,11 @@
84
44
 
85
45
  .dismiss {
86
46
  position: absolute;
87
- z-index: 10;
88
47
  top: 0;
89
48
  right: 0;
90
49
 
91
50
  margin: 0;
92
- padding: 15px 15px 10px;
51
+ padding: 6px 9px 10px;
93
52
 
94
53
  cursor: pointer;
95
54
 
@@ -107,3 +66,4 @@
107
66
  width: 12px;
108
67
  height: 12px;
109
68
  }
69
+
@@ -15,33 +15,16 @@ export default {
15
15
  const Example: React.FC = () => {
16
16
  return (
17
17
  <>
18
- <div className={styles.root} style={{ maxWidth: 400 }}>
18
+ <div className={styles.root}>
19
19
  <Footnote onClose={(): void => alert('Handle Close')}>
20
- <h3>Из расследования Туровского Из расследования Туровского</h3>
21
- <div>
22
- <p>
23
- «Летом 2007 года Лиду отправили подтягивать математику в Боброво.
24
- К тому моменту Бебчук стал для нее „родной фигурой и наставником,
25
- помогал, слушал“. В первые дни он парил ее голой в бане. В доме
26
- Бебчука вместо кроватей стояли большие полати — двухэтажная
27
- деревянная конструкция, на которой помещалось до 15 человек. Лида
28
- спала на втором этаже, Бебчук внизу. В одну из ночей ей не
29
- удавалось заснуть, она ворочалась. Бебчук услышал. „Не можешь
30
- уснуть? Иди сюда, будем вместе засыпать“. Лида спустилась.
31
- „Забирайся под одеяло“, — сказал преподаватель. Так и не сумев
32
- заснуть, Лида ночью вышла из дома». «Летом 2007 года Лиду
33
- отправили подтягивать математику в Боброво. К тому моменту Бебчук
34
- стал для нее „родной фигурой и наставником, помогал, слушал“. В
35
- первые дни он парил ее голой в бане. В доме Бебчука вместо
36
- кроватей стояли большие полати — двухэтажная деревянная
37
- конструкция, на которой помещалось до 15 человек. Лида спала на
38
- втором этаже, Бебчук внизу. В одну из ночей ей не удавалось
39
- заснуть, она ворочалась. Бебчук услышал. „Не можешь уснуть? Иди
40
- сюда, будем вместе засыпать“. Лида спустилась. „Забирайся под
41
- одеяло“, — сказал преподаватель. Так и не сумев заснуть, Лида
42
- ночью вышла из дома».
43
- </p>
44
- </div>
20
+ <h3>Заголовок лвлвлдфова выа вовофдывлоа</h3>
21
+ <p>
22
+ «Я видел истинного Дональда Трампа, наблюдал за ним. Это обманщик,
23
+ притворщик и задира. Настоящий паршивец! Все его слова абсурдны
24
+ и&nbsp;направлены на скандал. Рейган когда-то сказал Горбачёву:
25
+ «Мистер Горбачёв, развалите эту стену!», а&nbsp;Трамп собирается
26
+ взводить стену между Америкой и Мексикой.
27
+ </p>
45
28
  </Footnote>
46
29
  </div>
47
30
  </>
@@ -76,14 +76,3 @@
76
76
  .dark {
77
77
  background-color: transparent;
78
78
  }
79
-
80
- .isStatic,
81
- .isStatic .wrapper,
82
- .isStatic .wrapper > div {
83
- height: 100%;
84
- }
85
-
86
- .isStatic img {
87
- height: 100%;
88
- position: static;
89
- }
@@ -104,11 +104,6 @@
104
104
  }
105
105
  }
106
106
 
107
- .isCustom {
108
- color: var(--metaText);
109
- fill: var(--metaFill);
110
- }
111
-
112
107
  /* VISIBILITY */
113
108
 
114
109
  .mobile {
@@ -4,20 +4,4 @@
4
4
  display: block;
5
5
 
6
6
  font-family: $secondaryFont;
7
-
8
- display: flex;
9
- flex-flow: column nowrap;
10
-
11
- gap: 40px;
12
- }
13
-
14
- .root h3 {
15
- font-size: 20px;
16
- font-weight: bold;
17
- }
18
-
19
- .layout {
20
- display: flex;
21
- flex-flow: column nowrap;
22
- gap: 20px;
23
7
  }
@@ -8,8 +8,6 @@ import { SvgSymbol } from '../SvgSymbol'
8
8
  import { PreviewWrapper } from '../_storybook/PreviewWrapper'
9
9
 
10
10
  import styles from './Meta.stories.module.css'
11
- import { MetaContainer } from './MetaContainer'
12
- import { MetaMock } from './Meta.mock'
13
11
 
14
12
  export default {
15
13
  title: 'Main / Meta',
@@ -21,8 +19,8 @@ export default {
21
19
 
22
20
  const Example: React.FC = () => {
23
21
  return (
24
- <div className={styles.root}>
25
- <div className={styles.layout}>
22
+ <>
23
+ <div className={styles.root}>
26
24
  <h3>В карточке</h3>
27
25
  <Meta>
28
26
  <MetaItem>
@@ -40,7 +38,7 @@ const Example: React.FC = () => {
40
38
  ))}
41
39
  </Meta>
42
40
  </div>
43
- <div className={styles.layout}>
41
+ <div className={styles.root}>
44
42
  <h3>В материале</h3>
45
43
 
46
44
  <Meta styleContext="isInMaterial">
@@ -54,53 +52,8 @@ const Example: React.FC = () => {
54
52
  <Timestamp publishedAt={1558353600} type="date" locale="en" />
55
53
  </MetaItem>
56
54
  </Meta>
57
- <div className={styles.layout}>
58
- <h3>Блочная</h3>
59
- <MetaContainer
60
- block={MetaMock}
61
- lang="ru"
62
- styleContext={[]}
63
- isRead={false}
64
- isListened={false}
65
- isInBookmarks={false}
66
- />
67
- </div>
68
- <div
69
- className={styles.layout}
70
- style={
71
- {
72
- '--metaText': `pink`,
73
- '--metaFill': 'currentColor'
74
- } as React.CSSProperties
75
- }
76
- >
77
- <h3>CSS Props</h3>
78
-
79
- <Meta styleContext="isCustom">
80
- <MetaItem bullets>
81
- <MetaItemLive /> Онлайн
82
- </MetaItem>
83
- <MetaItem bullets>
84
- Источник: <a href="https://meduza.io">Meduza</a>
85
- </MetaItem>
86
- <MetaItem bullets>
87
- <Timestamp publishedAt={1558353600} type="date" locale="en" />
88
- </MetaItem>
89
- </Meta>
90
- <div className={styles.layout}>
91
- <h3>Блочная</h3>
92
- <MetaContainer
93
- block={MetaMock}
94
- lang="ru"
95
- styleContext={[]}
96
- isRead={false}
97
- isListened={false}
98
- isInBookmarks={false}
99
- />
100
- </div>
101
- </div>
102
55
  </div>
103
- </div>
56
+ </>
104
57
  )
105
58
  }
106
59
 
@@ -133,14 +133,6 @@ export const MetaContainer: React.FC<MetaContainerProps> = ({
133
133
  )
134
134
  }
135
135
 
136
- case 'string': {
137
- return (
138
- <MetaItem bullets key={component.id}>
139
- {component.text}
140
- </MetaItem>
141
- )
142
- }
143
-
144
136
  default: {
145
137
  return null
146
138
  }
@@ -47,29 +47,27 @@
47
47
  max-width: 420px;
48
48
  min-height: 80px;
49
49
  margin: 0 auto;
50
+ padding: 22px 20px 28px;
50
51
 
51
52
  animation: disappear 350ms ease both;
52
-
53
- border-radius: 8px 8px 0 0;
54
- background-color: #fff;
55
53
  }
56
54
 
57
55
  .dismiss {
58
56
  position: absolute;
59
- z-index: 10;
60
- top: 10px;
61
- right: 10px;
57
+ top: -23px;
58
+ left: 50%;
62
59
 
63
- width: 26px;
64
- height: 26px;
60
+ width: 50px;
61
+ height: 36px;
65
62
  padding: 0;
66
63
 
67
- cursor: pointer;
64
+ transform: translateX(-50%);
68
65
 
66
+ opacity: 0.4;
69
67
  border-width: 0;
70
- border-radius: 13px;
71
- background-color: #ebebeb;
72
- background-image: url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m1 1 10 10M11 1 1 11' stroke='%23757575' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
68
+ border-radius: 0;
69
+ background-color: transparent;
70
+ background-image: url("data:image/svg+xml,%3Csvg width='17' height='7' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.445 1.832l6.946 4.63a2 2 0 0 0 2.218 0l6.946-4.63a1 1 0 1 0-1.11-1.664L8.5 4.798 1.555.168a1 1 0 1 0-1.11 1.664z' fill='%23F7F7F7' fill-rule='nonzero'/%3E%3C/svg%3E");
73
71
  background-repeat: no-repeat;
74
72
  background-position: center;
75
73
  box-shadow: none;
@@ -77,55 +75,39 @@
77
75
  appearance: none;
78
76
  }
79
77
 
80
- .visible .container {
81
- animation: appear 350ms ease both;
82
- }
83
-
84
- .body {
85
- overflow-y: auto;
86
- -webkit-overflow-scrolling: touch;
87
-
88
- max-height: 68vh;
89
- padding: 18px 20px 28px;
78
+ .background {
79
+ position: absolute;
80
+ z-index: -1;
81
+ top: 0;
82
+ left: 0;
90
83
 
91
- color: #000;
84
+ overflow: hidden;
92
85
 
93
- font-family: $secondaryFont;
94
- font-size: 16px;
95
- line-height: 22px;
86
+ width: 100%;
87
+ height: 100%;
96
88
 
97
- overscroll-behavior: none;
89
+ border-radius: 8px 8px 0 0;
98
90
  }
99
91
 
100
- .body::before,
101
- .body::after {
92
+ .background rect {
102
93
  position: absolute;
103
- right: 0;
104
- left: 0;
105
94
 
106
- content: '';
95
+ width: 100%;
96
+ height: 100%;
107
97
  }
108
98
 
109
- .body::before {
110
- top: 0;
111
-
112
- height: 29px;
113
-
114
- border-radius: 8px 8px 0 0;
115
- background: linear-gradient(0deg, rgba(255, 255, 255, 0) 0%, #fff 100%);
99
+ .visible .container {
100
+ animation: appear 350ms ease both;
116
101
  }
117
102
 
118
- .body::after {
119
- bottom: 0;
120
-
121
- height: 48px;
122
-
123
- background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, #fff 100%);
103
+ .body {
104
+ font-family: $secondaryFont;
105
+ font-size: 16px;
106
+ line-height: 22px;
124
107
  }
125
108
 
126
109
  .body h3 {
127
- margin: 0 0 16px;
128
- padding-right: 26px;
110
+ margin: 0 0 5px;
129
111
 
130
112
  font-size: inherit;
131
113
  font-weight: 700;
@@ -35,31 +35,7 @@ const Example: React.FC = () => {
35
35
  setIsPopoverShown(false)
36
36
  }}
37
37
  >
38
- <h3>Из расследования Туровского Из расследования Туровского</h3>
39
- <div>
40
- <p>
41
- «Летом 2007 года Лиду отправили подтягивать математику в
42
- Боброво. К тому моменту Бебчук стал для нее „родной фигурой и
43
- наставником, помогал, слушал“. В первые дни он парил ее голой в
44
- бане. В доме Бебчука вместо кроватей стояли большие полати —
45
- двухэтажная деревянная конструкция, на которой помещалось до 15
46
- человек. Лида спала на втором этаже, Бебчук внизу. В одну из
47
- ночей ей не удавалось заснуть, она ворочалась. Бебчук услышал.
48
- „Не можешь уснуть? Иди сюда, будем вместе засыпать“. Лида
49
- спустилась. „Забирайся под одеяло“, — сказал преподаватель. Так
50
- и не сумев заснуть, Лида ночью вышла из дома». «Летом 2007 года
51
- Лиду отправили подтягивать математику в Боброво. К тому моменту
52
- Бебчук стал для нее „родной фигурой и наставником, помогал,
53
- слушал“. В первые дни он парил ее голой в бане. В доме Бебчука
54
- вместо кроватей стояли большие полати — двухэтажная деревянная
55
- конструкция, на которой помещалось до 15 человек. Лида спала на
56
- втором этаже, Бебчук внизу. В одну из ночей ей не удавалось
57
- заснуть, она ворочалась. Бебчук услышал. „Не можешь уснуть? Иди
58
- сюда, будем вместе засыпать“. Лида спустилась. „Забирайся под
59
- одеяло“, — сказал преподаватель. Так и не сумев заснуть, Лида
60
- ночью вышла из дома».
61
- </p>
62
- </div>
38
+ Здесь мог бы быть ваш компонент
63
39
  </Popover>
64
40
  )}
65
41
  </div>
@@ -53,7 +53,27 @@ export const Popover: React.FC<PopoverProps> = ({ children, onClose }) => {
53
53
  onClick={(): void => handleClose()}
54
54
  aria-label="dismiss"
55
55
  />
56
-
56
+ <svg width="100%" className={styles.background}>
57
+ <defs>
58
+ <mask id="myMask" x="0" y="0" width="100%" height="100%">
59
+ <rect fill="white" y="0" width="100%" height="100%" x="0" />
60
+ <svg x="50%" overflow="visible">
61
+ <g transform="translate(-12 0)">
62
+ <path d="M4.61852778e-14,9.76996262e-15 L9.84597532,5.80270273 C11.0992017,6.54128882 12.6546044,6.54128882 13.9078308,5.80270273 L23.7538061,9.76996262e-15 L4.61852778e-14,9.76996262e-15 Z" />
63
+ </g>
64
+ </svg>
65
+ </mask>
66
+ </defs>
67
+ <rect
68
+ fill="#F7F7F7"
69
+ id="base-mask"
70
+ mask="url(#myMask)"
71
+ x="0"
72
+ y="0"
73
+ width="100%"
74
+ height="100%"
75
+ />
76
+ </svg>
57
77
  <div className={styles.body}>{children}</div>
58
78
  </div>
59
79
  </div>
@@ -6,6 +6,7 @@ import { Spoiler } from '../Spoiler'
6
6
  import { HalfBlock } from '../HalfBlock'
7
7
  import { Cover } from '../Cover'
8
8
  import { RelatedRichBlock } from '../RelatedRichBlock'
9
+ import { ShopRelatedBlock } from '../ShopRelatedBlock'
9
10
  import { BlockProvider } from '../utils/BlockContext'
10
11
 
11
12
  export const RawHtmlBlock: React.FC<RawHtmlBlockProps> = ({
@@ -47,6 +48,10 @@ export const RawHtmlBlock: React.FC<RawHtmlBlockProps> = ({
47
48
  return <RelatedRichBlock block={block} styleContext={styleContext} />
48
49
  }
49
50
 
51
+ case 'related_shop': {
52
+ return <ShopRelatedBlock block={block} styleContext={styleContext} />
53
+ }
54
+
50
55
  default: {
51
56
  return (
52
57
  <BlockProvider value={context}>
@@ -19,14 +19,6 @@
19
19
  }
20
20
  }
21
21
 
22
- .root:last-child {
23
- margin-bottom: 0;
24
- }
25
-
26
- .root:first-child {
27
- margin-top: 0;
28
- }
29
-
30
22
  .root::after {
31
23
  position: absolute;
32
24
  top: 0;
@@ -47,9 +39,7 @@
47
39
  }
48
40
 
49
41
  .root::after {
50
- box-shadow:
51
- inset 0 4px #b88b59,
52
- inset 0 5px rgba(0, 0, 0, 0.2),
42
+ box-shadow: inset 0 4px #b88b59, inset 0 5px rgba(0, 0, 0, 0.2),
53
43
  inset 0 0 0 1px rgba(0, 0, 0, 0.1);
54
44
  }
55
45
 
@@ -18,7 +18,6 @@ import { MaterialNote } from '../MaterialNote'
18
18
  import { SensitiveBlock } from '../SensitiveBlock'
19
19
  import { DonatesTeaser } from '../DonatesTeaser'
20
20
  import { AnnouncementInText } from '../AnnouncementInText'
21
- import { RelatedBook } from '../RelatedBook'
22
21
 
23
22
  export const RenderBlocks: React.FC<RenderBlocksProps> = ({
24
23
  block,
@@ -75,7 +74,7 @@ export const RenderBlocks: React.FC<RenderBlocksProps> = ({
75
74
  case 'divider':
76
75
  case 'lead':
77
76
  case 'lead_hr': {
78
- return <SimpleBlock block={block} styleContext={styleContext} />
77
+ return <SimpleBlock block={block} styleContext={styleContext} id={block.id} />
79
78
  }
80
79
 
81
80
  case 'quote':
@@ -97,9 +96,6 @@ export const RenderBlocks: React.FC<RenderBlocksProps> = ({
97
96
  case 'related': {
98
97
  return <RelatedBlock block={block} styleContext={styleContext} />
99
98
  }
100
- case 'related_book': {
101
- return <RelatedBook block={block} styleContext={styleContext} />
102
- }
103
99
 
104
100
  case 'source':
105
101
  return <SourceBlock block={block} styleContext={styleContext} />