-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[RAC-471] chore: 폴더 구조 재정리 #343
base: develop
Are you sure you want to change the base?
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
Warning Rate limit exceeded@khj0426 has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 14 minutes and 47 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (72)
Walkthrough이 변경 사항은 여러 컴포넌트의 import 경로를 새로운 디렉토리 구조에 맞게 수정하는 데 중점을 두고 있습니다. 구체적으로, Changes
Possibly related PRs
Poem
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 17
🧹 Outside diff range and nitpick comments (26)
src/app/apply-wanted-senior/(components)/(steps)/Postgradu.tsx (1)
6-6
: 컴포넌트 구조 개선 제안폼 컴포넌트들의 구조가 개선되었지만, 몇 가지 제안사항이 있습니다:
- NextBtn 컴포넌트의 경로에 'comon' 오타가 있습니다
- Form 컴포넌트들은 좀 더 세분화된 카테고리로 구성될 수 있습니다 (예: 입력, 선택, 검색 등)
Also applies to: 9-9
src/components/Modal/RiseUpModal/RiseUpModal.tsx (1)
3-6
: 폼 컴포넌트 구조 변경이 잘 이루어졌습니다SingleForm에서 Form으로의 구조 변경이 잘 이루어졌습니다. 다만, 다음 사항들을 고려해보시면 좋겠습니다:
- README.md에 새로운 폴더 구조에 대한 문서화 추가
- Form 디렉토리 내부의 컴포넌트들에 대한 역할과 사용법 가이드 작성
src/components/Modal/ModalContent/SuccessFail/SuccessFail.tsx (2)
5-6
: 상대 경로를 절대 경로로 변경하는 것을 고려해주세요.여러 개의 상위 디렉토리 참조(
../
)를 사용하는 것은 파일 이동 시 오류가 발생하기 쉽습니다. 다음과 같이 절대 경로를 사용하는 것이 좋습니다:-import acceptImage from '../../../../../public/cState.png'; -import acceptNonImage from '../../../../../public/state.png'; +import acceptImage from '@/public/cState.png'; +import acceptNonImage from '@/public/state.png';
Line range hint
18-41
: 접근성 및 스타일링 개선이 필요합니다.
- 실패 케이스의 이미지 alt 텍스트가 성공 케이스와 동일합니다.
- 인라인 스타일을 styled-components로 분리하면 코드 가독성이 향상됩니다.
-<div style={{ textAlign: 'center', marginTop: '1rem' }}> +<ImageWrapper> <Image src={acceptNonImage} width={70} height={70} - alt="멘토링 승인 축하 이미지" + alt="멘토링 거절 실패 이미지" /> -</div> +</ImageWrapper> // styled-components 추가 +const ImageWrapper = styled.div` + text-align: center; + margin-top: 1rem; +`;src/app/junior/mentoring/page.tsx (1)
Line range hint
24-31
: 인증 관련 상수들을 분리하는 것이 좋습니다.인증 관련 URL과 키값들을 상수 파일로 분리하면 유지보수가 용이해집니다.
+// src/constants/auth.ts +export const AUTH_CONSTANTS = { + KAKAO_AUTH_URL: 'https://kauth.kakao.com/oauth/authorize', + REDIRECT_PATH: '/login/oauth2/code/kakao', +}; // page.tsx -const REDIRECT_URI = window.location.origin + '/login/oauth2/code/kakao'; -const link = `https://kauth.kakao.com/oauth/authorize?client_id=${REST_API_KEY}&redirect_uri=${REDIRECT_URI}&response_type=code`; +const REDIRECT_URI = window.location.origin + AUTH_CONSTANTS.REDIRECT_PATH; +const link = `${AUTH_CONSTANTS.KAKAO_AUTH_URL}?client_id=${REST_API_KEY}&redirect_uri=${REDIRECT_URI}&response_type=code`;src/app/senior/mentoring/page.tsx (1)
Line range hint
24-34
: 인증 로직 중복을 제거해주세요.주니어 페이지와 시니어 페이지에서 동일한 인증 로직이 중복되어 있습니다. 이를 커스텀 훅이나 유틸리티 함수로 분리하면 좋겠습니다.
+// src/utils/auth.ts +export const handleUnauthorizedAccess = () => { + const REST_API_KEY = process.env.NEXT_PUBLIC_REST_API_KEY; + const REDIRECT_URI = window.location.origin + AUTH_CONSTANTS.REDIRECT_PATH; + const link = `${AUTH_CONSTANTS.KAKAO_AUTH_URL}?client_id=${REST_API_KEY}&redirect_uri=${REDIRECT_URI}&response_type=code`; + window.location.href = link; +}; // page.tsx useEffect(() => { getAccessToken().then((tkn) => { if (!tkn) { - const REST_API_KEY = process.env.NEXT_PUBLIC_REST_API_KEY; - const REDIRECT_URI = window.location.origin + '/login/oauth2/code/kakao'; - const link = `https://kauth.kakao.com/oauth/authorize?client_id=${REST_API_KEY}&redirect_uri=${REDIRECT_URI}&response_type=code`; - window.location.href = link; + handleUnauthorizedAccess(); return; } }); }, []);src/app/signout/(components)/signout-finish/index.tsx (1)
Line range hint
15-31
: 회원탈퇴 로직 개선이 필요합니다.다음 사항들을 개선하면 좋을 것 같습니다:
- TODO 댓글에서 언급된 대로 mutation으로 전환
- API 호출 실패 시 에러 처리 추가
- 사용자 피드백 제공 (로딩 상태, 성공/실패 메시지)
예시 코드:
const signOutMutation = useMutation({ mutationFn: async () => { if (!signOutInfo) throw new Error('회원탈퇴 정보가 없습니다'); return withAuthInstance.post('/auth/signout/KAKAO', { reason: signOutInfo.signOutReason, etc: signOutInfo.etc, }); }, onSuccess: () => { _deleteAuthContent(); router.push('/'); }, onError: (error) => { console.error('회원탈퇴 실패:', error); // 에러 처리 로직 추가 } }); const _handleSignOutFinish = () => { signOutMutation.mutate(); };src/components/Modal/ModalContent/LoginRequest/LoginRequest.tsx (1)
Line range hint
13-22
: 로그인 로직의 안정성 개선이 필요합니다.다음과 같은 개선사항을 제안드립니다:
- window 객체 타입 체크 개선
- 환경 변수 존재 여부 확인
- URL 인코딩 처리
function LoginRequest(props: loginRequestProps) { const handleClick = () => { if (!REST_API_KEY) { console.error('REST_API_KEY가 설정되지 않았습니다'); return; } props.modalHandler(); if (typeof window === 'undefined') return; const REDIRECT_URI = encodeURIComponent( `${window.location.origin}/login/oauth2/code/kakao` ); const link = `https://kauth.kakao.com/oauth/authorize?client_id=${REST_API_KEY}&redirect_uri=${REDIRECT_URI}&response_type=code`; window.location.href = link; }; }src/components/Modal/SuggestModal/SuggestModal.tsx (1)
Line range hint
14-19
: 라우팅 로직 개선이 필요합니다.현재 라우팅 로직이 인라인으로 구현되어 있어 재사용성이 떨어집니다. 상수로 분리하여 관리하면 좋을 것 같습니다.
const ROUTES = { SENIOR_AUTH: '/senior/auth', SENIOR_PROFILE_EDIT: '/senior/edit-profile' } as const; function SuggestModal(props: SuggestModalProps) { const router = useRouter(); const seniorAuth = () => { router.push(ROUTES.SENIOR_AUTH); }; const ProfileinfoHandler = () => { router.push(ROUTES.SENIOR_PROFILE_EDIT); }; }src/components/Form/KeywordForm/KeywordForm.tsx (2)
15-15
: 버튼 컴포넌트의 위치가 적절히 이동되었습니다.
SelectedBtn
컴포넌트가comon/Button
디렉토리로 이동된 것이 확인되었습니다. 이는 재사용 가능한 UI 컴포넌트의 적절한 분류입니다.하지만 KeywordForm 자체의 위치도 검토가 필요할 수 있습니다. 이 컴포넌트가 특정 도메인에 종속적이라면
/domain
디렉토리로의 이동을 고려해보세요.
Line range hint
1-1
: 폴더 구조 개선을 위한 추가 제안현재의 구조 개선이 좋은 방향으로 진행되고 있습니다만, 다음과 같은 명확한 분류 기준을 제안드립니다:
/components/comon/
: 순수하게 재사용 가능한 UI 컴포넌트/components/domain/{domain}/
: 특정 도메인 로직이 포함된 컴포넌트/components/page-specific/
: 특정 페이지에서만 사용되는 컴포넌트이러한 구조는:
- 컴포넌트의 재사용성을 명확히 함
- 도메인 로직의 격리를 용이하게 함
- 페이지별 종속성을 명확히 함
src/components/Modal/FullModal/FullModal.tsx (1)
3-17
: 모달 관련 컴포넌트들의 재배치가 적절한지 검토가 필요합니다.컴포넌트들이 다음과 같이 재구성되었습니다:
Modal/ModalContent
: UI/표시 관련 컴포넌트domain/mentoring
: 비즈니스 로직 관련 컴포넌트이러한 분류가 각 컴포넌트의 책임과 역할에 맞게 이루어졌는지 검토해주세요.
특히 다음 사항들을 고려해보시기 바랍니다:
MentoringSpec
과 같은 컴포넌트들이 도메인 로직을 포함하고 있는지- UI 전용 컴포넌트들이
ModalContent
에 올바르게 배치되었는지src/app/mypage/salary/page.tsx (1)
2-2
: import 경로 스타일의 일관성 개선 필요현재 코드에서 절대 경로와 상대 경로가 혼용되고 있습니다:
@/app/mypage/(components)/SalaryBox
(절대 경로)../components/salaryProfile/salaryProfile
(상대 경로)@/components/comon/Header/BackHeader
(절대 경로)코드베이스의 유지보수성을 높이기 위해 일관된 import 경로 스타일을 사용하는 것이 좋습니다. 가능하면 절대 경로를 사용하는 것을 권장드립니다.
-import SalaryProfile from '../(components)/salaryProfile/salaryProfile'; +import SalaryProfile from '@/app/mypage/(components)/salaryProfile/salaryProfile';Also applies to: 9-9, 10-10
src/app/signout/(components)/signout-reason/index.tsx (2)
8-8
: 사용하지 않는 import 제거 필요
TextForm
컴포넌트를 import 하고 있지만 코드 내에서 사용되지 않고 있습니다. 불필요한 import는 제거하는 것이 좋습니다.-import TextForm from '@/components/Form/TextForm';
1-1
: 폴더 구조 재정리에 대한 제안폴더 구조를 재정리하는 과정에서 다음 사항들을 고려해 주시면 좋겠습니다:
- 디렉토리 명명 규칙의 일관성 ('comon' vs 'common')
- import 경로 스타일의 통일 (절대 경로 vs 상대 경로)
- 컴포넌트 분류 기준의 명확한 문서화
이러한 가이드라인을
README.md
에 추가하면 향후 개발 과정에서 일관성을 유지하는 데 도움이 될 것 같습니다.src/app/mentoring-apply/[seniorId]/question/page.tsx (1)
Line range hint
41-41
: 주석 처리된 코드 정리 필요
GoogleAnalytics
컴포넌트가 주석 처리되어 있습니다. 불필요한 주석은 제거하는 것이 좋습니다.- {/* <GoogleAnalytics /> */}
src/app/search-results/page.tsx (1)
Line range hint
41-43
: 에러 처리 개선 필요현재 에러 처리가 console.error로만 되어 있습니다. 사용자 경험을 위해 적절한 에러 처리가 필요합니다.
에러 상태를 관리하고 사용자에게 적절한 피드백을 제공하는 것을 추천드립니다:
+const [error, setError] = useState<string | null>(null); axios.get(url) .then((res) => { setIsLoading(false); setData(res.data.data.seniorSearchResponses); setLength(res.data.data.totalElements); + setError(null); }) .catch((err) => { - console.error(err); + setError('검색 중 오류가 발생했습니다. 다시 시도해 주세요.'); + setIsLoading(false); });Also applies to: 71-73
src/app/senior/account/page.tsx (1)
2-2
: 컴포넌트 import 경로가 체계적으로 정리되었습니다.폴더 구조 개선 작업에 따라 다음과 같이 컴포넌트들의 경로가 적절히 재구성되었습니다:
- Form 관련 컴포넌트: Form 디렉토리로 이동
- 공통 컴포넌트: comon 디렉토리로 이동
'comon'이라는 디렉토리명이 'common'의 오타로 보입니다. 향후 수정을 고려해보시면 좋을 것 같습니다.
Also applies to: 8-8, 9-9, 10-10
src/components/Modal/ModalContent/SInfoModify/SInfoModify.tsx (2)
Line range hint
91-116
: 이미지 업로드 처리 로직 개선 필요
submitHandler
함수에서 이미지 업로드와 계정 정보 업데이트가 비동기적으로 처리되고 있어 잠재적인 레이스 컨디션이 발생할 수 있습니다.다음과 같이 수정하는 것을 제안합니다:
const submitHandler = async () => { let submitImgUrl = data?.data?.profile; if (inputImg) { - changeImage( + await new Promise((resolve) => changeImage( { profileFile: inputImg, }, { onSuccess: ({ data }) => { submitImgUrl = data.data.profileUrl; + resolve(); }, }, - ); + )); } updateSeniorAccount( // ... rest of the code ); };
Line range hint
123-127
: 계좌번호 유효성 검증 추가 필요계좌번호 입력 시 유효성 검증이 누락되어 있습니다. 잘못된 형식의 계좌번호가 입력될 수 있습니다.
계좌번호 입력 필드에 유효성 검증을 추가하는 것을 제안합니다:
<InfoFieldForm $width="95%" type="text" value={accNumber} + pattern="[0-9]*" + maxLength={14} + placeholder="'-' 없이 숫자만 입력해주세요" onChange={(e) => { + const value = e.currentTarget.value.replace(/[^0-9]/g, ''); - setAccNumber(e.currentTarget.value); + setAccNumber(value); }} />src/components/Bar/TapBar/JuniorTab/JTabBar.tsx (2)
Line range hint
32-43
: 날짜 변환 로직 개선 필요
convertDateType
함수가 날짜 문자열 파싱을 수동으로 처리하고 있어 오류가 발생하기 쉽습니다.다음과 같이 수정하는 것을 제안합니다:
-function convertDateType(date: string) { - if (!date) return new Date(); - const parts = date.split('-'); - const year = parseInt(parts[0]); - const month = parseInt(parts[1]) - 1; - const day = parseInt(parts[2]); - const hour = parseInt(parts[3]); - const minute = parseInt(parts[4]); - - return new Date(year, month, day, hour, minute); +function convertDateType(date: string) { + if (!date) return new Date(); + const [year, month, day, hour, minute] = date.split('-').map(Number); + return new Date(year, month - 1, day, hour, minute); }
Line range hint
146-166
: 모달 핸들링 로직 중복 제거 필요모달 처리 로직이 중복되어 있어 유지보수가 어려울 수 있습니다.
다음과 같이 공통 함수로 추출하는 것을 제안합니다:
+const handleModalOpen = (mentoringId: number) => { + setModalType('junior'); + setSelectedMentoringId(mentoringId); +}; // 사용 예시: <ModalBtn type={'show'} btnText={'내 신청서 보기'} modalHandler={() => { closeJunuiorMentoringSpec(() => {}); }} - onClick={() => { - setModalType('junior'); - setSelectedMentoringId(el.mentoringId); - }} + onClick={() => handleModalOpen(el.mentoringId)} />src/app/mentoring-apply/[seniorId]/schedule/page.tsx (2)
Line range hint
45-71
: 에러 처리 개선 필요API 호출 시 에러 처리가 불충분하며, 사용자에게 적절한 피드백이 제공되지 않습니다.
다음과 같이 에러 처리를 개선하는 것을 제안합니다:
+const handleError = (error: any) => { + if (error.response?.status === 401) { + removeTokens(); + location.reload(); + return; + } + // 사용자에게 에러 메시지 표시 + alert('일정을 불러오는데 실패했습니다. 다시 시도해주세요.'); +}; useEffect(() => { getAccessToken().then((accessTkn) => { if (accessTkn) { axios .get( `${process.env.NEXT_PUBLIC_SERVER_URL}/senior/${seniorId}/times`, { headers: { Authorization: `Bearer ${accessTkn}`, }, }, ) .then((response) => { const res = response.data; if (res.code == 'SNR200') { setSNickname(res.data.nickName); setTimeArr(res.data.times); } if (findExCode(res.code)) { - removeTokens(); - location.reload(); - return; + handleError({ response: { status: 401 } }); } }) - .catch((err) => { - console.error(err); - }); + .catch(handleError); } }); }, []);
Line range hint
196-284
: 스타일드 컴포넌트 분리 필요스타일드 컴포넌트가 페이지 컴포넌트와 같은 파일에 있어 코드의 가독성과 유지보수성이 떨어집니다.
스타일드 컴포넌트를 별도의 파일로 분리하는 것을 제안합니다:
styles.ts
파일을 생성하여 스타일드 컴포넌트를 이동- 페이지 컴포넌트에서 스타일을 임포트하여 사용
예시:
// styles.ts export const MASContainer = styled.div<{ $timeArr: Array<TimeObj> }>` // ... existing styles `; export const MASTitle = styled.div` // ... existing styles `; // ... other styled componentssrc/components/Modal/ModalContent/ProfileModify/ProfileModify.tsx (1)
11-11
: 상대 경로를 절대 경로로 변경하는 것이 좋습니다.현재 x_icon의 import 경로가 많은 상위 디렉토리 참조를 포함하고 있습니다. 유지보수성을 높이기 위해 절대 경로로 변경하는 것이 좋습니다.
-import x_icon from '../../../../../public/x.png'; +import x_icon from '@/public/x.png';src/app/senior/edit-profile/page.tsx (1)
Line range hint
1-450
: 페이지 컴포넌트의 복잡도가 높습니다.현재 페이지 컴포넌트가 많은 책임을 가지고 있어 복잡도가 높습니다. 다음과 같은 리팩토링을 제안합니다:
- 폼 로직을 별도의 커스텀 훅으로 분리
- 모달 관련 로직을 별도의 컴포넌트로 분리
- 스타일드 컴포넌트들을 별도의 파일로 분리
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (82)
src/app/add-chat-link/page.tsx
(1 hunks)src/app/add-profile/page.tsx
(1 hunks)src/app/add-time/page.tsx
(1 hunks)src/app/apply-wanted-senior/(components)/(modal)/WishSeniorApplyAgreeModal.tsx
(1 hunks)src/app/apply-wanted-senior/(components)/(steps)/Field.tsx
(1 hunks)src/app/apply-wanted-senior/(components)/(steps)/Info.tsx
(1 hunks)src/app/apply-wanted-senior/(components)/(steps)/Lab.tsx
(1 hunks)src/app/apply-wanted-senior/(components)/(steps)/Phone.tsx
(1 hunks)src/app/apply-wanted-senior/(components)/(steps)/Postgradu.tsx
(1 hunks)src/app/apply-wanted-senior/(components)/(steps)/Professor.tsx
(1 hunks)src/app/apply-wanted-senior/(components)/(steps)/Submit.tsx
(1 hunks)src/app/apply-wanted-senior/page.tsx
(1 hunks)src/app/junior/mentoring/page.tsx
(1 hunks)src/app/layout.tsx
(2 hunks)src/app/login/oauth2/code/kakao/page.tsx
(1 hunks)src/app/mentoring-apply/[seniorId]/(components)/SelectTime/SelectTime.tsx
(1 hunks)src/app/mentoring-apply/[seniorId]/pay/page.js
(1 hunks)src/app/mentoring-apply/[seniorId]/question/page.tsx
(1 hunks)src/app/mentoring-apply/[seniorId]/schedule/page.tsx
(1 hunks)src/app/mypage/(components)/Profile/Profile.tsx
(1 hunks)src/app/mypage/(components)/Profile/ProfileManage/JuniorManage/JuniorManage.tsx
(1 hunks)src/app/mypage/(components)/Profile/ProfileManage/SeniorManage/SeniorManage.tsx
(1 hunks)src/app/mypage/(components)/ProfileStateChange/CustomerCenter.tsx
(1 hunks)src/app/mypage/(components)/SalaryBox/SalaryBox.tsx
(1 hunks)src/app/mypage/edit/page.tsx
(2 hunks)src/app/mypage/page.tsx
(1 hunks)src/app/mypage/salary/page.tsx
(1 hunks)src/app/page.tsx
(1 hunks)src/app/search-results/page.tsx
(1 hunks)src/app/senior/account/done/page.tsx
(1 hunks)src/app/senior/account/page.tsx
(1 hunks)src/app/senior/auth/page.tsx
(1 hunks)src/app/senior/edit-profile/page.tsx
(1 hunks)src/app/senior/info/[seniorId]/SeniorInfo.tsx
(1 hunks)src/app/senior/mentoring/page.tsx
(1 hunks)src/app/signout/(components)/signout-finish/index.tsx
(1 hunks)src/app/signout/(components)/signout-info/index.tsx
(1 hunks)src/app/signout/(components)/signout-reason/index.tsx
(1 hunks)src/app/signout/(components)/signout-type-select/index.tsx
(1 hunks)src/app/signup/done/page.tsx
(1 hunks)src/app/signup/select/common-info/(components)/ServiceCondition/ServiceCondition.tsx
(1 hunks)src/app/signup/select/common-info/auth/page.tsx
(1 hunks)src/app/signup/select/common-info/matching-info/page.tsx
(2 hunks)src/app/signup/select/common-info/page.tsx
(2 hunks)src/app/signup/select/common-info/senior-info/field/page.tsx
(1 hunks)src/app/signup/select/common-info/senior-info/lab/page.tsx
(2 hunks)src/app/signup/select/common-info/senior-info/major/page.tsx
(1 hunks)src/app/signup/select/page.tsx
(1 hunks)src/components/Bar/TapBar/JuniorTab/JTabBar.styled.ts
(1 hunks)src/components/Bar/TapBar/JuniorTab/JTabBar.tsx
(2 hunks)src/components/Bar/TapBar/SeniorTab/STabBar.tsx
(1 hunks)src/components/Bar/UnivTapBar/UnivTapBar.styled.ts
(1 hunks)src/components/Bar/UnivTapBar/UnivTapBar.tsx
(1 hunks)src/components/Form/KeywordForm/KeywordForm.tsx
(1 hunks)src/components/Form/NicknameForm/NicknameForm.tsx
(1 hunks)src/components/Form/PhoneNumForm/PhoneNumForm.tsx
(1 hunks)src/components/Form/ProfileForm/ProfileForm.tsx
(1 hunks)src/components/Form/SearchForm/SearchForm.tsx
(1 hunks)src/components/Form/SelectForm/SelectForm.tsx
(1 hunks)src/components/Form/TextareaForm/TextareaForm.tsx
(1 hunks)src/components/Modal/DimmedModal/DimmedModal.tsx
(1 hunks)src/components/Modal/DimmedModal/NotJunior/NotJunior.tsx
(1 hunks)src/components/Modal/FullModal/FullModal.tsx
(1 hunks)src/components/Modal/ModalContent/AccountReactivation/AccountReactivation.tsx
(1 hunks)src/components/Modal/ModalContent/AddTime/AddTime.tsx
(1 hunks)src/components/Modal/ModalContent/ChangeJunior/ChangeJunior.tsx
(1 hunks)src/components/Modal/ModalContent/LoginRequest/LoginRequest.tsx
(1 hunks)src/components/Modal/ModalContent/MBestCaseContent/MBestCaseContent.tsx
(1 hunks)src/components/Modal/ModalContent/MProfileContent/MProfileContent.tsx
(1 hunks)src/components/Modal/ModalContent/MentoringLogin/MentoringLogin.tsx
(1 hunks)src/components/Modal/ModalContent/MyLoginRequest/MyLoginRequest.tsx
(1 hunks)src/components/Modal/ModalContent/PayAmount/PayAmount.tsx
(1 hunks)src/components/Modal/ModalContent/ProfileModify/ProfileModify.tsx
(2 hunks)src/components/Modal/ModalContent/SInfoModify/SInfoModify.tsx
(2 hunks)src/components/Modal/ModalContent/SNotRegistered/SNotRegistered.tsx
(1 hunks)src/components/Modal/ModalContent/SelectCalendar/SelectCalendar.tsx
(1 hunks)src/components/Modal/ModalContent/SeniorMyProfile/SeniorMyProfile.tsx
(1 hunks)src/components/Modal/ModalContent/SuccessFail/SuccessFail.tsx
(1 hunks)src/components/Modal/RiseUpModal/RiseUpModal.tsx
(1 hunks)src/components/Modal/SearchModal/SearchModal.tsx
(1 hunks)src/components/Modal/ShortRiseUpModal/ShortRiseUpModal.tsx
(1 hunks)src/components/Modal/SuggestModal/SuggestModal.tsx
(1 hunks)
⛔ Files not processed due to max files limit (16)
- src/components/NaverPoint/NaverPoint.tsx
- src/components/comon/Button/ModalBtn/ModalBtn.tsx
- src/components/comon/Button/SelectedBtn/SelectedBtn.tsx
- src/components/comon/Checkbox/CheckBox.tsx
- src/components/comon/Footer/Footer.tsx
- src/components/comon/Header/BackHeader/BackHeader.tsx
- src/components/comon/LogoLayer/LogoLayer.tsx
- src/components/comon/Text/AuthLabeledText/AuthLabeledText.tsx
- src/components/domain/mentoring/MentoringApply/MentoringApply.tsx
- src/components/domain/mentoring/MentoringNotYet/MentoringNotYet.tsx
- src/components/domain/mentoring/MentoringSpec/JmentoringSpec/MentoringSpec.tsx
- src/components/domain/mentoring/MentoringSpec/SmentoringSpec/SmentoringSpec.tsx
- src/components/domain/mentoring/SmentoringAccept/SmentoringAccept.tsx
- src/components/domain/mentoring/SmentoringCancel/SmentoringCancel.tsx
- src/components/domain/senior/SeniorCard/ProfileCard/ProfileCard.tsx
- src/components/domain/senior/SeniorList/index.tsx
✅ Files skipped from review due to trivial changes (38)
- src/components/Modal/DimmedModal/NotJunior/NotJunior.tsx
- src/app/apply-wanted-senior/page.tsx
- src/components/Modal/ModalContent/PayAmount/PayAmount.tsx
- src/components/Modal/ModalContent/MProfileContent/MProfileContent.tsx
- src/components/Modal/ShortRiseUpModal/ShortRiseUpModal.tsx
- src/app/mypage/(components)/Profile/Profile.tsx
- src/components/Modal/ModalContent/SNotRegistered/SNotRegistered.tsx
- src/components/Bar/UnivTapBar/UnivTapBar.styled.ts
- src/app/signup/select/page.tsx
- src/components/Bar/TapBar/JuniorTab/JTabBar.styled.ts
- src/app/mypage/(components)/SalaryBox/SalaryBox.tsx
- src/components/Form/SelectForm/SelectForm.tsx
- src/app/signout/(components)/signout-info/index.tsx
- src/app/page.tsx
- src/components/Modal/ModalContent/MBestCaseContent/MBestCaseContent.tsx
- src/components/Form/TextareaForm/TextareaForm.tsx
- src/app/mentoring-apply/[seniorId]/(components)/SelectTime/SelectTime.tsx
- src/app/mypage/(components)/Profile/ProfileManage/SeniorManage/SeniorManage.tsx
- src/app/mypage/(components)/Profile/ProfileManage/JuniorManage/JuniorManage.tsx
- src/app/apply-wanted-senior/(components)/(steps)/Submit.tsx
- src/app/apply-wanted-senior/(components)/(steps)/Professor.tsx
- src/app/signup/select/common-info/senior-info/field/page.tsx
- src/components/Modal/ModalContent/AccountReactivation/AccountReactivation.tsx
- src/components/Modal/ModalContent/AddTime/AddTime.tsx
- src/app/apply-wanted-senior/(components)/(steps)/Lab.tsx
- src/components/Form/ProfileForm/ProfileForm.tsx
- src/app/senior/auth/page.tsx
- src/app/mypage/edit/page.tsx
- src/app/signup/select/common-info/auth/page.tsx
- src/app/senior/info/[seniorId]/SeniorInfo.tsx
- src/app/signup/done/page.tsx
- src/components/Modal/ModalContent/SelectCalendar/SelectCalendar.tsx
- src/components/Modal/ModalContent/ChangeJunior/ChangeJunior.tsx
- src/app/mypage/page.tsx
- src/components/Modal/SearchModal/SearchModal.tsx
- src/app/signup/select/common-info/(components)/ServiceCondition/ServiceCondition.tsx
- src/app/mentoring-apply/[seniorId]/pay/page.js
- src/app/add-chat-link/page.tsx
🧰 Additional context used
🪛 Biome (1.9.4)
src/app/layout.tsx
[error] 72-73: Avoid passing content using the dangerouslySetInnerHTML prop.
Setting content using code can expose users to cross-site scripting (XSS) attacks
(lint/security/noDangerouslySetInnerHtml)
🔇 Additional comments (26)
src/app/junior/mentoring/page.tsx (1)
13-13
: 공통 컴포넌트 경로 변경이 적절합니다.
LogoLayer
컴포넌트를 common 디렉토리로 이동한 것은 폴더 구조 개선에 부합합니다.
src/app/senior/mentoring/page.tsx (1)
13-13
: 공통 컴포넌트 경로 변경이 적절합니다.
LogoLayer
컴포넌트를 common 디렉토리로 이동한 것은 폴더 구조 개선에 부합합니다.
src/app/signout/(components)/signout-finish/index.tsx (1)
8-8
: 공통 컴포넌트 경로 변경이 올바르게 적용되었습니다.
폴더 구조 개선 목적에 맞게 NextBtn 컴포넌트가 common 폴더로 이동되었습니다.
src/components/Modal/ModalContent/LoginRequest/LoginRequest.tsx (1)
10-10
: 이미지 경로가 올바르게 수정되었습니다.
public 폴더로의 상대 경로가 정확하게 조정되었습니다.
src/components/Modal/SuggestModal/SuggestModal.tsx (1)
3-6
: import 경로가 폴더 구조에 맞게 수정되었습니다.
x_icon과 NextBtn 컴포넌트의 경로가 새로운 폴더 구조에 맞게 올바르게 수정되었습니다.
src/app/signup/select/common-info/page.tsx (1)
2-3
: 컴포넌트 import 경로가 적절히 구성되었습니다
Form 관련 컴포넌트들이 @/components/Form
디렉토리로, 페이지 특화 컴포넌트가 ./(components)
디렉토리로 잘 구분되어 있습니다.
src/app/apply-wanted-senior/(components)/(steps)/Phone.tsx (1)
7-8
: 폼 관련 컴포넌트들의 구조가 개선되었습니다
phoneNumSchema
와 TextForm
이 Form
디렉토리 아래로 이동되어 더 명확한 구조를 가지게 되었습니다.
src/app/mypage/(components)/ProfileStateChange/CustomerCenter.tsx (1)
2-3
: 컴포넌트 import 경로가 적절히 개선되었습니다
동일한 기능 영역 내의 컴포넌트들은 상대 경로를 사용하도록 변경되어, 컴포넌트 간의 관계가 더 명확해졌습니다.
src/app/apply-wanted-senior/(components)/(modal)/WishSeniorApplyAgreeModal.tsx (1)
3-3
:
디렉토리 이름에 오타가 있습니다
'comon'이라는 디렉토리 이름에 오타가 있는 것으로 보입니다. 일반적으로 'common'이라고 표기하는 것이 올바른 영문 표기법입니다.
다음과 같이 수정을 제안합니다:
-import NextBtn from '@/components/comon/Button/NextBtn';
+import NextBtn from '@/components/common/Button/NextBtn';
src/app/signout/(components)/signout-type-select/index.tsx (1)
Line range hint 8-93
: 컴포넌트 구현이 잘 되어있습니다
회원 유형 선택 로직과 UI 구현이 깔끔하게 되어 있습니다. 특히 다음과 같은 부분들이 잘 구현되어 있습니다:
- 선택된 이미지에 대한 시각적 피드백
- 타입 선택 전 다음 버튼 비활성화
- 컨텍스트를 활용한 상태 관리
src/components/Form/PhoneNumForm/PhoneNumForm.tsx (1)
Line range hint 1-93
: 폼 구현이 모범적입니다
다음과 같은 우수한 구현 사항들이 확인됩니다:
- react-hook-form과 yup을 활용한 체계적인 폼 검증
- 실시간 유효성 검사와 피드백
- 기본값 처리와 상태 관리가 잘 구현됨
src/app/layout.tsx (2)
8-10
: 분석 컴포넌트들의 경로가 일관되게 변경되었습니다.
GA와 GTM 컴포넌트들이 comon
디렉토리로 이동된 것이 확인되었습니다. 이는 PR의 폴더 구조 재정리 목적에 부합합니다.
72-73
: 보안: JSON-LD 스크립트의 안전한 사용을 확인했습니다.
dangerouslySetInnerHTML
이 JSON-LD 데이터를 위해 사용되고 있습니다. 이는 SEO를 위한 일반적이고 안전한 사용 사례입니다. JSON 데이터가 하드코딩되어 있어 XSS 위험이 없습니다.
🧰 Tools
🪛 Biome (1.9.4)
[error] 72-73: Avoid passing content using the dangerouslySetInnerHTML prop.
Setting content using code can expose users to cross-site scripting (XSS) attacks
(lint/security/noDangerouslySetInnerHtml)
src/app/signup/select/common-info/matching-info/page.tsx (1)
2-4
: 컴포넌트 분류 일관성 검토가 필요합니다.
대부분의 컴포넌트들이 comon
디렉토리로 이동되었으나, MatchingForm
은 Form
디렉토리에 위치해 있습니다. 이러한 분류 기준이 명확한지 확인이 필요합니다.
폼 컴포넌트들의 일관된 위치 선정을 위해 다음 기준을 제안합니다:
- 재사용 가능한 공통 폼 컴포넌트:
/comon/Form/
- 특정 도메인의 폼 컴포넌트:
/domain/{domain}/Form/
✅ Verification successful
Let me check the location of common components to verify if there's a clear pattern between /comon/
and /Form/
directories.
컴포넌트 분류가 일관되게 구성되어 있습니다.
검토 결과, 현재 컴포넌트 구조가 명확한 패턴을 따르고 있습니다:
/components/Form/
디렉토리에는 모든 폼 관련 컴포넌트들이 일관되게 위치해 있습니다 (BankForm, MatchingForm, ProfileForm 등)/components/comon/
에는 버튼, 체크박스, 드롭다운 등 일반적인 UI 컴포넌트들이 위치해 있습니다
MatchingForm
이 /components/Form/
디렉토리에 위치한 것은 현재의 구조와 일치하며 적절합니다.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Form 컴포넌트들의 위치 패턴 확인
echo "Form 관련 컴포넌트들의 위치:"
fd -e tsx -e ts "Form" | grep -i "form"
Length of output: 1600
Script:
#!/bin/bash
# Check components in comon directory
echo "Components in comon directory:"
fd -e tsx -e ts . src/components/comon
# Check if there are any form-related components in comon
echo -e "\nForm-related components in comon directory:"
fd -e tsx -e ts . src/components/comon | grep -i form
Length of output: 4366
src/components/Modal/ModalContent/MyLoginRequest/MyLoginRequest.tsx (1)
3-7
: 이미지 경로 변경 검증이 필요합니다.
import 경로가 한 단계 더 상위로 이동되었습니다. 다음 사항들을 확인해주세요:
- 이미지들이 새로운 경로에서 정상적으로 로드되는지 확인
LoginReq
이미지가 실제로 사용되지 않는지 검증
✅ Verification successful
이미지 경로 변경이 정상적으로 이루어졌습니다.
검증 결과:
LoginReq
이미지 파일은 코드에서 사용되지 않으므로 제거가 적절합니다- 현재 사용 중인 이미지들(
x_icon
,loginBg
,kakao
,logo
)의 경로가 올바르게 변경되었습니다 LoginReq
라는 문자열은 단순히 HTML 요소의 id로만 사용되고 있어 이미지 제거와는 무관합니다
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Verify if LoginReq image is actually unused
rg -l "LoginReq" --type tsx --type jsx
Length of output: 66
Script:
#!/bin/bash
# Search for LoginReq in all files
rg "LoginReq"
# Also check for any image imports in the MyLoginRequest component
rg -A 2 "import.*from.*public" src/components/Modal/ModalContent/MyLoginRequest/MyLoginRequest.tsx
Length of output: 3593
src/components/Modal/DimmedModal/DimmedModal.tsx (1)
3-14
: 컴포넌트 구조 재배치가 일관성 있게 이루어졌는지 확인이 필요합니다.
다음과 같은 패턴으로 컴포넌트들이 재구성되었습니다:
- Modal 관련 컴포넌트들은
Modal/ModalContent
디렉토리로 - 멘토링 도메인 컴포넌트들은
domain/mentoring
디렉토리로
이러한 구조가 프로젝트 전반에 걸쳐 일관되게 적용되었는지 확인이 필요합니다.
✅ Verification successful
Based on the results, I can now generate the final response as the verification is complete. The output shows clear organization patterns:
모달과 멘토링 컴포넌트들의 구조가 일관되게 구성되어 있음을 확인했습니다.
- 모달 관련 컴포넌트들이
components/Modal
디렉토리 아래 일관되게 구성되어 있으며, 하위에ModalContent
,DimmedModal
등 목적별로 잘 분류되어 있습니다. - 멘토링 도메인 컴포넌트들은
components/domain/mentoring
디렉토리 아래 체계적으로 구성되어 있습니다.
현재의 구조 변경이 프로젝트의 일관성을 잘 유지하고 있습니다.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Verify component organization consistency
echo "Checking Modal components location..."
fd -e tsx -e jsx . | grep -i "modal"
echo "Checking Mentoring components location..."
fd -e tsx -e jsx . | grep -i "mentoring"
Length of output: 4795
src/components/Form/NicknameForm/NicknameForm.tsx (1)
12-12
: 디렉토리 이름의 일관성 검토 필요
'comon'이라는 디렉토리 이름이 'common'의 오타로 보입니다. 대소문자를 구분하는 환경에서 문제가 발생할 수 있으므로, 프로젝트 전체에서 일관된 이름을 사용하는 것이 좋습니다.
src/app/signup/select/common-info/senior-info/lab/page.tsx (1)
2-4
: 컴포넌트 구조 일관성 검토 필요
일부 컴포넌트는 'comon' 디렉토리에 있고, 일부는 'Form' 디렉토리에 있습니다. 컴포넌트 구조의 일관성을 검토해주세요.
✅ Verification successful
Let me gather more information about the component organization, particularly focusing on the 'comon' directory structure.
Based on the directory structure analysis, I can now provide a final response about the component organization.
컴포넌트 구조가 의도적으로 분리되어 있음을 확인했습니다
현재 컴포넌트 구조는 다음과 같이 명확한 의도를 가지고 구분되어 있습니다:
Form/
디렉토리: 입력 양식과 관련된 특화된 컴포넌트들 (TextForm, InputForm, SearchForm 등)comon/
디렉토리: 공통 UI 요소들 (Button, Header, Footer, Toast 등)
따라서 현재의 구조는 일관성 있게 잘 구성되어 있으며, 수정이 필요하지 않습니다.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check component organization patterns
echo "Checking Form components location..."
fd -e tsx -e ts "Form" src/components
echo "Checking Button components location..."
fd -e tsx -e ts "Button" src/components
Length of output: 1584
Script:
#!/bin/bash
# Check comon directory structure and components
echo "Checking comon directory structure..."
fd . src/components/comon
# Check if there are any other Form-like components in comon
echo -e "\nChecking Form-like components in comon..."
rg -l "Form" src/components/comon
Length of output: 5579
src/app/apply-wanted-senior/(components)/(steps)/Field.tsx (1)
9-9
: import 경로 변경이 적절합니다.
컴포넌트 폴더 구조 개선을 위한 import 경로 변경이 잘 이루어졌습니다.
다음 스크립트를 실행하여 NextBtn 컴포넌트의 새로운 위치를 확인합니다:
✅ Verification successful
NextBtn 컴포넌트의 import 경로가 정확히 일치하며 일관성 있게 사용되고 있습니다.
실제 컴포넌트 위치(src/components/comon/Button/NextBtn/NextBtn.tsx
)와 import 문의 경로(@/components/comon/Button/NextBtn
)가 정확히 일치하며, 같은 디렉토리 내의 다른 파일들에서도 동일한 import 경로를 사용하고 있어 구조적 일관성이 확인되었습니다.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# NextBtn 컴포넌트의 새 위치 확인
fd "NextBtn.tsx" "src/components"
Length of output: 79
Script:
#!/bin/bash
# NextBtn 컴포넌트의 실제 경로와 import 문 비교 확인
rg "import.*NextBtn.*from.*@/components" src/app/apply-wanted-senior -A 2
Length of output: 2735
src/components/Modal/ModalContent/SeniorMyProfile/SeniorMyProfile.tsx (2)
14-18
: 공통 컴포넌트 import 경로 변경이 적절합니다.
Text 관련 컴포넌트들의 comon 디렉토리로의 이동이 잘 이루어졌습니다.
23-23
: Button 컴포넌트 import 경로 변경이 적절합니다.
NextBtn 컴포넌트의 comon 디렉토리로의 이동이 잘 이루어졌습니다.
src/app/add-time/page.tsx (1)
3-5
: 컴포넌트 분류가 적절히 이루어졌습니다.
- 공통 컴포넌트(BackHeader, SingleValidator)가 comon 디렉토리로 이동
- 도메인 특화 컴포넌트(Scheduler)가 domain/mentoring 디렉토리로 이동
이는 PR의 목적에 맞는 적절한 구조 개선입니다.
src/components/Bar/UnivTapBar/UnivTapBar.tsx (1)
8-8
: 컴포넌트 구조 개선을 위한 import 경로 수정이 적절히 이루어졌습니다.
폴더 구조 재정리 작업의 일환으로 DropDown 관련 컴포넌트들의 import 경로가 일관성 있게 수정되었습니다.
Also applies to: 11-11, 12-12
src/components/Form/SearchForm/SearchForm.tsx (1)
14-14
: Spinner 컴포넌트의 import 경로가 적절히 수정되었습니다.
공통 컴포넌트 구조화 작업에 맞춰 Spinner 컴포넌트의 경로가 'comon' 디렉토리로 이동되었습니다.
src/components/Modal/ModalContent/ProfileModify/ProfileModify.tsx (1)
14-15
: 컴포넌트 경로 이동이 적절합니다.
공통 컴포넌트들을 common
디렉토리로, 도메인 특화 컴포넌트를 domain
디렉토리로 이동한 것은 좋은 구조 개선입니다. 이는 컴포넌트의 재사용성과 관리를 용이하게 만듭니다.
Also applies to: 27-27
src/app/senior/edit-profile/page.tsx (1)
2-4
: 폴더 구조 개선이 일관성 있게 적용되었습니다.
컴포넌트들이 다음과 같이 체계적으로 재구성되었습니다:
- 공통 UI 컴포넌트들(Button, Header)이
common
디렉토리로 이동 - 폼 관련 컴포넌트들이
Form
디렉토리로 통합
이러한 구조화는 코드의 가독성과 유지보수성을 향상시킵니다.
Also applies to: 6-6, 10-10
@@ -1,7 +1,7 @@ | |||
import Image from 'next/image'; | |||
import styled from 'styled-components'; | |||
import { WISH_SENIOR_MENTOR_MSG } from '../../constant'; | |||
import NextBtn from '@/components/Button/NextBtn'; | |||
import NextBtn from '@/components/comon/Button/NextBtn'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
'comon' 폴더명 오타 수정이 필요하며, 해당 경로를 사용하는 파일이 다수 존재합니다
src/components/comon
폴더명을src/components/common
으로 수정해야 합니다.- 해당 경로를 참조하는 파일이 50개 이상 존재하므로, 폴더명 변경 시 모든 import 경로도 함께 수정되어야 합니다.
- 현재
common
폴더가 일부 하위 경로에 존재하나, 컴포넌트 루트 레벨에는 존재하지 않아 이름 충돌 우려는 없습니다.
🔗 Analysis chain
'comon' 폴더명 수정 및 import 경로 검증 필요
- 'comon'을 'common'으로 수정해야 합니다.
- Button 컴포넌트의 새로운 경로가 폴더 구조 재정리 목적과 일치하는지 확인이 필요합니다.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# NextBtn 컴포넌트의 실제 위치 확인
fd -t f "NextBtn.tsx" -x echo "Found NextBtn at: {}"
Length of output: 120
Script:
#!/bin/bash
# Check if there are any other imports using the 'comon' path
rg -g "*.{ts,tsx}" "@/components/comon" -A 2
# Check if there's already a 'common' directory
fd -t d "common" -x echo "Found common directory at: {}"
Length of output: 29076
@@ -1,7 +1,7 @@ | |||
import { MENTORING_APPLY_LOGIN } from '@/constants/modal/dimmedModal'; | |||
import { MLBtn, MLContainer, MLDesc, MLTitle } from './MentoringLogin.styled'; | |||
import Image from 'next/image'; | |||
import x_img from '../../../../public/x_gray.png'; | |||
import x_img from '../../../../../public/x_gray.png'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
에셋 import에 절대 경로 사용 권장
상대 경로를 사용하면 컴포넌트 위치가 변경될 때마다 import 경로를 수정해야 합니다. 다음과 같이 절대 경로를 사용하는 것이 좋습니다:
-import x_img from '../../../../../public/x_gray.png';
+import x_img from '@/public/x_gray.png';
이렇게 하면:
- 컴포넌트 이동 시 import 경로 수정이 불필요
- 코드의 가독성 향상
- 유지보수가 더 용이
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
import x_img from '../../../../../public/x_gray.png'; | |
import x_img from '@/public/x_gray.png'; |
src/app/senior/account/done/page.tsx
Outdated
@@ -4,7 +4,7 @@ import Image from 'next/image'; | |||
import { useRouter } from 'next/navigation'; | |||
import accept from '../../../../../public/cState.png'; | |||
import styled from 'styled-components'; | |||
import NextBtn from '@/components/Button/NextBtn'; | |||
import NextBtn from '@/components/comon/Button/NextBtn'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
'comon' 폴더명 오타 수정이 필요합니다
실제 프로젝트 구조를 확인한 결과, src/components/comon
폴더가 존재하며 여러 컴포넌트에서 이 경로를 참조하고 있습니다. 'common'이 올바른 영어 단어이므로 다음 사항들을 수정해야 합니다:
src/components/comon
폴더명을src/components/common
으로 수정- 해당 폴더를 참조하는 모든 import 구문 업데이트
🔗 Analysis chain
'comon' 폴더명에 오타가 있습니다
'comon'이 'common'의 오타로 보입니다. 이는 폴더 구조의 일관성에 영향을 미칠 수 있습니다.
다음 스크립트를 실행하여 'comon' vs 'common' 사용의 일관성을 확인해보겠습니다:
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check for inconsistent usage of 'comon' vs 'common' in import statements
echo "Checking for 'comon' usage:"
rg "@/components/comon" -l
echo -e "\nChecking for 'common' usage:"
rg "@/components/common" -l
Length of output: 3521
Script:
#!/bin/bash
# Let's check the actual directory structure to verify if 'comon' folder exists
fd -t d "comon|common" components/
# Also check if NextBtn component exists in either path
fd "NextBtn" components/
Length of output: 259
Script:
#!/bin/bash
# Let's check the actual directory structure from the root
fd -t d "comon|common" .
# Also check if NextBtn component exists
fd "NextBtn" .
# Check the actual import path usage in the file
cat src/app/senior/account/done/page.tsx
Length of output: 1641
import NicknameForm from '@/components/Form/NicknameForm'; | ||
import ServiceCondition from './(components)/ServiceCondition'; | ||
import NextBtn from '@/components/comon/Button/NextBtn'; | ||
import PhoneNumForm from '@/components/Form/PhoneNumForm'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
comon
디렉토리 이름에 오타가 있습니다
@/components/comon
에서 'common'이 'comon'으로 잘못 입력되어 있습니다. 이는 향후 디렉토리 구조 변경 시 문제가 될 수 있습니다.
다음과 같이 수정해주세요:
-import NextBtn from '@/components/comon/Button/NextBtn';
-import BackHeader from '@/components/comon/Header/BackHeader';
+import NextBtn from '@/components/common/Button/NextBtn';
+import BackHeader from '@/components/common/Header/BackHeader';
Also applies to: 14-14
@@ -3,13 +3,13 @@ import React, { useEffect, useState } from 'react'; | |||
import { useSearchParams } from 'next/navigation'; | |||
import styled from 'styled-components'; | |||
import { useRouter } from 'next/navigation'; | |||
import SeniorProfile from '@/components/SeniorProfile/SeniorProfile'; | |||
import SeniorProfile from '@/components/domain/senior/SeniorProfile/SeniorProfile'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
컴포넌트 구조 개선사항 및 오타 수정 필요
도메인별 컴포넌트 구조화는 좋은 방향이지만, 'comon' 오타와 함께 몇 가지 개선이 필요합니다:
- 도메인 컴포넌트 구조가 잘 정리되었습니다 (
domain/senior/SeniorProfile
). - 공통 컴포넌트의 'comon' 오타를 수정해야 합니다.
다음과 같이 수정해주세요:
-import SearchDropDown from '@/components/comon/DropDown/SearchDropDown';
-import Spinner from '@/components/comon/Spinner';
+import SearchDropDown from '@/components/common/DropDown/SearchDropDown';
+import Spinner from '@/components/common/Spinner';
Also applies to: 10-10, 12-12
import x_icon from '../../../../../public/x.png'; | ||
import user_icon from '../../../../../public/user.png'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
이미지 import 경로 개선이 필요합니다.
상대 경로를 사용한 이미지 import는 유지보수성을 저하시킬 수 있습니다. 절대 경로를 사용하는 것이 좋습니다.
다음과 같이 수정을 제안합니다:
-import x_icon from '../../../../../public/x.png';
-import user_icon from '../../../../../public/user.png';
+import x_icon from '@/public/x.png';
+import user_icon from '@/public/user.png';
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
import x_icon from '../../../../../public/x.png'; | |
import user_icon from '../../../../../public/user.png'; | |
import x_icon from '@/public/x.png'; | |
import user_icon from '@/public/user.png'; |
@@ -1,16 +1,16 @@ | |||
'use client'; | |||
import ModalBtn from '@/components/Button/ModalBtn'; | |||
import NextBtn from '@/components/Button/NextBtn'; | |||
import ModalBtn from '@/components/comon/Button/ModalBtn'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
디렉토리 이름 오타 수정 필요
'comon' 디렉토리 이름에 오타가 있습니다. 일관성과 가독성을 위해 'common'으로 수정하는 것이 좋습니다.
다음과 같이 수정해주세요:
-import ModalBtn from '@/components/comon/Button/ModalBtn';
-import NextBtn from '@/components/comon/Button/NextBtn';
-import SingleValidator from '@/components/comon/SingleValidator';
-import BackHeader from '@/components/comon/Header/BackHeader';
+import ModalBtn from '@/components/common/Button/ModalBtn';
+import NextBtn from '@/components/common/Button/NextBtn';
+import SingleValidator from '@/components/common/SingleValidator';
+import BackHeader from '@/components/common/Header/BackHeader';
Also applies to: 3-3, 5-5, 13-13
@@ -14,11 +14,11 @@ import { tapType } from '@/types/tap/tap'; | |||
import { useGetSeniorMentoringActiveTabQuery } from '@/hooks/query/useGetSeniorMentoringActiveTab'; | |||
|
|||
import { TAB, TAB_STATE } from '@/constants/tab/ctap'; | |||
import MentoringApply from '@/components/Mentoring/MentoringApply/MentoringApply'; | |||
import ModalBtn from '@/components/Button/ModalBtn'; | |||
import MentoringApply from '@/components/domain/mentoring/MentoringApply/MentoringApply'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
컴포넌트 구조 개선 및 오타 수정 필요
도메인별 컴포넌트 분리가 잘 되었습니다. 하지만 다음 사항들을 개선하면 좋겠습니다:
- 'comon' 디렉토리 이름 오타 수정
- 함수 이름의 'Senoir' 오타 수정
다음과 같이 수정해주세요:
-import ModalBtn from '@/components/comon/Button/ModalBtn';
-import AccountShowBtn from '@/components/comon/Button/AccountShowBtn/AccountShowBtn';
+import ModalBtn from '@/components/common/Button/ModalBtn';
+import AccountShowBtn from '@/components/common/Button/AccountShowBtn/AccountShowBtn';
// 함수 이름 오타 수정
-const { openModal: openSenoirMentoringCancelSuccessModal }
+const { openModal: openSeniorMentoringCancelSuccessModal }
Also applies to: 18-18, 21-21
src/app/add-profile/page.tsx
Outdated
@@ -3,12 +3,12 @@ | |||
import ProgressBar from '@/components/Bar/ProgressBar'; | |||
|
|||
import { addProfileSchema } from '@/app/add-profile/schema'; | |||
import BackHeader from '@/components/Header/BackHeader'; | |||
import BackHeader from '@/components/comon/Header/BackHeader'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
컴포넌트 구조 개선사항
컴포넌트 구조가 더 명확해졌지만, 다음 개선사항이 있습니다:
- 'comon' 디렉토리 이름을 'common'으로 수정
- Form 컴포넌트들의 구조화가 잘 되었습니다 👍
다음과 같이 수정해주세요:
-import BackHeader from '@/components/comon/Header/BackHeader';
-import SingleValidator from '@/components/comon/SingleValidator';
+import BackHeader from '@/components/common/Header/BackHeader';
+import SingleValidator from '@/components/common/SingleValidator';
Also applies to: 10-10, 11-11
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
진짜 너무 고생 많으셨겠어요......................😭😭😭😭😭 수고 많으셨습니다...ㅠㅠ!!!!
몇 가지 궁금한 점+의견만 적어보겠습니다!!!
Bar
,Form
,Modal
들은 왜common
폴더에 들어가지 않는 걸까요!? 볼륨이 큰 편이라 그런 걸까요?NaverPoint
는 제가 알기로 쓰이고 있는 곳이 없어서 일단 삭제해도 될 것 같습니다! 예전에 리뷰 쓰면 네이버 포인트 주겠다고 아래 살짝 띄우려고 만들었던 건데 작업하던 분이 화면에 잘 반영이 안 된다고 해서 일단 보류하겠다고 한 컴포넌트인데, 지금은 리뷰 작성해도 딱히 포인트 주는 정책도 없고 일단 제거해 둬도... 되지 않을까... 싶어서요!!- 진짜 해당 페이지에서만 쓰이는 컴포넌트들은 페이지 폴더 밑에
(component)
로 넣고, 대략senior
관련 페이지에서 많이 쓰이는 컴포넌트들은/component/domain/senior
여기에 넣는다 <- 이런 식으로 이해했는데 맞을까요? 좋은 방법인 것 같기도 한데 뭔가 페이지 폴더 밑에 컴포넌트 폴더가 또 존재한다면/component/domain
폴더의 용도가 좀 흐려지는 느낌인데 더 좋은 방법이 있으려나요... SuggestModal
은 왜Modal
폴더 아래에 있지 않고 밖으로 나와 있는 건지 궁금합니다...!!! 혹시 원래 저렇게 되어 있었나요...... (죄송합니다...)
너무너무 고생 많으셨습니다... 🥹🥹 도메인 폴더 어떤 식으로 짤지도 의논했으면 더 좋았을 텐데 너무 혼자 고생하신 것 같아서 죄송하네요 ㅠ_ㅠ 더 얘기 나누고 싶으신 부분이 있다면 언제든지 요청해주셔도 돼요!!!!
@@ -8,7 +8,7 @@ import { | |||
TooltipBox, | |||
} from './SalaryBox.styled'; | |||
import Image from 'next/image'; | |||
import tooltip from '../../../../public/tooltip.png'; | |||
import tooltip from '../../../../../public/tooltip.png'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이미지도 나중에 다 절대경로로 수정하면 좋을 것 같아요 👀 (여기서 반영해달라는 말은 아니고 나중에 할 일 스택에 쌓아놓으려고 적어봅니다...)
🦝 PR 요약
✨ PR 상세 내용
📦components
┣ 📂Bar
┃ ┣ 📂FieldTapBar
┃ ┃ ┣ 📜FieldTapBar.styled.ts
┃ ┃ ┣ 📜FieldTapBar.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂MenuBar
┃ ┃ ┣ 📜MenuBar.styled.ts
┃ ┃ ┣ 📜MenuBar.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂ProgressBar
┃ ┃ ┣ 📜ProgressBar.styled.ts
┃ ┃ ┣ 📜ProgressBar.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂TapBar
┃ ┃ ┣ 📂JuniorTab
┃ ┃ ┃ ┣ 📜JTabBar.styled.ts
┃ ┃ ┃ ┣ 📜JTabBar.tsx
┃ ┃ ┃ ┗ 📜index.ts
┃ ┃ ┣ 📂SeniorTab
┃ ┃ ┃ ┣ 📜STabBar.tsx
┃ ┃ ┃ ┗ 📜STabBrar.styled.ts
┃ ┃ ┗ 📜TabBarContent.tsx
┃ ┗ 📂UnivTapBar
┃ ┃ ┣ 📜UnivTapBar.styled.ts
┃ ┃ ┣ 📜UnivTapBar.tsx
┃ ┃ ┗ 📜index.tsx
┣ 📂Form
┃ ┣ 📂BankForm
┃ ┃ ┣ 📜BankForm.styled.ts
┃ ┃ ┣ 📜BankForm.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂HomeSearchForm
┃ ┃ ┣ 📜HomeSearchForm.styled.ts
┃ ┃ ┣ 📜HomeSearchForm.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂InputForm
┃ ┃ ┣ 📜InputForm.styled.ts
┃ ┃ ┗ 📜InputForm.tsx
┃ ┣ 📂KeywordForm
┃ ┃ ┣ 📜Keyword.styled.ts
┃ ┃ ┣ 📜KeywordForm.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂MatchingForm
┃ ┃ ┣ 📜MatchingForm.styled.ts
┃ ┃ ┣ 📜MatchingForm.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂NicknameForm
┃ ┃ ┣ 📜NicknameForm.styled.ts
┃ ┃ ┣ 📜NicknameForm.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂PhoneNumForm
┃ ┃ ┣ 📜PhoneNumForm.styled.ts
┃ ┃ ┣ 📜PhoneNumForm.tsx
┃ ┃ ┣ 📜index.tsx
┃ ┃ ┗ 📜phoneNumSchema.ts
┃ ┣ 📂ProfileForm
┃ ┃ ┣ 📜ProfileForm.styled.ts
┃ ┃ ┣ 📜ProfileForm.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂SearchForm
┃ ┃ ┣ 📜SearchForm.styled.ts
┃ ┃ ┣ 📜SearchForm.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂SelectForm
┃ ┃ ┣ 📜SelectForm.styled.ts
┃ ┃ ┣ 📜SelectForm.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂TextForm
┃ ┃ ┣ 📜TextForm.styled.ts
┃ ┃ ┣ 📜TextForm.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┗ 📂TextareaForm
┃ ┃ ┣ 📜TextareaForm.styled.ts
┃ ┃ ┣ 📜TextareaForm.tsx
┃ ┃ ┗ 📜index.tsx
┣ 📂Modal
┃ ┣ 📂AproveModal
┃ ┃ ┣ 📜AproveModal.styled.ts
┃ ┃ ┗ 📜AproveModal.tsx
┃ ┣ 📂DimmedModal
┃ ┃ ┣ 📂NotJunior
┃ ┃ ┃ ┣ 📜NotJunior.styled.ts
┃ ┃ ┃ ┗ 📜NotJunior.tsx
┃ ┃ ┣ 📜DimmedModal.styled.ts
┃ ┃ ┣ 📜DimmedModal.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂FullModal
┃ ┃ ┣ 📜FullModal.styled.ts
┃ ┃ ┣ 📜FullModal.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂ModalContent
┃ ┃ ┣ 📂AccountReactivation
┃ ┃ ┃ ┣ 📜AccountReactivation.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂AddTime
┃ ┃ ┃ ┣ 📜AddTime.styled.ts
┃ ┃ ┃ ┣ 📜AddTime.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂ChangeJunior
┃ ┃ ┃ ┣ 📜ChangeJunior.styled.ts
┃ ┃ ┃ ┣ 📜ChangeJunior.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂LoginRequest
┃ ┃ ┃ ┣ 📜LoginRequest.styled.ts
┃ ┃ ┃ ┣ 📜LoginRequest.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂MBestCaseContent
┃ ┃ ┃ ┣ 📜MBestCaseContent.styled.ts
┃ ┃ ┃ ┣ 📜MBestCaseContent.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂MProfileContent
┃ ┃ ┃ ┣ 📜MProfileContent.styled.ts
┃ ┃ ┃ ┣ 📜MProfileContent.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂MentoringLogin
┃ ┃ ┃ ┣ 📜MentoringLogin.styled.ts
┃ ┃ ┃ ┣ 📜MentoringLogin.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂MyLoginRequest
┃ ┃ ┃ ┣ 📜MyLoginRequest.styled.ts
┃ ┃ ┃ ┣ 📜MyLoginRequest.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂PayAmount
┃ ┃ ┃ ┣ 📜PayAmount.styled.ts
┃ ┃ ┃ ┣ 📜PayAmount.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂ProfileModify
┃ ┃ ┃ ┣ 📜ProfileModify.styled.ts
┃ ┃ ┃ ┣ 📜ProfileModify.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂SInfoModify
┃ ┃ ┃ ┣ 📜SInfoModify.styled.ts
┃ ┃ ┃ ┣ 📜SInfoModify.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂SNotRegistered
┃ ┃ ┃ ┣ 📜SNotRegistered.styled.ts
┃ ┃ ┃ ┣ 📜SNotRegistered.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂SelectCalendar
┃ ┃ ┃ ┣ 📜SelectCalendar.styled.ts
┃ ┃ ┃ ┣ 📜SelectCalendar.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂SeniorMyProfile
┃ ┃ ┃ ┣ 📜SeniorMyProfile.styled.ts
┃ ┃ ┃ ┣ 📜SeniorMyProfile.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┗ 📂SuccessFail
┃ ┃ ┃ ┣ 📜SuccessFail.styled.ts
┃ ┃ ┃ ┣ 📜SuccessFail.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂NotSenior
┃ ┃ ┣ 📜NotSenior.styled.ts
┃ ┃ ┗ 📜NotSenior.tsx
┃ ┣ 📂RiseUpModal
┃ ┃ ┣ 📜RiseUpModal.styled.ts
┃ ┃ ┣ 📜RiseUpModal.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂SearchModal
┃ ┃ ┣ 📜SearchModal.styled.ts
┃ ┃ ┣ 📜SearchModal.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂ShortRiseUpModal
┃ ┃ ┣ 📜ShortRiseUpModal.styled.ts
┃ ┃ ┣ 📜ShortRiseUpModal.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┗ 📂SuggestModal
┃ ┃ ┣ 📜SuggestModal.styled.ts
┃ ┃ ┣ 📜SuggestModal.tsx
┃ ┃ ┗ 📜index.tsx
┣ 📂Provider
┃ ┗ 📜providers.tsx
┣ 📂comon
┃ ┣ 📂Button
┃ ┃ ┣ 📂AccountShowBtn
┃ ┃ ┃ ┣ 📜AccountShowBtn.styled.ts
┃ ┃ ┃ ┣ 📜AccountShowBtn.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂ApplyCancleBtn
┃ ┃ ┃ ┣ 📜ApplyCancleBtn.styled.ts
┃ ┃ ┃ ┣ 📜ApplyCancleBtn.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂ClickedBtn
┃ ┃ ┃ ┣ 📜ClickedBtn.styled.ts
┃ ┃ ┃ ┣ 📜ClickedBtn.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂ModalBtn
┃ ┃ ┃ ┣ 📜ModalBtn.styled.ts
┃ ┃ ┃ ┣ 📜ModalBtn.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂NextBtn
┃ ┃ ┃ ┣ 📜NextBtn.styled.ts
┃ ┃ ┃ ┣ 📜NextBtn.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂SelectedBtn
┃ ┃ ┃ ┣ 📜SelectedBtn.styled.ts
┃ ┃ ┃ ┣ 📜SelectedBtn.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂SignUpBtn
┃ ┃ ┃ ┣ 📜SignUpBtn.styled.ts
┃ ┃ ┃ ┣ 📜SignUpBtn.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┗ 📂TypeBtn
┃ ┃ ┃ ┣ 📜TypeBtn.styled.ts
┃ ┃ ┃ ┣ 📜TypeBtn.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂Checkbox
┃ ┃ ┣ 📜CheckBox.styled.ts
┃ ┃ ┣ 📜CheckBox.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂DropDown
┃ ┃ ┣ 📂SearchDropDown
┃ ┃ ┃ ┣ 📜SearchDropDown.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┗ 📂common
┃ ┃ ┃ ┣ 📜DropDown.tsx
┃ ┃ ┃ ┣ 📜DropdownHeader.tsx
┃ ┃ ┃ ┣ 📜DropdownItem.tsx
┃ ┃ ┃ ┣ 📜DropdownMenu.tsx
┃ ┃ ┃ ┣ 📜TriggerButton.tsx
┃ ┃ ┃ ┣ 📜index.ts
┃ ┃ ┃ ┗ 📜useDropdown.tsx
┃ ┣ 📂Footer
┃ ┃ ┣ 📜Footer.styled.ts
┃ ┃ ┣ 📜Footer.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂GA
┃ ┃ ┣ 📜GA.jsx
┃ ┃ ┗ 📜GTM.jsx
┃ ┣ 📂Header
┃ ┃ ┗ 📂BackHeader
┃ ┃ ┃ ┣ 📜BackHeader.styled.ts
┃ ┃ ┃ ┣ 📜BackHeader.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂LogoLayer
┃ ┃ ┣ 📜LogoLayer.styled.ts
┃ ┃ ┣ 📜LogoLayer.tsx
┃ ┃ ┣ 📜index.tsx
┃ ┃ ┗ 📜login.tsx
┃ ┣ 📂Modal
┃ ┃ ┣ 📂AproveModal
┃ ┃ ┣ 📂DimmedModal
┃ ┃ ┣ 📂FullModal
┃ ┃ ┣ 📂NotSenior
┃ ┃ ┣ 📂RiseUpModal
┃ ┃ ┣ 📂SearchModal
┃ ┃ ┗ 📂ShortRiseUpModal
┃ ┣ 📂Pagination
┃ ┃ ┣ 📜SeniorListPagination.tsx
┃ ┃ ┣ 📜index.css
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂Photo
┃ ┃ ┣ 📜Photo.styled.ts
┃ ┃ ┣ 📜Photo.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂RoundedImage
┃ ┃ ┣ 📜RoundedImage.styled.ts
┃ ┃ ┣ 📜RoundedImage.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂SingleValidator
┃ ┃ ┣ 📜SingleValidator.styled.ts
┃ ┃ ┣ 📜SingleValidator.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂Spinner
┃ ┃ ┣ 📜Spinner.styled.ts
┃ ┃ ┣ 📜Spinner.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂Swiper
┃ ┃ ┣ 📜Swiper.styled.ts
┃ ┃ ┗ 📜Swiper.tsx
┃ ┣ 📂Text
┃ ┃ ┣ 📂AuthLabeledText
┃ ┃ ┃ ┣ 📜AuthLabeled.styled.ts
┃ ┃ ┃ ┣ 📜AuthLabeledText.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂BorderedText
┃ ┃ ┃ ┣ 📜BorderedText.styled.ts
┃ ┃ ┃ ┣ 📜BorderedText.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂DividedText
┃ ┃ ┃ ┣ 📜DividedText.styled.ts
┃ ┃ ┃ ┣ 📜DividedText.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┗ 📂TextField
┃ ┃ ┃ ┣ 📜TextField.styled.ts
┃ ┃ ┃ ┣ 📜TextField.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂TextToggleButton
┃ ┃ ┣ 📜TextToggleButton.styled.ts
┃ ┃ ┣ 📜TextToggleButton.tsx
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂Toast
┃ ┃ ┣ 📜ToastMessage.tsx
┃ ┃ ┣ 📜ToastProvider.tsx
┃ ┃ ┣ 📜ToastService.tsx
┃ ┃ ┗ 📜index.css
┃ ┗ 📂Validator
┃ ┃ ┗ 📂SingleValidator
┗ 📂domain
┃ ┣ 📂mentoring
┃ ┃ ┣ 📂KakaoOpenChat
┃ ┃ ┃ ┣ 📜KakaoOpenChat.styled.ts
┃ ┃ ┃ ┣ 📜KakaoOpenChat.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂MentoringApply
┃ ┃ ┃ ┣ 📜MentoringApply.styled.ts
┃ ┃ ┃ ┣ 📜MentoringApply.tsx
┃ ┃ ┃ ┗ 📜index.ts
┃ ┃ ┣ 📂MentoringCancel
┃ ┃ ┃ ┣ 📜MentoringCancel.styled.ts
┃ ┃ ┃ ┣ 📜MentoringCancel.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂MentoringNotYet
┃ ┃ ┃ ┣ 📜MentoringNotYet.styled.ts
┃ ┃ ┃ ┣ 📜MentoringNotYet.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂MentoringSpec
┃ ┃ ┃ ┣ 📂JmentoringSpec
┃ ┃ ┃ ┃ ┣ 📜MentoringSpec.styled.ts
┃ ┃ ┃ ┃ ┣ 📜MentoringSpec.tsx
┃ ┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┃ ┣ 📂SmentoringSpec
┃ ┃ ┃ ┃ ┣ 📜SmentoringSpec.styled.ts
┃ ┃ ┃ ┃ ┣ 📜SmentoringSpec.tsx
┃ ┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┃ ┗ 📜error.tsx
┃ ┃ ┣ 📂Scheduler
┃ ┃ ┃ ┣ 📜Scheduler.styled.ts
┃ ┃ ┃ ┣ 📜Scheduler.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂SmentoringAccept
┃ ┃ ┃ ┣ 📜SmentoringAccept.styled.ts
┃ ┃ ┃ ┣ 📜SmentoringAccept.tsx
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┗ 📂SmentoringCancel
┃ ┃ ┃ ┣ 📜SmentoringCancel.styled.ts
┃ ┃ ┃ ┗ 📜SmentoringCancel.tsx
┃ ┗ 📂senior
┃ ┃ ┣ 📂SeniorCard
┃ ┃ ┃ ┣ 📂IntroCard
┃ ┃ ┃ ┃ ┣ 📜IntroCard.styled.ts
┃ ┃ ┃ ┃ ┣ 📜IntroCard.tsx
┃ ┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┃ ┣ 📂KeywordCard
┃ ┃ ┃ ┃ ┣ 📜KeywordCard.styled.ts
┃ ┃ ┃ ┃ ┣ 📜KeywordCard.tsx
┃ ┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┃ ┗ 📂ProfileCard
┃ ┃ ┃ ┃ ┣ 📜ProfileCard.styled.ts
┃ ┃ ┃ ┃ ┣ 📜ProfileCard.tsx
┃ ┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📂SeniorList
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┗ 📂SeniorProfile
┃ ┃ ┃ ┣ 📜SeniorProfile.styled.ts
┃ ┃ ┃ ┣ 📜SeniorProfile.tsx
┃ ┃ ┃ ┣ 📜constant.ts
┃ ┃ ┃ ┗ 📜index.tsx
🚨 주의 사항
📸 스크린샷
✅ 체크 리스트
npm run format:fix
실행했나요?Summary by CodeRabbit
릴리스 노트
새로운 기능
버그 수정
문서화
리팩토링
스타일
테스트
잡일
되돌리기