Loader
aqua/loaderFreeComponent
The twelve-spoke spinner, ticking around in steps like the original.
Live preview
live · rendered by the registry
Rendered by aqua on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://aqua.duca.dev/r/loader.jsonSource
1import * as React from "react"23import { cn } from "@/lib/utils"45const SPOKES = Array.from({ length: 12 }, (_, index) => index)67function Loader({ className, ...props }: React.ComponentProps<"svg">) {8 return (9 <svg10 viewBox="0 0 24 24"11 fill="none"12 role="status"13 aria-label="Loading"14 className={cn(15 "size-6 animate-[spin_0.9s_steps(12)_infinite] text-[#5a6069] motion-reduce:animate-none",16 className17 )}18 {...props}19 >20 {SPOKES.map((spoke) => (21 <rect22 key={spoke}23 x="11.3"24 y="2"25 width="1.4"26 height="5.6"27 rx="0.7"28 fill="currentColor"29 opacity={(spoke + 1) / 12}30 transform={`rotate(${spoke * 30} 12 12)`}31 />32 ))}33 </svg>34 )35}3637export { Loader }
Files it writes
More from aqua
All 26 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Alertalert | aqua | Components | Free | 1 dep | |
| Avataravatar | aqua | Components | Free | 1 dep | |
| Badgebadge | aqua | Components | Free | 2 deps | |
| Buttonbutton | aqua | Components | Free | 2 deps | |
| Chat Bubblechat-bubble | aqua | Components | Free | no deps | |
| Checkboxcheckbox | aqua | Components | Free | 2 deps | |
| Code Blockcode-block | aqua | Components | Free | 2 deps · 2 files | |
| Cursorcursor | aqua | Components | Free | no deps |
