diff --git a/src/components/admin/adminNotice/AdminNoticeList.styled.ts b/src/components/admin/adminNotice/AdminNoticeList.styled.ts new file mode 100644 index 00000000..41e66ab5 --- /dev/null +++ b/src/components/admin/adminNotice/AdminNoticeList.styled.ts @@ -0,0 +1,11 @@ +import styled from 'styled-components'; +import { SpinnerWrapperStyled } from '../../user/mypage/Spinner.styled'; + +export const SpinnerWrapper = styled(SpinnerWrapperStyled)` + width: 100%; +`; + +export const NoticeItemWrapper = styled.section` + display: flex; + justify-content: center; +`; diff --git a/src/pages/admin/adminNotice/adminNoticeList/AdminNoticeList.tsx b/src/components/admin/adminNotice/AdminNoticeList.tsx similarity index 76% rename from src/pages/admin/adminNotice/adminNoticeList/AdminNoticeList.tsx rename to src/components/admin/adminNotice/AdminNoticeList.tsx index 62378d87..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 { Spinner } from '../../../../components/common/loadingSpinner/LoadingSpinner.styled'; -import Pagination from '../../../../components/common/pagination/Pagination'; +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/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/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/AdminNoticeList.styled.ts b/src/pages/admin/adminNotice/adminNoticeList/AdminNoticeList.styled.ts deleted file mode 100644 index c0db96bb..00000000 --- a/src/pages/admin/adminNotice/adminNoticeList/AdminNoticeList.styled.ts +++ /dev/null @@ -1,9 +0,0 @@ -import styled from 'styled-components'; -import { SpinnerWrapperStyled } from '../../../../components/user/mypage/Spinner.styled'; - -export const SpinnerWrapper = styled(SpinnerWrapperStyled)``; - -export const NoticeItemWrapper = styled.section` - display: flex; - justify-content: center; -`; 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/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 ; } 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')