npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@cloud-ru/ds-progress-bar

v1.0.1

Published

Пакет индикаторов прогресса дизайн-системы — линейный ProgressBar, круговой ProgressBarCircle и верхний page-индикатор ProgressBarPage.

Downloads

1,488

Readme

ProgressBar

@cloud-ru/ds-progress-bar — Пакет индикаторов прогресса дизайн-системы — линейный ProgressBar, круговой ProgressBarCircle и верхний page-индикатор ProgressBarPage.

Пакет @cloud-ru/ds-progress-bar предоставляет три компонента для отображения хода длительных операций и загрузки страниц: линейный, круговой и page-индикатор поверх layout'а.

  • ProgressBar — линейный детерминированный индикатор. Показывает явный процент от 0 до 100.
  • ProgressBarCircle — круговой детерминированный индикатор. Используется в компактных местах: карточках, таблицах, тулбарах.
  • ProgressBarPage — неопределённый индикатор загрузки поверх страницы. Автоматически растёт, пока inProgress=true, и исчезает после завершения.

Установка

pnpm add @cloud-ru/ds-progress-bar
import { ProgressBar, ProgressBarCircle, ProgressBarPage } from '@cloud-ru/ds-progress-bar'

ProgressBar

Линейный детерминированный индикатор прогресса — размеры xs/s и девять appearance.

Линейный детерминированный индикатор. Используется для отображения явного хода операции в диапазоне от 0 до 100 процентов.

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

  • Загрузка файла, экспорт, импорт с известным прогрессом.
  • Пошаговые формы и wizard'ы — процент заполнения.
  • Длительные операции, где пользователь ждёт явного завершения.

Когда не нужен ProgressBar: для неопределённой загрузки страницы используйте ProgressBarPage; для компактных мест в таблицах и карточках — ProgressBarCircle.

Анатомия

Size

xs — дефолт, тонкая полоса под контролом или в строке таблицы; s — более заметный прогресс в карточках и формах.

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

Статическое значение

Фиксированный прогресс 40%

import { ProgressBar } from '@cloud-ru/ds-progress-bar';

export function Static() {
  return <ProgressBar progress={40} />;
}

Анимированный прогресс

Значение обновляется в useEffect — компонент плавно догоняет

import { ProgressBar } from '@cloud-ru/ds-progress-bar';
import { useEffect, useState } from 'react';

export function AnimatedProgress() {
  const [value, setValue] = useState(0);

  useEffect(() => {
    const id = setInterval(() => {
      setValue(prev => (prev >= 100 ? 0 : prev + 5));
    }, 400);
    return () => clearInterval(id);
  }, []);

  return <ProgressBar progress={value} />;
}

Три appearance в ряд

Основные семантические роли

import { APPEARANCE, ProgressBar } from '@cloud-ru/ds-progress-bar';

export function Appearances() {
  return (
    <div style={{ display: 'flex', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
      <ProgressBar progress={60} appearance={APPEARANCE.Primary} />
      <ProgressBar progress={60} appearance={APPEARANCE.Green} />
      <ProgressBar progress={60} appearance={APPEARANCE.Red} />
    </div>
  );
}

Два размера

import { PROGRESS_BAR_SIZE, ProgressBar } from '@cloud-ru/ds-progress-bar';

export function Sizes() {
  return (
    <div style={{ display: 'flex', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
      <ProgressBar progress={40} size={PROGRESS_BAR_SIZE.XS} />
      <ProgressBar progress={40} size={PROGRESS_BAR_SIZE.S} />
    </div>
  );
}

Props

ProgressBarProps

| Prop | Type | Default | Description | |------|------|---------|-------------| | appearance | "blue" | "green" | "neutral" | "orange" | "pink" | "primary" | "red" | "violet" | "yellow" | — | Внешний вид | | className | string | — | CSS-класс | | data-test-id | string | — | | | progress | number | — | Процент загрузки от 0 до 100 | | size | "s" | "xs" | s | Размер |

Related types
  • Appearance = "blue" | "green" | "neutral" | "orange" | "pink" | "primary" | "red" | "violet" | "yellow"

  • ProgressBarSize = "s" | "xs"

ProgressBarCircle

Круговой детерминированный индикатор прогресса для компактных мест — карточек, таблиц, тулбаров.

Круговой детерминированный индикатор. Занимает минимум места и хорошо читается в плотных интерфейсах — рядом с аватаром при upload, в ячейке таблицы, в карточке файла.

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

  • Индикатор загрузки рядом с аватаром или миниатюрой.
  • Прогресс в ячейках таблицы или в списке файлов.
  • Там, где линейный индикатор слишком широкий.

Когда не нужен ProgressBarCircle: если есть горизонтальное место и вы хотите показать явный процент рядом — возьмите линейный ProgressBar.

Анатомия

Size

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

Appearance

Семантика цвета заполненной дуги: primary — бренд/нейтральный; red — ошибка/превышение лимита; orange/yellow — предупреждение; green — успех; blue, violet, pink — декоративные категории.

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

Значение 75%

import { ProgressBarCircle } from '@cloud-ru/ds-progress-bar';

export function CircleStatic() {
  return <ProgressBarCircle progress={75} />;
}

Три appearance

Primary, успех и ошибка

import { APPEARANCE, ProgressBarCircle } from '@cloud-ru/ds-progress-bar';

export function CircleAppearances() {
  return (
    <div style={{ display: 'flex', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
      <ProgressBarCircle progress={60} appearance={APPEARANCE.Primary} />
      <ProgressBarCircle progress={60} appearance={APPEARANCE.Green} />
      <ProgressBarCircle progress={60} appearance={APPEARANCE.Red} />
    </div>
  );
}

Props

ProgressBarCircleProps

| Prop | Type | Default | Description | |------|------|---------|-------------| | appearance | "blue" | "green" | "neutral" | "orange" | "pink" | "primary" | "red" | "violet" | "yellow" | primary | Внешний вид | | className | string | — | CSS-класс | | data-test-id | string | — | | | progress | number | — | Процент загрузки от 0 до 100 | | size | "s" | "xs" | s | Размер |

Related types
  • Appearance = "blue" | "green" | "neutral" | "orange" | "pink" | "primary" | "red" | "violet" | "yellow"

  • ProgressBarCircleSize = "s" | "xs"

ProgressBarPage

Неопределённый индикатор загрузки страницы — автоматически растёт, пока inProgress=true, и исчезает после завершения.

Тонкая полоска-индикатор в верхней части страницы. Похожа на классический nprogress — не знает настоящего процента, но создаёт ощущение движения для пользователя во время навигации или длительной загрузки.

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

  • Индикация навигации между страницами (роутинг SPA).
  • Длительная загрузка данных без детерминированного прогресса.
  • Глобальный busy-индикатор уровня layout'а.

Когда не нужен ProgressBarPage: если известен реальный процент — используйте детерминированный ProgressBar. Не показывайте ProgressBarPage для быстрых операций (< 200 мс) — это отвлекает.

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

Переключение inProgress

Живой сценарий — запустите и остановите загрузку

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

ProgressBarPageProps

| Prop | Type | Default | Description | |------|------|---------|-------------| | animationDuration | number | 200 | Скорость анимации | | appearance | "blue" | "green" | "neutral" | "orange" | "pink" | "primary" | "red" | "violet" | "yellow" | — | Внешний вид | | className | string | — | CSS-класс | | data-test-id | string | — | | | inProgress | boolean | — | Включен/выключен | | incrementDuration | number | 800 | Время между прогрессом | | minimum | number | — | Минимальное значение прогресс бара от 0 до 1 |

Related types
  • Appearance = "blue" | "green" | "neutral" | "orange" | "pink" | "primary" | "red" | "violet" | "yellow"