feat: 기사님 받은 견적 조회 페이지 구현 - #11
Conversation
…into feature/mover-received-requests-page
…into feature/mover-received-requests-page
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthrough견적 요청 타입과 조회 API·훅을 추가하고, 검색·필터·정렬 및 모바일 필터 모달을 포함한 받은 요청 목록과 카드 UI를 구현했습니다. Next.js 페이지 엔트리에서 헤더와 목록을 함께 렌더링합니다. Changes받은 견적 요청
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant Mover as 기사님
participant ReceivedRequestsPage
participant useMoverEstimateRequests
participant getMoverEstimateRequests
participant axiosInstance
Mover->>ReceivedRequestsPage: 검색·필터·정렬 조건 입력
ReceivedRequestsPage->>useMoverEstimateRequests: query 전달
useMoverEstimateRequests->>getMoverEstimateRequests: 요청 목록 조회
getMoverEstimateRequests->>axiosInstance: 실제 API 호출
axiosInstance-->>getMoverEstimateRequests: 요청 목록 응답
getMoverEstimateRequests-->>useMoverEstimateRequests: items와 pagination 반환
useMoverEstimateRequests-->>ReceivedRequestsPage: 조회 결과 전달
ReceivedRequestsPage-->>Mover: 요청 카드 목록 렌더링
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 Biome (2.5.3)src/lib/utils/date.tsFile contains syntax errors that prevent linting: Line 22: Illegal use of an export declaration not at the top level; Line 30: Illegal use of an export declaration not at the top level; Line 39: Illegal use of an export declaration not at the top level; Line 44: Illegal use of an export declaration not at the top level; Line 49: Illegal use of an export declaration not at the top level; Line 58: Illegal use of an export declaration not at the top level; Line 77: expected 🔧 ESLint
src/lib/utils/date.tsParsing error: '}' expected. Comment |
There was a problem hiding this comment.
Actionable comments posted: 10
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/app/estimate/received-requests/page.tsx (1)
1-6: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
metadataexport가 없습니다.페이지별
<title>등 메타데이터가 설정되지 않았습니다.As per path instructions, "
metadataexport 로 페이지별 메타데이터를 설정했는지 확인해 주세요."📝 제안 diff
+import type { Metadata } from "next"; import ReceivedRequestsPage from "`@/components/estimate/ReceivedRequestsPage`"; +export const metadata: Metadata = { + title: "받은 요청 | 무빙", +}; + export default function Page() { return <ReceivedRequestsPage />; }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/app/estimate/received-requests/page.tsx` around lines 1 - 6, 페이지 모듈의 Page export에 페이지별 metadata export를 추가해 제목 등 필요한 메타데이터를 설정하세요. 기존 ReceivedRequestsPage 렌더링 동작은 유지하고, 프로젝트의 기존 metadata 정의 방식과 명명 규칙을 재사용하세요.Source: Path instructions
🧹 Nitpick comments (2)
src/types/moverEstimateRequest.ts (1)
4-38: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winobject 타입들은
interface로 정의하는 게 팀 규칙입니다.
MoverEstimateRequest,MoverEstimateRequestQuery,MoverEstimateRequestResponse모두type으로 정의돼 있습니다.As per path instructions, "타입 정의는
interface를 우선 사용합니다."🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/types/moverEstimateRequest.ts` around lines 4 - 38, MoverEstimateRequest, MoverEstimateRequestQuery, MoverEstimateRequestResponse의 객체 타입 정의를 팀 규칙에 맞게 interface 선언으로 변경하세요. 각 프로퍼티와 중첩 객체 구조는 그대로 유지하고, MoveType 및 RequestSort 같은 기존 타입 참조도 변경하지 마세요.Source: Path instructions
src/components/estimate/ReceivedRequestCard.tsx (1)
58-88: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win브레이크포인트가 프로젝트 관례와 다릅니다.
ReceivedRequestsPage.tsx는 태블릿/데스크톱 전환에min-[744px]:,lg:를 쓰는데, 이 카드는 Tailwind 기본sm:(640px)을 사용합니다. 카드가 그리드 안에서 컨테이너 폭에 따라 다르게 반응할 수 있어 목록 레이아웃과 어긋날 위험이 있습니다.As per path instructions, "하나의 컴포넌트에서 Tailwind 브레이크포인트로 처리합니다" (프로젝트의 기존 breakpoint 기준).
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/components/estimate/ReceivedRequestCard.tsx` around lines 58 - 88, ReceivedRequestCard의 레이아웃 전환에 사용된 기본 sm: 브레이크포인트를 제거하고, ReceivedRequestsPage.tsx에서 사용하는 프로젝트 기준인 min-[744px]: 또는 lg:로 통일하세요. 출발지·도착지·이사일 레이아웃과 하단 그리드의 반응형 동작이 목록 레이아웃과 동일한 breakpoint에서 전환되도록 수정하세요.Source: Path instructions
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/components/estimate/ReceivedRequestCard.tsx`:
- Around line 31-101: Update the ReceivedRequestCard color classes to use the
corresponding design tokens from tokens.theme.css instead of hardcoded values,
including text-[`#808080`], text-[`#111`], bg-[`#f2f2f2`], bg-[`#ffeef0`],
text-[`#ff4f64`], and related border/arrow colors. Follow the existing token
patterns used by bg-background-brand-muted and border-border-brand, while
preserving the current visual states.
- Around line 12-19: Update formatMoveDate in ReceivedRequestCard to use a
shared string-date formatter from src/lib/utils/date.ts instead of constructing
a local-time DateTimeFormat directly. Implement or reuse that formatter with
timeZone set to Asia/Seoul, and preserve the existing Korean
year/month/day/weekday output.
In `@src/components/estimate/ReceivedRequestsPage.tsx`:
- Around line 126-196: Update the count displays in ReceivedRequestsPage so they
are hidden or replaced with a placeholder while query.isPending, preventing “전체
0건” from appearing alongside the loading message. Preserve the actual
items.length count once loading completes.
- Around line 135-171: Update the custom checkbox indicators in
ReceivedRequestsPage, including the modal checkboxes, to add a clear
keyboard-focus style to each replacement span using peer-focus-visible classes
tied to its sr-only input. Preserve the existing checked and unchecked visuals
while ensuring focus is visibly distinguishable when navigating by keyboard.
- Around line 226-335: Replace the hand-built modal in the isFilterOpen
rendering with the existing common Modal component, reusing its dialog
accessibility, focus trap, Escape handling, and body scroll locking. Preserve
the current filter content, open/close state, backdrop behavior, and 조회하기 action
while passing the appropriate title or aria-label configuration supported by
Modal.
- Around line 1-338: ReceivedRequestsPage is marked as a client component even
though its header and title are static, causing the entire page subtree to be
sent to the client. Split the stateful search, filters, and request-list logic
from ReceivedRequestsPage into a dedicated client child component, remove the
top-level client directive from the page-level component, and keep the logo
header and page title in the server-rendered parent.
- Around line 52-223: ReceivedRequestsPage의 헤더, 검색, 필터 및 상태 표시 영역에서 하드코딩된
색상·간격·radius를 기존 디자인 토큰으로 교체하고, 아래 필터 모달과 동일한 토큰 패턴을 재사용하세요. 일반 span과 원시 텍스트 요소로
렌더링된 “받은 요청”, “기사님”, “지정 견적 요청” 등은 적절한 Text 컴포넌트와 variant로 변경하되 기존 레이아웃과 반응형 동작은
유지하세요.
In `@src/lib/api/moverEstimateRequests.ts`:
- Around line 83-112: The getMoverEstimateRequests function returns
response.data.data without checking the backend success flag. Update the
MoverEstimateRequestResponse handling to branch on success and, for failed
responses, propagate or handle the error using error.code rather than comparing
message strings; only return data for successful responses.
- Around line 104-106: Update the endpoint construction in the mover estimate
request flow around the axiosInstance.get call to use a complete API_ROUTES
constant, including the API prefix and requests suffix, instead of concatenating
hardcoded path strings. Add or reuse the appropriate received-requests route
constant and preserve the existing query parameter handling.
In `@src/types/moverEstimateRequest.ts`:
- Around line 29-38: MoverEstimateRequestResponse를 성공 응답과 실패 응답을 모두 표현하는 판별
유니온으로 변경하고, 실패 형태에는 error의 code와 message를 포함하세요. 이를 사용하는 mover estimate 요청 함수에서는
success를 확인한 뒤에만 data를 반환하도록 수정하고, 실패 시에는 error.code를 기준으로 분기하며 메시지 문자열 비교는 사용하지
마세요.
---
Outside diff comments:
In `@src/app/estimate/received-requests/page.tsx`:
- Around line 1-6: 페이지 모듈의 Page export에 페이지별 metadata export를 추가해 제목 등 필요한
메타데이터를 설정하세요. 기존 ReceivedRequestsPage 렌더링 동작은 유지하고, 프로젝트의 기존 metadata 정의 방식과 명명
규칙을 재사용하세요.
---
Nitpick comments:
In `@src/components/estimate/ReceivedRequestCard.tsx`:
- Around line 58-88: ReceivedRequestCard의 레이아웃 전환에 사용된 기본 sm: 브레이크포인트를 제거하고,
ReceivedRequestsPage.tsx에서 사용하는 프로젝트 기준인 min-[744px]: 또는 lg:로 통일하세요. 출발지·도착지·이사일
레이아웃과 하단 그리드의 반응형 동작이 목록 레이아웃과 동일한 breakpoint에서 전환되도록 수정하세요.
In `@src/types/moverEstimateRequest.ts`:
- Around line 4-38: MoverEstimateRequest, MoverEstimateRequestQuery,
MoverEstimateRequestResponse의 객체 타입 정의를 팀 규칙에 맞게 interface 선언으로 변경하세요. 각 프로퍼티와
중첩 객체 구조는 그대로 유지하고, MoveType 및 RequestSort 같은 기존 타입 참조도 변경하지 마세요.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 399b3816-52a1-4520-8a36-de0a707e925d
⛔ Files ignored due to path filters (11)
public/icons/box.svgis excluded by!**/*.svgpublic/icons/checkbox-check.svgis excluded by!**/*.svgpublic/icons/chevron.svgis excluded by!**/*.svgpublic/icons/document.svgis excluded by!**/*.svgpublic/icons/filter.svgis excluded by!**/*.svgpublic/icons/moving-logo-icon.svgis excluded by!**/*.svgpublic/icons/moving-logo-text.svgis excluded by!**/*.svgpublic/icons/search.svgis excluded by!**/*.svgpublic/icons/write.svgis excluded by!**/*.svgpublic/images/empty-img-original.pngis excluded by!**/*.pngpublic/images/empty-received-requests.pngis excluded by!**/*.png
📒 Files selected for processing (6)
src/app/estimate/received-requests/page.tsxsrc/components/estimate/ReceivedRequestCard.tsxsrc/components/estimate/ReceivedRequestsPage.tsxsrc/hooks/useMoverEstimateRequests.tssrc/lib/api/moverEstimateRequests.tssrc/types/moverEstimateRequest.ts
juengseulki
left a comment
There was a problem hiding this comment.
📋 PR 리뷰
기사님용 받은 요청 목록 페이지와 필터 UI 구현을 확인했습니다.
👍 좋았던 점
- 페이지, 카드, 조회 훅, API 함수, 응답 타입을 각각 분리하여 이후 실제 API를 연결하기 좋은 구조로 구성한 점이 좋았습니다.
- 공통
Text컴포넌트를 사용하여 기존 디자인 시스템을 재사용한 점도 확인했습니다. - 검색어 입력값과 실제 조회에 사용되는
keyword를 분리하여, 입력할 때마다 요청하지 않고 검색 제출 시에만 조회되도록 구성한 점이 좋았습니다. - 이사 유형, 지정 견적 요청, 서비스 가능 지역 중 하나라도 일치하면 노출되는 OR 필터가 PR에 작성된 정책대로 구현되어 있었습니다.
- 선택된 필터가 없을 때는 전체 요청을 반환하도록 별도로 처리하여 빈 조건 때문에 결과가 사라지는 문제를 방지한 점도 좋았습니다.
- 데스크톱 필터와 태블릿·모바일용 필터 UI가 동일한 상태를 공유하도록 구성하여 화면 크기에 따라 선택 결과가 달라지지 않도록 한 점이 좋았습니다.
- 로딩, 오류, 빈 목록 상태를 각각 구분하여 표시한 점도 적절했습니다.
🚨 수정이 필요한 부분
인라인 코멘트로 아래 내용을 남겼습니다.
- 현재 요청을 최대 10건만 조회하고 있으며 다음 페이지를 불러오는 로직이 없어, 10건을 초과한 요청은 사용자가 확인할 수 없습니다.
전체 {items.length}건은 전체 요청 수가 아니라 현재 조회된 항목 수이므로 실제 데이터가 10건을 초과하면 잘못된 개수가 표시됩니다.
🔍 확인 및 제안
- 선언해둔
MoverEstimateRequestResponse를 Axios 응답 타입과 함수 반환 타입에 적용하면 실제 API 연결 시 응답 구조를 안전하게 확인할 수 있을 것 같습니다.
전체적으로 반응형 화면과 필터 동작을 빠르게 검증하기 위한 UI 구조는 잘 구성되어 있었습니다. 다만 현재 페이지가 받은 요청 목록을 제공하는 화면인 만큼, 첫 10건 이후의 데이터를 볼 수 없는 부분과 전체 건수 표시는 실제 사용성에 직접 영향을 주므로 이번 작업에서 보완하는 것이 좋겠습니다. 수고하셨습니다! 😊
…into feature/mover-received-requests-page
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
src/app/estimate/received-requests/page.tsx (1)
1-12: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win페이지
metadataexport가 없습니다.
Page에export const metadata가 없어 브라우저 탭 제목 등 페이지별 메타데이터가 설정되지 않습니다.As per path instructions, "
metadataexport로 페이지별 메타데이터를 설정했는지 확인해 주세요."+export const metadata = { + title: "받은 요청 | 무빙", +}; + export default function Page() {🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/app/estimate/received-requests/page.tsx` around lines 1 - 12, 페이지별 메타데이터가 정의되지 않았으므로 `Page` 컴포넌트와 함께 `metadata`를 export하도록 추가하세요. 해당 페이지의 브라우저 탭 제목 등 필요한 메타데이터를 설정하고, 기존 `ReceivedRequestsHeader` 및 `ReceivedRequestsPage` 렌더링은 유지하세요.Source: Path instructions
src/components/estimate/ReceivedRequestsPage.tsx (1)
76-90: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win이사 유형 칩·체크박스 마크업이 데스크톱/모달에 중복되고,
cn()/Text미사용.76-90행과 211-229행은 같은 이사 유형 칩을 크기만 다르게 중복 렌더링하고, 106-141행과 236-271행도 체크박스 인디케이터를 거의 동일하게 중복 작성합니다. 또한 84/113-116/131-134/219-223/258-262행은 조건부 클래스에 템플릿 리터럴을 쓰고 있고, 249-271행의 "지정 견적 요청"/"서비스 가능 지역" 텍스트는
Text컴포넌트로 감싸지 않았습니다.MoveTypeChip,FilterCheckbox같은 공용 서브컴포넌트로 추출하면 중복·cn()미사용·Text미사용 문제를 한 번에 해결할 수 있습니다.As per path instructions, "클래스 조합은
src/lib/utils/cn.ts의cn()을 사용합니다", "텍스트는Text컴포넌트의 variant를 사용합니다", "새 컴포넌트를 만들기 전에... 기존 컴포넌트를 재사용할 수 있는지 확인해야 합니다."Also applies to: 106-141, 211-229, 236-271
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/components/estimate/ReceivedRequestsPage.tsx` around lines 76 - 90, Extract the duplicated move-type chip markup in ReceivedRequestsPage into a reusable MoveTypeChip component and the duplicated checkbox indicator markup into a reusable FilterCheckbox component, preserving their desktop and modal size differences through props or variants. Update conditional class composition to use cn() instead of template literals, and wrap the “지정 견적 요청” and “서비스 가능 지역” labels in the existing Text component with appropriate variants.Source: Path instructions
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/components/estimate/ReceivedRequestsHeader.tsx`:
- Around line 27-34: Update the navigation items in the ReceivedRequestsHeader
nav so each uses an actual Link pointing to its corresponding route, enabling
click and keyboard navigation; if no routes exist, replace the nav with
non-navigation text instead of interactive-looking spans.
---
Nitpick comments:
In `@src/app/estimate/received-requests/page.tsx`:
- Around line 1-12: 페이지별 메타데이터가 정의되지 않았으므로 `Page` 컴포넌트와 함께 `metadata`를 export하도록
추가하세요. 해당 페이지의 브라우저 탭 제목 등 필요한 메타데이터를 설정하고, 기존 `ReceivedRequestsHeader` 및
`ReceivedRequestsPage` 렌더링은 유지하세요.
In `@src/components/estimate/ReceivedRequestsPage.tsx`:
- Around line 76-90: Extract the duplicated move-type chip markup in
ReceivedRequestsPage into a reusable MoveTypeChip component and the duplicated
checkbox indicator markup into a reusable FilterCheckbox component, preserving
their desktop and modal size differences through props or variants. Update
conditional class composition to use cn() instead of template literals, and wrap
the “지정 견적 요청” and “서비스 가능 지역” labels in the existing Text component with
appropriate variants.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 049333e2-7430-4f7a-ba36-006e84d33c2d
📒 Files selected for processing (8)
src/app/estimate/received-requests/page.tsxsrc/components/common/Modal.tsxsrc/components/estimate/ReceivedRequestCard.tsxsrc/components/estimate/ReceivedRequestsHeader.tsxsrc/components/estimate/ReceivedRequestsPage.tsxsrc/lib/api/moverEstimateRequests.tssrc/lib/utils/date.tssrc/types/moverEstimateRequest.ts
🚧 Files skipped from review as they are similar to previous changes (2)
- src/lib/api/moverEstimateRequests.ts
- src/components/estimate/ReceivedRequestCard.tsx
There was a problem hiding this comment.
🧹 Nitpick comments (1)
src/hooks/useMoverEstimateRequests.ts (1)
12-12: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win
hasNextPage도 다음 페이지 판정에 반영해 주세요.응답의
pagination에nextCursor와hasNextPage가 모두 있는데 현재는 cursor만 확인합니다. 서버가 마지막 페이지에서도 cursor를 반환할 수 있다면,hasNextPage: false인데도 추가 요청이 발생해 중복 데이터를 가져올 수 있습니다. 백엔드 계약을 확인한 뒤 두 필드를 함께 판정하세요.권장 수정
- getNextPageParam: (lastPage) => lastPage.pagination.nextCursor ?? undefined, + getNextPageParam: (lastPage) => + lastPage.pagination.hasNextPage + ? (lastPage.pagination.nextCursor ?? undefined) + : undefined,🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/hooks/useMoverEstimateRequests.ts` at line 12, Update the getNextPageParam callback to require pagination.hasNextPage to be true before returning pagination.nextCursor; otherwise return undefined. Preserve cursor handling while preventing additional requests when the server marks the response as the final page.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@src/hooks/useMoverEstimateRequests.ts`:
- Line 12: Update the getNextPageParam callback to require
pagination.hasNextPage to be true before returning pagination.nextCursor;
otherwise return undefined. Preserve cursor handling while preventing additional
requests when the server marks the response as the final page.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 17b5b065-ee01-41a4-85d3-c1533393428f
📒 Files selected for processing (4)
src/components/estimate/ReceivedRequestsPage.tsxsrc/hooks/useMoverEstimateRequests.tssrc/lib/api/moverEstimateRequests.tssrc/types/moverEstimateRequest.ts
🚧 Files skipped from review as they are similar to previous changes (3)
- src/types/moverEstimateRequest.ts
- src/lib/api/moverEstimateRequests.ts
- src/components/estimate/ReceivedRequestsPage.tsx
| confirmLabel="조회하기" | ||
| onConfirm={() => setIsFilterOpen(false)} | ||
| onClose={() => setIsFilterOpen(false)} | ||
| overlayClassName="items-end px-0 min-[744px]:items-center min-[744px]:px-24 lg:hidden" |
There was a problem hiding this comment.
lg:hidden은 모달을 눈에만 안 보이게 할 뿐이라, 모달을 연 채로 창을 데스크톱 폭으로 늘리면 모달이 열려있는 상태로 유지됩니다. 그래서 공통 Modal의 스크롤 잠금과 포커스 트랩이 계속 동작해서, 화면엔 아무것도 없는데 페이지 스크롤이 안 되는 상태가 될 수 있습니다.
화면이 lg 이상이 되면 setIsFilterOpen(false)로 모달을 실제로 닫아주는 걸 권장드립니다!
|
반응형 챙기면서 구현하시느라 고생 많으셨습니다! |
📋 작업 내용
🔥 변경 사항
✅ 체크리스트
📷 스크린샷 (선택)
💬 To Reviewer
현재 받은 요청 목록과 필터에 관해 빠르게 확인 작업 하기위해 더미데이터 넣어서 확인했습니다.
추후에 실제 API 연결 확인 후, 더미데이터 제거 및 응답 타입 최종 점검 하겠습니다.
작업 하신 파일들을 pull 받으면서 기존에 만들어뒀던 목업페이지에서 레이아웃 깨짐을 수정하느라 생각보다 시간이 많이 소요된 것 같습니다ㅠ..
공통 컴포넌트 적용 잘 되어 있는지 확인해주시면 감사하겠습니다...
interface ModalProps {
open: boolean;
title: string;
children: ReactNode;
confirmLabel?: string;
confirmDisabled?: boolean;
onConfirm?: () => void;
onClose: () => void;
className?: string;
overlayClassName?: string;
}
추가했는데 그대로 머지해도 상관없는지 여쭤보고 싶습니다!
Summary by CodeRabbit