diff --git a/src/app/(user-page)/my-meeting/_features/ModalUserList.tsx b/src/app/(user-page)/my-meeting/_features/ModalUserList.tsx
index 00ba0783..7241ae53 100644
--- a/src/app/(user-page)/my-meeting/_features/ModalUserList.tsx
+++ b/src/app/(user-page)/my-meeting/_features/ModalUserList.tsx
@@ -2,7 +2,8 @@ import { Tag } from '@/components/ui/Tag';
import Image from 'next/image';
import { useRouter } from 'next/navigation';
import React from 'react';
-import type { IBanner, Member } from 'types/myMeeting';
+import { Member } from 'type-clyde/meeting';
+import { Banner } from 'type-clyde/meeting/banner';
import { Button } from '../../../../components/ui/Button';
@@ -15,7 +16,7 @@ const ModalUserList = ({
showPublicSelect = false,
}: {
memberList: Member[];
- currentUser: IBanner;
+ currentUser: Banner;
className?: string;
handlePrefetchProfile: (member: Member) => Promise
;
showPublicSelect?: boolean;
diff --git a/src/app/(user-page)/my-meeting/_features/Participated.tsx b/src/app/(user-page)/my-meeting/_features/Participated.tsx
index 3323fd5e..bfa9205a 100644
--- a/src/app/(user-page)/my-meeting/_features/Participated.tsx
+++ b/src/app/(user-page)/my-meeting/_features/Participated.tsx
@@ -6,7 +6,7 @@ import { useInfiniteMyMeetingParticipatedQueries } from '@/hooks/queries/useMyMe
import { translateCategoryNameToEng } from '@/util/searchFilter';
import Link from 'next/link';
import { useRouter } from 'next/navigation';
-import { IMyMeetingParticipated } from 'types/myMeeting';
+import { MyMeetingParticipated } from 'type-clyde/meeting/myMeeting';
import CardRightSection from './CardRightSection';
import LeaveMeetingButton from './LeaveMeetingButton';
@@ -15,7 +15,7 @@ import PendingStatusChip from './PendingStatusChip';
import MeetingListSkeleton from './skeletons/SkeletonMeetingList';
interface IStatusOverlay {
- meeting: IMyMeetingParticipated;
+ meeting: MyMeetingParticipated;
}
const Participated = () => {
@@ -44,16 +44,16 @@ const Participated = () => {
// 클릭 불가능한 상태인지 확인하는 함수 (오버레이 표시 여부만 결정)
const isDisabledStatus = (
- status: IMyMeetingParticipated['myMemberStatus'],
+ status: MyMeetingParticipated['myMemberStatus'],
): boolean => {
return status === 'REJECTED' || status === 'EXPEL';
};
// 모임 상세 페이지 URL 생성 함수
- const getMeetingDetailUrl = (meeting: IMyMeetingParticipated) =>
+ const getMeetingDetailUrl = (meeting: MyMeetingParticipated) =>
`/meeting/${translateCategoryNameToEng(meeting.categoryTitle)}/${meeting.meetingId}`;
- const handleCardClick = (meeting: IMyMeetingParticipated) => {
+ const handleCardClick = (meeting: MyMeetingParticipated) => {
router.push(getMeetingDetailUrl(meeting));
};
diff --git a/src/app/(user-page)/my-meeting/_features/PendingSection.tsx b/src/app/(user-page)/my-meeting/_features/PendingSection.tsx
index 7668a087..b6fbe7a0 100644
--- a/src/app/(user-page)/my-meeting/_features/PendingSection.tsx
+++ b/src/app/(user-page)/my-meeting/_features/PendingSection.tsx
@@ -4,7 +4,7 @@ import { translateCategoryNameToEng } from '@/util/searchFilter';
import { ChevronRight } from 'lucide-react';
import { useRouter } from 'next/navigation';
import { useState } from 'react';
-import { IMyMeetingPending } from 'types/myMeeting';
+import { MyMeetingPending } from 'type-clyde/meeting/myMeeting';
import PendingStatusChip from './PendingStatusChip';
import MeetingListSkeleton from './skeletons/SkeletonMeetingList';
@@ -21,10 +21,10 @@ const PendingSection = () => {
isLoading,
} = useInfiniteMyMeetingPendingQueries();
- const getMeetingDetailUrl = (meeting: IMyMeetingPending) =>
+ const getMeetingDetailUrl = (meeting: MyMeetingPending) =>
`/meeting/${translateCategoryNameToEng(meeting.categoryTitle)}/${meeting.meetingId}`;
- const handleCardClick = (meeting: IMyMeetingPending) => {
+ const handleCardClick = (meeting: MyMeetingPending) => {
router.push(getMeetingDetailUrl(meeting));
};
diff --git a/src/app/(user-page)/my-meeting/_features/UserItem.tsx b/src/app/(user-page)/my-meeting/_features/UserItem.tsx
index ada30423..e26cc498 100644
--- a/src/app/(user-page)/my-meeting/_features/UserItem.tsx
+++ b/src/app/(user-page)/my-meeting/_features/UserItem.tsx
@@ -1,7 +1,7 @@
import { Button } from '@/components/ui/Button';
import { Tag } from '@/components/ui/Tag';
import Image from 'next/image';
-import type { UserData } from 'types/myMeeting';
+import { UserData } from 'type-clyde/meeting';
const UserItem = ({
user,
diff --git a/src/app/(user-page)/my-meeting/_features/Writable.tsx b/src/app/(user-page)/my-meeting/_features/Writable.tsx
index 8a5ae1b8..c8a31ef2 100644
--- a/src/app/(user-page)/my-meeting/_features/Writable.tsx
+++ b/src/app/(user-page)/my-meeting/_features/Writable.tsx
@@ -5,7 +5,7 @@ import useInfiniteScroll from '@/hooks/common/useInfiniteScroll';
import { useInfiniteWritableMyMeetingsQueries } from '@/hooks/queries/useMyCommentQueries';
import { translateCategoryNameToEng } from '@/util/searchFilter';
import { useRouter } from 'next/navigation';
-import { MyComment } from 'types/myComment';
+import { MyComment } from 'type-clyde/meeting/comment';
import MeetingListSkeleton from './skeletons/SkeletonMeetingList';
diff --git a/src/app/(user-page)/my-meeting/_features/Written.tsx b/src/app/(user-page)/my-meeting/_features/Written.tsx
index d5d18c19..fefae0ad 100644
--- a/src/app/(user-page)/my-meeting/_features/Written.tsx
+++ b/src/app/(user-page)/my-meeting/_features/Written.tsx
@@ -6,7 +6,7 @@ import useInfiniteScroll from '@/hooks/common/useInfiniteScroll';
import { useInfiniteWrittenMyCommentQueries } from '@/hooks/queries/useMyCommentQueries';
import { translateCategoryNameToEng } from '@/util/searchFilter';
import { useRouter } from 'next/navigation';
-import { MyComment } from 'types/myComment';
+import { MyComment } from 'type-clyde/meeting/comment';
import MeetingListSkeleton from './skeletons/SkeletonMeetingList';
diff --git a/src/app/(user-page)/my-meeting/comments/page.tsx b/src/app/(user-page)/my-meeting/comments/page.tsx
index f7a474e4..0b1f66d2 100644
--- a/src/app/(user-page)/my-meeting/comments/page.tsx
+++ b/src/app/(user-page)/my-meeting/comments/page.tsx
@@ -9,8 +9,8 @@ import {
getMyMeetingsWritableComments,
getMyWrittenComments,
} from 'service/api/mycomments';
-import { Paginated } from 'types/meeting';
-import { MyComment } from 'types/myComment';
+import { Paginated } from 'type-clyde/common/pagination';
+import { MyComment } from 'type-clyde/meeting/comment';
import Tab from '../_features/Tab';
import Writable from '../_features/Writable';
diff --git a/src/app/(user-page)/my-meeting/likes/page.tsx b/src/app/(user-page)/my-meeting/likes/page.tsx
index efbfdbd8..ce102959 100644
--- a/src/app/(user-page)/my-meeting/likes/page.tsx
+++ b/src/app/(user-page)/my-meeting/likes/page.tsx
@@ -5,8 +5,8 @@ import {
dehydrate,
} from '@tanstack/react-query';
import { getMyMeetingLikes } from 'service/api/mymeeting';
-import { Paginated } from 'types/meeting';
-import { IMyMeetingLikes } from 'types/myMeeting';
+import { Paginated } from 'type-clyde/common/pagination';
+import { MyMeetingLikes } from 'type-clyde/meeting/myMeeting';
import Likes from '../_features/Likes';
@@ -16,7 +16,7 @@ export default async function LikesPage() {
await queryClient.prefetchInfiniteQuery({
queryKey: myMeetingKeys.likes(),
queryFn: ({ pageParam }) => getMyMeetingLikes(pageParam),
- getNextPageParam: (lastPage: Paginated) =>
+ getNextPageParam: (lastPage: Paginated) =>
lastPage.nextCursor ?? false,
initialPageParam: 0,
});
diff --git a/src/app/(user-page)/my-meeting/my/@modal/(.)user-list/page.tsx b/src/app/(user-page)/my-meeting/my/@modal/(.)user-list/page.tsx
index 7c846d8e..b30a2460 100644
--- a/src/app/(user-page)/my-meeting/my/@modal/(.)user-list/page.tsx
+++ b/src/app/(user-page)/my-meeting/my/@modal/(.)user-list/page.tsx
@@ -6,8 +6,7 @@ import { useBannerQueries } from '@/hooks/queries/useMyPageQueries';
import { useQueryClient } from '@tanstack/react-query';
import { useRouter } from 'next/navigation';
import { getMyMeetingMemberProfile } from 'service/api/mymeeting';
-import { Paginated } from 'types/meeting';
-import { IMyMeetingManage, Member } from 'types/myMeeting';
+import { Member } from 'type-clyde/meeting';
import ModalUserList from '../../../_features/ModalUserList';
diff --git a/src/app/(user-page)/my-meeting/my/page.tsx b/src/app/(user-page)/my-meeting/my/page.tsx
index 2b897315..ea281fa5 100644
--- a/src/app/(user-page)/my-meeting/my/page.tsx
+++ b/src/app/(user-page)/my-meeting/my/page.tsx
@@ -1,4 +1,3 @@
-import NotYet from '@/components/common/NotYet';
import { myMeetingKeys } from '@/hooks/queries/useMyMeetingQueries';
import { QUERY_KEYS } from '@/hooks/queries/useMyPageQueries';
import {
@@ -13,12 +12,12 @@ import {
getMyMeetingPending,
} from 'service/api/mymeeting';
import { getBanner } from 'service/api/mypageProfile';
-import { Paginated } from 'types/meeting';
+import { Paginated } from 'type-clyde/common/pagination';
import {
- IMyMeetingManage,
- IMyMeetingParticipated,
- IMyMeetingPending,
-} from 'types/myMeeting';
+ MyMeetingManage,
+ MyMeetingParticipated,
+ MyMeetingPending,
+} from 'type-clyde/meeting/myMeeting';
import Created from '../_features/Created';
import Participated from '../_features/Participated';
@@ -44,7 +43,7 @@ export default async function Page({
await queryClient.prefetchInfiniteQuery({
queryKey: myMeetingKeys.manage(),
queryFn: ({ pageParam }) => getMyMeetingManage(pageParam),
- getNextPageParam: (lastPage: Paginated) =>
+ getNextPageParam: (lastPage: Paginated) =>
lastPage.nextCursor ?? false,
initialPageParam: 0,
});
@@ -54,14 +53,14 @@ export default async function Page({
queryClient.prefetchInfiniteQuery({
queryKey: myMeetingKeys.participated(),
queryFn: ({ pageParam }) => getMyMeetingParticipated(pageParam),
- getNextPageParam: (lastPage: Paginated) =>
+ getNextPageParam: (lastPage: Paginated) =>
lastPage.nextCursor ?? false,
initialPageParam: 0,
}),
queryClient.prefetchInfiniteQuery({
queryKey: myMeetingKeys.pending(),
queryFn: ({ pageParam }) => getMyMeetingPending(pageParam),
- getNextPageParam: (lastPage: Paginated) =>
+ getNextPageParam: (lastPage: Paginated) =>
lastPage.nextCursor ?? false,
initialPageParam: 0,
}),
diff --git a/src/app/(user-page)/mypage/_features/BasicEdit.tsx b/src/app/(user-page)/mypage/_features/BasicEdit.tsx
index 8aecb793..5ddc495e 100644
--- a/src/app/(user-page)/mypage/_features/BasicEdit.tsx
+++ b/src/app/(user-page)/mypage/_features/BasicEdit.tsx
@@ -6,6 +6,7 @@ import { useUpdateProfileMutation } from '@/hooks/mutations/useMyPageMutation';
import { useProfileQuery } from '@/hooks/queries/useMyPageQueries';
import { useCallback, useEffect, useState } from 'react';
import { Controller, useForm, useWatch } from 'react-hook-form';
+import { UserBaseInfo } from 'type-clyde/user/profile';
import {
AGE_OPTIONS,
@@ -16,7 +17,6 @@ import {
MAX_INTRO_LENGTH,
POSITION_OPTIONS,
} from '../../../../constants/mypage/mypageConstant';
-import { IFormData } from '../../../../types/mypageTypes';
interface BasicEditProps {
onEditComplete: () => void;
@@ -45,7 +45,7 @@ const BasicEdit = ({ onEditComplete }: BasicEditProps) => {
setValue,
reset,
formState: { errors, isSubmitting },
- } = useForm({
+ } = useForm({
defaultValues: {
name: '',
intro: '',
@@ -107,7 +107,7 @@ const BasicEdit = ({ onEditComplete }: BasicEditProps) => {
}, [profileData, reset]);
// 폼 제출 처리
- const onSubmit = (data: IFormData) => {
+ const onSubmit = (data: UserBaseInfo) => {
// 글자 수 검사 추가
if (data.intro && data.intro.length > MAX_INTRO_LENGTH) {
return;
diff --git a/src/app/(user-page)/mypage/_features/ContactEdit.tsx b/src/app/(user-page)/mypage/_features/ContactEdit.tsx
index 48b08008..75b976ba 100644
--- a/src/app/(user-page)/mypage/_features/ContactEdit.tsx
+++ b/src/app/(user-page)/mypage/_features/ContactEdit.tsx
@@ -6,8 +6,7 @@ import { useUpdateContactInfoMutation } from '@/hooks/mutations/useMyPageMutatio
import { useProfileQuery } from '@/hooks/queries/useMyPageQueries';
import { useEffect } from 'react';
import { useForm } from 'react-hook-form';
-
-import { IContactInfoUpdateRequest } from '../../../../types/mypageTypes';
+import { ContactInfo } from 'type-clyde/user/profile';
interface ContactEditProps {
onEditComplete: () => void;
@@ -20,7 +19,7 @@ const ContactEdit = ({ onEditComplete }: ContactEditProps) => {
handleSubmit,
reset,
formState: { errors, isSubmitting },
- } = useForm({
+ } = useForm({
defaultValues: {
phone: '',
kakao: '',
@@ -55,7 +54,7 @@ const ContactEdit = ({ onEditComplete }: ContactEditProps) => {
}, [profileData, reset]);
// 폼 제출 처리
- const onSubmit = (data: IContactInfoUpdateRequest) => {
+ const onSubmit = (data: ContactInfo) => {
updateContact(data, {
onSuccess: () => {
onEditComplete();
diff --git a/src/app/(user-page)/mypage/_features/PasswordEdit.tsx b/src/app/(user-page)/mypage/_features/PasswordEdit.tsx
index e0301a76..e56b14ae 100644
--- a/src/app/(user-page)/mypage/_features/PasswordEdit.tsx
+++ b/src/app/(user-page)/mypage/_features/PasswordEdit.tsx
@@ -4,8 +4,7 @@ import { Button } from '@/components/ui/Button';
import { Input } from '@/components/ui/Input';
import { useUpdatePasswordMutation } from '@/hooks/mutations/useMyPageMutation';
import { useForm } from 'react-hook-form';
-
-import { IPasswordUpdateRequest } from '../../../../types/mypageTypes';
+import { PasswordUpdateRequest } from 'type-clyde/user/profile';
interface PasswordEditProps {
onEditComplete: () => void;
@@ -19,7 +18,7 @@ const PasswordEdit = ({ onEditComplete }: PasswordEditProps) => {
watch,
setError,
formState: { errors, isSubmitting },
- } = useForm({
+ } = useForm({
defaultValues: {
currentPassword: '',
newPassword: '',
@@ -35,7 +34,7 @@ const PasswordEdit = ({ onEditComplete }: PasswordEditProps) => {
useUpdatePasswordMutation();
// 폼 제출 처리
- const onSubmit = (data: IPasswordUpdateRequest) => {
+ const onSubmit = (data: PasswordUpdateRequest) => {
// 비밀번호 일치 여부 확인
if (data.newPassword !== data.passwordCheck) {
setError('passwordCheck', {
diff --git a/src/app/(user-page)/mypage/_features/TechStackEdit.tsx b/src/app/(user-page)/mypage/_features/TechStackEdit.tsx
index 6068eb9e..12130c9b 100644
--- a/src/app/(user-page)/mypage/_features/TechStackEdit.tsx
+++ b/src/app/(user-page)/mypage/_features/TechStackEdit.tsx
@@ -6,7 +6,7 @@ import { useProfileQuery } from '@/hooks/queries/useMyPageQueries';
import useTechSelection from '@/hooks/useTechSelection';
import { getIconColor, getIconsByCategory } from '@/util/getIconDetail';
import React, { useEffect, useState } from 'react';
-import { CategoryType } from 'types/techStack';
+import { CategoryType } from 'type-clyde/common/icon/techStacks';
import CategoryTabs from '../../../../components/ui/tech-stack/tech-stack-components/CategoryTabs';
import SelectedTechList from '../../../../components/ui/tech-stack/tech-stack-components/SelectedTechList';
diff --git a/src/app/login/_features/EmailInput.tsx b/src/app/login/_features/EmailInput.tsx
index 244a78c1..f9047dc5 100644
--- a/src/app/login/_features/EmailInput.tsx
+++ b/src/app/login/_features/EmailInput.tsx
@@ -5,14 +5,14 @@ import useDebounce from '@/hooks/useDebounde';
import { loginEmailValidation } from '@/util/validation';
import { useCallback } from 'react';
import { useWatch } from 'react-hook-form';
-import { IInputProps, ILoginFormData } from 'types/auth';
+import { InputProps, LoginFormData } from 'type-clyde/auth/form';
const EmailInput = ({
control,
register,
errors,
trigger,
-}: IInputProps) => {
+}: InputProps) => {
const email = useWatch({ control, name: 'email' });
useDebounce({
diff --git a/src/app/login/_features/PasswordInput.tsx b/src/app/login/_features/PasswordInput.tsx
index 465085e8..2c2d3961 100644
--- a/src/app/login/_features/PasswordInput.tsx
+++ b/src/app/login/_features/PasswordInput.tsx
@@ -5,14 +5,14 @@ import useDebounce from '@/hooks/useDebounde';
import { loginPasswordValidation } from '@/util/validation';
import { useCallback } from 'react';
import { useWatch } from 'react-hook-form';
-import { IInputProps, ILoginFormData } from 'types/auth';
+import { InputProps, LoginFormData } from 'type-clyde/auth/form';
const PasswordInput = ({
control,
register,
errors,
trigger,
-}: IInputProps) => {
+}: InputProps) => {
const password = useWatch({ control, name: 'password' });
useDebounce({
diff --git a/src/app/meeting/[category]/[id]/page.tsx b/src/app/meeting/[category]/[id]/page.tsx
index f5280e9f..d9956dd6 100644
--- a/src/app/meeting/[category]/[id]/page.tsx
+++ b/src/app/meeting/[category]/[id]/page.tsx
@@ -7,13 +7,10 @@ import {
QueryClient,
dehydrate,
} from '@tanstack/react-query';
-import {
- Comment,
- getCommentsCount,
- getCommentsMeeting,
-} from 'service/api/comment';
+import { getCommentsCount, getCommentsMeeting } from 'service/api/comment';
import { getMeetingDetail, getMeetingDetailManager } from 'service/api/meeting';
-import { Paginated } from 'types/meeting';
+import { Paginated } from 'type-clyde/common/pagination';
+import { Comment } from 'type-clyde/meeting/comment';
import CardWrapper from '../../_features/CardWrapper';
import ContentLabel from '../../_features/ContextLabel';
diff --git a/src/app/meeting/[category]/page.tsx b/src/app/meeting/[category]/page.tsx
index f804533f..9f26321b 100644
--- a/src/app/meeting/[category]/page.tsx
+++ b/src/app/meeting/[category]/page.tsx
@@ -9,7 +9,9 @@ import {
import { MEETING_TYPES } from 'constants/meeting-form/meetingConstants';
import { notFound } from 'next/navigation';
import { getMeetings, getTopMeetings } from 'service/api/meeting';
-import { Paginated, SearchMeeting } from 'types/meeting';
+import { Paginated } from 'type-clyde/common/pagination';
+import { SortFieldType } from 'type-clyde/common/pagination';
+import { SearchMeeting } from 'type-clyde/meeting';
import MeetingList from '../_features/MeetingList';
import RecommendMeeting from '../_features/RecommendMeeting';
@@ -22,7 +24,7 @@ async function MeetingListPage({ params }: { params: { category: string } }) {
const initialSearchQueryObj = {
keyword: '',
skillArray: [],
- sortField: 'CREATED',
+ sortField: 'CREATED' as SortFieldType,
lastMeetingId: 0,
size: 4,
};
diff --git a/src/app/meeting/_features/MeetingList.tsx b/src/app/meeting/_features/MeetingList.tsx
index bc4f6fe1..f00bd891 100644
--- a/src/app/meeting/_features/MeetingList.tsx
+++ b/src/app/meeting/_features/MeetingList.tsx
@@ -18,8 +18,10 @@ import { keepPreviousData } from '@tanstack/react-query';
import Image from 'next/image';
import { useParams, useRouter } from 'next/navigation';
import { ChangeEvent, useCallback, useState } from 'react';
-import type { IMeetingSearchCondition, SearchMeeting } from 'types/meeting';
+import { SortFieldType } from 'type-clyde/common/pagination';
+import { MeetingSearchCondition } from '../../../type-clyde/meeting/search';
+import { SearchMeeting } from '../../../type-clyde/meeting/search';
import MeetingExtraInfo from './MeetingExtraInfo';
import NoResultsMeeting from './NoResultsMeeting';
import MeetingListSkeleton from './skeleton/MeetingListSkeleton';
@@ -28,7 +30,7 @@ const MeetingList = () => {
const { category } = useParams();
const categoryStr = Array.isArray(category) ? category[0] : category;
- const [searchQuery, setSearchQuery] = useState({
+ const [searchQuery, setSearchQuery] = useState({
keyword: '',
skillArray: [],
sortField: 'CREATED',
@@ -64,7 +66,7 @@ const MeetingList = () => {
// 필터 변경 핸들러
const handleSearchOption = useCallback(
- (newQuery: Partial) => {
+ (newQuery: Partial) => {
// 기존 키워드와 동일하다면 API 호출하지 않도록 처리
setSearchQuery((prev) => {
if (prev.keyword === newQuery.keyword) {
@@ -144,7 +146,9 @@ const MeetingList = () => {
handleSearchOption({ sortField: value })}
+ onChange={(value) =>
+ handleSearchOption({ sortField: value as SortFieldType })
+ }
trigger="생성순"
variant="doubleArrow"
sideOffset={8}
diff --git a/src/app/meeting/_features/RecommendMeeting.tsx b/src/app/meeting/_features/RecommendMeeting.tsx
index 888f8756..3e03029b 100644
--- a/src/app/meeting/_features/RecommendMeeting.tsx
+++ b/src/app/meeting/_features/RecommendMeeting.tsx
@@ -9,7 +9,7 @@ import {
} from '@/util/searchFilter';
import Image from 'next/image';
import { useParams, useRouter } from 'next/navigation';
-import type { TopMeeting } from 'types/meeting';
+import { TopMeeting } from 'type-clyde/meeting/response';
import RecommendMeetingSkeleton from './skeleton/RecommentMeetingSkeleton';
diff --git a/src/app/meeting/_features/ReviewItem.tsx b/src/app/meeting/_features/ReviewItem.tsx
index 5b6630d4..cd3f0eb2 100644
--- a/src/app/meeting/_features/ReviewItem.tsx
+++ b/src/app/meeting/_features/ReviewItem.tsx
@@ -1,7 +1,7 @@
import RatingStars from '@/components/common/review/RatingStars';
import { getRelativeTime } from '@/util/date';
import Image from 'next/image';
-import { Comment } from 'service/api/comment';
+import { Comment } from 'type-clyde/meeting/comment';
interface ReviewItemProps {
className?: string;
diff --git a/src/app/meeting/_features/form/MeetingForm.tsx b/src/app/meeting/_features/form/MeetingForm.tsx
index 20c8875b..ed56ea33 100644
--- a/src/app/meeting/_features/form/MeetingForm.tsx
+++ b/src/app/meeting/_features/form/MeetingForm.tsx
@@ -23,7 +23,7 @@ import { MEETING_TYPES } from 'constants/category/category';
import { useRouter } from 'next/navigation';
import React, { useEffect, useRef, useState } from 'react';
import { FormProvider, useForm } from 'react-hook-form';
-import { CreateMeetingPayload, UpdateMeetingPayload } from 'types/meetingForm';
+import { CreateMeetingPayload, UpdateMeetingPayload } from 'type-clyde/meeting';
interface MeetingFormProps {
mode: 'create' | 'edit';
diff --git a/src/app/meeting/_features/form/form-filed/CategoryField.tsx b/src/app/meeting/_features/form/form-filed/CategoryField.tsx
index 8521476b..584444c1 100644
--- a/src/app/meeting/_features/form/form-filed/CategoryField.tsx
+++ b/src/app/meeting/_features/form/form-filed/CategoryField.tsx
@@ -2,7 +2,7 @@ import { cn } from '@/util/cn';
import { MEETING_TYPES } from 'constants/category/category';
import { Check } from 'lucide-react';
import { Controller, useFormContext } from 'react-hook-form';
-import { CreateMeetingPayload } from 'types/meetingForm';
+import { CreateMeetingPayload } from 'type-clyde/meeting';
import { meetingTypeValidation } from '../validation';
diff --git a/src/app/meeting/_features/form/form-filed/DateField.tsx b/src/app/meeting/_features/form/form-filed/DateField.tsx
index 70f10f1e..4ddef299 100644
--- a/src/app/meeting/_features/form/form-filed/DateField.tsx
+++ b/src/app/meeting/_features/form/form-filed/DateField.tsx
@@ -1,6 +1,6 @@
import { DatePicker } from '@/components/ui/form/DatePicker';
import { useFormContext } from 'react-hook-form';
-import { CreateMeetingPayload } from 'types/meetingForm';
+import { CreateMeetingPayload } from 'type-clyde/meeting';
import { startDateValidation } from '../validation';
diff --git a/src/app/meeting/_features/form/form-filed/DescriptionField.tsx b/src/app/meeting/_features/form/form-filed/DescriptionField.tsx
index 9b48f9e4..c0241f83 100644
--- a/src/app/meeting/_features/form/form-filed/DescriptionField.tsx
+++ b/src/app/meeting/_features/form/form-filed/DescriptionField.tsx
@@ -1,6 +1,6 @@
import { cn } from '@/util/cn';
import { useFormContext } from 'react-hook-form';
-import { CreateMeetingPayload } from 'types/meetingForm';
+import { CreateMeetingPayload } from 'type-clyde/meeting';
import { descriptionValidation } from '../validation';
diff --git a/src/app/meeting/_features/form/form-filed/ImageField.tsx b/src/app/meeting/_features/form/form-filed/ImageField.tsx
index 7bed75fb..b22e730f 100644
--- a/src/app/meeting/_features/form/form-filed/ImageField.tsx
+++ b/src/app/meeting/_features/form/form-filed/ImageField.tsx
@@ -7,7 +7,7 @@ import { Image as ImageIcon } from 'lucide-react';
import Image from 'next/image';
import React, { useEffect, useState } from 'react';
import { useFormContext } from 'react-hook-form';
-import { CreateMeetingPayload } from 'types/meetingForm';
+import { CreateMeetingPayload } from 'type-clyde/meeting';
import { imageValidationMessages } from '../validation';
diff --git a/src/app/meeting/_features/form/form-filed/LocationField.tsx b/src/app/meeting/_features/form/form-filed/LocationField.tsx
index 8068cd11..f21cd92b 100644
--- a/src/app/meeting/_features/form/form-filed/LocationField.tsx
+++ b/src/app/meeting/_features/form/form-filed/LocationField.tsx
@@ -1,6 +1,6 @@
import { Input } from '@/components/ui/Input';
import { useFormContext } from 'react-hook-form';
-import { CreateMeetingPayload } from 'types/meetingForm';
+import { CreateMeetingPayload } from 'type-clyde/meeting';
import { locationValidation } from '../validation';
diff --git a/src/app/meeting/_features/form/form-filed/MemberLimitField.tsx b/src/app/meeting/_features/form/form-filed/MemberLimitField.tsx
index 51f51ef2..0a939892 100644
--- a/src/app/meeting/_features/form/form-filed/MemberLimitField.tsx
+++ b/src/app/meeting/_features/form/form-filed/MemberLimitField.tsx
@@ -1,7 +1,7 @@
import { Input } from '@/components/ui/Input';
import { Users } from 'lucide-react';
import { useFormContext } from 'react-hook-form';
-import { CreateMeetingPayload } from 'types/meetingForm';
+import { CreateMeetingPayload } from 'type-clyde/meeting';
import { memberLimitValidation } from '../validation';
diff --git a/src/app/meeting/_features/form/form-filed/PrivacyField.tsx b/src/app/meeting/_features/form/form-filed/PrivacyField.tsx
index 4aff9136..c44220a1 100644
--- a/src/app/meeting/_features/form/form-filed/PrivacyField.tsx
+++ b/src/app/meeting/_features/form/form-filed/PrivacyField.tsx
@@ -2,7 +2,7 @@ import { cn } from '@/util/cn';
import { PRIVACY_OPTIONS } from 'constants/meeting-form/meetingConstants';
import { Check } from 'lucide-react';
import { Controller, useFormContext } from 'react-hook-form';
-import { CreateMeetingPayload } from 'types/meetingForm';
+import { CreateMeetingPayload } from 'type-clyde/meeting';
const PrivacyField = () => {
const {
diff --git a/src/app/meeting/_features/form/form-filed/RequireApprovalField.tsx b/src/app/meeting/_features/form/form-filed/RequireApprovalField.tsx
index 2fcd84a3..78228533 100644
--- a/src/app/meeting/_features/form/form-filed/RequireApprovalField.tsx
+++ b/src/app/meeting/_features/form/form-filed/RequireApprovalField.tsx
@@ -2,7 +2,7 @@ import { cn } from '@/util/cn';
import { JOIN_METHODS } from 'constants/meeting-form/meetingConstants';
import { Check } from 'lucide-react';
import { Controller, useFormContext } from 'react-hook-form';
-import { CreateMeetingPayload } from 'types/meetingForm';
+import { CreateMeetingPayload } from 'type-clyde/meeting';
const RequireApprovalField = () => {
const {
diff --git a/src/app/meeting/_features/form/form-filed/TechStackField.tsx b/src/app/meeting/_features/form/form-filed/TechStackField.tsx
index f21b5b20..dc551859 100644
--- a/src/app/meeting/_features/form/form-filed/TechStackField.tsx
+++ b/src/app/meeting/_features/form/form-filed/TechStackField.tsx
@@ -1,6 +1,6 @@
import TechSelector from '@/components/ui/tech-stack/TechSelector';
import { Controller, useFormContext } from 'react-hook-form';
-import { CreateMeetingPayload } from 'types/meetingForm';
+import { CreateMeetingPayload } from 'type-clyde/meeting';
import { TECH_STACK_CONFIG, techStackValidation } from '../validation';
diff --git a/src/app/meeting/_features/form/form-filed/TitleField.tsx b/src/app/meeting/_features/form/form-filed/TitleField.tsx
index cd342437..73f0546f 100644
--- a/src/app/meeting/_features/form/form-filed/TitleField.tsx
+++ b/src/app/meeting/_features/form/form-filed/TitleField.tsx
@@ -1,6 +1,6 @@
import { Input } from '@/components/ui/Input';
import { useFormContext } from 'react-hook-form';
-import { CreateMeetingPayload } from 'types/meetingForm';
+import { CreateMeetingPayload } from 'type-clyde/meeting';
import { meetingTitleValidation } from '../validation';
diff --git a/src/app/meeting/edit-meeting/[id]/page.tsx b/src/app/meeting/edit-meeting/[id]/page.tsx
index 65e23bb7..3d8f5c3e 100644
--- a/src/app/meeting/edit-meeting/[id]/page.tsx
+++ b/src/app/meeting/edit-meeting/[id]/page.tsx
@@ -5,7 +5,7 @@ import { useQueryClient } from '@tanstack/react-query';
import { useEffect, useState } from 'react';
import { MeetingDetail } from 'service/api/meeting';
import { getMeetingDetail } from 'service/api/meeting';
-import { CreateMeetingPayload } from 'types/meetingForm';
+import { CreateMeetingPayload } from 'type-clyde/meeting';
import MeetingForm from '../../_features/form/MeetingForm';
diff --git a/src/app/signup/_features/EmailInput.tsx b/src/app/signup/_features/EmailInput.tsx
index fa6d77a8..b8841956 100644
--- a/src/app/signup/_features/EmailInput.tsx
+++ b/src/app/signup/_features/EmailInput.tsx
@@ -6,9 +6,9 @@ import useDebounce from '@/hooks/useDebounde';
import { emailValidation } from '@/util/validation';
import { Dispatch, SetStateAction, useCallback, useEffect } from 'react';
import { useWatch } from 'react-hook-form';
-import { IInputProps, ISignupFormData } from 'types/auth';
+import { InputProps, SignupFormData } from 'type-clyde/auth/form';
-export interface IEmailInputProps extends IInputProps {
+export interface IEmailInputProps extends InputProps {
isEmailCheck: boolean;
handleEmailCheck: () => void;
setIsEmailCheck: Dispatch>;
diff --git a/src/app/signup/_features/NameInput.tsx b/src/app/signup/_features/NameInput.tsx
index 692291a6..f9e38fac 100644
--- a/src/app/signup/_features/NameInput.tsx
+++ b/src/app/signup/_features/NameInput.tsx
@@ -4,15 +4,9 @@ import { Button } from '@/components/ui/Button';
import { Input } from '@/components/ui/Input';
import useDebounce from '@/hooks/useDebounde';
import { nameValidation } from '@/util/validation';
-import { Dispatch, SetStateAction, useCallback, useEffect } from 'react';
+import { useCallback, useEffect } from 'react';
import { useWatch } from 'react-hook-form';
-import { IInputProps, ISignupFormData } from 'types/auth';
-
-export interface INameInputProps extends IInputProps {
- isNameCheck: boolean;
- handleNameCheck: () => void;
- setIsNameCheck: Dispatch>;
-}
+import { NameInputProps } from 'type-clyde/auth/form';
const NameInput = ({
register,
@@ -22,7 +16,7 @@ const NameInput = ({
setIsNameCheck,
control,
trigger,
-}: INameInputProps) => {
+}: NameInputProps) => {
const name = useWatch({ control, name: 'name' });
// 중복확인 로직 수행
diff --git a/src/app/signup/_features/PasswordCheckInput.tsx b/src/app/signup/_features/PasswordCheckInput.tsx
index fa9bffaa..5908a0b6 100644
--- a/src/app/signup/_features/PasswordCheckInput.tsx
+++ b/src/app/signup/_features/PasswordCheckInput.tsx
@@ -5,8 +5,7 @@ import useDebounce from '@/hooks/useDebounde';
import { passwordCheckValidation } from '@/util/validation';
import { useCallback } from 'react';
import { useWatch } from 'react-hook-form';
-
-import { IPasswordInputProps } from './PasswordInput';
+import { PasswordInputProps } from 'type-clyde/auth/form';
const PasswordCheckInput = ({
register,
@@ -14,7 +13,7 @@ const PasswordCheckInput = ({
errors,
control,
trigger,
-}: IPasswordInputProps) => {
+}: PasswordInputProps) => {
const password = useWatch({ control, name: 'password' });
const passwordCheck = useWatch({ control, name: 'passwordCheck' });
diff --git a/src/app/signup/_features/PasswordInput.tsx b/src/app/signup/_features/PasswordInput.tsx
index 34d322db..baae055d 100644
--- a/src/app/signup/_features/PasswordInput.tsx
+++ b/src/app/signup/_features/PasswordInput.tsx
@@ -5,19 +5,7 @@ import useDebounce from '@/hooks/useDebounde';
import { passwordValidation } from '@/util/validation';
import { useCallback } from 'react';
import { useWatch } from 'react-hook-form';
-import { IInputProps, ISignupFormData } from 'types/auth';
-
-export interface IPasswordInputProps extends IInputProps {
- dirtyFields: Partial<
- Readonly<{
- name?: boolean | undefined;
- email?: boolean | undefined;
- position?: boolean | undefined;
- password?: boolean | undefined;
- passwordCheck?: boolean | undefined;
- }>
- >;
-}
+import { PasswordInputProps } from 'type-clyde/auth/form';
const PasswordInput = ({
register,
@@ -25,7 +13,7 @@ const PasswordInput = ({
trigger,
dirtyFields,
errors,
-}: IPasswordInputProps) => {
+}: PasswordInputProps) => {
const password = useWatch({ control, name: 'password' });
useDebounce({
value: password,
diff --git a/src/app/signup/_features/PositionInput.tsx b/src/app/signup/_features/PositionInput.tsx
index 2314db28..9d103453 100644
--- a/src/app/signup/_features/PositionInput.tsx
+++ b/src/app/signup/_features/PositionInput.tsx
@@ -1,10 +1,11 @@
import { PositionSelect } from '@/components/common/PositionSelect';
import { positionValidation } from '@/util/validation';
import { useWatch } from 'react-hook-form';
-import { IInputProps, ISignupFormData } from 'types/auth';
+import { UserPosition } from 'type-clyde/auth/form';
+import { InputProps, SignupFormData } from 'type-clyde/auth/form';
-interface IPositionInputProps extends IInputProps {
- handleClickPosition: (value: string) => void;
+interface IPositionInputProps extends InputProps {
+ handleClickPosition: (value: UserPosition) => void;
}
const PositionInput = ({
@@ -13,7 +14,8 @@ const PositionInput = ({
errors,
register,
}: IPositionInputProps) => {
- const position = useWatch({ control, name: 'position' });
+ const position = useWatch({ control, name: 'position' }) as UserPosition;
+
return (