diff --git a/apps/web/src/assets/add-mov.svg b/apps/web/src/assets/svg/add-mov-icon.svg similarity index 100% rename from apps/web/src/assets/add-mov.svg rename to apps/web/src/assets/svg/add-mov-icon.svg diff --git a/apps/web/src/assets/add-photo.svg b/apps/web/src/assets/svg/add-photo-icon.svg similarity index 100% rename from apps/web/src/assets/add-photo.svg rename to apps/web/src/assets/svg/add-photo-icon.svg diff --git a/apps/web/src/components/UniversityClubSidebar/index.tsx b/apps/web/src/components/UniversityClubSidebar/index.tsx new file mode 100644 index 0000000..28e568f --- /dev/null +++ b/apps/web/src/components/UniversityClubSidebar/index.tsx @@ -0,0 +1,35 @@ +import RecentClubList from '@/components/RecentClubList'; + +interface UniversityClubSidebarProps { + university: { + imageUrl: string; + name: string; + campusName?: string; + }; + clubCount: number; +} + +function UniversityClubSidebar({ university, clubCount }: UniversityClubSidebarProps) { + const universityLabel = university.campusName ? `${university.name} ${university.campusName}` : university.name; + + return ( + + ); +} + +export default UniversityClubSidebar; diff --git a/apps/web/src/pages/ClubDetail/index.tsx b/apps/web/src/pages/ClubDetail/index.tsx index bbea8b8..6ab1f55 100644 --- a/apps/web/src/pages/ClubDetail/index.tsx +++ b/apps/web/src/pages/ClubDetail/index.tsx @@ -1,39 +1,44 @@ -import { useEffect } from 'react'; +import { useEffect, type ReactNode } from 'react'; import { cn } from '@konect/utils/cn'; import { useSuspenseQuery } from '@tanstack/react-query'; import { useParams } from 'react-router-dom'; import { clubDetailQueries } from '@/apis/clubDetail/queries'; -import AddMov from '@/assets/add-mov.svg'; -import AddPhoto from '@/assets/add-photo.svg'; import NoneImage from '@/assets/None-image.png'; +import AddMovIcon from '@/assets/svg/add-mov-icon.svg'; +import AddPhotoIcon from '@/assets/svg/add-photo-icon.svg'; import Breadcrumb from '@/components/Breadcrumb'; -import RecentClubList from '@/components/RecentClubList'; +import UniversityClubSidebar from '@/components/UniversityClubSidebar'; import { CATEGORY_TEXT_COLORS } from '@/constants/club'; import { saveRecentClubId } from '@/utils/recentClubStorage'; +const INTRODUCE_MEDIA_ITEMS = [ + { label: '활동 사진', icon: }, + { label: '소개 영상', icon: }, +]; + function Introduce({ introduce }: { introduce: string }) { return (
-
-
-
- - 활동 사진 -
-
-
-
- - 소개 영상 -
-
+
+ {INTRODUCE_MEDIA_ITEMS.map(({ label, icon }) => ( + + ))}
- {introduce} + {introduce}
); } +function IntroduceMediaCard({ icon, label }: { icon: ReactNode; label: string }) { + return ( +
+ {icon} + {label} +
+ ); +} + function NoneIntroduce() { return (
@@ -57,8 +62,8 @@ export default function ClubDetail() { }, [clubDetail.id]); return ( -
-
+
+
-
- +
+
-
-
+
+
-
-

{clubDetail.name}

-
- +
+

{clubDetail.name}

+
+ {clubDetail.categoryName}
@@ -110,7 +95,7 @@ export default function ClubDetail() {
-
+

동아리 소개

{clubDetail.introduce ? : }
diff --git a/apps/web/src/pages/UniversityClubList/index.tsx b/apps/web/src/pages/UniversityClubList/index.tsx index f188822..cb12ca5 100644 --- a/apps/web/src/pages/UniversityClubList/index.tsx +++ b/apps/web/src/pages/UniversityClubList/index.tsx @@ -9,7 +9,7 @@ import type { UniversityClub, UniversityClubListRequestParams } from '@/apis/uni import { universityClubQueries } from '@/apis/universityClub/queries'; import SearchIcon from '@/assets/svg/search-icon.svg'; import Breadcrumb from '@/components/Breadcrumb'; -import RecentClubList from '@/components/RecentClubList'; +import UniversityClubSidebar from '@/components/UniversityClubSidebar'; import { CATEGORY_TEXT_COLORS } from '@/constants/club'; const PAGE_LIMIT = 12; @@ -49,12 +49,8 @@ function UniversityClubListContent({ universityId }: { universityId: number }) { const { data, fetchNextPage, hasNextPage, isFetchingNextPage } = useSuspenseInfiniteQuery( universityClubQueries.infiniteList(universityId, requestParams) ); - const firstPage = data.pages[0]; - const { university, totalCount, categories } = firstPage; + const [{ university, totalCount, categories }] = data.pages; const clubs = data.pages.flatMap((pageData) => pageData.clubs); - const universityLabel = university.campusName ? `${university.name} ${university.campusName}` : university.name; - const categoryTotalCount = categories.reduce((sum, category) => sum + category.count, 0); - const allClubCount = categoryTotalCount || totalCount; const handleSearchKeywordChange = (event: ChangeEvent) => { const value = event.target.value; @@ -95,22 +91,7 @@ function UniversityClubListContent({ universityId }: { universityId: number }) {
- +
@@ -129,7 +110,7 @@ function UniversityClubListContent({ universityId }: { universityId: number }) {
handleCategoryChange()} />