Skip to main content
ProgressCircle ← Back to Table of Contents

Summary

High-performance SVG circular progress indicator. Supports full-circle and semi-circle variants, rounded stroke caps, centered or side-aligned content, and advanced gradient strokes for both fill and track.
ClassBjanczak\FilamentFlexFields\Filament\Schemas\Components\ProgressCircle
StateNone — display-only schema component
Playgroundprogress-circle slug in Flex Fields playground
StylesheetLazy progress-circle bundle

Basic usage

Standard circle

use Bjanczak\FilamentFlexFields\Filament\Schemas\Components\ProgressCircle;

ProgressCircle::make()
    ->value(75)
    ->displayValue('75%')
    ->color('primary');

Semicircle with gradient

ProgressCircle::make()
    ->variant('semicircle')
    ->value(69)
    ->gapAngle(24)
    ->gradientFrom('#6366f1')
    ->gradientTo('#ec4899')
    ->label('Completion rate');

Card layout with side content

ProgressCircle::make()
    ->value(82)
    ->contentLayout('left')
    ->shell()
    ->heading('Storage used')
    ->description('Last 30 days')
    ->footer('Updated 5m ago');

Configuration API

All methods accept Closure unless noted.
MethodTypeDefaultDescription
value(float|int|Closure|null $value)Setup0Arc fill ratio.
max(float|int|Closure $max)Setup100Maximum progress value.
displayValue(string|Closure|null $value)SetupnullPrimary center text. Auto-derived from percent when omitted.
fraction(string|Closure|null $fraction)SetupnullSecondary line (e.g., “124 / 200”) shown below display value.
label(string|Closure|null $label)SetupnullTertiary label shown at the bottom.
variant(string|Closure $variant)Setup'circle'circle (full ring) or semicircle (bottom arc).
gapAngle(float|int|Closure $degrees)Setup0Degrees of empty gap at the bottom of the arc.
paused(bool|Closure $condition = true)SetupfalseShow paused state with center icon instead of text.
pausedIcon(mixed $icon)SetupPauseFillIcon to show when paused() is true.
color(string|Closure|null $color)SetupprimarySemantic stroke color.
size(string|Closure $size)Setup'md'Diameter scale: sm, md, lg.
gradientFrom(string|Closure $color)SetupnullStart color for progress stroke gradient.
gradientTo(string|Closure $color)SetupnullEnd color for progress stroke gradient.
gradientStroke(string|Closure $css)SetupnullRaw CSS gradient string for fill stroke.
trackGradientFrom(string|Closure $color)SetupnullStart color for track (unfilled) gradient.
trackGradientTo(string|Closure $color)SetupnullEnd color for track (unfilled) gradient.
contentLayout(string|Closure $layout)Setup'center'Text position: center, left, right, above.
shell(bool|Closure $condition = true)SetupfalseWrap in an elevated card container.
heading(string|Closure $text)SetupnullCard heading (requires shell()).
description(string|Closure $text)SetupnullCard description (requires shell()).
footer(string|Closure $text)SetupnullCard footer (requires shell()).
animated(bool|Closure $condition = true)SetuptrueAnimate fill transitions.
animationDuration(int|Closure $ms)Setup400Transition duration in milliseconds.

Real-world examples

Dashboard Completion Rate

ProgressCircle::make()
    ->value(fn () => $this->getCompletionRate())
    ->variant('semicircle')
    ->gapAngle(30)
    ->size('lg')
    ->color('success')
    ->label('Profile completion')
    ->shell();

Storage Usage with Fraction

ProgressCircle::make()
    ->value(18.5)
    ->max(20)
    ->displayValue('92%')
    ->fraction('18.5GB / 20GB')
    ->color('warning')
    ->size('md');

Playground

/admin/flex-fields-playground/progress-circle See Playground for setup.
ComponentWhen to use instead
ProgressBarLinear progress for uploads or stepped trackers.
RatingFieldStar/icon ratings for user feedback.
CoverCardMedia-heavy cards with background images.

CSS classes (reference)

ClassRole
fff-progress-circleRoot wrapper
fff-progress-circle--{sm|md|lg}Size variant
fff-progress-circle--semicircleSemicircle variant modifier
fff-progress-circle--has-shellCard shell active
fff-progress-circle--layout-{center|left|right|above}Content alignment
fff-progress-circle__svgSVG element
fff-progress-circle__trackUnfilled background arc
fff-progress-circle__fillAnimated progress arc
fff-progress-circle__contentCentered text container
fff-progress-circle__display-valuePrimary numeric text
fff-progress-circle__fractionSecondary fraction text
fff-progress-circle__labelBottom label text