@alfalab/core-components-pure-cell 4.11.5 → 4.12.0

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 (236) hide show
  1. package/{component-d90dd048.js → component-4a29a846.js} +11 -11
  2. package/component.js +1 -1
  3. package/components/addon/component.js +1 -1
  4. package/components/addon/index.css +16 -15
  5. package/components/addon/index.d.ts +1 -1
  6. package/components/addon/index.js +1 -1
  7. package/components/amount/component.js +1 -1
  8. package/components/amount/index.css +4 -3
  9. package/components/amount/index.d.ts +1 -1
  10. package/components/amount/index.js +1 -1
  11. package/components/amount-title/component.js +1 -1
  12. package/components/amount-title/index.css +3 -3
  13. package/components/amount-title/index.d.ts +1 -1
  14. package/components/amount-title/index.js +1 -1
  15. package/components/category/component.js +1 -1
  16. package/components/category/index.css +12 -9
  17. package/components/category/index.d.ts +1 -1
  18. package/components/category/index.js +1 -1
  19. package/components/content/component.js +1 -1
  20. package/components/content/index.css +3 -3
  21. package/components/content/index.d.ts +1 -1
  22. package/components/content/index.js +1 -1
  23. package/components/footer/component.js +1 -1
  24. package/components/footer/index.css +7 -6
  25. package/components/footer/index.d.ts +1 -1
  26. package/components/footer/index.js +1 -1
  27. package/components/footer-button/component.js +1 -1
  28. package/components/footer-button/index.css +2 -2
  29. package/components/footer-button/index.d.ts +1 -1
  30. package/components/footer-button/index.js +1 -1
  31. package/components/footer-text/component.js +1 -1
  32. package/components/footer-text/index.d.ts +1 -1
  33. package/components/footer-text/index.js +1 -1
  34. package/components/graphics/component.js +1 -1
  35. package/components/graphics/index.css +30 -26
  36. package/components/graphics/index.d.ts +1 -1
  37. package/components/graphics/index.js +1 -1
  38. package/components/main/component.js +1 -1
  39. package/components/main/index.css +9 -8
  40. package/components/main/index.d.ts +1 -1
  41. package/components/main/index.js +1 -1
  42. package/components/text/component.js +1 -1
  43. package/components/text/index.css +12 -10
  44. package/components/text/index.d.ts +1 -1
  45. package/components/text/index.js +1 -1
  46. package/cssm/components/addon/index.module.css +3 -2
  47. package/cssm/components/amount/index.module.css +2 -1
  48. package/cssm/components/category/index.module.css +7 -4
  49. package/cssm/components/footer/index.module.css +3 -2
  50. package/cssm/components/graphics/index.module.css +12 -8
  51. package/cssm/components/main/index.module.css +2 -1
  52. package/cssm/components/text/index.module.css +5 -3
  53. package/cssm/index.module.css +20 -16
  54. package/esm/{component-c9181235.js → component-9fead930.js} +11 -11
  55. package/esm/component.js +1 -1
  56. package/esm/components/addon/component.js +1 -1
  57. package/esm/components/addon/index.css +16 -15
  58. package/esm/components/addon/index.d.ts +1 -1
  59. package/esm/components/addon/index.js +1 -1
  60. package/esm/components/amount/component.js +1 -1
  61. package/esm/components/amount/index.css +4 -3
  62. package/esm/components/amount/index.d.ts +1 -1
  63. package/esm/components/amount/index.js +1 -1
  64. package/esm/components/amount-title/component.js +1 -1
  65. package/esm/components/amount-title/index.css +3 -3
  66. package/esm/components/amount-title/index.d.ts +1 -1
  67. package/esm/components/amount-title/index.js +1 -1
  68. package/esm/components/category/component.js +1 -1
  69. package/esm/components/category/index.css +12 -9
  70. package/esm/components/category/index.d.ts +1 -1
  71. package/esm/components/category/index.js +1 -1
  72. package/esm/components/content/component.js +1 -1
  73. package/esm/components/content/index.css +3 -3
  74. package/esm/components/content/index.d.ts +1 -1
  75. package/esm/components/content/index.js +1 -1
  76. package/esm/components/footer/component.js +1 -1
  77. package/esm/components/footer/index.css +7 -6
  78. package/esm/components/footer/index.d.ts +1 -1
  79. package/esm/components/footer/index.js +1 -1
  80. package/esm/components/footer-button/component.js +1 -1
  81. package/esm/components/footer-button/index.css +2 -2
  82. package/esm/components/footer-button/index.d.ts +1 -1
  83. package/esm/components/footer-button/index.js +1 -1
  84. package/esm/components/footer-text/component.js +1 -1
  85. package/esm/components/footer-text/index.d.ts +1 -1
  86. package/esm/components/footer-text/index.js +1 -1
  87. package/esm/components/graphics/component.js +1 -1
  88. package/esm/components/graphics/index.css +30 -26
  89. package/esm/components/graphics/index.d.ts +1 -1
  90. package/esm/components/graphics/index.js +1 -1
  91. package/esm/components/main/component.js +1 -1
  92. package/esm/components/main/index.css +9 -8
  93. package/esm/components/main/index.d.ts +1 -1
  94. package/esm/components/main/index.js +1 -1
  95. package/esm/components/text/component.js +1 -1
  96. package/esm/components/text/index.css +12 -10
  97. package/esm/components/text/index.d.ts +1 -1
  98. package/esm/components/text/index.js +1 -1
  99. package/esm/index.css +49 -45
  100. package/esm/index.js +1 -1
  101. package/index.css +49 -45
  102. package/index.js +1 -1
  103. package/modern/{component-52ae5b19.js → component-e2f28ea5.js} +11 -11
  104. package/modern/component.js +1 -1
  105. package/modern/components/addon/component.js +1 -1
  106. package/modern/components/addon/index.css +16 -15
  107. package/modern/components/addon/index.d.ts +1 -1
  108. package/modern/components/addon/index.js +1 -1
  109. package/modern/components/amount/component.js +1 -1
  110. package/modern/components/amount/index.css +4 -3
  111. package/modern/components/amount/index.d.ts +1 -1
  112. package/modern/components/amount/index.js +1 -1
  113. package/modern/components/amount-title/component.js +1 -1
  114. package/modern/components/amount-title/index.css +3 -3
  115. package/modern/components/amount-title/index.d.ts +1 -1
  116. package/modern/components/amount-title/index.js +1 -1
  117. package/modern/components/category/component.js +1 -1
  118. package/modern/components/category/index.css +12 -9
  119. package/modern/components/category/index.d.ts +1 -1
  120. package/modern/components/category/index.js +1 -1
  121. package/modern/components/content/component.js +1 -1
  122. package/modern/components/content/index.css +3 -3
  123. package/modern/components/content/index.d.ts +1 -1
  124. package/modern/components/content/index.js +1 -1
  125. package/modern/components/footer/component.js +1 -1
  126. package/modern/components/footer/index.css +7 -6
  127. package/modern/components/footer/index.d.ts +1 -1
  128. package/modern/components/footer/index.js +1 -1
  129. package/modern/components/footer-button/component.js +1 -1
  130. package/modern/components/footer-button/index.css +2 -2
  131. package/modern/components/footer-button/index.d.ts +1 -1
  132. package/modern/components/footer-button/index.js +1 -1
  133. package/modern/components/footer-text/component.js +1 -1
  134. package/modern/components/footer-text/index.d.ts +1 -1
  135. package/modern/components/footer-text/index.js +1 -1
  136. package/modern/components/graphics/component.js +1 -1
  137. package/modern/components/graphics/index.css +30 -26
  138. package/modern/components/graphics/index.d.ts +1 -1
  139. package/modern/components/graphics/index.js +1 -1
  140. package/modern/components/main/component.js +1 -1
  141. package/modern/components/main/index.css +9 -8
  142. package/modern/components/main/index.d.ts +1 -1
  143. package/modern/components/main/index.js +1 -1
  144. package/modern/components/text/component.js +1 -1
  145. package/modern/components/text/index.css +12 -10
  146. package/modern/components/text/index.d.ts +1 -1
  147. package/modern/components/text/index.js +1 -1
  148. package/modern/index.css +49 -45
  149. package/modern/index.js +1 -1
  150. package/moderncssm/component-511ba1c0.d.ts +227 -0
  151. package/moderncssm/component-511ba1c0.js +252 -0
  152. package/moderncssm/component-8c83a9ca.d.ts +125 -0
  153. package/moderncssm/component.d.ts +0 -0
  154. package/moderncssm/component.js +7 -0
  155. package/moderncssm/components/addon/component.d.ts +0 -0
  156. package/moderncssm/components/addon/component.js +5 -0
  157. package/moderncssm/components/addon/index.d.ts +1 -0
  158. package/moderncssm/components/addon/index.js +1 -0
  159. package/moderncssm/components/addon/index.module.css +72 -0
  160. package/moderncssm/components/amount/component.d.ts +0 -0
  161. package/moderncssm/components/amount/component.js +7 -0
  162. package/moderncssm/components/amount/index.d.ts +1 -0
  163. package/moderncssm/components/amount/index.js +1 -0
  164. package/moderncssm/components/amount/index.module.css +6 -0
  165. package/moderncssm/components/amount-title/component.d.ts +0 -0
  166. package/moderncssm/components/amount-title/component.js +7 -0
  167. package/moderncssm/components/amount-title/index.d.ts +1 -0
  168. package/moderncssm/components/amount-title/index.js +1 -0
  169. package/moderncssm/components/amount-title/index.module.css +9 -0
  170. package/moderncssm/components/category/component.d.ts +0 -0
  171. package/moderncssm/components/category/component.js +5 -0
  172. package/moderncssm/components/category/index.d.ts +1 -0
  173. package/moderncssm/components/category/index.js +1 -0
  174. package/moderncssm/components/category/index.module.css +26 -0
  175. package/moderncssm/components/content/component.d.ts +0 -0
  176. package/moderncssm/components/content/component.js +5 -0
  177. package/moderncssm/components/content/index.d.ts +1 -0
  178. package/moderncssm/components/content/index.js +1 -0
  179. package/moderncssm/components/content/index.module.css +12 -0
  180. package/moderncssm/components/footer/component.d.ts +0 -0
  181. package/moderncssm/components/footer/component.js +5 -0
  182. package/moderncssm/components/footer/index.d.ts +1 -0
  183. package/moderncssm/components/footer/index.js +1 -0
  184. package/moderncssm/components/footer/index.module.css +15 -0
  185. package/moderncssm/components/footer-button/component.d.ts +0 -0
  186. package/moderncssm/components/footer-button/component.js +5 -0
  187. package/moderncssm/components/footer-button/index.d.ts +1 -0
  188. package/moderncssm/components/footer-button/index.js +1 -0
  189. package/moderncssm/components/footer-button/index.module.css +5 -0
  190. package/moderncssm/components/footer-text/component.d.ts +0 -0
  191. package/moderncssm/components/footer-text/component.js +4 -0
  192. package/moderncssm/components/footer-text/index.d.ts +1 -0
  193. package/moderncssm/components/footer-text/index.js +1 -0
  194. package/moderncssm/components/graphics/component.d.ts +0 -0
  195. package/moderncssm/components/graphics/component.js +5 -0
  196. package/moderncssm/components/graphics/index.d.ts +1 -0
  197. package/moderncssm/components/graphics/index.js +1 -0
  198. package/moderncssm/components/graphics/index.module.css +92 -0
  199. package/moderncssm/components/main/component.d.ts +0 -0
  200. package/moderncssm/components/main/component.js +5 -0
  201. package/moderncssm/components/main/index.d.ts +1 -0
  202. package/moderncssm/components/main/index.js +1 -0
  203. package/moderncssm/components/main/index.module.css +57 -0
  204. package/moderncssm/components/text/component.d.ts +0 -0
  205. package/moderncssm/components/text/component.js +6 -0
  206. package/moderncssm/components/text/index.d.ts +1 -0
  207. package/moderncssm/components/text/index.js +1 -0
  208. package/moderncssm/components/text/index.module.css +38 -0
  209. package/moderncssm/components/types.d.ts +21 -0
  210. package/moderncssm/components/types.js +1 -0
  211. package/moderncssm/components/typesProps.d.ts +46 -0
  212. package/moderncssm/components/typesProps.js +1 -0
  213. package/moderncssm/index.d.ts +2 -0
  214. package/moderncssm/index.js +1 -0
  215. package/moderncssm/index.module.css +128 -0
  216. package/moderncssm/shared/index.d.ts +1 -0
  217. package/moderncssm/shared/index.js +1 -0
  218. package/moderncssm/utils.d.ts +20 -0
  219. package/moderncssm/utils.js +25 -0
  220. package/moderncssm/vars.css +2 -0
  221. package/package.json +7 -7
  222. package/src/components/addon/index.module.css +2 -2
  223. package/src/components/amount/index.module.css +2 -2
  224. package/src/components/amount-title/index.module.css +1 -1
  225. package/src/components/category/index.module.css +5 -5
  226. package/src/components/content/index.module.css +1 -1
  227. package/src/components/footer/index.module.css +3 -3
  228. package/src/components/footer-button/index.module.css +1 -1
  229. package/src/components/graphics/index.module.css +8 -8
  230. package/src/components/main/index.module.css +1 -1
  231. package/src/components/text/index.module.css +4 -4
  232. package/src/index.module.css +17 -17
  233. package/src/vars.css +1 -1
  234. /package/{component-d90dd048.d.ts → component-4a29a846.d.ts} +0 -0
  235. /package/esm/{component-c9181235.d.ts → component-9fead930.d.ts} +0 -0
  236. /package/modern/{component-52ae5b19.d.ts → component-e2f28ea5.d.ts} +0 -0
@@ -0,0 +1,227 @@
1
+ /// <reference types="react" />
2
+ import React from "react";
3
+ import { ReactNode, AnchorHTMLAttributes, ButtonHTMLAttributes } from "react";
4
+ import { MainElement, GraphicsElement, FooterElement, ContentElement, AddonElement } from "./components/types";
5
+ import { Color, TitleProps } from "@alfalab/core-components-typography";
6
+ import { ButtonProps } from "@alfalab/core-components-button";
7
+ import { AmountProps as AmountType } from "./components/typesProps";
8
+ type Props = {
9
+ /**
10
+ * Компоненты
11
+ */
12
+ children: MainElement;
13
+ /**
14
+ * Позволяет изменить расположение блоков внутри main
15
+ */
16
+ isReverse?: boolean;
17
+ /**
18
+ * Дополнительный класс
19
+ */
20
+ className?: string;
21
+ /**
22
+ * Идентификатор для систем автоматизированного тестирования.
23
+ * Используется модификатор -main
24
+ */
25
+ dataTestId?: string;
26
+ /**
27
+ * Клик по контенту.
28
+ */
29
+ onClick?: () => void;
30
+ };
31
+ declare const Main: React.FC<Props>;
32
+ type Props$0 = {
33
+ /**
34
+ * Компоненты
35
+ */
36
+ children: GraphicsElement;
37
+ /**
38
+ * Идентификатор для систем автоматизированного тестирования.
39
+ * Используется модификатор -graphics
40
+ */
41
+ dataTestId?: string;
42
+ /**
43
+ * Вертикальное выравнивание
44
+ */
45
+ verticalAlign?: "top" | "center" | "bottom";
46
+ /**
47
+ * Отступ от графики
48
+ */
49
+ graphicPadding?: "airy" | "default" | "compact" | "tiny" | "none";
50
+ /**
51
+ * Клик по контенту графики.
52
+ */
53
+ onClick?: () => void;
54
+ };
55
+ declare const Graphics: React.FC<Props$0>;
56
+ type FooterTextProps = {
57
+ /**
58
+ * Цвет текста
59
+ */
60
+ color?: Color;
61
+ /**
62
+ * Идентификатор для систем автоматизированного тестирования.
63
+ * Используется модификатор -footer-title
64
+ */
65
+ dataTestId?: string;
66
+ /**
67
+ * Дочерние элементы.
68
+ */
69
+ children?: ReactNode;
70
+ };
71
+ declare const FooterText: React.FC<FooterTextProps>;
72
+ type ComponentProps = Omit<ButtonProps, "dataTestId"> & {
73
+ /**
74
+ * Идентификатор для систем автоматизированного тестирования.
75
+ * Используется модификатор -button
76
+ */
77
+ dataTestId?: string;
78
+ };
79
+ type FooterButtonProps = ComponentProps & Partial<AnchorHTMLAttributes<HTMLAnchorElement> | ButtonHTMLAttributes<HTMLButtonElement>>;
80
+ declare const FooterButton: React.ForwardRefExoticComponent<FooterButtonProps & React.RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
81
+ type Props$1 = {
82
+ /**
83
+ * Компоненты
84
+ */
85
+ children: FooterElement;
86
+ /**
87
+ * Вертикальные отступы
88
+ */
89
+ footerPadding?: "default" | "none";
90
+ /**
91
+ * Идентификатор для систем автоматизированного тестирования.
92
+ * Используется модификатор -footer
93
+ */
94
+ dataTestId?: string;
95
+ };
96
+ declare const Footer: React.FC<Props$1>;
97
+ type Props$2 = {
98
+ /**
99
+ * Компоненты
100
+ */
101
+ children: ContentElement;
102
+ /**
103
+ * Идентификатор для систем автоматизированного тестирования.
104
+ * Используется модификатор -content
105
+ */
106
+ dataTestId?: string;
107
+ };
108
+ declare const Content: React.FC<Props$2>;
109
+ type Props$3 = {
110
+ /**
111
+ * Наименование категории
112
+ */
113
+ categoryName: string;
114
+ /**
115
+ * Процент категории
116
+ */
117
+ categoryPercent?: number;
118
+ /**
119
+ * Слот справа
120
+ */
121
+ rightAddons?: ReactNode;
122
+ /**
123
+ * Идентификатор для систем автоматизированного тестирования.
124
+ * Для наименования категории используется модификатор -category-name,
125
+ * процент категории -category-percent, слота справа -category-right-addon
126
+ */
127
+ dataTestId?: string;
128
+ };
129
+ declare const Category: React.FC<Props$3>;
130
+ type Props$4 = {
131
+ /**
132
+ * Цвет денежного значения
133
+ * @deprecated Используйте titleProps.color
134
+ */
135
+ color?: Color;
136
+ /**
137
+ * Пропсы, которые будут прокинуты в компонент типографики
138
+ */
139
+ titleProps?: TitleProps;
140
+ /**
141
+ * Идентификатор для систем автоматизированного тестирования.
142
+ * Для typography используется модификатор -amount-title, для компонента Amount -core-amount-title
143
+ */
144
+ dataTestId?: string;
145
+ } & Omit<AmountType, "dataTestId">;
146
+ declare const AmountTitle: React.FC<Props$4>;
147
+ type Props$5 = {
148
+ /**
149
+ * Начертание шрифта денежного значения
150
+ */
151
+ weight?: "bold" | "normal";
152
+ /**
153
+ * Размер денежного значения
154
+ */
155
+ textView?: "component" | "primary-small";
156
+ /**
157
+ * Цвет денежного значения
158
+ */
159
+ color?: Color;
160
+ /**
161
+ * Идентификатор для систем автоматизированного тестирования.
162
+ * Для typography используется модификатор -amount-text, для компонента Amount -amount
163
+ */
164
+ dataTestId?: string;
165
+ } & Omit<AmountType, "dataTestId">;
166
+ declare const Amount: React.FC<Props$5>;
167
+ type Props$6 = {
168
+ /**
169
+ * Вертикальное выравнивание
170
+ */
171
+ verticalAlign?: "auto" | "top" | "center" | "bottom";
172
+ /**
173
+ * Горизонтальные отступы
174
+ */
175
+ addonPadding?: "default" | "none";
176
+ /**
177
+ * Компоненты
178
+ */
179
+ children: AddonElement;
180
+ /**
181
+ * Идентификатор для систем автоматизированного тестирования.
182
+ * Используется модификатор -addon
183
+ */
184
+ dataTestId?: string;
185
+ /**
186
+ * Клик по контенту аддона.
187
+ */
188
+ onClick?: () => void;
189
+ };
190
+ declare const Addon: React.FC<Props$6>;
191
+ type Props$7 = {
192
+ /**
193
+ * Контент
194
+ */
195
+ children?: ReactNode;
196
+ /**
197
+ * Количество строк
198
+ */
199
+ rowLimit?: 1 | 2;
200
+ /**
201
+ * Размер текста
202
+ */
203
+ view?: 'primary-large' | 'primary-medium' | 'primary-small' | 'component' | 'component-primary' | 'secondary-large';
204
+ /**
205
+ * Толщина title
206
+ */
207
+ titleWeight?: 'regular' | 'bold';
208
+ /**
209
+ * Цвет title
210
+ */
211
+ titleColor: Color;
212
+ /**
213
+ * Value ячейки
214
+ */
215
+ value?: ReactNode;
216
+ /**
217
+ * Цвет value
218
+ */
219
+ valueColor?: Color;
220
+ /**
221
+ * Идентификатор для систем автоматизированного тестирования.
222
+ * Для контента используется модификатор -text_content, для value ячейки -text_value
223
+ */
224
+ dataTestId?: string;
225
+ };
226
+ declare const Text: React.FC<Props$7>;
227
+ export { Main, Props$0 as Props, Graphics, FooterTextProps, FooterText, FooterButton, Footer, Content, Category, AmountTitle, Amount, Addon, Text };
@@ -0,0 +1,252 @@
1
+ import React, { useContext, forwardRef, useRef, useState } from 'react';
2
+ import mergeRefs from 'react-merge-refs';
3
+ import cn from 'classnames';
4
+ import { Comment } from '@alfalab/core-components-comment/moderncssm';
5
+ import { useFocus } from '@alfalab/hooks';
6
+ import { getDataTestId } from '@alfalab/core-components-shared/moderncssm';
7
+ import { Amount as Amount$1 } from '@alfalab/core-components-amount/moderncssm';
8
+ import { Typography } from '@alfalab/core-components-typography/moderncssm';
9
+ import styles$1 from './components/amount/index.module.css';
10
+ import styles$2 from './components/amount-title/index.module.css';
11
+ import styles$3 from './components/category/index.module.css';
12
+ import styles$4 from './components/content/index.module.css';
13
+ import styles$5 from './components/footer/index.module.css';
14
+ import { Button } from '@alfalab/core-components-button/moderncssm';
15
+ import styles$6 from './components/footer-button/index.module.css';
16
+ import styles$7 from './components/graphics/index.module.css';
17
+ import styles$8 from './components/main/index.module.css';
18
+ import styles$9 from './components/text/index.module.css';
19
+ import styles$a from './index.module.css';
20
+ import styles from './components/addon/index.module.css';
21
+
22
+ const ADDON_COMPONENT = {
23
+ button: 'button',
24
+ section: 'section',
25
+ };
26
+ const Addon = ({ children, verticalAlign = 'top', addonPadding = 'default', dataTestId, onClick, }) => {
27
+ const pureCellContext = useContext(PureCellContext);
28
+ const Component = onClick ? ADDON_COMPONENT.button : ADDON_COMPONENT.section;
29
+ const onMouseEvents = {
30
+ onClick: (e) => {
31
+ e.stopPropagation();
32
+ onClick?.();
33
+ },
34
+ onMouseEnter: () => {
35
+ pureCellContext.unsetMainHover?.();
36
+ },
37
+ onMouseLeave: () => {
38
+ pureCellContext.setMainHover?.();
39
+ },
40
+ onMouseDown: (e) => {
41
+ e.stopPropagation();
42
+ },
43
+ };
44
+ return (React.createElement(Component, { className: cn(styles.component, styles[addonPadding], styles[verticalAlign], {
45
+ [styles.button]: onClick,
46
+ }), "data-test-id": getDataTestId(dataTestId || pureCellContext.dataTestId, 'addon'), ...(onClick && onMouseEvents) }, children));
47
+ };
48
+
49
+ const Amount = ({ weight = 'normal', textView = 'component', color = 'primary', minority, minorUnits = 100, dataTestId, ...restProps }) => {
50
+ const pureCellContext = useContext(PureCellContext);
51
+ return (React.createElement(Typography.Text, { view: textView, dataTestId: getDataTestId(dataTestId || pureCellContext.dataTestId, 'amount-text'), className: cn(styles$1.component), color: color },
52
+ React.createElement(Amount$1, { minority: minority || minorUnits, bold: weight === 'bold' ? 'full' : 'none', dataTestId: getDataTestId(dataTestId || pureCellContext.dataTestId, 'amount'), ...restProps })));
53
+ };
54
+
55
+ const AmountTitle = ({ minority, minorUnits = 100, className, color = 'primary', dataTestId, titleProps = {}, ...restProps }) => {
56
+ const pureCellContext = useContext(PureCellContext);
57
+ const titleDefaultProps = {
58
+ tag: 'h4',
59
+ view: 'small',
60
+ color,
61
+ ...titleProps,
62
+ };
63
+ return (React.createElement(Typography.TitleResponsive, { ...titleDefaultProps, dataTestId: getDataTestId(dataTestId || pureCellContext.dataTestId, 'amount-title'), className: cn(styles$2.component, titleProps.className) },
64
+ React.createElement(Amount$1, { minority: minority || minorUnits, className: cn(styles$2.weight, className), dataTestId: getDataTestId(dataTestId || pureCellContext.dataTestId, 'core-amount-title'), ...restProps, bold: 'none' })));
65
+ };
66
+
67
+ const Category = ({ categoryName, categoryPercent, rightAddons, dataTestId, }) => {
68
+ const pureCellContext = useContext(PureCellContext);
69
+ return (React.createElement("div", { className: styles$3.component, "data-test-id": 'cell-pure-category' },
70
+ React.createElement(Typography.Text, { view: 'primary-small', color: 'secondary', dataTestId: getDataTestId(dataTestId || pureCellContext.dataTestId, 'category-name'), className: styles$3.categoryName }, categoryName),
71
+ categoryPercent !== undefined && (React.createElement(Typography.Text, { tag: 'div', view: 'primary-small', color: 'secondary', className: styles$3.categoryPercent, dataTestId: getDataTestId(dataTestId || pureCellContext.dataTestId, 'category-percent') },
72
+ categoryPercent,
73
+ "%")),
74
+ rightAddons !== undefined && (React.createElement("div", { className: styles$3.rightAddon, "data-test-id": getDataTestId(dataTestId || pureCellContext.dataTestId, 'category-right-addon') }, rightAddons))));
75
+ };
76
+
77
+ const Content = ({ children, dataTestId }) => {
78
+ const { direction, dataTestId: contextDataTestId } = useContext(PureCellContext);
79
+ return (React.createElement("section", { className: cn(styles$4.component, { [styles$4.horizontal]: direction === 'horizontal' }), "data-test-id": getDataTestId(dataTestId || contextDataTestId, 'content') }, children));
80
+ };
81
+
82
+ const Footer = ({ children, footerPadding = 'default', dataTestId }) => {
83
+ const pureCellContext = useContext(PureCellContext);
84
+ return (React.createElement("footer", { className: cn(styles$5.component, styles$5[footerPadding]), "data-test-id": getDataTestId(dataTestId || pureCellContext.dataTestId, 'footer') }, children));
85
+ };
86
+
87
+ const FooterButton = forwardRef(({ children, dataTestId, onClick, onMouseDown, onMouseEnter, onMouseLeave, ...props }, ref) => {
88
+ const pureCellContext = useContext(PureCellContext);
89
+ const handleClick = (e) => {
90
+ e.stopPropagation();
91
+ onClick?.(e);
92
+ };
93
+ const handleMouseEnter = (e) => {
94
+ onMouseEnter?.(e);
95
+ pureCellContext.unsetMainHover?.();
96
+ };
97
+ const handleMouseLeave = (e) => {
98
+ onMouseLeave?.(e);
99
+ pureCellContext.setMainHover?.();
100
+ };
101
+ const handleMouseDown = (e) => {
102
+ onMouseDown?.(e);
103
+ e.stopPropagation();
104
+ };
105
+ return (React.createElement(Button, { ...props, size: 'xxs', dataTestId: getDataTestId(dataTestId || pureCellContext.dataTestId, 'button'), className: styles$6.component, ref: ref, onClick: handleClick, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onMouseDown: handleMouseDown }, children));
106
+ });
107
+
108
+ const FooterText = ({ children, color = 'secondary', dataTestId, }) => {
109
+ const pureCellContext = useContext(PureCellContext);
110
+ return (React.createElement(Typography.Text, { view: 'primary-small', color: color, "data-test-id": getDataTestId(dataTestId || pureCellContext.dataTestId, 'footer-title') }, children));
111
+ };
112
+
113
+ const GRAPHICS_COMPONENT = {
114
+ button: 'button',
115
+ section: 'section',
116
+ };
117
+ const Graphics = ({ children, dataTestId, verticalAlign = 'top', graphicPadding, onClick, }) => {
118
+ const pureCellContext = useContext(PureCellContext);
119
+ const Component = onClick ? GRAPHICS_COMPONENT.button : GRAPHICS_COMPONENT.section;
120
+ const defaultGraphicPadding = pureCellContext.direction === 'horizontal' ? 'airy' : 'default';
121
+ const onMouseEvents = {
122
+ onClick: (e) => {
123
+ e.stopPropagation();
124
+ onClick?.();
125
+ },
126
+ onMouseEnter: () => {
127
+ pureCellContext.unsetMainHover?.();
128
+ },
129
+ onMouseLeave: () => {
130
+ pureCellContext.setMainHover?.();
131
+ },
132
+ onMouseDown: (e) => {
133
+ e.stopPropagation();
134
+ },
135
+ };
136
+ return (React.createElement(Component, { className: cn(styles$7.component, styles$7[verticalAlign], styles$7[pureCellContext.direction || 'horizontal'], styles$7[graphicPadding || defaultGraphicPadding], { [styles$7.button]: onClick }), "data-test-id": getDataTestId(dataTestId || pureCellContext.dataTestId, 'graphics'), ...(onClick && onMouseEvents) }, children));
137
+ };
138
+
139
+ const MAIN_COMPONENT = {
140
+ button: 'button',
141
+ section: 'section',
142
+ };
143
+ const Main = ({ children, isReverse, className, dataTestId, onClick }) => {
144
+ const { direction = 'horizontal', dataTestId: contextDataTestId, setMainHover, unsetMainHover, } = useContext(PureCellContext);
145
+ const Component = onClick ? MAIN_COMPONENT.button : MAIN_COMPONENT.section;
146
+ const onMouseEvents = {
147
+ onClick: (e) => {
148
+ e.stopPropagation();
149
+ onClick?.();
150
+ },
151
+ onMouseEnter: () => {
152
+ unsetMainHover?.();
153
+ },
154
+ onMouseLeave: () => {
155
+ setMainHover?.();
156
+ },
157
+ onMouseDown: (e) => {
158
+ e.stopPropagation();
159
+ },
160
+ };
161
+ return (React.createElement(Component, { className: cn(styles$8.component, styles$8[direction], {
162
+ [styles$8.reverse]: isReverse,
163
+ }, { [styles$8.button]: onClick }, className), "data-test-id": getDataTestId(dataTestId || contextDataTestId, 'main'), ...(onClick && onMouseEvents) }, children));
164
+ };
165
+
166
+ const Text = ({ children, value, rowLimit, view = 'component-primary', titleWeight, titleColor, valueColor, dataTestId, }) => {
167
+ const { direction = 'horizontal', dataTestId: contextDataTestId } = useContext(PureCellContext);
168
+ const className = rowLimit && styles$9[`rowLimit${rowLimit}`];
169
+ return (React.createElement("div", { className: cn(styles$9.component, {
170
+ [styles$9.vertical]: direction !== 'horizontal',
171
+ }) },
172
+ React.createElement("div", { className: styles$9.title },
173
+ React.createElement(Typography.Text, { view: view, weight: titleWeight, tag: 'div', color: titleColor, className: className, "data-test-id": getDataTestId(dataTestId || contextDataTestId, 'text_content') }, children)),
174
+ value && (React.createElement("div", { className: styles$9.value },
175
+ React.createElement(Typography.Text, { view: view, tag: 'div', color: valueColor, className: className, "data-test-id": getDataTestId(dataTestId || contextDataTestId, 'text_value') }, value)))));
176
+ };
177
+
178
+ /* eslint-disable react/jsx-no-constructed-context-values */
179
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
180
+ const PureCellContext = React.createContext({});
181
+ const PureCellComponent = forwardRef(({ className, dataTestId, onClick, href, tag: Component = (href && 'a') || (onClick && 'button') || 'section', children, horizontalPadding = 'none', verticalPadding = 'none', direction = 'horizontal', ...restProps }, ref) => {
182
+ const cellRef = useRef(null);
183
+ const [focused] = useFocus(cellRef, 'keyboard');
184
+ const [hoverState, setHoverState] = useState(false);
185
+ const [activeState, setActiveState] = useState(false);
186
+ const setHover = () => setHoverState(true);
187
+ const unsetHover = () => setHoverState(false);
188
+ const setActive = () => setActiveState(true);
189
+ const unsetActive = () => setActiveState(false);
190
+ const mouseEvents = {
191
+ onMouseEnter: setHover,
192
+ onMouseLeave: unsetHover,
193
+ onMouseDown: setActive,
194
+ onMouseUp: unsetActive,
195
+ };
196
+ const addClasses = {
197
+ [styles$a.component]: true,
198
+ [styles$a.focused]: focused,
199
+ [styles$a[direction]]: true,
200
+ [styles$a[horizontalPadding]]: true,
201
+ [styles$a.hover]: hoverState,
202
+ [styles$a.active]: activeState,
203
+ };
204
+ const contextState = {
205
+ direction,
206
+ dataTestId,
207
+ setMainHover: setHover,
208
+ unsetMainHover: unsetHover,
209
+ };
210
+ if (typeof verticalPadding === 'string') {
211
+ addClasses[styles$a[verticalPadding]] = typeof verticalPadding === 'string';
212
+ }
213
+ if (typeof verticalPadding === 'object') {
214
+ addClasses[styles$a[`${verticalPadding.top}Top`]] = !!verticalPadding.top;
215
+ addClasses[styles$a[`${verticalPadding.bottom}Bottom`]] = !!verticalPadding.bottom;
216
+ }
217
+ if (href) {
218
+ const { target } = restProps;
219
+ // Для совместимости с react-router-dom, меняем href на to
220
+ const hrefProps = { [typeof Component === 'string' ? 'href' : 'to']: href };
221
+ return (React.createElement(Component, { rel: target === '_blank' ? 'noreferrer noopener' : undefined, ...restProps, ...hrefProps, ref: mergeRefs([cellRef, ref]), className: cn(styles$a.link, addClasses, className), "data-test-id": dataTestId, onClick: onClick, ...mouseEvents },
222
+ React.createElement(PureCellContext.Provider, { value: contextState }, children)));
223
+ }
224
+ if (onClick) {
225
+ return (React.createElement(Component, { ...restProps, ref: mergeRefs([cellRef, ref]), className: cn(styles$a.button, addClasses, className), "data-test-id": dataTestId, onClick: onClick, ...mouseEvents },
226
+ React.createElement(PureCellContext.Provider, { value: contextState }, children)));
227
+ }
228
+ return (React.createElement(Component, { ...restProps, ref: ref, tabIndex: 0, className: cn(addClasses, className), "data-test-id": dataTestId },
229
+ React.createElement(PureCellContext.Provider, { value: contextState }, children)));
230
+ });
231
+ /**
232
+ * Универсальный конструктор для сборки любой ячейки.
233
+ *
234
+ * [Макет](https://www.figma.com/file/KlFOLLkKO8rtvvQE3RXuhq/Click-Library?node-id=43525%3A240018)
235
+ */
236
+ const PureCell = Object.assign(PureCellComponent, {
237
+ Main,
238
+ Graphics,
239
+ Content,
240
+ Text,
241
+ Amount,
242
+ AmountTitle,
243
+ Addon,
244
+ Footer,
245
+ ExtraSubtitle: FooterText,
246
+ FooterButton,
247
+ Comment,
248
+ Category,
249
+ });
250
+ PureCellComponent.displayName = 'PureCellComponent';
251
+
252
+ export { Addon as A, Category as C, Footer as F, Graphics as G, Main as M, PureCell as P, Text as T, Amount as a, AmountTitle as b, Content as c, FooterButton as d, FooterText as e, PureCellContext as f };
@@ -0,0 +1,125 @@
1
+ /// <reference types="react" />
2
+ import React from 'react';
3
+ import { AnchorHTMLAttributes, ButtonHTMLAttributes, ElementType, HTMLAttributes } from "react";
4
+ import { ButtonProps } from "@alfalab/core-components-button";
5
+ import { FooterTextProps } from "./components/footer-text/index";
6
+ import { PureCellElement } from "./components/types";
7
+ type PureCellContext = {
8
+ /** Направление */
9
+ direction?: 'horizontal' | 'vertical';
10
+ dataTestId?: string;
11
+ setMainHover?: () => void;
12
+ unsetMainHover?: () => void;
13
+ };
14
+ declare const PureCellContext: React.Context<PureCellContext>;
15
+ type BasePureCellProps = {
16
+ /**
17
+ * Направление
18
+ */
19
+ direction?: 'horizontal' | 'vertical';
20
+ /**
21
+ * Сss класс для стилизации общей обёртки
22
+ */
23
+ className?: string;
24
+ /**
25
+ * Выводит ссылку в виде ячейки
26
+ */
27
+ href?: string;
28
+ /**
29
+ * Вертикальные отступы
30
+ */
31
+ verticalPadding?: 'airy' | 'default' | 'compact' | 'tiny' | 'none' | {
32
+ /**
33
+ * Вертикальный отступ сверху
34
+ */
35
+ top?: 'airy' | 'default' | 'compact' | 'tiny' | 'none';
36
+ /**
37
+ * Вертикальный отступ снизу
38
+ */
39
+ bottom?: 'airy' | 'default' | 'compact' | 'tiny' | 'none';
40
+ };
41
+ /**
42
+ * Горизонтальные отступы
43
+ */
44
+ horizontalPadding?: 'left' | 'right' | 'both' | 'none';
45
+ /**
46
+ * Позволяет использовать кастомный компонент для кнопки (например Link из роутера)
47
+ */
48
+ tag?: ElementType;
49
+ /**
50
+ * Компоненты
51
+ */
52
+ children: PureCellElement;
53
+ /**
54
+ * Идентификатор для систем автоматизированного тестирования
55
+ */
56
+ dataTestId?: string;
57
+ };
58
+ type AnchorPureCellProps = BasePureCellProps & AnchorHTMLAttributes<HTMLAnchorElement>;
59
+ type ButtonPureCellProps = BasePureCellProps & ButtonHTMLAttributes<HTMLButtonElement>;
60
+ type ElementPureCellProps = BasePureCellProps & HTMLAttributes<HTMLElement>;
61
+ type PureCellProps = Partial<AnchorPureCellProps | ButtonPureCellProps | ElementPureCellProps>;
62
+ /**
63
+ * Универсальный конструктор для сборки любой ячейки.
64
+ *
65
+ * [Макет](https://www.figma.com/file/KlFOLLkKO8rtvvQE3RXuhq/Click-Library?node-id=43525%3A240018)
66
+ */
67
+ declare const PureCell: React.ForwardRefExoticComponent<PureCellProps & React.RefAttributes<HTMLElement>> & {
68
+ Main: React.FC<{
69
+ children: import("./components/types").MainElement;
70
+ isReverse?: boolean | undefined;
71
+ className?: string | undefined;
72
+ dataTestId?: string | undefined;
73
+ onClick?: (() => void) | undefined;
74
+ }>;
75
+ Graphics: React.FC<import("./components/graphics/index").Props>;
76
+ Content: React.FC<{
77
+ children: import("./components/types").ContentElement;
78
+ dataTestId?: string | undefined;
79
+ }>;
80
+ Text: React.FC<{
81
+ children?: React.ReactNode;
82
+ rowLimit?: 1 | 2 | undefined;
83
+ view?: "component" | "primary-large" | "primary-medium" | "primary-small" | "secondary-large" | "component-primary" | undefined;
84
+ titleWeight?: "bold" | "regular" | undefined;
85
+ titleColor: "link" | "accent" | "primary" | "primary-inverted" | "secondary" | "secondary-inverted" | "tertiary" | "tertiary-inverted" | "attention" | "positive" | "negative" | "static-accent" | "disabled" | "static-primary-light" | "static-secondary-light" | "static-tertiary-light" | "static-primary-dark" | "static-secondary-dark" | "static-tertiary-dark";
86
+ value?: React.ReactNode;
87
+ valueColor?: "link" | "accent" | "primary" | "primary-inverted" | "secondary" | "secondary-inverted" | "tertiary" | "tertiary-inverted" | "attention" | "positive" | "negative" | "static-accent" | "disabled" | "static-primary-light" | "static-secondary-light" | "static-tertiary-light" | "static-primary-dark" | "static-secondary-dark" | "static-tertiary-dark" | undefined;
88
+ dataTestId?: string | undefined;
89
+ }>;
90
+ Amount: React.FC<{
91
+ weight?: "bold" | "normal" | undefined;
92
+ textView?: "component" | "primary-small" | undefined;
93
+ color?: "link" | "accent" | "primary" | "primary-inverted" | "secondary" | "secondary-inverted" | "tertiary" | "tertiary-inverted" | "attention" | "positive" | "negative" | "static-accent" | "disabled" | "static-primary-light" | "static-secondary-light" | "static-tertiary-light" | "static-primary-dark" | "static-secondary-dark" | "static-tertiary-dark" | undefined;
94
+ dataTestId?: string | undefined;
95
+ } & Omit<import("./components/typesProps").AmountProps, "dataTestId">>;
96
+ AmountTitle: React.FC<{
97
+ color?: "link" | "accent" | "primary" | "primary-inverted" | "secondary" | "secondary-inverted" | "tertiary" | "tertiary-inverted" | "attention" | "positive" | "negative" | "static-accent" | "disabled" | "static-primary-light" | "static-secondary-light" | "static-tertiary-light" | "static-primary-dark" | "static-secondary-dark" | "static-tertiary-dark" | undefined;
98
+ titleProps?: import("@alfalab/core-components-typography").TitleProps | undefined;
99
+ dataTestId?: string | undefined;
100
+ } & Omit<import("./components/typesProps").AmountProps, "dataTestId">>;
101
+ Addon: React.FC<{
102
+ verticalAlign?: "center" | "auto" | "top" | "bottom" | undefined;
103
+ addonPadding?: "none" | "default" | undefined;
104
+ children: import("./components/types").AddonElement;
105
+ dataTestId?: string | undefined;
106
+ onClick?: (() => void) | undefined;
107
+ }>;
108
+ Footer: React.FC<{
109
+ children: import("./components/types").FooterElement;
110
+ footerPadding?: "none" | "default" | undefined;
111
+ dataTestId?: string | undefined;
112
+ }>;
113
+ ExtraSubtitle: React.FC<FooterTextProps>;
114
+ FooterButton: React.ForwardRefExoticComponent<(Omit<ButtonProps, "dataTestId"> & {
115
+ dataTestId?: string | undefined;
116
+ } & Partial<React.AnchorHTMLAttributes<HTMLAnchorElement> | React.ButtonHTMLAttributes<HTMLButtonElement>>) & React.RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
117
+ Comment: React.FC<import("@alfalab/core-components-comment").CommentProps>;
118
+ Category: React.FC<{
119
+ categoryName: string;
120
+ categoryPercent?: number | undefined;
121
+ rightAddons?: React.ReactNode;
122
+ dataTestId?: string | undefined;
123
+ }>;
124
+ };
125
+ export { PureCellContext, PureCellProps, PureCell };
File without changes
@@ -0,0 +1,7 @@
1
+ import 'react';
2
+ import 'react-merge-refs';
3
+ import 'classnames';
4
+ import '@alfalab/core-components-comment/moderncssm';
5
+ import '@alfalab/hooks';
6
+ export { P as PureCell, f as PureCellContext } from './component-511ba1c0.js';
7
+ import './index.module.css';
File without changes
@@ -0,0 +1,5 @@
1
+ import 'react';
2
+ import 'classnames';
3
+ import '@alfalab/core-components-shared/moderncssm';
4
+ export { A as Addon } from '../../component-511ba1c0.js';
5
+ import './index.module.css';
@@ -0,0 +1 @@
1
+ export * from "../../component-511ba1c0";
@@ -0,0 +1 @@
1
+ export { A as Addon } from '../../component-511ba1c0.js';