Conversation
Warning: Encountered two children with the same key, `T`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version.
at div
at div
at MobileCalendarField (webpack-internal:///(app-pages-browser)/./app/(general)/(light)/reservations/_components/MobileCalendarField/index.tsx:17:11)
at div
at div
at ReservationPage (webpack-internal:///(app-pages-browser)/./app/(general)/(light)/reservations/clubroom/page.tsx:43:94)
at ClientPageRoot (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/client-page.js:14:11)
at InnerLayoutRouter (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:243:11)
at RedirectErrorBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/redirect-boundary.js:74:9)
at RedirectBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/redirect-boundary.js:82:11)
at NotFoundBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/not-found-boundary.js:84:11)
at LoadingBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:349:11)
at ErrorBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/error-boundary.js:160:11)
at InnerScrollAndFocusHandler (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:153:9)
at ScrollAndFocusHandler (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:228:11)
at RenderFromTemplateContext (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/render-from-template-context.js:16:44)
at OuterLayoutRouter (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:370:11)
at InnerLayoutRouter (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:243:11)
at RedirectErrorBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/redirect-boundary.js:74:9)
at RedirectBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/redirect-boundary.js:82:11)
at NotFoundBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/not-found-boundary.js:84:11)
at LoadingBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:349:11)
at ErrorBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/error-boundary.js:160:11)
at InnerScrollAndFocusHandler (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:153:9)
at ScrollAndFocusHandler (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:228:11)
at RenderFromTemplateContext (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/render-from-template-context.js:16:44)
at OuterLayoutRouter (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:370:11)
at InnerLayoutRouter (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:243:11)
at RedirectErrorBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/redirect-boundary.js:74:9)
at RedirectBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/redirect-boundary.js:82:11)
at NotFoundBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/not-found-boundary.js:84:11)
at LoadingBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:349:11)
at ErrorBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/error-boundary.js:160:11)
at InnerScrollAndFocusHandler (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:153:9)
at ScrollAndFocusHandler (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:228:11)
at RenderFromTemplateContext (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/render-from-template-context.js:16:44)
at OuterLayoutRouter (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:370:11)
at main
at div
at RootHeaderAndFooterWrapper (Server)
at RootLayout (Server)
at InnerLayoutRouter (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:243:11)
at RedirectErrorBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/redirect-boundary.js:74:9)
at RedirectBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/redirect-boundary.js:82:11)
at NotFoundErrorBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/not-found-boundary.js:76:9)
at NotFoundBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/not-found-boundary.js:84:11)
at LoadingBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:349:11)
at ErrorBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/error-boundary.js:160:11)
at InnerScrollAndFocusHandler (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:153:9)
at ScrollAndFocusHandler (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:228:11)
at RenderFromTemplateContext (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/render-from-template-context.js:16:44)
at OuterLayoutRouter (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:370:11)
at InnerLayoutRouter (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:243:11)
at RedirectErrorBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/redirect-boundary.js:74:9)
at RedirectBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/redirect-boundary.js:82:11)
at NotFoundErrorBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/not-found-boundary.js:76:9)
at NotFoundBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/not-found-boundary.js:84:11)
at LoadingBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:349:11)
at ErrorBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/error-boundary.js:160:11)
at InnerScrollAndFocusHandler (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:153:9)
at ScrollAndFocusHandler (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:228:11)
at RenderFromTemplateContext (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/render-from-template-context.js:16:44)
at OuterLayoutRouter (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/layout-router.js:370:11)
at QueryClientProvider (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/@tanstack+react-query@5.84.2_react@18.3.1/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js:27:11)
at ReactQueryProvider (webpack-internal:///(app-pages-browser)/./lib/providers/react-query-provider.tsx:14:11)
at ApiClientProvider (webpack-internal:///(app-pages-browser)/./lib/providers/api-client-provider.tsx:27:11)
at SessionProvider (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next-auth@5.0.0-beta.29_next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1__react@18.3.1/node_modules/next-auth/react.js:262:13)
at Providers (webpack-internal:///(app-pages-browser)/./lib/providers/index.tsx:14:11)
at body
at html
at RootLayout (Server)
at RedirectErrorBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/redirect-boundary.js:74:9)
at RedirectBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/redirect-boundary.js:82:11)
at NotFoundErrorBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/not-found-boundary.js:76:9)
at NotFoundBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/not-found-boundary.js:84:11)
at DevRootNotFoundBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/dev-root-not-found-boundary.js:33:11)
at ReactDevOverlay (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/react-dev-overlay/app/ReactDevOverlay.js:87:9)
at HotReload (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/react-dev-overlay/app/hot-reloader-client.js:321:11)
at Router (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/app-router.js:207:11)
at ErrorBoundaryHandler (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/error-boundary.js:113:9)
at ErrorBoundary (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/error-boundary.js:160:11)
at AppRouter (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/components/app-router.js:585:13)
at ServerRoot (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/app-index.js:112:27)
at Root (webpack-internal:///(app-pages-browser)/../../node_modules/.pnpm/next@14.2.30_@babel+core@7.28.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/app-index.js:117:11) |
...ral)/(light)/reservations/_components/MobileReservationField/MobileReservationStatusCard.tsx
Outdated
Show resolved
Hide resolved
apps/web/app/(general)/(light)/reservations/_components/MyReservationField/index.tsx
Outdated
Show resolved
Hide resolved
apps/web/app/(general)/(light)/reservations/_components/MyReservationField/index.tsx
Outdated
Show resolved
Hide resolved
apps/web/app/(general)/(light)/reservations/_components/MyReservationField/ReservationCard.tsx
Outdated
Show resolved
Hide resolved
apps/web/app/(general)/(light)/reservations/_components/MyReservationField/ReservationCard.tsx
Outdated
Show resolved
Hide resolved
apps/web/app/(general)/(light)/reservations/_components/MyReservationField/index.tsx
Outdated
Show resolved
Hide resolved
...ral)/(light)/reservations/_components/MobileReservationField/MobileReservationStatusCard.tsx
Outdated
Show resolved
Hide resolved
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
@manamana32321 리뷰 반영해서 수정 완료했습니다!
|
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
@greptile |
Greptile OverviewGreptile SummaryThis PR implements mobile UI for the reservation page, adding responsive components for calendar and reservation views. The implementation reorganizes existing components by renaming "Field" to "Section" and creates mobile-specific variants. Major Changes:
Issues Found:
Confidence Score: 4/5
|
| Filename | Overview |
|---|---|
| apps/web/lib/utils.ts | Added reservationSplit utility function with circular dependency on component type |
| apps/web/app/(general)/(light)/reservations/clubroom/page.tsx | Added mobile UI sections with responsive layout, using fake data placeholder |
| apps/web/app/(general)/(light)/reservations/_components/MobileReservationSection/MobileReservationStatusCard.tsx | Created time slot display component with ambiguous 12-hour format lacking AM/PM indicators |
Sequence Diagram
sequenceDiagram
participant User
participant Page as ReservationPage
participant Mobile as MobileCalendarSection
participant MobileRes as MobileReservationSection
participant Desktop as Desktop Components
participant WeekLabel
participant Utils as utils.ts
User->>Page: Open /reservations/clubroom
Page->>Page: Initialize weekStartMonday state
Page->>Page: Initialize activeMonth state
alt Mobile View (< md breakpoint)
Page->>Mobile: Render MobileCalendarSection
Mobile->>Mobile: Generate calendar dates grid
Mobile->>Mobile: Initialize selectedDate state
User->>Mobile: Click date in calendar
Mobile->>Mobile: Update selectedDate
Page->>WeekLabel: Render month navigation
User->>WeekLabel: Navigate to prev/next month
WeekLabel->>Page: Update weekStartMonday
Page->>Page: Update activeMonth via useEffect
Page->>Mobile: Re-render with new currentMonday
Page->>MobileRes: Render MobileReservationSection
MobileRes->>MobileRes: Show tabs (예약 현황 / 나의 예약)
User->>MobileRes: Switch to "나의 예약" tab
loop For each reservation
MobileRes->>Utils: Call reservationSplit(reservation)
Utils->>MobileRes: Return formatted date/time data
MobileRes->>MobileRes: Render MobileMyReservationCard
end
else Desktop View (≥ md breakpoint)
Page->>Desktop: Render MyReservationSection (1/4 width)
loop For each reservation
Desktop->>Utils: Call reservationSplit(reservation)
Utils->>Desktop: Return formatted date/time data
end
Page->>Desktop: Render Tabs (Week/Month, 3/4 width)
alt Week View
Desktop->>Desktop: Render WeekCalendarView
else Month View
Desktop->>Desktop: Render MonthCalendarView
end
Page->>WeekLabel: Render navigation controls
User->>WeekLabel: Navigate weeks/months
WeekLabel->>Page: Update state
Page->>Desktop: Re-render calendar views
end
| @@ -1,3 +1,5 @@ | |||
| import dayjs from "dayjs" | |||
| import { Reservation } from "@/app/(general)/(light)/reservations/_components/MobileReservationSection" | |||
There was a problem hiding this comment.
Creates circular dependency by importing type from component directory into shared utility file. Move Reservation interface to @repo/shared-types or create a local types file.
| import { Reservation } from "@/app/(general)/(light)/reservations/_components/MobileReservationSection" | |
| import { Reservation } from "@/types/reservation" |
Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/web/lib/utils.ts
Line: 2:2
Comment:
Creates circular dependency by importing type from component directory into shared utility file. Move `Reservation` interface to `@repo/shared-types` or create a local types file.
```suggestion
import { Reservation } from "@/types/reservation"
```
How can I resolve this? If you propose a fix, please make it concise.| <div className="flex w-full flex-col pt-5"> | ||
| {Array.from({ length: TOTAL_HOURS }).map((_, i) => { | ||
| const hour24 = i + START_HOUR | ||
| const hour12 = hour24 % HOURS_IN_CLOCK || HOURS_IN_CLOCK |
There was a problem hiding this comment.
AM/PM display logic incorrect. hour24 % 12 returns 0 for 12 PM, which displays as "12:00", but hours 0-6 (7 AM - 1 PM) will show as 7, 8, 9, 10, 11, 0 instead of 7, 8, 9, 10, 11, 12.
For hour24 = 18 (6 PM): 18 % 12 = 6, but should display "6:00".
For hour24 = 12 (12 PM): 12 % 12 = 0, then || 12 makes it "12:00" ✓
The logic assumes this displays AM/PM labels somewhere, but the component only shows times like "7:00", "8:00" without AM/PM indicators, making it ambiguous whether these are morning or evening hours.
Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/web/app/(general)/(light)/reservations/_components/MobileReservationSection/MobileReservationStatusCard.tsx
Line: 10:10
Comment:
AM/PM display logic incorrect. `hour24 % 12` returns 0 for 12 PM, which displays as "12:00", but hours 0-6 (7 AM - 1 PM) will show as 7, 8, 9, 10, 11, 0 instead of 7, 8, 9, 10, 11, 12.
For hour24 = 18 (6 PM): `18 % 12 = 6`, but should display "6:00".
For hour24 = 12 (12 PM): `12 % 12 = 0`, then `|| 12` makes it "12:00" ✓
The logic assumes this displays AM/PM labels somewhere, but the component only shows times like "7:00", "8:00" without AM/PM indicators, making it ambiguous whether these are morning or evening hours.
How can I resolve this? If you propose a fix, please make it concise.| setSelectedDate: Dispatch<SetStateAction<Dayjs>> | ||
| calendarDates: Dayjs[] | ||
| currentMonth: Dayjs | ||
| onSelect?(d: Dayjs): void |
There was a problem hiding this comment.
Unused onSelect prop defined but never used in implementation
Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/web/app/(general)/(light)/reservations/_components/MobileCalendarSection/MobileMonthBlock.tsx
Line: 9:9
Comment:
Unused `onSelect` prop defined but never used in implementation
How can I resolve this? If you propose a fix, please make it concise.| interface MonthBlockProps { | ||
| calendarDates: Dayjs[] | ||
| visibleMonth: Dayjs | ||
| onSelect?(date: Dayjs): void |
There was a problem hiding this comment.
Unused onSelect prop defined but never used in implementation
Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/web/app/(general)/(light)/reservations/_components/MonthCalendarView/MonthBlock.tsx
Line: 7:7
Comment:
Unused `onSelect` prop defined but never used in implementation
How can I resolve this? If you propose a fix, please make it concise.
🚀 작업 내용
자원예약 페이지의 모바일 UI를 어느정도 완성하였습니다.
📸 스크린샷(선택)
🔗 관련 이슈
close #206
🙏 리뷰어에게
UI를 어느정도 갖춰놓은 상태이고, 이후에 백엔드가 어느정도 완성되면 데이터를 가져와서 표시하는 로직을 완성하려 합니다.
'나의 예약현황'은 데이터를 Fetch 해오기만 하면 바로 완성되는 상태입니다
Add Schedule을 하는 과정과, 이를 백앤드에 보낸 뒤 다시 fetch해오는 과정은 아직 완성되지 않았습니다.
일단 컴포넌트 UI를 반영하는 이슈를 빠르게 중간고사 전까지 처리하려고 노력하고, 그 컴포넌트들을 가지고 Add Schedule까지 완성하겠습니다.
✅ 체크리스트