@ozen-ui/kit 0.18.0 → 0.20.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 (66) hide show
  1. package/ChipNext/package.json +5 -0
  2. package/__inner__/cjs/components/Avatar/Avatar.css +28 -25
  3. package/__inner__/cjs/components/Avatar/Avatar.d.ts +3 -3
  4. package/__inner__/cjs/components/Avatar/Avatar.js +15 -27
  5. package/__inner__/cjs/components/Avatar/utils.d.ts +6 -0
  6. package/__inner__/cjs/components/Avatar/utils.js +26 -0
  7. package/__inner__/cjs/components/Button/Button.d.ts +5 -5
  8. package/__inner__/cjs/components/Button/Button.js +12 -3
  9. package/__inner__/cjs/components/Chip/Chip.d.ts +3 -0
  10. package/__inner__/cjs/components/Chip/Chip.js +3 -0
  11. package/__inner__/cjs/components/ChipNext/Chip.css +108 -0
  12. package/__inner__/cjs/components/ChipNext/Chip.d.ts +42 -0
  13. package/__inner__/cjs/components/ChipNext/Chip.js +46 -0
  14. package/__inner__/cjs/components/ChipNext/constants.d.ts +4 -0
  15. package/__inner__/cjs/components/ChipNext/constants.js +7 -0
  16. package/__inner__/cjs/components/ChipNext/index.d.ts +1 -0
  17. package/__inner__/cjs/components/ChipNext/index.js +4 -0
  18. package/__inner__/cjs/components/FieldIcon/FieldIcon.d.ts +4 -7
  19. package/__inner__/cjs/components/FieldIcon/FieldIcon.js +5 -21
  20. package/__inner__/cjs/components/Grid/Grid.css +18 -0
  21. package/__inner__/cjs/components/Grid/Grid.d.ts +8 -0
  22. package/__inner__/cjs/components/Grid/Grid.js +12 -3
  23. package/__inner__/cjs/components/Modal/Modal.js +3 -7
  24. package/__inner__/cjs/components/Popover/Popover.js +1 -5
  25. package/__inner__/cjs/components/Table/components/TableRow/TableRow.css +6 -1
  26. package/__inner__/cjs/components/ThemeProvider/_color/Theme_color_bBusinessDefault.css +2 -2
  27. package/__inner__/cjs/components/ThemeProvider/_color/Theme_color_ozenDark.css +1 -1
  28. package/__inner__/cjs/components/ThemeProvider/_color/Theme_color_ozenDefault.css +1 -1
  29. package/__inner__/cjs/components/ThemeProvider/types.d.ts +2 -0
  30. package/__inner__/cjs/utils/renderContent/index.d.ts +1 -0
  31. package/__inner__/cjs/utils/renderContent/index.js +4 -0
  32. package/__inner__/cjs/utils/renderContent/renderContent.d.ts +6 -0
  33. package/__inner__/cjs/utils/renderContent/renderContent.js +29 -0
  34. package/__inner__/esm/components/Avatar/Avatar.css +28 -25
  35. package/__inner__/esm/components/Avatar/Avatar.d.ts +3 -3
  36. package/__inner__/esm/components/Avatar/Avatar.js +14 -26
  37. package/__inner__/esm/components/Avatar/utils.d.ts +6 -0
  38. package/__inner__/esm/components/Avatar/utils.js +22 -0
  39. package/__inner__/esm/components/Button/Button.d.ts +5 -5
  40. package/__inner__/esm/components/Button/Button.js +12 -3
  41. package/__inner__/esm/components/Chip/Chip.d.ts +3 -0
  42. package/__inner__/esm/components/Chip/Chip.js +3 -0
  43. package/__inner__/esm/components/ChipNext/Chip.css +108 -0
  44. package/__inner__/esm/components/ChipNext/Chip.d.ts +42 -0
  45. package/__inner__/esm/components/ChipNext/Chip.js +43 -0
  46. package/__inner__/esm/components/ChipNext/constants.d.ts +4 -0
  47. package/__inner__/esm/components/ChipNext/constants.js +4 -0
  48. package/__inner__/esm/components/ChipNext/index.d.ts +1 -0
  49. package/__inner__/esm/components/ChipNext/index.js +1 -0
  50. package/__inner__/esm/components/FieldIcon/FieldIcon.d.ts +4 -7
  51. package/__inner__/esm/components/FieldIcon/FieldIcon.js +5 -21
  52. package/__inner__/esm/components/Grid/Grid.css +18 -0
  53. package/__inner__/esm/components/Grid/Grid.d.ts +8 -0
  54. package/__inner__/esm/components/Grid/Grid.js +11 -2
  55. package/__inner__/esm/components/Modal/Modal.js +3 -7
  56. package/__inner__/esm/components/Popover/Popover.js +1 -5
  57. package/__inner__/esm/components/Table/components/TableRow/TableRow.css +6 -1
  58. package/__inner__/esm/components/ThemeProvider/_color/Theme_color_bBusinessDefault.css +2 -2
  59. package/__inner__/esm/components/ThemeProvider/_color/Theme_color_ozenDark.css +1 -1
  60. package/__inner__/esm/components/ThemeProvider/_color/Theme_color_ozenDefault.css +1 -1
  61. package/__inner__/esm/components/ThemeProvider/types.d.ts +2 -0
  62. package/__inner__/esm/utils/renderContent/index.d.ts +1 -0
  63. package/__inner__/esm/utils/renderContent/index.js +1 -0
  64. package/__inner__/esm/utils/renderContent/renderContent.d.ts +6 -0
  65. package/__inner__/esm/utils/renderContent/renderContent.js +25 -0
  66. package/package.json +1 -1
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../__inner__/cjs/components/ChipNext/index.js",
3
+ "module": "../__inner__/esm/components/ChipNext/index.js",
4
+ "types": "../__inner__/esm/components/ChipNext/index.d.ts"
5
+ }
@@ -1,112 +1,115 @@
1
1
  .Avatar {
2
2
  --avatar-size: 100%;
3
+ --avatar-color: var(--color-content-action-on);
4
+ --avatar-bg-color: unset;
3
5
  display: flex;
4
6
  align-items: center;
5
7
  justify-content: center;
6
8
  flex-shrink: 0;
7
9
  inline-size: var(--avatar-size);
8
10
  block-size: var(--avatar-size);
11
+ color: var(--avatar-color);
12
+ background-color: var(--avatar-bg-color);
9
13
  font-family: Roboto, sans-serif;
10
14
  border-radius: 50%;
11
15
  position: relative;
12
16
  overflow: visible;
13
- color: var(--color-content-action-on);
14
17
  }
15
18
 
16
19
  .Avatar_color_a1 {
17
- background: var(--color-additional-a1);
20
+ --avatar-bg-color: var(--color-additional-a1);
18
21
  }
19
22
 
20
23
  .Avatar_color_a2 {
21
- background: var(--color-additional-a2);
24
+ --avatar-bg-color: var(--color-additional-a2);
22
25
  }
23
26
 
24
27
  .Avatar_color_a3 {
25
- background: var(--color-additional-a3);
28
+ --avatar-bg-color: var(--color-additional-a3);
26
29
  }
27
30
 
28
31
  .Avatar_color_b1 {
29
- background: var(--color-additional-b1);
32
+ --avatar-bg-color: var(--color-additional-b1);
30
33
  }
31
34
 
32
35
  .Avatar_color_b2 {
33
- background: var(--color-additional-b2);
36
+ --avatar-bg-color: var(--color-additional-b2);
34
37
  }
35
38
 
36
39
  .Avatar_color_b3 {
37
- background: var(--color-additional-b3);
40
+ --avatar-bg-color: var(--color-additional-b3);
38
41
  }
39
42
 
40
43
  .Avatar_color_c1 {
41
- background: var(--color-additional-c1);
44
+ --avatar-bg-color: var(--color-additional-c1);
42
45
  }
43
46
 
44
47
  .Avatar_color_c2 {
45
- background: var(--color-additional-c2);
48
+ --avatar-bg-color: var(--color-additional-c2);
46
49
  }
47
50
 
48
51
  .Avatar_color_c3 {
49
- background: var(--color-additional-c3);
52
+ --avatar-bg-color: var(--color-additional-c3);
50
53
  }
51
54
 
52
55
  .Avatar_color_d1 {
53
- background: var(--color-additional-d1);
56
+ --avatar-bg-color: var(--color-additional-d1);
54
57
  }
55
58
 
56
59
  .Avatar_color_d2 {
57
- background: var(--color-additional-d2);
60
+ --avatar-bg-color: var(--color-additional-d2);
58
61
  }
59
62
 
60
63
  .Avatar_color_d3 {
61
- background: var(--color-additional-d3);
64
+ --avatar-bg-color: var(--color-additional-d3);
62
65
  }
63
66
 
64
67
  .Avatar_color_e1 {
65
- background: var(--color-additional-e1);
68
+ --avatar-bg-color: var(--color-additional-e1);
66
69
  }
67
70
 
68
71
  .Avatar_color_e2 {
69
- background: var(--color-additional-e2);
72
+ --avatar-bg-color: var(--color-additional-e2);
70
73
  }
71
74
 
72
75
  .Avatar_color_e3 {
73
- background: var(--color-additional-e3);
76
+ --avatar-bg-color: var(--color-additional-e3);
74
77
  }
75
78
 
76
79
  .Avatar_color_f1 {
77
- background: var(--color-additional-f1);
80
+ --avatar-bg-color: var(--color-additional-f1);
78
81
  }
79
82
 
80
83
  .Avatar_color_f2 {
81
- background: var(--color-additional-f2);
84
+ --avatar-bg-color: var(--color-additional-f2);
82
85
  }
83
86
 
84
87
  .Avatar_color_f3 {
85
- background: var(--color-additional-f3);
88
+ --avatar-bg-color: var(--color-additional-f3);
86
89
  }
87
90
 
88
91
  .Avatar_color_g1 {
89
- background: var(--color-additional-g1);
92
+ --avatar-bg-color: var(--color-additional-g1);
90
93
  }
91
94
 
92
95
  .Avatar_color_g2 {
93
- background: var(--color-additional-g2);
96
+ --avatar-bg-color: var(--color-additional-g2);
94
97
  }
95
98
 
96
99
  .Avatar_color_g3 {
97
- background: var(--color-additional-g3);
100
+ --avatar-bg-color: var(--color-additional-g3);
98
101
  }
99
102
 
100
103
  .Avatar_color_h1 {
101
- background: var(--color-additional-h1);
104
+ --avatar-bg-color: var(--color-additional-h1);
102
105
  }
103
106
 
104
107
  .Avatar_color_h2 {
105
- background: var(--color-additional-h2);
108
+ --avatar-bg-color: var(--color-additional-h2);
106
109
  }
107
110
 
108
111
  .Avatar_color_h3 {
109
- background: var(--color-additional-h3);
112
+ --avatar-bg-color: var(--color-additional-h3);
110
113
  }
111
114
 
112
115
  .Avatar-Image {
@@ -1,6 +1,6 @@
1
1
  import './Avatar.css';
2
2
  import React from 'react';
3
- import type { ComponentPropsWithRef, ComponentRef } from 'react';
3
+ import type { ComponentPropsWithRef, ComponentRef, ReactNode } from 'react';
4
4
  import type { IndicatorProps } from '../Indicator';
5
5
  export declare const avatarSizeVariant: readonly ["4xs", "3xs", "2xs", "xs", "s", "m", "l", "xl"];
6
6
  export declare const avatarHueVariant: number[];
@@ -16,14 +16,14 @@ export type AvatarProps = {
16
16
  /** Url изображения */
17
17
  src?: string;
18
18
  /** Имя пользователя */
19
- name: string;
19
+ name?: string;
20
20
  /** Цветовой оттенок аватарки (при использовании без src) */
21
21
  hue?: AvatarHueVariant;
22
22
  /** Дополнительные СSS-классы */
23
23
  className?: string;
24
24
  /** Свойства компонента Indicator */
25
25
  indicatorProps?: IndicatorProps;
26
- children?: never;
26
+ children?: ReactNode;
27
27
  } & ComponentPropsWithRef<typeof avatarEl>;
28
28
  export declare const cnAvatar: import("@bem-react/classname").ClassNameFormatter;
29
29
  export declare const Avatar: React.ForwardRefExoticComponent<Omit<AvatarProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
@@ -10,6 +10,7 @@ var classname_1 = require("../../utils/classname");
10
10
  var Indicator_1 = require("../Indicator");
11
11
  var constants_1 = require("./constants");
12
12
  var get_hash_number_1 = require("./get-hash-number");
13
+ var utils_1 = require("./utils");
13
14
  exports.avatarSizeVariant = [
14
15
  '4xs',
15
16
  '3xs',
@@ -23,38 +24,25 @@ exports.avatarSizeVariant = [
23
24
  exports.avatarHueVariant = [1, 2, 3];
24
25
  var avatarEl = 'div';
25
26
  exports.cnAvatar = (0, classname_1.cn)('Avatar');
26
- var getInitials = function (name) {
27
- var _a, _b, _c;
28
- var parts = name.split(' ');
29
- var initials;
30
- if (parts.length === 1) {
31
- initials = ((_a = parts[0]) === null || _a === void 0 ? void 0 : _a.charAt(0)) || '';
32
- }
33
- else {
34
- initials = ((_b = parts.shift()) !== null && _b !== void 0 ? _b : '').charAt(0) + ((_c = parts.pop()) !== null && _c !== void 0 ? _c : '').charAt(0);
35
- }
36
- return initials.toUpperCase();
37
- };
38
- var matchSizeIndicatorToAvatar = {
39
- '4xs': 'xs',
40
- '3xs': 'xs',
41
- '2xs': 'xs',
42
- xs: 's',
43
- s: 's',
44
- m: 's',
45
- l: 'm',
46
- xl: 'm',
47
- };
48
27
  exports.Avatar = (0, react_1.forwardRef)(function (inProps, ref) {
49
28
  var props = (0, useThemeProps_1.useThemeProps)({ props: inProps, name: 'Avatar' });
50
- var _a = props.size, size = _a === void 0 ? constants_1.AVATAR_DEFAULT_SIZE : _a, _b = props.online, online = _b === void 0 ? constants_1.AVATAR_DEFAULT_ONLINE : _b, _c = props.hue, hue = _c === void 0 ? constants_1.AVATAR_DEFAULT_HUE : _c, src = props.src, name = props.name, className = props.className, indicatorProps = props.indicatorProps, other = tslib_1.__rest(props, ["size", "online", "hue", "src", "name", "className", "indicatorProps"]);
29
+ var _a = props.size, size = _a === void 0 ? constants_1.AVATAR_DEFAULT_SIZE : _a, _b = props.online, online = _b === void 0 ? constants_1.AVATAR_DEFAULT_ONLINE : _b, _c = props.hue, hue = _c === void 0 ? constants_1.AVATAR_DEFAULT_HUE : _c, src = props.src, nameProp = props.name, className = props.className, indicatorProps = props.indicatorProps, children = props.children, other = tslib_1.__rest(props, ["size", "online", "hue", "src", "name", "className", "indicatorProps", "children"]);
30
+ var name = nameProp || '';
51
31
  var _d = tslib_1.__read((0, useBoolean_1.useBoolean)(!!src), 2), showImage = _d[0], off = _d[1].off;
52
- var indicatorSize = matchSizeIndicatorToAvatar[size];
32
+ var indicatorSize = utils_1.matchSizeIndicatorToAvatar[size];
53
33
  var colorShades = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];
54
34
  var color = "".concat(colorShades[(0, get_hash_number_1.getHashNumber)(name, colorShades.length)]).concat(hue);
55
- var initials = getInitials(name);
35
+ var renderContent = function () {
36
+ if (children) {
37
+ return children;
38
+ }
39
+ if (src && showImage) {
40
+ return (react_1.default.createElement("img", { src: src, alt: name, className: (0, exports.cnAvatar)('Image'), onError: off }));
41
+ }
42
+ return (0, utils_1.getInitials)(name);
43
+ };
56
44
  return (react_1.default.createElement("div", tslib_1.__assign({ className: (0, exports.cnAvatar)({ size: size, color: !showImage && color }, [className]) }, other, { ref: ref }),
57
- src && showImage ? (react_1.default.createElement("img", { src: src, alt: name, className: (0, exports.cnAvatar)('Image'), onError: off })) : (initials),
58
- online && (react_1.default.createElement(Indicator_1.Indicator, tslib_1.__assign({ variant: "success", size: indicatorSize, className: (0, exports.cnAvatar)('Online'), border: true }, indicatorProps)))));
45
+ renderContent(),
46
+ online && (react_1.default.createElement(Indicator_1.Indicator, tslib_1.__assign({ variant: "success", size: indicatorSize, border: true }, indicatorProps, { className: (0, exports.cnAvatar)('Online', indicatorProps === null || indicatorProps === void 0 ? void 0 : indicatorProps.className) })))));
59
47
  });
60
48
  exports.Avatar.displayName = 'Avatar';
@@ -0,0 +1,6 @@
1
+ import type { IndicatorSizeVariant } from '../Indicator';
2
+ import type { AvatarSizeVariant } from './index';
3
+ export declare const getInitials: (name: string) => string;
4
+ export declare const matchSizeIndicatorToAvatar: {
5
+ [key in AvatarSizeVariant]: IndicatorSizeVariant;
6
+ };
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.matchSizeIndicatorToAvatar = exports.getInitials = void 0;
4
+ var getInitials = function (name) {
5
+ var _a, _b, _c;
6
+ var parts = name.split(' ');
7
+ var initials;
8
+ if (parts.length === 1) {
9
+ initials = ((_a = parts[0]) === null || _a === void 0 ? void 0 : _a.charAt(0)) || '';
10
+ }
11
+ else {
12
+ initials = ((_b = parts.shift()) !== null && _b !== void 0 ? _b : '').charAt(0) + ((_c = parts.pop()) !== null && _c !== void 0 ? _c : '').charAt(0);
13
+ }
14
+ return initials.toUpperCase();
15
+ };
16
+ exports.getInitials = getInitials;
17
+ exports.matchSizeIndicatorToAvatar = {
18
+ '4xs': 'xs',
19
+ '3xs': 'xs',
20
+ '2xs': 'xs',
21
+ xs: 's',
22
+ s: 's',
23
+ m: 's',
24
+ l: 'm',
25
+ xl: 'm',
26
+ };
@@ -1,17 +1,17 @@
1
1
  import './Button.css';
2
- import React from 'react';
3
2
  import type { ReactNode, ElementType } from 'react';
4
3
  import type { IconProps, IconSize } from '@ozen-ui/icons';
5
4
  import type { FormElementSizeVariant } from '../../types/FormElementSizeVariant';
6
5
  import type { PolymorphicComponentPropsWithoutRef } from '../../utils/polymorphicComponentWithRef';
6
+ import type { RenderContentType } from '../../utils/renderContent';
7
7
  import { BUTTON_DEFAULT_TAG } from './constants';
8
8
  export declare const buttonVariant: readonly ["contained", "outlined", "ghost", "function"];
9
9
  export declare const buttonColorVariant: readonly ["primary", "secondary", "warning", "error"];
10
10
  export type ButtonVariant = (typeof buttonVariant)[number];
11
11
  export type ButtonColorVariant = (typeof buttonColorVariant)[number];
12
- export type ButtonIconComponent = React.FC<IconProps & {
12
+ export type ButtonIcon = RenderContentType<IconProps & {
13
13
  size?: IconSize;
14
- }>;
14
+ }>['content'];
15
15
  type ButtonBaseProps = {
16
16
  /**
17
17
  * Вариант отображения кнопки
@@ -37,9 +37,9 @@ type ButtonBaseProps = {
37
37
  /** Дополнительные CSS-классы */
38
38
  className?: string;
39
39
  /** Иконка слева */
40
- iconLeft?: ButtonIconComponent;
40
+ iconLeft?: ButtonIcon;
41
41
  /** Иконка справа */
42
- iconRight?: ButtonIconComponent;
42
+ iconRight?: ButtonIcon;
43
43
  /** Если {true} растягивает кнопку на всю ширину родительского контейнера */
44
44
  fullWidth?: boolean;
45
45
  };
@@ -9,6 +9,7 @@ var useThemeProps_1 = require("../../hooks/useThemeProps");
9
9
  var classname_1 = require("../../utils/classname");
10
10
  var getIconSizeToFormElement_1 = require("../../utils/getIconSizeToFormElement");
11
11
  var polymorphicComponentWithRef_1 = require("../../utils/polymorphicComponentWithRef");
12
+ var renderContent_1 = require("../../utils/renderContent");
12
13
  var Loader_1 = require("../Loader");
13
14
  var constants_1 = require("./constants");
14
15
  exports.buttonVariant = [
@@ -31,19 +32,27 @@ exports.Button = (0, polymorphicComponentWithRef_1.polymorphicComponentWithRef)(
31
32
  props: inProps,
32
33
  name: 'Button',
33
34
  });
34
- var _a = props.as, Tag = _a === void 0 ? constants_1.BUTTON_DEFAULT_TAG : _a, _b = props.variant, variant = _b === void 0 ? constants_1.BUTTON_DEFAULT_VARIANT : _b, _c = props.color, color = _c === void 0 ? constants_1.BUTTON_DEFAULT_COLOR : _c, _d = props.size, size = _d === void 0 ? constants_1.BUTTON_DEFAULT_SIZE : _d, IconLeft = props.iconLeft, IconRight = props.iconRight, loading = props.loading, children = props.children, disabled = props.disabled, className = props.className, fullWidth = props.fullWidth, onClick = props.onClick, other = tslib_1.__rest(props, ["as", "variant", "color", "size", "iconLeft", "iconRight", "loading", "children", "disabled", "className", "fullWidth", "onClick"]);
35
+ var _a = props.as, Tag = _a === void 0 ? constants_1.BUTTON_DEFAULT_TAG : _a, _b = props.variant, variant = _b === void 0 ? constants_1.BUTTON_DEFAULT_VARIANT : _b, _c = props.color, color = _c === void 0 ? constants_1.BUTTON_DEFAULT_COLOR : _c, _d = props.size, size = _d === void 0 ? constants_1.BUTTON_DEFAULT_SIZE : _d, iconLeft = props.iconLeft, iconRight = props.iconRight, loading = props.loading, children = props.children, disabled = props.disabled, className = props.className, fullWidth = props.fullWidth, onClick = props.onClick, other = tslib_1.__rest(props, ["as", "variant", "color", "size", "iconLeft", "iconRight", "loading", "children", "disabled", "className", "fullWidth", "onClick"]);
35
36
  var iconSize = (0, getIconSizeToFormElement_1.getIconSizeToFormElement)(size);
36
37
  var handleClick = function (event) {
37
38
  if (onClick && !disabled && !loading) {
38
39
  onClick(event);
39
40
  }
40
41
  };
42
+ var renderIcon = function (content) {
43
+ return (0, renderContent_1.renderContent)({
44
+ content: content,
45
+ props: {
46
+ size: (0, getIconSizeToFormElement_1.getIconSizeToFormElement)(size),
47
+ },
48
+ });
49
+ };
41
50
  var isInteractionPrevented = disabled || loading;
42
51
  var childContent = (react_1.default.createElement(react_1.default.Fragment, null,
43
52
  react_1.default.createElement("span", { className: (0, exports.cnButton)('Label') },
44
- IconLeft && react_1.default.createElement(IconLeft, { size: iconSize }),
53
+ renderIcon(iconLeft),
45
54
  children,
46
- IconRight && react_1.default.createElement(IconRight, { size: iconSize })),
55
+ renderIcon(iconRight)),
47
56
  react_1.default.createElement(react_transition_group_1.CSSTransition, { in: loading, timeout: 120, classNames: (0, exports.cnButton)('Loader', { animation: true }), unmountOnExit: true },
48
57
  react_1.default.createElement(Loader_1.Loader, { size: iconSize, color: "var(--color-content-disabled)", className: (0, exports.cnButton)('Loader') }))));
49
58
  return (react_1.default.createElement(Tag, tslib_1.__assign({ disabled: isInteractionPrevented, onClick: handleClick, type: "button", className: (0, exports.cnButton)({
@@ -33,4 +33,7 @@ export type ChipBaseProps = {
33
33
  'data-testid'?: string;
34
34
  };
35
35
  export type ChipProps = ExtendableProps<InputHTMLAttributes<HTMLInputElement>, ChipBaseProps>;
36
+ /**
37
+ * @deprecated Компонент устарел. Для замены используйте компонент ChipNext
38
+ */
36
39
  export declare const Chip: React.ForwardRefExoticComponent<ChipBaseProps & Omit<React.InputHTMLAttributes<HTMLInputElement>, keyof ChipBaseProps> & React.RefAttributes<HTMLLabelElement>>;
@@ -11,6 +11,9 @@ var constants_1 = require("./constants");
11
11
  exports.cnChip = (0, classname_1.cn)('Chip');
12
12
  exports.chipSizeVariant = ['xs', 's', 'm', 'l'];
13
13
  exports.chipColorVariant = ['primary', 'secondary'];
14
+ /**
15
+ * @deprecated Компонент устарел. Для замены используйте компонент ChipNext
16
+ */
14
17
  exports.Chip = (0, react_1.forwardRef)(function (inProps, ref) {
15
18
  var _a = (0, useThemeProps_1.useThemeProps)({ name: 'Chip', props: inProps }), _b = _a.size, size = _b === void 0 ? constants_1.CHIP_DEFAULT_SIZE : _b, _c = _a.color, color = _c === void 0 ? constants_1.CHIP_DEFAULT_VARIANT : _c, _d = _a.disabled, disabled = _d === void 0 ? constants_1.CHIP_DEFAULT_DISABLED : _d, IconLeft = _a.iconLeft, IconRight = _a.iconRight, labelProps = _a.labelProps, inputRef = _a.inputRef, className = _a.className, children = _a.children, dataTestId = _a["data-testid"], other = tslib_1.__rest(_a, ["size", "color", "disabled", "iconLeft", "iconRight", "labelProps", "inputRef", "className", "children", 'data-testid']);
16
19
  var iconSize = (0, react_1.useMemo)(function () { return (0, getIconSizeToFormElement_1.getIconSizeToFormElement)(size); }, [size]);
@@ -0,0 +1,108 @@
1
+ /* stylelint-disable */
2
+ .ChipNext {
3
+ --chip-border-radius: 24px;
4
+ --chip-text-wrap: nowrap;
5
+ background-color: var(--chip-bg-color);
6
+ border-radius: var(--chip-border-radius);
7
+ min-block-size: var(--chip-height);
8
+ padding: 0 var(--chip-padding-x);
9
+ min-inline-size: var(--chip-min-width);
10
+ color: var(--chip-text-color);
11
+ gap: var(--space-s);
12
+ display: inline-flex;
13
+ justify-content: center;
14
+ align-items: center;
15
+ cursor: pointer;
16
+ box-sizing: border-box;
17
+ text-decoration: none;
18
+ border: none;
19
+ outline: none;
20
+ transition:
21
+ border-color var(--transition-default),
22
+ color var(--transition-default),
23
+ background-color var(--transition-default),
24
+ box-shadow var(--transition-default);
25
+ }
26
+ .ChipNext-Content {
27
+ overflow: hidden;
28
+ text-overflow: ellipsis;
29
+ white-space: var(--chip-text-wrap);
30
+ }
31
+ .ChipNext-Icon {
32
+ color: inherit;
33
+ flex-shrink: 0;
34
+ }
35
+ .ChipNext_multiline {
36
+ --chip-text-wrap: normal;
37
+ }
38
+ .ChipNext_size_xs {
39
+ font: var(--typography-text-2xs-font);
40
+ letter-spacing: var(--typography-text-2xs-letter_spacing, 0);
41
+ text-transform: var(--typography-text-2xs-text_transform, none);
42
+
43
+ --chip-min-width: 64px;
44
+ --chip-height: var(--space-xl);
45
+ --chip-padding-x: var(--space-m);
46
+ }
47
+ .ChipNext_size_s {
48
+ font: var(--typography-text-s-font);
49
+ letter-spacing: var(--typography-text-s-letter_spacing, 0);
50
+ text-transform: var(--typography-text-s-text_transform, none);
51
+
52
+ --chip-min-width: 72px;
53
+ --chip-height: var(--space-2xl);
54
+ --chip-padding-x: var(--space-l);
55
+ }
56
+ .ChipNext_size_m {
57
+ font: var(--typography-text-m-font);
58
+ letter-spacing: var(--typography-text-m-letter_spacing, 0);
59
+ text-transform: var(--typography-text-m-text_transform, none);
60
+
61
+ --chip-min-width: 80px;
62
+ --chip-height: var(--space-3xl);
63
+ --chip-padding-x: 20px;
64
+ }
65
+ .ChipNext_size_l {
66
+ font: var(--typography-text-l-font);
67
+ letter-spacing: var(--typography-text-l-letter_spacing, 0);
68
+ text-transform: var(--typography-text-l-text_transform, none);
69
+
70
+ --chip-min-width: 88px;
71
+ --chip-height: var(--space-4xl);
72
+ --chip-padding-x: var(--space-xl);
73
+ }
74
+ .ChipNext_color_primary {
75
+ --chip-bg-color: var(--color-background-action-light);
76
+ --chip-bg-color-hover: var(--color-background-action-light-hover);
77
+ --chip-bg-color-active: var(--color-background-action-light-pressed);
78
+ --chip-text-color: var(--color-content-action-dark);
79
+ }
80
+ .ChipNext_color_secondary {
81
+ --chip-bg-color: var(--color-background-secondary);
82
+ --chip-bg-color-hover: var(--color-background-secondary-hover);
83
+ --chip-bg-color-active: var(--color-background-secondary-pressed);
84
+ --chip-text-color: var(--color-content-primary);
85
+ }
86
+ .ChipNext:hover {
87
+ --chip-bg-color: var(--chip-bg-color-hover);
88
+ }
89
+ .ChipNext:active {
90
+ --chip-bg-color: var(--chip-bg-color-active);
91
+ }
92
+ .ChipNext:focus {
93
+ box-shadow: var(--shadow-outline-focused);
94
+ }
95
+ .ChipNext:focus:not(:focus-visible) {
96
+ box-shadow: none;
97
+ }
98
+ .ChipNext_checked,
99
+ .ChipNext_checked:hover,
100
+ .ChipNext_checked:active {
101
+ --chip-bg-color: var(--color-background-action);
102
+ --chip-text-color: var(--color-content-action-on);
103
+ }
104
+ .ChipNext_disabled {
105
+ --chip-bg-color: var(--color-background-disabled);
106
+ --chip-text-color: var(--color-content-disabled);
107
+ pointer-events: none;
108
+ }
@@ -0,0 +1,42 @@
1
+ import './Chip.css';
2
+ import type { ReactNode, MouseEvent, ElementType } from 'react';
3
+ import type { IconProps, IconSize } from '@ozen-ui/icons';
4
+ import type { PolymorphicComponentPropsWithRef } from '../../utils/polymorphicComponentWithRef';
5
+ import type { RenderContentType } from '../../utils/renderContent';
6
+ import { CHIP_DEFAULT_TAG } from './constants';
7
+ export declare const cnChip: import("@bem-react/classname").ClassNameFormatter;
8
+ export declare const chipSizeVariant: readonly ["xs", "s", "m", "l"];
9
+ export declare const chipColorVariant: readonly ["primary", "secondary"];
10
+ export type ChipSizeVariant = (typeof chipSizeVariant)[number];
11
+ export type ChipColorVariant = (typeof chipColorVariant)[number];
12
+ export type ChipIcon = RenderContentType<IconProps & {
13
+ size?: IconSize;
14
+ }>['content'];
15
+ export type ChipBaseProps = {
16
+ /** Размер компонента */
17
+ size?: ChipSizeVariant;
18
+ /** Вариант представления компонента */
19
+ color?: ChipColorVariant;
20
+ /** Если {true} компонент отображается как заблокированный */
21
+ disabled?: boolean;
22
+ /** Если {true} делает элемент выбранным */
23
+ checked?: boolean;
24
+ /** Обработчик нажатия */
25
+ onClick?: (e: MouseEvent<HTMLElement>, payload: {
26
+ checked: boolean;
27
+ }) => void;
28
+ /** Иконка слева */
29
+ iconLeft?: ChipIcon;
30
+ /** Иконка справа */
31
+ iconRight?: ChipIcon;
32
+ /** Если {true} разбивает длинный текст на несколько строк */
33
+ multiline?: boolean;
34
+ /** Дополнительные СSS-классы */
35
+ className?: string;
36
+ /** Содержимое компонента */
37
+ children?: ReactNode;
38
+ /** Идентификатор компонента для тестов */
39
+ 'data-testid'?: string;
40
+ };
41
+ export type ChipProps<As extends ElementType = typeof CHIP_DEFAULT_TAG> = PolymorphicComponentPropsWithRef<ChipBaseProps, As>;
42
+ export declare const Chip: import("../../utils/polymorphicComponentWithRef").PolymorphicComponentWithRef<ChipBaseProps, "button">;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Chip = exports.chipColorVariant = exports.chipSizeVariant = exports.cnChip = void 0;
4
+ var tslib_1 = require("tslib");
5
+ require("./Chip.css");
6
+ var react_1 = tslib_1.__importDefault(require("react"));
7
+ var useControlled_1 = require("../../hooks/useControlled");
8
+ var useThemeProps_1 = require("../../hooks/useThemeProps");
9
+ var classname_1 = require("../../utils/classname");
10
+ var getIconSizeToFormElement_1 = require("../../utils/getIconSizeToFormElement");
11
+ var polymorphicComponentWithRef_1 = require("../../utils/polymorphicComponentWithRef");
12
+ var renderContent_1 = require("../../utils/renderContent");
13
+ var constants_1 = require("./constants");
14
+ exports.cnChip = (0, classname_1.cn)('ChipNext');
15
+ exports.chipSizeVariant = ['xs', 's', 'm', 'l'];
16
+ exports.chipColorVariant = ['primary', 'secondary'];
17
+ exports.Chip = (0, polymorphicComponentWithRef_1.polymorphicComponentWithRef)(function (inProps, ref) {
18
+ var _a = (0, useThemeProps_1.useThemeProps)({ name: 'ChipNext', props: inProps }), _b = _a.size, size = _b === void 0 ? constants_1.CHIP_DEFAULT_SIZE : _b, _c = _a.color, color = _c === void 0 ? constants_1.CHIP_DEFAULT_VARIANT : _c, _d = _a.disabled, disabled = _d === void 0 ? constants_1.CHIP_DEFAULT_DISABLED : _d, iconLeft = _a.iconLeft, iconRight = _a.iconRight, multiline = _a.multiline, className = _a.className, children = _a.children, onClick = _a.onClick, checkedProp = _a.checked, _e = _a.as, Tag = _e === void 0 ? constants_1.CHIP_DEFAULT_TAG : _e, dataTestId = _a["data-testid"], other = tslib_1.__rest(_a, ["size", "color", "disabled", "iconLeft", "iconRight", "multiline", "className", "children", "onClick", "checked", "as", 'data-testid']);
19
+ var _f = tslib_1.__read((0, useControlled_1.useControlled)({
20
+ value: checkedProp,
21
+ defaultValue: false,
22
+ name: 'ChipNext',
23
+ state: 'open',
24
+ }), 2), checkedState = _f[0], setCheckedState = _f[1];
25
+ var handleClick = function (event) {
26
+ if (disabled) {
27
+ return;
28
+ }
29
+ setCheckedState(!checkedState);
30
+ onClick === null || onClick === void 0 ? void 0 : onClick(event, { checked: !checkedState });
31
+ };
32
+ var renderIcon = function (content) {
33
+ return (0, renderContent_1.renderContent)({
34
+ content: content,
35
+ props: {
36
+ size: (0, getIconSizeToFormElement_1.getIconSizeToFormElement)(size),
37
+ className: (0, exports.cnChip)('Icon'),
38
+ },
39
+ });
40
+ };
41
+ return (react_1.default.createElement(Tag, tslib_1.__assign({ type: "button", "data-testid": dataTestId, disabled: disabled }, other, { className: (0, exports.cnChip)({ size: size, disabled: disabled, color: color, multiline: multiline, checked: checkedState }, [className]), onClick: handleClick, ref: ref }),
42
+ renderIcon(iconLeft),
43
+ children && react_1.default.createElement("span", { className: (0, exports.cnChip)('Content') }, children),
44
+ renderIcon(iconRight)));
45
+ });
46
+ exports.Chip.displayName = 'Chip';
@@ -0,0 +1,4 @@
1
+ export declare const CHIP_DEFAULT_TAG = "button";
2
+ export declare const CHIP_DEFAULT_VARIANT = "primary";
3
+ export declare const CHIP_DEFAULT_SIZE = "m";
4
+ export declare const CHIP_DEFAULT_DISABLED = false;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CHIP_DEFAULT_DISABLED = exports.CHIP_DEFAULT_SIZE = exports.CHIP_DEFAULT_VARIANT = exports.CHIP_DEFAULT_TAG = void 0;
4
+ exports.CHIP_DEFAULT_TAG = 'button';
5
+ exports.CHIP_DEFAULT_VARIANT = 'primary';
6
+ exports.CHIP_DEFAULT_SIZE = 'm';
7
+ exports.CHIP_DEFAULT_DISABLED = false;
@@ -0,0 +1 @@
1
+ export * from './Chip';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./Chip"), exports);
@@ -1,18 +1,15 @@
1
1
  import './FieldIcon.css';
2
- import type { ComponentPropsWithRef, ComponentRef, FC, ReactElement } from 'react';
2
+ import type { ComponentPropsWithRef, ComponentRef } from 'react';
3
3
  import React from 'react';
4
4
  import type { IconProps, IconSize } from '@ozen-ui/icons';
5
5
  import type { FormElementSizeVariant } from '../../types/FormElementSizeVariant';
6
+ import type { RenderContentType } from '../../utils/renderContent';
6
7
  export declare const FIELD_ICON_DEFAULT_TAG = "div";
7
8
  export type FieldIconRef = ComponentRef<typeof FIELD_ICON_DEFAULT_TAG>;
8
9
  export type FieldIconProps = ComponentPropsWithRef<typeof FIELD_ICON_DEFAULT_TAG> & {
9
- icon?: string | ReactElement<IconProps & {
10
+ icon?: RenderContentType<IconProps & {
10
11
  size?: IconSize;
11
- }> | (() => ReactElement<IconProps & {
12
- size?: IconSize;
13
- }>) | FC<IconProps & {
14
- size?: IconSize;
15
- }>;
12
+ }>['content'];
16
13
  size?: FormElementSizeVariant;
17
14
  children?: never;
18
15
  };