@channel.io/bezier-react 2.1.0 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/AlphaButton/Button.js +3 -3
- package/dist/cjs/components/AlphaButton/Button.js.map +1 -1
- package/dist/cjs/components/AlphaButton/Button.module.scss.js +1 -1
- package/dist/cjs/components/AlphaFloatingButton/FloatingButton.js +3 -3
- package/dist/cjs/components/AlphaFloatingButton/FloatingButton.js.map +1 -1
- package/dist/cjs/components/AlphaFloatingButton/FloatingButton.module.scss.js +1 -1
- package/dist/cjs/components/AlphaFloatingIconButton/FloatingIconButton.js +3 -3
- package/dist/cjs/components/AlphaFloatingIconButton/FloatingIconButton.js.map +1 -1
- package/dist/cjs/components/AlphaFloatingIconButton/FloatingIconButton.module.scss.js +1 -1
- package/dist/cjs/components/AlphaIconButton/IconButton.js +3 -3
- package/dist/cjs/components/AlphaIconButton/IconButton.js.map +1 -1
- package/dist/cjs/components/AlphaIconButton/IconButton.module.scss.js +1 -1
- package/dist/cjs/components/{AlphaSpinner/Spinner.js → AlphaLoader/Loader.js} +10 -10
- package/dist/cjs/components/AlphaLoader/Loader.js.map +1 -0
- package/dist/cjs/components/AlphaLoader/Loader.module.scss.js +8 -0
- package/dist/cjs/components/AlphaLoader/Loader.module.scss.js.map +1 -0
- package/dist/cjs/components/AlphaToggleButton/ToggleButton.js +3 -3
- package/dist/cjs/components/AlphaToggleButton/ToggleButton.js.map +1 -1
- package/dist/cjs/components/AlphaToggleButton/ToggleButton.module.scss.js +1 -1
- package/dist/cjs/components/TextField/TextField.js +1 -1
- package/dist/cjs/components/TextField/TextField.js.map +1 -1
- package/dist/cjs/components/TextField/TextField.module.scss.js +1 -1
- package/dist/cjs/hooks/useMergeRefs.js +1 -0
- package/dist/cjs/hooks/useMergeRefs.js.map +1 -1
- package/dist/cjs/index.js +4 -4
- package/dist/cjs/node_modules/tslib/tslib.es6.js.map +1 -1
- package/dist/cjs/styles.css +1 -1
- package/dist/esm/components/AlphaButton/Button.mjs +3 -3
- package/dist/esm/components/AlphaButton/Button.mjs.map +1 -1
- package/dist/esm/components/AlphaButton/Button.module.scss.mjs +1 -1
- package/dist/esm/components/AlphaFloatingButton/FloatingButton.mjs +3 -3
- package/dist/esm/components/AlphaFloatingButton/FloatingButton.mjs.map +1 -1
- package/dist/esm/components/AlphaFloatingButton/FloatingButton.module.scss.mjs +1 -1
- package/dist/esm/components/AlphaFloatingIconButton/FloatingIconButton.mjs +3 -3
- package/dist/esm/components/AlphaFloatingIconButton/FloatingIconButton.mjs.map +1 -1
- package/dist/esm/components/AlphaFloatingIconButton/FloatingIconButton.module.scss.mjs +1 -1
- package/dist/esm/components/AlphaIconButton/IconButton.mjs +3 -3
- package/dist/esm/components/AlphaIconButton/IconButton.mjs.map +1 -1
- package/dist/esm/components/AlphaIconButton/IconButton.module.scss.mjs +1 -1
- package/dist/esm/components/{AlphaSpinner/Spinner.mjs → AlphaLoader/Loader.mjs} +7 -7
- package/dist/esm/components/AlphaLoader/Loader.mjs.map +1 -0
- package/dist/esm/components/AlphaLoader/Loader.module.scss.mjs +4 -0
- package/dist/esm/components/AlphaLoader/Loader.module.scss.mjs.map +1 -0
- package/dist/esm/components/AlphaToggleButton/ToggleButton.mjs +3 -3
- package/dist/esm/components/AlphaToggleButton/ToggleButton.mjs.map +1 -1
- package/dist/esm/components/AlphaToggleButton/ToggleButton.module.scss.mjs +1 -1
- package/dist/esm/components/TextField/TextField.mjs +1 -1
- package/dist/esm/components/TextField/TextField.mjs.map +1 -1
- package/dist/esm/components/TextField/TextField.module.scss.mjs +1 -1
- package/dist/esm/hooks/useMergeRefs.mjs +1 -0
- package/dist/esm/hooks/useMergeRefs.mjs.map +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/node_modules/tslib/tslib.es6.mjs.map +1 -1
- package/dist/esm/styles.css +1 -1
- package/dist/types/components/AlphaAvatarGroup/AvatarGroup.types.d.ts.map +1 -1
- package/dist/types/components/AlphaLoader/Loader.d.ts +5 -0
- package/dist/types/components/AlphaLoader/Loader.d.ts.map +1 -0
- package/dist/types/components/AlphaLoader/Loader.types.d.ts +13 -0
- package/dist/types/components/AlphaLoader/Loader.types.d.ts.map +1 -0
- package/dist/types/components/AlphaLoader/index.d.ts +3 -0
- package/dist/types/components/AlphaLoader/index.d.ts.map +1 -0
- package/dist/types/components/Icon/Icon.types.d.ts +2 -2
- package/dist/types/components/Icon/Icon.types.d.ts.map +1 -1
- package/dist/types/hooks/useMergeRefs.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +17 -14
- package/src/components/AlphaAvatarGroup/AvatarGroup.types.ts +1 -4
- package/src/components/AlphaButton/Button.module.scss +1 -1
- package/src/components/AlphaButton/Button.tsx +3 -3
- package/src/components/AlphaDialogPrimitive/AlphaDialogPrimitive.stories.tsx +1 -0
- package/src/components/AlphaFloatingButton/FloatingButton.module.scss +1 -1
- package/src/components/AlphaFloatingButton/FloatingButton.tsx +3 -3
- package/src/components/AlphaFloatingIconButton/FloatingIconButton.module.scss +1 -1
- package/src/components/AlphaFloatingIconButton/FloatingIconButton.tsx +3 -3
- package/src/components/AlphaIconButton/IconButton.module.scss +1 -1
- package/src/components/AlphaIconButton/IconButton.tsx +3 -3
- package/src/components/AlphaLoader/AlphaLoader.stories.tsx +23 -0
- package/src/components/AlphaLoader/Loader.module.scss +75 -0
- package/src/components/AlphaLoader/Loader.test.tsx +34 -0
- package/src/components/AlphaLoader/Loader.tsx +47 -0
- package/src/components/{AlphaSpinner/Spinner.types.ts → AlphaLoader/Loader.types.ts} +6 -6
- package/src/components/AlphaLoader/index.ts +2 -0
- package/src/components/AlphaToggleButton/ToggleButton.module.scss +1 -1
- package/src/components/AlphaToggleButton/ToggleButton.tsx +3 -3
- package/src/components/AlphaTooltipPrimitive/AlphaTooltipPrimitive.stories.tsx +1 -0
- package/src/components/Banner/Banner.mdx +14 -28
- package/src/components/Banner/Banner.stories.tsx +1 -0
- package/src/components/Button/Button.mdx +19 -37
- package/src/components/Button/Button.stories.tsx +1 -0
- package/src/components/ButtonGroup/ButtonGroup.mdx +4 -7
- package/src/components/ButtonGroup/ButtonGroup.stories.tsx +2 -0
- package/src/components/Icon/Icon.mdx +7 -7
- package/src/components/Icon/Icon.stories.tsx +2 -0
- package/src/components/Icon/Icon.types.ts +2 -2
- package/src/components/LegacyStack/LegacyStack.mdx +16 -29
- package/src/components/LegacyStack/LegacyStack.stories.tsx +1 -0
- package/src/components/ProgressBar/ProgressBar.mdx +8 -14
- package/src/components/ProgressBar/ProgressBar.stories.tsx +2 -0
- package/src/components/Slider/Slider.stories.tsx +1 -1
- package/src/components/TextField/TextField.module.scss +2 -1
- package/src/components/TextField/TextField.test.tsx +16 -1
- package/src/components/TextField/TextField.tsx +1 -1
- package/src/hooks/useMergeRefs.ts +1 -0
- package/src/index.ts +1 -1
- package/dist/cjs/components/AlphaSpinner/Spinner.js.map +0 -1
- package/dist/cjs/components/AlphaSpinner/Spinner.module.scss.js +0 -8
- package/dist/cjs/components/AlphaSpinner/Spinner.module.scss.js.map +0 -1
- package/dist/esm/components/AlphaSpinner/Spinner.mjs.map +0 -1
- package/dist/esm/components/AlphaSpinner/Spinner.module.scss.mjs +0 -4
- package/dist/esm/components/AlphaSpinner/Spinner.module.scss.mjs.map +0 -1
- package/dist/types/components/AlphaSpinner/Spinner.d.ts +0 -5
- package/dist/types/components/AlphaSpinner/Spinner.d.ts.map +0 -1
- package/dist/types/components/AlphaSpinner/Spinner.types.d.ts +0 -13
- package/dist/types/components/AlphaSpinner/Spinner.types.d.ts.map +0 -1
- package/dist/types/components/AlphaSpinner/index.d.ts +0 -3
- package/dist/types/components/AlphaSpinner/index.d.ts.map +0 -1
- package/src/components/AlphaSpinner/AlphaSpinner.stories.tsx +0 -23
- package/src/components/AlphaSpinner/Spinner.module.scss +0 -75
- package/src/components/AlphaSpinner/Spinner.test.tsx +0 -34
- package/src/components/AlphaSpinner/Spinner.tsx +0 -49
- package/src/components/AlphaSpinner/index.ts +0 -2
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { ArgTypes, Canvas, Meta } from '@storybook/addon-docs'
|
|
2
|
+
import * as ButtonStories from './Button.stories'
|
|
3
|
+
|
|
4
|
+
<Meta of={ButtonStories} />
|
|
3
5
|
|
|
4
6
|
# Button
|
|
5
7
|
|
|
@@ -9,13 +11,9 @@ import { Button } from '~/src/components/Button'
|
|
|
9
11
|
|
|
10
12
|
버튼은 크게 4가지 사이즈로 나뉩니다. 그 중 M이 가장 보편적이며, 공간 절약을 위해 S가 쓰입니다. List나 Input 등 액션이 필요할 때는 XS도 사용할 수 있습니다. 가입, 초대 UX 등 굉장히 강조해야 할 버튼의 경우, L, XL 사이즈를 사용할 수 있습니다.
|
|
11
13
|
|
|
12
|
-
<Canvas
|
|
13
|
-
<Story id="components-button--overview-cta" />
|
|
14
|
-
</Canvas>
|
|
14
|
+
<Canvas of={ButtonStories.OverviewCTA} />
|
|
15
15
|
|
|
16
|
-
<Canvas
|
|
17
|
-
<Story id="components-button--overview-floating" />
|
|
18
|
-
</Canvas>
|
|
16
|
+
<Canvas of={ButtonStories.OverviewFloating} />
|
|
19
17
|
|
|
20
18
|
## Usage
|
|
21
19
|
|
|
@@ -24,13 +22,9 @@ import { Button } from '~/src/components/Button'
|
|
|
24
22
|
- 한 화면 내에서 CTA 버튼은 가능한 한, 가장 중요한 버튼 1개만 primary로 지정합니다. 후순위로 colored button을 같이 넣어야 할 경우에는 secondary로 넣습니다. 그 외에는 secondary, tetiary button을 조합하여 넣습니다.
|
|
25
23
|
- 버튼 사이의 간격은 0 또는 6으로 합니다. 둘 이상의 버튼을 활용할 때는, `<ButtonGroup>` 컴포넌트를 활용하는 것을 권장합니다.
|
|
26
24
|
|
|
27
|
-
<Canvas
|
|
28
|
-
<Story id="components-button--usage-cta" />
|
|
29
|
-
</Canvas>
|
|
25
|
+
<Canvas of={ButtonStories.UsageCTA} />
|
|
30
26
|
|
|
31
|
-
<Canvas
|
|
32
|
-
<Story id="components-button--usage-cta-2" />
|
|
33
|
-
</Canvas>
|
|
27
|
+
<Canvas of={ButtonStories.UsageCTA2} />
|
|
34
28
|
|
|
35
29
|
ButtonGroup에 대해 더 알아보려면 [스토리](/docs/components-buttongroup--playground)를 참조하세요.
|
|
36
30
|
|
|
@@ -38,35 +32,27 @@ ButtonGroup에 대해 더 알아보려면 [스토리](/docs/components-buttongro
|
|
|
38
32
|
|
|
39
33
|
- 보통의 경우, tertiary button을 적절한 icon과 함께 사용합니다.
|
|
40
34
|
|
|
41
|
-
<Canvas
|
|
42
|
-
<Story id="components-button--usage-web-links" />
|
|
43
|
-
</Canvas>
|
|
35
|
+
<Canvas of={ButtonStories.UsageWebLinks} />
|
|
44
36
|
|
|
45
37
|
### Recipe: Composite Usage
|
|
46
38
|
|
|
47
39
|
- XS 크기의 버튼은 ListItem, SectionLabel 등 다른 컴포넌트에 함께 사용될 수 있습니다. 컴포넌트 좌우측에서 액션으로 사용됩니다.
|
|
48
40
|
|
|
49
|
-
<
|
|
41
|
+
<Canvas of={ButtonStories.UsageComposite} />
|
|
50
42
|
|
|
51
43
|
### Recipe: Button with various contents
|
|
52
44
|
|
|
53
45
|
- 기본적으로 `leftContent`, `rightContent` prop에 `BezierIcon`을 지정하여 좌우측에 아이콘이 들어가는 형태를 표현합니다.
|
|
54
46
|
|
|
55
|
-
<Canvas
|
|
56
|
-
<Story id="components-button--usage-various-contents-composite" />
|
|
57
|
-
</Canvas>
|
|
47
|
+
<Canvas of={ButtonStories.UsageVariousContentsComposite} />
|
|
58
48
|
|
|
59
49
|
- 아이콘만 들어가는 버튼의 경우, `leftContent` prop만 사용합니다.
|
|
60
50
|
|
|
61
|
-
<Canvas
|
|
62
|
-
<Story id="components-button--usage-various-contents-icon-only" />
|
|
63
|
-
</Canvas>
|
|
51
|
+
<Canvas of={ButtonStories.UsageVariousContentsIconOnly} />
|
|
64
52
|
|
|
65
53
|
- 아이콘 이외에 커스텀 컴포넌트가 들어가야 하는 상황에는, `leftContent`, `rightContent` prop에 `JSX.Element` 값을 지정할 수 있습니다.
|
|
66
54
|
|
|
67
|
-
<Canvas
|
|
68
|
-
<Story id="components-button--usage-various-contents-custom" />
|
|
69
|
-
</Canvas>
|
|
55
|
+
<Canvas of={ButtonStories.UsageVariousContentsCustom} />
|
|
70
56
|
|
|
71
57
|
### Recipe: Button with asynchronous actions
|
|
72
58
|
|
|
@@ -95,9 +81,7 @@ const AsyncActionButton = () => {
|
|
|
95
81
|
}
|
|
96
82
|
```
|
|
97
83
|
|
|
98
|
-
<Canvas
|
|
99
|
-
<Story id="components-button--usage-async" />
|
|
100
|
-
</Canvas>
|
|
84
|
+
<Canvas of={ButtonStories.UsageAsync} />
|
|
101
85
|
|
|
102
86
|
### Recipe: Button with dropdown
|
|
103
87
|
|
|
@@ -125,9 +109,7 @@ const OpenDropdownButton = () => {
|
|
|
125
109
|
}
|
|
126
110
|
```
|
|
127
111
|
|
|
128
|
-
<Canvas
|
|
129
|
-
<Story id="components-button--usage-dropdown" />
|
|
130
|
-
</Canvas>
|
|
112
|
+
<Canvas of={ButtonStories.UsageDropdown} />
|
|
131
113
|
|
|
132
114
|
## Variants
|
|
133
115
|
|
|
@@ -135,23 +117,23 @@ const OpenDropdownButton = () => {
|
|
|
135
117
|
|
|
136
118
|
- `ButtonColorVariant` enum을 통해 정의되며, `colorVariant` prop으로 지정할 수 있습니다.
|
|
137
119
|
|
|
138
|
-
<
|
|
120
|
+
<Canvas of={ButtonStories.VariantsColor} />
|
|
139
121
|
|
|
140
122
|
### Style Variants
|
|
141
123
|
|
|
142
124
|
- `ButtonStyleVariant` enum을 통해 정의되며, `styleVariant` prop으로 지정할 수 있습니다.
|
|
143
125
|
|
|
144
|
-
<
|
|
126
|
+
<Canvas of={ButtonStories.VariantsStyle} />
|
|
145
127
|
|
|
146
128
|
### Size
|
|
147
129
|
|
|
148
130
|
- `ButtonSize` enum을 통해 정의되며, `size` prop으로 지정할 수 있습니다.
|
|
149
131
|
|
|
150
|
-
<
|
|
132
|
+
<Canvas of={ButtonStories.VariantsSize} />
|
|
151
133
|
|
|
152
134
|
## API
|
|
153
135
|
|
|
154
|
-
<
|
|
136
|
+
<ArgTypes of={ButtonStories} />
|
|
155
137
|
|
|
156
138
|
## Version
|
|
157
139
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import { Composition } from './ButtonGroup.stories'
|
|
1
|
+
import { ArgTypes, Canvas } from '@storybook/addon-docs'
|
|
2
|
+
import * as ButtonGroupStories from './ButtonGroup.stories'
|
|
4
3
|
|
|
5
4
|
# ButtonGroup
|
|
6
5
|
|
|
@@ -10,13 +9,11 @@ import { Composition } from './ButtonGroup.stories'
|
|
|
10
9
|
|
|
11
10
|
버튼 사이의 간격은 0px 혹은 6px 이며, 디폴트값은 6px 입니다.
|
|
12
11
|
|
|
13
|
-
<Canvas
|
|
14
|
-
<Story id="components-buttongroup--playground" />
|
|
15
|
-
</Canvas>
|
|
12
|
+
<Canvas of={ButtonGroupStories.Primary} />
|
|
16
13
|
|
|
17
14
|
## API
|
|
18
15
|
|
|
19
|
-
<
|
|
16
|
+
<ArgTypes of={ButtonGroupStories} />
|
|
20
17
|
|
|
21
18
|
## Version
|
|
22
19
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Story, ArgTypes, Canvas } from '@storybook/addon-docs'
|
|
2
2
|
import { ChannelBtnSmileFilledIcon } from '@channel.io/bezier-icons'
|
|
3
|
-
import
|
|
3
|
+
import * as IconStories from './Icon.stories'
|
|
4
4
|
|
|
5
5
|
# Icon
|
|
6
6
|
|
|
@@ -10,7 +10,7 @@ import { Icon } from './Icon'
|
|
|
10
10
|
|
|
11
11
|
아이콘 단독으로 사용되거나, `bezier-react`의 다른 컴포넌트를 구성하는 기본 요소입니다.
|
|
12
12
|
|
|
13
|
-
<
|
|
13
|
+
<Canvas of={IconStories.Overview} />
|
|
14
14
|
|
|
15
15
|
### Naming
|
|
16
16
|
|
|
@@ -51,7 +51,7 @@ import {
|
|
|
51
51
|
`Icon` 컴포넌트에 color variant는 따로 정해져 있지 않습니다.
|
|
52
52
|
Semantic 색상을 `color` prop에 지정하여 아이콘이 어떤 색상으로 렌더링할지 결정합니다.
|
|
53
53
|
|
|
54
|
-
<
|
|
54
|
+
<Canvas of={IconStories.UsageColor} />
|
|
55
55
|
|
|
56
56
|
```tsx
|
|
57
57
|
<Icon
|
|
@@ -66,7 +66,7 @@ Semantic 색상을 `color` prop에 지정하여 아이콘이 어떤 색상으로
|
|
|
66
66
|
|
|
67
67
|
아이콘의 크기를 지정할 때는 `IconSize` enum을 사용합니다.
|
|
68
68
|
|
|
69
|
-
<
|
|
69
|
+
<Canvas of={IconStories.UsageSize} />
|
|
70
70
|
|
|
71
71
|
```tsx
|
|
72
72
|
<Icon
|
|
@@ -131,7 +131,7 @@ Semantic 색상을 `color` prop에 지정하여 아이콘이 어떤 색상으로
|
|
|
131
131
|
아이콘 주위에 margin이 필요한 경우, `styled(Icon)` 처럼 스타일을 overriding하여 margin을 작성할 수 있으나,
|
|
132
132
|
`marginTop`, `marginRight` 등의 prop을 지원하기 때문에 overriding 없이 작성할 수 있습니다.
|
|
133
133
|
|
|
134
|
-
<
|
|
134
|
+
<Canvas of={IconStories.TipsMargin} />
|
|
135
135
|
|
|
136
136
|
```tsx
|
|
137
137
|
<Icon
|
|
@@ -146,7 +146,7 @@ Semantic 색상을 `color` prop에 지정하여 아이콘이 어떤 색상으로
|
|
|
146
146
|
|
|
147
147
|
## API
|
|
148
148
|
|
|
149
|
-
<
|
|
149
|
+
<ArgTypes of={IconStories} />
|
|
150
150
|
|
|
151
151
|
## Version
|
|
152
152
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type BezierIcon } from '@channel.io/bezier-icons'
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
type BezierComponentProps,
|
|
@@ -21,7 +21,7 @@ interface IconOwnProps {
|
|
|
21
21
|
* <Icon source={HeartFilledIcon} {...} />
|
|
22
22
|
* ```
|
|
23
23
|
*/
|
|
24
|
-
source:
|
|
24
|
+
source: BezierIcon
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
export interface IconProps
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ArgTypes, Canvas, Story } from '@storybook/addon-docs'
|
|
2
2
|
import {
|
|
3
3
|
LegacyHStack,
|
|
4
4
|
LegacyVStack,
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
LegacyStackItem,
|
|
7
7
|
LegacySpacer,
|
|
8
8
|
} from '~/src/components/LegacyStack'
|
|
9
|
+
import * as LegacyStackStories from './LegacyStack.stories'
|
|
9
10
|
|
|
10
11
|
# LegacyStack
|
|
11
12
|
|
|
@@ -21,9 +22,7 @@ Stack은 flex layout을 제공하는 컴포넌트입니다.
|
|
|
21
22
|
|
|
22
23
|
Flexbox 내의 각 item을 `StackItem`으로 구성합니다. Flex layout 내에서 각 item의 weight, base size, item 간의 spacing을 컨트롤할 수 있습니다.
|
|
23
24
|
|
|
24
|
-
<Canvas
|
|
25
|
-
<Story id="components-legacystack--overview" />
|
|
26
|
-
</Canvas>
|
|
25
|
+
<Canvas of={LegacyStackStories.Overview} />
|
|
27
26
|
|
|
28
27
|
## Usage
|
|
29
28
|
|
|
@@ -46,13 +45,9 @@ Flexbox 내의 각 item을 `StackItem`으로 구성합니다. Flex layout 내에
|
|
|
46
45
|
|
|
47
46
|
기본 컴포넌트인 `Stack`에 `direction` prop을 사용하여 방향을 결정할 수 있으나, 방향이 고정된 경우에는 `HStack`과 `VStack`을 바로 이용하는 것이 좋습니다.
|
|
48
47
|
|
|
49
|
-
<Canvas
|
|
50
|
-
<Story id="components-legacystack--direction-horizontal" />
|
|
51
|
-
</Canvas>
|
|
48
|
+
<Canvas of={LegacyStackStories.DirectionHorizontal} />
|
|
52
49
|
|
|
53
|
-
<Canvas
|
|
54
|
-
<Story id="components-legacystack--direction-vertical" />
|
|
55
|
-
</Canvas>
|
|
50
|
+
<Canvas of={LegacyStackStories.DirectionVertical} />
|
|
56
51
|
|
|
57
52
|
### Alignment
|
|
58
53
|
|
|
@@ -60,17 +55,15 @@ Flex container의 **주 방향** (`HStack`은 가로, `VStack`은 세로) 의
|
|
|
60
55
|
|
|
61
56
|
기본적으로, `Stack` container에 지정하는 prop이 모든 child의 기본값이 됩니다. 각 `StackItem`에도 `justify`, `align` prop을 지정하여 parent `Stack`의 기본값을 overriding할 수 있습니다.
|
|
62
57
|
|
|
63
|
-
<
|
|
58
|
+
<Canvas of={LegacyStackStories.AlignmentJustify} />
|
|
64
59
|
|
|
65
|
-
<
|
|
60
|
+
<Canvas of={LegacyStackStories.AlignmentAlign} />
|
|
66
61
|
|
|
67
62
|
### Spacing
|
|
68
63
|
|
|
69
64
|
`Stack` 컴포넌트의 `spacing` prop으로 item 간의 기본 간격을 조정합니다. `StackItem`에 `marginBefore`, `marginAfter` prop으로 기본 간격을 오버라이딩할 수 있습니다.
|
|
70
65
|
|
|
71
|
-
<Canvas
|
|
72
|
-
<Story id="components-legacystack--spacing" />
|
|
73
|
-
</Canvas>
|
|
66
|
+
<Canvas of={LegacyStackStories.Spacing} />
|
|
74
67
|
|
|
75
68
|
### Weight
|
|
76
69
|
|
|
@@ -80,43 +73,37 @@ Flex layout의 특징은, container의 크기에 맞춰 item의 크기가 적절
|
|
|
80
73
|
|
|
81
74
|
- Item 하나가 container의 여유 공간을 모두 차지하는 경우입니다. 이 경우, 해당 item에게 `grow shrink weight={1}` prop을 지정합니다.
|
|
82
75
|
|
|
83
|
-
<Canvas
|
|
84
|
-
<Story id="components-legacystack--expanded" />
|
|
85
|
-
</Canvas>
|
|
76
|
+
<Canvas of={LegacyStackStories.Expanded} />
|
|
86
77
|
|
|
87
78
|
- CSS의 `justify-content: space-between`과 같이, item 사이에 공간을 두고자 하는 경우가 있습니다. 이 경우에는 `<Spacer />` 컴포넌트를 활용합니다. `Spacer`는 기본적으로 `grow shrink weight={1}` 을 가진 빈 `StackItem`입니다.
|
|
88
79
|
|
|
89
|
-
<Canvas
|
|
90
|
-
<Story id="components-legacystack--weight-spacer" />
|
|
91
|
-
</Canvas>
|
|
80
|
+
<Canvas of={LegacyStackStories.WeightSpacer} />
|
|
92
81
|
|
|
93
82
|
- Item이 container의 크기와 무관하게 (특히, container 크기가 충분하지 않은 경우) 일정한 크기를 차지하고자 하는 경우, 기본값인 `grow={false} shrink={false} weight={0}` prop을 지정합니다. 그리고, 의도하는 크기를 `size` prop으로 지정합니다.
|
|
94
83
|
|
|
95
|
-
<Canvas
|
|
96
|
-
<Story id="components-legacystack--weight-fixed" />
|
|
97
|
-
</Canvas>
|
|
84
|
+
<Canvas of={LegacyStackStories.WeightFixed} />
|
|
98
85
|
|
|
99
86
|
## API
|
|
100
87
|
|
|
101
88
|
### Stack
|
|
102
89
|
|
|
103
|
-
<
|
|
90
|
+
<ArgTypes of={LegacyStack} />
|
|
104
91
|
|
|
105
92
|
### HStack
|
|
106
93
|
|
|
107
|
-
<
|
|
94
|
+
<ArgTypes of={LegacyHStack} />
|
|
108
95
|
|
|
109
96
|
### VStack
|
|
110
97
|
|
|
111
|
-
<
|
|
98
|
+
<ArgTypes of={LegacyVStack} />
|
|
112
99
|
|
|
113
100
|
### StackItem
|
|
114
101
|
|
|
115
|
-
<
|
|
102
|
+
<ArgTypes of={LegacyStackItem} />
|
|
116
103
|
|
|
117
104
|
### Spacer
|
|
118
105
|
|
|
119
|
-
<
|
|
106
|
+
<ArgTypes of={LegacySpacer} />
|
|
120
107
|
|
|
121
108
|
## Version
|
|
122
109
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { ArgTypes, Canvas, Story } from '@storybook/addon-docs'
|
|
2
|
+
import * as ProgressBarStories from './ProgressBar.stories'
|
|
3
3
|
|
|
4
4
|
# ProgressBar
|
|
5
5
|
|
|
@@ -7,9 +7,7 @@ import { ProgressBar } from '~/src/components/ProgressBar'
|
|
|
7
7
|
|
|
8
8
|
진행도를 나타낼 때 사용합니다.
|
|
9
9
|
|
|
10
|
-
<Canvas
|
|
11
|
-
<Story id="components-progressbar--overview" />
|
|
12
|
-
</Canvas>
|
|
10
|
+
<Canvas of={ProgressBarStories.Overview} />
|
|
13
11
|
|
|
14
12
|
## Usage
|
|
15
13
|
|
|
@@ -17,9 +15,7 @@ import { ProgressBar } from '~/src/components/ProgressBar'
|
|
|
17
15
|
|
|
18
16
|
`width` prop을 통해 ProgressBar의 너비를 지정할 수 있습니다. 기본값은 36px입니다.
|
|
19
17
|
|
|
20
|
-
<Canvas
|
|
21
|
-
<Story id="components-progressbar--usage-width" />
|
|
22
|
-
</Canvas>
|
|
18
|
+
<Canvas of={ProgressBarStories.UsageWidth} />
|
|
23
19
|
|
|
24
20
|
### Value
|
|
25
21
|
|
|
@@ -27,9 +23,7 @@ import { ProgressBar } from '~/src/components/ProgressBar'
|
|
|
27
23
|
|
|
28
24
|
진행도를 나타내는 `value`는 0보다 크거나 같고 1보다 작거나 같은 수입니다. 0보다 작은 값은 0으로, 1보다 큰 값은 1로 처리합니다.
|
|
29
25
|
|
|
30
|
-
<Canvas
|
|
31
|
-
<Story id="components-progressbar--usage-value" />
|
|
32
|
-
</Canvas>
|
|
26
|
+
<Canvas of={ProgressBarStories.UsageValue} />
|
|
33
27
|
|
|
34
28
|
## Variants
|
|
35
29
|
|
|
@@ -39,7 +33,7 @@ S, M 2개의 size가 있으며, 기본값은 M입니다.
|
|
|
39
33
|
|
|
40
34
|
`size` prop을 통해 ProgressBar의 높이를 선택할 수 있습니다.
|
|
41
35
|
|
|
42
|
-
<
|
|
36
|
+
<Canvas of={ProgressBarStories.SizeVariant} />
|
|
43
37
|
|
|
44
38
|
### Color
|
|
45
39
|
|
|
@@ -47,13 +41,13 @@ Green, Monochrome, GreenAlt 3개의 color가 있으며, 기본값은 Green입니
|
|
|
47
41
|
|
|
48
42
|
`variant` prop을 통해 ProgressBar의 색상을 선택할 수 있습니다.
|
|
49
43
|
|
|
50
|
-
<
|
|
44
|
+
<Canvas of={ProgressBarStories.Variant} />
|
|
51
45
|
|
|
52
46
|
## API
|
|
53
47
|
|
|
54
48
|
### ProgressBar
|
|
55
49
|
|
|
56
|
-
<
|
|
50
|
+
<ArgTypes of={ProgressBarStories} />
|
|
57
51
|
|
|
58
52
|
## Version
|
|
59
53
|
|
|
@@ -237,7 +237,8 @@ describe('TextField', () => {
|
|
|
237
237
|
describe('show remove button only when it is filled and focused/hovered', () => {
|
|
238
238
|
/**
|
|
239
239
|
* FIXME: This test is not working properly.
|
|
240
|
-
*
|
|
240
|
+
* Jest-dom does not support css which is not inline.
|
|
241
|
+
* @see https://github.com/testing-library/jest-dom/issues/113#issuecomment-496971128
|
|
241
242
|
*/
|
|
242
243
|
// it('disappear when empty & focused/hovered', async () => {
|
|
243
244
|
// const { getByTestId } = renderComponent({ value: '', allowClear: true })
|
|
@@ -296,5 +297,19 @@ describe('TextField', () => {
|
|
|
296
297
|
)
|
|
297
298
|
expect(clearButton).toBeVisible()
|
|
298
299
|
})
|
|
300
|
+
|
|
301
|
+
it('should focus the clear button when Tab key is pressed', async () => {
|
|
302
|
+
const { getByTestId } = renderComponent({
|
|
303
|
+
value: 'test',
|
|
304
|
+
allowClear: true,
|
|
305
|
+
})
|
|
306
|
+
const rendered = getByTestId(TEXT_INPUT_TEST_ID)
|
|
307
|
+
const input = rendered.getElementsByTagName('input')[0]
|
|
308
|
+
|
|
309
|
+
input.focus()
|
|
310
|
+
await user.tab()
|
|
311
|
+
|
|
312
|
+
expect(document.activeElement).toHaveClass('CloseIconWrapper')
|
|
313
|
+
})
|
|
299
314
|
})
|
|
300
315
|
})
|
package/src/index.ts
CHANGED
|
@@ -12,7 +12,7 @@ export * from '~/src/components/AlphaDialogPrimitive'
|
|
|
12
12
|
export * from '~/src/components/AlphaFloatingButton'
|
|
13
13
|
export * from '~/src/components/AlphaFloatingIconButton'
|
|
14
14
|
export * from '~/src/components/AlphaIconButton'
|
|
15
|
-
export * from '~/src/components/
|
|
15
|
+
export * from '~/src/components/AlphaLoader'
|
|
16
16
|
export * from '~/src/components/AlphaToggleButton'
|
|
17
17
|
export * from '~/src/components/AlphaToggleButtonGroup'
|
|
18
18
|
export * from '~/src/components/AlphaTooltipPrimitive'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.js","sources":["../../../../src/components/AlphaSpinner/Spinner.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\nimport classNames from 'classnames'\n\nimport { type SpinnerProps } from './Spinner.types'\n\nimport styles from './Spinner.module.scss'\n\nexport const SPINNER_TEST_ID = 'bezier-spinner'\n\nexport const Spinner = forwardRef<HTMLSpanElement, SpinnerProps>(\n function Spinner(\n { className, size, variant = 'secondary', ...rest },\n forwardedRef\n ) {\n return (\n <span\n className={classNames(\n styles.Spinner,\n size && styles[`size-${size}`],\n styles[`variant-${variant}`],\n className\n )}\n ref={forwardedRef}\n data-testid={SPINNER_TEST_ID}\n {...rest}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 16\"\n >\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6.5\"\n className={styles.track}\n />\n\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6.5\"\n className={styles.indicator}\n />\n </svg>\n </span>\n )\n }\n)\n"],"names":["SPINNER_TEST_ID","Spinner","forwardRef","className","size","variant","rest","forwardedRef","React","createElement","Object","assign","classNames","styles","ref","xmlns","viewBox","cx","cy","r","track","indicator"],"mappings":";;;;;;AAQO,MAAMA,eAAe,GAAG,iBAAgB;MAElCC,OAAO,gBAAGC,gBAAU,CAC/B,SAASD,OAAOA,CACd;EAAEE,SAAS;EAAEC,IAAI;AAAEC,EAAAA,OAAO,GAAG,WAAW;EAAE,GAAGC,IAAAA;AAAK,CAAC,EACnDC,YAAY,EACZ;AACA,EAAA,oBACEC,KAAA,CAAAC,aAAA,CAAAC,MAAAA,EAAAA,MAAA,CAAAC,MAAA,CAAA;IACER,SAAS,EAAES,aAAU,CACnBC,sBAAM,CAACZ,OAAO,EACdG,IAAI,IAAIS,sBAAM,CAAC,CAAA,KAAA,EAAQT,IAAI,CAAE,CAAA,CAAC,EAC9BS,sBAAM,CAAC,CAAA,QAAA,EAAWR,OAAO,CAAE,CAAA,CAAC,EAC5BF,SACF,CAAE;AACFW,IAAAA,GAAG,EAAEP,YAAa;IAClB,aAAaP,EAAAA,eAAAA;AAAgB,GAAA,EACzBM,IAAI,CAAA,eAERE,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEM,IAAAA,KAAK,EAAC,4BAA4B;AAClCC,IAAAA,OAAO,EAAC,WAAA;GAERR,eAAAA,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACEQ,IAAAA,EAAE,EAAC,GAAG;AACNC,IAAAA,EAAE,EAAC,GAAG;AACNC,IAAAA,CAAC,EAAC,KAAK;IACPhB,SAAS,EAAEU,sBAAM,CAACO,KAAAA;AAAM,GACzB,CAAC,eAEFZ,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACEQ,IAAAA,EAAE,EAAC,GAAG;AACNC,IAAAA,EAAE,EAAC,GAAG;AACNC,IAAAA,CAAC,EAAC,KAAK;IACPhB,SAAS,EAAEU,sBAAM,CAACQ,SAAAA;GACnB,CACE,CACD,CAAC,CAAA;AAEX,CACF;;;;;"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var styles = {"Spinner":"b-JiZuz","rotate":"b--s0vl","track":"b-yJ2yV","indicator":"b-ZDWx3","size-s":"b-RnjP3","size-m":"b-ZRPEJ","variant-primary":"b-awyMq","variant-secondary":"b-ur-vE","variant-on-overlay":"b-5H4Ga"};
|
|
6
|
-
|
|
7
|
-
exports.default = styles;
|
|
8
|
-
//# sourceMappingURL=Spinner.module.scss.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.mjs","sources":["../../../../src/components/AlphaSpinner/Spinner.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\nimport classNames from 'classnames'\n\nimport { type SpinnerProps } from './Spinner.types'\n\nimport styles from './Spinner.module.scss'\n\nexport const SPINNER_TEST_ID = 'bezier-spinner'\n\nexport const Spinner = forwardRef<HTMLSpanElement, SpinnerProps>(\n function Spinner(\n { className, size, variant = 'secondary', ...rest },\n forwardedRef\n ) {\n return (\n <span\n className={classNames(\n styles.Spinner,\n size && styles[`size-${size}`],\n styles[`variant-${variant}`],\n className\n )}\n ref={forwardedRef}\n data-testid={SPINNER_TEST_ID}\n {...rest}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 16\"\n >\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6.5\"\n className={styles.track}\n />\n\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6.5\"\n className={styles.indicator}\n />\n </svg>\n </span>\n )\n }\n)\n"],"names":["SPINNER_TEST_ID","Spinner","forwardRef","className","size","variant","rest","forwardedRef","React","createElement","Object","assign","classNames","styles","ref","xmlns","viewBox","cx","cy","r","track","indicator"],"mappings":";;;;AAQO,MAAMA,eAAe,GAAG,iBAAgB;MAElCC,OAAO,gBAAGC,UAAU,CAC/B,SAASD,OAAOA,CACd;EAAEE,SAAS;EAAEC,IAAI;AAAEC,EAAAA,OAAO,GAAG,WAAW;EAAE,GAAGC,IAAAA;AAAK,CAAC,EACnDC,YAAY,EACZ;AACA,EAAA,oBACEC,cAAA,CAAAC,aAAA,CAAAC,MAAAA,EAAAA,MAAA,CAAAC,MAAA,CAAA;IACER,SAAS,EAAES,UAAU,CACnBC,MAAM,CAACZ,OAAO,EACdG,IAAI,IAAIS,MAAM,CAAC,CAAA,KAAA,EAAQT,IAAI,CAAE,CAAA,CAAC,EAC9BS,MAAM,CAAC,CAAA,QAAA,EAAWR,OAAO,CAAE,CAAA,CAAC,EAC5BF,SACF,CAAE;AACFW,IAAAA,GAAG,EAAEP,YAAa;IAClB,aAAaP,EAAAA,eAAAA;AAAgB,GAAA,EACzBM,IAAI,CAAA,eAERE,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEM,IAAAA,KAAK,EAAC,4BAA4B;AAClCC,IAAAA,OAAO,EAAC,WAAA;GAERR,eAAAA,cAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACEQ,IAAAA,EAAE,EAAC,GAAG;AACNC,IAAAA,EAAE,EAAC,GAAG;AACNC,IAAAA,CAAC,EAAC,KAAK;IACPhB,SAAS,EAAEU,MAAM,CAACO,KAAAA;AAAM,GACzB,CAAC,eAEFZ,cAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACEQ,IAAAA,EAAE,EAAC,GAAG;AACNC,IAAAA,EAAE,EAAC,GAAG;AACNC,IAAAA,CAAC,EAAC,KAAK;IACPhB,SAAS,EAAEU,MAAM,CAACQ,SAAAA;GACnB,CACE,CACD,CAAC,CAAA;AAEX,CACF;;;;"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
var styles = {"Spinner":"b-JiZuz","rotate":"b--s0vl","track":"b-yJ2yV","indicator":"b-ZDWx3","size-s":"b-RnjP3","size-m":"b-ZRPEJ","variant-primary":"b-awyMq","variant-secondary":"b-ur-vE","variant-on-overlay":"b-5H4Ga"};
|
|
2
|
-
|
|
3
|
-
export { styles as default };
|
|
4
|
-
//# sourceMappingURL=Spinner.module.scss.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { type SpinnerProps } from './Spinner.types';
|
|
3
|
-
export declare const SPINNER_TEST_ID = "bezier-spinner";
|
|
4
|
-
export declare const Spinner: React.ForwardRefExoticComponent<SpinnerProps & React.RefAttributes<HTMLSpanElement>>;
|
|
5
|
-
//# sourceMappingURL=Spinner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../../src/components/AlphaSpinner/Spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAA;AAIzC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAInD,eAAO,MAAM,eAAe,mBAAmB,CAAA;AAE/C,eAAO,MAAM,OAAO,sFAsCnB,CAAA"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { type BezierComponentProps, type ColorProps, type SizeProps } from "../../types/props";
|
|
2
|
-
type SpinnerSize = 's' | 'm';
|
|
3
|
-
interface SpinnerOwnProps {
|
|
4
|
-
/**
|
|
5
|
-
* The style variant of Spinner.
|
|
6
|
-
* @default 'secondary'
|
|
7
|
-
*/
|
|
8
|
-
variant?: 'primary' | 'secondary' | 'on-overlay';
|
|
9
|
-
}
|
|
10
|
-
export interface SpinnerProps extends Omit<BezierComponentProps<'span'>, keyof ColorProps>, SizeProps<SpinnerSize>, ColorProps, SpinnerOwnProps {
|
|
11
|
-
}
|
|
12
|
-
export {};
|
|
13
|
-
//# sourceMappingURL=Spinner.types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.types.d.ts","sourceRoot":"","sources":["../../../../src/components/AlphaSpinner/Spinner.types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,0BAAyB;AAE1B,KAAK,WAAW,GAAG,GAAG,GAAG,GAAG,CAAA;AAE5B,UAAU,eAAe;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,YAAY,CAAA;CACjD;AAED,MAAM,WAAW,YACf,SAAQ,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM,UAAU,CAAC,EAC1D,SAAS,CAAC,WAAW,CAAC,EACtB,UAAU,EACV,eAAe;CAAG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/AlphaSpinner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,KAAK,YAAY,IAAI,iBAAiB,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
|
|
3
|
-
import { type Meta, type StoryFn } from '@storybook/react'
|
|
4
|
-
|
|
5
|
-
import { Spinner } from './Spinner'
|
|
6
|
-
import { type SpinnerProps } from './Spinner.types'
|
|
7
|
-
|
|
8
|
-
const meta: Meta<typeof Spinner> = {
|
|
9
|
-
component: Spinner,
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export default meta
|
|
13
|
-
|
|
14
|
-
const Template: StoryFn<SpinnerProps> = ({ ...args }) => <Spinner {...args} />
|
|
15
|
-
|
|
16
|
-
export const Primary = {
|
|
17
|
-
render: Template,
|
|
18
|
-
|
|
19
|
-
args: {
|
|
20
|
-
size: 'm',
|
|
21
|
-
variant: 'secondary',
|
|
22
|
-
},
|
|
23
|
-
}
|