CoreCircularProgress
Примеры использования и документация.
Показывает, сколько работы сделано и идёт ли процесс вообще: кольцо заполняется на глазах, и пользователь не гадает, завис ли интерфейс. Определённый режим (дуга + процент в центре) — для загрузок и пошаговых операций; неопределённый (вращающаяся дуга) — когда длительность неизвестна. Компактный круг там, где линейный бар не встаёт: аватары, заголовки карточек, статусы строк.
Механика: SVG-кольцо, дуга стартует сверху (svg повёрнут на -90°); value клампится в 0–100, undefined — indeterminate: четверть окружности вращается CSS-анимацией (1.2s linear; prefers-reduced-motion — дуга статична). size/strokeWidth — габариты и толщина; color — семантический токен (neutral корректно берёт --ui-fg — токена --ui-neutral не существует, кольцо молча теряло обводку). showValue — процент в центре (только при переданном value); label — доступное имя: role="progressbar" с aria-valuemin/max/now требует имени, без него — локализованный «Загрузка» (coreCircularProgress.loading). flow — градиентная обводка через SVG linearGradient: id градиента стабилен (useId) — несколько колец на странице не конфликтуют.