| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- '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(
- 'bg-muted h-1 rounded-full relative flex w-full items-center overflow-x-hidden',
- className,
- )}
- data-slot="progress-track"
- {...props}
- />
- );
- }
- function ProgressIndicator({
- className,
- ...props
- }: ProgressPrimitive.Indicator.Props) {
- return (
- <ProgressPrimitive.Indicator
- data-slot="progress-indicator"
- className={cn('bg-primary h-full 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(
- 'text-muted-foreground ml-auto text-sm tabular-nums',
- className,
- )}
- data-slot="progress-value"
- {...props}
- />
- );
- }
- export {
- Progress,
- ProgressTrack,
- ProgressIndicator,
- ProgressLabel,
- ProgressValue,
- };
|