import { ReactNode } from "react"; import { Tokens } from "@raiadrogasil/pulso-tokens"; import { ButtonProps } from "../Button/Button.types"; export type ModalSize = "small" | "medium" | "large" | "xlarge"; export interface ModalProps { /** * Título que irá aparecer no componente. */ title: string; /** * Ícone opcional, que poderá ou não ser exibida no componente, iniciando com valor false. */ icon?: boolean; /** * Nome do ícone que deve ser carregado, caso exista. * O ícone deve estar contido na biblioteca de ícones do Pulso. */ iconName?: string; /** * Descrição opcional do título, que poderá ou não ser exibida no componente, iniciando com valor true. */ headerDescription?: boolean; /** * Descrição do título do componente. */ description?: string; /** * Elemento que representa o conteúdo a ser exibido no corpo do componente. */ children: ReactNode; /** * Descrição opcional do conteúdo, que poderá ou não ser exibida no componente, iniciando com valor false. */ bodyDescription?: boolean; /** * Descrição do conteúdo do componente. */ contentDescription?: string; /** * Botão primário (obrigatório), com as suas propriedades. */ primaryButton: Partial>; /** * Botão secundário (opcional), com as suas propriedades. */ secondaryButton?: Partial>; /** * Tamanho do modal. */ size: ModalSize; /** * Essa Prop inclui um atributo data-qa com o valor configurado no botão. */ dataQA?: string; /** * Essa Prop inclui um atributo data-collect com o valor configurado no botão. */ dataCollect?: string; /** * Essa Prop inclui um atributo data-collect-info com o valor configurado no botão. */ dataCollectInfo?: string; /** * Essa Prop inclui um atributo data-testid com o valor configurado no botão. */ dataTestId?: string; /** * Atributo padrão do elemento \ do HTML. */ onCloseButton: () => void; /** * Controla se o conteúdo fica visível ou não. */ open?: boolean; } export interface ModalContainerProps { open?: boolean; size?: "small" | "medium" | "large" | "xlarge"; minWidth: string; maxWidth: string; } export interface ModalSizesProps { size?: "small" | "medium" | "large" | "xlarge"; isSmall: boolean; } export interface IGetSizeProps { size?: string; theme: Tokens; } export interface IIconSizeProps { [x: string]: "small" | "medium" | "large"; }