SAFEBOX WALKING LOADER

The official SafeBox loading animation — SafeBox Man walks while your content loads, sets the box down with a green check when it's ready. Replaces every generic spinner across the SafeBox platform.

Live — walk loop → completion

The loader finishes its current stride before playing the completion, so the hand-off never jumps.

Sizes

One vector asset, crisp at any size. Status messages appear automatically when an operation runs past ~2 seconds.

48 px — inline
96 px — default
160 px — full page, with status messages

Dark mode

The white contour keeps the silhouette readable on dark surfaces — no separate asset needed.

Lottie version

loader.json — 25 KB, markers loop (0–57) and done (57–78). Drive the completion with playSegments.

Assets

FileUseSize
loader.jsonLottie — primary animation asset (lottie-web / dotLottie players)25 KB
loader.lottiedotLottie bundle2.4 KB
loader.svgSelf-animating SVG — zero dependencies, use as <img> or inline10 KB
safebox-loader.jsWeb component <safebox-loader> (this page uses it)16 KB
SafeBoxLoader.tsxReact component for the Lovable customer app15 KB
loader.webpAnimated WebP fallback (email, no-JS)164 KB
loader.gifGIF fallback (last resort — binary alpha)148 KB
loader.pngStatic poster (reduced-motion / print)28 KB

Integration

Framework-free page:

<script src="safebox-loader.js"></script>
<safebox-loader size="96"></safebox-loader>
<!-- when the request resolves: -->
<script>loaderEl.setAttribute('state','done');
loaderEl.addEventListener('done', () => overlay.remove());</script>

React (Lovable):

import SafeBoxLoader from "@/components/SafeBoxLoader";

{isLoading
  ? <SafeBoxLoader size={120} />
  : <Content />}
// or play the completion before revealing:
<SafeBoxLoader state={isLoading ? "loading" : "done"}
  onDone={() => setShowContent(true)} />

Accessibility & performance: tab hidden → animation pauses; prefers-reduced-motion → static mascot with a soft opacity pulse; pure CSS/SVG transforms — no layout shift, no JS on the hot path.