From b4eb07f2c7e70ef5c3f7dc7e4624a76ac55f84c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=83=81=EA=B7=9C?= Date: Wed, 2 Aug 2023 20:26:25 +0900 Subject: [PATCH 01/11] =?UTF-8?q?feat:=20=EB=A7=88=EC=9D=B4=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EA=B4=80=EB=A0=A8=20=ED=83=80=EC=9E=85?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/types/profile.ts | 19 +++++++++++++++++++ frontend/src/types/select.ts | 7 +++++++ 2 files changed, 26 insertions(+) create mode 100644 frontend/src/types/profile.ts create mode 100644 frontend/src/types/select.ts diff --git a/frontend/src/types/profile.ts b/frontend/src/types/profile.ts new file mode 100644 index 000000000..1601d99a6 --- /dev/null +++ b/frontend/src/types/profile.ts @@ -0,0 +1,19 @@ +import { ReviewStatus } from './runnerPost'; + +export interface RunnerProfileResponse { + profile: { + name: string; + imageUrl: string; + githubUrl: string; + introduction: string; + }; + runnerPosts: ProfileRunnerPost[]; +} + +export interface ProfileRunnerPost { + runnerPostId: number; + title: string; + deadline: string; + tags: string[]; + reviewStatus: ReviewStatus; +} diff --git a/frontend/src/types/select.ts b/frontend/src/types/select.ts new file mode 100644 index 000000000..7d79be5cc --- /dev/null +++ b/frontend/src/types/select.ts @@ -0,0 +1,7 @@ +export interface SelectOption { + value: T; + label: string; + selected: boolean; +} + +export type ListSelectOption = SelectOption; From 2e30ffe048c5509da62846e90bc7bfac6fd34a2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=83=81=EA=B7=9C?= Date: Wed, 2 Aug 2023 20:27:28 +0900 Subject: [PATCH 02/11] =?UTF-8?q?feat:=20=EB=A7=88=EC=9D=B4=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EA=B4=80=EB=A0=A8=20msw=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=EB=B0=8F=20=ED=95=B8=EB=93=A4=EB=9F=AC=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 --- frontend/src/mocks/data/runnerProfile.json | 31 ++++++++++++++++++++++ frontend/src/mocks/handlers.ts | 5 ++++ 2 files changed, 36 insertions(+) create mode 100644 frontend/src/mocks/data/runnerProfile.json diff --git a/frontend/src/mocks/data/runnerProfile.json b/frontend/src/mocks/data/runnerProfile.json new file mode 100644 index 000000000..8259d0f3e --- /dev/null +++ b/frontend/src/mocks/data/runnerProfile.json @@ -0,0 +1,31 @@ +{ + "profile": { + "name": "도리토스", + "imageUrl": "profile.jpg", + "githubUrl": "github.com/shb03323", + "introduction": "안녕하세요 디투입니다." + }, + "runnerPosts": [ + { + "runnerPostId": 1, + "title": "제목", + "deadline": "마감기한", + "tags": ["java", "JAVA"], + "reviewStatus": "DONE" + }, + { + "runnerPostId": 2, + "title": "제목2", + "deadline": "마감기한2", + "tags": ["java", "자바"], + "reviewStatus": "NOT_STARTED" + }, + { + "runnerPostId": 3, + "title": "제목3", + "deadline": "마감기한3", + "tags": ["java", "자바"], + "reviewStatus": "NOT_STARTED" + } + ] +} diff --git a/frontend/src/mocks/handlers.ts b/frontend/src/mocks/handlers.ts index 359e59f37..276920123 100644 --- a/frontend/src/mocks/handlers.ts +++ b/frontend/src/mocks/handlers.ts @@ -2,6 +2,7 @@ import { rest } from 'msw'; import runnerPostList from './data/runnerPostList.json'; import runnerPostDetails from './data/runnerPostDetails.json'; import supporterCardList from './data/supporterCardList.json'; +import runnerProfile from './data/runnerProfile.json'; export const handlers = [ rest.post('*/posts/runner/test', async (req, res, ctx) => { @@ -42,4 +43,8 @@ export const handlers = [ return res(ctx.delay(300), ctx.status(201), ctx.set('Content-Type', 'application/json')); }), + + rest.get('*/profile/runner', async (req, res, ctx) => { + return res(ctx.status(200), ctx.set('Content-Type', 'application/json'), ctx.json(runnerProfile)); + }), ]; From e6b95740d86262a5e009dda8d6e9cdf091551009 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=83=81=EA=B7=9C?= Date: Wed, 2 Aug 2023 20:27:57 +0900 Subject: [PATCH 03/11] =?UTF-8?q?feat:=20MyPage=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/pages/MyPage.tsx | 200 ++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 frontend/src/pages/MyPage.tsx diff --git a/frontend/src/pages/MyPage.tsx b/frontend/src/pages/MyPage.tsx new file mode 100644 index 000000000..dde0c0f11 --- /dev/null +++ b/frontend/src/pages/MyPage.tsx @@ -0,0 +1,200 @@ +import ListFilter from '@/components/ListFilter'; +import ProfileRunnerPostItem from '@/components/Profile/ProfileRunnerPostItem/ProfileRunnerPostItem'; +import Avatar from '@/components/common/Avatar'; +import { BATON_BASE_URL } from '@/constants'; +import Layout from '@/layout/Layout'; +import { RunnerProfileResponse } from '@/types/profile'; +import { ReviewStatus } from '@/types/runnerPost'; +import { SelectOption } from '@/types/select'; +import React, { useEffect, useState } from 'react'; +import styled from 'styled-components'; + +type ReviewPostOptions = SelectOption[]; + +const reviewPostOptions: ReviewPostOptions = [ + { + value: 'NOT_STARTED', + label: '대기중인 리뷰', + selected: true, + }, + { + value: 'IN_PROGRESS', + label: '진행중인 리뷰', + selected: false, + }, + { + value: 'DONE', + label: '완료된 리뷰', + selected: false, + }, +]; + +const MyPage = () => { + const [runnerProfile, setRunnerProfile] = useState(null); + + const [postOptions, setPostOptions] = useState(reviewPostOptions); + + const [isRunner, setIsRunner] = useState(true); + + const getRunnerProfile = async () => { + try { + const response = await fetch(`${BATON_BASE_URL}/profile/runner`, { + method: 'GET', + }); + + if (!response.ok) { + throw new Error(`Error: ${response.status}`); + } + + const supporterCardList = await response.json(); + + return supporterCardList; + } catch (error) { + console.error(error); + } + }; + + useEffect(() => { + const fetchRunnerPost = async () => { + const result = await getRunnerProfile(); + setRunnerProfile(result); + }; + + fetchRunnerPost(); + }, []); + + const selectOptions = (value: string | number) => { + const selectedOptionIndex = postOptions.findIndex((option) => option.value === value); + if (selectedOptionIndex === -1) return; + + const newOptions = postOptions.map((option, index) => { + if (index === selectedOptionIndex) return { ...option, selected: true }; + return { ...option, selected: false }; + }); + + setPostOptions(newOptions); + }; + + const filterList = () => { + const posts = runnerProfile?.runnerPosts; + if (!posts) return; + + const selectedOption = postOptions.filter((option) => option.selected)[0]; + if (!selectedOption) return; + + const filteredPosts = posts.filter((post) => post.reviewStatus === selectedOption.value); + return filteredPosts; + }; + + const handleClickSupporterButton = () => { + alert('준비중인 기능입니다'); + }; + + return ( + + + + + + {runnerProfile?.profile.name} + {runnerProfile?.profile.introduction} + + + + 러너 + + 서포터 + + + + + + + + + {filterList()?.map((item) => ( + + ))} + + + + ); +}; + +export default MyPage; + +const S = { + ProfileContainer: styled.div` + padding: 50px; + border-bottom: 1px solid var(--gray-200); + `, + + InfoContainer: styled.div` + display: flex; + align-items: center; + gap: 20px; + + height: 175px; + `, + + IntroduceContainer: styled.div` + display: flex; + flex-direction: column; + gap: 10px; + + width: 300px; + `, + + Name: styled.div` + font-size: 26px; + font-weight: 700; + `, + + Introduce: styled.div` + font-size: 20px; + + white-space: no-wrap; + overflow: hidden; + text-overflow: ellipsis; + `, + + ButtonContainer: styled.div` + display: flex; + gap: 20px; + `, + + RunnerSupporterButton: styled.button<{ isSelected: boolean }>` + display: flex; + justify-content: center; + align-items: center; + + width: 220px; + height: 38px; + border-radius: 18px; + border: 1px solid ${({ isSelected }) => (isSelected ? 'white' : 'var(--baton-red)')}; + + background-color: ${({ isSelected }) => (isSelected ? 'var(--baton-red)' : 'white')}; + + color: ${({ isSelected }) => (isSelected ? 'white' : 'var(--baton-red)')}; + `, + + PostsContainer: styled.div` + display: flex; + flex-direction: column; + align-items: center; + `, + + ListContainer: styled.div` + display: flex; + flex-direction: column; + gap: 20px; + `, + + FilterWrapper: styled.div` + padding: 70px 20px; + `, +}; From c6916f1a7491febef867e061322ce48bab15dadb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=83=81=EA=B7=9C?= Date: Wed, 2 Aug 2023 20:28:19 +0900 Subject: [PATCH 04/11] =?UTF-8?q?feat:=20ProfileRunnerPostItem=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProfileRunnerPostItem.tsx | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 frontend/src/components/Profile/ProfileRunnerPostItem/ProfileRunnerPostItem.tsx diff --git a/frontend/src/components/Profile/ProfileRunnerPostItem/ProfileRunnerPostItem.tsx b/frontend/src/components/Profile/ProfileRunnerPostItem/ProfileRunnerPostItem.tsx new file mode 100644 index 000000000..78bdebde4 --- /dev/null +++ b/frontend/src/components/Profile/ProfileRunnerPostItem/ProfileRunnerPostItem.tsx @@ -0,0 +1,101 @@ +import Button from '@/components/common/Button'; +import Label from '@/components/common/Label'; +import { REVIEW_STATUS_LABEL_TEXT } from '@/constants'; +import { ProfileRunnerPost } from '@/types/profile'; +import React from 'react'; +import styled from 'styled-components'; + +interface Props extends ProfileRunnerPost {} + +const ProfileRunnerPostItem = ({ runnerPostId, title, deadline, reviewStatus, tags }: Props) => { + const handleClickFeedbackButton = () => { + alert('준비중인 기능입니다'); + }; + + return ( + + + {title} + + {deadline} 까지 + + + + {tags.map((tag, index) => ( + #{tag} + ))} + + + + {reviewStatus === 'DONE' ? ( + + ) : null} + + + ); +}; + +export default ProfileRunnerPostItem; + +const S = { + RunnerPostItemContainer: styled.li` + display: flex; + justify-content: space-between; + + width: 1200px; + height: 206px; + padding: 35px 40px; + + border: 0.5px solid var(--gray-500); + border-radius: 12px; + box-shadow: 1px 2px 3px rgba(0, 0, 0, 0.2); + + cursor: pointer; + `, + + PostTitle: styled.p` + margin-bottom: 15px; + + font-size: 28px; + font-weight: 700; + `, + + DeadLineContainer: styled.div` + display: flex; + align-items: baseline; + gap: 10px; + `, + + DeadLine: styled.p` + margin-bottom: 60px; + + color: var(--gray-600); + `, + + TagContainer: styled.div` + & span { + margin-right: 10px; + + font-size: 14px; + color: var(--gray-600); + } + `, + + LeftSideContainer: styled.div``, + + RightSideContainer: styled.div` + display: flex; + flex-direction: column; + justify-content: end; + `, +}; From dff04993e5de4bcde0c973bd14222eb67518ff97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=83=81=EA=B7=9C?= Date: Wed, 2 Aug 2023 20:28:40 +0900 Subject: [PATCH 05/11] =?UTF-8?q?feat:=20ListFilter=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/ListFilter.tsx | 76 ++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 frontend/src/components/ListFilter.tsx diff --git a/frontend/src/components/ListFilter.tsx b/frontend/src/components/ListFilter.tsx new file mode 100644 index 000000000..a3509cd85 --- /dev/null +++ b/frontend/src/components/ListFilter.tsx @@ -0,0 +1,76 @@ +import { ListSelectOption } from '@/types/select'; +import React from 'react'; +import styled, { css, keyframes } from 'styled-components'; + +interface Props { + options: ListSelectOption[]; + selectOption: (value: string | number) => void; + width?: string; +} + +const ListFilter = ({ options, selectOption, width }: Props) => { + const makeHandleClickOption = (value: string | number) => () => { + if (options.filter((option) => option.value === value).length === 0) return; + + selectOption(value); + }; + + return ( + + + {options.map((item) => ( + + {item.label} + + ))} + + + ); +}; + +export default ListFilter; + +const appear = keyframes` + 0% { + transform: scaleX(0); + } + 100% { + transform: scaleX(1); + } +`; + +const underLine = css` + content: ''; + margin-top: 5px; + height: 3px; + width: calc(100% + 10px); + background-color: var(--baton-red); + animation: 0.3s ease-in ${appear}; +`; + +const S = { + FilterContainer: styled.div``, + + FilterList: styled.ul<{ $width?: string }>` + display: flex; + justify-content: space-between; + + width: ${({ $width }) => $width ?? '920px'}; + `, + + FilterItem: styled.li<{ isSelected: boolean }>` + display: flex; + flex-direction: column; + align-items: center; + + font-size: 26px; + font-weight: 700; + color: ${({ isSelected }) => (isSelected ? 'var(--baton-red)' : 'var(--gray-700)')}; + + &::after { + ${({ isSelected }) => (isSelected ? underLine : null)} + } + + cursor: pointer; + `, +}; From e1fb1ab3bfbb3f3378ad547f7b611f65d9299086 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=83=81=EA=B7=9C?= Date: Wed, 2 Aug 2023 20:28:52 +0900 Subject: [PATCH 06/11] =?UTF-8?q?feat:=20=EB=A7=88=EC=9D=B4=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=9D=BC?= =?UTF-8?q?=EC=9A=B0=ED=8C=85=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/router.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/frontend/src/router.tsx b/frontend/src/router.tsx index f04371e34..4006d7405 100644 --- a/frontend/src/router.tsx +++ b/frontend/src/router.tsx @@ -6,12 +6,14 @@ import RunnerPostPage from './pages/RunnerPostDetailPage'; import RunnerPostCreatePage from './pages/RunnerPostCreatePage'; import LoginPage from './pages/LoginPage'; import CreationResultPage from './pages/CreationResultPage'; +import MyPage from './pages/MyPage'; export const ROUTER_PATH = { MAIN: '/', RUNNER_POST: '/runner-post/:runnerPostId', RUNNER_POST_CREATE: '/runner-post-create/', SUPPORTER_SELECT: '/supporter-select', + MY_PAGE: 'my-page', LOGIN: '/login', NOT_FOUND: '/*', RESULT: '/result', @@ -42,6 +44,10 @@ export const router = createBrowserRouter( path: ROUTER_PATH.RESULT, element: , }, + { + path: ROUTER_PATH.MY_PAGE, + element: , + }, ], }, ], From 817d2211b90139d5a1f0746b899d03e94680e6b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=83=81=EA=B7=9C?= Date: Wed, 2 Aug 2023 20:36:21 +0900 Subject: [PATCH 07/11] =?UTF-8?q?refactor:=20list=ED=83=9C=EA=B7=B8div?= =?UTF-8?q?=EC=97=90=EC=84=9Cul=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/pages/MyPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/MyPage.tsx b/frontend/src/pages/MyPage.tsx index dde0c0f11..537904fc0 100644 --- a/frontend/src/pages/MyPage.tsx +++ b/frontend/src/pages/MyPage.tsx @@ -188,7 +188,7 @@ const S = { align-items: center; `, - ListContainer: styled.div` + ListContainer: styled.li` display: flex; flex-direction: column; gap: 20px; From f1b4c9de7c9478201355e128ec72870726b68f9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=83=81=EA=B7=9C?= Date: Wed, 2 Aug 2023 22:17:56 +0900 Subject: [PATCH 08/11] =?UTF-8?q?fix=20:=20=ED=8E=98=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EC=83=81=EC=88=98=EC=97=90=20/=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/router.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/router.tsx b/frontend/src/router.tsx index 4006d7405..590bb4af0 100644 --- a/frontend/src/router.tsx +++ b/frontend/src/router.tsx @@ -13,7 +13,7 @@ export const ROUTER_PATH = { RUNNER_POST: '/runner-post/:runnerPostId', RUNNER_POST_CREATE: '/runner-post-create/', SUPPORTER_SELECT: '/supporter-select', - MY_PAGE: 'my-page', + MY_PAGE: '/my-page', LOGIN: '/login', NOT_FOUND: '/*', RESULT: '/result', From 8edb5e3a992f7ae52fdacdeb81ba76bb9bf8b4e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=83=81=EA=B7=9C?= Date: Thu, 3 Aug 2023 11:30:40 +0900 Subject: [PATCH 09/11] =?UTF-8?q?refactor:=20runnerProfile=20=ED=83=80?= =?UTF-8?q?=EC=9E=85=EB=AA=85=EC=97=90=20Get=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/pages/MyPage.tsx | 6 +++--- frontend/src/types/profile.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/pages/MyPage.tsx b/frontend/src/pages/MyPage.tsx index 537904fc0..bd5dd7eca 100644 --- a/frontend/src/pages/MyPage.tsx +++ b/frontend/src/pages/MyPage.tsx @@ -3,7 +3,7 @@ import ProfileRunnerPostItem from '@/components/Profile/ProfileRunnerPostItem/Pr import Avatar from '@/components/common/Avatar'; import { BATON_BASE_URL } from '@/constants'; import Layout from '@/layout/Layout'; -import { RunnerProfileResponse } from '@/types/profile'; +import { GetRunnerProfileResponse } from '@/types/profile'; import { ReviewStatus } from '@/types/runnerPost'; import { SelectOption } from '@/types/select'; import React, { useEffect, useState } from 'react'; @@ -30,7 +30,7 @@ const reviewPostOptions: ReviewPostOptions = [ ]; const MyPage = () => { - const [runnerProfile, setRunnerProfile] = useState(null); + const [runnerProfile, setRunnerProfile] = useState(null); const [postOptions, setPostOptions] = useState(reviewPostOptions); @@ -188,7 +188,7 @@ const S = { align-items: center; `, - ListContainer: styled.li` + ListContainer: styled.ul` display: flex; flex-direction: column; gap: 20px; diff --git a/frontend/src/types/profile.ts b/frontend/src/types/profile.ts index 1601d99a6..4ca479791 100644 --- a/frontend/src/types/profile.ts +++ b/frontend/src/types/profile.ts @@ -1,6 +1,6 @@ import { ReviewStatus } from './runnerPost'; -export interface RunnerProfileResponse { +export interface GetRunnerProfileResponse { profile: { name: string; imageUrl: string; From f8149a5af38a7d5b6a0d94234d1020223940a413 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=83=81=EA=B7=9C?= Date: Thu, 3 Aug 2023 11:32:35 +0900 Subject: [PATCH 10/11] =?UTF-8?q?refactor:=20Profile=20=ED=83=80=EC=9E=85?= =?UTF-8?q?=EC=9D=84=20=EB=94=B0=EB=A1=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/types/profile.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/frontend/src/types/profile.ts b/frontend/src/types/profile.ts index 4ca479791..e8df3999c 100644 --- a/frontend/src/types/profile.ts +++ b/frontend/src/types/profile.ts @@ -1,12 +1,7 @@ import { ReviewStatus } from './runnerPost'; export interface GetRunnerProfileResponse { - profile: { - name: string; - imageUrl: string; - githubUrl: string; - introduction: string; - }; + profile: Profile; runnerPosts: ProfileRunnerPost[]; } @@ -17,3 +12,10 @@ export interface ProfileRunnerPost { tags: string[]; reviewStatus: ReviewStatus; } + +export interface Profile { + name: string; + imageUrl: string; + githubUrl: string; + introduction: string; +} From 9674644498c0e22090c302c429906fbd384a6100 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=83=81=EA=B7=9C?= Date: Thu, 3 Aug 2023 11:33:54 +0900 Subject: [PATCH 11/11] =?UTF-8?q?refactor:=20iternator=20=EB=AA=85=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/ListFilter.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/ListFilter.tsx b/frontend/src/components/ListFilter.tsx index a3509cd85..672e7214e 100644 --- a/frontend/src/components/ListFilter.tsx +++ b/frontend/src/components/ListFilter.tsx @@ -18,9 +18,9 @@ const ListFilter = ({ options, selectOption, width }: Props) => { return ( - {options.map((item) => ( - - {item.label} + {options.map((option) => ( + + {option.label} ))}