diff --git a/src/App.tsx b/src/App.tsx index bfb46606..d393bac0 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -3,6 +3,7 @@ import Header from "./components/common/Header"; import Footer from "./components/common/Footer"; import Home from "./pages/Home"; import GlobalStyle from "./styles/globalStyle"; +import SideBar from "./components/common/SideBar"; const App = () => { return ( @@ -13,6 +14,7 @@ const App = () => { } /> + ); }; diff --git a/src/assets/fonts/Font.css b/src/assets/fonts/Font.css new file mode 100644 index 00000000..3abf8521 --- /dev/null +++ b/src/assets/fonts/Font.css @@ -0,0 +1,39 @@ +@font-face { + font-family: "NotoSansKR-Bold"; + src: url("./NotoSans/NotoSansKR-Bold.ttf"); +} + +@font-face { + font-family: "NotoSansKR-Medium"; + src: url("./NotoSans/NotoSansKR-Medium.ttf"); +} + +@font-face { + font-family: "NotoSansKR-Regular"; + src: url("./NotoSans/NotoSansKR-Regular.ttf"); +} + +@font-face { + font-family: "NotoSansKR-Light"; + src: url("./NotoSans/NotoSansKR-Light.ttf"); +} + +@font-face { + font-family: "SUITE-Bold"; + src: url("./SUITE/SUITE-Bold.ttf"); +} + +@font-face { + font-family: "SUITE-Medium"; + src: url("./SUITE/SUITE-Medium.ttf"); +} + +@font-face { + font-family: "SUITE-Regular"; + src: url("./SUITE/SUITE-Regular.ttf"); +} + +@font-face { + font-family: "SUITE-Light"; + src: url("./SUITE/SUITE-Light.ttf"); +} \ No newline at end of file diff --git a/src/assets/icons/sidebar_icon/bottom_black_icon.png b/src/assets/icons/sidebar_icon/bottom_black_icon.png index 6ab84db9..89d0c8c6 100644 Binary files a/src/assets/icons/sidebar_icon/bottom_black_icon.png and b/src/assets/icons/sidebar_icon/bottom_black_icon.png differ diff --git a/src/assets/icons/sidebar_icon/bottom_blue_icon.png b/src/assets/icons/sidebar_icon/bottom_blue_icon.png index 3d307cf9..3c888068 100644 Binary files a/src/assets/icons/sidebar_icon/bottom_blue_icon.png and b/src/assets/icons/sidebar_icon/bottom_blue_icon.png differ diff --git a/src/assets/icons/sidebar_icon/project_black_icon.png b/src/assets/icons/sidebar_icon/project_black_icon.png new file mode 100644 index 00000000..b00bc739 Binary files /dev/null and b/src/assets/icons/sidebar_icon/project_black_icon.png differ diff --git a/src/assets/icons/sidebar_icon/project_blue_icon.png b/src/assets/icons/sidebar_icon/project_blue_icon.png new file mode 100644 index 00000000..c287d34f Binary files /dev/null and b/src/assets/icons/sidebar_icon/project_blue_icon.png differ diff --git a/src/components/common/SideBar.tsx b/src/components/common/SideBar.tsx new file mode 100644 index 00000000..49dfc71b --- /dev/null +++ b/src/components/common/SideBar.tsx @@ -0,0 +1,188 @@ +import "../../assets/fonts/Font.css"; +import { useState } from "react"; +import styled from "styled-components"; +import companyBlack from "../../assets/icons/sidebar_icon/company_black_icon.png"; +import companyBlue from "../../assets/icons/sidebar_icon/company_blue_icon.png"; +import bottomBlack from "../../assets/icons/sidebar_icon/bottom_black_icon.png"; +import bottomBlue from "../../assets/icons/sidebar_icon/bottom_blue_icon.png"; +import projectBlack from "../../assets/icons/sidebar_icon/project_black_icon.png"; +import projectBlue from "../../assets/icons/sidebar_icon/project_blue_icon.png"; +import onbordingBlack from "../../assets/icons/sidebar_icon/onboarding_black_icon.png"; +import onbordingBlue from "../../assets/icons/sidebar_icon/onboarding_blue_icon.png"; + +const SideBarBox = styled.div` + width: 400px; + height: 90vh; + margin-top: 15px; + font-family: "NotoSansKR-Regular"; +`; + +const SideBarItem = styled.div` + display: flex; + flex-direction: column; +`; + +const Section = styled.p` + display: flex; + align-items: center; +`; + +const SideBarMainTextBlue = styled.a` + height: 4rem; + background-color: #e6f7ff; + padding-left: 2.5rem; + border: none; + border-radius: 0 15px 15px 0; + cursor: pointer; + display: flex; + align-items: center; + justify-content: space-between; +`; + +const SideBarMainTextBlack = styled.a` + height: 4rem; + background-color: #fff; + padding-left: 2.5rem; + border-radius: 0 15px 15px 0; + cursor: pointer; + display: flex; + align-items: center; + justify-content: space-between; + + &:hover { + background-color: #f6f7f9; + } +`; + +const MainTextBlue = styled.span` + font-size: 21px; + margin-left: 20px; + color: #087ea4; + font-family: "NotoSansKR-Medium"; +`; + +const MainTextBlack = styled.span` + font-size: 21px; + margin-left: 20px; + font-family: "NotoSansKR-Medium"; +`; + +const Text = styled.a` + height: 3.5rem; + font-size: 18px; + padding-left: 5.5rem; + border-radius: 0 15px 15px 0; + cursor: pointer; + display: flex; + align-items: center; + + &:hover { + background-color: #f6f7f9; + } +`; + +const CompanyIcon = styled.img` + width: 1.4rem; + height: 1.4rem; +`; + +const BottomIcon = styled.img` + width: 1.7rem; + height: 1.7rem; + margin-right: 20px; + transform: rotate(-90deg); + transition: transform 0.3s ease; + &.rotate { + transform: rotate(0deg); + } +`; + +const WikiSideBar = () => { + const [CompanyTextVisible, setCompanyTextVisible] = useState(false); + const [ProjectTextVisible, setProjectTextVisible] = useState(false); + const [OnboardingTextVisible, setOnboardingTextVisible] = useState(false); + const [CompanyIconRotation, setCompanyIconRotation] = useState(false); + const [ProjectIconRotation, setProjectIconRotation] = useState(false); + const [OnboardingIconRotation, setOnboardingIconRotation] = useState(false); + + const ToggleCompanyText = () => { + setCompanyTextVisible(!CompanyTextVisible); + setCompanyIconRotation(!CompanyIconRotation); + }; + + const ToggleProjectText = () => { + setProjectTextVisible(!ProjectTextVisible); + setProjectIconRotation(!ProjectIconRotation); + }; + + const ToggleOnboardingText = () => { + setOnboardingTextVisible(!OnboardingTextVisible); + setOnboardingIconRotation(!OnboardingIconRotation); + }; + + return ( + + + +
+ + 회사생활 +
+ +
+ {CompanyTextVisible && ( + <> + 회사내규 + 팀소개 + 조직도 + + )} +
+ + +
+ + 프로젝트 +
+ +
+ {ProjectTextVisible && ( + <> + 진행중인 프로젝트 + 예정된 프로젝트 + 완료된 프로젝트 + + )} +
+ + +
+ + 온보딩 +
+ +
+ {OnboardingTextVisible && ( + <> + 신입사원 필독서 + 온보딩 주제 + + )} +
+
+ ); +}; + +export default WikiSideBar;