From 47ed0b5a7ca9ac849b9e38f865cd6c691e5eccea Mon Sep 17 00:00:00 2001 From: cherry2250 Date: Mon, 27 Oct 2025 16:15:43 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B7=B8=EB=9E=98=EB=94=94=EC=96=B8=ED=8A=B8?= =?UTF-8?q?=20=EB=B0=B0=EA=B2=BD=20=EC=B9=B4=EB=93=9C=20=ED=85=8D=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EA=B0=80=EB=8F=85=EC=84=B1=20=EA=B0=9C=EC=84=A0=20?= =?UTF-8?q?=EB=B0=8F=20=EC=9E=85=EC=B2=B4=EA=B0=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 배경색이 있는 모든 카드의 흰색 글자를 검은색으로 변경하여 가독성 향상 - 아이콘과 텍스트에 그림자 효과를 추가하여 입체감 부여 - Profile 페이지 디자인 통일성 완료 변경 파일: - src/app/(main)/page.tsx: 대시보드 KPI 카드 (3개) - src/app/(main)/events/page.tsx: 이벤트 통계 카드 (4개) - src/app/(main)/events/create/steps/ApprovalStep.tsx: 승인 단계 요약 카드 (4개) - src/app/(main)/profile/page.tsx: 프로필 페이지 전체 리디자인 적용된 효과: - 아이콘: drop-shadow(0px 2px 4px rgba(0,0,0,0.2)) - 큰 텍스트: text-shadow 0px 2px 4px rgba(0,0,0,0.15) - 작은 텍스트: text-shadow 0px 1px 2px rgba(0,0,0,0.1) - 아이콘 배경: rgba(0,0,0,0.05) (대시보드) - 글자 색상: colors.gray[900] (제목), colors.gray[700] (라벨) --- .../events/create/steps/ApprovalStep.tsx | 98 ++- src/app/(main)/events/page.tsx | 84 ++- src/app/(main)/page.tsx | 54 +- src/app/(main)/profile/page.tsx | 639 ++++++++++-------- 4 files changed, 552 insertions(+), 323 deletions(-) diff --git a/src/app/(main)/events/create/steps/ApprovalStep.tsx b/src/app/(main)/events/create/steps/ApprovalStep.tsx index 043a63f..465029e 100644 --- a/src/app/(main)/events/create/steps/ApprovalStep.tsx +++ b/src/app/(main)/events/create/steps/ApprovalStep.tsx @@ -97,13 +97,28 @@ export default function ApprovalStep({ eventData, onApprove, onBack }: ApprovalS }} > - - + + 이벤트 제목 {eventData.recommendation?.title || '이벤트 제목'} @@ -120,16 +135,36 @@ export default function ApprovalStep({ eventData, onApprove, onBack }: ApprovalS }} > - - + + 목표 참여자 {eventData.recommendation?.expectedParticipants || 0} - + @@ -146,16 +181,36 @@ export default function ApprovalStep({ eventData, onApprove, onBack }: ApprovalS }} > - - + + 예상 비용 {((eventData.recommendation?.estimatedCost || 0) / 10000).toFixed(0)} - + 만원 @@ -172,13 +227,28 @@ export default function ApprovalStep({ eventData, onApprove, onBack }: ApprovalS }} > - - + + 예상 ROI {eventData.recommendation?.roi || 0}% diff --git a/src/app/(main)/events/page.tsx b/src/app/(main)/events/page.tsx index c6b0ea4..1a2dea4 100644 --- a/src/app/(main)/events/page.tsx +++ b/src/app/(main)/events/page.tsx @@ -250,14 +250,29 @@ export default function EventsPage() { }} > - + {stats.total} - + 전체 이벤트 @@ -273,14 +288,29 @@ export default function EventsPage() { }} > - + {stats.active} - + 진행중 @@ -296,14 +326,29 @@ export default function EventsPage() { }} > - + {stats.totalParticipants} - + 총 참여자 @@ -319,14 +364,29 @@ export default function EventsPage() { }} > - + {stats.avgROI}% - + 평균 ROI diff --git a/src/app/(main)/page.tsx b/src/app/(main)/page.tsx index 6dbac59..a6888e0 100644 --- a/src/app/(main)/page.tsx +++ b/src/app/(main)/page.tsx @@ -122,7 +122,7 @@ export default function HomePage() { width: 64, height: 64, borderRadius: '50%', - bgcolor: 'rgba(255, 255, 255, 0.2)', + bgcolor: 'rgba(0, 0, 0, 0.05)', display: 'flex', alignItems: 'center', justifyContent: 'center', @@ -130,22 +130,32 @@ export default function HomePage() { mb: 3, }} > - + 진행 중인 이벤트 {activeEvents.length} @@ -167,7 +177,7 @@ export default function HomePage() { width: 64, height: 64, borderRadius: '50%', - bgcolor: 'rgba(255, 255, 255, 0.2)', + bgcolor: 'rgba(0, 0, 0, 0.05)', display: 'flex', alignItems: 'center', justifyContent: 'center', @@ -175,22 +185,32 @@ export default function HomePage() { mb: 3, }} > - + 총 참여자 {totalParticipants.toLocaleString()} @@ -212,7 +232,7 @@ export default function HomePage() { width: 64, height: 64, borderRadius: '50%', - bgcolor: 'rgba(255, 255, 255, 0.2)', + bgcolor: 'rgba(0, 0, 0, 0.05)', display: 'flex', alignItems: 'center', justifyContent: 'center', @@ -220,22 +240,32 @@ export default function HomePage() { mb: 3, }} > - + 평균 ROI {avgROI}% diff --git a/src/app/(main)/profile/page.tsx b/src/app/(main)/profile/page.tsx index 5184a57..b970fd5 100644 --- a/src/app/(main)/profile/page.tsx +++ b/src/app/(main)/profile/page.tsx @@ -7,10 +7,12 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { Box, + Container, TextField, Button, Typography, - Paper, + Card, + CardContent, Avatar, Select, MenuItem, @@ -26,7 +28,8 @@ import { import { Person, Visibility, VisibilityOff, CheckCircle } from '@mui/icons-material'; import { useAuthStore } from '@/stores/authStore'; import { useUIStore } from '@/stores/uiStore'; -import { getGradientButtonStyle, responsiveText, containerStyles } from '@/shared/lib/button-styles'; +import Header from '@/shared/ui/Header'; +import { cardStyles, colors, responsiveText } from '@/shared/lib/button-styles'; // 기본 정보 스키마 const basicInfoSchema = z.object({ @@ -186,304 +189,341 @@ export default function ProfilePage() { }; return ( - - - {/* 사용자 정보 섹션 */} - - - - - - {user?.name} - - - {user?.email} - - + <> +
+ + + {/* 사용자 정보 섹션 */} + + + + + + + {user?.name} + + + {user?.email} + + + - {/* 기본 정보 */} - - - 기본 정보 - + {/* 기본 정보 */} + + + + 기본 정보 + - - ( - - )} - /> - - ( - { - const formatted = formatPhoneNumber(e.target.value); - field.onChange(formatted); - }} - error={!!basicErrors.phone} - helperText={basicErrors.phone?.message} - /> - )} - /> - - ( - - )} - /> - - - - {/* 매장 정보 */} - - - 매장 정보 - - - - ( - - )} - /> - - ( - - 업종 - - {businessErrors.businessType && ( - - {businessErrors.businessType.message} - + + ( + )} - - )} - /> - - ( - - )} - /> - - ( - - )} - /> - - - {/* 비밀번호 변경 */} - - - 비밀번호 변경 - + ( + { + const formatted = formatPhoneNumber(e.target.value); + field.onChange(formatted); + }} + error={!!basicErrors.phone} + helperText={basicErrors.phone?.message} + /> + )} + /> - - ( - ( + + )} + /> + + + + + {/* 매장 정보 */} + + + + 매장 정보 + + + + ( + + )} + /> + + ( + + 업종 + + {businessErrors.businessType && ( + + {businessErrors.businessType.message} + + )} + + )} + /> + + ( + + )} + /> + + ( + + )} + /> + + + + + {/* 비밀번호 변경 */} + + + + 비밀번호 변경 + + + + ( + + setShowCurrentPassword(!showCurrentPassword)} + edge="end" + > + {showCurrentPassword ? : } + + + ), + }} + /> + )} + /> + + ( + + setShowNewPassword(!showNewPassword)} + edge="end" + > + {showNewPassword ? : } + + + ), + }} + /> + )} + /> + + ( + + setShowConfirmPassword(!showConfirmPassword)} + edge="end" + > + {showConfirmPassword ? : } + + + ), + }} + /> + )} + /> + + + + + + {/* 액션 버튼 */} + + - - - {/* 액션 버튼 */} - - - - + {/* 저장 완료 다이얼로그 */} - setSuccessDialogOpen(false)}> + setSuccessDialogOpen(false)} + PaperProps={{ + sx: { + borderRadius: 4, + minWidth: 300, + }, + }} + > - + 저장 완료 - + 프로필 정보가 업데이트되었습니다. @@ -496,8 +536,15 @@ export default function ProfilePage() { }} sx={{ minWidth: 120, - py: { xs: 1.25, sm: 1.5 }, - ...getGradientButtonStyle('success'), + py: 2, + borderRadius: 2, + fontSize: '1rem', + fontWeight: 700, + background: `linear-gradient(135deg, ${colors.purple} 0%, ${colors.pink} 100%)`, + '&:hover': { + background: `linear-gradient(135deg, ${colors.purple} 0%, ${colors.pink} 100%)`, + opacity: 0.9, + }, }} > 확인 @@ -506,29 +553,51 @@ export default function ProfilePage() { {/* 로그아웃 확인 다이얼로그 */} - setLogoutDialogOpen(false)}> - 로그아웃 + setLogoutDialogOpen(false)} + PaperProps={{ + sx: { + borderRadius: 4, + minWidth: 300, + }, + }} + > + 로그아웃 - + 로그아웃 하시겠습니까? - + - + ); }