From 4d85a1b48f9cf4e1fba8dfbea56367dcb2fc4221 Mon Sep 17 00:00:00 2001 From: adarshm11 Date: Mon, 27 Apr 2026 16:50:38 -0700 Subject: [PATCH] mobile ui for homepage, interview rooms, past views --- .gitignore | 5 +- frontend/src/components/home/HomePage.tsx | 6 +- frontend/src/components/room/CodeEditor.tsx | 61 ++++++++++++++++--- .../src/components/save/PastInterviews.tsx | 2 +- 4 files changed, 60 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index 7eeb1d2..e2fbe1d 100644 --- a/.gitignore +++ b/.gitignore @@ -34,4 +34,7 @@ config.yaml past/ # Private interview template content -frontend/src/util/reactTemplateContent.ts \ No newline at end of file +frontend/src/util/reactTemplateContent.ts + +tmp/ +CLAUDE.md \ No newline at end of file diff --git a/frontend/src/components/home/HomePage.tsx b/frontend/src/components/home/HomePage.tsx index f3734f1..70d1db0 100644 --- a/frontend/src/components/home/HomePage.tsx +++ b/frontend/src/components/home/HomePage.tsx @@ -103,9 +103,9 @@ function HomePage() { />
-

welcome to goderpad

-

sce's interview platform

-
+

welcome to goderpad

+

sce's interview platform

+

create an interview room

diff --git a/frontend/src/components/room/CodeEditor.tsx b/frontend/src/components/room/CodeEditor.tsx index fe77edb..cee3c3d 100644 --- a/frontend/src/components/room/CodeEditor.tsx +++ b/frontend/src/components/room/CodeEditor.tsx @@ -79,6 +79,8 @@ function CodeEditor({ code, setCode, ws, roomId, interviewType, users }: CodeEdi const [debouncedCode, setDebouncedCode] = useState(code); const [leftPercent, setLeftPercent] = useState(50); const [isDragging, setIsDragging] = useState(false); + const [isMobile, setIsMobile] = useState(false); + const [mobilePreviewOpen, setMobilePreviewOpen] = useState(false); const isDraggingRef = useRef(false); const containerRef = useRef(null); const decorationsRef = useRef([]); @@ -212,6 +214,14 @@ function CodeEditor({ code, setCode, ws, roomId, interviewType, users }: CodeEdi setIsDragging(true); }, []); + useEffect(() => { + const mql = window.matchMedia('(max-width: 767px)'); + const update = () => setIsMobile(mql.matches); + update(); + mql.addEventListener('change', update); + return () => mql.removeEventListener('change', update); + }, []); + useEffect(() => { const handleMouseMove = (e: MouseEvent) => { if (!isDraggingRef.current || !containerRef.current) return; @@ -438,7 +448,7 @@ function CodeEditor({ code, setCode, ws, roomId, interviewType, users }: CodeEdi const showPreview = interviewType === 'react'; return ( -
+
{/* Language dropdown — only shown for leetcode interviews */} {interviewType === 'leetcode' &&
@@ -502,9 +512,9 @@ function CodeEditor({ code, setCode, ws, roomId, interviewType, users }: CodeEdi
} {isDragging &&
} -
+
+ {!isMobile && ( +
+
+
+ )}
-
-
-
+ {isMobile && ( + + )} +
{showPreview ? ( <> {hasError && ( @@ -611,6 +653,7 @@ function CodeEditor({ code, setCode, ws, roomId, interviewType, users }: CodeEdi
)} +
); diff --git a/frontend/src/components/save/PastInterviews.tsx b/frontend/src/components/save/PastInterviews.tsx index fe88bfb..ab8f48d 100644 --- a/frontend/src/components/save/PastInterviews.tsx +++ b/frontend/src/components/save/PastInterviews.tsx @@ -129,7 +129,7 @@ function PastInterviewPage() { {files[0].name}

)} -
             {files[selectedFile]?.content}