From ae7f94d7d6dc4e3b88e02d9df4d9089e851507dc Mon Sep 17 00:00:00 2001
From: Yejiin21 <101397075+Yejiin21@users.noreply.github.com>
Date: Mon, 7 Jul 2025 00:25:39 +0900
Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=EC=98=A8=EB=9D=BC=EC=9D=B8=20?=
=?UTF-8?q?=ED=96=89=EC=82=AC=20=ED=83=80=EC=9E=85=EC=97=90=EB=8F=84=20?=
=?UTF-8?q?=EC=A7=80=EB=8F=84=20=EB=B3=B4=EC=9D=B4=EB=8A=94=20=EC=97=90?=
=?UTF-8?q?=EB=9F=AC=20=ED=95=B4=EA=B2=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/event/ui/EventDetailsPage.tsx | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/src/pages/event/ui/EventDetailsPage.tsx b/src/pages/event/ui/EventDetailsPage.tsx
index a0598122..05068a53 100644
--- a/src/pages/event/ui/EventDetailsPage.tsx
+++ b/src/pages/event/ui/EventDetailsPage.tsx
@@ -18,7 +18,7 @@ import { useCreateBookmark, useDeleteBookmark } from '../../../features/bookmark
import { formatDate, formatTime } from '../../../shared/lib/date';
import { useEventDetail } from '../../../entities/event/hook/useEventHook';
import useAuthStore from '../../../app/provider/authStore';
-import HomeButton from '../../../../public/assets/bottomBar/HomeIcon.svg'
+import HomeButton from '../../../../public/assets/bottomBar/HomeIcon.svg';
const EventDetailsPage = () => {
const navigate = useNavigate();
const [title, setTitle] = useState('');
@@ -115,12 +115,14 @@ const EventDetailsPage = () => {
/>
- {event.result.locationLat !== 0.0 && event.result.locationLng !== 0.0 && (
- <>
-
위치
-
- >
- )}
+ {event.result.onlineType !== 'ONLINE' &&
+ event.result.locationLat !== 0.0 &&
+ event.result.locationLng !== 0.0 && (
+ <>
+ 위치
+
+ >
+ )}
Date: Mon, 7 Jul 2025 00:48:57 +0900
Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=EB=B9=84=EB=A1=9C=EA=B7=B8?=
=?UTF-8?q?=EC=9D=B8=20=EC=8B=9C=20=EB=A7=88=EC=9D=B4=ED=8E=98=EC=9D=B4?=
=?UTF-8?q?=EC=A7=80=20=EC=A0=91=EA=B7=BC=20=EC=B0=A8=EB=8B=A8=20=EB=B0=8F?=
=?UTF-8?q?=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=9C=A0=EB=8F=84=20=EA=B8=B0?=
=?UTF-8?q?=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
---
.../buttons/SecondaryButton.stories.tsx | 18 ++-
design-system/ui/buttons/SecondaryButton.tsx | 4 +-
public/assets/bottomBar/Lock.svg | 3 +
src/pages/home/ui/MainPage.tsx | 7 +-
src/pages/menu/ui/MyPage.tsx | 122 +++++++++++-------
5 files changed, 99 insertions(+), 55 deletions(-)
create mode 100644 public/assets/bottomBar/Lock.svg
diff --git a/design-system/stories/buttons/SecondaryButton.stories.tsx b/design-system/stories/buttons/SecondaryButton.stories.tsx
index 81911282..8532d5a4 100644
--- a/design-system/stories/buttons/SecondaryButton.stories.tsx
+++ b/design-system/stories/buttons/SecondaryButton.stories.tsx
@@ -25,7 +25,7 @@ const meta = {
},
size: {
control: 'radio',
- options: ['large', 'small'],
+ options: ['full', 'large', 'small'],
description: '버튼 크기',
defaultValue: 'large',
},
@@ -46,6 +46,14 @@ export const Default: Story = {
},
};
+export const FullPink: Story = {
+ args: {
+ label: 'Full Button',
+ color: 'pink',
+ size: 'full',
+ },
+};
+
export const SmallPink: Story = {
args: {
label: '작은 버튼',
@@ -62,6 +70,14 @@ export const BigBlack: Story = {
},
};
+export const FullBlack: Story = {
+ args: {
+ label: 'Full Button',
+ color: 'black',
+ size: 'full',
+ },
+};
+
export const SmallBlack: Story = {
args: {
label: '작은 검은 버튼',
diff --git a/design-system/ui/buttons/SecondaryButton.tsx b/design-system/ui/buttons/SecondaryButton.tsx
index e5e9db3d..e413ae24 100644
--- a/design-system/ui/buttons/SecondaryButton.tsx
+++ b/design-system/ui/buttons/SecondaryButton.tsx
@@ -1,7 +1,7 @@
interface SecondaryButtonProps {
label: string;
color: 'pink' | 'black';
- size: 'small' | 'large';
+ size: 'small' | 'large' | 'full';
onClick?: () => void;
className?: string;
}
@@ -14,6 +14,8 @@ const SecondaryButton = ({ label, color, size, onClick, className }: SecondaryBu
? `text-sm sm:px-3 sm:py-2 sm:text-xs sm:rounded
md:px-3.5 md:py-2.5 md:text-sm md:rounded-md
lg:px-4 lg:py-2.5 lg:text-base lg:rounded-md`
+ : size === 'full'
+ ? `w-full text-sm px-4 py-2 rounded-md`
: `px-2 py-1 text-xs`;
const colorStyle = color === 'pink' ? 'bg-main' : 'bg-black';
diff --git a/public/assets/bottomBar/Lock.svg b/public/assets/bottomBar/Lock.svg
new file mode 100644
index 00000000..c62a1ae7
--- /dev/null
+++ b/public/assets/bottomBar/Lock.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/pages/home/ui/MainPage.tsx b/src/pages/home/ui/MainPage.tsx
index 8fd84184..ad18d8c0 100644
--- a/src/pages/home/ui/MainPage.tsx
+++ b/src/pages/home/ui/MainPage.tsx
@@ -6,7 +6,7 @@ import SearchTextField from '../../../../design-system/ui/textFields/SearchTextF
import searchIcon from '../../../../design-system/icons/Search.svg';
import VerticalCardButton from '../../../../design-system/ui/buttons/VerticalCardButton';
import { useEffect } from 'react';
-import { useNavigate } from 'react-router-dom';
+import { useLocation, useNavigate } from 'react-router-dom';
import { AnimatePresence } from 'framer-motion';
import LoginModal from '../../../widgets/main/ui/LoginModal';
import { cardButtons } from '../../../shared/types/mainCardButtonType';
@@ -20,6 +20,7 @@ import { USER_MANUAL_URL } from '../../../shared/types/menuType';
import { formatProfilName } from '../../../shared/lib/formatProfileName';
const MainPage = () => {
const navigate = useNavigate();
+ const location = useLocation();
const { isModalOpen, openModal, closeModal, isLoggedIn, name } = useAuthStore();
const { data } = useEventList();
@@ -39,10 +40,10 @@ const MainPage = () => {
};
useEffect(() => {
- if (!isLoggedIn) {
+ if (!isLoggedIn && location.state?.openLogin) {
openModal();
}
- }, [isLoggedIn, openModal]);
+ }, [isLoggedIn, openModal, location.state]);
return (
diff --git a/src/pages/menu/ui/MyPage.tsx b/src/pages/menu/ui/MyPage.tsx
index 08e0ff34..06add907 100644
--- a/src/pages/menu/ui/MyPage.tsx
+++ b/src/pages/menu/ui/MyPage.tsx
@@ -7,71 +7,93 @@ import BookmarkList from '../../../entities/user/ui/BookmarkList';
import arrow from '../../../../public/assets/bottomBar/Arrow.svg';
import IconButton from '../../../../design-system/ui/buttons/IconButton';
import logout from '../../../../public/assets/bottomBar/Logout.svg';
+import useAuthStore from '../../../app/provider/authStore';
+import SecondaryButton from '../../../../design-system/ui/buttons/SecondaryButton';
+import lock from '../../../../public/assets/bottomBar/Lock.svg';
const MyPage = () => {
const navigate = useNavigate();
const [open, setOpen] = useState(false);
+ const isLoggedIn = useAuthStore(state => state.isLoggedIn);
const handleToggle = () => setOpen(prev => !prev);
const handleLogout = () => navigate('/menu/logout');
+ const handleLoginRedirect = () => {
+ navigate('/', { state: { openLogin: true } });
+ };
+
return (
-
-
-
-
-
-
navigate('/menu/myTicket')} className="flex items-center justify-between cursor-pointer">
-
구매한 티켓 정보
-
}
- onClick={() => navigate('/menu/myTicket')}
- />
+ {!isLoggedIn ? (
+
+
+
-
-
-
-
-
문의하기
-
+ 로그인이 필요한 페이지입니다.
+ 마이페이지를 이용하려면 로그인해 주세요
+
+
+
+ ) : (
+ <>
+
+
+
+
+
navigate('/menu/myTicket')}
+ className="flex items-center justify-between cursor-pointer"
+ >
+ 구매한 티켓 정보
+ }
+ onClick={() => navigate('/menu/myTicket')}
+ />
+
+
+
+
+ 문의하기
+
+ }
+ onClick={handleToggle}
/>
- }
- onClick={handleToggle}
- />
-
- {open && (
-
+ {open && (
+
+ )}
- )}
-
-
-
-
-
로그아웃
-
} onClick={handleLogout} />
+
+
+ 로그아웃
+ } onClick={handleLogout} />
+
+
-
-
+ >
+ )}
);