Usage
LoadingIndicator signals that work is in progress—GraphQL fetches, report generation, attachment uploads. It answers "is anything happening?" without blocking the whole shell unless the operation truly requires it. Pair with a skeleton for longer waits to preserve layout stability; a spinner alone on a blank region undermines perceived performance compared to a skeleton that hints at the incoming shape.
formatMessage.Banner or field errors; don't spin indefinitely.prefers-reduced-motion users without swapping to a static busy indicator per the implementation.aria-busy on relevant regions; announcements should be polite, not chatty under fast polling. See Accessibility for the full contract.