Spinner
spell-ui/spinnerFreeComponent
A loading spinner component with customizable size and color.
Live preview
live · rendered by the registry
Rendered by spell-ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://spell.sh/r/spinner.jsonSource
1"use client";23import * as React from "react";4import { cn } from "@/lib/utils";56type SizeVariant = "sm" | "default" | "md" | "lg";7type SpeedVariant = "slow" | "normal" | "fast";89const SpinnerPrimitive = React.forwardRef<10 React.ElementRef<"svg">,11 React.SVGProps<SVGSVGElement>12>(13 ({ ...props }, ref) => {14 const id = React.useId();1516 return (17 <svg ref={ref} data-slot-icon viewBox="0 0 24 24" {...props}>18 <defs>19 <linearGradient20 id={`gradient-1-${id}`}21 x1="50%"22 x2="50%"23 y1="5.271%"24 y2="91.793%"25 >26 <stop offset="0%" stopColor="currentColor" />27 <stop offset="100%" stopColor="currentColor" stopOpacity={0.55} />28 </linearGradient>29 <linearGradient30 id={`gradient-2-${id}`}31 x1="50%"32 x2="50%"33 y1="15.24%"34 y2="87.15%"35 >36 <stop offset="0%" stopColor="currentColor" stopOpacity={0} />37 <stop offset="100%" stopColor="currentColor" stopOpacity={0.55} />38 </linearGradient>39 </defs>40 <g fill="none">41 <path42 d="M8.749.021a1.5 1.5 0 0 1 .497 2.958A7.5 7.5 0 0 0 3 10.375a7.5 7.5 0 0 0 7.5 7.5v3c-5.799 0-10.5-4.7-10.5-10.5C0 5.23 3.726.865 8.749.021"43 fill={`url(#gradient-1-${id})`}44 transform="translate(1.5 1.625)"45 />46 <path47 d="M15.392 2.673a1.5 1.5 0 0 1 2.119-.115A10.48 10.48 0 0 1 21 10.375c0 5.8-4.701 10.5-10.5 10.5v-3a7.5 7.5 0 0 0 5.007-13.084a1.5 1.5 0 0 1-.115-2.118"48 fill={`url(#gradient-2-${id})`}49 transform="translate(1.5 1.625)"50 />51 </g>52 </svg>53 );54 },55);5657SpinnerPrimitive.displayName = "SpellUI.SpinnerPrimitive";5859const sizeClasses: Record<SizeVariant, string> = {60 sm: "h-4 w-4",61 default: "h-5 w-5",62 md: "h-6 w-6",63 lg: "h-8 w-8",64};6566const speedClasses: Record<SpeedVariant, string> = {67 slow: "animate-[spin_2s_linear_infinite]",68 normal: "animate-spin",69 fast: "animate-[spin_0.5s_linear_infinite]",70};7172interface SpinnerProps73 extends Omit<React.ComponentPropsWithoutRef<"svg">, "display" | "opacity"> {74 size?: SizeVariant;75 speed?: SpeedVariant;76 className?: string;77}7879export const Spinner = React.forwardRef<80 React.ComponentRef<typeof SpinnerPrimitive>,81 SpinnerProps82>(83 ({ className, size = "md", speed = "normal", ...props }, ref) => {84 return (85 <span86// … truncated
Files it writes
More from spell-ui
All 33 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Animated Checkboxanimated-checkbox | spell-ui | Components | Free | 1 dep | |
| Animated Gradientanimated-gradient | spell-ui | Components | Free | no deps | |
| Badgebadge | spell-ui | Components | Free | 2 deps | |
| Bars Spinnerbars-spinner | spell-ui | Components | Free | no deps | |
| Blur Revealblur-reveal | spell-ui | Components | Free | 1 dep | |
| Chartchart | spell-ui | Components | Free | no deps | |
| Color Selectorcolor-selector | spell-ui | Components | Free | no deps | |
| Copy Buttoncopy-button | spell-ui | Components | Free | 1 dep |
