Docs Components Primitives

DotMatrixLoader

React example follows below.
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>
);
}
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>
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;
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>
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.
speed
number | undefined
1
optional
Animation speed multiplier.
label
string | undefined
"Loading"
optional
Accessible label for assistive tech.
paused
boolean | undefined
false
optional
Freeze the loader on its current frame.
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.
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
speed
number | undefined
—
optional
label
string | undefined
"Loading"
optional
paused
boolean | undefined
false
optional
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
variant
DotMatrixLoaderVariant
"signal-weave"
optional
size
"sm" | "md" | "lg"
"md"
optional
speed
number
—
optional
label
string
"Loading"
optional
paused
boolean
false
optional
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
variant
DotMatrixLoaderVariant
"signal-weave"
optional
size
"sm" | "md" | "lg"
"md"
optional
speed
number
—
optional
label
string
"Loading"
optional
paused
boolean
false
optional
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
variant
DotMatrixLoaderVariant
—
optional
size
"sm" | "md" | "lg"
—
optional
speed
number
—
optional
label
string
—
optional
paused
boolean
—
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.