Skip to content
Highlight

ComponentsUpdated Sep 9, 2026

Loadstone

Highlight’s grid-of-cells loading mark. A config describes the grid and per-cell timing; presets cover the product states, and LoadstoneSequence crossfades between configs.

Source: packages/ui/src/components/loadstone

tsx
import { Loadstone, LoadstoneSequence, thinkingLoadstoneConfig, LoadstoneConfig } from '@highlight/ui'

Change the props; the preview and the snippet update together.

Props
48
Color mode
Paused
tsx
<Loadstone config={thinkingLoadstoneConfig} size={48} label="Thinking" />

size scales the whole grid; paused freezes the animation; label is the accessible name.

tsx
import { Loadstone, thinkingLoadstoneConfig } from '@highlight/ui' export default function LoadstoneBasic() {  return (    <div className="flex items-center gap-8">      <Loadstone config={thinkingLoadstoneConfig} size={24} label="Thinking" />      <Loadstone config={thinkingLoadstoneConfig} size={32} label="Thinking" />      <Loadstone config={thinkingLoadstoneConfig} size={48} label="Thinking" />      <Loadstone config={thinkingLoadstoneConfig} size={48} label="Paused" paused />    </div>  )}

rows, columns, and a cells array with order for stagger. lightColor and darkColor per cell.

tsx
import { Loadstone, type LoadstoneConfig } from '@highlight/ui' const ring: LoadstoneConfig = {  rows: 3,  columns: 3,  animation: 'glow',  duration: 1200,  stagger: 120,  gap: 4,  radius: 99,  ledMode: true,  cells: [    [0, 0, 0],    [0, 1, 1],    [0, 2, 2],    [1, 2, 3],    [2, 2, 4],    [2, 1, 5],    [2, 0, 6],    [1, 0, 7],  ].map(([row, column, order]) => ({    row,    column,    order,    opacity: 1,    scale: 1,    lightColor: '#e8e21c',    darkColor: '#fff66e',  })),} export default function LoadstoneCustom() {  return <Loadstone config={ring} size={48} label="Recording" />}

The root, then any compound sub-components. Every part accepts className and forwards the rest of its props to the element or Base UI part beneath it.

Loadstone
The animated mark. config picks the sequence; size sets its box.

Props added on top of the underlying element or Base UI part.

PropTypeDefaultDescription
configLoadstoneConfig—Grid, animation, duration, stagger, gap, radius, ledMode, cells.
sizenumber32Rendered size in px.
colorMode'light' | 'dark'—Force a theme; defaults to following the page.
pausedbooleanfalseFreeze.
labelstring'Working'Accessible name.