Files
d1a2f309-b9fe-4acd-a8cc-cf0…/research/replit/spinner.md
2026-04-28 15:30:34 +03:00

1017 B

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, VariantProps {}

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} > Loading... ) } ) Spinner.displayName = "Spinner"

export { Spinner, spinnerVariants }