Loading

Reusable loading elements designed to communicate progress, waiting states, and ongoing activity across the interface. Built as components, they make it easy to update icons and interactions in one place and apply those changes consistently across the project.
Local
Important: To adjust the color or size of a loading element, place it inside the matching class element designed to control its styling. This keeps the loader structure consistent while allowing the visual appearance to be updated through the surrounding class setup.

Dots

A loading element that uses animated dots to communicate waiting states, ongoing activity, and processing feedback across the interface.
The dot loaders are built from text elements, so their size is controlled through text size settings. Larger dot loaders use the (•••) symbol to create a more visual loading element, while smaller inline loaders use (...) so they can work naturally at the end of text, such as Loading...

This makes the dot loaders easy to scale, align, and adapt through typography settings without manually resizing individual shapes.
The dot loading animations are controlled in the Interactions (X) panel under Loading - Dots Wave, Loading - Dots Pulse, and Loading - Dots Scale.

Each loading-dots wrapper uses an addon class—is-wave, is-pulse, or is-scale—to filter which loading elements the interaction targets. The interactions then animate the related animation-loading-dot- elements inside that wrapper.

Keep the addon classes and animation element class names connected to the documented structure so each loading sequence runs correctly.
Wave
loading-dots
is-wave
|
|
animation-loading-dot-1
|
animation-loading-dot-2
|
animation-loading-dot-3
Basic
Loading - Dot Wave
•
•
•
Text
Loading - Dot Wave Text
.
.
.
Pulse
loading-dots
is-pulse
|
|
animation-loading-dot-1
|
animation-loading-dot-2
|
animation-loading-dot-3
Basic
Loading - Dot Pulse
•
•
•
Text
Loading - Dot Pulse Text
.
.
.
Scale
loading-dots
is-scale
|
|
animation-loading-dot-1
|
animation-loading-dot-2
|
animation-loading-dot-3
Basic
Loading - Dot Scale
•
•
•
Text
Loading - Dot Scale Text
.
.
.
Loading Dots Wrapper
A base wrapper used to structure dot-based loading elements and keep their spacing, alignment, and animation behavior consistent across the interface.
loading-dots

Spinners

A rotating loading element designed to communicate ongoing actions and processing states clearly.
The spinner animations are controlled in the Interactions (X) panel under Loading - Spinner Ring and Loading - Spinner.

‍Loading - Spinner Ring controls the rotating ring variations and targets the related animation-spinner-ring- elements. Loading - Spinner controls the spiked, dashed, and dotted spinner variations through their animation elements.

Keep the documented animation classes and component structure unchanged so each spinner can complete its rotation correctly. Faster and slower variations use their related animation classes to adjust the rotation speed.
Spinner Ring
icon-size-*
|
|
animation-spinner-ring
|
|
loading-ring-track
|
loading-ring-content
|
|
loading-ring-half
|
|
animation-spinner-ring-*
Without Track
Loading - Spinner Ring
is-track-hidden
With Track
Loading - Spinner Ring
is-track-visible
Faster Rotation
icon-size-*
|
|
animation-spinner-faster
Spinner Ring 1/4
Loading - Spinner Ring 1/4
Spinner Ring 3/4 without Track
Loading - Spinner Ring 3/4
is-track-hidden
Spinner Ring 3/4 with Track
Loading - Spinner Ring 3/4
is-track-visible
Spinner Ring 2x2 without Track
Loading - Spinner Ring 2x2
is-track-hidden
Spinner Ring 2x2 with Track
Loading - Spinner Ring 2x2
is-track-visible
Graduated Spinner Ring
Loading - Graduated Spinner Ring
Graduated Spinner Ring Fade
Loading - Graduated Spinner Ring Fade
Slower Rotation
icon-size-*
|
|
animation-spinner-slower
Spiked Spinner
Loading - Spiked Spinner
Spiked Spinner Fade
Loading - Spiked Spinner Fade
Dashed Spinner
Loading - Dashed Spinner
Dashed Spinner Fade
Loading - Dashed Spinner Fade
Dotted Spinner
Loading - Dotted Spinner
Dotted Spinner Fade
Loading - Dotted Spinner Fade
Graduated Dotted Spinner
Loading - Graduated Dotted Spinner
Graduated Dotted Spinner Fade
Loading - Graduated Dotted Spinner Fade

Button Loading

A reusable button loading component designed to keep loading icon animations consistent across the site. Any updates made to this component will automatically apply wherever the button loading animation is used.
Animation - Button Loading
Global

Page Loading Component

A full-page loading component designed to communicate page transitions, loading states, and ongoing activity across the interface.
The
Brand - Page Loading
 component is placed inside
Autoload - Page Loading
 which needs to be nested within
Global
 if you want the loader to appear across every page. Any changes made to the component below will automatically apply across the site.
Brand - Page Loading
loading-page
0
%

Page Loading Line

A horizontal page loading element designed to communicate progress and ongoing activity during page-level loading states.
Loading - Line
loading-line
|
|
animation-loading-line

Page Loading Ring

Loading elements designed for page-level use, including bar and circular variations to support different loading experiences across the interface.
loading-ring
|
|
loading-ring-content
|
|
loading-ring-track
|
|
width-50
|
|
animation-loading-ring-end
|
animation-loading-ring-start
Ring without Track
Loading - Ring
is-track-hidden
Ring with Track
Loading - Ring
is-track-visible
Track
Loading - Ring Track

Page Loading %

A page loading element designed to display loading progress as a percentage during page-level transitions and loading states.
Loading - Percentage
0
%
The attribute b-loading = percentage is added to the # element.
Custom Behavior -
Page Loading

Loading Page Progress

The Loading Page Progress behavior controls the visual loading animation for the autoload-page-loading wrapper. It supports line-based loaders, ring-based loaders, percentage text, and percentage counter elements.

This is designed to keep the loading page hidden while working in the Designer, then force it to display on the published site when the page begins loading. After the loading sequence finishes, the wrapper fades out and is set back to display none.

‍

How It Works

The main loading wrapper uses the class autoload-page-loading.

This is the full-page loading element that appears while the page is loading.

Inside the wrapper, the code can control the following loading elements:

animation-loading-line

animation-loading-ring-start

animation-loading-ring-end

b-loading = percentage

The code automatically checks which of these elements exist on the page. This means the same code can be used for a line loader, a ring loader, a percentage loader, or a combination of all of them.

‍

Designer And Published Site Behavior

The autoload-page-loading element can be set to display none so it does not interfere while building the page in the Designer.

The CSS in the code keeps the loader hidden inside the Designer and forces it to display on the published site.

This allows the loading page to stay out of the way while editing, but still appear immediately when the published page loads.

‍

Loading Line

The line loader uses the class animation-loading-line.

This element is animated from 0% width to 100% width.

If there is more than one animation-loading-line element on the page, all of them will animate together.

The outer line wrapper can use a class such as loading-line.

The wrapper usually acts as the track, while animation-loading-line acts as the inner fill element.

‍

Loading Ring

The ring loader uses two separate elements:

animation-loading-ring-start

animation-loading-ring-end

The ring is built from two halves. The first half rotates during the first 50% of the loading progress. The second half rotates during the second 50%.

Each half rotates up to 180 degrees.

Together, they create a complete circular loading animation.

‍

Percentage Text

The visible percentage number uses the attribute b-loading = percentage.

The code updates this element from 0 to 100 based on the current loading progress.

If multiple percentage text elements are used, all of them will update together.

‍

Minimum Intro Duration

The code includes a minimum intro duration of 2000 milliseconds.

This means the loader will stay active for at least 2 seconds before it is allowed to finish.

During this intro duration, the loader animates from 0% to 50%.

This creates a more intentional loading experience and prevents the loader from flashing too quickly on pages that load almost instantly.

‍

Intro Progress

The intro progress is set to 50%.

This means the first phase of the loader ends at 50%.

The loader does not immediately complete to 100% during the intro. It waits until the minimum intro duration has passed and the page has loaded.

‍

Easing

The intro animation uses a soft Power 1 In/Out-style transition.

This means the animation starts smoothly, speeds up through the middle, and slows down as it reaches 50%.

This creates a smoother and more polished motion than a linear loading animation.

‍

Waiting For The Page To Load

After the intro duration is complete, the code checks whether the page has fully loaded.

If the page has loaded, the loader continues to 100%.

If the page is still loading, the loader continues slowly toward 92%.

This means the loader can continue moving up to 92%, but it will not complete to 100% until the page has loaded.

This prevents the loader from showing 100% while the page is still loading.

‍

Fallback Duration

The code includes a fallback duration of 6000 milliseconds.

If the browser load event takes too long or is delayed by an external asset, the loader is forced to finish after 6 seconds.

This prevents the loader from getting stuck on the screen.

‍

Finish And Fade Out

Once the page is loaded and the progress reaches 100%, the loader briefly holds its completed state.

The completed state is held for 150 milliseconds.

After that, the loader fades out over 500 milliseconds.

The fade is applied through opacity, moving from visible to transparent.

Once the fade is complete, the loader is set back to display none.

This removes the loader from the page flow and prevents it from blocking clicks, scroll, or interactions.

‍

Multiple Elements

The code supports multiple elements with the same loading classes or attributes.

For example, you can use multiple animation-loading-line elements or multiple b-loading = percentage elements, and they will all stay synchronized.

This is useful when a loader design has repeated visual elements or when the same progress needs to appear in different places.

Load Once

The Page Loading Show Once code controls whether the autoload-page-loading wrapper should appear only the first time a visitor loads a specific page.

This code uses the browser’s localStorage to remember whether the visitor has already seen the loader on the current page path.

‍

How It Works

The code looks for all elements with the class autoload-page-loading.

If no loader elements are found, the code stops.

It then creates a unique page key using the current page path.

The saved key is based on b_page_loaded_ plus the current page path.

For example, the homepage and an about page would each have their own saved loading state.

If the visitor has already loaded the current page before, the loader is hidden using display none.

If the visitor has not loaded the current page before, the loader is shown using display block.

After the first visit, the page is saved in localStorage as loaded.

This means the loader will only appear once per page for that visitor.

Recommended Setup

Set autoload-page-loading to display none in the Designer.

Add the loading progress elements inside the autoload-page-loading wrapper.

Use animation-loading-line for line progress.

Use animation-loading-ring-start and animation-loading-ring-end for ring progress.

Use b-loading = percentage for visible percentage text.

Keep the loader hidden in the Designer and let the custom code control its display on the published site.

‍

When To Use This Custom Behavior

Use this system when a page needs a polished branded loading sequence, a first impression animation, or a visual transition before the page content becomes available.

The full progress version is best for pages where the loader should feel active and responsive.

The show-once version is best for intro-style loaders that should not repeat every time the visitor returns to the same page.