Skip to content

Feat/#122 페이지 진입 시 이벤트 소개 모달 추가 및 이벤트 소개 페이지 디자인 수정#123

Merged
leeleeleeleejun merged 8 commits intodevelopfrom
feat/#122
Mar 14, 2026
Merged

Feat/#122 페이지 진입 시 이벤트 소개 모달 추가 및 이벤트 소개 페이지 디자인 수정#123
leeleeleeleejun merged 8 commits intodevelopfrom
feat/#122

Conversation

@leeleeleeleejun
Copy link
Copy Markdown
Member

@leeleeleeleejun leeleeleeleejun commented Mar 14, 2026

#️⃣연관된 이슈

📝작업 내용

페이지 첫 방문 시 이벤트 참여를 유도하는 모달을 추가하고, 이벤트 페이지 UI를 개선했습니다

1. EventPrizeCard 컴포넌트 개선

  • PrizeInfo와 EventStats를 통합하여 단일 카드 컴포넌트로 개편
  • 상품 정보, 당첨자 수, 참여자 수를 한 곳에서 표시

2. 방문 이벤트 모달 구현 (FirstViewEventModal)

  • 페이지 첫 방문 시 0.5초 딜레이 후 자동으로 모달 표시
  • sessionStorage를 활용하여 세션별 한 번만 표시 (새로고침 시 미표시, 브라우저 재방문 시 재표시)
  • API에서 실시간 이벤트 정보(상품, 당첨자 수, 참여자 수) 가져와 표시
  • EventPrizeCard 컴포넌트 재사용으로 일관된 디자인 유지
  • "자세히 보기" 버튼으로 이벤트 페이지 이동 및 자동 모달 닫기 처리

3. 기타 UI 개선

  • BottomNavigation z-index 조정 (100 → 50)으로 모달과 충돌 방지
  • EventCountdown 글꼴 크기 확대 (2xl → 3xl)로 가시성 개선
  • 이벤트 관련 문구 정책 변경 반영

스크린샷 (선택)

첫 방문 시 자동으로 표시되는 이벤트 모달
image

💬리뷰 요구사항(선택)

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요

ex) 메서드 XXX의 이름을 더 잘 짓고 싶은데 혹시 좋은 명칭이 있을까요?

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • 이벤트 첫 방문 시 모달이 자동으로 표시됩니다.
    • 복권/참여 화면에 사용한 티켓 수가 명시되어 표시됩니다.
  • 스타일 개선

    • 카운트다운 타이머 텍스트가 더 커졌습니다.
    • 이벤트 상품 표시가 통합·재설계되어 한눈에 확인하기 쉬워졌습니다。
  • 기타

    • 하단 네비게이션의 레이어 순서가 조정되었습니다.

- EventResultClient에서 참여자 수 및 사용된 티켓 수를 표시하는 UI를 직접 드러냄
- FirstViewEventModal 컴포넌트 생성
- API에서 이벤트 정보 가져와 EventPrizeCard로 표시
- sessionStorage로 세션별 한 번만 표시 (새로고침 시 미표시)
- 0.5초 딜레이 후 자연스럽게 모달 표시
- '자세히 보기' 버튼 클릭 시 이벤트 페이지로 이동 및 모달 닫기
- layout.tsx에 Suspense로 감싸서 전역 적용
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 14, 2026

Walkthrough

이 PR은 이벤트 관련 UI를 리팩토링하여 PrizeInfo/EventStats/ParticipationStatus를 제거하고 새로운 EventPrizeCard로 통합하며, 첫 방문 시 이벤트 소개를 표시하는 FirstViewEventModal을 추가하고 소수의 스타일 조정을 포함합니다.

Changes

Cohort / File(s) Summary
새 이벤트 소개 모달
apps/web/app/_components/FirstViewEventModal.tsx, apps/web/app/layout.tsx
FirstViewEventModal 컴포넌트 추가 및 Layout에 Suspense로 마운트; sessionStorage로 최초 노출 제어하고 useSuspenseQuery로 공개 이벤트 데이터를 조회함.
통합 상품 카드 컴포넌트
apps/web/app/events/lucky-draw/_components/EventPrizeCard/EventPrizeCard.tsx, apps/web/app/events/lucky-draw/_components/EventPrizeCard/index.ts
EventPrizeCard 신규 추가 — imageUrl, description, totalWinnersCount, participantsCount를 받아 상품 카드 UI를 렌더링하도록 구현 및 재내보내기 추가.
제거된 개별 컴포넌트
apps/web/app/events/lucky-draw/_components/PrizeInfo/..., apps/web/app/events/lucky-draw/_components/EventStats/..., apps/web/app/events/lucky-draw/_components/ParticipationStatus/...
PrizeInfo, EventStats, ParticipationStatus 구현 및 해당 index 재내보내기 삭제로 공용 API 제거.
컴포넌트 통합 반영
apps/web/app/events/lucky-draw/_components/Pages/GuestView/GuestView.tsx, apps/web/app/events/lucky-draw/_components/Pages/MemberView/InProgressEvent/InProgressEvent.tsx, apps/web/app/places/new/_components/Step/EventWelcome/EventWelcome.tsx, apps/web/app/events/lucky-draw/result/[id]/EventResultClient.tsx
기존 PrizeInfo/EventStats/ParticipationStatus 사용을 EventPrizeCard로 대체하고 티켓/참여 카운트 표시를 새 레이아웃에 반영함. Props 타입 표기 일부 변경 포함.
스타일/사소 변경
apps/web/app/_components/BottomNavigation/BottomNavigation.tsx, apps/web/app/events/lucky-draw/_components/Pages/MemberView/InProgressEvent/EventCountdown.tsx
BottomNavigation z-index를 100→50으로 변경, EventCountdown의 텍스트 크기 2xl→3xl로 조정.

Sequence Diagram(s)

sequenceDiagram
    participant Client as Client (Browser)
    participant Layout as RootLayout
    participant Modal as FirstViewEventModal
    participant Session as SessionStorage
    participant API as GraphQL (useSuspenseQuery)
    participant Server as API Server

    Client->>Layout: 페이지 요청
    Layout->>Modal: Suspense 내에서 마운트
    Modal->>Session: has_seen 플래그 확인
    alt 플래그 없음
        Modal->>Session: has_seen=true 설정
        Modal->>Modal: 500ms 후 모달 오픈 예약
        Modal->>API: byPublic() 쿼리 호출
        API->>Server: 이벤트 데이터 요청
        Server-->>API: 이벤트 데이터 응답
        API-->>Modal: 데이터 제공
        Modal->>Client: EventPrizeCard 포함 모달 렌더 및 표시
    else 플래그 존재
        Modal-->>Client: 렌더 없음
    end
    Client->>Modal: 모달 닫기 또는 이동
    Modal->>Modal: onClose 처리
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related issues

  • #122: FirstViewEventModal을 통해 "페이지 진입 시 이벤트 소개 모달" 기능을 구현하므로 해당 이슈와 직접 연관됨.

Possibly related PRs

  • #83: ParticipationStatus 등 참여 관련 컴포넌트 변경 기록과 코드 레벨 연관이 있음.
  • #119: lucky-draw 이벤트 UI(PrizeInfo/EventStats/ParticipationStatus) 변경을 다루는 PR로 강한 관련성 있음.
  • #63: byPublic() 등 공개 이벤트 쿼리 사용과 연계된 변경이 있어 관련 있음.

Suggested labels

✨ Feature, 🔨 Refactor, 🎨 Style

Poem

🐇 첫 방문에 살포시 문을 열고,
🍀 모달에 담긴 황금클로버를 보았네,
카드 한 장에 상품을 모아,
세션 한 줄로 다시는 반복하지 않으리,
폴짝폴짝 기뻐하는 토끼의 작은 축하.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Pull request title clearly describes the main changes: adding an event introduction modal on first page visit and design improvements for event introduction pages, which aligns with the actual changeset including FirstViewEventModal addition, EventPrizeCard component consolidation, and related UI updates.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/#122
📝 Coding Plan
  • Generate coding plan for human review comments

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (5)
apps/web/app/events/lucky-draw/_components/Pages/MemberView/InProgressEvent/EventCountdown.tsx (1)

7-7: 함수에 명시적 반환 타입 추가를 권장합니다.

코딩 가이드라인에 따르면 함수에 반환 타입이 필요합니다. 이번 변경 범위는 아니지만, 향후 유지보수를 위해 추가하는 것을 고려해 주세요.

♻️ 제안된 수정 사항
-export const EventCountdown = ({ eventEndDate }: { eventEndDate: string }) => {
+export const EventCountdown = ({ eventEndDate }: { eventEndDate: string }): JSX.Element => {

As per coding guidelines, "return types required on functions".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@apps/web/app/events/lucky-draw/_components/Pages/MemberView/InProgressEvent/EventCountdown.tsx`
at line 7, The EventCountdown component currently has no explicit return type;
update the function signature for EventCountdown (which takes { eventEndDate:
string }) to include an explicit React return type such as JSX.Element or
React.ReactElement so the component's return is typed according to the coding
guideline requiring return types on functions; locate the EventCountdown
declaration and add the chosen return type to the function signature.
apps/web/app/layout.tsx (1)

124-126: ErrorBoundary 추가 권장

FirstViewEventModaluseSuspenseQuery를 사용하며, API 호출 실패 시 에러를 throw합니다. 현재 Suspense만 있고 ErrorBoundary가 없어서 네트워크 오류나 API 장애 시 전체 앱이 크래시될 수 있습니다.

이벤트 모달은 부가 기능이므로, 실패해도 앱 전체에 영향을 주지 않도록 ErrorBoundary로 감싸는 것을 권장합니다.

♻️ ErrorBoundary 추가 예시
+import { ErrorBoundary } from 'react-error-boundary'
+
+const SilentFallback = () => null
+
 // layout.tsx 내부
-<Suspense fallback={null}>
-  <FirstViewEventModal />
-</Suspense>
+<ErrorBoundary fallback={<SilentFallback />}>
+  <Suspense fallback={null}>
+    <FirstViewEventModal />
+  </Suspense>
+</ErrorBoundary>

또는 Next.js의 error.tsx 패턴을 사용할 수도 있습니다.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/app/layout.tsx` around lines 124 - 126, Wrap the Suspense-wrapped
component to prevent app-wide crashes by adding an ErrorBoundary around the
Suspense + FirstViewEventModal (i.e., change the fragment containing <Suspense
fallback={null}><FirstViewEventModal /></Suspense> to be nested inside an
ErrorBoundary component); implement or reuse an ErrorBoundary component that
catches render errors from FirstViewEventModal (which uses useSuspenseQuery),
renders a safe fallback UI or null, and logs the error so API/network failures
do not crash the whole app.
apps/web/app/events/lucky-draw/_components/EventPrizeCard/EventPrizeCard.tsx (1)

13-18: 함수에 명시적 반환 타입 추가 권장

코딩 가이드라인에 따라 함수에 반환 타입을 명시하는 것이 좋습니다.

♻️ 반환 타입 추가 제안
 export const EventPrizeCard = ({
   imageUrl,
   description,
   totalWinnersCount,
   participantsCount,
-}: Props) => {
+}: Props): React.ReactElement => {
   return (
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/app/events/lucky-draw/_components/EventPrizeCard/EventPrizeCard.tsx`
around lines 13 - 18, The EventPrizeCard functional component lacks an explicit
return type; update its signature to declare a TypeScript return type (e.g.,
JSX.Element or React.FC<Props>) so the component's return value is typed. Locate
the EventPrizeCard declaration and add the return type after the parameter list
(keeping Props as the param type) and ensure any imported React types are
available (JSX.Element or React.FC) to satisfy the compiler and coding
guidelines.
apps/web/app/events/lucky-draw/_components/Pages/MemberView/InProgressEvent/InProgressEvent.tsx (2)

15-15: 함수에 명시적 반환 타입이 누락되었습니다.

코딩 가이드라인에 따르면 함수에 반환 타입을 명시해야 합니다.

♻️ 반환 타입 추가
-export const InProgressEvent = () => {
+export const InProgressEvent = (): React.ReactElement => {

코딩 가이드라인에 따르면: "return types required on functions"

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@apps/web/app/events/lucky-draw/_components/Pages/MemberView/InProgressEvent/InProgressEvent.tsx`
at line 15, 함수 InProgressEvent에 명시적 반환 타입이 빠져 있으니 해당 컴포넌트 선언(Export const
InProgressEvent) 에 JSX.Element 또는 React.ReactElement 같은 명시적 반환 타입을 추가하여 타입 검사를
통과하도록 수정하세요; 파일에서 InProgressEvent 함수 시그니처를 찾아 현재 화살표 함수 선언에 반환 타입을 붙이고 필요한 경우
React 타입을 임포트하세요.

3-13: import 순서가 코딩 가이드라인을 따르지 않습니다.

가이드라인에 따르면 import 순서는 다음과 같아야 합니다: Node/built-in, external packages, absolute imports, relative imports.

현재 코드에서는 external packages(next/link, @tanstack/react-query, @repo/ui/*)와 absolute imports(@/_constants/path, @/_apis/queries/event, @/events/...)가 혼합되어 있고, relative imports(./EventCountdown, ../../EmptyEventState)도 중간에 위치해 있습니다.

♻️ 권장되는 import 순서
 'use client'

+import Link from 'next/link'
+import { useSuspenseQuery } from '@tanstack/react-query'
+import { Flex, Column } from '@repo/ui/components/Layout'
+import { Icon } from '@repo/ui/components/Icon'
+import { Text } from '@repo/ui/components/Text'
+import { Button } from '@repo/ui/components/Button'
+
+import { CLIENT_PATH } from '@/_constants/path'
+import { useEventQueries } from '@/_apis/queries/event'
+import { EventPrizeCard } from '@/events/lucky-draw/_components/EventPrizeCard'
+
+import { EventCountdown } from './EventCountdown'
+import { EmptyEventState } from '../../EmptyEventState'
-import Link from 'next/link'
-import { CLIENT_PATH } from '@/_constants/path'
-import { useSuspenseQuery } from '@tanstack/react-query'
-import { useEventQueries } from '@/_apis/queries/event'
-import { Flex, Column } from '@repo/ui/components/Layout'
-import { Icon } from '@repo/ui/components/Icon'
-import { Text } from '@repo/ui/components/Text'
-import { EventCountdown } from './EventCountdown'
-import { EventPrizeCard } from '@/events/lucky-draw/_components/EventPrizeCard'
-import { EmptyEventState } from '../../EmptyEventState'
-import { Button } from '@repo/ui/components/Button'

코딩 가이드라인에 따르면: "Organize imports in the following order: Node/built-in, external packages, absolute imports, relative imports"

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@apps/web/app/events/lucky-draw/_components/Pages/MemberView/InProgressEvent/InProgressEvent.tsx`
around lines 3 - 13, The imports in InProgressEvent.tsx are out of order;
reorder them to follow the project's guideline: external packages first (e.g.,
next/link, `@tanstack/react-query`), then absolute imports (e.g.,
`@/_constants/path`, `@/_apis/queries/event`, `@repo/ui/`*,
`@/events/lucky-draw/_components/EventPrizeCard`), and finally relative imports
(./EventCountdown, ../../EmptyEventState); ensure related UI imports (Flex,
Column, Icon, Text, Button) are grouped together under absolute imports and move
all relative imports to the bottom so the import list for Link, CLIENT_PATH,
useSuspenseQuery, useEventQueries, EventPrizeCard, EventCountdown, and
EmptyEventState matches the required order.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/web/app/_components/FirstViewEventModal.tsx`:
- Around line 27-41: The sessionStorage is being set regardless of whether an
active event exists, causing the modal never to show later; update the useEffect
so it first checks `data` (return early if falsy) before reading/setting
`sessionStorage` and starting the `setTimeout` that calls `onOpen`, and ensure
the cleanup still clears the `timer` with `clearTimeout(timer)`; specifically
modify the `useEffect` that references `STORAGE_KEY`, `onOpen`,
`sessionStorage.setItem`, and `timer` so storage is only written when `data` is
present.

---

Nitpick comments:
In
`@apps/web/app/events/lucky-draw/_components/EventPrizeCard/EventPrizeCard.tsx`:
- Around line 13-18: The EventPrizeCard functional component lacks an explicit
return type; update its signature to declare a TypeScript return type (e.g.,
JSX.Element or React.FC<Props>) so the component's return value is typed. Locate
the EventPrizeCard declaration and add the return type after the parameter list
(keeping Props as the param type) and ensure any imported React types are
available (JSX.Element or React.FC) to satisfy the compiler and coding
guidelines.

In
`@apps/web/app/events/lucky-draw/_components/Pages/MemberView/InProgressEvent/EventCountdown.tsx`:
- Line 7: The EventCountdown component currently has no explicit return type;
update the function signature for EventCountdown (which takes { eventEndDate:
string }) to include an explicit React return type such as JSX.Element or
React.ReactElement so the component's return is typed according to the coding
guideline requiring return types on functions; locate the EventCountdown
declaration and add the chosen return type to the function signature.

In
`@apps/web/app/events/lucky-draw/_components/Pages/MemberView/InProgressEvent/InProgressEvent.tsx`:
- Line 15: 함수 InProgressEvent에 명시적 반환 타입이 빠져 있으니 해당 컴포넌트 선언(Export const
InProgressEvent) 에 JSX.Element 또는 React.ReactElement 같은 명시적 반환 타입을 추가하여 타입 검사를
통과하도록 수정하세요; 파일에서 InProgressEvent 함수 시그니처를 찾아 현재 화살표 함수 선언에 반환 타입을 붙이고 필요한 경우
React 타입을 임포트하세요.
- Around line 3-13: The imports in InProgressEvent.tsx are out of order; reorder
them to follow the project's guideline: external packages first (e.g.,
next/link, `@tanstack/react-query`), then absolute imports (e.g.,
`@/_constants/path`, `@/_apis/queries/event`, `@repo/ui/`*,
`@/events/lucky-draw/_components/EventPrizeCard`), and finally relative imports
(./EventCountdown, ../../EmptyEventState); ensure related UI imports (Flex,
Column, Icon, Text, Button) are grouped together under absolute imports and move
all relative imports to the bottom so the import list for Link, CLIENT_PATH,
useSuspenseQuery, useEventQueries, EventPrizeCard, EventCountdown, and
EmptyEventState matches the required order.

In `@apps/web/app/layout.tsx`:
- Around line 124-126: Wrap the Suspense-wrapped component to prevent app-wide
crashes by adding an ErrorBoundary around the Suspense + FirstViewEventModal
(i.e., change the fragment containing <Suspense
fallback={null}><FirstViewEventModal /></Suspense> to be nested inside an
ErrorBoundary component); implement or reuse an ErrorBoundary component that
catches render errors from FirstViewEventModal (which uses useSuspenseQuery),
renders a safe fallback UI or null, and logs the error so API/network failures
do not crash the whole app.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 1807af44-448d-425b-a40e-e76b7bc0cb29

📥 Commits

Reviewing files that changed from the base of the PR and between acac3b5 and ef6c6c2.

📒 Files selected for processing (16)
  • apps/web/app/_components/BottomNavigation/BottomNavigation.tsx
  • apps/web/app/_components/FirstViewEventModal.tsx
  • apps/web/app/events/lucky-draw/_components/EventPrizeCard/EventPrizeCard.tsx
  • apps/web/app/events/lucky-draw/_components/EventPrizeCard/index.ts
  • apps/web/app/events/lucky-draw/_components/EventStats/EventStats.tsx
  • apps/web/app/events/lucky-draw/_components/EventStats/index.ts
  • apps/web/app/events/lucky-draw/_components/Pages/GuestView/GuestView.tsx
  • apps/web/app/events/lucky-draw/_components/Pages/MemberView/InProgressEvent/EventCountdown.tsx
  • apps/web/app/events/lucky-draw/_components/Pages/MemberView/InProgressEvent/InProgressEvent.tsx
  • apps/web/app/events/lucky-draw/_components/ParticipationStatus/ParticipationStatus.tsx
  • apps/web/app/events/lucky-draw/_components/ParticipationStatus/index.tsx
  • apps/web/app/events/lucky-draw/_components/PrizeInfo/PrizeInfo.tsx
  • apps/web/app/events/lucky-draw/_components/PrizeInfo/index.ts
  • apps/web/app/events/lucky-draw/result/[id]/EventResultClient.tsx
  • apps/web/app/layout.tsx
  • apps/web/app/places/new/_components/Step/EventWelcome/EventWelcome.tsx
💤 Files with no reviewable changes (6)
  • apps/web/app/events/lucky-draw/_components/EventStats/index.ts
  • apps/web/app/events/lucky-draw/_components/ParticipationStatus/index.tsx
  • apps/web/app/events/lucky-draw/_components/EventStats/EventStats.tsx
  • apps/web/app/events/lucky-draw/_components/PrizeInfo/index.ts
  • apps/web/app/events/lucky-draw/_components/PrizeInfo/PrizeInfo.tsx
  • apps/web/app/events/lucky-draw/_components/ParticipationStatus/ParticipationStatus.tsx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
apps/web/app/_components/FirstViewEventModal.tsx (1)

23-23: 컴포넌트 반환 타입 명시 권장 (선택 사항)

코딩 가이드라인에 따라 함수에 반환 타입을 명시하는 것이 권장됩니다. TypeScript가 올바르게 추론하지만, 명시적 타입은 코드 문서화에 도움이 됩니다.

💡 반환 타입 추가 제안
-export const FirstViewEventModal = () => {
+export const FirstViewEventModal = (): React.ReactNode => {
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/web/app/_components/FirstViewEventModal.tsx` at line 23, Add an explicit
return type to the FirstViewEventModal component declaration to follow the
TypeScript coding guideline: change the signature of FirstViewEventModal to
include a return type (for example use (): JSX.Element or (): React.ReactElement
or React.FC) so the component reads like `export const FirstViewEventModal = ():
JSX.Element => { ... }`; update any related imports if you choose React.FC and
ensure the component implementation remains unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@apps/web/app/_components/FirstViewEventModal.tsx`:
- Line 23: Add an explicit return type to the FirstViewEventModal component
declaration to follow the TypeScript coding guideline: change the signature of
FirstViewEventModal to include a return type (for example use (): JSX.Element or
(): React.ReactElement or React.FC) so the component reads like `export const
FirstViewEventModal = (): JSX.Element => { ... }`; update any related imports if
you choose React.FC and ensure the component implementation remains unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 44286c73-832c-422d-8d1c-a7bc964fa226

📥 Commits

Reviewing files that changed from the base of the PR and between ef6c6c2 and 1888d27.

📒 Files selected for processing (1)
  • apps/web/app/_components/FirstViewEventModal.tsx

@leeleeleeleejun leeleeleeleejun merged commit 2e4f64c into develop Mar 14, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] 페이지 진입 시 이벤트 소개 모달 추가 및 이벤트 소개 페이지 디자인 수정

1 participant