Loader
An indicator that shows a loading state.
Usage
Loader is an indeterminate progress indicator — it conveys "working on it" without a percentage. It comes in two shapes via variant: bar (a track with a sweeping fill, the default) and dots (three dots flowing left to right). Both read a little more like progress than a Spinner, so they suit section- and status-level waits.
Like the spinner, it's sized by font-size — set a text-* class (or inherit 1em) to scale it — and currentColor makes it match the surrounding text instead of the primary accent. It renders a role="status" element labelled "Loading".
Use Loader for "this area is loading", inline status text, and "load more" buttons. For a compact spinner inside a small button or icon button, reach for Spinner instead.
Examples
Variants
Two shapes: bar (a sweeping track) and dots (a flowing trio). Both loop indefinitely and honour prefers-reduced-motion by holding a static frame.
Sizing
The loader scales with font-size, so a text-* utility resizes it — there's no size prop. Its width/height ratio is fixed, so it grows proportionally.
Color
By default the loader uses the primary accent (with a soft track on the bar). Add currentColor and it adopts the surrounding text color instead.
Load more
A "load more" button that shows the dots loader while the next page fetches. currentColor matches the button text.
Section loading
Drive a panel from your own loading state — show a centred loader while data is in flight, then swap in the content. The Refresh button re-runs it.
Inline status
Set currentColor and drop a loader straight into a line of text — sized in em, it sits on the baseline next to a "syncing…" or "uploading…" message and takes the text's color.
RTL
Every Appica UI component supports right-to-left layouts out of the box. Set the dir attribute on a container (commonly your <html> element) so CSS logical properties resolve correctly, and wrap your tree in DirectionProvider so direction-aware behavior follows the same direction.
Beside text, the loader sits on the correct side under RTL since it follows the inline flow. For setup details and caveats, see the RTL guide.
API reference
Loader renders a single <span role="status"> and forwards ref, className, and any other span attributes.
Accessibility
- The loader is a
role="status"live region with a defaultaria-label="Loading"; pass a more specific label (e.g. "Uploading files") when it helps. - When a loader replaces a section's content, keep one labelled status in the region rather than several, so screen readers announce a single "loading" state.
- A loader sitting beside text that already states the status can be marked
aria-hiddento avoid a duplicate announcement. - The animation is replaced by a static frame when the user prefers reduced motion.