diff --git a/components/media/ConversionOptions.tsx b/components/media/ConversionOptions.tsx
deleted file mode 100644
index e20acfb..0000000
--- a/components/media/ConversionOptions.tsx
+++ /dev/null
@@ -1,271 +0,0 @@
-'use client';
-
-import * as React from 'react';
-import { Slider } from '@/components/ui/slider';
-import { Input } from '@/components/ui/input';
-import { Label } from '@/components/ui/label';
-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"
- disabled={disabled}
- />
-
Leave empty to keep original
-
-
- {/* Height */}
-
-
-
handleOptionChange('imageHeight', e.target.value ? parseInt(e.target.value) : undefined)}
- placeholder="Original"
- disabled={disabled}
- />
-
Leave empty to maintain aspect ratio
-
-
- );
-
- return (
- <>
- {outputFormat.category === 'video' && renderVideoOptions()}
- {outputFormat.category === 'audio' && renderAudioOptions()}
- {outputFormat.category === 'image' && renderImageOptions()}
- >
- );
-}
diff --git a/components/media/FileConverter.tsx b/components/media/FileConverter.tsx
index 4da4937..d8dac52 100644
--- a/components/media/FileConverter.tsx
+++ b/components/media/FileConverter.tsx
@@ -1,14 +1,7 @@
'use client';
import * as React from 'react';
-import {
- Select,
- SelectContent,
- SelectItem,
- SelectTrigger,
- SelectValue,
-} from '@/components/ui/select';
-import { Slider } from '@/components/ui/slider';
+import { SliderRow } from '@/components/ui/slider-row';
import { FileUpload } from './FileUpload';
import { ConversionPreview } from './ConversionPreview';
import { toast } from 'sonner';
@@ -30,6 +23,9 @@ type MobileTab = 'upload' | 'convert';
const actionBtn =
'flex items-center justify-center gap-1.5 px-3 py-1.5 text-xs glass rounded-md border border-border/30 text-muted-foreground hover:text-primary hover:border-primary/30 hover:bg-primary/10 transition-all disabled:opacity-40 disabled:cursor-not-allowed';
+const selectCls =
+ 'w-full bg-transparent border border-border/40 rounded-lg px-2.5 py-1.5 text-xs font-mono outline-none focus:border-primary/50 transition-colors text-foreground/80 cursor-pointer disabled:opacity-40';
+
export function FileConverter() {
const [selectedFiles, setSelectedFiles] = React.useState