Progress

shadcn docs
components/ui/progress.tsx
'use client'
import * as ProgressPrimitive from '@radix-ui/react-progress'
import * as React from 'react'
import { cn } from '@/lib/utils'
const Progress = React.forwardRef<
React.ElementRef<typeof ProgressPrimitive.Root>,
React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>
>(({ className, value, ...props }, ref) => (
<ProgressPrimitive.Root
ref={ref}
className={cn(
'relative h-4 w-full overflow-hidden rounded-base border-2 border-border dark:border-darkBorder bg-white dark:bg-secondaryBlack',
className,
)}
{...props}
>
<ProgressPrimitive.Indicator
className="h-full w-full flex-1 border-r-2 border-border dark:border-darkBorder bg-main transition-all"
style={{ transform: `translateX(-${100 - (value || 0)}%)` }}
/>
</ProgressPrimitive.Root>
))
Progress.displayName = ProgressPrimitive.Root.displayName
export { Progress }

Usage

import * as React from 'react'
import { Progress } from '@/components/ui/progress'

const [progress, setProgress] = React.useState(13);
React.useEffect(() => {
const timer = setTimeout(() => setProgress(66), 500);
return () => clearTimeout(timer);
}, [])

<Progress value={progress} className="w-[60%]" />
Edit this page