2025-11-17 10:44:49 +01:00
|
|
|
'use client';
|
|
|
|
|
|
feat: add comprehensive user settings system
Settings features:
**Quality Preferences:**
- Default quality preset (High Quality, Balanced, Small File, Web Optimized)
**Behavior Preferences:**
- Auto-start conversion when files are selected
- Show/hide conversion history
- Clear history on reset
**Default Output Formats:**
- Set default format for video conversions (MP4, WebM, AVI, MOV)
- Set default format for audio conversions (MP3, WAV, OGG, AAC)
- Set default format for image conversions (WebP, PNG, JPG, GIF)
Implementation:
- Created settings storage system with localStorage
- SettingsModal component with categorized settings
- Settings button in app header
- Real-time settings updates across components
- Custom event system for settings synchronization
- Reset to defaults functionality
- Professional UI with checkboxes and selects
User experience:
- Settings persist across sessions
- Changes apply immediately
- Clear categorization (Quality, Behavior, Formats)
- Easy reset to defaults with confirmation
- Conditional history display based on settings
- Clean modal interface
Technical features:
- Type-safe settings interface
- Event-driven updates
- Graceful fallback to defaults
- Error handling for localStorage
- Platform-aware functionality
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 13:36:48 +01:00
|
|
|
import * as React from 'react';
|
|
|
|
|
import { Settings } from 'lucide-react';
|
2025-11-17 10:44:49 +01:00
|
|
|
import { FileConverter } from '@/components/converter/FileConverter';
|
2025-11-17 13:18:02 +01:00
|
|
|
import { ConversionHistory } from '@/components/converter/ConversionHistory';
|
2025-11-17 10:44:49 +01:00
|
|
|
import { ThemeToggle } from '@/components/layout/ThemeToggle';
|
feat: add comprehensive user settings system
Settings features:
**Quality Preferences:**
- Default quality preset (High Quality, Balanced, Small File, Web Optimized)
**Behavior Preferences:**
- Auto-start conversion when files are selected
- Show/hide conversion history
- Clear history on reset
**Default Output Formats:**
- Set default format for video conversions (MP4, WebM, AVI, MOV)
- Set default format for audio conversions (MP3, WAV, OGG, AAC)
- Set default format for image conversions (WebP, PNG, JPG, GIF)
Implementation:
- Created settings storage system with localStorage
- SettingsModal component with categorized settings
- Settings button in app header
- Real-time settings updates across components
- Custom event system for settings synchronization
- Reset to defaults functionality
- Professional UI with checkboxes and selects
User experience:
- Settings persist across sessions
- Changes apply immediately
- Clear categorization (Quality, Behavior, Formats)
- Easy reset to defaults with confirmation
- Conditional history display based on settings
- Clean modal interface
Technical features:
- Type-safe settings interface
- Event-driven updates
- Graceful fallback to defaults
- Error handling for localStorage
- Platform-aware functionality
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 13:36:48 +01:00
|
|
|
import { Button } from '@/components/ui/Button';
|
|
|
|
|
import { SettingsModal } from '@/components/ui/SettingsModal';
|
2025-11-17 10:44:49 +01:00
|
|
|
import { ToastProvider } from '@/components/ui/Toast';
|
feat: add comprehensive user settings system
Settings features:
**Quality Preferences:**
- Default quality preset (High Quality, Balanced, Small File, Web Optimized)
**Behavior Preferences:**
- Auto-start conversion when files are selected
- Show/hide conversion history
- Clear history on reset
**Default Output Formats:**
- Set default format for video conversions (MP4, WebM, AVI, MOV)
- Set default format for audio conversions (MP3, WAV, OGG, AAC)
- Set default format for image conversions (WebP, PNG, JPG, GIF)
Implementation:
- Created settings storage system with localStorage
- SettingsModal component with categorized settings
- Settings button in app header
- Real-time settings updates across components
- Custom event system for settings synchronization
- Reset to defaults functionality
- Professional UI with checkboxes and selects
User experience:
- Settings persist across sessions
- Changes apply immediately
- Clear categorization (Quality, Behavior, Formats)
- Easy reset to defaults with confirmation
- Conditional history display based on settings
- Clean modal interface
Technical features:
- Type-safe settings interface
- Event-driven updates
- Graceful fallback to defaults
- Error handling for localStorage
- Platform-aware functionality
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 13:36:48 +01:00
|
|
|
import { getSettings } from '@/lib/storage/settings';
|
2025-11-17 10:44:49 +01:00
|
|
|
|
|
|
|
|
export default function Home() {
|
feat: add comprehensive user settings system
Settings features:
**Quality Preferences:**
- Default quality preset (High Quality, Balanced, Small File, Web Optimized)
**Behavior Preferences:**
- Auto-start conversion when files are selected
- Show/hide conversion history
- Clear history on reset
**Default Output Formats:**
- Set default format for video conversions (MP4, WebM, AVI, MOV)
- Set default format for audio conversions (MP3, WAV, OGG, AAC)
- Set default format for image conversions (WebP, PNG, JPG, GIF)
Implementation:
- Created settings storage system with localStorage
- SettingsModal component with categorized settings
- Settings button in app header
- Real-time settings updates across components
- Custom event system for settings synchronization
- Reset to defaults functionality
- Professional UI with checkboxes and selects
User experience:
- Settings persist across sessions
- Changes apply immediately
- Clear categorization (Quality, Behavior, Formats)
- Easy reset to defaults with confirmation
- Conditional history display based on settings
- Clean modal interface
Technical features:
- Type-safe settings interface
- Event-driven updates
- Graceful fallback to defaults
- Error handling for localStorage
- Platform-aware functionality
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 13:36:48 +01:00
|
|
|
const [showSettings, setShowSettings] = React.useState(false);
|
|
|
|
|
const [settings, setSettings] = React.useState(getSettings());
|
|
|
|
|
|
|
|
|
|
// Listen for settings updates
|
|
|
|
|
React.useEffect(() => {
|
|
|
|
|
const handleSettingsUpdate = (e: Event) => {
|
|
|
|
|
const customEvent = e as CustomEvent;
|
|
|
|
|
setSettings(customEvent.detail);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
window.addEventListener('settingsUpdated', handleSettingsUpdate);
|
|
|
|
|
return () => window.removeEventListener('settingsUpdated', handleSettingsUpdate);
|
|
|
|
|
}, []);
|
|
|
|
|
|
2025-11-17 10:44:49 +01:00
|
|
|
return (
|
|
|
|
|
<ToastProvider>
|
|
|
|
|
<div className="min-h-screen bg-background">
|
|
|
|
|
{/* Header */}
|
|
|
|
|
<header className="border-b border-border">
|
2025-11-17 13:20:39 +01:00
|
|
|
<div className="container mx-auto px-3 sm:px-4 py-3 sm:py-4 flex items-center justify-between gap-2">
|
feat: add comprehensive user settings system
Settings features:
**Quality Preferences:**
- Default quality preset (High Quality, Balanced, Small File, Web Optimized)
**Behavior Preferences:**
- Auto-start conversion when files are selected
- Show/hide conversion history
- Clear history on reset
**Default Output Formats:**
- Set default format for video conversions (MP4, WebM, AVI, MOV)
- Set default format for audio conversions (MP3, WAV, OGG, AAC)
- Set default format for image conversions (WebP, PNG, JPG, GIF)
Implementation:
- Created settings storage system with localStorage
- SettingsModal component with categorized settings
- Settings button in app header
- Real-time settings updates across components
- Custom event system for settings synchronization
- Reset to defaults functionality
- Professional UI with checkboxes and selects
User experience:
- Settings persist across sessions
- Changes apply immediately
- Clear categorization (Quality, Behavior, Formats)
- Easy reset to defaults with confirmation
- Conditional history display based on settings
- Clean modal interface
Technical features:
- Type-safe settings interface
- Event-driven updates
- Graceful fallback to defaults
- Error handling for localStorage
- Platform-aware functionality
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 13:36:48 +01:00
|
|
|
<div className="min-w-0 flex-1">
|
2025-11-17 13:20:39 +01:00
|
|
|
<h1 className="text-xl sm:text-2xl font-bold text-foreground">Convert UI</h1>
|
|
|
|
|
<p className="text-xs sm:text-sm text-muted-foreground">
|
2025-11-17 10:44:49 +01:00
|
|
|
File conversion in your browser
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
feat: add comprehensive user settings system
Settings features:
**Quality Preferences:**
- Default quality preset (High Quality, Balanced, Small File, Web Optimized)
**Behavior Preferences:**
- Auto-start conversion when files are selected
- Show/hide conversion history
- Clear history on reset
**Default Output Formats:**
- Set default format for video conversions (MP4, WebM, AVI, MOV)
- Set default format for audio conversions (MP3, WAV, OGG, AAC)
- Set default format for image conversions (WebP, PNG, JPG, GIF)
Implementation:
- Created settings storage system with localStorage
- SettingsModal component with categorized settings
- Settings button in app header
- Real-time settings updates across components
- Custom event system for settings synchronization
- Reset to defaults functionality
- Professional UI with checkboxes and selects
User experience:
- Settings persist across sessions
- Changes apply immediately
- Clear categorization (Quality, Behavior, Formats)
- Easy reset to defaults with confirmation
- Conditional history display based on settings
- Clean modal interface
Technical features:
- Type-safe settings interface
- Event-driven updates
- Graceful fallback to defaults
- Error handling for localStorage
- Platform-aware functionality
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 13:36:48 +01:00
|
|
|
<div className="flex items-center gap-2">
|
|
|
|
|
<Button
|
|
|
|
|
variant="ghost"
|
|
|
|
|
size="icon"
|
|
|
|
|
onClick={() => setShowSettings(true)}
|
|
|
|
|
title="Settings"
|
|
|
|
|
>
|
|
|
|
|
<Settings className="h-5 w-5" />
|
|
|
|
|
</Button>
|
|
|
|
|
<ThemeToggle />
|
|
|
|
|
</div>
|
2025-11-17 10:44:49 +01:00
|
|
|
</div>
|
|
|
|
|
</header>
|
|
|
|
|
|
|
|
|
|
{/* Main content */}
|
2025-11-17 13:20:39 +01:00
|
|
|
<main className="container mx-auto px-3 sm:px-4 py-6 sm:py-8 md:py-16">
|
|
|
|
|
<div className="space-y-6 sm:space-y-8">
|
2025-11-17 13:18:02 +01:00
|
|
|
<FileConverter />
|
feat: add comprehensive user settings system
Settings features:
**Quality Preferences:**
- Default quality preset (High Quality, Balanced, Small File, Web Optimized)
**Behavior Preferences:**
- Auto-start conversion when files are selected
- Show/hide conversion history
- Clear history on reset
**Default Output Formats:**
- Set default format for video conversions (MP4, WebM, AVI, MOV)
- Set default format for audio conversions (MP3, WAV, OGG, AAC)
- Set default format for image conversions (WebP, PNG, JPG, GIF)
Implementation:
- Created settings storage system with localStorage
- SettingsModal component with categorized settings
- Settings button in app header
- Real-time settings updates across components
- Custom event system for settings synchronization
- Reset to defaults functionality
- Professional UI with checkboxes and selects
User experience:
- Settings persist across sessions
- Changes apply immediately
- Clear categorization (Quality, Behavior, Formats)
- Easy reset to defaults with confirmation
- Conditional history display based on settings
- Clean modal interface
Technical features:
- Type-safe settings interface
- Event-driven updates
- Graceful fallback to defaults
- Error handling for localStorage
- Platform-aware functionality
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 13:36:48 +01:00
|
|
|
{settings.showConversionHistory && <ConversionHistory />}
|
2025-11-17 13:18:02 +01:00
|
|
|
</div>
|
2025-11-17 10:44:49 +01:00
|
|
|
</main>
|
|
|
|
|
|
feat: add comprehensive user settings system
Settings features:
**Quality Preferences:**
- Default quality preset (High Quality, Balanced, Small File, Web Optimized)
**Behavior Preferences:**
- Auto-start conversion when files are selected
- Show/hide conversion history
- Clear history on reset
**Default Output Formats:**
- Set default format for video conversions (MP4, WebM, AVI, MOV)
- Set default format for audio conversions (MP3, WAV, OGG, AAC)
- Set default format for image conversions (WebP, PNG, JPG, GIF)
Implementation:
- Created settings storage system with localStorage
- SettingsModal component with categorized settings
- Settings button in app header
- Real-time settings updates across components
- Custom event system for settings synchronization
- Reset to defaults functionality
- Professional UI with checkboxes and selects
User experience:
- Settings persist across sessions
- Changes apply immediately
- Clear categorization (Quality, Behavior, Formats)
- Easy reset to defaults with confirmation
- Conditional history display based on settings
- Clean modal interface
Technical features:
- Type-safe settings interface
- Event-driven updates
- Graceful fallback to defaults
- Error handling for localStorage
- Platform-aware functionality
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 13:36:48 +01:00
|
|
|
{/* Settings Modal */}
|
|
|
|
|
<SettingsModal isOpen={showSettings} onClose={() => setShowSettings(false)} />
|
|
|
|
|
|
2025-11-17 10:44:49 +01:00
|
|
|
{/* Footer */}
|
2025-11-17 13:20:39 +01:00
|
|
|
<footer className="border-t border-border mt-8 sm:mt-12 md:mt-16">
|
|
|
|
|
<div className="container mx-auto px-3 sm:px-4 py-6 text-center text-xs sm:text-sm text-muted-foreground">
|
2025-11-17 10:44:49 +01:00
|
|
|
<p>
|
|
|
|
|
Powered by{' '}
|
|
|
|
|
<a
|
|
|
|
|
href="https://github.com/ffmpegwasm/ffmpeg.wasm"
|
|
|
|
|
target="_blank"
|
|
|
|
|
rel="noopener noreferrer"
|
|
|
|
|
className="text-primary hover:underline"
|
|
|
|
|
>
|
|
|
|
|
FFmpeg.wasm
|
|
|
|
|
</a>
|
|
|
|
|
,{' '}
|
|
|
|
|
<a
|
|
|
|
|
href="https://github.com/dlemstra/magick-wasm"
|
|
|
|
|
target="_blank"
|
|
|
|
|
rel="noopener noreferrer"
|
|
|
|
|
className="text-primary hover:underline"
|
|
|
|
|
>
|
|
|
|
|
ImageMagick WASM
|
|
|
|
|
</a>
|
|
|
|
|
{' '}&{' '}
|
|
|
|
|
<a
|
|
|
|
|
href="https://nextjs.org"
|
|
|
|
|
target="_blank"
|
|
|
|
|
rel="noopener noreferrer"
|
|
|
|
|
className="text-primary hover:underline"
|
|
|
|
|
>
|
|
|
|
|
Next.js 16
|
|
|
|
|
</a>
|
|
|
|
|
</p>
|
|
|
|
|
<p className="mt-2">
|
|
|
|
|
All conversions happen locally in your browser. No files are uploaded to any server.
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
</footer>
|
|
|
|
|
</div>
|
|
|
|
|
</ToastProvider>
|
|
|
|
|
);
|
|
|
|
|
}
|