'use client'; import * as React from 'react'; import { ChevronDown, ChevronUp } from 'lucide-react'; import { Card } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Slider } from '@/components/ui/slider'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select'; import type { ConversionOptions, ConversionFormat } from '@/types/media'; interface ConversionOptionsProps { inputFormat: ConversionFormat; outputFormat: ConversionFormat; options: ConversionOptions; onOptionsChange: (options: ConversionOptions) => void; disabled?: boolean; } export function ConversionOptionsPanel({ inputFormat, outputFormat, options, onOptionsChange, disabled = false, }: ConversionOptionsProps) { const [isExpanded, setIsExpanded] = React.useState(false); const handleOptionChange = (key: string, value: any) => { onOptionsChange({ ...options, [key]: value }); }; const renderVideoOptions = () => (
{/* Video Codec */}
{/* Video Bitrate */}
{options.videoBitrate || '2M'}
handleOptionChange('videoBitrate', `${vals[0]}M`)} disabled={disabled} />

Higher bitrate = better quality, larger file

{/* Resolution */}
{/* FPS */}
{/* Audio Bitrate */}
{options.audioBitrate || '128k'}
handleOptionChange('audioBitrate', `${vals[0]}k`)} disabled={disabled} />
); const renderAudioOptions = () => (
{/* Audio Codec */}
{/* Bitrate */}
{options.audioBitrate || '192k'}
handleOptionChange('audioBitrate', `${vals[0]}k`)} disabled={disabled} />
{/* Sample Rate */}
{/* Channels */}
); const renderImageOptions = () => (
{/* Quality */}
{options.imageQuality || 85}%
handleOptionChange('imageQuality', vals[0])} disabled={disabled} />
{/* Width */}
handleOptionChange('imageWidth', e.target.value ? parseInt(e.target.value) : undefined)} placeholder="Original" className="flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm" disabled={disabled} />

Leave empty to keep original

{/* Height */}
handleOptionChange('imageHeight', e.target.value ? parseInt(e.target.value) : undefined)} placeholder="Original" className="flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm" disabled={disabled} />

Leave empty to maintain aspect ratio

); return ( {/* Advanced Options Toggle */} {/* Advanced Options Panel */} {isExpanded && (
{outputFormat.category === 'video' && renderVideoOptions()} {outputFormat.category === 'audio' && renderAudioOptions()} {outputFormat.category === 'image' && renderImageOptions()}
)}
); }