skillgrid 0.0.21 → 0.0.22-dev-31782-avatar.1141064

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 (51) hide show
  1. package/dist/components/Avatar/Avatar.type.d.ts +5 -2
  2. package/dist/components/Avatar/lib/get-avatar-border-radius-by-size-and-shape.d.ts +5 -0
  3. package/dist/components/Button/Button.d.ts +2 -3
  4. package/dist/components/Checkbox/Checkbox.d.ts +18 -0
  5. package/dist/components/Checkbox/Checkbox.type.d.ts +90 -0
  6. package/dist/components/Checkbox/assets/CheckIcon.d.ts +16 -0
  7. package/dist/components/Checkbox/assets/LineIcon.d.ts +16 -0
  8. package/dist/components/Checkbox/index.d.ts +2 -0
  9. package/dist/components/Helper/Helper.d.ts +7 -0
  10. package/dist/components/Helper/Helper.type.d.ts +17 -0
  11. package/dist/components/Helper/index.d.ts +2 -0
  12. package/dist/components/InputBase/Input.d.ts +9 -0
  13. package/dist/components/InputBase/Input.type.d.ts +138 -0
  14. package/dist/components/InputBase/InputBase.d.ts +6 -0
  15. package/dist/components/InputBase/InputBase.type.d.ts +110 -0
  16. package/dist/components/InputBase/assets/GripIcon.d.ts +8 -0
  17. package/dist/components/InputBase/assets/SearchIcon.d.ts +17 -0
  18. package/dist/components/InputBase/assets/XIcon.d.ts +18 -0
  19. package/dist/components/InputBase/assets/index.d.ts +3 -0
  20. package/dist/components/InputBase/index.d.ts +3 -0
  21. package/dist/components/InputBase/lib/constants.d.ts +4 -0
  22. package/dist/components/InputBase/lib/index.d.ts +4 -0
  23. package/dist/components/InputBase/lib/useGripResize.d.ts +11 -0
  24. package/dist/components/InputBase/lib/useInputSync.d.ts +11 -0
  25. package/dist/components/InputBase/lib/useTextareaResize.d.ts +9 -0
  26. package/dist/components/List/List.d.ts +5 -0
  27. package/dist/components/List/List.type.d.ts +34 -0
  28. package/dist/components/List/ListItem/ListItem.d.ts +9 -0
  29. package/dist/components/List/index.d.ts +2 -0
  30. package/dist/components/TextArea/TextArea.d.ts +6 -0
  31. package/dist/components/TextArea/TextArea.type.d.ts +66 -0
  32. package/dist/components/TextArea/index.d.ts +2 -0
  33. package/dist/components/TextArea/lib/constants.d.ts +65 -0
  34. package/dist/components/TextArea/lib/getters.d.ts +38 -0
  35. package/dist/components/TextArea/lib/index.d.ts +2 -0
  36. package/dist/components/TextInput/TextInput.d.ts +6 -0
  37. package/dist/components/TextInput/TextInput.type.d.ts +72 -0
  38. package/dist/components/TextInput/index.d.ts +2 -0
  39. package/dist/components/TextInput/lib/constants.d.ts +9 -0
  40. package/dist/components/TextInput/lib/getters.d.ts +38 -0
  41. package/dist/components/TextInput/lib/index.d.ts +2 -0
  42. package/dist/components/Typography/Typography.constants.d.ts +2 -0
  43. package/dist/components/Typography/Typography.d.ts +21 -0
  44. package/dist/components/Typography/Typography.type.d.ts +68 -0
  45. package/dist/components/Typography/index.d.ts +1 -0
  46. package/dist/index.cjs.js +11 -11
  47. package/dist/index.css +1 -1
  48. package/dist/index.d.ts +2 -0
  49. package/dist/index.es.js +1208 -886
  50. package/dist/utils/other.d.ts +8 -0
  51. package/package.json +3 -2
@@ -1,4 +1,4 @@
1
- import { ComponentPropsWithoutRef, CSSProperties, FC, HTMLProps, MouseEvent } from 'react';
1
+ import { ComponentPropsWithoutRef, CSSProperties, FC, HTMLProps, MouseEvent, PropsWithChildren } from 'react';
2
2
  /** Типы режимов отображения аватара */
3
3
  export type AvatarModeType = 'image' | 'icon' | 'name' | 'placeholder';
4
4
  type CommonEventsType = 'onClick' | 'onFocus' | 'onBlur' | 'onPointerDown' | 'onPointerUp' | 'onPointerEnter' | 'onPointerLeave' | 'onPointerCancel' | 'onPointerOut' | 'onPointerOver';
@@ -67,12 +67,15 @@ export interface AvatarProps extends Pick<HTMLProps<HTMLSpanElement>, 'className
67
67
  */
68
68
  'data-testid'?: string;
69
69
  }
70
+ interface AvatarGroupItem extends Omit<AvatarProps, 'size' | 'shape'> {
71
+ wrapper?: FC<PropsWithChildren>;
72
+ }
70
73
  /**
71
74
  * Пропсы компонента AvatarGroup
72
75
  */
73
76
  export interface AvatarGroupProps {
74
77
  /** Массив аватаров для отображения */
75
- avatars: Omit<AvatarProps, 'size' | 'shape'>[];
78
+ avatars: AvatarGroupItem[];
76
79
  /** Размер аватаров в группе */
77
80
  size?: AvatarProps['size'];
78
81
  /** Форма аватаров */
@@ -1,3 +1,8 @@
1
1
  import { AvatarProps } from '../Avatar.type';
2
+ /**
3
+ * NOTE: This logic is duplicated from Avatar.module.css.
4
+ * If you change the border-radius there, change it here too.
5
+ * This is necessary for calculating the clipPath in AvatarGroup.
6
+ */
2
7
  declare function getAvatarBorderRadiusBySizeAndShape(size: number, shape: AvatarProps['shape']): number;
3
8
  export { getAvatarBorderRadiusBySizeAndShape };
@@ -1,4 +1,3 @@
1
- import { default as React } from 'react';
2
1
  import { ButtonProps } from './Button.type';
3
2
  /**
4
3
  * Button component for user interactions
@@ -9,6 +8,6 @@ import { ButtonProps } from './Button.type';
9
8
  * <Button mode="primary" size="medium" buttonStyle="accent">Click me</Button>
10
9
  * ```
11
10
  */
12
- export declare const Button: React.ForwardRefExoticComponent<(ButtonProps & {
11
+ export declare const Button: import('react').ForwardRefExoticComponent<(ButtonProps & {
13
12
  style?: React.CSSProperties;
14
- }) & React.RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
13
+ }) & import('react').RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
@@ -0,0 +1,18 @@
1
+ import { CheckboxProps } from './Checkbox.type';
2
+ /**
3
+ * Checkbox компонент для user interactions
4
+ *
5
+ * @component
6
+ * @example
7
+ * ```tsx
8
+ * <Checkbox
9
+ * name="agree"
10
+ * value={checked}
11
+ * onChange={setChecked}
12
+ * size="medium"
13
+ * >
14
+ * Я согласен с условиями
15
+ * </Checkbox>
16
+ * ```
17
+ */
18
+ export declare const Checkbox: import('react').ForwardRefExoticComponent<CheckboxProps & import('react').RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,90 @@
1
+ import { ChangeEvent, CSSProperties, ReactNode } from 'react';
2
+ export interface CheckboxIconProps {
3
+ /** Имя чекбокса для идентификации */
4
+ name: string;
5
+ /** Размер иконки чекбокса */
6
+ size: 'medium' | 'large';
7
+ /** Состояние - выбран ли чекбокс */
8
+ isChecked: boolean;
9
+ /** Состояние - заблокирован ли чекбокс */
10
+ isDisabled: boolean;
11
+ /** Состояние - неопределенное состояние чекбокса */
12
+ indeterminate: boolean;
13
+ }
14
+ export interface CheckboxProps {
15
+ /**
16
+ * Уникальное имя чекбокса, значение для id тэга input
17
+ */
18
+ name: string;
19
+ /**
20
+ * Текущее значение чекбокса
21
+ * - true - отмеченный чекбокс
22
+ * - false - не отмеченный чекбокс
23
+ * Если не передан, используется внутреннее состояние
24
+ */
25
+ value?: boolean;
26
+ /**
27
+ * Размер чекбокса
28
+ * @default 'medium'
29
+ */
30
+ size?: 'medium' | 'large';
31
+ /**
32
+ * Неопределенный вариант (показывает line-icon вместо check-icon)
33
+ * @default false
34
+ */
35
+ indeterminate?: boolean;
36
+ /**
37
+ * Загрузка (чекбокс становится неактивным)
38
+ * @default false
39
+ */
40
+ loading?: boolean;
41
+ /**
42
+ * Сообщение об ошибке
43
+ */
44
+ error?: string;
45
+ /**
46
+ * Дизейбл чекбокса
47
+ * @default false
48
+ */
49
+ disabled?: boolean;
50
+ /**
51
+ * Дополнительные CSS классы для контейнера
52
+ */
53
+ containerClassName?: string;
54
+ /**
55
+ * Дополнительные CSS классы для чекбокса
56
+ */
57
+ className?: string;
58
+ /**
59
+ * Дополнительные CSS стили для контейнера
60
+ */
61
+ containerStyle?: CSSProperties;
62
+ /**
63
+ * Дополнительные CSS стили для чекбокса
64
+ */
65
+ style?: CSSProperties;
66
+ /**
67
+ * Вложенный компонент справа от чекбокса (label)
68
+ */
69
+ children?: ReactNode;
70
+ /**
71
+ * Делать ли весь элемент (включая label) кликабельным
72
+ * @default true
73
+ */
74
+ clickableLabel?: boolean;
75
+ /**
76
+ * Tab index для навигации
77
+ */
78
+ tabIndex?: number;
79
+ /**
80
+ * Обработчик изменения состояния чекбокса
81
+ * @param checked - boolean, текущее состояние чекбокса
82
+ * @param e - ChangeEvent<HTMLInputElement>, ивент нажатия на инпут
83
+ * Если не передан, используется внутреннее состояние
84
+ */
85
+ onChange?: (checked: boolean, e?: ChangeEvent<HTMLInputElement>) => void;
86
+ /**
87
+ * Идентификатор для тестирования
88
+ */
89
+ 'data-testid'?: string;
90
+ }
@@ -0,0 +1,16 @@
1
+ export interface IconProps {
2
+ /** Ширина иконки */
3
+ width?: number;
4
+ /** Высота иконки */
5
+ height?: number;
6
+ /** Дополнительные CSS классы */
7
+ className?: string;
8
+ /** Цвет иконки */
9
+ color?: string;
10
+ /** Дополнительные пропсы */
11
+ [key: string]: unknown;
12
+ }
13
+ /**
14
+ * Компонент иконки CheckIcon для чекбокса
15
+ */
16
+ export declare const CheckIcon: React.FC<IconProps>;
@@ -0,0 +1,16 @@
1
+ export interface IconProps {
2
+ /** Ширина иконки */
3
+ width?: number;
4
+ /** Высота иконки */
5
+ height?: number;
6
+ /** Дополнительные CSS классы */
7
+ className?: string;
8
+ /** Цвет иконки */
9
+ color?: string;
10
+ /** Дополнительные пропсы */
11
+ [key: string]: unknown;
12
+ }
13
+ /**
14
+ * Компонент иконки LineIcon для indeterminate состояния чекбокса
15
+ */
16
+ export declare const LineIcon: React.FC<IconProps>;
@@ -0,0 +1,2 @@
1
+ export { Checkbox } from './Checkbox';
2
+ export type { CheckboxProps } from './Checkbox.type';
@@ -0,0 +1,7 @@
1
+ import { HelperProps } from './Helper.type';
2
+ /**
3
+ * Компонент Helper для отображения вспомогательного текста
4
+ * Может использоваться как самостоятельно, так и в составе других компонентов или групп компонентов
5
+ * При наличии ошибки отображается текст error, иначе отображается title
6
+ */
7
+ export declare const Helper: React.FC<HelperProps>;
@@ -0,0 +1,17 @@
1
+ export interface HelperProps {
2
+ /** Заголовок/описание (обязательный) */
3
+ title: string;
4
+ /** Сообщение об ошибке (опциональный) */
5
+ error?: string;
6
+ /** Дополнительные CSS классы */
7
+ className?: string;
8
+ /** Дополнительные стили */
9
+ style?: React.CSSProperties;
10
+ /** Заблокированное состояние */
11
+ disabled?: boolean;
12
+ /** ID для тестирования */
13
+ 'data-testid'?: string;
14
+ /** ARIA-атрибуты */
15
+ 'aria-label'?: string;
16
+ 'aria-describedby'?: string;
17
+ }
@@ -0,0 +1,2 @@
1
+ export { Helper } from './Helper';
2
+ export type { HelperProps } from './Helper.type';
@@ -0,0 +1,9 @@
1
+ import { InputProps, InputWrapperProps } from './Input.type';
2
+ /**
3
+ * Compound компонент Input
4
+ * ! ВНИМАНИЕ: Это внутренний компонент, используемый только в InputBase.
5
+ * Не предназначен для прямого использования в приложениях.
6
+ */
7
+ export declare const Input: import('react').ForwardRefExoticComponent<Omit<InputProps, "ref"> & import('react').RefAttributes<HTMLInputElement | HTMLTextAreaElement>> & {
8
+ Wrapper: import('react').ForwardRefExoticComponent<InputWrapperProps & import('react').RefAttributes<HTMLDivElement>>;
9
+ };
@@ -0,0 +1,138 @@
1
+ import { HTMLAttributes } from 'react';
2
+ /**
3
+ * Тип компонента для Input
4
+ */
5
+ export type InputComponent = 'input' | 'textarea';
6
+ /**
7
+ * Размер компонента Input
8
+ */
9
+ export type InputSize = 'small' | 'medium' | 'large';
10
+ /**
11
+ * Размер компонента InputWrapper
12
+ */
13
+ export type InputWrapperSize = 'small' | 'medium' | 'large';
14
+ /**
15
+ * Пропсы для компонента Input
16
+ */
17
+ export interface InputProps {
18
+ /** Тип компонента (input или textarea) */
19
+ component?: InputComponent;
20
+ /** Размер компонента */
21
+ size?: InputSize;
22
+ /** Значение поля */
23
+ value?: string;
24
+ /** Плейсхолдер */
25
+ placeholder?: string;
26
+ /** Отключенное состояние */
27
+ disabled?: boolean;
28
+ /** Состояние загрузки */
29
+ loading?: boolean;
30
+ /** Обработчик фокуса */
31
+ onFocus?: (e: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
32
+ /** Обработчик потери фокуса */
33
+ onBlur?: (e: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
34
+ /** Обработчик изменения */
35
+ onChange?: (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
36
+ /** Обработчик нажатия клавиши */
37
+ onKeyUp?: (e: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
38
+ /** Максимальная длина */
39
+ maxLength?: number;
40
+ /** CSS классы */
41
+ className?: string;
42
+ /** Инлайн стили */
43
+ style?: React.CSSProperties;
44
+ /** Включить обрезку текста */
45
+ truncate?: boolean;
46
+ /** Показывать ли плавающий лейбл */
47
+ shouldShowFloatingLabelClass?: boolean;
48
+ /** Состояние ошибки для accessibility */
49
+ 'aria-invalid'?: boolean;
50
+ /** ID элемента с сообщением об ошибке для accessibility */
51
+ 'aria-errormessage'?: string;
52
+ /** ID элемента */
53
+ id?: string;
54
+ /** Тип изменения размера для textarea */
55
+ resize?: 'fill' | 'hug' | 'fixed';
56
+ /** Показывать ли grip для изменения размера */
57
+ showGrip?: boolean;
58
+ /** Дополнительные пропсы для input */
59
+ [key: string]: unknown;
60
+ }
61
+ /**
62
+ * Пропсы для компонента InputWrapper
63
+ */
64
+ export interface InputWrapperProps extends Omit<HTMLAttributes<HTMLDivElement>, 'prefix'> {
65
+ /** Дочерние элементы (Input компонент) */
66
+ children?: React.ReactNode;
67
+ /** Размер компонента */
68
+ size?: InputWrapperSize;
69
+ /** Состояние ошибки */
70
+ error?: boolean;
71
+ /** Отключенное состояние */
72
+ disabled?: boolean;
73
+ /** Состояние загрузки */
74
+ loading?: boolean;
75
+ /** CSS классы */
76
+ className?: string;
77
+ /** Пропсы для обертки */
78
+ wrapperProps?: HTMLAttributes<HTMLDivElement>;
79
+ /** Стили для обертки */
80
+ wrapperStyles?: React.CSSProperties;
81
+ /** Стили для плавающей метки */
82
+ floatingLabelStyles?: React.CSSProperties;
83
+ /** Стили для префикса */
84
+ prefixStyles?: React.CSSProperties;
85
+ /** Стили для суффикса */
86
+ suffixStyles?: React.CSSProperties;
87
+ /** Пропсы для метки */
88
+ labelProps?: HTMLAttributes<HTMLLabelElement>;
89
+ /** Пропсы для вспомогательного текста */
90
+ helperProps?: HTMLAttributes<HTMLDivElement>;
91
+ /** Показывать ли счетчик символов */
92
+ showLimit?: boolean;
93
+ /** Максимальная длина */
94
+ maxLength?: number;
95
+ /** Подсказка внутри поля ввода */
96
+ hint?: string;
97
+ /** Показывать ли подсказку */
98
+ showHint?: boolean;
99
+ /** Показывать подсказку когда значение пустое */
100
+ showHintOnEmpty?: boolean;
101
+ /** Префикс (иконка слева) */
102
+ prefix?: React.ReactNode;
103
+ /** Суффикс (иконка справа) */
104
+ suffix?: React.ReactNode;
105
+ /** Плейсхолдер для поля */
106
+ placeholder?: string;
107
+ /** Показывать ли метку */
108
+ showLabel?: boolean;
109
+ /** CSS классы для плавающей метки */
110
+ labelClassName?: string;
111
+ /** Есть ли значение в поле */
112
+ hasValue?: boolean;
113
+ /** Вспомогательный текст под полем */
114
+ helper?: string;
115
+ /** ID компонента */
116
+ id?: string;
117
+ /** Значение поля (для подсчета символов) */
118
+ value?: string;
119
+ /** Состояние ошибки для accessibility */
120
+ 'aria-invalid'?: boolean;
121
+ /** ID элемента с сообщением об ошибке для accessibility */
122
+ 'aria-errormessage'?: string;
123
+ /** Тип изменения размера для textarea */
124
+ resize?: 'fill' | 'hug' | 'fixed';
125
+ /** Показывать ли grip для изменения размера */
126
+ showGrip?: boolean;
127
+ }
128
+ /**
129
+ * Типы для Input compound компонента
130
+ */
131
+ export type InputComponentType = InputComponent;
132
+ export type InputSizeType = InputSize;
133
+ export type InputPropsType = InputProps;
134
+ /**
135
+ * Типы для Input.Wrapper
136
+ */
137
+ export type InputWrapperSizeType = InputWrapperSize;
138
+ export type InputWrapperPropsType = InputWrapperProps;
@@ -0,0 +1,6 @@
1
+ import { InputBaseProps } from './InputBase.type';
2
+ /**
3
+ * Универсальная обертка для полей ввода
4
+ * Предоставляет общую логику: метки, описания, ошибки, секции, состояния
5
+ */
6
+ export declare const InputBase: import('react').ForwardRefExoticComponent<InputBaseProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,110 @@
1
+ import { ReactNode, InputHTMLAttributes, TextareaHTMLAttributes, HTMLAttributes } from 'react';
2
+ /**
3
+ * Размеры для компонента InputBase
4
+ */
5
+ export type InputBaseSize = 'small' | 'medium' | 'large';
6
+ /**
7
+ * Типы компонентов для InputBase
8
+ */
9
+ export type InputBaseComponent = 'input' | 'textarea';
10
+ /**
11
+ * Базовые пропсы для компонента InputBase
12
+ */
13
+ export interface InputBaseProps {
14
+ /** Тип компонента (input или textarea) */
15
+ component?: InputBaseComponent;
16
+ /** Размер компонента */
17
+ size?: InputBaseSize;
18
+ /** Содержимое компонента (устаревший способ) */
19
+ children?: ReactNode;
20
+ /** Дополнительные CSS классы */
21
+ className?: string;
22
+ /** Состояние ошибки */
23
+ error?: boolean;
24
+ /** Плейсхолдер для поля */
25
+ placeholder?: string;
26
+ /** Отключенное состояние */
27
+ disabled?: boolean;
28
+ /** Состояние загрузки */
29
+ loading?: boolean;
30
+ /** Показывать ли метку (по умолчанию: true) */
31
+ showLabel?: boolean;
32
+ /** CSS классы для плавающей метки */
33
+ labelClassName?: string;
34
+ /** Вспомогательный текст под полем */
35
+ helper?: string;
36
+ /** Префикс (иконка слева) */
37
+ prefix?: ReactNode;
38
+ /** Суффикс (иконка справа) */
39
+ suffix?: ReactNode;
40
+ /** ID компонента */
41
+ id?: string;
42
+ /** Обработчик фокуса */
43
+ onFocus?: () => void;
44
+ /** Обработчик потери фокуса */
45
+ onBlur?: () => void;
46
+ /** Обработчик изменения значения */
47
+ onChange?: (value: string) => void;
48
+ /** Текущее значение */
49
+ value?: string;
50
+ /** Стили для обертки */
51
+ wrapperProps?: HTMLAttributes<HTMLDivElement>;
52
+ /** Стили для метки */
53
+ labelProps?: HTMLAttributes<HTMLLabelElement>;
54
+ /** Стили для вспомогательного текста */
55
+ helperProps?: HTMLAttributes<HTMLDivElement>;
56
+ /** Дополнительные стили для обертки (высота, отступы) */
57
+ wrapperStyles?: React.CSSProperties;
58
+ /** Дополнительные стили для плавающей метки */
59
+ floatingLabelStyles?: React.CSSProperties;
60
+ /** Дополнительные стили для префикса */
61
+ prefixStyles?: React.CSSProperties;
62
+ /** Дополнительные стили для суффикса */
63
+ suffixStyles?: React.CSSProperties;
64
+ /** Стили для textarea элемента */
65
+ textareaStyles?: React.CSSProperties;
66
+ /** Показывать ли счетчик символов */
67
+ showLimit?: boolean;
68
+ /** Максимальная длина */
69
+ maxLength?: number;
70
+ /** Пропсы для встроенного input/textarea */
71
+ inputProps?: InputHTMLAttributes<HTMLInputElement> | TextareaHTMLAttributes<HTMLTextAreaElement>;
72
+ /** Подсказка внутри поля ввода */
73
+ hint?: string;
74
+ /** Показывать ли подсказку */
75
+ showHint?: boolean;
76
+ /** Показывать подсказку когда значение пустое */
77
+ showHintOnEmpty?: boolean;
78
+ /** Включить обрезку текста с многоточием */
79
+ truncate?: boolean;
80
+ /** Состояние ошибки для accessibility */
81
+ 'aria-invalid'?: boolean;
82
+ /** ID элемента с сообщением об ошибке для accessibility */
83
+ 'aria-errormessage'?: string;
84
+ /** Тип изменения размера для textarea */
85
+ resize?: 'fill' | 'hug' | 'fixed';
86
+ /** Показывать ли grip для изменения размера */
87
+ showGrip?: boolean;
88
+ }
89
+ /**
90
+ * Пропсы для встроенного input элемента
91
+ */
92
+ export interface InputBaseInputProps extends InputHTMLAttributes<HTMLInputElement> {
93
+ /** Состояние ошибки */
94
+ error?: boolean;
95
+ /** Отключенное состояние */
96
+ disabled?: boolean;
97
+ /** Состояние загрузки */
98
+ loading?: boolean;
99
+ }
100
+ /**
101
+ * Пропсы для встроенного textarea элемента
102
+ */
103
+ export interface InputBaseTextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
104
+ /** Состояние ошибки */
105
+ error?: boolean;
106
+ /** Отключенное состояние */
107
+ disabled?: boolean;
108
+ /** Состояние загрузки */
109
+ loading?: boolean;
110
+ }
@@ -0,0 +1,8 @@
1
+ interface GripIconProps {
2
+ width?: number;
3
+ height?: number;
4
+ className?: string;
5
+ color?: string;
6
+ }
7
+ export declare const GripIcon: React.FC<GripIconProps>;
8
+ export {};
@@ -0,0 +1,17 @@
1
+ export interface SearchIconProps {
2
+ /** Дополнительные CSS классы */
3
+ className?: string;
4
+ /** Инлайн стили */
5
+ style?: React.CSSProperties;
6
+ /** Размер иконки */
7
+ size?: 'xxxs' | 'xxs' | 'xs' | 'sm' | 'md' | 'lg';
8
+ /** Цвет иконки */
9
+ color?: string;
10
+ /** Дополнительные пропсы */
11
+ [key: string]: unknown;
12
+ }
13
+ /**
14
+ * Компонент иконки поиска
15
+ * Принимает className и style для кастомизации
16
+ */
17
+ export declare const SearchIcon: React.FC<SearchIconProps>;
@@ -0,0 +1,18 @@
1
+ export interface XIconProps {
2
+ /** Дополнительные CSS классы */
3
+ className?: string;
4
+ /** Инлайн стили */
5
+ style?: React.CSSProperties;
6
+ /** Размер иконки */
7
+ size?: 'xxxs' | 'xxs' | 'xs' | 'sm' | 'md' | 'lg';
8
+ /** Цвет иконки */
9
+ color?: string;
10
+ /** Обработчик клика */
11
+ onClick?: () => void;
12
+ /** Дополнительные пропсы */
13
+ [key: string]: unknown;
14
+ }
15
+ /**
16
+ * Компонент иконки X
17
+ */
18
+ export declare const XIcon: React.FC<XIconProps>;
@@ -0,0 +1,3 @@
1
+ export { GripIcon } from './GripIcon';
2
+ export { SearchIcon } from './SearchIcon';
3
+ export { XIcon } from './XIcon';
@@ -0,0 +1,3 @@
1
+ export { InputBase } from './InputBase';
2
+ export type { InputBaseProps, InputBaseComponent, InputBaseSize } from './InputBase.type';
3
+ export { SearchIcon, XIcon, GripIcon } from './assets';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Максимальная длина hint текста
3
+ */
4
+ export declare const MAX_HINT_LENGTH = 30;
@@ -0,0 +1,4 @@
1
+ export { useInputSync } from './useInputSync';
2
+ export { useTextareaResize } from './useTextareaResize';
3
+ export { useGripResize } from './useGripResize';
4
+ export { MAX_HINT_LENGTH } from './constants';
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Хук для обработки resize через grip
3
+ * @param showGrip - показывать ли grip
4
+ * @param disabled - отключен ли компонент
5
+ * @param loading - состояние загрузки
6
+ * @param resize - режим изменения размера
7
+ * @returns обработчик mousedown для grip
8
+ */
9
+ export declare const useGripResize: (showGrip: boolean | undefined, disabled: boolean | undefined, loading: boolean | undefined, resize: string | undefined) => {
10
+ handleGripMouseDown: (e: React.MouseEvent) => void;
11
+ };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Хук для синхронизации состояния HTML элемента с внешним состоянием
3
+ * @param value - внешнее значение
4
+ * @param component - тип компонента ('input' | 'textarea')
5
+ * @returns refs для input и textarea элементов
6
+ */
7
+ export declare const useInputSync: (value: string, component: "input" | "textarea") => {
8
+ textareaRef: import('react').RefObject<HTMLTextAreaElement>;
9
+ inputRef: import('react').RefObject<HTMLInputElement>;
10
+ currentRef: import('react').RefObject<HTMLInputElement> | import('react').RefObject<HTMLTextAreaElement>;
11
+ };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Хук для автоматического изменения размера textarea
3
+ * @param value - значение textarea
4
+ * @param resize - режим изменения размера
5
+ * @param textareaRef - ref для textarea элемента
6
+ */
7
+ export declare const useTextareaResize: (value: string, resize: string | undefined, textareaRef: React.RefObject<HTMLTextAreaElement>) => {
8
+ resizeTextArea: () => void;
9
+ };
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ import { ListProps } from './List.type';
3
+ export declare const List: React.ForwardRefExoticComponent<ListProps & React.RefAttributes<HTMLOListElement | HTMLUListElement>> & {
4
+ Item: React.FC<import('./ListItem/ListItem').ListItemProps>;
5
+ };
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Базовые пропсы для списка (используются и для `<ul>`, и для `<ol>`).
3
+ */
4
+ interface BaseListProps {
5
+ /** Дополнительный CSS-класс для списка */
6
+ className?: string;
7
+ /** Дочерние элементы списка (`<List.Item>` или `<li>`) */
8
+ children: React.ReactNode;
9
+ /** Размер списка, влияет на отступы и размер шрифта */
10
+ size?: 'sm' | 'md' | 'lg' | 'xl';
11
+ /** Атрибут для тестирования */
12
+ 'data-testid'?: string;
13
+ }
14
+ /**
15
+ * Пропсы для маркированного списка (`<ul>`).
16
+ * Атрибут `start` запрещён.
17
+ */
18
+ interface UnorderedListProps extends BaseListProps {
19
+ /** Тип списка — маркированный (по умолчанию) */
20
+ variant?: 'unordered';
21
+ /** Невозможен для `<ul>` */
22
+ start?: never;
23
+ }
24
+ /**
25
+ * Пропсы для нумерованного списка (`<ol>`).
26
+ */
27
+ interface OrderedListProps extends BaseListProps {
28
+ /** Тип списка — нумерованный */
29
+ variant: 'ordered';
30
+ /** Начальный номер для `<ol>` */
31
+ start?: number;
32
+ }
33
+ export type ListProps = UnorderedListProps | OrderedListProps;
34
+ export {};
@@ -0,0 +1,9 @@
1
+ export interface ListItemProps {
2
+ /** Дополнительный CSS-класс для списка */
3
+ className?: string;
4
+ /** Дочерние элементы */
5
+ children: React.ReactNode;
6
+ /** Атрибут для тестирования */
7
+ 'data-testid'?: string;
8
+ }
9
+ export declare const ListItem: React.FC<ListItemProps>;