-
Notifications
You must be signed in to change notification settings - Fork 39
[이상달] Sprint4 #114
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
addiescode-sj
merged 30 commits into
codeit-bootcamp-frontend:Basic-이상달
from
asksa1256:part1-이상달-sprint4
May 2, 2025
The head ref may contain hidden characters: "part1-\uC774\uC0C1\uB2EC-sprint4"
Merged
[이상달] Sprint4 #114
Changes from 14 commits
Commits
Show all changes
30 commits
Select commit
Hold shift + click to select a range
7913fd1
refactor: css 파일 구조화
asksa1256 af7a8a7
feat: 로그인 기능 추가
asksa1256 b7a5be7
feat: 회원가입 기능 추가
asksa1256 115f3a4
refactor: 로그인 유효성 검사
asksa1256 5bccf5b
refactor: validator, 회원가입
asksa1256 f267b17
refactor: validator, 로그인
asksa1256 1d97d98
feat: 비밀번호 숨김/표시 토글 추가
asksa1256 fa159d0
refactor: 비밀번호 표시/숨김 early return, 조건문 정리
asksa1256 345d14f
refactor: early return + if else 중첩 제거
asksa1256 9c2c931
refactor: 유효성 상태 설정 함수 합치기
asksa1256 32dd970
feat: 폼 자동완성 되어있을 경우 폼 버튼 활성화
asksa1256 180b6c0
feat: 로그인, 회원가입 자동완성 인식 제거
asksa1256 b0e40c0
style: 판다마켓 items 페이지 소제목 추가
asksa1256 4e38625
refactor: 폼 유효성 검사 실행 코드 단축
asksa1256 ca339c2
refactor(mentor): font-display: swap 적용, common.css 폰트 재정의 제거
asksa1256 b6ef680
refactor(mentor): css import 순서 변경
asksa1256 0422302
refactor(mentor): [login.js] 클로저 함수 수정 + validate 함수에서 UI 업데이트 함수 분리
asksa1256 44ba6eb
fix: 로그인 폼 제출 성공 시 페이지 이동 안되는 이슈 수정
asksa1256 2a3ebf7
refactor(mentor): [signup.js] 클로저 함수 수정
asksa1256 8d5f95a
refactor(mentor): 비밀번호 토글 모듈 'util' -> 'auth' 함수로 변경 + 리팩토링
asksa1256 7feede2
refactor: formFirstInput 함수 리팩토링 (early return 추가)
asksa1256 d5a0f4d
refactor: 로그인, 회원가입 공통 함수 모듈화
asksa1256 911c67c
refactor: focusFirstField 함수 모듈화
asksa1256 1446722
fix: 비밀번호 확인 필드 유효성 검사 누락 문제 수정
asksa1256 09c1536
fix: 비밀번호, 비밀번호 확인 필드 유효성 검사 연동
asksa1256 53ec36c
refactor: 폼 이벤트 위임 → 각 필드에 이벤트 리스너 등록
asksa1256 0bed8e6
refactor: validateForm querySelector 일부 범위 form 내부로 제한
asksa1256 9f40c1c
refactor: 로그인, 회원가입 패스워드 토글 상수 제거
asksa1256 b38fdb1
refactor: REDIRECT_MAP 추가, 비밀번호 유효성 검사 연동 early return 추가
asksa1256 9e4e0b3
refactor: 로그인, 회원가입 redirectUrl 변수 제거
asksa1256 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,298 @@ | ||
| @charset "utf-8"; | ||
| html { | ||
| font-size: 14px; | ||
| } | ||
|
|
||
| body { | ||
| font-family: "Pretendard", sans-serif; | ||
| background: var(--background-light); | ||
| overflow-x: hidden; | ||
| } | ||
|
|
||
| /* fonts */ | ||
| @font-face { | ||
| font-family: "Pretendard"; | ||
| font-weight: 400; | ||
| src: url("/fonts/Pretendard-Regular.woff2") format("woff2"); | ||
| } | ||
| @font-face { | ||
| font-family: "Pretendard"; | ||
| font-weight: 500; | ||
| src: url("/fonts/Pretendard-Medium.woff2") format("woff2"); | ||
| } | ||
| @font-face { | ||
| font-family: "Pretendard"; | ||
| font-weight: 700; | ||
| src: url("/fonts/Pretendard-Bold.woff2") format("woff2"); | ||
| } | ||
|
|
||
| /* layout */ | ||
| .content { | ||
| padding-top: 70px; | ||
| } | ||
|
|
||
| /* input */ | ||
| input { | ||
| font-family: "Pretendard", sans-serif; | ||
asksa1256 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| } | ||
|
|
||
| /* button */ | ||
| button { | ||
| font-family: "Pretendard", sans-serif; | ||
| } | ||
| button:disabled { | ||
| cursor: default; | ||
| background-color: var(--gray400); | ||
| } | ||
| button:disabled:hover { | ||
| background-color: var(--gray400); | ||
| } | ||
|
|
||
| .btn-lg { | ||
| padding: 12px; | ||
| border-radius: var(--border-radius-lg); | ||
| font-size: 20px; | ||
| font-weight: 600; | ||
| line-height: 32px; | ||
| } | ||
|
|
||
| .btn-sm { | ||
| padding: 12px 24px; | ||
| font-size: 16px; | ||
| border-radius: var(--border-radius-xs); | ||
| } | ||
|
|
||
| .btn-primary { | ||
| background: var(--primary-color); | ||
| color: #fff; | ||
| } | ||
| .btn-primary:hover { | ||
| background: var(--primary-hover-color); | ||
| } | ||
| .btn-primary:active { | ||
| background: var(--primary-click-color); | ||
| } | ||
|
|
||
| a[class*="btn"] { | ||
| display: inline-flex; | ||
| align-items: center; | ||
| justify-content: center; | ||
| } | ||
|
|
||
| /* form */ | ||
| .form-container { | ||
| display: flex; | ||
| justify-content: center; | ||
| align-items: center; | ||
| } | ||
|
|
||
| .form { | ||
| display: flex; | ||
| flex-direction: column; | ||
| align-items: center; | ||
| width: 100%; | ||
| } | ||
|
|
||
| .form-label { | ||
| display: block; | ||
| margin-bottom: var(--form-label-margin-bottom); | ||
| font-size: var(--form-label-font-size); | ||
| font-weight: 700; | ||
| color: var(--gray800); | ||
| } | ||
|
|
||
| .form-input { | ||
| width: 100%; | ||
| padding: 15px 24px; | ||
| background: var(--gray100); | ||
| border-radius: var(--border-radius-sm); | ||
| font-size: 16px; | ||
| line-height: 26px; | ||
| } | ||
| .form-input.invalid { | ||
| border: 1px solid var(--error-color); | ||
| } | ||
|
|
||
| .form-input-hint { | ||
| display: block; | ||
| margin: 8px 0 0 16px; | ||
| font-size: 14px; | ||
| font-weight: 600; | ||
| color: var(--error-color); | ||
| } | ||
|
|
||
| .visible-wrap .form-input { | ||
| padding-right: 60px; | ||
| } | ||
|
|
||
| .form-logo img { | ||
| height: auto; | ||
| } | ||
|
|
||
| .form-contents { | ||
| display: flex; | ||
| flex-direction: column; | ||
| gap: var(--form-contents-gap); | ||
| width: 100%; | ||
| } | ||
|
|
||
| .visible-wrap { | ||
| position: relative; | ||
| } | ||
|
|
||
| .form .btn-lg { | ||
| width: 100%; | ||
| } | ||
|
|
||
| .btn-password-visible { | ||
| position: absolute; | ||
| top: 50%; | ||
| transform: translateY(-50%); | ||
| right: 24px; | ||
| width: 24px; | ||
| height: 24px; | ||
| z-index: 1; | ||
| background: url("/images/ic_visibility_off.svg") no-repeat center; | ||
| } | ||
| .btn-password-visible.on { | ||
| background: url("/images/ic_visibility_on.svg") no-repeat center; | ||
| } | ||
|
|
||
| /* header */ | ||
| .header { | ||
| position: fixed; | ||
| left: 0; | ||
| top: 0; | ||
| width: 100%; | ||
| height: 70px; | ||
| padding: 0 var(--header-padding-lr); | ||
| z-index: 9; | ||
| background: #fff; | ||
| display: flex; | ||
| } | ||
|
|
||
| .header-container { | ||
| display: flex; | ||
| align-items: center; | ||
| justify-content: space-between; | ||
| width: 100%; | ||
| padding: 0.714rem 0; | ||
| } | ||
|
|
||
| .logo { | ||
| display: flex; | ||
| align-items: center; | ||
| } | ||
|
|
||
| .logo-img { | ||
| display: none; | ||
| width: 40px; | ||
| margin-right: 8px; | ||
| } | ||
|
|
||
| .login-button { | ||
| width: 128px; | ||
| height: 48px; | ||
| } | ||
|
|
||
| /* footer */ | ||
| .footer { | ||
| background: var(--gray900); | ||
| color: var(--gray200); | ||
| } | ||
|
|
||
| .footer-container { | ||
| display: flex; | ||
| justify-content: space-between; | ||
| padding: var(--footer-padding); | ||
| flex-wrap: wrap; | ||
| gap: 24px; | ||
| font-size: 16px; | ||
| } | ||
|
|
||
| .copyright { | ||
| order: 3; | ||
| width: 100%; | ||
| padding-top: 36px; | ||
| color: var(--gray400); | ||
| } | ||
|
|
||
| .footer-menu { | ||
| display: flex; | ||
| gap: 30px; | ||
| } | ||
|
|
||
| .sns { | ||
| display: flex; | ||
| gap: 12px; | ||
| } | ||
|
|
||
| /*================ 반응형 ================*/ | ||
| /* Tablet */ | ||
| @media (min-width: 640px) { | ||
| :root { | ||
| --footer-padding: 2rem 6.5rem 6.75rem; | ||
| --form-padding-top: 60px; | ||
| --form-label-margin-bottom: 1rem; | ||
| --form-contents-gap: 1.5rem; | ||
| } | ||
|
|
||
| .logo-img { | ||
| display: block; | ||
| } | ||
|
|
||
| .footer-container { | ||
| flex-wrap: initial; | ||
| } | ||
|
|
||
| .copyright { | ||
| order: initial; | ||
| width: auto; | ||
| padding-top: 0; | ||
| } | ||
| } | ||
|
|
||
| @media (min-width: 768px) { | ||
| :root { | ||
| --form-padding-top: 48px; | ||
| --header-padding-lr: 24px; | ||
| } | ||
|
|
||
| html { | ||
| font-size: 16px; | ||
| } | ||
| } | ||
|
|
||
| /* PC */ | ||
| @media (min-width: 1200px) { | ||
| :root { | ||
| --header-padding-lr: 12.5rem; | ||
| } | ||
|
|
||
| .form-container { | ||
| min-height: 100vh; | ||
| } | ||
|
|
||
| .header-container, | ||
| .footer-container { | ||
| width: var(--container-width); | ||
| margin: 0 auto; | ||
| } | ||
| } | ||
|
|
||
| /* wide PC */ | ||
| @media (min-width: 1921px) { | ||
| html { | ||
| font-size: 18px; | ||
| } | ||
| } | ||
|
|
||
| /* 반응형 요소에 clamp() 적용 */ | ||
| @supports (font-size: clamp(1rem, 2vw, 3rem)) { | ||
| :root { | ||
| --heading-font-size: clamp(24px, 3vw, 40px); | ||
| --description-font-size: clamp(16px, 2vw, 24px); | ||
| --label-font-size: clamp(16px, 1.5vw, 18px); | ||
| --form-label-font-size: clamp(14px, 1.25vw, 18px); | ||
| } | ||
| } | ||
File renamed without changes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.