progress-radial

PreviousNext
Docs
reuicomponent

Preview

Loading preview…
registry/default/components/progress/radial.tsx
'use client';

import { useEffect, useState } from 'react';
import { ProgressRadial } from '@/registry/default/ui/progress';

export default function ProgressRadialDemo() {
  const [taskProgress, setTaskProgress] = useState(0);

  useEffect(() => {
    // Task completion simulation
    const taskTimer = setInterval(() => {
      setTaskProgress((prev) => {
        if (prev >= 100) {
          return 0; // Reset for continuous loop
        }
        return prev + Math.random() * 2 + 0.5; // Random increment 0.5-2.5
      });
    }, 200);

    return () => {
      clearInterval(taskTimer);
    };
  }, []);

  return (
    <div className="flex flex-col items-center gap-3">
      <ProgressRadial
        value={taskProgress}
        size={80}
        startAngle={-90}
        endAngle={180}
        strokeWidth={5}
        indicatorClassName="text-green-500"
        className="text-green-500"
      >
        <div className="text-center">
          <div className="text-base font-bold">{Math.round(taskProgress)}%</div>
          <div className="text-xs text-muted-foreground">Upload</div>
        </div>
      </ProgressRadial>
      <span className="text-xs text-muted-foreground">Upload Status</span>
    </div>
  );
}

Installation

npx shadcn@latest add @reui/progress-radial

Usage

import { ProgressRadial } from "@/components/progress-radial"
<ProgressRadial />