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

Migrate Avatar, AvatarGroup component with scss #1871

Merged
merged 18 commits into from
Jan 5, 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

  • Avatar, AvatarGroup 컴포넌트를 scss 로 마이그레이션 합니다.
  • JSDoc 에 example code 를 추가합니다.

Details

  • AvatarGroup 컴포넌트의 경우 HStack이 margin이 아닌 gap으로 간격을 주고 있어서 HStack을 사용할 수 없었습니다. spacing 은 음수를 받을 수 있는데 gap으로는 음수를 처리할 수 없기 때문입니다.

Breaking change? (Yes/No)

  • Yes. 이제 Avatar컴포넌트의 interpolation속성이 없어집니다.

@yangwooseong yangwooseong added the enhancement Issues or PR related to making existing features better label Jan 2, 2024
@yangwooseong yangwooseong self-assigned this Jan 2, 2024
Copy link

changeset-bot bot commented Jan 2, 2024

🦋 Changeset detected

Latest commit: cec1b6f

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

This PR includes changesets to release 1 package
Name Type
@channel.io/bezier-react Major

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
Contributor

github-actions bot commented Jan 2, 2024

Chromatic Report

🚀 Congratulations! Your build was successful!

Copy link

codecov bot commented Jan 2, 2024

Codecov Report

Attention: 2 lines in your changes are missing coverage. Please review.

Comparison is base (0e98fa3) 87.07% compared to head (cec1b6f) 87.10%.

Files Patch % Lines
...src/components/Avatars/AvatarGroup/AvatarGroup.tsx 88.23% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##            alpha    #1871      +/-   ##
==========================================
+ Coverage   87.07%   87.10%   +0.03%     
==========================================
  Files         270      268       -2     
  Lines        3745     3739       -6     
  Branches      787      786       -1     
==========================================
- Hits         3261     3257       -4     
+ Misses        402      400       -2     
  Partials       82       82              

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

...rest
}: AvatarProps, forwardedRef: React.Ref<HTMLDivElement>) {
/**
* `Avatar` is a component for representing some profile image.
Copy link
Contributor

Choose a reason for hiding this comment

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

👍

onMouseEnter={onMouseEnterEllipsis}
onMouseLeave={onMouseLeaveEllipsis}
>
<Styled.AvatarEllipsisIcon
<AlphaSmoothCornersBox
borderRadius={`${AVATAR_BORDER_RADIUS_PERCENTAGE}%`}
backgroundColor="bgtxt-absolute-black-lightest"
Copy link
Contributor

Choose a reason for hiding this comment

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

이 PR과 다른 컨텍스트인데, 여길 보니 LayoutProps.bgColor도 일관성을 위해 backgroundColor로 바꾸는 게 나으려나 싶네요 🤔

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

동의합니다!

style={{
...marginStyle.style,
...style,
'--b-avatar-group-spacing': px(spacing),
'--b-avatar-group-size': px(size),
Copy link
Contributor

Choose a reason for hiding this comment

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

향후엔 AvatarSize도 number에서 string 타입으로 바꾸면 좋겠네요. 지금은 (컴파일 에러만 무시하면) number를 그대로 받아서 스타일링할 수 있다보니 size={100 as AvatatSize} 같은 식으로 타입 단언해서 강제로 사이즈를 정해진 규격 외로 사용하는 케이스들이 데스크에 몇 있습니다...ㅋㅋ

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

enum -> string literal 로 바꿀 때 string ('20', '24', 등등) 으로 바꾸면 될거같아요!

className={showBorder ? 'bordered' : undefined}
className={classNames(
styles.AvatarImage,
showBorder && 'bordered',
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
showBorder && 'bordered',
showBorder && styles.bordered

css module이 적용되어있어서 일반 문자열로하면 스타일 적용이 안됩니다..!

height: 100%;
outline: none;

&.bordered[data-state="enabled"] {
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
&.bordered[data-state="enabled"] {
&:where(.bordered:where([data-state="enabled"])) {

큰 의미는 없겠지만 이렇게도 가능하겠네요.

@@ -0,0 +1,84 @@
@layer components {
.Avatar {
all: unset;
Copy link
Contributor

Choose a reason for hiding this comment

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

이제 reset css에 들어있을거라 제거해도 괜찮을 거 같은데, 확인해봐주실 수 있나요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

아 reset layer가 있었군요. 그런데 reset layer가 전역 스타일을 변경하는 것 같은데 이거는 문제가 안될까요? 스토리북같은 사용처에서 라디오 버튼이 안보이는 사이드 이펙트가 있습니다. the-new-css-reset이 광범위하게 스타일을 변경하다 보니 베지어에서 사용하기는 어려운 패키지 같네요. 그리고 프론트에서도 베지어를 사용하는 것을 생각해보면 이렇게 조건없이 reset을 주는 게 맞는지 의문이 듭니다. 어떻게 생각하시나요?

image

Copy link
Contributor

Choose a reason for hiding this comment

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

html 요소의 스타일을 재설정하는 작업이 대개 프로젝트별로 반복되기때문에 이번에 베지어에 reset css를 포함해서 프로젝트별 스타일 중복을 줄이고자 했어요. 기본 html 요소를 사용하는 케이스가 거의 없는데, 스토리북에서 기본 html radio를 스타일링 없이 사용하고 있는지 몰랐네요...

reset css 도입을 결정할 때는 거의 모든 케이스에서 문제가 되지 않을거라고 판단했어요. 스토리북 케이스를 예시로 들자면 실제 베지어를 사용하는 곳에선 html radio 대신 RadioGroup, Radio 컴포넌트를 사용하게 될 거니까요.

좀 더 개선해보자면 radix theme의 reset이나 panda css의 reset처럼 옵셔널로 켜고 킬 수 있게 만들 수도 있을 거 같습니다. 아니면 reset css 범위를 베지어 컴포넌트에 영향이 안가는 정도로만 좁혀서 직접 작성하는 방법도 있을 거 같아요.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

베지어를 프론트에서 사용한다고 생각하면 스토리북처럼 고객사 사이트의 스타일링 오염이 있을것이라 생각했는데, 제가 잘못 생각한 걸까요? 저도 radix처럼 옵셔널하게 만드는 게 좋을 것 같네요.

Copy link
Contributor

Choose a reason for hiding this comment

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

제가 이전에 확인해본바로는 고객사 스타일에 적용되는 부분은 베지어의 글로벌 스타일을 적용하지 않았어요. 이건 다시 프론트 팀이랑 더 자세히 확인해보고 확실하게 문제가 있다면 옵셔널하게 개선하는 게 좋아보입니다 👍
(혹시 몰라 참고차 FYI @dinohan @heech1013 @danivelop)

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

reset layer와 별개로 아바타에서 unset이 불필요하기 때문에 지우겠습니다.

Comment on lines 117 to 119
const avatarStyle = useMemo(() => ({
'--b-avatar-status-gap': px(size >= AvatarSize.Size72 ? 4 : -2),
} as React.CSSProperties), [size])
Copy link
Contributor

Choose a reason for hiding this comment

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

이 스타일도 클래스로 미리 정의해둘 수 있을 거 같아요. (AvatarSize가 string이 된다면 동작하지 않게 될 코드이기도 함)

className={classNames(
styles.AvatarImage,
showBorder && styles.bordered,
)}
disabled={!smoothCorners}
borderRadius={`${AVATAR_BORDER_RADIUS_PERCENTAGE}%`}
Copy link
Contributor

Choose a reason for hiding this comment

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

const token = useToken()
token.global.radius['radius-42-p']

이 PR 컨텍스트랑 약간 다른데, 이제 이 값으로 바꿀 수도 있습니다

)
}

if (ellipsisType === AvatarGroupEllipsisType.Count) {
return (
<React.Fragment key="ellipsis">
{ AvatarElement }
<Styled.AvatarEllipsisCountWrapper
<div
style={{
'--b-avatar-group-ellipsis-mr': px(getProperEllipsisCountMarginRight(size)),
Copy link
Contributor

Choose a reason for hiding this comment

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

이 값도 size variant에 기반하므로 미리 클래스로 정의해두면 좋을 거 같아요

sungik-choi added a commit that referenced this pull request Jan 4, 2024
<!--
  How to write a good PR title:
- Follow [the Conventional Commits
specification](https://www.conventionalcommits.org/en/v1.0.0/).
  - Give as much context as necessary and as little as possible
  - Prefix it with [WIP] while it’s a work in progress
-->

## Self Checklist

- [x] I wrote a PR title in **English** and added an appropriate
**label** to the PR.
- [x] I wrote the commit message in **English** and to follow [**the
Conventional Commits
specification**](https://www.conventionalcommits.org/en/v1.0.0/).
- [x] I [added the
**changeset**](https://github.com/changesets/changesets/blob/main/docs/adding-a-changeset.md)
about the changes that needed to be released. (or didn't have to)
- [x] I wrote or updated **documentation** related to the changes. (or
didn't have to)
- [x] I wrote or updated **tests** related to the changes. (or didn't
have to)
- [x] I tested the changes in various browsers. (or didn't have to)
  - Windows: Chrome, Edge, (Optional) Firefox
  - macOS: Chrome, Edge, Safari, (Optional) Firefox

## Summary
<!-- Please brief explanation of the changes made -->

Refactoring common props related names

## Details
<!-- Please elaborate description of the changes -->

- LayoutProps의 `bgColor` -> `backgroundColor` : 라이브러리 전반 일관성을 위해 변경했습니다
- `getLayout/MarginStyle` -> `Styles` : style, className을 가지고 있는 객체를
반환하는 함수입니다. 단일 style 객체를 반환하는 것과 혼동을 줄이기 위해 복수형으로 이름을 변경했습니다.

### Breaking change? (Yes/No)
<!-- If Yes, please describe the impact and migration path for users -->

No

## References
<!-- Please list any other resources or points the reviewer should be
aware of -->

-
#1871
@@ -0,0 +1,5 @@
import { useToken } from '~/src/providers/ThemeProvider'

export function useGetAvatarBorderRadius() {
Copy link
Contributor

Choose a reason for hiding this comment

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

  • useAvatarRadiusToken 은 어떤가요?
  • 함수명과 파일명이 같아야 할 거 같아요!

display: flex;
align-items: center;
height: var(--b-avatar-group-size);
color: var(--txt-black-dark);
Copy link
Contributor

Choose a reason for hiding this comment

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

마이너: 지금보니까.. Text의 color로 이동할 수 있을 거 같아요 😂

@yangwooseong yangwooseong merged commit 829a994 into channel-io:alpha Jan 5, 2024
11 checks passed
@yangwooseong yangwooseong deleted the feat/sass/avatar branch January 5, 2024 01:01
sungik-choi pushed a commit that referenced this pull request Jan 12, 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 alpha, this PR
will be updated.

⚠️⚠️⚠️⚠️⚠️⚠️

`alpha` is currently in **pre mode** so this branch has prereleases
rather than normal releases. If you want to exit prereleases, run
`changeset pre exit` on `alpha`.

⚠️⚠️⚠️⚠️⚠️⚠️

# Releases
## @channel.io/bezier-react@2.0.0-alpha.5

### Major Changes

- **Breaking Changes: Property updates in `Avatar` component**
([#1871](#1871)) by
@yangwooseong

No longer support `interpolation` property. Replace any usage of
`interpolation` property with appropriate `style` or `className`
implementations.

- **Breaking Changes: Property updates in `SegmentedControl` component**
([#1866](#1866)) by
@sungik-choi

No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.

- **Breaking Changes: Property updates in `Tag` and `Badge` component**
([#1872](#1872)) by
@yangwooseong

No longer support `interpolation` property. Replace any usage of
`interpolation` property with appropriate `style` or `className`
implementations.

- **Breaking Changes: `AlphaCenter` component is now `Center` component.
Property updates in `Center` component**
([#1854](#1854)) by
@sungik-choi

- No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.
    -   Now supports margin props, layout props and `display` prop.

- **Breaking Changes: Property updates in `Emoji` component**
([#1881](#1881)) by
@yangwooseong

No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.

- Add new margin properties to `Icon` component
([#1863](#1863)) by
@yangwooseong

    -   `margin`
    -   `marginHorizontal`
    -   `marginVertical`

- **Breaking Changes: Property updates in `Modal`-related components**
([#1903](#1903)) by
@sungik-choi

    -   No longer supports `as` and `interpolation` props.
- The type of `zIndex` property is changed to a z-index token. (e.g.
`"modal"`)

- **Breaking Changes: Property updates in `Banner` component**
([#1891](#1891)) by
@sungik-choi

No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.

    **Other changes in `Banner` component**

    -   now supports HTML attributes.
    -   now supports style props.

- **Breaking Changes: Property updates in `Switch` component**
([#1885](#1885)) by
@yangwooseong

No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.

- **Breaking Changes: Property updates in `Slider` component**
([#1883](#1883)) by
@yangwooseong

- No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.
- `dir` type is narrowed from `string | undefined` to `ltr | rtl |
undefined`

- **Breaking Changes: Property updates in `Button` component**
([#1882](#1882)) by
@sungik-choi

- No longer support `interpolation` property. Replace any usage of
`interpolation` property with appropriate `style` or `className`
implementations.
- `ButtonSize` and `ButtonColorVariant` enums have been updated to use
kebab case.

- **Breaking Change: No longer supports `smoothCorners` mixin. Use
`AlphaSmoothCornersBox` components instead.**
([#1892](#1892)) by
@sungik-choi

    ```tsx
    // Before
    const Box = styled.div`
      ${smoothCorners({
        borderRadius: 10,
        shadow: '0 5px 15px 0 var(--shdw-large)',
        shadowBlur: 15,
        backgroundColor: 'var(--bgtxt-absolute-white-dark)',
        hasBackgroundImage: true,
      })}
    `

    <Box>...</Box>

    // After
    <AlphaSmoothCornersBox
      borderRadius={10}
      shadow={{
        offsetX: 0,
        offsetY: 5,
        blurRadius: 15,
        spreadRadius: 0,
        color: 'shdw-large',
      }}
      backgroundColor="bgtxt-absolute-white-dark"
      backgroundImage="..."
    >...</AlphaSmoothCornersBox>
    ```

- **Breaking Change: Removal of `ListMenuTitle` Component**
([#1900](#1900)) by
@yangwooseong

    -   It was no longer being managed or utilized by our designers.
- If you are currently using `ListMenuTitle` in your application, please
replace it with the `SectionLabel` component for similar functionality.

### Minor Changes

- `ButtonGroup` now supports HTML attributes
([#1890](#1890)) by
@sungik-choi

## @channel.io/bezier-codemod@0.5.0-alpha.3

### Minor Changes

- Changes in `v2-remove-alpha-from-alpha-stack` transform
([#1894](#1894)) by
@yangwooseong

    -   It is renamed as `v2-remove-alpha-from-alpha-components`.
    -   It covers `AlphaCenter` as well.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
sungik-choi pushed a commit that referenced this pull request Mar 26, 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/bezier-react@2.0.0

### Major Changes

- **Breaking Changes: Property updates in `Avatar` component**
([#1871](#1871)) by
@yangwooseong

No longer support `interpolation` property. Replace any usage of
`interpolation` property with appropriate `style` or `className`
implementations.

- **Breaking changes: Remove TagBadge-related types**
([#2114](#2114)) by
@sungik-choi

    -   Remove `color` prop of `TagProps` and `TagBadgeBgColorPreset`.
- Remove `TagBadgeSize`. Please change it to `TagSize` and `BadgeSize`.
- Remove `TagBadgeVariant`. Please change it to `TagVariant` and
`BadgeVariant`.

- **Breaking Changes: Property updates in `SegmentedControl` component**
([#1866](#1866)) by
@sungik-choi

No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.

- **Breaking Changes: Property updates in `ListItem` component**
([#1925](#1925)) by
@sungik-choi

- No longer support `interpolation` property. Replace any usage of
`interpolation` property with appropriate `style` or `className`
implementations.
- No longer support `iconStyle`, `iconClassName`, `iconInterpolation`,
`contentStyle`, `contentClassName` and `contentInterpolation`. This
decision was made to reduce excessive flexibility in the interface.
- No longer support `leftIcon` property. Removed for consistency with
other component interfaces. Replace it to `leftContent`.
- No longer support `name` property. The second argument (name) of
`onClick` is also removed. If you need an identifier, combine functions
outside of the component.
- No longer support `hide`, `nested`, `optionKey` and
`disableIconActive` property. Removed because it is a legacy property.
Replace `hide` property with conditional rendering.
- The size changes according to the `ListItemSize`. This is a change to
unify the design. Please change it like below.
        -   `ListItemSize.S` -> `ListItemSize.XS`
        -   `ListItemSize.M` -> `ListItemSize.S`
        -   `ListItemSize.L` -> `ListItemSize.M`
        -   `ListItemSize.XL` -> `ListItemSize.L`

    **Minor Changes:**

    -   Fix incorrect text size for `XL`(now `L`) size.

- **Breaking Changes: Property updates in `Overlay` component**
([#1949](#1949)) by
@sungik-choi

- No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.
- No longer support `containerInterpolation` property. Replace any usage
of `containerInterpolation` property with appropriate `containerStyle`
or `containerClassName` implementations.
    -   No longer support `wrapperTestId` property.

- **Breaking Changes: Remove `TooltipProvider` and Property updates in
`Tooltip` component**
([#1974](#1974)) by
@sungik-choi

- No longer support `TooltipProvider` and `TooltipProviderProps`.
`Tooltip` component was implemented via radix-ui's Tooltip, which
required the use of a `TooltipProvider`, which caused all subcomponents
to be re-rendered and caused a performance hit. We decided that the
ability to share hover delay time between `Tooltip` components via
`TooltipProvider` was not a feature we needed, even with the performance
penalty. Also, by providing `TooltipProvider` built-in to `AppProvider`,
we were unnecessarily importing modules from our library usage that
didn't require `Tooltip`.
    -   `Tooltip` component now contains a `TooltipProvider` inside it.

    **Minor Changes:**

    -   Change the default value of `delayShow` prop from `300` to `0`.

- **Breaking Changes: Property updates in `Tag` and `Badge` component**
([#1872](#1872)) by
@yangwooseong

No longer support `interpolation` property. Replace any usage of
`interpolation` property with appropriate `style` or `className`
implementations.

- **Breaking Changes: Property updates in `CheckableAvatar` component**
([#1921](#1921)) by
@sungik-choi

No longer support `interpolation` property. Replace any usage of
`interpolation` property with appropriate `style` or `className`
implementations.

- **Breaking Changes: `AlphaSmoothCornersBox` component is now
`SmoothCornersBox` component.**
([#2079](#2079)) by
@sungik-choi

- **Breaking Changes: Property updates in `LegacyTooltip` component**
([#1945](#1945)) by
@sungik-choi

- No longer support `interpolation` property. Replace any usage of
`interpolation` property with appropriate `style` or `className`
implementations.
- No longer support `contentInterpolation` property. Replace any usage
of `contentInterpolation` property with appropriate `contentStyle` or
`contentClassName` implementations.
- No longer support `contentWrapperInterpolation` property. Replace any
usage of `contentWrapperInterpolation` property with appropriate
`contentWrapperStyle` or `contentWrapperClassName` implementations.

- **Breaking Changes: `AlphaCenter` component is now `Center` component.
Property updates in `Center` component**
([#1854](#1854)) by
@sungik-choi

- No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.
    -   Now supports margin props, layout props and `display` prop.

- **Breaking Changes: Property updates in `FormLabel`, `FormHelperText`,
and `FormErrorMessage` component**
([#1893](#1893)) by
@yangwooseong

No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.

- **Breaking Changes: Property updates in `NavGroup` and `NavItem`
component**
([#1931](#1931)) by
@sungik-choi

`leftIcon` renamed to `leftContent`. Changed to improve consistency of
interface property names across libraries.

- **Breaking Changes: The enum type that the component receives as props
is changed to a string (or number) literal type**
([#2059](#2059)) by
@yangwooseong

    The properties that change are:

    -   `AvatarGroupEllipsisType`
    -   `IconSize`
    -   `LegacyTooltipPosition`
    -   `ModalTitleSize`
    -   `OverlayPosition`
    -   `ProgressBarSize`, `ProgressBarVariant`
    -   `SpinnerSize`
    -   `SwitchSize`
    -   `TagBadgeSize`, `TagBadgeVariant`
    -   `TextAreaHeight`
    -   `TextFieldSize`, `TextFieldVariant`
    -   `ToastPlacement`, `ToastAppearance`, `ToastPreset`
    -   `TooltipPosition`

Also, `SpinnerThickness` props of `Spinner` is not supported any more.

When changed to string literal type, it is changed to the kebab-cased
value of enum. e.g. `TooltipPosition.TopCenter` -> `top-center`. Among
the above enums, `TextAreaHeight` is converted to number literal type.
e.g. `TextAreaHeight.Row16` -> `16`, and `IconSize.normal` is converted
to `m` for consistency

- **Breaking Changes: Property updates in `FormControl`, `Select`, and
`TextField` component**
([#1948](#1948)) by
@yangwooseong

- `FormControl` component no longer supports `leftLabelWrapperHeight`
props.
- `FormControl` component now supports `size` props, which is passed as
context to the child component such as `TextField` and `Select` and
specified as the size property.
- The size property of `Select` and `TextField` component changes from
enum to string literal union type. Also, `SelectSize` and
`TextFieldSize` enum are deprecated.

- **Breaking changes: Remove `testId` and related properties**
([#1971](#1971)) by
@sungik-choi

No longer supports `testId` and related properties(e.g.
`wrapperTestId`). `testId` is a property used internally by the library
for testing with testing-library (`getByTestId`). We don't see a need to
expose this as a public API, so we remove it.

If you were using it, please replace it with the `data-testid` property.
See <https://testing-library.com/docs/queries/bytestid/>.

- **Breaking Changes: Property updates in `FormControl` component**
([#1935](#1935)) by
@yangwooseong

No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.

- **Breaking Changes: Property updates in `Select` component**
([#1913](#1913)) by
@sungik-choi

- No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.
- No longer support `dropdownInterpolation` property. Replace any usage
of `dropdownInterpolation` property with appropriate `dropdownStyle` or
`dropdownClassName` implementations.
- The type of `zIndex` property is changed to a z-index token. (e.g.
`"modal"`)

- **Breaking Changes: Reorganizing `SectionLabel` component**
([#1936](#1936)) by
@sungik-choi

`SectionLabel` is a complex component that can be used both in the form
of an accordion and as a simple heading. To better meet the needs of
both, we've changed the internal implementation of the component.

We've also made changes to make styling overrides as predictable as they
are for other components. The style override property, which was
unnecessarily open, is now removed.

- Remove the internal div wrapper. `style`, `className` properties are
now injected into the component instead of the old `wrapperStyle`,
`wrapperClassName`.
- No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.
- No longer support additional style properties of `wrapper`,
`contentWrapper`, `leftWrapper` and `rightWrapper`.
- No longer support `divider` property. Replace it by adding `Divider`
component to the component's before.
- The side content property is changed. It is no longer possible to
override `iconColor`.
- When injecting `onClick` handler, the root element now behaves as a
`button` element. This change is to better support keyboard focus
control.

- **Breaking Changes: Property updates in `Emoji` component**
([#1881](#1881)) by
@yangwooseong

No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.

- **Breaking Changes: Property updates in `Radio` component**
([#1923](#1923)) by
@sungik-choi

No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.

- **Breaking Changes: Deprecated modules for internal use**
([#1963](#1963)) by
@sungik-choi

    -   No longer provides `useEventHandler` and `useMergeRefs` hook.
- No longer provides `useId` hook. Use `useId` hook of `react` instead.
- No longer provides `getRootElement` hook. Use `useWindow` hook
instead.
    -   No longer provides `StyleUtils` and `StringUtils` utils.

- **Breaking Changes: Property updates in `ProgressBar` component**
([#1947](#1947)) by
@sungik-choi

- No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.
- No longer support `activeStyle`, `activeClassName` and
`activeInterpolation` property.
    -   No longer support `activeTestId` property.

- **Breaking Changes: Property updates in `Tabs`-related components**
([#1960](#1960)) by
@sungik-choi

No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.

- **Breaking Changes: Property updates in `Text` component**
([#1820](#1820)) by
@sungik-choi

`typo` prop in the `Text` component has been changed to accept only
string literals in order to simplify the API and improve the
predictability of text styling, particularly in the context of the
removal of `styled-components` from `bezier-react`, which has led to the
unavailability of CSS Interpolation.

    **Migration Instructions:**

Use
[`v2-text-component-interface`](https://github.com/channel-io/bezier-react/tree/alpha/packages/bezier-codemod#change-interface-of-text)
transformer from `bezier-codemod` for automated migration.

- **Breaking Changes: Reorganizing `KeyValueListItem` component**
([#1941](#1941)) by
@sungik-choi

    -   **Renamed to `KeyValueItem`.**
- - No longer support `interpolation` property. Replace any usage of
`interpolation` property with appropriate `style` or `className`
implementations.
- No longer support `valueWrapperStyle`, `valueWrapperClassName`,
`valueWrapperInterpolation`, `keyWrapperStyle`, `keyWrapperClassName`
and `keyWrapperInterpolation`. This decision was made to reduce
excessive flexibility in the interface.
- No longer support `AdditionalColorProps` and `show` property of
ItemAction.
- The icon inside ItemAction is now implemented through `Button`
component.
- The Value Container will now always have 100% of the parent's width.

- Add new margin properties to `Icon` component
([#1863](#1863)) by
@yangwooseong

    -   `margin`
    -   `marginHorizontal`
    -   `marginVertical`

- **Breaking Changes: Property updates in `NavItem` and `NavGroup`
component**
([#1905](#1905)) by
@yangwooseong

No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.

- **Breaking Changes: The enum type that the component receives as props
is changed to a string literal type**
([#2059](#2059)) by
@yangwooseong

    The properties that change are:

    -   `AvatarSize`
    -   `BannerVariant`
    -   `ButtonColorVariant`, `ButtonStyleVariant`, `ButtonSize`
    -   `EmojiSize`
    -   `SegmentedControlSize`
    -   `TabSize`
    -   `ListItemVariant`, `ListItemSize`
    -   `StatusType`, `StatusSize`

When changed to string literal type, it is changed to the kebab-cased
value of enum. e.g. `ButtonStyleVariant.MonoChromeDark` ->
`monochrome-dark`, `StatusType.OnlineCrescent` -> `online-crescent`

- **Breaking Changes: Property updates in `Modal`-related components**
([#1903](#1903)) by
@sungik-choi

    -   No longer supports `as` and `interpolation` props.
- The type of `zIndex` property is changed to a z-index token. (e.g.
`"modal"`)

- **Breaking Change: Removal of `LegacySegmentedControl` Component**
([#1786](#1786)) by
@sungik-choi

We have removed the `LegacySegmentedControl` component from our library.
This change follows its deprecation in `next-v1.204`.

    **Reasons for Removal:**

    -   To enhance web accessibility and improve keyboard navigation.
- To align with our goals of design modernization and consistent user
experience.

    **Impact:**

`LegacySegmentedControl` component is no longer available and cannot be
used in your projects. Replace all instances of `LegacySegmentedControl`
with `SegmentedControl` component.

- **Breaking Changes: Property updates in `LegacyStack` components**
([#1944](#1944)) by
@sungik-choi

- No longer support `interpolation` property. Replace any usage of
`interpolation` property with appropriate `style` or `className`
implementations.
    -   No longer export `AxisAlignment` type.

- **Breaking Changes: Property updates in `TextField` component**
([#1904](#1904)) by
@sungik-choi

- No longer support `interpolation`-related properties. Replace any
usage of `interpolation` -related properties with appropriate `***style`
or `***className` implementations.
- No longer support `inputStyle` and `inputClassName` properties.
Replace any usage of `inputStyle` and `inputClassName` with appropriate
`style` or `className` implementations.
    -   Change the value of `TextFieldVariant` enum value to string.

- **Breaking Changes: Remove the default offset(`GNB_WIDTH`) in
`Toast`**
([#2117](#2117)) by
@sungik-choi

Remove the style because it was dependent on a specific application. Use
`{ left: 68 }` instead.

- **Breaking Changes: Property updates in `Banner` component**
([#1891](#1891)) by
@sungik-choi

No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.

    **Other changes in `Banner` component**

    -   now supports HTML attributes.
    -   now supports style props.

- **Breaking Change: Removal of `LegacyRadio` Component**
([#1943](#1943)) by
@sungik-choi

- `LegacyRadio` component has been removed from the library. Please use
`RadioGroup` and `Radio` component instead.
- Now if `Radio` has no label, its size is reduced by an indicator.

- **Breaking Changes: Property updates in `Checkbox` component**
([#1918](#1918)) by
@sungik-choi

No longer support `interpolation` property. Replace any usage of
`interpolation` property with appropriate `style` or `className`
implementations.

- **Breaking Changes: Property updates in `Switch` component**
([#1885](#1885)) by
@yangwooseong

No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.

- Export the css style sheet for the new design system.
([#1492](#1492)) by
@sungik-choi

- **Breaking Changes: Reorganizing `OutlineItem` component**
([#1930](#1930)) by
@sungik-choi

`OutlineItem` component was originally designed as a component to draw a
tree-like view, _but it was not used as intended in production_. We
simplified the component's responsibilities by removing unused
properties while retaining the component's ability to apply indentation
to subcomponents.

- No longer support `paddingLeft` property. **By default, 6px of left
padding has been added.** If you need to make changes, override the
style.
- No longer support `interpolation` property. Replace any usage of
`interpolation` property with appropriate `style` or `className`
implementations.
- No longer support `iconStyle`, `iconClassName`, `iconInterpolation`,
`contentStyle`, `contentClassName` and `contentInterpolation`. This
decision was made to reduce excessive flexibility in the interface.
- No longer support `leftIcon` property. Removed for consistency with
other component interfaces. Replace it to `leftContent`.
    -   No longer support `leftIconColor` and `leftIconTestId` property.
- No longer support `name` property. The second argument (name) of
`onClick` is also removed. If you need an identifier, combine functions
outside of the component.
- No longer support `hide`, `optionKey` and `disableIconActive`
property. Replace `hide` property with conditional rendering.
- No longer support `onOpen`, `onClickArrow`, `selectedOutlineItemIndex`
and `onChangeOption` property.

- **Breaking Changes: Property updates in `Slider` component**
([#1883](#1883)) by
@yangwooseong

- No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.
- `dir` type is narrowed from `string | undefined` to `ltr | rtl |
undefined`

- **Breaking Changes: Property updates in `Button` component**
([#1882](#1882)) by
@sungik-choi

- No longer support `interpolation` property. Replace any usage of
`interpolation` property with appropriate `style` or `className`
implementations.
- `ButtonSize` and `ButtonColorVariant` enums have been updated to use
kebab case.

- **Breaking Change: No longer supports `smoothCorners` mixin. Use
`AlphaSmoothCornersBox` components instead.**
([#1892](#1892)) by
@sungik-choi

    ```tsx
    // Before
    const Box = styled.div`
      ${smoothCorners({
        borderRadius: 10,
        shadow: '0 5px 15px 0 var(--shdw-large)',
        shadowBlur: 15,
        backgroundColor: 'var(--bgtxt-absolute-white-dark)',
        hasBackgroundImage: true,
      })}
    `

    <Box>...</Box>

    // After
    <AlphaSmoothCornersBox
      borderRadius={10}
      shadow={{
        offsetX: 0,
        offsetY: 5,
        blurRadius: 15,
        spreadRadius: 0,
        color: 'shdw-large',
      }}
      backgroundColor="bgtxt-absolute-white-dark"
      backgroundImage="..."
    >...</AlphaSmoothCornersBox>
    ```

- **Breaking Changes: `Toast`-related modules**
([#1950](#1950)) by
@sungik-choi

- No longer support `actionContent` and `onClick` properties in
`ToastOptions`.
- Value type of `zIndex` property in `ToastOptions` is changed from
`number` to `ZIndex` token.
    -   No longer export `ToastIconColor` enum.

- **Breaking Changes: Property updates in `TextArea` component**
([#1914](#1914)) by
@sungik-choi

- No longer support `as` and `interpolation` property. Replace any usage
of `interpolation` property with appropriate `style` or `className`
implementations.
- No longer support `wrapperStyle`, `wrapperClassName` and
`wrapperInterpolation` property. It was never properly implemented
before, and the Wrapper element inside was also removed.

- **Breaking Changes: Deprecate support for `styled-components` related
modules**
([#1962](#1962)) by
@sungik-choi

- No longer support legacy foundation modules. Use the `useToken` hook
and components to replace it
        -   `LightFoundation` and `DarkFoundation`
        -   `Spacing`
        -   `ev1`, `ev2`, `ev3`, `ev4`, `ev5` and `ev6`
- `createThemes`, `Theme`, `SemanticNames`, `LightTheme` and `DarkTheme`
        -   `TransitionDuration` and `Transition`
        -   `Border`
- `Typography`, `TypoAbsoluteNumber`, `LineHeightAbsoluteNumber` and
`TypographyType`
- `absoluteCenter`, `disableAutoMinimum`, `hideScrollbars` and
`ellipsis`
        -   `ThemeVarsAdditionalType` and `ThemeVars`
        -   `GlobalStyle`
        -   `Foundation`
        -   `GlobalStyleProp`
- `createGlobalStyle`, `styled`, `css`, `FoundationProvider`,
`useFoundation`, `keyframes`, `StyleSheetManager` and `ServerStyleSheet`
- No longer support `BezierProvider`. Use the `AppProvider` instead
- No longer support `gap` and `touchableHover` mixins. Please implement
and use your own

    ```tsx
    function gap(spacing: number): InjectedInterpolation {
      return css`
        gap: ${spacing}px;

        @supports not (gap: ${spacing}px) {
          margin-top: ${-spacing}px;
          margin-left: ${-spacing}px;

          > * {
            margin-top: ${spacing}px;
            margin-left: ${spacing}px;
          }
        }
      `;
    }

    function touchableHover(
      interpolation: InjectedInterpolation,
    ): InjectedInterpolation {
      return css`
        @media (hover: hover) {
          &:hover {
            ${interpolation}
          }
        }

        @media (hover: none) {
          &:active {
            ${interpolation}
          }
        }
      `;
    }
    ```

- No longer support `inputTextStyle`, `inputPlaceholderStyle`,
`inputWrapperStyle`, `focusedInputWrapperStyle` and
`erroredInputWrapperStyle`. Please migrate using
`@channel.io/bezier-codemod`'s `v2-interpolation-to-css-variable`
transformer.

- **Breaking Changes: `AlphaStack` component has been changed to a
`Stack` component, and `Stack` component has been changed to
`LegacyStack` component.**
([#1837](#1837)) by
@sungik-choi

Changes to remove the dependency of `Stack` and `StackItem` to allow
stack layouts to be configured without additional DOM elements. And
improved the existing `AlphaStack` to support more Flex layout related
properties like reverse, wrap, and more align options, etc. See
StackProps for more information.

We also added new `HStack` and `VStack` components, which are shorthand
components that fix the direction prop of `AlphaStack`. As mentioned
above, the existing components become `LegacyHStack`, `LegacyVStack`.

The layout implemented by `StackItem` can be partially replaced by the
Layout component's `grow`, `shrink` common properties and margin common
properties. Note that the `align`, `justify` (align-self, justify-self
in CSS flex) properties provided by `StackItem` are not provided by the
Layout component.

    ```jsx
    /* AS-IS */
    return (
      <Stack
        direction="horizontal"
        spacing={8}
        style={{ width: 300, height: 50 }}
      >
        <StackItem grow shrink weight={1} />
        <StackItem weight={0} size={10} marginBefore={20}>
          <Stack direction="vertical" />
        </StackItem>
      </Stack>
    );

    /* TO-BE */
    return (
      <Stack direction="horizontal" spacing={8} width={300} height={50}>
        <Box grow={1} shrink={1} />
        <Stack direction="vertical" shrink={0} width={10} ml={12} />
      </Stack>
    );
    ```

The changes also apply to other components that use `Stack` internally,
and there are a few breaking changes.

- `RadioGroup`, `ButtonGroup`, `FormGroup` no longer support `as` prop.

- **Breaking Change: Removal of `ListMenuTitle` Component**
([#1900](#1900)) by
@yangwooseong

    -   It was no longer being managed or utilized by our designers.
- If you are currently using `ListMenuTitle` in your application, please
replace it with the `SectionLabel` component for similar functionality.

### Minor Changes

- Implement multi theme feature based on data attributes
([#1756](#1756)) by
@sungik-choi

- Move `@channel.io/bezier-tokens` from dev depdency to dependency
([#1985](#1985)) by
@sungik-choi

- Add the `TooltipPrimitive` component, which is the same as the
[`Tooltip` component in
radix-ui](https://www.radix-ui.com/primitives/docs/components/tooltip).
You can use it by importing it from the `/alpha` path.
([#2049](#2049)) by
@sungik-choi

    ```tsx
    import {
      TooltipPrimitive,
      TooltipPrimitiveArrow,
      TooltipPrimitiveContent,
      TooltipPrimitivePortal,
      TooltipPrimitiveProvider,
      TooltipPrimitiveTrigger,
    } from "@channel.io/bezier-react/alpha";
    ```

- When you pass a value of number type to the dimension-related
properties of margin prop and layout prop, they implicitly add px units
as a suffix. See:
<https://react.dev/reference/react-dom/components/common#common>
([#1823](#1823)) by
@sungik-choi

- Add `Box` component. `Box` component is responsible for the primitive
layout and provides easy access to the design tokens in the design
system ([#1785](#1785))
by @sungik-choi

    ```tsx
<Box width="100px" height="100px" p="6px" m="6px"
bgColor="bg-black-light" />
    ```

- Fixes style inheritance issues by explicitly giving CSS custom
properties an initial value
([#1846](#1846)) by
@sungik-choi

- Apply bezier-tokens to bezier-react's style sheet and fix some invalid
css selector
([#1495](#1495)) by
@sungik-choi

- Add the `DialogPrimitive` component, which is the same as the
[`Dialog` component in
radix-ui](https://www.radix-ui.com/primitives/docs/components/dialog).
You can use it by importing it from the `/alpha` path.
([#2049](#2049)) by
@sungik-choi

    ```tsx
    import {
      DialogPrimitive,
      DialogPrimitiveClose,
      DialogPrimitiveContent,
      DialogPrimitiveDescription,
      DialogPrimitiveOverlay,
      DialogPrimitivePortal,
      DialogPrimitiveTitle,
      DialogPrimitiveTrigger,
    } from "@channel.io/bezier-react/alpha";
    ```

- `ButtonGroup` now supports HTML attributes
([#1890](#1890)) by
@sungik-choi

- `Banner` will now render content even if the `content` prop is not a
string. The same applies to link-related props.
([#1972](#1972)) by
@sungik-choi

- Rename `AlphaAppProvider` to `AppProvider`
([#1834](#1834)) by
@sungik-choi

- Rename the `style.css` file to `styles.css`
([#1791](#1791)) by
@sungik-choi

- Add `align` prop to `Text` component. This prop is used to set
horizontal alignment of text
([#1820](#1820)) by
@sungik-choi

    ```tsx
    <Text align="left" />
    <Text align="center" />
    <Text align="right" />
    ```

- Remove `borderStyle` prop from Layout props
([#1848](#1848)) by
@sungik-choi

- Add `useRootElement` hook. It is only available to `WindowProvider`
children, and provides easy access to the root element of window context
value. ([#1981](#1981))
by @sungik-choi

    ```tsx
    const { window, document, rootElement } = useWindow();
    // Same as useWindow().rootElement
    const rootElement = useRootElement();
    ```

### Patch Changes

- Fixes an issue with color inheritance across components.
([#2009](#2009)) by
@sungik-choi

- Add missing default margin styles of `LegacyStackItem`
([#2004](#2004)) by
@sungik-choi

- Fixes issue with `ModalBody`, `ModalFooter` not applying styling
correctly when wrapped in other elements.
([#2017](#2017)) by
@sungik-choi

- Add `overflow: hidden` to `ListItem` component
([#2013](#2013)) by
@yangwooseong

- Fix invalid `aria-modal` value in Modal Content.
([#2052](#2052)) by
@sungik-choi

- Fix `TabAction` typography style for size M.
([#2035](#2035)) by
@sungik-choi

- Minify the CSS output
([#1791](#1791)) by
@sungik-choi

- Update background color of `TextField`'s secondary variant.
([#2016](#2016)) by
@sungik-choi

- Mute the error of `smoothCornerScript` when called twice.
([#2010](#2010)) by
@chaejunlee

- Now exports the `tokens` object from `@channel.io/bezier-tokens`.
([#1992](#1992)) by
@sungik-choi

- Adds icon and typo size for avatar size `"72"`, which were missing
from `AvatarGroup`.
([#2071](#2071)) by
@sungik-choi

- Add missing `overflow: hidden` style to item wrapper of `KeyValueItem`
component.
([#2036](#2036)) by
@sungik-choi

- Fixes `Overlay` not closing in other windows.
([#2037](#2037)) by
@sungik-choi

- Fixes a bug where onHide is called when clicking inside the overlay,
causing the overlay to close.
([#1977](#1977)) by
@yangwooseong

- Fix invalid style migrations of `Tabs` component.
([#2014](#2014)) by
@sungik-choi

- Add missing spreading props to `ThemeProvider` and related components.
([#1986](#1986)) by
@sungik-choi

- Fix `ListItem`'s left icon color specificity issue.
([#2018](#2018)) by
@sungik-choi

- Fix `Badge` component style issue
([#2068](#2068)) by
@yangwooseong

- Fixes an issue where multi line truncated in `Text` was not being
applied. ([#1994](#1994))
by @sungik-choi

-   Updated dependencies
    -   @channel.io/bezier-tokens@0.1.0

## @channel.io/bezier-codemod@0.5.0

### Minor Changes

- Changes in `v2-text-component-interface` codemod
([#1932](#1932)) by
@yangwooseong
Previously, both the component name and the name of the property were
checked, but now only the name of the component property is checked.

- Add codemod for Stack component
([#1836](#1836)) by
@yangwooseong

- Add more various cases to `v2-enum-member-to-string-literal`
([#2059](#2059)) by
@yangwooseong

- Fix typo in `v2-z-index-interpolation-to-css-variable` codemod. It now
transforms `${ZIndex.Float}` enum to `var(--z-index-floating)`, not
`var(--z-index-float)`.
([#1924](#1924)) by
@yangwooseong

- Add codemod to transform interface of `Text` component
([#1849](#1849)) by
@yangwooseong

- Enhancement in `v2-foundation-to-css-variable-transition` codemod
([#1917](#1917)) by
@yangwooseong

- It will properly remove import statement if it converts code where
`TransitionDuration` is used.

- Changes in `v2-remove-alpha-from-alpha-stack` transform
([#1894](#1894)) by
@yangwooseong

    -   It is renamed as `v2-remove-alpha-from-alpha-components`.
    -   It covers `AlphaCenter` as well.

- Add `v2-foundation-to-css-variable-spacing` codemod to convert the
foundation's spacing variable to pixels
([#1907](#1907)) by
@yangwooseong

    This transforms

    ```tsx
    import { styled } from "@channel.io/bezier-react";

    export const Wrapper = styled.div`
      padding: ${({ foundation }) => foundation?.spacing.s5};
    `;
    ```

    into

    ```tsx
    import { styled } from "@channel.io/bezier-react";

    export const Wrapper = styled.div`
      padding: 12px;
    `;
    ```

- Changes in `v2-**-interpolation-to-css-variable` transform.
([#1928](#1928)) by
@yangwooseong

- it is renamed to `v2-interpolation-to-css-variable-**`. e.g.
`v2-interpolation-to-css-varable-input`,
`v2-interpolation-to-css-variable-typography`, and so on
- it provides integrated transform named
`v2-interpolation-to-css-variable` that handles all interpolation
transform

- Enhance `import-styled-from-styled-component` codemod to cover other
APIs from `styled-components`
([#1852](#1852)) by
@yangwooseong

- Add `Typography` transform logic to interpolation codemod
([#1841](#1841)) by
@yangwooseong

- Add v2 prefix to codemods related to major version 2
([#1844](#1844)) by
@yangwooseong

- Add codemod for z-index interpolation and enum
([#1845](#1845)) by
@yangwooseong

- Add more various cases to `v2-enum-member-to-string-literal`. Now it
covers following enums.
([#2059](#2059)) by
@yangwooseong

    -   `AvatarGroupEllipsisType`
    -   `IconSize`
    -   `LegacyTooltipPosition`
    -   `ModalTitleSize`
    -   `OverlayPosition`
    -   `ProgressBarSize`, `ProgressBarVariant`
    -   `SpinnerSize`
    -   `SwitchSize`
    -   `TagBadgeSize`, `TagBadgeVariant`
    -   `TextAreaHeight`
    -   `TextFieldSize`, `TextFieldVariant`
    -   `ToastPlacement`, `ToastAppearance`, `ToastPreset`
    -   `TooltipPosition`

- Add `inputPlaceholderStyle` migration logic to
`v2-input-interpolation-to-css-variable` codemod
([#1926](#1926)) by
@yangwooseong

- Add transform functions to help to migrate foundation to css variable
generated by `@channel.io/bezier-tokens` package. They cover theme,
transition, elevation, rounding, and border of foundation
([#1781](#1781)) by
@yangwooseong

- Added a codemod to switch the library for importing 'styled' object
from @channel.io/bezier-react to styled-components
([#1789](#1789)) by
@yangwooseong

- Add codemod for mixin interpolation
([#1787](#1787)) by
@yangwooseong

### Patch Changes

- Fix bug in `v2-import-from-bezier-to-styled-components` codemod when
there are only named imports as following:
([#1987](#1987)) by
@yangwooseong

    ```tsx
    // As-is
    import { css } from "@channel.io/bezier-react";

    // To-be
    import { css } from "styled-components";
    ```

- Fix `hasNamedImportInImportDeclaration` util to check all named
imports ([#2060](#2060))
by @yangwooseong

## @channel.io/bezier-tokens@0.1.0

### Minor Changes

- Apply deep freeze to the `tokens` object.
([#1992](#1992)) by
@sungik-choi

- Add the missing `bg-header-float` semantic color token
([#1842](#1842)) by
@sungik-choi

- Add composition tokens, such as box-shadow
([#1769](#1769)) by
@sungik-choi

- Now serving one combined styles.css file. This is a breaking change
for anyone who was importing the individual CSS files. You will need to
update your import to `@channel.io/bezier-tokens/css/styles.css`.
([#1769](#1769)) by
@sungik-choi

- Add z-index and opacity tokens
([#1766](#1766)) by
@sungik-choi

- Remove invalid radius tokens
([#1934](#1934)) by
@sungik-choi

    -   `radius-10`
    -   `radius-14`
    -   `radius-100-p`

- Fix invalid letter spacing token values
([#1821](#1821)) by
@sungik-choi

- First release
([#1685](#1685)) by
@sungik-choi

- Add categories by token to the JavaScript build file
([#1766](#1766)) by
@sungik-choi

- Remove unused tokens and add missing unit to radius tokens
([#1752](#1752)) by
@sungik-choi

### Patch Changes

- Remove duplicate styles in styles.css
([#1779](#1779)) by
@sungik-choi

## bezier-figma-plugin@0.5.0

### Minor Changes

- Upgrade to use @channel.io/bezier-react@2.0.0
([#2001](#2001)) by
@sungik-choi

### Patch Changes

- Enhance icon extract logic by catching error
([#2073](#2073)) by
@yangwooseong

-   Updated dependencies
    -   @channel.io/bezier-react@2.0.0

## @channel.io/bezier-vscode@0.1.0

### Minor Changes

- Create a package to support autocomplete for Bezier Design Tokens
([#2091](#2091)) by
@yangwooseong

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
enhancement Issues or PR related to making existing features better
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

None yet

2 participants