From bb834f291f10c315137412c654a146c16a7e8d53 Mon Sep 17 00:00:00 2001 From: pr-citrate Date: Wed, 13 Aug 2025 21:27:41 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=EC=84=B8=EC=85=98=20=ED=83=80?= =?UTF-8?q?=EC=9E=84=ED=85=8C=EC=9D=B4=EB=B8=94=EC=97=90=EC=84=9C=20Ctrl+?= =?UTF-8?q?=ED=81=B4=EB=A6=AD=EC=9C=BC=EB=A1=9C=20=EC=83=88=20=ED=83=AD=20?= =?UTF-8?q?=EC=97=B4=EA=B8=B0=20=EC=A7=80=EC=9B=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mdx_components/session_timetable.tsx | 41 ++++++++++++------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/packages/common/src/components/mdx_components/session_timetable.tsx b/packages/common/src/components/mdx_components/session_timetable.tsx index 1023c55..9f02cf5 100644 --- a/packages/common/src/components/mdx_components/session_timetable.tsx +++ b/packages/common/src/components/mdx_components/session_timetable.tsx @@ -2,7 +2,7 @@ import { Button, Chip, CircularProgress, Stack, styled, Table, TableBody, TableC import { ErrorBoundary, Suspense } from "@suspensive/react"; import { DateTime } from "luxon"; import * as React from "react"; -import { useNavigate } from "react-router-dom"; +import { Link } from "react-router-dom"; import * as R from "remeda"; import Hooks from "../../hooks"; @@ -108,7 +108,6 @@ const SessionColumn: React.FC<{ colSpan?: number; session: BackendAPISchemas.SessionSchema; }> = ({ rowSpan, colSpan, session }) => { - const navigate = useNavigate(); const clickable = R.isArray(session.speakers) && !R.isEmpty(session.speakers); // Firefox는 rowSpan된 td의 height를 계산할 때 rowSpan을 고려하지 않습니다. 따라서 직접 계산하여 height를 설정합니다. const sessionBoxHeight = `${TD_HEIGHT * rowSpan}rem`; @@ -118,18 +117,32 @@ const SessionColumn: React.FC<{ .replace(/(?![.0-9A-Za-zㄱ-ㅣ가-힣-])./g, ""); return ( - clickable && navigate(`/presentations/${session.id}#${urlSafeTitle}`)} - className={clickable ? "clickable" : ""} - sx={{ height: sessionBoxHeight, gap: 0.75, padding: "0.5rem" }} - > - - - {session.speakers.map((speaker) => ( - - ))} - - + {clickable ? ( + + + + + {session.speakers.map((speaker) => ( + + ))} + + + + ) : ( + + + + {session.speakers.map((speaker) => ( + + ))} + + + )} ); }; From 9367e206130fbe1cd4fed7c31a4d244cec771740 Mon Sep 17 00:00:00 2001 From: MUsoftware Date: Sun, 24 Aug 2025 15:35:15 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=EB=B0=9C=ED=91=9C=20=EC=9E=90?= =?UTF-8?q?=EB=A3=8C=20=EB=A7=81=ED=81=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/pages/presentation_detail.tsx | 19 +++++++++---------- packages/common/src/schemas/backendAPI.ts | 1 + 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/pyconkr/src/components/pages/presentation_detail.tsx b/apps/pyconkr/src/components/pages/presentation_detail.tsx index 0e87899..0acbc07 100644 --- a/apps/pyconkr/src/components/pages/presentation_detail.tsx +++ b/apps/pyconkr/src/components/pages/presentation_detail.tsx @@ -4,6 +4,7 @@ import { ErrorBoundary, Suspense } from "@suspensive/react"; import { DateTime } from "luxon"; import * as React from "react"; import { Navigate, useParams } from "react-router-dom"; +import * as R from "remeda"; import PyCon2025Logo from "../../assets/pyconkr2025_logo.png"; import { useAppContext } from "../../contexts/app_context"; @@ -147,7 +148,8 @@ export const PresentationDetailPage: React.FC = ErrorBoundary.with( const descriptionFallback = language === "ko" ? "해당 발표의 설명은 준비 중이에요!" : "Description of the presentation is under preparation!"; const categoriesStr = language === "ko" ? "카테고리" : "Categories"; const speakersStr = language === "ko" ? "발표자" : "Speakers"; - // const slideShowStr = language === "ko" ? "발표 슬라이드" : "Presentation Slideshow"; + const slideShowStr = language === "ko" ? "발표 슬라이드" : "Presentation Slideshow"; + const slideShowLinkStr = language === "ko" ? "링크" : "Link"; const datetimeLabel = language === "ko" ? "발표 시각" : "Presentation Time"; const datetimeSeparator = language === "ko" ? " ~ " : " - "; @@ -232,17 +234,14 @@ export const PresentationDetailPage: React.FC = ErrorBoundary.with( ) : null} + {R.isString(presentation.public_slideshow_file) ? ( + + } /> + } /> + + ) : null} - {/* {presentation.slideshow_url && ( - <> - - {slideShowStr} :  - - - - - )} */} {presentation.image && ( Date: Sun, 24 Aug 2025 16:33:04 +0900 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=EB=B0=9C=ED=91=9C=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=EC=9D=98=20=EC=86=8D=EC=84=B1=20=EC=A0=9C=EB=AA=A9?= =?UTF-8?q?=EC=9D=B4=20=EC=A4=84=EB=B0=94=EA=BF=88=EB=90=98=EB=8A=94=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/pages/presentation_detail.tsx | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/apps/pyconkr/src/components/pages/presentation_detail.tsx b/apps/pyconkr/src/components/pages/presentation_detail.tsx index 0acbc07..8183a16 100644 --- a/apps/pyconkr/src/components/pages/presentation_detail.tsx +++ b/apps/pyconkr/src/components/pages/presentation_detail.tsx @@ -38,6 +38,12 @@ const StyledPresentationImage = styled(Common.Components.FallbackImage)(({ theme }, })); +const HeaderTableCell = styled(TableCell)({ + width: "1%", + whiteSpace: "nowrap", + textAlign: "center", +}); + const DescriptionBox = styled(Box)(({ theme }) => ({ width: "100%", padding: theme.spacing(2, 4), @@ -205,9 +211,9 @@ export const PresentationDetailPage: React.FC = ErrorBoundary.with( ? Object.entries(scheduleMap).map(([datetime, rooms], index) => ( {index === 0 && ( - + - + )} @@ -224,7 +230,7 @@ export const PresentationDetailPage: React.FC = ErrorBoundary.with( : null} {presentation.categories.length ? ( - } /> + } /> {presentation.categories.map((c) => ( @@ -236,8 +242,10 @@ export const PresentationDetailPage: React.FC = ErrorBoundary.with( ) : null} {R.isString(presentation.public_slideshow_file) ? ( - } /> - } /> + } /> + ({ color: theme.palette.primary.main, textDecoration: "underline" })}> + + ) : null}