From 01d8787eafba8158cc1ac483f9b1a6a4fbfadc13 Mon Sep 17 00:00:00 2001 From: Jung Sun A Date: Mon, 26 Oct 2026 17:55:35 +0900 Subject: [PATCH 1/4] =?UTF-8?q?refactor:=20=EC=9C=84=EC=8B=9C=203=EC=97=B4?= =?UTF-8?q?=20=EA=B7=B8=EB=A6=AC=EB=93=9C=C2=B7=EC=B9=B4=EB=93=9C=20compon?= =?UTF-8?q?ents/common=20=EC=9D=B4=EA=B4=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - WishGrid·WishCard 를 app/wish/_common 에서 components/common/wish-grid 로 이동 - 원인: 토너먼트 위시 가져오기 화면과 공유 (#727 결정 사항 2번) - WishListItemT 를 src/types/wish.ts 로 이동 - 원인: 공용 컴포넌트가 app 라우트 타입 참조 금지 - 위시 화면 import 경로만 갱신 --- apps/web/src/app/wish/_common/_consts/wishMock.ts | 3 ++- apps/web/src/app/wish/_common/_types/wish.ts | 11 ----------- .../src/app/wish/_components/AllWishTabContent.tsx | 3 ++- apps/web/src/app/wish/_components/WishSearch.tsx | 5 ++--- apps/web/src/app/wish/_types/wishTab.ts | 4 +++- .../[folderId]/_components/FolderDetailContent.tsx | 2 +- .../add/_components/FolderWishSelectContent.tsx | 2 +- .../common/wish-grid}/WishCard.tsx | 0 .../common/wish-grid/index.tsx} | 2 +- apps/web/src/types/wish.ts | 8 ++++++++ 10 files changed, 20 insertions(+), 20 deletions(-) rename apps/web/src/{app/wish/_common/_components => components/common/wish-grid}/WishCard.tsx (100%) rename apps/web/src/{app/wish/_common/_components/WishGrid.tsx => components/common/wish-grid/index.tsx} (97%) diff --git a/apps/web/src/app/wish/_common/_consts/wishMock.ts b/apps/web/src/app/wish/_common/_consts/wishMock.ts index 6e25393b..a403e5bd 100644 --- a/apps/web/src/app/wish/_common/_consts/wishMock.ts +++ b/apps/web/src/app/wish/_common/_consts/wishMock.ts @@ -1,6 +1,7 @@ import { ITEM_STATUS } from '@/consts/item'; +import type { WishListItemT } from '@/types/wish'; -import type { WishFolderT, WishListItemT } from '../_types/wish'; +import type { WishFolderT } from '../_types/wish'; // TEMP: API 연동 시 public/mock/wish 이미지와 함께 제거 const MOCK_IMAGE_URLS = [1, 2, 3, 4, 5, 6].map(index => `/mock/wish/wish-${index}.jpg`); diff --git a/apps/web/src/app/wish/_common/_types/wish.ts b/apps/web/src/app/wish/_common/_types/wish.ts index 7c36300a..05a53b16 100644 --- a/apps/web/src/app/wish/_common/_types/wish.ts +++ b/apps/web/src/app/wish/_common/_types/wish.ts @@ -1,14 +1,3 @@ -import type { ItemT } from '@/types/item'; -import type { GetWishlistResponseT } from '@/types/wish'; - -// TODO: API 연동 시 GetWishlistResponseT 로 교체 — discountRate 는 아직 API 에 없음 -export type WishListItemT = Omit & { - item: ItemT & { - /** 할인율(%) — 할인이 없으면 null */ - discountRate: number | null; - }; -}; - // TEMP: API 연동 시 응답 타입으로 교체 export type WishFolderT = { id: number; diff --git a/apps/web/src/app/wish/_components/AllWishTabContent.tsx b/apps/web/src/app/wish/_components/AllWishTabContent.tsx index 8a494890..29ca62b3 100644 --- a/apps/web/src/app/wish/_components/AllWishTabContent.tsx +++ b/apps/web/src/app/wish/_components/AllWishTabContent.tsx @@ -1,4 +1,5 @@ -import WishGrid from '../_common/_components/WishGrid'; +import WishGrid from '@/components/common/wish-grid'; + import type { AllWishTabContentProps } from '../_types/wishTab'; import WishAddCard from './WishAddCard'; diff --git a/apps/web/src/app/wish/_components/WishSearch.tsx b/apps/web/src/app/wish/_components/WishSearch.tsx index 67e8bbfa..be4068ec 100644 --- a/apps/web/src/app/wish/_components/WishSearch.tsx +++ b/apps/web/src/app/wish/_components/WishSearch.tsx @@ -4,14 +4,13 @@ import { type FormEvent, useRef, useState } from 'react'; import { ChevronBackwardIconFill, CloseCircularIconFill } from '@/assets/icons'; import BasketGuestIcon from '@/assets/images/basket-guest.svg'; +import WishGrid from '@/components/common/wish-grid'; import { Dialog, DialogContent, DialogDescription, DialogTitle } from '@/components/dialog'; import { Header } from '@/components/header'; import Input from '@/components/input'; +import type { WishListItemT } from '@/types/wish'; import { cn } from '@/utils/cn'; -import WishGrid from '../_common/_components/WishGrid'; -import type { WishListItemT } from '../_common/_types/wish'; - type WishSearchProps = { wishes: WishListItemT[]; onClose: () => void; diff --git a/apps/web/src/app/wish/_types/wishTab.ts b/apps/web/src/app/wish/_types/wishTab.ts index fb7775ab..847331cb 100644 --- a/apps/web/src/app/wish/_types/wishTab.ts +++ b/apps/web/src/app/wish/_types/wishTab.ts @@ -1,4 +1,6 @@ -import type { WishFolderT, WishListItemT } from '../_common/_types/wish'; +import type { WishListItemT } from '@/types/wish'; + +import type { WishFolderT } from '../_common/_types/wish'; import type { WISH_TAB } from '../_consts/wishTab'; export type WishTabT = (typeof WISH_TAB)[keyof typeof WISH_TAB]; diff --git a/apps/web/src/app/wish/folder/[folderId]/_components/FolderDetailContent.tsx b/apps/web/src/app/wish/folder/[folderId]/_components/FolderDetailContent.tsx index 6eaae9fc..4ec6d508 100644 --- a/apps/web/src/app/wish/folder/[folderId]/_components/FolderDetailContent.tsx +++ b/apps/web/src/app/wish/folder/[folderId]/_components/FolderDetailContent.tsx @@ -5,6 +5,7 @@ import { useEffect, useState } from 'react'; import { toast } from 'sonner'; import { ChevronBackwardIconFill } from '@/assets/icons'; +import WishGrid from '@/components/common/wish-grid'; import { Header } from '@/components/header'; import Spacing from '@/components/spacing'; import { ROUTES } from '@/consts/route'; @@ -13,7 +14,6 @@ import { useBackWithFallback } from '@/hooks/useBackWithFallback'; import WishEditActionBar from '../../../_common/_components/WishEditActionBar'; import WishEditHeader from '../../../_common/_components/WishEditHeader'; -import WishGrid from '../../../_common/_components/WishGrid'; import { MOCK_FOLDERS, MOCK_WISHES } from '../../../_common/_consts/wishMock'; import { WISH_MODE } from '../../../_common/_consts/wishMode'; import { useWishEditMode } from '../../../_common/_hooks/useWishEditMode'; diff --git a/apps/web/src/app/wish/folder/[folderId]/add/_components/FolderWishSelectContent.tsx b/apps/web/src/app/wish/folder/[folderId]/add/_components/FolderWishSelectContent.tsx index 1b4e11ad..095e8365 100644 --- a/apps/web/src/app/wish/folder/[folderId]/add/_components/FolderWishSelectContent.tsx +++ b/apps/web/src/app/wish/folder/[folderId]/add/_components/FolderWishSelectContent.tsx @@ -7,12 +7,12 @@ import { toast } from 'sonner'; import { CloseIconFill } from '@/assets/icons'; import BottomCta from '@/components/bottom-cta'; import Button from '@/components/button'; +import WishGrid from '@/components/common/wish-grid'; import { Header } from '@/components/header'; import { ROUTES } from '@/consts/route'; import { Z_INDEX } from '@/consts/zIndex'; import { useBackWithFallback } from '@/hooks/useBackWithFallback'; -import WishGrid from '../../../../_common/_components/WishGrid'; import { MOCK_FOLDERS, MOCK_WISHES } from '../../../../_common/_consts/wishMock'; import { useWishEditMode } from '../../../../_common/_hooks/useWishEditMode'; diff --git a/apps/web/src/app/wish/_common/_components/WishCard.tsx b/apps/web/src/components/common/wish-grid/WishCard.tsx similarity index 100% rename from apps/web/src/app/wish/_common/_components/WishCard.tsx rename to apps/web/src/components/common/wish-grid/WishCard.tsx diff --git a/apps/web/src/app/wish/_common/_components/WishGrid.tsx b/apps/web/src/components/common/wish-grid/index.tsx similarity index 97% rename from apps/web/src/app/wish/_common/_components/WishGrid.tsx rename to apps/web/src/components/common/wish-grid/index.tsx index e4dd74c2..69c46a80 100644 --- a/apps/web/src/app/wish/_common/_components/WishGrid.tsx +++ b/apps/web/src/components/common/wish-grid/index.tsx @@ -2,8 +2,8 @@ import type { ReactNode } from 'react'; import { CheckboxEmptyIconFill, CheckboxSelectedIconFill } from '@/assets/icons'; import { Z_INDEX } from '@/consts/zIndex'; +import type { WishListItemT } from '@/types/wish'; -import type { WishListItemT } from '../_types/wish'; import WishCard from './WishCard'; type WishGridProps = { diff --git a/apps/web/src/types/wish.ts b/apps/web/src/types/wish.ts index 96b1389e..079ea20d 100644 --- a/apps/web/src/types/wish.ts +++ b/apps/web/src/types/wish.ts @@ -27,6 +27,14 @@ export type GetWishlistResponseT = { winnerTournamentIds: number[]; }; +// TODO: API 연동 시 GetWishlistResponseT 로 교체 — discountRate 는 아직 API 에 없음 +export type WishListItemT = Omit & { + item: ItemT & { + /** 할인율(%) — 할인이 없으면 null */ + discountRate: number | null; + }; +}; + export type PostWishLinkResponseT = { wish: WishT; item: ItemT; From c65ef594d6300f32f13490875bfc526a33a3cac5 Mon Sep 17 00:00:00 2001 From: Jung Sun A Date: Mon, 26 Oct 2026 17:55:35 +0900 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=ED=86=A0=EB=84=88=EB=A8=BC?= =?UTF-8?q?=ED=8A=B8=20=EC=9C=84=EC=8B=9C=20=EA=B0=80=EC=A0=B8=EC=98=A4?= =?UTF-8?q?=EA=B8=B0=20=EC=9E=84=EC=8B=9C=20=EA=B2=BD=EB=A1=9C=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 - /tournament/[id]/create/by-wish-v2 경로 상수 추가 - AUTHORIZED 라우트 패턴에 by-wish-v2 추가 - 원인: 미등록 경로는 권한 타입 null - 폴더 칩 작업 완료 후 by-wish 로 통합 예정 - 원인: production 의 by-wish 화면에 목 데이터 노출 방지 --- apps/web/src/consts/route.ts | 3 +++ apps/web/src/utils/getRouteType.test.ts | 1 + apps/web/src/utils/getRouteType.ts | 3 ++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/web/src/consts/route.ts b/apps/web/src/consts/route.ts index 231aff35..3b751f97 100644 --- a/apps/web/src/consts/route.ts +++ b/apps/web/src/consts/route.ts @@ -38,6 +38,9 @@ export const ROUTES = { : `/tournament/${tournamentId}/create`, TOURNAMENT_ADD_ITEM_BY_WISH: (tournamentId: number) => `/tournament/${tournamentId}/create/by-wish`, + /** TEMP: 폴더 칩 작업 완료 후 TOURNAMENT_ADD_ITEM_BY_WISH 로 합침 */ + TOURNAMENT_ADD_ITEM_BY_WISH_V2: (tournamentId: number) => + `/tournament/${tournamentId}/create/by-wish-v2`, TOURNAMENT_ITEM_EDIT: (tournamentId: number, itemId: number) => `/tournament/${tournamentId}/item/${itemId}`, TOURNAMENT_LOADING: (tournamentId: number) => `/tournament/${tournamentId}/loading`, diff --git a/apps/web/src/utils/getRouteType.test.ts b/apps/web/src/utils/getRouteType.test.ts index f03ab0b0..1b836056 100644 --- a/apps/web/src/utils/getRouteType.test.ts +++ b/apps/web/src/utils/getRouteType.test.ts @@ -40,6 +40,7 @@ describe('getRouteType', () => { it('선택 하위 세그먼트는 정해진 것만 붙는다', () => { expect(getRouteType('/tournament/1/create')).toBe('AUTHORIZED'); expect(getRouteType('/tournament/1/create/by-wish')).toBe('AUTHORIZED'); + expect(getRouteType('/tournament/1/create/by-wish-v2')).toBe('AUTHORIZED'); expect(getRouteType('/tournament/1/create/other')).toBeNull(); expect(getRouteType('/tournament/1/result')).toBe('AUTHORIZED'); diff --git a/apps/web/src/utils/getRouteType.ts b/apps/web/src/utils/getRouteType.ts index 1f065551..432f9942 100644 --- a/apps/web/src/utils/getRouteType.ts +++ b/apps/web/src/utils/getRouteType.ts @@ -3,7 +3,8 @@ import type { RouteTypeT } from '@/types/route'; /** 토너먼트 참여 권한이 필요한 동적 라우트 패턴 */ const AUTHORIZED_ROUTE_PATTERNS = [ - /^\/tournament\/[^/]+\/create(?:\/by-wish)?$/, + /** TEMP: by-wish-v2 는 폴더 칩 작업용 */ + /^\/tournament\/[^/]+\/create(?:\/by-wish(?:-v2)?)?$/, /^\/tournament\/[^/]+\/item\/[^/]+$/, /^\/tournament\/[^/]+\/loading$/, /^\/tournament\/[^/]+\/match$/, From 35c1ec73d9bbe9e75b4e31261d7b269a0abe05d1 Mon Sep 17 00:00:00 2001 From: Jung Sun A Date: Mon, 26 Oct 2026 17:55:35 +0900 Subject: [PATCH 3/4] =?UTF-8?q?feat:=20=ED=86=A0=EB=84=88=EB=A8=BC?= =?UTF-8?q?=ED=8A=B8=20=EC=9C=84=EC=8B=9C=20=EA=B0=80=EC=A0=B8=EC=98=A4?= =?UTF-8?q?=EA=B8=B0=20=ED=8F=B4=EB=8D=94=20=EC=B9=A9=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 위시 목록 위에 전체·폴더 칩 추가 - 칩 전환 시 선택 유지 - 폴더 0개면 칩 영역 숨김 - 위시 목록을 위시 화면과 같은 3열 그리드로 교체 - 카운터를 N/담을 수 있는 개수 선택으로 표시 - 담을 수 있는 개수: 32 에서 토너먼트에 담긴 수 차감 - 다른 참여자가 담으면 SSE 갱신으로 분모 감소 - 선택 수가 분모 초과 시 다음 버튼 비활성 - 한도 초과 클릭 시 토스트에 고정 id 부여 - 결과: 연타해도 토스트 1개 유지 - 위시 없음 모달을 시안 전용 컴포넌트로 추가 - 대안: TournamentErrorDialog 재사용 - 기각: 타이포·간격·문구가 시안과 다름 - 위시·폴더는 목 데이터 사용 - 원인: 위시·폴더 API 응답 형식 변경 예정 - 다음 버튼은 담기 API 대신 만들기 화면으로 복귀 - production 에서 notFound 처리 --- .../_components/ByWishV2Content.tsx | 99 +++++++++++++++++++ .../_components/FolderChipFilter.tsx | 42 ++++++++ .../by-wish-v2/_components/NoWishDialog.tsx | 52 ++++++++++ .../[id]/create/by-wish-v2/page.tsx | 33 +++++++ 4 files changed, 226 insertions(+) create mode 100644 apps/web/src/app/tournament/[id]/create/by-wish-v2/_components/ByWishV2Content.tsx create mode 100644 apps/web/src/app/tournament/[id]/create/by-wish-v2/_components/FolderChipFilter.tsx create mode 100644 apps/web/src/app/tournament/[id]/create/by-wish-v2/_components/NoWishDialog.tsx create mode 100644 apps/web/src/app/tournament/[id]/create/by-wish-v2/page.tsx diff --git a/apps/web/src/app/tournament/[id]/create/by-wish-v2/_components/ByWishV2Content.tsx b/apps/web/src/app/tournament/[id]/create/by-wish-v2/_components/ByWishV2Content.tsx new file mode 100644 index 00000000..0638a4ed --- /dev/null +++ b/apps/web/src/app/tournament/[id]/create/by-wish-v2/_components/ByWishV2Content.tsx @@ -0,0 +1,99 @@ +'use client'; + +import { useState } from 'react'; +import { toast } from 'sonner'; + +import { MOCK_FOLDERS, MOCK_WISHES } from '@/app/wish/_common/_consts/wishMock'; +import BottomCta from '@/components/bottom-cta'; +import Button from '@/components/button'; +import WishGrid from '@/components/common/wish-grid'; +import { ROUTES } from '@/consts/route'; +import { useBackWithFallback } from '@/hooks/useBackWithFallback'; + +import { useGetTournament } from '../../../_common/_hooks/useGetTournament'; +import { MAX_SELECT } from '../../by-wish/_consts/selectLimits'; +import FolderChipFilter from './FolderChipFilter'; +import NoWishDialog from './NoWishDialog'; + +type ByWishV2ContentProps = { + tournamentId: number; +}; + +function ByWishV2Content({ tournamentId }: ByWishV2ContentProps) { + const backWithFallback = useBackWithFallback(); + const [activeFolderId, setActiveFolderId] = useState(null); + const [selectedWishIds, setSelectedWishIds] = useState>(new Set()); + const { tournamentData } = useGetTournament(tournamentId); + + const pending = 'pending' in tournamentData ? tournamentData.pending : null; + const addableCount = Math.max(MAX_SELECT - (pending?.items.length ?? 0), 0); + const isOverSelectionLimit = selectedWishIds.size > addableCount; + + /** TEMP: 위시·폴더 API 연동 전까지 목 데이터 사용함 */ + const items = MOCK_WISHES; + const folders = MOCK_FOLDERS; + const activeFolder = folders.find(({ id }) => id === activeFolderId); + const visibleItems = activeFolder + ? items.filter(({ wish }) => activeFolder.wishIds.includes(wish.id)) + : items; + + const hasNoWish = items.length === 0; + + const handleToggleSelect = (wishId: number) => { + const isSelected = selectedWishIds.has(wishId); + if (!isSelected && selectedWishIds.size >= addableCount) { + toast.warning(`최대 ${addableCount}개까지 상품을 담을 수 있어요.`, { id: 'max-select' }); + return; + } + + setSelectedWishIds(prev => { + const next = new Set(prev); + if (isSelected) next.delete(wishId); + else next.add(wishId); + return next; + }); + }; + + const handleBackToCreate = () => backWithFallback(ROUTES.TOURNAMENT_CREATE(tournamentId)); + + if (hasNoWish) return ; + + return ( + <> +
+ {folders.length > 0 && ( + + )} +

+ {selectedWishIds.size}/{addableCount}개 선택 +

+
+ +
+ +
+ + + + + + ); +} + +export default ByWishV2Content; diff --git a/apps/web/src/app/tournament/[id]/create/by-wish-v2/_components/FolderChipFilter.tsx b/apps/web/src/app/tournament/[id]/create/by-wish-v2/_components/FolderChipFilter.tsx new file mode 100644 index 00000000..e12e1eb6 --- /dev/null +++ b/apps/web/src/app/tournament/[id]/create/by-wish-v2/_components/FolderChipFilter.tsx @@ -0,0 +1,42 @@ +import { cn } from '@/utils/cn'; + +type FolderChipFilterProps = { + folders: { id: number; name: string }[]; + activeFolderId: number | null; + onFolderChange: (folderId: number | null) => void; +}; + +function FolderChipFilter({ folders, activeFolderId, onFolderChange }: FolderChipFilterProps) { + const chips = [{ id: null, name: '전체' }, ...folders]; + + return ( +
+ {chips.map(({ id, name }) => { + const isActive = activeFolderId === id; + + return ( + + ); + })} +
+ ); +} + +export default FolderChipFilter; diff --git a/apps/web/src/app/tournament/[id]/create/by-wish-v2/_components/NoWishDialog.tsx b/apps/web/src/app/tournament/[id]/create/by-wish-v2/_components/NoWishDialog.tsx new file mode 100644 index 00000000..c3a68fcb --- /dev/null +++ b/apps/web/src/app/tournament/[id]/create/by-wish-v2/_components/NoWishDialog.tsx @@ -0,0 +1,52 @@ +import { InboxIconFill } from '@/assets/icons'; +import Button from '@/components/button'; +import ButtonLink from '@/components/button/ButtonLink'; +import { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogTitle, +} from '@/components/dialog'; +import { ROUTES } from '@/consts/route'; + +type NoWishDialogProps = { + onBack: () => void; +}; + +function NoWishDialog({ onBack }: NoWishDialogProps) { + return ( + + +
+ +
+ + 가져올 위시가 없어요. + + + 위시를 먼저 추가해 주세요. + +
+
+ + + + + 위시 담기 + + + +
+
+ ); +} + +export default NoWishDialog; diff --git a/apps/web/src/app/tournament/[id]/create/by-wish-v2/page.tsx b/apps/web/src/app/tournament/[id]/create/by-wish-v2/page.tsx new file mode 100644 index 00000000..811595c6 --- /dev/null +++ b/apps/web/src/app/tournament/[id]/create/by-wish-v2/page.tsx @@ -0,0 +1,33 @@ +import { notFound } from 'next/navigation'; + +import { Header, HeaderIcon } from '@/components/header'; + +import ByWishV2Content from './_components/ByWishV2Content'; + +type ByWishV2PageProps = { + params: Promise<{ id: string }>; +}; + +/** TEMP: 폴더 칩 작업용 임시 경로. 완료 후 by-wish 로 합치고 삭제함 */ +async function ByWishV2Page({ params }: ByWishV2PageProps) { + if (process.env.NEXT_PUBLIC_STAGE === 'production') notFound(); + + const { id } = await params; + const tournamentId = Number(id); + + return ( +
+
+
} + center={ +

내 위시에서 가져오기

+ } + /> +
+ +
+ ); +} + +export default ByWishV2Page; From 907b0d707b4178b3f34e8b0e7ad9d434fae15a28 Mon Sep 17 00:00:00 2001 From: Jung Sun A Date: Tue, 27 Oct 2026 10:22:14 +0900 Subject: [PATCH 4/4] =?UTF-8?q?fix:=20=EC=9C=84=EC=8B=9C=20=EA=B0=80?= =?UTF-8?q?=EC=A0=B8=EC=98=A4=EA=B8=B0=20=ED=97=A4=EB=8D=94=20=EC=95=84?= =?UTF-8?q?=EB=9E=98=20=EB=B0=B0=EA=B2=BD=20=EB=B6=84=EB=A6=AC=20=ED=95=B4?= =?UTF-8?q?=EC=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 페이지 배경을 흰색으로 바꾸고 회색은 위시 그리드 영역에만 둠 - 원인: 위시 없음 모달 상태에서 칩·카운터 영역이 없어 헤더 바로 아래 회색 배경이 드러남 --- .../[id]/create/by-wish-v2/_components/ByWishV2Content.tsx | 2 +- apps/web/src/app/tournament/[id]/create/by-wish-v2/page.tsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/web/src/app/tournament/[id]/create/by-wish-v2/_components/ByWishV2Content.tsx b/apps/web/src/app/tournament/[id]/create/by-wish-v2/_components/ByWishV2Content.tsx index 0638a4ed..d942a5b3 100644 --- a/apps/web/src/app/tournament/[id]/create/by-wish-v2/_components/ByWishV2Content.tsx +++ b/apps/web/src/app/tournament/[id]/create/by-wish-v2/_components/ByWishV2Content.tsx @@ -73,7 +73,7 @@ function ByWishV2Content({ tournamentId }: ByWishV2ContentProps) {

-
+
-
+
+
} center={