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 (
{/* 헤더 */}
-
+
From 250d47ead87b0241baf07f89e97ca23be36515fb Mon Sep 17 00:00:00 2001
From: Awesome/Lee seung chul
Date: Wed, 19 Aug 2026 22:46:12 +0900
Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=EC=9E=91=ED=92=88=EA=B3=BC?=
=?UTF-8?q?=EC=A0=95=20=EC=82=AC=EC=A7=84=20=ED=99=95=EB=8C=80=20=EB=AA=A8?=
=?UTF-8?q?=EB=8B=AC=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../artworkdetailpage/ArtworkIntroTab.tsx | 27 ++++++++++++++-----
.../PersonalArtworkIntroTab.tsx | 25 +++++++++++++----
2 files changed, 41 insertions(+), 11 deletions(-)
diff --git a/src/components/artworkdetailpage/ArtworkIntroTab.tsx b/src/components/artworkdetailpage/ArtworkIntroTab.tsx
index cd32f3a..ffb3e2b 100644
--- a/src/components/artworkdetailpage/ArtworkIntroTab.tsx
+++ b/src/components/artworkdetailpage/ArtworkIntroTab.tsx
@@ -4,6 +4,7 @@ import { Bookmark, ChevronRight, ChevronUp } from 'lucide-react';
import { useNavigate } from 'react-router-dom';
import type { ArtworkCoAuthorDto } from '@/api/dto';
+import { ImageModal } from '@/components/common/ImageModal';
import { LoginConfirmModal } from '@/components/common/LoginConfirmModal';
import { OptimizedImage } from '@/components/common/OptimizedImage';
import { FALLBACK_PROFILE_IMAGE } from '@/constants';
@@ -121,6 +122,7 @@ export function ArtworkArtistRow({ userId, displayName }: ArtworkArtistRowProps)
}
export function ArtworkIntroTab({ artwork, artistUserId, coAuthors = [] }: Props) {
+ const [selectedImage, setSelectedImage] = useState(null);
const [isExpanded, setIsExpanded] = useState(false);
const [isContentClamped, setIsContentClamped] = useState(false);
const contentRef = useRef(null);
@@ -214,13 +216,20 @@ export function ArtworkIntroTab({ artwork, artistUserId, coAuthors = [] }: 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"
+ >
+
+
))}
@@ -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',
};