@astral/ui 4.46.0 → 4.47.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.
@@ -1,44 +1,2 @@
1
- import { type ReactNode } from 'react';
2
- type ItemStatus = 'success' | 'reject' | 'default' | 'loading';
3
- type BackgroundColor = 'grey' | 'primary';
4
- type Variant = 'plain' | 'contained';
5
- export type ComplianceStatusItem = {
6
- /**
7
- * Текст для отображения в элементе списка
8
- */
9
- text: ReactNode;
10
- /**
11
- * Статус элемента
12
- */
13
- status: ItemStatus;
14
- };
15
- export type ComplianceStatusProps = {
16
- /**
17
- * Основной заголовок элемента
18
- */
19
- title?: string | null;
20
- /**
21
- * Пропс для добавления контента между заголовком и списком
22
- */
23
- subtitle?: ReactNode;
24
- /**
25
- * Пропс для добавления контента после списка
26
- */
27
- children?: ReactNode;
28
- /**
29
- * Элементы списка
30
- */
31
- itemsList: ComplianceStatusItem[];
32
- /**
33
- * Фоновый цвет
34
- * @default grey
35
- */
36
- backgroundColor?: BackgroundColor;
37
- /**
38
- * Вариант отображения блока статусов
39
- * @default contained
40
- */
41
- variant?: Variant;
42
- };
1
+ import type { ComplianceStatusProps } from './types';
43
2
  export declare const ComplianceStatus: ({ title, itemsList, children, subtitle, backgroundColor, variant, }: ComplianceStatusProps) => import("react/jsx-runtime").JSX.Element;
44
- export {};
@@ -1,6 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cva } from 'class-variance-authority';
2
3
  import { OverflowTypography } from '../OverflowTypography';
3
4
  import { Typography } from '../Typography';
5
+ import { complianceStatusClassnames, complianceStatusColorClassnames, complianceStatusVariantClassnames, } from './constants';
4
6
  import { EmptyIcon, Inner, Item, RejectIcon, StyledLoader, SuccessIcon, Wrapper, } from './styles';
5
7
  const ICON_BY_STATUS = {
6
8
  default: _jsx(EmptyIcon, {}),
@@ -8,8 +10,21 @@ const ICON_BY_STATUS = {
8
10
  reject: _jsx(RejectIcon, {}),
9
11
  loading: _jsx(StyledLoader, {}),
10
12
  };
13
+ const complianceStatus = cva(complianceStatusClassnames.root, {
14
+ variants: {
15
+ backgroundColor: {
16
+ grey: complianceStatusColorClassnames.grey,
17
+ primary: complianceStatusColorClassnames.primary,
18
+ },
19
+ variant: {
20
+ contained: complianceStatusVariantClassnames.contained,
21
+ outlined: complianceStatusVariantClassnames.outlined,
22
+ plain: complianceStatusVariantClassnames.plain,
23
+ },
24
+ },
25
+ });
11
26
  export const ComplianceStatus = ({ title, itemsList, children, subtitle, backgroundColor = 'grey', variant = 'contained', }) => {
12
- return (_jsxs(Wrapper, { "$background": backgroundColor, "$variant": variant, children: [title && (_jsx(OverflowTypography, { variant: "h6", component: "h4", children: title })), subtitle, _jsx(Inner, { children: itemsList.map(({ text, status }, index) => (
27
+ return (_jsxs(Wrapper, { className: complianceStatus({ backgroundColor, variant }), children: [title && (_jsx(OverflowTypography, { className: complianceStatusClassnames.title, variant: "h6", component: "h4", children: title })), subtitle, _jsx(Inner, { className: complianceStatusClassnames.list, children: itemsList.map(({ text, status }, index) => (
13
28
  // biome-ignore lint/suspicious/noArrayIndexKey: Элементы статичны
14
- _jsxs(Item, { children: [ICON_BY_STATUS[status], _jsx(Typography, { children: text })] }, index))) }), children] }));
29
+ _jsxs(Item, { className: complianceStatusClassnames.item, children: [ICON_BY_STATUS[status], _jsx(Typography, { children: text })] }, index))) }), children] }));
15
30
  };
@@ -0,0 +1,14 @@
1
+ import type { BackgroundColor, Variant } from './types';
2
+ export declare const complianceStatusColorClassnames: Record<BackgroundColor, string>;
3
+ export declare const complianceStatusVariantClassnames: Record<Variant, string>;
4
+ export declare const complianceStatusClassnames: {
5
+ contained: string;
6
+ outlined: string;
7
+ plain: string;
8
+ primary: string;
9
+ grey: string;
10
+ root: string;
11
+ title: string;
12
+ list: string;
13
+ item: string;
14
+ };
@@ -0,0 +1,18 @@
1
+ import { createUIKitClassname } from '../utils/createUIKitClassname';
2
+ export const complianceStatusColorClassnames = {
3
+ grey: createUIKitClassname('compliance-status_color-grey'),
4
+ primary: createUIKitClassname('compliance-status_color-primary'),
5
+ };
6
+ export const complianceStatusVariantClassnames = {
7
+ plain: createUIKitClassname('compliance-status_variant-plain'),
8
+ contained: createUIKitClassname('compliance-status_variant-contained'),
9
+ outlined: createUIKitClassname('compliance-status_variant-outlined'),
10
+ };
11
+ export const complianceStatusClassnames = {
12
+ root: createUIKitClassname('compliance-status'),
13
+ title: createUIKitClassname('compliance-status__title'),
14
+ list: createUIKitClassname('compliance-status__list'),
15
+ item: createUIKitClassname('compliance-status__item'),
16
+ ...complianceStatusColorClassnames,
17
+ ...complianceStatusVariantClassnames,
18
+ };
@@ -1 +1,2 @@
1
- export { ComplianceStatus, type ComplianceStatusItem, type ComplianceStatusProps, } from './ComplianceStatus';
1
+ export { ComplianceStatus } from './ComplianceStatus';
2
+ export type { ComplianceStatusItem, ComplianceStatusProps } from './types';
@@ -1 +1 @@
1
- export { ComplianceStatus, } from './ComplianceStatus';
1
+ export { ComplianceStatus } from './ComplianceStatus';
@@ -1 +1,2 @@
1
- export { ComplianceStatus, type ComplianceStatusItem, type ComplianceStatusProps, } from './ComplianceStatus';
1
+ export { ComplianceStatus } from './ComplianceStatus';
2
+ export type { ComplianceStatusItem, ComplianceStatusProps } from './types';
@@ -1 +1 @@
1
- export { ComplianceStatus, } from './ComplianceStatus';
1
+ export { ComplianceStatus } from './ComplianceStatus';
@@ -1,11 +1,7 @@
1
1
  /// <reference types="react" />
2
- type Variant = 'plain' | 'contained';
3
2
  export declare const Wrapper: import("../styled").StyledComponent<{
4
3
  theme?: import("@emotion/react").Theme | undefined;
5
4
  as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
6
- } & {
7
- $background: 'grey' | 'primary';
8
- $variant: Variant;
9
5
  }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLElement>, HTMLElement>, {}>;
10
6
  export declare const Inner: import("../styled").StyledComponent<{
11
7
  theme?: import("@emotion/react").Theme | undefined;
@@ -51,4 +47,3 @@ export declare const SuccessIcon: import("../styled").StyledComponent<{
51
47
  export declare const StyledLoader: import("../styled").StyledComponent<import("../Loader").LoaderProps & {
52
48
  theme?: import("@emotion/react").Theme | undefined;
53
49
  }, {}, {}>;
54
- export {};
@@ -4,6 +4,7 @@ import { SuccessFillSm } from '../../icons/SuccessFillSm';
4
4
  import { Loader } from '../Loader';
5
5
  import { keyframes, styled } from '../styled';
6
6
  import { listContainer } from '../styled/mixins';
7
+ import { complianceStatusClassnames } from './constants';
7
8
  const iconAppearAnimation = keyframes `
8
9
  from {
9
10
  transform: scale(0);
@@ -14,14 +15,31 @@ const iconAppearAnimation = keyframes `
14
15
  opacity: 1;
15
16
  }
16
17
  `;
17
- export const Wrapper = styled('article') `
18
+ export const Wrapper = styled.article `
18
19
  display: grid;
19
20
  grid-gap: ${({ theme }) => theme.spacing(2)};
20
21
 
21
- padding: ${({ theme, $variant }) => $variant === 'contained' ? theme.spacing(3) : 0};
22
+ background-color: inherit;
22
23
 
23
- background-color: ${({ theme, $background, $variant }) => $variant === 'contained' ? theme.palette[$background][100] : 'inherit'};
24
24
  border-radius: ${({ theme }) => theme.shape.medium};
25
+
26
+ &.${complianceStatusClassnames.contained} {
27
+ padding: ${({ theme }) => theme.spacing(3)};
28
+
29
+ &.${complianceStatusClassnames.primary} {
30
+ background-color: ${({ theme }) => theme.palette.primary[100]};
31
+ }
32
+
33
+ &.${complianceStatusClassnames.grey} {
34
+ background-color: ${({ theme }) => theme.palette.grey[100]};
35
+ }
36
+ }
37
+
38
+ &.${complianceStatusClassnames.outlined} {
39
+ padding: ${({ theme }) => theme.spacing(3)};
40
+
41
+ border: 1px solid ${({ theme }) => theme.palette.grey[300]};
42
+ }
25
43
  `;
26
44
  export const Inner = styled('ul') `
27
45
  display: grid;
@@ -0,0 +1,42 @@
1
+ import type { ReactNode } from 'react';
2
+ export type ItemStatus = 'success' | 'reject' | 'default' | 'loading';
3
+ export type BackgroundColor = 'grey' | 'primary';
4
+ export type Variant = 'plain' | 'contained' | 'outlined';
5
+ export type ComplianceStatusItem = {
6
+ /**
7
+ * Текст для отображения в элементе списка
8
+ */
9
+ text: ReactNode;
10
+ /**
11
+ * Статус элемента
12
+ */
13
+ status: ItemStatus;
14
+ };
15
+ export type ComplianceStatusProps = {
16
+ /**
17
+ * Основной заголовок элемента
18
+ */
19
+ title?: string | null;
20
+ /**
21
+ * Пропс для добавления контента между заголовком и списком
22
+ */
23
+ subtitle?: ReactNode;
24
+ /**
25
+ * Пропс для добавления контента после списка
26
+ */
27
+ children?: ReactNode;
28
+ /**
29
+ * Элементы списка
30
+ */
31
+ itemsList: ComplianceStatusItem[];
32
+ /**
33
+ * Фоновый цвет
34
+ * @default grey
35
+ */
36
+ backgroundColor?: BackgroundColor;
37
+ /**
38
+ * Вариант отображения блока статусов
39
+ * @default contained
40
+ */
41
+ variant?: Variant;
42
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -1,44 +1,2 @@
1
- import { type ReactNode } from 'react';
2
- type ItemStatus = 'success' | 'reject' | 'default' | 'loading';
3
- type BackgroundColor = 'grey' | 'primary';
4
- type Variant = 'plain' | 'contained';
5
- export type ComplianceStatusItem = {
6
- /**
7
- * Текст для отображения в элементе списка
8
- */
9
- text: ReactNode;
10
- /**
11
- * Статус элемента
12
- */
13
- status: ItemStatus;
14
- };
15
- export type ComplianceStatusProps = {
16
- /**
17
- * Основной заголовок элемента
18
- */
19
- title?: string | null;
20
- /**
21
- * Пропс для добавления контента между заголовком и списком
22
- */
23
- subtitle?: ReactNode;
24
- /**
25
- * Пропс для добавления контента после списка
26
- */
27
- children?: ReactNode;
28
- /**
29
- * Элементы списка
30
- */
31
- itemsList: ComplianceStatusItem[];
32
- /**
33
- * Фоновый цвет
34
- * @default grey
35
- */
36
- backgroundColor?: BackgroundColor;
37
- /**
38
- * Вариант отображения блока статусов
39
- * @default contained
40
- */
41
- variant?: Variant;
42
- };
1
+ import type { ComplianceStatusProps } from './types';
43
2
  export declare const ComplianceStatus: ({ title, itemsList, children, subtitle, backgroundColor, variant, }: ComplianceStatusProps) => import("react/jsx-runtime").JSX.Element;
44
- export {};
@@ -2,8 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ComplianceStatus = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const class_variance_authority_1 = require("class-variance-authority");
5
6
  const OverflowTypography_1 = require("../OverflowTypography");
6
7
  const Typography_1 = require("../Typography");
8
+ const constants_1 = require("./constants");
7
9
  const styles_1 = require("./styles");
8
10
  const ICON_BY_STATUS = {
9
11
  default: (0, jsx_runtime_1.jsx)(styles_1.EmptyIcon, {}),
@@ -11,9 +13,22 @@ const ICON_BY_STATUS = {
11
13
  reject: (0, jsx_runtime_1.jsx)(styles_1.RejectIcon, {}),
12
14
  loading: (0, jsx_runtime_1.jsx)(styles_1.StyledLoader, {}),
13
15
  };
16
+ const complianceStatus = (0, class_variance_authority_1.cva)(constants_1.complianceStatusClassnames.root, {
17
+ variants: {
18
+ backgroundColor: {
19
+ grey: constants_1.complianceStatusColorClassnames.grey,
20
+ primary: constants_1.complianceStatusColorClassnames.primary,
21
+ },
22
+ variant: {
23
+ contained: constants_1.complianceStatusVariantClassnames.contained,
24
+ outlined: constants_1.complianceStatusVariantClassnames.outlined,
25
+ plain: constants_1.complianceStatusVariantClassnames.plain,
26
+ },
27
+ },
28
+ });
14
29
  const ComplianceStatus = ({ title, itemsList, children, subtitle, backgroundColor = 'grey', variant = 'contained', }) => {
15
- return ((0, jsx_runtime_1.jsxs)(styles_1.Wrapper, { "$background": backgroundColor, "$variant": variant, children: [title && ((0, jsx_runtime_1.jsx)(OverflowTypography_1.OverflowTypography, { variant: "h6", component: "h4", children: title })), subtitle, (0, jsx_runtime_1.jsx)(styles_1.Inner, { children: itemsList.map(({ text, status }, index) => (
30
+ return ((0, jsx_runtime_1.jsxs)(styles_1.Wrapper, { className: complianceStatus({ backgroundColor, variant }), children: [title && ((0, jsx_runtime_1.jsx)(OverflowTypography_1.OverflowTypography, { className: constants_1.complianceStatusClassnames.title, variant: "h6", component: "h4", children: title })), subtitle, (0, jsx_runtime_1.jsx)(styles_1.Inner, { className: constants_1.complianceStatusClassnames.list, children: itemsList.map(({ text, status }, index) => (
16
31
  // biome-ignore lint/suspicious/noArrayIndexKey: Элементы статичны
17
- (0, jsx_runtime_1.jsxs)(styles_1.Item, { children: [ICON_BY_STATUS[status], (0, jsx_runtime_1.jsx)(Typography_1.Typography, { children: text })] }, index))) }), children] }));
32
+ (0, jsx_runtime_1.jsxs)(styles_1.Item, { className: constants_1.complianceStatusClassnames.item, children: [ICON_BY_STATUS[status], (0, jsx_runtime_1.jsx)(Typography_1.Typography, { children: text })] }, index))) }), children] }));
18
33
  };
19
34
  exports.ComplianceStatus = ComplianceStatus;
@@ -0,0 +1,14 @@
1
+ import type { BackgroundColor, Variant } from './types';
2
+ export declare const complianceStatusColorClassnames: Record<BackgroundColor, string>;
3
+ export declare const complianceStatusVariantClassnames: Record<Variant, string>;
4
+ export declare const complianceStatusClassnames: {
5
+ contained: string;
6
+ outlined: string;
7
+ plain: string;
8
+ primary: string;
9
+ grey: string;
10
+ root: string;
11
+ title: string;
12
+ list: string;
13
+ item: string;
14
+ };
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.complianceStatusClassnames = exports.complianceStatusVariantClassnames = exports.complianceStatusColorClassnames = void 0;
4
+ const createUIKitClassname_1 = require("../utils/createUIKitClassname");
5
+ exports.complianceStatusColorClassnames = {
6
+ grey: (0, createUIKitClassname_1.createUIKitClassname)('compliance-status_color-grey'),
7
+ primary: (0, createUIKitClassname_1.createUIKitClassname)('compliance-status_color-primary'),
8
+ };
9
+ exports.complianceStatusVariantClassnames = {
10
+ plain: (0, createUIKitClassname_1.createUIKitClassname)('compliance-status_variant-plain'),
11
+ contained: (0, createUIKitClassname_1.createUIKitClassname)('compliance-status_variant-contained'),
12
+ outlined: (0, createUIKitClassname_1.createUIKitClassname)('compliance-status_variant-outlined'),
13
+ };
14
+ exports.complianceStatusClassnames = {
15
+ root: (0, createUIKitClassname_1.createUIKitClassname)('compliance-status'),
16
+ title: (0, createUIKitClassname_1.createUIKitClassname)('compliance-status__title'),
17
+ list: (0, createUIKitClassname_1.createUIKitClassname)('compliance-status__list'),
18
+ item: (0, createUIKitClassname_1.createUIKitClassname)('compliance-status__item'),
19
+ ...exports.complianceStatusColorClassnames,
20
+ ...exports.complianceStatusVariantClassnames,
21
+ };
@@ -1 +1,2 @@
1
- export { ComplianceStatus, type ComplianceStatusItem, type ComplianceStatusProps, } from './ComplianceStatus';
1
+ export { ComplianceStatus } from './ComplianceStatus';
2
+ export type { ComplianceStatusItem, ComplianceStatusProps } from './types';
@@ -1 +1,2 @@
1
- export { ComplianceStatus, type ComplianceStatusItem, type ComplianceStatusProps, } from './ComplianceStatus';
1
+ export { ComplianceStatus } from './ComplianceStatus';
2
+ export type { ComplianceStatusItem, ComplianceStatusProps } from './types';
@@ -1,11 +1,7 @@
1
1
  /// <reference types="react" />
2
- type Variant = 'plain' | 'contained';
3
2
  export declare const Wrapper: import("@emotion/styled/dist/declarations/src/types").StyledComponent<{
4
3
  theme?: import("@emotion/react").Theme | undefined;
5
4
  as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
6
- } & {
7
- $background: 'grey' | 'primary';
8
- $variant: Variant;
9
5
  }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLElement>, HTMLElement>, {}>;
10
6
  export declare const Inner: import("@emotion/styled/dist/declarations/src/types").StyledComponent<{
11
7
  theme?: import("@emotion/react").Theme | undefined;
@@ -51,4 +47,3 @@ export declare const SuccessIcon: import("@emotion/styled/dist/declarations/src/
51
47
  export declare const StyledLoader: import("@emotion/styled/dist/declarations/src/types").StyledComponent<import("../Loader").LoaderProps & {
52
48
  theme?: import("@emotion/react").Theme | undefined;
53
49
  }, {}, {}>;
54
- export {};
@@ -7,6 +7,7 @@ const SuccessFillSm_1 = require("../../icons/SuccessFillSm");
7
7
  const Loader_1 = require("../Loader");
8
8
  const styled_1 = require("../styled");
9
9
  const mixins_1 = require("../styled/mixins");
10
+ const constants_1 = require("./constants");
10
11
  const iconAppearAnimation = (0, styled_1.keyframes) `
11
12
  from {
12
13
  transform: scale(0);
@@ -17,14 +18,31 @@ const iconAppearAnimation = (0, styled_1.keyframes) `
17
18
  opacity: 1;
18
19
  }
19
20
  `;
20
- exports.Wrapper = (0, styled_1.styled)('article') `
21
+ exports.Wrapper = styled_1.styled.article `
21
22
  display: grid;
22
23
  grid-gap: ${({ theme }) => theme.spacing(2)};
23
24
 
24
- padding: ${({ theme, $variant }) => $variant === 'contained' ? theme.spacing(3) : 0};
25
+ background-color: inherit;
25
26
 
26
- background-color: ${({ theme, $background, $variant }) => $variant === 'contained' ? theme.palette[$background][100] : 'inherit'};
27
27
  border-radius: ${({ theme }) => theme.shape.medium};
28
+
29
+ &.${constants_1.complianceStatusClassnames.contained} {
30
+ padding: ${({ theme }) => theme.spacing(3)};
31
+
32
+ &.${constants_1.complianceStatusClassnames.primary} {
33
+ background-color: ${({ theme }) => theme.palette.primary[100]};
34
+ }
35
+
36
+ &.${constants_1.complianceStatusClassnames.grey} {
37
+ background-color: ${({ theme }) => theme.palette.grey[100]};
38
+ }
39
+ }
40
+
41
+ &.${constants_1.complianceStatusClassnames.outlined} {
42
+ padding: ${({ theme }) => theme.spacing(3)};
43
+
44
+ border: 1px solid ${({ theme }) => theme.palette.grey[300]};
45
+ }
28
46
  `;
29
47
  exports.Inner = (0, styled_1.styled)('ul') `
30
48
  display: grid;
@@ -0,0 +1,42 @@
1
+ import type { ReactNode } from 'react';
2
+ export type ItemStatus = 'success' | 'reject' | 'default' | 'loading';
3
+ export type BackgroundColor = 'grey' | 'primary';
4
+ export type Variant = 'plain' | 'contained' | 'outlined';
5
+ export type ComplianceStatusItem = {
6
+ /**
7
+ * Текст для отображения в элементе списка
8
+ */
9
+ text: ReactNode;
10
+ /**
11
+ * Статус элемента
12
+ */
13
+ status: ItemStatus;
14
+ };
15
+ export type ComplianceStatusProps = {
16
+ /**
17
+ * Основной заголовок элемента
18
+ */
19
+ title?: string | null;
20
+ /**
21
+ * Пропс для добавления контента между заголовком и списком
22
+ */
23
+ subtitle?: ReactNode;
24
+ /**
25
+ * Пропс для добавления контента после списка
26
+ */
27
+ children?: ReactNode;
28
+ /**
29
+ * Элементы списка
30
+ */
31
+ itemsList: ComplianceStatusItem[];
32
+ /**
33
+ * Фоновый цвет
34
+ * @default grey
35
+ */
36
+ backgroundColor?: BackgroundColor;
37
+ /**
38
+ * Вариант отображения блока статусов
39
+ * @default contained
40
+ */
41
+ variant?: Variant;
42
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astral/ui",
3
- "version": "4.46.0",
3
+ "version": "4.47.0",
4
4
  "browser": "./index.js",
5
5
  "main": "./node/index.js",
6
6
  "dependencies": {
@@ -12,6 +12,7 @@
12
12
  "@emotion/styled": "^11.13.5",
13
13
  "@mui/material": "5.13.0",
14
14
  "classnames": "^2.5.1",
15
+ "class-variance-authority": "^0.7.1",
15
16
  "colord": "^2.9.3",
16
17
  "dayjs": "^1.11.5",
17
18
  "react-imask": "6.4.2",