LoadStatus
Строка загрузки: опциональный заголовок (метка, значение, процент), линейный ProgressBar и подсказка снизу. Цвет полосы — через appearanceByProgress; ошибка — showError (полоса red).
Когда использовать
- В карточках и формах, где нужно показать прогресс операции с поясняющим текстом.
- Когда нужны пороги заполнения или фиксированный цвет полосы (
appearanceByProgress). - Когда операция завершилась с ошибкой (
showError).
Когда не нужен LoadStatus:
- Только индикатор без подписей — используйте
ProgressBar. - Неопределённая загрузка страницы —
ProgressBarPage.
Анатомия
Size (default s)
Ось Figma size, прокидывается в @cloud-ru/ds-progress-bar:
s— основной размер в формах и карточках.xs— компактные списки и плотные layout’ы.
appearanceByProgress (default DEFAULT_APPEARANCE_BY_PROGRESS)
Цвет полосы: список правил { condition, limit, appearance } (eq / gt / gte / lt / lte). Первое сработавшее правило задаёт цвет. Значения appearance — из @cloud-ru/ds-progress-bar: primary, neutral, orange, yellow, green, blue, violet, pink, red.
Дефолт — зелёный / жёлтый / красный по порогам 70 / 90 / 100. Фиксированный цвет из макета (ось Figma appearance) — одно правило, например lte: 100 с нужным appearance.
showError (default false)
Ось Figma showError:
false— цвет полосы изappearanceByProgress.true— полоса всегдаred, перекрываетappearanceByProgress. В hint обычно показывают иконку (showErrorIcon).
Контент
Видимость блоков — по truthiness props (boolean-оси showLabel / showValue / showHint / showPercent в Figma только для Dev Mode):
label— основной текст слева в заголовке.value— дополнение рядом сlabel.valueType—noneилиpercent; приpercentсправа выводится{progress}%(два текстовых слоя в макете: число и%).hint— подпись под полосой; приshowErrorIconслева —NotifierCriticalFilled16px.progress— значение 0–100 для полосы и процента в заголовке.
Установка
pnpm add @cloud-ru/ds-uikit-product-load-status
import { LoadStatus } from '@cloud-ru/ds-uikit-product-load-status'
Примеры использования
Процент в заголовке
Загрузка
72%
import { LoadStatus } from '@cloud-ru/ds-uikit-product-load-status';
export function WithPercent() {
return <LoadStatus label='Загрузка' progress={72} valueType='percent' />;
}Фиксированный цвет полосы
Загрузка
65%
Статичный цвет полосы
import { APPEARANCE } from '@cloud-ru/ds-progress-bar';
import { LoadStatus, PROGRESS_LIMIT_CONDITION } from '@cloud-ru/ds-uikit-product-load-status';
export function WithAppearance() {
return (
<LoadStatus
label='Загрузка'
progress={65}
valueType='percent'
hint='Статичный цвет полосы'
appearanceByProgress={[{ condition: PROGRESS_LIMIT_CONDITION.Lte, limit: 100, appearance: APPEARANCE.Green }]}
/>
);
}Ошибка (showError)
ЗагрузкаОшибка
35%
Не удалось завершить операцию
import { LoadStatus } from '@cloud-ru/ds-uikit-product-load-status';
export function WithHintError() {
return (
<LoadStatus
label='Загрузка'
value='Ошибка'
progress={35}
valueType='percent'
hint='Не удалось завершить операцию'
showError
showErrorIcon
/>
);
}Пороги progress
Низкий
40%
Средний
75%
Высокий
95%
import { LoadStatus } from '@cloud-ru/ds-uikit-product-load-status';
export function Thresholds() {
return (
<div style={{ display: 'flex', flexDirection: 'column', gap: 16, maxWidth: 360 }}>
<LoadStatus label='Низкий' progress={40} valueType='percent' />
<LoadStatus label='Средний' progress={75} valueType='percent' />
<LoadStatus label='Высокий' progress={95} valueType='percent' />
</div>
);
}Props
Types
LoadStatusProps| Prop | Type | Default | Required | Description |
|---|---|---|---|---|
appearanceByProgress | ProgressLimitList | [
{ appearance: 'green', condition: PROGRESS_LIMIT_CONDITION.Lte, limit: 70 },
{ appearance: 'yellow', condition: PROGRESS_LIMIT_CONDITION.Lte, limit: 90 },
{ appearance: 'red', condition: PROGRESS_LIMIT_CONDITION.Lte, limit: 100 },
] satisfies ProgressLimitList | no | Правила смены цвета полосы в зависимости от `progress`; при `showError` игнорируются |
className | string | — | no | CSS-класс корневого элемента |
data-test-id | string | — | no | |
hint | string | — | no | Подска зка под полосой прогресса |
label | string | — | no | Заголовок строки загрузки |
progress | number | — | yes | Процент загрузки от 0 до 100 |
showError | boolean | — | no | Ошибка: полоса `red` |
showErrorIcon | boolean | — | no | Иконка в hint; показывается при `hint` и вместе с `showError` |
size | "s" | "xs" | s | no | Размер |
value | string | — | no | Дополнительный текст в заголовке (рядом с label) |
valueType | "none" | "percent" | none | no | Формат значения в заголовке: без процента (`none`) или с процентом (`percent`) |