Brand Design System
CommunicationMaterial Design 3

Progress Indicator

Progress indicators express an unspecified wait time or display the length of a process. They inform users about the status of ongoing processes such as loading, uploading, or processing.

Overview

Material Design offers two types of progress indicators: linear and circular. Linear progress indicators display progress as a horizontal bar. Circular progress indicators display progress as a circular stroke. Both can be determinate (showing specific progress) or indeterminate (showing ongoing activity without a known duration).

Live Preview - Linear Progress

Determinate (0%)
Indeterminate
Buffer (with background track)

Live Preview - Circular Progress

Small
Medium
Large
0%
With label

Track Variants

Standard (4px height)
Thick (8px height)
Square corners
Segmented

Brand Properties

The following table shows all CRAFT Progress Indicator properties with their default values and brand-specific mappings.

PropertyTypeMaterial DefaultHoB ValueTAE Value
Active ColorColor picker#6750A4#038012#1A5129
Track ColorColor picker#E7E0EC#e5e7eb#e5e7eb
Linear HeightInput (px)4px4px4px
Circular Size (Small)Input (px)24px32px32px
Circular Size (Medium)Input (px)40px40px40px
Circular Size (Large)Input (px)48px48px48px
Circular Stroke WidthInput (px)4px4px4px
Border RadiusInput (px)2px9999px9999px
Animation DurationInput (ms)2000ms1500ms1500ms
Animation EasingDropdownease-in-outease-in-outease-in-out
Label Font SizeDropdown12px12px12px
Label Font WeightDropdown500500500

Use Cases

Uploading document.pdf

2.4 MB of 4.8 MB

50%

Order Progress

3
4
OrderedShippedOut for DeliveryDelivered

Content Loading

Loading content...

Accessibility

  • Use role="progressbar" for determinate progress
  • Include aria-valuenow, aria-valuemin, and aria-valuemax
  • Provide aria-label or aria-labelledby for context
  • For indeterminate, use aria-busy="true" on the loading region
  • Announce progress updates at meaningful intervals (e.g., every 20%)

Best Practices

Do

  • Use determinate when duration is known
  • Show percentage or status text when helpful
  • Place progress indicators near the content they relate to
  • Use consistent styling throughout the app

Don't

  • Use fake progress that doesn't reflect actual state
  • Show multiple progress indicators simultaneously
  • Make progress bars too thin to be visible
  • Leave users without feedback during long operations

Related Components