@ozen-ui/kit 0.8.0 → 0.9.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 (171) hide show
  1. package/FieldControl/package.json +5 -0
  2. package/FieldInput/package.json +5 -0
  3. package/Fieldset/package.json +5 -0
  4. package/__inner__/cjs/components/Backdrop/Backdrop.d.ts +2 -2
  5. package/__inner__/cjs/components/Breadcrumbs/types.d.ts +2 -2
  6. package/__inner__/cjs/components/DataList/DataList.d.ts +1 -1
  7. package/__inner__/cjs/components/DataList/DataListProvider.d.ts +5 -5
  8. package/__inner__/cjs/components/FieldControl/FieldControl.css +135 -0
  9. package/__inner__/cjs/components/FieldControl/FieldControl.d.ts +13 -0
  10. package/__inner__/cjs/components/FieldControl/FieldControl.js +82 -0
  11. package/__inner__/cjs/components/FieldControl/FieldControlContext.d.ts +15 -0
  12. package/__inner__/cjs/components/FieldControl/FieldControlContext.js +6 -0
  13. package/__inner__/cjs/components/FieldControl/index.d.ts +2 -0
  14. package/__inner__/cjs/components/FieldControl/index.js +5 -0
  15. package/__inner__/cjs/components/FieldHint/FieldHint.d.ts +6 -9
  16. package/__inner__/cjs/components/FieldHint/FieldHint.js +24 -4
  17. package/__inner__/cjs/components/FieldIcon/FieldIcon.css +1 -21
  18. package/__inner__/cjs/components/FieldIcon/FieldIcon.d.ts +8 -12
  19. package/__inner__/cjs/components/FieldIcon/FieldIcon.js +15 -4
  20. package/__inner__/cjs/components/FieldInput/FieldInput.d.ts +11 -0
  21. package/__inner__/cjs/components/FieldInput/FieldInput.js +54 -0
  22. package/__inner__/cjs/components/FieldInput/index.d.ts +1 -0
  23. package/__inner__/cjs/components/FieldInput/index.js +4 -0
  24. package/__inner__/cjs/components/FieldLabel/FieldLabel.d.ts +7 -5
  25. package/__inner__/cjs/components/FieldLabel/FieldLabel.js +39 -10
  26. package/__inner__/cjs/components/Fieldset/Fieldset.css +13 -0
  27. package/__inner__/cjs/components/Fieldset/Fieldset.d.ts +10 -0
  28. package/__inner__/cjs/components/Fieldset/Fieldset.js +15 -0
  29. package/__inner__/cjs/components/Fieldset/index.d.ts +1 -0
  30. package/__inner__/cjs/components/Fieldset/index.js +4 -0
  31. package/__inner__/cjs/components/FilePicker/FilePicker.css +48 -59
  32. package/__inner__/cjs/components/FilePicker/FilePicker.js +2 -1
  33. package/__inner__/cjs/components/Input/Input.css +9 -121
  34. package/__inner__/cjs/components/Input/Input.d.ts +1 -62
  35. package/__inner__/cjs/components/Input/Input.js +32 -53
  36. package/__inner__/cjs/components/Input/constants.d.ts +1 -0
  37. package/__inner__/cjs/components/Input/constants.js +4 -0
  38. package/__inner__/cjs/components/Input/index.d.ts +1 -0
  39. package/__inner__/cjs/components/Input/index.js +1 -0
  40. package/__inner__/cjs/components/Input/types.d.ts +71 -0
  41. package/__inner__/cjs/components/Input/types.js +13 -0
  42. package/__inner__/cjs/components/InputNumber/InputNumber.css +60 -74
  43. package/__inner__/cjs/components/InputNumber/InputNumber.js +2 -1
  44. package/__inner__/cjs/components/InputNumber/utils.d.ts +2 -2
  45. package/__inner__/cjs/components/Link/Link.d.ts +1 -1
  46. package/__inner__/cjs/components/List/components/ListItem/ListItem.d.ts +1 -2
  47. package/__inner__/cjs/components/List/components/ListItemButton/ListItemButton.d.ts +1 -2
  48. package/__inner__/cjs/components/List/types.d.ts +3 -3
  49. package/__inner__/cjs/components/Menu/components/MenuItem/MenuItem.d.ts +1 -1
  50. package/__inner__/cjs/components/Menu/components/MenuList/MenuList.d.ts +1 -1
  51. package/__inner__/cjs/components/Modal/Modal.d.ts +1 -1
  52. package/__inner__/cjs/components/Modal/Modal.js +1 -1
  53. package/__inner__/cjs/components/Modal/components/ModalConsumer.d.ts +2 -2
  54. package/__inner__/cjs/components/Pagination/helpers/createPaginationRange/createPaginationRange.d.ts +1 -1
  55. package/__inner__/cjs/components/Pagination/types.d.ts +5 -5
  56. package/__inner__/cjs/components/Popover/types.d.ts +4 -5
  57. package/__inner__/cjs/components/ProgressBar/ProgressBar.d.ts +2 -2
  58. package/__inner__/cjs/components/Select/Select.css +5 -16
  59. package/__inner__/cjs/components/Select/components/SelectInput/SelectInput.js +2 -1
  60. package/__inner__/cjs/components/Select/types.d.ts +3 -4
  61. package/__inner__/cjs/components/Slider/types.d.ts +1 -1
  62. package/__inner__/cjs/components/Snackbar/types.d.ts +1 -1
  63. package/__inner__/cjs/components/Tag/components/RemoveButton/RemoveButton.d.ts +1 -1
  64. package/__inner__/cjs/components/Textarea/Textarea.css +3 -107
  65. package/__inner__/cjs/components/Textarea/Textarea.d.ts +1 -59
  66. package/__inner__/cjs/components/Textarea/Textarea.js +8 -62
  67. package/__inner__/cjs/components/Textarea/components/TextareaConsumer.d.ts +3 -0
  68. package/__inner__/cjs/components/Textarea/components/TextareaConsumer.js +36 -0
  69. package/__inner__/cjs/components/Textarea/components/TextareaCounter.d.ts +7 -0
  70. package/__inner__/cjs/components/Textarea/components/TextareaCounter.js +25 -0
  71. package/__inner__/cjs/components/Textarea/components/index.d.ts +2 -0
  72. package/__inner__/cjs/components/Textarea/components/index.js +5 -0
  73. package/__inner__/cjs/components/Textarea/constants.d.ts +1 -0
  74. package/__inner__/cjs/components/Textarea/constants.js +4 -0
  75. package/__inner__/cjs/components/Textarea/index.d.ts +1 -0
  76. package/__inner__/cjs/components/Textarea/index.js +1 -0
  77. package/__inner__/cjs/components/Textarea/types.d.ts +69 -0
  78. package/__inner__/cjs/components/Textarea/types.js +4 -0
  79. package/__inner__/cjs/components/ThemeProvider/ThemeProvider.d.ts +2 -1
  80. package/__inner__/cjs/components/ThemeProvider/types.d.ts +2 -0
  81. package/__inner__/cjs/components/Tooltip/types.d.ts +1 -1
  82. package/__inner__/cjs/hooks/useMultiRef/useMultiRef.d.ts +2 -3
  83. package/__inner__/cjs/types/ResponsiveValue.d.ts +1 -1
  84. package/__inner__/cjs/utils/isKey.d.ts +2 -2
  85. package/__inner__/cjs/utils/polymorphicComponentWithRef.d.ts +0 -1
  86. package/__inner__/esm/components/Backdrop/Backdrop.d.ts +2 -2
  87. package/__inner__/esm/components/Backdrop/Backdrop.js +1 -1
  88. package/__inner__/esm/components/Breadcrumbs/types.d.ts +2 -2
  89. package/__inner__/esm/components/DataList/DataList.d.ts +1 -1
  90. package/__inner__/esm/components/DataList/DataListProvider.d.ts +5 -5
  91. package/__inner__/esm/components/FieldControl/FieldControl.css +135 -0
  92. package/__inner__/esm/components/FieldControl/FieldControl.d.ts +13 -0
  93. package/__inner__/esm/components/FieldControl/FieldControl.js +79 -0
  94. package/__inner__/esm/components/FieldControl/FieldControlContext.d.ts +15 -0
  95. package/__inner__/esm/components/FieldControl/FieldControlContext.js +2 -0
  96. package/__inner__/esm/components/FieldControl/index.d.ts +2 -0
  97. package/__inner__/esm/components/FieldControl/index.js +2 -0
  98. package/__inner__/esm/components/FieldHint/FieldHint.d.ts +6 -9
  99. package/__inner__/esm/components/FieldHint/FieldHint.js +25 -5
  100. package/__inner__/esm/components/FieldIcon/FieldIcon.css +1 -21
  101. package/__inner__/esm/components/FieldIcon/FieldIcon.d.ts +8 -12
  102. package/__inner__/esm/components/FieldIcon/FieldIcon.js +16 -5
  103. package/__inner__/esm/components/FieldInput/FieldInput.d.ts +11 -0
  104. package/__inner__/esm/components/FieldInput/FieldInput.js +51 -0
  105. package/__inner__/esm/components/FieldInput/index.d.ts +1 -0
  106. package/__inner__/esm/components/FieldInput/index.js +1 -0
  107. package/__inner__/esm/components/FieldLabel/FieldLabel.d.ts +7 -5
  108. package/__inner__/esm/components/FieldLabel/FieldLabel.js +38 -8
  109. package/__inner__/esm/components/Fieldset/Fieldset.css +13 -0
  110. package/__inner__/esm/components/Fieldset/Fieldset.d.ts +10 -0
  111. package/__inner__/esm/components/Fieldset/Fieldset.js +12 -0
  112. package/__inner__/esm/components/Fieldset/index.d.ts +1 -0
  113. package/__inner__/esm/components/Fieldset/index.js +1 -0
  114. package/__inner__/esm/components/FilePicker/FilePicker.css +48 -59
  115. package/__inner__/esm/components/FilePicker/FilePicker.js +2 -1
  116. package/__inner__/esm/components/Input/Input.css +9 -121
  117. package/__inner__/esm/components/Input/Input.d.ts +1 -62
  118. package/__inner__/esm/components/Input/Input.js +33 -54
  119. package/__inner__/esm/components/Input/constants.d.ts +1 -0
  120. package/__inner__/esm/components/Input/constants.js +1 -0
  121. package/__inner__/esm/components/Input/index.d.ts +1 -0
  122. package/__inner__/esm/components/Input/index.js +1 -0
  123. package/__inner__/esm/components/Input/types.d.ts +71 -0
  124. package/__inner__/esm/components/Input/types.js +10 -0
  125. package/__inner__/esm/components/InputNumber/InputNumber.css +60 -74
  126. package/__inner__/esm/components/InputNumber/InputNumber.js +2 -1
  127. package/__inner__/esm/components/InputNumber/utils.d.ts +2 -2
  128. package/__inner__/esm/components/Link/Link.d.ts +1 -1
  129. package/__inner__/esm/components/List/components/ListItem/ListItem.d.ts +1 -2
  130. package/__inner__/esm/components/List/components/ListItemButton/ListItemButton.d.ts +1 -2
  131. package/__inner__/esm/components/List/types.d.ts +3 -3
  132. package/__inner__/esm/components/Menu/components/MenuItem/MenuItem.d.ts +1 -1
  133. package/__inner__/esm/components/Menu/components/MenuList/MenuList.d.ts +1 -1
  134. package/__inner__/esm/components/Modal/Modal.d.ts +1 -1
  135. package/__inner__/esm/components/Modal/Modal.js +1 -1
  136. package/__inner__/esm/components/Modal/components/ModalConsumer.d.ts +2 -2
  137. package/__inner__/esm/components/Pagination/helpers/createPaginationRange/createPaginationRange.d.ts +1 -1
  138. package/__inner__/esm/components/Pagination/types.d.ts +5 -5
  139. package/__inner__/esm/components/Popover/types.d.ts +4 -5
  140. package/__inner__/esm/components/ProgressBar/ProgressBar.d.ts +2 -2
  141. package/__inner__/esm/components/ProgressBar/ProgressBar.js +1 -1
  142. package/__inner__/esm/components/Select/Select.css +5 -16
  143. package/__inner__/esm/components/Select/components/SelectInput/SelectInput.js +2 -1
  144. package/__inner__/esm/components/Select/types.d.ts +3 -4
  145. package/__inner__/esm/components/Slider/types.d.ts +1 -1
  146. package/__inner__/esm/components/Snackbar/types.d.ts +1 -1
  147. package/__inner__/esm/components/Tag/components/RemoveButton/RemoveButton.d.ts +1 -1
  148. package/__inner__/esm/components/Textarea/Textarea.css +3 -107
  149. package/__inner__/esm/components/Textarea/Textarea.d.ts +1 -59
  150. package/__inner__/esm/components/Textarea/Textarea.js +9 -63
  151. package/__inner__/esm/components/Textarea/components/TextareaConsumer.d.ts +3 -0
  152. package/__inner__/esm/components/Textarea/components/TextareaConsumer.js +32 -0
  153. package/__inner__/esm/components/Textarea/components/TextareaCounter.d.ts +7 -0
  154. package/__inner__/esm/components/Textarea/components/TextareaCounter.js +21 -0
  155. package/__inner__/esm/components/Textarea/components/index.d.ts +2 -0
  156. package/__inner__/esm/components/Textarea/components/index.js +2 -0
  157. package/__inner__/esm/components/Textarea/constants.d.ts +1 -0
  158. package/__inner__/esm/components/Textarea/constants.js +1 -0
  159. package/__inner__/esm/components/Textarea/index.d.ts +1 -0
  160. package/__inner__/esm/components/Textarea/index.js +1 -0
  161. package/__inner__/esm/components/Textarea/types.d.ts +69 -0
  162. package/__inner__/esm/components/Textarea/types.js +1 -0
  163. package/__inner__/esm/components/ThemeProvider/ThemeProvider.d.ts +2 -1
  164. package/__inner__/esm/components/ThemeProvider/types.d.ts +2 -0
  165. package/__inner__/esm/components/Tooltip/Tooltip.js +1 -1
  166. package/__inner__/esm/components/Tooltip/types.d.ts +1 -1
  167. package/__inner__/esm/hooks/useMultiRef/useMultiRef.d.ts +2 -3
  168. package/__inner__/esm/types/ResponsiveValue.d.ts +1 -1
  169. package/__inner__/esm/utils/isKey.d.ts +2 -2
  170. package/__inner__/esm/utils/polymorphicComponentWithRef.d.ts +0 -1
  171. package/package.json +1 -1
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../__inner__/cjs/components/FieldControl/index.js",
3
+ "module": "../__inner__/esm/components/FieldControl/index.js",
4
+ "types": "../__inner__/esm/components/FieldControl/index.d.ts"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../__inner__/cjs/components/FieldInput/index.js",
3
+ "module": "../__inner__/esm/components/FieldInput/index.js",
4
+ "types": "../__inner__/esm/components/FieldInput/index.d.ts"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../__inner__/cjs/components/Fieldset/index.js",
3
+ "module": "../__inner__/esm/components/Fieldset/index.js",
4
+ "types": "../__inner__/esm/components/Fieldset/index.d.ts"
5
+ }
@@ -1,7 +1,7 @@
1
1
  import './Backdrop.css';
2
2
  import type { CSSProperties, ElementType, ReactNode } from 'react';
3
- import { CSSTransitionProps } from 'react-transition-group/CSSTransition';
4
- import { PolymorphicComponentPropsWithRef } from '../../utils/polymorphicComponentWithRef';
3
+ import type { CSSTransitionProps } from 'react-transition-group/CSSTransition';
4
+ import type { PolymorphicComponentPropsWithRef } from '../../utils/polymorphicComponentWithRef';
5
5
  import { BACKDROP_DEFAULT_TAG } from './constants';
6
6
  export type BackdropBaseProps = {
7
7
  /** Признак по которому компонент будет представлен */
@@ -1,8 +1,8 @@
1
- import React, { HTMLAttributes } from 'react';
1
+ import type { HTMLAttributes, FC } from 'react';
2
2
  import type { IconProps } from '@ozen-ui/icons';
3
3
  export declare const breadcrumbsSizeVariant: readonly ["xs", "s"];
4
4
  export type BreadcrumbsSizeVariant = (typeof breadcrumbsSizeVariant)[number];
5
- export type BreadcrumbsSeparatorComponent = React.FC<IconProps>;
5
+ export type BreadcrumbsSeparatorComponent = FC<IconProps>;
6
6
  export type BreadcrumbsContextValue = {
7
7
  /** Размер */
8
8
  size: BreadcrumbsSizeVariant;
@@ -1,7 +1,7 @@
1
1
  import './DataList.css';
2
2
  import React from 'react';
3
3
  import type { ReactNode } from 'react';
4
- import { FormElementSizeVariant } from '../../types/FormElementSizeVariant';
4
+ import type { FormElementSizeVariant } from '../../types/FormElementSizeVariant';
5
5
  import { type ListProps } from '../List';
6
6
  import { type PopoverProps } from '../Popover';
7
7
  export declare const cnDataList: import("@bem-react/classname").ClassNameFormatter;
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import type { SyntheticEvent, MouseEvent } from 'react';
2
2
  import type { FormElementSizeVariant } from '../../types/FormElementSizeVariant';
3
3
  export type DataListSelectPayload = {
4
4
  name?: string;
@@ -10,9 +10,9 @@ export type DataListContextState = {
10
10
  selected?: string;
11
11
  keyboardHighlight: boolean;
12
12
  size: FormElementSizeVariant;
13
- onSelect?: (event: React.SyntheticEvent, option: string) => void;
14
- onMouseMove?: (event: React.MouseEvent<HTMLLIElement>) => void;
15
- onMouseLeave?: (event: React.MouseEvent<HTMLLIElement>) => void;
13
+ onSelect?: (event: SyntheticEvent, option: string) => void;
14
+ onMouseMove?: (event: MouseEvent<HTMLLIElement>) => void;
15
+ onMouseLeave?: (event: MouseEvent<HTMLLIElement>) => void;
16
16
  };
17
- export declare const DataListContext: React.Context<DataListContextState>;
17
+ export declare const DataListContext: import("react").Context<DataListContextState>;
18
18
  export declare const useDataListContext: () => DataListContextState;
@@ -0,0 +1,135 @@
1
+ /* stylelint-disable */
2
+ .FieldControl {
3
+ --textfield-color: var(--color-content-primary);
4
+ --textfield-background-color: var(--color-background-primary);
5
+ --textfield-border-width: var(--border-width-s);
6
+ --textfield-border-color: var(--color-border-main);
7
+ cursor: text;
8
+ display: inline-flex;
9
+ vertical-align: top;
10
+ flex-direction: column;
11
+ }
12
+ .FieldControl > * {
13
+ cursor: text;
14
+ }
15
+ .FieldControl_size_2xs {
16
+ --textfield-gutter-x: 12px;
17
+ --textfield-input-height: 32px;
18
+ --textfield-input-padding: 8px 0;
19
+ --textfield-input-gap: var(--space-s);
20
+
21
+ font: var(--typography-text-2xs-font);
22
+
23
+ letter-spacing: var(--typography-text-2xs-letter_spacing, 0);
24
+
25
+ text-transform: var(--typography-text-2xs-text_transform, none);
26
+ }
27
+ .FieldControl_size_2xs .FieldInput::-webkit-calendar-picker-indicator {
28
+ inset-inline-end: -25px;
29
+ }
30
+ .FieldControl_size_xs {
31
+ --textfield-gutter-x: 12px;
32
+ --textfield-input-height: 40px;
33
+ --textfield-input-padding: 12px 0;
34
+ --textfield-input-gap: var(--space-s);
35
+
36
+ font: var(--typography-text-xs-font);
37
+
38
+ letter-spacing: var(--typography-text-xs-letter_spacing, 0);
39
+
40
+ text-transform: var(--typography-text-xs-text_transform, none);
41
+ }
42
+ .FieldControl_size_xs .FieldInput::-webkit-calendar-picker-indicator {
43
+ inset-inline-end: -25px;
44
+ }
45
+ .FieldControl_size_s {
46
+ --textfield-gutter-x: 16px;
47
+ --textfield-input-height: 48px;
48
+ --textfield-input-padding: 14px 0;
49
+ --textfield-input-gap: var(--space-m);
50
+
51
+ font: var(--typography-text-s-font);
52
+
53
+ letter-spacing: var(--typography-text-s-letter_spacing, 0);
54
+
55
+ text-transform: var(--typography-text-s-text_transform, none);
56
+ }
57
+ .FieldControl_size_s .FieldInput::-webkit-calendar-picker-indicator {
58
+ inset-inline-end: -30px;
59
+ }
60
+ .FieldControl_size_m {
61
+ --textfield-gutter-x: 20px;
62
+ --textfield-input-height: 56px;
63
+ --textfield-input-padding: 16px 0;
64
+ --textfield-input-gap: var(--space-m);
65
+
66
+ font: var(--typography-text-m-font);
67
+
68
+ letter-spacing: var(--typography-text-m-letter_spacing, 0);
69
+
70
+ text-transform: var(--typography-text-m-text_transform, none);
71
+ }
72
+ .FieldControl_size_m .FieldInput::-webkit-calendar-picker-indicator {
73
+ inset-inline-end: -34px;
74
+ }
75
+ .FieldControl_size_l {
76
+ --textfield-gutter-x: 24px;
77
+ --textfield-input-height: 64px;
78
+ --textfield-input-padding: 18px 0;
79
+ --textfield-input-gap: var(--space-l);
80
+
81
+ font: var(--typography-text-l-font);
82
+
83
+ letter-spacing: var(--typography-text-l-letter_spacing, 0);
84
+
85
+ text-transform: var(--typography-text-l-text_transform, none);
86
+ }
87
+ .FieldControl_size_l .FieldInput::-webkit-calendar-picker-indicator {
88
+ inset-inline-end: -39px;
89
+ }
90
+ .FieldControl_hasLabel.FieldControl_size_2xs {
91
+ --textfield-input-padding: 8px 0 8px;
92
+ }
93
+ .FieldControl_hasLabel.FieldControl_size_xs {
94
+ --textfield-input-padding: 19px 0 4px;
95
+ }
96
+ .FieldControl_hasLabel.FieldControl_size_s {
97
+ --textfield-input-padding: 21px 0 6px;
98
+ }
99
+ .FieldControl_hasLabel.FieldControl_size_m {
100
+ --textfield-input-padding: 24px 0 6px;
101
+ }
102
+ .FieldControl_hasLabel.FieldControl_size_l {
103
+ --textfield-input-padding: 26px 0 6px;
104
+ }
105
+ .FieldControl_hasLabel .FieldInput::placeholder {
106
+ opacity: 0;
107
+ }
108
+ .FieldControl_hasLabel .FieldInput:focus::placeholder {
109
+ opacity: 1;
110
+ }
111
+ .FieldControl_fullWidth {
112
+ inline-size: 100%;
113
+ }
114
+ .FieldControl:hover {
115
+ --textfield-border-color: var(--color-border-main-hover);
116
+ }
117
+ .FieldControl_focused,
118
+ .FieldControl_focused:hover {
119
+ --textfield-border-width: var(--border-width-m);
120
+ --textfield-background-color: var(--color-background-main);
121
+ --textfield-border-color: var(--color-border-action);
122
+ }
123
+ .FieldControl_error,
124
+ .FieldControl_error.FieldControl:hover,
125
+ .FieldControl_error.FieldControl_focused,
126
+ .FieldControl_error.FieldControl_focused:hover {
127
+ --textfield-border-color: var(--color-border-error);
128
+ }
129
+ .FieldControl_disabled {
130
+ --textfield-border-color: var(--color-border-disabled);
131
+ --textfield-background-color: var(--color-background-disabled);
132
+ --textfield-color: var(--color-content-secondary);
133
+ pointer-events: none;
134
+ cursor: default;
135
+ }
@@ -0,0 +1,13 @@
1
+ import './FieldControl.css';
2
+ import type { ElementType, ComponentRef } from 'react';
3
+ import { type PolymorphicComponentPropsWithoutRef } from '../../utils/polymorphicComponentWithRef';
4
+ import type { FieldControlContextValue } from './index';
5
+ export declare const FIELD_CONTROL_DEFAULT_TAG = "div";
6
+ export type FieldControlRef = ComponentRef<typeof FIELD_CONTROL_DEFAULT_TAG>;
7
+ export type FieldControlBaseProps = Omit<FieldControlContextValue, 'label'> & {
8
+ /** data-атрибут для тестирования */
9
+ 'data-testid'?: string;
10
+ };
11
+ export type FieldControlProps<As extends ElementType = 'div'> = PolymorphicComponentPropsWithoutRef<FieldControlBaseProps, As>;
12
+ export declare const cnFieldControl: import("@bem-react/classname").ClassNameFormatter;
13
+ export declare const FieldControl: import("../../utils/polymorphicComponentWithRef").PolymorphicComponentWithRef<FieldControlBaseProps, "div">;
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.FieldControl = exports.cnFieldControl = exports.FIELD_CONTROL_DEFAULT_TAG = void 0;
4
+ var tslib_1 = require("tslib");
5
+ require("./FieldControl.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 polymorphicComponentWithRef_1 = require("../../utils/polymorphicComponentWithRef");
10
+ var index_1 = require("./index");
11
+ exports.FIELD_CONTROL_DEFAULT_TAG = 'div';
12
+ exports.cnFieldControl = (0, classname_1.cn)('FieldControl');
13
+ exports.FieldControl = (0, polymorphicComponentWithRef_1.polymorphicComponentWithRef)(function (inProps, ref) {
14
+ var props = (0, useThemeProps_1.useThemeProps)({
15
+ props: inProps,
16
+ name: 'FieldControl'
17
+ });
18
+ var _a = props.as, Tag = _a === void 0 ? exports.FIELD_CONTROL_DEFAULT_TAG : _a, sizeProp = props.size, disabledProp = props.disabled, requiredProp = props.required, errorProp = props.error, fullWidthProp = props.fullWidth, filledProp = props.filled, focusedProp = props.focused, children = props.children, className = props.className, otherProp = tslib_1.__rest(props, ["as", "size", "disabled", "required", "error", "fullWidth", "filled", "focused", "children", "className"]);
19
+ var focused = focusedProp;
20
+ var filled = filledProp;
21
+ var size = sizeProp;
22
+ var required = requiredProp;
23
+ var disabled = disabledProp;
24
+ var error = errorProp;
25
+ var fullWidth = fullWidthProp;
26
+ var initialState = {
27
+ size: size,
28
+ filled: filled,
29
+ focused: focused,
30
+ disabled: disabled,
31
+ required: required,
32
+ error: error,
33
+ fullWidth: fullWidth
34
+ };
35
+ var _b = tslib_1.__read((0, react_1.useState)(initialState), 2), state = _b[0], setState = _b[1];
36
+ var label = state.label, value = state.value;
37
+ if (size === undefined && state.size) {
38
+ size = state.size;
39
+ }
40
+ if (focused === undefined && state.focused) {
41
+ focused = state.focused;
42
+ }
43
+ if (filled === undefined && state.filled) {
44
+ filled = state.filled;
45
+ }
46
+ if (disabled === undefined && state.disabled) {
47
+ disabled = state.disabled;
48
+ }
49
+ if (required === undefined && state.required) {
50
+ required = state.required;
51
+ }
52
+ if (error === undefined && state.error) {
53
+ error = state.error;
54
+ }
55
+ if (fullWidth === undefined && state.fullWidth) {
56
+ fullWidth = state.fullWidth;
57
+ }
58
+ return (react_1["default"].createElement(Tag, tslib_1.__assign({ className: (0, exports.cnFieldControl)({
59
+ error: error,
60
+ fullWidth: fullWidth,
61
+ disabled: disabled,
62
+ required: required,
63
+ size: size,
64
+ filled: filled,
65
+ focused: focused,
66
+ hasLabel: !!label
67
+ }, [className]) }, otherProp, { ref: ref }),
68
+ react_1["default"].createElement(index_1.FieldControlContext.Provider, { value: [
69
+ {
70
+ error: error,
71
+ fullWidth: fullWidth,
72
+ disabled: disabled,
73
+ required: required,
74
+ size: size,
75
+ filled: filled,
76
+ focused: focused,
77
+ value: value
78
+ },
79
+ setState,
80
+ ] }, children)));
81
+ });
82
+ exports.FieldControl.displayName = 'FieldControl';
@@ -0,0 +1,15 @@
1
+ import type { Dispatch, SetStateAction } from 'react';
2
+ import React from 'react';
3
+ import type { FormElementSizeVariant } from '../../types/FormElementSizeVariant';
4
+ export type FieldControlContextValue = {
5
+ size?: FormElementSizeVariant;
6
+ error?: boolean;
7
+ disabled?: boolean;
8
+ required?: boolean;
9
+ fullWidth?: boolean;
10
+ filled?: boolean;
11
+ focused?: boolean;
12
+ label?: string;
13
+ value?: string | number;
14
+ };
15
+ export declare const FieldControlContext: React.Context<[FieldControlContextValue, Dispatch<SetStateAction<FieldControlContextValue>>]>;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.FieldControlContext = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importDefault(require("react"));
6
+ exports.FieldControlContext = react_1["default"].createContext([{}, function () { return undefined; }]);
@@ -0,0 +1,2 @@
1
+ export * from './FieldControl';
2
+ export * from './FieldControlContext';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./FieldControl"), exports);
5
+ tslib_1.__exportStar(require("./FieldControlContext"), exports);
@@ -1,17 +1,14 @@
1
1
  import './FieldHint.css';
2
2
  import React from 'react';
3
- import type { HTMLAttributes, ReactNode } from 'react';
3
+ import type { ReactNode, ComponentPropsWithRef, ComponentRef } from 'react';
4
4
  import type { FormElementSizeVariant } from '../../types/FormElementSizeVariant';
5
- export type FieldHintProps = {
5
+ export declare const FIELD_HINT_DEFAULT_TAG = "div";
6
+ export type FieldHintRef = ComponentRef<typeof FIELD_HINT_DEFAULT_TAG>;
7
+ export type FieldHintProps = ComponentPropsWithRef<typeof FIELD_HINT_DEFAULT_TAG> & {
6
8
  children?: ReactNode;
7
9
  error?: boolean;
8
10
  disabled?: boolean;
9
11
  size?: FormElementSizeVariant;
10
- } & Omit<HTMLAttributes<HTMLDivElement>, 'color'>;
12
+ };
11
13
  export declare const cnFieldHint: import("@bem-react/classname").ClassNameFormatter;
12
- export declare const FieldHint: React.ForwardRefExoticComponent<{
13
- children?: ReactNode;
14
- error?: boolean | undefined;
15
- disabled?: boolean | undefined;
16
- size?: "s" | "m" | "l" | "2xs" | "xs" | undefined;
17
- } & Omit<React.HTMLAttributes<HTMLDivElement>, "color"> & React.RefAttributes<HTMLDivElement>>;
14
+ export declare const FieldHint: React.ForwardRefExoticComponent<Omit<FieldHintProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
@@ -1,16 +1,36 @@
1
1
  "use strict";
2
2
  exports.__esModule = true;
3
- exports.FieldHint = exports.cnFieldHint = void 0;
3
+ exports.FieldHint = exports.cnFieldHint = exports.FIELD_HINT_DEFAULT_TAG = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  require("./FieldHint.css");
6
6
  var react_1 = tslib_1.__importStar(require("react"));
7
7
  var classname_1 = require("../../utils/classname");
8
+ var FieldControl_1 = require("../FieldControl");
9
+ exports.FIELD_HINT_DEFAULT_TAG = 'div';
8
10
  exports.cnFieldHint = (0, classname_1.cn)('FieldHint');
9
11
  exports.FieldHint = (0, react_1.forwardRef)(function (_a, ref) {
10
- var children = _a.children, error = _a.error, disabled = _a.disabled, size = _a.size, className = _a.className, other = tslib_1.__rest(_a, ["children", "error", "disabled", "size", "className"]);
11
- if (!children) {
12
+ var children = _a.children, errorProp = _a.error, disabledProp = _a.disabled, sizeProp = _a.size, className = _a.className, other = tslib_1.__rest(_a, ["children", "error", "disabled", "size", "className"]);
13
+ var context = (0, react_1.useContext)(FieldControl_1.FieldControlContext);
14
+ var _b = tslib_1.__read(context, 1), fieldControl = _b[0];
15
+ var Tag = exports.FIELD_HINT_DEFAULT_TAG;
16
+ var size = sizeProp;
17
+ var error = errorProp;
18
+ var disabled = disabledProp;
19
+ var childrenCount = react_1.Children.toArray(children).filter(function (element) { return element !== undefined; }).length;
20
+ if (!childrenCount) {
12
21
  return null;
13
22
  }
14
- return (react_1["default"].createElement("div", tslib_1.__assign({ className: (0, exports.cnFieldHint)({ error: error, disabled: disabled, size: size }, [className]) }, other, { ref: ref }), children));
23
+ if (fieldControl) {
24
+ if (size === undefined && fieldControl.size) {
25
+ size = fieldControl.size;
26
+ }
27
+ if (error === undefined && fieldControl.error) {
28
+ error = fieldControl.error;
29
+ }
30
+ if (disabled === undefined && fieldControl.disabled) {
31
+ disabled = fieldControl.disabled;
32
+ }
33
+ }
34
+ return (react_1["default"].createElement(Tag, tslib_1.__assign({ className: (0, exports.cnFieldHint)({ error: error, disabled: disabled, size: size }, [className]) }, other, { ref: ref }), children));
15
35
  });
16
36
  exports.FieldHint.displayName = 'FieldHint';
@@ -2,25 +2,5 @@
2
2
  display: flex;
3
3
  align-items: center;
4
4
  color: var(--color-content-secondary);
5
- font: var(--field-icon-input-font);
5
+ font: inherit;
6
6
  }
7
-
8
- .FieldIcon_size_2xs {
9
- --field-icon-input-font: var(--typography-text-2xs-font);
10
- }
11
-
12
- .FieldIcon_size_xs {
13
- --field-icon-input-font: var(--typography-text-xs-font);
14
- }
15
-
16
- .FieldIcon_size_s {
17
- --field-icon-input-font: var(--typography-text-s-font);
18
- }
19
-
20
- .FieldIcon_size_m {
21
- --field-icon-input-font: var(--typography-text-m-font);
22
- }
23
-
24
- .FieldIcon_size_l {
25
- --field-icon-input-font: var(--typography-text-l-font);
26
- }
@@ -1,20 +1,16 @@
1
1
  import './FieldIcon.css';
2
+ import type { ComponentPropsWithRef, ComponentRef, FC } from 'react';
2
3
  import React from 'react';
3
- import type { HTMLAttributes } from 'react';
4
4
  import type { IconProps, IconSize } from '@ozen-ui/icons';
5
5
  import type { FormElementSizeVariant } from '../../types/FormElementSizeVariant';
6
- export type FieldIconProps = {
7
- icon?: string | React.FC<IconProps & {
6
+ export declare const FIELD_ICON_DEFAULT_TAG = "div";
7
+ export type FieldIconRef = ComponentRef<typeof FIELD_ICON_DEFAULT_TAG>;
8
+ export type FieldIconProps = ComponentPropsWithRef<typeof FIELD_ICON_DEFAULT_TAG> & {
9
+ icon?: string | FC<IconProps & {
8
10
  size?: IconSize;
9
11
  }> | undefined;
10
- size: FormElementSizeVariant;
12
+ size?: FormElementSizeVariant;
11
13
  children?: never;
12
- } & Omit<HTMLAttributes<HTMLDivElement>, 'children'>;
14
+ };
13
15
  export declare const cnFieldIcon: import("@bem-react/classname").ClassNameFormatter;
14
- export declare const FieldIcon: React.ForwardRefExoticComponent<{
15
- icon?: string | React.FC<IconProps & {
16
- size?: IconSize;
17
- }> | undefined;
18
- size: FormElementSizeVariant;
19
- children?: undefined;
20
- } & Omit<React.HTMLAttributes<HTMLDivElement>, "children"> & React.RefAttributes<HTMLDivElement>>;
16
+ export declare const FieldIcon: React.ForwardRefExoticComponent<Omit<FieldIconProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
@@ -1,27 +1,38 @@
1
1
  "use strict";
2
2
  exports.__esModule = true;
3
- exports.FieldIcon = exports.cnFieldIcon = void 0;
3
+ exports.FieldIcon = exports.cnFieldIcon = exports.FIELD_ICON_DEFAULT_TAG = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  require("./FieldIcon.css");
6
6
  var react_1 = tslib_1.__importStar(require("react"));
7
7
  var react_is_1 = require("react-is");
8
8
  var classname_1 = require("../../utils/classname");
9
9
  var getIconSizeToFormElement_1 = require("../../utils/getIconSizeToFormElement");
10
+ var FieldControl_1 = require("../FieldControl");
11
+ exports.FIELD_ICON_DEFAULT_TAG = 'div';
10
12
  exports.cnFieldIcon = (0, classname_1.cn)('FieldIcon');
11
13
  var resolveChildren = function (Content, size) {
12
14
  if (typeof Content === 'string') {
13
15
  return Content;
14
16
  }
15
17
  if ((0, react_is_1.isValidElementType)(Content)) {
16
- return react_1["default"].createElement(Content, { size: (0, getIconSizeToFormElement_1.getIconSizeToFormElement)(size) });
18
+ return react_1["default"].createElement(Content, { size: size && (0, getIconSizeToFormElement_1.getIconSizeToFormElement)(size) });
17
19
  }
18
20
  return null;
19
21
  };
20
22
  exports.FieldIcon = (0, react_1.forwardRef)(function (_a, ref) {
21
- var icon = _a.icon, className = _a.className, size = _a.size, other = tslib_1.__rest(_a, ["icon", "className", "size"]);
23
+ var icon = _a.icon, className = _a.className, sizeProp = _a.size, other = tslib_1.__rest(_a, ["icon", "className", "size"]);
24
+ var context = (0, react_1.useContext)(FieldControl_1.FieldControlContext);
25
+ var _b = tslib_1.__read(context, 1), fieldControl = _b[0];
26
+ var Tag = exports.FIELD_ICON_DEFAULT_TAG;
27
+ var size = sizeProp;
22
28
  if (!icon) {
23
29
  return null;
24
30
  }
25
- return (react_1["default"].createElement("div", tslib_1.__assign({ className: (0, exports.cnFieldIcon)({ size: size }, [className]) }, other, { ref: ref }), resolveChildren(icon, size)));
31
+ if (fieldControl) {
32
+ if (size === undefined && fieldControl.size) {
33
+ size = fieldControl.size;
34
+ }
35
+ }
36
+ return (react_1["default"].createElement(Tag, tslib_1.__assign({ className: (0, exports.cnFieldIcon)({ size: size }, [className]) }, other, { ref: ref }), resolveChildren(icon, size)));
26
37
  });
27
38
  exports.FieldIcon.displayName = 'FieldIcon';
@@ -0,0 +1,11 @@
1
+ import type { ComponentRef, ElementType } from 'react';
2
+ import type { PolymorphicComponentPropsWithoutRef } from '../../utils/polymorphicComponentWithRef';
3
+ export declare const FIELD_INPUT_DEFAULT_TAG = "input";
4
+ export type FieldInputRef = ComponentRef<typeof FIELD_INPUT_DEFAULT_TAG>;
5
+ type FieldInputBaseProps = {
6
+ 'data-testid'?: string;
7
+ };
8
+ export type FieldInputProps<As extends ElementType = typeof FIELD_INPUT_DEFAULT_TAG> = PolymorphicComponentPropsWithoutRef<FieldInputBaseProps, As>;
9
+ export declare const cnFieldInput: import("@bem-react/classname").ClassNameFormatter;
10
+ export declare const FieldInput: import("../../utils/polymorphicComponentWithRef").PolymorphicComponentWithRef<FieldInputBaseProps, "div">;
11
+ export {};
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.FieldInput = exports.cnFieldInput = exports.FIELD_INPUT_DEFAULT_TAG = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importStar(require("react"));
6
+ var useControlled_1 = require("../../hooks/useControlled");
7
+ var classname_1 = require("../../utils/classname");
8
+ var polymorphicComponentWithRef_1 = require("../../utils/polymorphicComponentWithRef");
9
+ var FieldControl_1 = require("../FieldControl");
10
+ exports.FIELD_INPUT_DEFAULT_TAG = 'input';
11
+ exports.cnFieldInput = (0, classname_1.cn)('FieldInput');
12
+ exports.FieldInput = (0, polymorphicComponentWithRef_1.polymorphicComponentWithRef)(function (_a, ref) {
13
+ var _b = _a.as, Tag = _b === void 0 ? exports.FIELD_INPUT_DEFAULT_TAG : _b, className = _a.className, requiredProp = _a.required, disabledProp = _a.disabled, valueProp = _a.value, onChange = _a.onChange, defaultValue = _a.defaultValue, children = _a.children, onFocus = _a.onFocus, onBlur = _a.onBlur, other = tslib_1.__rest(_a, ["as", "className", "required", "disabled", "value", "onChange", "defaultValue", "children", "onFocus", "onBlur"]);
14
+ var _c = tslib_1.__read((0, react_1.useState)(), 2), focused = _c[0], setFocused = _c[1];
15
+ var context = (0, react_1.useContext)(FieldControl_1.FieldControlContext);
16
+ var _d = tslib_1.__read(context, 2), fieldControl = _d[0], setFieldControl = _d[1];
17
+ var _e = tslib_1.__read((0, useControlled_1.useControlled)({
18
+ value: valueProp,
19
+ name: 'FieldInput',
20
+ state: 'value',
21
+ defaultValue: defaultValue
22
+ }), 2), valueState = _e[0], setValueState = _e[1];
23
+ var filled = !!valueState || valueState === 0;
24
+ var required = requiredProp;
25
+ var disabled = disabledProp;
26
+ if (fieldControl) {
27
+ if (required === undefined && fieldControl.required) {
28
+ required = fieldControl.required;
29
+ }
30
+ if (disabled === undefined && fieldControl.disabled) {
31
+ disabled = fieldControl.disabled;
32
+ }
33
+ }
34
+ (0, react_1.useEffect)(function () {
35
+ setFieldControl(function (prevState) { return (tslib_1.__assign(tslib_1.__assign({}, prevState), { filled: filled, focused: focused, value: valueState })); });
36
+ }, [filled, focused, valueState]);
37
+ var handleChange = (0, react_1.useCallback)(function (e) {
38
+ if (disabled)
39
+ return;
40
+ var value = e.target.value;
41
+ setValueState(value);
42
+ onChange === null || onChange === void 0 ? void 0 : onChange(e);
43
+ }, [onChange, disabled]);
44
+ var handleFocus = (0, react_1.useCallback)(function (e) {
45
+ setFocused(true);
46
+ onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);
47
+ }, [onFocus]);
48
+ var handleBlur = (0, react_1.useCallback)(function (e) {
49
+ setFocused(false);
50
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);
51
+ }, [onBlur]);
52
+ return (react_1["default"].createElement(Tag, tslib_1.__assign({ className: (0, exports.cnFieldInput)({}, [className]), required: required, disabled: disabled, onFocus: handleFocus, onBlur: handleBlur, onChange: handleChange, defaultValue: defaultValue, value: valueProp }, other, { ref: ref }), children));
53
+ });
54
+ exports.FieldInput.displayName = 'FieldInput';
@@ -0,0 +1 @@
1
+ export * from './FieldInput';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./FieldInput"), exports);
@@ -1,8 +1,10 @@
1
- import type { HTMLAttributes, Ref } from 'react';
2
- import * as React from 'react';
3
1
  import './FieldLabel.css';
4
- export declare const fieldLabelSizeVariant: readonly ["2xs", "xs", "s", "m", "l"];
5
- export type FieldLabelSizeVariant = (typeof fieldLabelSizeVariant)[number];
2
+ import type { Ref, ComponentRef, ComponentPropsWithRef } from 'react';
3
+ import React from 'react';
4
+ import type { FormElementSizeVariant } from '../../types/FormElementSizeVariant';
5
+ export type FieldLabelSizeVariant = FormElementSizeVariant;
6
+ export declare const FIELD_LABEL_DEFAULT_TAG = "span";
7
+ export type FieldLabelRef = ComponentRef<typeof FIELD_LABEL_DEFAULT_TAG>;
6
8
  export type FieldLabelProps = {
7
9
  /** Если {true} переводит компонент в визуальное состояние заполненный */
8
10
  filled?: boolean;
@@ -20,6 +22,6 @@ export type FieldLabelProps = {
20
22
  ref?: Ref<HTMLSpanElement>;
21
23
  /** Значение компонента */
22
24
  children?: string;
23
- } & HTMLAttributes<HTMLSpanElement>;
25
+ } & ComponentPropsWithRef<typeof FIELD_LABEL_DEFAULT_TAG>;
24
26
  export declare const cnFieldLabel: import("@bem-react/classname").ClassNameFormatter;
25
27
  export declare const FieldLabel: React.ForwardRefExoticComponent<Omit<FieldLabelProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;