From 4622a4580422c74b2e6cc8b6bab456391049a3e4 Mon Sep 17 00:00:00 2001 From: Wibaek Park Date: Tue, 24 Jun 2025 00:33:08 +0900 Subject: [PATCH 01/16] =?UTF-8?q?feat:=20=EC=8B=A0=EA=B7=9C=20=ED=95=99?= =?UTF-8?q?=EA=B5=90=20=EC=84=B8=EB=B6=80=20=ED=8E=98=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?UniversityDetail=20=EC=B6=94=EA=B0=80,=20TitleSection,=20SubTit?= =?UTF-8?q?leSection,=20LanguageSection=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/images/language/ielts.png | Bin 0 -> 6083 bytes public/images/language/toefl_ibt.png | Bin 0 -> 6346 bytes public/images/language/toefl_itp.png | Bin 0 -> 90338 bytes public/images/language/toeic.png | Bin 0 -> 2769 bytes src/app/university/[id]/HeaderZone.tsx | 10 +++++ src/app/university/[id]/LanguageSection.tsx | 41 +++++++++++++++++++ src/app/university/[id]/SubTitleSection.tsx | 17 ++++++++ src/app/university/[id]/TitleSection.tsx | 29 +++++++++++++ src/app/university/[id]/UniversityDetail.tsx | 34 +++++++++++++++ src/app/university/[id]/page.tsx | 12 ++++-- 10 files changed, 140 insertions(+), 3 deletions(-) create mode 100644 public/images/language/ielts.png create mode 100644 public/images/language/toefl_ibt.png create mode 100644 public/images/language/toefl_itp.png create mode 100644 public/images/language/toeic.png create mode 100644 src/app/university/[id]/HeaderZone.tsx create mode 100644 src/app/university/[id]/LanguageSection.tsx create mode 100644 src/app/university/[id]/SubTitleSection.tsx create mode 100644 src/app/university/[id]/TitleSection.tsx create mode 100644 src/app/university/[id]/UniversityDetail.tsx diff --git a/public/images/language/ielts.png b/public/images/language/ielts.png new file mode 100644 index 0000000000000000000000000000000000000000..6218faaf986b5d544a2e12348a756e885f1c1b5c GIT binary patch literal 6083 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 nZ0ncT-u>TW|FC`dF_byZ5?PecA6nqv=0 literal 0 HcmV?d00001 diff --git a/public/images/language/toefl_itp.png b/public/images/language/toefl_itp.png new file mode 100644 index 0000000000000000000000000000000000000000..a27b375042dabe8899ad19af4e1f82edfdee902d GIT binary patch literal 90338 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

Bfv)^BC+x2f-MOBzR; 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 S`?MinKv9<0kgJff4E;YbE`Fu} literal 0 HcmV?d00001 diff --git a/public/images/language/toeic.png b/public/images/language/toeic.png new file mode 100644 index 0000000000000000000000000000000000000000..1a17bca5672f84c0392e2ce7c3231f55f8e48bd7 GIT binary patch literal 2769 zcmV;?3NH1DP)|Gbwy8!s;bmK;HLc5WwhemV(R0z zsw#A%zJcC<slX#7tl@1UDLTbWPyhJ;Yz^5r~M(R)Ue2n(>v zr1ItzR=lXBm2UazCv>EylN80v_x$8neAINTh7>>l=C-2v*&u$>6h#O4qG=a#HOuP_-vPgwDcfY%@Ueg z+?W_|!po~gb=?4#JdlBV?@GenuUkZpn=BT@Bu|3RGZ-iw zBTbIf^iXv2CR(+jM&!31#;XdBQ*_FQG~n`+%j2UjzC12M**)muu=Y{L>}~YS3#FVc zDmh(l`oV3VQ|`PkXw$Z4e#S$CjFvhk=yN?iXAX5XG>*uem!EsN0+C@R+^`@4dRdkv zLh;uf2nn{~t^C7y_W6U@SK2N-X$dl;*P)=Xc>uGfMROQSuvyI_0=ypJ)_d!acl~a3 z_4tKh2mAYBA2S9K@o^)w+{I*;&@J~A3(sm4@cfj#&9v-~2Sp@wbUElyWfObZFRo8_ zHa1DhUG!7OaV;%_<{0+QNMr9DN!NR&?_o6pR^d z;yI&5l^JG-4u=~(4v0AH>gz%dXsG_Qu_L?1TfPeFQeIG;O=lJV}vNvJ&P!t!@|;PRB?x4)W*>}D_t#C7w>Vs4%tt?f>{|FH`( zqY1a(G+N9zE!T)uYiqFNnJ!puW<2&lIC8TivE{Q9SpSg|OMX*}&p(VnT&x8ZH6ExW z;l^u&FmXb#*cXKNHQcZ;3P(VHT_^sKrB1wJ|`;c6BK0B!l8RYYvksb{F0GV37b( zoeg&Nx+o#1kb+`%P{HOpaZj&@ejYz#ULl#{cTvG7^@1^`PTxw#v4vD#*(&B#bYRwe zJXe5)zV>!G_wS)co+)8~cF}~Ktz?ehPFr>~2{x*i_1?*Ns0Pyr50y<=fP@kR~jcHdzV)(2_Lm@8>WxE{62mCXkQ)dSW z#iiY>n~coVkfA3fR3CHmj7H>4w!xt94~F3d(c8<3A*l?AHk6jNz^CvSR^X#eT>-4o zKjgv93zNB05suXYqm9SN$V#_}y-H$5S?CuMZ1~n5&v~8?96)z%x;4}scOuwkMN(44seVP}mmrMvsxVUE7_D2py~~TT!+w~IUalH;Y}?Ty zjP&>~tXTR~?vSh4CH$our0GOIYU}-o2=yazLInIui}18@7_7N1X)?+yyYS`SKBT8g zn3p$E?BP7Gu_T;UR667Lzai{_V|Cr|_`;BxVL?Q=1w+SZE~i#zlp1#I>O)VTPXMTk z4@=8lszhr?5b|c3*n5#UT;<_SDws1fN+>JKBqG!(1q@tW)5VctM%Ls|goPN8n-j^( zYA7t~!GOyL-AbK319*ICHJ*IF1%rwtqEQzkE~4o5cn^~zA~SL_ZLBPbh4oD@xH=KJ z8O_*VVME>z%eeg5alGDz%32kPaX!5M`{_)XRUD{r@-uckv8)3o!%5IkAcq9^V}1TC z?ssu~8F59HRnYUiSz|FZs}=_;?U=pbAhOd#na8xFp~Zk3uQOq4b`+}XTgCn^>f2jA z@Y_3`$WD_nGuMtl^_0YGF}uxxwJWFL?!^}PyfStc51@BI!+p00W7n1|F>(ATCMPaL zgs6-aMi>mLC~h?LiH;0HBu7%~$v$MI8gON9xG+m-uo(sK&cIza2f@pZFD&Zjie|u) z`+~9J)m&`-bT7WzR~^{jFweah!qkVkfc_RxCrR=USe_P*LtQ669=`;aOJRc;VKE1c zGn^hO4Fm2ObMtcscC{+Vp31WuhUO=+rXF>=@=mu;7}{c%1&$32co-KnL`8;57ghOT z6Py<50)6KjGd%7>&+2XY9OLMW?_uoH*{S^BP<~{}ZUf) literal 0 HcmV?d00001 diff --git a/src/app/university/[id]/HeaderZone.tsx b/src/app/university/[id]/HeaderZone.tsx new file mode 100644 index 00000000..05bb5b31 --- /dev/null +++ b/src/app/university/[id]/HeaderZone.tsx @@ -0,0 +1,10 @@ +const HeaderZone = ({ title, children }: { title: string; children?: React.ReactNode }) => { + return ( +

+
{title}
+ {children} +
+ ); +}; + +export default HeaderZone; diff --git a/src/app/university/[id]/LanguageSection.tsx b/src/app/university/[id]/LanguageSection.tsx new file mode 100644 index 00000000..354fc7b0 --- /dev/null +++ b/src/app/university/[id]/LanguageSection.tsx @@ -0,0 +1,41 @@ +import Image from "next/image"; + +import HeaderZone from "./HeaderZone"; + +const LanguageSection = () => { + return ( + <> +
+
+ +
+ + + + +
+
+
+
+
+ +
+ + ); +}; + +const Language = ({ name, logoUrl, score }: { name: string; logoUrl: string; score: string }) => { + return ( +
+
+
{name}
+
+ 어학시험 +
+
+
{score}
+
+ ); +}; + +export default LanguageSection; diff --git a/src/app/university/[id]/SubTitleSection.tsx b/src/app/university/[id]/SubTitleSection.tsx new file mode 100644 index 00000000..9e0d382b --- /dev/null +++ b/src/app/university/[id]/SubTitleSection.tsx @@ -0,0 +1,17 @@ +interface SubTitleSectionProps { + totalDispatchCount: number; + country: string; + studentCapacity: number; +} + +const SubTitleSection = ({ totalDispatchCount, country, studentCapacity }: SubTitleSectionProps) => { + return ( +
+ {totalDispatchCount}회 파견 + {country} + 모집 {studentCapacity}명 +
+ ); +}; + +export default SubTitleSection; diff --git a/src/app/university/[id]/TitleSection.tsx b/src/app/university/[id]/TitleSection.tsx new file mode 100644 index 00000000..e0dd1709 --- /dev/null +++ b/src/app/university/[id]/TitleSection.tsx @@ -0,0 +1,29 @@ +import Image from "next/image"; + +interface TitleSectionProps { + logoUrl: string; + title: string; + subTitle: string; +} + +const TitleSection = ({ logoUrl, title, subTitle }: TitleSectionProps) => { + return ( +
+
+ 대학 로고 +
+ {title} + {subTitle} +
+
+
+ ); +}; + +export default TitleSection; diff --git a/src/app/university/[id]/UniversityDetail.tsx b/src/app/university/[id]/UniversityDetail.tsx new file mode 100644 index 00000000..074ea5ed --- /dev/null +++ b/src/app/university/[id]/UniversityDetail.tsx @@ -0,0 +1,34 @@ +import Image from "next/image"; + +import LanguageSection from "./LanguageSection"; +import SubTitleSection from "./SubTitleSection"; +import TitleSection from "./TitleSection"; + +const UniversityDetail = () => { + return ( + <> + + + + ); +}; + +export default UniversityDetail; + +const UniversityImage = ({ imageUrl }: { imageUrl: string }) => { + return ( +
+ 대학 이미지 +
+ ); +}; + +const UniversityInfo = () => { + return ( +
+ + + +
+ ); +}; diff --git a/src/app/university/[id]/page.tsx b/src/app/university/[id]/page.tsx index 9fa64d9f..19e0c980 100644 --- a/src/app/university/[id]/page.tsx +++ b/src/app/university/[id]/page.tsx @@ -4,8 +4,7 @@ import { notFound } from "next/navigation"; import TopDetailNavigation from "@/components/layout/TopDetailNavigation"; -import CollegeBottomSheet from "./CollegeBottomSheet"; -import CollegeDetail from "./CollegeDetail"; +import UniversityDetail from "./UniversityDetail"; import { Review } from "@/types/review"; import { University } from "@/types/university"; @@ -66,12 +65,19 @@ const CollegeDetailPage = async ({ params }: CollegeDetailPageProps) => { {convertedKoreanName || "대학명"} - + {/* */} + ); From d92a2b11db8c3bbd5b181624965ffa828dd2b354 Mon Sep 17 00:00:00 2001 From: Wibaek Park Date: Tue, 24 Jun 2025 00:43:48 +0900 Subject: [PATCH 02/16] =?UTF-8?q?feat:=20=EC=96=B4=ED=95=99=EC=84=B8?= =?UTF-8?q?=EB=B6=80=EC=9A=94=EA=B1=B4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/university/[id]/LanguageSection.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/app/university/[id]/LanguageSection.tsx b/src/app/university/[id]/LanguageSection.tsx index 354fc7b0..c71cbb69 100644 --- a/src/app/university/[id]/LanguageSection.tsx +++ b/src/app/university/[id]/LanguageSection.tsx @@ -1,4 +1,7 @@ +"use client"; + import Image from "next/image"; +import ReactLinkify from "react-linkify"; import HeaderZone from "./HeaderZone"; @@ -18,7 +21,11 @@ const LanguageSection = () => {
- + + + https://internationalcenter.inha.ac.kr/internationalcenter/index.do + +
); From a0b886babd438b02c0f169be378a8570a4782a1a Mon Sep 17 00:00:00 2001 From: Wibaek Park Date: Tue, 24 Jun 2025 11:19:39 +0900 Subject: [PATCH 03/16] =?UTF-8?q?feat:=20MajorSection,=20EnglishSection=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/university/[id]/EnglishSection.tsx | 22 ++++++++++++++++++++ src/app/university/[id]/InfoSection.tsx | 5 +++++ src/app/university/[id]/MajorSection.tsx | 22 ++++++++++++++++++++ src/app/university/[id]/UniversityDetail.tsx | 6 ++++++ 4 files changed, 55 insertions(+) create mode 100644 src/app/university/[id]/EnglishSection.tsx create mode 100644 src/app/university/[id]/InfoSection.tsx create mode 100644 src/app/university/[id]/MajorSection.tsx diff --git a/src/app/university/[id]/EnglishSection.tsx b/src/app/university/[id]/EnglishSection.tsx new file mode 100644 index 00000000..aac8c9e5 --- /dev/null +++ b/src/app/university/[id]/EnglishSection.tsx @@ -0,0 +1,22 @@ +"use client"; + +import ReactLinkify from "react-linkify"; + +import HeaderZone from "./HeaderZone"; + +const EnglishSection = ({ englishDetail }: { englishDetail: string }) => { + return ( + <> +
+
+ + + {englishDetail} + + +
+ + ); +}; + +export default EnglishSection; diff --git a/src/app/university/[id]/InfoSection.tsx b/src/app/university/[id]/InfoSection.tsx new file mode 100644 index 00000000..44dae6ca --- /dev/null +++ b/src/app/university/[id]/InfoSection.tsx @@ -0,0 +1,5 @@ +const InfoSection = () => { + return
; +}; + +export default InfoSection; diff --git a/src/app/university/[id]/MajorSection.tsx b/src/app/university/[id]/MajorSection.tsx new file mode 100644 index 00000000..767da102 --- /dev/null +++ b/src/app/university/[id]/MajorSection.tsx @@ -0,0 +1,22 @@ +"use client"; + +import ReactLinkify from "react-linkify"; + +import HeaderZone from "./HeaderZone"; + +const MajorSection = ({ majorDetail }: { majorDetail: string }) => { + return ( + <> +
+
+ + + {majorDetail} + + +
+ + ); +}; + +export default MajorSection; diff --git a/src/app/university/[id]/UniversityDetail.tsx b/src/app/university/[id]/UniversityDetail.tsx index 074ea5ed..d44d78cb 100644 --- a/src/app/university/[id]/UniversityDetail.tsx +++ b/src/app/university/[id]/UniversityDetail.tsx @@ -1,6 +1,9 @@ import Image from "next/image"; +import EnglishSection from "./EnglishSection"; +import InfoSection from "./InfoSection"; import LanguageSection from "./LanguageSection"; +import MajorSection from "./MajorSection"; import SubTitleSection from "./SubTitleSection"; import TitleSection from "./TitleSection"; @@ -29,6 +32,9 @@ const UniversityInfo = () => { + + +
); }; From 59dc2d6d496682be4595484dfda5d9c7db259e36 Mon Sep 17 00:00:00 2001 From: Wibaek Park Date: Tue, 24 Jun 2025 13:13:52 +0900 Subject: [PATCH 04/16] =?UTF-8?q?feat:=20MapSection=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/university/[id]/InfoSection.tsx | 6 +++++- src/app/university/[id]/MapSection.tsx | 18 ++++++++++++++++++ src/app/university/[id]/UniversityDetail.tsx | 5 ++++- 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 src/app/university/[id]/MapSection.tsx diff --git a/src/app/university/[id]/InfoSection.tsx b/src/app/university/[id]/InfoSection.tsx index 44dae6ca..fd8f2f41 100644 --- a/src/app/university/[id]/InfoSection.tsx +++ b/src/app/university/[id]/InfoSection.tsx @@ -1,5 +1,9 @@ const InfoSection = () => { - return
; + return ( +
+
+
+ ); }; export default InfoSection; diff --git a/src/app/university/[id]/MapSection.tsx b/src/app/university/[id]/MapSection.tsx new file mode 100644 index 00000000..4460ad86 --- /dev/null +++ b/src/app/university/[id]/MapSection.tsx @@ -0,0 +1,18 @@ +import GoogleEmbedMap from "@/components/ui/map/GoogleEmbedMap"; + +import HeaderZone from "./HeaderZone"; + +const MapSection = ({ universityEnglishName }: { universityEnglishName: string }) => { + return ( + <> +
+
+ + + +
+ + ); +}; + +export default MapSection; diff --git a/src/app/university/[id]/UniversityDetail.tsx b/src/app/university/[id]/UniversityDetail.tsx index d44d78cb..6685bf3a 100644 --- a/src/app/university/[id]/UniversityDetail.tsx +++ b/src/app/university/[id]/UniversityDetail.tsx @@ -4,6 +4,7 @@ import EnglishSection from "./EnglishSection"; import InfoSection from "./InfoSection"; import LanguageSection from "./LanguageSection"; import MajorSection from "./MajorSection"; +import MapSection from "./MapSection"; import SubTitleSection from "./SubTitleSection"; import TitleSection from "./TitleSection"; @@ -28,13 +29,15 @@ const UniversityImage = ({ imageUrl }: { imageUrl: string }) => { const UniversityInfo = () => { return ( -
+
+ +
); }; From 9837c8ab9603f93174d1d1db4587013a09b53765 Mon Sep 17 00:00:00 2001 From: Wibaek Park Date: Tue, 24 Jun 2025 15:50:48 +0900 Subject: [PATCH 05/16] =?UTF-8?q?feat:=20InfoSection=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/university/[id]/InfoSection.tsx | 188 ++++++++++++++++++++++++ 1 file changed, 188 insertions(+) diff --git a/src/app/university/[id]/InfoSection.tsx b/src/app/university/[id]/InfoSection.tsx index fd8f2f41..2ddd8f4e 100644 --- a/src/app/university/[id]/InfoSection.tsx +++ b/src/app/university/[id]/InfoSection.tsx @@ -1,9 +1,197 @@ +"use client"; + +import { useState } from "react"; + const InfoSection = () => { + const [detailForApplyFold, setDetailForApplyFold] = useState(true); + const [detailForAccomodationFold, setDetailForAccommodationFold] = useState(true); + return (
+
+ {/* 최저 이수학기 */} +
+
+ + 최저 이수학기 +
+
+ 2학기 +
+
+ {/* 파견 가능학기 */} +
+
+ + 파견 가능학기 +
+
+ 2학기 +
+
+ {/* 자격요건 */} + {detailForApplyFold ? ( +
setDetailForApplyFold(false)} + role="button" + onKeyDown={(e) => { + if (e.key === "Enter" || e.key === " ") { + setDetailForApplyFold(false); + } + }} + > +
+ + 자격요건 +
+
+ +
+
+ ) : ( +
setDetailForApplyFold(true)} + role="button" + onKeyDown={(e) => { + if (e.key === "Enter" || e.key === " ") { + setDetailForApplyFold(true); + } + }} + > +
+
+ + 자격요건 +
+
+ +
+
+
+ + 파견시점의 학기가 8차인 경우 지원 불가. 본교에서 2학기 이상 수학한 학생만 파견 가능 + +
+
+ )} + {/* 기숙사 */} + {detailForAccomodationFold ? ( +
setDetailForAccommodationFold(false)} + role="button" + onKeyDown={(e) => { + if (e.key === "Enter" || e.key === " ") { + setDetailForAccommodationFold(false); + } + }} + > +
+ + 자격요건 +
+
+ +
+
+ ) : ( +
setDetailForAccommodationFold(true)} + role="button" + onKeyDown={(e) => { + if (e.key === "Enter" || e.key === " ") { + setDetailForAccommodationFold(true); + } + }} + > +
+
+ + 자격요건 +
+
+ +
+
+
+ + 기숙사 미제공, 학생 아파트 중계 사이트 제공 + +
+
+ )} +
); }; export default InfoSection; + +const FoldIcon = () => { + return ( + + + + ); +}; + +const UnFoldIcon = () => { + return ( + + + + ); +}; + +const SemesterRequirementIcon = () => { + return ( + + + + + ); +}; + +const SemesterAvailableForDispatchIcon = () => { + return ( + + + + + ); +}; + +const DetailForApplyIcon = () => { + return ( + + + + + ); +}; + +const DetailForAccommodationIcon = () => { + return ( + + + + + ); +}; From 2ae02bc483c09511dcfbf3ba9a64e6ef49c03918 Mon Sep 17 00:00:00 2001 From: Wibaek Park Date: Tue, 24 Jun 2025 15:56:51 +0900 Subject: [PATCH 06/16] refactor: rename collegeData -> universityData --- src/app/university/[id]/page.tsx | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/src/app/university/[id]/page.tsx b/src/app/university/[id]/page.tsx index 19e0c980..67b84840 100644 --- a/src/app/university/[id]/page.tsx +++ b/src/app/university/[id]/page.tsx @@ -27,11 +27,11 @@ export async function generateMetadata( // fetch data const res = await getUniversityDetailPublicApi(Number(id)); - const collegeData = res.data; + const universityData = res.data; const convertedKoreanName = - collegeData.term !== process.env.NEXT_PUBLIC_CURRENT_TERM - ? `${collegeData.koreanName}(${collegeData.term})` - : collegeData.koreanName; + universityData.term !== process.env.NEXT_PUBLIC_CURRENT_TERM + ? `${universityData.koreanName}(${universityData.term})` + : universityData.koreanName; return { title: convertedKoreanName, @@ -53,11 +53,11 @@ const CollegeDetailPage = async ({ params }: CollegeDetailPageProps) => { notFound(); // 404 페이지로 이동 } - const collegeData = res.data; + const universityData = res.data; const convertedKoreanName = - collegeData.term !== process.env.NEXT_PUBLIC_CURRENT_TERM - ? `${collegeData.koreanName}(${collegeData.term})` - : collegeData.koreanName; + universityData.term !== process.env.NEXT_PUBLIC_CURRENT_TERM + ? `${universityData.koreanName}(${universityData.term})` + : universityData.koreanName; return ( <> @@ -65,20 +65,7 @@ const CollegeDetailPage = async ({ params }: CollegeDetailPageProps) => { {convertedKoreanName || "대학명"} - {/* - */} - + ); }; From 634921093f57d21c4a683089260e067f2597c240 Mon Sep 17 00:00:00 2001 From: Wibaek Park Date: Tue, 24 Jun 2025 16:22:41 +0900 Subject: [PATCH 07/16] =?UTF-8?q?feat:=20=EC=8B=A4=EC=A0=9C=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/university/[id]/InfoSection.tsx | 62 +++++++++++--------- src/app/university/[id]/TitleSection.tsx | 8 +-- src/app/university/[id]/UniversityDetail.tsx | 38 ++++++++---- src/app/university/[id]/page.tsx | 2 +- 4 files changed, 64 insertions(+), 46 deletions(-) diff --git a/src/app/university/[id]/InfoSection.tsx b/src/app/university/[id]/InfoSection.tsx index 2ddd8f4e..a34aa1f5 100644 --- a/src/app/university/[id]/InfoSection.tsx +++ b/src/app/university/[id]/InfoSection.tsx @@ -2,9 +2,19 @@ import { useState } from "react"; -const InfoSection = () => { - const [detailForApplyFold, setDetailForApplyFold] = useState(true); - const [detailForAccomodationFold, setDetailForAccommodationFold] = useState(true); +const InfoSection = ({ + semesterRequirement, + semesterAvailableForDispatch, + detailsForApply, + detailsForAccommodation, +}: { + semesterRequirement: string; + semesterAvailableForDispatch: string; + detailsForApply: string; + detailsForAccommodation: string; +}) => { + const [detailsForApplyFold, setDetailsForApplyFold] = useState(true); + const [detailsForAccomodationFold, setDetailsForAccommodationFold] = useState(true); return (
@@ -17,7 +27,7 @@ const InfoSection = () => { 최저 이수학기
- 2학기 + {semesterRequirement}
{/* 파견 가능학기 */} @@ -27,23 +37,25 @@ const InfoSection = () => { 파견 가능학기
- 2학기 + + {semesterAvailableForDispatch} +
{/* 자격요건 */} - {detailForApplyFold ? ( + {detailsForApplyFold ? (
setDetailForApplyFold(false)} + onClick={() => setDetailsForApplyFold(false)} role="button" onKeyDown={(e) => { if (e.key === "Enter" || e.key === " ") { - setDetailForApplyFold(false); + setDetailsForApplyFold(false); } }} >
- + 자격요건
@@ -53,17 +65,17 @@ const InfoSection = () => { ) : (
setDetailForApplyFold(true)} + onClick={() => setDetailsForApplyFold(true)} role="button" onKeyDown={(e) => { if (e.key === "Enter" || e.key === " ") { - setDetailForApplyFold(true); + setDetailsForApplyFold(true); } }} >
- + 자격요건
@@ -71,26 +83,24 @@ const InfoSection = () => {
- - 파견시점의 학기가 8차인 경우 지원 불가. 본교에서 2학기 이상 수학한 학생만 파견 가능 - + {detailsForApply}
)} {/* 기숙사 */} - {detailForAccomodationFold ? ( + {detailsForAccomodationFold ? (
setDetailForAccommodationFold(false)} + onClick={() => setDetailsForAccommodationFold(false)} role="button" onKeyDown={(e) => { if (e.key === "Enter" || e.key === " ") { - setDetailForAccommodationFold(false); + setDetailsForAccommodationFold(false); } }} >
- + 자격요건
@@ -100,17 +110,17 @@ const InfoSection = () => { ) : (
setDetailForAccommodationFold(true)} + onClick={() => setDetailsForAccommodationFold(true)} role="button" onKeyDown={(e) => { if (e.key === "Enter" || e.key === " ") { - setDetailForAccommodationFold(true); + setDetailsForAccommodationFold(true); } }} >
- + 자격요건
@@ -118,9 +128,7 @@ const InfoSection = () => {
- - 기숙사 미제공, 학생 아파트 중계 사이트 제공 - + {detailsForAccommodation}
)} @@ -173,7 +181,7 @@ const SemesterAvailableForDispatchIcon = () => { ); }; -const DetailForApplyIcon = () => { +const DetailsForApplyIcon = () => { return ( @@ -187,7 +195,7 @@ const DetailForApplyIcon = () => { ); }; -const DetailForAccommodationIcon = () => { +const DetailsForAccommodationIcon = () => { return ( diff --git a/src/app/university/[id]/TitleSection.tsx b/src/app/university/[id]/TitleSection.tsx index e0dd1709..1bb0a45c 100644 --- a/src/app/university/[id]/TitleSection.tsx +++ b/src/app/university/[id]/TitleSection.tsx @@ -10,13 +10,7 @@ const TitleSection = ({ logoUrl, title, subTitle }: TitleSectionProps) => { return (
- 대학 로고 + 대학 로고
{title} {subTitle} diff --git a/src/app/university/[id]/UniversityDetail.tsx b/src/app/university/[id]/UniversityDetail.tsx index 6685bf3a..853de700 100644 --- a/src/app/university/[id]/UniversityDetail.tsx +++ b/src/app/university/[id]/UniversityDetail.tsx @@ -8,11 +8,13 @@ import MapSection from "./MapSection"; import SubTitleSection from "./SubTitleSection"; import TitleSection from "./TitleSection"; -const UniversityDetail = () => { +import { University } from "@/types/university"; + +const UniversityDetail = ({ university }: { university: University }) => { return ( <> - - + + ); }; @@ -22,21 +24,35 @@ export default UniversityDetail; const UniversityImage = ({ imageUrl }: { imageUrl: string }) => { return (
- 대학 이미지 + 대학 이미지
); }; -const UniversityInfo = () => { +const UniversityInfo = ({ university }: { university: University }) => { return (
- - + + {/* TODO: totalDispatchCount 추가시 연동, 나라에 국기 추가 */} + - - - - + + + +
); diff --git a/src/app/university/[id]/page.tsx b/src/app/university/[id]/page.tsx index 67b84840..12edfd70 100644 --- a/src/app/university/[id]/page.tsx +++ b/src/app/university/[id]/page.tsx @@ -65,7 +65,7 @@ const CollegeDetailPage = async ({ params }: CollegeDetailPageProps) => { {convertedKoreanName || "대학명"} - + ); }; From 3340368e20f8cbe70ef257196273da9b875ca07c Mon Sep 17 00:00:00 2001 From: Wibaek Park Date: Tue, 24 Jun 2025 16:23:41 +0900 Subject: [PATCH 08/16] =?UTF-8?q?remove:=20=EA=B3=BC=EA=B1=B0=20=EB=94=94?= =?UTF-8?q?=EC=9E=90=EC=9D=B8,=20=EB=AF=B8=EC=82=AC=EC=9A=A9=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../university/[id]/CollegeBottomSheet.tsx | 348 ------------------ src/app/university/[id]/CollegeDetail.tsx | 21 -- src/app/university/[id]/CollegeReviews.tsx | 84 ----- .../[id]/college-bottomsheet.module.css | 54 --- .../[id]/college-reviews.module.css | 107 ------ src/app/university/[id]/page.tsx | 4 +- 6 files changed, 2 insertions(+), 616 deletions(-) delete mode 100644 src/app/university/[id]/CollegeBottomSheet.tsx delete mode 100644 src/app/university/[id]/CollegeDetail.tsx delete mode 100644 src/app/university/[id]/CollegeReviews.tsx delete mode 100644 src/app/university/[id]/college-bottomsheet.module.css delete mode 100644 src/app/university/[id]/college-reviews.module.css diff --git a/src/app/university/[id]/CollegeBottomSheet.tsx b/src/app/university/[id]/CollegeBottomSheet.tsx deleted file mode 100644 index 4fe22ab7..00000000 --- a/src/app/university/[id]/CollegeBottomSheet.tsx +++ /dev/null @@ -1,348 +0,0 @@ -"use client"; - -import React, { forwardRef, useEffect, useRef, useState } from "react"; -import ReactLinkify from "react-linkify"; - -import clsx from "clsx"; - -import ScrollTab from "@/components/ui/ScrollTab"; -import GoogleEmbedMap from "@/components/ui/map/GoogleEmbedMap"; - -import CollegeReviews from "./CollegeReviews"; -import styles from "./college-bottomsheet.module.css"; - -import { Review } from "@/types/review"; -import { LanguageRequirement, University } from "@/types/university"; - -import { - deleteUniversityFavoriteApi, - getUniversityFavoriteStatusApi, - postUniversityFavoriteApi, -} from "@/api/university"; -import { IconBookmarkFilled, IconBookmarkOutlined } from "@/public/svgs"; - -interface CollegeBottomSheetProps { - collegeId: number; - convertedKoreanName: string; - reviewList: Review[]; - university: University; -} - -const CollegeBottomSheet = ({ collegeId, convertedKoreanName, reviewList, university }: CollegeBottomSheetProps) => { - const pages: string[] = ["어학성적", "학교정보", "지원정보", "지역정보", "파견후기"]; - const [activeTab, setActiveTab] = useState("학교정보"); - const sectionRefs = [ - useRef(null), - useRef(null), - useRef(null), - useRef(null), - useRef(null), - ]; - const [isLiked, setIsLiked] = useState(false); - - useEffect(() => { - const getFavoriteStatus = async () => { - try { - const res = await getUniversityFavoriteStatusApi(collegeId); - setIsLiked(res.data.isLike); - } catch { - // 비로그인 시 무시 - } - }; - getFavoriteStatus(); - }, [collegeId]); - - const toggleLike = () => { - const postLike = async () => { - try { - const res = !isLiked - ? await postUniversityFavoriteApi(collegeId) - : await deleteUniversityFavoriteApi(collegeId); - const { result } = res.data; - if (result === "LIKE_SUCCESS") { - setIsLiked(true); - } else if (result === "LIKE_CANCELED") { - setIsLiked(false); - } - } catch (err) { - if (err.response) { - console.error("Axios response error", err.response); - if (err.response.status === 401 || err.response.status === 403) { - alert("로그인이 필요합니다"); - document.location.href = "/login"; - } else { - alert(err.response.data?.message); - } - } else { - console.error("Error", err.message); - alert(err.message); - } - } - }; - postLike(); - }; - - useEffect(() => { - const observer = new IntersectionObserver( - (entries) => { - entries.forEach((entry) => { - if (entry.isIntersecting) { - const index = sectionRefs.findIndex((ref) => ref.current === entry.target); - setActiveTab(pages[index]); - } - }); - }, - { threshold: 0.3, rootMargin: "-103px 0px -60% 0px" }, - ); - - sectionRefs.forEach((ref) => { - if (ref.current) { - observer.observe(ref.current); - } - }); - - return () => { - sectionRefs.forEach((ref) => { - if (ref.current) { - observer.unobserve(ref.current); - } - }); - }; - }, [sectionRefs]); - - const handleTabClick = (tab: string) => { - setActiveTab(tab); - sectionRefs[pages.findIndex((t) => t === tab)].current?.scrollIntoView({ behavior: "smooth", block: "start" }); - }; - - return ( - <> -
-
- {university.englishName || "대학명"} -
-
-
-
-
{convertedKoreanName || "대학명"}
- -
- - - - - - - - -
- - ); -}; - -export default CollegeBottomSheet; - -const LanguageSection = forwardRef< - HTMLDivElement, - { languageRequirements: LanguageRequirement[]; detailsForLanguage: string } ->(function LanguageSection({ languageRequirements, detailsForLanguage }, ref) { - return ( -
-
- {languageRequirements.map((requirement, index) => ( -
- - {requirement.languageTestType} {requirement.minScore} - -
- ))} -
- -
- ); -}); - -const BasicInfoSection = forwardRef< - HTMLDivElement, - { - homepageUrl: string; - region: string; - country: string; - studentCapacity: number; - englishName: string; - } ->(function BasicInfoSection({ homepageUrl, region, country, studentCapacity, englishName }, ref) { - return ( -
- -
- - -
-
- 파견학교 위치 - - - -
-
- ); -}); - -const ApplyInfoSection = forwardRef< - HTMLDivElement, - { - semesterAvailableForDispatch: string; - semesterRequirement: string; - gpaRequirement: string; - gpaRequirementCriteria: string; - detailsForAccommodation: string; - detailsForMajor: string; - englishCourseUrl: string; - } ->(function ApplyInfoSection( - { - semesterAvailableForDispatch = "정보 없음", - semesterRequirement = "정보 없음", - gpaRequirement = "정보 없음", - gpaRequirementCriteria = "정보 없음", - detailsForAccommodation = "정보 없음", - detailsForMajor = "정보 없음", - englishCourseUrl = "정보 없음", - }, - ref, -) { - return ( -
-
-
- - -
-
- - -
- - -
-
- ); -}); - -const RegionInfoSection = forwardRef< - HTMLDivElement, - { - detailsForLocal: string; - } ->(function RegionInfoSection({ detailsForLocal = "지역 정보가 없습니다." }, ref) { - return ( -
- {/*
사진이 여기 들어갑니다
*/} - -
- ); -}); - -const ReviewSection = forwardRef(function ReviewSection({}, ref) { - return ( -
- 생생한 후기 -
-
- ); -}); - -const BorderBox = ({ - subject, - content, - linkify = false, - className, -}: { - subject: string; - content: string; - linkify?: boolean; - className?: string; -}) => { - if (linkify) { - return ( - -
- {subject} - {content} -
-
- ); - } - return ( -
- {subject} - {content} -
- ); -}; - -const BackgroundBox = ({ - subject, - content, - linkify = true, - className, -}: { - subject: string; - content: string; - linkify?: boolean; - className?: string; -}) => { - if (linkify) { - return ( - -
- {subject} - {content} -
-
- ); - } - return ( -
- {subject} - {content} -
- ); -}; diff --git a/src/app/university/[id]/CollegeDetail.tsx b/src/app/university/[id]/CollegeDetail.tsx deleted file mode 100644 index 4248ec0e..00000000 --- a/src/app/university/[id]/CollegeDetail.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import Image from "next/image"; - -interface CollegeDetailProps { - imageUrl: string; -} - -const CollegeDetail = ({ imageUrl }: CollegeDetailProps) => ( -
-
- 학교 이미지 -
-
-); - -export default CollegeDetail; diff --git a/src/app/university/[id]/CollegeReviews.tsx b/src/app/university/[id]/CollegeReviews.tsx deleted file mode 100644 index 2e217b01..00000000 --- a/src/app/university/[id]/CollegeReviews.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import { useState } from "react"; - -import StarFilledIcon from "@/components/ui/icon/star-filled"; - -import styles from "./college-reviews.module.css"; - -import { Review } from "@/types/review"; - -import { IconExpandMoreFilled } from "@/public/svgs/community"; - -const CollegeReviews = ({ style, reviewList }: { style?: React.CSSProperties; reviewList: Review[] }) => ( -
- {reviewList.map((review) => ( - - ))} -
-); - -export default CollegeReviews; - -export const CollegeReviewCard = ({ review }: { review: Review }) => { - const { term, rating, content, dispatchSemester, transportation, buddyProgram } = review; - const [open, setOpen] = useState(false); - const renderStars = () => { - const TOTAL_STARS = 5; - const stars: JSX.Element[] = []; - for (let i = 1; i <= TOTAL_STARS; i += 1) { - if (i <= rating) { - // Full Star - stars.push(); - } else if (i - 0.5 === rating) { - // Half Star - stars.push(); - } else { - // Empty Star - stars.push(); - } - } - return stars; - }; - - if (open) { - return ( -
-
-
{term}
-
{renderStars()}
-
-
- {content} -
-
-
- 수학기간 - {dispatchSemester} -
-
- 교통편 - {transportation} -
-
- 버디프로그램 - {buddyProgram} -
-
- -
- ); - } - return ( -
-
-
{term}
-
{renderStars()}
-
- -
- ); -}; diff --git a/src/app/university/[id]/college-bottomsheet.module.css b/src/app/university/[id]/college-bottomsheet.module.css deleted file mode 100644 index 7c2ce2a9..00000000 --- a/src/app/university/[id]/college-bottomsheet.module.css +++ /dev/null @@ -1,54 +0,0 @@ -.flexible-height { - height: calc(100vw / 2); - background: linear-gradient(180deg, rgba(0, 0, 0, 0) 33.85%, rgba(0, 0, 0, 0.6) 86.98%); -} -@media (min-width: 600px) { - .flexible-height { - height: 300px; - } -} - -.bar { - margin-top: 42px; /* 임시 */ - position: sticky; - top: 103px; - - height: 52px; - padding: 0 20px 0 20px; - background: var(--primary-1, #6f90d1); - overflow-x: auto; - white-space: nowrap; - - display: flex; - gap: 10px; - align-items: center; - - color: #fff; - font-family: Pretendard; - font-size: 16px; - font-style: normal; - font-weight: 600; - line-height: normal; -} - -/* 섹션 */ -.scrollOffset { - /* 네비게이션 + 탭 = 56 + 47 = 103 */ - /* 추가 42 */ - padding-top: 145px; - margin-top: -103px; - - display: flex; - flex-direction: column; - gap: 30px; -} -.scrollOffsetWithBar { - /* 네비게이션 + 탭 + 바 = 56 + 47 + 52 = 155 */ - /* 추가 21 */ - padding-top: 176px; - margin-top: -155px; - - display: flex; - flex-direction: column; - gap: 30px; -} diff --git a/src/app/university/[id]/college-reviews.module.css b/src/app/university/[id]/college-reviews.module.css deleted file mode 100644 index c46735f5..00000000 --- a/src/app/university/[id]/college-reviews.module.css +++ /dev/null @@ -1,107 +0,0 @@ -/* Review cards */ -.container { - display: flex; - flex-direction: column; - gap: 24px; -} - -/* Review card */ -.card { - position: relative; - margin: 0 20px 0 20px; - padding: 14px 12px 14px 12px; - border-radius: 6px; - border: 1px solid #bbb; -} - -.firstRow { - display: flex; - justify-content: space-between; -} -.term { - color: #000; - font-family: Pretendard; - font-size: 14px; - font-style: normal; - font-weight: 600; - line-height: 150%; /* 21px */ -} - -.fullStar { - color: gold; /* Full star color */ -} -.halfStar::before { - content: "★"; - color: gold; /* Half star color */ - position: absolute; -} -.halfStar::after { - content: "☆"; - color: gold; /* Half star color */ - position: absolute; - width: 50%; - overflow: hidden; /* This will cover half of the star */ -} -.emptyStar { - color: lightgray; /* Empty star color */ -} - -.content { - margin: 0 2px 0 2px; - color: #000; - font-family: Pretendard; - font-size: 14px; - font-style: normal; - font-weight: 400; - line-height: 150%; /* 21px */ -} - -.infos { - display: flex; - flex-direction: column; - gap: 16px; -} -.infos > div { - margin-left: 7px; - display: flex; -} -.infos > div > span:nth-of-type(1) { - flex-basis: 109px; - color: rgba(0, 0, 0, 0.87); - font-feature-settings: - "clig" off, - "liga" off; - font-family: Pretendard; - font-size: 14px; - font-style: normal; - font-weight: 600; - line-height: 160%; /* 22.4px */ -} -.infos > div > span:nth-of-type(2) { - color: rgba(44, 44, 44, 0.87); - font-feature-settings: - "clig" off, - "liga" off; - font-family: Pretendard; - font-size: 14px; - font-style: normal; - font-weight: 500; - line-height: 160%; /* 22.4px */ -} - -.toggleButton { - position: absolute; - bottom: -15px; - left: 48.5%; - width: 28px; - height: 28px; - - background: white; - border: solid 1px #bbb; - border-radius: 100%; - cursor: pointer; - - display: flex; - justify-content: center; - align-items: center; -} diff --git a/src/app/university/[id]/page.tsx b/src/app/university/[id]/page.tsx index 12edfd70..0544ca2a 100644 --- a/src/app/university/[id]/page.tsx +++ b/src/app/university/[id]/page.tsx @@ -62,9 +62,9 @@ const CollegeDetailPage = async ({ params }: CollegeDetailPageProps) => { return ( <> - {convertedKoreanName || "대학명"} + {convertedKoreanName} - + ); From c1268ee0e8dfc2c856d3048b9aeecbe317062fbd Mon Sep 17 00:00:00 2001 From: Wibaek Park Date: Tue, 24 Jun 2025 17:06:21 +0900 Subject: [PATCH 09/16] =?UTF-8?q?feat:=20languageUtils=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80,=20LanguageSection=20=EC=8B=A4=EC=A0=9C=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/images/language/default.png | Bin 0 -> 2769 bytes src/app/university/[id]/LanguageSection.tsx | 26 ++++++++++++++----- src/app/university/[id]/UniversityDetail.tsx | 5 +++- src/utils/languageUtils.ts | 16 ++++++++++++ 4 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 public/images/language/default.png create mode 100644 src/utils/languageUtils.ts diff --git a/public/images/language/default.png b/public/images/language/default.png new file mode 100644 index 0000000000000000000000000000000000000000..1a17bca5672f84c0392e2ce7c3231f55f8e48bd7 GIT binary patch literal 2769 zcmV;?3NH1DP)|Gbwy8!s;bmK;HLc5WwhemV(R0z zsw#A%zJcC<slX#7tl@1UDLTbWPyhJ;Yz^5r~M(R)Ue2n(>v zr1ItzR=lXBm2UazCv>EylN80v_x$8neAINTh7>>l=C-2v*&u$>6h#O4qG=a#HOuP_-vPgwDcfY%@Ueg z+?W_|!po~gb=?4#JdlBV?@GenuUkZpn=BT@Bu|3RGZ-iw zBTbIf^iXv2CR(+jM&!31#;XdBQ*_FQG~n`+%j2UjzC12M**)muu=Y{L>}~YS3#FVc zDmh(l`oV3VQ|`PkXw$Z4e#S$CjFvhk=yN?iXAX5XG>*uem!EsN0+C@R+^`@4dRdkv zLh;uf2nn{~t^C7y_W6U@SK2N-X$dl;*P)=Xc>uGfMROQSuvyI_0=ypJ)_d!acl~a3 z_4tKh2mAYBA2S9K@o^)w+{I*;&@J~A3(sm4@cfj#&9v-~2Sp@wbUElyWfObZFRo8_ zHa1DhUG!7OaV;%_<{0+QNMr9DN!NR&?_o6pR^d z;yI&5l^JG-4u=~(4v0AH>gz%dXsG_Qu_L?1TfPeFQeIG;O=lJV}vNvJ&P!t!@|;PRB?x4)W*>}D_t#C7w>Vs4%tt?f>{|FH`( zqY1a(G+N9zE!T)uYiqFNnJ!puW<2&lIC8TivE{Q9SpSg|OMX*}&p(VnT&x8ZH6ExW z;l^u&FmXb#*cXKNHQcZ;3P(VHT_^sKrB1wJ|`;c6BK0B!l8RYYvksb{F0GV37b( zoeg&Nx+o#1kb+`%P{HOpaZj&@ejYz#ULl#{cTvG7^@1^`PTxw#v4vD#*(&B#bYRwe zJXe5)zV>!G_wS)co+)8~cF}~Ktz?ehPFr>~2{x*i_1?*Ns0Pyr50y<=fP@kR~jcHdzV)(2_Lm@8>WxE{62mCXkQ)dSW z#iiY>n~coVkfA3fR3CHmj7H>4w!xt94~F3d(c8<3A*l?AHk6jNz^CvSR^X#eT>-4o zKjgv93zNB05suXYqm9SN$V#_}y-H$5S?CuMZ1~n5&v~8?96)z%x;4}scOuwkMN(44seVP}mmrMvsxVUE7_D2py~~TT!+w~IUalH;Y}?Ty zjP&>~tXTR~?vSh4CH$our0GOIYU}-o2=yazLInIui}18@7_7N1X)?+yyYS`SKBT8g zn3p$E?BP7Gu_T;UR667Lzai{_V|Cr|_`;BxVL?Q=1w+SZE~i#zlp1#I>O)VTPXMTk z4@=8lszhr?5b|c3*n5#UT;<_SDws1fN+>JKBqG!(1q@tW)5VctM%Ls|goPN8n-j^( zYA7t~!GOyL-AbK319*ICHJ*IF1%rwtqEQzkE~4o5cn^~zA~SL_ZLBPbh4oD@xH=KJ z8O_*VVME>z%eeg5alGDz%32kPaX!5M`{_)XRUD{r@-uckv8)3o!%5IkAcq9^V}1TC z?ssu~8F59HRnYUiSz|FZs}=_;?U=pbAhOd#na8xFp~Zk3uQOq4b`+}XTgCn^>f2jA z@Y_3`$WD_nGuMtl^_0YGF}uxxwJWFL?!^}PyfStc51@BI!+p00W7n1|F>(ATCMPaL zgs6-aMi>mLC~h?LiH;0HBu7%~$v$MI8gON9xG+m-uo(sK&cIza2f@pZFD&Zjie|u) z`+~9J)m&`-bT7WzR~^{jFweah!qkVkfc_RxCrR=USe_P*LtQ669=`;aOJRc;VKE1c zGn^hO4Fm2ObMtcscC{+Vp31WuhUO=+rXF>=@=mu;7}{c%1&$32co-KnL`8;57ghOT z6Py<50)6KjGd%7>&+2XY9OLMW?_uoH*{S^BP<~{}ZUf) literal 0 HcmV?d00001 diff --git a/src/app/university/[id]/LanguageSection.tsx b/src/app/university/[id]/LanguageSection.tsx index c71cbb69..e8b20c50 100644 --- a/src/app/university/[id]/LanguageSection.tsx +++ b/src/app/university/[id]/LanguageSection.tsx @@ -3,19 +3,33 @@ import Image from "next/image"; import ReactLinkify from "react-linkify"; +import { getDisplayName, getLanguageLogo, logoMap } from "@/utils/languageUtils"; + import HeaderZone from "./HeaderZone"; -const LanguageSection = () => { +import { LanguageRequirement } from "@/types/university"; + +const LanguageSection = ({ + languageRequirements, + detailsForLanguage, +}: { + languageRequirements: LanguageRequirement[]; + detailsForLanguage: string; +}) => { return ( <>
- - - - + {languageRequirements.map((req, idx) => ( + + ))}
@@ -23,7 +37,7 @@ const LanguageSection = () => {
- https://internationalcenter.inha.ac.kr/internationalcenter/index.do + {detailsForLanguage}
diff --git a/src/app/university/[id]/UniversityDetail.tsx b/src/app/university/[id]/UniversityDetail.tsx index 853de700..69b970dc 100644 --- a/src/app/university/[id]/UniversityDetail.tsx +++ b/src/app/university/[id]/UniversityDetail.tsx @@ -43,7 +43,10 @@ const UniversityInfo = ({ university }: { university: University }) => { country={university.country} studentCapacity={university.studentCapacity} /> - + = { + TOEIC: "/images/language/toeic.png", + TOEFL_IBT: "/images/language/toefl_ibt.png", + TOEFL_ITP: "/images/language/toefl_itp.png", + IELTS: "/images/language/ielts.png", +}; + +export const getLanguageLogo = (type: string): string => { + return logoMap[type] || "/images/language/default.png"; +}; + +// UNDER_SCORE → "UNDER SCORE" 처리를 위한 헬퍼 +export function getDisplayName(type: string): string { + return type.replace(/_/g, " "); +} From 3938fe59f8d77572d60d64f740ebd1962c030bad Mon Sep 17 00:00:00 2001 From: Wibaek Park Date: Thu, 26 Jun 2025 14:21:04 +0900 Subject: [PATCH 10/16] =?UTF-8?q?refactor:=20=ED=95=A8=EC=88=98=EB=AA=85?= =?UTF-8?q?=20=EB=8D=94=20=EC=A7=81=EA=B4=80=EC=A0=81=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit getDisplayName() -> formatLanguageTestName() getLanguageLogo() -> getLanguageTestLogo() --- src/app/university/[id]/LanguageSection.tsx | 6 +++--- src/utils/languageUtils.ts | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/app/university/[id]/LanguageSection.tsx b/src/app/university/[id]/LanguageSection.tsx index e8b20c50..2cf74948 100644 --- a/src/app/university/[id]/LanguageSection.tsx +++ b/src/app/university/[id]/LanguageSection.tsx @@ -3,7 +3,7 @@ import Image from "next/image"; import ReactLinkify from "react-linkify"; -import { getDisplayName, getLanguageLogo, logoMap } from "@/utils/languageUtils"; +import { formatLanguageTestName, getLanguageTestLogo } from "@/utils/languageUtils"; import HeaderZone from "./HeaderZone"; @@ -25,8 +25,8 @@ const LanguageSection = ({ {languageRequirements.map((req, idx) => ( ))} diff --git a/src/utils/languageUtils.ts b/src/utils/languageUtils.ts index db0c6c0d..7116c8ba 100644 --- a/src/utils/languageUtils.ts +++ b/src/utils/languageUtils.ts @@ -6,11 +6,11 @@ export const logoMap: Record = { IELTS: "/images/language/ielts.png", }; -export const getLanguageLogo = (type: string): string => { +export const getLanguageTestLogo = (type: string): string => { return logoMap[type] || "/images/language/default.png"; }; // UNDER_SCORE → "UNDER SCORE" 처리를 위한 헬퍼 -export function getDisplayName(type: string): string { +export function formatLanguageTestName(type: string): string { return type.replace(/_/g, " "); } From 0bedbdb357b61fb055e10288f0ce1c94561afee5 Mon Sep 17 00:00:00 2001 From: Wibaek Park Date: Thu, 26 Jun 2025 14:41:03 +0900 Subject: [PATCH 11/16] =?UTF-8?q?refactor:=20=ED=94=84=EB=9E=98=EA=B7=B8?= =?UTF-8?q?=EB=A8=BC=ED=8A=B8=20<>=20->=20=EC=8B=A4=EC=A0=9C=20DOM?= =?UTF-8?q?=EC=9A=94=EC=86=8C=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/university/[id]/EnglishSection.tsx | 8 ++++---- src/app/university/[id]/LanguageSection.tsx | 4 ++-- src/app/university/[id]/MajorSection.tsx | 4 ++-- src/app/university/[id]/MapSection.tsx | 4 ++-- src/app/university/[id]/UniversityDetail.tsx | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/app/university/[id]/EnglishSection.tsx b/src/app/university/[id]/EnglishSection.tsx index aac8c9e5..61f132f7 100644 --- a/src/app/university/[id]/EnglishSection.tsx +++ b/src/app/university/[id]/EnglishSection.tsx @@ -1,21 +1,21 @@ "use client"; -import ReactLinkify from "react-linkify"; +import Linkify from "react-linkify"; import HeaderZone from "./HeaderZone"; const EnglishSection = ({ englishDetail }: { englishDetail: string }) => { return ( - <> +
- {englishDetail} + {englishDetail}
- +
); }; diff --git a/src/app/university/[id]/LanguageSection.tsx b/src/app/university/[id]/LanguageSection.tsx index 2cf74948..ab63a641 100644 --- a/src/app/university/[id]/LanguageSection.tsx +++ b/src/app/university/[id]/LanguageSection.tsx @@ -17,7 +17,7 @@ const LanguageSection = ({ detailsForLanguage: string; }) => { return ( - <> +
@@ -41,7 +41,7 @@ const LanguageSection = ({
- +
); }; diff --git a/src/app/university/[id]/MajorSection.tsx b/src/app/university/[id]/MajorSection.tsx index 767da102..28cfd168 100644 --- a/src/app/university/[id]/MajorSection.tsx +++ b/src/app/university/[id]/MajorSection.tsx @@ -6,7 +6,7 @@ import HeaderZone from "./HeaderZone"; const MajorSection = ({ majorDetail }: { majorDetail: string }) => { return ( - <> +
@@ -15,7 +15,7 @@ const MajorSection = ({ majorDetail }: { majorDetail: string }) => {
- +
); }; diff --git a/src/app/university/[id]/MapSection.tsx b/src/app/university/[id]/MapSection.tsx index 4460ad86..9cb4afbb 100644 --- a/src/app/university/[id]/MapSection.tsx +++ b/src/app/university/[id]/MapSection.tsx @@ -4,14 +4,14 @@ import HeaderZone from "./HeaderZone"; const MapSection = ({ universityEnglishName }: { universityEnglishName: string }) => { return ( - <> +
- +
); }; diff --git a/src/app/university/[id]/UniversityDetail.tsx b/src/app/university/[id]/UniversityDetail.tsx index 69b970dc..90fc8c24 100644 --- a/src/app/university/[id]/UniversityDetail.tsx +++ b/src/app/university/[id]/UniversityDetail.tsx @@ -12,10 +12,10 @@ import { University } from "@/types/university"; const UniversityDetail = ({ university }: { university: University }) => { return ( - <> +
- +
); }; From 8af454aba9c8a47820693ea3e190f8d85d67cb84 Mon Sep 17 00:00:00 2001 From: Wibaek Park Date: Thu, 26 Jun 2025 15:18:31 +0900 Subject: [PATCH 12/16] =?UTF-8?q?refactor:=20prop=20types=20interface=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/university/[id]/EnglishSection.tsx | 6 +++++- src/app/university/[id]/HeaderZone.tsx | 7 ++++++- src/app/university/[id]/InfoSection.tsx | 14 ++++++++------ src/app/university/[id]/LanguageSection.tsx | 9 ++++----- src/app/university/[id]/MajorSection.tsx | 6 +++++- src/app/university/[id]/MapSection.tsx | 6 +++++- src/app/university/[id]/UniversityDetail.tsx | 6 +++++- 7 files changed, 38 insertions(+), 16 deletions(-) diff --git a/src/app/university/[id]/EnglishSection.tsx b/src/app/university/[id]/EnglishSection.tsx index 61f132f7..ff437270 100644 --- a/src/app/university/[id]/EnglishSection.tsx +++ b/src/app/university/[id]/EnglishSection.tsx @@ -4,7 +4,11 @@ import Linkify from "react-linkify"; import HeaderZone from "./HeaderZone"; -const EnglishSection = ({ englishDetail }: { englishDetail: string }) => { +interface EnglishSectionProps { + englishDetail: string; +} + +const EnglishSection = ({ englishDetail }: EnglishSectionProps) => { return (
diff --git a/src/app/university/[id]/HeaderZone.tsx b/src/app/university/[id]/HeaderZone.tsx index 05bb5b31..f3357a37 100644 --- a/src/app/university/[id]/HeaderZone.tsx +++ b/src/app/university/[id]/HeaderZone.tsx @@ -1,4 +1,9 @@ -const HeaderZone = ({ title, children }: { title: string; children?: React.ReactNode }) => { +interface HeaderZoneProps { + title: string; + children?: React.ReactNode; +} + +const HeaderZone = ({ title, children }: HeaderZoneProps) => { return (
{title}
diff --git a/src/app/university/[id]/InfoSection.tsx b/src/app/university/[id]/InfoSection.tsx index a34aa1f5..0f45668d 100644 --- a/src/app/university/[id]/InfoSection.tsx +++ b/src/app/university/[id]/InfoSection.tsx @@ -2,17 +2,19 @@ import { useState } from "react"; +interface InfoSectionProps { + semesterRequirement: string; + semesterAvailableForDispatch: string; + detailsForApply: string; + detailsForAccommodation: string; +} + const InfoSection = ({ semesterRequirement, semesterAvailableForDispatch, detailsForApply, detailsForAccommodation, -}: { - semesterRequirement: string; - semesterAvailableForDispatch: string; - detailsForApply: string; - detailsForAccommodation: string; -}) => { +}: InfoSectionProps) => { const [detailsForApplyFold, setDetailsForApplyFold] = useState(true); const [detailsForAccomodationFold, setDetailsForAccommodationFold] = useState(true); diff --git a/src/app/university/[id]/LanguageSection.tsx b/src/app/university/[id]/LanguageSection.tsx index ab63a641..5743b135 100644 --- a/src/app/university/[id]/LanguageSection.tsx +++ b/src/app/university/[id]/LanguageSection.tsx @@ -9,13 +9,12 @@ import HeaderZone from "./HeaderZone"; import { LanguageRequirement } from "@/types/university"; -const LanguageSection = ({ - languageRequirements, - detailsForLanguage, -}: { +interface LanguageSectionProps { languageRequirements: LanguageRequirement[]; detailsForLanguage: string; -}) => { +} + +const LanguageSection = ({ languageRequirements, detailsForLanguage }: LanguageSectionProps) => { return (
diff --git a/src/app/university/[id]/MajorSection.tsx b/src/app/university/[id]/MajorSection.tsx index 28cfd168..2aca0a2c 100644 --- a/src/app/university/[id]/MajorSection.tsx +++ b/src/app/university/[id]/MajorSection.tsx @@ -4,7 +4,11 @@ import ReactLinkify from "react-linkify"; import HeaderZone from "./HeaderZone"; -const MajorSection = ({ majorDetail }: { majorDetail: string }) => { +interface MajorSectionProps { + majorDetail: string; +} + +const MajorSection = ({ majorDetail }: MajorSectionProps) => { return (
diff --git a/src/app/university/[id]/MapSection.tsx b/src/app/university/[id]/MapSection.tsx index 9cb4afbb..7e5dd8f5 100644 --- a/src/app/university/[id]/MapSection.tsx +++ b/src/app/university/[id]/MapSection.tsx @@ -2,7 +2,11 @@ import GoogleEmbedMap from "@/components/ui/map/GoogleEmbedMap"; import HeaderZone from "./HeaderZone"; -const MapSection = ({ universityEnglishName }: { universityEnglishName: string }) => { +interface MapSectionProps { + universityEnglishName: string; +} + +const MapSection = ({ universityEnglishName }: MapSectionProps) => { return (
diff --git a/src/app/university/[id]/UniversityDetail.tsx b/src/app/university/[id]/UniversityDetail.tsx index 90fc8c24..882167db 100644 --- a/src/app/university/[id]/UniversityDetail.tsx +++ b/src/app/university/[id]/UniversityDetail.tsx @@ -10,7 +10,11 @@ import TitleSection from "./TitleSection"; import { University } from "@/types/university"; -const UniversityDetail = ({ university }: { university: University }) => { +interface UniversityDetailProps { + university: University; +} + +const UniversityDetail = ({ university }: UniversityDetailProps) => { return (
From 01fad0dfa22eb11c5d8b387bbbece320887a0671 Mon Sep 17 00:00:00 2001 From: Wibaek Park Date: Fri, 27 Jun 2025 16:02:23 +0900 Subject: [PATCH 13/16] =?UTF-8?q?refactor:=20HeaderZone=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/university/[id]/EnglishSection.tsx | 7 +++---- src/app/university/[id]/HeaderZone.tsx | 15 --------------- src/app/university/[id]/LanguageSection.tsx | 16 ++++++++-------- src/app/university/[id]/MajorSection.tsx | 7 +++---- src/app/university/[id]/MapSection.tsx | 7 +++---- 5 files changed, 17 insertions(+), 35 deletions(-) delete mode 100644 src/app/university/[id]/HeaderZone.tsx diff --git a/src/app/university/[id]/EnglishSection.tsx b/src/app/university/[id]/EnglishSection.tsx index ff437270..3ff4a61b 100644 --- a/src/app/university/[id]/EnglishSection.tsx +++ b/src/app/university/[id]/EnglishSection.tsx @@ -2,8 +2,6 @@ import Linkify from "react-linkify"; -import HeaderZone from "./HeaderZone"; - interface EnglishSectionProps { englishDetail: string; } @@ -13,11 +11,12 @@ const EnglishSection = ({ englishDetail }: EnglishSectionProps) => {
- +
영어강의 리스트
+
{englishDetail} - +
); diff --git a/src/app/university/[id]/HeaderZone.tsx b/src/app/university/[id]/HeaderZone.tsx deleted file mode 100644 index f3357a37..00000000 --- a/src/app/university/[id]/HeaderZone.tsx +++ /dev/null @@ -1,15 +0,0 @@ -interface HeaderZoneProps { - title: string; - children?: React.ReactNode; -} - -const HeaderZone = ({ title, children }: HeaderZoneProps) => { - return ( -
-
{title}
- {children} -
- ); -}; - -export default HeaderZone; diff --git a/src/app/university/[id]/LanguageSection.tsx b/src/app/university/[id]/LanguageSection.tsx index 5743b135..15b37dea 100644 --- a/src/app/university/[id]/LanguageSection.tsx +++ b/src/app/university/[id]/LanguageSection.tsx @@ -1,12 +1,10 @@ "use client"; import Image from "next/image"; -import ReactLinkify from "react-linkify"; +import Linkify from "react-linkify"; import { formatLanguageTestName, getLanguageTestLogo } from "@/utils/languageUtils"; -import HeaderZone from "./HeaderZone"; - import { LanguageRequirement } from "@/types/university"; interface LanguageSectionProps { @@ -19,7 +17,8 @@ const LanguageSection = ({ languageRequirements, detailsForLanguage }: LanguageS
- +
어학 성적
+
{languageRequirements.map((req, idx) => ( ))}
- +
- +
어학세부 요건
+
- {detailsForLanguage} + {detailsForLanguage} - +
); diff --git a/src/app/university/[id]/MajorSection.tsx b/src/app/university/[id]/MajorSection.tsx index 2aca0a2c..8971df1a 100644 --- a/src/app/university/[id]/MajorSection.tsx +++ b/src/app/university/[id]/MajorSection.tsx @@ -2,8 +2,6 @@ import ReactLinkify from "react-linkify"; -import HeaderZone from "./HeaderZone"; - interface MajorSectionProps { majorDetail: string; } @@ -13,11 +11,12 @@ const MajorSection = ({ majorDetail }: MajorSectionProps) => {
- +
전공상세
+
{majorDetail} - +
); diff --git a/src/app/university/[id]/MapSection.tsx b/src/app/university/[id]/MapSection.tsx index 7e5dd8f5..3a93532c 100644 --- a/src/app/university/[id]/MapSection.tsx +++ b/src/app/university/[id]/MapSection.tsx @@ -1,7 +1,5 @@ import GoogleEmbedMap from "@/components/ui/map/GoogleEmbedMap"; -import HeaderZone from "./HeaderZone"; - interface MapSectionProps { universityEnglishName: string; } @@ -11,9 +9,10 @@ const MapSection = ({ universityEnglishName }: MapSectionProps) => {
- +
파견학교 위치
+
- +
); From 2064de43d5f7ad7c4357b533d1e4d16fec20b7b7 Mon Sep 17 00:00:00 2001 From: Wibaek Park Date: Sun, 29 Jun 2025 11:01:50 +0900 Subject: [PATCH 14/16] =?UTF-8?q?refactor:=20revert=20=ED=94=84=EB=9E=98?= =?UTF-8?q?=EA=B7=B8=EB=A8=BC=ED=8A=B8=20<>=20->=20=EC=8B=A4=EC=A0=9C?= =?UTF-8?q?=20DOM=EC=9A=94=EC=86=8C=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/university/[id]/EnglishSection.tsx | 4 ++-- src/app/university/[id]/LanguageSection.tsx | 4 ++-- src/app/university/[id]/MajorSection.tsx | 4 ++-- src/app/university/[id]/MapSection.tsx | 4 ++-- src/app/university/[id]/UniversityDetail.tsx | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/app/university/[id]/EnglishSection.tsx b/src/app/university/[id]/EnglishSection.tsx index 3ff4a61b..ebe7b80f 100644 --- a/src/app/university/[id]/EnglishSection.tsx +++ b/src/app/university/[id]/EnglishSection.tsx @@ -8,7 +8,7 @@ interface EnglishSectionProps { const EnglishSection = ({ englishDetail }: EnglishSectionProps) => { return ( -
+ <>
영어강의 리스트
@@ -18,7 +18,7 @@ const EnglishSection = ({ englishDetail }: EnglishSectionProps) => {
-
+ ); }; diff --git a/src/app/university/[id]/LanguageSection.tsx b/src/app/university/[id]/LanguageSection.tsx index 15b37dea..315092b2 100644 --- a/src/app/university/[id]/LanguageSection.tsx +++ b/src/app/university/[id]/LanguageSection.tsx @@ -14,7 +14,7 @@ interface LanguageSectionProps { const LanguageSection = ({ languageRequirements, detailsForLanguage }: LanguageSectionProps) => { return ( -
+ <>
어학 성적
@@ -40,7 +40,7 @@ const LanguageSection = ({ languageRequirements, detailsForLanguage }: LanguageS
-
+ ); }; diff --git a/src/app/university/[id]/MajorSection.tsx b/src/app/university/[id]/MajorSection.tsx index 8971df1a..ac442104 100644 --- a/src/app/university/[id]/MajorSection.tsx +++ b/src/app/university/[id]/MajorSection.tsx @@ -8,7 +8,7 @@ interface MajorSectionProps { const MajorSection = ({ majorDetail }: MajorSectionProps) => { return ( -
+ <>
전공상세
@@ -18,7 +18,7 @@ const MajorSection = ({ majorDetail }: MajorSectionProps) => {
-
+ ); }; diff --git a/src/app/university/[id]/MapSection.tsx b/src/app/university/[id]/MapSection.tsx index 3a93532c..8b82efd9 100644 --- a/src/app/university/[id]/MapSection.tsx +++ b/src/app/university/[id]/MapSection.tsx @@ -6,7 +6,7 @@ interface MapSectionProps { const MapSection = ({ universityEnglishName }: MapSectionProps) => { return ( -
+ <>
파견학교 위치
@@ -14,7 +14,7 @@ const MapSection = ({ universityEnglishName }: MapSectionProps) => {
-
+ ); }; diff --git a/src/app/university/[id]/UniversityDetail.tsx b/src/app/university/[id]/UniversityDetail.tsx index 882167db..7fcd9aca 100644 --- a/src/app/university/[id]/UniversityDetail.tsx +++ b/src/app/university/[id]/UniversityDetail.tsx @@ -16,10 +16,10 @@ interface UniversityDetailProps { const UniversityDetail = ({ university }: UniversityDetailProps) => { return ( -
+ <> -
+ ); }; From aef58147f009e69931d3438953e1d4de782fed39 Mon Sep 17 00:00:00 2001 From: Wibaek Park Date: Sun, 29 Jun 2025 18:53:01 +0900 Subject: [PATCH 15/16] =?UTF-8?q?refactor:=20=EB=AF=B8=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/university/[id]/page.tsx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/app/university/[id]/page.tsx b/src/app/university/[id]/page.tsx index 0544ca2a..e08e8818 100644 --- a/src/app/university/[id]/page.tsx +++ b/src/app/university/[id]/page.tsx @@ -6,7 +6,6 @@ import TopDetailNavigation from "@/components/layout/TopDetailNavigation"; import UniversityDetail from "./UniversityDetail"; -import { Review } from "@/types/review"; import { University } from "@/types/university"; import { getUniversityDetailPublicApi } from "@/api/university"; @@ -44,7 +43,6 @@ type CollegeDetailPageProps = { const CollegeDetailPage = async ({ params }: CollegeDetailPageProps) => { const collegeId = Number(params.id); - const reviewList: Review[] = []; let res: { data: University }; try { @@ -61,9 +59,6 @@ const CollegeDetailPage = async ({ params }: CollegeDetailPageProps) => { return ( <> - - {convertedKoreanName} - From 6ab537809244142796a5264773dd72d3481d93e1 Mon Sep 17 00:00:00 2001 From: Wibaek Park Date: Sun, 29 Jun 2025 18:53:52 +0900 Subject: [PATCH 16/16] =?UTF-8?q?refactor:=20UniversityDetail=20=EA=B3=BC?= =?UTF-8?q?=EB=8F=84=ED=95=9C=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC=20=ED=95=B4=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/university/[id]/UniversityDetail.tsx | 77 +++++++++----------- 1 file changed, 35 insertions(+), 42 deletions(-) diff --git a/src/app/university/[id]/UniversityDetail.tsx b/src/app/university/[id]/UniversityDetail.tsx index 7fcd9aca..f2adc6df 100644 --- a/src/app/university/[id]/UniversityDetail.tsx +++ b/src/app/university/[id]/UniversityDetail.tsx @@ -17,50 +17,43 @@ interface UniversityDetailProps { const UniversityDetail = ({ university }: UniversityDetailProps) => { return ( <> - - +
+ 대학 이미지 +
+
+ + {/* TODO: totalDispatchCount 추가시 연동, 나라에 국기 추가 */} + + + + + + +
+
); }; export default UniversityDetail; - -const UniversityImage = ({ imageUrl }: { imageUrl: string }) => { - return ( -
- 대학 이미지 -
- ); -}; - -const UniversityInfo = ({ university }: { university: University }) => { - return ( -
- - {/* TODO: totalDispatchCount 추가시 연동, 나라에 국기 추가 */} - - - - - - -
-
- ); -};