From 4e0f0e111e6db1c377fc2e09c783a36d05a5e805 Mon Sep 17 00:00:00 2001 From: Junseo Kim Date: Sun, 2 Feb 2025 15:25:00 +0900 Subject: [PATCH 01/13] =?UTF-8?q?refactor:=20global.d.ts=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EC=9C=84=EC=B9=98=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/{ => src}/types/global.d.ts | 0 frontend/tsconfig.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename frontend/{ => src}/types/global.d.ts (100%) diff --git a/frontend/types/global.d.ts b/frontend/src/types/global.d.ts similarity index 100% rename from frontend/types/global.d.ts rename to frontend/src/types/global.d.ts diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index 531f82d..b66caaf 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -17,7 +17,7 @@ } }, "include": ["src", - "types/global.d.ts" + "src/types/global.d.ts" ], "exclude": ["node_modules", "dist"] } From 736039f7493067dea93aaff9c10c7a3724c78f3c Mon Sep 17 00:00:00 2001 From: Junseo Kim Date: Sun, 2 Feb 2025 15:27:04 +0900 Subject: [PATCH 02/13] =?UTF-8?q?refactor:=20React=20Refresh=20=ED=94=8C?= =?UTF-8?q?=EB=9F=AC=EA=B7=B8=EC=9D=B8=20import=20=EB=B0=A9=EC=8B=9D?= =?UTF-8?q?=EC=9D=84=20CommonJS=EB=A1=9C=20=EC=9E=AC=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/config/webpack.dev.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/config/webpack.dev.ts b/frontend/config/webpack.dev.ts index 2cdb594..1ca95fc 100644 --- a/frontend/config/webpack.dev.ts +++ b/frontend/config/webpack.dev.ts @@ -1,7 +1,7 @@ import * as path from 'path'; import * as webpack from 'webpack'; import { merge } from 'webpack-merge'; -import * as RefreshWebpackPlugin from '@pmmmwh/react-refresh-webpack-plugin'; +const RefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin'); import 'webpack-dev-server'; import common from './webpack.common'; From 4dc2bcd4733e20d81545b7d34962ff9a95dd0d86 Mon Sep 17 00:00:00 2001 From: Junseo Kim Date: Sun, 2 Feb 2025 15:27:17 +0900 Subject: [PATCH 03/13] =?UTF-8?q?refactor:=20HtmlWebpackPlugin=20=ED=94=8C?= =?UTF-8?q?=EB=9F=AC=EA=B7=B8=EC=9D=B8=20import=20=EB=B0=A9=EC=8B=9D?= =?UTF-8?q?=EC=9D=84=20CommonJS=EB=A1=9C=20=EC=9E=AC=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/config/webpack.common.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/config/webpack.common.ts b/frontend/config/webpack.common.ts index 29a6705..188ab8e 100644 --- a/frontend/config/webpack.common.ts +++ b/frontend/config/webpack.common.ts @@ -1,6 +1,6 @@ import * as path from 'path'; import * as webpack from 'webpack'; -import * as HtmlWebpackPlugin from 'html-webpack-plugin'; +const HtmlWebpackPlugin = require('html-webpack-plugin'); const configuration: webpack.Configuration = { // 모듈 해석 방법 설정 From 39364b1772b273d9d36ac757ede227d8aadd4be2 Mon Sep 17 00:00:00 2001 From: Junseo Kim Date: Sun, 2 Feb 2025 15:30:58 +0900 Subject: [PATCH 04/13] =?UTF-8?q?feat:=20=EB=AA=A8=EC=A7=91=EC=A4=91/?= =?UTF-8?q?=EB=AA=A8=EC=A7=91=EC=98=88=EC=A0=95=20=EB=9D=BC=EB=94=94?= =?UTF-8?q?=EC=98=A4=20=EB=B2=84=ED=8A=BC=20=EC=8A=A4=ED=83=80=EC=9D=BC=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StatusRadioButton.styles.ts | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 frontend/src/pages/MainPage/components/StatusRadioButton/StatusRadioButton.styles.ts diff --git a/frontend/src/pages/MainPage/components/StatusRadioButton/StatusRadioButton.styles.ts b/frontend/src/pages/MainPage/components/StatusRadioButton/StatusRadioButton.styles.ts new file mode 100644 index 0000000..30b4720 --- /dev/null +++ b/frontend/src/pages/MainPage/components/StatusRadioButton/StatusRadioButton.styles.ts @@ -0,0 +1,45 @@ +import styled from 'styled-components'; + +export const RadioLabel = styled.label` + display: flex; + align-items: center; + cursor: pointer; +`; + +export const RadioInput = styled.input` + display: none; +`; + +export const CustomRadio = styled.span<{ isActive: boolean }>` + width: 20px; + height: 20px; + border-radius: 50%; + border: 1px solid ${({ isActive }) => (isActive ? '#00a6ff' : '#ccc')}; + background-color: #d9d9d9; + position: relative; + margin-right: 8px; + + ${({ isActive }) => + isActive && + ` + background-color: #fff; + &::after { + content: ''; + width: 14px; + height: 14px; + background-color: rgba(0, 166, 255, 0.5); + border-radius: 50%; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + `} +`; + +export const RadioText = styled.span<{ isActive: boolean }>` + font-size: 0.75rem; + color: ${({ isActive }) => (isActive ? '#818181' : '#aaa')}; + font-weight: 500; + user-select: none; +`; From aa9a2452bf25338952ba55ad997b1ddacc6e2a46 Mon Sep 17 00:00:00 2001 From: Junseo Kim Date: Sun, 2 Feb 2025 15:31:11 +0900 Subject: [PATCH 05/13] =?UTF-8?q?feat:=20=EB=AA=A8=EC=A7=91=EC=A4=91/?= =?UTF-8?q?=EB=AA=A8=EC=A7=91=EC=98=88=EC=A0=95=20=EB=B3=B4=EA=B8=B0=20?= =?UTF-8?q?=EB=9D=BC=EB=94=94=EC=98=A4=20=EB=B2=84=ED=8A=BC=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StatusRadioButton/StatusRadioButton.tsx | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 frontend/src/pages/MainPage/components/StatusRadioButton/StatusRadioButton.tsx diff --git a/frontend/src/pages/MainPage/components/StatusRadioButton/StatusRadioButton.tsx b/frontend/src/pages/MainPage/components/StatusRadioButton/StatusRadioButton.tsx new file mode 100644 index 0000000..62cc0b3 --- /dev/null +++ b/frontend/src/pages/MainPage/components/StatusRadioButton/StatusRadioButton.tsx @@ -0,0 +1,34 @@ +import React, { useState } from 'react'; +import * as Styled from './StatusRadioButton.styles'; + +interface StatusRadioButtonProps { + onChange: (selectedStatus: boolean) => void; +} + +const StatusRadioButton = ({ onChange }: StatusRadioButtonProps) => { + const [isActive, setIsActive] = useState(false); + + const handleToggle = () => { + setIsActive((prev) => { + const newStatus = !prev; + onChange(newStatus); + return newStatus; + }); + }; + + return ( + + + + + 모집중/모집예정 보기 + + + ); +}; + +export default StatusRadioButton; From d6fdd2a60c0bd2d12b4612de07f4f930ec303d4c Mon Sep 17 00:00:00 2001 From: Junseo Kim Date: Sun, 2 Feb 2025 15:33:42 +0900 Subject: [PATCH 06/13] =?UTF-8?q?refactor:=20=EC=B9=B4=EB=93=9C=20?= =?UTF-8?q?=EB=84=88=EB=B9=84=20100%=EB=A1=9C=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EB=B0=8F=20=EB=8F=99=EC=95=84=EB=A6=AC=20=ED=95=9C=EC=A4=84=20?= =?UTF-8?q?=EC=86=8C=EA=B0=9C=20=EC=8A=A4=ED=83=80=EC=9D=BC=20=EA=B0=9C?= =?UTF-8?q?=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MainPage/components/{ => ClubCard}/ClubCard.styles.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) rename frontend/src/pages/MainPage/components/{ => ClubCard}/ClubCard.styles.ts (91%) diff --git a/frontend/src/pages/MainPage/components/ClubCard.styles.ts b/frontend/src/pages/MainPage/components/ClubCard/ClubCard.styles.ts similarity index 91% rename from frontend/src/pages/MainPage/components/ClubCard.styles.ts rename to frontend/src/pages/MainPage/components/ClubCard/ClubCard.styles.ts index 3b746eb..e09896d 100644 --- a/frontend/src/pages/MainPage/components/ClubCard.styles.ts +++ b/frontend/src/pages/MainPage/components/ClubCard/ClubCard.styles.ts @@ -6,7 +6,7 @@ const CardContainer = styled.div<{ state: string }>` border-radius: 14px; padding: 20px; background-color: #fff; - width: 370px; + width: 100%; height: 170px; box-shadow: ${({ state }) => state === '모집중' @@ -38,8 +38,10 @@ const TagsContainer = styled.div` const Description = styled.p` font-size: 0.875rem; - margin: 17px 3px 35px 5px; + margin: 22px 3px 22px 5px; color: rgba(129, 129, 129, 1); + line-height: 16px; + white-space: nowrap; `; export { From 2f384592e3a20b757cbe2595fb4cd52dab690c86 Mon Sep 17 00:00:00 2001 From: Junseo Kim Date: Sun, 2 Feb 2025 15:35:10 +0900 Subject: [PATCH 07/13] =?UTF-8?q?refactor:=20=EB=8F=99=EC=95=84=EB=A6=AC?= =?UTF-8?q?=20=EC=B9=B4=EB=93=9C=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8?= =?UTF-8?q?=EC=97=90=20=EC=A0=88=EB=8C=80=20=EA=B2=BD=EB=A1=9C=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9=20=EB=B0=8F=20=ED=83=80=EC=9E=85=20=EC=A0=95=EC=9D=98?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/{ => ClubCard}/ClubCard.tsx | 22 +++++-------------- 1 file changed, 5 insertions(+), 17 deletions(-) rename frontend/src/pages/MainPage/components/{ => ClubCard}/ClubCard.tsx (63%) diff --git a/frontend/src/pages/MainPage/components/ClubCard.tsx b/frontend/src/pages/MainPage/components/ClubCard/ClubCard.tsx similarity index 63% rename from frontend/src/pages/MainPage/components/ClubCard.tsx rename to frontend/src/pages/MainPage/components/ClubCard/ClubCard.tsx index 66caae5..4d67693 100644 --- a/frontend/src/pages/MainPage/components/ClubCard.tsx +++ b/frontend/src/pages/MainPage/components/ClubCard/ClubCard.tsx @@ -1,23 +1,11 @@ import React from 'react'; -import ClubTag from '../../../components/ClubTag/ClubTag'; -import ClubLogo from '../../../components/ClubLogo/ClubLogo'; -import ClubStateBox from '../../../components/ClubStateBox/ClubStateBox'; +import ClubTag from '@/components/ClubTag/ClubTag'; +import ClubLogo from '@/components/ClubLogo/ClubLogo'; +import ClubStateBox from '@/components/ClubStateBox/ClubStateBox'; import * as Styled from './ClubCard.styles'; +import { Club } from '@/types/club'; -interface ClubCardProps { - club: { - id: string; - name: string; - logo: string; - tags: string[]; - state: string; - division: string; - classification: string; - description: string; - }; -} - -const ClubCard = ({ club }: ClubCardProps) => { +const ClubCard = ({ club }: Club) => { return ( From 636cab764cffb02773e241d06cdfd1523488ebaa Mon Sep 17 00:00:00 2001 From: Junseo Kim Date: Sun, 2 Feb 2025 15:35:54 +0900 Subject: [PATCH 08/13] =?UTF-8?q?feat:=20Club=20=ED=83=80=EC=9E=85=20?= =?UTF-8?q?=EC=A0=95=EC=9D=98=20=ED=8C=8C=EC=9D=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/types/club.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 frontend/src/types/club.ts diff --git a/frontend/src/types/club.ts b/frontend/src/types/club.ts new file mode 100644 index 0000000..8f0dd17 --- /dev/null +++ b/frontend/src/types/club.ts @@ -0,0 +1,12 @@ +export interface Club { + club: { + id: string; + name: string; + logo: string; + tags: string[]; + state: string; + division: string; + classification: string; + description: string; + }; +} From aad370bc10a5643827c917777e15db3b57c70f39 Mon Sep 17 00:00:00 2001 From: Junseo Kim Date: Sun, 2 Feb 2025 15:37:38 +0900 Subject: [PATCH 09/13] =?UTF-8?q?refactor:=20=EC=B9=B4=ED=85=8C=EA=B3=A0?= =?UTF-8?q?=EB=A6=AC=20=EB=B2=84=ED=8A=BC=20=EB=A0=88=EC=9D=B4=EC=95=84?= =?UTF-8?q?=EC=9B=83=20=EB=AF=B8=EB=94=94=EC=96=B4=20=EC=BF=BC=EB=A6=AC=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CategoryButtonList.styles.ts | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/frontend/src/pages/MainPage/components/CategoryButtonList/CategoryButtonList.styles.ts b/frontend/src/pages/MainPage/components/CategoryButtonList/CategoryButtonList.styles.ts index ef48068..5a982d1 100644 --- a/frontend/src/pages/MainPage/components/CategoryButtonList/CategoryButtonList.styles.ts +++ b/frontend/src/pages/MainPage/components/CategoryButtonList/CategoryButtonList.styles.ts @@ -4,22 +4,6 @@ export const CategoryButtonContainer = styled.div` display: flex; justify-content: space-between; flex-wrap: nowrap; - - @media (max-width: 1280px) { - gap: calc(5vw + 10px); - } - - @media (max-width: 700px) { - gap: calc(4vw + 5px); - } - - @media (max-width: 480px) { - gap: calc(3vw + 2px); - } - - @media (max-width: 375px) { - gap: 8px; - } `; export const CategoryButton = styled.button` From a050f4340ff8dd39cbe0af1efa7468e90fef502b Mon Sep 17 00:00:00 2001 From: Junseo Kim Date: Sun, 2 Feb 2025 15:38:16 +0900 Subject: [PATCH 10/13] =?UTF-8?q?fix:=20=EC=B9=B4=ED=85=8C=EA=B3=A0?= =?UTF-8?q?=EB=A6=AC=20=EC=84=A0=ED=83=9D=20=EC=8B=9C=20ID=20=EB=8C=80?= =?UTF-8?q?=EC=8B=A0=20=EC=9D=B4=EB=A6=84=20=EC=A0=84=EB=8B=AC=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/CategoryButtonList/CategoryButtonList.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/MainPage/components/CategoryButtonList/CategoryButtonList.tsx b/frontend/src/pages/MainPage/components/CategoryButtonList/CategoryButtonList.tsx index 13401c7..80ad5da 100644 --- a/frontend/src/pages/MainPage/components/CategoryButtonList/CategoryButtonList.tsx +++ b/frontend/src/pages/MainPage/components/CategoryButtonList/CategoryButtonList.tsx @@ -34,7 +34,7 @@ const CategoryButtonList = ({ onCategorySelect }: CategoryButtonListProps) => { {clubCategories.map((category) => ( onCategorySelect(category.id)}> + onClick={() => onCategorySelect(category.name)}> {category.name} {category.name} From e9cb34d42f68691ee55936e5c95fa35c064a8f88 Mon Sep 17 00:00:00 2001 From: Junseo Kim Date: Sun, 2 Feb 2025 15:40:36 +0900 Subject: [PATCH 11/13] =?UTF-8?q?feat:=20=EB=A9=94=EC=9D=B8=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20?= =?UTF-8?q?=EB=B0=8F=20=EC=B9=B4=EB=93=9C=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EB=B0=98=EC=9D=91=ED=98=95=20=EC=8A=A4=ED=83=80=EC=9D=BC=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/pages/MainPage/MainPage.styles.ts | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 frontend/src/pages/MainPage/MainPage.styles.ts diff --git a/frontend/src/pages/MainPage/MainPage.styles.ts b/frontend/src/pages/MainPage/MainPage.styles.ts new file mode 100644 index 0000000..d606e0f --- /dev/null +++ b/frontend/src/pages/MainPage/MainPage.styles.ts @@ -0,0 +1,52 @@ +import styled from 'styled-components'; + +export const PageContainer = styled.div` + padding: 0 40px; + max-width: 1180px; + margin: 0 auto; + + @media (max-width: 500px) { + padding: 0 20px; + } + + @media (max-width: 375px) { + padding: 0 10px; + } +`; + +export const ContentWrapper = styled.div` + width: 100%; +`; + +export const CardList = styled.div` + display: grid; + width: 100%; + max-width: 100%; + gap: 20px; + margin-top: 50px; + transition: + gap 0.5s ease, + grid-template-columns 0.5s ease; + + grid-template-columns: repeat(3, 1fr); + + @media (max-width: 1280px) { + grid-template-columns: repeat(2, 1fr); + } + + @media (max-width: 700px) { + grid-template-columns: repeat(1, 1fr); + } + @media (max-width: 500px) { + gap: 16px; + } + @media (max-width: 375px) { + gap: 10px; + } +`; + +export const FilterWrapper = styled.div` + display: flex; + justify-content: right; + margin: 20px 0; +`; From 9b836f64cd4d43dc0c8ef7ba278ffe997ee5349e Mon Sep 17 00:00:00 2001 From: Junseo Kim Date: Sun, 2 Feb 2025 15:41:03 +0900 Subject: [PATCH 12/13] =?UTF-8?q?feat:=20=EB=A9=94=EC=9D=B8=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EB=8F=99=EC=95=84=EB=A6=AC=20=ED=95=84?= =?UTF-8?q?=ED=84=B0=20=EB=B0=8F=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EB=A0=8C?= =?UTF-8?q?=EB=8D=94=EB=A7=81=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/pages/MainPage/MainPage.tsx | 53 +++++++++++++++++++++--- 1 file changed, 47 insertions(+), 6 deletions(-) diff --git a/frontend/src/pages/MainPage/MainPage.tsx b/frontend/src/pages/MainPage/MainPage.tsx index 176af4f..bc0c757 100644 --- a/frontend/src/pages/MainPage/MainPage.tsx +++ b/frontend/src/pages/MainPage/MainPage.tsx @@ -1,17 +1,58 @@ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import CategoryButtonList from '@/pages/MainPage/components/CategoryButtonList/CategoryButtonList'; +import ClubCard from '@/pages/MainPage/components/ClubCard/ClubCard'; +import StatusRadioButton from '@/pages/MainPage/components/StatusRadioButton/StatusRadioButton'; +import { mockClubs } from '@/apis/mockClubs'; +import * as Styled from './MainPage.styles'; const MainPage = () => { - const [selectedCategory, setSelectedCategory] = useState('all'); + const [isFilterActive, setIsFilterActive] = useState(false); + const [selectedCategory, setSelectedCategory] = useState('전체'); + const [filteredClubs, setFilteredClubs] = useState(mockClubs); - const handleCategorySelect = (categoryId: string) => { - setSelectedCategory(categoryId); + const handleFilterChange = (status: boolean) => { + setIsFilterActive(status); }; + const handleCategorySelect = (category: string) => { + setSelectedCategory(category); + }; + + useEffect(() => { + let filtered = mockClubs; + + if (isFilterActive) { + filtered = filtered.filter( + (club) => club.state === '모집중' || club.state === '모집예정', + ); + } + + if (selectedCategory !== '전체') { + filtered = filtered.filter( + (club) => club.classification === selectedCategory, + ); + } + + setFilteredClubs(filtered); + }, [isFilterActive, selectedCategory]); + return ( - <> + - + + + + + + + {filteredClubs.length > 0 ? ( + filteredClubs.map((club) => ) + ) : ( +

조건에 맞는 동아리가 없어요

+ )} +
+
+
); }; From fdc8b0921504a3797c8c6b2c43d9083d5ddcad3f Mon Sep 17 00:00:00 2001 From: Junseo Kim Date: Sun, 2 Feb 2025 15:42:25 +0900 Subject: [PATCH 13/13] =?UTF-8?q?feat:=20=EB=8F=99=EC=95=84=EB=A6=AC=20?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D=20API=20=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=9A=A9?= =?UTF-8?q?=20mock=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/apis/mockClubs.ts | 202 +++++++++++++++++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 frontend/src/apis/mockClubs.ts diff --git a/frontend/src/apis/mockClubs.ts b/frontend/src/apis/mockClubs.ts new file mode 100644 index 0000000..276e51e --- /dev/null +++ b/frontend/src/apis/mockClubs.ts @@ -0,0 +1,202 @@ +export const mockClubs = [ + { + id: '1', + name: '기독학생회', + logo: '/logos/club1.png', + tags: ['신앙', '친목'], + state: '모집중', + division: '중동', + classification: '종교', + description: '신앙 생활을 함께하는 클럽입니다.', + }, + { + id: '2', + name: 'WAP', + logo: '/logos/club2.png', + tags: ['프로그래밍', '개발'], + state: '모집중', + division: '중동', + classification: '학술', + description: '프로그래밍을 배우고 프로젝트를 진행합니다.', + }, + { + id: '3', + name: '축구 동아리', + logo: '/logos/club3.png', + tags: ['운동', '친목'], + state: '모집중', + division: '중동', + classification: '운동', + description: '축구를 즐기는 동아리입니다.', + }, + { + id: '4', + name: '음악 동호회', + logo: '/logos/club4.png', + tags: ['공연', '밴드'], + state: '모집예정', + division: '중동', + classification: '공연', + description: '밴드 활동 및 공연을 진행합니다.', + }, + { + id: '5', + name: '자원봉사팀', + logo: '/logos/club5.png', + tags: ['봉사', '사회활동'], + state: '모집중', + division: '중동', + classification: '봉사', + description: '지역사회 봉사를 위한 클럽입니다.', + }, + { + id: '6', + name: '사진 동호회', + logo: '/logos/club6.png', + tags: ['사진', '취미'], + state: '모집마감', + division: '중동', + classification: '취미교양', + description: '사진 촬영 및 전시회를 개최하는 클럽입니다.', + }, + { + id: '7', + name: '로봇 연구회', + logo: '/logos/club7.png', + tags: ['로봇', '공학'], + state: '모집중', + division: '중동', + classification: '학술', + description: '로봇을 연구하고 개발하는 클럽입니다.', + }, + { + id: '8', + name: '헬스 동아리', + logo: '/logos/club8.png', + tags: ['헬스', '운동'], + state: '모집마감', + division: '중동', + classification: '운동', + description: '헬스를 통해 건강을 유지하는 클럽입니다.', + }, + { + id: '9', + name: '프론트엔드 개발자 모임', + logo: '/logos/club9.png', + tags: ['프론트엔드', '개발'], + state: '모집중', + division: '중동', + classification: '학술', + description: '프론트엔드 기술을 공부하고 프로젝트를 진행합니다.', + }, + { + id: '10', + name: '국제 교류 동아리', + logo: '/logos/club10.png', + tags: ['교류', '언어교환'], + state: '모집마감', + division: '중동', + classification: '취미교양', + description: '국제 학생들과의 문화 및 언어 교류 활동을 합니다.', + }, + { + id: '11', + name: '드론 동아리', + logo: '/logos/club11.png', + tags: ['드론', '항공'], + state: '모집중', + division: '중동', + classification: '학술', + description: '드론 조종 및 항공 촬영을 배우는 클럽입니다.', + }, + { + id: '12', + name: '요리 연구회', + logo: '/logos/club12.png', + tags: ['요리', '미식'], + state: '모집예정', + division: '중동', + classification: '취미교양', + description: '다양한 요리법을 연구하고 시연하는 클럽입니다.', + }, + { + id: '13', + name: '연극 동아리', + logo: '/logos/club13.png', + tags: ['연극', '공연'], + state: '모집중', + division: '중동', + classification: '공연', + description: '연극 제작 및 공연을 통해 창의력을 발휘하는 클럽입니다.', + }, + { + id: '14', + name: '환경 보호 동아리', + logo: '/logos/club14.png', + tags: ['환경', '보호'], + state: '모집마감', + division: '중동', + classification: '봉사', + description: '환경 보호 활동 및 캠페인을 진행하는 클럽입니다.', + }, + { + id: '15', + name: '자전거 동호회', + logo: '/logos/club15.png', + tags: ['자전거', '여행'], + state: '모집중', + division: '중동', + classification: '운동', + description: '자전거 투어 및 관련 활동을 즐기는 클럽입니다.', + }, + { + id: '16', + name: '애니메이션 제작 동아리', + logo: '/logos/club16.png', + tags: ['애니메이션', '영상'], + state: '모집예정', + division: '중동', + classification: '학술', + description: '애니메이션 제작 및 편집을 배우는 클럽입니다.', + }, + { + id: '17', + name: '천체 관측 동아리', + logo: '/logos/club17.png', + tags: ['천문학', '관측'], + state: '모집중', + division: '중동', + classification: '학술', + description: '별과 행성을 관측하며 우주를 탐구하는 클럽입니다.', + }, + { + id: '18', + name: '댄스 동아리', + logo: '/logos/club18.png', + tags: ['댄스', '퍼포먼스'], + state: '모집중', + division: '중동', + classification: '공연', + description: '다양한 댄스 장르를 배우고 공연하는 클럽입니다.', + }, + { + id: '19', + name: '독서 토론 모임', + logo: '/logos/club19.png', + tags: ['독서', '토론'], + state: '모집마감', + division: '중동', + classification: '취미교양', + description: '책을 읽고 다양한 주제로 토론하는 클럽입니다.', + }, + { + id: '20', + name: '비즈니스 전략 동아리', + logo: '/logos/club20.png', + tags: ['비즈니스', '전략'], + state: '모집중', + division: '중동', + classification: '학술', + description: '비즈니스 전략을 연구하고 실습하는 클럽입니다.', + }, +];