PriceSummarySmall

Компактный вариант Figma price-summary-small: метка «Итого», сумма и опциональная function-ссылка. Без выбора периода, скидок и аккордеона invoice.

Демо

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

  • Узкая колонка или карточка, где нужен только итог и ссылка «Стоимость» / «Подробнее».
  • Состояния loading и dataError с onRetry — как у полного PriceSummary, но без детализации.

Когда не подходит:

  • Нужен период, скидки или раскрываемый заказ — PriceSummary.

Анатомия

Заголовок

Текст total из locale («Итого»).

Сумма

Typography headline + formatCurrency(value).

Опциональная Button view='function' со ссылкой (docsLink.href, docsLink.text или locale costLink).

ContentBlock

Те же loading / dataError / onRetry, что и у PriceSummary.

Установка

pnpm add @cloud-ru/ds-uikit-product-price-summary
import { PriceSummarySmall } from '@cloud-ru/ds-uikit-product-price-summary'

Базовый пример

<PriceSummarySmall
  value={9_999_999.99}
  docsLink={{ href: 'https://example.com/pricing', text: 'Подробнее о стоимости' }}
/>

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

Итог со ссылкой

Итог со ссылкойИтог и ссылка на стоимость.
tsx
import { PriceSummarySmall } from '@cloud-ru/ds-uikit-product-price-summary';

import { FIGMA_SHOWCASE_SMALL_ARGS } from '../stories/PriceSummarySmall/constants';
import styles from './demoSurface.module.scss';

export function PriceSummarySmallDemo() {
  return (
    <div className={styles.surface}>
      <PriceSummarySmall {...FIGMA_SHOWCASE_SMALL_ARGS} />
    </div>
  );
}

Загрузка

ЗагрузкаСостояние loading — skeleton вместо суммы.
tsx
import { PriceSummarySmall } from '@cloud-ru/ds-uikit-product-price-summary';

import styles from '../demoSurface.module.scss';

export function SmallLoading() {
  return (
    <div className={styles.surface}>
      <PriceSummarySmall value={undefined} loading />
    </div>
  );
}

Ошибка данных

Ошибка данныхdataError с onRetry: повторный запрос показывает loading и затем сумму.
tsx
import { PriceSummarySmall } from '@cloud-ru/ds-uikit-product-price-summary';
import { useState } from 'react';

import styles from '../demoSurface.module.scss';

export function SmallError() {
  const [loading, setLoading] = useState(false);
  const [dataError, setDataError] = useState(true);

  const handleRetry = () => {
    setLoading(true);

    setTimeout(() => {
      setLoading(false);
      setDataError(false);
    }, 800);
  };

  return (
    <div className={styles.surface}>
      <PriceSummarySmall value={10800} loading={loading} dataError={dataError} onRetry={handleRetry} />
    </div>
  );
}

Props

Types

PropsPriceSummarySmallProps
PropTypeDefaultRequiredDescription
classNamestringnoДополнительный класс корневого контейнера.
data-test-idstringno
dataErrorbooleanno
docsLink{ href?: string; label?: string; } | undefinednoFunction-ссылка внизу блока.
hintTooltipTextReactNodenoКонтент подсказки для иконки рядом с итоговой суммой.
loadingbooleanno
onRetry(() => void)no
valuenumber0noИтоговая сумма.

Types

PriceSummarySmallProps

Storybook

Figma