About
A set of loading indicators — a spinner for short indeterminate waits, skeleton placeholders for content whose shape is known, and a progress bar for measurable completion.
Built with React and Tailwind. Copy the prompt and paste it into Claude Code, Cursor or Lovable: your agent adds Loaders to your project and fits it to your theme.
Code
How Loaders is used: the demo's code. The component's own source comes with a free account.
Usage.tsx
import { Progress, Skeleton, Spinner } from "@/components/ui/loaders";
export default function LoadersDemo() {
return (
<div
className="flex w-full flex-col items-center gap-10 p-10"
style={{
background: "var(--mors-color-canvas)",
color: "var(--mors-color-text)",
}}
>
<div className="flex items-center gap-6">
<Spinner size="sm" />
<Spinner size="md" />
<Spinner size="lg" />
</div>
<div className="mors-card mors-card--raised" style={{ width: 320 }}>
<div className="mors-card-header">
<div className="mors-card-heading">
<h3 className="mors-card-title">Loading card</h3>
</div>
</div>
<div className="mors-card-body">
<div
style={{
display: "flex",
flexDirection: "column",
gap: "var(--mors-space-4)",
}}
>
<div
style={{
display: "flex",
alignItems: "center",
gap: "var(--mors-space-4)",
}}
>
<Skeleton variant="circle" width={40} height={40} />
<Skeleton variant="text" width="8rem" />
</div>
<Skeleton variant="text" lines={3} />
<Skeleton variant="rect" height={80} />
</div>
</div>
</div>
<div className="flex flex-col gap-4" style={{ width: 320 }}>
<Progress value={64} label="Uploading assets" showValue />
<Progress
value={92}
tone="success"
label="Almost done"
showValue
size="sm"
/>
<Progress label="Syncing" />
</div>
</div>
);
}








