@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,149 @@
1
+ /**
2
+ * @fileoverview Компонент NumberInput для ввода числовых значений со строгой валидацией
3
+ *
4
+ * Этот файл содержит реализацию компонента NumberInput, который предоставляет
5
+ * безопасную альтернативу обычному `<input type="number">`. Компонент обеспечивает:
6
+ * - Строгую валидацию только числовых символов
7
+ * - Автоматическую замену запятых на точки как десятичного разделителя
8
+ * - Контроль количества десятичных знаков
9
+ * - Предотвращение ввода множественных разделителей
10
+ * - Настраиваемую поддержку отрицательных чисел
11
+ */
12
+ import * as React from 'react';
13
+ /**
14
+ * Пропсы для компонента NumberInput
15
+ *
16
+ * @interface NumberInputProps
17
+ * @extends {Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'onChange' | 'value'>}
18
+ */
19
+ export type NumberInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'onChange' | 'value'> & {
20
+ /** Иконка, отображаемая справа от поля ввода */
21
+ icon?: React.ReactNode;
22
+ /** Текущее значение поля. Может быть числом или строкой */
23
+ value?: number | string;
24
+ /**
25
+ * Колбэк, вызываемый при изменении значения
26
+ * @param value - новое числовое значение или null, если значение невалидно
27
+ */
28
+ onChange?: (value: number | null) => void;
29
+ /**
30
+ * Алиас для onChange. Используется для совместимости с другими компонентами
31
+ * @param value - новое числовое значение или null, если значение невалидно
32
+ */
33
+ onValueChange?: (value: number | null) => void;
34
+ /**
35
+ * Колбэк, вызываемый при нажатии клавиши Enter
36
+ * @param e - событие нажатия клавиши
37
+ */
38
+ onEnter?: (e: React.KeyboardEvent<HTMLInputElement>) => void;
39
+ /**
40
+ * Количество знаков после десятичной точки.
41
+ * При значении 0 десятичная точка не разрешена.
42
+ * @default 0
43
+ */
44
+ decimalPlaces?: number;
45
+ /**
46
+ * Разрешить ввод отрицательных чисел
47
+ * @default false
48
+ */
49
+ allowNegative?: boolean;
50
+ };
51
+ /**
52
+ * Компонент для ввода только числовых значений с строгой валидацией.
53
+ *
54
+ * Предоставляет безопасную альтернативу обычному `<input type="number">` с более
55
+ * предсказуемым поведением валидации и обработки десятичных разделителей.
56
+ * Автоматически заменяет запятые на точки для удобства пользователей.
57
+ *
58
+ * @component
59
+ * @example
60
+ * ```tsx
61
+ * // Целые числа
62
+ * <NumberInput
63
+ * value={count}
64
+ * onChange={(value) => setCount(value)}
65
+ * decimalPlaces={0}
66
+ * />
67
+ *
68
+ * // Денежные суммы (2 знака после запятой)
69
+ * // Пользователь может ввести как "12.34", так и "12,34" - оба варианта будут работать
70
+ * <NumberInput
71
+ * value={price}
72
+ * onChange={(value) => setPrice(value)}
73
+ * decimalPlaces={2}
74
+ * placeholder="0.00"
75
+ * />
76
+ *
77
+ * // Только положительные числа
78
+ * <NumberInput
79
+ * value={quantity}
80
+ * onChange={(value) => setQuantity(value)}
81
+ * allowNegative={false}
82
+ * decimalPlaces={0}
83
+ * />
84
+ * ```
85
+ *
86
+ * @param props - Пропсы компонента NumberInput
87
+ * @param ref - Ref для доступа к HTML input элементу
88
+ * @returns JSX элемент поля ввода для чисел
89
+ *
90
+ * @see {@link NumberInputProps} для описания всех доступных пропсов
91
+ *
92
+ * @public
93
+ */
94
+ declare const NumberInput: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<HTMLInputElement>, "onChange" | "type" | "value"> & {
95
+ /** Иконка, отображаемая справа от поля ввода */
96
+ icon?: React.ReactNode;
97
+ /** Текущее значение поля. Может быть числом или строкой */
98
+ value?: number | string;
99
+ /**
100
+ * Колбэк, вызываемый при изменении значения
101
+ * @param value - новое числовое значение или null, если значение невалидно
102
+ */
103
+ onChange?: (value: number | null) => void;
104
+ /**
105
+ * Алиас для onChange. Используется для совместимости с другими компонентами
106
+ * @param value - новое числовое значение или null, если значение невалидно
107
+ */
108
+ onValueChange?: (value: number | null) => void;
109
+ /**
110
+ * Колбэк, вызываемый при нажатии клавиши Enter
111
+ * @param e - событие нажатия клавиши
112
+ */
113
+ onEnter?: (e: React.KeyboardEvent<HTMLInputElement>) => void;
114
+ /**
115
+ * Количество знаков после десятичной точки.
116
+ * При значении 0 десятичная точка не разрешена.
117
+ * @default 0
118
+ */
119
+ decimalPlaces?: number;
120
+ /**
121
+ * Разрешить ввод отрицательных чисел
122
+ * @default false
123
+ */
124
+ allowNegative?: boolean;
125
+ } & React.RefAttributes<HTMLInputElement>>;
126
+ /**
127
+ * Экспортируемый компонент для ввода числовых значений.
128
+ *
129
+ * @example
130
+ * ```tsx
131
+ * import { NumberInput } from '@/shared/ui';
132
+ *
133
+ * function App() {
134
+ * const [amount, setAmount] = useState<number | null>(null);
135
+ *
136
+ * return (
137
+ * <NumberInput
138
+ * value={amount}
139
+ * onChange={setAmount}
140
+ * decimalPlaces={2}
141
+ * placeholder="Введите сумму"
142
+ * />
143
+ * );
144
+ * }
145
+ * ```
146
+ *
147
+ * @public
148
+ */
149
+ export { NumberInput };
@@ -0,0 +1,28 @@
1
+ import { ReactNode } from 'react';
2
+ interface PageLayoutProps {
3
+ /** Слот для заголовка страницы */
4
+ headerSlot?: ReactNode;
5
+ /** Слот для фильтров */
6
+ filterSlot?: ReactNode;
7
+ /** Слот для основного контента */
8
+ contentSlot?: ReactNode;
9
+ /** Ограничить contentSlot по высоте (overflow-hidden) для внутренней прокрутки контента */
10
+ contentSlotOverflowHidden?: boolean;
11
+ }
12
+ /**
13
+ * Компонент макета страницы с предустановленными отступами и расположением элементов.
14
+ * Обеспечивает единообразную структуру страниц с заголовком, фильтрами и контентом.
15
+ *
16
+ * @component
17
+ * @param {PageLayoutProps} props - Пропсы компонента
18
+ * @returns {JSX.Element}
19
+ *
20
+ * @example
21
+ * <PageLayout
22
+ * headerSlot={<PageHeader title="Заголовок" />}
23
+ * filterSlot={<Filters />}
24
+ * contentSlot={<Table />}
25
+ * />
26
+ */
27
+ export declare const PageLayout: ({ headerSlot, filterSlot, contentSlot, contentSlotOverflowHidden, }: PageLayoutProps) => import("react/jsx-runtime").JSX.Element;
28
+ export {};
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Значения вкладок переключения вида «список с панелью» / «таблица».
3
+ */
4
+ export declare const PAGE_VIEW_TAB: {
5
+ readonly LIST: "list";
6
+ readonly TABLE: "table";
7
+ };
8
+ export type PageViewTab = (typeof PAGE_VIEW_TAB)[keyof typeof PAGE_VIEW_TAB];
9
+ export interface PageViewModeToggleProps {
10
+ /** Дополнительные классы для `TabsList` */
11
+ className?: string;
12
+ /** Подписи для доступности; по умолчанию ключи `listView` / `tableView` из ThemeProvider */
13
+ listAriaLabel?: string;
14
+ tableAriaLabel?: string;
15
+ }
16
+ /**
17
+ * Переключатель вида «список с панелью» / «таблица» для экранов с {@link PAGE_VIEW_TAB}.
18
+ * Размещается внутри родительского `Tabs` с соответствующим `value` и `onValueChange`.
19
+ *
20
+ * @component
21
+ */
22
+ export declare const PageViewModeToggle: ({ className, listAriaLabel, tableAriaLabel, }: PageViewModeToggleProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,121 @@
1
+ export declare const DEFAULT_PAGE_SIZE_OPTIONS: number[];
2
+ /**
3
+ * Свойства компонента пагинации
4
+ */
5
+ export interface PaginationProps {
6
+ /** Горизонтальные отступы компонента */
7
+ horizontalPadding?: 'small' | 'medium' | 'large';
8
+ /** Дополнительные CSS-классы для контейнера */
9
+ className?: string;
10
+ /** Количество элементов на странице */
11
+ pageSize?: number;
12
+ /** Общее количество страниц */
13
+ pageCount?: number;
14
+ /** Индекс текущей страницы (начиная с 0) */
15
+ pageIndex?: number;
16
+ /** Возможность перейти на предыдущую страницу */
17
+ canPreviousPage?: boolean;
18
+ /** Возможность перейти на следующую страницу */
19
+ canNextPage?: boolean;
20
+ /** Количество выбранных элементов */
21
+ selectedCount?: number;
22
+ /** Общее количество элементов */
23
+ totalCount?: number;
24
+ /** Компактный режим без кнопок первой/последней страницы */
25
+ compact?: boolean;
26
+ /** Скрыть селектор размера страницы */
27
+ hideDisplayBy?: boolean;
28
+ /** Варианты количества элементов на странице для селектора «Показывать по» */
29
+ pageSizeOptions?: number[];
30
+ /** Обработчик перехода на предыдущую страницу */
31
+ previousPage?: () => void;
32
+ /** Обработчик перехода на следующую страницу */
33
+ nextPage?: () => void;
34
+ /** Обработчик изменения размера страницы */
35
+ setPageSize?: (value: number) => void;
36
+ /** Обработчик изменения индекса страницы */
37
+ setPageIndex?: (value: number) => void;
38
+ }
39
+ /**
40
+ * Компонент пагинации для навигации по страницам данных
41
+ * Поддерживает выбор размера страницы, отображение выбранных элементов и различные варианты отображения
42
+ *
43
+ * @component
44
+ * @param {PaginationProps} props - Параметры компонента
45
+ * @param {'small' | 'medium' | 'large'} [props.horizontalPadding='medium'] - Горизонтальные отступы компонента
46
+ * @param {string} [props.className] - Дополнительные CSS-классы для контейнера
47
+ * @param {number} [props.pageSize] - Количество элементов на странице
48
+ * @param {number} [props.pageCount=0] - Общее количество страниц
49
+ * @param {number} [props.pageIndex=0] - Индекс текущей страницы (начиная с 0)
50
+ * @param {boolean} [props.canPreviousPage] - Возможность перейти на предыдущую страницу
51
+ * @param {boolean} [props.canNextPage] - Возможность перейти на следующую страницу
52
+ * @param {number} [props.selectedCount] - Количество выбранных элементов
53
+ * @param {number} [props.totalCount] - Общее количество элементов
54
+ * @param {boolean} [props.compact=false] - Компактный режим без кнопок первой/последней страницы
55
+ * @param {boolean} [props.hideDisplayBy=false] - Скрыть селектор размера страницы
56
+ * @param {number[]} [props.pageSizeOptions=DEFAULT_PAGE_SIZE_OPTIONS] - Варианты размера страницы
57
+ * @param {function} [props.previousPage] - Обработчик перехода на предыдущую страницу
58
+ * @param {function} [props.nextPage] - Обработчик перехода на следующую страницу
59
+ * @param {function} [props.setPageSize] - Обработчик изменения размера страницы
60
+ * @param {function} [props.setPageIndex] - Обработчик изменения индекса страницы
61
+ * @returns {React.ReactElement} Компонент пагинации
62
+ *
63
+ * @example
64
+ * // Базовое использование
65
+ * <Pagination
66
+ * pageSize={20}
67
+ * pageCount={10}
68
+ * pageIndex={0}
69
+ * canPreviousPage={false}
70
+ * canNextPage={true}
71
+ * setPageSize={(size) => setPageSize(size)}
72
+ * setPageIndex={(index) => setPageIndex(index)}
73
+ * previousPage={() => setPageIndex(pageIndex - 1)}
74
+ * nextPage={() => setPageIndex(pageIndex + 1)}
75
+ * />
76
+ *
77
+ * @example
78
+ * // С выбранными элементами
79
+ * <Pagination
80
+ * pageSize={20}
81
+ * pageCount={10}
82
+ * pageIndex={2}
83
+ * canPreviousPage={true}
84
+ * canNextPage={true}
85
+ * selectedCount={5}
86
+ * totalCount={200}
87
+ * setPageSize={(size) => setPageSize(size)}
88
+ * setPageIndex={(index) => setPageIndex(index)}
89
+ * previousPage={() => setPageIndex(pageIndex - 1)}
90
+ * nextPage={() => setPageIndex(pageIndex + 1)}
91
+ * />
92
+ *
93
+ * @example
94
+ * // Компактный режим
95
+ * <Pagination
96
+ * pageSize={20}
97
+ * pageCount={10}
98
+ * pageIndex={4}
99
+ * canPreviousPage={true}
100
+ * canNextPage={true}
101
+ * compact={true}
102
+ * setPageSize={(size) => setPageSize(size)}
103
+ * setPageIndex={(index) => setPageIndex(index)}
104
+ * previousPage={() => setPageIndex(pageIndex - 1)}
105
+ * nextPage={() => setPageIndex(pageIndex + 1)}
106
+ * />
107
+ *
108
+ * @example
109
+ * // Кастомные варианты размера страницы
110
+ * <Pagination
111
+ * pageSize={15}
112
+ * pageSizeOptions={[5, 15, 25, 100]}
113
+ * pageCount={10}
114
+ * pageIndex={0}
115
+ * canPreviousPage={false}
116
+ * canNextPage={true}
117
+ * setPageSize={(size) => setPageSize(size)}
118
+ * setPageIndex={(index) => setPageIndex(index)}
119
+ * />
120
+ */
121
+ export declare function Pagination({ horizontalPadding, className, pageSize, pageCount, pageIndex, canPreviousPage, canNextPage, selectedCount, totalCount, compact, hideDisplayBy, pageSizeOptions, previousPage, nextPage, setPageSize, setPageIndex, }: PaginationProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,36 @@
1
+ import * as React from 'react';
2
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
3
+ /**
4
+ * Popover компонент на основе Radix UI
5
+ * @see https://www.radix-ui.com/docs/primitives/components/popover
6
+ */
7
+ /**
8
+ * Основной контейнер Popover
9
+ * @component
10
+ */
11
+ declare const Popover: React.FC<PopoverPrimitive.PopoverProps>;
12
+ /**
13
+ * Триггер для открытия/закрытия Popover
14
+ * @component
15
+ */
16
+ declare const PopoverTrigger: React.ForwardRefExoticComponent<PopoverPrimitive.PopoverTriggerProps & React.RefAttributes<HTMLButtonElement>>;
17
+ /**
18
+ * Кнопка закрытия Popover (должна находиться внутри контекста Popover)
19
+ */
20
+ declare const PopoverClose: React.ForwardRefExoticComponent<PopoverPrimitive.PopoverCloseProps & React.RefAttributes<HTMLButtonElement>>;
21
+ /**
22
+ * Кастомная точка привязки для позиционирования содержимого (например, когда триггер шире видимой области).
23
+ * @see https://www.radix-ui.com/primitives/docs/components/popover#anchor
24
+ */
25
+ declare const PopoverAnchor: React.ForwardRefExoticComponent<PopoverPrimitive.PopoverAnchorProps & React.RefAttributes<HTMLDivElement>>;
26
+ /**
27
+ * Содержимое Popover
28
+ * @component
29
+ * @param {Object} props - Свойства компонента
30
+ * @param {string} [props.className] - Дополнительные CSS-классы
31
+ * @param {'start'|'center'|'end'} [props.align='center'] - Выравнивание содержимого относительно триггера
32
+ * @param {number} [props.sideOffset=4] - Отступ от стороны триггера
33
+ * @param {React.Ref} ref - Ref для содержимого Popover
34
+ */
35
+ declare const PopoverContent: React.ForwardRefExoticComponent<Omit<PopoverPrimitive.PopoverContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
36
+ export { Popover, PopoverAnchor, PopoverClose, PopoverTrigger, PopoverContent };
@@ -0,0 +1,273 @@
1
+ import * as React from 'react';
2
+ export interface DropdownAction {
3
+ /** Текст действия */
4
+ text: string;
5
+ /** Обработчик клика */
6
+ onClick: () => void;
7
+ /** Отключено ли действие */
8
+ disabled?: boolean;
9
+ }
10
+ interface PostCardHeaderProps {
11
+ /** Префикс заголовка (отображается серым цветом) */
12
+ titlePrefix?: string;
13
+ /** Основной текст заголовка (отображается основным цветом, с обрезкой при переполнении) */
14
+ titleText?: string;
15
+ /** Слот для кнопок действий (может содержать одну или несколько кнопок) */
16
+ buttonsSlot?: React.ReactNode;
17
+ /** Массив действий для выпадающего меню */
18
+ dropDownButtons?: DropdownAction[];
19
+ /** Callback-функция для кнопки "Назад" */
20
+ onBack?: () => void;
21
+ /** Дополнительные CSS-классы для корневого элемента */
22
+ className?: string;
23
+ }
24
+ /**
25
+ * Компонент заголовка карточки поста с поддержкой заголовка и кнопок действий.
26
+ * Используется для отображения заголовка карточки с действиями в правой части.
27
+ *
28
+ * @component
29
+ * @param {PostCardHeaderProps} props - Пропсы компонента
30
+ * @param {string} [props.titlePrefix] - Префикс заголовка (отображается серым цветом)
31
+ * @param {string} [props.titleText] - Основной текст заголовка (отображается основным цветом, с обрезкой при переполнении)
32
+ * @param {React.ReactNode} [props.buttonsSlot] - Слот для кнопок действий
33
+ * @param {DropdownAction[]} [props.dropDownButtons] - Массив действий для выпадающего меню
34
+ * @param {() => void} [props.onBack] - Callback-функция для кнопки "Назад"
35
+ * @param {string} [props.className] - Дополнительные CSS-классы
36
+ * @returns {JSX.Element}
37
+ *
38
+ * @example
39
+ * <PostCardHeader
40
+ * titlePrefix="223-CR"
41
+ * titleText="Title"
42
+ * onBack={() => console.log('back')}
43
+ * buttonsSlot={
44
+ * <Button variant="theme-filled">Кнопка</Button>
45
+ * }
46
+ * dropDownButtons={[
47
+ * { text: 'Редактировать', onClick: () => console.log('edit') },
48
+ * { text: 'Удалить', onClick: () => console.log('delete') },
49
+ * ]}
50
+ * />
51
+ */
52
+ declare const PostCardHeader: {
53
+ ({ titlePrefix, titleText, buttonsSlot, dropDownButtons, onBack, className, }: PostCardHeaderProps): import("react/jsx-runtime").JSX.Element;
54
+ displayName: string;
55
+ };
56
+ export interface PostCardBodyField {
57
+ /** Метка поля */
58
+ label: string;
59
+ /** Значение поля (может быть строкой или React-элементом) */
60
+ value: string | React.ReactNode;
61
+ }
62
+ export interface PostCardBodySection {
63
+ /** Массив полей в секции */
64
+ fields: PostCardBodyField[];
65
+ }
66
+ interface PostCardBodyProps {
67
+ /** Массив секций с полями */
68
+ sections?: PostCardBodySection[];
69
+ /** Дополнительные CSS-классы для корневого элемента */
70
+ className?: string;
71
+ }
72
+ /**
73
+ * Компонент тела карточки поста для отображения структурированной информации в формате ключ-значение.
74
+ * Поддерживает группировку полей в секции с разделителями.
75
+ *
76
+ * @component
77
+ * @param {PostCardBodyProps} props - Пропсы компонента
78
+ * @param {PostCardBodySection[]} [props.sections] - Массив секций с полями
79
+ * @param {string} [props.className] - Дополнительные CSS-классы
80
+ * @returns {JSX.Element}
81
+ *
82
+ * @example
83
+ * <PostCardBody
84
+ * sections={[
85
+ * {
86
+ * fields: [
87
+ * { label: 'Статус', value: <Badge>Выполнен</Badge> },
88
+ * { label: 'Приоритет', value: 'Неотложный' },
89
+ * { label: 'Название', value: 'Ремонт конвейерной ленты' },
90
+ * ],
91
+ * },
92
+ * {
93
+ * fields: [
94
+ * { label: 'Описание', value: 'Длинное описание...' },
95
+ * ],
96
+ * },
97
+ * ]}
98
+ * />
99
+ */
100
+ declare const PostCardBody: {
101
+ ({ sections, className }: PostCardBodyProps): import("react/jsx-runtime").JSX.Element | null;
102
+ displayName: string;
103
+ };
104
+ interface PostCardSidebarProps {
105
+ /** Дочерние элементы сайдбара (вертикально расположенные компоненты) */
106
+ children?: React.ReactNode;
107
+ /** Дополнительные CSS-классы для корневого элемента */
108
+ className?: string;
109
+ }
110
+ /**
111
+ * Компонент сайдбара карточки поста для вертикального расположения элементов.
112
+ * Используется для отображения дополнительных компонентов (карусель, виджеты и т.д.) в боковой панели.
113
+ *
114
+ * @component
115
+ * @param {PostCardSidebarProps} props - Пропсы компонента
116
+ * @param {React.ReactNode} [props.children] - Дочерние элементы сайдбара
117
+ * @param {string} [props.className] - Дополнительные CSS-классы
118
+ * @returns {JSX.Element}
119
+ *
120
+ * @example
121
+ * <PostCardSidebar>
122
+ * <Carousel>...</Carousel>
123
+ * <WidgetPlanFact rows={[...]} />
124
+ * </PostCardSidebar>
125
+ */
126
+ declare const PostCardSidebar: {
127
+ ({ children, className }: PostCardSidebarProps): import("react/jsx-runtime").JSX.Element;
128
+ displayName: string;
129
+ };
130
+ interface PostCardLeftPanelItemProps {
131
+ /** Слот для заголовка элемента (flex с gap 16px и space-between) */
132
+ headerSlot?: React.ReactNode;
133
+ /** Слот для основного контента элемента */
134
+ contentSlot?: React.ReactNode;
135
+ /** Слот для футера элемента (flex с gap 16px и space-between) */
136
+ footerSlot?: React.ReactNode;
137
+ /** Выбран ли элемент */
138
+ selected?: boolean;
139
+ /** Обработчик клика */
140
+ onClick?: () => void;
141
+ /** Дополнительные CSS-классы */
142
+ className?: string;
143
+ }
144
+ /**
145
+ * Элемент списка левой панели карточки поста.
146
+ * Используется для отображения отдельного элемента в списке PostCardLeftPanel.
147
+ *
148
+ * @component
149
+ * @param {PostCardLeftPanelItemProps} props - Пропсы компонента
150
+ * @param {React.ReactNode} [props.headerSlot] - Слот для заголовка элемента
151
+ * @param {React.ReactNode} [props.contentSlot] - Слот для основного контента элемента
152
+ * @param {React.ReactNode} [props.footerSlot] - Слот для футера элемента
153
+ * @param {boolean} [props.selected] - Выбран ли элемент
154
+ * @param {() => void} [props.onClick] - Обработчик клика
155
+ * @param {string} [props.className] - Дополнительные CSS-классы
156
+ * @returns {JSX.Element}
157
+ *
158
+ * @example
159
+ * <PostCardLeftPanelItem
160
+ * selected
161
+ * onClick={() => console.log('clicked')}
162
+ * headerSlot={<div>223-CR</div>}
163
+ * contentSlot={<div>Ремонт конвейерной ленты</div>}
164
+ * footerSlot={<div>РМ01—Плановый заказ...</div>}
165
+ * />
166
+ */
167
+ declare const PostCardLeftPanelItem: {
168
+ ({ headerSlot, contentSlot, footerSlot, selected, onClick, className, }: PostCardLeftPanelItemProps): import("react/jsx-runtime").JSX.Element | null;
169
+ displayName: string;
170
+ };
171
+ interface PostCardLeftPanelProps {
172
+ /** Слот для сортировки (отображается сверху) */
173
+ sortSlot?: React.ReactNode;
174
+ /** Дочерние элементы списка (PostCardLeftPanelItem) */
175
+ children?: React.ReactNode;
176
+ /** Слот для пагинации (отображается снизу) */
177
+ paginationSlot?: React.ReactNode;
178
+ /** Дополнительные CSS-классы для корневого элемента */
179
+ className?: string;
180
+ }
181
+ /**
182
+ * Левая панель карточки поста со списком элементов.
183
+ * Используется для отображения списка элементов с поддержкой сортировки и пагинации.
184
+ *
185
+ * @component
186
+ * @param {PostCardLeftPanelProps} props - Пропсы компонента
187
+ * @param {React.ReactNode} [props.sortSlot] - Слот для сортировки (отображается сверху)
188
+ * @param {React.ReactNode} [props.children] - Дочерние элементы списка
189
+ * @param {React.ReactNode} [props.paginationSlot] - Слот для пагинации (отображается снизу)
190
+ * @param {string} [props.className] - Дополнительные CSS-классы
191
+ * @returns {JSX.Element}
192
+ *
193
+ * @example
194
+ * <PostCardLeftPanel
195
+ * sortSlot={<div>Сортировка</div>}
196
+ * paginationSlot={<Pagination />}
197
+ * >
198
+ * <PostCardLeftPanelItem selected>Элемент 1</PostCardLeftPanelItem>
199
+ * <PostCardLeftPanelItem>Элемент 2</PostCardLeftPanelItem>
200
+ * </PostCardLeftPanel>
201
+ */
202
+ declare const PostCardLeftPanel: {
203
+ ({ sortSlot, children, paginationSlot, className, }: PostCardLeftPanelProps): import("react/jsx-runtime").JSX.Element;
204
+ displayName: string;
205
+ };
206
+ export interface PostCardLeftPanelResizableConfig {
207
+ /** Размер левой панели по умолчанию в процентах */
208
+ defaultSize?: number;
209
+ /** Минимальный размер левой панели в процентах */
210
+ minSize?: number;
211
+ /** Максимальный размер левой панели в процентах */
212
+ maxSize?: number;
213
+ /** ID для автоматического сохранения размера панели */
214
+ autoSaveId?: string;
215
+ }
216
+ interface PostCardProps {
217
+ /** Слот для левой панели (отображается слева, высота равна headerSlot + bodySlot/sidebarSlot) */
218
+ leftPanelSlot?: React.ReactNode;
219
+ /** Конфигурация для изменения размера левой панели. Если передана, левая панель становится изменяемой */
220
+ leftPanelResizable?: PostCardLeftPanelResizableConfig;
221
+ /** Слот для заголовка карточки (отображается сверху на всю ширину) */
222
+ headerSlot?: React.ReactNode;
223
+ /** Слот для основного контента карточки (отображается слева) */
224
+ bodySlot?: React.ReactNode;
225
+ /** Слот для сайдбара карточки (отображается справа, фиксированная ширина 340px) */
226
+ sidebarSlot?: React.ReactNode;
227
+ /** Слот для дополнительного контента карточки (отображается под bodySlot и sidebarSlot) */
228
+ contentSlot?: React.ReactNode;
229
+ /** Дополнительные CSS-классы для корневого элемента */
230
+ className?: string;
231
+ /** Отображать ли верхнюю границу */
232
+ withTopBorder?: boolean;
233
+ /** Фиксированная высота с внутренней прокруткой панелей (для list/detail layout) */
234
+ fixedHeight?: boolean;
235
+ }
236
+ /**
237
+ * Обертка карточки поста с поддержкой левой панели, заголовка, основного контента и сайдбара.
238
+ * Используется для отображения структурированной информации в виде карточки.
239
+ *
240
+ * @component
241
+ * @param {PostCardProps} props - Пропсы компонента
242
+ * @param {React.ReactNode} [props.leftPanelSlot] - Слот для левой панели (отображается слева)
243
+ * @param {PostCardLeftPanelResizableConfig} [props.leftPanelResizable] - Конфигурация для изменения размера левой панели
244
+ * @param {React.ReactNode} [props.headerSlot] - Слот для заголовка карточки
245
+ * @param {React.ReactNode} [props.bodySlot] - Слот для основного контента
246
+ * @param {React.ReactNode} [props.sidebarSlot] - Слот для сайдбара
247
+ * @param {React.ReactNode} [props.contentSlot] - Слот для дополнительного контента (отображается под bodySlot и sidebarSlot)
248
+ * @param {string} [props.className] - Дополнительные CSS-классы
249
+ * @param {boolean} [props.withTopBorder] - Отображать ли верхнюю границу
250
+ * @returns {JSX.Element}
251
+ *
252
+ * @example
253
+ * <PostCard
254
+ * leftPanelSlot={<PostCardLeftPanel>...</PostCardLeftPanel>}
255
+ * headerSlot={<PostCardHeader titlePrefix="223-CR" titleText="Title" />}
256
+ * bodySlot={<PostCardBody sections={[...]} />}
257
+ * sidebarSlot={<PostCardSidebar>...</PostCardSidebar>}
258
+ * contentSlot={<div>Дополнительный контент</div>}
259
+ * />
260
+ *
261
+ * @example
262
+ * <PostCard
263
+ * leftPanelSlot={<PostCardLeftPanel>...</PostCardLeftPanel>}
264
+ * leftPanelResizable={{ defaultSize: 25, minSize: 15, maxSize: 50, autoSaveId: 'machinery-panel' }}
265
+ * headerSlot={<PostCardHeader titlePrefix="223-CR" titleText="Title" />}
266
+ * bodySlot={<PostCardBody sections={[...]} />}
267
+ * />
268
+ */
269
+ declare const PostCard: {
270
+ ({ leftPanelSlot, leftPanelResizable, headerSlot, bodySlot, sidebarSlot, contentSlot, className, withTopBorder, fixedHeight, }: PostCardProps): import("react/jsx-runtime").JSX.Element | null;
271
+ displayName: string;
272
+ };
273
+ export { PostCardHeader, PostCardBody, PostCardSidebar, PostCard, PostCardLeftPanel, PostCardLeftPanelItem, };
@@ -0,0 +1,23 @@
1
+ import { CSSProperties } from 'react';
2
+ export interface PreloaderProps {
3
+ style?: CSSProperties;
4
+ className?: string;
5
+ }
6
+ /**
7
+ * Компонент индикатора загрузки с анимацией вращения.
8
+ * Использует иконку Loader2 из библиотеки lucide-react с применением анимации spin.
9
+ *
10
+ * @component
11
+ * @param {PreloaderProps} props - Параметры компонента
12
+ * @param {CSSProperties} [props.style] - Объект со стилями для контейнера
13
+ * @param {string} [props.className] - Дополнительные CSS-классы для контейнера
14
+ * @returns {React.ReactElement} Компонент индикатора загрузки
15
+ *
16
+ * @example
17
+ * <Preloader />
18
+ *
19
+ * @example
20
+ * <Preloader className="my-custom-class" style={{ background: 'white' }} />
21
+ */
22
+ declare const Preloader: ({ style, className }: PreloaderProps) => import("react/jsx-runtime").JSX.Element;
23
+ export { Preloader };