@snack-uikit/status 0.7.2 → 0.8.1
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 +21 -0
- package/README.md +1 -0
- package/dist/cjs/components/Status/Status.d.ts +2 -1
- package/dist/cjs/components/Status/Status.js +7 -2
- package/dist/cjs/components/Status/constants.d.ts +4 -0
- package/dist/cjs/components/Status/constants.js +5 -1
- package/dist/cjs/components/Status/styles.module.css +52 -1
- package/dist/esm/components/Status/Status.d.ts +2 -1
- package/dist/esm/components/Status/Status.js +4 -3
- package/dist/esm/components/Status/constants.d.ts +4 -0
- package/dist/esm/components/Status/constants.js +4 -0
- package/dist/esm/components/Status/styles.module.css +52 -1
- package/package.json +4 -3
- package/src/components/Status/Status.tsx +10 -2
- package/src/components/Status/constants.ts +5 -0
- package/src/components/Status/styles.module.scss +10 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,27 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## 0.8.1 (2025-01-23)
|
|
7
|
+
|
|
8
|
+
### Only dependencies have been changed
|
|
9
|
+
* [@snack-uikit/loaders@0.9.1](https://github.com/cloud-ru-tech/snack-uikit/blob/master/packages/loaders/CHANGELOG.md)
|
|
10
|
+
* [@snack-uikit/utils@3.7.0](https://github.com/cloud-ru-tech/snack-uikit/blob/master/packages/utils/CHANGELOG.md)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# 0.8.0 (2024-12-17)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Features
|
|
20
|
+
|
|
21
|
+
* **PDS-77:** added Spinner to Status ([12ed8bc](https://github.com/cloud-ru-tech/snack-uikit/commit/12ed8bcb0568aeb33c48b21751ac0e9bdd09d687))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
6
27
|
## 0.7.2 (2024-12-12)
|
|
7
28
|
|
|
8
29
|
### Only dependencies have been changed
|
package/README.md
CHANGED
|
@@ -33,6 +33,7 @@ import { Status, StatusIndicator } from '@snack-uikit/status';
|
|
|
33
33
|
| size | enum Size: `"xs"`, `"s"` | xs | Размер |
|
|
34
34
|
| appearance | enum Appearance: `"primary"`, `"neutral"`, `"red"`, `"orange"`, `"yellow"`, `"green"`, `"blue"`, `"violet"`, `"pink"` | primary | Внешний вид |
|
|
35
35
|
| hasBackground | `boolean` | - | Наличие фона |
|
|
36
|
+
| loading | `boolean` | - | |
|
|
36
37
|
| className | `string` | - | CSS-класс |
|
|
37
38
|
## StatusIndicator
|
|
38
39
|
### Props
|
|
@@ -10,6 +10,7 @@ export type StatusProps = WithSupportProps<{
|
|
|
10
10
|
appearance?: Appearance;
|
|
11
11
|
/** Наличие фона */
|
|
12
12
|
hasBackground?: boolean;
|
|
13
|
+
loading?: boolean;
|
|
13
14
|
className?: string;
|
|
14
15
|
}>;
|
|
15
|
-
export declare function Status({ label, size, appearance, hasBackground, className, ...rest }: StatusProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export declare function Status({ label, size, appearance, hasBackground, loading, className, ...rest }: StatusProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -19,6 +19,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
19
19
|
exports.Status = Status;
|
|
20
20
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
21
21
|
const classnames_1 = __importDefault(require("classnames"));
|
|
22
|
+
const loaders_1 = require("@snack-uikit/loaders");
|
|
22
23
|
const utils_1 = require("@snack-uikit/utils");
|
|
23
24
|
const constants_1 = require("../../constants");
|
|
24
25
|
const StatusIndicator_1 = require("../StatusIndicator");
|
|
@@ -30,15 +31,19 @@ function Status(_a) {
|
|
|
30
31
|
size = constants_2.SIZE.Xs,
|
|
31
32
|
appearance = constants_1.APPEARANCE.Primary,
|
|
32
33
|
hasBackground,
|
|
34
|
+
loading,
|
|
33
35
|
className
|
|
34
36
|
} = _a,
|
|
35
|
-
rest = __rest(_a, ["label", "size", "appearance", "hasBackground", "className"]);
|
|
37
|
+
rest = __rest(_a, ["label", "size", "appearance", "hasBackground", "loading", "className"]);
|
|
36
38
|
return (0, jsx_runtime_1.jsxs)("div", Object.assign({
|
|
37
39
|
className: (0, classnames_1.default)(styles_module_scss_1.default.container, className)
|
|
38
40
|
}, (0, utils_1.extractSupportProps)(rest), {
|
|
39
41
|
"data-size": size,
|
|
40
42
|
"data-has-background": hasBackground || undefined,
|
|
41
|
-
|
|
43
|
+
"data-appearance": loading ? constants_1.APPEARANCE.Neutral : appearance,
|
|
44
|
+
children: [loading ? (0, jsx_runtime_1.jsx)(loaders_1.Spinner, {
|
|
45
|
+
size: constants_2.LOADER_SIZE_MAP[size]
|
|
46
|
+
}) : (0, jsx_runtime_1.jsx)(StatusIndicator_1.StatusIndicator, {
|
|
42
47
|
appearance: appearance,
|
|
43
48
|
size: constants_2.STATUS_INDICATOR_SIZE_MAP[size]
|
|
44
49
|
}), (0, jsx_runtime_1.jsx)("span", {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.STATUS_INDICATOR_SIZE_MAP = exports.SIZE = void 0;
|
|
6
|
+
exports.LOADER_SIZE_MAP = exports.STATUS_INDICATOR_SIZE_MAP = exports.SIZE = void 0;
|
|
7
7
|
const constants_1 = require("../StatusIndicator/constants");
|
|
8
8
|
exports.SIZE = {
|
|
9
9
|
Xs: 'xs',
|
|
@@ -12,4 +12,8 @@ exports.SIZE = {
|
|
|
12
12
|
exports.STATUS_INDICATOR_SIZE_MAP = {
|
|
13
13
|
[exports.SIZE.Xs]: constants_1.SIZE.Xs,
|
|
14
14
|
[exports.SIZE.S]: constants_1.SIZE.S
|
|
15
|
+
};
|
|
16
|
+
exports.LOADER_SIZE_MAP = {
|
|
17
|
+
[exports.SIZE.Xs]: 'xxs',
|
|
18
|
+
[exports.SIZE.S]: 'xs'
|
|
15
19
|
};
|
|
@@ -2,9 +2,60 @@
|
|
|
2
2
|
display:inline-flex;
|
|
3
3
|
align-items:center;
|
|
4
4
|
}
|
|
5
|
-
.container[data-has-background]{
|
|
5
|
+
.container[data-has-background][data-appearance=primary]{
|
|
6
|
+
background-color:var(--sys-primary-decor-default, #ebdefd);
|
|
7
|
+
}
|
|
8
|
+
.container[data-has-background][data-appearance=primary] .label{
|
|
9
|
+
color:var(--sys-primary-text-support, #5b4796);
|
|
10
|
+
}
|
|
11
|
+
.container[data-has-background][data-appearance=neutral]{
|
|
6
12
|
background-color:var(--sys-neutral-decor-default, #dde0ea);
|
|
7
13
|
}
|
|
14
|
+
.container[data-has-background][data-appearance=neutral] .label{
|
|
15
|
+
color:var(--sys-neutral-text-support, #6d707f);
|
|
16
|
+
}
|
|
17
|
+
.container[data-has-background][data-appearance=red]{
|
|
18
|
+
background-color:var(--sys-red-decor-default, #fdd6cd);
|
|
19
|
+
}
|
|
20
|
+
.container[data-has-background][data-appearance=red] .label{
|
|
21
|
+
color:var(--sys-red-text-support, #ae514c);
|
|
22
|
+
}
|
|
23
|
+
.container[data-has-background][data-appearance=orange]{
|
|
24
|
+
background-color:var(--sys-orange-decor-default, #fed8b8);
|
|
25
|
+
}
|
|
26
|
+
.container[data-has-background][data-appearance=orange] .label{
|
|
27
|
+
color:var(--sys-orange-text-support, #bb733e);
|
|
28
|
+
}
|
|
29
|
+
.container[data-has-background][data-appearance=blue]{
|
|
30
|
+
background-color:var(--sys-blue-decor-default, #d6e2f4);
|
|
31
|
+
}
|
|
32
|
+
.container[data-has-background][data-appearance=blue] .label{
|
|
33
|
+
color:var(--sys-blue-text-support, #4877b0);
|
|
34
|
+
}
|
|
35
|
+
.container[data-has-background][data-appearance=violet]{
|
|
36
|
+
background-color:var(--sys-violet-decor-default, #e6dcf3);
|
|
37
|
+
}
|
|
38
|
+
.container[data-has-background][data-appearance=violet] .label{
|
|
39
|
+
color:var(--sys-violet-text-support, #8c639b);
|
|
40
|
+
}
|
|
41
|
+
.container[data-has-background][data-appearance=pink]{
|
|
42
|
+
background-color:var(--sys-pink-decor-default, #f5d9e1);
|
|
43
|
+
}
|
|
44
|
+
.container[data-has-background][data-appearance=pink] .label{
|
|
45
|
+
color:var(--sys-pink-text-support, #ae5e80);
|
|
46
|
+
}
|
|
47
|
+
.container[data-has-background][data-appearance=yellow]{
|
|
48
|
+
background-color:var(--sys-yellow-decor-default, #f0dfb1);
|
|
49
|
+
}
|
|
50
|
+
.container[data-has-background][data-appearance=yellow] .label{
|
|
51
|
+
color:var(--sys-yellow-text-support, #b78c32);
|
|
52
|
+
}
|
|
53
|
+
.container[data-has-background][data-appearance=green]{
|
|
54
|
+
background-color:var(--sys-green-decor-default, #d2ead0);
|
|
55
|
+
}
|
|
56
|
+
.container[data-has-background][data-appearance=green] .label{
|
|
57
|
+
color:var(--sys-green-text-support, #55915a);
|
|
58
|
+
}
|
|
8
59
|
.container[data-has-background][data-size=xs]{
|
|
9
60
|
height:var(--size-status-background-container-xs, 16px);
|
|
10
61
|
padding-right:var(--spacing-status-background-container-padding-right-xs, 4px);
|
|
@@ -10,6 +10,7 @@ export type StatusProps = WithSupportProps<{
|
|
|
10
10
|
appearance?: Appearance;
|
|
11
11
|
/** Наличие фона */
|
|
12
12
|
hasBackground?: boolean;
|
|
13
|
+
loading?: boolean;
|
|
13
14
|
className?: string;
|
|
14
15
|
}>;
|
|
15
|
-
export declare function Status({ label, size, appearance, hasBackground, className, ...rest }: StatusProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export declare function Status({ label, size, appearance, hasBackground, loading, className, ...rest }: StatusProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -11,12 +11,13 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
11
11
|
};
|
|
12
12
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
13
|
import cn from 'classnames';
|
|
14
|
+
import { Spinner } from '@snack-uikit/loaders';
|
|
14
15
|
import { extractSupportProps } from '@snack-uikit/utils';
|
|
15
16
|
import { APPEARANCE } from '../../constants';
|
|
16
17
|
import { StatusIndicator } from '../StatusIndicator';
|
|
17
|
-
import { SIZE, STATUS_INDICATOR_SIZE_MAP } from './constants';
|
|
18
|
+
import { LOADER_SIZE_MAP, SIZE, STATUS_INDICATOR_SIZE_MAP } from './constants';
|
|
18
19
|
import styles from './styles.module.css';
|
|
19
20
|
export function Status(_a) {
|
|
20
|
-
var { label, size = SIZE.Xs, appearance = APPEARANCE.Primary, hasBackground, className } = _a, rest = __rest(_a, ["label", "size", "appearance", "hasBackground", "className"]);
|
|
21
|
-
return (_jsxs("div", Object.assign({ className: cn(styles.container, className) }, extractSupportProps(rest), { "data-size": size, "data-has-background": hasBackground || undefined, children: [_jsx(StatusIndicator, { appearance: appearance, size: STATUS_INDICATOR_SIZE_MAP[size] }), _jsx("span", { className: styles.label, children: label })] })));
|
|
21
|
+
var { label, size = SIZE.Xs, appearance = APPEARANCE.Primary, hasBackground, loading, className } = _a, rest = __rest(_a, ["label", "size", "appearance", "hasBackground", "loading", "className"]);
|
|
22
|
+
return (_jsxs("div", Object.assign({ className: cn(styles.container, className) }, extractSupportProps(rest), { "data-size": size, "data-has-background": hasBackground || undefined, "data-appearance": loading ? APPEARANCE.Neutral : appearance, children: [loading ? (_jsx(Spinner, { size: LOADER_SIZE_MAP[size] })) : (_jsx(StatusIndicator, { appearance: appearance, size: STATUS_INDICATOR_SIZE_MAP[size] })), _jsx("span", { className: styles.label, children: label })] })));
|
|
22
23
|
}
|
|
@@ -2,9 +2,60 @@
|
|
|
2
2
|
display:inline-flex;
|
|
3
3
|
align-items:center;
|
|
4
4
|
}
|
|
5
|
-
.container[data-has-background]{
|
|
5
|
+
.container[data-has-background][data-appearance=primary]{
|
|
6
|
+
background-color:var(--sys-primary-decor-default, #ebdefd);
|
|
7
|
+
}
|
|
8
|
+
.container[data-has-background][data-appearance=primary] .label{
|
|
9
|
+
color:var(--sys-primary-text-support, #5b4796);
|
|
10
|
+
}
|
|
11
|
+
.container[data-has-background][data-appearance=neutral]{
|
|
6
12
|
background-color:var(--sys-neutral-decor-default, #dde0ea);
|
|
7
13
|
}
|
|
14
|
+
.container[data-has-background][data-appearance=neutral] .label{
|
|
15
|
+
color:var(--sys-neutral-text-support, #6d707f);
|
|
16
|
+
}
|
|
17
|
+
.container[data-has-background][data-appearance=red]{
|
|
18
|
+
background-color:var(--sys-red-decor-default, #fdd6cd);
|
|
19
|
+
}
|
|
20
|
+
.container[data-has-background][data-appearance=red] .label{
|
|
21
|
+
color:var(--sys-red-text-support, #ae514c);
|
|
22
|
+
}
|
|
23
|
+
.container[data-has-background][data-appearance=orange]{
|
|
24
|
+
background-color:var(--sys-orange-decor-default, #fed8b8);
|
|
25
|
+
}
|
|
26
|
+
.container[data-has-background][data-appearance=orange] .label{
|
|
27
|
+
color:var(--sys-orange-text-support, #bb733e);
|
|
28
|
+
}
|
|
29
|
+
.container[data-has-background][data-appearance=blue]{
|
|
30
|
+
background-color:var(--sys-blue-decor-default, #d6e2f4);
|
|
31
|
+
}
|
|
32
|
+
.container[data-has-background][data-appearance=blue] .label{
|
|
33
|
+
color:var(--sys-blue-text-support, #4877b0);
|
|
34
|
+
}
|
|
35
|
+
.container[data-has-background][data-appearance=violet]{
|
|
36
|
+
background-color:var(--sys-violet-decor-default, #e6dcf3);
|
|
37
|
+
}
|
|
38
|
+
.container[data-has-background][data-appearance=violet] .label{
|
|
39
|
+
color:var(--sys-violet-text-support, #8c639b);
|
|
40
|
+
}
|
|
41
|
+
.container[data-has-background][data-appearance=pink]{
|
|
42
|
+
background-color:var(--sys-pink-decor-default, #f5d9e1);
|
|
43
|
+
}
|
|
44
|
+
.container[data-has-background][data-appearance=pink] .label{
|
|
45
|
+
color:var(--sys-pink-text-support, #ae5e80);
|
|
46
|
+
}
|
|
47
|
+
.container[data-has-background][data-appearance=yellow]{
|
|
48
|
+
background-color:var(--sys-yellow-decor-default, #f0dfb1);
|
|
49
|
+
}
|
|
50
|
+
.container[data-has-background][data-appearance=yellow] .label{
|
|
51
|
+
color:var(--sys-yellow-text-support, #b78c32);
|
|
52
|
+
}
|
|
53
|
+
.container[data-has-background][data-appearance=green]{
|
|
54
|
+
background-color:var(--sys-green-decor-default, #d2ead0);
|
|
55
|
+
}
|
|
56
|
+
.container[data-has-background][data-appearance=green] .label{
|
|
57
|
+
color:var(--sys-green-text-support, #55915a);
|
|
58
|
+
}
|
|
8
59
|
.container[data-has-background][data-size=xs]{
|
|
9
60
|
height:var(--size-status-background-container-xs, 16px);
|
|
10
61
|
padding-right:var(--spacing-status-background-container-padding-right-xs, 4px);
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"title": "Status",
|
|
7
|
-
"version": "0.
|
|
7
|
+
"version": "0.8.1",
|
|
8
8
|
"sideEffects": [
|
|
9
9
|
"*.css",
|
|
10
10
|
"*.woff",
|
|
@@ -36,8 +36,9 @@
|
|
|
36
36
|
"license": "Apache-2.0",
|
|
37
37
|
"scripts": {},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@snack-uikit/
|
|
39
|
+
"@snack-uikit/loaders": "0.9.1",
|
|
40
|
+
"@snack-uikit/utils": "3.7.0",
|
|
40
41
|
"classnames": "2.5.1"
|
|
41
42
|
},
|
|
42
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "3528e78aec23804dca44d311947c1dcd4ed3792b"
|
|
43
44
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import cn from 'classnames';
|
|
2
2
|
|
|
3
|
+
import { Spinner } from '@snack-uikit/loaders';
|
|
3
4
|
import { extractSupportProps, WithSupportProps } from '@snack-uikit/utils';
|
|
4
5
|
|
|
5
6
|
import { APPEARANCE } from '../../constants';
|
|
6
7
|
import { Appearance } from '../../types';
|
|
7
8
|
import { StatusIndicator } from '../StatusIndicator';
|
|
8
|
-
import { SIZE, STATUS_INDICATOR_SIZE_MAP } from './constants';
|
|
9
|
+
import { LOADER_SIZE_MAP, SIZE, STATUS_INDICATOR_SIZE_MAP } from './constants';
|
|
9
10
|
import styles from './styles.module.scss';
|
|
10
11
|
import { Size } from './types';
|
|
11
12
|
|
|
@@ -18,6 +19,7 @@ export type StatusProps = WithSupportProps<{
|
|
|
18
19
|
appearance?: Appearance;
|
|
19
20
|
/** Наличие фона */
|
|
20
21
|
hasBackground?: boolean;
|
|
22
|
+
loading?: boolean;
|
|
21
23
|
className?: string;
|
|
22
24
|
}>;
|
|
23
25
|
|
|
@@ -26,6 +28,7 @@ export function Status({
|
|
|
26
28
|
size = SIZE.Xs,
|
|
27
29
|
appearance = APPEARANCE.Primary,
|
|
28
30
|
hasBackground,
|
|
31
|
+
loading,
|
|
29
32
|
className,
|
|
30
33
|
...rest
|
|
31
34
|
}: StatusProps) {
|
|
@@ -35,8 +38,13 @@ export function Status({
|
|
|
35
38
|
{...extractSupportProps(rest)}
|
|
36
39
|
data-size={size}
|
|
37
40
|
data-has-background={hasBackground || undefined}
|
|
41
|
+
data-appearance={loading ? APPEARANCE.Neutral : appearance}
|
|
38
42
|
>
|
|
39
|
-
|
|
43
|
+
{loading ? (
|
|
44
|
+
<Spinner size={LOADER_SIZE_MAP[size]} />
|
|
45
|
+
) : (
|
|
46
|
+
<StatusIndicator appearance={appearance} size={STATUS_INDICATOR_SIZE_MAP[size]} />
|
|
47
|
+
)}
|
|
40
48
|
<span className={styles.label}>{label}</span>
|
|
41
49
|
</div>
|
|
42
50
|
);
|
|
@@ -5,13 +5,22 @@ $label-typography: (
|
|
|
5
5
|
's': styles-tokens-status.$sans-label-m
|
|
6
6
|
);
|
|
7
7
|
$sizes: 'xs', 's';
|
|
8
|
+
$appearances: 'primary', 'neutral', 'red', 'orange', 'blue', 'violet', 'pink', 'yellow', 'green';
|
|
8
9
|
|
|
9
10
|
.container {
|
|
10
11
|
display: inline-flex;
|
|
11
12
|
align-items: center;
|
|
12
13
|
|
|
13
14
|
&[data-has-background] {
|
|
14
|
-
|
|
15
|
+
@each $appearance in $appearances {
|
|
16
|
+
&[data-appearance='#{$appearance}'] {
|
|
17
|
+
background-color: styles-tokens-status.simple-var(styles-tokens-status.$theme-variables, 'sys', $appearance, 'decor-default');
|
|
18
|
+
|
|
19
|
+
.label {
|
|
20
|
+
color: styles-tokens-status.simple-var(styles-tokens-status.$theme-variables, 'sys', $appearance, 'text-support')
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
15
24
|
|
|
16
25
|
@each $size in $sizes {
|
|
17
26
|
&[data-size='#{$size}'] {
|