@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.
- package/CHANGELOG.md +369 -0
- package/LICENSE +201 -0
- package/README.md +79 -0
- package/dist/components/Alert/Alert.d.ts +27 -0
- package/dist/components/Alert/Alert.js +28 -0
- package/dist/components/Alert/index.d.ts +1 -0
- package/dist/components/Alert/index.js +1 -0
- package/dist/components/Alert/styles.module.css +187 -0
- package/dist/components/AlertTop/AlertTop.d.ts +34 -0
- package/dist/components/AlertTop/AlertTop.js +30 -0
- package/dist/components/AlertTop/constants.d.ts +14 -0
- package/dist/components/AlertTop/constants.js +16 -0
- package/dist/components/AlertTop/index.d.ts +1 -0
- package/dist/components/AlertTop/index.js +1 -0
- package/dist/components/AlertTop/styles.module.css +237 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +2 -0
- package/dist/constants.d.ts +15 -0
- package/dist/constants.js +16 -0
- package/dist/helperComponents/AlertTopButton/AlertTopButton.d.ts +9 -0
- package/dist/helperComponents/AlertTopButton/AlertTopButton.js +6 -0
- package/dist/helperComponents/AlertTopButton/index.d.ts +1 -0
- package/dist/helperComponents/AlertTopButton/index.js +1 -0
- package/dist/helperComponents/AlertTopButton/styles.module.css +58 -0
- package/dist/helperComponents/index.d.ts +1 -0
- package/dist/helperComponents/index.js +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js +17 -0
- package/package.json +42 -0
- package/src/components/Alert/Alert.tsx +92 -0
- package/src/components/Alert/index.ts +1 -0
- package/src/components/Alert/styles.module.scss +106 -0
- package/src/components/AlertTop/AlertTop.tsx +134 -0
- package/src/components/AlertTop/constants.ts +17 -0
- package/src/components/AlertTop/index.ts +1 -0
- package/src/components/AlertTop/styles.module.scss +157 -0
- package/src/components/index.ts +2 -0
- package/src/constants.ts +17 -0
- package/src/helperComponents/AlertTopButton/AlertTopButton.tsx +25 -0
- package/src/helperComponents/AlertTopButton/index.ts +1 -0
- package/src/helperComponents/AlertTopButton/styles.module.scss +57 -0
- package/src/helperComponents/index.ts +1 -0
- package/src/index.ts +1 -0
- 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,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';
|