Brand Design System
CommunicationMaterial Design 3

Loading Indicator

Loading indicators inform users that content or data is being fetched or processed. They provide visual feedback during wait times to keep users informed and engaged.

Overview

Loading indicators are used when the duration of a process is unknown or when providing specific progress information is not possible. Unlike progress indicators that show a percentage, loading indicators simply communicate that something is happening. They are commonly displayed as spinners, pulsing dots, or skeleton screens.

Live Preview - Spinner Variants

Border Spinner
Dual Ring
Pulse
Ping

Dots Animation

Bouncing Dots
Fading Dots
Scaling Dots
Wave

Sizes

XS (16px)
SM (24px)
MD (40px)
LG (56px)
XL (80px)

Button Loading States

Skeleton Loading

Brand Properties

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

PropertyTypeMaterial DefaultHoB ValueTAE Value
Primary ColorColor picker#6750A4#038012#1A5129
Track ColorColor picker#E7E0EC#e5e7eb#e5e7eb
Skeleton BackgroundColor picker#E7E0EC#e5e7eb#e5e7eb
Size XSInput (px)16px16px16px
Size SMInput (px)24px24px24px
Size MDInput (px)40px40px40px
Size LGInput (px)56px56px56px
Size XLInput (px)80px80px80px
Border Width (SM)Input (px)2px2px2px
Border Width (MD/LG)Input (px)4px4px4px
Spin DurationInput (ms)1000ms1000ms1000ms
Dots CountInput (number)333
Dot SizeInput (px)10px12px12px
Dot GapInput (px)4px6px6px
Animation EasingDropdownlinearlinearlinear

Overlay Loading

Loading...
Fetching data...

Accessibility

  • Use aria-busy="true" on the container being loaded
  • Provide aria-label for spinners (e.g., "Loading")
  • Announce loading state changes with aria-live regions
  • Ensure loading indicators have sufficient color contrast
  • Do not use only animation to convey loading state - include text when possible
  • Consider users who prefer reduced motion - provide static alternatives

Best Practices

Do

  • Show loading indicators immediately when loading starts
  • Use skeleton screens for content-heavy areas
  • Place spinners near the content being loaded
  • Provide loading text for context when helpful

Don't

  • Show loading indicators for operations under 500ms
  • Use multiple different loading styles on the same page
  • Block the entire screen when only part is loading
  • Forget to handle loading errors gracefully

Related Components