@cloud-ru/ds-info-block 1.0.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 (42) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +201 -0
  3. package/README.md +115 -0
  4. package/dist/cjs/components/InfoBlock/InfoBlock.d.ts +21 -0
  5. package/dist/cjs/components/InfoBlock/InfoBlock.js +18 -0
  6. package/dist/cjs/components/InfoBlock/index.d.ts +1 -0
  7. package/dist/cjs/components/InfoBlock/index.js +17 -0
  8. package/dist/cjs/components/InfoBlock/styles.module.css +144 -0
  9. package/dist/cjs/components/index.d.ts +1 -0
  10. package/dist/cjs/components/index.js +17 -0
  11. package/dist/cjs/constants.d.ts +21 -0
  12. package/dist/cjs/constants.js +24 -0
  13. package/dist/cjs/index.d.ts +3 -0
  14. package/dist/cjs/index.js +19 -0
  15. package/dist/cjs/package.json +3 -0
  16. package/dist/cjs/style.css +144 -0
  17. package/dist/cjs/types.d.ts +4 -0
  18. package/dist/cjs/types.js +2 -0
  19. package/dist/esm/components/InfoBlock/InfoBlock.d.ts +21 -0
  20. package/dist/esm/components/InfoBlock/InfoBlock.js +12 -0
  21. package/dist/esm/components/InfoBlock/index.d.ts +1 -0
  22. package/dist/esm/components/InfoBlock/index.js +1 -0
  23. package/dist/esm/components/InfoBlock/styles.module.css +144 -0
  24. package/dist/esm/components/index.d.ts +1 -0
  25. package/dist/esm/components/index.js +1 -0
  26. package/dist/esm/constants.d.ts +21 -0
  27. package/dist/esm/constants.js +21 -0
  28. package/dist/esm/index.d.ts +3 -0
  29. package/dist/esm/index.js +3 -0
  30. package/dist/esm/style.css +144 -0
  31. package/dist/esm/types.d.ts +4 -0
  32. package/dist/esm/types.js +1 -0
  33. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  34. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  35. package/package.json +43 -0
  36. package/src/components/InfoBlock/InfoBlock.tsx +81 -0
  37. package/src/components/InfoBlock/index.ts +1 -0
  38. package/src/components/InfoBlock/styles.module.scss +109 -0
  39. package/src/components/index.ts +1 -0
  40. package/src/constants.ts +24 -0
  41. package/src/index.ts +3 -0
  42. package/src/types.ts +6 -0
@@ -0,0 +1,144 @@
1
+ .contentLayout{
2
+ display:flex;
3
+ flex-direction:column;
4
+ }
5
+
6
+ .textWrap{
7
+ display:flex;
8
+ flex-direction:column;
9
+ }
10
+
11
+ .footer{
12
+ position:relative;
13
+ box-sizing:border-box;
14
+ width:100%;
15
+ }
16
+
17
+ .title{
18
+ color:var(--sn-theme-color-available-version-textMain, var(--sn-brand-color-text-version-main, #41424e));
19
+ }
20
+
21
+ .description{
22
+ color:var(--sn-theme-color-available-version-textSecondary, var(--sn-brand-color-text-version-secondary, rgba(65, 66, 78, 0.8)));
23
+ }
24
+
25
+ .infoBlock{
26
+ display:flex;
27
+ box-sizing:border-box;
28
+ }
29
+ .infoBlock[data-size=s]{
30
+ gap:var(--sn-infoBlock-anatomy-size-s-container-gap, var(--sn-density-spacing-interval-s, var(--sn-primitive-dimension-8, 8px)));
31
+ max-width:624px;
32
+ }
33
+ .infoBlock[data-size=m]{
34
+ gap:var(--sn-infoBlock-anatomy-size-m-container-gap, var(--sn-density-spacing-interval-m, var(--sn-primitive-dimension-16, 16px)));
35
+ max-width:624px;
36
+ }
37
+ .infoBlock[data-size=l]{
38
+ gap:var(--sn-infoBlock-anatomy-size-l-container-gap, var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px)));
39
+ max-width:624px;
40
+ }
41
+ .infoBlock[data-align=vertical]{
42
+ flex-direction:column;
43
+ align-items:center;
44
+ }
45
+ .infoBlock[data-align=vertical] .contentLayout{
46
+ align-items:center;
47
+ }
48
+ .infoBlock[data-align=vertical] .textWrap{
49
+ align-items:center;
50
+ }
51
+ .infoBlock[data-align=vertical] .footer{
52
+ width:auto;
53
+ text-align:center;
54
+ }
55
+ .infoBlock[data-align=vertical] .description,
56
+ .infoBlock[data-align=vertical] .title{
57
+ text-align:center;
58
+ }
59
+ .infoBlock[data-align=horizontal]{
60
+ flex-direction:row;
61
+ align-items:flex-start;
62
+ }
63
+ .infoBlock[data-align=horizontal] .contentLayout{
64
+ flex:1 0 0;
65
+ align-items:flex-start;
66
+ min-width:0;
67
+ }
68
+ .infoBlock[data-align=horizontal] .textWrap{
69
+ align-items:flex-start;
70
+ }
71
+ .infoBlock[data-align=horizontal] .footer{
72
+ display:flex;
73
+ justify-content:flex-start;
74
+ }
75
+ .infoBlock[data-align=horizontal] .description,
76
+ .infoBlock[data-align=horizontal] .title{
77
+ text-align:left;
78
+ }
79
+ .infoBlock[data-size=s] .contentLayout{
80
+ gap:var(--sn-infoBlock-anatomy-size-s-container-content-gap, var(--sn-density-spacing-interval-m, var(--sn-primitive-dimension-16, 16px)));
81
+ }
82
+ .infoBlock[data-size=s] .textWrap{
83
+ gap:var(--sn-infoBlock-anatomy-size-s-container-content-text-gap, var(--sn-density-spacing-interval-xs, var(--sn-primitive-dimension-4, 4px)));
84
+ }
85
+ .infoBlock[data-size=s] .title{
86
+ font-family:var(--sn-regular-title-s-fontFamily, var(--sn-brand-font-fontFamily-regular-title, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
87
+ font-weight:var(--sn-regular-title-s-fontWeight, var(--sn-theme-typography-fontWeight-regular-title-s, var(--sn-brand-font-fontWeight-light-regular-title-s, var(--sn-primitive-font-fontWeightValue-600, 600))));
88
+ line-height:var(--sn-regular-title-s-lineHeight, var(--sn-density-typography-roleTitle-lineHeightS, var(--sn-primitive-font-lineHeight-by14, 20px)));
89
+ font-size:var(--sn-regular-title-s-fontSize, var(--sn-density-typography-roleTitle-fontSizeS, var(--sn-primitive-font-fontSize-14, 14px)));
90
+ letter-spacing:var(--sn-regular-title-s-letterSpacing, var(--sn-primitive-font-letterSpacing-l, 0.15px));
91
+ paragraph-spacing:var(--sn-regular-title-s-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
92
+ }
93
+ .infoBlock[data-size=s] .description{
94
+ font-family:var(--sn-regular-body-s-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
95
+ font-weight:var(--sn-regular-body-s-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-s, var(--sn-brand-font-fontWeight-light-regular-body-s, var(--sn-primitive-font-fontWeightValue-400, 400))));
96
+ line-height:var(--sn-regular-body-s-lineHeight, var(--sn-density-typography-roleBody-lineHeightS, var(--sn-primitive-font-lineHeight-by14, 20px)));
97
+ font-size:var(--sn-regular-body-s-fontSize, var(--sn-density-typography-roleBody-fontSizeS, var(--sn-primitive-font-fontSize-14, 14px)));
98
+ letter-spacing:var(--sn-regular-body-s-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
99
+ paragraph-spacing:var(--sn-regular-body-s-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize12, 6px));
100
+ }
101
+ .infoBlock[data-size=m] .contentLayout{
102
+ gap:var(--sn-infoBlock-anatomy-size-m-container-content-gap, var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px)));
103
+ }
104
+ .infoBlock[data-size=m] .textWrap{
105
+ gap:var(--sn-infoBlock-anatomy-size-m-container-content-text-gap, var(--sn-density-spacing-interval-s, var(--sn-primitive-dimension-8, 8px)));
106
+ }
107
+ .infoBlock[data-size=m] .title{
108
+ font-family:var(--sn-regular-title-m-fontFamily, var(--sn-brand-font-fontFamily-regular-title, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
109
+ font-weight:var(--sn-regular-title-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-title-m, var(--sn-brand-font-fontWeight-light-regular-title-m, var(--sn-primitive-font-fontWeightValue-600, 600))));
110
+ line-height:var(--sn-regular-title-m-lineHeight, var(--sn-density-typography-roleTitle-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
111
+ font-size:var(--sn-regular-title-m-fontSize, var(--sn-density-typography-roleTitle-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
112
+ letter-spacing:var(--sn-regular-title-m-letterSpacing, var(--sn-primitive-font-letterSpacing-l, 0.15px));
113
+ paragraph-spacing:var(--sn-regular-title-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize16, 8px));
114
+ }
115
+ .infoBlock[data-size=m] .description{
116
+ font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
117
+ font-weight:var(--sn-regular-body-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-m, var(--sn-brand-font-fontWeight-light-regular-body-m, var(--sn-primitive-font-fontWeightValue-400, 400))));
118
+ line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
119
+ font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
120
+ letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
121
+ paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
122
+ }
123
+ .infoBlock[data-size=l] .contentLayout{
124
+ gap:var(--sn-infoBlock-anatomy-size-l-container-content-gap, var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px)));
125
+ }
126
+ .infoBlock[data-size=l] .textWrap{
127
+ gap:var(--sn-infoBlock-anatomy-size-l-container-content-text-gap, var(--sn-density-spacing-interval-s, var(--sn-primitive-dimension-8, 8px)));
128
+ }
129
+ .infoBlock[data-size=l] .title{
130
+ font-family:var(--sn-regular-title-l-fontFamily, var(--sn-brand-font-fontFamily-regular-title, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
131
+ font-weight:var(--sn-regular-title-l-fontWeight, var(--sn-theme-typography-fontWeight-regular-title-l, var(--sn-brand-font-fontWeight-light-regular-title-l, var(--sn-primitive-font-fontWeightValue-600, 600))));
132
+ line-height:var(--sn-regular-title-l-lineHeight, var(--sn-density-typography-roleTitle-lineHeightL, var(--sn-primitive-font-lineHeight-by20, 28px)));
133
+ font-size:var(--sn-regular-title-l-fontSize, var(--sn-density-typography-roleTitle-fontSizeL, var(--sn-primitive-font-fontSize-20, 20px)));
134
+ letter-spacing:var(--sn-regular-title-l-letterSpacing, var(--sn-primitive-font-letterSpacing-l, 0.15px));
135
+ paragraph-spacing:var(--sn-regular-title-l-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize20, 10px));
136
+ }
137
+ .infoBlock[data-size=l] .description{
138
+ font-family:var(--sn-regular-body-l-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
139
+ font-weight:var(--sn-regular-body-l-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-l, var(--sn-brand-font-fontWeight-light-regular-body-l, var(--sn-primitive-font-fontWeightValue-400, 400))));
140
+ line-height:var(--sn-regular-body-l-lineHeight, var(--sn-density-typography-roleBody-lineHeightL, var(--sn-primitive-font-lineHeight-by20, 28px)));
141
+ font-size:var(--sn-regular-body-l-fontSize, var(--sn-density-typography-roleBody-fontSizeL, var(--sn-primitive-font-fontSize-20, 20px)));
142
+ letter-spacing:var(--sn-regular-body-l-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
143
+ paragraph-spacing:var(--sn-regular-body-l-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize16, 8px));
144
+ }
@@ -0,0 +1,4 @@
1
+ import { ValueOf } from '@cloud-ru/ds-utils';
2
+ import { ALIGN, SIZE } from './constants';
3
+ export type Size = ValueOf<typeof SIZE>;
4
+ export type Align = ValueOf<typeof ALIGN>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,21 @@
1
+ import { IconPredefinedProps } from '@cloud-ru/ds-icon-predefined';
2
+ import { WithSupportProps } from '@cloud-ru/ds-utils';
3
+ import { ReactNode } from 'react';
4
+ import { Align, Size } from '../../types.js';
5
+ export type InfoBlockProps = WithSupportProps<{
6
+ /** Заголовок */
7
+ title?: string;
8
+ /** Подзаголовок */
9
+ content?: ReactNode;
10
+ /** Иконка */
11
+ icon?: IconPredefinedProps;
12
+ /** Размер */
13
+ size?: Size;
14
+ /** Расположение элементов */
15
+ align?: Align;
16
+ /** Вложенный контент (например ButtonGroup) */
17
+ footer?: ReactNode;
18
+ /** Дополнительный класс */
19
+ className?: string;
20
+ }>;
21
+ export declare function InfoBlock({ title, content, icon, size, footer, align, className, ...rest }: InfoBlockProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { IconPredefined } from '@cloud-ru/ds-icon-predefined';
3
+ import { extractSupportProps } from '@cloud-ru/ds-utils';
4
+ import cn from 'classnames';
5
+ import { ALIGN, SIZE, SIZE_TO_ICON_SIZE, TEST_IDS } from '../../constants.js';
6
+ import styles from './styles.module.css';
7
+ export function InfoBlock({ title, content, icon, size = SIZE.M, footer, align = ALIGN.Vertical, className, ...rest }) {
8
+ const iconSize = SIZE_TO_ICON_SIZE[size];
9
+ // Пустые обёртки не рендерим: иначе их зазоры набегают там, где содержимого нет.
10
+ const hasText = Boolean(title || content);
11
+ return (_jsxs("div", { className: cn(styles.infoBlock, className), "data-size": size, "data-align": align, ...extractSupportProps(rest), children: [icon && (_jsx(IconPredefined, { icon: icon.icon, appearance: icon.appearance ?? 'primary', background: icon.background ?? true, size: iconSize, "data-test-id": TEST_IDS.icon })), (hasText || footer) && (_jsxs("div", { className: styles.contentLayout, children: [hasText && (_jsxs("div", { className: styles.textWrap, children: [title && (_jsx("div", { className: styles.title, "data-test-id": TEST_IDS.title, children: title })), content && (_jsx("div", { className: styles.description, "data-test-id": TEST_IDS.content, children: content }))] })), footer && (_jsx("div", { className: styles.footer, "data-test-id": TEST_IDS.footer, children: footer }))] }))] }));
12
+ }
@@ -0,0 +1 @@
1
+ export * from './InfoBlock.js';
@@ -0,0 +1 @@
1
+ export * from './InfoBlock.js';
@@ -0,0 +1,144 @@
1
+ .contentLayout{
2
+ display:flex;
3
+ flex-direction:column;
4
+ }
5
+
6
+ .textWrap{
7
+ display:flex;
8
+ flex-direction:column;
9
+ }
10
+
11
+ .footer{
12
+ position:relative;
13
+ box-sizing:border-box;
14
+ width:100%;
15
+ }
16
+
17
+ .title{
18
+ color:var(--sn-theme-color-available-version-textMain, var(--sn-brand-color-text-version-main, #41424e));
19
+ }
20
+
21
+ .description{
22
+ color:var(--sn-theme-color-available-version-textSecondary, var(--sn-brand-color-text-version-secondary, rgba(65, 66, 78, 0.8)));
23
+ }
24
+
25
+ .infoBlock{
26
+ display:flex;
27
+ box-sizing:border-box;
28
+ }
29
+ .infoBlock[data-size=s]{
30
+ gap:var(--sn-infoBlock-anatomy-size-s-container-gap, var(--sn-density-spacing-interval-s, var(--sn-primitive-dimension-8, 8px)));
31
+ max-width:624px;
32
+ }
33
+ .infoBlock[data-size=m]{
34
+ gap:var(--sn-infoBlock-anatomy-size-m-container-gap, var(--sn-density-spacing-interval-m, var(--sn-primitive-dimension-16, 16px)));
35
+ max-width:624px;
36
+ }
37
+ .infoBlock[data-size=l]{
38
+ gap:var(--sn-infoBlock-anatomy-size-l-container-gap, var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px)));
39
+ max-width:624px;
40
+ }
41
+ .infoBlock[data-align=vertical]{
42
+ flex-direction:column;
43
+ align-items:center;
44
+ }
45
+ .infoBlock[data-align=vertical] .contentLayout{
46
+ align-items:center;
47
+ }
48
+ .infoBlock[data-align=vertical] .textWrap{
49
+ align-items:center;
50
+ }
51
+ .infoBlock[data-align=vertical] .footer{
52
+ width:auto;
53
+ text-align:center;
54
+ }
55
+ .infoBlock[data-align=vertical] .description,
56
+ .infoBlock[data-align=vertical] .title{
57
+ text-align:center;
58
+ }
59
+ .infoBlock[data-align=horizontal]{
60
+ flex-direction:row;
61
+ align-items:flex-start;
62
+ }
63
+ .infoBlock[data-align=horizontal] .contentLayout{
64
+ flex:1 0 0;
65
+ align-items:flex-start;
66
+ min-width:0;
67
+ }
68
+ .infoBlock[data-align=horizontal] .textWrap{
69
+ align-items:flex-start;
70
+ }
71
+ .infoBlock[data-align=horizontal] .footer{
72
+ display:flex;
73
+ justify-content:flex-start;
74
+ }
75
+ .infoBlock[data-align=horizontal] .description,
76
+ .infoBlock[data-align=horizontal] .title{
77
+ text-align:left;
78
+ }
79
+ .infoBlock[data-size=s] .contentLayout{
80
+ gap:var(--sn-infoBlock-anatomy-size-s-container-content-gap, var(--sn-density-spacing-interval-m, var(--sn-primitive-dimension-16, 16px)));
81
+ }
82
+ .infoBlock[data-size=s] .textWrap{
83
+ gap:var(--sn-infoBlock-anatomy-size-s-container-content-text-gap, var(--sn-density-spacing-interval-xs, var(--sn-primitive-dimension-4, 4px)));
84
+ }
85
+ .infoBlock[data-size=s] .title{
86
+ font-family:var(--sn-regular-title-s-fontFamily, var(--sn-brand-font-fontFamily-regular-title, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
87
+ font-weight:var(--sn-regular-title-s-fontWeight, var(--sn-theme-typography-fontWeight-regular-title-s, var(--sn-brand-font-fontWeight-light-regular-title-s, var(--sn-primitive-font-fontWeightValue-600, 600))));
88
+ line-height:var(--sn-regular-title-s-lineHeight, var(--sn-density-typography-roleTitle-lineHeightS, var(--sn-primitive-font-lineHeight-by14, 20px)));
89
+ font-size:var(--sn-regular-title-s-fontSize, var(--sn-density-typography-roleTitle-fontSizeS, var(--sn-primitive-font-fontSize-14, 14px)));
90
+ letter-spacing:var(--sn-regular-title-s-letterSpacing, var(--sn-primitive-font-letterSpacing-l, 0.15px));
91
+ paragraph-spacing:var(--sn-regular-title-s-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
92
+ }
93
+ .infoBlock[data-size=s] .description{
94
+ font-family:var(--sn-regular-body-s-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
95
+ font-weight:var(--sn-regular-body-s-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-s, var(--sn-brand-font-fontWeight-light-regular-body-s, var(--sn-primitive-font-fontWeightValue-400, 400))));
96
+ line-height:var(--sn-regular-body-s-lineHeight, var(--sn-density-typography-roleBody-lineHeightS, var(--sn-primitive-font-lineHeight-by14, 20px)));
97
+ font-size:var(--sn-regular-body-s-fontSize, var(--sn-density-typography-roleBody-fontSizeS, var(--sn-primitive-font-fontSize-14, 14px)));
98
+ letter-spacing:var(--sn-regular-body-s-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
99
+ paragraph-spacing:var(--sn-regular-body-s-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize12, 6px));
100
+ }
101
+ .infoBlock[data-size=m] .contentLayout{
102
+ gap:var(--sn-infoBlock-anatomy-size-m-container-content-gap, var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px)));
103
+ }
104
+ .infoBlock[data-size=m] .textWrap{
105
+ gap:var(--sn-infoBlock-anatomy-size-m-container-content-text-gap, var(--sn-density-spacing-interval-s, var(--sn-primitive-dimension-8, 8px)));
106
+ }
107
+ .infoBlock[data-size=m] .title{
108
+ font-family:var(--sn-regular-title-m-fontFamily, var(--sn-brand-font-fontFamily-regular-title, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
109
+ font-weight:var(--sn-regular-title-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-title-m, var(--sn-brand-font-fontWeight-light-regular-title-m, var(--sn-primitive-font-fontWeightValue-600, 600))));
110
+ line-height:var(--sn-regular-title-m-lineHeight, var(--sn-density-typography-roleTitle-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
111
+ font-size:var(--sn-regular-title-m-fontSize, var(--sn-density-typography-roleTitle-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
112
+ letter-spacing:var(--sn-regular-title-m-letterSpacing, var(--sn-primitive-font-letterSpacing-l, 0.15px));
113
+ paragraph-spacing:var(--sn-regular-title-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize16, 8px));
114
+ }
115
+ .infoBlock[data-size=m] .description{
116
+ font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
117
+ font-weight:var(--sn-regular-body-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-m, var(--sn-brand-font-fontWeight-light-regular-body-m, var(--sn-primitive-font-fontWeightValue-400, 400))));
118
+ line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
119
+ font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
120
+ letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
121
+ paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
122
+ }
123
+ .infoBlock[data-size=l] .contentLayout{
124
+ gap:var(--sn-infoBlock-anatomy-size-l-container-content-gap, var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px)));
125
+ }
126
+ .infoBlock[data-size=l] .textWrap{
127
+ gap:var(--sn-infoBlock-anatomy-size-l-container-content-text-gap, var(--sn-density-spacing-interval-s, var(--sn-primitive-dimension-8, 8px)));
128
+ }
129
+ .infoBlock[data-size=l] .title{
130
+ font-family:var(--sn-regular-title-l-fontFamily, var(--sn-brand-font-fontFamily-regular-title, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
131
+ font-weight:var(--sn-regular-title-l-fontWeight, var(--sn-theme-typography-fontWeight-regular-title-l, var(--sn-brand-font-fontWeight-light-regular-title-l, var(--sn-primitive-font-fontWeightValue-600, 600))));
132
+ line-height:var(--sn-regular-title-l-lineHeight, var(--sn-density-typography-roleTitle-lineHeightL, var(--sn-primitive-font-lineHeight-by20, 28px)));
133
+ font-size:var(--sn-regular-title-l-fontSize, var(--sn-density-typography-roleTitle-fontSizeL, var(--sn-primitive-font-fontSize-20, 20px)));
134
+ letter-spacing:var(--sn-regular-title-l-letterSpacing, var(--sn-primitive-font-letterSpacing-l, 0.15px));
135
+ paragraph-spacing:var(--sn-regular-title-l-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize20, 10px));
136
+ }
137
+ .infoBlock[data-size=l] .description{
138
+ font-family:var(--sn-regular-body-l-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
139
+ font-weight:var(--sn-regular-body-l-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-l, var(--sn-brand-font-fontWeight-light-regular-body-l, var(--sn-primitive-font-fontWeightValue-400, 400))));
140
+ line-height:var(--sn-regular-body-l-lineHeight, var(--sn-density-typography-roleBody-lineHeightL, var(--sn-primitive-font-lineHeight-by20, 28px)));
141
+ font-size:var(--sn-regular-body-l-fontSize, var(--sn-density-typography-roleBody-fontSizeL, var(--sn-primitive-font-fontSize-20, 20px)));
142
+ letter-spacing:var(--sn-regular-body-l-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
143
+ paragraph-spacing:var(--sn-regular-body-l-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize16, 8px));
144
+ }
@@ -0,0 +1 @@
1
+ export * from './InfoBlock/index.js';
@@ -0,0 +1 @@
1
+ export * from './InfoBlock/index.js';
@@ -0,0 +1,21 @@
1
+ export declare const SIZE: {
2
+ readonly S: "s";
3
+ readonly M: "m";
4
+ readonly L: "l";
5
+ };
6
+ export declare const ALIGN: {
7
+ readonly Vertical: "vertical";
8
+ readonly Horizontal: "horizontal";
9
+ };
10
+ export declare const TEST_IDS: {
11
+ root: string;
12
+ icon: string;
13
+ title: string;
14
+ content: string;
15
+ footer: string;
16
+ };
17
+ export declare const SIZE_TO_ICON_SIZE: {
18
+ s: "m";
19
+ m: "l";
20
+ l: "5xl";
21
+ };
@@ -0,0 +1,21 @@
1
+ export const SIZE = {
2
+ S: 's',
3
+ M: 'm',
4
+ L: 'l',
5
+ };
6
+ export const ALIGN = {
7
+ Vertical: 'vertical',
8
+ Horizontal: 'horizontal',
9
+ };
10
+ export const TEST_IDS = {
11
+ root: 'info-block',
12
+ icon: 'info-block__icon',
13
+ title: 'info-block__title',
14
+ content: 'info-block__content',
15
+ footer: 'info-block__footer',
16
+ };
17
+ export const SIZE_TO_ICON_SIZE = {
18
+ s: 'm',
19
+ m: 'l',
20
+ l: '5xl',
21
+ };
@@ -0,0 +1,3 @@
1
+ export * from './components/index.js';
2
+ export * from './constants.js';
3
+ export * from './types.js';
@@ -0,0 +1,3 @@
1
+ export * from './components/index.js';
2
+ export * from './constants.js';
3
+ export * from './types.js';
@@ -0,0 +1,144 @@
1
+ .contentLayout{
2
+ display:flex;
3
+ flex-direction:column;
4
+ }
5
+
6
+ .textWrap{
7
+ display:flex;
8
+ flex-direction:column;
9
+ }
10
+
11
+ .footer{
12
+ position:relative;
13
+ box-sizing:border-box;
14
+ width:100%;
15
+ }
16
+
17
+ .title{
18
+ color:var(--sn-theme-color-available-version-textMain, var(--sn-brand-color-text-version-main, #41424e));
19
+ }
20
+
21
+ .description{
22
+ color:var(--sn-theme-color-available-version-textSecondary, var(--sn-brand-color-text-version-secondary, rgba(65, 66, 78, 0.8)));
23
+ }
24
+
25
+ .infoBlock{
26
+ display:flex;
27
+ box-sizing:border-box;
28
+ }
29
+ .infoBlock[data-size=s]{
30
+ gap:var(--sn-infoBlock-anatomy-size-s-container-gap, var(--sn-density-spacing-interval-s, var(--sn-primitive-dimension-8, 8px)));
31
+ max-width:624px;
32
+ }
33
+ .infoBlock[data-size=m]{
34
+ gap:var(--sn-infoBlock-anatomy-size-m-container-gap, var(--sn-density-spacing-interval-m, var(--sn-primitive-dimension-16, 16px)));
35
+ max-width:624px;
36
+ }
37
+ .infoBlock[data-size=l]{
38
+ gap:var(--sn-infoBlock-anatomy-size-l-container-gap, var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px)));
39
+ max-width:624px;
40
+ }
41
+ .infoBlock[data-align=vertical]{
42
+ flex-direction:column;
43
+ align-items:center;
44
+ }
45
+ .infoBlock[data-align=vertical] .contentLayout{
46
+ align-items:center;
47
+ }
48
+ .infoBlock[data-align=vertical] .textWrap{
49
+ align-items:center;
50
+ }
51
+ .infoBlock[data-align=vertical] .footer{
52
+ width:auto;
53
+ text-align:center;
54
+ }
55
+ .infoBlock[data-align=vertical] .description,
56
+ .infoBlock[data-align=vertical] .title{
57
+ text-align:center;
58
+ }
59
+ .infoBlock[data-align=horizontal]{
60
+ flex-direction:row;
61
+ align-items:flex-start;
62
+ }
63
+ .infoBlock[data-align=horizontal] .contentLayout{
64
+ flex:1 0 0;
65
+ align-items:flex-start;
66
+ min-width:0;
67
+ }
68
+ .infoBlock[data-align=horizontal] .textWrap{
69
+ align-items:flex-start;
70
+ }
71
+ .infoBlock[data-align=horizontal] .footer{
72
+ display:flex;
73
+ justify-content:flex-start;
74
+ }
75
+ .infoBlock[data-align=horizontal] .description,
76
+ .infoBlock[data-align=horizontal] .title{
77
+ text-align:left;
78
+ }
79
+ .infoBlock[data-size=s] .contentLayout{
80
+ gap:var(--sn-infoBlock-anatomy-size-s-container-content-gap, var(--sn-density-spacing-interval-m, var(--sn-primitive-dimension-16, 16px)));
81
+ }
82
+ .infoBlock[data-size=s] .textWrap{
83
+ gap:var(--sn-infoBlock-anatomy-size-s-container-content-text-gap, var(--sn-density-spacing-interval-xs, var(--sn-primitive-dimension-4, 4px)));
84
+ }
85
+ .infoBlock[data-size=s] .title{
86
+ font-family:var(--sn-regular-title-s-fontFamily, var(--sn-brand-font-fontFamily-regular-title, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
87
+ font-weight:var(--sn-regular-title-s-fontWeight, var(--sn-theme-typography-fontWeight-regular-title-s, var(--sn-brand-font-fontWeight-light-regular-title-s, var(--sn-primitive-font-fontWeightValue-600, 600))));
88
+ line-height:var(--sn-regular-title-s-lineHeight, var(--sn-density-typography-roleTitle-lineHeightS, var(--sn-primitive-font-lineHeight-by14, 20px)));
89
+ font-size:var(--sn-regular-title-s-fontSize, var(--sn-density-typography-roleTitle-fontSizeS, var(--sn-primitive-font-fontSize-14, 14px)));
90
+ letter-spacing:var(--sn-regular-title-s-letterSpacing, var(--sn-primitive-font-letterSpacing-l, 0.15px));
91
+ paragraph-spacing:var(--sn-regular-title-s-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
92
+ }
93
+ .infoBlock[data-size=s] .description{
94
+ font-family:var(--sn-regular-body-s-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
95
+ font-weight:var(--sn-regular-body-s-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-s, var(--sn-brand-font-fontWeight-light-regular-body-s, var(--sn-primitive-font-fontWeightValue-400, 400))));
96
+ line-height:var(--sn-regular-body-s-lineHeight, var(--sn-density-typography-roleBody-lineHeightS, var(--sn-primitive-font-lineHeight-by14, 20px)));
97
+ font-size:var(--sn-regular-body-s-fontSize, var(--sn-density-typography-roleBody-fontSizeS, var(--sn-primitive-font-fontSize-14, 14px)));
98
+ letter-spacing:var(--sn-regular-body-s-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
99
+ paragraph-spacing:var(--sn-regular-body-s-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize12, 6px));
100
+ }
101
+ .infoBlock[data-size=m] .contentLayout{
102
+ gap:var(--sn-infoBlock-anatomy-size-m-container-content-gap, var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px)));
103
+ }
104
+ .infoBlock[data-size=m] .textWrap{
105
+ gap:var(--sn-infoBlock-anatomy-size-m-container-content-text-gap, var(--sn-density-spacing-interval-s, var(--sn-primitive-dimension-8, 8px)));
106
+ }
107
+ .infoBlock[data-size=m] .title{
108
+ font-family:var(--sn-regular-title-m-fontFamily, var(--sn-brand-font-fontFamily-regular-title, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
109
+ font-weight:var(--sn-regular-title-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-title-m, var(--sn-brand-font-fontWeight-light-regular-title-m, var(--sn-primitive-font-fontWeightValue-600, 600))));
110
+ line-height:var(--sn-regular-title-m-lineHeight, var(--sn-density-typography-roleTitle-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
111
+ font-size:var(--sn-regular-title-m-fontSize, var(--sn-density-typography-roleTitle-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
112
+ letter-spacing:var(--sn-regular-title-m-letterSpacing, var(--sn-primitive-font-letterSpacing-l, 0.15px));
113
+ paragraph-spacing:var(--sn-regular-title-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize16, 8px));
114
+ }
115
+ .infoBlock[data-size=m] .description{
116
+ font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
117
+ font-weight:var(--sn-regular-body-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-m, var(--sn-brand-font-fontWeight-light-regular-body-m, var(--sn-primitive-font-fontWeightValue-400, 400))));
118
+ line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
119
+ font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
120
+ letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
121
+ paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
122
+ }
123
+ .infoBlock[data-size=l] .contentLayout{
124
+ gap:var(--sn-infoBlock-anatomy-size-l-container-content-gap, var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px)));
125
+ }
126
+ .infoBlock[data-size=l] .textWrap{
127
+ gap:var(--sn-infoBlock-anatomy-size-l-container-content-text-gap, var(--sn-density-spacing-interval-s, var(--sn-primitive-dimension-8, 8px)));
128
+ }
129
+ .infoBlock[data-size=l] .title{
130
+ font-family:var(--sn-regular-title-l-fontFamily, var(--sn-brand-font-fontFamily-regular-title, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
131
+ font-weight:var(--sn-regular-title-l-fontWeight, var(--sn-theme-typography-fontWeight-regular-title-l, var(--sn-brand-font-fontWeight-light-regular-title-l, var(--sn-primitive-font-fontWeightValue-600, 600))));
132
+ line-height:var(--sn-regular-title-l-lineHeight, var(--sn-density-typography-roleTitle-lineHeightL, var(--sn-primitive-font-lineHeight-by20, 28px)));
133
+ font-size:var(--sn-regular-title-l-fontSize, var(--sn-density-typography-roleTitle-fontSizeL, var(--sn-primitive-font-fontSize-20, 20px)));
134
+ letter-spacing:var(--sn-regular-title-l-letterSpacing, var(--sn-primitive-font-letterSpacing-l, 0.15px));
135
+ paragraph-spacing:var(--sn-regular-title-l-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize20, 10px));
136
+ }
137
+ .infoBlock[data-size=l] .description{
138
+ font-family:var(--sn-regular-body-l-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
139
+ font-weight:var(--sn-regular-body-l-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-l, var(--sn-brand-font-fontWeight-light-regular-body-l, var(--sn-primitive-font-fontWeightValue-400, 400))));
140
+ line-height:var(--sn-regular-body-l-lineHeight, var(--sn-density-typography-roleBody-lineHeightL, var(--sn-primitive-font-lineHeight-by20, 28px)));
141
+ font-size:var(--sn-regular-body-l-fontSize, var(--sn-density-typography-roleBody-fontSizeL, var(--sn-primitive-font-fontSize-20, 20px)));
142
+ letter-spacing:var(--sn-regular-body-l-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
143
+ paragraph-spacing:var(--sn-regular-body-l-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize16, 8px));
144
+ }
@@ -0,0 +1,4 @@
1
+ import { ValueOf } from '@cloud-ru/ds-utils';
2
+ import { ALIGN, SIZE } from './constants.js';
3
+ export type Size = ValueOf<typeof SIZE>;
4
+ export type Align = ValueOf<typeof ALIGN>;
@@ -0,0 +1 @@
1
+ export {};