import { type ReactNode } from 'react'; import { type LanguageMap } from '../DatePicker/types'; import { type ImageProps } from '../placeholders'; import { type NextFeatureFlagsContextProps } from './NextFeatureFlagsContext'; type Language = 'ru'; type ImagesMap = { /** * Изображение при отсутствии данных (используется в DataGrid) */ noDataImgSrc: string; /** * Изображение при ошибке (используется в ContentState) */ defaultErrorImgSrc: string; /** * Изображение при ошибке загрузки актуальных чанков (используется в * ContentState/ErrorBoundary) */ outdatedReleaseErrorImgSrc: string; /** * Изображение при успешной отправке данных (используется в FeedbackPanel) */ mailImgSrc?: string; /** * Изображение для загружаемых файлов (используется в PreviewFileUploader) */ uploadFileImgSrc?: string; /** * Изображение файла, если он не валиден (используется в PreviewFileUploader) */ errorFileImgSrc?: string; }; type TechnicalSupport = { phone: string; email: string; }; export type ConfigContextProps = { /** * Язык локализации * @default 'ru' */ language: Language; /** * Языковая карта для DatePicker * @default russianMap */ datePickerLanguageMap: LanguageMap; captureException: (error: any) => void; /** * Карта для типовых изображений. * Используется в компонентах ui-kit, где требуется отображение декоративных * img */ imagesMap: ImagesMap; /** * Символ для пустого значения * @default '—' */ emptySymbol: string; /** * Данные технической поддержки * @default '-' */ techSup: TechnicalSupport; /** * флаг скрытия персональной информации от трекеров * @default true */ hidePersonalData?: boolean; /** * Css-класс для сокрытия персональной информации от трекеров */ hidePersonalDataClassname?: string; /** * Css-класс для сокрытия персональной информации в инпутах от трекеров */ hidePersonalInputDataClassname?: string; /** * Настройки для общеиспользуемых компонентов */ components?: { /** * Настройки для компонента Placeholder */ placeholder?: { defaultProps?: { /** * Кастомный компонент, ответственный за рендер основного изображения, * По умолчанию рендерится обычный img тег */ renderImage?: (props: ImageProps) => JSX.Element; }; }; layout?: { defaultProps?: { /** * Динамическое изменение html title в зависимости от title страницы */ shouldUpdateDocumentTitle?: boolean; }; }; }; }; export type ConfigProviderProps = Partial & { children: ReactNode; /** * Объект, содержащий глобальные фича-флаги для компонентов. * Фича-флаги позволяют включать или выключать определенные функции или поведение компонентов * без необходимости изменять код. Флаги группируются по именам компонентов. * Переданный в компонент флаг напрямую имеет приоритет выше * * @example * ```ts * const nextFeatureFlags = { * sidebar: { * isFixedWidth: true, // Включает фиксированную ширину для Sidebar * }, * }; * ``` */ nextFeatureFlags?: NextFeatureFlagsContextProps; }; export declare const ConfigContext: import("react").Context; export declare const ConfigProvider: ({ children, language, datePickerLanguageMap, captureException, emptySymbol, imagesMap, techSup, hidePersonalData, hidePersonalDataClassname, hidePersonalInputDataClassname, components: propsComponents, nextFeatureFlags, }: Partial) => JSX.Element; export {};