Diamond Loader
Rogo's one loading mark: two comets of lit diamonds circling the matrix.
Examples
Sizes
3, 4 and 5 columns at the same size
Muted, beside brand and destructive buttons
Inverted, on a brand chip
Overview
DiamondLoader is the loading indicator for the product: a running chat, a generating row in the
sidebar or on Home, a page waiting on data. It replaces the pixel RogoLogoMatrix and the gradient
RogoMatrixLoader, so every loading state reads as one mark.
It is a DiamondGrid playing a fixed orbit. Every diamond is fully lit or fully resting, every grid
takes 1.2 s for a lap, and the animation runs in CSS on the compositor. Under reduced motion it holds
still.
The grid follows the size: 3 × 3 below 16px, 4 × 4 below 20px, 5 × 5 from there. Fewer diamonds at
small sizes keep each one crisp. Set columns only when a surface needs a specific grid.
Usage
import { DiamondLoader } from "@rogo-technologies/ui/diamond-loader";
<DiamondLoader size="xs" label="Generating" />;API
| Prop | Type | Default | Description |
|---|---|---|---|
size | "xs" | "sm" | "md" | "lg" | number | "sm" | xs 12px, sm 16px, md 20px, lg 28px, or px. |
columns | 3 | 4 | 5 | From size | Cells along one side. |
tone | "brand" | "muted" | "inverted" | "brand" | See Tones below. |
label | string | "Loading" | What a screen reader hears. The mark has role="status". |
className | string | - | Additional CSS classes. |
Tones
brandis the default: brand-green diamonds, as on the Rogo mark.muteduses the tertiary text colour. Use it beside a brand or destructive button, where brand green would clash. The Rogo Notes waveform uses the same colours.invertedis for a dark or brand-filled chip.
Guidelines
- Use it wherever something is loading or an agent is working. Don't add another spinner.
- Pick the preset that matches the row:
xsin sidebar and list rows,smbeside body text,mdunder a streaming answer,lgfor a page or panel waiting on data. - Name what is happening in
labelwhen the surface has no visible text that says so. - The timing and the orbit live in
diamond-loader.tsx. Change them there and every surface follows.