| "use client" |
|
|
| import { Progress as ProgressPrimitive } from "@base-ui/react/progress" |
|
|
| import { cn } from "@/lib/utils" |
|
|
| function Progress({ |
| className, |
| children, |
| value, |
| ...props |
| }: ProgressPrimitive.Root.Props) { |
| return ( |
| <ProgressPrimitive.Root |
| value={value} |
| data-slot="progress" |
| className={cn("flex flex-wrap gap-3", className)} |
| {...props} |
| > |
| {children} |
| <ProgressTrack> |
| <ProgressIndicator /> |
| </ProgressTrack> |
| </ProgressPrimitive.Root> |
| ) |
| } |
|
|
| function ProgressTrack({ className, ...props }: ProgressPrimitive.Track.Props) { |
| return ( |
| <ProgressPrimitive.Track |
| className={cn( |
| "relative flex h-1 w-full items-center overflow-x-hidden rounded-full bg-muted", |
| className |
| )} |
| data-slot="progress-track" |
| {...props} |
| /> |
| ) |
| } |
|
|
| function ProgressIndicator({ |
| className, |
| ...props |
| }: ProgressPrimitive.Indicator.Props) { |
| return ( |
| <ProgressPrimitive.Indicator |
| data-slot="progress-indicator" |
| className={cn("h-full bg-primary transition-all", className)} |
| {...props} |
| /> |
| ) |
| } |
|
|
| function ProgressLabel({ className, ...props }: ProgressPrimitive.Label.Props) { |
| return ( |
| <ProgressPrimitive.Label |
| className={cn("text-sm font-medium", className)} |
| data-slot="progress-label" |
| {...props} |
| /> |
| ) |
| } |
|
|
| function ProgressValue({ className, ...props }: ProgressPrimitive.Value.Props) { |
| return ( |
| <ProgressPrimitive.Value |
| className={cn( |
| "ml-auto text-sm text-muted-foreground tabular-nums", |
| className |
| )} |
| data-slot="progress-value" |
| {...props} |
| /> |
| ) |
| } |
|
|
| export { |
| Progress, |
| ProgressTrack, |
| ProgressIndicator, |
| ProgressLabel, |
| ProgressValue, |
| } |
|
|