@channel.io/bezier-react 2.2.3 → 2.3.0

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.
Files changed (49) hide show
  1. package/dist/cjs/components/Emoji/Emoji.js +6 -2
  2. package/dist/cjs/components/Emoji/Emoji.js.map +1 -1
  3. package/dist/cjs/components/FeatureProvider/SmoothCornersFeature/SmoothCornersFeature.js +2 -2
  4. package/dist/cjs/components/FeatureProvider/SmoothCornersFeature/SmoothCornersFeature.js.map +1 -1
  5. package/dist/cjs/components/OutlineItem/OutlineItem.js +1 -1
  6. package/dist/cjs/components/OutlineItem/OutlineItem.js.map +1 -1
  7. package/dist/cjs/components/Toast/Toast.js +4 -3
  8. package/dist/cjs/components/Toast/Toast.js.map +1 -1
  9. package/dist/cjs/styles.css +1 -1
  10. package/dist/esm/components/Emoji/Emoji.mjs +6 -2
  11. package/dist/esm/components/Emoji/Emoji.mjs.map +1 -1
  12. package/dist/esm/components/FeatureProvider/SmoothCornersFeature/SmoothCornersFeature.mjs +2 -2
  13. package/dist/esm/components/FeatureProvider/SmoothCornersFeature/SmoothCornersFeature.mjs.map +1 -1
  14. package/dist/esm/components/OutlineItem/OutlineItem.mjs +1 -1
  15. package/dist/esm/components/OutlineItem/OutlineItem.mjs.map +1 -1
  16. package/dist/esm/components/Toast/Toast.mjs +4 -3
  17. package/dist/esm/components/Toast/Toast.mjs.map +1 -1
  18. package/dist/esm/styles.css +1 -1
  19. package/dist/types/components/Emoji/Emoji.d.ts +0 -1
  20. package/dist/types/components/Emoji/Emoji.d.ts.map +1 -1
  21. package/dist/types/components/Emoji/Emoji.types.d.ts +8 -1
  22. package/dist/types/components/Emoji/Emoji.types.d.ts.map +1 -1
  23. package/dist/types/components/Toast/Toast.d.ts +1 -1
  24. package/dist/types/components/Toast/Toast.d.ts.map +1 -1
  25. package/dist/types/components/Toast/Toast.types.d.ts +8 -0
  26. package/dist/types/components/Toast/Toast.types.d.ts.map +1 -1
  27. package/dist/types/components/TokenProvider/TokenProvider.d.ts +1 -1
  28. package/dist/types/components/TokenProvider/TokenProvider.d.ts.map +1 -1
  29. package/package.json +3 -3
  30. package/src/components/AlphaButton/Button.module.scss +3 -0
  31. package/src/components/AlphaFloatingButton/FloatingButton.module.scss +2 -0
  32. package/src/components/AlphaFloatingIconButton/FloatingIconButton.module.scss +2 -0
  33. package/src/components/AlphaIconButton/IconButton.module.scss +3 -0
  34. package/src/components/Banner/Banner.stories.tsx +2 -2
  35. package/src/components/Button/Button.module.scss +8 -1
  36. package/src/components/Emoji/Emoji.stories.tsx +5 -15
  37. package/src/components/Emoji/Emoji.test.tsx +1 -3
  38. package/src/components/Emoji/Emoji.tsx +10 -2
  39. package/src/components/Emoji/Emoji.types.ts +8 -1
  40. package/src/components/Icon/Icon.stories.tsx +1 -2
  41. package/src/components/OutlineItem/OutlineItem.module.scss +1 -3
  42. package/src/components/OutlineItem/OutlineItem.tsx +1 -1
  43. package/src/components/TextField/TextField.module.scss +1 -0
  44. package/src/components/Toast/Toast.tsx +7 -3
  45. package/src/components/Toast/Toast.types.ts +8 -0
  46. package/src/stories/alpha-color.mdx +64 -51
  47. package/src/styles/components/elevation.module.scss +1 -0
  48. package/src/styles/components/radius.module.scss +1 -0
  49. package/src/styles/components/z-index.module.scss +1 -0
@@ -7,7 +7,6 @@ export declare const EMOJI_TEST_ID = "bezier-emoji";
7
7
  * ```tsx
8
8
  * <Emoji
9
9
  * name="A"
10
- * imageUrl="https://cf.exp.channel.io/asset/emoji/images/80/a.png"
11
10
  * size="20"
12
11
  * />
13
12
  * ```
@@ -1 +1 @@
1
- {"version":3,"file":"Emoji.d.ts","sourceRoot":"","sources":["../../../../src/components/Emoji/Emoji.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAA;AAM7D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAA;AAI/C,eAAO,MAAM,aAAa,iBAAiB,CAAA;AAE3C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,KAAK,mFAoBhB,CAAA"}
1
+ {"version":3,"file":"Emoji.d.ts","sourceRoot":"","sources":["../../../../src/components/Emoji/Emoji.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAA;AAO7D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAA;AAI/C,eAAO,MAAM,aAAa,iBAAiB,CAAA;AAM3C;;;;;;;;;GASG;AACH,eAAO,MAAM,KAAK,mFAwBhB,CAAA"}
@@ -1,8 +1,15 @@
1
1
  import type { BezierComponentProps, SizeProps } from "../../types/props";
2
2
  export type EmojiSize = '16' | '20' | '24' | '30' | '36' | '42' | '48' | '60' | '72' | '90' | '120';
3
3
  interface EmojiOwnProps {
4
+ /**
5
+ * Name of the emoji. e.g. 'grinning', 'smiley', etc.
6
+ */
4
7
  name: string;
5
- imageUrl: string;
8
+ /**
9
+ * @deprecated
10
+ * `imageUrl` is created in the component and will be removed in the next major version.
11
+ */
12
+ imageUrl?: string;
6
13
  }
7
14
  export interface EmojiProps extends BezierComponentProps<'div'>, SizeProps<EmojiSize>, EmojiOwnProps {
8
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Emoji.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Emoji/Emoji.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,0BAAyB;AAExE,MAAM,MAAM,SAAS,GACjB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,CAAA;AAET,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,UACf,SAAQ,oBAAoB,CAAC,KAAK,CAAC,EACjC,SAAS,CAAC,SAAS,CAAC,EACpB,aAAa;CAAG"}
1
+ {"version":3,"file":"Emoji.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Emoji/Emoji.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,0BAAyB;AAExE,MAAM,MAAM,SAAS,GACjB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,CAAA;AAET,UAAU,aAAa;IACrB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,UACf,SAAQ,oBAAoB,CAAC,KAAK,CAAC,EACjC,SAAS,CAAC,SAAS,CAAC,EACpB,aAAa;CAAG"}
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { type ToastProps, type ToastProviderProps, type ToastType } from './Toast.types';
3
3
  export declare function Toast({ placement, appearance: appearanceProp, preset, icon: iconProp, content, zIndex, autoDismiss, autoDismissTimeout, version, onDismiss, }: ToastProps): React.JSX.Element;
4
- export declare function ToastProvider({ autoDismissTimeout, container: givenContainer, offset, children, }: ToastProviderProps): React.JSX.Element;
4
+ export declare function ToastProvider({ autoDismissTimeout, container: givenContainer, zIndex, offset, children, }: ToastProviderProps): React.JSX.Element;
5
5
  export declare function useToast(): {
6
6
  addToast: (content: import("./Toast.types").ToastContent, options?: import("./Toast.types").ToastOptions) => import("./Toast.types").ToastId;
7
7
  updateToast: (toastId: import("./Toast.types").ToastId, content: import("./Toast.types").ToastContent, options?: import("./Toast.types").ToastOptions) => import("./Toast.types").ToastId;
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../../src/components/Toast/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAA;AA2BvE,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACf,MAAM,eAAe,CAAA;AA8BtB,wBAAgB,KAAK,CAAC,EACpB,SAAS,EACT,UAAU,EAAE,cAAc,EAC1B,MAAkB,EAClB,IAAI,EAAE,QAAQ,EACd,OAAO,EACP,MAAgB,EAChB,WAAkB,EAClB,kBAAkB,EAClB,OAAW,EACX,SAAS,GACV,EAAE,UAAU,qBAmGZ;AAkBD,wBAAgB,aAAa,CAAC,EAC5B,kBAAyB,EACzB,SAAS,EAAE,cAAc,EACzB,MAAuB,EACvB,QAAa,GACd,EAAE,kBAAkB,qBAgDpB;AAED,wBAAgB,QAAQ;;;;;;;EAevB"}
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../../src/components/Toast/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAA;AA2BvE,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACf,MAAM,eAAe,CAAA;AA8BtB,wBAAgB,KAAK,CAAC,EACpB,SAAS,EACT,UAAU,EAAE,cAAc,EAC1B,MAAkB,EAClB,IAAI,EAAE,QAAQ,EACd,OAAO,EACP,MAAgB,EAChB,WAAkB,EAClB,kBAAkB,EAClB,OAAW,EACX,SAAS,GACV,EAAE,UAAU,qBAmGZ;AAkBD,wBAAgB,aAAa,CAAC,EAC5B,kBAAyB,EACzB,SAAS,EAAE,cAAc,EACzB,MAAgB,EAChB,MAAuB,EACvB,QAAa,GACd,EAAE,kBAAkB,qBAmDpB;AAED,wBAAgB,QAAQ;;;;;;;EAevB"}
@@ -10,6 +10,9 @@ interface ToastOwnProps {
10
10
  appearance?: ToastAppearance;
11
11
  preset?: ToastPreset;
12
12
  icon?: BezierIcon;
13
+ /**
14
+ * @deprecated Use `zIndex` of `ToastProvider` instead
15
+ */
13
16
  zIndex?: ZIndex;
14
17
  autoDismiss?: boolean;
15
18
  autoDismissTimeout?: number;
@@ -31,6 +34,11 @@ type Offset = {
31
34
  interface ToastProviderOwnProps {
32
35
  offset?: Offset;
33
36
  container?: HTMLElement | null;
37
+ /**
38
+ * z-index level of the Toast container
39
+ * @default 'toast'
40
+ */
41
+ zIndex?: ZIndex;
34
42
  }
35
43
  export interface ToastProviderProps extends ChildrenProps, Pick<ToastProps, 'autoDismissTimeout'>, ToastProviderOwnProps {
36
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Toast/Toast.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAE1D,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,0BAAyB;AACzE,OAAO,EAAE,KAAK,MAAM,EAAE,2BAA0B;AAEhD,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,cAAc,CAAA;AAE3D,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;AAEtE,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEhF,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CACvB;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;AAEvD,MAAM,WAAW,UAAW,SAAQ,YAAY,CAAC,YAAY,CAAC,EAAE,aAAa;CAAG;AAEhF,KAAK,MAAM,GAAG;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,UAAU,qBAAqB;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAC/B;AAED,MAAM,WAAW,kBACf,SAAQ,aAAa,EACnB,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,EACtC,qBAAqB;CAAG;AAE5B,MAAM,MAAM,OAAO,GAAG,MAAM,CAAA;AAE5B,MAAM,MAAM,iBAAiB,GAAG,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAA;AAErD,MAAM,MAAM,YAAY,GAAG,IAAI,CAC7B,UAAU,EACV,QAAQ,GAAG,MAAM,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,CAC5D,GAAG;IACF,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,iBAAiB,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG;IACrC,EAAE,EAAE,OAAO,CAAA;IACX,OAAO,EAAE,YAAY,CAAA;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,OAAO,CAAA;IAC/D,MAAM,EAAE,CACN,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,YAAY,KACnB,OAAO,CAAA;IACZ,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAA;IAC7B,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,UAAU,EAAE,SAAS,EAAE,CAAA;IACvB,WAAW,EAAE,SAAS,EAAE,CAAA;CACzB"}
1
+ {"version":3,"file":"Toast.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Toast/Toast.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAE1D,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,0BAAyB;AACzE,OAAO,EAAE,KAAK,MAAM,EAAE,2BAA0B;AAEhD,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,cAAc,CAAA;AAE3D,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;AAEtE,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEhF,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CACvB;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;AAEvD,MAAM,WAAW,UAAW,SAAQ,YAAY,CAAC,YAAY,CAAC,EAAE,aAAa;CAAG;AAEhF,KAAK,MAAM,GAAG;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,UAAU,qBAAqB;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC9B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,kBACf,SAAQ,aAAa,EACnB,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,EACtC,qBAAqB;CAAG;AAE5B,MAAM,MAAM,OAAO,GAAG,MAAM,CAAA;AAE5B,MAAM,MAAM,iBAAiB,GAAG,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAA;AAErD,MAAM,MAAM,YAAY,GAAG,IAAI,CAC7B,UAAU,EACV,QAAQ,GAAG,MAAM,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,CAC5D,GAAG;IACF,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,iBAAiB,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG;IACrC,EAAE,EAAE,OAAO,CAAA;IACX,OAAO,EAAE,YAAY,CAAA;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,OAAO,CAAA;IAC/D,MAAM,EAAE,CACN,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,YAAY,KACnB,OAAO,CAAA;IACZ,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAA;IAC7B,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,UAAU,EAAE,SAAS,EAAE,CAAA;IACvB,WAAW,EAAE,SAAS,EAAE,CAAA;CACzB"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { type TokenContextValue, type TokenProviderProps } from './TokenProvider.types';
3
- declare const useTokenContext: (consumerName: string) => NonNullable<TokenContextValue | null>;
3
+ declare const useTokenContext: (consumerName: string) => TokenContextValue;
4
4
  export { useTokenContext };
5
5
  /**
6
6
  * @private
@@ -1 +1 @@
1
- {"version":3,"file":"TokenProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/TokenProvider/TokenProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAOtC,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAA;AAE9B,QAAA,MAA6B,eAAe,iEACoB,CAAA;AAEhE,OAAO,EAAE,eAAe,EAAE,CAAA;AAa1B;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,kBAAkB,qBAcxE"}
1
+ {"version":3,"file":"TokenProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/TokenProvider/TokenProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAOtC,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAA;AAE9B,QAAA,MAA6B,eAAe,6CACoB,CAAA;AAEhE,OAAO,EAAE,eAAe,EAAE,CAAA;AAa1B;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,kBAAkB,qBAcxE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@channel.io/bezier-react",
3
- "version": "2.2.3",
3
+ "version": "2.3.0",
4
4
  "description": "React components library that implements Bezier design system.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -63,7 +63,7 @@
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.32.0",
66
+ "@channel.io/bezier-icons": "0.35.0",
67
67
  "@chromatic-com/storybook": "^1",
68
68
  "@rollup/plugin-alias": "^5.1.0",
69
69
  "@rollup/plugin-babel": "^6.0.4",
@@ -131,7 +131,7 @@
131
131
  }
132
132
  },
133
133
  "dependencies": {
134
- "@channel.io/bezier-tokens": "0.2.6",
134
+ "@channel.io/bezier-tokens": "0.2.7",
135
135
  "@radix-ui/react-checkbox": "^1.0.4",
136
136
  "@radix-ui/react-dialog": "^1.0.5",
137
137
  "@radix-ui/react-radio-group": "^1.1.3",
@@ -186,6 +186,7 @@ $chromatic-colors: 'blue', 'red', 'green', 'cobalt', 'orange', 'pink', 'purple';
186
186
  &:where(.variant-primary) {
187
187
  @each $color in $chromatic-colors {
188
188
  &:where(.color-#{'' + $color}) {
189
+ /* stylelint-disable-next-line bezier/validate-token */
189
190
  background-color: var(--bgtxt-#{$color}-dark);
190
191
  }
191
192
  }
@@ -202,6 +203,7 @@ $chromatic-colors: 'blue', 'red', 'green', 'cobalt', 'orange', 'pink', 'purple';
202
203
  &:where(.variant-secondary) {
203
204
  @each $color in $chromatic-colors {
204
205
  &:where(.color-#{'' + $color}) {
206
+ /* stylelint-disable-next-line bezier/validate-token */
205
207
  background-color: var(--bgtxt-#{$color}-lighter);
206
208
  }
207
209
  }
@@ -214,6 +216,7 @@ $chromatic-colors: 'blue', 'red', 'green', 'cobalt', 'orange', 'pink', 'purple';
214
216
  &:where(.variant-tertiary) {
215
217
  @each $color in $chromatic-colors {
216
218
  &:where(.color-#{'' + $color}) {
219
+ /* stylelint-disable-next-line bezier/validate-token */
217
220
  background-color: var(--bgtxt-#{$color}-lightest);
218
221
  }
219
222
  }
@@ -139,6 +139,7 @@ $chromatic-colors: 'blue', 'red', 'green', 'cobalt', 'orange', 'pink', 'purple';
139
139
  &:where(.variant-primary) {
140
140
  @each $color in $chromatic-colors {
141
141
  &:where(.color-#{'' + $color}) {
142
+ /* stylelint-disable-next-line bezier/validate-token */
142
143
  background-color: var(--bgtxt-#{$color}-dark);
143
144
  }
144
145
  }
@@ -155,6 +156,7 @@ $chromatic-colors: 'blue', 'red', 'green', 'cobalt', 'orange', 'pink', 'purple';
155
156
  &:where(.variant-secondary) {
156
157
  @each $color in $chromatic-colors {
157
158
  &:where(.color-#{'' + $color}) {
159
+ /* stylelint-disable-next-line bezier/validate-token */
158
160
  background-color: var(--bgtxt-#{$color}-lighter);
159
161
  }
160
162
  }
@@ -112,6 +112,7 @@ $chromatic-colors: 'blue', 'red', 'green', 'cobalt', 'orange', 'pink', 'purple';
112
112
  &:where(.variant-primary) {
113
113
  @each $color in $chromatic-colors {
114
114
  &:where(.color-#{'' + $color}) {
115
+ /* stylelint-disable-next-line bezier/validate-token */
115
116
  background-color: var(--bgtxt-#{$color}-dark);
116
117
  }
117
118
  }
@@ -128,6 +129,7 @@ $chromatic-colors: 'blue', 'red', 'green', 'cobalt', 'orange', 'pink', 'purple';
128
129
  &:where(.variant-secondary) {
129
130
  @each $color in $chromatic-colors {
130
131
  &:where(.color-#{'' + $color}) {
132
+ /* stylelint-disable-next-line bezier/validate-token */
131
133
  background-color: var(--bgtxt-#{$color}-lighter);
132
134
  }
133
135
  }
@@ -167,6 +167,7 @@ $chromatic-colors: 'blue', 'red', 'green', 'cobalt', 'orange', 'pink', 'purple';
167
167
  &:where(.variant-primary) {
168
168
  @each $color in $chromatic-colors {
169
169
  &:where(.color-#{'' + $color}) {
170
+ /* stylelint-disable-next-line bezier/validate-token */
170
171
  background-color: var(--bgtxt-#{$color}-dark);
171
172
  }
172
173
  }
@@ -183,6 +184,7 @@ $chromatic-colors: 'blue', 'red', 'green', 'cobalt', 'orange', 'pink', 'purple';
183
184
  &:where(.variant-secondary) {
184
185
  @each $color in $chromatic-colors {
185
186
  &:where(.color-#{'' + $color}) {
187
+ /* stylelint-disable-next-line bezier/validate-token */
186
188
  background-color: var(--bgtxt-#{$color}-lighter);
187
189
  }
188
190
  }
@@ -195,6 +197,7 @@ $chromatic-colors: 'blue', 'red', 'green', 'cobalt', 'orange', 'pink', 'purple';
195
197
  &:where(.variant-tertiary) {
196
198
  @each $color in $chromatic-colors {
197
199
  &:where(.color-#{'' + $color}) {
200
+ /* stylelint-disable-next-line bezier/validate-token */
198
201
  background-color: var(--bgtxt-#{$color}-lightest);
199
202
  }
200
203
  }
@@ -4,7 +4,7 @@ import {
4
4
  BlockIcon,
5
5
  CancelIcon,
6
6
  CancelSmallIcon,
7
- ChannelIcon,
7
+ ChannelBtnFilledIcon,
8
8
  CheckCircleFilledIcon,
9
9
  ErrorTriangleFilledIcon,
10
10
  Hourglass3Icon,
@@ -262,7 +262,7 @@ export const UsageLinkTo: StoryObj<{}> = {
262
262
  render: () => (
263
263
  <Banner
264
264
  variant="cobalt"
265
- icon={ChannelIcon}
265
+ icon={ChannelBtnFilledIcon}
266
266
  content="채널톡 정말 좋은 서비스에요."
267
267
  hasLink
268
268
  linkText="사용안내"
@@ -81,9 +81,11 @@ $active-selector: ':where(.active, :hover):where(:not(:disabled))';
81
81
  @each $color-variant in $chromatic-color-variants {
82
82
  &:where(.color-#{$color-variant}) {
83
83
  color: var(--bgtxt-absolute-white-dark);
84
+ /* stylelint-disable-next-line bezier/validate-token */
84
85
  background-color: var(--bgtxt-#{$color-variant}-normal);
85
86
 
86
87
  &#{$active-selector} {
88
+ /* stylelint-disable-next-line bezier/validate-token */
87
89
  background-color: var(--bgtxt-#{$color-variant}-dark);
88
90
  }
89
91
  }
@@ -112,12 +114,14 @@ $active-selector: ':where(.active, :hover):where(:not(:disabled))';
112
114
  &:where(.style-secondary) {
113
115
  @each $color-variant in $chromatic-color-variants {
114
116
  &:where(.color-#{$color-variant}) {
117
+ /* stylelint-disable bezier/validate-token */
115
118
  color: var(--bgtxt-#{$color-variant}-normal);
116
119
  background-color: var(--bgtxt-#{$color-variant}-lightest);
117
120
 
118
121
  &#{$active-selector} {
119
122
  background-color: var(--bgtxt-#{$color-variant}-lighter);
120
123
  }
124
+ /* stylelint-enable bezier/validate-token */
121
125
  }
122
126
  }
123
127
 
@@ -154,10 +158,11 @@ $active-selector: ':where(.active, :hover):where(:not(:disabled))';
154
158
 
155
159
  @each $color-variant in $chromatic-color-variants {
156
160
  &:where(.color-#{$color-variant}) {
161
+ /* stylelint-disable-next-line bezier/validate-token */
157
162
  color: var(--bgtxt-#{$color-variant}-normal);
158
163
 
159
164
  &#{$active-selector} {
160
- color: var(--bgtxt-#{$color-variant}-dark);
165
+ /* stylelint-disable-next-line bezier/validate-token */
161
166
  background-color: var(--bgtxt-#{$color-variant}-lightest);
162
167
  }
163
168
  }
@@ -192,9 +197,11 @@ $active-selector: ':where(.active, :hover):where(:not(:disabled))';
192
197
  @each $color-variant in $chromatic-color-variants {
193
198
  &:where(.color-#{$color-variant}) {
194
199
  color: var(--bgtxt-absolute-white-dark);
200
+ /* stylelint-disable-next-line bezier/validate-token */
195
201
  background-color: var(--bgtxt-#{$color-variant}-normal);
196
202
 
197
203
  &#{$active-selector} {
204
+ /* stylelint-disable-next-line bezier/validate-token */
198
205
  background-color: var(--bgtxt-#{$color-variant}-dark);
199
206
  }
200
207
  }
@@ -3,25 +3,15 @@ import { type Meta, type StoryObj } from '@storybook/react'
3
3
  import { Emoji } from './Emoji'
4
4
  import { type EmojiProps } from './Emoji.types'
5
5
 
6
- const MOCK_EMOJI_URL =
7
- 'https://cf.exp.channel.io/asset/emoji/images/80/blush.png'
8
-
9
- const meta: Meta<typeof Emoji> = {
6
+ const meta = {
10
7
  component: Emoji,
11
- argTypes: {
12
- imageUrl: {
13
- control: {
14
- type: 'text',
15
- },
16
- },
17
- },
18
- }
8
+ } satisfies Meta<EmojiProps>
19
9
 
20
10
  export default meta
21
11
 
22
- export const Primary: StoryObj<EmojiProps> = {
12
+ export const Primary = {
23
13
  args: {
24
14
  size: '24',
25
- imageUrl: MOCK_EMOJI_URL,
15
+ name: 'blush',
26
16
  },
27
- }
17
+ } satisfies StoryObj<typeof meta>
@@ -5,10 +5,8 @@ import { render } from '~/src/utils/test'
5
5
  import { EMOJI_TEST_ID, Emoji } from './Emoji'
6
6
  import { type EmojiProps } from './Emoji.types'
7
7
 
8
- const MOCK_EMOJI_URL = 'https://cf.exp.channel.io/asset/emoji/images/80/a.png'
9
-
10
8
  describe('Emoji Test >', () => {
11
- const defaultProps: EmojiProps = { imageUrl: MOCK_EMOJI_URL, name: 'a' }
9
+ const defaultProps: EmojiProps = { size: '24', name: 'a' }
12
10
 
13
11
  const renderComponent = (props?: Partial<EmojiProps>) =>
14
12
  render(
@@ -2,6 +2,7 @@ import React, { type CSSProperties, forwardRef } from 'react'
2
2
 
3
3
  import classNames from 'classnames'
4
4
 
5
+ import { isDev } from '~/src/utils/assert'
5
6
  import { cssUrl } from '~/src/utils/style'
6
7
 
7
8
  import { type EmojiProps } from './Emoji.types'
@@ -10,13 +11,16 @@ import styles from './Emoji.module.scss'
10
11
 
11
12
  export const EMOJI_TEST_ID = 'bezier-emoji'
12
13
 
14
+ const getEmojiUrl = (name: EmojiProps['name'], size: '160' | '80' | '44') => {
15
+ return `https://cf${isDev() ? '.exp' : ''}.channel.io/asset/emoji/images/${size}/${name}.png`
16
+ }
17
+
13
18
  /**
14
19
  * `Emoji` is a component for representing emoji with variant size.
15
20
  * @example
16
21
  * ```tsx
17
22
  * <Emoji
18
23
  * name="A"
19
- * imageUrl="https://cf.exp.channel.io/asset/emoji/images/80/a.png"
20
24
  * size="20"
21
25
  * />
22
26
  * ```
@@ -25,6 +29,8 @@ export const Emoji = forwardRef<HTMLDivElement, EmojiProps>(function Emoji(
25
29
  { style, imageUrl, className, name, size = '24', ...rest },
26
30
  forwardedRef
27
31
  ) {
32
+ const assetSize = Number(size) >= 60 ? '160' : '80'
33
+
28
34
  return (
29
35
  <div
30
36
  ref={forwardedRef}
@@ -32,7 +38,9 @@ export const Emoji = forwardRef<HTMLDivElement, EmojiProps>(function Emoji(
32
38
  aria-description={name}
33
39
  style={
34
40
  {
35
- '--b-emoji-background-image': cssUrl(imageUrl),
41
+ '--b-emoji-background-image': cssUrl(
42
+ imageUrl ?? getEmojiUrl(name, assetSize)
43
+ ),
36
44
  ...style,
37
45
  } as CSSProperties
38
46
  }
@@ -14,8 +14,15 @@ export type EmojiSize =
14
14
  | '120'
15
15
 
16
16
  interface EmojiOwnProps {
17
+ /**
18
+ * Name of the emoji. e.g. 'grinning', 'smiley', etc.
19
+ */
17
20
  name: string
18
- imageUrl: string
21
+ /**
22
+ * @deprecated
23
+ * `imageUrl` is created in the component and will be removed in the next major version.
24
+ */
25
+ imageUrl?: string
19
26
  }
20
27
 
21
28
  export interface EmojiProps
@@ -5,7 +5,6 @@ import {
5
5
  BookmarkFilledIcon,
6
6
  CallInProgressIcon,
7
7
  ChannelBtnFilledIcon,
8
- ChannelIcon,
9
8
  CheckCircleIcon,
10
9
  ChevronDownDoubleIcon,
11
10
  ChevronRightIcon,
@@ -55,7 +54,7 @@ export default meta
55
54
 
56
55
  export const Primary: StoryObj<IconProps> = {
57
56
  args: {
58
- source: ChannelIcon,
57
+ source: ChannelBtnFilledIcon,
59
58
  size: 'm',
60
59
  color: 'bg-black-darker',
61
60
  },
@@ -35,9 +35,7 @@
35
35
  display: flex;
36
36
  align-items: center;
37
37
  justify-content: center;
38
-
39
- width: 16px;
40
- height: 100%;
38
+ margin-right: 6px;
41
39
  }
42
40
 
43
41
  .LeftContent {
@@ -86,7 +86,7 @@ export const OutlineItem = forwardRef<
86
86
  <Icon
87
87
  className={styles.Icon}
88
88
  source={open ? ChevronSmallDownIcon : ChevronSmallRightIcon}
89
- size="xs"
89
+ size="s"
90
90
  color="txt-black-dark"
91
91
  />
92
92
  )}
@@ -104,6 +104,7 @@
104
104
 
105
105
  .RightContentWrapper {
106
106
  display: flex;
107
+ flex-shrink: 0;
107
108
  align-items: center;
108
109
  padding-right: 2px;
109
110
  }
@@ -82,7 +82,7 @@ export function Toast({
82
82
 
83
83
  const className = classNames(
84
84
  styles.ToastElement,
85
- zIndex && getZIndexClassName(zIndex),
85
+ getZIndexClassName(zIndex),
86
86
  placement && styles[`placement-${placement}`],
87
87
  isSlidingOut && styles['slide-out']
88
88
  )
@@ -193,6 +193,7 @@ const DEFAULT_OFFSET = {
193
193
  export function ToastProvider({
194
194
  autoDismissTimeout = 3000,
195
195
  container: givenContainer,
196
+ zIndex = 'toast',
196
197
  offset = DEFAULT_OFFSET,
197
198
  children = [],
198
199
  }: ToastProviderProps) {
@@ -213,7 +214,10 @@ export function ToastProvider({
213
214
  ? { right: px(offset?.right ?? DEFAULT_OFFSET.right) }
214
215
  : { left: px(offset?.left ?? DEFAULT_OFFSET.left) }),
215
216
  }}
216
- className={styles.ToastContainer}
217
+ className={classNames(
218
+ styles.ToastContainer,
219
+ getZIndexClassName(zIndex)
220
+ )}
217
221
  >
218
222
  {toasts.map(({ id, onDismiss, ...rest }) => (
219
223
  <Toast
@@ -227,7 +231,7 @@ export function ToastProvider({
227
231
  </div>
228
232
  </InvertedThemeProvider>
229
233
  ),
230
- [autoDismissTimeout, dismiss, offset]
234
+ [autoDismissTimeout, dismiss, offset, zIndex]
231
235
  )
232
236
 
233
237
  return (
@@ -16,6 +16,9 @@ interface ToastOwnProps {
16
16
  appearance?: ToastAppearance
17
17
  preset?: ToastPreset
18
18
  icon?: BezierIcon
19
+ /**
20
+ * @deprecated Use `zIndex` of `ToastProvider` instead
21
+ */
19
22
  zIndex?: ZIndex
20
23
  autoDismiss?: boolean
21
24
  autoDismissTimeout?: number
@@ -40,6 +43,11 @@ type Offset = {
40
43
  interface ToastProviderOwnProps {
41
44
  offset?: Offset
42
45
  container?: HTMLElement | null
46
+ /**
47
+ * z-index level of the Toast container
48
+ * @default 'toast'
49
+ */
50
+ zIndex?: ZIndex
43
51
  }
44
52
 
45
53
  export interface ToastProviderProps
@@ -1,5 +1,6 @@
1
- import { Markdown, Meta } from '@storybook/blocks'
1
+ import { Markdown, Meta, DocsStory } from '@storybook/blocks'
2
2
  import { tokens } from '@channel.io/bezier-tokens/alpha'
3
+ import { useLayoutEffect, useState } from 'react'
3
4
 
4
5
  import {
5
6
  LightThemeProvider,
@@ -9,60 +10,72 @@ import { HStack, VStack } from '~/src/components/Stack'
9
10
 
10
11
  <Meta title="alpha-foundation/Color" />
11
12
 
12
- export const Color = ({ name, value, reference }) => {
13
- return (
14
- <HStack spacing={20}>
15
- <div
16
- style={{
17
- flex: 1,
18
- boxShadow: value,
19
- backgroundColor: `var(--${name})`,
20
- height: 60,
21
- }}
22
- />
23
- <VStack
13
+ export const Color = ({ isHoveredColor, name, value, reference }) => {
14
+ const [isHovered, setIsHovered] = useState(false)
15
+ const color = isHovered ? `var(--${name}-hovered, var(--${name}))` : `var(--${name})`
16
+
17
+ return (
18
+
19
+ <HStack
20
+ spacing={10}
21
+ height={80}
22
+ align="center"
23
+ >
24
+ <div
25
+ style={{
26
+ flex: 1,
27
+ boxShadow: value,
28
+ backgroundColor: color,
29
+ height: '100%',
30
+ }}
31
+ onMouseEnter={() => {
32
+ setIsHovered(true)
33
+ }}
34
+ onMouseLeave={() => {
35
+ setIsHovered(false)
36
+ }}
37
+ />
38
+ <VStack
39
+ style={{
40
+ flex: 1,
41
+ color: 'var(--alpha-color-fg-black-darkest)',
42
+ }}
43
+ spacing={4}
44
+ justify="center"
45
+ >
46
+ <span style={{ fontSize: 11 }}>{name}</span>
47
+ <pre
48
+ style={{
49
+ display: 'flex',
50
+ alignItems: 'center',
51
+ gap: 3,
52
+ fontSize: 9,
53
+ lineHeight: 1,
54
+ color: 'var(--alpha-color-fg-black-dark)',
55
+ }}
56
+ >
57
+ {isHoveredColor ? '' : reference ? 'var' : ''}
58
+ <pre
24
59
  style={{
25
- flex: 1,
26
- color: 'var(--alpha-color-fg-black-darkest)',
60
+ display: 'inline-flex',
61
+ fontSize: 'inherit',
62
+ lineHeight: 'inherit',
63
+ padding: '1px 2px',
64
+ backgroundColor: 'var(--alpha-color-bg-grey-lighter)',
65
+ borderRadius: 3,
66
+ border: '1px solid var(--alpha-color-bg-black-lightest)',
27
67
  }}
28
- spacing={4}
29
- justify="center"
30
68
  >
31
- <span style={{ fontSize: 11 }}>{name}</span>
32
- <pre
33
- style={{
34
- display: 'flex',
35
- alignItems: 'center',
36
- gap: 3,
37
- fontSize: 9,
38
- lineHeight: 1,
39
- color: 'var(--alpha-color-fg-black-dark)',
40
- }}
41
- >
42
- {reference ? 'var' : ''}
43
- <pre
44
- style={{
45
- display: 'inline-flex',
46
- fontSize: 'inherit',
47
- lineHeight: 'inherit',
48
- padding: '1px 2px',
49
- backgroundColor: 'var(--alpha-color-bg-grey-lighter)',
50
- borderRadius: 3,
51
- border: '1px solid var(--alpha-color-bg-black-lightest)',
52
- }}
53
- >
54
- {reference ? reference : value}
55
- </pre>
56
- </pre>
57
- </VStack>
58
- </HStack>
59
- )
60
- }
69
+ {isHoveredColor ? value : reference ? reference : value}
70
+ </pre>
71
+ </pre>
72
+ </VStack>
73
+ </HStack>
74
+ )}
61
75
 
62
76
  export const Primary = () => (
63
77
  <HStack>
64
-
65
- <VStack style={{ flex: 1, backgroundColor: 'var(--alpha-color-surface-normal)' }} padding={20}>
78
+ <VStack style={{ flex: 1, backgroundColor: 'var(--alpha-color-surface-normal)' }} padding={0}>
66
79
  {Object.entries(tokens.global.color).map(([key, { value, ref }]) => (
67
80
  <Color
68
81
  key={key}
@@ -74,7 +87,7 @@ export const Primary = () => (
74
87
  </VStack>
75
88
 
76
89
  <LightThemeProvider>
77
- <VStack style={{ flex: 1, backgroundColor: 'var(--alpha-color-surface-normal)' }} padding={20}>
90
+ <VStack style={{ flex: 1, backgroundColor: 'var(--alpha-color-surface-normal)' }} padding={0}>
78
91
  {Object.entries(tokens.lightTheme.color).map(([key, { value, ref }]) => (
79
92
  <Color
80
93
  key={key}
@@ -87,7 +100,7 @@ export const Primary = () => (
87
100
  </LightThemeProvider>
88
101
 
89
102
  <DarkThemeProvider>
90
- <VStack style={{ flex: 1, backgroundColor: 'var(--alpha-color-surface-normal)' }} padding={20}>
103
+ <VStack style={{ flex: 1, backgroundColor: 'var(--alpha-color-surface-normal)' }} padding={0}>
91
104
  {Object.entries(tokens.darkTheme.color).map(([key, { value, ref }]) => (
92
105
  <Color
93
106
  key={key}
@@ -2,6 +2,7 @@ $elevations: 1, 2, 3, 4, 5, 6;
2
2
 
3
3
  @each $ev in $elevations {
4
4
  :where(.elevation-#{$ev}) {
5
+ /* stylelint-disable-next-line bezier/validate-token */
5
6
  box-shadow: var(--ev-#{$ev});
6
7
  }
7
8
  }