diff --git a/frontend/app/(auth)/login/page.tsx b/frontend/app/(auth)/login/page.tsx index 2910951e..62e48e08 100644 --- a/frontend/app/(auth)/login/page.tsx +++ b/frontend/app/(auth)/login/page.tsx @@ -5,23 +5,13 @@ import { LoginHeader } from "@/components/auth/LoginHeader"; import { LoginForm } from "@/components/auth/LoginForm"; import { LoginFooter } from "@/components/auth/LoginFooter"; -/** - * 로그인 페이지 컴포넌트 - * 비즈니스 로직은 useLogin 훅에서 처리하고, UI 컴포넌트들을 조합하여 구성 - */ export default function LoginPage() { const { formData, isLoading, error, showPassword, handleInputChange, handleLogin, togglePasswordVisibility } = useLogin(); return ( -
- {/* 배경 장식 원 */} -
-
-
-
- -
+
+
- {/* 환영 영역 */} -
-

- 안녕하세요, {userName}님 +
+ {/* 헤더 영역 */} +
+

+ {userName}님, 좋은 하루 되세요

-

- 오늘도 효율적인 업무를 시작하세요. -

+

{dateStr}

- {/* 퀵 액세스 카드 */} + {/* 바로가기 */}
-

바로가기

-
+

바로가기

+
{quickAccessItems.map((item) => { const Icon = item.icon; return ( ); })} @@ -54,11 +54,11 @@ export default function MainHomePage() {
{/* 시스템 정보 */} -
-

시스템 정보

+
+

시스템 정보

-
+
@@ -67,7 +67,7 @@ export default function MainHomePage() {
-
+
@@ -76,13 +76,13 @@ export default function MainHomePage() {
-
+

오늘 날짜

- {new Date().toLocaleDateString("ko-KR", { year: "numeric", month: "long", day: "numeric" })} + {today.toLocaleDateString("ko-KR", { year: "numeric", month: "long", day: "numeric" })}

diff --git a/frontend/app/globals.css b/frontend/app/globals.css index 7276f5b0..8c056ad1 100644 --- a/frontend/app/globals.css +++ b/frontend/app/globals.css @@ -65,28 +65,28 @@ --radius-xl: calc(var(--radius) + 4px); } -/* ===== CSS Variables (shadcn/ui Official) ===== */ +/* ===== CSS Variables (Vivid Blue Theme) ===== */ :root { /* Light Theme Colors - HSL Format */ --background: 0 0% 100%; - --foreground: 222.2 84% 4.9%; + --foreground: 224 71% 4%; --card: 0 0% 100%; - --card-foreground: 222.2 84% 4.9%; + --card-foreground: 224 71% 4%; --popover: 0 0% 100%; - --popover-foreground: 222.2 84% 4.9%; - --primary: 222.2 47.4% 11.2%; - --primary-foreground: 210 40% 98%; - --secondary: 210 40% 96.1%; - --secondary-foreground: 222.2 47.4% 11.2%; - --muted: 210 40% 96.1%; - --muted-foreground: 215.4 16.3% 46.9%; - --accent: 210 40% 96.1%; - --accent-foreground: 222.2 47.4% 11.2%; + --popover-foreground: 224 71% 4%; + --primary: 217.2 91.2% 59.8%; + --primary-foreground: 0 0% 100%; + --secondary: 220 14.3% 95.9%; + --secondary-foreground: 220.9 39.3% 11%; + --muted: 220 14.3% 95.9%; + --muted-foreground: 220 8.9% 46.1%; + --accent: 220 14.3% 95.9%; + --accent-foreground: 220.9 39.3% 11%; --destructive: 0 84.2% 60.2%; - --destructive-foreground: 210 40% 98%; - --border: 214.3 31.8% 91.4%; - --input: 214.3 31.8% 91.4%; - --ring: 222.2 84% 4.9%; + --destructive-foreground: 0 0% 100%; + --border: 220 13% 91%; + --input: 220 13% 91%; + --ring: 217.2 91.2% 59.8%; /* Success Colors (Emerald) */ --success: 142 76% 36%; @@ -111,37 +111,37 @@ --radius: 0.5rem; /* Sidebar Colors */ - --sidebar-background: 0 0% 98%; - --sidebar-foreground: 240 5.3% 26.1%; - --sidebar-primary: 240 5.9% 10%; - --sidebar-primary-foreground: 0 0% 98%; - --sidebar-accent: 240 4.8% 95.9%; - --sidebar-accent-foreground: 240 5.9% 10%; + --sidebar-background: 220 20% 97%; + --sidebar-foreground: 224 71% 4%; + --sidebar-primary: 217.2 91.2% 59.8%; + --sidebar-primary-foreground: 0 0% 100%; + --sidebar-accent: 220 14.3% 95.9%; + --sidebar-accent-foreground: 220.9 39.3% 11%; --sidebar-border: 220 13% 91%; --sidebar-ring: 217.2 91.2% 59.8%; } /* ===== Dark Theme ===== */ .dark { - --background: 222.2 84% 4.9%; - --foreground: 210 40% 98%; - --card: 222.2 84% 4.9%; - --card-foreground: 210 40% 98%; - --popover: 222.2 84% 4.9%; - --popover-foreground: 210 40% 98%; - --primary: 210 40% 98%; - --primary-foreground: 222.2 47.4% 11.2%; - --secondary: 217.2 32.6% 17.5%; - --secondary-foreground: 210 40% 98%; - --muted: 217.2 32.6% 17.5%; - --muted-foreground: 215 20.2% 65.1%; - --accent: 217.2 32.6% 17.5%; - --accent-foreground: 210 40% 98%; + --background: 224 71% 4%; + --foreground: 210 20% 98%; + --card: 224 71% 4%; + --card-foreground: 210 20% 98%; + --popover: 224 71% 4%; + --popover-foreground: 210 20% 98%; + --primary: 217.2 91.2% 59.8%; + --primary-foreground: 0 0% 100%; + --secondary: 215 27.9% 16.9%; + --secondary-foreground: 210 20% 98%; + --muted: 215 27.9% 16.9%; + --muted-foreground: 217.9 10.6% 64.9%; + --accent: 215 27.9% 16.9%; + --accent-foreground: 210 20% 98%; --destructive: 0 62.8% 30.6%; - --destructive-foreground: 210 40% 98%; - --border: 217.2 32.6% 17.5%; - --input: 217.2 32.6% 17.5%; - --ring: 212.7 26.8% 83.9%; + --destructive-foreground: 210 20% 98%; + --border: 215 27.9% 16.9%; + --input: 215 27.9% 16.9%; + --ring: 217.2 91.2% 59.8%; /* Success Colors (Emerald) - Dark */ --success: 142 76% 36%; @@ -163,13 +163,13 @@ --chart-5: 340 75% 55%; /* Sidebar Colors - Dark */ - --sidebar-background: 222.2 84% 4.9%; - --sidebar-foreground: 210 40% 98%; + --sidebar-background: 224 71% 4%; + --sidebar-foreground: 210 20% 98%; --sidebar-primary: 217.2 91.2% 59.8%; - --sidebar-primary-foreground: 222.2 47.4% 11.2%; - --sidebar-accent: 217.2 32.6% 17.5%; - --sidebar-accent-foreground: 210 40% 98%; - --sidebar-border: 217.2 32.6% 17.5%; + --sidebar-primary-foreground: 0 0% 100%; + --sidebar-accent: 215 27.9% 16.9%; + --sidebar-accent-foreground: 210 20% 98%; + --sidebar-border: 215 27.9% 16.9%; --sidebar-ring: 217.2 91.2% 59.8%; } diff --git a/frontend/components/auth/LoginForm.tsx b/frontend/components/auth/LoginForm.tsx index 80d2a8fa..d0ddd1a5 100644 --- a/frontend/components/auth/LoginForm.tsx +++ b/frontend/components/auth/LoginForm.tsx @@ -29,7 +29,7 @@ export function LoginForm({ onTogglePassword, }: LoginFormProps) { return ( - + 로그인 계정 정보를 입력해주세요 diff --git a/frontend/components/layout/AppLayout.tsx b/frontend/components/layout/AppLayout.tsx index 24b02a4f..d62c5a95 100644 --- a/frontend/components/layout/AppLayout.tsx +++ b/frontend/components/layout/AppLayout.tsx @@ -407,11 +407,11 @@ function AppLayoutInner({ children }: AppLayoutProps) { return (
0 ? "ml-6" : ""}`} onClick={() => handleMenuClick(menu)} @@ -435,9 +435,9 @@ function AppLayoutInner({ children }: AppLayoutProps) { {menu.children?.map((child: any) => (
handleMenuClick(child)} @@ -552,7 +552,7 @@ function AppLayoutInner({ children }: AppLayoutProps) { isMobile ? (sidebarOpen ? "translate-x-0" : "-translate-x-full") + " fixed top-14 left-0 z-40 h-[calc(100vh-56px)]" : "relative z-auto h-screen translate-x-0" - } flex w-[260px] sm:w-[220px] lg:w-[240px] flex-col border-r border-border bg-background transition-transform duration-300`} + } flex w-[260px] sm:w-[220px] lg:w-[240px] flex-col border-r border-sidebar-border bg-sidebar transition-transform duration-300`} > {/* 사이드바 최상단 - 로고 (데스크톱에서만 표시) */} {!isMobile && ( @@ -563,7 +563,7 @@ function AppLayoutInner({ children }: AppLayoutProps) { {/* WACE 관리자: 현재 관리 회사 표시 */} {(user as ExtendedUserInfo)?.userType === "SUPER_ADMIN" && ( -
+
@@ -584,10 +584,10 @@ function AppLayoutInner({ children }: AppLayoutProps) { {/* 관리자/사용자 메뉴 전환 */}