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