@channel.io/bezier-react 2.0.1 → 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 (88) 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/components/FormHelperText/FormHelperText.js +2 -1
  14. package/dist/cjs/components/FormHelperText/FormHelperText.js.map +1 -1
  15. package/dist/cjs/components/FormLabel/FormLabel.js +3 -2
  16. package/dist/cjs/components/FormLabel/FormLabel.js.map +1 -1
  17. package/dist/cjs/components/Modal/Modal.js.map +1 -1
  18. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  19. package/dist/cjs/index.js +10 -5
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/cjs/styles.css +1 -1
  22. package/dist/esm/components/AlphaAvatar/Avatar.mjs +115 -0
  23. package/dist/esm/components/AlphaAvatar/Avatar.mjs.map +1 -0
  24. package/dist/esm/components/AlphaAvatar/Avatar.module.scss.mjs +4 -0
  25. package/dist/esm/components/AlphaAvatar/Avatar.module.scss.mjs.map +1 -0
  26. package/dist/esm/components/AlphaAvatar/assets/default-avatar.svg.mjs +4 -0
  27. package/dist/esm/components/AlphaAvatar/assets/default-avatar.svg.mjs.map +1 -0
  28. package/dist/esm/components/AlphaAvatar/useProgressiveImage.mjs +44 -0
  29. package/dist/esm/components/AlphaAvatar/useProgressiveImage.mjs.map +1 -0
  30. package/dist/esm/components/AlphaAvatarGroup/AvatarGroup.mjs +149 -0
  31. package/dist/esm/components/AlphaAvatarGroup/AvatarGroup.mjs.map +1 -0
  32. package/dist/esm/components/AlphaAvatarGroup/AvatarGroup.module.scss.mjs +4 -0
  33. package/dist/esm/components/AlphaAvatarGroup/AvatarGroup.module.scss.mjs.map +1 -0
  34. package/dist/esm/components/FormHelperText/FormHelperText.mjs +2 -1
  35. package/dist/esm/components/FormHelperText/FormHelperText.mjs.map +1 -1
  36. package/dist/esm/components/FormLabel/FormLabel.mjs +3 -2
  37. package/dist/esm/components/FormLabel/FormLabel.mjs.map +1 -1
  38. package/dist/esm/components/Modal/Modal.mjs.map +1 -1
  39. package/dist/esm/components/Tooltip/Tooltip.mjs.map +1 -1
  40. package/dist/esm/index.mjs +2 -0
  41. package/dist/esm/index.mjs.map +1 -1
  42. package/dist/esm/styles.css +1 -1
  43. package/dist/types/components/AlphaAvatar/Avatar.d.ts +22 -0
  44. package/dist/types/components/AlphaAvatar/Avatar.d.ts.map +1 -0
  45. package/dist/types/components/AlphaAvatar/Avatar.types.d.ts +42 -0
  46. package/dist/types/components/AlphaAvatar/Avatar.types.d.ts.map +1 -0
  47. package/dist/types/components/AlphaAvatar/index.d.ts +3 -0
  48. package/dist/types/components/AlphaAvatar/index.d.ts.map +1 -0
  49. package/dist/types/components/AlphaAvatar/useProgressiveImage.d.ts +2 -0
  50. package/dist/types/components/AlphaAvatar/useProgressiveImage.d.ts.map +1 -0
  51. package/dist/types/components/AlphaAvatarGroup/AvatarGroup.d.ts +24 -0
  52. package/dist/types/components/AlphaAvatarGroup/AvatarGroup.d.ts.map +1 -0
  53. package/dist/types/components/AlphaAvatarGroup/AvatarGroup.types.d.ts +28 -0
  54. package/dist/types/components/AlphaAvatarGroup/AvatarGroup.types.d.ts.map +1 -0
  55. package/dist/types/components/AlphaAvatarGroup/index.d.ts +3 -0
  56. package/dist/types/components/AlphaAvatarGroup/index.d.ts.map +1 -0
  57. package/dist/types/components/FormHelperText/FormHelperText.d.ts.map +1 -1
  58. package/dist/types/components/FormLabel/FormLabel.d.ts.map +1 -1
  59. package/dist/types/components/Modal/Modal.d.ts.map +1 -1
  60. package/dist/types/components/Tooltip/Tooltip.d.ts.map +1 -1
  61. package/dist/types/index.d.ts +2 -0
  62. package/dist/types/index.d.ts.map +1 -1
  63. package/package.json +2 -2
  64. package/src/components/AlphaAvatar/AlphaAvatar.stories.tsx +63 -0
  65. package/src/components/AlphaAvatar/Avatar.module.scss +54 -0
  66. package/src/components/AlphaAvatar/Avatar.test.tsx +111 -0
  67. package/src/components/AlphaAvatar/Avatar.tsx +159 -0
  68. package/src/components/AlphaAvatar/Avatar.types.ts +64 -0
  69. package/src/components/AlphaAvatar/__snapshots__/Avatar.test.tsx.snap +93 -0
  70. package/src/components/AlphaAvatar/assets/default-avatar.svg +11 -0
  71. package/src/components/AlphaAvatar/index.ts +8 -0
  72. package/src/components/AlphaAvatar/useProgressiveImage.test.ts +96 -0
  73. package/src/components/AlphaAvatar/useProgressiveImage.ts +60 -0
  74. package/src/components/AlphaAvatarGroup/AlphaAvatarGroup.stories.tsx +55 -0
  75. package/src/components/AlphaAvatarGroup/AvatarGroup.module.scss +53 -0
  76. package/src/components/AlphaAvatarGroup/AvatarGroup.test.tsx +93 -0
  77. package/src/components/AlphaAvatarGroup/AvatarGroup.tsx +229 -0
  78. package/src/components/AlphaAvatarGroup/AvatarGroup.types.ts +43 -0
  79. package/src/components/AlphaAvatarGroup/__mocks__/avatarList.ts +39 -0
  80. package/src/components/AlphaAvatarGroup/__snapshots__/AvatarGroup.test.tsx.snap +215 -0
  81. package/src/components/AlphaAvatarGroup/index.ts +2 -0
  82. package/src/components/FormHelperText/FormHelperText.tsx +6 -2
  83. package/src/components/FormLabel/FormLabel.tsx +4 -2
  84. package/src/components/Modal/Modal.tsx +8 -2
  85. package/src/components/Tooltip/Tooltip.tsx +3 -1
  86. package/src/index.ts +2 -0
  87. package/src/stories/alpha-color.mdx +7 -7
  88. package/src/stories/alpha-shadow.mdx +7 -7
@@ -0,0 +1,121 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var index = require('../../node_modules/classnames/index.js');
5
+ var type = require('../../utils/type.js');
6
+ var AvatarGroup = require('../AlphaAvatarGroup/AvatarGroup.js');
7
+ var defaultAvatar = require('./assets/default-avatar.svg.js');
8
+ var useProgressiveImage = require('./useProgressiveImage.js');
9
+ var Avatar_module = require('./Avatar.module.scss.js');
10
+ var ThemeProvider = require('../ThemeProvider/ThemeProvider.js');
11
+ var SmoothCornersBox = require('../SmoothCornersBox/SmoothCornersBox.js');
12
+ var Status = require('../Status/Status.js');
13
+
14
+ function getStatusSize(size) {
15
+ switch (size) {
16
+ case '90':
17
+ case '120':
18
+ return 'l';
19
+ default:
20
+ return 'm';
21
+ }
22
+ }
23
+ function getShadow(size) {
24
+ const spreadRadius = (() => {
25
+ switch (size) {
26
+ case '90':
27
+ return 3;
28
+ case '120':
29
+ return 4;
30
+ default:
31
+ return 2;
32
+ }
33
+ })();
34
+ return {
35
+ spreadRadius,
36
+ color: 'bg-white-high'
37
+ };
38
+ }
39
+ function useAvatarRadiusToken() {
40
+ // TODO: Replace this with useAlphaTokens
41
+ return ThemeProvider.useTokens().global.radius['radius-42-p'];
42
+ }
43
+ const AVATAR_WRAPPER_TEST_ID = 'bezier-avatar-wrapper';
44
+ const AVATAR_TEST_ID = 'bezier-avatar';
45
+ const STATUS_WRAPPER_TEST_ID = 'bezier-status-wrapper';
46
+
47
+ /**
48
+ * `Avatar` is a component for representing some profile image.
49
+ * @example
50
+ *
51
+ * ```tsx
52
+ * <Avatar
53
+ * avatarUrl="https://..."
54
+ * name="channel"
55
+ * size="48"
56
+ * showBorder
57
+ * disabled
58
+ * />
59
+ * ```
60
+ */
61
+ const Avatar = /*#__PURE__*/React.forwardRef(function Avatar({
62
+ avatarUrl = '',
63
+ fallbackUrl = defaultAvatar.default,
64
+ size: sizeProps = '24',
65
+ name,
66
+ disabled = false,
67
+ showBorder = false,
68
+ smoothCorners = true,
69
+ status,
70
+ className,
71
+ children,
72
+ ...rest
73
+ }, forwardedRef) {
74
+ const avatarGroupContext = AvatarGroup.useAvatarGroupContext();
75
+ const size = avatarGroupContext?.size ?? sizeProps;
76
+ const loadedAvatarUrl = useProgressiveImage.default(avatarUrl, fallbackUrl);
77
+ const AVATAR_BORDER_RADIUS = useAvatarRadiusToken();
78
+ const StatusComponent = React.useMemo(() => {
79
+ if (type.isEmpty(children) && !status || children && ! /*#__PURE__*/React.isValidElement(children)) {
80
+ return null;
81
+ }
82
+ const Contents = (() => {
83
+ if (children) {
84
+ return children;
85
+ }
86
+ if (status) {
87
+ return /*#__PURE__*/React.createElement(Status.Status, {
88
+ type: status,
89
+ size: getStatusSize(size)
90
+ });
91
+ }
92
+ return null;
93
+ })();
94
+ return Contents && /*#__PURE__*/React.createElement("div", {
95
+ className: Avatar_module.default.StatusWrapper,
96
+ "data-testid": STATUS_WRAPPER_TEST_ID
97
+ }, Contents);
98
+ }, [status, size, children]);
99
+ return /*#__PURE__*/React.createElement("div", Object.assign({
100
+ className: index.default(Avatar_module.default.Avatar, Avatar_module.default[`size-${size}`], disabled && Avatar_module.default.disabled, className),
101
+ "data-disabled": disabled,
102
+ "data-testid": AVATAR_WRAPPER_TEST_ID
103
+ }, rest), /*#__PURE__*/React.createElement(SmoothCornersBox.SmoothCornersBox, {
104
+ ref: forwardedRef,
105
+ "aria-label": name,
106
+ className: index.default(Avatar_module.default.AvatarImage, Number(size) >= 72 && Avatar_module.default['big-size'], showBorder && Avatar_module.default.bordered),
107
+ disabled: !smoothCorners,
108
+ borderRadius: AVATAR_BORDER_RADIUS,
109
+ shadow: showBorder ? getShadow(size) : undefined,
110
+ backgroundColor: "bg-white-normal",
111
+ backgroundImage: loadedAvatarUrl,
112
+ "data-testid": AVATAR_TEST_ID
113
+ }, StatusComponent));
114
+ });
115
+
116
+ exports.AVATAR_TEST_ID = AVATAR_TEST_ID;
117
+ exports.AVATAR_WRAPPER_TEST_ID = AVATAR_WRAPPER_TEST_ID;
118
+ exports.Avatar = Avatar;
119
+ exports.STATUS_WRAPPER_TEST_ID = STATUS_WRAPPER_TEST_ID;
120
+ exports.useAvatarRadiusToken = useAvatarRadiusToken;
121
+ //# sourceMappingURL=Avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.js","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,8 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ 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"};
6
+
7
+ exports.default = styles;
8
+ //# sourceMappingURL=Avatar.module.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ 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";
6
+
7
+ exports.default = defaultAvatarUrl;
8
+ //# sourceMappingURL=default-avatar.svg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-avatar.svg.js","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,48 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+
7
+ const imageCache = new Map();
8
+ function getCachedImage(src) {
9
+ const cachedImage = imageCache.get(src);
10
+ if (!cachedImage) {
11
+ return null;
12
+ }
13
+ return cachedImage;
14
+ }
15
+ function useProgressiveImage(src, defaultSrc) {
16
+ const [source, setSource] = React.useState(() => getCachedImage(src));
17
+ React.useEffect(function updateSource() {
18
+ if (source?.src === src) {
19
+ return undefined;
20
+ }
21
+ const cachedImage = getCachedImage(src);
22
+ if (cachedImage?.isLoaded) {
23
+ setSource(cachedImage);
24
+ return undefined;
25
+ }
26
+ const image = new Image();
27
+ image.src = src;
28
+ image.onload = loadImage(true);
29
+ image.onerror = loadImage(false);
30
+ function loadImage(isLoaded) {
31
+ return () => {
32
+ const loadedImage = {
33
+ src,
34
+ isLoaded
35
+ };
36
+ setSource(loadedImage);
37
+ imageCache.set(src, loadedImage);
38
+ };
39
+ }
40
+ }, [src, source]);
41
+ if (!source || !source.isLoaded) {
42
+ return defaultSrc;
43
+ }
44
+ return source.src;
45
+ }
46
+
47
+ exports.default = useProgressiveImage;
48
+ //# sourceMappingURL=useProgressiveImage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProgressiveImage.js","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,cAAQ,CAAqB,MACvDR,cAAc,CAACC,GAAG,CACpB,CAAC,CAAA;AAEDQ,EAAAA,eAAS,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,153 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var bezierIcons = require('@channel.io/bezier-icons');
5
+ var index = require('../../node_modules/classnames/index.js');
6
+ var array = require('../../utils/array.js');
7
+ var react = require('../../utils/react.js');
8
+ var style = require('../../utils/style.js');
9
+ var AvatarGroup_module = require('./AvatarGroup.module.scss.js');
10
+ var Avatar = require('../AlphaAvatar/Avatar.js');
11
+ var SmoothCornersBox = require('../SmoothCornersBox/SmoothCornersBox.js');
12
+ var Icon = require('../Icon/Icon.js');
13
+ var Text = require('../Text/Text.js');
14
+
15
+ const [AvatarGroupContextProvider, useAvatarGroupContext] = react.createContext(undefined);
16
+ const MAX_AVATAR_LIST_COUNT = 99;
17
+ const AVATAR_GROUP_DEFAULT_SPACING = 4;
18
+ const AVATAR_GROUP_ELLIPSIS_ICON_TEST_ID = 'bezier-avatar-group-ellipsis-icon';
19
+ function getRestAvatarListCountText(count, max) {
20
+ const restCount = count - max;
21
+ return `+${restCount > MAX_AVATAR_LIST_COUNT ? MAX_AVATAR_LIST_COUNT : restCount}`;
22
+ }
23
+
24
+ // TODO: Not specified
25
+ function getProperIconSize(size) {
26
+ return {
27
+ 16: 'xxs',
28
+ 20: 'xxs',
29
+ 24: 'xs',
30
+ 30: 's',
31
+ 36: 'm',
32
+ 42: 'm',
33
+ 48: 'l',
34
+ 72: 'l',
35
+ 90: 'l',
36
+ 120: 'l'
37
+ }[size];
38
+ }
39
+
40
+ // TODO: Not specified
41
+ function getProperTypoSize(size) {
42
+ return {
43
+ 16: '12',
44
+ 20: '12',
45
+ 24: '13',
46
+ 30: '15',
47
+ 36: '16',
48
+ 42: '18',
49
+ 48: '24',
50
+ 72: '24',
51
+ 90: '24',
52
+ 120: '24'
53
+ }[size];
54
+ }
55
+
56
+ /**
57
+ * `AvatarGroup` is a component for grouping `Avatar` components
58
+ * @example
59
+ *
60
+ * ```tsx
61
+ * <AvatarGroup
62
+ * max={2}
63
+ * size="24"
64
+ * spacing={4}
65
+ * ellipsisType="icon"
66
+ * >
67
+ * <Avatar />
68
+ * <Avatar />
69
+ * <Avatar />
70
+ * </AvatarGroup>
71
+ * ```
72
+ */
73
+ const AvatarGroup = /*#__PURE__*/React.forwardRef(function AvatarGroup({
74
+ max = 5,
75
+ size = '24',
76
+ spacing = AVATAR_GROUP_DEFAULT_SPACING,
77
+ ellipsisType = 'icon',
78
+ style: style$1,
79
+ className,
80
+ children,
81
+ ...rest
82
+ }, forwardedRef) {
83
+ const AVATAR_BORDER_RADIUS = Avatar.useAvatarRadiusToken();
84
+ const avatarListCount = React.Children.count(children);
85
+ const renderAvatarElement = React.useCallback(avatar => {
86
+ const key = avatar.key ?? `${avatar.props.name}-${avatar.props.avatarUrl}`;
87
+ const shouldShowBorder = max > 1 && avatarListCount > 1 && spacing < 0;
88
+ const showBorder = avatar.props.showBorder || shouldShowBorder;
89
+ return /*#__PURE__*/React.cloneElement(avatar, {
90
+ key,
91
+ showBorder
92
+ });
93
+ }, [avatarListCount, max, spacing]);
94
+ const AvatarListComponent = React.useMemo(() => {
95
+ return React.Children.toArray(children).slice(0, max).map((avatar, index$1, arr) => {
96
+ if (! /*#__PURE__*/React.isValidElement(avatar)) {
97
+ return null;
98
+ }
99
+ const AvatarElement = renderAvatarElement(avatar);
100
+ if (!array.isLastIndex(arr, index$1) || avatarListCount <= max) {
101
+ return AvatarElement;
102
+ }
103
+ if (ellipsisType === 'icon') {
104
+ return /*#__PURE__*/React.createElement("div", {
105
+ key: "ellipsis",
106
+ className: AvatarGroup_module.default.AvatarEllipsisIconWrapper,
107
+ "data-testid": AVATAR_GROUP_ELLIPSIS_ICON_TEST_ID
108
+ }, /*#__PURE__*/React.createElement(SmoothCornersBox.SmoothCornersBox, {
109
+ borderRadius: AVATAR_BORDER_RADIUS,
110
+ backgroundColor: "bgtxt-absolute-black-lightest",
111
+ className: AvatarGroup_module.default.AvatarEllipsisIcon
112
+ }, /*#__PURE__*/React.createElement(Icon.Icon, {
113
+ source: bezierIcons.MoreIcon,
114
+ size: getProperIconSize(size),
115
+ color: "bgtxt-absolute-white-dark"
116
+ })), AvatarElement);
117
+ }
118
+ if (ellipsisType === 'count') {
119
+ return /*#__PURE__*/React.createElement(React.Fragment, {
120
+ key: "ellipsis"
121
+ }, AvatarElement, /*#__PURE__*/React.createElement("div", {
122
+ style: {
123
+ '--b-avatar-group-ellipsis-ml': style.px(Math.max(spacing, AVATAR_GROUP_DEFAULT_SPACING))
124
+ },
125
+ className: index.default(AvatarGroup_module.default.AvatarEllipsisCountWrapper)
126
+ }, /*#__PURE__*/React.createElement(Text.Text, {
127
+ typo: getProperTypoSize(size),
128
+ color: "txt-black-dark",
129
+ className: AvatarGroup_module.default.AvatarEllipsisCount
130
+ }, getRestAvatarListCountText(avatarListCount, max))));
131
+ }
132
+ return null;
133
+ });
134
+ }, [avatarListCount, max, children, renderAvatarElement, ellipsisType, AVATAR_BORDER_RADIUS, size, spacing]);
135
+ return /*#__PURE__*/React.createElement(AvatarGroupContextProvider, {
136
+ value: React.useMemo(() => ({
137
+ size
138
+ }), [size])
139
+ }, /*#__PURE__*/React.createElement("div", Object.assign({
140
+ role: "group",
141
+ ref: forwardedRef,
142
+ className: index.default(AvatarGroup_module.default.AvatarGroup, AvatarGroup_module.default[`size-${size}`], className),
143
+ style: {
144
+ '--b-avatar-group-spacing': style.px(spacing),
145
+ ...style$1
146
+ }
147
+ }, rest), AvatarListComponent));
148
+ });
149
+
150
+ exports.AVATAR_GROUP_ELLIPSIS_ICON_TEST_ID = AVATAR_GROUP_ELLIPSIS_ICON_TEST_ID;
151
+ exports.AvatarGroup = AvatarGroup;
152
+ exports.useAvatarGroupContext = useAvatarGroupContext;
153
+ //# sourceMappingURL=AvatarGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvatarGroup.js","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":"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"}
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ 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"};
6
+
7
+ exports.default = styles;
8
+ //# sourceMappingURL=AvatarGroup.module.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvatarGroup.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -16,6 +16,7 @@ const BaseHelperText = /*#__PURE__*/React.forwardRef(function BaseHelperText(pro
16
16
  type: type$1,
17
17
  typo = '13',
18
18
  children,
19
+ className,
19
20
  ...rest
20
21
  } = props;
21
22
  const contextValue = FormControl.useFormControlContext();
@@ -38,7 +39,7 @@ const BaseHelperText = /*#__PURE__*/React.forwardRef(function BaseHelperText(pro
38
39
  return /*#__PURE__*/React.createElement(Text.Text, Object.assign({
39
40
  ref: mergedRef,
40
41
  as: "p",
41
- className: index.default(FormHelperText_module.default.FormHelperText, formControlClassName),
42
+ className: index.default(FormHelperText_module.default.FormHelperText, formControlClassName, className),
42
43
  typo: typo,
43
44
  align: "left"
44
45
  }, ownProps), children);
@@ -1 +1 @@
1
- {"version":3,"file":"FormHelperText.js","sources":["../../../../src/components/FormHelperText/FormHelperText.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\nimport classNames from 'classnames'\n\nimport useMergeRefs from '~/src/hooks/useMergeRefs'\nimport { noop } from '~/src/utils/function'\nimport { isEmpty } from '~/src/utils/type'\n\nimport { useFormControlContext } from '~/src/components/FormControl'\nimport { Text } from '~/src/components/Text'\n\nimport type {\n BaseHelperTextProps,\n FormErrorMessageProps,\n FormHelperTextProps,\n} from './FormHelperText.types'\n\nimport styles from './FormHelperText.module.scss'\n\nexport const FORM_HELPER_TEXT_TEST_ID = 'bezier-form-helper-text'\nexport const FORM_ERROR_MESSAGE_TEST_ID = 'bezier-form-error-message'\n\nconst BaseHelperText = forwardRef<HTMLSpanElement, BaseHelperTextProps>(\n function BaseHelperText(props, forwardedRef) {\n const { type, typo = '13', children, ...rest } = props\n\n const contextValue = useFormControlContext()\n const getProps =\n type === 'info'\n ? contextValue?.getHelperTextProps\n : contextValue?.getErrorMessageProps\n\n const {\n visible,\n ref,\n className: formControlClassName,\n ...ownProps\n } = getProps?.(rest) ?? {\n visible: true,\n ref: noop,\n className: undefined,\n ...rest,\n }\n\n const mergedRef = useMergeRefs(ref, forwardedRef)\n\n if (isEmpty(children) || !visible) {\n return null\n }\n\n return (\n <Text\n ref={mergedRef}\n as=\"p\"\n className={classNames(styles.FormHelperText, formControlClassName)}\n typo={typo}\n align=\"left\"\n {...ownProps}\n >\n {children}\n </Text>\n )\n }\n)\n\n/**\n * `FormHelperText` is a component to show the description of the input element.\n * `FormControl` component can handle its layout by `position` props.\n * @example\n * ```tsx\n * <FormControl position=\"top\">\n * <FormLabel>\n * Password\n * </FormLabel>\n * <TextField />\n * <FormHelperText>\n * Please use at least 6 characters\n * </FormHelperText>\n * </FormControl>\n * ```\n */\nexport const FormHelperText = forwardRef<HTMLSpanElement, FormHelperTextProps>(\n function FormHelperText(props, forwardedRef) {\n const { color = 'txt-black-dark', children, ...rest } = props\n\n return (\n <BaseHelperText\n type=\"info\"\n ref={forwardedRef}\n color={color}\n data-testid={FORM_HELPER_TEXT_TEST_ID}\n {...rest}\n >\n {children}\n </BaseHelperText>\n )\n }\n)\n\n/**\n * `FormErrorMessage` is a component to show error message when form values are invalid.\n * It should be used with `FormControl` component.\n * @example\n * ```tsx\n * <FormControl>\n * <FormLabel>\n * Password\n * </FormLabel>\n * <TextField />\n * <FormErrorMessage>\n * Password should be at least 6 characters\n * </FormErrorMessage>\n * </FormControl>\n * ```\n */\nexport const FormErrorMessage = forwardRef<\n HTMLSpanElement,\n FormErrorMessageProps\n>(function FormErrorMessage(props, forwardedRef) {\n const { color = 'bgtxt-orange-normal', children, ...rest } = props\n\n return (\n <BaseHelperText\n aria-live=\"polite\"\n type=\"error\"\n ref={forwardedRef}\n color={color}\n data-testid={FORM_ERROR_MESSAGE_TEST_ID}\n {...rest}\n >\n {children}\n </BaseHelperText>\n )\n})\n"],"names":["FORM_HELPER_TEXT_TEST_ID","FORM_ERROR_MESSAGE_TEST_ID","BaseHelperText","forwardRef","props","forwardedRef","type","typo","children","rest","contextValue","useFormControlContext","getProps","getHelperTextProps","getErrorMessageProps","visible","ref","className","formControlClassName","ownProps","noop","undefined","mergedRef","useMergeRefs","isEmpty","React","createElement","Text","Object","assign","as","classNames","styles","FormHelperText","align","color","FormErrorMessage"],"mappings":"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"}
1
+ {"version":3,"file":"FormHelperText.js","sources":["../../../../src/components/FormHelperText/FormHelperText.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\nimport classNames from 'classnames'\n\nimport useMergeRefs from '~/src/hooks/useMergeRefs'\nimport { noop } from '~/src/utils/function'\nimport { isEmpty } from '~/src/utils/type'\n\nimport { useFormControlContext } from '~/src/components/FormControl'\nimport { Text } from '~/src/components/Text'\n\nimport type {\n BaseHelperTextProps,\n FormErrorMessageProps,\n FormHelperTextProps,\n} from './FormHelperText.types'\n\nimport styles from './FormHelperText.module.scss'\n\nexport const FORM_HELPER_TEXT_TEST_ID = 'bezier-form-helper-text'\nexport const FORM_ERROR_MESSAGE_TEST_ID = 'bezier-form-error-message'\n\nconst BaseHelperText = forwardRef<HTMLSpanElement, BaseHelperTextProps>(\n function BaseHelperText(props, forwardedRef) {\n const { type, typo = '13', children, className, ...rest } = props\n\n const contextValue = useFormControlContext()\n const getProps =\n type === 'info'\n ? contextValue?.getHelperTextProps\n : contextValue?.getErrorMessageProps\n\n const {\n visible,\n ref,\n className: formControlClassName,\n ...ownProps\n } = getProps?.(rest) ?? {\n visible: true,\n ref: noop,\n className: undefined,\n ...rest,\n }\n\n const mergedRef = useMergeRefs(ref, forwardedRef)\n\n if (isEmpty(children) || !visible) {\n return null\n }\n\n return (\n <Text\n ref={mergedRef}\n as=\"p\"\n className={classNames(\n styles.FormHelperText,\n formControlClassName,\n className\n )}\n typo={typo}\n align=\"left\"\n {...ownProps}\n >\n {children}\n </Text>\n )\n }\n)\n\n/**\n * `FormHelperText` is a component to show the description of the input element.\n * `FormControl` component can handle its layout by `position` props.\n * @example\n * ```tsx\n * <FormControl position=\"top\">\n * <FormLabel>\n * Password\n * </FormLabel>\n * <TextField />\n * <FormHelperText>\n * Please use at least 6 characters\n * </FormHelperText>\n * </FormControl>\n * ```\n */\nexport const FormHelperText = forwardRef<HTMLSpanElement, FormHelperTextProps>(\n function FormHelperText(props, forwardedRef) {\n const { color = 'txt-black-dark', children, ...rest } = props\n\n return (\n <BaseHelperText\n type=\"info\"\n ref={forwardedRef}\n color={color}\n data-testid={FORM_HELPER_TEXT_TEST_ID}\n {...rest}\n >\n {children}\n </BaseHelperText>\n )\n }\n)\n\n/**\n * `FormErrorMessage` is a component to show error message when form values are invalid.\n * It should be used with `FormControl` component.\n * @example\n * ```tsx\n * <FormControl>\n * <FormLabel>\n * Password\n * </FormLabel>\n * <TextField />\n * <FormErrorMessage>\n * Password should be at least 6 characters\n * </FormErrorMessage>\n * </FormControl>\n * ```\n */\nexport const FormErrorMessage = forwardRef<\n HTMLSpanElement,\n FormErrorMessageProps\n>(function FormErrorMessage(props, forwardedRef) {\n const { color = 'bgtxt-orange-normal', children, ...rest } = props\n\n return (\n <BaseHelperText\n aria-live=\"polite\"\n type=\"error\"\n ref={forwardedRef}\n color={color}\n data-testid={FORM_ERROR_MESSAGE_TEST_ID}\n {...rest}\n >\n {children}\n </BaseHelperText>\n )\n})\n"],"names":["FORM_HELPER_TEXT_TEST_ID","FORM_ERROR_MESSAGE_TEST_ID","BaseHelperText","forwardRef","props","forwardedRef","type","typo","children","className","rest","contextValue","useFormControlContext","getProps","getHelperTextProps","getErrorMessageProps","visible","ref","formControlClassName","ownProps","noop","undefined","mergedRef","useMergeRefs","isEmpty","React","createElement","Text","Object","assign","as","classNames","styles","FormHelperText","align","color","FormErrorMessage"],"mappings":"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"}
@@ -30,6 +30,7 @@ const FormLabel = /*#__PURE__*/React.forwardRef(function FormLabel(props, forwar
30
30
  help,
31
31
  bold = true,
32
32
  color = 'txt-black-darkest',
33
+ className,
33
34
  children,
34
35
  ...rest
35
36
  } = props;
@@ -58,7 +59,7 @@ const FormLabel = /*#__PURE__*/React.forwardRef(function FormLabel(props, forwar
58
59
  return /*#__PURE__*/React.createElement(Help.Help, null, help);
59
60
  })();
60
61
  const LabelComponent = /*#__PURE__*/React.createElement(Text.Text, Object.assign({
61
- className: index.default(FormLabel_module.default.LabelText, !HelpComponent && formControlClassName),
62
+ className: index.default(FormLabel_module.default.LabelText, !HelpComponent && formControlClassName, className),
62
63
  ref: forwardedRef,
63
64
  as: "label",
64
65
  align: "left",
@@ -72,7 +73,7 @@ const FormLabel = /*#__PURE__*/React.forwardRef(function FormLabel(props, forwar
72
73
  return !HelpComponent ? LabelComponent : /*#__PURE__*/React.createElement(LegacyHStack.LegacyHStack, {
73
74
  align: "center",
74
75
  spacing: 6,
75
- className: HelpComponent && formControlClassName
76
+ className: formControlClassName
76
77
  }, /*#__PURE__*/React.createElement(LegacyStackItem.LegacyStackItem, {
77
78
  shrink: true,
78
79
  weight: 1
@@ -1 +1 @@
1
- {"version":3,"file":"FormLabel.js","sources":["../../../../src/components/FormLabel/FormLabel.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\nimport classNames from 'classnames'\n\nimport { isEmpty } from '~/src/utils/type'\n\nimport { useFormControlContext } from '~/src/components/FormControl'\nimport { Help } from '~/src/components/Help'\nimport { HELP_DISPLAY_NAME } from '~/src/components/Help/Help'\nimport { LegacyHStack, LegacyStackItem } from '~/src/components/LegacyStack'\nimport { Text } from '~/src/components/Text'\n\nimport { type FormLabelProps } from './FormLabel.types'\n\nimport styles from './FormLabel.module.scss'\n\nexport const FORM_LABEL_TEST_ID = 'bezier-form-label'\n\n/**\n * `FormLabel` is a component to show label.\n * `FormControl` component can handle its layout by `position` props.\n * @example\n * ```tsx\n * <FormControl position=\"top\">\n * <FormLabel>\n * Name\n * </FormLabel>\n * <TextField />\n * </FormControl>\n * ```\n */\nexport const FormLabel = forwardRef<HTMLLabelElement, FormLabelProps>(\n function FormLabel(props, forwardedRef) {\n const {\n help,\n bold = true,\n color = 'txt-black-darkest',\n children,\n ...rest\n } = props\n\n const contextValue = useFormControlContext()\n const { className: formControlClassName, ...ownProps } =\n contextValue?.getLabelProps(rest) ?? {\n typo: '13',\n className: undefined,\n ...rest,\n }\n\n const HelpComponent = (() => {\n if (isEmpty(help)) {\n return null\n }\n\n if (React.isValidElement(help)) {\n // FIXME(@bora): string, JSXElementCostructor 타입에 displayName 속성이 존재하지 않음, 임시로 any 타입으로 설정\n const { displayName } = help?.type as any\n if (displayName === HELP_DISPLAY_NAME) {\n return help\n }\n }\n\n return <Help>{help}</Help>\n })()\n\n const LabelComponent = (\n <Text\n className={classNames(\n styles.LabelText,\n !HelpComponent && formControlClassName\n )}\n ref={forwardedRef}\n as=\"label\"\n align=\"left\"\n bold={bold}\n color={color}\n data-testid={FORM_LABEL_TEST_ID}\n {...ownProps}\n >\n {children}\n </Text>\n )\n\n if (isEmpty(children)) {\n return null\n }\n\n return !HelpComponent ? (\n LabelComponent\n ) : (\n <LegacyHStack\n align=\"center\"\n spacing={6}\n className={HelpComponent && formControlClassName}\n >\n <LegacyStackItem\n shrink\n weight={1}\n >\n {LabelComponent}\n </LegacyStackItem>\n <LegacyStackItem>{HelpComponent}</LegacyStackItem>\n </LegacyHStack>\n )\n }\n)\n"],"names":["FORM_LABEL_TEST_ID","FormLabel","forwardRef","props","forwardedRef","help","bold","color","children","rest","contextValue","useFormControlContext","className","formControlClassName","ownProps","getLabelProps","typo","undefined","HelpComponent","isEmpty","React","isValidElement","displayName","type","HELP_DISPLAY_NAME","createElement","Help","LabelComponent","Text","Object","assign","classNames","styles","LabelText","ref","as","align","LegacyHStack","spacing","LegacyStackItem","shrink","weight"],"mappings":";;;;;;;;;;;;AAgBO,MAAMA,kBAAkB,GAAG,oBAAmB;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,SAAS,gBAAGC,gBAAU,CACjC,SAASD,SAASA,CAACE,KAAK,EAAEC,YAAY,EAAE;EACtC,MAAM;IACJC,IAAI;AACJC,IAAAA,IAAI,GAAG,IAAI;AACXC,IAAAA,KAAK,GAAG,mBAAmB;IAC3BC,QAAQ;IACR,GAAGC,IAAAA;AACL,GAAC,GAAGN,KAAK,CAAA;AAET,EAAA,MAAMO,YAAY,GAAGC,iCAAqB,EAAE,CAAA;EAC5C,MAAM;AAAEC,IAAAA,SAAS,EAAEC,oBAAoB;IAAE,GAAGC,QAAAA;AAAS,GAAC,GACpDJ,YAAY,EAAEK,aAAa,CAACN,IAAI,CAAC,IAAI;AACnCO,IAAAA,IAAI,EAAE,IAAI;AACVJ,IAAAA,SAAS,EAAEK,SAAS;IACpB,GAAGR,IAAAA;GACJ,CAAA;EAEH,MAAMS,aAAa,GAAG,CAAC,MAAM;AAC3B,IAAA,IAAIC,YAAO,CAACd,IAAI,CAAC,EAAE;AACjB,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;AAEA,IAAA,kBAAIe,KAAK,CAACC,cAAc,CAAChB,IAAI,CAAC,EAAE;AAC9B;MACA,MAAM;AAAEiB,QAAAA,WAAAA;OAAa,GAAGjB,IAAI,EAAEkB,IAAW,CAAA;MACzC,IAAID,WAAW,KAAKE,sBAAiB,EAAE;AACrC,QAAA,OAAOnB,IAAI,CAAA;AACb,OAAA;AACF,KAAA;AAEA,IAAA,oBAAOe,KAAA,CAAAK,aAAA,CAACC,SAAI,EAAA,IAAA,EAAErB,IAAW,CAAC,CAAA;AAC5B,GAAC,GAAG,CAAA;EAEJ,MAAMsB,cAAc,gBAClBP,KAAA,CAAAK,aAAA,CAACG,SAAI,EAAAC,MAAA,CAAAC,MAAA,CAAA;IACHlB,SAAS,EAAEmB,aAAU,CACnBC,wBAAM,CAACC,SAAS,EAChB,CAACf,aAAa,IAAIL,oBACpB,CAAE;AACFqB,IAAAA,GAAG,EAAE9B,YAAa;AAClB+B,IAAAA,EAAE,EAAC,OAAO;AACVC,IAAAA,KAAK,EAAC,MAAM;AACZ9B,IAAAA,IAAI,EAAEA,IAAK;AACXC,IAAAA,KAAK,EAAEA,KAAM;IACb,aAAaP,EAAAA,kBAAAA;GACTc,EAAAA,QAAQ,CAEXN,EAAAA,QACG,CACP,CAAA;AAED,EAAA,IAAIW,YAAO,CAACX,QAAQ,CAAC,EAAE;AACrB,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;EAEA,OAAO,CAACU,aAAa,GACnBS,cAAc,gBAEdP,KAAA,CAAAK,aAAA,CAACY,yBAAY,EAAA;AACXD,IAAAA,KAAK,EAAC,QAAQ;AACdE,IAAAA,OAAO,EAAE,CAAE;IACX1B,SAAS,EAAEM,aAAa,IAAIL,oBAAAA;AAAqB,GAAA,eAEjDO,KAAA,CAAAK,aAAA,CAACc,+BAAe,EAAA;IACdC,MAAM,EAAA,IAAA;AACNC,IAAAA,MAAM,EAAE,CAAA;GAEPd,EAAAA,cACc,CAAC,eAClBP,KAAA,CAAAK,aAAA,CAACc,+BAAe,EAAA,IAAA,EAAErB,aAA+B,CACrC,CACf,CAAA;AACH,CACF;;;;;"}
1
+ {"version":3,"file":"FormLabel.js","sources":["../../../../src/components/FormLabel/FormLabel.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\nimport classNames from 'classnames'\n\nimport { isEmpty } from '~/src/utils/type'\n\nimport { useFormControlContext } from '~/src/components/FormControl'\nimport { Help } from '~/src/components/Help'\nimport { HELP_DISPLAY_NAME } from '~/src/components/Help/Help'\nimport { LegacyHStack, LegacyStackItem } from '~/src/components/LegacyStack'\nimport { Text } from '~/src/components/Text'\n\nimport { type FormLabelProps } from './FormLabel.types'\n\nimport styles from './FormLabel.module.scss'\n\nexport const FORM_LABEL_TEST_ID = 'bezier-form-label'\n\n/**\n * `FormLabel` is a component to show label.\n * `FormControl` component can handle its layout by `position` props.\n * @example\n * ```tsx\n * <FormControl position=\"top\">\n * <FormLabel>\n * Name\n * </FormLabel>\n * <TextField />\n * </FormControl>\n * ```\n */\nexport const FormLabel = forwardRef<HTMLLabelElement, FormLabelProps>(\n function FormLabel(props, forwardedRef) {\n const {\n help,\n bold = true,\n color = 'txt-black-darkest',\n className,\n children,\n ...rest\n } = props\n\n const contextValue = useFormControlContext()\n const { className: formControlClassName, ...ownProps } =\n contextValue?.getLabelProps(rest) ?? {\n typo: '13',\n className: undefined,\n ...rest,\n }\n\n const HelpComponent = (() => {\n if (isEmpty(help)) {\n return null\n }\n\n if (React.isValidElement(help)) {\n // FIXME(@bora): string, JSXElementCostructor 타입에 displayName 속성이 존재하지 않음, 임시로 any 타입으로 설정\n const { displayName } = help?.type as any\n if (displayName === HELP_DISPLAY_NAME) {\n return help\n }\n }\n\n return <Help>{help}</Help>\n })()\n\n const LabelComponent = (\n <Text\n className={classNames(\n styles.LabelText,\n !HelpComponent && formControlClassName,\n className\n )}\n ref={forwardedRef}\n as=\"label\"\n align=\"left\"\n bold={bold}\n color={color}\n data-testid={FORM_LABEL_TEST_ID}\n {...ownProps}\n >\n {children}\n </Text>\n )\n\n if (isEmpty(children)) {\n return null\n }\n\n return !HelpComponent ? (\n LabelComponent\n ) : (\n <LegacyHStack\n align=\"center\"\n spacing={6}\n className={formControlClassName}\n >\n <LegacyStackItem\n shrink\n weight={1}\n >\n {LabelComponent}\n </LegacyStackItem>\n <LegacyStackItem>{HelpComponent}</LegacyStackItem>\n </LegacyHStack>\n )\n }\n)\n"],"names":["FORM_LABEL_TEST_ID","FormLabel","forwardRef","props","forwardedRef","help","bold","color","className","children","rest","contextValue","useFormControlContext","formControlClassName","ownProps","getLabelProps","typo","undefined","HelpComponent","isEmpty","React","isValidElement","displayName","type","HELP_DISPLAY_NAME","createElement","Help","LabelComponent","Text","Object","assign","classNames","styles","LabelText","ref","as","align","LegacyHStack","spacing","LegacyStackItem","shrink","weight"],"mappings":";;;;;;;;;;;;AAgBO,MAAMA,kBAAkB,GAAG,oBAAmB;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,SAAS,gBAAGC,gBAAU,CACjC,SAASD,SAASA,CAACE,KAAK,EAAEC,YAAY,EAAE;EACtC,MAAM;IACJC,IAAI;AACJC,IAAAA,IAAI,GAAG,IAAI;AACXC,IAAAA,KAAK,GAAG,mBAAmB;IAC3BC,SAAS;IACTC,QAAQ;IACR,GAAGC,IAAAA;AACL,GAAC,GAAGP,KAAK,CAAA;AAET,EAAA,MAAMQ,YAAY,GAAGC,iCAAqB,EAAE,CAAA;EAC5C,MAAM;AAAEJ,IAAAA,SAAS,EAAEK,oBAAoB;IAAE,GAAGC,QAAAA;AAAS,GAAC,GACpDH,YAAY,EAAEI,aAAa,CAACL,IAAI,CAAC,IAAI;AACnCM,IAAAA,IAAI,EAAE,IAAI;AACVR,IAAAA,SAAS,EAAES,SAAS;IACpB,GAAGP,IAAAA;GACJ,CAAA;EAEH,MAAMQ,aAAa,GAAG,CAAC,MAAM;AAC3B,IAAA,IAAIC,YAAO,CAACd,IAAI,CAAC,EAAE;AACjB,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;AAEA,IAAA,kBAAIe,KAAK,CAACC,cAAc,CAAChB,IAAI,CAAC,EAAE;AAC9B;MACA,MAAM;AAAEiB,QAAAA,WAAAA;OAAa,GAAGjB,IAAI,EAAEkB,IAAW,CAAA;MACzC,IAAID,WAAW,KAAKE,sBAAiB,EAAE;AACrC,QAAA,OAAOnB,IAAI,CAAA;AACb,OAAA;AACF,KAAA;AAEA,IAAA,oBAAOe,KAAA,CAAAK,aAAA,CAACC,SAAI,EAAA,IAAA,EAAErB,IAAW,CAAC,CAAA;AAC5B,GAAC,GAAG,CAAA;EAEJ,MAAMsB,cAAc,gBAClBP,KAAA,CAAAK,aAAA,CAACG,SAAI,EAAAC,MAAA,CAAAC,MAAA,CAAA;AACHtB,IAAAA,SAAS,EAAEuB,aAAU,CACnBC,wBAAM,CAACC,SAAS,EAChB,CAACf,aAAa,IAAIL,oBAAoB,EACtCL,SACF,CAAE;AACF0B,IAAAA,GAAG,EAAE9B,YAAa;AAClB+B,IAAAA,EAAE,EAAC,OAAO;AACVC,IAAAA,KAAK,EAAC,MAAM;AACZ9B,IAAAA,IAAI,EAAEA,IAAK;AACXC,IAAAA,KAAK,EAAEA,KAAM;IACb,aAAaP,EAAAA,kBAAAA;GACTc,EAAAA,QAAQ,CAEXL,EAAAA,QACG,CACP,CAAA;AAED,EAAA,IAAIU,YAAO,CAACV,QAAQ,CAAC,EAAE;AACrB,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;EAEA,OAAO,CAACS,aAAa,GACnBS,cAAc,gBAEdP,KAAA,CAAAK,aAAA,CAACY,yBAAY,EAAA;AACXD,IAAAA,KAAK,EAAC,QAAQ;AACdE,IAAAA,OAAO,EAAE,CAAE;AACX9B,IAAAA,SAAS,EAAEK,oBAAAA;AAAqB,GAAA,eAEhCO,KAAA,CAAAK,aAAA,CAACc,+BAAe,EAAA;IACdC,MAAM,EAAA,IAAA;AACNC,IAAAA,MAAM,EAAE,CAAA;GAEPd,EAAAA,cACc,CAAC,eAClBP,KAAA,CAAAK,aAAA,CAACc,+BAAe,EAAA,IAAA,EAAErB,aAA+B,CACrC,CACf,CAAA;AACH,CACF;;;;;"}