40 lines
831 B
TypeScript
40 lines
831 B
TypeScript
// Copyright 2024 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import React from 'react';
|
|
import classNames from 'classnames';
|
|
|
|
export const SpinnerSvgSizes = ['small', 'normal'] as const;
|
|
export type SpinnerSvgSize = (typeof SpinnerSvgSizes)[number];
|
|
|
|
export type Props = {
|
|
className?: string;
|
|
size: number;
|
|
strokeWidth: number;
|
|
};
|
|
|
|
export function SpinnerV2({
|
|
className,
|
|
size,
|
|
strokeWidth,
|
|
}: Props): JSX.Element {
|
|
return (
|
|
<svg
|
|
className={classNames('SpinnerV2', className)}
|
|
viewBox={`0 0 ${size * 2} ${size * 2}`}
|
|
style={{
|
|
height: size,
|
|
width: size,
|
|
}}
|
|
>
|
|
<circle
|
|
className="SpinnerV2__Path"
|
|
cx={size}
|
|
cy={size}
|
|
r={size * 0.8}
|
|
fill="none"
|
|
strokeWidth={strokeWidth}
|
|
/>
|
|
</svg>
|
|
);
|
|
}
|