feat: add full screen audio player and radio station management

- Implemented FullScreenPlayer component for enhanced audio playback experience.
- Added functionality to toggle full screen mode in AudioPlayer.
- Introduced NavidromeConfigContext for managing Navidrome server configurations.
- Created RadioStationsPage for managing internet radio stations, including adding, deleting, and playing stations.
- Enhanced SettingsPage to configure Navidrome server connection with validation and feedback.
- Updated NavidromeAPI to support fetching and managing radio stations.
- Integrated lyrics fetching and display in FullScreenPlayer using LrcLibClient.
This commit is contained in:
2025-06-19 20:34:15 +00:00
committed by GitHub
parent 92293ce41a
commit 52bcc81068
10 changed files with 1204 additions and 27 deletions

View File

@@ -18,6 +18,7 @@ export function Sidebar({ className, playlists }: SidebarProps) {
const isAlbums = usePathname() === "/library/albums";
const isArtists = usePathname() === "/library/artists";
const isQueue = usePathname() === "/queue";
const isRadio = usePathname() === "/radio";
const isHistory = usePathname() === "/history";
const isSongs = usePathname() === "/library/songs"; const isPlaylists = usePathname() === "/library/playlists";
@@ -84,6 +85,27 @@ export function Sidebar({ className, playlists }: SidebarProps) {
Queue
</Button>
</Link>
<Link href="/radio">
<Button variant={isRadio ? "secondary" : "ghost"} className="w-full justify-start mb-2">
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
className="mr-2 h-4 w-4"
>
<path d="M4.9 19.1C1 15.2 1 8.8 4.9 4.9"/>
<path d="M7.8 16.2c-2.3-2.3-2.3-6.1 0-8.5"/>
<circle cx="12" cy="12" r="2"/>
<path d="M16.2 7.8c2.3 2.3 2.3 6.1 0 8.5"/>
<path d="M19.1 4.9C23 8.8 23 15.2 19.1 19.1"/>
</svg>
Radio
</Button>
</Link>
</div>
</div>
<div>