Extract UI components from format-specific code into dedicated ui/ directory.
This creates a clean separation between functionality and presentation, making
it easier to maintain and share UI elements across different reader formats.
## New UI Components
### Core UI Elements
- **gestures.ts**: Touch and mouse gesture handling
- **keyboard-shortcuts.ts**: Keyboard navigation and shortcuts
- **navigator-panel.ts**: Table of contents and navigation panel
- **offline-manager.ts**: Offline reading support and caching
### Progress Display
- **progress-indicator.ts**: Reading progress bar and percentage
- **reading-speed-tracker.ts**: Words per minute calculation
- **page-display.ts**: Current page / total pages display
### Panel System
- **panel-dock-system.ts**: Draggable, resizable panel dock interface
## Architecture Benefits
1. **Format Independence**: UI components work with any format
2. **Reusability**: Same components work for PDF, EPUB, comic, manga
3. **Maintainability**: UI logic separated from format-specific code
4. **Testability**: UI can be tested independently of readers
5. **Consistency**: Uniform UX across all format types
## Migration Notes
- Moved from reader/features/ to reader/ui/
- Components use ReaderContext interface for format-agnostic access
- Maintains all existing functionality during transition
- Feature registration pattern preserved for backward compatibility
This creates the foundation for a unified user interface that works seamlessly
across all reader format types while maintaining format-specific flexibility.