diff --git a/frontend/src/components/PodView.tsx b/frontend/src/components/PodView.tsx
index ed87544..2b5273d 100644
--- a/frontend/src/components/PodView.tsx
+++ b/frontend/src/components/PodView.tsx
@@ -14,6 +14,7 @@ import {
MicIcon,
MicOffIcon,
MonitorUpIcon,
+ Music2Icon,
PhoneCallIcon,
PhoneOffIcon,
PanelLeftIcon,
@@ -26,6 +27,7 @@ import {
VolumeXIcon,
WorkflowIcon,
XIcon,
+ type LucideIcon,
} from 'lucide-react';
import type { Room, RemoteTrack, RemoteTrackPublication } from 'livekit-client';
import type {
@@ -637,47 +639,61 @@ export function PodView({
-
-
-
-
-
-
+
+
+
void enableSound()}
+ disabled={!room}
+ active={!audioBlocked}
+ attention={audioBlocked}
+ />
+ void toggleMic()}
+ disabled={!room}
+ active={micOn}
+ />
+
+ void playPodManVoiceTest()}
+ disabled={!room || testingVoice}
+ active={testingVoice}
+ busy={testingVoice}
+ />
+
+
+
+
+
+
+
+ {sharing ? 'Stop sharing your screen' : 'Share your screen with PodMan'}
+
+
@@ -1693,3 +1709,46 @@ function initials(name: string): string {
.slice(0, 2)
.toUpperCase();
}
+
+/**
+ * Compact, icon-only control for the pod toolbar. The label is hidden by
+ * default and surfaced on hover/focus via tooltip, so the row stays tight and
+ * responsive. `active` fills the button (engaged state), `attention` promotes
+ * it to the primary colour (needs a user action, e.g. audio is blocked).
+ */
+function PodControlButton({
+ label,
+ icon: Icon,
+ onClick,
+ disabled,
+ active = false,
+ attention = false,
+ busy = false,
+}: {
+ label: string;
+ icon: LucideIcon;
+ onClick: () => void;
+ disabled?: boolean;
+ active?: boolean;
+ attention?: boolean;
+ busy?: boolean;
+}) {
+ return (
+
+
+
+
+ {label}
+
+ );
+}