Skip to content

[PR] 과제 업로드 페이지(UploadPage) 모바일 반응형 UI 설정#74

Merged
TTOCHIwas merged 6 commits into
mainfrom
feat#73-uploadpage-mobile-ui
Apr 13, 2026
Merged

[PR] 과제 업로드 페이지(UploadPage) 모바일 반응형 UI 설정#74
TTOCHIwas merged 6 commits into
mainfrom
feat#73-uploadpage-mobile-ui

Conversation

@TTOCHIwas

Copy link
Copy Markdown
Collaborator

📝 요약 (Summary)

  • 업로드 페이지가 모바일 화면에서 깨져 보이던 부분을 정리했습니다.
  • 작은 화면에서도 제목 입력, 과제 유형 선택, 내용 작성, 파일 업로드, 제출 버튼이 자연스럽게 보이도록 했습니다.

✅ 주요 변경 사항 (Key Changes)

  • 업로드 페이지 전체 여백과 카드 간격을 모바일 화면에 맞게 조정했습니다.
  • 내용 작성 영역과 파일 업로드 영역이 모바일에서는 위아래 배치로 변경했습니다.
  • 제출 버튼을 모바일에서도 보기 좋게 정리했습니다.

💻 상세 구현 내용 (Implementation Details)

1. 업로드 페이지 상단 레이아웃 정리

image
  • 페이지 바깥 여백과 내부 카드 여백을 화면 크기에 따라 다르게 보이도록 수정했습니다.
  • 제목 입력 영역의 크기와 높이를 조정해 모바일에서도 답답하지 않게 보이도록 했습니다.

2. 과제 유형 선택 영역 반응형 적용

image
  • 모바일에서는 과제 유형 버튼이 한 줄에 몰리지 않도록 정리했습니다.
  • 작은 화면에서도 버튼이 눌리기 쉽게 간격과 크기를 조정했습니다.

3. 내용 작성 / 파일 업로드 영역 개선

image
  • 데스크톱에서는 기존처럼 좌우 배치를 유지하고, 모바일에서는 위아래 배치로 바꿨습니다.
  • 내용 입력 영역은 모바일에서 placeholder가 잘리지 않도록 최소 높이와 줄바꿈을 조정했습니다.
  • 파일 드롭존은 모바일 환경에 맞게 문구를 바꿔, 드래그 대신 파일 선택/탭 업로드 중심으로 보이게 했습니다.
  • 파일 목록과 파일 아이템 간격도 모바일에 맞게 정리했습니다.

4. 제출 영역 정리

image
  • 제출 영역의 클릭 박스를 실제 버튼으로 바꿔 더 자연스럽게 동작하도록 수정했습니다.
  • 모바일에서는 버튼이 전체 너비로 보이도록 조정했습니다.
  • 단위는 일관되게 px 기준으로 맞췄습니다.

🚀 트러블 슈팅 (Trouble Shooting)

  • 해당 없음

⚠️ 알려진 이슈 및 참고 사항 (Known Issues & Notes)

  • 다음 이슈에서 업로드 로딩 페이지와 단계 페이지도 반응형 ui 설정 추가해주겠습니다.

📸 스크린샷 (Screenshots)

image

#️⃣ 관련 이슈 (Related Issues)

@TTOCHIwas TTOCHIwas linked an issue Apr 11, 2026 that may be closed by this pull request
@TTOCHIwas TTOCHIwas requested a review from Dobbymin April 11, 2026 10:45
@TTOCHIwas TTOCHIwas self-assigned this Apr 11, 2026
@TTOCHIwas TTOCHIwas added the ✨ Feature 새로운 기능 추가 및 구현하는 경우 label Apr 11, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Code Review

This pull request implements responsive design across the upload feature components by applying Chakra UI's responsive object syntax to various layout and typography properties. Key changes include refactoring the submit section to use a Button component, updating the assignment type section for better mobile layout, and removing the baseUrl configuration from TypeScript settings. Feedback focuses on improving accessibility and component behavior by using Chakra-specific props like isDisabled and ensuring custom button elements have an explicit type="button" attribute to prevent unintended form submissions.

Comment on lines +25 to +35
disabled={isDisabled}
fontSize={{ base: "sm", md: "md" }}
fontWeight="bold"
h={{ base: 12, md: 14 }}
maxW={{ base: "full", md: "384px" }}
opacity={isDisabled ? 0.5 : 1}
px={8}
transition="opacity 0.15s"
px={{ base: 6, md: 8 }}
transition="opacity 0.15s, background-color 0.15s"
w="full"
_hover={{ opacity: isDisabled ? 0.5 : 0.85 }}
whiteSpace="normal"
_disabled={{ bg: "seed", cursor: "not-allowed", opacity: 0.5 }}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Chakra UI의 Button 컴포넌트에서는 native disabled 속성 대신 isDisabled prop을 사용하는 것이 권장됩니다. isDisabled를 사용하면 Chakra UI가 내부적으로 aria-disabled 상태를 관리하고, _disabled 스타일에 정의된 속성들을 자동으로 적용해 줍니다. 또한, opacity를 삼항 연산자로 직접 제어하는 대신 _disabled 속성 내에서 관리하도록 통합하면 코드가 더 간결해집니다.

Suggested change
disabled={isDisabled}
fontSize={{ base: "sm", md: "md" }}
fontWeight="bold"
h={{ base: 12, md: 14 }}
maxW={{ base: "full", md: "384px" }}
opacity={isDisabled ? 0.5 : 1}
px={8}
transition="opacity 0.15s"
px={{ base: 6, md: 8 }}
transition="opacity 0.15s, background-color 0.15s"
w="full"
_hover={{ opacity: isDisabled ? 0.5 : 0.85 }}
whiteSpace="normal"
_disabled={{ bg: "seed", cursor: "not-allowed", opacity: 0.5 }}
isDisabled={isDisabled}
fontSize={{ base: "sm", md: "md" }}
fontWeight="bold"
h={{ base: 12, md: 14 }}
maxW={{ base: "full", md: "384px" }}
px={{ base: 6, md: 8 }}
transition="opacity 0.15s, background-color 0.15s"
w="full"
whiteSpace="normal"
_disabled={{ bg: "seed", cursor: "not-allowed", opacity: 0.5 }}

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

isDisplayed는 chacra ui v2일 때 얘기고, 우리 프로젝트는 v3을 사용하고 있어서 displayed를 사용하도록 하겠습니다.

diaplayed 스타일들은 _displayed로 모으는 것으로 수정하겠습니다.


return (
<Flex
as="button"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Flex를 버튼(as="button")으로 사용하실 때, type="button" 속성을 명시적으로 추가하는 것을 권장합니다. 이는 해당 컴포넌트가 나중에 form 태그 내부에 배치되더라도 의도치 않은 form 제출(submit) 동작을 방지하기 위한 안전한 관행입니다.

Suggested change
as="button"
as="button"
type="button"

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Flex를 Button 컴포넌트로 변경했고, type=button도 제거해줬습니다.

@TTOCHIwas TTOCHIwas changed the title Feat#73 uploadpage mobile UI [PR] 과제 업로드 페이지(UploadPage) 모바일 반응형 UI 설정 Apr 11, 2026
@TTOCHIwas TTOCHIwas merged commit 0b19681 into main Apr 13, 2026
1 check passed
@TTOCHIwas TTOCHIwas deleted the feat#73-uploadpage-mobile-ui branch April 13, 2026 10:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Feature 새로운 기능 추가 및 구현하는 경우

Projects

None yet

Development

Successfully merging this pull request may close these issues.

과제 업로드 페이지(UploadPage) 모바일 반응형 UI 설정

1 participant