- Add Next.js 16 with Turbopack and React 19 - Add Tailwind CSS 4 with OKLCH color system - Implement FFmpeg.wasm for video/audio conversion - Implement ImageMagick WASM for image conversion - Add file upload with drag-and-drop - Add format selector with fuzzy search - Add conversion preview and download - Add conversion history with localStorage - Add dark/light theme support - Support 22+ file formats across video, audio, and images 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
34 lines
945 B
TypeScript
34 lines
945 B
TypeScript
import * as React from 'react';
|
|
import { cn } from '@/lib/utils/cn';
|
|
|
|
export interface ProgressProps {
|
|
value: number;
|
|
max?: number;
|
|
className?: string;
|
|
showLabel?: boolean;
|
|
}
|
|
|
|
const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(
|
|
({ value, max = 100, className, showLabel = false }, ref) => {
|
|
const percentage = Math.min(Math.max((value / max) * 100, 0), 100);
|
|
|
|
return (
|
|
<div ref={ref} className={cn('w-full', className)}>
|
|
<div className="relative h-4 w-full overflow-hidden rounded-full bg-secondary">
|
|
<div
|
|
className="h-full bg-primary transition-all duration-300 ease-in-out"
|
|
style={{ width: `${percentage}%` }}
|
|
/>
|
|
</div>
|
|
{showLabel && (
|
|
<div className="mt-1 text-xs text-muted-foreground text-right">{Math.round(percentage)}%</div>
|
|
)}
|
|
</div>
|
|
);
|
|
}
|
|
);
|
|
|
|
Progress.displayName = 'Progress';
|
|
|
|
export { Progress };
|