| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import { cn } from '@/lib/utils';
- import type { HTMLAttributes } from 'react';
- type LoaderIconProps = {
- size?: number;
- };
- const LoaderIcon = ({ size = 16 }: LoaderIconProps) => (
- <svg
- height={size}
- strokeLinejoin="round"
- style={{ color: 'currentcolor' }}
- viewBox="0 0 16 16"
- width={size}
- >
- <title>Loader</title>
- <g clipPath="url(#clip0_2393_1490)">
- <path d="M8 0V4" stroke="currentColor" strokeWidth="1.5" />
- <path d="M8 16V12" opacity="0.5" stroke="currentColor" strokeWidth="1.5" />
- <path
- d="M3.29773 1.52783L5.64887 4.7639"
- opacity="0.9"
- stroke="currentColor"
- strokeWidth="1.5"
- />
- <path
- d="M12.7023 1.52783L10.3511 4.7639"
- opacity="0.1"
- stroke="currentColor"
- strokeWidth="1.5"
- />
- <path
- d="M12.7023 14.472L10.3511 11.236"
- opacity="0.4"
- stroke="currentColor"
- strokeWidth="1.5"
- />
- <path
- d="M3.29773 14.472L5.64887 11.236"
- opacity="0.6"
- stroke="currentColor"
- strokeWidth="1.5"
- />
- <path
- d="M15.6085 5.52783L11.8043 6.7639"
- opacity="0.2"
- stroke="currentColor"
- strokeWidth="1.5"
- />
- <path
- d="M0.391602 10.472L4.19583 9.23598"
- opacity="0.7"
- stroke="currentColor"
- strokeWidth="1.5"
- />
- <path
- d="M15.6085 10.4722L11.8043 9.2361"
- opacity="0.3"
- stroke="currentColor"
- strokeWidth="1.5"
- />
- <path
- d="M0.391602 5.52783L4.19583 6.7639"
- opacity="0.8"
- stroke="currentColor"
- strokeWidth="1.5"
- />
- </g>
- <defs>
- <clipPath id="clip0_2393_1490">
- <rect fill="white" height="16" width="16" />
- </clipPath>
- </defs>
- </svg>
- );
- export type LoaderProps = HTMLAttributes<HTMLDivElement> & {
- size?: number;
- };
- export const Loader = ({ className, size = 16, ...props }: LoaderProps) => (
- <div className={cn('inline-flex animate-spin items-center justify-center', className)} {...props}>
- <LoaderIcon size={size} />
- </div>
- );
|