Files
projectbrain-Public/src/components/ui/progress.tsx
T

34 lines
1.1 KiB
TypeScript

import * as React from "react";
import * as ProgressPrimitive from "@radix-ui/react-progress";
import { cn } from "@/lib/utils";
const Progress = React.forwardRef<
React.ElementRef<typeof ProgressPrimitive.Root>,
React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>
>(({ className, value, ...props }, ref) => {
const normalizedValue = Math.min(100, Math.max(0, value ?? 0));
return (
<ProgressPrimitive.Root
ref={ref}
value={normalizedValue}
aria-label={props["aria-label"] ?? (props["aria-labelledby"] ? undefined : "Voortgang")}
aria-valuetext={props["aria-valuetext"] ?? `${Math.round(normalizedValue)}%`}
className={cn(
"relative h-4 w-full overflow-hidden rounded-full bg-secondary",
className,
)}
{...props}
>
<ProgressPrimitive.Indicator
className="h-full w-full flex-1 bg-primary transition-all"
style={{ transform: `translateX(-${100 - normalizedValue}%)` }}
/>
</ProgressPrimitive.Root>
);
});
Progress.displayName = ProgressPrimitive.Root.displayName;
export { Progress };