feat: Radio Plugin – 3D Globe mit weltweiten Radiosendern
- Radio Garden API Client (30K+ Orte, Sender-Suche, Stream-URL Auflösung) - Discord Voice Streaming via ffmpeg (PCM Pipeline) - Interactive 3D Globe (globe.gl) mit allen Radiosender-Standorten - Sender-Panel mit Play/Stop/Favoriten - Live-Suche nach Sendern und Städten - Now-Playing Bar mit Equalizer-Animation - Guild/Voice-Channel Auswahl - SSE Broadcasting für Live-Updates - Favoriten-System mit Persistenz - Responsive Design (Mobile/Tablet/Desktop) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
ae1c41f0ae
commit
847c963d86
7 changed files with 1487 additions and 9 deletions
|
|
@ -1,4 +1,5 @@
|
|||
import { useState, useEffect, useRef } from 'react';
|
||||
import RadioTab from './plugins/radio/RadioTab';
|
||||
|
||||
interface PluginInfo {
|
||||
name: string;
|
||||
|
|
@ -6,8 +7,10 @@ interface PluginInfo {
|
|||
description: string;
|
||||
}
|
||||
|
||||
// Plugin tab components will be registered here
|
||||
const tabComponents: Record<string, React.FC<{ data: any }>> = {};
|
||||
// Plugin tab components
|
||||
const tabComponents: Record<string, React.FC<{ data: any }>> = {
|
||||
radio: RadioTab,
|
||||
};
|
||||
|
||||
export function registerTab(pluginName: string, component: React.FC<{ data: any }>) {
|
||||
tabComponents[pluginName] = component;
|
||||
|
|
@ -72,6 +75,7 @@ export default function App() {
|
|||
|
||||
// Tab icon mapping
|
||||
const tabIcons: Record<string, string> = {
|
||||
radio: '\u{1F30D}',
|
||||
soundboard: '\u{1F3B5}',
|
||||
stats: '\u{1F4CA}',
|
||||
events: '\u{1F4C5}',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue