Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
93a3e34
fix: admin_board mp4 영상 수정
woneeeee Apr 6, 2026
1fbf9a9
fix: landing_card_6 다운그레이딩 svg 파일 수정
woneeeee Apr 6, 2026
dea4e2b
remove: 불필요한 png 파일 삭제
woneeeee Apr 6, 2026
0fd8334
fix: 사파리 오류 viewPort 적용
woneeeee Apr 6, 2026
d71e1e5
remove: 불필요한 토스트 메시지 제거
woneeeee Apr 6, 2026
9bd8477
fix: 디자인 토큰용 버튼 말고 하드코딩된 색상으로 수정
woneeeee Apr 6, 2026
fb6320d
fix: 문의하기 모달 모바일에서 모달 꺼지는 이슈 수정
woneeeee Apr 6, 2026
972c0fd
fix: 서비스섹션 테블릿뷰 코드 분리 및 QA 반영
woneeeee Apr 6, 2026
baddf13
fix: 헤더 로고 클릭시 가장 위로 올라오도록 수정
woneeeee Apr 6, 2026
eb25dc4
fix: 헤더에서 문의하기 모달 클릭시 꺼지는 이슈 해결
woneeeee Apr 6, 2026
541e8c2
fix: 모바일에서는 영상 안보이는 이슈 해결
woneeeee Apr 6, 2026
8c89542
fix: ClubTypesSection에서 하단 설명 안보이는 문제 해결
woneeeee Apr 7, 2026
c365115
fix: member 영상을 admin_attendance 영상으로 교체
woneeeee Apr 7, 2026
2fa42aa
fix: 히어로섹션 잘리는 문제 해결
woneeeee Apr 7, 2026
dfaf221
fix: 서비스섹션 잘리는 문제 임시 해결
woneeeee Apr 7, 2026
b464a50
fix: 랜딩 이미지 svg -> png로 변경
woneeeee Apr 8, 2026
bb5b9bd
fix: 배경색깔 반영
woneeeee Apr 8, 2026
ef4f2ad
fix: 서비스섹션 크롭되지 않도록 해결
woneeeee Apr 8, 2026
9ae3fa2
fix: 프리티어 오류 수정
woneeeee Apr 8, 2026
89171bd
fix: pt 삭제
woneeeee Apr 8, 2026
795d866
fix: 크롭되는 현상 해결
woneeeee Apr 8, 2026
b7395b5
fix: 8px 윗여백 추가
woneeeee Apr 8, 2026
cd2d0e1
fix: 16px로 수정
woneeeee Apr 8, 2026
78436a2
fix: 태블릿 중앙정렬 수정
woneeeee Apr 8, 2026
ab26357
fix: 운영섹션 화이트로 변경
woneeeee Apr 8, 2026
3596cbe
fix: 영상 최적화
woneeeee Apr 8, 2026
43b9456
fix: 모달 바깥 클릭 시 모달 꺼지도록 수정
woneeeee Apr 8, 2026
bc6a571
fix: 영상 업로드 전 로딩 이미지 추가
woneeeee Apr 8, 2026
b086e56
fix: jpg 모듈 선언 추가
woneeeee Apr 8, 2026
0412a7c
fix: poster 대신 스켈레톤으로 수정
woneeeee Apr 8, 2026
bdbbb2e
fix: 스켈레톤 높이 수정
woneeeee Apr 8, 2026
547803d
fix: 스켈레톤 높이 수정 및 영상 변경
woneeeee Apr 8, 2026
22f1c90
fix: 해당 페이지 진입 후 영상 재생되도록 수정
woneeeee Apr 8, 2026
7de5523
fix: 영상 재생 시점 수정
woneeeee Apr 8, 2026
371defd
fix: 뒷 영상 활성화 로직 수정
woneeeee Apr 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified public/videos/landing/admin_board.mp4
Binary file not shown.
Binary file modified public/videos/landing/admin_member.mp4
Binary file not shown.
Binary file modified public/videos/landing/user_board.mp4
Binary file not shown.
Binary file added public/videos/landing/user_board_orig.mp4
Binary file not shown.
Binary file modified public/videos/landing/user_home.mp4
Binary file not shown.
Binary file added public/videos/landing/user_home_orig.mp4
Binary file not shown.
5 changes: 0 additions & 5 deletions src/app/(public)/landing/page.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import { Suspense } from 'react';
import {
HeroSection,
TestimonialSection,
ClubTypesSection,
LandingFooter,
BlockedToast,
} from '@/components/landing';
import {
PhilosophySection,
Expand All @@ -18,9 +16,6 @@ import { USER_FEATURES, ADMIN_FEATURES } from '@/constants/landing/landing';
export default function LandingPage() {
return (
<>
<Suspense>
<BlockedToast />
</Suspense>
{/* TODO: showAuthButtons 추가하기 */}
<PublicHeader />
<main className="flex min-h-screen w-full flex-col">
Expand Down
8 changes: 7 additions & 1 deletion src/app/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { Metadata } from 'next';
import type { Metadata, Viewport } from 'next';
import type { ReactNode } from 'react';
import { Toaster } from '@/components/ui';
import { QueryProvider } from '@/providers';
Expand All @@ -14,6 +14,12 @@
display: 'swap',
});

export const viewport: Viewport = {
width: 'device-width',
initialScale: 1,
maximumScale: 1,
};
Comment on lines +17 to +21
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

확대 제한(maximumScale: 1)은 접근성 회귀를 유발합니다.

Line 20의 maximumScale: 1은 사용자 확대를 막아 저시력 사용자의 이용성을 크게 떨어뜨립니다. 사파리 자동 확대 이슈는 입력 요소 폰트 크기/터치 처리로 해결하고, 전역 viewport에서는 확대를 허용하는 쪽이 안전합니다.

접근성 회귀를 막는 최소 수정안
 export const viewport: Viewport = {
   width: 'device-width',
   initialScale: 1,
-  maximumScale: 1,
 };
📝 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.

Suggested change
export const viewport: Viewport = {
width: 'device-width',
initialScale: 1,
maximumScale: 1,
};
export const viewport: Viewport = {
width: 'device-width',
initialScale: 1,
};
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/app/layout.tsx` around lines 17 - 21, 현재 export된 객체 viewport의
maximumScale: 1이 사용자 확대를 차단하므로 이 속성을 제거하거나 null/undefined로 변경해 전역 뷰포트에서 확대를 허용하되
initialScale과 width는 유지하세요; 구체적으로 export const viewport 객체에서 maximumScale 키를
삭제(또는 설정하지 않음)하도록 수정하고 사파리 자동 확대 문제는 입력 관련으로 처리하기 위해 입력 폰트 크기를 16px 이상으로 설정하거나
touch-action/CSS로 터치 동작을 조정하는 방식으로 해결하세요.


export const metadata: Metadata = {
title: 'Weeth',
description: '동아리는 우리 모두가 함께 하는 것! with, Weeth!',
Expand All @@ -36,7 +42,7 @@
}}
/>
{/* Google Tag Manager */}
<script

Check warning on line 45 in src/app/layout.tsx

View workflow job for this annotation

GitHub Actions / Lint & Build

Prefer `GoogleTagManager` component from `@next/third-parties/google` when using the inline script for Google Tag Manager. See: https://nextjs.org/docs/messages/next-script-for-ga
dangerouslySetInnerHTML={{
__html: `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
Expand Down
4 changes: 0 additions & 4 deletions src/assets/icons/landing/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
export { default as LandingUserFaceIcon } from './landing_user_face.svg';
export { default as LandingAdminFaceIcon } from './landing_admin_face.svg';
export { default as LandingServiceBoardImage } from './landing_service_board.png';
export { default as LandingServiceMemberImage } from './landing_service_member.png';
export { default as LandingGuideTitle } from './landing_guide_title.svg';
export { default as Ldquo } from './ldquo.svg';
export { default as LdquoBack } from './ldquo_back.svg';
Expand All @@ -11,7 +9,5 @@ export { default as RunningImage } from './running.png';
export { default as StudyImage } from './study.png';
export { default as YogaImage } from './yoga.png';
export { default as BicycleImage } from './bicycle.png';
export { default as LandingMockUp } from './landing_mock_up.png';
export { default as LandingMountingImage } from './landing_mounting.png';
export { default as HeroSectionCardImage } from './hero_section_card.svg';
export { default as MobileHeroSectionCardImage } from './mobile_hero_section_card.svg';
Binary file removed src/assets/icons/landing/landing_mock_up.png
Binary file not shown.
Binary file removed src/assets/icons/landing/landing_mockup.png
Binary file not shown.
Binary file removed src/assets/icons/landing/landing_mounting.png
Binary file not shown.
Binary file removed src/assets/icons/landing/landing_service_board.png
Binary file not shown.
Binary file removed src/assets/icons/landing/landing_service_member.png
Binary file not shown.
18 changes: 8 additions & 10 deletions src/assets/image/landing/card/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
export { default as LandingCard1 } from './landing_card_1.svg';
export { default as LandingCard2 } from './landing_card_2.svg';
export { default as LandingCard3 } from './landing_card_3.svg';
export { default as LandingCard4 } from './landing_card_4.svg';
export { default as LandingCard5 } from './landing_card_5.svg';
export { default as LandingCard6 } from './landing_card_6.svg';
export { default as LandingCard7 } from './landing_card_7.svg';
export { default as LandingCard8 } from './landing_card_8.svg';

export { default as LandingHeroCard } from './landing_hero_card.svg';
export { default as LandingCard1 } from './landing_card_1.png';
export { default as LandingCard2 } from './landing_card_2.png';
export { default as LandingCard3 } from './landing_card_3.png';
export { default as LandingCard4 } from './landing_card_4.png';
export { default as LandingCard5 } from './landing_card_5.png';
export { default as LandingCard6 } from './landing_card_6.png';
export { default as LandingCard7 } from './landing_card_7.png';
export { default as LandingCard8 } from './landing_card_8.png';
Binary file added src/assets/image/landing/card/landing_card_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 0 additions & 9 deletions src/assets/image/landing/card/landing_card_1.svg

This file was deleted.

Binary file added src/assets/image/landing/card/landing_card_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 0 additions & 13 deletions src/assets/image/landing/card/landing_card_2.svg

This file was deleted.

Binary file added src/assets/image/landing/card/landing_card_3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 0 additions & 10 deletions src/assets/image/landing/card/landing_card_3.svg

This file was deleted.

Binary file added src/assets/image/landing/card/landing_card_4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
42 changes: 0 additions & 42 deletions src/assets/image/landing/card/landing_card_4.svg

This file was deleted.

Binary file added src/assets/image/landing/card/landing_card_5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 0 additions & 9 deletions src/assets/image/landing/card/landing_card_5.svg

This file was deleted.

Binary file added src/assets/image/landing/card/landing_card_6.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 0 additions & 9 deletions src/assets/image/landing/card/landing_card_6.svg

This file was deleted.

Binary file added src/assets/image/landing/card/landing_card_7.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
17 changes: 0 additions & 17 deletions src/assets/image/landing/card/landing_card_7.svg

This file was deleted.

Binary file added src/assets/image/landing/card/landing_card_8.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 0 additions & 9 deletions src/assets/image/landing/card/landing_card_8.svg

This file was deleted.

Binary file added src/assets/image/landing/card/landing_card_9.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 0 additions & 13 deletions src/assets/image/landing/card/landing_hero_card.svg

This file was deleted.

2 changes: 1 addition & 1 deletion src/components/landing/ClubTypesSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ function ClubTypesSection({ className }: ClubTypesSectionProps) {
))}
</div>

<div className="tablet:text-[20px] desktop:text-[24px] desktop:leading-[30px] hidden px-600 text-center text-[18px] leading-[26px] font-semibold tracking-[-0.005em]">
<div className="tablet:text-[20px] desktop:text-[24px] tablet:flex desktop:leading-[30px] hidden px-600 text-center text-[18px] leading-[26px] font-semibold tracking-[-0.005em]">
Weeth는 모든 동아리가 사용할 수 있는 환경을 지향합니다
</div>
<div className="tablet:hidden flex px-600 text-center text-[18px] leading-[26px] font-semibold tracking-[-0.005em]">
Expand Down
2 changes: 1 addition & 1 deletion src/components/landing/HeroSectionDesktop.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ function HeroSectionDesktop({ className }: HeroSectionProps) {
<section
ref={sectionRef}
className={cn(
'relative flex min-h-[calc(100vh+64px)] max-w-full flex-col overflow-hidden bg-[#D5E4FF]',
'relative flex min-h-[calc(100vh+64px)] max-w-full flex-col overflow-hidden bg-[#D5E4FF] pt-[96px]',
className,
)}
>
Expand Down
7 changes: 6 additions & 1 deletion src/components/landing/InquiryDialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,12 @@ function InquiryDialog({ children }: InquiryDialogProps) {
return (
<Dialog open={open} onOpenChange={handleOpenChange}>
<DialogTrigger asChild>{children}</DialogTrigger>
<DialogContent showCloseButton={false} className="bg-background flex w-[640px] flex-col">
<DialogContent
showCloseButton={false}
className="bg-background flex w-[640px] flex-col"
onPointerDownOutside={isSubmitting ? (e) => e.preventDefault() : undefined}
onInteractOutside={isSubmitting ? (e) => e.preventDefault() : undefined}
>
<DialogHeader
icon={
<Icon src={InfoCircleIcon} size={24} className="text-brand-primary" alt="정보 아이콘" />
Expand Down
13 changes: 10 additions & 3 deletions src/components/landing/ServiceSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import { useEffect, useState } from 'react';
import type { StaticImageData } from 'next/image';
import { ServiceSectionDesktop } from './ServiceSectionDesktop';
import { ServiceSectionTablet } from './ServiceSectionTablet';
import { ServiceSectionMobile } from './ServiceSectionMobile';

interface Feature {
Expand All @@ -24,19 +25,25 @@ interface ServiceSectionProps {
features: Feature[];
}

const TABLET_BP = 696;
const DESKTOP_BP = 1440;

function ServiceSection(props: ServiceSectionProps) {
const [isDesktop, setIsDesktop] = useState(false);
const [bp, setBp] = useState<'mobile' | 'tablet' | 'desktop'>('mobile');

useEffect(() => {
const check = () => setIsDesktop(window.innerWidth >= DESKTOP_BP);
const check = () => {
if (window.innerWidth >= DESKTOP_BP) setBp('desktop');
else if (window.innerWidth >= TABLET_BP) setBp('tablet');
else setBp('mobile');
};
check();
window.addEventListener('resize', check);
return () => window.removeEventListener('resize', check);
}, []);

if (isDesktop) return <ServiceSectionDesktop {...props} />;
if (bp === 'desktop') return <ServiceSectionDesktop {...props} />;
if (bp === 'tablet') return <ServiceSectionTablet {...props} />;
return <ServiceSectionMobile {...props} />;
}

Expand Down
Loading
Loading