@alfalab/core-components-pure-cell 4.8.1 → 4.9.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 (205) hide show
  1. package/{esm/component-6a644022.d.ts → component-5aa16b0d.d.ts} +12 -0
  2. package/{component-81e75437.js → component-5aa16b0d.js} +133 -27
  3. package/{component-21d7b687.d.ts → component-6a954af1.d.ts} +4 -0
  4. package/component.js +1 -1
  5. package/components/addon/component.js +2 -1
  6. package/components/addon/index.css +35 -10
  7. package/components/addon/index.d.ts +1 -1
  8. package/components/addon/index.js +1 -1
  9. package/components/amount/component.js +1 -1
  10. package/components/amount/index.css +2 -2
  11. package/components/amount/index.d.ts +1 -1
  12. package/components/amount/index.js +1 -1
  13. package/components/amount-title/component.js +1 -1
  14. package/components/amount-title/index.css +3 -3
  15. package/components/amount-title/index.d.ts +1 -1
  16. package/components/amount-title/index.js +1 -1
  17. package/components/category/component.js +1 -1
  18. package/components/category/index.css +5 -5
  19. package/components/category/index.d.ts +1 -1
  20. package/components/category/index.js +1 -1
  21. package/components/content/component.js +1 -1
  22. package/components/content/index.css +3 -3
  23. package/components/content/index.d.ts +1 -1
  24. package/components/content/index.js +1 -1
  25. package/components/footer/component.js +1 -1
  26. package/components/footer/index.css +4 -4
  27. package/components/footer/index.d.ts +1 -1
  28. package/components/footer/index.js +1 -1
  29. package/components/footer-button/component.js +1 -1
  30. package/components/footer-button/index.css +2 -2
  31. package/components/footer-button/index.d.ts +1 -1
  32. package/components/footer-button/index.js +1 -1
  33. package/components/footer-text/component.js +1 -1
  34. package/components/footer-text/index.d.ts +1 -1
  35. package/components/footer-text/index.js +1 -1
  36. package/components/graphics/component.js +2 -1
  37. package/components/graphics/index.css +41 -15
  38. package/components/graphics/index.d.ts +1 -1
  39. package/components/graphics/index.js +1 -1
  40. package/components/main/component.js +2 -1
  41. package/components/main/index.css +31 -5
  42. package/components/main/index.d.ts +1 -1
  43. package/components/main/index.js +1 -1
  44. package/components/text/component.js +1 -1
  45. package/components/text/index.css +7 -7
  46. package/components/text/index.d.ts +1 -1
  47. package/components/text/index.js +1 -1
  48. package/{esm/component-21d7b687.d.ts → cssm/component-6a954af1.d.ts} +4 -0
  49. package/{component-81e75437.d.ts → cssm/component-719b272a.d.ts} +12 -0
  50. package/cssm/{component-063660c0.js → component-719b272a.js} +122 -16
  51. package/cssm/component.js +1 -1
  52. package/cssm/components/addon/component.js +2 -1
  53. package/cssm/components/addon/index.d.ts +1 -1
  54. package/cssm/components/addon/index.js +1 -1
  55. package/cssm/components/addon/index.module.css +25 -0
  56. package/cssm/components/amount/component.js +1 -1
  57. package/cssm/components/amount/index.d.ts +1 -1
  58. package/cssm/components/amount/index.js +1 -1
  59. package/cssm/components/amount-title/component.js +1 -1
  60. package/cssm/components/amount-title/index.d.ts +1 -1
  61. package/cssm/components/amount-title/index.js +1 -1
  62. package/cssm/components/category/component.js +1 -1
  63. package/cssm/components/category/index.d.ts +1 -1
  64. package/cssm/components/category/index.js +1 -1
  65. package/cssm/components/content/component.js +1 -1
  66. package/cssm/components/content/index.d.ts +1 -1
  67. package/cssm/components/content/index.js +1 -1
  68. package/cssm/components/footer/component.js +1 -1
  69. package/cssm/components/footer/index.d.ts +1 -1
  70. package/cssm/components/footer/index.js +1 -1
  71. package/cssm/components/footer-button/component.js +1 -1
  72. package/cssm/components/footer-button/index.d.ts +1 -1
  73. package/cssm/components/footer-button/index.js +1 -1
  74. package/cssm/components/footer-text/component.js +1 -1
  75. package/cssm/components/footer-text/index.d.ts +1 -1
  76. package/cssm/components/footer-text/index.js +1 -1
  77. package/cssm/components/graphics/component.js +2 -1
  78. package/cssm/components/graphics/index.d.ts +1 -1
  79. package/cssm/components/graphics/index.js +1 -1
  80. package/cssm/components/graphics/index.module.css +26 -0
  81. package/cssm/components/main/component.js +2 -1
  82. package/cssm/components/main/index.d.ts +1 -1
  83. package/cssm/components/main/index.js +1 -1
  84. package/cssm/components/main/index.module.css +27 -1
  85. package/cssm/components/text/component.js +1 -1
  86. package/cssm/components/text/index.d.ts +1 -1
  87. package/cssm/components/text/index.js +1 -1
  88. package/cssm/index.d.ts +2 -2
  89. package/cssm/index.js +1 -1
  90. package/cssm/index.module.css +4 -4
  91. package/cssm/vars.css +17 -0
  92. package/{cssm/component-21d7b687.d.ts → esm/component-6a954af1.d.ts} +4 -0
  93. package/{modern/component-ef65ce67.d.ts → esm/component-f3f965f3.d.ts} +12 -0
  94. package/esm/{component-6a644022.js → component-f3f965f3.js} +135 -29
  95. package/esm/component.js +1 -1
  96. package/esm/components/addon/component.js +2 -1
  97. package/esm/components/addon/index.css +35 -10
  98. package/esm/components/addon/index.d.ts +1 -1
  99. package/esm/components/addon/index.js +1 -1
  100. package/esm/components/amount/component.js +1 -1
  101. package/esm/components/amount/index.css +2 -2
  102. package/esm/components/amount/index.d.ts +1 -1
  103. package/esm/components/amount/index.js +1 -1
  104. package/esm/components/amount-title/component.js +1 -1
  105. package/esm/components/amount-title/index.css +3 -3
  106. package/esm/components/amount-title/index.d.ts +1 -1
  107. package/esm/components/amount-title/index.js +1 -1
  108. package/esm/components/category/component.js +1 -1
  109. package/esm/components/category/index.css +5 -5
  110. package/esm/components/category/index.d.ts +1 -1
  111. package/esm/components/category/index.js +1 -1
  112. package/esm/components/content/component.js +1 -1
  113. package/esm/components/content/index.css +3 -3
  114. package/esm/components/content/index.d.ts +1 -1
  115. package/esm/components/content/index.js +1 -1
  116. package/esm/components/footer/component.js +1 -1
  117. package/esm/components/footer/index.css +4 -4
  118. package/esm/components/footer/index.d.ts +1 -1
  119. package/esm/components/footer/index.js +1 -1
  120. package/esm/components/footer-button/component.js +1 -1
  121. package/esm/components/footer-button/index.css +2 -2
  122. package/esm/components/footer-button/index.d.ts +1 -1
  123. package/esm/components/footer-button/index.js +1 -1
  124. package/esm/components/footer-text/component.js +1 -1
  125. package/esm/components/footer-text/index.d.ts +1 -1
  126. package/esm/components/footer-text/index.js +1 -1
  127. package/esm/components/graphics/component.js +2 -1
  128. package/esm/components/graphics/index.css +41 -15
  129. package/esm/components/graphics/index.d.ts +1 -1
  130. package/esm/components/graphics/index.js +1 -1
  131. package/esm/components/main/component.js +2 -1
  132. package/esm/components/main/index.css +31 -5
  133. package/esm/components/main/index.d.ts +1 -1
  134. package/esm/components/main/index.js +1 -1
  135. package/esm/components/text/component.js +1 -1
  136. package/esm/components/text/index.css +7 -7
  137. package/esm/components/text/index.d.ts +1 -1
  138. package/esm/components/text/index.js +1 -1
  139. package/esm/index.css +29 -29
  140. package/esm/index.d.ts +2 -2
  141. package/esm/index.js +1 -1
  142. package/index.css +29 -29
  143. package/index.d.ts +2 -2
  144. package/index.js +1 -1
  145. package/{cssm/component-063660c0.d.ts → modern/component-1f635679.d.ts} +12 -0
  146. package/modern/{component-ef65ce67.js → component-1f635679.js} +125 -27
  147. package/modern/{component-21d7b687.d.ts → component-6a954af1.d.ts} +4 -0
  148. package/modern/component.js +1 -1
  149. package/modern/components/addon/component.js +1 -1
  150. package/modern/components/addon/index.css +35 -10
  151. package/modern/components/addon/index.d.ts +1 -1
  152. package/modern/components/addon/index.js +1 -1
  153. package/modern/components/amount/component.js +1 -1
  154. package/modern/components/amount/index.css +2 -2
  155. package/modern/components/amount/index.d.ts +1 -1
  156. package/modern/components/amount/index.js +1 -1
  157. package/modern/components/amount-title/component.js +1 -1
  158. package/modern/components/amount-title/index.css +3 -3
  159. package/modern/components/amount-title/index.d.ts +1 -1
  160. package/modern/components/amount-title/index.js +1 -1
  161. package/modern/components/category/component.js +1 -1
  162. package/modern/components/category/index.css +5 -5
  163. package/modern/components/category/index.d.ts +1 -1
  164. package/modern/components/category/index.js +1 -1
  165. package/modern/components/content/component.js +1 -1
  166. package/modern/components/content/index.css +3 -3
  167. package/modern/components/content/index.d.ts +1 -1
  168. package/modern/components/content/index.js +1 -1
  169. package/modern/components/footer/component.js +1 -1
  170. package/modern/components/footer/index.css +4 -4
  171. package/modern/components/footer/index.d.ts +1 -1
  172. package/modern/components/footer/index.js +1 -1
  173. package/modern/components/footer-button/component.js +1 -1
  174. package/modern/components/footer-button/index.css +2 -2
  175. package/modern/components/footer-button/index.d.ts +1 -1
  176. package/modern/components/footer-button/index.js +1 -1
  177. package/modern/components/footer-text/component.js +1 -1
  178. package/modern/components/footer-text/index.d.ts +1 -1
  179. package/modern/components/footer-text/index.js +1 -1
  180. package/modern/components/graphics/component.js +1 -1
  181. package/modern/components/graphics/index.css +41 -15
  182. package/modern/components/graphics/index.d.ts +1 -1
  183. package/modern/components/graphics/index.js +1 -1
  184. package/modern/components/main/component.js +1 -1
  185. package/modern/components/main/index.css +31 -5
  186. package/modern/components/main/index.d.ts +1 -1
  187. package/modern/components/main/index.js +1 -1
  188. package/modern/components/text/component.js +1 -1
  189. package/modern/components/text/index.css +7 -7
  190. package/modern/components/text/index.d.ts +1 -1
  191. package/modern/components/text/index.js +1 -1
  192. package/modern/index.css +29 -29
  193. package/modern/index.d.ts +2 -2
  194. package/modern/index.js +1 -1
  195. package/package.json +3 -3
  196. package/src/component.tsx +33 -5
  197. package/src/components/addon/component.tsx +35 -3
  198. package/src/components/addon/index.module.css +15 -1
  199. package/src/components/footer-button/component.tsx +32 -1
  200. package/src/components/graphics/component.tsx +33 -2
  201. package/src/components/graphics/index.module.css +16 -1
  202. package/src/components/main/component.tsx +39 -4
  203. package/src/components/main/index.module.css +16 -1
  204. package/src/index.module.css +4 -4
  205. package/src/vars.css +6 -0
@@ -1,4 +1,4 @@
1
- @import '@alfalab/core-components-themes/src/default.css';
1
+ @import '../../vars.css';
2
2
 
3
3
  .component {
4
4
  display: flex;
@@ -37,3 +37,17 @@
37
37
  align-self: flex-end;
38
38
  }
39
39
  }
40
+
41
+ .button {
42
+ @mixin button-reset;
43
+ padding: 0;
44
+ transition: opacity 0.15s ease-in-out;
45
+
46
+ &:hover {
47
+ opacity: var(--pure-cell-clickable-area-hover-opacity);
48
+ }
49
+
50
+ &:active {
51
+ opacity: var(--pure-cell-clickable-area-active-opacity);
52
+ }
53
+ }
@@ -18,10 +18,37 @@ type ComponentProps = Omit<ButtonProps, 'dataTestId'> & {
18
18
  type FooterButtonProps = ComponentProps &
19
19
  Partial<AnchorHTMLAttributes<HTMLAnchorElement> | ButtonHTMLAttributes<HTMLButtonElement>>;
20
20
 
21
+ type FooterButtonMouseEvent = React.MouseEvent<HTMLAnchorElement, MouseEvent> &
22
+ React.MouseEvent<HTMLButtonElement, MouseEvent>;
23
+
24
+ type FooterButtonMouseEventHandler =
25
+ | React.MouseEventHandler<HTMLAnchorElement>
26
+ | React.MouseEventHandler<HTMLButtonElement>;
27
+
21
28
  export const FooterButton = forwardRef<HTMLButtonElement | HTMLAnchorElement, FooterButtonProps>(
22
- ({ children, dataTestId, ...props }, ref) => {
29
+ ({ children, dataTestId, onClick, onMouseDown, onMouseEnter, onMouseLeave, ...props }, ref) => {
23
30
  const pureCellContext = useContext(PureCellContext);
24
31
 
32
+ const handleClick = (e: FooterButtonMouseEvent) => {
33
+ e.stopPropagation();
34
+ (onClick as FooterButtonMouseEventHandler)?.(e);
35
+ };
36
+
37
+ const handleMouseEnter = (e: FooterButtonMouseEvent) => {
38
+ (onMouseEnter as FooterButtonMouseEventHandler)?.(e);
39
+ pureCellContext.unsetMainHover?.();
40
+ };
41
+
42
+ const handleMouseLeave = (e: FooterButtonMouseEvent) => {
43
+ (onMouseLeave as FooterButtonMouseEventHandler)?.(e);
44
+ pureCellContext.setMainHover?.();
45
+ };
46
+
47
+ const handleMouseDown = (e: FooterButtonMouseEvent) => {
48
+ (onMouseDown as FooterButtonMouseEventHandler)?.(e);
49
+ e.stopPropagation();
50
+ };
51
+
25
52
  return (
26
53
  <Button
27
54
  {...props}
@@ -29,6 +56,10 @@ export const FooterButton = forwardRef<HTMLButtonElement | HTMLAnchorElement, Fo
29
56
  dataTestId={getDataTestId(dataTestId || pureCellContext.dataTestId, 'button')}
30
57
  className={styles.component}
31
58
  ref={ref}
59
+ onClick={handleClick}
60
+ onMouseEnter={handleMouseEnter}
61
+ onMouseLeave={handleMouseLeave}
62
+ onMouseDown={handleMouseDown}
32
63
  >
33
64
  {children}
34
65
  </Button>
@@ -29,6 +29,16 @@ export type Props = {
29
29
  * Отступ от графики
30
30
  */
31
31
  graphicPadding?: 'airy' | 'default' | 'compact' | 'tiny' | 'none';
32
+
33
+ /**
34
+ * Клик по контенту графики.
35
+ */
36
+ onClick?: () => void;
37
+ };
38
+
39
+ const GRAPHICS_COMPONENT: Record<string, keyof Pick<React.ReactHTML, 'button' | 'section'>> = {
40
+ button: 'button',
41
+ section: 'section',
32
42
  };
33
43
 
34
44
  export const Graphics: React.FC<Props> = ({
@@ -36,22 +46,43 @@ export const Graphics: React.FC<Props> = ({
36
46
  dataTestId,
37
47
  verticalAlign = 'top',
38
48
  graphicPadding,
49
+ onClick,
39
50
  }) => {
40
51
  const pureCellContext = useContext(PureCellContext);
41
52
 
53
+ const Component = onClick ? GRAPHICS_COMPONENT.button : GRAPHICS_COMPONENT.section;
54
+
42
55
  const defaultGraphicPadding = pureCellContext.direction === 'horizontal' ? 'airy' : 'default';
43
56
 
57
+ const onMouseEvents = {
58
+ onClick: (e: React.MouseEvent<HTMLButtonElement>) => {
59
+ e.stopPropagation();
60
+ onClick?.();
61
+ },
62
+ onMouseEnter: () => {
63
+ pureCellContext.unsetMainHover?.();
64
+ },
65
+ onMouseLeave: () => {
66
+ pureCellContext.setMainHover?.();
67
+ },
68
+ onMouseDown: (e: React.MouseEvent<HTMLButtonElement>) => {
69
+ e.stopPropagation();
70
+ },
71
+ };
72
+
44
73
  return (
45
- <section
74
+ <Component
46
75
  className={cn(
47
76
  styles.component,
48
77
  styles[verticalAlign],
49
78
  styles[pureCellContext.direction || 'horizontal'],
50
79
  styles[graphicPadding || defaultGraphicPadding],
80
+ { [styles.button]: onClick },
51
81
  )}
52
82
  data-test-id={getDataTestId(dataTestId || pureCellContext.dataTestId, 'graphics')}
83
+ {...(onClick && onMouseEvents)}
53
84
  >
54
85
  {children}
55
- </section>
86
+ </Component>
56
87
  );
57
88
  };
@@ -1,4 +1,4 @@
1
- @import '@alfalab/core-components-themes/src/default.css';
1
+ @import '../../vars.css';
2
2
 
3
3
  .component {
4
4
  display: inline-flex;
@@ -59,3 +59,18 @@
59
59
  margin-bottom: var(--gap-2xs);
60
60
  }
61
61
  }
62
+
63
+ .button {
64
+ @mixin button-reset;
65
+ padding: 0;
66
+ transition: opacity 0.15s ease-in-out;
67
+ min-width: auto;
68
+
69
+ &:hover {
70
+ opacity: var(--pure-cell-clickable-area-hover-opacity);
71
+ }
72
+
73
+ &:active {
74
+ opacity: var(--pure-cell-clickable-area-active-opacity);
75
+ }
76
+ }
@@ -29,24 +29,59 @@ type Props = {
29
29
  * Используется модификатор -main
30
30
  */
31
31
  dataTestId?: string;
32
+
33
+ /**
34
+ * Клик по контенту.
35
+ */
36
+ onClick?: () => void;
32
37
  };
33
38
 
34
- export const Main: React.FC<Props> = ({ children, isReverse, className, dataTestId }) => {
35
- const { direction = 'horizontal', dataTestId: contextDataTestId } = useContext(PureCellContext);
39
+ const MAIN_COMPONENT: Record<string, keyof Pick<React.ReactHTML, 'button' | 'section'>> = {
40
+ button: 'button',
41
+ section: 'section',
42
+ };
43
+
44
+ export const Main: React.FC<Props> = ({ children, isReverse, className, dataTestId, onClick }) => {
45
+ const {
46
+ direction = 'horizontal',
47
+ dataTestId: contextDataTestId,
48
+ setMainHover,
49
+ unsetMainHover,
50
+ } = useContext(PureCellContext);
51
+
52
+ const Component = onClick ? MAIN_COMPONENT.button : MAIN_COMPONENT.section;
53
+
54
+ const onMouseEvents = {
55
+ onClick: (e: React.MouseEvent<HTMLButtonElement>) => {
56
+ e.stopPropagation();
57
+ onClick?.();
58
+ },
59
+ onMouseEnter: () => {
60
+ unsetMainHover?.();
61
+ },
62
+ onMouseLeave: () => {
63
+ setMainHover?.();
64
+ },
65
+ onMouseDown: (e: React.MouseEvent<HTMLButtonElement>) => {
66
+ e.stopPropagation();
67
+ },
68
+ };
36
69
 
37
70
  return (
38
- <div
71
+ <Component
39
72
  className={cn(
40
73
  styles.component,
41
74
  styles[direction],
42
75
  {
43
76
  [styles.reverse]: isReverse,
44
77
  },
78
+ { [styles.button]: onClick },
45
79
  className,
46
80
  )}
47
81
  data-test-id={getDataTestId(dataTestId || contextDataTestId, 'main')}
82
+ {...(onClick && onMouseEvents)}
48
83
  >
49
84
  {children}
50
- </div>
85
+ </Component>
51
86
  );
52
87
  };
@@ -1,4 +1,4 @@
1
- @import '@alfalab/core-components-themes/src/default.css';
1
+ @import '../../vars.css';
2
2
 
3
3
  .component {
4
4
  display: flex;
@@ -20,4 +20,19 @@
20
20
  &.reverse {
21
21
  flex-direction: column-reverse;
22
22
  }
23
+
24
+ &.button {
25
+ @mixin button-reset;
26
+ padding: 0;
27
+ transition: opacity 0.15s ease-in-out;
28
+ min-width: auto;
29
+
30
+ &:hover {
31
+ opacity: var(--pure-cell-clickable-area-hover-opacity);
32
+ }
33
+
34
+ &:active {
35
+ opacity: var(--pure-cell-clickable-area-active-opacity);
36
+ }
37
+ }
23
38
  }
@@ -25,11 +25,11 @@
25
25
  transition: opacity 0.15s ease-in-out;
26
26
  padding: 0;
27
27
 
28
- &:hover {
28
+ &.hover {
29
29
  opacity: 0.8;
30
30
  }
31
31
 
32
- &:active {
32
+ &.active {
33
33
  opacity: 0.6;
34
34
  }
35
35
  }
@@ -40,11 +40,11 @@
40
40
  cursor: pointer;
41
41
  transition: opacity 0.15s ease-in-out;
42
42
 
43
- &:hover {
43
+ &.hover {
44
44
  opacity: 0.8;
45
45
  }
46
46
 
47
- &:active {
47
+ &.active {
48
48
  opacity: 0.6;
49
49
  }
50
50
  }
package/src/vars.css ADDED
@@ -0,0 +1,6 @@
1
+ @import '@alfalab/core-components-themes/src/default.css';
2
+
3
+ :root {
4
+ --pure-cell-clickable-area-hover-opacity: 1;
5
+ --pure-cell-clickable-area-active-opacity: 1;
6
+ }