import { Button, ButtonProps, Size, VIEW } from '@cloud-ru/ds-button';
import { Tooltip } from '@cloud-ru/ds-tooltip';
import { ButtonDropdown, ButtonDropdownProps } from '@cloud-ru/ds-uikit-product-button-predefined';
import { ReactNode } from 'react';
import { ButtonDroplist, ButtonDroplistProps } from './buttons/ButtonDroplist';
import { ButtonKebab, ButtonKebabProps } from './buttons/ButtonKebab';
import { ButtonQuota, ButtonQuotaProps } from './buttons/ButtonQuota';
import { BUTTON_TYPE } from './constants';
import { Action } from './types';
type CommonProps = { className?: string; size?: Size; fullWidth?: boolean };
/**
* Рендерит один action. Составные варианты (`dropdown`/`kebab`/`droplist`) монтируют адаптивные
* `@ds`-примитивы, которые берут раскладку из `AdaptiveProvider`. Раскладку фиксируют обёртки
* `DesktopActions` / `MobileActions` (`withLayoutType`), поэтому отдельный проп `layoutType` не нужен.
*/
export function ActionView({
variant,
tooltip,
hidden = false,
commonProps,
...buttonProps
}: Action & { commonProps: CommonProps }) {
if (hidden) {
return null;
}
// disableSpanWrapper — кнопка остаётся ПРЯМЫМ flex-потомком контейнера действий: без него Tooltip
// добавляет span-обёртку (`flex:0 1 auto`), и `fullWidth`-кнопка (`flex:1 1 0`) не растягивается на
// всю ширину (mobile: 2 действия должны делить строку). Как в MobilePageForm ButtonGroup.
const addTooltip = (component: ReactNode) =>
tooltip ? (
{component}
) : (
component
);
switch (variant) {
case BUTTON_TYPE.Outline:
return addTooltip(