diff --git a/src/app/components/FooterVisibility.tsx b/src/app/components/FooterVisibility.tsx index 47553ed..53f7b1d 100644 --- a/src/app/components/FooterVisibility.tsx +++ b/src/app/components/FooterVisibility.tsx @@ -3,7 +3,7 @@ import { usePathname } from "next/navigation"; import Footer from "./Footer"; -const HIDE_FOOTER_PREFIXES = ["/pages"]; +const HIDE_FOOTER_PREFIXES = ["/pages", "/login"]; export default function FooterVisibility() { const pathname = usePathname(); diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 1429064..d625cf3 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -160,8 +160,6 @@ export default function LoginPage() { return ( <> -
- { @@ -175,157 +173,160 @@ export default function LoginPage() { loginErrorModalEnabled={isLoginErrorOpen} setLoginErrorModalEnabled={setIsLoginErrorOpen} /> +
+ {/* 메인 컨텐츠 영역 - flex-1로 남은 공간 차지 */} +
+
+ {/* 로고 영역 */} +
+
+ +
+
+ XR LMS +
+
-
- {/* 로고 영역 */} -
-
- -
-
- XR LMS + {/* 폼 */} +
+
+ {/* 아이디 */} +
+ + { + setUserId(e.target.value); + if (idError) setIdError(""); + }} + onFocus={() => setIsUserIdFocused(true)} + onBlur={() => setIsUserIdFocused(false)} + placeholder="아이디(이메일)" + className={`h-[56px] px-[12px] py-[7px] w-full rounded-[8px] border focus:outline-none focus:ring-0 focus:ring-offset-0 focus:shadow-none focus:appearance-none text-[18px] text-neutral-700 font-normal leading-[150%] placeholder:text-input-placeholder-text pr-[40px] ${idError ? 'border-error' : 'border-neutral-40 focus:border-neutral-700'}`} + /> + {userId.trim().length > 0 && isUserIdFocused && ( + + )} +
+ {idError &&

{idError}

} + {/* 비밀번호 */} +
+ + { + setPassword(e.target.value); + if (passwordError) setPasswordError(""); + }} + onFocus={() => setIsPasswordFocused(true)} + onBlur={() => setIsPasswordFocused(false)} + placeholder="비밀번호 입력" + className={`h-[56px] px-[12px] py-[7px] rounded-[8px] w-full border focus:outline-none focus:ring-0 focus:ring-offset-0 focus:shadow-none focus:appearance-none text-[18px] text-neutral-700 font-normal leading-[150%] placeholder:text-input-placeholder-text pr-[40px] ${passwordError ? 'border-error' : 'border-neutral-40 focus:border-neutral-700'}`} + /> + {password.trim().length > 0 && isPasswordFocused && ( + + )} +
+ {passwordError &&

{passwordError}

} +
+ + {/* 체크박스들 */} +
+ + +
+ + {/* 로그인 버튼 */} + + + {/* 하단 링크들 */} +
+ + 회원가입 + +
+ + 아이디 찾기 + + + + 비밀번호 재설정 + +
+
+
- - {/* 폼 */} -
-
- {/* 아이디 */} -
- - { - setUserId(e.target.value); - if (idError) setIdError(""); - }} - onFocus={() => setIsUserIdFocused(true)} - onBlur={() => setIsUserIdFocused(false)} - placeholder="아이디(이메일)" - className={`h-[56px] px-[12px] py-[7px] w-full rounded-[8px] border focus:outline-none focus:ring-0 focus:ring-offset-0 focus:shadow-none focus:appearance-none text-[18px] text-neutral-700 font-normal leading-[150%] placeholder:text-input-placeholder-text pr-[40px] ${idError ? 'border-error' : 'border-neutral-40 focus:border-neutral-700'}`} - /> - {userId.trim().length > 0 && isUserIdFocused && ( - - )} -
- {idError &&

{idError}

} - {/* 비밀번호 */} -
- - { - setPassword(e.target.value); - if (passwordError) setPasswordError(""); - }} - onFocus={() => setIsPasswordFocused(true)} - onBlur={() => setIsPasswordFocused(false)} - placeholder="비밀번호 입력" - className={`h-[56px] px-[12px] py-[7px] rounded-[8px] w-full border focus:outline-none focus:ring-0 focus:ring-offset-0 focus:shadow-none focus:appearance-none text-[18px] text-neutral-700 font-normal leading-[150%] placeholder:text-input-placeholder-text pr-[40px] ${passwordError ? 'border-error' : 'border-neutral-40 focus:border-neutral-700'}`} - /> - {password.trim().length > 0 && isPasswordFocused && ( - - )} -
- {passwordError &&

{passwordError}

} -
- - {/* 체크박스들 */} -
- - -
- - {/* 로그인 버튼 */} - - - {/* 하단 링크들 */} -
- - 회원가입 - -
- - 아이디 찾기 - - - - 비밀번호 재설정 - -
-
-
+ {/* Copyright 영역 - 하단 고정 */} +

+ Copyright ⓒ 2025 XL LMS. All rights reserved +

-
-
-

- Copyright ⓒ 2025 XL LMS. All rights reserved -

); }