From 8d2634855a506c8007fba2f8c3fb784a829935a6 Mon Sep 17 00:00:00 2001 From: Awesome/Lee seung chul Date: Wed, 19 Aug 2026 22:38:16 +0900 Subject: [PATCH 1/4] =?UTF-8?q?refactor:=20=EC=A0=84=EC=8B=9C=EC=BD=98?= =?UTF-8?q?=ED=85=90=EC=B8=A0=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=95=95?= =?UTF-8?q?=EC=B6=95=EC=97=86=EC=9D=B4=20=EC=9B=90=EB=B3=B8=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/DisplayContentsPage.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pages/DisplayContentsPage.tsx b/src/pages/DisplayContentsPage.tsx index a23dd26..c81315a 100644 --- a/src/pages/DisplayContentsPage.tsx +++ b/src/pages/DisplayContentsPage.tsx @@ -58,7 +58,7 @@ export function DisplayContentsPage() { return (
{/* 헤더 */} -
+
))}
@@ -247,6 +256,12 @@ export function ArtworkIntroTab({ artwork, artistUserId, coAuthors = [] }: Props /> ))} + + setSelectedImage(null)} + /> ); } diff --git a/src/components/artworkdetailpage/PersonalArtworkIntroTab.tsx b/src/components/artworkdetailpage/PersonalArtworkIntroTab.tsx index 912372d..2086472 100644 --- a/src/components/artworkdetailpage/PersonalArtworkIntroTab.tsx +++ b/src/components/artworkdetailpage/PersonalArtworkIntroTab.tsx @@ -3,6 +3,7 @@ import { useEffect, useMemo, useRef, useState } from 'react'; import { ChevronRight, ChevronUp } from 'lucide-react'; import type { PersonalArtworkResponseDataDto } from '@/api/dto'; +import { ImageModal } from '@/components/common/ImageModal'; import { cn } from '@/utils/cn'; type Props = { @@ -10,6 +11,7 @@ type Props = { }; export function PersonalArtworkIntroTab({ artwork }: Props) { + const [selectedImage, setSelectedImage] = useState(null); const [isExpanded, setIsExpanded] = useState(false); const [isContentClamped, setIsContentClamped] = useState(false); const contentRef = useRef(null); @@ -95,12 +97,19 @@ export function PersonalArtworkIntroTab({ artwork }: Props) { style={{ scrollbarWidth: 'none' }} > {processImages.map((img, idx) => ( - {`작업과정 + type="button" + onClick={() => setSelectedImage(img.imageUrl)} + aria-label={`작업과정 ${idx + 1} 크게 보기`} + className="cursor-pointer focus:outline-none shrink-0" + > + {`작업과정 + ))} @@ -116,6 +125,12 @@ export function PersonalArtworkIntroTab({ artwork }: Props) {

)} + + setSelectedImage(null)} + /> ); } From 05f457f5f846211a97576e5e6555c4cc845d1107 Mon Sep 17 00:00:00 2001 From: Awesome/Lee seung chul Date: Wed, 19 Aug 2026 22:54:38 +0900 Subject: [PATCH 3/4] =?UTF-8?q?refactor:=20=EC=9E=91=ED=92=88=20=EB=AF=B8?= =?UTF-8?q?=EB=A6=AC=EB=B3=B4=EA=B8=B0=20=EC=9E=91=ED=92=88=EC=83=81?= =?UTF-8?q?=EC=84=B8=EC=97=90=EC=84=9C=20=EB=92=A4=EB=A1=9C=EA=B0=80?= =?UTF-8?q?=EA=B8=B0=ED=95=98=EB=A9=B4=20=ED=99=88=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EA=B0=80=EC=A7=80=EB=8A=94=20ux=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/Homepage.tsx | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/pages/Homepage.tsx b/src/pages/Homepage.tsx index a6cf677..7a6a68a 100644 --- a/src/pages/Homepage.tsx +++ b/src/pages/Homepage.tsx @@ -1,4 +1,4 @@ -import { useEffect, useState } from 'react'; +import { useEffect } from 'react'; import { useQueryClient } from '@tanstack/react-query'; import { Plus, Search } from 'lucide-react'; @@ -28,9 +28,9 @@ import { useAuthStore } from '@/stores/authStore'; import { hasPermission } from '@/utils/hasPermission'; export const Homepage = () => { - const [isArtworkPreviewOpen, setIsArtworkPreviewOpen] = useState(false); const navigate = useNavigate(); - const [searchParams] = useSearchParams(); + const [searchParams, setSearchParams] = useSearchParams(); + const isArtworkPreviewOpen = searchParams.get('view') === 'artwork-preview'; const accessToken = useAuthStore((state) => state.accessToken); const setAccessToken = useAuthStore((state) => state.setAccessToken); const { data: duPicksData } = useDuPicks(); @@ -96,7 +96,21 @@ export const Homepage = () => { }, [accessToken, setAccessToken]); if (isArtworkPreviewOpen) { - return setIsArtworkPreviewOpen(false)} />; + return ( + { + if (window.history.length > 1) { + navigate(-1); + } else { + setSearchParams((prev) => { + const next = new URLSearchParams(prev); + next.delete('view'); + return next; + }); + } + }} + /> + ); } return ( @@ -146,7 +160,13 @@ export const Homepage = () => { /> setIsArtworkPreviewOpen(true)} + onMoreClick={() => { + setSearchParams((prev) => { + const next = new URLSearchParams(prev); + next.set('view', 'artwork-preview'); + return next; + }); + }} /> From b8ad80f4e671f2fb3dd2ebc0b08e370bf8299fc2 Mon Sep 17 00:00:00 2001 From: Awesome/Lee seung chul Date: Wed, 19 Aug 2026 23:30:16 +0900 Subject: [PATCH 4/4] =?UTF-8?q?refactor:=20=EC=A0=84=EC=8B=9C=EB=B6=84?= =?UTF-8?q?=EC=95=BD=20=EB=B3=B5=ED=95=A9=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/constants/exhibition.ts | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/constants/exhibition.ts b/src/constants/exhibition.ts index 8e0e650..b80b1bd 100644 --- a/src/constants/exhibition.ts +++ b/src/constants/exhibition.ts @@ -19,7 +19,6 @@ export const EXHIBITION_FIELDS = [ 'FASHION', 'ILLUSTRATION', 'CRAFT', - 'COMPLEX', 'ETC', ] as const; @@ -61,7 +60,7 @@ export const DISPLAY_TYPE_REVERSE_MAP: Record = { /* * 전시 등록은 작가 활동분야와 다른 enum을 씁니다. * 영상은 MEDIA로 보내야 하고 ILLUSTRATION은 서버에 없어 DESIGN으로 대체합니다. - * (서버 enum: PAINTING·DESIGN·PHOTOGRAPHY·ARCHITECTURE·MEDIA·CRAFT·SCULPTURE·FASHION·COMPLEX·ETC) + * (서버 enum: PAINTING·DESIGN·PHOTOGRAPHY·ARCHITECTURE·MEDIA·CRAFT·SCULPTURE·FASHION·ETC) */ export const DISPLAY_FIELD_MAP: Record = { PAINTING: 'PAINTING', @@ -73,7 +72,6 @@ export const DISPLAY_FIELD_MAP: Record = { FASHION: 'FASHION', ILLUSTRATION: 'DESIGN', CRAFT: 'CRAFT', - COMPLEX: 'COMPLEX', ETC: 'ETC', } satisfies Record; @@ -90,7 +88,6 @@ export const DISPLAY_FIELD_REVERSE_MAP: Record = { ILLUSTRATION: 'ILLUSTRATION', CRAFT: 'CRAFT', CRAFTS: 'CRAFT', - COMPLEX: 'COMPLEX', ETC: 'ETC', OTHERS: 'ETC', }; @@ -105,7 +102,6 @@ export type ArtistFieldCode = | 'SCULPTURE' | 'FASHION' | 'ILLUSTRATION' - | 'COMPLEX' | 'ETC'; export const ARTIST_FIELD_MAP: Record = { @@ -118,7 +114,6 @@ export const ARTIST_FIELD_MAP: Record = { FASHION: 'FASHION', ILLUSTRATION: 'ILLUSTRATION', CRAFT: 'CRAFT', - COMPLEX: 'COMPLEX', ETC: 'ETC', }; @@ -132,7 +127,6 @@ export const EXHIBITION_FIELD_LABELS: Record = { SCULPTURE: '조소', FASHION: '패션', ILLUSTRATION: '일러스트', - COMPLEX: '복합', ETC: '기타', }; @@ -146,7 +140,6 @@ export const ARTIST_FIELD_REVERSE_MAP: Record SCULPTURE: 'SCULPTURE', FASHION: 'FASHION', ILLUSTRATION: 'ILLUSTRATION', - COMPLEX: 'COMPLEX', ETC: 'ETC', };