diff --git a/web/studio/src/components/MediaPlayer.tsx b/web/studio/src/components/MediaPlayer.tsx index 86455c9..c97a290 100644 --- a/web/studio/src/components/MediaPlayer.tsx +++ b/web/studio/src/components/MediaPlayer.tsx @@ -9,6 +9,7 @@ interface MediaPlayerProps { en?: string; es?: string; cues?: { start: number; end: number; text: string }[]; + cues_en?: { start: number; end: number; text: string }[]; } | null; locked?: boolean; onEnded?: () => void; @@ -139,88 +140,90 @@ export default function MediaPlayer({ src, type, transcription, locked, onEnded, }; return ( -
- {/* Media Content */} -
- {renderMedia()} +
+ {/* Top Row: Media + Interactive Sidebar */} +
0 ? 'xl:grid-cols-12' : ''} gap-6 w-full`}> + {/* Media Content */} +
0 ? 'xl:col-span-8' : 'w-full'} relative`}> + {renderMedia()} - {locked && ( -
-
- 🔒 + {locked && ( +
+
+ 🔒 +
+

Playback Limited

+

This content can only be played once according to the activity rules.

-

Playback Limited

-

This content can only be played once according to the activity rules.

-
- )} + )} +
- {/* Simple Transcript (Fallback or Mobile) */} - {shouldShowTranscription && !transcription?.cues && ( -
-
-

- Transcription AI Enhanced -

+ {/* Interactive Sidebar (Cues Only) */} + {shouldShowTranscription && activeCues.length > 0 && ( +
+
+

Interactive Content

-
- "{transcription[language] || "Transcription not available."}" +
+ {activeCues.map((cue, idx) => ( + + ))}
)}
- {/* Interactive Sidebar */} - {shouldShowTranscription && transcription?.cues && ( -
-
-

Interactive Content

-
- - -
-
-
- {language === "en" && transcription.en && !transcription.cues.some(c => c.text === transcription.en) && ( -

- {transcription.en} -

+ {/* Bottom Row: Full Transcription Text */} + {shouldShowTranscription && ( +
+
+

+ 📝 Full Transcription ({language.toUpperCase()}) +

+ {!transcription.cues && ( +
+ + +
)} - {transcription.cues.map((cue, idx) => ( - - ))} +
+
+ "{transcription[language] || "Transcription not available."}"
)}
); +} + ); }