@channel.io/bezier-react 2.0.6 → 2.0.8

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 (216) hide show
  1. package/dist/cjs/components/AlphaAvatar/Avatar.js +2 -2
  2. package/dist/cjs/components/AlphaAvatar/Avatar.js.map +1 -1
  3. package/dist/cjs/components/AlphaAvatar/AvatarSizeContext.js +11 -0
  4. package/dist/cjs/components/AlphaAvatar/AvatarSizeContext.js.map +1 -0
  5. package/dist/cjs/components/AlphaAvatarGroup/AvatarGroup.js +2 -4
  6. package/dist/cjs/components/AlphaAvatarGroup/AvatarGroup.js.map +1 -1
  7. package/dist/cjs/components/AlphaButton/Button.js +4 -12
  8. package/dist/cjs/components/AlphaButton/Button.js.map +1 -1
  9. package/dist/cjs/components/AlphaButton/Button.module.scss.js +1 -1
  10. package/dist/cjs/components/AlphaFloatingButton/FloatingButton.js +4 -12
  11. package/dist/cjs/components/AlphaFloatingButton/FloatingButton.js.map +1 -1
  12. package/dist/cjs/components/AlphaFloatingButton/FloatingButton.module.scss.js +1 -1
  13. package/dist/cjs/components/AlphaFloatingIconButton/FloatingIconButton.js +4 -12
  14. package/dist/cjs/components/AlphaFloatingIconButton/FloatingIconButton.js.map +1 -1
  15. package/dist/cjs/components/AlphaFloatingIconButton/FloatingIconButton.module.scss.js +1 -1
  16. package/dist/cjs/components/AlphaIconButton/IconButton.js +4 -12
  17. package/dist/cjs/components/AlphaIconButton/IconButton.js.map +1 -1
  18. package/dist/cjs/components/AlphaIconButton/IconButton.module.scss.js +1 -1
  19. package/dist/cjs/components/AlphaSpinner/Spinner.js +36 -0
  20. package/dist/cjs/components/AlphaSpinner/Spinner.js.map +1 -0
  21. package/dist/cjs/components/AlphaSpinner/Spinner.module.scss.js +8 -0
  22. package/dist/cjs/components/AlphaSpinner/Spinner.module.scss.js.map +1 -0
  23. package/dist/cjs/components/AutoFocus/AutoFocus.js +2 -1
  24. package/dist/cjs/components/AutoFocus/AutoFocus.js.map +1 -1
  25. package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
  26. package/dist/cjs/components/AvatarGroup/AvatarGroup.js.map +1 -1
  27. package/dist/cjs/components/Banner/Banner.js.map +1 -1
  28. package/dist/cjs/components/BaseTagBadge/BaseTagBadge.js +3 -2
  29. package/dist/cjs/components/BaseTagBadge/BaseTagBadge.js.map +1 -1
  30. package/dist/cjs/components/Box/Box.js.map +1 -1
  31. package/dist/cjs/components/Button/Button.js.map +1 -1
  32. package/dist/cjs/components/Center/Center.js.map +1 -1
  33. package/dist/cjs/components/CheckableAvatar/CheckableAvatar.js.map +1 -1
  34. package/dist/cjs/components/Emoji/Emoji.js.map +1 -1
  35. package/dist/cjs/components/FeatureProvider/FeatureProvider.js +2 -1
  36. package/dist/cjs/components/FeatureProvider/FeatureProvider.js.map +1 -1
  37. package/dist/cjs/components/FeatureProvider/SmoothCornersFeature/smoothCornersScript.js.map +1 -1
  38. package/dist/cjs/components/FormControl/FormControl.js.map +1 -1
  39. package/dist/cjs/components/Icon/Icon.js +1 -12
  40. package/dist/cjs/components/Icon/Icon.js.map +1 -1
  41. package/dist/cjs/components/Icon/Icon.module.scss.js +1 -1
  42. package/dist/cjs/components/LegacyStack/LegacyStack/LegacyStack.js.map +1 -1
  43. package/dist/cjs/components/LegacyStack/LegacyStackItem/LegacyStackItem.js.map +1 -1
  44. package/dist/cjs/components/LegacyTooltip/utils.js.map +1 -1
  45. package/dist/cjs/components/ListItem/ListItem.js.map +1 -1
  46. package/dist/cjs/components/Modal/Modal.js.map +1 -1
  47. package/dist/cjs/components/NavGroup/NavGroup.js.map +1 -1
  48. package/dist/cjs/components/OutlineItem/OutlineItem.js.map +1 -1
  49. package/dist/cjs/components/Overlay/Overlay.js +3 -2
  50. package/dist/cjs/components/Overlay/Overlay.js.map +1 -1
  51. package/dist/cjs/components/Overlay/utils.js.map +1 -1
  52. package/dist/cjs/components/ProgressBar/ProgressBar.js.map +1 -1
  53. package/dist/cjs/components/SegmentedControl/SegmentedControl.js.map +1 -1
  54. package/dist/cjs/components/Slider/Slider.js.map +1 -1
  55. package/dist/cjs/components/SmoothCornersBox/SmoothCornersBox.js.map +1 -1
  56. package/dist/cjs/components/Spinner/Spinner.js.map +1 -1
  57. package/dist/cjs/components/Stack/Stack.js.map +1 -1
  58. package/dist/cjs/components/Status/Status.js.map +1 -1
  59. package/dist/cjs/components/Switch/Switch.js.map +1 -1
  60. package/dist/cjs/components/Tabs/Tabs.js.map +1 -1
  61. package/dist/cjs/components/Text/Text.js.map +1 -1
  62. package/dist/cjs/components/TextArea/TextArea.js +2 -1
  63. package/dist/cjs/components/TextArea/TextArea.js.map +1 -1
  64. package/dist/cjs/components/TextField/TextField.js.map +1 -1
  65. package/dist/cjs/components/Toast/Toast.js +3 -2
  66. package/dist/cjs/components/Toast/Toast.js.map +1 -1
  67. package/dist/cjs/hooks/useIsomorphicLayoutEffect.js +13 -0
  68. package/dist/cjs/hooks/useIsomorphicLayoutEffect.js.map +1 -0
  69. package/dist/cjs/hooks/useMergeRefs.js.map +1 -1
  70. package/dist/cjs/index.js +4 -2
  71. package/dist/cjs/index.js.map +1 -1
  72. package/dist/cjs/styles.css +1 -1
  73. package/dist/cjs/types/props-helpers.js.map +1 -1
  74. package/dist/cjs/utils/react.js.map +1 -1
  75. package/dist/cjs/utils/string.js.map +1 -1
  76. package/dist/cjs/utils/style.js.map +1 -1
  77. package/dist/esm/components/AlphaAvatar/Avatar.mjs +2 -2
  78. package/dist/esm/components/AlphaAvatar/Avatar.mjs.map +1 -1
  79. package/dist/esm/components/AlphaAvatar/AvatarSizeContext.mjs +8 -0
  80. package/dist/esm/components/AlphaAvatar/AvatarSizeContext.mjs.map +1 -0
  81. package/dist/esm/components/AlphaAvatarGroup/AvatarGroup.mjs +3 -4
  82. package/dist/esm/components/AlphaAvatarGroup/AvatarGroup.mjs.map +1 -1
  83. package/dist/esm/components/AlphaButton/Button.mjs +4 -12
  84. package/dist/esm/components/AlphaButton/Button.mjs.map +1 -1
  85. package/dist/esm/components/AlphaButton/Button.module.scss.mjs +1 -1
  86. package/dist/esm/components/AlphaFloatingButton/FloatingButton.mjs +4 -12
  87. package/dist/esm/components/AlphaFloatingButton/FloatingButton.mjs.map +1 -1
  88. package/dist/esm/components/AlphaFloatingButton/FloatingButton.module.scss.mjs +1 -1
  89. package/dist/esm/components/AlphaFloatingIconButton/FloatingIconButton.mjs +4 -12
  90. package/dist/esm/components/AlphaFloatingIconButton/FloatingIconButton.mjs.map +1 -1
  91. package/dist/esm/components/AlphaFloatingIconButton/FloatingIconButton.module.scss.mjs +1 -1
  92. package/dist/esm/components/AlphaIconButton/IconButton.mjs +4 -12
  93. package/dist/esm/components/AlphaIconButton/IconButton.mjs.map +1 -1
  94. package/dist/esm/components/AlphaIconButton/IconButton.module.scss.mjs +1 -1
  95. package/dist/esm/components/AlphaSpinner/Spinner.mjs +33 -0
  96. package/dist/esm/components/AlphaSpinner/Spinner.mjs.map +1 -0
  97. package/dist/esm/components/AlphaSpinner/Spinner.module.scss.mjs +4 -0
  98. package/dist/esm/components/AlphaSpinner/Spinner.module.scss.mjs.map +1 -0
  99. package/dist/esm/components/AutoFocus/AutoFocus.mjs +3 -2
  100. package/dist/esm/components/AutoFocus/AutoFocus.mjs.map +1 -1
  101. package/dist/esm/components/Avatar/Avatar.mjs.map +1 -1
  102. package/dist/esm/components/AvatarGroup/AvatarGroup.mjs.map +1 -1
  103. package/dist/esm/components/Banner/Banner.mjs.map +1 -1
  104. package/dist/esm/components/BaseTagBadge/BaseTagBadge.mjs +3 -2
  105. package/dist/esm/components/BaseTagBadge/BaseTagBadge.mjs.map +1 -1
  106. package/dist/esm/components/Box/Box.mjs.map +1 -1
  107. package/dist/esm/components/Button/Button.mjs.map +1 -1
  108. package/dist/esm/components/Center/Center.mjs.map +1 -1
  109. package/dist/esm/components/CheckableAvatar/CheckableAvatar.mjs.map +1 -1
  110. package/dist/esm/components/Emoji/Emoji.mjs.map +1 -1
  111. package/dist/esm/components/FeatureProvider/FeatureProvider.mjs +3 -2
  112. package/dist/esm/components/FeatureProvider/FeatureProvider.mjs.map +1 -1
  113. package/dist/esm/components/FeatureProvider/SmoothCornersFeature/smoothCornersScript.mjs.map +1 -1
  114. package/dist/esm/components/FormControl/FormControl.mjs.map +1 -1
  115. package/dist/esm/components/Icon/Icon.mjs +1 -12
  116. package/dist/esm/components/Icon/Icon.mjs.map +1 -1
  117. package/dist/esm/components/Icon/Icon.module.scss.mjs +1 -1
  118. package/dist/esm/components/LegacyStack/LegacyStack/LegacyStack.mjs.map +1 -1
  119. package/dist/esm/components/LegacyStack/LegacyStackItem/LegacyStackItem.mjs.map +1 -1
  120. package/dist/esm/components/LegacyTooltip/utils.mjs.map +1 -1
  121. package/dist/esm/components/ListItem/ListItem.mjs.map +1 -1
  122. package/dist/esm/components/Modal/Modal.mjs.map +1 -1
  123. package/dist/esm/components/NavGroup/NavGroup.mjs.map +1 -1
  124. package/dist/esm/components/OutlineItem/OutlineItem.mjs.map +1 -1
  125. package/dist/esm/components/Overlay/Overlay.mjs +4 -3
  126. package/dist/esm/components/Overlay/Overlay.mjs.map +1 -1
  127. package/dist/esm/components/Overlay/utils.mjs.map +1 -1
  128. package/dist/esm/components/ProgressBar/ProgressBar.mjs.map +1 -1
  129. package/dist/esm/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
  130. package/dist/esm/components/Slider/Slider.mjs.map +1 -1
  131. package/dist/esm/components/SmoothCornersBox/SmoothCornersBox.mjs.map +1 -1
  132. package/dist/esm/components/Spinner/Spinner.mjs.map +1 -1
  133. package/dist/esm/components/Stack/Stack.mjs.map +1 -1
  134. package/dist/esm/components/Status/Status.mjs.map +1 -1
  135. package/dist/esm/components/Switch/Switch.mjs.map +1 -1
  136. package/dist/esm/components/Tabs/Tabs.mjs.map +1 -1
  137. package/dist/esm/components/Text/Text.mjs.map +1 -1
  138. package/dist/esm/components/TextArea/TextArea.mjs +3 -2
  139. package/dist/esm/components/TextArea/TextArea.mjs.map +1 -1
  140. package/dist/esm/components/TextField/TextField.mjs.map +1 -1
  141. package/dist/esm/components/Toast/Toast.mjs +3 -2
  142. package/dist/esm/components/Toast/Toast.mjs.map +1 -1
  143. package/dist/esm/hooks/useIsomorphicLayoutEffect.mjs +11 -0
  144. package/dist/esm/hooks/useIsomorphicLayoutEffect.mjs.map +1 -0
  145. package/dist/esm/hooks/useMergeRefs.mjs.map +1 -1
  146. package/dist/esm/index.mjs +1 -0
  147. package/dist/esm/index.mjs.map +1 -1
  148. package/dist/esm/styles.css +1 -1
  149. package/dist/esm/types/props-helpers.mjs.map +1 -1
  150. package/dist/esm/utils/react.mjs.map +1 -1
  151. package/dist/esm/utils/string.mjs.map +1 -1
  152. package/dist/esm/utils/style.mjs.map +1 -1
  153. package/dist/types/components/AlphaAvatar/AvatarSizeContext.d.ts +5 -0
  154. package/dist/types/components/AlphaAvatar/AvatarSizeContext.d.ts.map +1 -0
  155. package/dist/types/components/AlphaAvatarGroup/AvatarGroup.d.ts +1 -3
  156. package/dist/types/components/AlphaAvatarGroup/AvatarGroup.d.ts.map +1 -1
  157. package/dist/types/components/AlphaAvatarGroup/AvatarGroup.types.d.ts +1 -3
  158. package/dist/types/components/AlphaAvatarGroup/AvatarGroup.types.d.ts.map +1 -1
  159. package/dist/types/components/AlphaButton/Button.d.ts.map +1 -1
  160. package/dist/types/components/AlphaFloatingButton/FloatingButton.d.ts.map +1 -1
  161. package/dist/types/components/AlphaFloatingIconButton/FloatingIconButton.d.ts.map +1 -1
  162. package/dist/types/components/AlphaIconButton/IconButton.d.ts.map +1 -1
  163. package/dist/types/components/AlphaSpinner/Spinner.d.ts +5 -0
  164. package/dist/types/components/AlphaSpinner/Spinner.d.ts.map +1 -0
  165. package/dist/types/components/AlphaSpinner/Spinner.types.d.ts +13 -0
  166. package/dist/types/components/AlphaSpinner/Spinner.types.d.ts.map +1 -0
  167. package/dist/types/components/AlphaSpinner/index.d.ts +3 -0
  168. package/dist/types/components/AlphaSpinner/index.d.ts.map +1 -0
  169. package/dist/types/components/AutoFocus/AutoFocus.d.ts.map +1 -1
  170. package/dist/types/components/BaseTagBadge/BaseTagBadge.d.ts.map +1 -1
  171. package/dist/types/components/FeatureProvider/FeatureProvider.d.ts.map +1 -1
  172. package/dist/types/components/Icon/Icon.d.ts.map +1 -1
  173. package/dist/types/components/Icon/Icon.types.d.ts +1 -1
  174. package/dist/types/components/Overlay/Overlay.d.ts.map +1 -1
  175. package/dist/types/components/TextArea/TextArea.d.ts.map +1 -1
  176. package/dist/types/components/Toast/Toast.d.ts.map +1 -1
  177. package/dist/types/hooks/useIsomorphicLayoutEffect.d.ts +8 -0
  178. package/dist/types/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -0
  179. package/dist/types/index.d.ts +1 -0
  180. package/dist/types/index.d.ts.map +1 -1
  181. package/package.json +3 -3
  182. package/src/components/AlphaAvatar/Avatar.tsx +2 -2
  183. package/src/components/AlphaAvatar/AvatarSizeContext.ts +9 -0
  184. package/src/components/AlphaAvatarGroup/AvatarGroup.tsx +4 -13
  185. package/src/components/AlphaAvatarGroup/AvatarGroup.types.ts +0 -3
  186. package/src/components/AlphaAvatarGroup/__snapshots__/AvatarGroup.test.tsx.snap +3 -3
  187. package/src/components/AlphaButton/Button.module.scss +22 -8
  188. package/src/components/AlphaButton/Button.tsx +11 -16
  189. package/src/components/AlphaFloatingButton/FloatingButton.module.scss +18 -6
  190. package/src/components/AlphaFloatingButton/FloatingButton.tsx +11 -16
  191. package/src/components/AlphaFloatingIconButton/FloatingIconButton.module.scss +14 -4
  192. package/src/components/AlphaFloatingIconButton/FloatingIconButton.tsx +11 -16
  193. package/src/components/AlphaIconButton/IconButton.module.scss +21 -9
  194. package/src/components/AlphaIconButton/IconButton.tsx +11 -16
  195. package/src/components/AlphaSpinner/AlphaSpinner.stories.tsx +23 -0
  196. package/src/components/AlphaSpinner/Spinner.module.scss +75 -0
  197. package/src/components/AlphaSpinner/Spinner.test.tsx +34 -0
  198. package/src/components/AlphaSpinner/Spinner.tsx +49 -0
  199. package/src/components/AlphaSpinner/Spinner.types.ts +21 -0
  200. package/src/components/AlphaSpinner/index.ts +2 -0
  201. package/src/components/AutoFocus/AutoFocus.tsx +3 -2
  202. package/src/components/AvatarGroup/__snapshots__/AvatarGroup.test.tsx.snap +3 -3
  203. package/src/components/BaseTagBadge/BaseTagBadge.tsx +2 -1
  204. package/src/components/FeatureProvider/FeatureProvider.tsx +3 -2
  205. package/src/components/Help/__snapshots__/Help.test.tsx.snap +3 -3
  206. package/src/components/Icon/Icon.module.scss +18 -0
  207. package/src/components/Icon/Icon.tsx +7 -17
  208. package/src/components/Icon/Icon.types.ts +1 -1
  209. package/src/components/NavGroup/__snapshots__/NavGroup.test.tsx.snap +12 -12
  210. package/src/components/NavItem/__snapshots__/NavItem.test.tsx.snap +6 -6
  211. package/src/components/Overlay/Overlay.tsx +3 -3
  212. package/src/components/TextArea/TextArea.tsx +3 -2
  213. package/src/components/Toast/Toast.module.scss +1 -1
  214. package/src/components/Toast/Toast.tsx +1 -2
  215. package/src/hooks/useIsomorphicLayoutEffect.ts +9 -0
  216. package/src/index.ts +1 -0
@@ -2,13 +2,13 @@
2
2
 
3
3
  exports[`Help > Snapshot > 1`] = `
4
4
  <svg
5
- class="Icon margin Icon"
5
+ class="Icon size-xs margin Icon"
6
6
  data-testid="bezier-help"
7
7
  fill="none"
8
- height="16"
8
+ height="1em"
9
9
  style="--b-icon-color: var(--txt-black-dark);"
10
10
  viewBox="0 0 24 24"
11
- width="16"
11
+ width="1em"
12
12
  xmlns="http://www.w3.org/2000/svg"
13
13
  >
14
14
  <path
@@ -1,7 +1,25 @@
1
+ @use '../../styles/mixins/dimension';
2
+
3
+ $size-map: (
4
+ xxxs: 10,
5
+ xxs: 12,
6
+ xs: 16,
7
+ s: 20,
8
+ m: 24,
9
+ l: 36,
10
+ xl: 44,
11
+ );
12
+
1
13
  .Icon {
2
14
  --b-icon-color: initial;
3
15
 
4
16
  flex: 0 0 auto;
5
17
  color: var(--b-icon-color);
6
18
  transition: color var(--transition-s);
19
+
20
+ @each $size, $value in $size-map {
21
+ &:where(.size-#{$size}) {
22
+ @include dimension.square(#{$value}px);
23
+ }
24
+ }
7
25
  }
@@ -5,25 +5,12 @@ import classNames from 'classnames'
5
5
  import { getMarginStyles, splitByMarginProps } from '~/src/types/props-helpers'
6
6
  import { tokenCssVar } from '~/src/utils/style'
7
7
 
8
- import { type IconProps, type IconSize } from './Icon.types'
8
+ import { type IconProps } from './Icon.types'
9
9
 
10
10
  import styles from './Icon.module.scss'
11
11
 
12
12
  export const ICON_TEST_ID = 'bezier-icon'
13
13
 
14
- const getSizeValue = (size: IconSize) =>
15
- (
16
- ({
17
- xl: 44,
18
- l: 36,
19
- m: 24,
20
- s: 20,
21
- xs: 16,
22
- xxs: 12,
23
- xxxs: 10,
24
- }) satisfies Record<IconSize, number>
25
- )[size]
26
-
27
14
  export const Icon = memo(
28
15
  forwardRef<SVGSVGElement, IconProps>(function Icon(props, forwardedRef) {
29
16
  const [marginProps, marginRest] = splitByMarginProps(props)
@@ -48,9 +35,12 @@ export const Icon = memo(
48
35
  ...style,
49
36
  } as React.CSSProperties
50
37
  }
51
- className={classNames(styles.Icon, marginStyles.className, className)}
52
- width={getSizeValue(size)}
53
- height={getSizeValue(size)}
38
+ className={classNames(
39
+ styles.Icon,
40
+ styles[`size-${size}`],
41
+ marginStyles.className,
42
+ className
43
+ )}
54
44
  data-testid={ICON_TEST_ID}
55
45
  {...rest}
56
46
  />
@@ -12,7 +12,7 @@ export type IconSize = 'xl' | 'l' | 'm' | 's' | 'xs' | 'xxs' | 'xxxs'
12
12
  interface IconOwnProps {
13
13
  /**
14
14
  * Controls which icon should be rendered.
15
- * Inject the icon component from the @channel.io/bezier-icons package into this prop.
15
+ * Inject the icon component from the `@channel.io/bezier-icons` package into this prop.
16
16
  * @example
17
17
  * ```tsx
18
18
  * import { HeartFilledIcon } from '@channel.io/bezier-icons'
@@ -13,13 +13,13 @@ exports[`NavGroup Test > Snapshot > Active 1`] = `
13
13
  class="LeftIconWrapper"
14
14
  >
15
15
  <svg
16
- class="Icon margin"
16
+ class="Icon size-s margin"
17
17
  data-testid="bezier-nav-group-left-icon"
18
18
  fill="none"
19
- height="20"
19
+ height="1em"
20
20
  style="--b-icon-color: var(--bgtxt-blue-normal);"
21
21
  viewBox="0 0 24 24"
22
- width="20"
22
+ width="1em"
23
23
  xmlns="http://www.w3.org/2000/svg"
24
24
  >
25
25
  <path
@@ -40,13 +40,13 @@ exports[`NavGroup Test > Snapshot > Active 1`] = `
40
40
  class="RightContentWrapper"
41
41
  >
42
42
  <svg
43
- class="Icon margin"
43
+ class="Icon size-xs margin"
44
44
  data-testid="bezier-icon"
45
45
  fill="none"
46
- height="16"
46
+ height="1em"
47
47
  style="--b-icon-color: var(--bgtxt-orange-normal);"
48
48
  viewBox="0 0 24 24"
49
- width="16"
49
+ width="1em"
50
50
  xmlns="http://www.w3.org/2000/svg"
51
51
  >
52
52
  <path
@@ -73,13 +73,13 @@ exports[`NavGroup Test > Snapshot > Not active 1`] = `
73
73
  class="LeftIconWrapper"
74
74
  >
75
75
  <svg
76
- class="Icon margin"
76
+ class="Icon size-s margin"
77
77
  data-testid="bezier-nav-group-left-icon"
78
78
  fill="none"
79
- height="20"
79
+ height="1em"
80
80
  style="--b-icon-color: var(--txt-black-dark);"
81
81
  viewBox="0 0 24 24"
82
- width="20"
82
+ width="1em"
83
83
  xmlns="http://www.w3.org/2000/svg"
84
84
  >
85
85
  <path
@@ -100,13 +100,13 @@ exports[`NavGroup Test > Snapshot > Not active 1`] = `
100
100
  class="RightContentWrapper"
101
101
  >
102
102
  <svg
103
- class="Icon margin"
103
+ class="Icon size-xs margin"
104
104
  data-testid="bezier-icon"
105
105
  fill="none"
106
- height="16"
106
+ height="1em"
107
107
  style="--b-icon-color: var(--bgtxt-orange-normal);"
108
108
  viewBox="0 0 24 24"
109
- width="16"
109
+ width="1em"
110
110
  xmlns="http://www.w3.org/2000/svg"
111
111
  >
112
112
  <path
@@ -11,13 +11,13 @@ exports[`NavItem Test > Snapshot > Active 1`] = `
11
11
  class="LeftIconWrapper"
12
12
  >
13
13
  <svg
14
- class="Icon margin"
14
+ class="Icon size-s margin"
15
15
  data-testid="bezier-nav-item-left-icon"
16
16
  fill="none"
17
- height="20"
17
+ height="1em"
18
18
  style="--b-icon-color: var(--bgtxt-blue-normal);"
19
19
  viewBox="0 0 24 24"
20
- width="20"
20
+ width="1em"
21
21
  xmlns="http://www.w3.org/2000/svg"
22
22
  >
23
23
  <path
@@ -48,13 +48,13 @@ exports[`NavItem Test > Snapshot > Not active 1`] = `
48
48
  class="LeftIconWrapper"
49
49
  >
50
50
  <svg
51
- class="Icon margin"
51
+ class="Icon size-s margin"
52
52
  data-testid="bezier-nav-item-left-icon"
53
53
  fill="none"
54
- height="20"
54
+ height="1em"
55
55
  style="--b-icon-color: var(--txt-black-dark);"
56
56
  viewBox="0 0 24 24"
57
- width="20"
57
+ width="1em"
58
58
  xmlns="http://www.w3.org/2000/svg"
59
59
  >
60
60
  <path
@@ -2,7 +2,6 @@ import React, {
2
2
  forwardRef,
3
3
  useCallback,
4
4
  useEffect,
5
- useLayoutEffect,
6
5
  useReducer,
7
6
  useRef,
8
7
  useState,
@@ -12,6 +11,7 @@ import ReactDOM from 'react-dom'
12
11
  import classNames from 'classnames'
13
12
 
14
13
  import useEventHandler from '~/src/hooks/useEventHandler'
14
+ import { useIsomorphicLayoutEffect } from '~/src/hooks/useIsomorphicLayoutEffect'
15
15
  import useMergeRefs from '~/src/hooks/useMergeRefs'
16
16
 
17
17
  import { useModalContainerContext } from '~/src/components/Modal'
@@ -94,7 +94,7 @@ export const Overlay = forwardRef<HTMLDivElement, OverlayProps>(
94
94
  }
95
95
  }, [container, hasContainer])
96
96
 
97
- useLayoutEffect(
97
+ useIsomorphicLayoutEffect(
98
98
  function initContainerRect() {
99
99
  if (show) {
100
100
  handleContainerRect()
@@ -125,7 +125,7 @@ export const Overlay = forwardRef<HTMLDivElement, OverlayProps>(
125
125
  }
126
126
  }, [target])
127
127
 
128
- useLayoutEffect(
128
+ useIsomorphicLayoutEffect(
129
129
  function initTargetRect() {
130
130
  if (show) {
131
131
  handleTargetRect()
@@ -1,8 +1,9 @@
1
- import React, { forwardRef, useLayoutEffect, useRef } from 'react'
1
+ import React, { forwardRef, useRef } from 'react'
2
2
 
3
3
  import classNames from 'classnames'
4
4
  import TextareaAutosize from 'react-textarea-autosize'
5
5
 
6
+ import { useIsomorphicLayoutEffect } from '~/src/hooks/useIsomorphicLayoutEffect'
6
7
  import {
7
8
  COMMON_IME_CONTROL_KEYS,
8
9
  useKeyboardActionLockerWhileComposing,
@@ -43,7 +44,7 @@ export const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(
43
44
  onKeyUp,
44
45
  })
45
46
 
46
- useLayoutEffect(function initialAutoFocus() {
47
+ useIsomorphicLayoutEffect(function initialAutoFocus() {
47
48
  function setSelectionToEnd() {
48
49
  inputRef.current?.setSelectionRange(
49
50
  inputRef.current?.value.length,
@@ -43,7 +43,7 @@
43
43
  .ToastContainer {
44
44
  pointer-events: none;
45
45
 
46
- position: absolute;
46
+ position: fixed;
47
47
 
48
48
  overflow: hidden;
49
49
  display: flex;
@@ -205,9 +205,8 @@ export function ToastProvider({
205
205
 
206
206
  const createContainer = useCallback(
207
207
  (placement: ToastPlacement, toasts: ToastType[]) => (
208
- <InvertedThemeProvider>
208
+ <InvertedThemeProvider key={placement}>
209
209
  <div
210
- key={placement}
211
210
  style={{
212
211
  bottom: px(offset?.bottom ?? DEFAULT_OFFSET.bottom),
213
212
  ...(placement === 'bottom-right'
@@ -0,0 +1,9 @@
1
+ import { useEffect, useLayoutEffect } from 'react'
2
+
3
+ /**
4
+ * @description This hook is used to handle the layout effect in a way that is compatible with SSR.
5
+ * In Server Environments, this hook will use `useEffect` instead of `useLayoutEffect`.
6
+ * @see https://react.dev/reference/react/useLayoutEffect#troubleshooting
7
+ */
8
+ export const useIsomorphicLayoutEffect =
9
+ typeof window !== 'undefined' ? useLayoutEffect : useEffect
package/src/index.ts CHANGED
@@ -12,6 +12,7 @@ export * from '~/src/components/AlphaDialogPrimitive'
12
12
  export * from '~/src/components/AlphaFloatingButton'
13
13
  export * from '~/src/components/AlphaFloatingIconButton'
14
14
  export * from '~/src/components/AlphaIconButton'
15
+ export * from '~/src/components/AlphaSpinner'
15
16
  export * from '~/src/components/AlphaTooltipPrimitive'
16
17
  export * from '~/src/components/AppProvider'
17
18
  export * from '~/src/components/AutoFocus'