@snack-uikit/alert 0.5.20-preview-85c5f47b.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 (46) hide show
  1. package/CHANGELOG.md +369 -0
  2. package/LICENSE +201 -0
  3. package/README.md +79 -0
  4. package/dist/components/Alert/Alert.d.ts +27 -0
  5. package/dist/components/Alert/Alert.js +28 -0
  6. package/dist/components/Alert/index.d.ts +1 -0
  7. package/dist/components/Alert/index.js +1 -0
  8. package/dist/components/Alert/styles.module.css +187 -0
  9. package/dist/components/AlertTop/AlertTop.d.ts +34 -0
  10. package/dist/components/AlertTop/AlertTop.js +30 -0
  11. package/dist/components/AlertTop/constants.d.ts +14 -0
  12. package/dist/components/AlertTop/constants.js +16 -0
  13. package/dist/components/AlertTop/index.d.ts +1 -0
  14. package/dist/components/AlertTop/index.js +1 -0
  15. package/dist/components/AlertTop/styles.module.css +237 -0
  16. package/dist/components/index.d.ts +2 -0
  17. package/dist/components/index.js +2 -0
  18. package/dist/constants.d.ts +15 -0
  19. package/dist/constants.js +16 -0
  20. package/dist/helperComponents/AlertTopButton/AlertTopButton.d.ts +9 -0
  21. package/dist/helperComponents/AlertTopButton/AlertTopButton.js +6 -0
  22. package/dist/helperComponents/AlertTopButton/index.d.ts +1 -0
  23. package/dist/helperComponents/AlertTopButton/index.js +1 -0
  24. package/dist/helperComponents/AlertTopButton/styles.module.css +58 -0
  25. package/dist/helperComponents/index.d.ts +1 -0
  26. package/dist/helperComponents/index.js +1 -0
  27. package/dist/index.d.ts +1 -0
  28. package/dist/index.js +1 -0
  29. package/dist/utils.d.ts +2 -0
  30. package/dist/utils.js +17 -0
  31. package/package.json +42 -0
  32. package/src/components/Alert/Alert.tsx +92 -0
  33. package/src/components/Alert/index.ts +1 -0
  34. package/src/components/Alert/styles.module.scss +106 -0
  35. package/src/components/AlertTop/AlertTop.tsx +134 -0
  36. package/src/components/AlertTop/constants.ts +17 -0
  37. package/src/components/AlertTop/index.ts +1 -0
  38. package/src/components/AlertTop/styles.module.scss +157 -0
  39. package/src/components/index.ts +2 -0
  40. package/src/constants.ts +17 -0
  41. package/src/helperComponents/AlertTopButton/AlertTopButton.tsx +25 -0
  42. package/src/helperComponents/AlertTopButton/index.ts +1 -0
  43. package/src/helperComponents/AlertTopButton/styles.module.scss +57 -0
  44. package/src/helperComponents/index.ts +1 -0
  45. package/src/index.ts +1 -0
  46. package/src/utils.tsx +18 -0
@@ -0,0 +1,28 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import cn from 'classnames';
14
+ import { CrossSVG } from '@snack-uikit/icons';
15
+ import { Link } from '@snack-uikit/link';
16
+ import { TruncateString } from '@snack-uikit/truncate-string';
17
+ import { extractSupportProps } from '@snack-uikit/utils';
18
+ import { Appearance, APPEARANCE_TO_COLOR_MAP } from '../../constants';
19
+ import { getIcon } from '../../utils';
20
+ import styles from './styles.module.css';
21
+ /**
22
+ * Компонент для отображения уведомления.
23
+ */
24
+ export function Alert(_a) {
25
+ var { icon = true, title, href, link, description, onClose, appearance = Alert.appearances.Neutral, className } = _a, rest = __rest(_a, ["icon", "title", "href", "link", "description", "onClose", "appearance", "className"]);
26
+ return (_jsxs("div", Object.assign({ className: cn(styles.alert, className) }, extractSupportProps(rest), { "data-color": APPEARANCE_TO_COLOR_MAP[appearance] }, { children: [icon && (_jsx("div", Object.assign({ className: styles.icon, "data-color": APPEARANCE_TO_COLOR_MAP[appearance], "data-test-id": 'alert__icon' }, { children: getIcon(appearance) }))), _jsxs("div", Object.assign({ className: styles.content }, { children: [_jsxs("div", Object.assign({ className: styles.textlayout }, { children: [title && _jsx(TruncateString, { text: title, maxLines: 1, className: styles.title, "data-test-id": 'alert__title' }), _jsx("span", Object.assign({ "data-test-id": 'alert__description', className: styles.description }, { children: description }))] })), link && (_jsx("span", { children: _jsx(Link, { href: href, text: link, onSurface: Link.onSurfaces.Decor, external: true, onColor: APPEARANCE_TO_COLOR_MAP[appearance], size: Link.sizes.M, "data-test-id": 'alert__link' }) }))] })), onClose && (_jsx("button", Object.assign({ onClick: onClose, className: styles.closeButton, "data-color": APPEARANCE_TO_COLOR_MAP[appearance], "data-test-id": 'alert__close-button' }, { children: _jsx(CrossSVG, {}) })))] })));
27
+ }
28
+ Alert.appearances = Appearance;
@@ -0,0 +1 @@
1
+ export * from './Alert';
@@ -0,0 +1 @@
1
+ export * from './Alert';
@@ -0,0 +1,187 @@
1
+ .alert{
2
+ padding-top:var(--space-alert-container-vertical-padding, 14px);
3
+ padding-bottom:var(--space-alert-container-vertical-padding, 14px);
4
+ padding-left:var(--space-alert-container-horizontal-padding, 14px);
5
+ padding-right:var(--space-alert-container-horizontal-padding, 14px);
6
+ gap:var(--space-alert-container-gap, 8px);
7
+ border-radius:var(--radius-alert-container, 8px);
8
+ border-width:var(--border-width-general-xs, 1px);
9
+ display:flex;
10
+ box-sizing:border-box;
11
+ min-width:256px;
12
+ border-style:solid;
13
+ }
14
+ .alert[data-color=neutral]{
15
+ background-color:var(--sys-neutral-background, #f0f0f0);
16
+ border-color:var(--sys-neutral-decor-default, #dedede);
17
+ }
18
+ .alert[data-color=primary]{
19
+ background-color:var(--sys-primary-background, #f6effe);
20
+ border-color:var(--sys-primary-decor-default, #ebdefd);
21
+ }
22
+ .alert[data-color=red]{
23
+ background-color:var(--sys-red-background, #fdede8);
24
+ border-color:var(--sys-red-decor-default, #ffd8d0);
25
+ }
26
+ .alert[data-color=yellow]{
27
+ background-color:var(--sys-yellow-background, #fbf4d6);
28
+ border-color:var(--sys-yellow-decor-default, #f9e5ad);
29
+ }
30
+ .alert[data-color=green]{
31
+ background-color:var(--sys-green-background, #e9f6f3);
32
+ border-color:var(--sys-green-decor-default, #cdebe3);
33
+ }
34
+
35
+ .title{
36
+ font-family:var(--sans-title-s-font-family, SB Sans Interface);
37
+ font-weight:var(--sans-title-s-font-weight, Semibold);
38
+ line-height:var(--sans-title-s-line-height, 20px);
39
+ font-size:var(--sans-title-s-font-size, 14px);
40
+ letter-spacing:var(--sans-title-s-letter-spacing, 0.15px);
41
+ paragraph-spacing:var(--sans-title-s-paragraph-spacing, 7.7px);
42
+ color:var(--sys-neutral-text-main, #333333);
43
+ }
44
+
45
+ .textlayout{
46
+ padding-top:var(--space-alert-container-content-layout-text-layout-padding-top, 2px);
47
+ overflow:hidden;
48
+ }
49
+
50
+ .description{
51
+ font-family:var(--sans-body-m-font-family, SB Sans Interface);
52
+ font-weight:var(--sans-body-m-font-weight, Regular);
53
+ line-height:var(--sans-body-m-line-height, 20px);
54
+ font-size:var(--sans-body-m-font-size, 14px);
55
+ letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
56
+ paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
57
+ color:var(--sys-neutral-text-support, #565656);
58
+ word-wrap:break-word;
59
+ }
60
+
61
+ .content{
62
+ gap:var(--space-alert-container-content-layout-gap, 8px);
63
+ display:flex;
64
+ flex:1;
65
+ flex-direction:column;
66
+ min-width:0;
67
+ }
68
+
69
+ .icon[data-color=neutral]{
70
+ color:var(--sys-neutral-accent-default, #757575);
71
+ }
72
+ .icon[data-color=primary]{
73
+ color:var(--sys-primary-accent-default, #794ed3);
74
+ }
75
+ .icon[data-color=red]{
76
+ color:var(--sys-red-accent-default, #d93f2f);
77
+ }
78
+ .icon[data-color=yellow]{
79
+ color:var(--sys-yellow-accent-default, #feb528);
80
+ }
81
+ .icon[data-color=green]{
82
+ color:var(--sys-green-accent-default, #0bbe8f);
83
+ }
84
+ .icon svg{
85
+ width:var(--dimension-3m, 24px) !important;
86
+ height:var(--dimension-3m, 24px) !important;
87
+ }
88
+
89
+ .closeButton{
90
+ height:var(--size-alert-button-close, 24px);
91
+ width:var(--size-alert-button-close, 24px);
92
+ border-radius:var(--radius-alert-button-close, 8px);
93
+ cursor:pointer;
94
+ display:flex;
95
+ align-items:center;
96
+ justify-content:center;
97
+ box-sizing:border-box;
98
+ margin:0;
99
+ margin-left:auto;
100
+ padding:0;
101
+ background:none;
102
+ border:none;
103
+ }
104
+ .closeButton svg{
105
+ width:var(--dimension-3m, 24px) !important;
106
+ height:var(--dimension-3m, 24px) !important;
107
+ }
108
+ .closeButton[data-color=neutral]{
109
+ color:var(--sys-neutral-text-light, #898989);
110
+ }
111
+ .closeButton[data-color=neutral]:hover{
112
+ color:var(--sys-neutral-text-support, #565656);
113
+ }
114
+ .closeButton[data-color=neutral]:focus-visible{
115
+ outline-width:var(--border-state-focus-s-border-width, 2px);
116
+ outline-style:var(--border-state-focus-s-border-style, solid);
117
+ outline-color:var(--border-state-focus-s-border-color, );
118
+ color:var(--sys-neutral-text-support, #565656);
119
+ outline-color:var(--sys-available-complementary, #131313);
120
+ }
121
+ .closeButton[data-color=neutral]:active{
122
+ color:var(--sys-neutral-text-main, #333333);
123
+ }
124
+ .closeButton[data-color=primary]{
125
+ color:var(--sys-primary-text-light, #997adc);
126
+ }
127
+ .closeButton[data-color=primary]:hover{
128
+ color:var(--sys-primary-text-support, #5b4796);
129
+ }
130
+ .closeButton[data-color=primary]:focus-visible{
131
+ outline-width:var(--border-state-focus-s-border-width, 2px);
132
+ outline-style:var(--border-state-focus-s-border-style, solid);
133
+ outline-color:var(--border-state-focus-s-border-color, );
134
+ color:var(--sys-primary-text-support, #5b4796);
135
+ outline-color:var(--sys-available-complementary, #131313);
136
+ }
137
+ .closeButton[data-color=primary]:active{
138
+ color:var(--sys-primary-text-main, #382a62);
139
+ }
140
+ .closeButton[data-color=red]{
141
+ color:var(--sys-red-text-light, #ec7465);
142
+ }
143
+ .closeButton[data-color=red]:hover{
144
+ color:var(--sys-red-text-support, #a93936);
145
+ }
146
+ .closeButton[data-color=red]:focus-visible{
147
+ outline-width:var(--border-state-focus-s-border-width, 2px);
148
+ outline-style:var(--border-state-focus-s-border-style, solid);
149
+ outline-color:var(--border-state-focus-s-border-color, );
150
+ color:var(--sys-red-text-support, #a93936);
151
+ outline-color:var(--sys-available-complementary, #131313);
152
+ }
153
+ .closeButton[data-color=red]:active{
154
+ color:var(--sys-red-text-main, #621c1e);
155
+ }
156
+ .closeButton[data-color=yellow]{
157
+ color:var(--sys-yellow-text-light, #be7d3c);
158
+ }
159
+ .closeButton[data-color=yellow]:hover{
160
+ color:var(--sys-yellow-text-support, #80461b);
161
+ }
162
+ .closeButton[data-color=yellow]:focus-visible{
163
+ outline-width:var(--border-state-focus-s-border-width, 2px);
164
+ outline-style:var(--border-state-focus-s-border-style, solid);
165
+ outline-color:var(--border-state-focus-s-border-color, );
166
+ color:var(--sys-yellow-text-support, #80461b);
167
+ outline-color:var(--sys-available-complementary, #131313);
168
+ }
169
+ .closeButton[data-color=yellow]:active{
170
+ color:var(--sys-yellow-text-main, #54290f);
171
+ }
172
+ .closeButton[data-color=green]{
173
+ color:var(--sys-green-text-light, #4d9e80);
174
+ }
175
+ .closeButton[data-color=green]:hover{
176
+ color:var(--sys-green-text-support, #335747);
177
+ }
178
+ .closeButton[data-color=green]:focus-visible{
179
+ outline-width:var(--border-state-focus-s-border-width, 2px);
180
+ outline-style:var(--border-state-focus-s-border-style, solid);
181
+ outline-color:var(--border-state-focus-s-border-color, );
182
+ color:var(--sys-green-text-support, #335747);
183
+ outline-color:var(--sys-available-complementary, #131313);
184
+ }
185
+ .closeButton[data-color=green]:active{
186
+ color:var(--sys-green-text-main, #1f392a);
187
+ }
@@ -0,0 +1,34 @@
1
+ import { ReactElement } from 'react';
2
+ import { WithSupportProps } from '@snack-uikit/utils';
3
+ import { Appearance } from '../../constants';
4
+ export type AlertTopProps = WithSupportProps<{
5
+ /** Отображать иконку */
6
+ icon?: boolean;
7
+ /** Заголовок */
8
+ title?: string;
9
+ /** Описание */
10
+ description: string;
11
+ /** Текст ссылки */
12
+ link?: string;
13
+ /** Ссылка */
14
+ href?: string;
15
+ /** Колбек закрытия */
16
+ onClose?: () => void;
17
+ /** Внешний вид */
18
+ appearance?: Appearance;
19
+ /** Текст кнопки */
20
+ buttonText?: string;
21
+ /** Колбек клика по кнопке */
22
+ buttonOnClick?: () => void;
23
+ /** Иконка в кнопке */
24
+ buttonIcon?: ReactElement;
25
+ /** CSS-класс */
26
+ className?: string;
27
+ }>;
28
+ /**
29
+ * Компонент для отображения уведомления вверху экрана.
30
+ */
31
+ export declare function AlertTop({ icon, title, description, link, href, onClose, appearance, buttonText, buttonOnClick, buttonIcon, className, ...rest }: AlertTopProps): import("react/jsx-runtime").JSX.Element;
32
+ export declare namespace AlertTop {
33
+ var appearances: typeof Appearance;
34
+ }
@@ -0,0 +1,30 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import cn from 'classnames';
14
+ import { CrossSVG } from '@snack-uikit/icons';
15
+ import { Link } from '@snack-uikit/link';
16
+ import { TruncateString } from '@snack-uikit/truncate-string';
17
+ import { extractSupportProps } from '@snack-uikit/utils';
18
+ import { Appearance, APPEARANCE_TO_COLOR_MAP } from '../../constants';
19
+ import { AlertTopButton } from '../../helperComponents';
20
+ import { getIcon } from '../../utils';
21
+ import { APPEARANCE_TO_COLOR_MAP_INVERT } from './constants';
22
+ import styles from './styles.module.css';
23
+ /**
24
+ * Компонент для отображения уведомления вверху экрана.
25
+ */
26
+ export function AlertTop(_a) {
27
+ var { icon = true, title, description, link, href, onClose, appearance = AlertTop.appearances.Neutral, buttonText, buttonOnClick, buttonIcon, className } = _a, rest = __rest(_a, ["icon", "title", "description", "link", "href", "onClose", "appearance", "buttonText", "buttonOnClick", "buttonIcon", "className"]);
28
+ return (_jsxs("div", Object.assign({ className: cn(styles.alertTop, className) }, extractSupportProps(rest), { "data-color": APPEARANCE_TO_COLOR_MAP_INVERT[appearance] }, { children: [_jsxs("div", Object.assign({ className: styles.contentWrapper }, { children: [icon && (_jsx("div", Object.assign({ className: styles.icon, "data-color": APPEARANCE_TO_COLOR_MAP_INVERT[appearance], "data-test-id": 'alert-top__icon' }, { children: getIcon(appearance) }))), _jsxs("div", Object.assign({ className: styles.contentLayout }, { children: [_jsxs("div", Object.assign({ className: styles.textLayout }, { children: [title && (_jsx("div", Object.assign({ className: styles.title, "data-color": APPEARANCE_TO_COLOR_MAP_INVERT[appearance], "data-test-id": 'alert-top__title' }, { children: _jsx(TruncateString, { text: title, maxLines: 1 }) }))), _jsx("span", Object.assign({ className: styles.description, "data-color": APPEARANCE_TO_COLOR_MAP_INVERT[appearance], "data-test-id": 'alert-top__description' }, { children: description }))] })), link && (_jsx("span", { children: _jsx(Link, { onSurface: Link.onSurfaces.Accent, href: href, text: link, external: true, onColor: APPEARANCE_TO_COLOR_MAP[appearance], size: Link.sizes.M, "data-test-id": 'alert-top__link' }) }))] }))] })), _jsxs("div", Object.assign({ className: styles.actions }, { children: [buttonText && (_jsx(AlertTopButton, { buttonIcon: buttonIcon, buttonOnClick: buttonOnClick, buttonText: buttonText, appearance: appearance })), onClose && (_jsx("button", Object.assign({ onClick: onClose, className: styles.closeButton, "data-color": APPEARANCE_TO_COLOR_MAP_INVERT[appearance], "data-test-id": 'alert-top__close-button' }, { children: _jsx(CrossSVG, {}) })))] }))] })));
29
+ }
30
+ AlertTop.appearances = Appearance;
@@ -0,0 +1,14 @@
1
+ export declare enum Color {
2
+ InvertNeutral = "invert-neutral",
3
+ Primary = "primary",
4
+ Red = "red",
5
+ Yellow = "yellow",
6
+ Green = "green"
7
+ }
8
+ export declare const APPEARANCE_TO_COLOR_MAP_INVERT: {
9
+ readonly neutral: Color.InvertNeutral;
10
+ readonly primary: Color.Primary;
11
+ readonly error: Color.Red;
12
+ readonly warning: Color.Yellow;
13
+ readonly success: Color.Green;
14
+ };
@@ -0,0 +1,16 @@
1
+ import { Appearance } from '../../constants';
2
+ export var Color;
3
+ (function (Color) {
4
+ Color["InvertNeutral"] = "invert-neutral";
5
+ Color["Primary"] = "primary";
6
+ Color["Red"] = "red";
7
+ Color["Yellow"] = "yellow";
8
+ Color["Green"] = "green";
9
+ })(Color || (Color = {}));
10
+ export const APPEARANCE_TO_COLOR_MAP_INVERT = {
11
+ [Appearance.Neutral]: Color.InvertNeutral,
12
+ [Appearance.Primary]: Color.Primary,
13
+ [Appearance.Error]: Color.Red,
14
+ [Appearance.Warning]: Color.Yellow,
15
+ [Appearance.Success]: Color.Green,
16
+ };
@@ -0,0 +1 @@
1
+ export * from './AlertTop';
@@ -0,0 +1 @@
1
+ export * from './AlertTop';
@@ -0,0 +1,237 @@
1
+ .alertTop{
2
+ padding-top:var(--space-alert-top-container-vertical-padding, 8px);
3
+ padding-bottom:var(--space-alert-top-container-vertical-padding, 8px);
4
+ padding-left:var(--space-alert-top-container-horizontal-padding, 16px);
5
+ padding-right:var(--space-alert-top-container-horizontal-padding, 16px);
6
+ gap:var(--space-alert-top-container-gap, 16px);
7
+ display:flex;
8
+ justify-content:space-between;
9
+ box-sizing:border-box;
10
+ }
11
+ .alertTop[data-color=invert-neutral]{
12
+ background-color:var(--sys-invert-neutral-background, #232323);
13
+ }
14
+ .alertTop[data-color=primary]{
15
+ background-color:var(--sys-primary-accent-default, #794ed3);
16
+ }
17
+ .alertTop[data-color=red]{
18
+ background-color:var(--sys-red-accent-default, #d93f2f);
19
+ }
20
+ .alertTop[data-color=yellow]{
21
+ background-color:var(--sys-yellow-accent-default, #feb528);
22
+ }
23
+ .alertTop[data-color=green]{
24
+ background-color:var(--sys-green-accent-default, #0bbe8f);
25
+ }
26
+
27
+ .icon[data-color=invert-neutral]{
28
+ color:var(--sys-invert-neutral-text-main, #e7e7e7);
29
+ }
30
+ .icon[data-color=primary]{
31
+ color:var(--sys-primary-on-accent, #fdfbff);
32
+ }
33
+ .icon[data-color=red]{
34
+ color:var(--sys-red-on-accent, #fffbfa);
35
+ }
36
+ .icon[data-color=yellow]{
37
+ color:var(--sys-yellow-on-accent, #54290f);
38
+ }
39
+ .icon[data-color=green]{
40
+ color:var(--sys-green-on-accent, #1f392a);
41
+ }
42
+ .icon svg{
43
+ width:var(--dimension-3m, 24px) !important;
44
+ height:var(--dimension-3m, 24px) !important;
45
+ }
46
+
47
+ .title{
48
+ font-family:var(--sans-title-s-font-family, SB Sans Interface);
49
+ font-weight:var(--sans-title-s-font-weight, Semibold);
50
+ line-height:var(--sans-title-s-line-height, 20px);
51
+ font-size:var(--sans-title-s-font-size, 14px);
52
+ letter-spacing:var(--sans-title-s-letter-spacing, 0.15px);
53
+ paragraph-spacing:var(--sans-title-s-paragraph-spacing, 7.7px);
54
+ }
55
+ .title[data-color=invert-neutral]{
56
+ color:var(--sys-invert-neutral-text-main, #e7e7e7);
57
+ }
58
+ .title[data-color=primary]{
59
+ color:var(--sys-primary-on-accent, #fdfbff);
60
+ }
61
+ .title[data-color=red]{
62
+ color:var(--sys-red-on-accent, #fffbfa);
63
+ }
64
+ .title[data-color=yellow]{
65
+ color:var(--sys-yellow-on-accent, #54290f);
66
+ }
67
+ .title[data-color=green]{
68
+ color:var(--sys-green-on-accent, #1f392a);
69
+ }
70
+
71
+ .description{
72
+ font-family:var(--sans-body-m-font-family, SB Sans Interface);
73
+ font-weight:var(--sans-body-m-font-weight, Regular);
74
+ line-height:var(--sans-body-m-line-height, 20px);
75
+ font-size:var(--sans-body-m-font-size, 14px);
76
+ letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
77
+ paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
78
+ word-wrap:break-word;
79
+ }
80
+ .description[data-color=invert-neutral]{
81
+ color:var(--sys-invert-neutral-text-main, #e7e7e7);
82
+ }
83
+ .description[data-color=primary]{
84
+ color:var(--sys-primary-on-accent, #fdfbff);
85
+ }
86
+ .description[data-color=red]{
87
+ color:var(--sys-red-on-accent, #fffbfa);
88
+ }
89
+ .description[data-color=yellow]{
90
+ color:var(--sys-yellow-on-accent, #54290f);
91
+ }
92
+ .description[data-color=green]{
93
+ color:var(--sys-green-on-accent, #1f392a);
94
+ }
95
+
96
+ .contentWrapper{
97
+ display:flex;
98
+ gap:var(--dimension-2m, 16px);
99
+ align-items:center;
100
+ min-width:0;
101
+ }
102
+
103
+ .contentLayout{
104
+ gap:var(--space-alert-top-container-content-layout-gap, 2px);
105
+ display:flex;
106
+ flex-direction:column;
107
+ min-width:0;
108
+ }
109
+
110
+ .textLayout{
111
+ overflow:hidden;
112
+ }
113
+
114
+ .closeButton{
115
+ border-radius:var(--radius-alert-top-button, 12px);
116
+ height:var(--size-alert-top-button, 32px);
117
+ width:var(--size-alert-top-button, 32px);
118
+ cursor:pointer;
119
+ display:flex;
120
+ align-items:center;
121
+ justify-content:center;
122
+ box-sizing:border-box;
123
+ margin:0;
124
+ padding:0;
125
+ background:none;
126
+ border:none;
127
+ }
128
+ .closeButton svg{
129
+ width:var(--dimension-3m, 24px) !important;
130
+ height:var(--dimension-3m, 24px) !important;
131
+ }
132
+ .closeButton[data-color=invert-neutral]{
133
+ color:var(--sys-invert-neutral-text-main, #e7e7e7);
134
+ opacity:var(--opacity-a080, 0.8);
135
+ }
136
+ .closeButton[data-color=invert-neutral]:hover{
137
+ opacity:unset;
138
+ background-color:var(--sys-opacity-hovered, rgba(253, 253, 253, 0.2392156863));
139
+ }
140
+ .closeButton[data-color=invert-neutral]:focus-visible{
141
+ outline-width:var(--border-state-focus-s-border-width, 2px);
142
+ outline-style:var(--border-state-focus-s-border-style, solid);
143
+ outline-color:var(--border-state-focus-s-border-color, );
144
+ opacity:unset;
145
+ background-color:var(--sys-opacity-hovered, rgba(253, 253, 253, 0.2392156863));
146
+ outline-color:var(--sys-available-on-complementary, #fdfdfd);
147
+ }
148
+ .closeButton[data-color=invert-neutral]:active{
149
+ opacity:var(--opacity-a080, 0.8);
150
+ background-color:var(--sys-opacity-activated, rgba(253, 253, 253, 0.3215686275));
151
+ }
152
+ .closeButton[data-color=primary]{
153
+ color:var(--sys-primary-on-accent, #fdfbff);
154
+ opacity:var(--opacity-a080, 0.8);
155
+ }
156
+ .closeButton[data-color=primary]:hover{
157
+ opacity:unset;
158
+ background-color:var(--sys-opacity-hovered, rgba(253, 253, 253, 0.2392156863));
159
+ }
160
+ .closeButton[data-color=primary]:focus-visible{
161
+ outline-width:var(--border-state-focus-s-border-width, 2px);
162
+ outline-style:var(--border-state-focus-s-border-style, solid);
163
+ outline-color:var(--border-state-focus-s-border-color, );
164
+ opacity:unset;
165
+ background-color:var(--sys-opacity-hovered, rgba(253, 253, 253, 0.2392156863));
166
+ outline-color:var(--sys-available-on-complementary, #fdfdfd);
167
+ }
168
+ .closeButton[data-color=primary]:active{
169
+ opacity:var(--opacity-a080, 0.8);
170
+ background-color:var(--sys-opacity-activated, rgba(253, 253, 253, 0.3215686275));
171
+ }
172
+ .closeButton[data-color=red]{
173
+ color:var(--sys-red-on-accent, #fffbfa);
174
+ opacity:var(--opacity-a080, 0.8);
175
+ }
176
+ .closeButton[data-color=red]:hover{
177
+ opacity:unset;
178
+ background-color:var(--sys-opacity-hovered, rgba(253, 253, 253, 0.2392156863));
179
+ }
180
+ .closeButton[data-color=red]:focus-visible{
181
+ outline-width:var(--border-state-focus-s-border-width, 2px);
182
+ outline-style:var(--border-state-focus-s-border-style, solid);
183
+ outline-color:var(--border-state-focus-s-border-color, );
184
+ opacity:unset;
185
+ background-color:var(--sys-opacity-hovered, rgba(253, 253, 253, 0.2392156863));
186
+ outline-color:var(--sys-available-on-complementary, #fdfdfd);
187
+ }
188
+ .closeButton[data-color=red]:active{
189
+ opacity:var(--opacity-a080, 0.8);
190
+ background-color:var(--sys-opacity-activated, rgba(253, 253, 253, 0.3215686275));
191
+ }
192
+ .closeButton[data-color=yellow]{
193
+ color:var(--sys-yellow-on-accent, #54290f);
194
+ opacity:var(--opacity-a080, 0.8);
195
+ }
196
+ .closeButton[data-color=yellow]:hover{
197
+ opacity:unset;
198
+ background-color:var(--sys-opacity-hovered, rgba(253, 253, 253, 0.2392156863));
199
+ }
200
+ .closeButton[data-color=yellow]:focus-visible{
201
+ outline-width:var(--border-state-focus-s-border-width, 2px);
202
+ outline-style:var(--border-state-focus-s-border-style, solid);
203
+ outline-color:var(--border-state-focus-s-border-color, );
204
+ opacity:unset;
205
+ background-color:var(--sys-opacity-hovered, rgba(253, 253, 253, 0.2392156863));
206
+ outline-color:var(--sys-available-on-complementary, #fdfdfd);
207
+ }
208
+ .closeButton[data-color=yellow]:active{
209
+ opacity:var(--opacity-a080, 0.8);
210
+ background-color:var(--sys-opacity-activated, rgba(253, 253, 253, 0.3215686275));
211
+ }
212
+ .closeButton[data-color=green]{
213
+ color:var(--sys-green-on-accent, #1f392a);
214
+ opacity:var(--opacity-a080, 0.8);
215
+ }
216
+ .closeButton[data-color=green]:hover{
217
+ opacity:unset;
218
+ background-color:var(--sys-opacity-hovered, rgba(253, 253, 253, 0.2392156863));
219
+ }
220
+ .closeButton[data-color=green]:focus-visible{
221
+ outline-width:var(--border-state-focus-s-border-width, 2px);
222
+ outline-style:var(--border-state-focus-s-border-style, solid);
223
+ outline-color:var(--border-state-focus-s-border-color, );
224
+ opacity:unset;
225
+ background-color:var(--sys-opacity-hovered, rgba(253, 253, 253, 0.2392156863));
226
+ outline-color:var(--sys-available-on-complementary, #fdfdfd);
227
+ }
228
+ .closeButton[data-color=green]:active{
229
+ opacity:var(--opacity-a080, 0.8);
230
+ background-color:var(--sys-opacity-activated, rgba(253, 253, 253, 0.3215686275));
231
+ }
232
+
233
+ .actions{
234
+ display:flex;
235
+ gap:var(--dimension-2m, 16px);
236
+ align-items:center;
237
+ }
@@ -0,0 +1,2 @@
1
+ export * from './Alert';
2
+ export * from './AlertTop';
@@ -0,0 +1,2 @@
1
+ export * from './Alert';
2
+ export * from './AlertTop';
@@ -0,0 +1,15 @@
1
+ import { OnColor } from '@snack-uikit/link';
2
+ export declare enum Appearance {
3
+ Neutral = "neutral",
4
+ Primary = "primary",
5
+ Error = "error",
6
+ Warning = "warning",
7
+ Success = "success"
8
+ }
9
+ export declare const APPEARANCE_TO_COLOR_MAP: {
10
+ readonly neutral: OnColor.Neutral;
11
+ readonly primary: OnColor.Primary;
12
+ readonly error: OnColor.Red;
13
+ readonly warning: OnColor.Yellow;
14
+ readonly success: OnColor.Green;
15
+ };
@@ -0,0 +1,16 @@
1
+ import { OnColor } from '@snack-uikit/link';
2
+ export var Appearance;
3
+ (function (Appearance) {
4
+ Appearance["Neutral"] = "neutral";
5
+ Appearance["Primary"] = "primary";
6
+ Appearance["Error"] = "error";
7
+ Appearance["Warning"] = "warning";
8
+ Appearance["Success"] = "success";
9
+ })(Appearance || (Appearance = {}));
10
+ export const APPEARANCE_TO_COLOR_MAP = {
11
+ [Appearance.Neutral]: OnColor.Neutral,
12
+ [Appearance.Primary]: OnColor.Primary,
13
+ [Appearance.Error]: OnColor.Red,
14
+ [Appearance.Warning]: OnColor.Yellow,
15
+ [Appearance.Success]: OnColor.Green,
16
+ };
@@ -0,0 +1,9 @@
1
+ import { ReactElement } from 'react';
2
+ import { Appearance } from '../../constants';
3
+ export type AlertTopButtonProps = {
4
+ appearance: Appearance;
5
+ buttonText: string;
6
+ buttonIcon?: ReactElement;
7
+ buttonOnClick?: () => void;
8
+ };
9
+ export declare function AlertTopButton({ appearance, buttonText, buttonIcon, buttonOnClick }: AlertTopButtonProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { APPEARANCE_TO_COLOR_MAP_INVERT } from '../../components/AlertTop/constants';
3
+ import styles from './styles.module.css';
4
+ export function AlertTopButton({ appearance, buttonText, buttonIcon, buttonOnClick }) {
5
+ return (_jsxs("button", Object.assign({ onClick: buttonOnClick, className: styles.alertTopButton, "data-color": APPEARANCE_TO_COLOR_MAP_INVERT[appearance] }, { children: [_jsx("span", { children: buttonText }), buttonIcon] })));
6
+ }
@@ -0,0 +1 @@
1
+ export * from './AlertTopButton';
@@ -0,0 +1 @@
1
+ export * from './AlertTopButton';