diff --git a/apps/admin/.gitignore b/apps/admin/.gitignore index 09fad000..3ba85d28 100644 --- a/apps/admin/.gitignore +++ b/apps/admin/.gitignore @@ -17,4 +17,5 @@ dist/ !.vscode/extensions.json .idea -routeTree.gen.ts \ No newline at end of file +# Route Tree +routeTree.gen.ts diff --git a/apps/admin/package.json b/apps/admin/package.json index 3c181bae..6f141f5c 100644 --- a/apps/admin/package.json +++ b/apps/admin/package.json @@ -46,6 +46,7 @@ "eslint": "^9.17.0", "globals": "^15.14.0", "openapi-typescript": "^7.6.1", + "rollup-plugin-visualizer": "^5.14.0", "typescript": "~5.6.3", "typescript-eslint": "^8.18.2", "vite": "^6.0.5", diff --git a/apps/admin/public/svg/ic-close-circle.svg b/apps/admin/public/svg/ic-close-circle.svg deleted file mode 100644 index a9201bcc..00000000 --- a/apps/admin/public/svg/ic-close-circle.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/apps/admin/public/svg/ic-close-small-white.svg b/apps/admin/public/svg/ic-close-small-white.svg deleted file mode 100644 index 34b341e0..00000000 --- a/apps/admin/public/svg/ic-close-small-white.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/apps/admin/public/svg/ic-close-small.svg b/apps/admin/public/svg/ic-close-small.svg deleted file mode 100644 index f67a09a8..00000000 --- a/apps/admin/public/svg/ic-close-small.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/apps/admin/public/svg/ic-delete-button.svg b/apps/admin/public/svg/ic-delete-button.svg deleted file mode 100644 index a72cee8a..00000000 --- a/apps/admin/public/svg/ic-delete-button.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/apps/admin/public/svg/ic-delete-sm.svg b/apps/admin/public/svg/ic-delete-sm.svg deleted file mode 100644 index 97a49c62..00000000 --- a/apps/admin/public/svg/ic-delete-sm.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/apps/admin/public/svg/ic-delete.svg b/apps/admin/public/svg/ic-delete.svg deleted file mode 100644 index a11fad67..00000000 --- a/apps/admin/public/svg/ic-delete.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/apps/admin/public/svg/ic-down.svg b/apps/admin/public/svg/ic-down.svg deleted file mode 100644 index 0fd9660c..00000000 --- a/apps/admin/public/svg/ic-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/apps/admin/public/svg/ic-error.svg b/apps/admin/public/svg/ic-error.svg deleted file mode 100644 index 6e8ced02..00000000 --- a/apps/admin/public/svg/ic-error.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/apps/admin/public/svg/ic-folder.svg b/apps/admin/public/svg/ic-folder.svg deleted file mode 100644 index 2319771c..00000000 --- a/apps/admin/public/svg/ic-folder.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/apps/admin/public/svg/ic-left-button.svg b/apps/admin/public/svg/ic-left-button.svg deleted file mode 100644 index 85516a68..00000000 --- a/apps/admin/public/svg/ic-left-button.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/apps/admin/public/svg/ic-left-sm.svg b/apps/admin/public/svg/ic-left-sm.svg deleted file mode 100644 index e4283fe5..00000000 --- a/apps/admin/public/svg/ic-left-sm.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/apps/admin/public/svg/ic-list.svg b/apps/admin/public/svg/ic-list.svg deleted file mode 100644 index f1e02d31..00000000 --- a/apps/admin/public/svg/ic-list.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/apps/admin/public/svg/ic-modify-button.svg b/apps/admin/public/svg/ic-modify-button.svg deleted file mode 100644 index 14c8e836..00000000 --- a/apps/admin/public/svg/ic-modify-button.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/apps/admin/public/svg/ic-plus.svg b/apps/admin/public/svg/ic-plus.svg deleted file mode 100644 index eba4c226..00000000 --- a/apps/admin/public/svg/ic-plus.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/apps/admin/public/svg/ic-preview-button.svg b/apps/admin/public/svg/ic-preview-button.svg deleted file mode 100644 index 015984b8..00000000 --- a/apps/admin/public/svg/ic-preview-button.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/apps/admin/public/svg/ic-publish.svg b/apps/admin/public/svg/ic-publish.svg deleted file mode 100644 index 2448810e..00000000 --- a/apps/admin/public/svg/ic-publish.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/apps/admin/public/svg/ic-right-button.svg b/apps/admin/public/svg/ic-right-button.svg deleted file mode 100644 index ec445979..00000000 --- a/apps/admin/public/svg/ic-right-button.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/apps/admin/public/svg/ic-search.svg b/apps/admin/public/svg/ic-search.svg deleted file mode 100644 index 781dba18..00000000 --- a/apps/admin/public/svg/ic-search.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/apps/admin/public/svg/ic-select-button.svg b/apps/admin/public/svg/ic-select-button.svg deleted file mode 100644 index 6f3b55b5..00000000 --- a/apps/admin/public/svg/ic-select-button.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/apps/admin/public/svg/ic-sign-out.svg b/apps/admin/public/svg/ic-sign-out.svg deleted file mode 100644 index 2e134334..00000000 --- a/apps/admin/public/svg/ic-sign-out.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/apps/admin/public/svg/ic-trash-16.svg b/apps/admin/public/svg/ic-trash-16.svg deleted file mode 100644 index e2bcbc05..00000000 --- a/apps/admin/public/svg/ic-trash-16.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/apps/admin/public/svg/ic-unselected-button.svg b/apps/admin/public/svg/ic-unselected-button.svg deleted file mode 100644 index e117f0ec..00000000 --- a/apps/admin/public/svg/ic-unselected-button.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/apps/admin/public/svg/ic-up.svg b/apps/admin/public/svg/ic-up.svg deleted file mode 100644 index 1d27b0db..00000000 --- a/apps/admin/public/svg/ic-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/apps/admin/public/svg/ic-upload.svg b/apps/admin/public/svg/ic-upload.svg deleted file mode 100644 index 07f7edab..00000000 --- a/apps/admin/public/svg/ic-upload.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/apps/admin/public/svg/ic-view-button.svg b/apps/admin/public/svg/ic-view-button.svg deleted file mode 100644 index e487f3d0..00000000 --- a/apps/admin/public/svg/ic-view-button.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/apps/admin/src/apis/authMiddleware.ts b/apps/admin/src/apis/authMiddleware.ts index 6b23be5f..f1919722 100644 --- a/apps/admin/src/apis/authMiddleware.ts +++ b/apps/admin/src/apis/authMiddleware.ts @@ -1,36 +1,15 @@ -import { getAccessToken, setAccessToken } from '@contexts/AuthContext'; import { Middleware } from 'openapi-fetch'; +import { tokenStorage, reissueToken } from '@utils'; const UNPROTECTED_ROUTES = ['/api/v1/auth/admin/login']; -const reissueToken = async () => { - try { - const response = await fetch(`${import.meta.env.VITE_API_BASE_URL}/api/v1/auth/reissue`, { - method: 'GET', - credentials: 'include', - }); - - if (!response.ok) throw new Error('Token reissue failed'); - - const data = await response.json(); - const accessToken = data.data.accessToken; - setAccessToken(accessToken); - return accessToken; - } catch (error) { - console.error('Reissue failed:', error); - setAccessToken(null); - window.location.href = '/login'; - return null; - } -}; - const authMiddleware: Middleware = { async onRequest({ schemaPath, request }: { schemaPath: string; request: Request }) { if (UNPROTECTED_ROUTES.some((pathname) => schemaPath.startsWith(pathname))) { return undefined; } - let accessToken = getAccessToken(); + let accessToken = tokenStorage.getToken(); if (!accessToken) { accessToken = await reissueToken(); @@ -59,8 +38,6 @@ const authMiddleware: Middleware = { request.headers.set('Authorization', `Bearer ${newAccessToken}`); return fetch(request); } - // const cloneJson = await response.clone().json(); - // return cloneJson.data ? new Response(JSON.stringify(cloneJson.data)) : response; return response; }, }; diff --git a/apps/admin/src/apis/controller/auth/postLogin.ts b/apps/admin/src/apis/controller/auth/postLogin.ts index a3f310f2..675f2ab4 100644 --- a/apps/admin/src/apis/controller/auth/postLogin.ts +++ b/apps/admin/src/apis/controller/auth/postLogin.ts @@ -1,4 +1,4 @@ -import { $api } from 'src/apis/client'; +import { $api } from '@apis'; const postLogin = () => { return $api.useMutation('post', '/api/v1/auth/admin/login'); diff --git a/apps/admin/src/apis/controller/image/getPresignedUrl.ts b/apps/admin/src/apis/controller/image/getPresignedUrl.ts index 282d09b7..818ee387 100644 --- a/apps/admin/src/apis/controller/image/getPresignedUrl.ts +++ b/apps/admin/src/apis/controller/image/getPresignedUrl.ts @@ -13,7 +13,7 @@ const getPresignedUrl = ({ problemId, imageType }: getPresignedUrlParams) => { { params: { path: { - problemId: problemId, + problemId: Number(problemId), }, query: { 'image-type': imageType, diff --git a/apps/admin/src/apis/controller/problem/deleteChildProblem.ts b/apps/admin/src/apis/controller/problem/deleteChildProblem.ts index 4734c62c..6d531600 100644 --- a/apps/admin/src/apis/controller/problem/deleteChildProblem.ts +++ b/apps/admin/src/apis/controller/problem/deleteChildProblem.ts @@ -1,4 +1,4 @@ -import { $api } from 'src/apis/client'; +import { $api } from '@apis'; const deleteChildProblem = () => { return $api.useMutation('delete', '/api/v1/problems/{problemId}/child-problems/{childProblemId}'); diff --git a/apps/admin/src/apis/controller/problem/deleteProblems.ts b/apps/admin/src/apis/controller/problem/deleteProblems.ts index 66aa6598..7d8ff64f 100644 --- a/apps/admin/src/apis/controller/problem/deleteProblems.ts +++ b/apps/admin/src/apis/controller/problem/deleteProblems.ts @@ -1,4 +1,4 @@ -import { $api } from 'src/apis/client'; +import { $api } from '@apis'; const deleteProblems = () => { return $api.useMutation('delete', '/api/v1/problems/{id}'); diff --git a/apps/admin/src/apis/controller/problem/getConceptTags.ts b/apps/admin/src/apis/controller/problem/getConceptTags.ts index a6f3cb20..d379d748 100644 --- a/apps/admin/src/apis/controller/problem/getConceptTags.ts +++ b/apps/admin/src/apis/controller/problem/getConceptTags.ts @@ -1,4 +1,4 @@ -import { $api } from 'src/apis/client'; +import { $api } from '@apis'; const getConceptTags = () => { return $api.useQuery('get', '/api/v1/conceptTags'); diff --git a/apps/admin/src/apis/controller/problem/getPracticeTestTags.ts b/apps/admin/src/apis/controller/problem/getPracticeTestTags.ts index 11f82727..3b3aef43 100644 --- a/apps/admin/src/apis/controller/problem/getPracticeTestTags.ts +++ b/apps/admin/src/apis/controller/problem/getPracticeTestTags.ts @@ -1,4 +1,4 @@ -import { $api } from 'src/apis/client'; +import { $api } from '@apis'; const getPracticeTestTags = () => { return $api.useQuery('get', '/api/v1/practiceTestTags', {}); diff --git a/apps/admin/src/apis/controller/problem/getProblemById.ts b/apps/admin/src/apis/controller/problem/getProblemById.ts index 0684bf8a..6f7cfcb5 100644 --- a/apps/admin/src/apis/controller/problem/getProblemById.ts +++ b/apps/admin/src/apis/controller/problem/getProblemById.ts @@ -1,4 +1,4 @@ -import { $api } from 'src/apis/client'; +import { $api } from '@apis'; const getProblemById = (problemId: number) => { return $api.useQuery('get', '/api/v1/problems/{id}', { diff --git a/apps/admin/src/apis/controller/problem/postChildProblem.ts b/apps/admin/src/apis/controller/problem/postChildProblem.ts index 97af7e15..18d15d71 100644 --- a/apps/admin/src/apis/controller/problem/postChildProblem.ts +++ b/apps/admin/src/apis/controller/problem/postChildProblem.ts @@ -1,4 +1,4 @@ -import { $api } from 'src/apis/client'; +import { $api } from '@apis'; const postChildProblem = () => { return $api.useMutation('post', '/api/v1/problems/{problemId}/child-problems'); diff --git a/apps/admin/src/apis/controller/problem/postProblems.ts b/apps/admin/src/apis/controller/problem/postProblems.ts index c7498165..fc69685f 100644 --- a/apps/admin/src/apis/controller/problem/postProblems.ts +++ b/apps/admin/src/apis/controller/problem/postProblems.ts @@ -1,4 +1,4 @@ -import { $api } from 'src/apis/client'; +import { $api } from '@apis'; const postProblems = () => { return $api.useMutation('post', '/api/v1/problems'); diff --git a/apps/admin/src/apis/controller/problem/putProblemById.ts b/apps/admin/src/apis/controller/problem/putProblemById.ts index 054cca75..4cded369 100644 --- a/apps/admin/src/apis/controller/problem/putProblemById.ts +++ b/apps/admin/src/apis/controller/problem/putProblemById.ts @@ -1,4 +1,4 @@ -import { $api } from 'src/apis/client'; +import { $api } from '@apis'; const putProblemById = () => { return $api.useMutation('put', '/api/v1/problems/{id}'); diff --git a/apps/admin/src/apis/controller/problemSet/deleteProblemSet.ts b/apps/admin/src/apis/controller/problemSet/deleteProblemSet.ts index ce613f41..21c27204 100644 --- a/apps/admin/src/apis/controller/problemSet/deleteProblemSet.ts +++ b/apps/admin/src/apis/controller/problemSet/deleteProblemSet.ts @@ -1,4 +1,4 @@ -import { $api } from 'src/apis/client'; +import { $api } from '@apis'; const deleteProblemSet = () => { return $api.useMutation('delete', '/api/v1/problemSet/{problemSetId}'); diff --git a/apps/admin/src/apis/controller/problemSet/getProblemSetById.ts b/apps/admin/src/apis/controller/problemSet/getProblemSetById.ts index 82034125..ad59a38f 100644 --- a/apps/admin/src/apis/controller/problemSet/getProblemSetById.ts +++ b/apps/admin/src/apis/controller/problemSet/getProblemSetById.ts @@ -1,4 +1,4 @@ -import { $api } from 'src/apis/client'; +import { $api } from '@apis'; const getProblemSetById = (problemSetId: number) => { return $api.useQuery('get', '/api/v1/problemSet/{problemSetId}', { diff --git a/apps/admin/src/apis/controller/problemSet/getSearchProblemSet.ts b/apps/admin/src/apis/controller/problemSet/getSearchProblemSet.ts index ab301053..a9bf726f 100644 --- a/apps/admin/src/apis/controller/problemSet/getSearchProblemSet.ts +++ b/apps/admin/src/apis/controller/problemSet/getSearchProblemSet.ts @@ -1,5 +1,5 @@ import { getSearchProblemSetParamsType } from '@types'; -import { $api } from 'src/apis/client'; +import { $api } from '@apis'; const getSearchProblemSet = (searchQuery: getSearchProblemSetParamsType) => { return $api.useQuery('get', '/api/v1/problemSet/search', { diff --git a/apps/admin/src/apis/controller/problemSet/postProblemSet.ts b/apps/admin/src/apis/controller/problemSet/postProblemSet.ts index 9d826f1a..c39480e9 100644 --- a/apps/admin/src/apis/controller/problemSet/postProblemSet.ts +++ b/apps/admin/src/apis/controller/problemSet/postProblemSet.ts @@ -1,4 +1,4 @@ -import { $api } from 'src/apis/client'; +import { $api } from '@apis'; const postProblemSet = () => { return $api.useMutation('post', '/api/v1/problemSet'); diff --git a/apps/admin/src/apis/controller/problemSet/putConfirmProblemSet.ts b/apps/admin/src/apis/controller/problemSet/putConfirmProblemSet.ts index 26be8425..b7e08489 100644 --- a/apps/admin/src/apis/controller/problemSet/putConfirmProblemSet.ts +++ b/apps/admin/src/apis/controller/problemSet/putConfirmProblemSet.ts @@ -1,4 +1,4 @@ -import { $api } from 'src/apis/client'; +import { $api } from '@apis'; const putConfirmProblemSet = () => { return $api.useMutation('put', '/api/v1/problemSet/{problemSetId}/confirm'); diff --git a/apps/admin/src/apis/controller/problemSet/putProblemSet.ts b/apps/admin/src/apis/controller/problemSet/putProblemSet.ts index 90dee064..ec8ce83d 100644 --- a/apps/admin/src/apis/controller/problemSet/putProblemSet.ts +++ b/apps/admin/src/apis/controller/problemSet/putProblemSet.ts @@ -1,4 +1,4 @@ -import { $api } from 'src/apis/client'; +import { $api } from '@apis'; const putProblemSet = () => { return $api.useMutation('put', '/api/v1/problemSet/{problemSetId}'); diff --git a/apps/admin/src/apis/controller/publish/deletePublish.ts b/apps/admin/src/apis/controller/publish/deletePublish.ts index 6afde846..07d76ac4 100644 --- a/apps/admin/src/apis/controller/publish/deletePublish.ts +++ b/apps/admin/src/apis/controller/publish/deletePublish.ts @@ -1,4 +1,4 @@ -import { $api } from 'src/apis/client'; +import { $api } from '@apis'; const deletePublish = () => { return $api.useMutation('delete', '/api/v1/publish/{publishId}'); diff --git a/apps/admin/src/apis/controller/publish/getConfirmProblemSet.ts b/apps/admin/src/apis/controller/publish/getConfirmProblemSet.ts index ed0b2a60..e22d0165 100644 --- a/apps/admin/src/apis/controller/publish/getConfirmProblemSet.ts +++ b/apps/admin/src/apis/controller/publish/getConfirmProblemSet.ts @@ -1,5 +1,5 @@ import { getSearchProblemSetParamsType } from '@types'; -import { $api } from 'src/apis/client'; +import { $api } from '@apis'; const getConfirmProblemSet = (searchQuery: getSearchProblemSetParamsType) => { return $api.useQuery('get', '/api/v1/problemSet/confirm/search', { diff --git a/apps/admin/src/apis/controller/publish/getPublish.ts b/apps/admin/src/apis/controller/publish/getPublish.ts index dc9bc246..cf0de32d 100644 --- a/apps/admin/src/apis/controller/publish/getPublish.ts +++ b/apps/admin/src/apis/controller/publish/getPublish.ts @@ -1,4 +1,4 @@ -import { $api } from 'src/apis/client'; +import { $api } from '@apis'; const getPublish = (year: number, month: number) => { return $api.useQuery('get', '/api/v1/publish/{year}/{month}', { diff --git a/apps/admin/src/apis/controller/publish/postPublish.ts b/apps/admin/src/apis/controller/publish/postPublish.ts index fe438896..a5f8464a 100644 --- a/apps/admin/src/apis/controller/publish/postPublish.ts +++ b/apps/admin/src/apis/controller/publish/postPublish.ts @@ -1,4 +1,4 @@ -import { $api } from 'src/apis/client'; +import { $api } from '@apis'; const postPublish = () => { return $api.useMutation('post', '/api/v1/publish'); diff --git a/apps/admin/src/components/Calandar.tsx b/apps/admin/src/components/Calandar.tsx deleted file mode 100644 index 618693db..00000000 --- a/apps/admin/src/components/Calandar.tsx +++ /dev/null @@ -1,164 +0,0 @@ -import { HTMLAttributes, useState } from 'react'; -import dayjs from 'dayjs'; -import { IcDeleteSm } from '@svg'; -import { Link } from '@tanstack/react-router'; - -import IconButton from './Buttons/IconButton'; -import PlusButton from './Buttons/PlusButton'; - -import 'dayjs/locale/ko'; -dayjs.locale('ko'); - -interface DayProps extends HTMLAttributes { - variant?: 'thisMonth' | 'anotherMonth'; - fullDate: string; - day: number; - dayOfWeek?: number; // 요일 - 0: Sunday ~ 6: Saturday - title?: string; -} - -const Day = ({ variant = 'thisMonth', fullDate, day, dayOfWeek, title }: DayProps) => { - const today = dayjs().startOf('day'); - const isPast = dayjs(fullDate).isBefore(today, 'day'); - const isToday = dayjs(fullDate).isSame(today, 'day'); - const isSunday = dayOfWeek === 0; - const isSaturday = dayOfWeek === 6; - - const dayOfWeekStyle = isSunday ? 'text-red' : isSaturday ? 'text-blue' : 'black'; - - const textStyle = variant === 'thisMonth' ? 'text-black' : 'text-lightgray500'; - - const todayBgStyle = - isToday && variant === 'thisMonth' - ? isSunday - ? 'bg-lightred' - : isSaturday - ? 'bg-lightblue' - : 'bg-lightgray500' - : 'bg-white'; - - return ( -
-
-
- {day} -
-
- {title && !isPast && } -
-
- - {title ? ( -

{title}

- ) : ( - !isPast && ( - - - - ) - )} -
- ); -}; - -const Calendar = () => { - const [currentMonth, setCurrentMonth] = useState(dayjs().startOf('month')); - - const handleClickPrevMonth = () => setCurrentMonth(currentMonth.subtract(1, 'month')); - const handleClickNextMonth = () => setCurrentMonth(currentMonth.add(1, 'month')); - const handleClickCurrentMonth = () => setCurrentMonth(dayjs().startOf('month')); - - const daysInMonth = currentMonth.daysInMonth(); - const firstDayOfMonth = currentMonth.startOf('month').day(); // 1일 요일, 0: Sunday ~ 6: Saturday - const lastDayOfMonth = currentMonth.endOf('month').day(); // 마지막날 요일, 0: Sunday ~ 6: Saturday - const daysArray = Array.from({ length: daysInMonth }, (_, i) => i + 1); - - const prevMonth = currentMonth.subtract(1, 'month'); - const nextMonth = currentMonth.add(1, 'month'); - const daysInPrevMonth = prevMonth.daysInMonth(); - - // 삭제예정 - const publishData = [ - { date: '2024-12-30', text: '점과 직선' }, - { date: '2025-03-01', text: '점과 직선 사이의 거리 돌아보기 점과 직선 사이의 거리 돌아보기' }, - { date: '2025-03-08', text: '점과 직선 사이의 거리 돌아보기' }, - ]; - - return ( -
-
- -

- {currentMonth.format('YYYY년 M월')} -

- -
- -
- {['일', '월', '화', '수', '목', '금', '토'].map((day, index) => ( -
- {`${day}요일`} -
- ))} -
- -
- {Array.from({ length: firstDayOfMonth }).map((_, i) => { - const fullDate = prevMonth - .date(daysInPrevMonth - firstDayOfMonth + i + 1) - .format('YYYY-MM-DD'); - const title = publishData.find((e) => e.date === fullDate); - - return ( - - ); - })} - - {daysArray.map((day) => { - const fullDate = currentMonth.date(day).format('YYYY-MM-DD'); - const title = publishData.find((e) => e.date === fullDate); - const dayOfWeek = currentMonth.date(day).day(); - return ( - - ); - })} - - {Array.from({ length: 6 - lastDayOfMonth }).map((_, i) => { - const fullDate = nextMonth.date(i + 1).format('YYYY-MM-DD'); - const title = publishData.find((e) => e.date === fullDate); - - return ( - - ); - })} -
-
- ); -}; - -export default Calendar; diff --git a/apps/admin/src/components/GNBMenu.tsx b/apps/admin/src/components/GNBMenu.tsx deleted file mode 100644 index e12f8473..00000000 --- a/apps/admin/src/components/GNBMenu.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React, { HTMLAttributes } from 'react'; - -interface GNBMenuProps extends HTMLAttributes { - isSelected: boolean; - children: React.ReactNode; -} - -const GNBMenu = ({ isSelected, children, ...props }: GNBMenuProps) => { - const bgStyles = isSelected ? 'bg-darkgray200' : ''; - - return ( -
- {children} -
- ); -}; - -export default GNBMenu; diff --git a/apps/admin/src/components/Inputs/TagSelect.tsx b/apps/admin/src/components/Inputs/TagSelect.tsx deleted file mode 100644 index 62b11150..00000000 --- a/apps/admin/src/components/Inputs/TagSelect.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import { IcDown, IcUp } from '@svg'; -import { useState } from 'react'; -import { Tag } from '@components'; -import { getConceptTags } from '@apis'; - -interface TagSelectProps { - selectedList: number[]; - handleSelectTag: (tagId: number) => void; - handleRemoveTag: (tagId: number) => void; -} - -const TagSelect = ({ selectedList, handleSelectTag, handleRemoveTag }: TagSelectProps) => { - const [isOpen, setIsOpen] = useState(false); - const { data: tagsData } = getConceptTags(); - const allTagList = tagsData?.data; - - const selectedTagList = allTagList?.filter((tag) => selectedList.includes(tag.id)); - const unselectedList = allTagList?.filter((tag) => !selectedList.includes(tag.id)); - - const toggleOpen = () => setIsOpen((prev) => !prev); - - const handleClickSelect = (e: React.MouseEvent, tagId: number) => { - e.stopPropagation(); - e.preventDefault(); - handleSelectTag(tagId); - }; - - const handleClickRemove = (e: React.MouseEvent, tagId: number) => { - e.stopPropagation(); - e.preventDefault(); - handleRemoveTag(tagId); - }; - - return ( -
-
-
- {selectedTagList?.length === 0 ? ( - 선택해주세요 - ) : ( -
- {selectedTagList?.map((tag) => ( - handleClickRemove(e, tag.id)} - /> - ))} -
- )} - {isOpen ? : } -
- {isOpen && ( - <> -
-
-
- {unselectedList?.map((tag) => ( - handleClickSelect(e, tag.id)} - /> - ))} -
-
- - )} -
-
- ); -}; - -export default TagSelect; diff --git a/apps/admin/src/components/Inputs/index.ts b/apps/admin/src/components/Inputs/index.ts deleted file mode 100644 index 05d60374..00000000 --- a/apps/admin/src/components/Inputs/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -import AnswerInput from './AnswerInput'; -import Input from './Input'; -import LevelSelect from './LevelSelect'; -import SearchInput from './SearchInput'; -import TagSelect from './TagSelect'; -import PracticeTestSelect from './PracticeTestSelect'; -import ProblemEssentialInput from './ProblemEssentialInput'; -import TextArea from './TextArea'; - -export { - AnswerInput, - Input, - LevelSelect, - SearchInput, - TagSelect, - PracticeTestSelect, - ProblemEssentialInput, - TextArea, -}; diff --git a/apps/admin/src/components/Buttons/Button.tsx b/apps/admin/src/components/common/Buttons/Button.tsx similarity index 100% rename from apps/admin/src/components/Buttons/Button.tsx rename to apps/admin/src/components/common/Buttons/Button.tsx diff --git a/apps/admin/src/components/Buttons/DeleteButton.tsx b/apps/admin/src/components/common/Buttons/DeleteButton.tsx similarity index 100% rename from apps/admin/src/components/Buttons/DeleteButton.tsx rename to apps/admin/src/components/common/Buttons/DeleteButton.tsx diff --git a/apps/admin/src/components/Buttons/FloatingButton.tsx b/apps/admin/src/components/common/Buttons/FloatingButton.tsx similarity index 100% rename from apps/admin/src/components/Buttons/FloatingButton.tsx rename to apps/admin/src/components/common/Buttons/FloatingButton.tsx diff --git a/apps/admin/src/components/Buttons/IconButton.tsx b/apps/admin/src/components/common/Buttons/IconButton.tsx similarity index 100% rename from apps/admin/src/components/Buttons/IconButton.tsx rename to apps/admin/src/components/common/Buttons/IconButton.tsx diff --git a/apps/admin/src/components/Buttons/PlusButton.tsx b/apps/admin/src/components/common/Buttons/PlusButton.tsx similarity index 100% rename from apps/admin/src/components/Buttons/PlusButton.tsx rename to apps/admin/src/components/common/Buttons/PlusButton.tsx diff --git a/apps/admin/src/components/Buttons/PrevPageButton.tsx b/apps/admin/src/components/common/Buttons/PrevPageButton.tsx similarity index 100% rename from apps/admin/src/components/Buttons/PrevPageButton.tsx rename to apps/admin/src/components/common/Buttons/PrevPageButton.tsx diff --git a/apps/admin/src/components/Buttons/index.ts b/apps/admin/src/components/common/Buttons/index.ts similarity index 100% rename from apps/admin/src/components/Buttons/index.ts rename to apps/admin/src/components/common/Buttons/index.ts diff --git a/apps/admin/src/components/ComponentWithLabel.tsx b/apps/admin/src/components/common/ComponentWithLabel.tsx similarity index 100% rename from apps/admin/src/components/ComponentWithLabel.tsx rename to apps/admin/src/components/common/ComponentWithLabel.tsx diff --git a/apps/admin/src/components/GNB.tsx b/apps/admin/src/components/common/GNB.tsx similarity index 75% rename from apps/admin/src/components/GNB.tsx rename to apps/admin/src/components/common/GNB.tsx index cdc7ab0a..df005af3 100644 --- a/apps/admin/src/components/GNB.tsx +++ b/apps/admin/src/components/common/GNB.tsx @@ -1,12 +1,28 @@ +import { HTMLAttributes } from 'react'; import { Link } from '@tanstack/react-router'; -import { GNBMenu } from '@components'; import { IcFolder, IcList, IcPublish } from '@svg'; +interface GNBMenuProps extends HTMLAttributes { + isSelected: boolean; + children: React.ReactNode; +} + +const GNBMenu = ({ isSelected, children }: GNBMenuProps) => { + const bgStyles = isSelected ? 'bg-darkgray200' : ''; + + return ( +
+ {children} +
+ ); +}; + const GNB = () => { return (
- 로고이미지 + 로고이미지