import React from 'react'; import { FontStyleTypeModel, ThemeTypesModel } from '../../Themes/theme_types'; import { Color, Kind, Size } from '../../types'; type footerActionColor = Color.green | Color.dark | Color.blue | Color.danger; type availableSize = Size.m | Size.l | 'context'; interface ModalWindowProps { show: boolean; title?: string; width?: string; size: availableSize; isInverse?: boolean; children?: React.ReactElement; theme?: ThemeTypesModel; actions?: ModalFooterAction[]; requiredTitle?: boolean; className?: string; stickerClassName?: string; onClose?: () => void; } interface ModalFooterAction { title: string; kind: Kind; color: footerActionColor; isDisabled?: boolean; onClick: () => void; } interface ModalContainerProps { isInverse: boolean; widthProp?: string; styled: ModelView; theme: ThemeTypesModel; } interface ModalMainWindowProps { widthProp?: string; styled: ModelView; theme: ThemeTypesModel; size: availableSize; isInverse: boolean; } interface ModalHeaderProps { styled: ModelView; isInverse: boolean; size: availableSize; theme: ThemeTypesModel; } interface ModalTitleProps { styled: ModelView; theme: ThemeTypesModel; } interface ModalContentProps { styled: ModelView; size: availableSize; theme: ThemeTypesModel; } interface ModalFooterProps { theme: ThemeTypesModel; size: availableSize; } interface ModelView { style: { day: themeVariant; night: themeVariant; }; size: { l: deviceSize; m: deviceSize; context: deviceSize; content: { font: FontStyleTypeModel; }; }; } interface deviceSize { mobile: sizeObject; desktop: sizeObject; } interface sizeObject { title: { font: FontStyleTypeModel; }; } interface themeVariant { backgroundColor: string; fontColor: string; title: { context: string; modal: string; }; } export type { ModalWindowProps, ModalFooterAction, ModalContainerProps, ModalTitleProps, ModalHeaderProps, ModalMainWindowProps, ModalContentProps, ModalFooterProps, };