- Prop
variant- Type
"signal-weave" | "core-breath" | "relay-loop" | "split-beat" | "pixel-rain" | "quiet-static" | "diagonal-scan" | "radar-sweep" | "cross-pulse" | "corner-chase" | "row-shift" | "orbit-collapse" | "helix-twist" | "prism-burst" | "comet-trail" | "wave-fold" | "portal-ring" | "star-flare" | undefined- Default
"signal-weave"- Requirement
- optional
- Description
- Animation pattern.
Docs Components Primitives
DotMatrixLoader
React example follows below.
Vue example follows below.
Angular example follows below.
Svelte example follows below.
Solid example follows below.
- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
const dotMatrixLoaderFixture = { id: "dot-matrix-loader", variants: [ { variant: "signal-weave", size: "sm", speed: 1, label: "Loading signals", paused: false, }, { variant: "core-breath", size: "md", speed: 0.8, label: "Resolving core", paused: false, }, { variant: "relay-loop", size: "lg", speed: 1.2, label: "Relaying updates", paused: false, }, { variant: "split-beat", size: "sm", speed: 1.4, label: "Synchronizing", paused: false, }, { variant: "pixel-rain", size: "md", speed: 0.7, label: "Fetching pixels", paused: false, }, { variant: "quiet-static", size: "lg", speed: 1, label: "Preview paused", paused: true, }, { variant: "diagonal-scan", size: "sm", speed: 1.1, label: "Scanning diagonally", paused: false, }, { variant: "radar-sweep", size: "md", speed: 0.9, label: "Sweeping radar", paused: false, }, { variant: "cross-pulse", size: "lg", speed: 1.2, label: "Pulsing connection", paused: false, }, { variant: "corner-chase", size: "sm", speed: 1.3, label: "Checking corners", paused: false, }, { variant: "row-shift", size: "md", speed: 1, label: "Shifting rows", paused: false, }, { variant: "orbit-collapse", size: "lg", speed: 0.8, label: "Collapsing orbit", paused: false, }, { variant: "helix-twist", size: "sm", speed: 1.1, label: "Twisting helix", paused: false, }, { variant: "prism-burst", size: "md", speed: 0.9, label: "Refracting prism", paused: false, }, { variant: "comet-trail", size: "lg", speed: 1.2, label: "Tracking comet", paused: false, }, { variant: "wave-fold", size: "sm", speed: 1.3, label: "Folding wave", paused: false, }, { variant: "portal-ring", size: "md", speed: 1, label: "Opening portal", paused: false, }, { variant: "star-flare", size: "lg", speed: 0.8, label: "Flaring star", paused: false, }, ],} as const; import { DotMatrixLoader } from "@grassroot/ui-react"; export default function DotMatrixLoaderDemo() { return ( <div aria-hidden="true" className="vs-dmx-list"> {dotMatrixLoaderFixture.variants.map((entry) => ( <figure key={entry.variant} className="vs-dmx-preview"> <DotMatrixLoader variant={entry.variant} size={entry.size} speed={entry.speed} label={entry.label} paused={entry.paused} /> <figcaption className="vs-dmx-preview__label">{entry.variant}</figcaption> </figure> ))} </div> );}- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
<script setup lang="ts">const dotMatrixLoaderFixture = { id: "dot-matrix-loader", variants: [ { variant: "signal-weave", size: "sm", speed: 1, label: "Loading signals", paused: false, }, { variant: "core-breath", size: "md", speed: 0.8, label: "Resolving core", paused: false, }, { variant: "relay-loop", size: "lg", speed: 1.2, label: "Relaying updates", paused: false, }, { variant: "split-beat", size: "sm", speed: 1.4, label: "Synchronizing", paused: false, }, { variant: "pixel-rain", size: "md", speed: 0.7, label: "Fetching pixels", paused: false, }, { variant: "quiet-static", size: "lg", speed: 1, label: "Preview paused", paused: true, }, { variant: "diagonal-scan", size: "sm", speed: 1.1, label: "Scanning diagonally", paused: false, }, { variant: "radar-sweep", size: "md", speed: 0.9, label: "Sweeping radar", paused: false, }, { variant: "cross-pulse", size: "lg", speed: 1.2, label: "Pulsing connection", paused: false, }, { variant: "corner-chase", size: "sm", speed: 1.3, label: "Checking corners", paused: false, }, { variant: "row-shift", size: "md", speed: 1, label: "Shifting rows", paused: false, }, { variant: "orbit-collapse", size: "lg", speed: 0.8, label: "Collapsing orbit", paused: false, }, { variant: "helix-twist", size: "sm", speed: 1.1, label: "Twisting helix", paused: false, }, { variant: "prism-burst", size: "md", speed: 0.9, label: "Refracting prism", paused: false, }, { variant: "comet-trail", size: "lg", speed: 1.2, label: "Tracking comet", paused: false, }, { variant: "wave-fold", size: "sm", speed: 1.3, label: "Folding wave", paused: false, }, { variant: "portal-ring", size: "md", speed: 1, label: "Opening portal", paused: false, }, { variant: "star-flare", size: "lg", speed: 0.8, label: "Flaring star", paused: false, }, ],} as const; import { DotMatrixLoader } from "@grassroot/ui-vue";</script> <template> <div aria-hidden="true" class="vs-dmx-list"> <figure v-for="entry in dotMatrixLoaderFixture.variants" :key="entry.variant" class="vs-dmx-preview" > <DotMatrixLoader :variant="entry.variant" :size="entry.size" :speed="entry.speed" :label="entry.label" :paused="entry.paused" /> <figcaption class="vs-dmx-preview__label">{{ entry.variant }}</figcaption> </figure> </div></template>- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
import { Component } from "@angular/core";const dotMatrixLoaderFixture = { id: "dot-matrix-loader", variants: [ { variant: "signal-weave", size: "sm", speed: 1, label: "Loading signals", paused: false, }, { variant: "core-breath", size: "md", speed: 0.8, label: "Resolving core", paused: false, }, { variant: "relay-loop", size: "lg", speed: 1.2, label: "Relaying updates", paused: false, }, { variant: "split-beat", size: "sm", speed: 1.4, label: "Synchronizing", paused: false, }, { variant: "pixel-rain", size: "md", speed: 0.7, label: "Fetching pixels", paused: false, }, { variant: "quiet-static", size: "lg", speed: 1, label: "Preview paused", paused: true, }, { variant: "diagonal-scan", size: "sm", speed: 1.1, label: "Scanning diagonally", paused: false, }, { variant: "radar-sweep", size: "md", speed: 0.9, label: "Sweeping radar", paused: false, }, { variant: "cross-pulse", size: "lg", speed: 1.2, label: "Pulsing connection", paused: false, }, { variant: "corner-chase", size: "sm", speed: 1.3, label: "Checking corners", paused: false, }, { variant: "row-shift", size: "md", speed: 1, label: "Shifting rows", paused: false, }, { variant: "orbit-collapse", size: "lg", speed: 0.8, label: "Collapsing orbit", paused: false, }, { variant: "helix-twist", size: "sm", speed: 1.1, label: "Twisting helix", paused: false, }, { variant: "prism-burst", size: "md", speed: 0.9, label: "Refracting prism", paused: false, }, { variant: "comet-trail", size: "lg", speed: 1.2, label: "Tracking comet", paused: false, }, { variant: "wave-fold", size: "sm", speed: 1.3, label: "Folding wave", paused: false, }, { variant: "portal-ring", size: "md", speed: 1, label: "Opening portal", paused: false, }, { variant: "star-flare", size: "lg", speed: 0.8, label: "Flaring star", paused: false, }, ],} as const; import { GrassrootDotMatrixLoader } from "@grassroot/ui-angular"; @Component({ selector: "app-dot-matrix-loader-demo", standalone: true, imports: [GrassrootDotMatrixLoader], host: { style: "display: contents" }, template: ` <div aria-hidden="true" class="vs-dmx-list"> @for (entry of variants; track entry.variant) { <figure class="vs-dmx-preview"> <grassroot-dot-matrix-loader [variant]="entry.variant" [size]="entry.size" [speed]="entry.speed" [label]="entry.label" [paused]="entry.paused" /> <figcaption class="vs-dmx-preview__label">{{ entry.variant }}</figcaption> </figure> } </div> `,})export class DotMatrixLoaderDemoComponent { protected readonly variants = dotMatrixLoaderFixture.variants;} export default DotMatrixLoaderDemoComponent;- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
<script lang="ts"> const dotMatrixLoaderFixture = { id: "dot-matrix-loader", variants: [ { variant: "signal-weave", size: "sm", speed: 1, label: "Loading signals", paused: false, }, { variant: "core-breath", size: "md", speed: 0.8, label: "Resolving core", paused: false, }, { variant: "relay-loop", size: "lg", speed: 1.2, label: "Relaying updates", paused: false, }, { variant: "split-beat", size: "sm", speed: 1.4, label: "Synchronizing", paused: false, }, { variant: "pixel-rain", size: "md", speed: 0.7, label: "Fetching pixels", paused: false, }, { variant: "quiet-static", size: "lg", speed: 1, label: "Preview paused", paused: true, }, { variant: "diagonal-scan", size: "sm", speed: 1.1, label: "Scanning diagonally", paused: false, }, { variant: "radar-sweep", size: "md", speed: 0.9, label: "Sweeping radar", paused: false, }, { variant: "cross-pulse", size: "lg", speed: 1.2, label: "Pulsing connection", paused: false, }, { variant: "corner-chase", size: "sm", speed: 1.3, label: "Checking corners", paused: false, }, { variant: "row-shift", size: "md", speed: 1, label: "Shifting rows", paused: false, }, { variant: "orbit-collapse", size: "lg", speed: 0.8, label: "Collapsing orbit", paused: false, }, { variant: "helix-twist", size: "sm", speed: 1.1, label: "Twisting helix", paused: false, }, { variant: "prism-burst", size: "md", speed: 0.9, label: "Refracting prism", paused: false, }, { variant: "comet-trail", size: "lg", speed: 1.2, label: "Tracking comet", paused: false, }, { variant: "wave-fold", size: "sm", speed: 1.3, label: "Folding wave", paused: false, }, { variant: "portal-ring", size: "md", speed: 1, label: "Opening portal", paused: false, }, { variant: "star-flare", size: "lg", speed: 0.8, label: "Flaring star", paused: false, }, ], } as const; import { DotMatrixLoader } from "@grassroot/ui-svelte";</script> <div aria-hidden="true" class="vs-dmx-list"> {#each dotMatrixLoaderFixture.variants as entry (entry.variant)} <figure class="vs-dmx-preview"> <DotMatrixLoader variant={entry.variant} size={entry.size} speed={entry.speed} label={entry.label} paused={entry.paused} /> <figcaption class="vs-dmx-preview__label">{entry.variant}</figcaption> </figure> {/each}</div>- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
/** @jsxImportSource solid-js */import { For } from "solid-js";const dotMatrixLoaderFixture = { id: "dot-matrix-loader", variants: [ { variant: "signal-weave", size: "sm", speed: 1, label: "Loading signals", paused: false, }, { variant: "core-breath", size: "md", speed: 0.8, label: "Resolving core", paused: false, }, { variant: "relay-loop", size: "lg", speed: 1.2, label: "Relaying updates", paused: false, }, { variant: "split-beat", size: "sm", speed: 1.4, label: "Synchronizing", paused: false, }, { variant: "pixel-rain", size: "md", speed: 0.7, label: "Fetching pixels", paused: false, }, { variant: "quiet-static", size: "lg", speed: 1, label: "Preview paused", paused: true, }, { variant: "diagonal-scan", size: "sm", speed: 1.1, label: "Scanning diagonally", paused: false, }, { variant: "radar-sweep", size: "md", speed: 0.9, label: "Sweeping radar", paused: false, }, { variant: "cross-pulse", size: "lg", speed: 1.2, label: "Pulsing connection", paused: false, }, { variant: "corner-chase", size: "sm", speed: 1.3, label: "Checking corners", paused: false, }, { variant: "row-shift", size: "md", speed: 1, label: "Shifting rows", paused: false, }, { variant: "orbit-collapse", size: "lg", speed: 0.8, label: "Collapsing orbit", paused: false, }, { variant: "helix-twist", size: "sm", speed: 1.1, label: "Twisting helix", paused: false, }, { variant: "prism-burst", size: "md", speed: 0.9, label: "Refracting prism", paused: false, }, { variant: "comet-trail", size: "lg", speed: 1.2, label: "Tracking comet", paused: false, }, { variant: "wave-fold", size: "sm", speed: 1.3, label: "Folding wave", paused: false, }, { variant: "portal-ring", size: "md", speed: 1, label: "Opening portal", paused: false, }, { variant: "star-flare", size: "lg", speed: 0.8, label: "Flaring star", paused: false, }, ],} as const; import { DotMatrixLoader } from "@grassroot/ui-solid"; export default function DotMatrixLoaderDemo() { return ( <div aria-hidden="true" class="vs-dmx-list"> <For each={dotMatrixLoaderFixture.variants}> {(entry) => ( <figure class="vs-dmx-preview"> <DotMatrixLoader variant={entry.variant} size={entry.size} speed={entry.speed} label={entry.label} paused={entry.paused} /> <figcaption class="vs-dmx-preview__label">{entry.variant}</figcaption> </figure> )} </For> </div> );}Installation
API Reference
Import
import { DotMatrixLoader } from "@grassroot/ui-react";
Props
Prop
Type
Default
Requirement
Description
variant"signal-weave" | "core-breath" | "relay-loop" | "split-beat" | "pixel-rain" | "quiet-static" | "diagonal-scan" | "radar-sweep" | "cross-pulse" | "corner-chase" | "row-shift" | "orbit-collapse" | "helix-twist" | "prism-burst" | "comet-trail" | "wave-fold" | "portal-ring" | "star-flare" | undefined"signal-weave"optional
Animation pattern.
size"sm" | "md" | "lg" | undefined"md"optional
Overall scale.
speednumber | undefined1optional
Animation speed multiplier.
labelstring | undefined"Loading"optional
Accessible label for assistive tech.
pausedboolean | undefinedfalseoptional
Freeze the loader on its current frame.
- Prop
size- Type
"sm" | "md" | "lg" | undefined- Default
"md"- Requirement
- optional
- Description
- Overall scale.
- Prop
speed- Type
number | undefined- Default
1- Requirement
- optional
- Description
- Animation speed multiplier.
- Prop
label- Type
string | undefined- Default
"Loading"- Requirement
- optional
- Description
- Accessible label for assistive tech.
- Prop
paused- Type
boolean | undefined- Default
false- Requirement
- optional
- Description
- Freeze the loader on its current frame.
Native attributes
Standard DOM and ARIA attributes not listed above spread onto the root element.
Import
import { DotMatrixLoader } from "@grassroot/ui-vue";
Props
Prop
Type
Default
Requirement
variant"signal-weave" | "core-breath" | "relay-loop" | "split-beat" | "pixel-rain" | "quiet-static" | "diagonal-scan" | "radar-sweep" | "cross-pulse" | "corner-chase" | "row-shift" | "orbit-collapse" | "helix-twist" | "prism-burst" | "comet-trail" | "wave-fold" | "portal-ring" | "star-flare" | undefined"signal-weave"optional
size"sm" | "md" | "lg" | undefined"md"optional
speednumber | undefined—
optional
labelstring | undefined"Loading"optional
pausedboolean | undefinedfalseoptional
- Prop
variant- Type
"signal-weave" | "core-breath" | "relay-loop" | "split-beat" | "pixel-rain" | "quiet-static" | "diagonal-scan" | "radar-sweep" | "cross-pulse" | "corner-chase" | "row-shift" | "orbit-collapse" | "helix-twist" | "prism-burst" | "comet-trail" | "wave-fold" | "portal-ring" | "star-flare" | undefined- Default
"signal-weave"- Requirement
- optional
- Prop
size- Type
"sm" | "md" | "lg" | undefined- Default
"md"- Requirement
- optional
- Prop
speed- Type
number | undefined- Default
- —
- Requirement
- optional
- Prop
label- Type
string | undefined- Default
"Loading"- Requirement
- optional
- Prop
paused- Type
boolean | undefined- Default
false- Requirement
- optional
Import
import { Component } from "@angular/core";
import { GrassrootDotMatrixLoader } from "@grassroot/ui-angular";
Props
Prop
Type
Default
Requirement
variantDotMatrixLoaderVariant"signal-weave"optional
size"sm" | "md" | "lg""md"optional
speednumber—
optional
labelstring"Loading"optional
pausedbooleanfalseoptional
- Prop
variant- Type
DotMatrixLoaderVariant- Default
"signal-weave"- Requirement
- optional
- Prop
size- Type
"sm" | "md" | "lg"- Default
"md"- Requirement
- optional
- Prop
speed- Type
number- Default
- —
- Requirement
- optional
- Prop
label- Type
string- Default
"Loading"- Requirement
- optional
- Prop
paused- Type
boolean- Default
false- Requirement
- optional
Import
import { DotMatrixLoader } from "@grassroot/ui-svelte";
Props
Prop
Type
Default
Requirement
variantDotMatrixLoaderVariant"signal-weave"optional
size"sm" | "md" | "lg""md"optional
speednumber—
optional
labelstring"Loading"optional
pausedbooleanfalseoptional
- Prop
variant- Type
DotMatrixLoaderVariant- Default
"signal-weave"- Requirement
- optional
- Prop
size- Type
"sm" | "md" | "lg"- Default
"md"- Requirement
- optional
- Prop
speed- Type
number- Default
- —
- Requirement
- optional
- Prop
label- Type
string- Default
"Loading"- Requirement
- optional
- Prop
paused- Type
boolean- Default
false- Requirement
- optional
Import
import { For } from "solid-js";
import { DotMatrixLoader } from "@grassroot/ui-solid";
Props
Prop
Type
Default
Requirement
variantDotMatrixLoaderVariant—
optional
size"sm" | "md" | "lg"—
optional
speednumber—
optional
labelstring—
optional
pausedboolean—
optional
- Prop
variant- Type
DotMatrixLoaderVariant- Default
- —
- Requirement
- optional
- Prop
size- Type
"sm" | "md" | "lg"- Default
- —
- Requirement
- optional
- Prop
speed- Type
number- Default
- —
- Requirement
- optional
- Prop
label- Type
string- Default
- —
- Requirement
- optional
- Prop
paused- Type
boolean- Default
- —
- Requirement
- optional
Native attributes
Standard DOM and ARIA attributes not listed above spread onto the root element.