mirror of
https://github.com/KuekHaoYang/KVideo.git
synced 2026-08-15 00:33:44 +08:00
Settings Feature Documentation
Overview
Comprehensive settings system for KVideo following the Liquid Glass design system principles.
Features
1. Video Source Management
- View all sources: Display default and custom video sources with their URLs
- Toggle sources: Enable/disable sources with animated switches
- Reorder sources: Change priority using up/down arrows
- Delete sources: Remove custom sources (default sources can also be removed)
- Add custom sources: Add new video API sources with validation
- Restore defaults: One-click restore to default source configuration
2. Search Result Sorting
Users can select how search results should be sorted:
- 默认排序 (Default): Original order
- 按相关性 (By Relevance): Most relevant results first
- 延迟低到高 (Latency: Low to High): Fastest responding sources first
- 发布时间(新到旧) (Release Date: Newest First)
- 发布时间(旧到新) (Release Date: Oldest First)
- 按评分(高到低) (By Rating: High to Low)
- 按名称(A-Z) (By Name: A-Z)
- 按名称(Z-A) (By Name: Z-A)
3. Data Management
Export Settings
- Export app configuration to JSON file
- Options to include:
- Search history
- Watch history
- Source configuration (always included)
- Downloaded as timestamped JSON file
Import Settings
- Import previously exported configuration
- Automatic validation
- Auto-refresh after successful import
Reset All Data
- Clear all settings
- Clear search history
- Clear watch history
- Clear all cookies
- Clear all cache
- Restore to factory defaults
Components
Core Components
SourceManager.tsx- Manage video sources with toggle, reorder, deleteAddSourceModal.tsx- Modal dialog for adding custom sourcesExportModal.tsx- Export settings with history optionsImportModal.tsx- Import settings from JSON fileConfirmDialog.tsx- Reusable confirmation dialog (updated)
Store
settings-store.ts- Settings state management and persistence
Design System Compliance
All components strictly follow the Liquid Glass design system:
Visual Elements
- Glass Effect:
backdrop-blur-xl,saturate(180%) - Border Radius: Only
rounded-[var(--radius-2xl)]androunded-[var(--radius-full)] - Colors: CSS variables for theme consistency
- Shadows:
shadow-[var(--shadow-sm)]andshadow-[var(--shadow-md)]
Animations
- Modal Entry/Exit: Fade + scale transforms with cubic-bezier easing
- Switch Toggle: 0.4s fluid transition with
cubic-bezier(0.2, 0.8, 0.2, 1) - Button Hover: Smooth color transitions with brightness changes
- List Items: Staggered animations for visual hierarchy
Interactive Elements
- Checkboxes: Custom styled with smooth check animation
- Switches: Animated toggle with sliding thumb
- Buttons: Glass morphism with hover lift effects
- Inputs: Glass background with focus ring animation
Technical Implementation
State Management
interface AppSettings {
sources: VideoSource[];
sortBy: SortOption;
searchHistory: boolean;
watchHistory: boolean;
}
Local Storage Keys
kvideo-settings- Main settings objectkvideo-search-history- Search history arraykvideo-watch-history- Watch history array
Data Flow
- Settings loaded from localStorage on mount
- Changes immediately persisted to localStorage
- Export creates downloadable JSON blob
- Import validates and applies configuration
- Reset clears all storage and reloads page
Accessibility
- Semantic HTML structure
- ARIA labels on all interactive elements
- Keyboard navigation support
- Focus management in modals
- High contrast mode support
- Screen reader friendly
Browser Compatibility
- Modern browsers with CSS backdrop-filter support
- LocalStorage API
- File API for export/import
- Cookie manipulation for reset
Future Enhancements
- Cloud sync for settings across devices
- Source health monitoring
- Advanced filtering options
- Bulk source import from URL
- Settings backup scheduling
- Theme customization