feat(cis): add CCTranscriptionPanel Live tab to sidebar (Phase 1)

- Add CCTranscriptionPanel component with Live tab
- Add Zustand transcriptionStore for session state management
- Wire panel into BasePanel sidebar system
- Fix merged switch cases in getIconForPanel, getDescriptionForPanel, renderCurrentPanel
- Add VITE_WHISPERLIVE_URL to .env
This commit is contained in:
2026-05-20 21:34:21 +00:00
parent 0f4956d4a4
commit 2ee4e4afe7
3 changed files with 241 additions and 1 deletions
@@ -23,7 +23,8 @@ import {
Search as SearchIcon,
Navigation as NavigationIcon,
Save as NodeIcon,
Assignment as ExamIcon
Assignment as ExamIcon,
Mic as MicIcon
} from '@mui/icons-material';
import { CCShapesPanel } from './CCShapesPanel';
import { CCSlidesPanel } from './CCSlidesPanel';
@@ -33,6 +34,7 @@ import { CCYoutubePanel } from './CCYoutubePanel';
import { CCGraphPanel } from './CCGraphPanel';
import { CCExamMarkerPanel } from './CCExamMarkerPanel';
import { CCSearchPanel } from './CCSearchPanel'
import { CCTranscriptionPanel } from './CCTranscriptionPanel'
import { PANEL_DIMENSIONS, Z_INDICES } from './panel-styles';
import './panel.css';
// import { CCNavigationPanel } from './navigation/CCNavigationPanel';
@@ -47,6 +49,7 @@ export const PANEL_TYPES = {
{ id: 'node-snapshot', label: 'Node', order: 20 },
{ id: 'files', label: 'Files', order: 25 },
{ id: 'cc-shapes', label: 'Shapes', order: 30 },
{ id: 'transcription', label: 'Transcription', order: 35 },
{ id: 'slides', label: 'Slides', order: 40 },
{ id: 'youtube', label: 'YouTube', order: 50 },
{ id: 'graph', label: 'Graph', order: 60 },
@@ -208,6 +211,8 @@ export const BasePanel: React.FC<BasePanelProps> = ({
return <NavigationIcon />;
case 'cc-shapes':
return <ShapesIcon />;
case 'transcription':
return <MicIcon />;
case 'slides':
return <SlidesIcon />;
case 'youtube':
@@ -231,6 +236,8 @@ export const BasePanel: React.FC<BasePanelProps> = ({
switch (panelId) {
case 'cabinets':
return 'Manage file cabinets';
case 'transcription':
return 'Record and transcribe lessons';
case 'cc-shapes':
return 'Add shapes and elements to your canvas';
case 'slides':
@@ -260,6 +267,8 @@ export const BasePanel: React.FC<BasePanelProps> = ({
switch (currentPanelType) {
case 'cabinets':
return <CCCabinetsPanel />;
case 'transcription':
return <CCTranscriptionPanel />;
case 'files':
return <CCFilesPanel />;
case 'cc-shapes':