ProgressBarPage
Тонкая полоска-индикатор в верхней части страницы. Похожа на классический nprogress — не знает настоящего процента, но создаёт ощущение движения для пользователя во время навигации или длительной загрузки.
Демо
Когда использовать
- Индикация навигации между страницами (роутинг SPA).
- Длительная загрузка данных без детерминированного прогресса.
- Глобальный busy-индикатор уровня layout’а.
Когда не нужен ProgressBarPage: если известен реальный процент — используйте детерминированный ProgressBar. Не показывайте ProgressBarPage для быстрых операций (< 200 мс) — это отвлекает.
Установка
pnpm add @cloud-ru/ds-progress-bar
import { ProgressBarPage } from '@cloud-ru/ds-progress-bar'
Примеры использования
Переключение inProgress
tsx
import { ProgressBarPage } from '@cloud-ru/ds-progress-bar';
import { useState } from 'react';
export function PageToggle() {
const [loading, setLoading] = useState(false);
return (
<>
<ProgressBarPage inProgress={loading} />
<button type='button' onClick={() => setLoading(v => !v)}>
{loading ? 'Stop' : 'Start'} loading
</button>
</>
);
}Props
Types
Props
ProgressBarPageProps| Prop | Type | Default | Required | Description |
|---|---|---|---|---|
animationDuration | number | 200 | no | Скорость анимации |
appearance | "blue" | "green" | "neutral" | "orange" | "pink" | "primary" | "red" | "violet" | "yellow" | — | no | Внешний вид |
className | string | — | no | CSS-класс |
data-test-id | string | — | no | |
inProgress | boolean | — | yes | Включен/выключен |
incrementDuration | number | 800 | no | Время между прогрессом |
minimum | number | — | no | Минимальное значение прогресс бара от 0 до 1 |