diff --git a/src/views/calendar/CalendarMainStyled.js b/src/views/calendar/CalendarMainStyled.js new file mode 100644 index 0000000..fe48de2 --- /dev/null +++ b/src/views/calendar/CalendarMainStyled.js @@ -0,0 +1,129 @@ +import styled from 'vue-styled-components' + +// 전체 컨테이너 +export const PageContainer = styled.div` + min-height: 100vh; + background-color: #fff9f2; + font-family: 'NanumSquareRound', sans-serif; + display: flex; + justify-content: center; + position: relative; +` + +export const InnerContainer = styled.div` + width: 395px; + min-width: 340px; + background-color: #fae8da; + min-height: 100vh; + position: relative; + overflow-y: auto; +` + +// 메인 컨텐츠 +export const MainContent = styled.main` + display: flex; + flex-direction: column; + padding: 20px 1.5rem 6rem; + margin-top: 30px; +` + +export const SectionTitle = styled.h2` + font-size: 1.25rem; + font-weight: 500; + color: #4a4a4a; + margin-bottom: 0.5rem; +` + +export const MonthTitle = styled.h3` + font-size: 1.5rem; + font-weight: bold; + color: #4a4a4a; +` + +// 캘린더 관련 스타일 +export const CalendarContainer = styled.div` + background-color: #fae8da; + border-radius: 0.5rem; + padding: 1rem; + margin-bottom: 1rem; + display: flex; + flex-direction: column; + align-items: center; +` + +export const CalendarGrid = styled.div` + display: grid; + grid-template-columns: repeat(7, 1fr); + gap: 1rem; + text-align: center; + margin-bottom: 1rem; +` + +export const CalendarDay = styled.span` + font-size: 0.875rem; + color: #b3b3b3; +` + +export const CalendarWeek = styled.div` + display: flex; + width: 100%; + justify-content: space-between; + margin-bottom: 0.25rem; +` + +export const DayButton = styled.button` + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + width: 2rem; + height: 2rem; + font-size: 0.75rem; + border-radius: 0.5rem; + margin: 0.125rem; + background-color: ${(props) => + props.isSelected ? '#FF7F00' : 'transparent'}; + color: ${(props) => + props.isSundayOrSaturday + ? '#17A1FA' + : props.isSelected + ? 'white' + : '#B3B3B3'}; +` + +// 학사 일정 팝업 +export const SchedulePopup = styled.div` + position: fixed; + bottom: 0; + left: 0; + right: 0; + background-color: #ffffff; + border-radius: 1.5rem 1.5rem 0 0; + padding: 1.5rem; + overflow-y: auto; + max-height: 60vh; + width: 395px; + margin: 0 auto; +` + +export const LinkButton = styled.a` + display: flex; + align-items: center; + justify-content: space-between; + text-align: left; + padding: 0.5rem 1rem; + background-color: #ffd9bb; + color: #000000; + font-size: 0.875rem; + font-weight: 500; + border-radius: 0.5rem; + text-decoration: none; + max-width: 80%; + margin: 0 auto 0.625rem; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1); + transition: background-color 0.3s ease; + + &:hover { + background-color: #f1cdb1; + } +` diff --git a/src/views/calendar/CalendarMainView.vue b/src/views/calendar/CalendarMainView.vue index aee097f..b327703 100644 --- a/src/views/calendar/CalendarMainView.vue +++ b/src/views/calendar/CalendarMainView.vue @@ -1,150 +1,20 @@ - - - +
+ + {{ link.text }} + arrow right + +
+ + + + + diff --git a/src/views/login/login/LoginView.vue b/src/views/login/login/LoginView.vue index e117c61..8ffd087 100644 --- a/src/views/login/login/LoginView.vue +++ b/src/views/login/login/LoginView.vue @@ -1,11 +1,35 @@ + + - - diff --git a/src/views/login/mypage/MypageScript.js b/src/views/login/mypage/MypageScript.js index 52f520d..ba37c4b 100644 --- a/src/views/login/mypage/MypageScript.js +++ b/src/views/login/mypage/MypageScript.js @@ -43,7 +43,7 @@ export async function handleLogout() { } catch (error) { alert('로그아웃 오류.') console.error('로그아웃 오류:', error) - this.$router.push('/auth/signup') + this.$router.push('/auth/login') } } diff --git a/src/views/login/signup/SignupStyled.js b/src/views/login/signup/SignupStyled.js new file mode 100644 index 0000000..f8a1db8 --- /dev/null +++ b/src/views/login/signup/SignupStyled.js @@ -0,0 +1,158 @@ +import styled from 'vue-styled-components' + +// 외부 컨테이너 +export const PageContainer = styled.div` + min-height: 100vh; + background-color: #fff9f2; + font-family: 'NanumSquareRound', sans-serif; + display: flex; + justify-content: center; +` + +// 모바일 영역 +export const MobileContainer = styled.div` + width: 395px; + min-width: 340px; + background-color: #fae8da; + min-height: 100vh; + display: flex; + flex-direction: column; + position: relative; +` + +// 헤더 +export const Header = styled.header` + background-color: #ffffff; + padding: 0.5rem 1rem; + position: fixed; + top: 0; + left: 50%; + transform: translateX(-50%); + width: 395px; + min-width: 340px; + z-index: 10; + + .logo { + height: 3rem; + } + + .back-button { + color: #f6b87a; + background-color: transparent; + padding: 0.25rem 0.5rem; + border-radius: 9999px; + transition: background-color 0.3s ease; + + &:hover { + background-color: rgba(246, 184, 122, 0.1); + } + } +` + +// 메인 컨텐츠 +export const MainContent = styled.main` + display: flex; + flex-direction: column; + justify-content: center; + flex-grow: 1; + padding: 4rem 3rem 2rem; + font-family: 'NanumSquareRound', sans-serif; + + .title { + margin-bottom: 0.5rem; + font-size: 1.5rem; + font-weight: bold; + text-align: center; + } + + .form { + margin: 2rem 0; + display: flex; + flex-direction: column; + gap: 1rem; + } + + .form-group { + display: flex; + flex-direction: column; + gap: 0.25rem; + + label { + font-size: 0.875rem; + font-weight: 500; + color: #4a4a4a; + } + + input { + width: 100%; + padding: 0.5rem 1rem; + background-color: #ddd7d3; + border: 1px solid #e5e5e5; + border-radius: 9999px; + font-size: 0.875rem; + outline: none; + transition: border-color 0.2s ease, box-shadow 0.2s ease; + + &:focus { + border-color: transparent; + box-shadow: 0 0 0 2px #f6b87a; + } + + &.invalid { + border-color: #ff6b6b; + } + } + + .error-message { + margin-top: 0.25rem; + font-size: 0.75rem; + color: #ff6b6b; + } + } +` + +// 인증하기 버튼 +export const VerificationButton = styled.button` + padding: 0.5rem 1rem; + background-color: #f6b87a; + color: #ffffff; + font-size: 0.875rem; + border-radius: 9999px; + text-align: center; + transition: background-color 0.3s ease; + cursor: pointer; + + &:hover { + background-color: #e5a769; + } + + &:disabled { + background-color: #cccccc; + cursor: not-allowed; + } +` + +// 가입하기 버튼 +export const SubmitButton = styled.button` + width: 100%; + max-width: 10rem; + padding: 0.5rem 1rem; + height: 2.5rem; + background-color: #f6b87a; + color: #ffffff; + font-size: 0.875rem; + font-weight: 500; + border-radius: 9999px; + text-align: center; + transition: background-color 0.3s ease; + cursor: pointer; + + &:hover { + background-color: #e5a769; + } + + &:disabled { + background-color: #cccccc; + cursor: not-allowed; + } +` diff --git a/src/views/login/signup/SignupView.vue b/src/views/login/signup/SignupView.vue index 8ba86ab..4917f6f 100644 --- a/src/views/login/signup/SignupView.vue +++ b/src/views/login/signup/SignupView.vue @@ -1,78 +1,51 @@