diff --git a/grass-diary/src/assets/svg/edit_note.svg b/grass-diary/src/assets/svg/edit_note.svg new file mode 100755 index 00000000..4f50de70 --- /dev/null +++ b/grass-diary/src/assets/svg/edit_note.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/grass-diary/src/assets/svg/event_note.svg b/grass-diary/src/assets/svg/event_note.svg new file mode 100755 index 00000000..8961de6b --- /dev/null +++ b/grass-diary/src/assets/svg/event_note.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/grass-diary/src/components/Notification/Callout.tsx b/grass-diary/src/components/Notification/Callout.tsx index ccc0694f..1363e0af 100644 --- a/grass-diary/src/components/Notification/Callout.tsx +++ b/grass-diary/src/components/Notification/Callout.tsx @@ -8,7 +8,9 @@ type CalloutProps = { const Callout = ({ message }: CalloutProps) => { return ( - + + + {message} ); diff --git a/grass-diary/src/constants/message.ts b/grass-diary/src/constants/message.ts index ae54eb74..c4972652 100644 --- a/grass-diary/src/constants/message.ts +++ b/grass-diary/src/constants/message.ts @@ -215,6 +215,14 @@ export const MODAL = { content: '일기를 삭제하시겠어요?\n삭제된 일기는 다시 되돌릴 수 없어요.', button: '삭제하기', }, + main: { + modal: { + preparation_notice: '준비 중인 서비스', + modal_notice: (type: string) => + `${type} 아직 준비 중이에요.\n빠르게 선보일 수 있도록 할게요!`, + confirm_button: '확인', + }, + }, } as const; export const TOAST = { diff --git a/grass-diary/src/pages/Main/Banner.tsx b/grass-diary/src/pages/Main/Banner.tsx deleted file mode 100644 index c0a5396f..00000000 --- a/grass-diary/src/pages/Main/Banner.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import styled from 'styled-components'; -import { MAIN_MESSAGES } from '@constants/message'; -import { semantic } from '@styles/semantic'; -import { ReactComponent as Info } from '@svg/info.svg'; -import { TYPO } from '@styles/typo'; - -const Banner = () => { - return ( - <> -
- - - {MAIN_MESSAGES.banner.future_content_message} - -
- - ); -}; - -export default Banner; - -const Section = styled.div` - display: flex; - max-width: var(--vw-desktop-min, 60rem); - padding: var(--gap-4xl, 3rem) var(--gap-xl, 1.5rem); - justify-content: center; - align-items: center; -`; - -const Container = styled.div` - display: flex; - width: 26.25rem; - padding: var(--gap-3xs, 0.375rem) var(--gap-sm, 0.75rem); - align-items: flex-start; - gap: var(--gap-2xs, 0.5rem); - - border-radius: var(--radius-xs, 0.5rem); - border: var(--stroke-thin, 0.0625rem) solid - ${semantic.light.border.transparent.alternative}; - - background: ${semantic.light.fill.transparent.assistive}; -`; - -const Text = styled.p` - flex: 1 0 0; - - color: ${semantic.light.object.transparent.alternative}; - - ${TYPO.caption2} -`; diff --git a/grass-diary/src/pages/Main/BottomSection.tsx b/grass-diary/src/pages/Main/BottomSection.tsx index 980ad01d..fa1f8198 100644 --- a/grass-diary/src/pages/Main/BottomSection.tsx +++ b/grass-diary/src/pages/Main/BottomSection.tsx @@ -1,210 +1,96 @@ +import * as S from '@styles/Main/BottomSection.style'; import AnimateReward from './AnimateReward'; -import styled from 'styled-components'; -import subCharacter from '@icon/subCharacter.png'; -import Swal from 'sweetalert2'; + import { semantic } from '@styles/semantic'; import { useReward } from '@hooks/api/useReward'; -import { Link } from 'react-router-dom'; -import { MAIN_MESSAGES } from '@constants/message'; +import { useModal } from '@state/modal/useModal'; +import { MAIN_MESSAGES, MODAL } from '@constants/message'; import { ReactComponent as Avatar } from '@svg/avatarBg.svg'; import { ReactComponent as Arrow } from '@svg/chevron_right.svg'; import { ReactComponent as ArrowBlack } from '@svg/chevron_right_black.svg'; -import { TYPO } from '@styles/typo'; const BottomSection = () => { const { reward } = useReward(); + const { modal } = useModal(); + + const themeModal = () => { + const setting = { + title: MODAL.main.modal.preparation_notice, + content: MODAL.main.modal.modal_notice('테마 상점은'), + }; + + const button1 = { + active: true, + text: MODAL.main.modal.confirm_button, + color: semantic.light.accent.solid.alternative, + }; + modal(setting, button1); + }; - const modal = () => { - Swal.fire({ - title: '테마 상점', - text: '테마 상점 준비중이에요', - imageUrl: subCharacter, - imageWidth: 300, - imageHeight: 300, - imageAlt: 'Custom image', - confirmButtonColor: '#28CA3B', - confirmButtonText: '확인', - }); + const reviewModal = () => { + const setting = { + title: MODAL.main.modal.preparation_notice, + content: MODAL.main.modal.modal_notice('한 달 일기 회고는'), + }; + + const button1 = { + active: true, + text: MODAL.main.modal.confirm_button, + color: semantic.light.accent.solid.alternative, + }; + modal(setting, button1); }; - const handleClick = () => window.scrollTo(0, 0); return ( <> -
- - - {MAIN_MESSAGES.bottom_section.my_reward} - + + + + {MAIN_MESSAGES.bottom_section.my_reward} + {MAIN_MESSAGES.bottom_section.reward_message} - - - - - - + + + + + + - - - - + + + + {MAIN_MESSAGES.bottom_section.theme_store} - + - - - - - + + + + + {MAIN_MESSAGES.bottom_section.monthly_diary_review} - - + + {MAIN_MESSAGES.bottom_section.review_description} - - - - - - - {MAIN_MESSAGES.bottom_section.go_to_review} - - + + + + + + {MAIN_MESSAGES.bottom_section.go_to_review} + - - - - -
+ + + + + ); }; export default BottomSection; - -const Section = styled.div` - display: flex; - padding: var(--gap-lg, 1.25rem) var(--gap-xl, 1.5rem); - justify-content: center; - align-items: center; - gap: var(--gap-xl, 1.5rem); - align-self: stretch; -`; - -const Container = styled.div` - display: flex; - max-width: var(--vw-desktop-min, 60rem); - justify-content: center; - align-items: center; - gap: var(--gap-xl, 1.5rem); - flex: 1 0 0; -`; - -const Card = styled.div` - display: flex; - padding: var(--gap-lg, 1.25rem); - flex-direction: column; - align-items: flex-start; - gap: var(--gap-md, 1rem); - flex: 1 0 0; - - border-radius: var(--radius-md, 1rem); - border: var(--stroke-thin, 0.0625rem) solid - ${semantic.light.border.transparent.assistive}; - - background: ${semantic.light.bg.solid.normal}; - - box-shadow: 0rem 0rem 0.0625rem 0rem rgba(0, 0, 0, 0.04), - 0rem 0.125rem 0.25rem 0rem rgba(0, 0, 0, 0.08); -`; - -const Divider = styled.div` - width: 26.75rem; - height: 0.0625rem; - - background: ${semantic.light.border.transparent.alternative}; -`; - -const CardText = styled.p` - align-self: stretch; - - color: ${semantic.light.object.transparent.neutral}; - - ${TYPO.label3} -`; - -const CardSubText = styled.p` - align-self: stretch; - - color: ${semantic.light.object.transparent.neutral}; - - ${TYPO.caption2} -`; - -const Wrap = styled.div` - display: flex; - align-items: center; - gap: var(--gap-md, 1rem); - align-self: stretch; -`; - -const RewardContainer = styled.div` - display: flex; - align-items: center; - gap: var(--gap-2xs, 0.5rem); - flex: 1 0 0; -`; - -const RewardPointBox = styled.div` - flex: 1 0 0; - - color: ${semantic.light.accent.solid.normal}; -`; - -const ThemeMarketBtn = styled.button` - display: flex; - padding: var(--gap-xs, 0.625rem) var(--gap-md, 1rem); - justify-content: center; - align-items: center; - gap: var(--gap-2xs, 0.5rem); - - border-radius: var(--radius-xs, 0.5rem); - border: var(--stroke-thin, 0.0625rem) solid - ${semantic.light.accent.solid.normal}; - - background: ${semantic.light.accent.transparent.normal}; - - cursor: pointer; -`; - -const ThemeMarketText = styled.p` - color: ${semantic.light.accent.solid.hero}; - text-align: center; - - ${TYPO.label2} -`; - -const RetrospectContainer = styled.div` - display: flex; - justify-content: flex-end; - align-items: center; - align-self: stretch; -`; - -const RetrospectBtn = styled.button` - display: flex; - padding: var(--gap-xs, 0.625rem) var(--gap-md, 1rem); - justify-content: center; - align-items: center; - gap: var(--gap-2xs, 0.5rem); - - border-radius: var(--radius-xs, 0.5rem); -`; - -const RetrospectText = styled.p` - text-align: center; - - ${TYPO.label2} -`; diff --git a/grass-diary/src/pages/Main/Main.tsx b/grass-diary/src/pages/Main/Main.tsx index 96ad4114..c70573f7 100644 --- a/grass-diary/src/pages/Main/Main.tsx +++ b/grass-diary/src/pages/Main/Main.tsx @@ -1,12 +1,14 @@ import { useNavigate } from 'react-router-dom'; import { useEffect } from 'react'; import { checkAuth } from '@utils/authUtils'; -import { PopularFeed, Container } from '@components/index'; +import { PopularFeed, Container, Callout } from '@components/index'; import TopSection from './TopSection'; import MiddleSection from './MiddleSection'; import BottomSection from './BottomSection'; +import Spacer from './Spacer'; import { useAuthActions } from '@state/auth/authStore'; +import { MAIN_MESSAGES } from '@constants/message'; const Main = () => { const navigate = useNavigate(); @@ -46,6 +48,10 @@ const Main = () => { +
+ +
+ ); }; diff --git a/grass-diary/src/pages/Main/MiddleSection.tsx b/grass-diary/src/pages/Main/MiddleSection.tsx index 9a9801d8..7b3b5fe1 100644 --- a/grass-diary/src/pages/Main/MiddleSection.tsx +++ b/grass-diary/src/pages/Main/MiddleSection.tsx @@ -1,10 +1,8 @@ +import * as S from '@styles/Main/MiddleSection.style'; import dayjs from 'dayjs'; -import styled from 'styled-components'; import { useCallback } from 'react'; -import { semantic } from '@styles/semantic'; import { useGrassRecord } from '@hooks/api/useGrassRecord'; import { MAIN_MESSAGES } from '@constants/message'; -import { TYPO } from '@styles/typo'; const MiddleSection = () => { // 잔디 날짜 계산 @@ -49,115 +47,37 @@ const MiddleSection = () => { return ( <> - - - + + + {MAIN_MESSAGES.middle_section.status_label} - - + + - - + + {currentMonth} {MAIN_MESSAGES.middle_section.monthly_grass_summary} - + {grassQuery?.thisMonthCount ? grassQuery?.thisMonthCount : 0} - + {MAIN_MESSAGES.middle_section.planted_grass_count} - - + + {MAIN_MESSAGES.middle_section.grass_prompt} - - + + - + {daysInMonth.map(day => (
- +
))} -
-
+ + ); }; export default MiddleSection; - -const Container = styled.div` - display: flex; - max-width: var(--vw-desktop-min, 60rem); - padding: var(--gap-2xl, 2rem) var(--gap-xl, 1.5rem); - flex-direction: column; - align-items: center; - gap: var(--gap-2xl, 2rem); -`; - -const GrassLabel = styled.div` - display: flex; - padding: var(--gap-2xs, 0.5rem) var(--gap-md, 1rem); - justify-content: center; - align-items: center; - gap: var(--gap-3xs, 0.375rem); - - border-radius: var(--radius-sm, 0.75rem); - border: var(--stroke-thin, 0.0625rem) solid - ${semantic.light.border.transparent.alternative}; - - background: ${semantic.light.bg.solid.normal}; -`; - -const GrassLabelText = styled.p` - color: ${semantic.light.object.transparent.alternative}; - text-align: center; - - ${TYPO.label2} -`; - -const GrassBanner = styled.div` - display: flex; - flex-direction: column; - align-items: center; - gap: var(--gap-2xs, 0.5rem); - align-self: stretch; -`; - -const GrassBannerText = styled.p` - align-self: stretch; - color: ${semantic.light.object.transparent.alternative}; - text-align: center; - - ${TYPO.title1} -`; - -const GrassBannerTextSecond = styled.p` - align-self: stretch; - - color: ${semantic.light.object.transparent.alternative}; - text-align: center; - - ${TYPO.label2} -`; - -const HighlightedText = styled.span` - color: ${semantic.light.accent.solid.normal}; -`; - -const GrassTableBox = styled.div` - display: grid; - grid-template-columns: repeat(7, 3.5rem); - grid-gap: var(--gap-xs, 0.625rem); - margin-bottom: 0.625rem; -`; - -const DayBox = styled.div` - width: 3.5rem; - height: 3.5rem; - - border-radius: var(--radius-sm, 0.75rem); - - background: ${semantic.light.fill.transparent.assistive}; - - box-shadow: 0rem 0rem 0.0625rem 0rem rgba(0, 0, 0, 0.04), - 0rem 0.125rem 0.25rem 0rem rgba(0, 0, 0, 0.08); -`; diff --git a/grass-diary/src/pages/Main/Spacer.tsx b/grass-diary/src/pages/Main/Spacer.tsx new file mode 100644 index 00000000..d7e1e18d --- /dev/null +++ b/grass-diary/src/pages/Main/Spacer.tsx @@ -0,0 +1,11 @@ +import * as S from '@styles/Main/Spacer.style'; + +const Spacer = () => { + return ( + <> + + + ); +}; + +export default Spacer; diff --git a/grass-diary/src/pages/Main/TopSection.tsx b/grass-diary/src/pages/Main/TopSection.tsx index 7462fa34..e5d027a2 100644 --- a/grass-diary/src/pages/Main/TopSection.tsx +++ b/grass-diary/src/pages/Main/TopSection.tsx @@ -1,10 +1,11 @@ -import styled from 'styled-components'; +import * as S from '@styles/Main/TopSection.style'; import { Link } from 'react-router-dom'; import { useTodayDate } from '@hooks/api/useTodayDate'; import { useTodayQuestion } from '@hooks/api/useTodayQuestion'; -import { semantic } from '@styles/semantic'; import { MAIN_MESSAGES } from '@constants/message'; -import { TYPO } from '@styles/typo'; + +import { ReactComponent as EditNote } from '@svg/edit_note.svg'; +import { ReactComponent as EventNote } from '@svg/event_note.svg'; const TopSection = () => { // 질문 데이터를 가져오는 쿼리 @@ -14,8 +15,8 @@ const TopSection = () => { return ( <> - - + + {date ? (

{date.year}년 {date.month}월 {date.date}일 {date.day}요일 @@ -23,99 +24,36 @@ const TopSection = () => { ) : (

Loading...

)} -
+ - - {question?.question ? <>"{question.question}" : <>Loading...} - + + {question?.question ? ( + <>"{question.question}" + ) : ( + <>"Question is Loading..." + )} + - - + + - + {MAIN_MESSAGES.top_section.write_diary} - + - + + - + - {MAIN_MESSAGES.top_section.my_diary} + {MAIN_MESSAGES.top_section.my_diary} - - -
+ + + + ); }; export default TopSection; - -const Container = styled.div` - display: flex; - max-width: 60rem; - padding: 4.5rem 1.5rem; - flex-direction: column; - align-items: center; - gap: 2rem; -`; - -const TodayDateBox = styled.div` - color: ${semantic.light.object.transparent.neutral}; - text-align: center; - - ${TYPO.label3} -`; - -const DailyQuestionText = styled.p` - color: ${semantic.light.object.solid.hero}; - text-align: center; - - ${TYPO.display1} -`; - -const ButtonContainer = styled.div` - display: flex; - align-items: flex-start; - gap: 1rem; -`; - -const CreateDiaryBtn = styled.button` - display: flex; - padding: 0.75rem 1rem; - justify-content: center; - align-items: center; - gap: 0.5rem; - - border-radius: 0.75rem; - - background: ${semantic.light.accent.solid.normal}; - border: none; -`; - -const CreateDiaryText = styled.p` - color: ${semantic.light.base.solid.white}; - text-align: center; - - ${TYPO.label3} -`; - -const MydiaryBtn = styled.button` - display: flex; - padding: 0.75rem 1rem; - justify-content: center; - align-items: center; - gap: 0.5rem; - - border-radius: 0.75rem; - border: 0.0625rem solid ${semantic.light.border.transparent.alternative}; - - background: ${semantic.light.bg.solid.normal}; -`; - -const MydiaryTxt = styled.p` - color: ${semantic.light.object.transparent.alternative}; - text-align: center; - - ${TYPO.label3} -`; diff --git a/grass-diary/src/styles/Main/Banner.style.tsx b/grass-diary/src/styles/Main/Banner.style.tsx deleted file mode 100644 index e69de29b..00000000 diff --git a/grass-diary/src/styles/Main/BottomSection.style.tsx b/grass-diary/src/styles/Main/BottomSection.style.tsx index e69de29b..07d5ed07 100644 --- a/grass-diary/src/styles/Main/BottomSection.style.tsx +++ b/grass-diary/src/styles/Main/BottomSection.style.tsx @@ -0,0 +1,153 @@ +import styled from 'styled-components'; +import { semantic } from '@styles/semantic'; +import { TYPO } from '@styles/typo'; + +export const Section = styled.div` + display: flex; + padding: var(--gap-lg, 1.25rem) var(--gap-xl, 1.5rem); + justify-content: center; + align-items: center; + gap: var(--gap-xl, 1.5rem); + align-self: stretch; +`; + +export const Container = styled.div` + display: flex; + max-width: var(--vw-desktop-min, 60rem); + justify-content: center; + align-items: center; + gap: var(--gap-xl, 1.5rem); + flex: 1 0 0; + + @media screen and (max-width: 60em) { + display: flex; + max-width: var(--vw-desktop-min, 60rem); + flex-direction: column; + justify-content: center; + align-items: center; + gap: var(--gap-xl, 1.5rem); + flex: 1 0 0; + } +`; + +export const Card = styled.div` + display: flex; + padding: var(--gap-lg, 1.25rem); + flex-direction: column; + align-items: flex-start; + gap: var(--gap-md, 1rem); + flex: 1 0 0; + + border-radius: var(--radius-md, 1rem); + border: var(--stroke-thin, 0.0625rem) solid + ${semantic.light.border.transparent.assistive}; + + background: ${semantic.light.bg.solid.normal}; + + box-shadow: 0rem 0rem 0.0625rem 0rem rgba(0, 0, 0, 0.04), + 0rem 0.125rem 0.25rem 0rem rgba(0, 0, 0, 0.08); + + @media screen and (max-width: 60em) { + display: flex; + padding: var(--gap-lg, 1.25rem); + width: 19em; + flex-direction: column; + align-items: flex-start; + gap: var(--gap-md, 1rem); + } +`; + +export const Divider = styled.div` + width: 26.75rem; + height: 0.0625rem; + + background: ${semantic.light.border.transparent.alternative}; + + @media screen and (max-width: 60em) { + width: 16em; + } +`; + +export const CardText = styled.p` + align-self: stretch; + + color: ${semantic.light.object.transparent.neutral}; + + ${TYPO.label3} +`; + +export const CardSubText = styled.p` + align-self: stretch; + + color: ${semantic.light.object.transparent.neutral}; + + ${TYPO.caption2} +`; + +export const Wrap = styled.div` + display: flex; + align-items: center; + gap: var(--gap-md, 1rem); + align-self: stretch; +`; + +export const RewardContainer = styled.div` + display: flex; + align-items: center; + gap: var(--gap-2xs, 0.5rem); + flex: 1 0 0; +`; + +export const RewardPointBox = styled.div` + flex: 1 0 0; + + color: ${semantic.light.accent.solid.normal}; +`; + +export const ThemeMarketBtn = styled.button` + display: flex; + padding: var(--gap-xs, 0.625rem) var(--gap-md, 1rem); + justify-content: center; + align-items: center; + gap: var(--gap-2xs, 0.5rem); + + border-radius: var(--radius-xs, 0.5rem); + border: var(--stroke-thin, 0.0625rem) solid + ${semantic.light.accent.solid.normal}; + + background: ${semantic.light.accent.transparent.normal}; + + cursor: pointer; +`; + +export const ThemeMarketText = styled.p` + color: ${semantic.light.accent.solid.hero}; + text-align: center; + + ${TYPO.label2} +`; + +export const RetrospectContainer = styled.div` + display: flex; + justify-content: flex-end; + align-items: center; + align-self: stretch; +`; + +export const RetrospectBtn = styled.button` + display: flex; + padding: var(--gap-xs, 0.625rem) var(--gap-md, 1rem); + justify-content: center; + align-items: center; + gap: var(--gap-2xs, 0.5rem); + + border-radius: var(--radius-xs, 0.5rem); + background: ${semantic.light.fill.transparent.alternative}; +`; + +export const RetrospectText = styled.p` + color: ${semantic.light.object.transparent.alternative}; + text-align: center; + + ${TYPO.label2} +`; diff --git a/grass-diary/src/styles/Main/MiddleSection.style.tsx b/grass-diary/src/styles/Main/MiddleSection.style.tsx index e69de29b..2a39ac15 100644 --- a/grass-diary/src/styles/Main/MiddleSection.style.tsx +++ b/grass-diary/src/styles/Main/MiddleSection.style.tsx @@ -0,0 +1,104 @@ +import styled from 'styled-components'; +import { semantic } from '@styles/semantic'; +import { TYPO } from '@styles/typo'; + +export const Container = styled.div` + display: flex; + max-width: var(--vw-desktop-min, 60rem); + padding: var(--gap-2xl, 2rem) var(--gap-xl, 1.5rem); + flex-direction: column; + align-items: center; + gap: var(--gap-2xl, 2rem); + + @media screen and (max-width: 60em) { + width: 22rem; + } +`; + +export const GrassLabel = styled.div` + display: flex; + padding: var(--gap-2xs, 0.5rem) var(--gap-md, 1rem); + justify-content: center; + align-items: center; + gap: var(--gap-3xs, 0.375rem); + + border-radius: var(--radius-sm, 0.75rem); + border: var(--stroke-thin, 0.0625rem) solid + ${semantic.light.border.transparent.alternative}; + + background: ${semantic.light.fill.transparent.alternative}; +`; + +export const GrassLabelText = styled.p` + color: ${semantic.light.object.transparent.alternative}; + text-align: center; + + ${TYPO.label2} +`; + +export const GrassBanner = styled.div` + display: flex; + flex-direction: column; + align-items: center; + gap: var(--gap-2xs, 0.5rem); + align-self: stretch; +`; + +export const GrassBannerText = styled.p` + align-self: stretch; + color: ${semantic.light.object.transparent.alternative}; + text-align: center; + + ${TYPO.title1} +`; + +export const GrassBannerTextSecond = styled.p` + align-self: stretch; + + color: ${semantic.light.object.transparent.alternative}; + text-align: center; + + ${TYPO.label2} +`; + +export const HighlightedText = styled.span` + color: ${semantic.light.accent.solid.normal}; +`; + +export const GrassTableBox = styled.div` + display: grid; + grid-template-columns: repeat(7, 3.5rem); + grid-gap: var(--gap-xs, 0.625rem); + margin-bottom: 0.625rem; + + @media screen and (max-width: 60em) { + display: grid; + grid-template-columns: repeat(7, 2em); + grid-gap: var(--gap-xs, 0.525rem); + margin-bottom: 0.525rem; + } +`; + +export const DayBox = styled.div` + width: 3.5rem; + height: 3.5rem; + + border-radius: var(--radius-sm, 0.75rem); + + background: ${semantic.light.fill.transparent.assistive}; + + box-shadow: 0rem 0rem 0.0625rem 0rem rgba(0, 0, 0, 0.04), + 0rem 0.125rem 0.25rem 0rem rgba(0, 0, 0, 0.08); + + @media screen and (max-width: 60em) { + width: 2em; + height: 2em; + + border-radius: var(--radius-sm, 0.75rem); + + background: ${semantic.light.fill.transparent.assistive}; + + box-shadow: 0rem 0rem 0.0625rem 0rem rgba(0, 0, 0, 0.04), + 0rem 0.125rem 0.25rem 0rem rgba(0, 0, 0, 0.08); + } +`; diff --git a/grass-diary/src/styles/Main/Spacer.style.tsx b/grass-diary/src/styles/Main/Spacer.style.tsx new file mode 100644 index 00000000..2b9eb915 --- /dev/null +++ b/grass-diary/src/styles/Main/Spacer.style.tsx @@ -0,0 +1,7 @@ +import styled from 'styled-components'; + +export const Section = styled.div` + height: 7.5rem; + max-width: var(--vw-desktop-min, 60rem); + align-self: stretch; +`; diff --git a/grass-diary/src/styles/Main/TopSection.style.tsx b/grass-diary/src/styles/Main/TopSection.style.tsx index e69de29b..246ad690 100644 --- a/grass-diary/src/styles/Main/TopSection.style.tsx +++ b/grass-diary/src/styles/Main/TopSection.style.tsx @@ -0,0 +1,80 @@ +import styled from 'styled-components'; +import { semantic } from '@styles/semantic'; +import { TYPO } from '@styles/typo'; + +export const Container = styled.div` + display: flex; + max-width: 60rem; + padding: 4.5rem 1.5rem; + flex-direction: column; + align-items: center; + gap: 2rem; + + @media screen and (max-width: 60em) { + width: 22rem; + } +`; + +export const TodayDateBox = styled.div` + color: ${semantic.light.object.transparent.neutral}; + text-align: center; + + ${TYPO.label3} +`; + +export const DailyQuestionText = styled.p` + color: ${semantic.light.object.solid.hero}; + text-align: center; + + ${TYPO.display1} + + @media screen and (max-width: 60em) { + ${TYPO.title3} + } +`; + +export const ButtonContainer = styled.div` + display: flex; + align-items: flex-start; + gap: 1rem; +`; + +export const CreateDiaryBtn = styled.button` + display: flex; + padding: 0.75rem 1rem; + justify-content: center; + align-items: center; + gap: 0.5rem; + + border-radius: 0.75rem; + + background: ${semantic.light.accent.solid.normal}; + border: none; +`; + +export const CreateDiaryText = styled.p` + color: ${semantic.light.base.solid.white}; + text-align: center; + + ${TYPO.label3} +`; + +export const MydiaryBtn = styled.button` + display: flex; + padding: 0.75rem 1rem; + justify-content: center; + align-items: center; + gap: 0.5rem; + + border-radius: 0.75rem; + border: 0.0625rem solid ${semantic.light.border.transparent.alternative}; + + background: ${semantic.light.bg.solid.normal}; +`; + +export const MydiaryTxt = styled.p` + color: ${semantic.light.object.transparent.alternative}; + text-align: center; + + ${TYPO.label3} +`; diff --git a/grass-diary/src/styles/component/Notification/Callout.style.tsx b/grass-diary/src/styles/component/Notification/Callout.style.tsx index a9218769..dc525fd5 100644 --- a/grass-diary/src/styles/component/Notification/Callout.style.tsx +++ b/grass-diary/src/styles/component/Notification/Callout.style.tsx @@ -20,4 +20,14 @@ export const Text = styled.p` color: ${semantic.light.object.transparent.alternative}; ${TYPO.caption2} + + @media screen and (max-width: 60em) { + ${TYPO.caption1} + } +`; + +export const Space = styled.div` + @media screen and (max-width: 60em) { + font-size: 1em; + } `; diff --git a/grass-diary/src/styles/components/callout/Callout.style.tsx b/grass-diary/src/styles/components/callout/Callout.style.tsx new file mode 100644 index 00000000..dc525fd5 --- /dev/null +++ b/grass-diary/src/styles/components/callout/Callout.style.tsx @@ -0,0 +1,33 @@ +import styled from 'styled-components'; +import { semantic } from '@styles/semantic'; +import { TYPO } from '@styles/typo'; + +export const Container = styled.div` + display: flex; + align-self: center; + padding: var(--gap-3xs, 0.375rem) var(--gap-sm, 0.75rem); + align-items: flex-start; + gap: var(--gap-2xs, 0.5rem); + + border-radius: var(--radius-xs, 0.5rem); + border: var(--stroke-thin, 0.0625rem) solid + ${semantic.light.border.transparent.alternative}; + + background: ${semantic.light.fill.transparent.assistive}; +`; + +export const Text = styled.p` + color: ${semantic.light.object.transparent.alternative}; + + ${TYPO.caption2} + + @media screen and (max-width: 60em) { + ${TYPO.caption1} + } +`; + +export const Space = styled.div` + @media screen and (max-width: 60em) { + font-size: 1em; + } +`;