diff --git a/src/assets/Icons/Hamburger.png b/src/assets/Icons/Hamburger.png new file mode 100644 index 0000000..a97a92e Binary files /dev/null and b/src/assets/Icons/Hamburger.png differ diff --git a/src/assets/Icons/Hamburger.svg b/src/assets/Icons/Hamburger.svg deleted file mode 100644 index f84034f..0000000 --- a/src/assets/Icons/Hamburger.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/assets/Icons/IntroLogo.svg b/src/assets/Icons/IntroLogo.svg deleted file mode 100644 index a4f3a31..0000000 --- a/src/assets/Icons/IntroLogo.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/assets/Icons/close.png b/src/assets/Icons/close.png new file mode 100644 index 0000000..5ae36ab Binary files /dev/null and b/src/assets/Icons/close.png differ diff --git a/src/components/Header/Header.styled.tsx b/src/components/Header/Header.styled.tsx index 6b439e3..925091a 100644 --- a/src/components/Header/Header.styled.tsx +++ b/src/components/Header/Header.styled.tsx @@ -4,38 +4,45 @@ export const HeaderContainer = styled.header` position: relative; width: 100%; height: 70px; - background-color: #fcfcfc; + background-color: rgb(245, 245, 245); display: flex; align-items: center; justify-content: space-between; - padding: 0 40px; + padding: 0 25px; +`; + +export const MobileHeader = styled.div` + display: flex; + width: 100%; + align-items: center; + justify-content: space-between; `; export const Logo = styled.div` font-size: 20px; font-weight: bold; - color: #28723f; + color: #102C19; letter-spacing: -0.24px; `; -export const Nav = styled.nav` +export const NavWrapper = styled.div` display: flex; - align-items: flex-end; - justify-content: flex-start; - gap: 30px; + align-items: center; + gap: 35px; +`; - @media (max-width: 768px) { - display: none; - } +export const Nav = styled.nav` + display: flex; + align-items: center; + gap: 20px; `; -export const NavItem = styled.a` +export const NavItem = styled.a<{ $isMobile: boolean; $isTablet: boolean }>` text-decoration: none; - font-size: 16px; - font-weight: 500; - color: #49aa59; + font-size: ${({$isTablet}) => ($isTablet ? "15px": "18px")} + font - weight: 500; + color: #102C19; cursor: pointer; - margin: 10px 0; &:hover { color: #28723f; } @@ -52,39 +59,40 @@ export const FarmingLogButton = styled.button` text-align: center; cursor: pointer; box-shadow: 0px 2px 10px rgba(25, 25, 25, 0.2); - - &:hover { - background-color: #1f5a2f; - } `; export const HamburgerIcon = styled.img` width: 30px; height: 30px; cursor: pointer; - - @media (min-width: 769px) { - display: none; - } `; export const MobileNavWrapper = styled.div<{ $isMenuOpen: boolean }>` - position: absolute; - top: 70px; + position: fixed; + top: 0; left: 0; width: 100%; - background-color: #fcfcfc; + background-color: rgb(245, 245, 245); display: flex; flex-direction: column; align-items: center; - padding: 10px 0; + padding: ${({ $isMenuOpen }) => ($isMenuOpen ? "20px 0" : "0")}; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); z-index: 1000; - overflow: hidden; height: ${({ $isMenuOpen }) => ($isMenuOpen ? "auto" : "0")}; opacity: ${({ $isMenuOpen }) => ($isMenuOpen ? "1" : "0")}; - transform: ${({ $isMenuOpen }) => ($isMenuOpen ? "translateY(0)" : "translateY(-10px)")}; - transition: height 0.3s ease, opacity 0.3s ease, transform 0.3s ease; + transform: ${({ $isMenuOpen }) => ($isMenuOpen ? "translateY(0)" : "translateY(-100%)")}; + transition: transform 0.3s ease, opacity 0.3s ease, height 0.3s ease; + overflow: hidden; +`; + +export const CloseButton = styled.img` + position: absolute; + top: 15px; + right: 15px; + cursor: pointer; + width: 24px; + height: 24px; `; export const MobileNav = styled.nav` @@ -92,4 +100,7 @@ export const MobileNav = styled.nav` flex-direction: column; align-items: center; width: 100%; + gap: 25px; + margin-top: 20px; `; + diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx index 8e3ef69..4127914 100644 --- a/src/components/Header/Header.tsx +++ b/src/components/Header/Header.tsx @@ -2,51 +2,60 @@ import { useCallback, useState } from 'react'; import { useNavigate } from 'react-router'; import * as S from './Header.styled'; import Popup from '../Popup/Popup'; -import Hamburger from '../../assets/Icons/Hamburger.svg'; +import Hamburger from '../../assets/Icons/Hamburger.png'; +import CloseIcon from '../../assets/Icons/close.png'; import useMediaQueries from '@/hooks/useMediaQueries'; export default function Header() { const [isPopupOpen, setPopupOpen] = useState(false); const [isMenuOpen, setMenuOpen] = useState(false); const navigate = useNavigate(); - const { isMobile } = useMediaQueries(); - + const { isMobile, isTablet } = useMediaQueries(); + const onContainerClick = useCallback(() => {}, []); + const handleNavItemClick = (path?: string) => { + if (path) navigate(path); + setMenuOpen(false); + }; + return ( - navigate('/')}>Farm System - {isMobile ? ( - setMenuOpen(!isMenuOpen)} /> + + navigate('/')}>Farm System + setMenuOpen(true)} /> + ) : ( <> - - navigate('/')}>홈 - setPopupOpen(true)}>블로그 / 프로젝트 - setPopupOpen(true)}>소식 - setPopupOpen(true)}>FAQ - navigate('/apply')}>지원하기 - - - {/* 파밍로그 버튼 */} - 파밍로그 + navigate('/')}>Farm System + + + navigate('/')}>홈 + setPopupOpen(true)}>블로그 / 프로젝트 + setPopupOpen(true)}>소식 + setPopupOpen(true)}>FAQ + + 파밍로그 + )} - + {isMobile && ( - - navigate('/')}>홈 - setPopupOpen(true)}>블로그 / 프로젝트 - setPopupOpen(true)}>소식 - setPopupOpen(true)}>FAQ - navigate('/apply')}>지원하기 - setPopupOpen(true)}>파밍로그 - + <> + setMenuOpen(false)} /> + + handleNavItemClick('/')}>홈 + handleNavItemClick()}>블로그 / 프로젝트 + handleNavItemClick()}>소식 + handleNavItemClick()}>FAQ + handleNavItemClick()}>파밍로그 + + )} - + setPopupOpen(false)} @@ -55,4 +64,4 @@ export default function Header() { /> ); -} \ No newline at end of file +} diff --git a/src/pages/Main/Achievements/AchievementItem.styles.ts b/src/pages/Main/Achievements/AchievementItem.styles.ts index b2eaea7..daf0170 100644 --- a/src/pages/Main/Achievements/AchievementItem.styles.ts +++ b/src/pages/Main/Achievements/AchievementItem.styles.ts @@ -2,7 +2,7 @@ import styled from 'styled-components'; export const ItemContainer = styled.div<{ $isMobile: boolean; $isTablet: boolean }>` width: ${({ $isMobile, $isTablet }) => ($isMobile ? "280px" : $isTablet ? "330px" : "390px")}; - height: ${({ $isMobile, $isTablet }) => ($isMobile ? "280px" : $isTablet ? "330px" : "390px")}; + height: ${({ $isMobile, $isTablet }) => ($isMobile ? "360px" : $isTablet ? "420px" : "480px")}; margin-left: 30px; margin-right: 30px; background-color: #175321; @@ -14,16 +14,17 @@ export const ItemContainer = styled.div<{ $isMobile: boolean; $isTablet: boolean export const Image = styled.img<{ $isMobile: boolean }>` width: 100%; - height: ${({ $isMobile }) => ($isMobile ? "140px" : "180px")}; + height: ${({ $isMobile }) => ($isMobile ? "66.6%" : "66.6%")}; object-fit: cover; `; export const Content = styled.div<{ $isMobile: boolean }>` +margin-top: 30px; padding: ${({ $isMobile }) => ($isMobile ? "10px" : "20px")}; `; export const Title = styled.h3<{ $isMobile: boolean }>` - font-size: ${({ $isMobile }) => ($isMobile ? "12px" : "14px")}; + font-size: ${({ $isMobile }) => ($isMobile ? "10px" : "14px")}; color: #fcfcfc; `; diff --git a/src/pages/Main/Achievements/Achievements.styles.ts b/src/pages/Main/Achievements/Achievements.styles.ts index 6036f14..c5123f0 100644 --- a/src/pages/Main/Achievements/Achievements.styles.ts +++ b/src/pages/Main/Achievements/Achievements.styles.ts @@ -32,7 +32,7 @@ export const Highlight = styled.span` export const SliderWrapper = styled.div<{ $isMobile: boolean; $isTablet: boolean }>` width: 100vw; - position: relative; /* 블러 효과 위치 */ + position: relative; overflow: visible; z-index: 0; @@ -44,7 +44,7 @@ export const SliderWrapper = styled.div<{ $isMobile: boolean; $isTablet: boolean width: 100vw; margin: 0; padding: 20px 0; - min-height: auto; /* 높이를 자동으로 조절 -> QA 후 일부 조정 필요 */ + min-height: auto; } .slick-track { @@ -64,7 +64,7 @@ export const SliderWrapper = styled.div<{ $isMobile: boolean; $isTablet: boolean content: ""; position: absolute; top: 0; - width: ${({ $isMobile, $isTablet }) => ($isMobile ? "80px" : $isTablet ? "250px" : "400px")}; + width: ${({ $isMobile, $isTablet }) => ($isMobile ? "90px" : $isTablet ? "250px" : "400px")}; height: 100%; z-index: 1; pointer-events: none; diff --git a/src/pages/Main/Achievements/Achievements.tsx b/src/pages/Main/Achievements/Achievements.tsx index 117531a..8a58ef1 100644 --- a/src/pages/Main/Achievements/Achievements.tsx +++ b/src/pages/Main/Achievements/Achievements.tsx @@ -10,31 +10,31 @@ const achievementsData = [ id: 1, title: '2024 사회보장정보와 공공•민간 빅데이터 활용 국민행복서비스', description: '한국사회보장정보원 표창장', - imageUrl: 'path/to/image1.jpg', + imageUrl: 'https://farmsystem-bucket.s3.ap-northeast-2.amazonaws.com/award/award_2.png', }, { id: 2, title: '2024 창업 아이디어 경진대회', description: '동국대학교 총장상(대상)', - imageUrl: 'path/to/image2.jpg', + imageUrl: 'https://farmsystem-bucket.s3.ap-northeast-2.amazonaws.com/award/award_3.png', }, { id: 3, title: '2024 동국대학교 AI융합대학 해커톤', description: 'AI융합대학장상(대상)', - imageUrl: 'path/to/image3.jpg', + imageUrl: 'https://farmsystem-bucket.s3.ap-northeast-2.amazonaws.com/award/award_4.png', }, { id: 4, title: '2024 DPG AI Challenge', description: '디지털플랫폼정부위원장상(최우수상)', - imageUrl: 'path/to/image4.jpg', + imageUrl: 'https://farmsystem-bucket.s3.ap-northeast-2.amazonaws.com/award/award_1.png', }, { id: 5, title: '22024 E2GEE Lab(이지랩) 메이커톤', description: '동국대학교 총장상(대상)', - imageUrl: 'path/to/image4.jpg', + imageUrl: 'https://farmsystem-bucket.s3.ap-northeast-2.amazonaws.com/award/award_5.png', }, ]; diff --git a/src/pages/Main/BottomInfo/BottomInfo.styles.ts b/src/pages/Main/BottomInfo/BottomInfo.styles.ts index 6d8ba0e..c08e897 100644 --- a/src/pages/Main/BottomInfo/BottomInfo.styles.ts +++ b/src/pages/Main/BottomInfo/BottomInfo.styles.ts @@ -9,7 +9,7 @@ export const BottomInfoContainer = styled.div<{ $isMobile: boolean; $isTablet: b `; export const Title = styled.h2<{ $isMobile: boolean; $isTablet: boolean }>` - width: ${({ $isMobile }) => ($isMobile ? "98vw" : "none" )}; /*아래 정보 타이틀 사이즈 조절*/ + width: ${({ $isMobile }) => ($isMobile ? "98vw" : "none" )}; font-size: ${({ $isMobile, $isTablet }) => ($isMobile ? "22px" : $isTablet ? "32px" : "36px")}; color: #191919; font-weight: bold; @@ -64,12 +64,13 @@ export const RequirementsTitle = styled.h3<{ $isMobile: boolean; $isTablet: bool `; export const RequirementTitle = styled.h4<{ $isMobile: boolean }>` - font-size: ${({ $isMobile }) => ($isMobile ? "20px" : "24px")}; + font-size: ${({ $isMobile }) => ($isMobile ? "18px" : "24px")}; font-weight: bold; `; export const RequirementText = styled.p<{ $isMobile: boolean }>` - font-size: ${({ $isMobile }) => ($isMobile ? "16px" : "20px")}; +margin-top: 10px; + font-size: ${({ $isMobile }) => ($isMobile ? "14px" : "20px")}; font-weight: 500; `; @@ -115,7 +116,6 @@ export const NotificationLink = styled.a<{ $isMobile: boolean }>` } `; -/* 팝업 */ export const PopupOverlay = styled.div` position: fixed; inset: 0; diff --git a/src/pages/Main/BottomInfo/BottomInfo.tsx b/src/pages/Main/BottomInfo/BottomInfo.tsx index 1c9bf66..2f282d8 100644 --- a/src/pages/Main/BottomInfo/BottomInfo.tsx +++ b/src/pages/Main/BottomInfo/BottomInfo.tsx @@ -11,8 +11,7 @@ const BottomInfo = () => { const [isPopupOpen, setPopupOpen] = useState(false); const { isMobile, isTablet } = useMediaQueries(); - // 구글 폼 링크 (전화번호 입력 폼) 지금은 가상의 url 입니다. - const googleFormLink = "https://docs.google.com/forms/d/e/YOUR_FORM_ID/viewform"; + const googleFormLink = "https://docs.google.com/forms/d/e/1FAIpQLSdaELf6PNpRSD18nPPcgH_934Wsm9Gju54P62vWlczusmRg3w/viewform"; return ( @@ -38,15 +37,15 @@ const BottomInfo = () => { 지원 요건 - 🌱 누구나 환영해요! - Farm System에 관심 있는 동국대학교 학생이라면 누구든지 참여할 수 있어요. + - 누구나 환영해요! + Farm System에 관심 있는 동국대학교 학생이라면 누구든지 참여할 수 있어요.🌱 - ⏰ 월요일 저녁, 같이 성장해요! - 매주 월요일 19시부터 약 2시간 동안 정기 모임이 열려요. 원활한 팀워크를 위해 필참이 원칙이에요! 함께 성장할 준비되셨나요? 🌱 + - 월요일 저녁, 같이 성장해요. + 매주 월요일 19시⏰부터 약 2시간 동안 정기 모임이 열려요. 원활한 팀워크를 위해 필참이 원칙이에요! 함께 성장할 준비되셨나요? - 📅 언제 모집하나요? + - 언제 모집하나요? 2025년 2월, Farm System 4기를 공개 모집할 예정이에요! 조금만 기다려 주세요 😉 diff --git a/src/pages/Main/FarmSyetemNav/FarmSystemNav.styled.ts b/src/pages/Main/FarmSyetemNav/FarmSystemNav.styled.ts index dcf584b..b948690 100644 --- a/src/pages/Main/FarmSyetemNav/FarmSystemNav.styled.ts +++ b/src/pages/Main/FarmSyetemNav/FarmSystemNav.styled.ts @@ -16,8 +16,8 @@ export const FixedNavWrapper = styled.div` export const Navbar = styled.nav<{ $isMobile: boolean }>` - background-color: #216D35; - padding: 10px 20px; + background-color: rgba(33, 109, 53, 0.7); + padding: 10px 10px; border-radius: 17px; display: flex; align-items: center; diff --git a/src/pages/Main/FarmSyetemNav/MobileNav.styled.ts b/src/pages/Main/FarmSyetemNav/MobileNav.styled.ts index b2eb02c..10dccdf 100644 --- a/src/pages/Main/FarmSyetemNav/MobileNav.styled.ts +++ b/src/pages/Main/FarmSyetemNav/MobileNav.styled.ts @@ -6,6 +6,7 @@ export const MobileNavbar = styled.div<{ isNavOpen: boolean }>` transition: max-height 0.1s ease-in-out; display: inline-flex; + height: auto; padding: 10px 10px; flex-direction: column; @@ -15,8 +16,7 @@ export const MobileNavbar = styled.div<{ isNavOpen: boolean }>` width: 150px; border-radius: 20px 0px 20px 20px; - border: 1px solid var(--FarmSystem_White, #FCFCFC); - background: var(--FarmSystem_Green01, #28723F); +background: rgba(40, 114, 63, 0.7); `; export const MobileNavItem = styled.a` @@ -25,6 +25,7 @@ export const MobileNavItem = styled.a` align-items: center; gap: 3px; flex: 1 0 0; + margin-bottom: 8px; `; export const MobileNavText = styled.p` @@ -37,7 +38,6 @@ export const MobileNavText = styled.p` letter-spacing: -0.24px; `; -/* 확장/축소 버튼 스타일 */ export const ExpandButton = styled.button` color: var(--FarmSystem_White, #FCFCFC); font-size: 24px; diff --git a/src/pages/Main/FarmSyetemNav/MobileNav.tsx b/src/pages/Main/FarmSyetemNav/MobileNav.tsx index 7209914..f476982 100644 --- a/src/pages/Main/FarmSyetemNav/MobileNav.tsx +++ b/src/pages/Main/FarmSyetemNav/MobileNav.tsx @@ -21,6 +21,10 @@ export default function MobileNav({ currentSection, handleSmoothScroll }: Mobile const [isNavOpen, setIsNavOpen] = useState(false); const currentNavItem = navItems.find(item => item.id === currentSection) ?? navItems[0]; + if(currentSection === "about") { + return null; + } + return ( {/* diff --git a/src/pages/Main/Intro/Intro.styled.tsx b/src/pages/Main/Intro/Intro.styled.tsx index d47efb6..0045906 100644 --- a/src/pages/Main/Intro/Intro.styled.tsx +++ b/src/pages/Main/Intro/Intro.styled.tsx @@ -1,4 +1,4 @@ -import styled from 'styled-components'; +import styled from "styled-components"; export const AppContainer = styled.div` display: flex; @@ -28,10 +28,34 @@ export const BottomSection = styled.div` justify-content: center; flex: 1; margin-bottom: 15vh; + + background-color: rgba(229, 229, 229, 0.3); + + border-radius: 20px; + padding: 25px; + box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.1); +`; + +export const BottomSectionTitle = styled.h2` + font-size: 22px; + font-weight: 700; + color: rgb(245, 245, 245); + text-align: center; + margin-bottom: 50px; +`; + +export const BottomSectionDescription = styled.p` + font-size: 16px; + font-weight: 500; + text-align: center; + line-height: 1.6; + color: #102C19; + max-width: 600px; + margin-bottom: 8px; `; export const IntroPhrase = styled.p` - color: white; + color: rgb(245, 245, 245); font-size: 18px; font-weight: 600; text-align: center; @@ -39,15 +63,6 @@ export const IntroPhrase = styled.p` padding-bottom: 10px; `; -export const IntroDescription = styled.p` - font-size: 14px; - font-weight: 500; - text-align: center; - padding-top: 5px; - padding-bottom: 5px; - color: #333; // 기본적으로 어두운 회색 -`; - export const AppApplyButton = styled.div` width: 110px; height: 35px; @@ -67,14 +82,14 @@ export const Container = styled.div<{ $isMobile: boolean; $isTablet: boolean; $i flex-direction: column; align-items: flex-start; justify-content: center; - height: ${({ $isMobile, $isTablet, $isApp, $isIpadPro }) => - $isMobile ? "75vh" : $isTablet ? "80vh" : $isApp ? "90vh" : $isIpadPro ? "105h" : "120vh"}; - + height: ${({ $isMobile, $isTablet}) => + $isMobile ? "80vh" : $isTablet ? "120vh" : "130vh"}; + background: ${({ $isMobile, $isTablet, $isApp }) => ( $isApp ? "linear-gradient(90deg, #102C19, #194326)" : - $isMobile ? "linear-gradient(90deg, #28723F, #75e298)" : - $isTablet ? "linear-gradient(90deg, #28723F, #A2E9B8)" : - "linear-gradient(90deg, #28723F, #A2E9B8)" + $isMobile ? "linear-gradient(90deg, #102C19, #28723F)" : + $isTablet ? "linear-gradient(90deg, #102C19, #28723F)" : + "linear-gradient(90deg, #102C19, #28723F)" )}; padding: ${({ $isMobile }) => ($isMobile ? "0px" : "50px")}; @@ -82,48 +97,67 @@ export const Container = styled.div<{ $isMobile: boolean; $isTablet: boolean; $i `; -/* 추가된 네비게이션 정렬용 스타일 */ -export const NavWrapper = styled.div` - width: 100%; - display: flex; - justify-content: flex-end; /* 오른쪽 정렬 */ - margin-bottom: 20px; -`; - export const Logo = styled.div<{ $isMobile: boolean; $isTablet: boolean }>` display: flex; align-items: center; - font-size: ${({ $isMobile, $isTablet }) => ($isMobile ? "40px" : $isTablet ? "50px" : "64px")}; - font-weight: 800; - margin-bottom: 20px; - margin-left: 50px; + font-size: ${({ $isMobile, $isTablet }) => ($isMobile ? "19px" : $isTablet ? "27px" : "35px")}; img { - width: ${({ $isMobile, $isTablet }) => ($isMobile ? "100px" : $isTablet ? "140px" : "180px")}; + width: ${({ $isMobile, $isTablet }) => ($isMobile ? "100px" : $isTablet ? "200px" : "250px")}; height: auto; } `; export const Description = styled.p<{ $isMobile: boolean; $isTablet: boolean }>` - font-size: ${({ $isMobile, $isTablet }) => ($isMobile ? "16px" : $isTablet ? "20px" : "24px")}; + font-size: ${({ $isMobile, $isTablet }) => ($isMobile ? "16px" : $isTablet ? "20px" : "30px")}; line-height: 1.5; max-width: 600px; margin-bottom: 20px; - margin-left: 50px; + margin-left: 30px; + font-weight: 600; `; -export const TrackList = styled.p<{ $isMobile: boolean; $isTablet: boolean, $isTiny: boolean}>` - a { - font-weight: 600; - } - font-size: ${({ $isTiny, $isMobile, $isTablet }) => ($isTiny ? "12px" : $isMobile ? "15px" : $isTablet ? "20px" : "24px")}; - line-height: 1.5; - margin-top: 20px; - margin-bottom: 20px; - margin-left: 50px; +export const TrackList = styled.p<{ $isMobile: boolean; $isTablet: boolean }>` + font-size: ${({ $isMobile, $isTablet}) => ($isMobile ? "15px": $isTablet ? "15px" : "20px")}; + text-align: ${({ $isMobile }) => ($isMobile ? "center":"left")}; + color: rgb(245, 245, 245); + max-width: 600px; + margin-top: 15px; + line-height: 1.8; + margin-left: ${({ $isMobile }) => ($isMobile ? "0" : "30px")}; + margin-bottom: ${({ $isMobile }) => ($isMobile ? "20px":"0")}; + `; -export const Apply = styled.div` +export const WebviewBox = styled.div` + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: center; + + width: 100%; + + min-height: 400px; + height: auto; + + background-color: rgba(229, 229, 229, 0.3); + + border-radius: 20px; + padding: 25px; + box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.1); +`; + +export const ApplyBox = styled.div` display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-end; + width: 100%; + padding: 10px 20px; +`; + + +export const Apply = styled.div` + display: colunm; align-items: center; justify-content: space-between; margin-left: 50px; @@ -133,10 +167,10 @@ export const ApplyButton = styled.button<{ $isMobile: boolean; $isTablet: boolea background-color: #4CAF50; color: white; border: none; - padding: ${({ $isMobile, $isTablet }) => ($isMobile ? "10px 50px" : $isTablet ? "12px 65px" : "15px 80px")}; + padding: ${({ $isMobile, $isTablet }) => ($isMobile ? "10px 50px" : $isTablet ? "12px 65px" : "15px 65px")}; border-radius: 10px; font-size: ${({ $isMobile, $isTablet }) => ($isMobile ? "18px" : $isTablet ? "22px" : "24px")}; - margin-top: 20px; + margin-top: ${({ $isMobile }) => ($isMobile ? "50px":"20px")}; box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.2); &:hover { @@ -144,57 +178,12 @@ export const ApplyButton = styled.button<{ $isMobile: boolean; $isTablet: boolea } `; - export const ApplyDescription = styled.div` font-size: 16px; - margin-left: 20px; margin-top: 15px; color: #E8F5E9; -`; + text-align: center; -export const Bud = styled.div<{ $isMobile: boolean; $isTablet: boolean }>` - font-size: ${({ $isMobile, $isTablet }) => ($isMobile ? "40px" : $isTablet ? "50px" : "64px")}; - margin-left: ${({ $isMobile, $isTablet }) => ($isMobile ? "30px" : $isTablet ? "40px" : "50px")}; - top: 116px; -`; - -/* 팝업 스타일 */ -export const PopupOverlay = styled.div` - position: fixed; - inset: 0; - background: rgba(113, 113, 113, 0.3); - display: flex; - align-items: center; - justify-content: center; -`; - -export const PopupBox = styled.div` - width: 500px; - background-color: #fcfcfc; - border: 3px solid #28723f; - border-radius: 15px; - text-align: center; - padding: 40px; -`; - -export const PopupText = styled.p` - font-size: 20px; - color: black; - margin-bottom: 20px; -`; - -export const PopupCloseButton = styled.button` - background-color: #28723f; - color: #fcfcfc; - font-size: 16px; - padding: 10px 20px; - border: none; - border-radius: 10px; - cursor: pointer; - box-shadow: 0px 2px 10px rgba(25, 25, 25, 0.2); - width: 100px; - margin-top: 20px; - &:hover { - background-color: #1f5b30; - } `; + + diff --git a/src/pages/Main/Intro/Intro.tsx b/src/pages/Main/Intro/Intro.tsx index 95357ef..30761f4 100644 --- a/src/pages/Main/Intro/Intro.tsx +++ b/src/pages/Main/Intro/Intro.tsx @@ -3,12 +3,11 @@ import logo from '../../../assets/Icons/FarmLogo1.png'; import { useState } from 'react'; import Popup from '@/components/Popup/Popup'; import useMediaQueries from '@/hooks/useMediaQueries'; -import IntroLogo from '../../../assets/Icons/IntroLogo.svg'; import { motion } from 'framer-motion'; const Intro = () => { const [isPopupOpen, setPopupOpen] = useState(false); - const { isTiny, isApp, isMobile, isTablet, isIpadPro } = useMediaQueries(); + const { isApp, isMobile, isTablet, isIpadPro } = useMediaQueries(); const fadeInUp = { hidden: { opacity: 0, y: 30 }, @@ -21,10 +20,10 @@ const Intro = () => { if (isApp) { return ( - + { ))} - {/* 2/3 지점: Description - 화면에 들어올 때 애니메이션 적용 */} - - {[ - "Farm System은 SW/AI 분야에 관심있는", - "학생들로 구성된 자율 학습 동아리로,", - "Union · 게임/영상 · 보안/웹 ·", - "사물인터넷/로봇 · 인공지능 · 빅데이터의", - "5가지 신기술 트랙을 제공하여", - "학습 경험을 통해 SW/AI 역량을 배양합니다." - ].map((text, index) => ( - - {text} - - ))} + + 🌱 Farm System이란? + + SW/AI 분야에 관심 있는 학생들로 구성된
자율 학습 동아리입니다. +
+ + + Union · 게임/영상 · 보안/웹 ·
사물인터넷/로봇 · 인공지능 · 빅데이터의
+ 5가지 신기술 트랙을 제공하여 학습 경험을 통해 SW/AI 역량을 배양합니다. +
- setPopupOpen(true)}> - 지원하기 - + setPopupOpen(true)}>지원하기
- setPopupOpen(false)} title={"지금은 모집 기간이 아닙니다."} - content={"공개 모집 예정: 2025년 2월월"} + content={"공개 모집 예정: 2025년 2월"} />
); @@ -93,26 +84,71 @@ const Intro = () => { return ( - 🌱 - - 미래를 준비하고 성장하는 여정,
- Farm System에서 함께하세요. -
- - - Farm System - + + + + 미래를 준비하고 성장하는 여정,
+ Farm System에서 함께하세요. +
+ +
+ + + + 🌱Farm System이란? + + + + SW/AI 분야에 관심있는 학생들로 구성된 자율 학습 동아리로,
+ Union · 게임/영상 · 보안/웹 · 사물인터넷/로봇 · 인공지능 · 빅데이터
+ 5가지 신기술 트랙을 제공하여 학습 경험을 통해 SW/AI 역량을 배양합니다. +
+ + + setPopupOpen(true)}> + 지원하기 + + 2025년 2월 공개 모집 예정 + + + +
+
+ + - - SW/AI 분야에 관심있는 학생들로 구성된 자율 학습 동아리로,
- Union · 게임/영상 · 보안/웹 · 사물인터넷/로봇 · 인공지능 · 빅데이터
- 5가지 신기술 트랙을 제공하여 학습 경험을 통해 SW/AI 역량을 배양합니다. -
- - setPopupOpen(true)}> 지원하기 - 2025년 2월 공개 모집 예정 - ` position: absolute; top: 0; - - //높이 문제로 정상적으로 진행 못했던 것 같아서 모바일 뷰로 처리해서 해결 했습니다. - height: ${(props) => (props.$isMobile ? "300px" : props.$isTablet ? "470px": "500px")}; - - // 배경 Gradient를 모바일에서도 보이게 하려면 이 부분 고쳐주시면 됩니다! display: flex; - - /*gap 차이로 인해 2개의 사각형 보이기 힘듦*/ - gap: ${(props) => (props.$isMobile ? "60vw" : props.$isTablet ? "300px": "80px")}; justify-content: center; align-items: center; + + /* ✅ 블러 크기 조정 */ + height: ${(props) => (props.$isMobile ? "370px" : props.$isTablet ? "500px" : "500px")}; + gap: ${(props) => (props.$isMobile ? "30vw" : props.$isTablet ? "200px" : "80px")}; `; export const GradientLeft = styled.div<{ $isMobile: boolean, $isTablet: boolean }>` - width: ${(props) => (props.$isMobile ? "240px" : "560px")}; - height: ${(props) => (props.$isMobile ? "30vh" : props.$isTablet ? "300px" : "400px")}; - /*일단 최대한 맞추어봤습니다. QA진행때 확인 다시하면 좋을 것 같습니다.*/ + width: ${(props) => (props.$isMobile ? "200px" : props.$isTablet ? "400px" : "550px")}; + height: ${(props) => (props.$isMobile ? "33vh" : props.$isTablet ? "470px" : "400px")}; background: linear-gradient( 270deg, var(--FarmSystem_Orange) 50%, var(--FarmSystem_White) 100% ); - opacity: 0.5; + opacity: 0.4; border-radius: 20px; `; export const GradientRight = styled.div<{ $isMobile: boolean, $isTablet: boolean }>` - width: ${(props) => (props.$isMobile ? "240px" : "560px")}; - height: ${(props) => (props.$isMobile ? "30vh" : props.$isTablet ? "300px" : "400px")}; - + width: ${(props) => (props.$isMobile ? "200px" : props.$isTablet ? "400px" : "550px")}; + height: ${(props) => (props.$isMobile ? "33vh" : props.$isTablet ? "470px" : "400px")}; + background: linear-gradient( 90deg, var(--FarmSystem_Green02) 50%, var(--FarmSystem_White) 100% ); - opacity: 0.5; + opacity: 0.4; border-radius: 20px; -`; +`; \ No newline at end of file diff --git a/src/pages/Main/index.styled.tsx b/src/pages/Main/index.styled.tsx index b0da590..c958120 100644 --- a/src/pages/Main/index.styled.tsx +++ b/src/pages/Main/index.styled.tsx @@ -2,7 +2,7 @@ import styled from "styled-components"; export const MainContainer = styled.div<{ $isMobile: boolean }>` position: relative; - width: 100vw; + width: 100%; min-height: 100vh; z-index: 2; overflow-x: hidden;