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 && ( -
- 이메일 주소로 문의 부탁드립니다 -
- - gotogether@gmail.com - +
+ {open && ( +
+ 이메일 주소로 문의 부탁드립니다 +
+ + gotogether@gmail.com + +
+ )}
- )} -
-
- -
- 로그아웃 - } onClick={handleLogout} /> +
+
+ 로그아웃 + } onClick={handleLogout} /> +
+
-
-
+ + )}
);