diff --git a/components/canvas/canvas-area.tsx b/components/canvas/canvas-area.tsx
index 8dade97e..7d13d7e4 100644
--- a/components/canvas/canvas-area.tsx
+++ b/components/canvas/canvas-area.tsx
@@ -37,6 +37,8 @@ export function CanvasArea({
onNextSlide,
onPlayPause,
onWhiteboardClose,
+ isPresenting,
+ onTogglePresentation,
showStopDiscussion,
onStopDiscussion,
hideToolbar,
@@ -246,6 +248,8 @@ export function CanvasArea({
onNextSlide={onNextSlide}
onPlayPause={onPlayPause}
onWhiteboardClose={onWhiteboardClose}
+ isPresenting={isPresenting}
+ onTogglePresentation={onTogglePresentation}
showStopDiscussion={showStopDiscussion}
onStopDiscussion={onStopDiscussion}
/>
diff --git a/components/canvas/canvas-toolbar.tsx b/components/canvas/canvas-toolbar.tsx
index bf4db9f4..b0c7b50d 100644
--- a/components/canvas/canvas-toolbar.tsx
+++ b/components/canvas/canvas-toolbar.tsx
@@ -13,6 +13,8 @@ import {
Volume2,
VolumeX,
Repeat,
+ Maximize2,
+ Minimize2,
} from 'lucide-react';
import { cn } from '@/lib/utils';
import { useStageStore } from '@/lib/store';
@@ -35,6 +37,8 @@ export interface CanvasToolbarProps {
readonly onWhiteboardClose: () => void;
readonly showStopDiscussion?: boolean;
readonly onStopDiscussion?: () => void;
+ readonly isPresenting?: boolean;
+ readonly onTogglePresentation?: () => void;
readonly className?: string;
// Audio/playback controls
readonly ttsEnabled?: boolean;
@@ -92,6 +96,8 @@ export function CanvasToolbar({
onWhiteboardClose,
showStopDiscussion,
onStopDiscussion,
+ isPresenting,
+ onTogglePresentation,
className,
ttsEnabled,
ttsMuted,
@@ -131,6 +137,7 @@ export function CanvasToolbar({
// Effective volume for display
const effectiveVolume = ttsMuted ? 0 : ttsVolume;
+ const presentationLabel = isPresenting ? t('stage.exitFullscreen') : t('stage.fullscreen');
return (
@@ -382,6 +389,26 @@ export function CanvasToolbar({
{/* ── Right: chat toggle ── */}
+ {onTogglePresentation && (
+
+ )}
{onToggleChat && (