feat: initialize AeroStart browser start page project

Implement a modern, customizable browser start page with comprehensive features:

- Multi-theme support with 8 preset color schemes
- Custom wallpaper system supporting images and videos with multiple fit modes
- Integrated search functionality with 5 major search engines (Google, Baidu, Bing, DuckDuckGo, Bilibili)
- Real-time clock component with 12/24 hour format options
- Dynamic background blur effect during search for enhanced focus
- Complete i18n system with English and Chinese language support
- Responsive design with smooth animations and transitions
- Local storage integration for persistent user preferences
- Context menu system for quick settings access
- Toast notification system for user feedback
- Error boundary for robust error handling

Tech Stack:
- React 19 with TypeScript
- Vite 6 for build tooling
- Tailwind CSS for styling
- Local storage for data persistence

Project Structure:
- Core components: Clock, SearchBox, SettingsModal, ThemeSettings, WallpaperManager
- Utility modules: storage management, search suggestions
- Context providers: Toast notifications, i18n
- Type definitions and constants configuration

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
ZyphrZero
2025-12-05 02:55:50 +08:00
parent aa197e4e48
commit 56dd6d8bf2
31 changed files with 5270 additions and 0 deletions

40
types.ts Normal file
View File

@@ -0,0 +1,40 @@
export interface SearchEngine {
name: string;
urlPattern: string;
icon?: string;
}
export type BackgroundType = 'image' | 'video';
export type WallpaperFit = 'cover' | 'contain' | 'fill' | 'repeat' | 'center';
export interface PresetWallpaper {
id?: string;
name: string;
type: BackgroundType;
url: string;
thumbnail?: string;
isCustom?: boolean;
}
export type Language = 'en' | 'zh';
export interface UserSettings {
use24HourFormat: boolean;
showSeconds: boolean;
backgroundBlur: number;
searchEngines: SearchEngine[];
selectedEngine: string;
themeColor: string;
searchOpacity: number;
enableMaskBlur: boolean;
backgroundUrl: string;
backgroundType: BackgroundType;
wallpaperFit: WallpaperFit;
customWallpapers: PresetWallpaper[];
enableSearchHistory: boolean;
searchHistory: string[];
language: Language;
}