@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvatarGroup.types.d.ts","sourceRoot":"","sources":["../../../../src/components/AlphaAvatarGroup/AvatarGroup.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,SAAS,EACV,0BAAyB;AAE1B,OAAO,
|
|
1
|
+
{"version":3,"file":"AvatarGroup.types.d.ts","sourceRoot":"","sources":["../../../../src/components/AlphaAvatarGroup/AvatarGroup.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,SAAS,EACV,0BAAyB;AAE1B,OAAO,EAAE,KAAK,eAAe,EAAE,uBAAoC;AAEnE,KAAK,uBAAuB,GAAG,MAAM,GAAG,OAAO,CAAA;AAE/C,UAAU,mBAAmB;IAC3B;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAA;IAEX;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;OAGG;IACH,YAAY,CAAC,EAAE,uBAAuB,CAAA;CACvC;AAED,MAAM,WAAW,gBACf,SAAQ,oBAAoB,CAAC,KAAK,CAAC,EACjC,aAAa,EACb,SAAS,CAAC,eAAe,CAAC,EAC1B,mBAAmB;CAAG"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type LoaderProps } from './Loader.types';
|
|
3
|
+
export declare const LOADER_TEST_ID = "bezier-loader";
|
|
4
|
+
export declare const Loader: React.ForwardRefExoticComponent<LoaderProps & React.RefAttributes<HTMLSpanElement>>;
|
|
5
|
+
//# sourceMappingURL=Loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Loader.d.ts","sourceRoot":"","sources":["../../../../src/components/AlphaLoader/Loader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAA;AAIzC,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAIjD,eAAO,MAAM,cAAc,kBAAkB,CAAA;AAE7C,eAAO,MAAM,MAAM,qFAoCjB,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type BezierComponentProps, type ColorProps, type SizeProps } from "../../types/props";
|
|
2
|
+
type LoaderSize = 's' | 'm';
|
|
3
|
+
interface LoaderOwnProps {
|
|
4
|
+
/**
|
|
5
|
+
* The style variant of Loader.
|
|
6
|
+
* @default 'secondary'
|
|
7
|
+
*/
|
|
8
|
+
variant?: 'primary' | 'secondary' | 'on-overlay';
|
|
9
|
+
}
|
|
10
|
+
export interface LoaderProps extends Omit<BezierComponentProps<'span'>, keyof ColorProps>, SizeProps<LoaderSize>, ColorProps, LoaderOwnProps {
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=Loader.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Loader.types.d.ts","sourceRoot":"","sources":["../../../../src/components/AlphaLoader/Loader.types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,0BAAyB;AAE1B,KAAK,UAAU,GAAG,GAAG,GAAG,GAAG,CAAA;AAE3B,UAAU,cAAc;IACtB;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,YAAY,CAAA;CACjD;AAED,MAAM,WAAW,WACf,SAAQ,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM,UAAU,CAAC,EAC1D,SAAS,CAAC,UAAU,CAAC,EACrB,UAAU,EACV,cAAc;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/AlphaLoader/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,KAAK,WAAW,IAAI,gBAAgB,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type BezierIcon } from '@channel.io/bezier-icons';
|
|
2
2
|
import { type BezierComponentProps, type ColorProps, type MarginProps, type SizeProps } from "../../types/props";
|
|
3
3
|
export type IconSize = 'xl' | 'l' | 'm' | 's' | 'xs' | 'xxs' | 'xxxs';
|
|
4
4
|
interface IconOwnProps {
|
|
@@ -13,7 +13,7 @@ interface IconOwnProps {
|
|
|
13
13
|
* <Icon source={HeartFilledIcon} {...} />
|
|
14
14
|
* ```
|
|
15
15
|
*/
|
|
16
|
-
source:
|
|
16
|
+
source: BezierIcon;
|
|
17
17
|
}
|
|
18
18
|
export interface IconProps extends Omit<BezierComponentProps<'svg'>, keyof ColorProps>, MarginProps, SizeProps<IconSize>, ColorProps, IconOwnProps {
|
|
19
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Icon.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Icon/Icon.types.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Icon.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Icon/Icon.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAE1D,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,SAAS,EACf,0BAAyB;AAE1B,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,CAAA;AAErE,UAAU,YAAY;IACpB;;;;;;;;;;OAUG;IACH,MAAM,EAAE,UAAU,CAAA;CACnB;AAED,MAAM,WAAW,SACf,SAAQ,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,UAAU,CAAC,EACzD,WAAW,EACX,SAAS,CAAC,QAAQ,CAAC,EACnB,UAAU,EACV,YAAY;CAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMergeRefs.d.ts","sourceRoot":"","sources":["../../../src/hooks/useMergeRefs.ts"],"names":[],"mappings":";AAEA,KAAK,QAAQ,CAAC,IAAI,IACd,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GACvB,KAAK,CAAC,gBAAgB,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;AAEvC,KAAK,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAA;AAClD,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"useMergeRefs.d.ts","sourceRoot":"","sources":["../../../src/hooks/useMergeRefs.ts"],"names":[],"mappings":";AAEA,KAAK,QAAQ,CAAC,IAAI,IACd,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GACvB,KAAK,CAAC,gBAAgB,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;AAEvC,KAAK,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAA;AAClD,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;AA4BlC,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,+BAG7D"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export * from "./components/AlphaDialogPrimitive";
|
|
|
7
7
|
export * from "./components/AlphaFloatingButton";
|
|
8
8
|
export * from "./components/AlphaFloatingIconButton";
|
|
9
9
|
export * from "./components/AlphaIconButton";
|
|
10
|
-
export * from "./components/
|
|
10
|
+
export * from "./components/AlphaLoader";
|
|
11
11
|
export * from "./components/AlphaToggleButton";
|
|
12
12
|
export * from "./components/AlphaToggleButtonGroup";
|
|
13
13
|
export * from "./components/AlphaTooltipPrimitive";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,yBAAyB,CAAA;AAGhC,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAGlD,yCAA4C;AAC5C,8CAAiD;AACjD,yCAA4C;AAC5C,kDAAqD;AACrD,iDAAoD;AACpD,qDAAwD;AACxD,6CAAgD;AAChD,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,yBAAyB,CAAA;AAGhC,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAGlD,yCAA4C;AAC5C,8CAAiD;AACjD,yCAA4C;AAC5C,kDAAqD;AACrD,iDAAoD;AACpD,qDAAwD;AACxD,6CAAgD;AAChD,yCAA4C;AAC5C,+CAAkD;AAClD,oDAAuD;AACvD,mDAAsD;AACtD,yCAA4C;AAC5C,uCAA0C;AAC1C,oCAAuC;AACvC,yCAA4C;AAC5C,mCAAsC;AACtC,oCAAuC;AACvC,iCAAoC;AACpC,oCAAuC;AACvC,yCAA4C;AAC5C,oCAAuC;AACvC,6CAAgD;AAChD,sCAAyC;AACzC,0CAA6C;AAC7C,qCAAwC;AACxC,mCAAsC;AACtC,6CAAgD;AAChD,yCAA4C;AAC5C,uCAA0C;AAC1C,4CAA+C;AAC/C,uCAA0C;AAC1C,kCAAqC;AACrC,kCAAqC;AACrC,0CAA6C;AAC7C,wCAA2C;AAC3C,yCAA4C;AAC5C,2CAA8C;AAC9C,sCAAyC;AACzC,mCAAsC;AACtC,sCAAyC;AACzC,qCAAwC;AACxC,yCAA4C;AAC5C,qCAAwC;AACxC,yCAA4C;AAC5C,wCAA2C;AAC3C,0CAA6C;AAC7C,8CAAiD;AACjD,oCAAuC;AACvC,oCAAuC;AACvC,8CAAiD;AACjD,qCAAwC;AACxC,mCAAsC;AACtC,oCAAuC;AACvC,oCAAuC;AACvC,kCAAqC;AACrC,iCAAoC;AACpC,kCAAqC;AACrC,sCAAyC;AACzC,uCAA0C;AAC1C,2CAA8C;AAC9C,mCAAsC;AACtC,qCAAwC;AACxC,4CAA+C;AAC/C,4CAA+C;AAG/C,8DAAiE;AAGjE,8BAAiC;AACjC,+BAAkC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@channel.io/bezier-react",
|
|
3
|
-
"version": "2.1
|
|
3
|
+
"version": "2.2.1",
|
|
4
4
|
"description": "React components library that implements Bezier design system.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -63,23 +63,25 @@
|
|
|
63
63
|
"@babel/preset-env": "^7.23.9",
|
|
64
64
|
"@babel/preset-react": "^7.23.3",
|
|
65
65
|
"@babel/preset-typescript": "^7.23.3",
|
|
66
|
-
"@channel.io/bezier-icons": "0.
|
|
66
|
+
"@channel.io/bezier-icons": "0.30.0",
|
|
67
|
+
"@chromatic-com/storybook": "^1",
|
|
67
68
|
"@rollup/plugin-alias": "^5.1.0",
|
|
68
69
|
"@rollup/plugin-babel": "^6.0.4",
|
|
69
70
|
"@rollup/plugin-commonjs": "^25.0.7",
|
|
70
71
|
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
71
72
|
"@rollup/plugin-url": "^8.0.2",
|
|
72
|
-
"@storybook/addon-a11y": "
|
|
73
|
-
"@storybook/addon-actions": "
|
|
74
|
-
"@storybook/addon-controls": "
|
|
75
|
-
"@storybook/addon-docs": "
|
|
76
|
-
"@storybook/addon-measure": "
|
|
77
|
-
"@storybook/addon-outline": "
|
|
78
|
-
"@storybook/addon-styling": "^1.
|
|
79
|
-
"@storybook/
|
|
80
|
-
"@storybook/
|
|
81
|
-
"@storybook/react
|
|
82
|
-
"@storybook/
|
|
73
|
+
"@storybook/addon-a11y": "^8.1.10",
|
|
74
|
+
"@storybook/addon-actions": "^8.1.10",
|
|
75
|
+
"@storybook/addon-controls": "^8.1.10",
|
|
76
|
+
"@storybook/addon-docs": "^8.1.10",
|
|
77
|
+
"@storybook/addon-measure": "^8.1.10",
|
|
78
|
+
"@storybook/addon-outline": "^8.1.10",
|
|
79
|
+
"@storybook/addon-styling-webpack": "^1.0.0",
|
|
80
|
+
"@storybook/addon-webpack5-compiler-babel": "^3.0.3",
|
|
81
|
+
"@storybook/manager-api": "^8.1.10",
|
|
82
|
+
"@storybook/react": "^8.1.10",
|
|
83
|
+
"@storybook/react-webpack5": "^8.1.10",
|
|
84
|
+
"@storybook/theming": "^8.1.10",
|
|
83
85
|
"@testing-library/jest-dom": "^6.4.2",
|
|
84
86
|
"@testing-library/react": "^14.2.1",
|
|
85
87
|
"@testing-library/user-event": "^14.5.2",
|
|
@@ -108,7 +110,8 @@
|
|
|
108
110
|
"rollup-plugin-postcss": "^4.0.2",
|
|
109
111
|
"rollup-plugin-visualizer": "^5.12.0",
|
|
110
112
|
"sass": "^1.71.1",
|
|
111
|
-
"
|
|
113
|
+
"sass-loader": "^14.2.1",
|
|
114
|
+
"storybook": "^8.1.10",
|
|
112
115
|
"ts-patch": "^3.1.2",
|
|
113
116
|
"ts-prune": "^0.10.3",
|
|
114
117
|
"tsconfig": "workspace:*",
|
|
@@ -4,10 +4,7 @@ import type {
|
|
|
4
4
|
SizeProps,
|
|
5
5
|
} from '~/src/types/props'
|
|
6
6
|
|
|
7
|
-
import {
|
|
8
|
-
type AlphaAvatarProps,
|
|
9
|
-
type AlphaAvatarSize,
|
|
10
|
-
} from '~/src/components/AlphaAvatar'
|
|
7
|
+
import { type AlphaAvatarSize } from '~/src/components/AlphaAvatar'
|
|
11
8
|
|
|
12
9
|
type AvatarGroupEllipsisType = 'icon' | 'count'
|
|
13
10
|
|
|
@@ -272,7 +272,7 @@ $chromatic-colors: 'blue', 'red', 'green', 'cobalt', 'orange', 'pink', 'purple';
|
|
|
272
272
|
|
|
273
273
|
@each $size, $value in $size-map {
|
|
274
274
|
&:where(.size-#{$size}) {
|
|
275
|
-
& :is(.
|
|
275
|
+
& :is(.Loader) {
|
|
276
276
|
@include dimension.square(#{$value}px);
|
|
277
277
|
}
|
|
278
278
|
}
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
type ButtonProps,
|
|
8
8
|
type ButtonSize,
|
|
9
9
|
} from '~/src/components/AlphaButton/Button.types'
|
|
10
|
-
import {
|
|
10
|
+
import { AlphaLoader } from '~/src/components/AlphaLoader'
|
|
11
11
|
import { BaseButton } from '~/src/components/BaseButton'
|
|
12
12
|
import { Icon, type IconSize } from '~/src/components/Icon'
|
|
13
13
|
import { Text } from '~/src/components/Text'
|
|
@@ -121,8 +121,8 @@ export const Button = forwardRef<HTMLButtonElement, ButtonProps>(
|
|
|
121
121
|
styles[`size-${getIconSize(size)}`]
|
|
122
122
|
)}
|
|
123
123
|
>
|
|
124
|
-
<
|
|
125
|
-
className={styles.
|
|
124
|
+
<AlphaLoader
|
|
125
|
+
className={styles.Loader}
|
|
126
126
|
variant="on-overlay"
|
|
127
127
|
/>
|
|
128
128
|
</div>
|
|
@@ -207,7 +207,7 @@ $chromatic-colors: 'blue', 'red', 'green', 'cobalt', 'orange', 'pink', 'purple';
|
|
|
207
207
|
|
|
208
208
|
@each $size, $value in $size-map {
|
|
209
209
|
&:where(.size-#{$size}) {
|
|
210
|
-
& :is(.
|
|
210
|
+
& :is(.Loader) {
|
|
211
211
|
@include dimension.square(#{$value}px);
|
|
212
212
|
}
|
|
213
213
|
}
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
type FloatingButtonProps,
|
|
8
8
|
type FloatingButtonSize,
|
|
9
9
|
} from '~/src/components/AlphaFloatingButton/FloatingButton.types'
|
|
10
|
-
import {
|
|
10
|
+
import { AlphaLoader } from '~/src/components/AlphaLoader'
|
|
11
11
|
import { BaseButton } from '~/src/components/BaseButton'
|
|
12
12
|
import { Icon, type IconSize } from '~/src/components/Icon'
|
|
13
13
|
import { Text } from '~/src/components/Text'
|
|
@@ -120,8 +120,8 @@ export const FloatingButton = forwardRef<
|
|
|
120
120
|
styles[`size-${getIconSize(size)}`]
|
|
121
121
|
)}
|
|
122
122
|
>
|
|
123
|
-
<
|
|
124
|
-
className={styles.
|
|
123
|
+
<AlphaLoader
|
|
124
|
+
className={styles.Loader}
|
|
125
125
|
variant="on-overlay"
|
|
126
126
|
/>
|
|
127
127
|
</div>
|
|
@@ -176,7 +176,7 @@ $chromatic-colors: 'blue', 'red', 'green', 'cobalt', 'orange', 'pink', 'purple';
|
|
|
176
176
|
|
|
177
177
|
@each $size, $value in $size-map {
|
|
178
178
|
&:where(.size-#{$size}) {
|
|
179
|
-
& :is(.
|
|
179
|
+
& :is(.Loader) {
|
|
180
180
|
@include dimension.square(#{$value}px);
|
|
181
181
|
}
|
|
182
182
|
}
|
|
@@ -4,7 +4,7 @@ import { isBezierIcon } from '@channel.io/bezier-icons'
|
|
|
4
4
|
import classNames from 'classnames'
|
|
5
5
|
|
|
6
6
|
import { type AlphaFloatingIconButtonProps } from '~/src/components/AlphaFloatingIconButton'
|
|
7
|
-
import {
|
|
7
|
+
import { AlphaLoader } from '~/src/components/AlphaLoader'
|
|
8
8
|
import { BaseButton } from '~/src/components/BaseButton'
|
|
9
9
|
import { type ButtonSize } from '~/src/components/Button'
|
|
10
10
|
import { Icon } from '~/src/components/Icon'
|
|
@@ -75,8 +75,8 @@ export const FloatingIconButton = forwardRef<
|
|
|
75
75
|
styles[`size-${getIconSize(size)}`]
|
|
76
76
|
)}
|
|
77
77
|
>
|
|
78
|
-
<
|
|
79
|
-
className={styles.
|
|
78
|
+
<AlphaLoader
|
|
79
|
+
className={styles.Loader}
|
|
80
80
|
variant="on-overlay"
|
|
81
81
|
/>
|
|
82
82
|
</div>
|
|
@@ -253,7 +253,7 @@ $chromatic-colors: 'blue', 'red', 'green', 'cobalt', 'orange', 'pink', 'purple';
|
|
|
253
253
|
|
|
254
254
|
@each $size, $value in $size-map {
|
|
255
255
|
&:where(.size-#{$size}) {
|
|
256
|
-
& :is(.
|
|
256
|
+
& :is(.Loader) {
|
|
257
257
|
@include dimension.square(#{$value}px);
|
|
258
258
|
}
|
|
259
259
|
}
|
|
@@ -4,7 +4,7 @@ import { isBezierIcon } from '@channel.io/bezier-icons'
|
|
|
4
4
|
import classNames from 'classnames'
|
|
5
5
|
|
|
6
6
|
import { type AlphaIconButtonProps } from '~/src/components/AlphaIconButton'
|
|
7
|
-
import {
|
|
7
|
+
import { AlphaLoader } from '~/src/components/AlphaLoader'
|
|
8
8
|
import { BaseButton } from '~/src/components/BaseButton'
|
|
9
9
|
import { type ButtonSize } from '~/src/components/Button'
|
|
10
10
|
import { Icon } from '~/src/components/Icon'
|
|
@@ -79,8 +79,8 @@ export const IconButton = forwardRef<HTMLButtonElement, AlphaIconButtonProps>(
|
|
|
79
79
|
styles[`size-${getIconSize(size)}`]
|
|
80
80
|
)}
|
|
81
81
|
>
|
|
82
|
-
<
|
|
83
|
-
className={styles.
|
|
82
|
+
<AlphaLoader
|
|
83
|
+
className={styles.Loader}
|
|
84
84
|
variant="on-overlay"
|
|
85
85
|
/>
|
|
86
86
|
</div>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
|
|
3
|
+
import { type Meta, type StoryFn } from '@storybook/react'
|
|
4
|
+
|
|
5
|
+
import { Loader } from './Loader'
|
|
6
|
+
import { type LoaderProps } from './Loader.types'
|
|
7
|
+
|
|
8
|
+
const meta: Meta<typeof Loader> = {
|
|
9
|
+
component: Loader,
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export default meta
|
|
13
|
+
|
|
14
|
+
const Template: StoryFn<LoaderProps> = ({ ...args }) => <Loader {...args} />
|
|
15
|
+
|
|
16
|
+
export const Primary = {
|
|
17
|
+
render: Template,
|
|
18
|
+
|
|
19
|
+
args: {
|
|
20
|
+
size: 'm',
|
|
21
|
+
variant: 'secondary',
|
|
22
|
+
},
|
|
23
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
@use '../../styles/mixins/dimension';
|
|
2
|
+
|
|
3
|
+
@keyframes rotate {
|
|
4
|
+
0% {
|
|
5
|
+
transform: rotate(0deg);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
100% {
|
|
9
|
+
transform: rotate(360deg);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.Loader {
|
|
14
|
+
--b-loader-size: initial;
|
|
15
|
+
--b-loader-track-color: initial;
|
|
16
|
+
--b-loader-indicator-color: initial;
|
|
17
|
+
--b-loader-stroke-thickness: initial;
|
|
18
|
+
|
|
19
|
+
/* NOTE: stroke-width is fixed for the exceptional case of use inside buttons */
|
|
20
|
+
--b-loader-stroke-width: 2px;
|
|
21
|
+
--b-loader-view-box-size: 16;
|
|
22
|
+
--b-loader-stroke-dasharray: 16 9999;
|
|
23
|
+
|
|
24
|
+
@include dimension.square(calc(1px * var(--b-loader-size)));
|
|
25
|
+
|
|
26
|
+
display: inline-flex;
|
|
27
|
+
animation: rotate 1s linear infinite;
|
|
28
|
+
|
|
29
|
+
& :where(.track) {
|
|
30
|
+
fill: none;
|
|
31
|
+
stroke: var(--b-loader-track-color);
|
|
32
|
+
stroke-linecap: round;
|
|
33
|
+
stroke-width: var(--b-loader-stroke-width);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
& :where(.indicator) {
|
|
37
|
+
fill: none;
|
|
38
|
+
stroke: var(--b-loader-indicator-color);
|
|
39
|
+
stroke-dasharray: var(--b-loader-stroke-dasharray);
|
|
40
|
+
stroke-linecap: round;
|
|
41
|
+
stroke-width: var(--b-loader-stroke-width);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
&:where(.size-s, .size-m) {
|
|
45
|
+
--b-loader-stroke-width: calc(
|
|
46
|
+
var(--b-loader-stroke-thickness) * var(--b-loader-view-box-size) /
|
|
47
|
+
var(--b-loader-size)
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
&:where(.size-s) {
|
|
52
|
+
--b-loader-size: 28;
|
|
53
|
+
--b-loader-stroke-thickness: 4px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
&:where(.size-m) {
|
|
57
|
+
--b-loader-size: 50;
|
|
58
|
+
--b-loader-stroke-thickness: 6px;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
&:where(.variant-primary) {
|
|
62
|
+
--b-loader-track-color: var(--alpha-color-primary-bg-lightest);
|
|
63
|
+
--b-loader-indicator-color: var(--alpha-color-fg-blue-normal);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
&:where(.variant-secondary) {
|
|
67
|
+
--b-loader-track-color: var(--alpha-color-bg-black-light);
|
|
68
|
+
--b-loader-indicator-color: var(--alpha-color-fg-black-light);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
&:where(.variant-on-overlay) {
|
|
72
|
+
--b-loader-track-color: var(--alpha-color-bg-absolute-white-lightest);
|
|
73
|
+
--b-loader-indicator-color: var(--alpha-color-fg-absolute-white-light);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
|
|
3
|
+
import { render } from '~/src/utils/test'
|
|
4
|
+
|
|
5
|
+
import { LOADER_TEST_ID, Loader } from './Loader'
|
|
6
|
+
|
|
7
|
+
describe('Loader >', () => {
|
|
8
|
+
const renderLoader = (props?: React.ComponentProps<typeof Loader>) =>
|
|
9
|
+
render(<Loader {...props} />)
|
|
10
|
+
|
|
11
|
+
it('should render', () => {
|
|
12
|
+
const { getByTestId } = renderLoader()
|
|
13
|
+
const renderedLoader = getByTestId(LOADER_TEST_ID)
|
|
14
|
+
expect(renderedLoader).toBeInTheDocument()
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
it('should render as a span element by default', () => {
|
|
18
|
+
const { getByTestId } = renderLoader()
|
|
19
|
+
const renderedLoader = getByTestId(LOADER_TEST_ID)
|
|
20
|
+
expect(renderedLoader.tagName).toBe('SPAN')
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
it('should forward ref', () => {
|
|
24
|
+
const ref = React.createRef<HTMLDivElement>()
|
|
25
|
+
renderLoader({ ref })
|
|
26
|
+
expect(ref.current).toBeInTheDocument()
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
it('should receive size', () => {
|
|
30
|
+
const { getByTestId } = renderLoader({ size: 'm' })
|
|
31
|
+
const renderedLoader = getByTestId(LOADER_TEST_ID)
|
|
32
|
+
expect(renderedLoader).toHaveClass('size-m')
|
|
33
|
+
})
|
|
34
|
+
})
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react'
|
|
2
|
+
|
|
3
|
+
import classNames from 'classnames'
|
|
4
|
+
|
|
5
|
+
import { type LoaderProps } from './Loader.types'
|
|
6
|
+
|
|
7
|
+
import styles from './Loader.module.scss'
|
|
8
|
+
|
|
9
|
+
export const LOADER_TEST_ID = 'bezier-loader'
|
|
10
|
+
|
|
11
|
+
export const Loader = forwardRef<HTMLSpanElement, LoaderProps>(function Loader(
|
|
12
|
+
{ className, size, variant = 'secondary', ...rest },
|
|
13
|
+
forwardedRef
|
|
14
|
+
) {
|
|
15
|
+
return (
|
|
16
|
+
<span
|
|
17
|
+
className={classNames(
|
|
18
|
+
styles.Loader,
|
|
19
|
+
size && styles[`size-${size}`],
|
|
20
|
+
styles[`variant-${variant}`],
|
|
21
|
+
className
|
|
22
|
+
)}
|
|
23
|
+
ref={forwardedRef}
|
|
24
|
+
data-testid={LOADER_TEST_ID}
|
|
25
|
+
{...rest}
|
|
26
|
+
>
|
|
27
|
+
<svg
|
|
28
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
29
|
+
viewBox="0 0 16 16"
|
|
30
|
+
>
|
|
31
|
+
<circle
|
|
32
|
+
cx="8"
|
|
33
|
+
cy="8"
|
|
34
|
+
r="6.5"
|
|
35
|
+
className={styles.track}
|
|
36
|
+
/>
|
|
37
|
+
|
|
38
|
+
<circle
|
|
39
|
+
cx="8"
|
|
40
|
+
cy="8"
|
|
41
|
+
r="6.5"
|
|
42
|
+
className={styles.indicator}
|
|
43
|
+
/>
|
|
44
|
+
</svg>
|
|
45
|
+
</span>
|
|
46
|
+
)
|
|
47
|
+
})
|
|
@@ -4,18 +4,18 @@ import {
|
|
|
4
4
|
type SizeProps,
|
|
5
5
|
} from '~/src/types/props'
|
|
6
6
|
|
|
7
|
-
type
|
|
7
|
+
type LoaderSize = 's' | 'm'
|
|
8
8
|
|
|
9
|
-
interface
|
|
9
|
+
interface LoaderOwnProps {
|
|
10
10
|
/**
|
|
11
|
-
* The style variant of
|
|
11
|
+
* The style variant of Loader.
|
|
12
12
|
* @default 'secondary'
|
|
13
13
|
*/
|
|
14
14
|
variant?: 'primary' | 'secondary' | 'on-overlay'
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
export interface
|
|
17
|
+
export interface LoaderProps
|
|
18
18
|
extends Omit<BezierComponentProps<'span'>, keyof ColorProps>,
|
|
19
|
-
SizeProps<
|
|
19
|
+
SizeProps<LoaderSize>,
|
|
20
20
|
ColorProps,
|
|
21
|
-
|
|
21
|
+
LoaderOwnProps {}
|
|
@@ -4,7 +4,7 @@ import { isBezierIcon } from '@channel.io/bezier-icons'
|
|
|
4
4
|
import * as TogglePrimitive from '@radix-ui/react-toggle'
|
|
5
5
|
import classNames from 'classnames'
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { AlphaLoader } from '~/src/components/AlphaLoader'
|
|
8
8
|
import { useToggleButtonContext } from '~/src/components/AlphaToggleButton/ToggleButtonContext'
|
|
9
9
|
import { BaseButton } from '~/src/components/BaseButton'
|
|
10
10
|
import { Icon, type IconSize } from '~/src/components/Icon'
|
|
@@ -104,8 +104,8 @@ export const ToggleButton = forwardRef<HTMLButtonElement, ToggleButtonProps>(
|
|
|
104
104
|
styles[`size-${ICON_SIZE}`]
|
|
105
105
|
)}
|
|
106
106
|
>
|
|
107
|
-
<
|
|
108
|
-
className={styles.
|
|
107
|
+
<AlphaLoader
|
|
108
|
+
className={styles.Loader}
|
|
109
109
|
variant="secondary"
|
|
110
110
|
/>
|
|
111
111
|
</div>
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { ArgsTable, Canvas, Story } from '@storybook/addon-docs'
|
|
2
|
-
import { Banner, BannerVariant } from '~/src/components/Banner'
|
|
3
1
|
import { StackItem, VStack } from '~/src/components/Stack'
|
|
2
|
+
import * as BannerStories from './Banner.stories'
|
|
3
|
+
import { ArgTypes, Canvas, Meta, Story } from '@storybook/addon-docs'
|
|
4
|
+
|
|
5
|
+
<Meta of={BannerStories} />
|
|
4
6
|
|
|
5
7
|
# Banner
|
|
6
8
|
|
|
@@ -8,57 +10,41 @@ import { StackItem, VStack } from '~/src/components/Stack'
|
|
|
8
10
|
|
|
9
11
|
안내, 경고, 추천 등의 다양한 정보를 잘 전달하고 싶을 때 사용합니다.
|
|
10
12
|
|
|
11
|
-
<Canvas
|
|
12
|
-
<Story id="components-banner--overview" />
|
|
13
|
-
</Canvas>
|
|
13
|
+
<Canvas of={BannerStories.Overview} />
|
|
14
14
|
|
|
15
15
|
## Usage
|
|
16
16
|
|
|
17
17
|
- 최소 너비는 200px입니다.
|
|
18
18
|
|
|
19
|
-
<Canvas
|
|
20
|
-
<Story id="components-banner--usage-min-width" />
|
|
21
|
-
</Canvas>
|
|
19
|
+
<Canvas of={BannerStories.UsageMinWidth} />
|
|
22
20
|
|
|
23
21
|
- Parent의 너비를 가득 채웁니다.
|
|
24
22
|
|
|
25
|
-
<Canvas
|
|
26
|
-
<Story id="components-banner--usage-full-width" />
|
|
27
|
-
</Canvas>
|
|
23
|
+
<Canvas of={BannerStories.UsageFullWidth} />
|
|
28
24
|
|
|
29
25
|
- 최대 너비는 없으나, Banner의 텍스트 영역은 좌측 상단에 위치합니다.
|
|
30
26
|
|
|
31
|
-
<Canvas
|
|
32
|
-
<Story id="components-banner--usage-max-width" />
|
|
33
|
-
</Canvas>
|
|
27
|
+
<Canvas of={BannerStories.UsageMaxWidth} />
|
|
34
28
|
|
|
35
29
|
- 연속으로 보여줘야 하는 경우, Banner 간의 간격은 6px 입니다.
|
|
36
30
|
|
|
37
|
-
<Canvas
|
|
38
|
-
<Story id="components-banner--usage-consecutive" />
|
|
39
|
-
</Canvas>
|
|
31
|
+
<Canvas of={BannerStories.UsageConsecutive} />
|
|
40
32
|
|
|
41
33
|
- 아이콘을 제거하여 사용할 수 있습니다.
|
|
42
34
|
|
|
43
|
-
<Canvas
|
|
44
|
-
<Story id="components-banner--usage-no-icon" />
|
|
45
|
-
</Canvas>
|
|
35
|
+
<Canvas of={BannerStories.UsageNoIcon} />
|
|
46
36
|
|
|
47
37
|
### Link
|
|
48
38
|
|
|
49
39
|
- 링크가 필요한 경우, 마지막에 bold, underlined text로 들어가게 됩니다.
|
|
50
40
|
- `hasLink={true}` prop을 통해 링크를 enable하고, `linkText` prop으로 링크의 텍스트를 설정할 수 있습니다.
|
|
51
41
|
|
|
52
|
-
<Canvas
|
|
53
|
-
<Story id="components-banner--usage-link" />
|
|
54
|
-
</Canvas>
|
|
42
|
+
<Canvas of={BannerStories.UsageLink} />
|
|
55
43
|
|
|
56
44
|
- `linkTo` prop을 활용하면, 링크를 클릭했을 때 이동할 location을 지정할 수 있습니다.
|
|
57
45
|
- 기본적으로, 링크를 클릭하면 새 탭으로 해당 location이 열리게 됩니다. (`<a>` 태그, `target="_blank"`, `rel="noopener noreferrer"` 를 기본으로 합니다.)
|
|
58
46
|
|
|
59
|
-
<Canvas
|
|
60
|
-
<Story id="components-banner--usage-link-to" />
|
|
61
|
-
</Canvas>
|
|
47
|
+
<Canvas of={BannerStories.UsageLinkTo} />
|
|
62
48
|
|
|
63
49
|
- Default로 제공되는 링크 메커니즘을 이용할 수 없는 경우가 있습니다. (대표적인 usecase는, SPA에서 `react-router`와 같은 라이브러리가 제공하는 링크 컴포넌를 활용하는 경우입니다.) 이 경우, `renderLink` prop을 지정하여 링크를 어떤 컴포넌트로 렌더링할지 결정할 수 있습니다.
|
|
64
50
|
|
|
@@ -69,13 +55,13 @@ const renderLink = ({ content, linkTo }) => <Link to={linkTo}>{ content }</Link>
|
|
|
69
55
|
|
|
70
56
|
<Banner
|
|
71
57
|
...
|
|
72
|
-
renderLink={
|
|
58
|
+
renderLink={renderLink}
|
|
73
59
|
/>
|
|
74
60
|
```
|
|
75
61
|
|
|
76
62
|
## API
|
|
77
63
|
|
|
78
|
-
<
|
|
64
|
+
<ArgTypes of={BannerStories} />
|
|
79
65
|
|
|
80
66
|
## Version
|
|
81
67
|
|