mirror of
https://github.com/rustfs/console.git
synced 2026-08-31 01:37:52 +08:00
58 lines
1.6 KiB
TypeScript
58 lines
1.6 KiB
TypeScript
"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-none 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-xs", className)} data-slot="progress-label" {...props} />
|
|
}
|
|
|
|
function ProgressValue({ className, ...props }: ProgressPrimitive.Value.Props) {
|
|
return (
|
|
<ProgressPrimitive.Value
|
|
className={cn("ms-auto text-xs text-muted-foreground tabular-nums", className)}
|
|
data-slot="progress-value"
|
|
{...props}
|
|
/>
|
|
)
|
|
}
|
|
|
|
export { Progress, ProgressTrack, ProgressIndicator, ProgressLabel, ProgressValue }
|