@chrome-consulting/krit-ui 0.0.49

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 (102) hide show
  1. package/README.md +69 -0
  2. package/dist/assets/index.d.ts +201 -0
  3. package/dist/components/ui/attachmentsSection.d.ts +54 -0
  4. package/dist/components/ui/badge.d.ts +32 -0
  5. package/dist/components/ui/badgeVariants.d.ts +6 -0
  6. package/dist/components/ui/banner.d.ts +60 -0
  7. package/dist/components/ui/bottom-menu.d.ts +41 -0
  8. package/dist/components/ui/button.d.ts +27 -0
  9. package/dist/components/ui/buttonVariants.d.ts +4 -0
  10. package/dist/components/ui/calendar.d.ts +18 -0
  11. package/dist/components/ui/card.d.ts +87 -0
  12. package/dist/components/ui/carousel.d.ts +52 -0
  13. package/dist/components/ui/checkbox.d.ts +30 -0
  14. package/dist/components/ui/collapsible-section.d.ts +37 -0
  15. package/dist/components/ui/collapsible.d.ts +18 -0
  16. package/dist/components/ui/command.d.ts +102 -0
  17. package/dist/components/ui/confirm-modal.d.ts +33 -0
  18. package/dist/components/ui/data-table.d.ts +94 -0
  19. package/dist/components/ui/date-picker.d.ts +69 -0
  20. package/dist/components/ui/dialog.d.ts +66 -0
  21. package/dist/components/ui/dot.d.ts +10 -0
  22. package/dist/components/ui/dropdown-menu.d.ts +67 -0
  23. package/dist/components/ui/file-input.d.ts +36 -0
  24. package/dist/components/ui/filters-column-header.d.ts +28 -0
  25. package/dist/components/ui/form.d.ts +86 -0
  26. package/dist/components/ui/form.lib.d.ts +23 -0
  27. package/dist/components/ui/header.d.ts +39 -0
  28. package/dist/components/ui/input.d.ts +30 -0
  29. package/dist/components/ui/label.d.ts +23 -0
  30. package/dist/components/ui/multi-select.d.ts +100 -0
  31. package/dist/components/ui/nav-panel.d.ts +52 -0
  32. package/dist/components/ui/nav.d.ts +52 -0
  33. package/dist/components/ui/network-error-message.d.ts +46 -0
  34. package/dist/components/ui/notification.d.ts +34 -0
  35. package/dist/components/ui/notificationVariants.d.ts +4 -0
  36. package/dist/components/ui/number-input.d.ts +149 -0
  37. package/dist/components/ui/page-layout.d.ts +28 -0
  38. package/dist/components/ui/page-view-mode-toggle.d.ts +22 -0
  39. package/dist/components/ui/pagination.d.ts +121 -0
  40. package/dist/components/ui/popover.d.ts +36 -0
  41. package/dist/components/ui/post-card.d.ts +273 -0
  42. package/dist/components/ui/preloader.d.ts +23 -0
  43. package/dist/components/ui/previewFull.d.ts +40 -0
  44. package/dist/components/ui/previews.d.ts +69 -0
  45. package/dist/components/ui/previewsCompactList.d.ts +18 -0
  46. package/dist/components/ui/previewsShared.d.ts +8 -0
  47. package/dist/components/ui/profile.d.ts +41 -0
  48. package/dist/components/ui/radio-group.d.ts +48 -0
  49. package/dist/components/ui/resizable.d.ts +65 -0
  50. package/dist/components/ui/scroll-area.d.ts +5 -0
  51. package/dist/components/ui/secondary-panel-section.d.ts +20 -0
  52. package/dist/components/ui/segmented-control.d.ts +35 -0
  53. package/dist/components/ui/select-header-filter.d.ts +23 -0
  54. package/dist/components/ui/select.d.ts +91 -0
  55. package/dist/components/ui/separator.d.ts +34 -0
  56. package/dist/components/ui/sheet.d.ts +118 -0
  57. package/dist/components/ui/skeleton.d.ts +24 -0
  58. package/dist/components/ui/sort-component.d.ts +46 -0
  59. package/dist/components/ui/sortable-header.d.ts +12 -0
  60. package/dist/components/ui/switch.d.ts +25 -0
  61. package/dist/components/ui/table.d.ts +104 -0
  62. package/dist/components/ui/tabs.d.ts +52 -0
  63. package/dist/components/ui/tabsVariants.d.ts +6 -0
  64. package/dist/components/ui/text-area.d.ts +37 -0
  65. package/dist/components/ui/theme-provider.d.ts +136 -0
  66. package/dist/components/ui/time-picker.d.ts +29 -0
  67. package/dist/components/ui/time-picker.lib.d.ts +6 -0
  68. package/dist/components/ui/toast.d.ts +80 -0
  69. package/dist/components/ui/toaster.d.ts +22 -0
  70. package/dist/components/ui/tooltip.d.ts +65 -0
  71. package/dist/components/ui/tree-view.d.ts +96 -0
  72. package/dist/components/ui/widget-plan-fact.d.ts +86 -0
  73. package/dist/date.d.ts +8 -0
  74. package/dist/hooks/useColumnFilters.d.ts +6 -0
  75. package/dist/hooks/useColumnSizing.d.ts +20 -0
  76. package/dist/hooks/useCombinedRefs.d.ts +1 -0
  77. package/dist/hooks/useConfirm.d.ts +49 -0
  78. package/dist/hooks/useNotify.d.ts +28 -0
  79. package/dist/hooks/usePreviewsFilePicker.d.ts +40 -0
  80. package/dist/hooks/useSidebar.d.ts +10 -0
  81. package/dist/hooks/useStoredExpand.d.ts +18 -0
  82. package/dist/hooks/useStoredFields.d.ts +4 -0
  83. package/dist/hooks/useStoredTabs.d.ts +4 -0
  84. package/dist/hooks/useTableStates.d.ts +26 -0
  85. package/dist/hooks/useTheme.d.ts +1 -0
  86. package/dist/hooks/useToast.d.ts +44 -0
  87. package/dist/hooks/useTranslation.d.ts +4 -0
  88. package/dist/krit-ui.d.ts +2 -0
  89. package/dist/krit-ui.js +27485 -0
  90. package/dist/krit-ui.umd.cjs +140 -0
  91. package/dist/lib/attachments.d.ts +245 -0
  92. package/dist/lib/cookies.d.ts +1 -0
  93. package/dist/lib/file.d.ts +52 -0
  94. package/dist/lib/infinite-scroll.d.ts +13 -0
  95. package/dist/lib/selectUtils.d.ts +14 -0
  96. package/dist/lib/text.d.ts +1 -0
  97. package/dist/lib/zod.d.ts +27 -0
  98. package/dist/main.d.ts +85 -0
  99. package/dist/style.css +1 -0
  100. package/dist/utils.d.ts +2 -0
  101. package/package.json +122 -0
  102. package/tailwind.config.cjs +273 -0
@@ -0,0 +1,28 @@
1
+ import { Column, Table } from '@tanstack/react-table';
2
+ import { Locale } from 'date-fns/locale';
3
+ import { Options } from './select-header-filter';
4
+ type FilterType = 'search' | 'date-range' | 'select' | 'reset' | 'sort';
5
+ export interface BaseFilterProps {
6
+ type: FilterType;
7
+ column?: Column<any, unknown>;
8
+ table?: Table<any>;
9
+ applyText?: string;
10
+ locale?: Locale;
11
+ options?: Options<any>;
12
+ excludeFilterValues?: unknown[];
13
+ /** Включить сортировку по клику на заголовок */
14
+ sortable?: boolean;
15
+ /** Текущее направление сортировки (если не передано — берётся из column.getIsSorted()) */
16
+ sorted?: ColumnSortDirection;
17
+ /** Включить сброс сортировки третьим кликом */
18
+ allowSortingReset?: boolean;
19
+ /** Контент заголовка (подпись колонки) */
20
+ children?: React.ReactNode;
21
+ }
22
+ /** Состояние сортировки колонки (TanStack Table getIsSorted()) */
23
+ export type ColumnSortDirection = false | 'asc' | 'desc';
24
+ interface FiltersColumnHeaderProps extends BaseFilterProps {
25
+ className?: string;
26
+ }
27
+ export declare const FiltersColumnHeader: ({ children, type, column, table, applyText, locale, options, excludeFilterValues, className, sortable, sorted, allowSortingReset, }: FiltersColumnHeaderProps) => import("react/jsx-runtime").JSX.Element;
28
+ export {};
@@ -0,0 +1,86 @@
1
+ import { ControllerProps, FieldPath, FieldValues } from 'react-hook-form';
2
+ import { DatePickerProps } from './date-picker';
3
+ import { InputProps } from './input';
4
+ import { MultiSelectProps } from './multi-select';
5
+ import { SelectProps } from './select';
6
+ import * as React from 'react';
7
+ import * as LabelPrimitive from '@radix-ui/react-label';
8
+ /**
9
+ * Провайдер формы, оборачивающий react-hook-form FormProvider
10
+ * @component
11
+ * @see https://react-hook-form.com/api/useform/formprovider
12
+ */
13
+ declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: import('react-hook-form').FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React.JSX.Element;
14
+ /**
15
+ * Компонент поля формы, оборачивающий Controller из react-hook-form
16
+ * @component
17
+ * @template TFieldValues - Тип значений формы
18
+ * @template TName - Имя поля в форме
19
+ * @param {ControllerProps<TFieldValues, TName>} props - Свойства Controller
20
+ * @returns {JSX.Element}
21
+ */
22
+ declare const FormField: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ ...props }: ControllerProps<TFieldValues, TName>) => import("react/jsx-runtime").JSX.Element;
23
+ interface FormItemProps extends React.HTMLAttributes<HTMLDivElement> {
24
+ /** Расположение элементов по горизонтали */
25
+ horizontal?: boolean;
26
+ }
27
+ /**
28
+ * Контейнер для элементов формы
29
+ * @component
30
+ * @param {FormItemProps} props - Свойства компонента
31
+ * @returns {JSX.Element}
32
+ */
33
+ declare const FormItem: React.ForwardRefExoticComponent<FormItemProps & React.RefAttributes<HTMLDivElement>>;
34
+ /**
35
+ * Метка для поля формы
36
+ * @component
37
+ * @param {React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & { required?: boolean }} props - Свойства компонента
38
+ * @returns {JSX.Element}
39
+ */
40
+ declare const FormLabel: React.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React.RefAttributes<HTMLLabelElement>, "ref"> & {
41
+ required?: boolean;
42
+ } & React.RefAttributes<HTMLLabelElement>>;
43
+ /**
44
+ * Контроллер для управления состоянием поля формы
45
+ * @component
46
+ * @param {React.ComponentPropsWithoutRef<typeof Slot>} props - Свойства компонента
47
+ * @returns {JSX.Element}
48
+ */
49
+ declare const FormControl: React.ForwardRefExoticComponent<Omit<import('@radix-ui/react-slot').SlotProps & React.RefAttributes<HTMLElement>, "ref"> & React.RefAttributes<HTMLElement>>;
50
+ /**
51
+ * Компонент для отображения описания поля формы
52
+ * @component
53
+ * @param {React.HTMLAttributes<HTMLParagraphElement>} props - Свойства компонента
54
+ * @returns {JSX.Element}
55
+ */
56
+ declare const FormDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
57
+ /**
58
+ * Компонент для отображения сообщений об ошибках формы
59
+ * @component
60
+ * @param {React.HTMLAttributes<HTMLParagraphElement>} props - Свойства компонента
61
+ * @returns {JSX.Element | null}
62
+ */
63
+ declare const FormMessage: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
64
+ declare const FormItemInput: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
65
+ /**
66
+ * Композитный компонент: поле ввода в контейнере формы
67
+ * @component
68
+ * @param {InputProps} props - Свойства компонента Input
69
+ * @returns {JSX.Element}
70
+ */
71
+ declare const FormItemSelect: React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLButtonElement>>;
72
+ /**
73
+ * Композитный компонент: выпадающий список в контейнере формы
74
+ * @component
75
+ * @param {SelectProps} props - Свойства компонента Select
76
+ * @returns {JSX.Element}
77
+ */
78
+ declare const FormItemMultiSelect: React.ForwardRefExoticComponent<MultiSelectProps & React.RefAttributes<HTMLDivElement>>;
79
+ /**
80
+ * Композитный компонент: выбор даты в контейнере формы
81
+ * @component
82
+ * @param {DatePickerProps} props - Свойства компонента DatePicker
83
+ * @returns {JSX.Element}
84
+ */
85
+ declare const FormItemDatePicker: React.ForwardRefExoticComponent<DatePickerProps & React.RefAttributes<HTMLDivElement>>;
86
+ export { Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField, FormItemInput, FormItemSelect, FormItemMultiSelect, FormItemDatePicker, };
@@ -0,0 +1,23 @@
1
+ import { FieldPath, FieldValues } from 'react-hook-form';
2
+ import * as React from 'react';
3
+ type FormFieldContextValue<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = {
4
+ name: TName;
5
+ };
6
+ declare const FormFieldContext: React.Context<FormFieldContextValue<FieldValues, string>>;
7
+ type FormItemContextValue = {
8
+ id: string;
9
+ };
10
+ declare const FormItemContext: React.Context<FormItemContextValue>;
11
+ declare const useFormField: () => {
12
+ invalid: boolean;
13
+ isDirty: boolean;
14
+ isTouched: boolean;
15
+ isValidating: boolean;
16
+ error?: import('react-hook-form').FieldError;
17
+ id: string;
18
+ name: string;
19
+ formItemId: string;
20
+ formDescriptionId: string;
21
+ formMessageId: string;
22
+ };
23
+ export { useFormField, FormFieldContext, FormItemContext };
@@ -0,0 +1,39 @@
1
+ import { ReactNode } from 'react';
2
+ interface PageHeaderProps {
3
+ /** Дополнительные CSS-классы для корневого элемента */
4
+ className?: string;
5
+ /** Заголовок страницы (может быть строкой или React-элементом) */
6
+ title?: ReactNode;
7
+ /** Действия, связанные с заголовком (отображаются рядом с заголовком) */
8
+ titleActions?: ReactNode;
9
+ /** Дополнительная мета-информация слева от заголовка */
10
+ leftMeta?: string | number;
11
+ /** Дополнительная мета-информация рядом с заголовком */
12
+ meta?: string | number;
13
+ /** Действия в правой части заголовка */
14
+ actions?: ReactNode;
15
+ /** Callback-функция для кнопки "Назад" */
16
+ onBack?: () => void;
17
+ /** Callback-функция для кнопки "Вперед" */
18
+ onNext?: () => void;
19
+ /** Callback-функция для кнопки "Назад" в контексте навигации */
20
+ onPrevious?: () => void;
21
+ }
22
+ /**
23
+ * Компонент заголовка страницы с навигацией и дополнительными действиями.
24
+ * Поддерживает кнопки навигации (назад, вперед), мета-информацию и действия.
25
+ *
26
+ * @component
27
+ * @param {PageHeaderProps} props - Пропсы компонента
28
+ * @returns {JSX.Element}
29
+ *
30
+ * @example
31
+ * <PageHeader
32
+ * title="Заголовок страницы"
33
+ * meta="Мета-информация"
34
+ * onBack={() => console.log('Назад')}
35
+ * actions={<Button>Действие</Button>}
36
+ * />
37
+ */
38
+ export declare const PageHeader: ({ className, title, titleActions, leftMeta, meta, actions, onBack, onNext, onPrevious, }: PageHeaderProps) => import("react/jsx-runtime").JSX.Element;
39
+ export {};
@@ -0,0 +1,30 @@
1
+ import * as React from 'react';
2
+ export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
3
+ /** Сообщение об ошибке или флаг наличия ошибки */
4
+ error?: string | boolean;
5
+ /** Режим поискового поля с иконкой поиска */
6
+ asSearch?: boolean;
7
+ /** Иконка справа от поля ввода */
8
+ rightIcon?: React.ReactNode;
9
+ /** Отображение счетчика символов */
10
+ withCount?: boolean;
11
+ /** Callback при нажатии клавиши Enter */
12
+ onEnter?: (value: string) => void;
13
+ }
14
+ /**
15
+ * Компонент поля ввода с поддержкой различных состояний и дополнительных элементов.
16
+ * Поддерживает валидацию, иконки, счетчик символов и режим поиска.
17
+ *
18
+ * @component
19
+ * @param {InputProps} props - Параметры компонента
20
+ * @param {React.Ref<HTMLInputElement>} ref - Реф для доступа к DOM-элементу
21
+ * @returns {React.ReactElement} Поле ввода с заданными свойствами
22
+ *
23
+ * @example
24
+ * <Input placeholder="Введите текст" />
25
+ * <Input asSearch placeholder="Поиск" />
26
+ * <Input type="password" withCount />
27
+ * <Input error="Обязательное поле" />
28
+ */
29
+ declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
30
+ export { Input };
@@ -0,0 +1,23 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ import * as React from 'react';
3
+ import * as LabelPrimitive from '@radix-ui/react-label';
4
+ /**
5
+ * Компонент метки для полей ввода с поддержкой обозначения обязательных полей.
6
+ * Основан на Radix UI Label с дополнительными стилями и функциональностью.
7
+ *
8
+ * @component
9
+ * @param {object} props - Параметры компонента
10
+ * @param {string} [props.className] - Дополнительные CSS-классы
11
+ * @param {boolean} [props.required] - Флаг обязательного поля
12
+ * @param {React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>} props - Стандартные свойства Label из Radix UI
13
+ * @param {React.Ref<React.ElementRef<typeof LabelPrimitive.Root>>} ref - Реф для доступа к DOM-элементу
14
+ * @returns {React.ReactElement} Метка с заданными свойствами
15
+ *
16
+ * @example
17
+ * <Label htmlFor="email">Email адрес</Label>
18
+ * <Label required htmlFor="password">Пароль</Label>
19
+ */
20
+ declare const Label: React.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React.RefAttributes<HTMLLabelElement>, "ref"> & VariantProps<(props?: ({
21
+ required?: boolean | null | undefined;
22
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string> & React.RefAttributes<HTMLLabelElement>>;
23
+ export { Label };
@@ -0,0 +1,100 @@
1
+ import { ButtonVariant } from './button';
2
+ import * as React from 'react';
3
+ export type MultiSelectOptionType = {
4
+ label: string;
5
+ value: string;
6
+ hidden?: boolean;
7
+ disabled?: boolean;
8
+ children?: MultiSelectOptionType[];
9
+ defaultExpanded?: boolean;
10
+ };
11
+ export interface MultiSelectProps {
12
+ className?: string;
13
+ triggerClassName?: string;
14
+ popoverContentClassName?: string;
15
+ variant?: ButtonVariant;
16
+ placeholder?: string;
17
+ options: MultiSelectOptionType[];
18
+ value: string[];
19
+ maxSelected?: number;
20
+ shouldFilter?: boolean;
21
+ open?: boolean;
22
+ children?: React.ReactNode;
23
+ isLoading?: boolean;
24
+ isError?: boolean;
25
+ disabled?: boolean;
26
+ searchPlaceholder?: string;
27
+ showAllOption?: boolean;
28
+ showReset?: boolean;
29
+ required?: boolean;
30
+ showBadge?: boolean;
31
+ maxVisibleRowsBadge?: number;
32
+ showCountBadge?: boolean;
33
+ defaultSearchedValue?: string;
34
+ createLabel?: string;
35
+ autoSelectSingleOption?: boolean;
36
+ onCreate?: (query: string) => void;
37
+ renderOption?: (option: MultiSelectOptionType, isChecked: boolean) => React.ReactNode;
38
+ renderBadge?: (option: MultiSelectOptionType, onRemove: () => void) => React.ReactNode;
39
+ onRefetch?: () => void;
40
+ onOpenChange?: (open: boolean) => void;
41
+ onSearch?: (value: string) => void;
42
+ isLoadingMore?: boolean;
43
+ hasMore?: boolean;
44
+ onLoadMore?: () => Promise<unknown>;
45
+ onChange?: (value: string[], labels?: string[]) => void;
46
+ onClick?: () => void;
47
+ onRemoveClick?: () => void;
48
+ }
49
+ /**
50
+ * Компонент для множественного выбора опций с поддержкой поиска, группировки и создания новых опций.
51
+ * Поддерживает различные варианты отображения выбранных значений, включая бейджи.
52
+ *
53
+ * @component
54
+ * @param {MultiSelectProps} props - Параметры компонента
55
+ * @param {string} [props.className] - Дополнительные CSS-классы для контейнера
56
+ * @param {string} [props.triggerClassName] - Дополнительные CSS-классы для триггера
57
+ * @param {ButtonVariant} [props.variant='fade-contrast-outlined'] - Вариант стиля кнопки-триггера
58
+ * @param {string} [props.placeholder] - Текст-заполнитель при отсутствии выбранных значений
59
+ * @param {MultiSelectOptionType[]} props.options - Опции для выбора
60
+ * @param {string[]} props.value - Выбранные значения
61
+ * @param {number} [props.maxSelected] - Максимальное количество выбираемых элементов
62
+ * @param {boolean} [props.shouldFilter=true] - Флаг включения фильтрации опций
63
+ * @param {boolean} [props.open] - Контролируемое состояние открытия попапа
64
+ * @param {React.ReactNode} [props.children] - Кастомное содержимое триггера
65
+ * @param {boolean} [props.isLoading] - Флаг состояния загрузки
66
+ * @param {boolean} [props.isError] - Флаг состояния ошибки
67
+ * @param {boolean} [props.disabled] - Флаг неактивного состояния
68
+ * @param {string} [props.searchPlaceholder] - Текст-заполнитель для поля поиска
69
+ * @param {boolean} [props.showAllOption=false] - Флаг отображения опции "Выбрать все"
70
+ * @param {boolean} [props.showReset] - Флаг отображения кнопки сброса
71
+ * @param {boolean} [props.required] - Флаг обязательного поля
72
+ * @param {boolean} [props.showBadge=false] - Флаг отображения выбранных значений в виде бейджей
73
+ * @param {number} [props.maxVisibleRowsBadge] - Максимальное количество строк для отображения бейджей
74
+ * @param {(option: MultiSelectOptionType, onRemove: () => void) => React.ReactNode} [props.renderBadge] - Функция для кастомного рендеринга бейджа выбранного элемента
75
+ * @param {string} [props.defaultSearchedValue] - Значение поиска по умолчанию
76
+ * @param {string} [props.createLabel] - Текст для создания новой опции
77
+ * @param {boolean} [props.autoSelectSingleOption] - Автоматически выбирать единственную доступную опцию
78
+ * @param {Function} [props.onCreate] - Callback создания новой опции
79
+ * @param {Function} [props.renderOption] - Кастомный рендер опции
80
+ * @param {Function} [props.onRefetch] - Callback повторной загрузки данных
81
+ * @param {Function} [props.onOpenChange] - Callback изменения состояния открытия попапа
82
+ * @param {Function} [props.onSearch] - Callback поиска
83
+ * @param {Function} [props.onChange] - Callback изменения выбранных значений
84
+ * @param {Function} [props.onClick] - Callback клика по триггеру
85
+ * @param {Function} [props.onRemoveClick] - Callback клика по кнопке удаления
86
+ * @returns {React.ReactElement} Компонент множественного выбора
87
+ *
88
+ * @example
89
+ * <MultiSelect
90
+ * options={[
91
+ * { label: 'Option 1', value: '1' },
92
+ * { label: 'Option 2', value: '2' }
93
+ * ]}
94
+ * value={['1']}
95
+ * onChange={(values) => console.log(values)}
96
+ * placeholder="Select options"
97
+ * />
98
+ */
99
+ declare const MultiSelect: React.ForwardRefExoticComponent<MultiSelectProps & React.RefAttributes<HTMLButtonElement>>;
100
+ export { MultiSelect };
@@ -0,0 +1,52 @@
1
+ import { default as React } from 'react';
2
+ import { Location } from 'react-router-dom';
3
+ import { NavItem } from './nav';
4
+ export interface NavPanelProps {
5
+ /** @description Состояние сворачивания навигации */
6
+ isCollapsed: boolean;
7
+ /** @description Список навигации */
8
+ navItems: NavItem[][];
9
+ /** @description Название проекта */
10
+ projectName: React.ReactNode;
11
+ /** @description Компонент для отображения ссылок */
12
+ linkComponent: React.ElementType;
13
+ /** @description Слот для отображения профиля пользователя и смены темы
14
+ * @example
15
+ * <Nav
16
+ * isCollapsed={sidebar.isCollapsed}
17
+ * items={[
18
+ * {
19
+ * title: t('theme'),
20
+ * icon: theme === 'light' ? Sun : Moon,
21
+ * onClick: toggleTheme,
22
+ * variant: 'fade-contrast-transparent',
23
+ * },
24
+ * { title: t('logout'), icon: AccountCircle, onClick: logout, variant: 'fade-contrast-transparent' },
25
+ * ]}
26
+ * LinkComponent={NavLink}
27
+ * />
28
+ */
29
+ profileNavSlot?: React.ReactNode;
30
+ /** @description Слот для расширения навигации
31
+ * @example
32
+ * <Nav
33
+ * isCollapsed={sidebar.isCollapsed}
34
+ * items={[
35
+ * {
36
+ * title: sidebar.isCollapsed ? t('expand') : t('collapse'),
37
+ * icon: sidebar.isCollapsed ? LastPage : FirstPage,
38
+ * onClick: sidebar.isCollapsed ? sidebar.expand : sidebar.collapse,
39
+ * variant: 'fade-contrast-transparent',
40
+ * },
41
+ * ]}
42
+ * LinkComponent={NavLink}
43
+ * />*/
44
+ expandableNavSlot?: React.ReactNode;
45
+ location?: Location;
46
+ bottomSlot?: React.ReactNode;
47
+ }
48
+ declare const NavPanel: {
49
+ (props: NavPanelProps): import("react/jsx-runtime").JSX.Element;
50
+ displayName: string;
51
+ };
52
+ export { NavPanel };
@@ -0,0 +1,52 @@
1
+ import { default as React, FunctionComponent } from 'react';
2
+ import { Location } from 'react-router-dom';
3
+ import { LucideIcon } from 'lucide-react';
4
+ import { ButtonVariant } from './button';
5
+ /**
6
+ * Интерфейс для элемента навигации
7
+ * @interface NavItem
8
+ * @property {string} title - Заголовок элемента навигации
9
+ * @property {string} [label] - Дополнительная метка элемента
10
+ * @property {LucideIcon|FunctionComponent} [icon] - Иконка элемента (Lucide или React компонент)
11
+ * @property {string} [to] - Ссылка для перехода
12
+ * @property {ButtonVariant} [variant] - Вариант стиля кнопки
13
+ * @property {string} [className] - Дополнительные CSS-классы
14
+ * @property {function} [onClick] - Обработчик клика
15
+ * @property {NavItem[]} [children] - Вложенные элементы навигации
16
+ */
17
+ export interface NavItem {
18
+ title: string;
19
+ label?: string;
20
+ icon?: LucideIcon | FunctionComponent<React.SVGProps<SVGSVGElement> & {
21
+ title?: string | undefined;
22
+ }>;
23
+ to?: string;
24
+ variant?: ButtonVariant;
25
+ className?: string;
26
+ onClick?: () => void;
27
+ children?: NavItem[];
28
+ }
29
+ /**
30
+ * Пропсы компонента навигации
31
+ * @interface NavProps
32
+ * @property {boolean} isCollapsed - Состояние сворачивания навигации
33
+ * @property {NavItem[]} items - Массив элементов навигации
34
+ * @property {function} [itemVariant] - Функция для определения варианта стиля элемента
35
+ * @property {React.ElementType} LinkComponent - Компонент для отображения ссылок
36
+ * @property {Location} [location] - Объект location из react-router для определения активных элементов
37
+ */
38
+ interface NavProps {
39
+ isCollapsed: boolean;
40
+ items: NavItem[];
41
+ itemVariant?: (item: NavItem) => ButtonVariant;
42
+ LinkComponent: React.ElementType;
43
+ location?: Location;
44
+ }
45
+ export declare function Nav(props: NavProps): import("react/jsx-runtime").JSX.Element;
46
+ /**
47
+ * Разделитель для навигации
48
+ * @component
49
+ * @returns {JSX.Element} Элемент разделителя
50
+ */
51
+ export declare function NavSeparator(): import("react/jsx-runtime").JSX.Element;
52
+ export {};
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Пропсы компонента NetworkErrorMessage
3
+ * @interface NetworkErrorMessageProps
4
+ * @property {string} [className] - Дополнительные CSS-классы для контейнера
5
+ * @property {'base'|'sm'} [textSize='base'] - Размер текста
6
+ * @property {boolean} [isLoading] - Флаг состояния загрузки
7
+ * @property {boolean} [isError] - Флаг состояния ошибки
8
+ * @property {boolean} [center] - Выравнивание по центру
9
+ * @property {boolean} [inline] - Inline-режим отображения
10
+ * @property {function} [onRefetch] - Функция для повторной попытки загрузки
11
+ */
12
+ export interface NetworkErrorMessageProps {
13
+ className?: string;
14
+ textSize?: 'base' | 'sm';
15
+ isLoading?: boolean;
16
+ isError?: boolean;
17
+ center?: boolean;
18
+ inline?: boolean;
19
+ onRefetch?: () => void;
20
+ }
21
+ /**
22
+ * Компонент для отображения состояния загрузки или ошибки сети
23
+ * @component
24
+ * @param {NetworkErrorMessageProps} props - Пропсы компонента
25
+ * @returns {JSX.Element|null} Компонент сообщения об ошибке или состоянии загрузки, либо null если не активен
26
+ *
27
+ * @example
28
+ * // Базовое использование
29
+ * <NetworkErrorMessage
30
+ * isLoading={isLoading}
31
+ * isError={isError}
32
+ * onRefetch={refetchData}
33
+ * />
34
+ *
35
+ * @example
36
+ * // Inline-режим
37
+ * <div>
38
+ * Загрузка данных
39
+ * <NetworkErrorMessage
40
+ * isLoading={isLoading}
41
+ * isError={isError}
42
+ * inline
43
+ * />
44
+ * </div>
45
+ */
46
+ export declare const NetworkErrorMessage: ({ className, textSize, isLoading, isError, center, inline, onRefetch, }: NetworkErrorMessageProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,34 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ import { notificationVariants } from './notificationVariants';
3
+ import * as React from 'react';
4
+ /**
5
+ * Пропсы компонента Notification
6
+ */
7
+ export interface NotificationProps extends React.ComponentPropsWithoutRef<'div'>, VariantProps<typeof notificationVariants> {
8
+ /** Текст уведомления */
9
+ children?: React.ReactNode;
10
+ /** Показывать ли кнопку закрытия */
11
+ showClose?: boolean;
12
+ /** Обработчик закрытия уведомления */
13
+ onClose?: () => void;
14
+ /** Кастомная иконка (если не указана, используется иконка по умолчанию для варианта) */
15
+ icon?: React.ReactNode;
16
+ }
17
+ /**
18
+ * Компонент для отображения уведомлений.
19
+ * Поддерживает различные варианты отображения (error, success, info) и размеры (sm, default).
20
+ *
21
+ * @component
22
+ * @param {NotificationProps} props - Параметры компонента
23
+ * @returns {React.ReactElement} Компонент уведомления
24
+ *
25
+ * @example
26
+ * <Notification variant="success" size="default">Операция выполнена</Notification>
27
+ *
28
+ * @example
29
+ * <Notification variant="error" size="sm" showClose onClose={() => console.log('closed')}>
30
+ * Что-то пошло не так
31
+ * </Notification>
32
+ */
33
+ declare const Notification: React.ForwardRefExoticComponent<NotificationProps & React.RefAttributes<HTMLDivElement>>;
34
+ export { Notification };
@@ -0,0 +1,4 @@
1
+ export declare const notificationVariants: (props?: ({
2
+ variant?: "success" | "error" | "info" | null | undefined;
3
+ size?: "default" | "sm" | null | undefined;
4
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;