src/widgets/ResourceQuotas/components/CircleProgress/index.tsx (32 lines of code) (raw):
import React from 'react';
import { CircleProgressProps } from './types';
export const CircleProgress: React.FC<CircleProgressProps> = ({ loadPercentage, color }) => {
const radius = 14;
const stroke = 4;
const circumference = (radius - stroke) * 2 * Math.PI;
const strokeDashoffset = circumference - (loadPercentage / 100) * circumference;
return (
<svg height={radius * 2} width={radius * 2} viewBox={`0 0 ${radius * 2} ${radius * 2}`}>
<circle
stroke="rgba(230, 230, 230, 0.25)"
fill="transparent"
strokeWidth={stroke}
r={radius - stroke}
cx={radius}
cy={radius}
transform={`rotate(-90 ${radius} ${radius})`}
/>
<circle
stroke={color}
fill="transparent"
strokeWidth={stroke}
strokeDasharray={circumference + ' ' + circumference}
style={{ strokeDashoffset }}
r={radius - stroke}
cx={radius}
cy={radius}
transform={`rotate(-90 ${radius} ${radius})`}
/>
</svg>
);
};