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

Add AlphaIconButton component #2200

Merged
merged 8 commits into from
May 13, 2024

Conversation

yangwooseong
Copy link
Collaborator

Self Checklist

  • I wrote a PR title in English and added an appropriate label to the PR.
  • I wrote the commit message in English and to follow the Conventional Commits specification.
  • I added the changeset about the changes that needed to be released. (or didn't have to)
  • I wrote or updated documentation related to the changes. (or didn't have to)
  • I wrote or updated tests related to the changes. (or didn't have to)
  • I tested the changes in various browsers. (or didn't have to)
    • Windows: Chrome, Edge, (Optional) Firefox
    • macOS: Chrome, Edge, Safari, (Optional) Firefox

Related Issue

Summary

  • 아이콘만 있는 AlphaIconButton 컴포넌트를 구현합니다.

Details

  • 스타일은 버튼 컴포넌트에서 거의 그대로 가져왔습니다.Floating Icon Button #2180 까지는 복붙으로 구현한 후에 후속작업에서 버튼 컴포넌트의 스타일을 background-color, color, hover effect 별로 믹스인으로 분리하고 이를 재사용하는 형태로 리팩토링할 예정입니다.
  • 아이콘만 있는 경우 접근성을 위해 적절히 라벨을 주는 것이 필요합니다. 이를 위해서 (i) hidden text 를 주는 방법 (ii) aria-label 을 주는 방법 등이 있는데, hidden text 를 주면 문제가 발생한 경우가 있기도 하고 aria-label 을 주는 것이 간편해보여서 이 방법으로 하려고 합니다. (#). 다만 aria-label을 required로 해야할 지는 의문입니다. 다른 라이브러리를 찾아보니 라이브러리마다 다른 부분이기도 하고, 베지어에서는 접근성 관련 속성을 required로 한 적이 없어서 optional이 좋겠다는 생각입니다.
  • IconButtonStyleVariant, IconButtonColor 타입을 export 할 필요는 없는 것 같아서 하지 않았습니다. 이전에는 enum으로 사용하고 있어서 export 해야만 했는데 현재는 그렇지 않아서 IconButtonProps['variant'] 처럼 사용하는 것이 가능합니다. 이거는 V2 컴포넌트 전반적으로 컨벤션이 맞춰지면 좋을 것 같아서 의견 부탁드립니다. (@sungik-choi)

Breaking change? (Yes/No)

  • No

References

@yangwooseong yangwooseong added the feat:component Issue or PR related to a new component label May 8, 2024
@yangwooseong yangwooseong self-assigned this May 8, 2024
Copy link

changeset-bot bot commented May 8, 2024

🦋 Changeset detected

Latest commit: a790bc0

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
@channel.io/bezier-react Patch
bezier-figma-plugin Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Copy link

channeltalk bot commented May 8, 2024

Copy link
Contributor

github-actions bot commented May 8, 2024

Chromatic Report

🚀 Congratulations! Your build was successful!

Copy link

codecov bot commented May 8, 2024

Codecov Report

Attention: Patch coverage is 0% with 17 lines in your changes are missing coverage. Please review.

Project coverage is 85.10%. Comparing base (9bb4810) to head (a790bc0).

Files Patch % Lines
...eact/src/components/AlphaIconButton/IconButton.tsx 0.00% 17 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2200      +/-   ##
==========================================
- Coverage   85.61%   85.10%   -0.51%     
==========================================
  Files         132      133       +1     
  Lines        2843     2860      +17     
  Branches      854      864      +10     
==========================================
  Hits         2434     2434              
- Misses        380      397      +17     
  Partials       29       29              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Contributor

@sungik-choi sungik-choi left a comment

Choose a reason for hiding this comment

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

아이콘만 있는 경우 접근성을 위해 적절히 라벨을 주는 것이 필요합니다. 이를 위해서 (i) hidden text 를 주는 방법 (ii) aria-label 을 주는 방법 등이 있는데, hidden text 를 주면 문제가 발생한 경우가 있기도 하고 aria-label 을 주는 것이 간편해보여서 이 방법으로 하려고 합니다. (#1310). 다만 aria-label을 required로 해야할 지는 의문입니다. 다른 라이브러리를 찾아보니 라이브러리마다 다른 부분이기도 하고, 베지어에서는 접근성 관련 속성을 required로 한 적이 없어서 optional이 좋겠다는 생각입니다.

초기 구현은 optional이 좋아보이고, 이후 필요성이 생기면 required로 변경해도 좋을 거 같아요.

IconButtonStyleVariant, IconButtonColor 타입을 export 할 필요는 없는 것 같아서 하지 않았습니다. 이전에는 enum으로 사용하고 있어서 export 해야만 했는데 현재는 그렇지 않아서 IconButtonProps['variant'] 처럼 사용하는 것이 가능합니다. 이거는 V2 컴포넌트 전반적으로 컨벤션이 맞춰지면 좋을 것 같아서 의견 부탁드립니다. (@sungik-choi)

이건 비단 enum 뿐만 아니라 모든 type에 대한 내용이네요. 저는 사용처에서 재사용한다면 편하게 사용할 수 있을 거 같은 type만 export하면 될 거 같은데, 이를 구분하는 것도 품이 들 거 같아서.. 작업해주신 것처럼 따로 export 안하는 쪽으로 통일해버리는 게 일관적일 거 같아요 👍

@yangwooseong yangwooseong merged commit 75a4f37 into channel-io:main May 13, 2024
7 of 9 checks passed
@yangwooseong yangwooseong deleted the WEB-902/icon-button branch May 13, 2024 06:51
sungik-choi pushed a commit that referenced this pull request May 16, 2024
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @channel.io/[email protected]

### Patch Changes

- Add `AlphaIconButton` component.
([#2200](#2200)) by
@yangwooseong

- Replace `aria-label` of non-interactive elements
([#2217](#2217)) by
@Dogdriip

-   Updated dependencies
    -   @channel.io/[email protected]

## @channel.io/[email protected]

### Patch Changes

- Add missing `fg-{color}-dark` alpha version color tokens.
([#2212](#2212)) by
@sungik-choi

## [email protected]

### Patch Changes

-   Updated dependencies
    -   @channel.io/[email protected]

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feat:component Issue or PR related to a new component
Projects
No open projects
Archived in project
Development

Successfully merging this pull request may close these issues.

Icon Button
2 participants