import type { ButtonHTMLAttributes, ReactNode } from 'react'; import type { Pin } from '../../utils/roundness'; import { Blur } from '../../mixins'; import type { AsProps } from '../../types'; type Stretching = 'fixed' | 'filled' | 'auto'; type ContentPlacing = 'default' | 'relaxed'; type ContentPlacingValue = 'center' | 'space-between'; export type ContentPlacementMapper = { [K in ContentPlacing]: ContentPlacingValue; }; type RightContent = { /** * Значение кнопки */ value?: string | number; /** * Слот для контента справа, например `Icon` */ contentRight?: never; } | { /** * Значение кнопки */ value?: never; /** * Слот для контента справа, например `Icon` */ contentRight?: ReactNode; }; type CustomButtonProps = { /** * Текстовая надпись */ text?: string; /** * Слот для контента слева, например `Icon` */ contentLeft?: ReactNode; /** * Положение контента по ширине кнопки * @default 'default' */ contentPlacing?: ContentPlacing; /** * Дополнительный контент */ additionalContent?: ReactNode; /** * У кнопки состояние загрузки */ isLoading?: boolean; /** * Слот для контента загрузки */ loader?: ReactNode; /** * Кнопка растягивается на всю доступную ширину * @deprecated Использовать stretching */ stretch?: boolean; /** * Ширина кнопки * @description * Может принимать три значения: * fixed - кнопка фиксированной ширины; * filled - кнопка занимает всю доступную ширину * auto - кнопка растягивается в зависимости от контента */ stretching?: Stretching; /** * Кнопка принимает соотношение сторон 1:1 * @deprecated Использовать для этого случая IconButton */ square?: boolean; /** * Кнопка сфокусирована */ focused?: boolean; /** * Кнопка неактивна */ disabled?: boolean; /** * Свойство задает скругление border-radius */ pin?: Pin; /** * Стиль для UI конфигурации * Влияет на выбор предустановленного набора токенов * @default default */ appearance?: 'default' | 'outline'; /** * Вид кнопки */ view?: string; /** * Размер кнопки */ size?: string; /** * Добавить рамку при фокусе * @deprecated использовать focused */ outlined?: boolean; /** * Отрицательный сдвиг влево на величину, равную паддингу компонента * @deprecated */ shiftLeft?: boolean; /** * Отрицательный сдвиг вправо на величину, равную паддингу компонента * @deprecated */ shiftRight?: boolean; /** * Степень размытия фона * @deprecated для кнопок без прозрачности не работает */ blur?: Blur; }; export type ButtonProps = {} & Omit, 'value'> & AsProps & CustomButtonProps & RightContent; export {}; //# sourceMappingURL=Button.types.d.ts.map