feat: merge Voice, Media, and Recordings into unified Live panel

- New LivePanel component combines voice bridge, media player, screen share, and recordings
- Single page layout: voice controls → audio visualizer + active speakers → now playing → music/screen/recordings tabs
- Reduced tabs from 6 to 4: Live, Messages, Analytics, Review
- Sidebar updated with new tab structure
- Default tab changed from 'voice' to 'live'
- Cleaner compact layout with icon buttons and inline controls
- Recordings sub-panel with user avatars, status badges, and download buttons

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
MythEclipse
2026-05-30 16:20:41 +07:00
co-authored by Claude Opus 4.8
parent c213300800
commit 9019e24263
6 changed files with 343 additions and 95 deletions
+2 -6
View File
@@ -5,19 +5,15 @@ import type { VoiceStatus } from "../../types/voice";
import { Badge } from "../ui/badge";
const titles: Record<DashboardTab, string> = {
voice: "Voice Control",
media: "Media Player",
live: "Voice, Media & Recordings",
messages: "Messages & Moderation",
recordings: "Voice Recordings",
analytics: "Analytics & Insights",
review: "Moderation Review",
};
const subtitles: Record<DashboardTab, string> = {
voice: "Join voice channels and stream audio.",
media: "Queue music, videos, and screen share.",
live: "Join voice channels, play media, stream audio, and browse recordings.",
messages: "Capture, analyse, and moderate Discord messages.",
recordings: "Browse recorded voice segments.",
analytics: "Server moderation statistics and trends.",
review: "Review AI-flagged messages for moderation.",
};
+3 -5
View File
@@ -1,13 +1,11 @@
import { Bot, BarChart3, MessageSquare, Music2, ShieldAlert, Volume2, Mic } from "lucide-react";
import { Bot, BarChart3, MessageSquare, ShieldAlert, Radio } from "lucide-react";
import type { DashboardTab } from "../../types/ui";
import { cn } from "../../lib/utils";
import { Button } from "../ui/button";
const navItems: Array<{ id: DashboardTab; label: string; icon: typeof Volume2 }> = [
{ id: "voice", label: "Voice", icon: Volume2 },
{ id: "media", label: "Media", icon: Music2 },
const navItems: Array<{ id: DashboardTab; label: string; icon: typeof Radio }> = [
{ id: "live", label: "Live", icon: Radio },
{ id: "messages", label: "Messages", icon: MessageSquare },
{ id: "recordings", label: "Recordings", icon: Mic },
{ id: "analytics", label: "Analytics", icon: BarChart3 },
{ id: "review", label: "Review", icon: ShieldAlert },
];