import { PolymorphicRef } from '@cloud-ru/ds-card'; import { TooltipProps } from '@cloud-ru/ds-tooltip'; import { ComponentPropsWithoutRef, ElementType, ReactElement } from 'react'; import { CardPromoTagProps, FavoriteProps, VisibilityStrategy } from '../../types.js'; type BaseCardNavigationProps = { /** Иконка сервиса */ icon?: ReactElement; /** Заголовок карточки */ title: string; /** * Описание сервиса. Передано (в том числе пустой строкой) — карточка в подробном виде: с рамкой * и описанием под заголовком. Не передано — компактный вид в одну строку. * * Вид меняется без пересоздания DOM: переключение описания — обновление пропа, а не перемонтирование. */ description?: string; /** Настройки promo tag. При отсутствии не отображается */ promoTag?: CardPromoTagProps; /** Настройки обрезки текста заголовка. В подробном виде заголовок всегда в одну строку */ truncate?: { /** Максимальное количество строк заголовка */ title?: number; }; /** * Формат отображения дополнительных действий: всегда или при наведении и фокусе * @default 'hover' */ actionsVisibility?: VisibilityStrategy; /** Подсказка с иконкой «?» рядом с заголовком. Показывается только в компактном виде */ tooltip?: Omit; /** * Настройки кнопки «Избранное». * Keyboard: ArrowRight на карточке → promo tag → tooltip (если есть) → Favorite → expand; ArrowLeft — в обратном порядке. */ favorite?: FavoriteProps; /** Неактивное состояние */ disabled?: boolean; /** CSS-класс корневого элемента */ className?: string; /** Support prop для тестов */ 'data-test-id'?: string; /** Настройки кнопки раскрытия */ expandable?: { value: boolean; onClick(): void; }; }; export type CardNavigationProps = BaseCardNavigationProps & { /** Полиморфный элемент: `'button'`, `'a'`, `{Link}` и т.д. */ as?: T; /** Ref на реальный DOM-элемент / инстанс */ innerRef?: PolymorphicRef; } & Omit, keyof BaseCardNavigationProps | 'as' | 'ref'>; /** * Карточка навигации к сервису: объединяет `CardServiceLight` (компактный вид) и `CardServiceInfo` * (вид с описанием) в один компонент с одним деревом DOM. */ export declare function CardNavigation({ as, innerRef, icon, title, description, promoTag, truncate, actionsVisibility: actionsVisibilityProp, favorite, tooltip, className, disabled, expandable, 'data-test-id': dataTestId, ...rest }: CardNavigationProps): ReactElement | null; export {};