Files
a37f030d-6e8a-4f3d-9f23-1ce…/research/replit/spinner.md
vitalijmulika fb5d40bc69 Initial commit
2026-04-29 13:20:41 +03:00

45 lines
1017 B
Markdown

import * as React from "react"
import { cva, type VariantProps } from "class-variance-authority"
import { cn } from "@/lib/utils"
const spinnerVariants = cva(
"inline-block animate-spin rounded-full border-2 border-current border-t-transparent",
{
variants: {
size: {
sm: "h-4 w-4",
default: "h-6 w-6",
lg: "h-8 w-8",
xl: "h-12 w-12",
},
},
defaultVariants: {
size: "default",
},
}
)
export interface SpinnerProps
extends React.HTMLAttributes<HTMLDivElement>,
VariantProps<typeof spinnerVariants> {}
const Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(
({ className, size, ...props }, ref) => {
return (
<div
ref={ref}
role="status"
aria-label="Loading"
className={cn(spinnerVariants({ size, className }))}
{...props}
>
<span className="sr-only">Loading...</span>
</div>
)
}
)
Spinner.displayName = "Spinner"
export { Spinner, spinnerVariants }