Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feature/#1/header] - 헤더 컴포넌트 구현 #18

Merged
merged 13 commits into from
Feb 15, 2024
Merged

Conversation

wdgWon
Copy link
Contributor

@wdgWon wdgWon commented Feb 14, 2024

#️⃣연관된 이슈

close #1

💡 핵심적으로 구현된 사항

image

➕ 그 외에 추가적으로 구현된 사항

  1. react-iconspackage.json에 추가하였습니다.
  2. theme에 헤더의 높이 변수 headerHeight를 추가하였습니다.

🤔 테스트,검증 && 고민 사항

  • npm i이 아니라 npm ci를 해야 안전하게 재설치될 것 같습니다!

@wdgWon wdgWon added Design 디자인 Feat 기능 구현 labels Feb 14, 2024
@wdgWon wdgWon added this to the 1차 스프린트 milestone Feb 14, 2024
<Center
w="100%"
position="fixed"
bg="#fff"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

white 색상 사용하실거면 bg='white'(or theme.ts에 지정해놓은 색상 변수명)으로 설정하시면 나중에 다크모드 할때 바꾸기 편할것 같습니다

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아 다크모드를 생각해야겠군요!
최대한 theme.ts에 있는 변수를 사용하겠습니다~


const NotificationPopover = ({
NotificationIconButton,
}: INotificationPopover) => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

컴포넌트 props 지정할때 컨벤션처럼 NotificationPopover+ Props 이런식으로 수정해주시면 감사하겠습니다!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

넵... 제가 IT 넣는다고 착각하고 있었는데 그걸 수정 안하고 바로 올려버렸네요;;
수정하겠습니다!

Comment on lines +45 to +63
<Box
pl="1.5rem"
alignSelf="end"
pb="2rem">
<InputGroup>
<InputRightElement>
<Icon
as={IoSearch}
w="2rem"
h="2rem"
/>
</InputRightElement>
<Input
size="lg"
variant="flushed"
placeholder="검색어를 입력하세요"
/>
</InputGroup>
</Box>
Copy link
Contributor

@whdgur5717 whdgur5717 Feb 14, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이런건 하나의 컴포넌트로 묶어도 될 것 같은데, 어떻게 생각하시나요..?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아 이건 일단 나중에 검색창 컴포넌트로 대체하려고 대충 만든거긴한데
헤더의 검색창이 뭔가 디자인이 살짝 다르다보니까
종혁님 말씀대로 따로 컴포넌트로 빼도 될 것 같네요!
일단은 검색창 나오는데로 수정하겠습니다~

Comment on lines 19 to 34
const ProfilePopover = ({ ProfileButton }: IProfilePopover) => {
return (
<Popover>
<PopoverTrigger>{ProfileButton}</PopoverTrigger>
<PopoverContent>
<PopoverArrow />
<PopoverCloseButton />
<PopoverHeader>
<Heading size="md">프로필</Heading>
</PopoverHeader>
<Divider />
<PopoverBody>이쪽에 프로필 팝오버 목록을 넣을 예정입니다</PopoverBody>
</PopoverContent>
</Popover>
)
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NotificationPopover 와 의미 차이때문에 나눠놓으신 걸까요? Popover 자체를 하나의 컴포넌트로 만들어서 children같은걸로 body를 받는 방법은 어떠신지 궁금합니다

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

요기는 미완성이긴 합니다!
알림과 프로필 popover가 서로 다른 로직을 사용하기도 하고
이후 어떤식으로 구현될지 아직 감을 못잡았다보니
일단 나눠놓고 구현한 다음 겹치는게 보이면 그걸 따로 컴포넌트로 묶어보겠습니다~


import Menu from "./components/Menu"

const Header = () => {
Copy link
Contributor

@whdgur5717 whdgur5717 Feb 14, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저는 뭔가 Header의 의미 상 들어가는 컴포넌트들을 (대부분 차크라에서 제공하는 컴포넌트를 사용했어도) 하나의 커스텀 컴포넌트로 만들어도 좋을 것 같습니다
예를 들어

<Link
          as={ReactRouterLink}
          to="/">
          <Image
            src={SidePeekLogoSVG}
            alt="side peek logo"
          />
        </Link>

이런걸 Logo 컴포넌트로 만든다던지.. 해서 Header에서는 최대한 깔끔한? return문을 유지하면 나중에 요소 추가하기도 쉽지 않을까..싶습니다

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오... 맞는 말씀이에요
의미상으로 중요한 UI들이 딱히 특별한 로직이 없더라도
가독성 차원에서 컴포넌트로 구분해 놓으면
다른 분들이 읽을 때 훨씬 수월하겠네요!
너무 좋은 조언 감사합니다~! 👍👍

Copy link
Contributor

@hellosonic-r hellosonic-r left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

동건님 구현하시느라 고생하셨습니다~
제가 보기엔 따로 코멘트 달 부분은 없어보이네요
차크라 Ui에 익숙치 않은데 동건님 코드 보면서 많은 도움 되었습니다.
input 컴포넌트는 얼른 구현해서 pr하도록 할게요~

import NotificationPopover from "./NotificationPopover"
import ProfilePopover from "./ProfilePopover"

const Menu = () => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3 :
Chakra UI에 Menu라는 컴포넌트가 존재해서(select랑 기능 비슷) 자세히는 안 봤지만 나중에 import할 때 조금 꼬일 수 있을 것 같습니다

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Chakra UI에 이미 있는거군요;;
근데 이 Menu는 헤더에서만 쓰이는 거기도 하고
혹시 Chakra Menu하고 같이 써야되면 Menu as ChakraMenu로 이름 바꿔서 사용해도 되니까
일단 이대로 머지하겠습니다!

@wdgWon wdgWon merged commit 580501d into dev Feb 15, 2024
@wdgWon wdgWon deleted the feature/#1/Header branch February 15, 2024 01:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Design 디자인 Feat 기능 구현
Projects
None yet
Development

Successfully merging this pull request may close these issues.

헤더 컴포넌트 UI
3 participants