@@ -22,6 +22,9 @@ import { SlArrowLeft } from "react-icons/sl";
2222import { TimeTableSidebar } from "./TimeTableSidebar" ;
2323import TimeTableToolbar from "./TimeTableToolbar" ;
2424import BottomNav from "@/widgets/BottomNav" ;
25+ import { useAuth } from "@/contexts/AuthProvider" ;
26+ import { useNavigate } from "react-router-dom" ;
27+ import Modal from "@/widgets/Modal" ;
2528
2629export default function TimetablePage ( ) {
2730 const now = new Date ( ) ;
@@ -58,6 +61,9 @@ export default function TimetablePage() {
5861 const [ isSidebarOpen , setIsSidebarOpen ] = useState ( true ) ;
5962 const [ isTimetableSimplified , setIsTimetableSimplified ] = useState ( false ) ;
6063
64+ const { user } = useAuth ( ) ;
65+ const navigate = useNavigate ( ) ;
66+
6167 useEffect ( ( ) => {
6268 loadTimetable ( year , semester ) ;
6369 } , [ year , semester , loadTimetable ] ) ;
@@ -202,8 +208,14 @@ export default function TimetablePage() {
202208 선택된 시간표가 없어요
203209 </ div >
204210 < div style = { { opacity : 0.7 , lineHeight : 1.5 } } >
205- 왼쪽 사이드바에서 시간표를 추가하거나 선택해 주세요.
211+ < span className = { styles . emptyDesktop } >
212+ 왼쪽 사이드바에서 시간표를 추가하거나 선택해 주세요.
213+ </ span >
214+ < span className = { styles . emptyMobile } >
215+ 시간표는 데스크탑 뷰에서 설정해주세요!
216+ </ span >
206217 </ div >
218+
207219 </ div >
208220 ) : (
209221 < TimetableGrid
@@ -239,6 +251,20 @@ export default function TimetablePage() {
239251 setIsClicked = { setIsAddClassPanelOpen }
240252 />
241253 ) }
254+
255+ { ! user &&
256+ < div className = { styles . notFound } >
257+ < Modal
258+ content = "시간표 페이지 이용을 위해서는 로그인을 해주세요."
259+ leftText = "로그인"
260+ rightText = "회원가입"
261+ onLeftClick = { ( ) => navigate ( "/auth/login" ) }
262+ onRightClick = { ( ) => navigate ( "/auth/signup" ) }
263+ onClose = { null }
264+ />
265+ </ div >
266+ }
267+
242268 < BottomNav />
243269 </ div >
244270 ) ;
0 commit comments