@ozen-ui/kit 0.37.2 → 0.38.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 (58) hide show
  1. package/ButtonBase/package.json +5 -0
  2. package/ButtonNext/package.json +5 -0
  3. package/IconButtonNext/package.json +5 -0
  4. package/__inner__/cjs/components/Breadcrumbs/Breadcrumbs.css +1 -1
  5. package/__inner__/cjs/components/Button/Button.d.ts +3 -0
  6. package/__inner__/cjs/components/Button/Button.js +8 -3
  7. package/__inner__/cjs/components/ButtonBase/ButtonBase.css +10 -0
  8. package/__inner__/cjs/components/ButtonBase/ButtonBase.d.ts +20 -0
  9. package/__inner__/cjs/components/ButtonBase/ButtonBase.js +30 -0
  10. package/__inner__/cjs/components/ButtonBase/constants.d.ts +1 -0
  11. package/__inner__/cjs/components/ButtonBase/constants.js +4 -0
  12. package/__inner__/cjs/components/ButtonBase/index.d.ts +1 -0
  13. package/__inner__/cjs/components/ButtonBase/index.js +4 -0
  14. package/__inner__/cjs/components/ButtonNext/Button.css +333 -0
  15. package/__inner__/cjs/components/ButtonNext/Button.d.ts +51 -0
  16. package/__inner__/cjs/components/ButtonNext/Button.js +60 -0
  17. package/__inner__/cjs/components/ButtonNext/constants.d.ts +4 -0
  18. package/__inner__/cjs/components/ButtonNext/constants.js +7 -0
  19. package/__inner__/cjs/components/ButtonNext/index.d.ts +1 -0
  20. package/__inner__/cjs/components/ButtonNext/index.js +4 -0
  21. package/__inner__/cjs/components/IconButton/IconButton.d.ts +3 -0
  22. package/__inner__/cjs/components/IconButton/IconButton.js +7 -0
  23. package/__inner__/cjs/components/IconButtonNext/IconButton.css +348 -0
  24. package/__inner__/cjs/components/IconButtonNext/IconButton.d.ts +41 -0
  25. package/__inner__/cjs/components/IconButtonNext/IconButton.js +70 -0
  26. package/__inner__/cjs/components/IconButtonNext/constants.d.ts +4 -0
  27. package/__inner__/cjs/components/IconButtonNext/constants.js +7 -0
  28. package/__inner__/cjs/components/IconButtonNext/index.d.ts +1 -0
  29. package/__inner__/cjs/components/IconButtonNext/index.js +4 -0
  30. package/__inner__/cjs/components/ThemeProvider/types.d.ts +4 -0
  31. package/__inner__/esm/components/Breadcrumbs/Breadcrumbs.css +1 -1
  32. package/__inner__/esm/components/Button/Button.d.ts +3 -0
  33. package/__inner__/esm/components/Button/Button.js +8 -3
  34. package/__inner__/esm/components/ButtonBase/ButtonBase.css +10 -0
  35. package/__inner__/esm/components/ButtonBase/ButtonBase.d.ts +20 -0
  36. package/__inner__/esm/components/ButtonBase/ButtonBase.js +27 -0
  37. package/__inner__/esm/components/ButtonBase/constants.d.ts +1 -0
  38. package/__inner__/esm/components/ButtonBase/constants.js +1 -0
  39. package/__inner__/esm/components/ButtonBase/index.d.ts +1 -0
  40. package/__inner__/esm/components/ButtonBase/index.js +1 -0
  41. package/__inner__/esm/components/ButtonNext/Button.css +333 -0
  42. package/__inner__/esm/components/ButtonNext/Button.d.ts +51 -0
  43. package/__inner__/esm/components/ButtonNext/Button.js +57 -0
  44. package/__inner__/esm/components/ButtonNext/constants.d.ts +4 -0
  45. package/__inner__/esm/components/ButtonNext/constants.js +4 -0
  46. package/__inner__/esm/components/ButtonNext/index.d.ts +1 -0
  47. package/__inner__/esm/components/ButtonNext/index.js +1 -0
  48. package/__inner__/esm/components/IconButton/IconButton.d.ts +3 -0
  49. package/__inner__/esm/components/IconButton/IconButton.js +7 -0
  50. package/__inner__/esm/components/IconButtonNext/IconButton.css +348 -0
  51. package/__inner__/esm/components/IconButtonNext/IconButton.d.ts +41 -0
  52. package/__inner__/esm/components/IconButtonNext/IconButton.js +67 -0
  53. package/__inner__/esm/components/IconButtonNext/constants.d.ts +4 -0
  54. package/__inner__/esm/components/IconButtonNext/constants.js +4 -0
  55. package/__inner__/esm/components/IconButtonNext/index.d.ts +1 -0
  56. package/__inner__/esm/components/IconButtonNext/index.js +1 -0
  57. package/__inner__/esm/components/ThemeProvider/types.d.ts +4 -0
  58. package/package.json +4 -4
@@ -4,6 +4,7 @@ exports.IconButton = exports.cnIconButton = exports.iconButtonVariant = exports.
4
4
  var tslib_1 = require("tslib");
5
5
  require("./IconButton.css");
6
6
  var react_1 = tslib_1.__importStar(require("react"));
7
+ var logger_1 = require("@ozen-ui/logger");
7
8
  var useThemeProps_1 = require("../../hooks/useThemeProps");
8
9
  var classname_1 = require("../../utils/classname");
9
10
  var getIconSizeToFormElement_1 = require("../../utils/getIconSizeToFormElement");
@@ -27,11 +28,17 @@ var loaderSizeMapper = {
27
28
  m: 'm',
28
29
  l: 'l',
29
30
  };
31
+ /**
32
+ * @deprecated Компонент устарел. Для замены используйте компонент IconButtonNext
33
+ */
30
34
  exports.IconButton = (0, polymorphicComponentWithRef_1.polymorphicComponentWithRef)(function (inProps, ref) {
31
35
  var props = (0, useThemeProps_1.useThemeProps)({
32
36
  props: inProps,
33
37
  name: 'IconButton',
34
38
  });
39
+ if (process.env.NODE_ENV !== 'production') {
40
+ (0, logger_1.deprecate)('Компонент «%s» устарел. Для замены используйте компонент «%s».', 'IconButton', 'IconButtonNext');
41
+ }
35
42
  var _a = props.size, size = _a === void 0 ? constants_1.ICON_BUTTON_DEFAULT_SIZE : _a, _b = props.variant, variant = _b === void 0 ? constants_1.ICON_BUTTON_DEFAULT_VARIANT : _b, _c = props.color, color = _c === void 0 ? constants_1.ICON_BUTTON_DEFAULT_COLOR : _c, _d = props.as, Tag = _d === void 0 ? constants_1.ICON_BUTTON_DEFAULT_TAG : _d, iconColor = props.iconColor, compressed = props.compressed, loading = props.loading, disabled = props.disabled, className = props.className, icon = props.icon, onClick = props.onClick, rounded = props.rounded, other = tslib_1.__rest(props, ["size", "variant", "color", "as", "iconColor", "compressed", "loading", "disabled", "className", "icon", "onClick", "rounded"]);
36
43
  var isInteractionPrevented = disabled || loading;
37
44
  var handleClick = function (event) {
@@ -0,0 +1,348 @@
1
+ .IconButtonNext {
2
+ --icon-button-bg-color: var(--color-background-action);
3
+ --icon-button-bg-color-hover: var(--color-background-action-hover);
4
+ --icon-button-bg-color-active: var(--color-background-action-pressed);
5
+ --icon-button-font-color: var(--color-content-action-on);
6
+ block-size: var(--icon-button-size);
7
+ inline-size: var(--icon-button-size);
8
+ padding: 0;
9
+ box-sizing: border-box;
10
+ display: inline-flex;
11
+ flex-shrink: 0;
12
+ align-items: center;
13
+ justify-content: center;
14
+ cursor: pointer;
15
+ border-radius: var(--border-radius-xs);
16
+ border: none;
17
+ color: var(--icon-button-font-color);
18
+ background-color: var(--icon-button-bg-color);
19
+ opacity: 1;
20
+ transition:
21
+ background-color var(--transition-default),
22
+ box-shadow var(--transition-default),
23
+ opacity var(--transition-default);
24
+ -webkit-tap-highlight-color: transparent;
25
+ position: relative;
26
+ }
27
+
28
+ .IconButtonNext_size_2xs {
29
+ --icon-button-size: 32px;
30
+ }
31
+
32
+ .IconButtonNext_size_2xs.IconButtonNext_compressed:not(.IconButtonNext_variant_function) {
33
+ --icon-button-size: 24px;
34
+ }
35
+
36
+ .IconButtonNext_size_xs {
37
+ --icon-button-size: 40px;
38
+ }
39
+
40
+ .IconButtonNext_size_xs.IconButtonNext_compressed:not(.IconButtonNext_variant_function) {
41
+ --icon-button-size: 28px;
42
+ }
43
+
44
+ .IconButtonNext_size_s {
45
+ --icon-button-size: 48px;
46
+ }
47
+
48
+ .IconButtonNext_size_s.IconButtonNext_compressed:not(.IconButtonNext_variant_function) {
49
+ --icon-button-size: 32px;
50
+ }
51
+
52
+ .IconButtonNext_size_m {
53
+ --icon-button-size: 56px;
54
+ }
55
+
56
+ .IconButtonNext_size_m.IconButtonNext_compressed:not(.IconButtonNext_variant_function) {
57
+ --icon-button-size: 40px;
58
+ }
59
+
60
+ .IconButtonNext_size_l {
61
+ --icon-button-size: 64px;
62
+ }
63
+
64
+ .IconButtonNext_size_l.IconButtonNext_compressed:not(.IconButtonNext_variant_function) {
65
+ --icon-button-size: 48px;
66
+ }
67
+
68
+ /** contained */
69
+
70
+ .IconButtonNext_variant_contained.IconButtonNext_color_primary {
71
+ --icon-button-bg-color: var(--color-background-action);
72
+ --icon-button-bg-color-hover: var(--color-background-action-hover);
73
+ --icon-button-bg-color-active: var(--color-background-action-pressed);
74
+ --icon-button-font-color: var(--color-content-action-on);
75
+ --icon-button-font-color-hover: var(--color-content-action-on);
76
+ --icon-button-font-color-active: var(--color-content-action-on);
77
+ --icon-button-font-color-focus: var(--color-content-action-on);
78
+ }
79
+
80
+ .IconButtonNext_variant_contained.IconButtonNext_color_secondary {
81
+ --icon-button-bg-color: var(--color-content-action-secondary);
82
+ --icon-button-bg-color-hover: var(--color-content-action-secondary-hover);
83
+ --icon-button-bg-color-active: var(
84
+ --color-content-action-secondary-pressed
85
+ );
86
+ --icon-button-font-color: var(--color-content-action-on);
87
+ --icon-button-font-color-hover: var(--color-content-action-on);
88
+ --icon-button-font-color-active: var(--color-content-action-on);
89
+ --icon-button-font-color-focus: var(--color-content-action-on);
90
+ }
91
+
92
+ .IconButtonNext_variant_contained.IconButtonNext_color_tertiary {
93
+ --icon-button-bg-color: var(--color-background-tertiary);
94
+ --icon-button-bg-color-hover: var(--color-background-tertiary-hover);
95
+ --icon-button-bg-color-active: var(--color-background-tertiary-pressed);
96
+ --icon-button-font-color: var(--color-content-primary);
97
+ --icon-button-font-color-hover: var(--color-content-primary);
98
+ --icon-button-font-color-active: var(--color-content-primary);
99
+ --icon-button-font-color-focus: var(--color-content-primary);
100
+ }
101
+
102
+ .IconButtonNext_variant_contained.IconButtonNext_color_error {
103
+ --icon-button-bg-color: var(--color-background-error);
104
+ --icon-button-bg-color-hover: var(--color-background-error-hover);
105
+ --icon-button-bg-color-active: var(--color-background-error-pressed);
106
+ --icon-button-font-color: var(--color-content-action-on);
107
+ --icon-button-font-color-hover: var(--color-content-action-on);
108
+ --icon-button-font-color-active: var(--color-content-action-on);
109
+ --icon-button-font-color-focus: var(--color-content-action-on);
110
+ }
111
+
112
+ /** contained-additional */
113
+
114
+ .IconButtonNext_variant_contained-additional.IconButtonNext_color_primary {
115
+ --icon-button-bg-color: var(--color-background-action-light);
116
+ --icon-button-bg-color-hover: var(--color-background-action-light-hover);
117
+ --icon-button-bg-color-active: var(--color-background-action-light-pressed);
118
+ --icon-button-font-color: var(--color-content-action);
119
+ --icon-button-font-color-hover: var(--color-content-action);
120
+ --icon-button-font-color-active: var(--color-content-action);
121
+ --icon-button-font-color-focus: var(--color-content-action);
122
+ }
123
+
124
+ .IconButtonNext_variant_contained-additional.IconButtonNext_color_secondary {
125
+ --icon-button-bg-color: var(--color-background-secondary);
126
+ --icon-button-bg-color-hover: var(--color-background-secondary-hover);
127
+ --icon-button-bg-color-active: var(--color-background-secondary-pressed);
128
+ --icon-button-font-color: var(--color-content-primary);
129
+ --icon-button-font-color-hover: var(--color-content-primary);
130
+ --icon-button-font-color-active: var(--color-content-primary);
131
+ --icon-button-font-color-focus: var(--color-content-primary);
132
+ }
133
+
134
+ .IconButtonNext_variant_contained-additional.IconButtonNext_color_tertiary {
135
+ --icon-button-bg-color: var(--color-background-primary);
136
+ --icon-button-bg-color-hover: var(--color-background-primary-hover);
137
+ --icon-button-bg-color-active: var(--color-background-primary-pressed);
138
+ --icon-button-font-color: var(--color-content-secondary);
139
+ --icon-button-font-color-hover: var(--color-content-secondary);
140
+ --icon-button-font-color-active: var(--color-content-secondary);
141
+ --icon-button-font-color-focus: var(--color-content-secondary);
142
+ }
143
+
144
+ .IconButtonNext_variant_contained-additional.IconButtonNext_color_error {
145
+ --icon-button-bg-color: var(--color-background-error-light);
146
+ --icon-button-bg-color-hover: var(--color-background-error-light-hover);
147
+ --icon-button-bg-color-active: var(--color-background-error-light-pressed);
148
+ --icon-button-font-color: var(--color-content-error);
149
+ --icon-button-font-color-hover: var(--color-content-error);
150
+ --icon-button-font-color-active: var(--color-content-error);
151
+ --icon-button-font-color-focus: var(--color-content-error);
152
+ }
153
+
154
+ /** ghost */
155
+
156
+ .IconButtonNext_variant_ghost.IconButtonNext_color_primary {
157
+ --icon-button-bg-color: transparent;
158
+ --icon-button-bg-color-hover: var(--color-background-action-light-hover);
159
+ --icon-button-bg-color-active: var(--color-background-action-light-pressed);
160
+ --icon-button-font-color: var(--color-content-action);
161
+ --icon-button-font-color-hover: var(--color-content-action);
162
+ --icon-button-font-color-active: var(--color-content-action);
163
+ --icon-button-font-color-focus: var(--color-content-action);
164
+ }
165
+
166
+ .IconButtonNext_variant_ghost.IconButtonNext_color_secondary {
167
+ --icon-button-bg-color: transparent;
168
+ --icon-button-bg-color-hover: var(--color-background-secondary-hover);
169
+ --icon-button-bg-color-active: var(--color-background-secondary-pressed);
170
+ --icon-button-font-color: var(--color-content-primary);
171
+ --icon-button-font-color-hover: var(--color-content-primary);
172
+ --icon-button-font-color-active: var(--color-content-primary);
173
+ --icon-button-font-color-focus: var(--color-content-primary);
174
+ }
175
+
176
+ .IconButtonNext_variant_ghost.IconButtonNext_color_tertiary {
177
+ --icon-button-bg-color: transparent;
178
+ --icon-button-bg-color-hover: var(--color-background-primary-hover);
179
+ --icon-button-bg-color-active: var(--color-background-primary-pressed);
180
+ --icon-button-font-color: var(--color-content-secondary);
181
+ --icon-button-font-color-hover: var(--color-content-secondary);
182
+ --icon-button-font-color-active: var(--color-content-secondary);
183
+ --icon-button-font-color-focus: var(--color-content-secondary);
184
+ }
185
+
186
+ .IconButtonNext_variant_ghost.IconButtonNext_color_error {
187
+ --icon-button-bg-color: transparent;
188
+ --icon-button-bg-color-hover: var(--color-background-error-light-hover);
189
+ --icon-button-bg-color-active: var(--color-background-error-light-pressed);
190
+ --icon-button-font-color: var(--color-content-error);
191
+ --icon-button-font-color-hover: var(--color-content-error);
192
+ --icon-button-font-color-active: var(--color-content-error);
193
+ --icon-button-font-color-focus: var(--color-content-error);
194
+ }
195
+
196
+ /** function */
197
+
198
+ .IconButtonNext_variant_function {
199
+ --icon-button-size: auto;
200
+ }
201
+
202
+ .IconButtonNext_variant_function.IconButtonNext_color_primary,
203
+ .IconButtonNext_variant_function.IconButtonNext_color_secondary,
204
+ .IconButtonNext_variant_function.IconButtonNext_color_tertiary,
205
+ .IconButtonNext_variant_function.IconButtonNext_color_error {
206
+ --icon-button-bg-color: transparent;
207
+ --icon-button-bg-color-hover: transparent;
208
+ --icon-button-bg-color-active: transparent;
209
+ }
210
+
211
+ .IconButtonNext_variant_function.IconButtonNext_color_primary {
212
+ --icon-button-font-color: var(--color-content-action);
213
+ --icon-button-font-color-hover: var(--color-background-action-hover);
214
+ --icon-button-font-color-active: var(--color-background-action-pressed);
215
+ --icon-button-font-color-focus: var(--color-background-action-pressed);
216
+ }
217
+
218
+ .IconButtonNext_variant_function.IconButtonNext_color_secondary {
219
+ --icon-button-font-color: var(--color-content-action-secondary);
220
+ --icon-button-font-color-hover: var(--color-content-action-secondary-hover);
221
+ --icon-button-font-color-active: var(
222
+ --color-content-action-secondary-pressed
223
+ );
224
+ --icon-button-font-color-focus: var(
225
+ --color-content-action-secondary-pressed
226
+ );
227
+ }
228
+
229
+ .IconButtonNext_variant_function.IconButtonNext_color_tertiary {
230
+ --icon-button-font-color: var(--color-content-secondary);
231
+ --icon-button-font-color-hover: var(--color-content-secondary);
232
+ --icon-button-font-color-active: var(--color-content-secondary);
233
+ --icon-button-font-color-focus: var(--color-content-secondary);
234
+ }
235
+
236
+ .IconButtonNext_variant_function.IconButtonNext_color_error {
237
+ --icon-button-font-color: var(--color-content-error);
238
+ --icon-button-font-color-hover: var(--color-content-error-hover);
239
+ --icon-button-font-color-active: var(--color-content-error-pressed);
240
+ --icon-button-font-color-focus: var(--color-content-error-pressed);
241
+ }
242
+
243
+ /** floating */
244
+
245
+ .IconButtonNext_variant_floating {
246
+ --icon-button-bg-color: var(--color-background-main);
247
+ --icon-button-bg-color-hover: var(--color-background-main-hover);
248
+ --icon-button-bg-color-active: var(--color-background-main-pressed);
249
+ --icon-button-font-color: var(--color-content-primary);
250
+ --icon-button-font-color-active: var(--color-content-primary);
251
+ --icon-button-font-color-focus: var(--color-content-primary);
252
+ }
253
+
254
+ .IconButtonNext_variant_floating::after {
255
+ content: '';
256
+ inset: 0;
257
+ position: absolute;
258
+ inline-size: 100%;
259
+ border-radius: inherit;
260
+ box-shadow: 0 8px 32px rgb(0 0 0 / 8%);
261
+ }
262
+
263
+ /** rounded */
264
+
265
+ .IconButtonNext_variant_contained.IconButtonNext_rounded,
266
+ .IconButtonNext_variant_contained-additional.IconButtonNext_rounded,
267
+ .IconButtonNext_variant_ghost.IconButtonNext_rounded,
268
+ .IconButtonNext_variant_floating.IconButtonNext_rounded {
269
+ border-radius: 50%;
270
+ }
271
+
272
+ /** disabled */
273
+
274
+ .IconButtonNext_variant_contained.IconButtonNext_disabled,
275
+ .IconButtonNext_variant_contained.IconButtonNext_loading,
276
+ .IconButtonNext_variant_contained-additional.IconButtonNext_disabled,
277
+ .IconButtonNext_variant_contained-additional.IconButtonNext_loading,
278
+ .IconButtonNext_variant_ghost.IconButtonNext_disabled,
279
+ .IconButtonNext_variant_ghost.IconButtonNext_loading,
280
+ .IconButtonNext_variant_function.IconButtonNext_disabled,
281
+ .IconButtonNext_variant_function.IconButtonNext_loading,
282
+ .IconButtonNext_variant_floating.IconButtonNext_disabled,
283
+ .IconButtonNext_variant_floating.IconButtonNext_loading {
284
+ --icon-button-font-color: var(--color-content-disabled);
285
+ }
286
+
287
+ .IconButtonNext_variant_contained.IconButtonNext_disabled svg, .IconButtonNext_variant_contained.IconButtonNext_loading svg, .IconButtonNext_variant_contained-additional.IconButtonNext_disabled svg, .IconButtonNext_variant_contained-additional.IconButtonNext_loading svg, .IconButtonNext_variant_ghost.IconButtonNext_disabled svg, .IconButtonNext_variant_ghost.IconButtonNext_loading svg, .IconButtonNext_variant_function.IconButtonNext_disabled svg, .IconButtonNext_variant_function.IconButtonNext_loading svg, .IconButtonNext_variant_floating.IconButtonNext_disabled svg, .IconButtonNext_variant_floating.IconButtonNext_loading svg {
288
+ color: currentcolor;
289
+ }
290
+
291
+ .IconButtonNext_variant_contained.IconButtonNext_disabled,
292
+ .IconButtonNext_variant_contained.IconButtonNext_loading,
293
+ .IconButtonNext_variant_contained-additional.IconButtonNext_disabled,
294
+ .IconButtonNext_variant_contained-additional.IconButtonNext_loading,
295
+ .IconButtonNext_variant_floating.IconButtonNext_disabled,
296
+ .IconButtonNext_variant_floating.IconButtonNext_loading {
297
+ --icon-button-bg-color: var(--color-background-disabled);
298
+ --icon-button-bg-color-hover: var(--color-background-disabled);
299
+ --icon-button-bg-color-active: var(--color-background-disabled);
300
+ }
301
+
302
+ .IconButtonNext_variant_ghost.IconButtonNext_disabled,
303
+ .IconButtonNext_variant_ghost.IconButtonNext_loading,
304
+ .IconButtonNext_variant_function.IconButtonNext_disabled,
305
+ .IconButtonNext_variant_function.IconButtonNext_loading {
306
+ --icon-button-bg-color: transparent;
307
+ --icon-button-bg-color-hover: transparent;
308
+ --icon-button-bg-color-active: transparent;
309
+ }
310
+
311
+ /** focus */
312
+
313
+ .IconButtonNext:focus:not(:focus-visible, :active, :hover) {
314
+ box-shadow: none;
315
+ color: var(--icon-button-font-color);
316
+ }
317
+
318
+ .IconButtonNext:focus {
319
+ outline: 0;
320
+
321
+ /* the bug in outline property before chrome version 94 – doesn't repeat radius of an element */
322
+ box-shadow: var(--shadow-outline-focused);
323
+ color: var(--icon-button-font-color-focus);
324
+ }
325
+
326
+ .IconButtonNext:focus:not(:focus-visible) {
327
+ box-shadow: none;
328
+ }
329
+
330
+ /** hover */
331
+
332
+ .IconButtonNext:hover {
333
+ background-color: var(--icon-button-bg-color-hover);
334
+ color: var(--icon-button-font-color-hover);
335
+ }
336
+
337
+ /** active */
338
+
339
+ .IconButtonNext:active {
340
+ background-color: var(--icon-button-bg-color-active);
341
+ color: var(--icon-button-font-color-active);
342
+ }
343
+
344
+ .IconButtonNext_disabled,
345
+ .IconButtonNext_loading {
346
+ pointer-events: none;
347
+ cursor: auto;
348
+ }
@@ -0,0 +1,41 @@
1
+ import './IconButton.css';
2
+ import type { ElementType } from 'react';
3
+ import type { IconSize, IconProps } from '@ozen-ui/icons';
4
+ import type { FormElementSizeVariant } from '../../types/FormElementSizeVariant';
5
+ import type { PolymorphicComponentPropsWithoutRef } from '../../utils/polymorphicComponentWithRef';
6
+ import type { RenderContentType } from '../../utils/renderContent';
7
+ import { ICON_BUTTON_DEFAULT_TAG } from './constants';
8
+ export declare const iconButtonColorVariant: readonly ["primary", "secondary", "tertiary", "error"];
9
+ export declare const iconButtonVariant: readonly ["contained", "contained-additional", "ghost", "function", "floating"];
10
+ export type IconButtonVariant = (typeof iconButtonVariant)[number];
11
+ export type IconButtonColorVariant = (typeof iconButtonColorVariant)[number];
12
+ export type IconButtonIcon = RenderContentType<IconProps & {
13
+ size?: IconSize;
14
+ }>['content'];
15
+ type IconButtonBaseProps = {
16
+ /** Иконка */
17
+ icon: IconButtonIcon;
18
+ /** Вариант представления компонента */
19
+ variant?: IconButtonVariant;
20
+ /** Размер */
21
+ size?: FormElementSizeVariant;
22
+ /** Основной цвет компонента */
23
+ color?: IconButtonColorVariant;
24
+ /** Цвет иконки кнопки */
25
+ iconColor?: string;
26
+ /** Если {true} уменьшает размер компонента */
27
+ compressed?: boolean;
28
+ /** Если {true} делает компонент заблокированным */
29
+ disabled?: boolean;
30
+ /** Если {true} переводит компонент в состояние загрузки */
31
+ loading?: boolean;
32
+ /** Дополнительные CSS-классы */
33
+ className?: string;
34
+ /** Если {true} делает компонент круглым */
35
+ rounded?: boolean;
36
+ children?: never;
37
+ };
38
+ export type IconButtonProps<As extends ElementType = typeof ICON_BUTTON_DEFAULT_TAG> = PolymorphicComponentPropsWithoutRef<IconButtonBaseProps, As>;
39
+ export declare const cnIconButton: import("@bem-react/classname").ClassNameFormatter;
40
+ export declare const IconButton: import("../../utils/polymorphicComponentWithRef").PolymorphicComponentWithRef<IconButtonBaseProps, "button">;
41
+ export {};
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IconButton = exports.cnIconButton = exports.iconButtonVariant = exports.iconButtonColorVariant = void 0;
4
+ var tslib_1 = require("tslib");
5
+ require("./IconButton.css");
6
+ var react_1 = tslib_1.__importStar(require("react"));
7
+ var useThemeProps_1 = require("../../hooks/useThemeProps");
8
+ var classname_1 = require("../../utils/classname");
9
+ var getIconSizeToFormElement_1 = require("../../utils/getIconSizeToFormElement");
10
+ var polymorphicComponentWithRef_1 = require("../../utils/polymorphicComponentWithRef");
11
+ var renderContent_1 = require("../../utils/renderContent");
12
+ var ButtonBase_1 = require("../ButtonBase");
13
+ var Loader_1 = require("../Loader");
14
+ var constants_1 = require("./constants");
15
+ exports.iconButtonColorVariant = [
16
+ 'primary',
17
+ 'secondary',
18
+ 'tertiary',
19
+ 'error',
20
+ ];
21
+ exports.iconButtonVariant = [
22
+ 'contained',
23
+ 'contained-additional',
24
+ 'ghost',
25
+ 'function',
26
+ 'floating',
27
+ ];
28
+ exports.cnIconButton = (0, classname_1.cn)('IconButtonNext');
29
+ var loaderSizeMapper = {
30
+ '2xs': 's',
31
+ xs: 's',
32
+ s: 's',
33
+ m: 'm',
34
+ l: 'l',
35
+ };
36
+ exports.IconButton = (0, polymorphicComponentWithRef_1.polymorphicComponentWithRef)(function (inProps, ref) {
37
+ var props = (0, useThemeProps_1.useThemeProps)({
38
+ props: inProps,
39
+ name: 'IconButtonNext',
40
+ });
41
+ var _a = props.size, size = _a === void 0 ? constants_1.ICON_BUTTON_DEFAULT_SIZE : _a, _b = props.variant, variant = _b === void 0 ? constants_1.ICON_BUTTON_DEFAULT_VARIANT : _b, _c = props.color, color = _c === void 0 ? constants_1.ICON_BUTTON_DEFAULT_COLOR : _c, _d = props.as, Tag = _d === void 0 ? constants_1.ICON_BUTTON_DEFAULT_TAG : _d, iconColor = props.iconColor, compressed = props.compressed, loading = props.loading, disabled = props.disabled, className = props.className, icon = props.icon, onClick = props.onClick, rounded = props.rounded, other = tslib_1.__rest(props, ["size", "variant", "color", "as", "iconColor", "compressed", "loading", "disabled", "className", "icon", "onClick", "rounded"]);
42
+ var renderIcon = function (content) {
43
+ return (0, renderContent_1.renderContent)({
44
+ content: content,
45
+ props: {
46
+ size: (0, getIconSizeToFormElement_1.getIconSizeToFormElement)(size),
47
+ color: iconColor,
48
+ },
49
+ });
50
+ };
51
+ var resolvedChildren = (0, react_1.useMemo)(function () {
52
+ if (loading) {
53
+ return (react_1.default.createElement(Loader_1.Loader, { className: (0, exports.cnIconButton)('Loader'), color: "var(--color-content-disabled)", size: loaderSizeMapper[size] }));
54
+ }
55
+ if (icon) {
56
+ return renderIcon(icon);
57
+ }
58
+ return null;
59
+ }, [loading, size, iconColor, icon, renderIcon]);
60
+ return (react_1.default.createElement(ButtonBase_1.ButtonBase, tslib_1.__assign({ as: Tag, disabled: disabled, loading: loading, onClick: onClick, className: (0, exports.cnIconButton)({
61
+ variant: variant,
62
+ size: size,
63
+ color: color,
64
+ disabled: disabled,
65
+ loading: loading,
66
+ compressed: compressed,
67
+ rounded: rounded,
68
+ }, [className]) }, other, { ref: ref }), resolvedChildren));
69
+ });
70
+ exports.IconButton.displayName = 'IconButton';
@@ -0,0 +1,4 @@
1
+ export declare const ICON_BUTTON_DEFAULT_SIZE = "m";
2
+ export declare const ICON_BUTTON_DEFAULT_VARIANT = "ghost";
3
+ export declare const ICON_BUTTON_DEFAULT_COLOR = "secondary";
4
+ export declare const ICON_BUTTON_DEFAULT_TAG = "button";
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ICON_BUTTON_DEFAULT_TAG = exports.ICON_BUTTON_DEFAULT_COLOR = exports.ICON_BUTTON_DEFAULT_VARIANT = exports.ICON_BUTTON_DEFAULT_SIZE = void 0;
4
+ exports.ICON_BUTTON_DEFAULT_SIZE = 'm';
5
+ exports.ICON_BUTTON_DEFAULT_VARIANT = 'ghost';
6
+ exports.ICON_BUTTON_DEFAULT_COLOR = 'secondary';
7
+ exports.ICON_BUTTON_DEFAULT_TAG = 'button';
@@ -0,0 +1 @@
1
+ export * from './IconButton';
@@ -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("./IconButton"), exports);
@@ -5,6 +5,7 @@ import type { AvatarProps } from '../Avatar';
5
5
  import type { BackdropProps } from '../Backdrop';
6
6
  import type { BadgeProps } from '../Badge';
7
7
  import type { ButtonProps } from '../Button';
8
+ import type { ButtonProps as ButtonPropsNext } from '../ButtonNext';
8
9
  import type { CardProps } from '../Card';
9
10
  import type { CheckboxProps } from '../Checkbox';
10
11
  import type { CheckboxGroupProps } from '../CheckboxGroup';
@@ -23,6 +24,7 @@ import type { FormGroupProps } from '../FormGroup';
23
24
  import type { FormTitleProps } from '../FormTitle';
24
25
  import type { GridProps, GridItemProps } from '../Grid';
25
26
  import type { IconButtonProps } from '../IconButton';
27
+ import type { IconButtonProps as IconButtonPropsNext } from '../IconButtonNext';
26
28
  import type { IndicatorProps } from '../Indicator';
27
29
  import type { InputProps } from '../Input';
28
30
  import type { InputNumberProps } from '../InputNumber';
@@ -72,6 +74,7 @@ export type Theme = {
72
74
  Backdrop?: Partial<BackdropProps>;
73
75
  Badge?: Partial<BadgeProps>;
74
76
  Button?: Partial<ButtonProps>;
77
+ ButtonNext?: Partial<ButtonPropsNext>;
75
78
  Card?: Partial<CardProps>;
76
79
  Checkbox?: Partial<CheckboxProps>;
77
80
  CheckboxGroup?: Partial<CheckboxGroupProps>;
@@ -91,6 +94,7 @@ export type Theme = {
91
94
  Grid?: Partial<GridProps>;
92
95
  GridItem?: Partial<GridItemProps>;
93
96
  IconButton?: Partial<IconButtonProps>;
97
+ IconButtonNext?: Partial<IconButtonPropsNext>;
94
98
  Indicator?: Partial<IndicatorProps>;
95
99
  Input?: Partial<InputProps>;
96
100
  InputNumber?: Partial<InputNumberProps>;
@@ -13,6 +13,6 @@
13
13
  align-items: center;
14
14
  }
15
15
 
16
- .BreadcrumbItem {
16
+ .Button.BreadcrumbItem {
17
17
  color: var(--color-content-secondary);
18
18
  }
@@ -47,5 +47,8 @@ type ButtonBaseProps = {
47
47
  };
48
48
  export type ButtonProps<As extends ElementType = typeof BUTTON_DEFAULT_TAG> = PolymorphicComponentPropsWithoutRef<ButtonBaseProps, As>;
49
49
  export declare const cnButton: import("@bem-react/classname").ClassNameFormatter;
50
+ /**
51
+ * @deprecated Компонент устарел. Для замены используйте компонент ButtonNext
52
+ */
50
53
  export declare const Button: import("../../utils/polymorphicComponentWithRef").PolymorphicComponentWithRef<ButtonBaseProps, "button">;
51
54
  export {};
@@ -1,6 +1,7 @@
1
1
  import { __assign, __rest } from "tslib";
2
2
  import './Button.css';
3
3
  import React from 'react';
4
+ import { deprecate } from '@ozen-ui/logger';
4
5
  import { CSSTransition } from 'react-transition-group';
5
6
  import { useThemeProps } from '../../hooks/useThemeProps';
6
7
  import { cn } from '../../utils/classname';
@@ -22,13 +23,17 @@ export var buttonColorVariant = [
22
23
  'error',
23
24
  ];
24
25
  export var cnButton = cn('Button');
25
- // TODO: стандартизировать стили кнопки для состояния загрузки
26
- // TODO: реализовать базовую кнопку
26
+ /**
27
+ * @deprecated Компонент устарел. Для замены используйте компонент ButtonNext
28
+ */
27
29
  export var Button = polymorphicComponentWithRef(function (inProps, ref) {
28
30
  var props = useThemeProps({
29
31
  props: inProps,
30
32
  name: 'Button',
31
33
  });
34
+ if (process.env.NODE_ENV !== 'production') {
35
+ deprecate('Компонент «%s» устарел. Для замены используйте компонент «%s».', 'Button', 'ButtonNext');
36
+ }
32
37
  var _a = props.as, Tag = _a === void 0 ? BUTTON_DEFAULT_TAG : _a, _b = props.variant, variant = _b === void 0 ? BUTTON_DEFAULT_VARIANT : _b, _c = props.color, color = _c === void 0 ? BUTTON_DEFAULT_COLOR : _c, _d = props.size, size = _d === void 0 ? 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, labelProps = props.labelProps, onClick = props.onClick, other = __rest(props, ["as", "variant", "color", "size", "iconLeft", "iconRight", "loading", "children", "disabled", "className", "fullWidth", "labelProps", "onClick"]);
33
38
  var iconSize = getIconSizeToFormElement(size);
34
39
  var handleClick = function (event) {
@@ -59,6 +64,6 @@ export var Button = polymorphicComponentWithRef(function (inProps, ref) {
59
64
  loading: loading,
60
65
  color: color,
61
66
  fullWidth: fullWidth,
62
- }, [className]) }, other, { ref: ref }), childContent));
67
+ }, [className]) }, (isInteractionPrevented && { tabIndex: -1 }), other, { ref: ref }), childContent));
63
68
  });
64
69
  Button.displayName = 'Button';
@@ -0,0 +1,10 @@
1
+ .ButtonBase_unstyled {
2
+ background-color: transparent;
3
+ text-decoration: none;
4
+ cursor: pointer;
5
+ outline: 0;
6
+ border: 0;
7
+ margin: 0;
8
+ border-radius: 0;
9
+ padding: 0;
10
+ }
@@ -0,0 +1,20 @@
1
+ import './ButtonBase.css';
2
+ import type { ReactNode, ElementType } from 'react';
3
+ import type { PolymorphicComponentPropsWithoutRef } from '../../utils/polymorphicComponentWithRef';
4
+ import { BUTTON_BASE_DEFAULT_TAG } from './constants';
5
+ type ButtonBaseBaseProps = {
6
+ /** Содержимое кнопки */
7
+ children?: ReactNode;
8
+ /** Если {true} делает кнопку заблокированной */
9
+ disabled?: boolean;
10
+ /** Если {true} переводит кнопку в состояние загрузки */
11
+ loading?: boolean;
12
+ /** Дополнительные CSS-классы */
13
+ className?: string;
14
+ /** Если {true} делает кнопку не стилизованной */
15
+ unstyled?: boolean;
16
+ };
17
+ export type ButtonBaseProps<As extends ElementType = typeof BUTTON_BASE_DEFAULT_TAG> = PolymorphicComponentPropsWithoutRef<ButtonBaseBaseProps, As>;
18
+ export declare const cnButtonBase: import("@bem-react/classname").ClassNameFormatter;
19
+ export declare const ButtonBase: import("../../utils/polymorphicComponentWithRef").PolymorphicComponentWithRef<ButtonBaseBaseProps, "button">;
20
+ export {};
@@ -0,0 +1,27 @@
1
+ import { __assign, __rest } from "tslib";
2
+ import './ButtonBase.css';
3
+ import React from 'react';
4
+ import { useThemeProps } from '../../hooks/useThemeProps';
5
+ import { cn } from '../../utils/classname';
6
+ import { polymorphicComponentWithRef } from '../../utils/polymorphicComponentWithRef';
7
+ import { BUTTON_BASE_DEFAULT_TAG } from './constants';
8
+ export var cnButtonBase = cn('ButtonBase');
9
+ export var ButtonBase = polymorphicComponentWithRef(function (inProps, ref) {
10
+ var props = useThemeProps({
11
+ props: inProps,
12
+ name: 'Button',
13
+ });
14
+ var _a = props.as, Tag = _a === void 0 ? BUTTON_BASE_DEFAULT_TAG : _a, loading = props.loading, children = props.children, disabled = props.disabled, className = props.className, onClick = props.onClick, unstyled = props.unstyled, other = __rest(props, ["as", "loading", "children", "disabled", "className", "onClick", "unstyled"]);
15
+ var handleClick = function (event) {
16
+ if (onClick && !disabled && !loading) {
17
+ onClick(event);
18
+ }
19
+ };
20
+ var isInteractionPrevented = disabled || loading;
21
+ return (React.createElement(Tag, __assign({ disabled: isInteractionPrevented, onClick: handleClick, type: "button", className: cnButtonBase({
22
+ disabled: disabled,
23
+ loading: loading,
24
+ unstyled: unstyled,
25
+ }, [className]) }, (isInteractionPrevented && { tabIndex: -1 }), other, { ref: ref }), children));
26
+ });
27
+ ButtonBase.displayName = 'ButtonBase';
@@ -0,0 +1 @@
1
+ export declare const BUTTON_BASE_DEFAULT_TAG = "button";
@@ -0,0 +1 @@
1
+ export var BUTTON_BASE_DEFAULT_TAG = 'button';