From 8dfa7a5924e51d9d4cd5c20b0dece649fa66b29c Mon Sep 17 00:00:00 2001 From: YouD0313 <102004480+YouD0313@users.noreply.github.com> Date: Wed, 4 Jun 2025 02:15:09 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=EA=B4=80=EB=A6=AC=EC=9E=90=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=8A=A4=ED=94=BC=EB=84=88?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=8B=9C=20=EB=84=88=EB=B9=84=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/customerService/noticeDetail/NoticeDetailBundle.tsx | 4 +++- src/components/user/mypage/Spinner.styled.ts | 4 ++-- .../adminNotice/adminNoticeList/AdminNoticeList.styled.ts | 4 +++- .../admin/adminNotice/adminNoticeList/AdminNoticeList.tsx | 2 +- src/pages/admin/adminNoticeDetail/AdminNoticeDetail.tsx | 5 ++++- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/components/user/customerService/noticeDetail/NoticeDetailBundle.tsx b/src/components/user/customerService/noticeDetail/NoticeDetailBundle.tsx index f8f8abc6..39a6283e 100644 --- a/src/components/user/customerService/noticeDetail/NoticeDetailBundle.tsx +++ b/src/components/user/customerService/noticeDetail/NoticeDetailBundle.tsx @@ -9,10 +9,12 @@ import ListButton from './bottom/button/ListButton'; interface NoticeDetailBundleProps { $width: string; + $isAdmin?: boolean; } export default function NoticeDetailBundle({ $width, + $isAdmin = false, }: NoticeDetailBundleProps) { const location = useLocation(); const { noticeId } = useParams(); @@ -24,7 +26,7 @@ export default function NoticeDetailBundle({ if (isLoading) { return ( - + ); diff --git a/src/components/user/mypage/Spinner.styled.ts b/src/components/user/mypage/Spinner.styled.ts index db3608d0..ed3da252 100644 --- a/src/components/user/mypage/Spinner.styled.ts +++ b/src/components/user/mypage/Spinner.styled.ts @@ -26,8 +26,8 @@ export const Circle = styled.div<{ $size: string; $color: string }>` animation: ${spin} 1s linear infinite; `; -export const SpinnerWrapperStyled = styled.div` - width: 100vw; +export const SpinnerWrapperStyled = styled.div<{ $isAdmin?: boolean }>` + width: ${({ $isAdmin }) => ($isAdmin ? '100%' : '100vw')}; height: 60vh; display: flex; justify-content: center; diff --git a/src/pages/admin/adminNotice/adminNoticeList/AdminNoticeList.styled.ts b/src/pages/admin/adminNotice/adminNoticeList/AdminNoticeList.styled.ts index c0db96bb..efb669ad 100644 --- a/src/pages/admin/adminNotice/adminNoticeList/AdminNoticeList.styled.ts +++ b/src/pages/admin/adminNotice/adminNoticeList/AdminNoticeList.styled.ts @@ -1,7 +1,9 @@ import styled from 'styled-components'; import { SpinnerWrapperStyled } from '../../../../components/user/mypage/Spinner.styled'; -export const SpinnerWrapper = styled(SpinnerWrapperStyled)``; +export const SpinnerWrapper = styled(SpinnerWrapperStyled)` + width: 100%; +`; export const NoticeItemWrapper = styled.section` display: flex; diff --git a/src/pages/admin/adminNotice/adminNoticeList/AdminNoticeList.tsx b/src/pages/admin/adminNotice/adminNoticeList/AdminNoticeList.tsx index 62378d87..6a4c8e65 100644 --- a/src/pages/admin/adminNotice/adminNoticeList/AdminNoticeList.tsx +++ b/src/pages/admin/adminNotice/adminNoticeList/AdminNoticeList.tsx @@ -5,8 +5,8 @@ import * as S from './AdminNoticeList.styled'; import type { NoticeSearch } from '../../../../models/customerService'; import { useGetNotice } from '../../../../hooks/user/useGetNotice'; import { useSearchParams } from 'react-router-dom'; -import { Spinner } from '../../../../components/common/loadingSpinner/LoadingSpinner.styled'; import Pagination from '../../../../components/common/pagination/Pagination'; +import Spinner from '../../../../components/user/mypage/Spinner'; export default function AdminNoticeList() { const [noticeSearch, setNoticeSearch] = useState({ diff --git a/src/pages/admin/adminNoticeDetail/AdminNoticeDetail.tsx b/src/pages/admin/adminNoticeDetail/AdminNoticeDetail.tsx index f61dc2b2..ff77eb7d 100644 --- a/src/pages/admin/adminNoticeDetail/AdminNoticeDetail.tsx +++ b/src/pages/admin/adminNoticeDetail/AdminNoticeDetail.tsx @@ -1,5 +1,8 @@ import NoticeDetailBundle from '../../../components/user/customerService/noticeDetail/NoticeDetailBundle'; +import useAuthStore from '../../../store/authStore'; export default function AdminNoticeDetail() { - return ; + const isAdmin = useAuthStore((state) => state.userData?.admin) ?? false; + + return ; } From 072a70aa95cf940bdf23cbee0a26dfcd69390d9e Mon Sep 17 00:00:00 2001 From: YouD0313 <102004480+YouD0313@users.noreply.github.com> Date: Wed, 4 Jun 2025 15:40:57 +0900 Subject: [PATCH 2/2] =?UTF-8?q?refactor:=20=EA=B4=80=EB=A6=AC=EC=9E=90=20?= =?UTF-8?q?=EA=B3=B5=EC=A7=80=EC=82=AC=ED=95=AD=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80,=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC,=20=EA=B4=80=EB=A6=AC=EC=9E=90=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EA=B3=B5=ED=86=B5=20=EC=BB=B4=ED=8F=AC=EB=84=8C?= =?UTF-8?q?=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/adminNotice}/AdminNoticeList.styled.ts | 2 +- .../admin/adminNotice}/AdminNoticeList.tsx | 12 ++++++------ .../adminNotice}/AdminNoticeWrite.styled.ts | 4 ++-- .../admin/adminNotice}/AdminNoticeWrite.tsx | 14 +++++++------- .../admin/searchBar/SearchBar.styled.ts | 0 .../{ => common}/admin/searchBar/SearchBar.tsx | 8 ++++---- ...otice.styled.ts => CommonAdminPage.styled.ts} | 2 +- src/pages/admin/CommonAdminPage.tsx | 16 ++++++++++++++++ .../AdminFAQ.styled.ts} | 0 src/pages/admin/adminFAQ/AdminFAQ.tsx | 0 src/pages/admin/adminNotice/AdminNotice.tsx | 11 ++--------- .../adminNoticeList/AdminNoticeListPage.tsx | 5 +++++ .../adminNoticeWrite/AdminNoticeWritePage.tsx | 5 +++++ src/routes/AdminRoutes.tsx | 5 +++-- 14 files changed, 52 insertions(+), 32 deletions(-) rename src/{pages/admin/adminNotice/adminNoticeList => components/admin/adminNotice}/AdminNoticeList.styled.ts (70%) rename src/{pages/admin/adminNotice/adminNoticeList => components/admin/adminNotice}/AdminNoticeList.tsx (78%) rename src/{pages/admin/adminNotice/adminNoticeWrite => components/admin/adminNotice}/AdminNoticeWrite.styled.ts (83%) rename src/{pages/admin/adminNotice/adminNoticeWrite => components/admin/adminNotice}/AdminNoticeWrite.tsx (86%) rename src/components/{ => common}/admin/searchBar/SearchBar.styled.ts (100%) rename src/components/{ => common}/admin/searchBar/SearchBar.tsx (90%) rename src/pages/admin/{adminNotice/AdminNotice.styled.ts => CommonAdminPage.styled.ts} (74%) create mode 100644 src/pages/admin/CommonAdminPage.tsx rename src/pages/admin/{adminNoticeDetail/AdminNoticeDetail.styled.ts => adminFAQ/AdminFAQ.styled.ts} (100%) create mode 100644 src/pages/admin/adminFAQ/AdminFAQ.tsx create mode 100644 src/pages/admin/adminNotice/adminNoticeList/AdminNoticeListPage.tsx create mode 100644 src/pages/admin/adminNotice/adminNoticeWrite/AdminNoticeWritePage.tsx diff --git a/src/pages/admin/adminNotice/adminNoticeList/AdminNoticeList.styled.ts b/src/components/admin/adminNotice/AdminNoticeList.styled.ts similarity index 70% rename from src/pages/admin/adminNotice/adminNoticeList/AdminNoticeList.styled.ts rename to src/components/admin/adminNotice/AdminNoticeList.styled.ts index efb669ad..41e66ab5 100644 --- a/src/pages/admin/adminNotice/adminNoticeList/AdminNoticeList.styled.ts +++ b/src/components/admin/adminNotice/AdminNoticeList.styled.ts @@ -1,5 +1,5 @@ import styled from 'styled-components'; -import { SpinnerWrapperStyled } from '../../../../components/user/mypage/Spinner.styled'; +import { SpinnerWrapperStyled } from '../../user/mypage/Spinner.styled'; export const SpinnerWrapper = styled(SpinnerWrapperStyled)` width: 100%; diff --git a/src/pages/admin/adminNotice/adminNoticeList/AdminNoticeList.tsx b/src/components/admin/adminNotice/AdminNoticeList.tsx similarity index 78% rename from src/pages/admin/adminNotice/adminNoticeList/AdminNoticeList.tsx rename to src/components/admin/adminNotice/AdminNoticeList.tsx index 6a4c8e65..3bb10740 100644 --- a/src/pages/admin/adminNotice/adminNoticeList/AdminNoticeList.tsx +++ b/src/components/admin/adminNotice/AdminNoticeList.tsx @@ -1,12 +1,12 @@ import { useEffect, useState } from 'react'; -import SearchBar from '../../../../components/admin/searchBar/SearchBar'; -import NoticeItem from '../../../user/customerService/notice/noticeItem/NoticeItem'; +import SearchBar from '../../../components/common/admin/searchBar/SearchBar'; import * as S from './AdminNoticeList.styled'; -import type { NoticeSearch } from '../../../../models/customerService'; -import { useGetNotice } from '../../../../hooks/user/useGetNotice'; +import type { NoticeSearch } from '../../../models/customerService'; +import { useGetNotice } from '../../../hooks/user/useGetNotice'; import { useSearchParams } from 'react-router-dom'; -import Pagination from '../../../../components/common/pagination/Pagination'; -import Spinner from '../../../../components/user/mypage/Spinner'; +import Pagination from '../../../components/common/pagination/Pagination'; +import Spinner from '../../../components/user/mypage/Spinner'; +import NoticeItem from '../../../pages/user/customerService/notice/noticeItem/NoticeItem'; export default function AdminNoticeList() { const [noticeSearch, setNoticeSearch] = useState({ diff --git a/src/pages/admin/adminNotice/adminNoticeWrite/AdminNoticeWrite.styled.ts b/src/components/admin/adminNotice/AdminNoticeWrite.styled.ts similarity index 83% rename from src/pages/admin/adminNotice/adminNoticeWrite/AdminNoticeWrite.styled.ts rename to src/components/admin/adminNotice/AdminNoticeWrite.styled.ts index 96d78368..9d774685 100644 --- a/src/pages/admin/adminNotice/adminNoticeWrite/AdminNoticeWrite.styled.ts +++ b/src/components/admin/adminNotice/AdminNoticeWrite.styled.ts @@ -9,8 +9,8 @@ import { Content, SendButtonWrapper, SendButton, -} from '../../../../components/user/customerService/inquiry/Inquiry.styled'; -import { SpinnerWrapperStyled } from '../../../../components/user/mypage/Spinner.styled'; +} from '../../../components/user/customerService/inquiry/Inquiry.styled'; +import { SpinnerWrapperStyled } from '../../../components/user/mypage/Spinner.styled'; export const SpinnerWrapper = styled(SpinnerWrapperStyled)``; diff --git a/src/pages/admin/adminNotice/adminNoticeWrite/AdminNoticeWrite.tsx b/src/components/admin/adminNotice/AdminNoticeWrite.tsx similarity index 86% rename from src/pages/admin/adminNotice/adminNoticeWrite/AdminNoticeWrite.tsx rename to src/components/admin/adminNotice/AdminNoticeWrite.tsx index 7c8789df..e5c29ec9 100644 --- a/src/pages/admin/adminNotice/adminNoticeWrite/AdminNoticeWrite.tsx +++ b/src/components/admin/adminNotice/AdminNoticeWrite.tsx @@ -1,13 +1,13 @@ -import { INQUIRY_MESSAGE } from '../../../../constants/user/customerService'; +import { INQUIRY_MESSAGE } from '../../../constants/user/customerService'; import * as S from './AdminNoticeWrite.styled'; import React, { useEffect, useState } from 'react'; import { useLocation, useParams } from 'react-router-dom'; -import { useModal } from '../../../../hooks/useModal'; -import Modal from '../../../../components/common/modal/Modal'; -import type { WriteBody } from '../../../../models/customerService'; -import { useAdminNotice } from '../../../../hooks/admin/useAdminNotice'; -import { useGetNoticeDetail } from '../../../../hooks/user/useGetNoticeDetail'; -import Spinner from '../../../../components/user/mypage/Spinner'; +import { useModal } from '../../../hooks/useModal'; +import Modal from '../../../components/common/modal/Modal'; +import type { WriteBody } from '../../../models/customerService'; +import { useAdminNotice } from '../../../hooks/admin/useAdminNotice'; +import { useGetNoticeDetail } from '../../../hooks/user/useGetNoticeDetail'; +import Spinner from '../../../components/user/mypage/Spinner'; export default function AdminNoticeWrite() { const location = useLocation(); diff --git a/src/components/admin/searchBar/SearchBar.styled.ts b/src/components/common/admin/searchBar/SearchBar.styled.ts similarity index 100% rename from src/components/admin/searchBar/SearchBar.styled.ts rename to src/components/common/admin/searchBar/SearchBar.styled.ts diff --git a/src/components/admin/searchBar/SearchBar.tsx b/src/components/common/admin/searchBar/SearchBar.tsx similarity index 90% rename from src/components/admin/searchBar/SearchBar.tsx rename to src/components/common/admin/searchBar/SearchBar.tsx index cd5babc2..3b07c8ce 100644 --- a/src/components/admin/searchBar/SearchBar.tsx +++ b/src/components/common/admin/searchBar/SearchBar.tsx @@ -1,11 +1,11 @@ import { XMarkIcon } from '@heroicons/react/24/outline'; -import { MODAL_MESSAGE_CUSTOMER_SERVICE } from '../../../constants/user/customerService'; +import { MODAL_MESSAGE_CUSTOMER_SERVICE } from '../../../../constants/user/customerService'; import * as S from './SearchBar.styled'; import { useState } from 'react'; import { useLocation, useSearchParams } from 'react-router-dom'; -import { useModal } from '../../../hooks/useModal'; -import Modal from '../../common/modal/Modal'; -import { ADMIN_ROUTE } from '../../../constants/routes'; +import { useModal } from '../../../../hooks/useModal'; +import Modal from '../../modal/Modal'; +import { ADMIN_ROUTE } from '../../../../constants/routes'; interface SearchBarProps { onGetKeyword: (keyword: string) => void; diff --git a/src/pages/admin/adminNotice/AdminNotice.styled.ts b/src/pages/admin/CommonAdminPage.styled.ts similarity index 74% rename from src/pages/admin/adminNotice/AdminNotice.styled.ts rename to src/pages/admin/CommonAdminPage.styled.ts index 1bbefc66..f98efd8a 100644 --- a/src/pages/admin/adminNotice/AdminNotice.styled.ts +++ b/src/pages/admin/CommonAdminPage.styled.ts @@ -1,5 +1,5 @@ import styled from 'styled-components'; -import { SpinnerWrapperStyled } from '../../../components/user/mypage/Spinner.styled'; +import { SpinnerWrapperStyled } from '../../components/user/mypage/Spinner.styled'; export const SpinnerWrapper = styled(SpinnerWrapperStyled)``; diff --git a/src/pages/admin/CommonAdminPage.tsx b/src/pages/admin/CommonAdminPage.tsx new file mode 100644 index 00000000..dd00220f --- /dev/null +++ b/src/pages/admin/CommonAdminPage.tsx @@ -0,0 +1,16 @@ +import { Outlet } from 'react-router-dom'; +import AdminTitle from '../../components/common/admin/title/AdminTitle'; +import * as S from './CommonAdminPage.styled'; + +interface CommonAdminPageProps { + title: string; +} + +export default function CommonAdminPage({ title }: CommonAdminPageProps) { + return ( + + + + + ); +} diff --git a/src/pages/admin/adminNoticeDetail/AdminNoticeDetail.styled.ts b/src/pages/admin/adminFAQ/AdminFAQ.styled.ts similarity index 100% rename from src/pages/admin/adminNoticeDetail/AdminNoticeDetail.styled.ts rename to src/pages/admin/adminFAQ/AdminFAQ.styled.ts diff --git a/src/pages/admin/adminFAQ/AdminFAQ.tsx b/src/pages/admin/adminFAQ/AdminFAQ.tsx new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/admin/adminNotice/AdminNotice.tsx b/src/pages/admin/adminNotice/AdminNotice.tsx index a3639e8c..8e456481 100644 --- a/src/pages/admin/adminNotice/AdminNotice.tsx +++ b/src/pages/admin/adminNotice/AdminNotice.tsx @@ -1,12 +1,5 @@ -import { Outlet } from 'react-router-dom'; -import AdminTitle from '../../../components/common/admin/title/AdminTitle'; -import * as S from './AdminNotice.styled'; +import CommonAdminPage from '../commonAdminPage'; export default function AdminNotice() { - return ( - - - - - ); + return ; } diff --git a/src/pages/admin/adminNotice/adminNoticeList/AdminNoticeListPage.tsx b/src/pages/admin/adminNotice/adminNoticeList/AdminNoticeListPage.tsx new file mode 100644 index 00000000..e66dc3cc --- /dev/null +++ b/src/pages/admin/adminNotice/adminNoticeList/AdminNoticeListPage.tsx @@ -0,0 +1,5 @@ +import AdminNoticeList from '../../../../components/admin/adminNotice/AdminNoticeList'; + +export default function AdminNoticeListPage() { + return ; +} diff --git a/src/pages/admin/adminNotice/adminNoticeWrite/AdminNoticeWritePage.tsx b/src/pages/admin/adminNotice/adminNoticeWrite/AdminNoticeWritePage.tsx new file mode 100644 index 00000000..d5e831bf --- /dev/null +++ b/src/pages/admin/adminNotice/adminNoticeWrite/AdminNoticeWritePage.tsx @@ -0,0 +1,5 @@ +import AdminNoticeWrite from '../../../../components/admin/adminNotice/AdminNoticeWrite'; + +export default function AdminNoticeWritePage() { + return ; +} diff --git a/src/routes/AdminRoutes.tsx b/src/routes/AdminRoutes.tsx index 539ce3cd..7ec5e7da 100644 --- a/src/routes/AdminRoutes.tsx +++ b/src/routes/AdminRoutes.tsx @@ -9,10 +9,11 @@ const Sidebar = lazy( const Main = lazy(() => import('../pages/admin/adminMain/AdminMain')); const Notice = lazy(() => import('../pages/admin/adminNotice/AdminNotice')); const NoticeList = lazy( - () => import('../pages/admin/adminNotice/adminNoticeList/AdminNoticeList') + () => import('../pages/admin/adminNotice/adminNoticeList/AdminNoticeListPage') ); const NoticeWrite = lazy( - () => import('../pages/admin/adminNotice/adminNoticeWrite/AdminNoticeWrite') + () => + import('../pages/admin/adminNotice/adminNoticeWrite/AdminNoticeWritePage') ); const NoticeDetail = lazy( () => import('../pages/admin/adminNoticeDetail/AdminNoticeDetail')