Circular Progress
blode-ui/circular-progressFreeComponent
A circular indicator that shows the progress of a task.
Install it
npx shadcn@latest add https://raw.githubusercontent.com/mblode/blode-ui/main/public/r/circular-progress.jsonSource
1"use client";23import type * as React from "react";45import { cn } from "@/lib/utils";67interface CircularProgressProps extends React.ComponentProps<"div"> {8 hideText?: boolean;9 strokeWidth?: number;10 value: number;11}1213const CircularProgress = ({14 value,15 strokeWidth = 4,16 className,17 hideText,18 ...props19}: CircularProgressProps) => {20 const percentage = Math.min(Math.max(value, 0), 100);21 const radius = 16;22 const circumference = 2 * Math.PI * radius;23 const strokeDashoffset = circumference - (percentage / 100) * circumference;2425 return (26 <div className={cn("relative", className)} {...props}>27 <progress aria-label="Circular progress" className="sr-only" max={100} value={percentage} />28 <svg className="size-full -rotate-90" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg">29 <title>Circular progress</title>30 <circle31 className="stroke-current text-primary/30"32 cx="18"33 cy="18"34 fill="none"35 r={radius}36 strokeWidth={strokeWidth}37 />38 <circle39 className="stroke-current text-primary"40 cx="18"41 cy="18"42 fill="none"43 r={radius}44 strokeDasharray={circumference}45 strokeDashoffset={strokeDashoffset}46 strokeLinecap="round"47 strokeWidth={strokeWidth}48 style={{49 transition: "stroke-dashoffset 300ms ease-in-out",50 }}51 />52 </svg>5354 {!hideText && (55 <div className="absolute start-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 leading-none">56 <span className="text-center font-bold text-primary leading-none dark:text-foreground">57 {percentage}%58 </span>59 </div>60 )}61 </div>62 );63};6465export { CircularProgress };
Files it writes
More from blode/ui
All 85 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | blode/ui | Components | Free | 2 deps | |
| Alertalert | blode/ui | Components | Free | no deps | |
| Alert Dialogalert-dialog | blode/ui | Components | Free | 1 dep | |
| Ask User Questionsask-user-questions | blode/ui | Components | Free | 1 dep | |
| Aspect Ratioaspect-ratio | blode/ui | Components | Free | 1 dep | |
| Attachmentattachment | blode/ui | Components | Free | 1 dep | |
| Autocompleteautocomplete | blode/ui | Components | Free | 1 dep | |
| Avataravatar | blode/ui | Components | Free | 1 dep |
