File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 55 < link rel ="icon " type ="image/svg+xml " href ="/assets/logo.png " />
66 < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
77 < title > 행샤</ title >
8+ < meta
9+ name ="description "
10+ content ="서울대학교 교내 행사를 한눈에 모아보는 캘린더 서비스 "
11+ />
12+ < meta property ="og:title " content ="행샤 " />
13+ < meta property ="og:description " content ="... " />
14+ < meta property ="og:url " content ="https://hangsha.wafflestudio.com " />
15+ < meta
16+ name ="google-site-verification "
17+ content ="vN4BTCAW-_S7Oc3eqEP1cQgi3rDjRQmh6ZHSawwF9Ys "
18+ />
819 </ head >
920 < body >
1021 < div id ="root "> </ div >
Original file line number Diff line number Diff line change 1+ User-agent: *
2+ Allow: /
3+
4+ Disallow: /auth/
5+ Disallow: /sync
6+ Disallow: /my
7+ Disallow: /bookmark
8+ Disallow: /memo
9+
10+ Sitemap: https://hangsha.wafflestudio.com/sitemap.xml
Original file line number Diff line number Diff line change 1+ <?xml version =" 1.0" encoding =" UTF-8" ?>
2+ <urlset xmlns =" http://www.sitemaps.org/schemas/sitemap/0.9" >
3+ <url >
4+ <loc >https://hangsha.wafflestudio.com/</loc >
5+ <lastmod >2026-05-18</lastmod >
6+ <changefreq >weekly</changefreq >
7+ <priority >1.0</priority >
8+ </url >
9+ <url >
10+ <loc >https://hangsha.wafflestudio.com/main</loc >
11+ <lastmod >2026-05-18</lastmod >
12+ <changefreq >daily</changefreq >
13+ <priority >0.9</priority >
14+ </url >
15+ <url >
16+ <loc >https://hangsha.wafflestudio.com/main/day</loc >
17+ <lastmod >2026-05-18</lastmod >
18+ <changefreq >daily</changefreq >
19+ <priority >0.7</priority >
20+ </url >
21+ <url >
22+ <loc >https://hangsha.wafflestudio.com/search</loc >
23+ <lastmod >2026-05-18</lastmod >
24+ <changefreq >weekly</changefreq >
25+ <priority >0.6</priority >
26+ </url >
27+ </urlset >
Original file line number Diff line number Diff line change @@ -44,6 +44,10 @@ export const TimeTableSidebar = ({
4444 const handleTimetableClick = ( ) => {
4545 navigate ( "/timetable" ) ;
4646 } ;
47+
48+ const handleBookmarkClick = ( ) => {
49+ navigate ( "/bookmark" ) ;
50+ }
4751
4852 const startRename = ( tt : Timetable ) => {
4953 setNameChangeId ( tt . id ) ;
@@ -202,14 +206,18 @@ export const TimeTableSidebar = ({
202206 />
203207 < span > 캘린더로 돌아가기</ span >
204208 </ button >
205- < div className = { styles . pageLink } >
209+ < button
210+ type = "button"
211+ className = { styles . pageLink }
212+ onClick = { ( ) => handleBookmarkClick ( ) }
213+ >
206214 < img
207215 className = { styles . icon }
208216 src = "/assets/bookmark.svg"
209217 alt = "bookmark icon"
210218 />
211219 < span > 찜한 행사</ span >
212- </ div >
220+ </ button >
213221 < button
214222 type = "button"
215223 className = { styles . pageLink }
Original file line number Diff line number Diff line change @@ -60,6 +60,19 @@ export default function TimetablePage() {
6060 const [ isAddClassPanelOpen , setIsAddClassPanelOpen ] = useState ( false ) ;
6161 const [ isSidebarOpen , setIsSidebarOpen ] = useState ( true ) ;
6262 const [ isTimetableSimplified , setIsTimetableSimplified ] = useState ( false ) ;
63+ const [ isLoginModalOpen , setIsLoginModalOpen ] = useState ( false ) ;
64+
65+ const handleAddTimetable = async ( ) => {
66+ if ( ! user ) {
67+ setIsLoginModalOpen ( true ) ;
68+ return ;
69+ }
70+ await createTimetable ( {
71+ year,
72+ semester,
73+ name : "새 시간표" ,
74+ } ) ;
75+ } ;
6376
6477 const { user } = useAuth ( ) ;
6578 const navigate = useNavigate ( ) ;
@@ -174,13 +187,7 @@ export default function TimetablePage() {
174187 >
175188 < TimeTableSidebar
176189 timetables = { timetables }
177- onAddTimetable = { ( ) =>
178- createTimetable ( {
179- year,
180- semester,
181- name : "새 시간표" ,
182- } )
183- }
190+ onAddTimetable = { handleAddTimetable }
184191 onSelectTimetable = { selectTimetable }
185192 onRename = { updateTimetableName }
186193 onDelete = { deleteTimetable }
@@ -263,6 +270,15 @@ export default function TimetablePage() {
263270 </ div >
264271 }
265272
273+ { isLoginModalOpen && (
274+ < Modal
275+ content = { "시간표 추가를 위해서는\n로그인이 필요해요." }
276+ leftText = "로그인 ·회원가입 페이지로 이동"
277+ onLeftClick = { ( ) => navigate ( "/" ) }
278+ onClose = { ( ) => setIsLoginModalOpen ( false ) }
279+ />
280+ ) }
281+
266282 < BottomNav />
267283 </ div >
268284 ) ;
You can’t perform that action at this time.
0 commit comments