Animated SVG loading indicator.
Basic
Show code Hide code
import { LoadingSpinner } from '@mylighthouse/prism-react';
export default function Basic(): React.JSX.Element {
return <LoadingSpinner />;
} Sizes
Inherits the Icon size scale. The default size is medium.
extra-small
small
medium
large
Show code Hide code
import { LoadingSpinner } from '@mylighthouse/prism-react';
export default function Sizes(): React.JSX.Element {
return (
<div className="flex gap-300 items-center">
<div className="flex flex-col items-center gap-100">
<LoadingSpinner size="extra-small" />
<span className="text-200--regular">extra-small</span>
</div>
<div className="flex flex-col items-center gap-100">
<LoadingSpinner size="small" />
<span className="text-200--regular">small</span>
</div>
<div className="flex flex-col items-center gap-100">
<LoadingSpinner size="medium" />
<span className="text-200--regular">medium</span>
</div>
<div className="flex flex-col items-center gap-100">
<LoadingSpinner size="large" />
<span className="text-200--regular">large</span>
</div>
</div>
);
} Colors
Inherits the Icon color scale. The default color is default.
default
default-inverse
emphasis
subdued
info
success
warning
critical
intelligence
brand
on-info
on-success
on-warning
on-critical
on-intelligence
on-brand
disabled
Show code Hide code
import { LoadingSpinner } from '@mylighthouse/prism-react';
export default function Colors(): React.JSX.Element {
return (
<div className="flex gap-300 flex-wrap">
<div className="flex flex-col items-center gap-100">
<LoadingSpinner color="default" />
<span className="text-200--regular">default</span>
</div>
<div className="flex flex-col items-center gap-100">
<LoadingSpinner color="default-inverse" />
<span className="text-200--regular">default-inverse</span>
</div>
<div className="flex flex-col items-center gap-100">
<LoadingSpinner color="emphasis" />
<span className="text-200--regular">emphasis</span>
</div>
<div className="flex flex-col items-center gap-100">
<LoadingSpinner color="subdued" />
<span className="text-200--regular">subdued</span>
</div>
<div className="flex flex-col items-center gap-100">
<LoadingSpinner color="info" />
<span className="text-200--regular">info</span>
</div>
<div className="flex flex-col items-center gap-100">
<LoadingSpinner color="success" />
<span className="text-200--regular">success</span>
</div>
<div className="flex flex-col items-center gap-100">
<LoadingSpinner color="warning" />
<span className="text-200--regular">warning</span>
</div>
<div className="flex flex-col items-center gap-100">
<LoadingSpinner color="critical" />
<span className="text-200--regular">critical</span>
</div>
<div className="flex flex-col items-center gap-100">
<LoadingSpinner color="intelligence" />
<span className="text-200--regular">intelligence</span>
</div>
<div className="flex flex-col items-center gap-100">
<LoadingSpinner color="brand" />
<span className="text-200--regular">brand</span>
</div>
<div className="flex flex-col items-center gap-100">
<LoadingSpinner color="on-info" />
<span className="text-200--regular">on-info</span>
</div>
<div className="flex flex-col items-center gap-100">
<LoadingSpinner color="on-success" />
<span className="text-200--regular">on-success</span>
</div>
<div className="flex flex-col items-center gap-100">
<LoadingSpinner color="on-warning" />
<span className="text-200--regular">on-warning</span>
</div>
<div className="flex flex-col items-center gap-100">
<LoadingSpinner color="on-critical" />
<span className="text-200--regular">on-critical</span>
</div>
<div className="flex flex-col items-center gap-100">
<LoadingSpinner color="on-intelligence" />
<span className="text-200--regular">on-intelligence</span>
</div>
<div className="flex flex-col items-center gap-100">
<LoadingSpinner color="on-brand" />
<span className="text-200--regular">on-brand</span>
</div>
<div className="flex flex-col items-center gap-100">
<LoadingSpinner color="disabled" />
<span className="text-200--regular">disabled</span>
</div>
</div>
);
} Accessibility
LoadingSpinner is always aria-hidden="true" and that cannot be overridden, so it is purely decorative.
Announce the loading state yourself from a separate role="status" region:
<div className="sr-only" role="status">
{isLoading ? "Loading" : ""}
</div>
If the spinner replaces the visible label of a control, keep an accessible name on that control.
API Reference
| Name | Default | Type | Description |
|---|---|---|---|
color | -- | "critical" | "warning" | "success" | "intelligence" | "brand" | "info" | "inherit" | "default" | "default-inverse" | "emphasis" | "subdued" | "on-info" | "on-success" | "on-warning" | "on-critical" | "on-intelligence" | "on-brand" | "disabled" | -- |
size | -- | "small" | "medium" | "large" | "extra-small" | -- |