Conversation
* feat: 알림설정 구현 (#108) * chore: min-w 추가 * [chore] 코드래빗 설정 파일 추가 (#110) * chore: 코드래빗 설정 파일 추가 * chore: 불필요한 tools 설정 제거 * [feat] preMember 목록 분리 및 삭제 기능 추가 (#115) * feat: preMember 목록 분리 및 삭제 기능 추가 * chore: Pascal case * chore: 변경된 변수명 반영 * feat: 학번 숫자 필터링 추가 * [feat] 채팅 목차 알림 상태 추가 (#113) * chore: svg 추가 * feat: 채팅목록 알림 끄기 설정시 UI 추가 * feat: 목차 열릴시 애니메이션 추가 * [feat] 달력 카테고리 분류 추가 (#118) * feat: 카테고리 추가 * chore: 불필요한 코드 삭제 * [refactor] 관리자 페이지 및 마이페이지 UI 수정 및 리팩토링 (#117) * feat: 정보 카드에서 정보 페이지로 이동하도록 기능 추가 * feat: 토스트 전역상태 추가 * refactor: query 훅 분리 및 onSuccess 콜백 옵션 제거 * refactor: query 훅 사용처 수정 * refactor: 사용처 수정 2 * fix: 채팅창 스크롤 초기화 문제 수정 및 줄바꿈 기준 변경 * feat: 토글 스위치 구현 * refactor: 모집 공고 관련 목록 페이지 디자인 수정 * feat: 컴포넌트 구현 및 icon 추가 * refactor: z-index 값 수정 * refactor: API 필드 변경 사항 반영 * refactor: 모집 공고 페이지 디자인 수정 및 라우트 백 수정 * refactor: 학교 목록에 없을 시 문구 디자인 수정 * fix: lint error * fix: 타입 변경 * feat: 모집 관련 페이지 API 추가사항 반영 * refactor: 토스트 타이머 클린업 추라 * refactor: 전역토스트 사용 변경 * refactor: 관리자 클럽 조회 훅 호출 범위 줄이기 * feat: onError handler add * chore: add button type and remove fragment * [feat] 문의하기 버튼 로직 추가 (#120) * feat: API 추가 및 연결 * chore: placeholder 제거 * [fix] 채팅 스크롤 미갱신 버그 및 멤버 직위 렌더링 수정 (#122) * fix: 채팅 스크롤 미작동 수정 * fix: 한글 출력으로 수정 * feat: 첫 글자 보여주도록 수정 (#124) * hotfix: 동아리 소개 줄바꿈 적용 및 한 줄 소개 글자수 제한 상향 * chore: 리뷰 반영 * fix: disabled 조건 변경 * 126 fix 배포 전 qa 사항 반영 (#127) * fix: 가입 버튼 문구 수정 * fix: 검색창 placeholder 수정 * fix: 불필요해진 UI 비활성화 * fix: 모집공고 없을 때 빈 화면 처리 * fix: 무의미한 회비페이지 수정 * feat: 토글 시 자동 페이지 이동 추가 * fix: 페이지 이동 조건 수정 --------- Co-authored-by: 김혜준 <114041848+hyejun0228@users.noreply.github.com> Co-authored-by: hyejun <hyejunkkim228@gmail.com>
* chore: 타입 변경 반영 * [feat] 모집 공고에 시간 추가 및 지원서 정렬 추가 (#131) * feat: 모집 공고에 시작, 종료 시간 추가 * feat: 지원자 목록 정렬 추가 및 시간 표시 * feat: 채팅, 모집 공고 링크 파싱 기능 추가 * feat: 인스타그램 파싱 추가 * fix: prettier error * refactor: 유틸 분리 및 타입 변경 * chore: 타입 변경 반영 * chore: 동일 스타일 통합 및 entity 확장 사용 * chore:ios 토큰 테스트를 위한 로직 추가 * Revert "chore:ios 토큰 테스트를 위한 로직 추가" This reverts commit 98570fc.
* chore: 타입 변경 반영 * [feat] 모집 공고에 시간 추가 및 지원서 정렬 추가 (#131) * feat: 모집 공고에 시작, 종료 시간 추가 * feat: 지원자 목록 정렬 추가 및 시간 표시 * feat: 채팅, 모집 공고 링크 파싱 기능 추가 * feat: 인스타그램 파싱 추가 * fix: prettier error * refactor: 유틸 분리 및 타입 변경 * chore: 타입 변경 반영 * chore: 동일 스타일 통합 및 entity 확장 사용 * chore:ios 토큰 테스트를 위한 로직 추가 * Revert "chore:ios 토큰 테스트를 위한 로직 추가" This reverts commit 98570fc. * hotfix: 모집 공고 textarea 길이 자동 재계산 추가 * Reapply "chore:ios 토큰 테스트를 위한 로직 추가" This reverts commit 3a56f4a. * chore: ios토큰 * feat: 가이드 페이지 이미지 변경 * chore: 푸시알림 로직 임시 변경 * refactor: 푸시 알림 토큰 로직 브릿지 방식으로 수정 (#134) * refactor: 푸시 알림 토큰 로직 브릿지 방식으로 수정 * fix: try catch 적용 * feat: 페이지네이션 추가 * feat: 수정 * feat: 페이지네이션 수정 * feat: 디자인 수정 * feat: 로직 수정 * fix: key 수정 * chore: 스테이지 용 임시 UI 제거 --------- Co-authored-by: hyejun <hyejunkkim228@gmail.com>
|
Warning Rate limit exceeded
⌛ 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. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (7)
Walkthrough디자인 시스템 기준으로 색상/타이포그래피 토큰을 분리하고, 기존 Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes 40개 이상의 파일에서 동일한 패턴의 클래스 변경이 반복되므로 검토 효율은 높지만, CSS 파일 구조 변경(colors.css 신규 추가, theme.css 대규모 삭제)과 모든 클래스 변경이 올바르게 적용되었는지 일관성 검증이 필요합니다. Possibly related PRs
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 4
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/pages/Manager/components/TimePicker/index.tsx (1)
171-183:⚠️ Potential issue | 🟡 Minor선택 상태를 보조기기에도 노출해주세요.
현재 선택 여부가 색상/굵기로만 표현돼서 스크린리더가 현재 시간을 파악하기 어렵습니다. 최소한 각 버튼에
aria-pressed={isSelected}를 넣거나, 리스트 패턴으로 가져갈 거면 선택 상태(aria-selected)를 함께 노출해주세요.As per coding guidelines, '동적 className 조합, 접근성(aria-*, role, 키보드 탐색), Props 타입 일관성을 우선 확인하는지'.
Also applies to: 199-211
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/pages/Manager/components/TimePicker/index.tsx` around lines 171 - 183, The buttons that render hours (the button in the hour mapping that calls setDraftHour and scrollToItem with hourRef/hourOptions and uses pad2) do not expose selection to assistive tech; add aria-pressed={isSelected} on that button (or aria-selected and appropriate role="option" if you adopt the listbox pattern) so screen readers can detect the selected state; mirror the same change for the minutes block (the analogous buttons that call setDraftMinute/scrollToItem with minute refs/options) and verify role/keyboard handling is consistent with the chosen pattern.
🧹 Nitpick comments (3)
src/pages/Home/components/SimpleAppliedClubCard.tsx (1)
21-21: 배지 색상은 토큰으로 빼는 편이 좋습니다.Line 21의
bg-[#E8EBEFE5],text-[#5A6B7F]는 이번 PR의 색상 토큰 분리 방향과 어긋납니다. 이 값들도src/styles/colors.css기반 토큰 클래스로 맞춰두는 게 유지보수에 안전합니다.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/pages/Home/components/SimpleAppliedClubCard.tsx` at line 21, In SimpleAppliedClubCard replace the hardcoded utility classes bg-[`#E8EBEFE5`] and text-[`#5A6B7F`] in the className on the badge div with the project's color token classes from src/styles/colors.css; locate the badge inside the SimpleAppliedClubCard component and change those inline hex utilities to the corresponding token-based classes (use the bg-... and text-... token names defined in colors.css) so the badge uses the centralized color tokens instead of literal hex values.src/pages/Club/ClubDetail/components/ClubIntro.tsx (1)
30-50: 일부 타이포그래피가 시맨틱 토큰으로 변환되지 않음.Lines 30, 35-36, 42-43, 48-50에서
text-sm,text-[10px]등 raw Tailwind 클래스가 여전히 사용되고 있습니다. 향후 일관성을 위해 이 부분도 시맨틱 토큰으로 변환을 고려해 주세요.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/pages/Club/ClubDetail/components/ClubIntro.tsx` around lines 30 - 50, The JSX in the ClubIntro component uses raw Tailwind utility classes (e.g., "text-sm", "text-[10px]", "leading-3", "leading-3.5", "font-medium", "font-semibold", "text-indigo-700", "text-indigo-300") for the memberCount/location/president blocks; replace these raw utilities with your project's semantic token classes (for example map text sizes to tokens like text-body-sm/text-caption, leading values to tokenized leading classes, font weights to token-regular/token-semibold, and color utilities to text-primary/text-muted) so all className values in the elements around memberCount, location, and presidentName follow the token naming convention used elsewhere in the app.src/pages/Home/index.tsx (1)
235-236: raw hex 대신 색상 토큰으로 통일해주세요이번 PR 목적이 색상 토큰 분리인데, 여기 두 링크만
text-[#3182F6]를 그대로 남겨서 토큰 체계가 끊깁니다.colors.css에 정의한 semantic color class로 맞추는 편이 유지보수에 좋습니다.Also applies to: 249-250
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/pages/Home/index.tsx` around lines 235 - 236, Replace the raw hex class text-[`#3182F6`] in the Home component's JSX Link elements with the project's semantic color token defined in colors.css (e.g., use the semantic class used for links like "text-primary" or "text-link"); update both occurrences where className contains "Sub2 text-[`#3182F6`]" (the Link elements around the "다가오는 일정" section and the other occurrence noted) so they use the semantic class instead of the raw hex.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@src/pages/Auth/SignUp/FinishStep.tsx`:
- Around line 27-29: The component directly accesses myInfo.name and may crash
on first render; update the FinishStep component to guard rendering when myInfo
is null/undefined (e.g., early return or conditional render) and/or use safe
access (optional chaining) for myInfo.name; ensure this matches the existing
handleStart null-check logic so the UI renders a fallback or nothing until
myInfo is available.
In `@src/pages/Manager/components/TimePicker/index.tsx`:
- Around line 219-221: The selected-time badge (the div containing "선택 시간
{formatTime(draftHour, draftMinute)}" in the TimePicker component) isn’t
announced to assistive tech when the time changes; add accessibility attributes
to make it a live region by giving that badge aria-live="polite" and
aria-atomic="true" (so the full updated string from formatTime(draftHour,
draftMinute) is read), ensuring you add the attributes to the same div with the
className "bg-indigo-0 Body2 rounded-full border border-indigo-50 px-4 py-1.5
text-indigo-700" without changing visual styling or behavior.
- Around line 178-180: The .Body2 typography rule in typography.css includes a
fixed font-weight which overrides the conditional Tailwind utilities in the
TimePicker component (see className usage with twMerge, isSelected, and
'Body2'); remove font-weight from the .Body2 rule in your typography layer (or
create a separate weight-less variant like .Body2-unstyled) and update the
component to use that variant so the conditional 'font-bold' / 'font-medium'
utilities (applied in the className/twMerge around isSelected) can take effect;
alternatively, if you cannot change typography.css, create and apply a small
utility class (e.g., Body2WeightOverride) applied alongside 'Body2' in the
className to allow Tailwind weight utilities to win.
In `@src/pages/User/MyPage/components/UserInfoCard.tsx`:
- Around line 121-130: In UserInfoCard, the two <button> elements that call
handleButtonClick (the one showing myInfo.studyTime and the one linking to
'/council?tab=notice') are missing explicit type attributes and may trigger form
submit; update both button elements to include type="button" to prevent
unintended form submission while preserving existing onClick behavior.
---
Outside diff comments:
In `@src/pages/Manager/components/TimePicker/index.tsx`:
- Around line 171-183: The buttons that render hours (the button in the hour
mapping that calls setDraftHour and scrollToItem with hourRef/hourOptions and
uses pad2) do not expose selection to assistive tech; add
aria-pressed={isSelected} on that button (or aria-selected and appropriate
role="option" if you adopt the listbox pattern) so screen readers can detect the
selected state; mirror the same change for the minutes block (the analogous
buttons that call setDraftMinute/scrollToItem with minute refs/options) and
verify role/keyboard handling is consistent with the chosen pattern.
---
Nitpick comments:
In `@src/pages/Club/ClubDetail/components/ClubIntro.tsx`:
- Around line 30-50: The JSX in the ClubIntro component uses raw Tailwind
utility classes (e.g., "text-sm", "text-[10px]", "leading-3", "leading-3.5",
"font-medium", "font-semibold", "text-indigo-700", "text-indigo-300") for the
memberCount/location/president blocks; replace these raw utilities with your
project's semantic token classes (for example map text sizes to tokens like
text-body-sm/text-caption, leading values to tokenized leading classes, font
weights to token-regular/token-semibold, and color utilities to
text-primary/text-muted) so all className values in the elements around
memberCount, location, and presidentName follow the token naming convention used
elsewhere in the app.
In `@src/pages/Home/components/SimpleAppliedClubCard.tsx`:
- Line 21: In SimpleAppliedClubCard replace the hardcoded utility classes
bg-[`#E8EBEFE5`] and text-[`#5A6B7F`] in the className on the badge div with the
project's color token classes from src/styles/colors.css; locate the badge
inside the SimpleAppliedClubCard component and change those inline hex utilities
to the corresponding token-based classes (use the bg-... and text-... token
names defined in colors.css) so the badge uses the centralized color tokens
instead of literal hex values.
In `@src/pages/Home/index.tsx`:
- Around line 235-236: Replace the raw hex class text-[`#3182F6`] in the Home
component's JSX Link elements with the project's semantic color token defined in
colors.css (e.g., use the semantic class used for links like "text-primary" or
"text-link"); update both occurrences where className contains "Sub2
text-[`#3182F6`]" (the Link elements around the "다가오는 일정" section and the other
occurrence noted) so they use the semantic class instead of the raw hex.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: a4ed6d1c-2bf3-4270-a2b3-be8d7648a025
📒 Files selected for processing (41)
src/components/common/ToggleSwitch.tsxsrc/components/layout/Header/components/InfoHeader.tsxsrc/index.csssrc/pages/Auth/SignUp/ConfirmStep.tsxsrc/pages/Auth/SignUp/FinishStep.tsxsrc/pages/Auth/SignUp/NameStep.tsxsrc/pages/Auth/SignUp/StudentIdStep.tsxsrc/pages/Auth/SignUp/TermStep.tsxsrc/pages/Auth/SignUp/UniversityStep.tsxsrc/pages/Auth/SignUp/components/AgreementArrow.tsxsrc/pages/Auth/SignUp/components/StepLayout.tsxsrc/pages/Chat/index.tsxsrc/pages/Club/Application/clubFeePage.tsxsrc/pages/Club/Application/index.tsxsrc/pages/Club/ClubDetail/components/ClubIntro.tsxsrc/pages/Club/ClubDetail/components/ClubRecruitment.tsxsrc/pages/Club/ClubDetail/index.tsxsrc/pages/Club/ClubList/components/ClubCard.tsxsrc/pages/Club/ClubList/index.tsxsrc/pages/Club/ClubSearch/index.tsxsrc/pages/Home/components/CouncilNoticeCard.tsxsrc/pages/Home/components/SimpleAppliedClubCard.tsxsrc/pages/Home/components/SimpleClubCard.tsxsrc/pages/Home/index.tsxsrc/pages/Manager/ManagedAccount/index.tsxsrc/pages/Manager/ManagedApplicationDetail/index.tsxsrc/pages/Manager/ManagedApplicationList/index.tsxsrc/pages/Manager/ManagedClubDetail/index.tsxsrc/pages/Manager/ManagedClubList/index.tsxsrc/pages/Manager/ManagedClubProfile/index.tsxsrc/pages/Manager/ManagedMemberApplicationDetail/index.tsxsrc/pages/Manager/ManagedMemberList/index.tsxsrc/pages/Manager/ManagedRecruitmentForm/index.tsxsrc/pages/Manager/ManagedRecruitmentWrite/index.tsxsrc/pages/Manager/components/TimePicker/index.tsxsrc/pages/User/MyPage/components/UserInfoCard.tsxsrc/pages/User/MyPage/index.tsxsrc/pages/User/Profile/index.tsxsrc/styles/colors.csssrc/styles/theme.csssrc/styles/typography.css
💤 Files with no reviewable changes (1)
- src/styles/theme.css
✨ 요약
src/styles/colors.css로 분리했습니다.src/styles/typography.css로 분리하고,theme.css는 색상/브레이크포인트 중심으로 정리했습니다.D1,H1,Sub1,Body1,Caption1)으로 맞추고 전체 사용처를 일괄 치환했습니다.colors.css,typography.css를 추가했습니다.🧩 커밋 단위
refactor: 색상 토큰 파일 분리refactor: 타이포그래피 스타일 파일 분리refactor: 피그마 타이포그래피 네이밍으로 클래스 정렬✅ 검증
pnpm lint통과😎 해결한 이슈(close #160)
Summary by CodeRabbit
릴리스 노트