@channel.io/bezier-react 2.0.2 → 2.0.3

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 (66) hide show
  1. package/dist/cjs/components/AlphaAvatar/Avatar.js +121 -0
  2. package/dist/cjs/components/AlphaAvatar/Avatar.js.map +1 -0
  3. package/dist/cjs/components/AlphaAvatar/Avatar.module.scss.js +8 -0
  4. package/dist/cjs/components/AlphaAvatar/Avatar.module.scss.js.map +1 -0
  5. package/dist/cjs/components/AlphaAvatar/assets/default-avatar.svg.js +8 -0
  6. package/dist/cjs/components/AlphaAvatar/assets/default-avatar.svg.js.map +1 -0
  7. package/dist/cjs/components/AlphaAvatar/useProgressiveImage.js +48 -0
  8. package/dist/cjs/components/AlphaAvatar/useProgressiveImage.js.map +1 -0
  9. package/dist/cjs/components/AlphaAvatarGroup/AvatarGroup.js +153 -0
  10. package/dist/cjs/components/AlphaAvatarGroup/AvatarGroup.js.map +1 -0
  11. package/dist/cjs/components/AlphaAvatarGroup/AvatarGroup.module.scss.js +8 -0
  12. package/dist/cjs/components/AlphaAvatarGroup/AvatarGroup.module.scss.js.map +1 -0
  13. package/dist/cjs/index.js +10 -5
  14. package/dist/cjs/index.js.map +1 -1
  15. package/dist/cjs/styles.css +1 -1
  16. package/dist/esm/components/AlphaAvatar/Avatar.mjs +115 -0
  17. package/dist/esm/components/AlphaAvatar/Avatar.mjs.map +1 -0
  18. package/dist/esm/components/AlphaAvatar/Avatar.module.scss.mjs +4 -0
  19. package/dist/esm/components/AlphaAvatar/Avatar.module.scss.mjs.map +1 -0
  20. package/dist/esm/components/AlphaAvatar/assets/default-avatar.svg.mjs +4 -0
  21. package/dist/esm/components/AlphaAvatar/assets/default-avatar.svg.mjs.map +1 -0
  22. package/dist/esm/components/AlphaAvatar/useProgressiveImage.mjs +44 -0
  23. package/dist/esm/components/AlphaAvatar/useProgressiveImage.mjs.map +1 -0
  24. package/dist/esm/components/AlphaAvatarGroup/AvatarGroup.mjs +149 -0
  25. package/dist/esm/components/AlphaAvatarGroup/AvatarGroup.mjs.map +1 -0
  26. package/dist/esm/components/AlphaAvatarGroup/AvatarGroup.module.scss.mjs +4 -0
  27. package/dist/esm/components/AlphaAvatarGroup/AvatarGroup.module.scss.mjs.map +1 -0
  28. package/dist/esm/index.mjs +2 -0
  29. package/dist/esm/index.mjs.map +1 -1
  30. package/dist/esm/styles.css +1 -1
  31. package/dist/types/components/AlphaAvatar/Avatar.d.ts +22 -0
  32. package/dist/types/components/AlphaAvatar/Avatar.d.ts.map +1 -0
  33. package/dist/types/components/AlphaAvatar/Avatar.types.d.ts +42 -0
  34. package/dist/types/components/AlphaAvatar/Avatar.types.d.ts.map +1 -0
  35. package/dist/types/components/AlphaAvatar/index.d.ts +3 -0
  36. package/dist/types/components/AlphaAvatar/index.d.ts.map +1 -0
  37. package/dist/types/components/AlphaAvatar/useProgressiveImage.d.ts +2 -0
  38. package/dist/types/components/AlphaAvatar/useProgressiveImage.d.ts.map +1 -0
  39. package/dist/types/components/AlphaAvatarGroup/AvatarGroup.d.ts +24 -0
  40. package/dist/types/components/AlphaAvatarGroup/AvatarGroup.d.ts.map +1 -0
  41. package/dist/types/components/AlphaAvatarGroup/AvatarGroup.types.d.ts +28 -0
  42. package/dist/types/components/AlphaAvatarGroup/AvatarGroup.types.d.ts.map +1 -0
  43. package/dist/types/components/AlphaAvatarGroup/index.d.ts +3 -0
  44. package/dist/types/components/AlphaAvatarGroup/index.d.ts.map +1 -0
  45. package/dist/types/index.d.ts +2 -0
  46. package/dist/types/index.d.ts.map +1 -1
  47. package/package.json +2 -2
  48. package/src/components/AlphaAvatar/AlphaAvatar.stories.tsx +63 -0
  49. package/src/components/AlphaAvatar/Avatar.module.scss +54 -0
  50. package/src/components/AlphaAvatar/Avatar.test.tsx +111 -0
  51. package/src/components/AlphaAvatar/Avatar.tsx +159 -0
  52. package/src/components/AlphaAvatar/Avatar.types.ts +64 -0
  53. package/src/components/AlphaAvatar/__snapshots__/Avatar.test.tsx.snap +93 -0
  54. package/src/components/AlphaAvatar/assets/default-avatar.svg +11 -0
  55. package/src/components/AlphaAvatar/index.ts +8 -0
  56. package/src/components/AlphaAvatar/useProgressiveImage.test.ts +96 -0
  57. package/src/components/AlphaAvatar/useProgressiveImage.ts +60 -0
  58. package/src/components/AlphaAvatarGroup/AlphaAvatarGroup.stories.tsx +55 -0
  59. package/src/components/AlphaAvatarGroup/AvatarGroup.module.scss +53 -0
  60. package/src/components/AlphaAvatarGroup/AvatarGroup.test.tsx +93 -0
  61. package/src/components/AlphaAvatarGroup/AvatarGroup.tsx +229 -0
  62. package/src/components/AlphaAvatarGroup/AvatarGroup.types.ts +43 -0
  63. package/src/components/AlphaAvatarGroup/__mocks__/avatarList.ts +39 -0
  64. package/src/components/AlphaAvatarGroup/__snapshots__/AvatarGroup.test.tsx.snap +215 -0
  65. package/src/components/AlphaAvatarGroup/index.ts +2 -0
  66. package/src/index.ts +2 -0
@@ -0,0 +1,115 @@
1
+ import React__default, { forwardRef, useMemo } from 'react';
2
+ import classNames from '../../node_modules/classnames/index.mjs';
3
+ import { isEmpty } from '../../utils/type.mjs';
4
+ import { useAvatarGroupContext } from '../AlphaAvatarGroup/AvatarGroup.mjs';
5
+ import defaultAvatarUrl from './assets/default-avatar.svg.mjs';
6
+ import useProgressiveImage from './useProgressiveImage.mjs';
7
+ import styles from './Avatar.module.scss.mjs';
8
+ import { useTokens } from '../ThemeProvider/ThemeProvider.mjs';
9
+ import { SmoothCornersBox } from '../SmoothCornersBox/SmoothCornersBox.mjs';
10
+ import { Status } from '../Status/Status.mjs';
11
+
12
+ function getStatusSize(size) {
13
+ switch (size) {
14
+ case '90':
15
+ case '120':
16
+ return 'l';
17
+ default:
18
+ return 'm';
19
+ }
20
+ }
21
+ function getShadow(size) {
22
+ const spreadRadius = (() => {
23
+ switch (size) {
24
+ case '90':
25
+ return 3;
26
+ case '120':
27
+ return 4;
28
+ default:
29
+ return 2;
30
+ }
31
+ })();
32
+ return {
33
+ spreadRadius,
34
+ color: 'bg-white-high'
35
+ };
36
+ }
37
+ function useAvatarRadiusToken() {
38
+ // TODO: Replace this with useAlphaTokens
39
+ return useTokens().global.radius['radius-42-p'];
40
+ }
41
+ const AVATAR_WRAPPER_TEST_ID = 'bezier-avatar-wrapper';
42
+ const AVATAR_TEST_ID = 'bezier-avatar';
43
+ const STATUS_WRAPPER_TEST_ID = 'bezier-status-wrapper';
44
+
45
+ /**
46
+ * `Avatar` is a component for representing some profile image.
47
+ * @example
48
+ *
49
+ * ```tsx
50
+ * <Avatar
51
+ * avatarUrl="https://..."
52
+ * name="channel"
53
+ * size="48"
54
+ * showBorder
55
+ * disabled
56
+ * />
57
+ * ```
58
+ */
59
+ const Avatar = /*#__PURE__*/forwardRef(function Avatar({
60
+ avatarUrl = '',
61
+ fallbackUrl = defaultAvatarUrl,
62
+ size: sizeProps = '24',
63
+ name,
64
+ disabled = false,
65
+ showBorder = false,
66
+ smoothCorners = true,
67
+ status,
68
+ className,
69
+ children,
70
+ ...rest
71
+ }, forwardedRef) {
72
+ const avatarGroupContext = useAvatarGroupContext();
73
+ const size = avatarGroupContext?.size ?? sizeProps;
74
+ const loadedAvatarUrl = useProgressiveImage(avatarUrl, fallbackUrl);
75
+ const AVATAR_BORDER_RADIUS = useAvatarRadiusToken();
76
+ const StatusComponent = useMemo(() => {
77
+ if (isEmpty(children) && !status || children && ! /*#__PURE__*/React__default.isValidElement(children)) {
78
+ return null;
79
+ }
80
+ const Contents = (() => {
81
+ if (children) {
82
+ return children;
83
+ }
84
+ if (status) {
85
+ return /*#__PURE__*/React__default.createElement(Status, {
86
+ type: status,
87
+ size: getStatusSize(size)
88
+ });
89
+ }
90
+ return null;
91
+ })();
92
+ return Contents && /*#__PURE__*/React__default.createElement("div", {
93
+ className: styles.StatusWrapper,
94
+ "data-testid": STATUS_WRAPPER_TEST_ID
95
+ }, Contents);
96
+ }, [status, size, children]);
97
+ return /*#__PURE__*/React__default.createElement("div", Object.assign({
98
+ className: classNames(styles.Avatar, styles[`size-${size}`], disabled && styles.disabled, className),
99
+ "data-disabled": disabled,
100
+ "data-testid": AVATAR_WRAPPER_TEST_ID
101
+ }, rest), /*#__PURE__*/React__default.createElement(SmoothCornersBox, {
102
+ ref: forwardedRef,
103
+ "aria-label": name,
104
+ className: classNames(styles.AvatarImage, Number(size) >= 72 && styles['big-size'], showBorder && styles.bordered),
105
+ disabled: !smoothCorners,
106
+ borderRadius: AVATAR_BORDER_RADIUS,
107
+ shadow: showBorder ? getShadow(size) : undefined,
108
+ backgroundColor: "bg-white-normal",
109
+ backgroundImage: loadedAvatarUrl,
110
+ "data-testid": AVATAR_TEST_ID
111
+ }, StatusComponent));
112
+ });
113
+
114
+ export { AVATAR_TEST_ID, AVATAR_WRAPPER_TEST_ID, Avatar, STATUS_WRAPPER_TEST_ID, useAvatarRadiusToken };
115
+ //# sourceMappingURL=Avatar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.mjs","sources":["../../../../src/components/AlphaAvatar/Avatar.tsx"],"sourcesContent":["import React, { forwardRef, useMemo } from 'react'\n\nimport classNames from 'classnames'\n\nimport { isEmpty } from '~/src/utils/type'\n\nimport { useAvatarGroupContext } from '~/src/components/AlphaAvatarGroup/AvatarGroup'\nimport {\n SmoothCornersBox,\n type SmoothCornersBoxProps,\n} from '~/src/components/SmoothCornersBox'\nimport { Status, type StatusSize } from '~/src/components/Status'\nimport { useTokens } from '~/src/components/ThemeProvider'\n\nimport type { AvatarProps, AvatarSize } from './Avatar.types'\nimport defaultAvatarUrl from './assets/default-avatar.svg'\nimport useProgressiveImage from './useProgressiveImage'\n\nimport styles from './Avatar.module.scss'\n\nfunction getStatusSize(size: AvatarSize): StatusSize {\n switch (size) {\n case '90':\n case '120':\n return 'l'\n default:\n return 'm'\n }\n}\n\nfunction getShadow(size: AvatarSize): SmoothCornersBoxProps['shadow'] {\n const spreadRadius = (() => {\n switch (size) {\n case '90':\n return 3\n case '120':\n return 4\n default:\n return 2\n }\n })()\n\n return {\n spreadRadius,\n color: 'bg-white-high',\n }\n}\n\nexport function useAvatarRadiusToken() {\n // TODO: Replace this with useAlphaTokens\n return useTokens().global.radius['radius-42-p']\n}\n\nexport const AVATAR_WRAPPER_TEST_ID = 'bezier-avatar-wrapper'\nexport const AVATAR_TEST_ID = 'bezier-avatar'\nexport const STATUS_WRAPPER_TEST_ID = 'bezier-status-wrapper'\n\n/**\n * `Avatar` is a component for representing some profile image.\n * @example\n *\n * ```tsx\n * <Avatar\n * avatarUrl=\"https://...\"\n * name=\"channel\"\n * size=\"48\"\n * showBorder\n * disabled\n * />\n * ```\n */\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n {\n avatarUrl = '',\n fallbackUrl = defaultAvatarUrl,\n size: sizeProps = '24',\n name,\n disabled = false,\n showBorder = false,\n smoothCorners = true,\n status,\n className,\n children,\n ...rest\n },\n forwardedRef\n) {\n const avatarGroupContext = useAvatarGroupContext()\n const size = avatarGroupContext?.size ?? sizeProps\n const loadedAvatarUrl = useProgressiveImage(avatarUrl, fallbackUrl)\n const AVATAR_BORDER_RADIUS = useAvatarRadiusToken()\n\n const StatusComponent = useMemo(() => {\n if (\n (isEmpty(children) && !status) ||\n (children && !React.isValidElement(children))\n ) {\n return null\n }\n\n const Contents = (() => {\n if (children) {\n return children\n }\n if (status) {\n return (\n <Status\n type={status}\n size={getStatusSize(size)}\n />\n )\n }\n return null\n })()\n\n return (\n Contents && (\n <div\n className={styles.StatusWrapper}\n data-testid={STATUS_WRAPPER_TEST_ID}\n >\n {Contents}\n </div>\n )\n )\n }, [status, size, children])\n\n return (\n <div\n className={classNames(\n styles.Avatar,\n styles[`size-${size}`],\n disabled && styles.disabled,\n className\n )}\n data-disabled={disabled}\n data-testid={AVATAR_WRAPPER_TEST_ID}\n {...rest}\n >\n <SmoothCornersBox\n ref={forwardedRef}\n aria-label={name}\n className={classNames(\n styles.AvatarImage,\n Number(size) >= 72 && styles['big-size'],\n showBorder && styles.bordered\n )}\n disabled={!smoothCorners}\n borderRadius={AVATAR_BORDER_RADIUS}\n shadow={showBorder ? getShadow(size) : undefined}\n backgroundColor=\"bg-white-normal\"\n backgroundImage={loadedAvatarUrl}\n data-testid={AVATAR_TEST_ID}\n >\n {StatusComponent}\n </SmoothCornersBox>\n </div>\n )\n})\n"],"names":["getStatusSize","size","getShadow","spreadRadius","color","useAvatarRadiusToken","useTokens","global","radius","AVATAR_WRAPPER_TEST_ID","AVATAR_TEST_ID","STATUS_WRAPPER_TEST_ID","Avatar","forwardRef","avatarUrl","fallbackUrl","defaultAvatarUrl","sizeProps","name","disabled","showBorder","smoothCorners","status","className","children","rest","forwardedRef","avatarGroupContext","useAvatarGroupContext","loadedAvatarUrl","useProgressiveImage","AVATAR_BORDER_RADIUS","StatusComponent","useMemo","isEmpty","React","isValidElement","Contents","createElement","Status","type","styles","StatusWrapper","Object","assign","classNames","SmoothCornersBox","ref","AvatarImage","Number","bordered","borderRadius","shadow","undefined","backgroundColor","backgroundImage"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ var styles = {"Avatar":"b-fDR-U","disabled":"b-SnNT0","size-16":"b-v3W6R","size-20":"b-gC4cV","size-24":"b-lgU-A","size-30":"b-O61k6","size-36":"b-3M3QV","size-42":"b-cA6AB","size-48":"b-NETn8","size-72":"b-4bOSq","size-90":"b-dNqNN","size-120":"b-wyYTI","AvatarImage":"b-K69h3","big-size":"b-s7757","bordered":"b-Qctjl","StatusWrapper":"b-ZSr4L"};
2
+
3
+ export { styles as default };
4
+ //# sourceMappingURL=Avatar.module.scss.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,4 @@
1
+ var defaultAvatarUrl = "data:image/svg+xml,%3Csvg%20width%3D%2260%22%20height%3D%2260%22%20viewBox%3D%220%200%2060%2060%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20clip-path%3D%22url%28%23clip0%29%22%3E%3Crect%20width%3D%2260%22%20height%3D%2260%22%20fill%3D%22%23cfccfb%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M41%2023C41%2029.0744%2036.0744%2034%2030%2034C23.9256%2034%2019%2029.0744%2019%2023C19%2016.9256%2023.9256%2012%2030%2012C36.0744%2012%2041%2016.9256%2041%2023ZM30%2037C16.1929%2037%205%2048.1929%205%2062V90H55V62C55%2048.1929%2043.8071%2037%2030%2037Z%22%20fill%3D%22white%22%20fill-opacity%3D%220.4%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22clip0%22%3E%3Crect%20width%3D%2260%22%20height%3D%2260%22%20fill%3D%22white%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";
2
+
3
+ export { defaultAvatarUrl as default };
4
+ //# sourceMappingURL=default-avatar.svg.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-avatar.svg.mjs","sources":["../../../../../src/components/AlphaAvatar/assets/default-avatar.svg"],"sourcesContent":["export default \"data:image/svg+xml,%3Csvg%20width%3D%2260%22%20height%3D%2260%22%20viewBox%3D%220%200%2060%2060%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20clip-path%3D%22url%28%23clip0%29%22%3E%3Crect%20width%3D%2260%22%20height%3D%2260%22%20fill%3D%22%23cfccfb%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M41%2023C41%2029.0744%2036.0744%2034%2030%2034C23.9256%2034%2019%2029.0744%2019%2023C19%2016.9256%2023.9256%2012%2030%2012C36.0744%2012%2041%2016.9256%2041%2023ZM30%2037C16.1929%2037%205%2048.1929%205%2062V90H55V62C55%2048.1929%2043.8071%2037%2030%2037Z%22%20fill%3D%22white%22%20fill-opacity%3D%220.4%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22clip0%22%3E%3Crect%20width%3D%2260%22%20height%3D%2260%22%20fill%3D%22white%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E\""],"names":[],"mappings":"AAAA,uBAAe;;;;"}
@@ -0,0 +1,44 @@
1
+ import { useState, useEffect } from 'react';
2
+
3
+ const imageCache = new Map();
4
+ function getCachedImage(src) {
5
+ const cachedImage = imageCache.get(src);
6
+ if (!cachedImage) {
7
+ return null;
8
+ }
9
+ return cachedImage;
10
+ }
11
+ function useProgressiveImage(src, defaultSrc) {
12
+ const [source, setSource] = useState(() => getCachedImage(src));
13
+ useEffect(function updateSource() {
14
+ if (source?.src === src) {
15
+ return undefined;
16
+ }
17
+ const cachedImage = getCachedImage(src);
18
+ if (cachedImage?.isLoaded) {
19
+ setSource(cachedImage);
20
+ return undefined;
21
+ }
22
+ const image = new Image();
23
+ image.src = src;
24
+ image.onload = loadImage(true);
25
+ image.onerror = loadImage(false);
26
+ function loadImage(isLoaded) {
27
+ return () => {
28
+ const loadedImage = {
29
+ src,
30
+ isLoaded
31
+ };
32
+ setSource(loadedImage);
33
+ imageCache.set(src, loadedImage);
34
+ };
35
+ }
36
+ }, [src, source]);
37
+ if (!source || !source.isLoaded) {
38
+ return defaultSrc;
39
+ }
40
+ return source.src;
41
+ }
42
+
43
+ export { useProgressiveImage as default };
44
+ //# sourceMappingURL=useProgressiveImage.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProgressiveImage.mjs","sources":["../../../../src/components/AlphaAvatar/useProgressiveImage.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\n\ninterface CachedImage {\n src: string\n isLoaded: boolean\n}\n\nconst imageCache = new Map<string, CachedImage>()\n\nfunction getCachedImage(src: string) {\n const cachedImage = imageCache.get(src)\n if (!cachedImage) {\n return null\n }\n return cachedImage\n}\n\nexport default function useProgressiveImage(src: string, defaultSrc: string) {\n const [source, setSource] = useState<CachedImage | null>(() =>\n getCachedImage(src)\n )\n\n useEffect(\n function updateSource() {\n if (source?.src === src) {\n return undefined\n }\n\n const cachedImage = getCachedImage(src)\n\n if (cachedImage?.isLoaded) {\n setSource(cachedImage)\n return undefined\n }\n\n const image = new Image()\n image.src = src\n image.onload = loadImage(true)\n image.onerror = loadImage(false)\n\n function loadImage(isLoaded: boolean) {\n return () => {\n const loadedImage = {\n src,\n isLoaded,\n }\n setSource(loadedImage)\n imageCache.set(src, loadedImage)\n }\n }\n },\n [src, source]\n )\n\n if (!source || !source.isLoaded) {\n return defaultSrc\n }\n\n return source.src\n}\n"],"names":["imageCache","Map","getCachedImage","src","cachedImage","get","useProgressiveImage","defaultSrc","source","setSource","useState","useEffect","updateSource","undefined","isLoaded","image","Image","onload","loadImage","onerror","loadedImage","set"],"mappings":";;AAOA,MAAMA,UAAU,GAAG,IAAIC,GAAG,EAAuB,CAAA;AAEjD,SAASC,cAAcA,CAACC,GAAW,EAAE;AACnC,EAAA,MAAMC,WAAW,GAAGJ,UAAU,CAACK,GAAG,CAACF,GAAG,CAAC,CAAA;EACvC,IAAI,CAACC,WAAW,EAAE;AAChB,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AACA,EAAA,OAAOA,WAAW,CAAA;AACpB,CAAA;AAEe,SAASE,mBAAmBA,CAACH,GAAW,EAAEI,UAAkB,EAAE;AAC3E,EAAA,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGC,QAAQ,CAAqB,MACvDR,cAAc,CAACC,GAAG,CACpB,CAAC,CAAA;AAEDQ,EAAAA,SAAS,CACP,SAASC,YAAYA,GAAG;AACtB,IAAA,IAAIJ,MAAM,EAAEL,GAAG,KAAKA,GAAG,EAAE;AACvB,MAAA,OAAOU,SAAS,CAAA;AAClB,KAAA;AAEA,IAAA,MAAMT,WAAW,GAAGF,cAAc,CAACC,GAAG,CAAC,CAAA;IAEvC,IAAIC,WAAW,EAAEU,QAAQ,EAAE;MACzBL,SAAS,CAACL,WAAW,CAAC,CAAA;AACtB,MAAA,OAAOS,SAAS,CAAA;AAClB,KAAA;AAEA,IAAA,MAAME,KAAK,GAAG,IAAIC,KAAK,EAAE,CAAA;IACzBD,KAAK,CAACZ,GAAG,GAAGA,GAAG,CAAA;AACfY,IAAAA,KAAK,CAACE,MAAM,GAAGC,SAAS,CAAC,IAAI,CAAC,CAAA;AAC9BH,IAAAA,KAAK,CAACI,OAAO,GAAGD,SAAS,CAAC,KAAK,CAAC,CAAA;IAEhC,SAASA,SAASA,CAACJ,QAAiB,EAAE;AACpC,MAAA,OAAO,MAAM;AACX,QAAA,MAAMM,WAAW,GAAG;UAClBjB,GAAG;AACHW,UAAAA,QAAAA;SACD,CAAA;QACDL,SAAS,CAACW,WAAW,CAAC,CAAA;AACtBpB,QAAAA,UAAU,CAACqB,GAAG,CAAClB,GAAG,EAAEiB,WAAW,CAAC,CAAA;OACjC,CAAA;AACH,KAAA;AACF,GAAC,EACD,CAACjB,GAAG,EAAEK,MAAM,CACd,CAAC,CAAA;AAED,EAAA,IAAI,CAACA,MAAM,IAAI,CAACA,MAAM,CAACM,QAAQ,EAAE;AAC/B,IAAA,OAAOP,UAAU,CAAA;AACnB,GAAA;EAEA,OAAOC,MAAM,CAACL,GAAG,CAAA;AACnB;;;;"}
@@ -0,0 +1,149 @@
1
+ import React__default, { forwardRef, useCallback, useMemo } from 'react';
2
+ import { MoreIcon } from '@channel.io/bezier-icons';
3
+ import classNames from '../../node_modules/classnames/index.mjs';
4
+ import { isLastIndex } from '../../utils/array.mjs';
5
+ import { createContext } from '../../utils/react.mjs';
6
+ import { px } from '../../utils/style.mjs';
7
+ import styles from './AvatarGroup.module.scss.mjs';
8
+ import { useAvatarRadiusToken } from '../AlphaAvatar/Avatar.mjs';
9
+ import { SmoothCornersBox } from '../SmoothCornersBox/SmoothCornersBox.mjs';
10
+ import { Icon } from '../Icon/Icon.mjs';
11
+ import { Text } from '../Text/Text.mjs';
12
+
13
+ const [AvatarGroupContextProvider, useAvatarGroupContext] = createContext(undefined);
14
+ const MAX_AVATAR_LIST_COUNT = 99;
15
+ const AVATAR_GROUP_DEFAULT_SPACING = 4;
16
+ const AVATAR_GROUP_ELLIPSIS_ICON_TEST_ID = 'bezier-avatar-group-ellipsis-icon';
17
+ function getRestAvatarListCountText(count, max) {
18
+ const restCount = count - max;
19
+ return `+${restCount > MAX_AVATAR_LIST_COUNT ? MAX_AVATAR_LIST_COUNT : restCount}`;
20
+ }
21
+
22
+ // TODO: Not specified
23
+ function getProperIconSize(size) {
24
+ return {
25
+ 16: 'xxs',
26
+ 20: 'xxs',
27
+ 24: 'xs',
28
+ 30: 's',
29
+ 36: 'm',
30
+ 42: 'm',
31
+ 48: 'l',
32
+ 72: 'l',
33
+ 90: 'l',
34
+ 120: 'l'
35
+ }[size];
36
+ }
37
+
38
+ // TODO: Not specified
39
+ function getProperTypoSize(size) {
40
+ return {
41
+ 16: '12',
42
+ 20: '12',
43
+ 24: '13',
44
+ 30: '15',
45
+ 36: '16',
46
+ 42: '18',
47
+ 48: '24',
48
+ 72: '24',
49
+ 90: '24',
50
+ 120: '24'
51
+ }[size];
52
+ }
53
+
54
+ /**
55
+ * `AvatarGroup` is a component for grouping `Avatar` components
56
+ * @example
57
+ *
58
+ * ```tsx
59
+ * <AvatarGroup
60
+ * max={2}
61
+ * size="24"
62
+ * spacing={4}
63
+ * ellipsisType="icon"
64
+ * >
65
+ * <Avatar />
66
+ * <Avatar />
67
+ * <Avatar />
68
+ * </AvatarGroup>
69
+ * ```
70
+ */
71
+ const AvatarGroup = /*#__PURE__*/forwardRef(function AvatarGroup({
72
+ max = 5,
73
+ size = '24',
74
+ spacing = AVATAR_GROUP_DEFAULT_SPACING,
75
+ ellipsisType = 'icon',
76
+ style,
77
+ className,
78
+ children,
79
+ ...rest
80
+ }, forwardedRef) {
81
+ const AVATAR_BORDER_RADIUS = useAvatarRadiusToken();
82
+ const avatarListCount = React__default.Children.count(children);
83
+ const renderAvatarElement = useCallback(avatar => {
84
+ const key = avatar.key ?? `${avatar.props.name}-${avatar.props.avatarUrl}`;
85
+ const shouldShowBorder = max > 1 && avatarListCount > 1 && spacing < 0;
86
+ const showBorder = avatar.props.showBorder || shouldShowBorder;
87
+ return /*#__PURE__*/React__default.cloneElement(avatar, {
88
+ key,
89
+ showBorder
90
+ });
91
+ }, [avatarListCount, max, spacing]);
92
+ const AvatarListComponent = useMemo(() => {
93
+ return React__default.Children.toArray(children).slice(0, max).map((avatar, index, arr) => {
94
+ if (! /*#__PURE__*/React__default.isValidElement(avatar)) {
95
+ return null;
96
+ }
97
+ const AvatarElement = renderAvatarElement(avatar);
98
+ if (!isLastIndex(arr, index) || avatarListCount <= max) {
99
+ return AvatarElement;
100
+ }
101
+ if (ellipsisType === 'icon') {
102
+ return /*#__PURE__*/React__default.createElement("div", {
103
+ key: "ellipsis",
104
+ className: styles.AvatarEllipsisIconWrapper,
105
+ "data-testid": AVATAR_GROUP_ELLIPSIS_ICON_TEST_ID
106
+ }, /*#__PURE__*/React__default.createElement(SmoothCornersBox, {
107
+ borderRadius: AVATAR_BORDER_RADIUS,
108
+ backgroundColor: "bgtxt-absolute-black-lightest",
109
+ className: styles.AvatarEllipsisIcon
110
+ }, /*#__PURE__*/React__default.createElement(Icon, {
111
+ source: MoreIcon,
112
+ size: getProperIconSize(size),
113
+ color: "bgtxt-absolute-white-dark"
114
+ })), AvatarElement);
115
+ }
116
+ if (ellipsisType === 'count') {
117
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
118
+ key: "ellipsis"
119
+ }, AvatarElement, /*#__PURE__*/React__default.createElement("div", {
120
+ style: {
121
+ '--b-avatar-group-ellipsis-ml': px(Math.max(spacing, AVATAR_GROUP_DEFAULT_SPACING))
122
+ },
123
+ className: classNames(styles.AvatarEllipsisCountWrapper)
124
+ }, /*#__PURE__*/React__default.createElement(Text, {
125
+ typo: getProperTypoSize(size),
126
+ color: "txt-black-dark",
127
+ className: styles.AvatarEllipsisCount
128
+ }, getRestAvatarListCountText(avatarListCount, max))));
129
+ }
130
+ return null;
131
+ });
132
+ }, [avatarListCount, max, children, renderAvatarElement, ellipsisType, AVATAR_BORDER_RADIUS, size, spacing]);
133
+ return /*#__PURE__*/React__default.createElement(AvatarGroupContextProvider, {
134
+ value: useMemo(() => ({
135
+ size
136
+ }), [size])
137
+ }, /*#__PURE__*/React__default.createElement("div", Object.assign({
138
+ role: "group",
139
+ ref: forwardedRef,
140
+ className: classNames(styles.AvatarGroup, styles[`size-${size}`], className),
141
+ style: {
142
+ '--b-avatar-group-spacing': px(spacing),
143
+ ...style
144
+ }
145
+ }, rest), AvatarListComponent));
146
+ });
147
+
148
+ export { AVATAR_GROUP_ELLIPSIS_ICON_TEST_ID, AvatarGroup, useAvatarGroupContext };
149
+ //# sourceMappingURL=AvatarGroup.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvatarGroup.mjs","sources":["../../../../src/components/AlphaAvatarGroup/AvatarGroup.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo } from 'react'\n\nimport { MoreIcon } from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport { isLastIndex } from '~/src/utils/array'\nimport { createContext } from '~/src/utils/react'\nimport { px } from '~/src/utils/style'\n\nimport {\n type AlphaAvatarProps,\n type AlphaAvatarSize,\n useAlphaAvatarRadiusToken,\n} from '~/src/components/AlphaAvatar'\nimport { Icon } from '~/src/components/Icon'\nimport { SmoothCornersBox } from '~/src/components/SmoothCornersBox'\nimport { Text } from '~/src/components/Text'\n\nimport {\n type AvatarGroupContextValue,\n type AvatarGroupProps,\n} from './AvatarGroup.types'\n\nimport styles from './AvatarGroup.module.scss'\n\nconst [AvatarGroupContextProvider, useAvatarGroupContext] = createContext<\n AvatarGroupContextValue | undefined\n>(undefined)\n\nexport { useAvatarGroupContext }\n\nconst MAX_AVATAR_LIST_COUNT = 99\nconst AVATAR_GROUP_DEFAULT_SPACING = 4\nexport const AVATAR_GROUP_ELLIPSIS_ICON_TEST_ID =\n 'bezier-avatar-group-ellipsis-icon'\n\nfunction getRestAvatarListCountText(count: number, max: number) {\n const restCount = count - max\n return `+${restCount > MAX_AVATAR_LIST_COUNT ? MAX_AVATAR_LIST_COUNT : restCount}`\n}\n\n// TODO: Not specified\nfunction getProperIconSize(size: AlphaAvatarSize) {\n return (\n {\n 16: 'xxs',\n 20: 'xxs',\n 24: 'xs',\n 30: 's',\n 36: 'm',\n 42: 'm',\n 48: 'l',\n 72: 'l',\n 90: 'l',\n 120: 'l',\n } as const\n )[size]\n}\n\n// TODO: Not specified\nfunction getProperTypoSize(size: AlphaAvatarSize) {\n return (\n {\n 16: '12',\n 20: '12',\n 24: '13',\n 30: '15',\n 36: '16',\n 42: '18',\n 48: '24',\n 72: '24',\n 90: '24',\n 120: '24',\n } as const\n )[size]\n}\n\n/**\n * `AvatarGroup` is a component for grouping `Avatar` components\n * @example\n *\n * ```tsx\n * <AvatarGroup\n * max={2}\n * size=\"24\"\n * spacing={4}\n * ellipsisType=\"icon\"\n * >\n * <Avatar />\n * <Avatar />\n * <Avatar />\n * </AvatarGroup>\n * ```\n */\nexport const AvatarGroup = forwardRef<HTMLDivElement, AvatarGroupProps>(\n function AvatarGroup(\n {\n max = 5,\n size = '24',\n spacing = AVATAR_GROUP_DEFAULT_SPACING,\n ellipsisType = 'icon',\n style,\n className,\n children,\n ...rest\n },\n forwardedRef\n ) {\n const AVATAR_BORDER_RADIUS = useAlphaAvatarRadiusToken()\n const avatarListCount = React.Children.count(children)\n\n const renderAvatarElement = useCallback(\n (avatar: React.ReactElement<AlphaAvatarProps>) => {\n const key =\n avatar.key ?? `${avatar.props.name}-${avatar.props.avatarUrl}`\n const shouldShowBorder = max > 1 && avatarListCount > 1 && spacing < 0\n const showBorder = avatar.props.showBorder || shouldShowBorder\n return React.cloneElement(avatar, { key, showBorder })\n },\n [avatarListCount, max, spacing]\n )\n\n const AvatarListComponent = useMemo(() => {\n return React.Children.toArray(children)\n .slice(0, max)\n .map((avatar, index, arr) => {\n if (!React.isValidElement<AlphaAvatarProps>(avatar)) {\n return null\n }\n\n const AvatarElement = renderAvatarElement(avatar)\n\n if (!isLastIndex(arr, index) || avatarListCount <= max) {\n return AvatarElement\n }\n\n if (ellipsisType === 'icon') {\n return (\n <div\n key=\"ellipsis\"\n className={styles.AvatarEllipsisIconWrapper}\n data-testid={AVATAR_GROUP_ELLIPSIS_ICON_TEST_ID}\n >\n <SmoothCornersBox\n borderRadius={AVATAR_BORDER_RADIUS}\n backgroundColor=\"bgtxt-absolute-black-lightest\"\n className={styles.AvatarEllipsisIcon}\n >\n <Icon\n source={MoreIcon}\n size={getProperIconSize(size)}\n color=\"bgtxt-absolute-white-dark\"\n />\n </SmoothCornersBox>\n {AvatarElement}\n </div>\n )\n }\n\n if (ellipsisType === 'count') {\n return (\n <React.Fragment key=\"ellipsis\">\n {AvatarElement}\n <div\n style={\n {\n '--b-avatar-group-ellipsis-ml': px(\n Math.max(spacing, AVATAR_GROUP_DEFAULT_SPACING)\n ),\n } as React.CSSProperties\n }\n className={classNames(styles.AvatarEllipsisCountWrapper)}\n >\n <Text\n typo={getProperTypoSize(size)}\n color=\"txt-black-dark\"\n className={styles.AvatarEllipsisCount}\n >\n {getRestAvatarListCountText(avatarListCount, max)}\n </Text>\n </div>\n </React.Fragment>\n )\n }\n\n return null\n })\n }, [\n avatarListCount,\n max,\n children,\n renderAvatarElement,\n ellipsisType,\n AVATAR_BORDER_RADIUS,\n size,\n spacing,\n ])\n\n return (\n <AvatarGroupContextProvider\n value={useMemo(\n () => ({\n size,\n }),\n [size]\n )}\n >\n <div\n role=\"group\"\n ref={forwardedRef}\n className={classNames(\n styles.AvatarGroup,\n styles[`size-${size}`],\n className\n )}\n style={\n {\n '--b-avatar-group-spacing': px(spacing),\n ...style,\n } as React.CSSProperties\n }\n {...rest}\n >\n {AvatarListComponent}\n </div>\n </AvatarGroupContextProvider>\n )\n }\n)\n"],"names":["AvatarGroupContextProvider","useAvatarGroupContext","createContext","undefined","MAX_AVATAR_LIST_COUNT","AVATAR_GROUP_DEFAULT_SPACING","AVATAR_GROUP_ELLIPSIS_ICON_TEST_ID","getRestAvatarListCountText","count","max","restCount","getProperIconSize","size","getProperTypoSize","AvatarGroup","forwardRef","spacing","ellipsisType","style","className","children","rest","forwardedRef","AVATAR_BORDER_RADIUS","useAlphaAvatarRadiusToken","avatarListCount","React","Children","renderAvatarElement","useCallback","avatar","key","props","name","avatarUrl","shouldShowBorder","showBorder","cloneElement","AvatarListComponent","useMemo","toArray","slice","map","index","arr","isValidElement","AvatarElement","isLastIndex","createElement","styles","AvatarEllipsisIconWrapper","SmoothCornersBox","borderRadius","backgroundColor","AvatarEllipsisIcon","Icon","source","MoreIcon","color","Fragment","px","Math","classNames","AvatarEllipsisCountWrapper","Text","typo","AvatarEllipsisCount","value","Object","assign","role","ref"],"mappings":";;;;;;;;;;;;AAyBM,MAAA,CAACA,0BAA0B,EAAEC,qBAAqB,CAAC,GAAGC,aAAa,CAEvEC,SAAS,EAAC;AAIZ,MAAMC,qBAAqB,GAAG,EAAE,CAAA;AAChC,MAAMC,4BAA4B,GAAG,CAAC,CAAA;AAC/B,MAAMC,kCAAkC,GAC7C,oCAAmC;AAErC,SAASC,0BAA0BA,CAACC,KAAa,EAAEC,GAAW,EAAE;AAC9D,EAAA,MAAMC,SAAS,GAAGF,KAAK,GAAGC,GAAG,CAAA;EAC7B,OAAQ,CAAA,CAAA,EAAGC,SAAS,GAAGN,qBAAqB,GAAGA,qBAAqB,GAAGM,SAAU,CAAC,CAAA,CAAA;AACpF,CAAA;;AAEA;AACA,SAASC,iBAAiBA,CAACC,IAAqB,EAAE;EAChD,OACE;AACE,IAAA,EAAE,EAAE,KAAK;AACT,IAAA,EAAE,EAAE,KAAK;AACT,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,EAAE,EAAE,GAAG;AACP,IAAA,EAAE,EAAE,GAAG;AACP,IAAA,EAAE,EAAE,GAAG;AACP,IAAA,EAAE,EAAE,GAAG;AACP,IAAA,EAAE,EAAE,GAAG;AACP,IAAA,EAAE,EAAE,GAAG;AACP,IAAA,GAAG,EAAE,GAAA;GACN,CACDA,IAAI,CAAC,CAAA;AACT,CAAA;;AAEA;AACA,SAASC,iBAAiBA,CAACD,IAAqB,EAAE;EAChD,OACE;AACE,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,GAAG,EAAE,IAAA;GACN,CACDA,IAAI,CAAC,CAAA;AACT,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACaE,WAAW,gBAAGC,UAAU,CACnC,SAASD,WAAWA,CAClB;AACEL,EAAAA,GAAG,GAAG,CAAC;AACPG,EAAAA,IAAI,GAAG,IAAI;AACXI,EAAAA,OAAO,GAAGX,4BAA4B;AACtCY,EAAAA,YAAY,GAAG,MAAM;EACrBC,KAAK;EACLC,SAAS;EACTC,QAAQ;EACR,GAAGC,IAAAA;AACL,CAAC,EACDC,YAAY,EACZ;AACA,EAAA,MAAMC,oBAAoB,GAAGC,oBAAyB,EAAE,CAAA;EACxD,MAAMC,eAAe,GAAGC,cAAK,CAACC,QAAQ,CAACnB,KAAK,CAACY,QAAQ,CAAC,CAAA;AAEtD,EAAA,MAAMQ,mBAAmB,GAAGC,WAAW,CACpCC,MAA4C,IAAK;AAChD,IAAA,MAAMC,GAAG,GACPD,MAAM,CAACC,GAAG,IAAK,GAAED,MAAM,CAACE,KAAK,CAACC,IAAK,CAAGH,CAAAA,EAAAA,MAAM,CAACE,KAAK,CAACE,SAAU,CAAC,CAAA,CAAA;AAChE,IAAA,MAAMC,gBAAgB,GAAG1B,GAAG,GAAG,CAAC,IAAIgB,eAAe,GAAG,CAAC,IAAIT,OAAO,GAAG,CAAC,CAAA;IACtE,MAAMoB,UAAU,GAAGN,MAAM,CAACE,KAAK,CAACI,UAAU,IAAID,gBAAgB,CAAA;AAC9D,IAAA,oBAAOT,cAAK,CAACW,YAAY,CAACP,MAAM,EAAE;MAAEC,GAAG;AAAEK,MAAAA,UAAAA;AAAW,KAAC,CAAC,CAAA;GACvD,EACD,CAACX,eAAe,EAAEhB,GAAG,EAAEO,OAAO,CAChC,CAAC,CAAA;AAED,EAAA,MAAMsB,mBAAmB,GAAGC,OAAO,CAAC,MAAM;IACxC,OAAOb,cAAK,CAACC,QAAQ,CAACa,OAAO,CAACpB,QAAQ,CAAC,CACpCqB,KAAK,CAAC,CAAC,EAAEhC,GAAG,CAAC,CACbiC,GAAG,CAAC,CAACZ,MAAM,EAAEa,KAAK,EAAEC,GAAG,KAAK;AAC3B,MAAA,IAAI,eAAClB,cAAK,CAACmB,cAAc,CAAmBf,MAAM,CAAC,EAAE;AACnD,QAAA,OAAO,IAAI,CAAA;AACb,OAAA;AAEA,MAAA,MAAMgB,aAAa,GAAGlB,mBAAmB,CAACE,MAAM,CAAC,CAAA;MAEjD,IAAI,CAACiB,WAAW,CAACH,GAAG,EAAED,KAAK,CAAC,IAAIlB,eAAe,IAAIhB,GAAG,EAAE;AACtD,QAAA,OAAOqC,aAAa,CAAA;AACtB,OAAA;MAEA,IAAI7B,YAAY,KAAK,MAAM,EAAE;QAC3B,oBACES,cAAA,CAAAsB,aAAA,CAAA,KAAA,EAAA;AACEjB,UAAAA,GAAG,EAAC,UAAU;UACdZ,SAAS,EAAE8B,MAAM,CAACC,yBAA0B;UAC5C,aAAa5C,EAAAA,kCAAAA;AAAmC,SAAA,eAEhDoB,cAAA,CAAAsB,aAAA,CAACG,gBAAgB,EAAA;AACfC,UAAAA,YAAY,EAAE7B,oBAAqB;AACnC8B,UAAAA,eAAe,EAAC,+BAA+B;UAC/ClC,SAAS,EAAE8B,MAAM,CAACK,kBAAAA;AAAmB,SAAA,eAErC5B,cAAA,CAAAsB,aAAA,CAACO,IAAI,EAAA;AACHC,UAAAA,MAAM,EAAEC,QAAS;AACjB7C,UAAAA,IAAI,EAAED,iBAAiB,CAACC,IAAI,CAAE;AAC9B8C,UAAAA,KAAK,EAAC,2BAAA;AAA2B,SAClC,CACe,CAAC,EAClBZ,aACE,CAAC,CAAA;AAEV,OAAA;MAEA,IAAI7B,YAAY,KAAK,OAAO,EAAE;AAC5B,QAAA,oBACES,cAAA,CAAAsB,aAAA,CAACtB,cAAK,CAACiC,QAAQ,EAAA;AAAC5B,UAAAA,GAAG,EAAC,UAAA;AAAU,SAAA,EAC3Be,aAAa,eACdpB,cAAA,CAAAsB,aAAA,CAAA,KAAA,EAAA;AACE9B,UAAAA,KAAK,EACH;YACE,8BAA8B,EAAE0C,EAAE,CAChCC,IAAI,CAACpD,GAAG,CAACO,OAAO,EAAEX,4BAA4B,CAChD,CAAA;WAEH;AACDc,UAAAA,SAAS,EAAE2C,UAAU,CAACb,MAAM,CAACc,0BAA0B,CAAA;AAAE,SAAA,eAEzDrC,cAAA,CAAAsB,aAAA,CAACgB,IAAI,EAAA;AACHC,UAAAA,IAAI,EAAEpD,iBAAiB,CAACD,IAAI,CAAE;AAC9B8C,UAAAA,KAAK,EAAC,gBAAgB;UACtBvC,SAAS,EAAE8B,MAAM,CAACiB,mBAAAA;SAEjB3D,EAAAA,0BAA0B,CAACkB,eAAe,EAAEhB,GAAG,CAC5C,CACH,CACS,CAAC,CAAA;AAErB,OAAA;AAEA,MAAA,OAAO,IAAI,CAAA;AACb,KAAC,CAAC,CAAA;AACN,GAAC,EAAE,CACDgB,eAAe,EACfhB,GAAG,EACHW,QAAQ,EACRQ,mBAAmB,EACnBX,YAAY,EACZM,oBAAoB,EACpBX,IAAI,EACJI,OAAO,CACR,CAAC,CAAA;AAEF,EAAA,oBACEU,cAAA,CAAAsB,aAAA,CAAChD,0BAA0B,EAAA;IACzBmE,KAAK,EAAE5B,OAAO,CACZ,OAAO;AACL3B,MAAAA,IAAAA;AACF,KAAC,CAAC,EACF,CAACA,IAAI,CACP,CAAA;AAAE,GAAA,eAEFc,cAAA,CAAAsB,aAAA,CAAAoB,KAAAA,EAAAA,MAAA,CAAAC,MAAA,CAAA;AACEC,IAAAA,IAAI,EAAC,OAAO;AACZC,IAAAA,GAAG,EAAEjD,YAAa;AAClBH,IAAAA,SAAS,EAAE2C,UAAU,CACnBb,MAAM,CAACnC,WAAW,EAClBmC,MAAM,CAAE,QAAOrC,IAAK,CAAA,CAAC,CAAC,EACtBO,SACF,CAAE;AACFD,IAAAA,KAAK,EACH;AACE,MAAA,0BAA0B,EAAE0C,EAAE,CAAC5C,OAAO,CAAC;MACvC,GAAGE,KAAAA;AACL,KAAA;AACD,GAAA,EACGG,IAAI,CAAA,EAEPiB,mBACE,CACqB,CAAC,CAAA;AAEjC,CACF;;;;"}
@@ -0,0 +1,4 @@
1
+ var styles = {"Avatar":"b-EUIBZ","disabled":"b-r0qvh","size-16":"b-ieYAz","size-20":"b-kYxYF","size-24":"b-89-dE","size-30":"b-3oC7r","size-36":"b-saxkg","size-42":"b-SnpVF","size-48":"b-MdIGf","size-72":"b-lWIXR","size-90":"b-Ny-RI","size-120":"b--IfyP","AvatarImage":"b-OXNdE","big-size":"b-zD-uu","bordered":"b--g-5e","StatusWrapper":"b-TwIX8","AvatarGroup":"b-27zD4","AvatarEllipsisIconWrapper":"b-DAfQV","AvatarEllipsisIcon":"b-3kWFn","AvatarEllipsisCountWrapper":"b-l557G","AvatarEllipsisCount":"b-LTmB2"};
2
+
3
+ export { styles as default };
4
+ //# sourceMappingURL=AvatarGroup.module.scss.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvatarGroup.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,5 +1,7 @@
1
1
  export { tokens } from './packages/bezier-tokens/dist/esm/index.mjs';
2
2
  export { COMMON_IME_CONTROL_KEYS, useKeyboardActionLockerWhileComposing } from './hooks/useKeyboardActionLockerWhileComposing.mjs';
3
+ export { Avatar as AlphaAvatar, useAvatarRadiusToken as useAlphaAvatarRadiusToken } from './components/AlphaAvatar/Avatar.mjs';
4
+ export { AvatarGroup as AlphaAvatarGroup } from './components/AlphaAvatarGroup/AvatarGroup.mjs';
3
5
  export { DialogPrimitive as AlphaDialogPrimitive, DialogPrimitiveClose as AlphaDialogPrimitiveClose, DialogPrimitiveContent as AlphaDialogPrimitiveContent, DialogPrimitiveDescription as AlphaDialogPrimitiveDescription, DialogPrimitiveOverlay as AlphaDialogPrimitiveOverlay, DialogPrimitivePortal as AlphaDialogPrimitivePortal, DialogPrimitiveTitle as AlphaDialogPrimitiveTitle, DialogPrimitiveTrigger as AlphaDialogPrimitiveTrigger } from './components/AlphaDialogPrimitive/DialogPrimitive.mjs';
4
6
  export { TooltipPrimitive as AlphaTooltipPrimitive, TooltipPrimitiveArrow as AlphaTooltipPrimitiveArrow, TooltipPrimitiveContent as AlphaTooltipPrimitiveContent, TooltipPrimitivePortal as AlphaTooltipPrimitivePortal, TooltipPrimitiveProvider as AlphaTooltipPrimitiveProvider, TooltipPrimitiveTrigger as AlphaTooltipPrimitiveTrigger } from './components/AlphaTooltipPrimitive/TooltipPrimitive.mjs';
5
7
  export { AppProvider } from './components/AppProvider/AppProvider.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}