diff --git a/apps/web/app/transcribe/page.tsx b/apps/web/app/transcribe/page.tsx index 6d5be89..d3c27d5 100644 --- a/apps/web/app/transcribe/page.tsx +++ b/apps/web/app/transcribe/page.tsx @@ -12,7 +12,10 @@ import { Clock, User, Volume2, - FileText + FileText, + Upload, + X, + FileAudio } from 'lucide-react'; // Mock transcription data for demonstration @@ -31,9 +34,14 @@ export default function TranscribePage() { const [duration, setDuration] = useState(40); const [searchQuery, setSearchQuery] = useState(""); const [playbackSpeed, setPlaybackSpeed] = useState(1); + const [isUploading, setIsUploading] = useState(false); + const [uploadProgress, setUploadProgress] = useState(0); + const [selectedFile, setSelectedFile] = useState(null); + const audioRef = useRef(null); const transcriptRef = useRef(null); const activeLineRef = useRef(null); + const fileInputRef = useRef(null); // Auto-scroll logic useEffect(() => { @@ -45,6 +53,30 @@ export default function TranscribePage() { } }, [currentTime]); + const handleUpload = (event: React.ChangeEvent) => { + const file = event.target.files?.[0]; + if (file) { + setSelectedFile(file); + simulateUpload(); + } + }; + + const simulateUpload = () => { + setIsUploading(true); + let progress = 0; + const interval = setInterval(() => { + progress += 10; + setUploadProgress(progress); + if (progress >= 100) { + clearInterval(interval); + setTimeout(() => { + setIsUploading(false); + setUploadProgress(0); + }, 500); + } + }, 200); + }; + const formatTime = (seconds: number) => { const h = Math.floor(seconds / 3600); const m = Math.floor((seconds % 3600) / 60); @@ -73,6 +105,20 @@ export default function TranscribePage() {

Real-time synchronized media player and transcript.

+ +
+ {isUploading && ( +
+
+ +
+
+
+

Processing: {selectedFile?.name}

+

{uploadProgress}%

+
+
+
+
+
+ +
+ )} +
{/* Left: Media Player & Controls */}
- -

Evidentiary_Hearing_022426.mp3

+ {selectedFile ? ( + + ) : ( + + )} +

{selectedFile ? selectedFile.name : 'Evidentiary_Hearing_022426.mp3'}

Matter: Barden v. State Farm

{/* Minimalist Player UI Overlay */}