diff --git a/src/components/common/admin/sidebar/AdminSidebar.styled.ts b/src/components/common/admin/sidebar/AdminSidebar.styled.ts index f6de17c5..bdbea3d5 100644 --- a/src/components/common/admin/sidebar/AdminSidebar.styled.ts +++ b/src/components/common/admin/sidebar/AdminSidebar.styled.ts @@ -1,7 +1,16 @@ import styled from 'styled-components'; -export const SidebarContainer = styled.section` +export const LayoutContainer = styled.div` height: 100vh; + display: flex; +`; + +export const ContainerArea = styled.section` + flex: 1; + padding: 2rem; +`; + +export const SidebarContainer = styled.section` padding: 1rem; width: 15rem; border-right: 1px solid ${({ theme }) => theme.color.grey}; diff --git a/src/components/common/admin/sidebar/AdminSidebar.tsx b/src/components/common/admin/sidebar/AdminSidebar.tsx index e91064f6..1048c626 100644 --- a/src/components/common/admin/sidebar/AdminSidebar.tsx +++ b/src/components/common/admin/sidebar/AdminSidebar.tsx @@ -5,40 +5,53 @@ import logoutIcon from '../../../../assets/logout.svg'; import AdminSidebarList from './sidebarList/AdminSidebarList'; import ContentBorder from '../../contentBorder/ContentBorder'; import useAuthStore from '../../../../store/authStore'; -import { useNavigate } from 'react-router-dom'; +import { Outlet, useNavigate } from 'react-router-dom'; import { ROUTES } from '../../../../constants/routes'; +import { useModal } from '../../../../hooks/useModal'; +import Modal from '../../modal/Modal'; +import { MODAL_MESSAGE } from '../../../../constants/user/modalMessage'; export default function AdminSidebar() { const navigate = useNavigate(); const logout = useAuthStore((state) => state.logout); + const { isOpen, message, handleModalOpen, handleModalClose } = useModal(); const handleClickLogout = () => { - logout(); + handleModalOpen(MODAL_MESSAGE.needAuth); setTimeout(() => { + logout(); navigate(ROUTES.main); }, 1000); }; return ( - - - - - - Logout - - - - - - - - - + + + + + + + Logout + + + + + + + + + + + + + + {message} + + ); } diff --git a/src/components/common/admin/title/AdminTitle.styled.ts b/src/components/common/admin/title/AdminTitle.styled.ts new file mode 100644 index 00000000..6a12e940 --- /dev/null +++ b/src/components/common/admin/title/AdminTitle.styled.ts @@ -0,0 +1,9 @@ +import styled from 'styled-components'; + +export const TitleContainer = styled.header``; + +export const TitleWrapper = styled.div` + margin-bottom: 2rem; +`; + +export const Title = styled.h1``; diff --git a/src/components/common/admin/title/AdminTitle.tsx b/src/components/common/admin/title/AdminTitle.tsx new file mode 100644 index 00000000..ddacc5ea --- /dev/null +++ b/src/components/common/admin/title/AdminTitle.tsx @@ -0,0 +1,17 @@ +import ContentBorder from '../../contentBorder/ContentBorder'; +import * as S from './AdminTitle.styled'; + +interface AdminTitleProps { + title: string; +} + +export default function AdminTitle({ title }: AdminTitleProps) { + return ( + + + {title} + + + + ); +} diff --git a/src/components/user/customerService/CustomerServiceHeader.tsx b/src/components/user/customerService/CustomerServiceHeader.tsx index 2eca5341..59e79f47 100644 --- a/src/components/user/customerService/CustomerServiceHeader.tsx +++ b/src/components/user/customerService/CustomerServiceHeader.tsx @@ -1,8 +1,8 @@ import { MagnifyingGlassIcon, XCircleIcon } from '@heroicons/react/24/outline'; import * as S from './CustomerServiceHeader.styled'; import MovedInquiredLink from './MoveInquiredLink'; -import { Outlet, useLocation, useSearchParams } from 'react-router-dom'; -import { useEffect, useState } from 'react'; +import { Outlet, useSearchParams } from 'react-router-dom'; +import { useState } from 'react'; import Modal from '../../common/modal/Modal'; import { useModal } from '../../../hooks/useModal'; import { MODAL_MESSAGE_CUSTOMER_SERVICE } from '../../../constants/user/customerService'; diff --git a/src/components/user/customerService/noticeDetail/NoticeDetailBundle.tsx b/src/components/user/customerService/noticeDetail/NoticeDetailBundle.tsx index cf77fa0b..f9f6dd0a 100644 --- a/src/components/user/customerService/noticeDetail/NoticeDetailBundle.tsx +++ b/src/components/user/customerService/noticeDetail/NoticeDetailBundle.tsx @@ -33,7 +33,7 @@ export default function NoticeDetailBundle() { createdAt='' viewCount={0} /> - + ); } diff --git a/src/pages/admin/adminAllUser/AdminAllUser.tsx b/src/pages/admin/adminAllUser/AdminAllUser.tsx new file mode 100644 index 00000000..c2e5ee24 --- /dev/null +++ b/src/pages/admin/adminAllUser/AdminAllUser.tsx @@ -0,0 +1,3 @@ +export default function AdminAllUser() { + return
; +} diff --git a/src/pages/admin/adminBanner/AdminBanner.tsx b/src/pages/admin/adminBanner/AdminBanner.tsx new file mode 100644 index 00000000..a1812dec --- /dev/null +++ b/src/pages/admin/adminBanner/AdminBanner.tsx @@ -0,0 +1,3 @@ +export default function AdminBanner() { + return
; +} diff --git a/src/pages/admin/adminInquiries/AdminInquiries.styled.ts b/src/pages/admin/adminInquiries/AdminInquiries.styled.ts new file mode 100644 index 00000000..ce147df6 --- /dev/null +++ b/src/pages/admin/adminInquiries/AdminInquiries.styled.ts @@ -0,0 +1,3 @@ +import styled from 'styled-components'; + +export const AdminInquiriesContainer = styled.div``; diff --git a/src/pages/admin/adminInquiries/AdminInquiries.tsx b/src/pages/admin/adminInquiries/AdminInquiries.tsx new file mode 100644 index 00000000..2d180680 --- /dev/null +++ b/src/pages/admin/adminInquiries/AdminInquiries.tsx @@ -0,0 +1,5 @@ +import * as S from './AdminInquires.styled'; + +export default function AdminInquires() { + return ; +} diff --git a/src/pages/admin/adminMain/AdminMain.tsx b/src/pages/admin/adminMain/AdminMain.tsx new file mode 100644 index 00000000..c0ccc4cf --- /dev/null +++ b/src/pages/admin/adminMain/AdminMain.tsx @@ -0,0 +1,3 @@ +export default function AdminMain() { + return
; +} diff --git a/src/pages/admin/adminManage/AdminManage.tsx b/src/pages/admin/adminManage/AdminManage.tsx new file mode 100644 index 00000000..c4afcf56 --- /dev/null +++ b/src/pages/admin/adminManage/AdminManage.tsx @@ -0,0 +1,3 @@ +export default function AdminManage() { + return
; +} diff --git a/src/pages/admin/adminNotice/AdminNotice.styled.ts b/src/pages/admin/adminNotice/AdminNotice.styled.ts new file mode 100644 index 00000000..c3389834 --- /dev/null +++ b/src/pages/admin/adminNotice/AdminNotice.styled.ts @@ -0,0 +1,3 @@ +import styled from 'styled-components'; + +export const Container = styled.div``; diff --git a/src/pages/admin/adminNotice/AdminNotice.tsx b/src/pages/admin/adminNotice/AdminNotice.tsx new file mode 100644 index 00000000..9a760a49 --- /dev/null +++ b/src/pages/admin/adminNotice/AdminNotice.tsx @@ -0,0 +1,12 @@ +import AdminTitle from '../../../components/common/admin/title/AdminTitle'; +import * as S from './AdminNotice.styled'; + +export default function AdminNotice() { + console.log('공지사항 렌더'); + + return ( + + + + ); +} diff --git a/src/pages/admin/adminReports/AdminReports.tsx b/src/pages/admin/adminReports/AdminReports.tsx new file mode 100644 index 00000000..2d5490d9 --- /dev/null +++ b/src/pages/admin/adminReports/AdminReports.tsx @@ -0,0 +1,3 @@ +export default function AdminReports() { + return
; +} diff --git a/src/pages/admin/adminTags/AdminTags.tsx b/src/pages/admin/adminTags/AdminTags.tsx new file mode 100644 index 00000000..b8bd4f27 --- /dev/null +++ b/src/pages/admin/adminTags/AdminTags.tsx @@ -0,0 +1,3 @@ +export default function AdminTags() { + return
; +} diff --git a/src/routes/AdminRoutes.tsx b/src/routes/AdminRoutes.tsx index 00efc712..29431060 100644 --- a/src/routes/AdminRoutes.tsx +++ b/src/routes/AdminRoutes.tsx @@ -6,6 +6,16 @@ import ProtectAdminRoute from './ProtectAdminRoute'; const Sidebar = lazy( () => import('../components/common/admin/sidebar/AdminSidebar') ); +const Main = lazy(() => import('../pages/admin/adminMain/AdminMain')); +const Notice = lazy(() => import('../pages/admin/adminNotice/AdminNotice')); +const Banner = lazy(() => import('../pages/admin/adminBanner/AdminBanner')); +const Tags = lazy(() => import('../pages/admin/adminTags/AdminTags')); +const AllUser = lazy(() => import('../pages/admin/adminAllUser/AdminAllUser')); +const Reports = lazy(() => import('../pages/admin/adminReports/AdminReports')); +const Inquiries = lazy( + () => import('../pages/admin/adminInquiries/AdminInquiries') +); +const Manage = lazy(() => import('../pages/admin/adminManage/AdminManage')); export const AdminRoutes = () => { const routeList = [ @@ -16,6 +26,37 @@ export const AdminRoutes = () => { ), + children: [ + { index: true, element:
}, + { + path: ADMIN_ROUTE.notice, + element: , + }, + { + path: ADMIN_ROUTE.banner, + element: , + }, + { + path: ADMIN_ROUTE.tags, + element: , + }, + { + path: ADMIN_ROUTE.allUser, + element: , + }, + { + path: ADMIN_ROUTE.reports, + element: , + }, + { + path: ADMIN_ROUTE.inquiries, + element: , + }, + { + path: ADMIN_ROUTE.manage, + element: , + }, + ], }, ];