...


여기에 필요한 속성들은 path & element🌫🐱🏍
element : path 경로로 왔을 때 어떠한 컴포넌트를 렌더링 할건지👀
지금은 태그가 총 3개이지만
Edit Notes 클릭해서 newTag를 추가하면 추가되고
Exercise 태그 클릭하면 tag/exercise로 이동하고
/404 경로로 이동하면 ErrorPage 컴포넌트로 이동하게 하고
div 태그를 Routes 태그들과 Navbar 컴포넌트 감싸주고
이렇게 처리하는 것
이렇게 되어있음
index.css로 가서 스타일 다 지워주면 이렇게 뜸
App.jsx에 와서 app이랑 app__container 라고 해놨는데
src 폴더 안에 App.css 파일 만들어서
App.css import 해주고
.app 에다 display: flex 주니까 이렇게 정렬 됨
.app_container에 _flex: 1을 주면 전체를 차지하게 됨

import styled from "styled-components";
export const Container = styled.div``;
export const NotesContainer = styled.div``;
export const EmptyMsgBox = styled.div``;
export const ButtonFill = styled.button``;
export const ButtonOutline = styled.button``;
export const NotesIconBox = styled.span``;
menu 부터 할 것
반응형으로 볼 때 화면이 클 때는 다 보여주는데
화면이 작아질 땐 사이드바가 안 보임
menu에 있는 isOpen이 true인지 false인지에 따라 달라지게 하면 됨😎
createSlice 한 담에 이름은 menu이고, initialState( 초기 값 )지정하기
isOpen 첨엔 사이드바 보이지 않게 false로 줌

모달 초기 값은 모달이 첨엔 안 열려있으니까 4개의 모달 모두 false로 지정
여긴 mainNotes, archiveNotes, trashNotes, editNote 라고 되어있음


configureStore 이용해서 Sub Reducers(개별 리듀서)를 모은
Root Reducer를 만들고, 이를 기반으로 Store Object 생성함🙆♀️
🔹 흐름 정리 🔹
1️⃣ 여러 개의 Sub Reducers 만든다.
2️⃣ combineReducers로 Sub Reducers를 하나의 Root Reducer로 합친다.
3️⃣ configureStore를 사용해 Store를 만든다.
configureStore 하고
서브 리듀서들을 넣기 위해 가져와야 하니까 import 각각 해주고 넣어주면 됨👍
🥏이것도 다른 곳에서 사용해야하니까 export로 내보내주기


현재는 이렇게 되어있음 Nav바 부터 만들어보자


이부분이
여기에 들어올거임
🎨Container 스타일 컴포넌트 만들어줌

여기에 Notes나 Coding이나 Quotes 이런식으로 현재 어디인지를 나타내줄 것
우선 이렇게 하드코딩 해준 담에 여기에다 할건
이 버튼이 필요함
ButtonFill은 src>styles>styles.jsx 파일에 만들어놨었음✔
👩🎨이렇게 되어있으니 스타일링을 해주자❗









StyledNav 안에 nav__menu( 햄버거바 아이콘 )가 있는거니까
display: none; 으로 햄버거바 아이콘 안 보이게 우선 이렇게 함






햄버거바가 svg라 이걸 위한 스타일링도 해줄거임

Container는 Page랑 ➕버튼 부분임
flex 1하면 전체 다 사용하는 것
Page랑 ➕버튼 사이 간격 벌어짐

950px 보다 작을 때 magin-top: 7px 적용됨


dispatch 하고 여기서 어떤거를 action을 넣어줘야하는데
이부분을 만드는건 당연히 menuSlice 🪓
isOpen이 false일 땐 true, true일 땐 false로 토글링 해주는 것✔
이름을 toggleMenu 라고 할거고 여기 로직을 어떻게 짜야할까❓
isOpen 이걸 가져오려면 state에 있는 거니까



지금은 false인데
➕버튼 클릭할 때니까 onClick🖱


viewEditTagsModal & viewAddTagsModal은 좀 다르게 할거임🙆♀️

이걸 사용할 때 어떻게 사용하냐면 당연히 dispatch를 먼저 할 것
dispatch 해주고 toggleTagsModal을 이용해줄거임
이부분은 payload, payload는 action 안에 있으니까




🥏export로 3개의 모달을 내보내주고 Navbar.jsx 파일로 이동🌫🐱🏍
➕버튼 누를 때 viewCreateNoteModal을 true로 만들어야 하는거니까
dispatch(toggleCreateNoteModal(true)) 해주면 됨
className='nav__btn' 넣어줌
➕버튼 클릭하면 viewCreateNoteModal이 true 바뀌는 걸 확인 할 수 있음import styled from "styled-components";
export const ButtonFill = styled.button`
padding: 6px 20px;
border-radius: 5px;
cursor: pointer;
box-shadow: 0px 1px 1px 1px rgba(0, 0, 0, 0.1);
transition: 250ms background-color ease-in-out;
// + 부분
span {
font-weight: 400;
// 글자 크기를 반응형으로 조정하는 방법 중 하나
font-size: clamp(15px 3.5vw, 1.2rem);
}
background-color: var(--primary-color);
border: 1px solid var(--primary-color);
&:hover {
background-color: rgb(253, 239, 195, 0.5);
}
// 화면이 600px 이하일 때 적용
@media (max-width: 600px) {
padding: 6px 12px;
}
`;
transition : 요소의 변화( ex - 색상 변경 )를 부드럽게 만들고
ms ( 밀리초 ) : 전환 속도 설정
ease-in-out : 시작과 끝을 부드럽게 하는 전환 속도 조절 방식
clamp( ) 함수 : 최소값, 최적값, 최대값 설정해서
화면 크기에 따라 폰트 크기를 자동으로 조절해줌

👉 background-color: var(--primary-color);
👉 hover 했을 때 background-color: rgb(253, 239, 195, 0.5); 색상 변경 됨...