@alfalab/core-components-typography 4.0.0 → 4.2.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 (112) hide show
  1. package/colors.css +33 -33
  2. package/colors.module-70706104.js +6 -0
  3. package/common.module-78c2a0fa.js +6 -0
  4. package/component.js +6 -2
  5. package/cssm/colors.module.css +13 -13
  6. package/cssm/component.js +5 -0
  7. package/cssm/hooks/index.d.ts +1 -0
  8. package/cssm/hooks/index.js +14 -0
  9. package/cssm/hooks/use-skeleton.module.css +19 -0
  10. package/cssm/hooks/useSkeleton.d.ts +12 -0
  11. package/cssm/hooks/useSkeleton.js +59 -0
  12. package/cssm/index.js +5 -0
  13. package/cssm/text/component.d.ts +10 -2
  14. package/cssm/text/component.js +39 -7
  15. package/cssm/text/index.js +5 -0
  16. package/cssm/text/index.module.css +8 -0
  17. package/cssm/title/component.d.ts +19 -2
  18. package/cssm/title/component.js +16 -2
  19. package/cssm/title/index.js +5 -0
  20. package/cssm/title-mobile/component.js +5 -0
  21. package/cssm/title-mobile/index.js +5 -0
  22. package/cssm/title-responsive/component.js +5 -0
  23. package/cssm/title-responsive/index.js +5 -0
  24. package/cssm/types.d.ts +12 -1
  25. package/esm/colors.css +33 -33
  26. package/esm/colors.module-ac92fbac.js +4 -0
  27. package/esm/common.module-95067533.js +4 -0
  28. package/esm/component.js +6 -2
  29. package/esm/hooks/index.d.ts +1 -0
  30. package/esm/hooks/index.js +5 -0
  31. package/esm/hooks/use-skeleton.css +20 -0
  32. package/esm/hooks/useSkeleton.d.ts +12 -0
  33. package/esm/hooks/useSkeleton.js +52 -0
  34. package/esm/index.js +6 -2
  35. package/esm/text/component.d.ts +10 -2
  36. package/esm/text/component.js +39 -9
  37. package/esm/text/index.css +26 -18
  38. package/esm/text/index.js +5 -1
  39. package/esm/title/common.css +5 -5
  40. package/esm/title/component.d.ts +19 -2
  41. package/esm/title/component.js +15 -3
  42. package/esm/title/index.css +19 -19
  43. package/esm/title/index.js +7 -3
  44. package/esm/title-mobile/component.js +7 -3
  45. package/esm/title-mobile/index.css +11 -11
  46. package/esm/title-mobile/index.js +6 -2
  47. package/esm/title-responsive/component.js +7 -3
  48. package/esm/title-responsive/index.css +31 -31
  49. package/esm/title-responsive/index.js +6 -2
  50. package/esm/types.d.ts +12 -1
  51. package/hooks/index.d.ts +1 -0
  52. package/hooks/index.js +13 -0
  53. package/hooks/use-skeleton.css +20 -0
  54. package/hooks/useSkeleton.d.ts +12 -0
  55. package/hooks/useSkeleton.js +60 -0
  56. package/index.js +6 -2
  57. package/modern/colors.css +33 -33
  58. package/modern/colors.module-1a9450b1.js +4 -0
  59. package/modern/common.module-151b3759.js +4 -0
  60. package/modern/component.js +6 -2
  61. package/modern/hooks/index.d.ts +1 -0
  62. package/modern/hooks/index.js +4 -0
  63. package/modern/hooks/use-skeleton.css +20 -0
  64. package/modern/hooks/useSkeleton.d.ts +12 -0
  65. package/modern/hooks/useSkeleton.js +51 -0
  66. package/modern/index.js +6 -2
  67. package/modern/text/component.d.ts +10 -2
  68. package/modern/text/component.js +40 -8
  69. package/modern/text/index.css +26 -18
  70. package/modern/text/index.js +5 -1
  71. package/modern/title/common.css +5 -5
  72. package/modern/title/component.d.ts +19 -2
  73. package/modern/title/component.js +16 -2
  74. package/modern/title/index.css +19 -19
  75. package/modern/title/index.js +7 -3
  76. package/modern/title-mobile/component.js +7 -3
  77. package/modern/title-mobile/index.css +11 -11
  78. package/modern/title-mobile/index.js +6 -2
  79. package/modern/title-responsive/component.js +7 -3
  80. package/modern/title-responsive/index.css +31 -31
  81. package/modern/title-responsive/index.js +6 -2
  82. package/modern/types.d.ts +12 -1
  83. package/package.json +4 -1
  84. package/src/hooks/index.ts +1 -0
  85. package/src/hooks/use-skeleton.module.css +5 -0
  86. package/src/hooks/useSkeleton.tsx +78 -0
  87. package/src/text/component.tsx +74 -22
  88. package/src/text/index.module.css +8 -0
  89. package/src/title/component.tsx +46 -18
  90. package/src/types.ts +14 -0
  91. package/text/component.d.ts +10 -2
  92. package/text/component.js +40 -9
  93. package/text/index.css +26 -18
  94. package/text/index.js +5 -1
  95. package/title/common.css +5 -5
  96. package/title/component.d.ts +19 -2
  97. package/title/component.js +16 -3
  98. package/title/index.css +19 -19
  99. package/title/index.js +7 -3
  100. package/title-mobile/component.js +7 -3
  101. package/title-mobile/index.css +11 -11
  102. package/title-mobile/index.js +6 -2
  103. package/title-responsive/component.js +7 -3
  104. package/title-responsive/index.css +31 -31
  105. package/title-responsive/index.js +6 -2
  106. package/types.d.ts +12 -1
  107. package/colors.module-1c06b16d.js +0 -6
  108. package/common.module-00fb3f71.js +0 -6
  109. package/esm/colors.module-d9f55bc3.js +0 -4
  110. package/esm/common.module-39c4c6a5.js +0 -4
  111. package/modern/colors.module-d0f9b310.js +0 -4
  112. package/modern/common.module-47d6bc91.js +0 -4
@@ -1,8 +1,10 @@
1
1
  import React, { forwardRef, HTMLAttributes } from 'react';
2
+ import mergeRefs from 'react-merge-refs';
2
3
  import cn from 'classnames';
3
4
 
4
5
  import { Color } from '../colors';
5
- import { TextElementType } from '../types';
6
+ import { useSkeleton } from '../hooks';
7
+ import { TextElementType, TextSkeletonProps } from '../types';
6
8
 
7
9
  import colors from '../colors.module.css';
8
10
  import styles from './index.module.css';
@@ -21,6 +23,8 @@ type TextBaseProps = {
21
23
  | 'secondary-medium'
22
24
  | 'secondary-small'
23
25
  | 'component'
26
+ | 'component-primary'
27
+ | 'component-secondary'
24
28
  | 'caps';
25
29
 
26
30
  /**
@@ -67,6 +71,16 @@ type TextBaseProps = {
67
71
  * Количество строк (не поддерживает IE)
68
72
  */
69
73
  rowLimit?: 1 | 2 | 3;
74
+
75
+ /**
76
+ * Показать скелетон
77
+ */
78
+ showSkeleton?: boolean;
79
+
80
+ /**
81
+ * Пропы для скелетона
82
+ */
83
+ skeletonProps?: TextSkeletonProps;
70
84
  };
71
85
 
72
86
  type TextPTagProps = Omit<TextBaseProps, 'tag' | 'defaultMargins'> & {
@@ -76,6 +90,23 @@ type TextPTagProps = Omit<TextBaseProps, 'tag' | 'defaultMargins'> & {
76
90
 
77
91
  export type TextProps = Omit<NativeProps, 'color'> & (TextBaseProps | TextPTagProps);
78
92
 
93
+ const logWarning = (view: Required<TextBaseProps>['view']) => {
94
+ if (process.env.NODE_ENV !== 'development') {
95
+ return;
96
+ }
97
+
98
+ const viewsMap: { [key: string]: string } = {
99
+ component: 'component-primary',
100
+ };
101
+
102
+ // eslint-disable-next-line no-console
103
+ console.warn(
104
+ // eslint-disable-next-line prefer-template
105
+ `@alfalab/core-components/typography: view='${view}' будет удален в следующих мажорных версиях. ` +
106
+ `Используйте view='${viewsMap[view]}'.`,
107
+ );
108
+ };
109
+
79
110
  export const Text = forwardRef<TextElementType, TextProps>(
80
111
  (
81
112
  {
@@ -89,28 +120,49 @@ export const Text = forwardRef<TextElementType, TextProps>(
89
120
  dataTestId,
90
121
  children,
91
122
  rowLimit,
123
+ showSkeleton,
124
+ skeletonProps,
92
125
  ...restProps
93
126
  },
94
127
  ref,
95
- ) => (
96
- <Component
97
- className={cn(
98
- {
99
- [styles.paragraph]: Component === 'p' && !defaultMargins,
100
- [styles.paragraphWithMargins]: Component === 'p' && defaultMargins,
101
- [styles.monospace]: monospaceNumbers,
102
- [styles[`rowLimit${rowLimit}`]]: rowLimit,
103
- },
104
- className,
105
- color && colors[color],
106
- styles[view],
107
- weight && styles[weight],
108
- )}
109
- data-test-id={dataTestId}
110
- ref={ref as never}
111
- {...restProps}
112
- >
113
- {children}
114
- </Component>
115
- ),
128
+ ) => {
129
+ if (view === 'component') {
130
+ logWarning(view);
131
+ }
132
+
133
+ const { renderSkeleton, textRef } = useSkeleton(showSkeleton, skeletonProps);
134
+
135
+ const skeleton = renderSkeleton({
136
+ wrapperClassName: cn({
137
+ [styles.paragraphWithMargins]: Component === 'p' && defaultMargins,
138
+ }),
139
+ dataTestId,
140
+ });
141
+
142
+ if (skeleton) {
143
+ return skeleton;
144
+ }
145
+
146
+ return (
147
+ <Component
148
+ className={cn(
149
+ {
150
+ [styles.paragraph]: Component === 'p' && !defaultMargins,
151
+ [styles.paragraphWithMargins]: Component === 'p' && defaultMargins,
152
+ [styles.monospace]: monospaceNumbers,
153
+ [styles[`rowLimit${rowLimit}`]]: rowLimit,
154
+ },
155
+ className,
156
+ color && colors[color],
157
+ styles[view],
158
+ weight && styles[weight],
159
+ )}
160
+ data-test-id={dataTestId}
161
+ ref={mergeRefs([ref, textRef])}
162
+ {...restProps}
163
+ >
164
+ {children}
165
+ </Component>
166
+ );
167
+ },
116
168
  );
@@ -42,6 +42,14 @@
42
42
  @mixin paragraph_component;
43
43
  }
44
44
 
45
+ .component-primary {
46
+ @mixin paragraph_component_primary;
47
+ }
48
+
49
+ .component-secondary {
50
+ @mixin paragraph_component_secondary;
51
+ }
52
+
45
53
  .caps {
46
54
  @mixin paragraph_caps;
47
55
  }
@@ -1,7 +1,10 @@
1
1
  import React, { forwardRef, HTMLAttributes } from 'react';
2
+ import mergeRefs from 'react-merge-refs';
2
3
  import cn from 'classnames';
3
4
 
4
5
  import { Color } from '../colors';
6
+ import { useSkeleton } from '../hooks';
7
+ import { TextSkeletonProps } from '../types';
5
8
 
6
9
  import colors from '../colors.module.css';
7
10
 
@@ -57,6 +60,16 @@ export type TitleProps = Omit<NativeProps, 'color'> & {
57
60
  * Количество строк (не поддерживает IE)
58
61
  */
59
62
  rowLimit?: 1 | 2 | 3;
63
+
64
+ /**
65
+ * Показать скелетон
66
+ */
67
+ showSkeleton?: boolean;
68
+
69
+ /**
70
+ * Пропы для скелетона
71
+ */
72
+ skeletonProps?: TextSkeletonProps;
60
73
  };
61
74
 
62
75
  type Styles = {
@@ -81,25 +94,40 @@ export const Title = forwardRef<TitleElementType, TitleProps & Styles>(
81
94
  children,
82
95
  rowLimit,
83
96
  styles,
97
+ skeletonProps,
98
+ showSkeleton,
84
99
  ...restProps
85
100
  },
86
101
  ref,
87
- ) => (
88
- <Component
89
- className={cn(
90
- styles.component,
91
- className,
92
- styles[`${font}-${view}`],
93
- defaultMargins && styles[`margins-${view}`],
94
- styles[weight],
95
- color && colors[color],
96
- { [styles[`rowLimit${rowLimit}`]]: rowLimit },
97
- )}
98
- data-test-id={dataTestId}
99
- ref={ref}
100
- {...restProps}
101
- >
102
- {children}
103
- </Component>
104
- ),
102
+ ) => {
103
+ const { renderSkeleton, textRef } = useSkeleton(showSkeleton, skeletonProps);
104
+
105
+ const skeleton = renderSkeleton({
106
+ wrapperClassName: cn(defaultMargins && styles[`margins-${view}`]),
107
+ dataTestId,
108
+ });
109
+
110
+ if (skeleton) {
111
+ return skeleton;
112
+ }
113
+
114
+ return (
115
+ <Component
116
+ className={cn(
117
+ styles.component,
118
+ className,
119
+ styles[`${font}-${view}`],
120
+ defaultMargins && styles[`margins-${view}`],
121
+ styles[weight],
122
+ color && colors[color],
123
+ { [styles[`rowLimit${rowLimit}`]]: rowLimit },
124
+ )}
125
+ data-test-id={dataTestId}
126
+ ref={mergeRefs([ref, textRef])}
127
+ {...restProps}
128
+ >
129
+ {children}
130
+ </Component>
131
+ );
132
+ },
105
133
  );
package/src/types.ts CHANGED
@@ -1 +1,15 @@
1
1
  export type TextElementType = HTMLParagraphElement | HTMLSpanElement | HTMLDivElement;
2
+
3
+ type WidthUnit = number | string;
4
+
5
+ export type TextSkeletonProps = {
6
+ /**
7
+ * Кол-во строк текста
8
+ */
9
+ rows?: number;
10
+
11
+ /**
12
+ * Ширина строки
13
+ */
14
+ width?: WidthUnit | WidthUnit[];
15
+ };
@@ -2,13 +2,13 @@
2
2
  import React from 'react';
3
3
  import { HTMLAttributes } from "react";
4
4
  import { Color } from "../colors";
5
- import { TextElementType } from "../types";
5
+ import { TextElementType, TextSkeletonProps } from "../types";
6
6
  type NativeProps = HTMLAttributes<HTMLSpanElement>;
7
7
  type TextBaseProps = {
8
8
  /**
9
9
  * [Вариант начертания](https://core-ds.github.io/core-components/master/?path=/docs/tokens-assets-типографика--docs)
10
10
  */
11
- view?: 'primary-large' | 'primary-medium' | 'primary-small' | 'secondary-large' | 'secondary-medium' | 'secondary-small' | 'component' | 'caps';
11
+ view?: 'primary-large' | 'primary-medium' | 'primary-small' | 'secondary-large' | 'secondary-medium' | 'secondary-small' | 'component' | 'component-primary' | 'component-secondary' | 'caps';
12
12
  /**
13
13
  * Цвет текста
14
14
  */
@@ -45,6 +45,14 @@ type TextBaseProps = {
45
45
  * Количество строк (не поддерживает IE)
46
46
  */
47
47
  rowLimit?: 1 | 2 | 3;
48
+ /**
49
+ * Показать скелетон
50
+ */
51
+ showSkeleton?: boolean;
52
+ /**
53
+ * Пропы для скелетона
54
+ */
55
+ skeletonProps?: TextSkeletonProps;
48
56
  };
49
57
  type TextPTagProps = Omit<TextBaseProps, 'tag' | 'defaultMargins'> & {
50
58
  tag?: 'p';
package/text/component.js CHANGED
@@ -4,26 +4,57 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib = require('tslib');
6
6
  var React = require('react');
7
+ var mergeRefs = require('react-merge-refs');
7
8
  var cn = require('classnames');
8
- var colors_module = require('../colors.module-1c06b16d.js');
9
+ var hooks_useSkeleton = require('../hooks/useSkeleton.js');
10
+ var colors_module = require('../colors.module-70706104.js');
11
+ require('@alfalab/core-components-skeleton');
12
+ require('@alfalab/hooks');
9
13
 
10
14
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
11
15
 
12
16
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
17
+ var mergeRefs__default = /*#__PURE__*/_interopDefaultCompat(mergeRefs);
13
18
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
14
19
 
15
- var styles = {"paragraph":"typography__paragraph_pm003","paragraphWithMargins":"typography__paragraphWithMargins_pm003","primary-large":"typography__primary-large_pm003","primary-medium":"typography__primary-medium_pm003","primary-small":"typography__primary-small_pm003","secondary-large":"typography__secondary-large_pm003","secondary-medium":"typography__secondary-medium_pm003","secondary-small":"typography__secondary-small_pm003","component":"typography__component_pm003","caps":"typography__caps_pm003","bold":"typography__bold_pm003","medium":"typography__medium_pm003","regular":"typography__regular_pm003","monospace":"typography__monospace_pm003","rowLimit1":"typography__rowLimit1_pm003","rowLimit2":"typography__rowLimit2_pm003","rowLimit3":"typography__rowLimit3_pm003"};
20
+ var styles = {"paragraph":"typography__paragraph_nz4l3","paragraphWithMargins":"typography__paragraphWithMargins_nz4l3","primary-large":"typography__primary-large_nz4l3","primary-medium":"typography__primary-medium_nz4l3","primary-small":"typography__primary-small_nz4l3","secondary-large":"typography__secondary-large_nz4l3","secondary-medium":"typography__secondary-medium_nz4l3","secondary-small":"typography__secondary-small_nz4l3","component":"typography__component_nz4l3","component-primary":"typography__component-primary_nz4l3","component-secondary":"typography__component-secondary_nz4l3","caps":"typography__caps_nz4l3","bold":"typography__bold_nz4l3","medium":"typography__medium_nz4l3","regular":"typography__regular_nz4l3","monospace":"typography__monospace_nz4l3","rowLimit1":"typography__rowLimit1_nz4l3","rowLimit2":"typography__rowLimit2_nz4l3","rowLimit3":"typography__rowLimit3_nz4l3"};
16
21
  require('./index.css')
17
22
 
23
+ var logWarning = function (view) {
24
+ if (process.env.NODE_ENV !== 'development') {
25
+ return;
26
+ }
27
+ var viewsMap = {
28
+ component: 'component-primary',
29
+ };
30
+ // eslint-disable-next-line no-console
31
+ console.warn(
32
+ // eslint-disable-next-line prefer-template
33
+ "@alfalab/core-components/typography: view='".concat(view, "' \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043B\u0435\u043D \u0432 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0445 \u043C\u0430\u0436\u043E\u0440\u043D\u044B\u0445 \u0432\u0435\u0440\u0441\u0438\u044F\u0445. ") +
34
+ "\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 view='".concat(viewsMap[view], "'."));
35
+ };
18
36
  var Text = React.forwardRef(function (_a, ref) {
19
- var _b;
20
- var _c = _a.view, view = _c === void 0 ? 'primary-medium' : _c, _d = _a.tag, Component = _d === void 0 ? 'span' : _d, weight = _a.weight, _e = _a.monospaceNumbers, monospaceNumbers = _e === void 0 ? false : _e, _f = _a.defaultMargins, defaultMargins = _f === void 0 ? true : _f, color = _a.color, className = _a.className, dataTestId = _a.dataTestId, children = _a.children, rowLimit = _a.rowLimit, restProps = tslib.__rest(_a, ["view", "tag", "weight", "monospaceNumbers", "defaultMargins", "color", "className", "dataTestId", "children", "rowLimit"]);
21
- return (React__default.default.createElement(Component, tslib.__assign({ className: cn__default.default((_b = {},
22
- _b[styles.paragraph] = Component === 'p' && !defaultMargins,
37
+ var _b, _c;
38
+ var _d = _a.view, view = _d === void 0 ? 'primary-medium' : _d, _e = _a.tag, Component = _e === void 0 ? 'span' : _e, weight = _a.weight, _f = _a.monospaceNumbers, monospaceNumbers = _f === void 0 ? false : _f, _g = _a.defaultMargins, defaultMargins = _g === void 0 ? true : _g, color = _a.color, className = _a.className, dataTestId = _a.dataTestId, children = _a.children, rowLimit = _a.rowLimit, showSkeleton = _a.showSkeleton, skeletonProps = _a.skeletonProps, restProps = tslib.__rest(_a, ["view", "tag", "weight", "monospaceNumbers", "defaultMargins", "color", "className", "dataTestId", "children", "rowLimit", "showSkeleton", "skeletonProps"]);
39
+ if (view === 'component') {
40
+ logWarning(view);
41
+ }
42
+ var _h = hooks_useSkeleton.useSkeleton(showSkeleton, skeletonProps), renderSkeleton = _h.renderSkeleton, textRef = _h.textRef;
43
+ var skeleton = renderSkeleton({
44
+ wrapperClassName: cn__default.default((_b = {},
23
45
  _b[styles.paragraphWithMargins] = Component === 'p' && defaultMargins,
24
- _b[styles.monospace] = monospaceNumbers,
25
- _b[styles["rowLimit".concat(rowLimit)]] = rowLimit,
26
- _b), className, color && colors_module.colors[color], styles[view], weight && styles[weight]), "data-test-id": dataTestId, ref: ref }, restProps), children));
46
+ _b)),
47
+ dataTestId: dataTestId,
48
+ });
49
+ if (skeleton) {
50
+ return skeleton;
51
+ }
52
+ return (React__default.default.createElement(Component, tslib.__assign({ className: cn__default.default((_c = {},
53
+ _c[styles.paragraph] = Component === 'p' && !defaultMargins,
54
+ _c[styles.paragraphWithMargins] = Component === 'p' && defaultMargins,
55
+ _c[styles.monospace] = monospaceNumbers,
56
+ _c[styles["rowLimit".concat(rowLimit)]] = rowLimit,
57
+ _c), className, color && colors_module.colors[color], styles[view], weight && styles[weight]), "data-test-id": dataTestId, ref: mergeRefs__default.default([ref, textRef]) }, restProps), children));
27
58
  });
28
59
 
29
60
  exports.Text = Text;
package/text/index.css CHANGED
@@ -1,4 +1,4 @@
1
- /* hash: 1o1yf */
1
+ /* hash: r7j9w */
2
2
  :root {
3
3
  } /* deprecated */ :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
4
4
  } :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
@@ -17,66 +17,74 @@
17
17
  } :root {
18
18
  } :root {
19
19
  --text-paragraph-margin-bottom: 0 0 var(--gap-s);
20
- } .typography__paragraph_pm003 {
20
+ } .typography__paragraph_nz4l3 {
21
21
  margin: 0;
22
22
  padding: 0;
23
- } .typography__paragraphWithMargins_pm003 {
23
+ } .typography__paragraphWithMargins_nz4l3 {
24
24
  padding: 0;
25
25
  margin: var(--text-paragraph-margin-bottom);
26
- } .typography__primary-large_pm003 {
26
+ } .typography__primary-large_nz4l3 {
27
27
  font-size: 18px;
28
28
  line-height: 24px;
29
29
  font-weight: 400;
30
- } .typography__primary-medium_pm003 {
30
+ } .typography__primary-medium_nz4l3 {
31
31
  font-size: 16px;
32
32
  line-height: 24px;
33
33
  font-weight: 400;
34
- } .typography__primary-small_pm003 {
34
+ } .typography__primary-small_nz4l3 {
35
35
  font-size: 14px;
36
36
  line-height: 20px;
37
37
  font-weight: 400;
38
- } .typography__secondary-large_pm003 {
38
+ } .typography__secondary-large_nz4l3 {
39
39
  font-size: 13px;
40
40
  line-height: 16px;
41
41
  font-weight: 400;
42
- } .typography__secondary-medium_pm003 {
42
+ } .typography__secondary-medium_nz4l3 {
43
43
  font-size: 12px;
44
44
  line-height: 16px;
45
45
  font-weight: 400;
46
- } .typography__secondary-small_pm003 {
46
+ } .typography__secondary-small_nz4l3 {
47
47
  font-size: 11px;
48
48
  line-height: 16px;
49
49
  font-weight: 400;
50
- } .typography__component_pm003 {
50
+ } .typography__component_nz4l3 {
51
51
  font-size: 16px;
52
52
  line-height: 20px;
53
53
  font-weight: 400;
54
- } .typography__caps_pm003 {
54
+ } .typography__component-primary_nz4l3 {
55
+ font-size: 16px;
56
+ line-height: 20px;
57
+ font-weight: 400;
58
+ } .typography__component-secondary_nz4l3 {
59
+ font-size: 14px;
60
+ line-height: 18px;
61
+ font-weight: 400;
62
+ } .typography__caps_nz4l3 {
55
63
  font-size: 12px;
56
64
  line-height: 16px;
57
65
  font-weight: 500;
58
66
  letter-spacing: 1.25px;
59
67
  text-transform: uppercase;
60
- } .typography__bold_pm003 {
68
+ } .typography__bold_nz4l3 {
61
69
  font-weight: bold;
62
- } .typography__medium_pm003 {
70
+ } .typography__medium_nz4l3 {
63
71
  font-weight: 500;
64
- } .typography__regular_pm003 {
72
+ } .typography__regular_nz4l3 {
65
73
  font-weight: normal;
66
- } .typography__monospace_pm003 {
74
+ } .typography__monospace_nz4l3 {
67
75
  font-variant-numeric: tabular-nums;
68
- } .typography__rowLimit1_pm003 {
76
+ } .typography__rowLimit1_nz4l3 {
69
77
  -webkit-line-clamp: 1;
70
78
  display: -webkit-box;
71
79
  -webkit-box-orient: vertical;
72
80
  overflow: hidden;
73
81
  word-break: break-all;
74
- } .typography__rowLimit2_pm003 {
82
+ } .typography__rowLimit2_nz4l3 {
75
83
  -webkit-line-clamp: 2;
76
84
  display: -webkit-box;
77
85
  -webkit-box-orient: vertical;
78
86
  overflow: hidden;
79
- } .typography__rowLimit3_pm003 {
87
+ } .typography__rowLimit3_nz4l3 {
80
88
  -webkit-line-clamp: 3;
81
89
  display: -webkit-box;
82
90
  -webkit-box-orient: vertical;
package/text/index.js CHANGED
@@ -5,8 +5,12 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var text_component = require('./component.js');
6
6
  require('tslib');
7
7
  require('react');
8
+ require('react-merge-refs');
8
9
  require('classnames');
9
- require('../colors.module-1c06b16d.js');
10
+ require('../hooks/useSkeleton.js');
11
+ require('@alfalab/core-components-skeleton');
12
+ require('@alfalab/hooks');
13
+ require('../colors.module-70706104.js');
10
14
 
11
15
 
12
16
 
package/title/common.css CHANGED
@@ -1,14 +1,14 @@
1
- /* hash: 7cyus */
2
- .typography__component_n0ewz {
1
+ /* hash: 1uj85 */
2
+ .typography__component_a4bxl {
3
3
  margin: 0;
4
4
  padding: 0
5
5
  }
6
- .typography__component_n0ewz.typography__bold_n0ewz {
6
+ .typography__component_a4bxl.typography__bold_a4bxl {
7
7
  font-weight: bold;
8
8
  }
9
- .typography__component_n0ewz.typography__medium_n0ewz {
9
+ .typography__component_a4bxl.typography__medium_a4bxl {
10
10
  font-weight: 500;
11
11
  }
12
- .typography__component_n0ewz.typography__regular_n0ewz {
12
+ .typography__component_a4bxl.typography__regular_a4bxl {
13
13
  font-weight: normal;
14
14
  }
@@ -2,6 +2,7 @@
2
2
  import React from 'react';
3
3
  import { HTMLAttributes } from "react";
4
4
  import { Color } from "../colors";
5
+ import { TextSkeletonProps } from "../types";
5
6
  type NativeProps = HTMLAttributes<HTMLHeadingElement>;
6
7
  type TitleProps = Omit<NativeProps, 'color'> & {
7
8
  /**
@@ -44,6 +45,14 @@ type TitleProps = Omit<NativeProps, 'color'> & {
44
45
  * Количество строк (не поддерживает IE)
45
46
  */
46
47
  rowLimit?: 1 | 2 | 3;
48
+ /**
49
+ * Показать скелетон
50
+ */
51
+ showSkeleton?: boolean;
52
+ /**
53
+ * Пропы для скелетона
54
+ */
55
+ skeletonProps?: TextSkeletonProps;
47
56
  };
48
57
  type Styles = {
49
58
  styles: {
@@ -59,7 +68,7 @@ declare const Title: React.ForwardRefExoticComponent<Omit<NativeProps, "color">
59
68
  /**
60
69
  * [Вариант начертания](https://core-ds.github.io/core-components/master/?path=/docs/guidelines-typography--page)
61
70
  */
62
- view?: "medium" | "xlarge" | "large" | "small" | "xsmall" | undefined;
71
+ view?: "small" | "medium" | "xlarge" | "large" | "xsmall" | undefined;
63
72
  /**
64
73
  * Цвет текста
65
74
  */
@@ -67,7 +76,7 @@ declare const Title: React.ForwardRefExoticComponent<Omit<NativeProps, "color">
67
76
  /**
68
77
  * Толщина шрифта
69
78
  */
70
- weight?: "regular" | "medium" | "bold" | undefined;
79
+ weight?: "bold" | "regular" | "medium" | undefined;
71
80
  /**
72
81
  * Шрифт текста
73
82
  */
@@ -92,5 +101,13 @@ declare const Title: React.ForwardRefExoticComponent<Omit<NativeProps, "color">
92
101
  * Количество строк (не поддерживает IE)
93
102
  */
94
103
  rowLimit?: 1 | 2 | 3 | undefined;
104
+ /**
105
+ * Показать скелетон
106
+ */
107
+ showSkeleton?: boolean | undefined;
108
+ /**
109
+ * Пропы для скелетона
110
+ */
111
+ skeletonProps?: TextSkeletonProps | undefined;
95
112
  } & Styles & React.RefAttributes<TitleElementType>>;
96
113
  export { TitleProps, Title };
@@ -4,18 +4,31 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib = require('tslib');
6
6
  var React = require('react');
7
+ var mergeRefs = require('react-merge-refs');
7
8
  var cn = require('classnames');
8
- var colors_module = require('../colors.module-1c06b16d.js');
9
+ var hooks_useSkeleton = require('../hooks/useSkeleton.js');
10
+ var colors_module = require('../colors.module-70706104.js');
11
+ require('@alfalab/core-components-skeleton');
12
+ require('@alfalab/hooks');
9
13
 
10
14
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
11
15
 
12
16
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
17
+ var mergeRefs__default = /*#__PURE__*/_interopDefaultCompat(mergeRefs);
13
18
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
14
19
 
15
20
  var Title = React.forwardRef(function (_a, ref) {
16
21
  var _b;
17
- var _c = _a.tag, Component = _c === void 0 ? 'div' : _c, _d = _a.view, view = _d === void 0 ? 'medium' : _d, _e = _a.font, font = _e === void 0 ? 'styrene' : _e, _f = _a.weight, weight = _f === void 0 ? font === 'styrene' ? 'medium' : 'bold' : _f, _g = _a.defaultMargins, defaultMargins = _g === void 0 ? false : _g, color = _a.color, className = _a.className, dataTestId = _a.dataTestId, children = _a.children, rowLimit = _a.rowLimit, styles = _a.styles, restProps = tslib.__rest(_a, ["tag", "view", "font", "weight", "defaultMargins", "color", "className", "dataTestId", "children", "rowLimit", "styles"]);
18
- return (React__default.default.createElement(Component, tslib.__assign({ className: cn__default.default(styles.component, className, styles["".concat(font, "-").concat(view)], defaultMargins && styles["margins-".concat(view)], styles[weight], color && colors_module.colors[color], (_b = {}, _b[styles["rowLimit".concat(rowLimit)]] = rowLimit, _b)), "data-test-id": dataTestId, ref: ref }, restProps), children));
22
+ var _c = _a.tag, Component = _c === void 0 ? 'div' : _c, _d = _a.view, view = _d === void 0 ? 'medium' : _d, _e = _a.font, font = _e === void 0 ? 'styrene' : _e, _f = _a.weight, weight = _f === void 0 ? font === 'styrene' ? 'medium' : 'bold' : _f, _g = _a.defaultMargins, defaultMargins = _g === void 0 ? false : _g, color = _a.color, className = _a.className, dataTestId = _a.dataTestId, children = _a.children, rowLimit = _a.rowLimit, styles = _a.styles, skeletonProps = _a.skeletonProps, showSkeleton = _a.showSkeleton, restProps = tslib.__rest(_a, ["tag", "view", "font", "weight", "defaultMargins", "color", "className", "dataTestId", "children", "rowLimit", "styles", "skeletonProps", "showSkeleton"]);
23
+ var _h = hooks_useSkeleton.useSkeleton(showSkeleton, skeletonProps), renderSkeleton = _h.renderSkeleton, textRef = _h.textRef;
24
+ var skeleton = renderSkeleton({
25
+ wrapperClassName: cn__default.default(defaultMargins && styles["margins-".concat(view)]),
26
+ dataTestId: dataTestId,
27
+ });
28
+ if (skeleton) {
29
+ return skeleton;
30
+ }
31
+ return (React__default.default.createElement(Component, tslib.__assign({ className: cn__default.default(styles.component, className, styles["".concat(font, "-").concat(view)], defaultMargins && styles["margins-".concat(view)], styles[weight], color && colors_module.colors[color], (_b = {}, _b[styles["rowLimit".concat(rowLimit)]] = rowLimit, _b)), "data-test-id": dataTestId, ref: mergeRefs__default.default([ref, textRef]) }, restProps), children));
19
32
  });
20
33
 
21
34
  exports.Title = Title;