Favourite

Toggle для «избранного» — карточка товара, трек в плейлисте, пост в ленте. Переключается между пустой и заполненной иконкой (звезда или сердце).

Когда использовать

  • «Добавить в избранное», «лайк», «в wishlist».
  • Каталоги, ленты, плейлисты — любой UI с персональными коллекциями.

Когда не нужен Favourite: для булевых настроек — Switch; для выбора опций — Checkbox.

Анатомия

Size

xs — для плотных списков, s — дефолт в карточках.

Favourite icon

Форма иконки: star — «в избранное», heart — «нравится».

Установка

pnpm add @cloud-ru/ds-toggles
import { Favourite } from '@cloud-ru/ds-toggles'

Примеры использования

1. Звезда

1. Звезда
tsx
import { Favourite } from '@cloud-ru/ds-toggles';

export function FavouriteStar() {
  return <Favourite icon='star' defaultChecked />;
}

2. Сердце

2. Сердце
tsx
import { Favourite } from '@cloud-ru/ds-toggles';

export function FavouriteHeart() {
  return <Favourite icon='heart' defaultChecked />;
}

3. Все состояния

3. Все состояния
tsx
import { Favourite } from '@cloud-ru/ds-toggles';

export function FavouriteStates() {
  return (
    <div style={{ display: 'flex', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
      <Favourite icon='star' />
      <Favourite icon='star' defaultChecked />
      <Favourite icon='heart' disabled />
      <Favourite icon='heart' loading />
    </div>
  );
}

Props

Types

PropsFavouriteProps
PropTypeDefaultRequiredDescription
autofocusboolean—noHTML-аттрибут autofocus
checkedboolean—noHTML-аттрибут checked
classNamestring—noCSS-класс
data-test-idstring—no
defaultCheckedboolean—noHTML-аттрибут checked по-умолчанию
disabledbooleanfalsenoHTML-аттрибут disabled
icon"heart" | "star"heartnoВариант иконки: звезда или сердце
idstring—noHTML-аттрибут id
inputRefRefObject<HTMLInputElement>—no
loadingbooleanfalsenoСостояние загрузки
namestring—noHTML-аттрибут name
onBlurFocusEventHandler<HTMLInputElement>—noКолбек потери фокуса
onChange((checked: boolean) => void)—noКолбек смены значения
onClickMouseEventHandler<HTMLInputElement>—noКолбек клика
onFocusFocusEventHandler<HTMLInputElement>—noКолбек приобретения фокуса
onKeyUpKeyboardEventHandler<HTMLSpanElement>—noОбработчик keyup
size"s" | "xs"snoРазмер
tabIndexnumber—noHTML-аттрибут tab-index
valuestring—noHTML-аттрибут value

Unions

Types

FavouriteProps

Unions

Storybook

Figma