npx create-react-app focus-challenge --template typescript
폴더구조
src
-
components
-
Header
-
index.tsx
styles.tsx
화면 넓이 전체를 감싸고 있는 큰 header태그 안에 구성 요소들이 들어있는 덜 큰 div가 있고 그 안에 요소들이 오밀조밀하게 들어있는 구조를 생각했다.
대략 이런 느낌...?
CLASS101 사이트에서 개발자 도구를 켜서 확인해보니 실제로 이런 구조로 되어있는것 같았다.
그래서 margin
, padding
, font-size
같은 디테일은 사이트에서 차용해왔다.
헤더를 작업하면서 가장 어려웠던 부분은 로고였다.
로고가 주어지지 않아서 어떻게 작업해야 하나 고민을 좀 했었는데 기본 폰트랑 크게 달라 보이지 않아서 그냥 h4
태그로 로고를 작성했다.
클래스와 스토어 부분은 nth-of-type
으로 첫번째 요소의 색상을 다르게 만들어주었다. 그런데 생각해보니 이 부분은 수정이 필요해보인다.
나중에는 그냥 글자 색상을 props
로 받아서 변경시킬수 있도록 만들 예정이다.
(+ 그냥 h4
요소들은 전부 styled-components
로 컴포넌트화 시켜서 props
에 따라 바꿔줘야겠다)
입력창과 돋보기 아이콘은 CLASS101 UI 디자인 시스템에서 가져왔다.
Input
SearchIcon
또 CLASS101 UI 디자인 시스템을 좀 뒤져보니까 각종 컨트롤러들을 한 폼으로 묶어주는 FormGroup
이란 것이 있어서 입력창과 아이콘은 FormGroup
으로 묶어주었다.
마지막으로 navigation을 구현하고 Header는 마무리!
storybook
을 혼자서 세팅해봤는데 생각보다 어렵지 않았고 storybook
의 장점을 확실하게 알았다.