circular-progress-interactive-demo
diceui-base/circular-progress-interactive-demoFreeExample
diceui/base publishes no description for this item.
Install it
npx shadcn@latest add https://raw.githubusercontent.com/sadmann7/diceui/HEAD/docs/public/r/styles/base-vega/circular-progress-interactive-demo.jsonSource
1"use client";23import * as React from "react";4import { Button } from "@/registry/bases/base/ui/button";5import {6 CircularProgress,7 CircularProgressIndicator,8 CircularProgressRange,9 CircularProgressTrack,10 CircularProgressValueText,11} from "@/registry/bases/base/ui/circular-progress";1213export default function CircularProgressControlledDemo() {14 const [uploadProgress, setUploadProgress] = React.useState<number | null>(0);15 const [isUploading, setIsUploading] = React.useState(false);16 const intervalRef = React.useRef<NodeJS.Timeout | null>(null);1718 const onUploadStart = React.useCallback(() => {19 setIsUploading(true);20 setUploadProgress(0);21 }, []);2223 const onUploadReset = React.useCallback(() => {24 setUploadProgress(0);25 setIsUploading(false);26 if (intervalRef.current) {27 clearInterval(intervalRef.current);28 intervalRef.current = null;29 }30 }, []);3132 React.useEffect(() => {33 if (isUploading) {34 intervalRef.current = setInterval(() => {35 setUploadProgress((prev) => {36 if (prev === null) return 0;37 if (prev >= 100) {38 if (intervalRef.current) {39 clearInterval(intervalRef.current);40 intervalRef.current = null;41 }42 setIsUploading(false);43 return 100;44 }45 return Math.min(100, prev + Math.random() * 15);46 });47 }, 200);48 }4950 return () => {51 if (intervalRef.current) {52 clearInterval(intervalRef.current);53 intervalRef.current = null;54 }55 };56 }, [isUploading]);5758 return (59 <div className="flex flex-col items-center gap-6">60 <div className="flex items-center gap-6">61 <CircularProgress62 value={uploadProgress}63 min={0}64 max={100}65 size={80}66 thickness={6}67 >68 <CircularProgressIndicator>69 <CircularProgressTrack />70 <CircularProgressRange />71 </CircularProgressIndicator>72 <CircularProgressValueText className="font-semibold text-base" />73 </CircularProgress>74 <div className="flex flex-col gap-2">75 <div className="font-medium text-sm">Upload Progress</div>76 <div className="text-muted-foreground text-xs">77 Status:{" "}78 {isUploading79 ? "Uploading..."80 : uploadProgress === 10081 ? "Complete"82 : "Ready"}83 </div>84// … truncated
What it pulls in
Other registry items
Files it writes
More from diceui/base
All 192 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| action-bar-demoaction-bar-demo | diceui/base | Examples | Free | 1 dep | |
| action-bar-position-demoaction-bar-position-demo | diceui/base | Examples | Free | 1 dep | |
| angle-slider-controlled-demoangle-slider-controlled-demo | diceui/base | Examples | Free | 2 deps | |
| angle-slider-demoangle-slider-demo | diceui/base | Examples | Free | no deps | |
| angle-slider-form-demoangle-slider-form-demo | diceui/base | Examples | Free | 4 deps | |
| angle-slider-range-demoangle-slider-range-demo | diceui/base | Examples | Free | no deps | |
| angle-slider-themes-demoangle-slider-themes-demo | diceui/base | Examples | Free | no deps | |
| avatar-group-custom-overflow-demoavatar-group-custom-overflow-demo | diceui/base | Examples | Free | no deps |
