@channel.io/bezier-react 2.3.3 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. package/dist/cjs/components/AlphaAvatar/Avatar.js.map +1 -1
  2. package/dist/cjs/components/AlphaAvatarGroup/AvatarGroup.js.map +1 -1
  3. package/dist/cjs/components/AlphaButton/Button.js.map +1 -1
  4. package/dist/cjs/components/AlphaButton/Button.module.scss.js +1 -1
  5. package/dist/cjs/components/AlphaDialogPrimitive/DialogPrimitive.js.map +1 -1
  6. package/dist/cjs/components/AlphaFloatingButton/FloatingButton.js.map +1 -1
  7. package/dist/cjs/components/AlphaFloatingButton/FloatingButton.module.scss.js +1 -1
  8. package/dist/cjs/components/AlphaFloatingIconButton/FloatingIconButton.js.map +1 -1
  9. package/dist/cjs/components/AlphaFloatingIconButton/FloatingIconButton.module.scss.js +1 -1
  10. package/dist/cjs/components/AlphaIconButton/IconButton.js.map +1 -1
  11. package/dist/cjs/components/AlphaLoader/Loader.js.map +1 -1
  12. package/dist/cjs/components/AlphaStatusBadge/StatusBadge.js.map +1 -1
  13. package/dist/cjs/components/AlphaToggleButton/ToggleButton.js +1 -11
  14. package/dist/cjs/components/AlphaToggleButton/ToggleButton.js.map +1 -1
  15. package/dist/cjs/components/AlphaToggleButton/ToggleButton.module.scss.js +1 -1
  16. package/dist/cjs/components/AlphaToggleButtonGroup/ToggleButtonGroup.js.map +1 -1
  17. package/dist/cjs/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.js +103 -0
  18. package/dist/cjs/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.js.map +1 -0
  19. package/dist/cjs/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.module.scss.js +8 -0
  20. package/dist/cjs/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.module.scss.js.map +1 -0
  21. package/dist/cjs/components/AlphaToggleEmojiButtonGroup/useToggleEmojiButtonSize.js +45 -0
  22. package/dist/cjs/components/AlphaToggleEmojiButtonGroup/useToggleEmojiButtonSize.js.map +1 -0
  23. package/dist/cjs/components/AlphaTooltipPrimitive/TooltipPrimitive.js.map +1 -1
  24. package/dist/cjs/components/AppProvider/AppProvider.js.map +1 -1
  25. package/dist/cjs/components/AutoFocus/AutoFocus.js.map +1 -1
  26. package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
  27. package/dist/cjs/components/AvatarGroup/AvatarGroup.js.map +1 -1
  28. package/dist/cjs/components/Badge/Badge.js.map +1 -1
  29. package/dist/cjs/components/Banner/Banner.js.map +1 -1
  30. package/dist/cjs/components/BaseButton/BaseButton.js.map +1 -1
  31. package/dist/cjs/components/BaseTagBadge/BaseTagBadge.js.map +1 -1
  32. package/dist/cjs/components/Box/Box.js.map +1 -1
  33. package/dist/cjs/components/Button/Button.js.map +1 -1
  34. package/dist/cjs/components/ButtonGroup/ButtonGroup.js.map +1 -1
  35. package/dist/cjs/components/Center/Center.js.map +1 -1
  36. package/dist/cjs/components/CheckableAvatar/CheckableAvatar.js.map +1 -1
  37. package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -1
  38. package/dist/cjs/components/ConfirmModal/ConfirmModal.js.map +1 -1
  39. package/dist/cjs/components/Divider/Divider.js.map +1 -1
  40. package/dist/cjs/components/Emoji/Emoji.js.map +1 -1
  41. package/dist/cjs/components/FeatureProvider/FeatureProvider.js.map +1 -1
  42. package/dist/cjs/components/FormControl/FormControl.js.map +1 -1
  43. package/dist/cjs/components/FormGroup/FormGroup.js.map +1 -1
  44. package/dist/cjs/components/FormHelperText/FormHelperText.js.map +1 -1
  45. package/dist/cjs/components/FormLabel/FormLabel.js.map +1 -1
  46. package/dist/cjs/components/Help/Help.js.map +1 -1
  47. package/dist/cjs/components/Icon/Icon.js.map +1 -1
  48. package/dist/cjs/components/KeyValueItem/KeyValueItem.js.map +1 -1
  49. package/dist/cjs/components/LegacyIcon/LegacyIcon.js.map +1 -1
  50. package/dist/cjs/components/LegacyStack/LegacyHStack/LegacyHStack.js.map +1 -1
  51. package/dist/cjs/components/LegacyStack/LegacySpacer/LegacySpacer.js.map +1 -1
  52. package/dist/cjs/components/LegacyStack/LegacyStack/LegacyStack.js.map +1 -1
  53. package/dist/cjs/components/LegacyStack/LegacyStackItem/LegacyStackItem.js.map +1 -1
  54. package/dist/cjs/components/LegacyStack/LegacyVStack/LegacyVStack.js.map +1 -1
  55. package/dist/cjs/components/LegacyTooltip/LegacyTooltip.js.map +1 -1
  56. package/dist/cjs/components/LegacyTooltip/LegacyTooltipContent.js.map +1 -1
  57. package/dist/cjs/components/ListItem/ListItem.js.map +1 -1
  58. package/dist/cjs/components/Modal/Modal.js.map +1 -1
  59. package/dist/cjs/components/NavGroup/NavGroup.js.map +1 -1
  60. package/dist/cjs/components/NavItem/NavItem.js.map +1 -1
  61. package/dist/cjs/components/OutlineItem/OutlineItem.js.map +1 -1
  62. package/dist/cjs/components/Overlay/Overlay.js.map +1 -1
  63. package/dist/cjs/components/ProgressBar/ProgressBar.js.map +1 -1
  64. package/dist/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  65. package/dist/cjs/components/SectionLabel/SectionLabel.js.map +1 -1
  66. package/dist/cjs/components/SegmentedControl/SegmentedControl.js.map +1 -1
  67. package/dist/cjs/components/Select/Select.js.map +1 -1
  68. package/dist/cjs/components/Slider/Slider.js.map +1 -1
  69. package/dist/cjs/components/SmoothCornersBox/SmoothCornersBox.js.map +1 -1
  70. package/dist/cjs/components/Spinner/Spinner.js.map +1 -1
  71. package/dist/cjs/components/Stack/Stack.js.map +1 -1
  72. package/dist/cjs/components/Status/Status.js.map +1 -1
  73. package/dist/cjs/components/Switch/Switch.js.map +1 -1
  74. package/dist/cjs/components/Tabs/Tabs.js.map +1 -1
  75. package/dist/cjs/components/Tag/Tag.js.map +1 -1
  76. package/dist/cjs/components/Text/Text.js.map +1 -1
  77. package/dist/cjs/components/TextArea/TextArea.js.map +1 -1
  78. package/dist/cjs/components/TextField/TextField.js.map +1 -1
  79. package/dist/cjs/components/ThemeProvider/ThemeProvider.js.map +1 -1
  80. package/dist/cjs/components/Toast/Toast.js.map +1 -1
  81. package/dist/cjs/components/TokenProvider/TokenProvider.js.map +1 -1
  82. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  83. package/dist/cjs/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  84. package/dist/cjs/components/WindowProvider/WindowProvider.js.map +1 -1
  85. package/dist/cjs/index.js +3 -0
  86. package/dist/cjs/index.js.map +1 -1
  87. package/dist/cjs/styles.css +1 -1
  88. package/dist/esm/components/AlphaAvatar/Avatar.mjs.map +1 -1
  89. package/dist/esm/components/AlphaAvatarGroup/AvatarGroup.mjs.map +1 -1
  90. package/dist/esm/components/AlphaButton/Button.mjs.map +1 -1
  91. package/dist/esm/components/AlphaButton/Button.module.scss.mjs +1 -1
  92. package/dist/esm/components/AlphaDialogPrimitive/DialogPrimitive.mjs.map +1 -1
  93. package/dist/esm/components/AlphaFloatingButton/FloatingButton.mjs.map +1 -1
  94. package/dist/esm/components/AlphaFloatingButton/FloatingButton.module.scss.mjs +1 -1
  95. package/dist/esm/components/AlphaFloatingIconButton/FloatingIconButton.mjs.map +1 -1
  96. package/dist/esm/components/AlphaFloatingIconButton/FloatingIconButton.module.scss.mjs +1 -1
  97. package/dist/esm/components/AlphaIconButton/IconButton.mjs.map +1 -1
  98. package/dist/esm/components/AlphaLoader/Loader.mjs.map +1 -1
  99. package/dist/esm/components/AlphaStatusBadge/StatusBadge.mjs.map +1 -1
  100. package/dist/esm/components/AlphaToggleButton/ToggleButton.mjs +1 -11
  101. package/dist/esm/components/AlphaToggleButton/ToggleButton.mjs.map +1 -1
  102. package/dist/esm/components/AlphaToggleButton/ToggleButton.module.scss.mjs +1 -1
  103. package/dist/esm/components/AlphaToggleButtonGroup/ToggleButtonGroup.mjs.map +1 -1
  104. package/dist/esm/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.mjs +100 -0
  105. package/dist/esm/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.mjs.map +1 -0
  106. package/dist/esm/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.module.scss.mjs +4 -0
  107. package/dist/esm/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.module.scss.mjs.map +1 -0
  108. package/dist/esm/components/AlphaToggleEmojiButtonGroup/useToggleEmojiButtonSize.mjs +41 -0
  109. package/dist/esm/components/AlphaToggleEmojiButtonGroup/useToggleEmojiButtonSize.mjs.map +1 -0
  110. package/dist/esm/components/AlphaTooltipPrimitive/TooltipPrimitive.mjs.map +1 -1
  111. package/dist/esm/components/AppProvider/AppProvider.mjs.map +1 -1
  112. package/dist/esm/components/AutoFocus/AutoFocus.mjs.map +1 -1
  113. package/dist/esm/components/Avatar/Avatar.mjs.map +1 -1
  114. package/dist/esm/components/AvatarGroup/AvatarGroup.mjs.map +1 -1
  115. package/dist/esm/components/Badge/Badge.mjs.map +1 -1
  116. package/dist/esm/components/Banner/Banner.mjs.map +1 -1
  117. package/dist/esm/components/BaseButton/BaseButton.mjs.map +1 -1
  118. package/dist/esm/components/BaseTagBadge/BaseTagBadge.mjs.map +1 -1
  119. package/dist/esm/components/Box/Box.mjs.map +1 -1
  120. package/dist/esm/components/Button/Button.mjs.map +1 -1
  121. package/dist/esm/components/ButtonGroup/ButtonGroup.mjs.map +1 -1
  122. package/dist/esm/components/Center/Center.mjs.map +1 -1
  123. package/dist/esm/components/CheckableAvatar/CheckableAvatar.mjs.map +1 -1
  124. package/dist/esm/components/Checkbox/Checkbox.mjs.map +1 -1
  125. package/dist/esm/components/ConfirmModal/ConfirmModal.mjs.map +1 -1
  126. package/dist/esm/components/Divider/Divider.mjs.map +1 -1
  127. package/dist/esm/components/Emoji/Emoji.mjs.map +1 -1
  128. package/dist/esm/components/FeatureProvider/FeatureProvider.mjs.map +1 -1
  129. package/dist/esm/components/FormControl/FormControl.mjs.map +1 -1
  130. package/dist/esm/components/FormGroup/FormGroup.mjs.map +1 -1
  131. package/dist/esm/components/FormHelperText/FormHelperText.mjs.map +1 -1
  132. package/dist/esm/components/FormLabel/FormLabel.mjs.map +1 -1
  133. package/dist/esm/components/Help/Help.mjs.map +1 -1
  134. package/dist/esm/components/Icon/Icon.mjs.map +1 -1
  135. package/dist/esm/components/KeyValueItem/KeyValueItem.mjs.map +1 -1
  136. package/dist/esm/components/LegacyIcon/LegacyIcon.mjs.map +1 -1
  137. package/dist/esm/components/LegacyStack/LegacyHStack/LegacyHStack.mjs.map +1 -1
  138. package/dist/esm/components/LegacyStack/LegacySpacer/LegacySpacer.mjs.map +1 -1
  139. package/dist/esm/components/LegacyStack/LegacyStack/LegacyStack.mjs.map +1 -1
  140. package/dist/esm/components/LegacyStack/LegacyStackItem/LegacyStackItem.mjs.map +1 -1
  141. package/dist/esm/components/LegacyStack/LegacyVStack/LegacyVStack.mjs.map +1 -1
  142. package/dist/esm/components/LegacyTooltip/LegacyTooltip.mjs.map +1 -1
  143. package/dist/esm/components/LegacyTooltip/LegacyTooltipContent.mjs.map +1 -1
  144. package/dist/esm/components/ListItem/ListItem.mjs.map +1 -1
  145. package/dist/esm/components/Modal/Modal.mjs.map +1 -1
  146. package/dist/esm/components/NavGroup/NavGroup.mjs.map +1 -1
  147. package/dist/esm/components/NavItem/NavItem.mjs.map +1 -1
  148. package/dist/esm/components/OutlineItem/OutlineItem.mjs.map +1 -1
  149. package/dist/esm/components/Overlay/Overlay.mjs.map +1 -1
  150. package/dist/esm/components/ProgressBar/ProgressBar.mjs.map +1 -1
  151. package/dist/esm/components/RadioGroup/RadioGroup.mjs.map +1 -1
  152. package/dist/esm/components/SectionLabel/SectionLabel.mjs.map +1 -1
  153. package/dist/esm/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
  154. package/dist/esm/components/Select/Select.mjs.map +1 -1
  155. package/dist/esm/components/Slider/Slider.mjs.map +1 -1
  156. package/dist/esm/components/SmoothCornersBox/SmoothCornersBox.mjs.map +1 -1
  157. package/dist/esm/components/Spinner/Spinner.mjs.map +1 -1
  158. package/dist/esm/components/Stack/Stack.mjs.map +1 -1
  159. package/dist/esm/components/Status/Status.mjs.map +1 -1
  160. package/dist/esm/components/Switch/Switch.mjs.map +1 -1
  161. package/dist/esm/components/Tabs/Tabs.mjs.map +1 -1
  162. package/dist/esm/components/Tag/Tag.mjs.map +1 -1
  163. package/dist/esm/components/Text/Text.mjs.map +1 -1
  164. package/dist/esm/components/TextArea/TextArea.mjs.map +1 -1
  165. package/dist/esm/components/TextField/TextField.mjs.map +1 -1
  166. package/dist/esm/components/ThemeProvider/ThemeProvider.mjs.map +1 -1
  167. package/dist/esm/components/Toast/Toast.mjs.map +1 -1
  168. package/dist/esm/components/TokenProvider/TokenProvider.mjs.map +1 -1
  169. package/dist/esm/components/Tooltip/Tooltip.mjs.map +1 -1
  170. package/dist/esm/components/VisuallyHidden/VisuallyHidden.mjs.map +1 -1
  171. package/dist/esm/components/WindowProvider/WindowProvider.mjs.map +1 -1
  172. package/dist/esm/index.mjs +1 -0
  173. package/dist/esm/index.mjs.map +1 -1
  174. package/dist/esm/styles.css +1 -1
  175. package/dist/types/components/AlphaAvatar/Avatar.d.ts.map +1 -1
  176. package/dist/types/components/AlphaAvatarGroup/AvatarGroup.d.ts.map +1 -1
  177. package/dist/types/components/AlphaButton/Button.d.ts.map +1 -1
  178. package/dist/types/components/AlphaDialogPrimitive/DialogPrimitive.d.ts.map +1 -1
  179. package/dist/types/components/AlphaFloatingButton/FloatingButton.d.ts.map +1 -1
  180. package/dist/types/components/AlphaFloatingIconButton/FloatingIconButton.d.ts.map +1 -1
  181. package/dist/types/components/AlphaIconButton/IconButton.d.ts.map +1 -1
  182. package/dist/types/components/AlphaLoader/Loader.d.ts.map +1 -1
  183. package/dist/types/components/AlphaStatusBadge/StatusBadge.d.ts.map +1 -1
  184. package/dist/types/components/AlphaToggleButton/ToggleButton.d.ts.map +1 -1
  185. package/dist/types/components/AlphaToggleButton/ToggleButton.types.d.ts +0 -5
  186. package/dist/types/components/AlphaToggleButton/ToggleButton.types.d.ts.map +1 -1
  187. package/dist/types/components/AlphaToggleButtonGroup/ToggleButtonGroup.d.ts.map +1 -1
  188. package/dist/types/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.d.ts +32 -0
  189. package/dist/types/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.d.ts.map +1 -0
  190. package/dist/types/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.types.d.ts +54 -0
  191. package/dist/types/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.types.d.ts.map +1 -0
  192. package/dist/types/components/AlphaToggleEmojiButtonGroup/index.d.ts +3 -0
  193. package/dist/types/components/AlphaToggleEmojiButtonGroup/index.d.ts.map +1 -0
  194. package/dist/types/components/AlphaToggleEmojiButtonGroup/useToggleEmojiButtonSize.d.ts +10 -0
  195. package/dist/types/components/AlphaToggleEmojiButtonGroup/useToggleEmojiButtonSize.d.ts.map +1 -0
  196. package/dist/types/components/AlphaTooltipPrimitive/TooltipPrimitive.d.ts.map +1 -1
  197. package/dist/types/components/AppProvider/AppProvider.d.ts.map +1 -1
  198. package/dist/types/components/AutoFocus/AutoFocus.d.ts.map +1 -1
  199. package/dist/types/components/Avatar/Avatar.d.ts.map +1 -1
  200. package/dist/types/components/AvatarGroup/AvatarGroup.d.ts.map +1 -1
  201. package/dist/types/components/Badge/Badge.d.ts.map +1 -1
  202. package/dist/types/components/Banner/Banner.d.ts.map +1 -1
  203. package/dist/types/components/BaseButton/BaseButton.d.ts.map +1 -1
  204. package/dist/types/components/BaseTagBadge/BaseTagBadge.d.ts.map +1 -1
  205. package/dist/types/components/Box/Box.d.ts.map +1 -1
  206. package/dist/types/components/Button/Button.d.ts.map +1 -1
  207. package/dist/types/components/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  208. package/dist/types/components/Center/Center.d.ts.map +1 -1
  209. package/dist/types/components/CheckableAvatar/CheckableAvatar.d.ts.map +1 -1
  210. package/dist/types/components/Checkbox/Checkbox.d.ts.map +1 -1
  211. package/dist/types/components/ConfirmModal/ConfirmModal.d.ts.map +1 -1
  212. package/dist/types/components/Divider/Divider.d.ts.map +1 -1
  213. package/dist/types/components/Emoji/Emoji.d.ts.map +1 -1
  214. package/dist/types/components/FeatureProvider/FeatureProvider.d.ts.map +1 -1
  215. package/dist/types/components/FormControl/FormControl.d.ts.map +1 -1
  216. package/dist/types/components/FormGroup/FormGroup.d.ts.map +1 -1
  217. package/dist/types/components/FormHelperText/FormHelperText.d.ts.map +1 -1
  218. package/dist/types/components/FormLabel/FormLabel.d.ts.map +1 -1
  219. package/dist/types/components/Help/Help.d.ts.map +1 -1
  220. package/dist/types/components/Icon/Icon.d.ts.map +1 -1
  221. package/dist/types/components/KeyValueItem/KeyValueItem.d.ts.map +1 -1
  222. package/dist/types/components/LegacyIcon/LegacyIcon.d.ts.map +1 -1
  223. package/dist/types/components/LegacyStack/LegacyHStack/LegacyHStack.d.ts.map +1 -1
  224. package/dist/types/components/LegacyStack/LegacySpacer/LegacySpacer.d.ts.map +1 -1
  225. package/dist/types/components/LegacyStack/LegacyStack/LegacyStack.d.ts.map +1 -1
  226. package/dist/types/components/LegacyStack/LegacyStackItem/LegacyStackItem.d.ts.map +1 -1
  227. package/dist/types/components/LegacyStack/LegacyVStack/LegacyVStack.d.ts.map +1 -1
  228. package/dist/types/components/LegacyTooltip/LegacyTooltip.d.ts.map +1 -1
  229. package/dist/types/components/LegacyTooltip/LegacyTooltipContent.d.ts.map +1 -1
  230. package/dist/types/components/ListItem/ListItem.d.ts.map +1 -1
  231. package/dist/types/components/Modal/Modal.d.ts.map +1 -1
  232. package/dist/types/components/NavGroup/NavGroup.d.ts.map +1 -1
  233. package/dist/types/components/NavItem/NavItem.d.ts.map +1 -1
  234. package/dist/types/components/OutlineItem/OutlineItem.d.ts.map +1 -1
  235. package/dist/types/components/Overlay/Overlay.d.ts.map +1 -1
  236. package/dist/types/components/ProgressBar/ProgressBar.d.ts.map +1 -1
  237. package/dist/types/components/RadioGroup/RadioGroup.d.ts.map +1 -1
  238. package/dist/types/components/SectionLabel/SectionLabel.d.ts.map +1 -1
  239. package/dist/types/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  240. package/dist/types/components/Select/Select.d.ts.map +1 -1
  241. package/dist/types/components/Slider/Slider.d.ts.map +1 -1
  242. package/dist/types/components/SmoothCornersBox/SmoothCornersBox.d.ts.map +1 -1
  243. package/dist/types/components/Spinner/Spinner.d.ts.map +1 -1
  244. package/dist/types/components/Stack/Stack.d.ts.map +1 -1
  245. package/dist/types/components/Status/Status.d.ts.map +1 -1
  246. package/dist/types/components/Switch/Switch.d.ts.map +1 -1
  247. package/dist/types/components/Tabs/Tabs.d.ts.map +1 -1
  248. package/dist/types/components/Tag/Tag.d.ts.map +1 -1
  249. package/dist/types/components/Text/Text.d.ts.map +1 -1
  250. package/dist/types/components/TextArea/TextArea.d.ts.map +1 -1
  251. package/dist/types/components/TextField/TextField.d.ts.map +1 -1
  252. package/dist/types/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  253. package/dist/types/components/Toast/Toast.d.ts.map +1 -1
  254. package/dist/types/components/TokenProvider/TokenProvider.d.ts.map +1 -1
  255. package/dist/types/components/Tooltip/Tooltip.d.ts.map +1 -1
  256. package/dist/types/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
  257. package/dist/types/components/WindowProvider/WindowProvider.d.ts.map +1 -1
  258. package/dist/types/index.d.ts +1 -0
  259. package/dist/types/index.d.ts.map +1 -1
  260. package/package.json +3 -3
  261. package/src/components/AlphaAvatar/Avatar.tsx +2 -0
  262. package/src/components/AlphaAvatarGroup/AvatarGroup.tsx +2 -0
  263. package/src/components/AlphaButton/Button.module.scss +42 -55
  264. package/src/components/AlphaButton/Button.tsx +2 -0
  265. package/src/components/AlphaDialogPrimitive/DialogPrimitive.tsx +2 -0
  266. package/src/components/AlphaFloatingButton/FloatingButton.module.scss +57 -77
  267. package/src/components/AlphaFloatingButton/FloatingButton.tsx +2 -0
  268. package/src/components/AlphaFloatingIconButton/FloatingIconButton.module.scss +45 -58
  269. package/src/components/AlphaFloatingIconButton/FloatingIconButton.tsx +2 -0
  270. package/src/components/AlphaIconButton/IconButton.tsx +2 -0
  271. package/src/components/AlphaLoader/Loader.tsx +2 -0
  272. package/src/components/AlphaStatusBadge/StatusBadge.tsx +2 -0
  273. package/src/components/AlphaToggleButton/AlphaToggleButton.stories.tsx +0 -1
  274. package/src/components/AlphaToggleButton/ToggleButton.module.scss +0 -24
  275. package/src/components/AlphaToggleButton/ToggleButton.tsx +3 -24
  276. package/src/components/AlphaToggleButton/ToggleButton.types.ts +0 -6
  277. package/src/components/AlphaToggleButtonGroup/ToggleButtonGroup.tsx +2 -0
  278. package/src/components/AlphaToggleEmojiButtonGroup/AlphaToggleEmojiButtonGroup.stories.tsx +66 -0
  279. package/src/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.module.scss +76 -0
  280. package/src/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.tsx +141 -0
  281. package/src/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.types.ts +62 -0
  282. package/src/components/AlphaToggleEmojiButtonGroup/index.ts +9 -0
  283. package/src/components/AlphaToggleEmojiButtonGroup/useToggleEmojiButtonSize.ts +62 -0
  284. package/src/components/AlphaTooltipPrimitive/TooltipPrimitive.tsx +2 -0
  285. package/src/components/AppProvider/AppProvider.tsx +2 -0
  286. package/src/components/AutoFocus/AutoFocus.tsx +2 -0
  287. package/src/components/Avatar/Avatar.tsx +2 -0
  288. package/src/components/AvatarGroup/AvatarGroup.tsx +2 -0
  289. package/src/components/Badge/Badge.tsx +2 -0
  290. package/src/components/Banner/Banner.tsx +2 -0
  291. package/src/components/BaseButton/BaseButton.tsx +2 -0
  292. package/src/components/BaseTagBadge/BaseTagBadge.tsx +2 -0
  293. package/src/components/Box/Box.tsx +2 -0
  294. package/src/components/Button/Button.tsx +2 -0
  295. package/src/components/ButtonGroup/ButtonGroup.tsx +2 -0
  296. package/src/components/Center/Center.tsx +2 -0
  297. package/src/components/CheckableAvatar/CheckableAvatar.tsx +2 -0
  298. package/src/components/Checkbox/Checkbox.tsx +2 -0
  299. package/src/components/ConfirmModal/ConfirmModal.tsx +2 -0
  300. package/src/components/Divider/Divider.tsx +2 -0
  301. package/src/components/Emoji/Emoji.tsx +2 -0
  302. package/src/components/FeatureProvider/FeatureProvider.tsx +2 -0
  303. package/src/components/FormControl/FormControl.tsx +2 -0
  304. package/src/components/FormGroup/FormGroup.tsx +2 -0
  305. package/src/components/FormHelperText/FormHelperText.tsx +2 -0
  306. package/src/components/FormLabel/FormLabel.tsx +2 -0
  307. package/src/components/Help/Help.tsx +2 -0
  308. package/src/components/Icon/Icon.tsx +2 -0
  309. package/src/components/KeyValueItem/KeyValueItem.tsx +2 -0
  310. package/src/components/LegacyIcon/LegacyIcon.tsx +2 -0
  311. package/src/components/LegacyStack/LegacyHStack/LegacyHStack.tsx +2 -0
  312. package/src/components/LegacyStack/LegacySpacer/LegacySpacer.tsx +2 -0
  313. package/src/components/LegacyStack/LegacyStack/LegacyStack.tsx +2 -0
  314. package/src/components/LegacyStack/LegacyStackItem/LegacyStackItem.tsx +2 -0
  315. package/src/components/LegacyStack/LegacyVStack/LegacyVStack.tsx +2 -0
  316. package/src/components/LegacyTooltip/LegacyTooltip.tsx +2 -0
  317. package/src/components/LegacyTooltip/LegacyTooltipContent.tsx +2 -0
  318. package/src/components/ListItem/ListItem.tsx +2 -0
  319. package/src/components/Modal/Modal.tsx +2 -0
  320. package/src/components/NavGroup/NavGroup.tsx +2 -0
  321. package/src/components/NavItem/NavItem.tsx +2 -0
  322. package/src/components/OutlineItem/OutlineItem.tsx +2 -0
  323. package/src/components/Overlay/Overlay.tsx +2 -0
  324. package/src/components/ProgressBar/ProgressBar.tsx +2 -0
  325. package/src/components/RadioGroup/RadioGroup.tsx +2 -0
  326. package/src/components/SectionLabel/SectionLabel.tsx +2 -0
  327. package/src/components/SegmentedControl/SegmentedControl.tsx +2 -0
  328. package/src/components/Select/Select.tsx +2 -0
  329. package/src/components/Slider/Slider.tsx +2 -0
  330. package/src/components/SmoothCornersBox/SmoothCornersBox.tsx +2 -0
  331. package/src/components/Spinner/Spinner.tsx +2 -0
  332. package/src/components/Stack/Stack.tsx +2 -0
  333. package/src/components/Status/Status.tsx +2 -0
  334. package/src/components/Switch/Switch.tsx +2 -0
  335. package/src/components/Tabs/Tabs.tsx +2 -0
  336. package/src/components/Tag/Tag.tsx +2 -0
  337. package/src/components/Text/Text.tsx +2 -0
  338. package/src/components/TextArea/TextArea.tsx +2 -0
  339. package/src/components/TextField/TextField.tsx +2 -0
  340. package/src/components/ThemeProvider/ThemeProvider.tsx +2 -0
  341. package/src/components/Toast/Toast.tsx +2 -0
  342. package/src/components/TokenProvider/TokenProvider.tsx +2 -0
  343. package/src/components/Tooltip/Tooltip.tsx +2 -0
  344. package/src/components/VisuallyHidden/VisuallyHidden.tsx +2 -0
  345. package/src/components/WindowProvider/WindowProvider.tsx +2 -0
  346. package/src/index.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sources":["../../../../src/components/Modal/Modal.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useState } from 'react'\n\nimport { CancelIcon } from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport useMergeRefs from '~/src/hooks/useMergeRefs'\nimport { getZIndexClassName } from '~/src/types/props-helpers'\nimport { createContext } from '~/src/utils/react'\nimport { cssDimension } from '~/src/utils/style'\nimport { isNil, isNumber } from '~/src/utils/type'\n\nimport {\n AlphaDialogPrimitive,\n AlphaDialogPrimitiveClose,\n AlphaDialogPrimitiveContent,\n AlphaDialogPrimitiveDescription,\n AlphaDialogPrimitiveOverlay,\n AlphaDialogPrimitivePortal,\n type AlphaDialogPrimitiveProps,\n AlphaDialogPrimitiveTitle,\n AlphaDialogPrimitiveTrigger,\n} from '~/src/components/AlphaDialogPrimitive'\nimport { Button } from '~/src/components/Button'\nimport { Text } from '~/src/components/Text'\nimport { ThemeProvider, useThemeName } from '~/src/components/ThemeProvider'\nimport { VisuallyHidden } from '~/src/components/VisuallyHidden'\nimport { useRootElement } from '~/src/components/WindowProvider'\n\nimport {\n type ModalBodyProps,\n type ModalCloseProps,\n type ModalContentProps,\n type ModalContentPropsContextValue,\n type ModalFooterProps,\n type ModalHeaderProps,\n type ModalProps,\n type ModalTitleSize,\n type ModalTriggerProps,\n} from './Modal.types'\n\nimport styles from './Modal.module.scss'\n\nconst [ModalContainerContextProvider, useModalContainerContext] = createContext<\n HTMLElement | undefined\n>(undefined)\n\nexport { useModalContainerContext }\n\nconst [ModalContentPropsContextProvider, useModalContentPropsContext] =\n createContext<ModalContentPropsContextValue>({\n showCloseIcon: false,\n })\n\n/**\n * `Modal` is a dialog that appears on top of the page.\n *\n * `Modal` is a context of the Modal-related components. It doesn't render any DOM node.\n * It controls the visibility of the entire component and provides\n * handlers and accessibility properties to Modal-related components.\n * @example\n *\n * ```tsx\n * // Anatomy of the Modal\n * <Modal>\n * <ModalTrigger />\n * <ModalContent>\n * <ModalHeader />\n * <ModalBody />\n * <ModalFooter />\n * </ModalContent>\n * </Modal>\n * ```\n */\nexport function Modal({\n children,\n show,\n defaultShow,\n onShow,\n onHide,\n}: ModalProps) {\n const onOpenChange = useCallback<\n NonNullable<AlphaDialogPrimitiveProps['onOpenChange']>\n >(\n (open) => {\n const callback = open ? onShow : onHide\n callback?.()\n },\n [onShow, onHide]\n )\n\n return (\n <AlphaDialogPrimitive\n open={show}\n defaultOpen={defaultShow}\n onOpenChange={onOpenChange}\n >\n {children}\n </AlphaDialogPrimitive>\n )\n}\n\n/**\n * `ModalContent` is a container of the modal content.\n * It creates a portal to render the modal content outside of the DOM tree\n * and renders overlay behind the modal content too.\n */\nexport const ModalContent = forwardRef<HTMLDivElement, ModalContentProps>(\n function ModalContent(\n {\n children,\n style,\n className,\n container: givenContainer,\n showCloseIcon = false,\n preventHideOnOutsideClick = false,\n width = 'max-content',\n height = 'fit-content',\n zIndex = 'modal',\n collisionPadding = { top: 40, bottom: 40 },\n ...rest\n },\n forwardedRef\n ) {\n const rootElement = useRootElement()\n const container = givenContainer ?? rootElement\n const [contentContainer, setContentContainer] = useState<HTMLElement>()\n\n const contentRef = useMergeRefs(\n forwardedRef,\n useCallback((node: HTMLElement | null) => {\n setContentContainer(node ?? undefined)\n }, [])\n )\n\n const overlayStyle = (() => {\n const padding = (() => {\n if (isNumber(collisionPadding)) {\n return `${collisionPadding}px`\n }\n\n const { top, right, bottom, left } = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...collisionPadding,\n }\n\n return `${top}px ${right}px ${bottom}px ${left}px`\n })()\n\n return {\n '--b-modal-collision-padding': padding,\n } as React.CSSProperties\n })()\n\n const propsContextValue = useMemo(\n (): ModalContentPropsContextValue => ({\n showCloseIcon,\n }),\n [showCloseIcon]\n )\n\n return (\n <AlphaDialogPrimitivePortal container={container}>\n <ThemeProvider themeName={useThemeName()}>\n <AlphaDialogPrimitiveOverlay\n style={overlayStyle}\n className={classNames(\n styles.ModalOverlay,\n getZIndexClassName(zIndex)\n )}\n >\n <AlphaDialogPrimitiveContent\n asChild\n onPointerDownOutside={(e) => {\n if (preventHideOnOutsideClick) {\n e.preventDefault()\n }\n }}\n onInteractOutside={(e) => {\n if (preventHideOnOutsideClick) {\n e.preventDefault()\n }\n }}\n >\n <div\n aria-modal=\"true\"\n ref={contentRef}\n style={\n {\n '--b-modal-width': cssDimension(width),\n '--b-modal-height': cssDimension(height),\n ...style,\n } as React.CSSProperties\n }\n className={classNames(styles.ModalContent, className)}\n {...rest}\n >\n <section className={styles.ModalSection}>\n <ModalContainerContextProvider value={contentContainer}>\n <ModalContentPropsContextProvider value={propsContextValue}>\n {children}\n </ModalContentPropsContextProvider>\n </ModalContainerContextProvider>\n\n {/* NOTE: To prevent focusing first on the close button when opening the modal, place the close button behind. */}\n {showCloseIcon && (\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n <ModalClose>\n <Button\n className={styles.CloseIconButton}\n size=\"m\"\n leftContent={CancelIcon}\n colorVariant=\"monochrome-dark\"\n styleVariant=\"tertiary\"\n />\n </ModalClose>\n )}\n </section>\n </div>\n </AlphaDialogPrimitiveContent>\n </AlphaDialogPrimitiveOverlay>\n </ThemeProvider>\n </AlphaDialogPrimitivePortal>\n )\n }\n)\n\nfunction getTitleTypo(size: ModalTitleSize) {\n return (\n {\n l: '24',\n m: '16',\n } as const\n )[size]\n}\n\nfunction ModalHeaderTitle({\n children,\n size,\n subtitle,\n}: React.PropsWithChildren<\n Pick<ModalHeaderProps, 'subtitle'> & {\n size: NonNullable<ModalHeaderProps['titleSize']>\n }\n>) {\n const Title = (\n <Text\n className={styles.Title}\n as=\"h2\"\n typo={getTitleTypo(size)}\n bold\n color=\"txt-black-darkest\"\n >\n {children}\n </Text>\n )\n\n return (\n <AlphaDialogPrimitiveTitle asChild>\n {!isNil(subtitle) ? (\n <hgroup\n className={styles.HeadingGroup}\n role=\"group\"\n aria-roledescription=\"Heading group\"\n >\n {Title}\n\n <Text\n aria-roledescription=\"subtitle\"\n as=\"p\"\n bold\n color=\"txt-black-dark\"\n typo=\"13\"\n >\n {subtitle}\n </Text>\n </hgroup>\n ) : (\n Title\n )}\n </AlphaDialogPrimitiveTitle>\n )\n}\n\n/**\n * `ModalHeader` is a header of the modal content.\n * It renders the accessible title and description of the modal.\n * If you want to hide the title and description, use `hidden` prop.\n */\nexport const ModalHeader = forwardRef<HTMLElement, ModalHeaderProps>(\n function ModalHeader(\n {\n className,\n title,\n subtitle,\n description,\n titleSize = 'l',\n hidden = false,\n ...rest\n },\n forwardedRef\n ) {\n const { showCloseIcon } = useModalContentPropsContext()\n const hasTitleArea = title || showCloseIcon\n const Hidden = hidden ? VisuallyHidden : React.Fragment\n\n return (\n <Hidden>\n <header\n ref={forwardedRef}\n className={classNames(\n styles.ModalHeader,\n hidden && styles.hidden,\n className\n )}\n {...rest}\n >\n {hasTitleArea && (\n <div className={styles.TitleContainer}>\n {title && (\n <ModalHeaderTitle\n size={titleSize}\n subtitle={subtitle}\n >\n {title}\n </ModalHeaderTitle>\n )}\n\n {showCloseIcon && (\n <Button\n className={styles.CloseIconButtonSpacer}\n as=\"div\"\n size=\"m\"\n />\n )}\n </div>\n )}\n\n {description && (\n <AlphaDialogPrimitiveDescription asChild>\n <Text\n as=\"p\"\n color=\"txt-black-darkest\"\n typo=\"15\"\n >\n {description}\n </Text>\n </AlphaDialogPrimitiveDescription>\n )}\n </header>\n </Hidden>\n )\n }\n)\n\n/**\n * `ModalBody` is a simple wrapper of the main modal content.\n */\nexport const ModalBody = forwardRef(function ModalBody(\n { children, className, ...rest }: ModalBodyProps,\n forwardedRef: React.Ref<HTMLDivElement>\n) {\n return (\n <div\n ref={forwardedRef}\n className={classNames(styles.ModalBody, className)}\n {...rest}\n >\n {children}\n </div>\n )\n})\n\n/**\n * `ModalFooter` is a simple wrapper of the footer of the modal content.\n * Usually, it contains the action buttons of the modal.\n */\nexport const ModalFooter = forwardRef<HTMLElement, ModalFooterProps>(\n function ModalFooter(\n { className, leftContent, rightContent, ...rest },\n forwardedRef\n ) {\n return (\n <footer\n ref={forwardedRef}\n className={classNames(styles.ModalFooter, className)}\n {...rest}\n >\n {leftContent && (\n <div className={styles.FooterLeftContent}>{leftContent}</div>\n )}\n\n {rightContent && (\n <div className={styles.FooterRightContent}>{rightContent}</div>\n )}\n </footer>\n )\n }\n)\n\n/**\n * `ModalTrigger` is a button that opens the modal. **It doesn't render any DOM node.**\n * It passes the handler that opens the modal and accessibility properties to the children.\n *\n * It **must** be placed outside of the `ModalContent`.\n */\nexport function ModalTrigger({ children }: ModalTriggerProps) {\n return (\n <AlphaDialogPrimitiveTrigger asChild>\n {children}\n </AlphaDialogPrimitiveTrigger>\n )\n}\n\n/**\n * `ModalClose` is a button that closes the modal. **It doesn't render any DOM node.**\n * It passes the handler that closes the modal to the children.\n */\nexport function ModalClose({ children }: ModalCloseProps) {\n return (\n <AlphaDialogPrimitiveClose asChild>{children}</AlphaDialogPrimitiveClose>\n )\n}\n"],"names":["ModalContainerContextProvider","useModalContainerContext","createContext","undefined","ModalContentPropsContextProvider","useModalContentPropsContext","showCloseIcon","Modal","children","show","defaultShow","onShow","onHide","onOpenChange","useCallback","open","callback","React","createElement","AlphaDialogPrimitive","defaultOpen","ModalContent","forwardRef","style","className","container","givenContainer","preventHideOnOutsideClick","width","height","zIndex","collisionPadding","top","bottom","rest","forwardedRef","rootElement","useRootElement","contentContainer","setContentContainer","useState","contentRef","useMergeRefs","node","overlayStyle","padding","isNumber","right","left","propsContextValue","useMemo","AlphaDialogPrimitivePortal","ThemeProvider","themeName","useThemeName","AlphaDialogPrimitiveOverlay","classNames","styles","ModalOverlay","getZIndexClassName","AlphaDialogPrimitiveContent","asChild","onPointerDownOutside","e","preventDefault","onInteractOutside","Object","assign","ref","cssDimension","ModalSection","value","ModalClose","Button","CloseIconButton","size","leftContent","CancelIcon","colorVariant","styleVariant","getTitleTypo","l","m","ModalHeaderTitle","subtitle","Title","Text","as","typo","bold","color","AlphaDialogPrimitiveTitle","isNil","HeadingGroup","role","ModalHeader","title","description","titleSize","hidden","hasTitleArea","Hidden","VisuallyHidden","Fragment","TitleContainer","CloseIconButtonSpacer","AlphaDialogPrimitiveDescription","ModalBody","ModalFooter","rightContent","FooterLeftContent","FooterRightContent","ModalTrigger","AlphaDialogPrimitiveTrigger","AlphaDialogPrimitiveClose"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","sources":["../../../../src/components/Modal/Modal.tsx"],"sourcesContent":["'use client'\n\nimport React, { forwardRef, useCallback, useMemo, useState } from 'react'\n\nimport { CancelIcon } from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport useMergeRefs from '~/src/hooks/useMergeRefs'\nimport { getZIndexClassName } from '~/src/types/props-helpers'\nimport { createContext } from '~/src/utils/react'\nimport { cssDimension } from '~/src/utils/style'\nimport { isNil, isNumber } from '~/src/utils/type'\n\nimport {\n AlphaDialogPrimitive,\n AlphaDialogPrimitiveClose,\n AlphaDialogPrimitiveContent,\n AlphaDialogPrimitiveDescription,\n AlphaDialogPrimitiveOverlay,\n AlphaDialogPrimitivePortal,\n type AlphaDialogPrimitiveProps,\n AlphaDialogPrimitiveTitle,\n AlphaDialogPrimitiveTrigger,\n} from '~/src/components/AlphaDialogPrimitive'\nimport { Button } from '~/src/components/Button'\nimport { Text } from '~/src/components/Text'\nimport { ThemeProvider, useThemeName } from '~/src/components/ThemeProvider'\nimport { VisuallyHidden } from '~/src/components/VisuallyHidden'\nimport { useRootElement } from '~/src/components/WindowProvider'\n\nimport {\n type ModalBodyProps,\n type ModalCloseProps,\n type ModalContentProps,\n type ModalContentPropsContextValue,\n type ModalFooterProps,\n type ModalHeaderProps,\n type ModalProps,\n type ModalTitleSize,\n type ModalTriggerProps,\n} from './Modal.types'\n\nimport styles from './Modal.module.scss'\n\nconst [ModalContainerContextProvider, useModalContainerContext] = createContext<\n HTMLElement | undefined\n>(undefined)\n\nexport { useModalContainerContext }\n\nconst [ModalContentPropsContextProvider, useModalContentPropsContext] =\n createContext<ModalContentPropsContextValue>({\n showCloseIcon: false,\n })\n\n/**\n * `Modal` is a dialog that appears on top of the page.\n *\n * `Modal` is a context of the Modal-related components. It doesn't render any DOM node.\n * It controls the visibility of the entire component and provides\n * handlers and accessibility properties to Modal-related components.\n * @example\n *\n * ```tsx\n * // Anatomy of the Modal\n * <Modal>\n * <ModalTrigger />\n * <ModalContent>\n * <ModalHeader />\n * <ModalBody />\n * <ModalFooter />\n * </ModalContent>\n * </Modal>\n * ```\n */\nexport function Modal({\n children,\n show,\n defaultShow,\n onShow,\n onHide,\n}: ModalProps) {\n const onOpenChange = useCallback<\n NonNullable<AlphaDialogPrimitiveProps['onOpenChange']>\n >(\n (open) => {\n const callback = open ? onShow : onHide\n callback?.()\n },\n [onShow, onHide]\n )\n\n return (\n <AlphaDialogPrimitive\n open={show}\n defaultOpen={defaultShow}\n onOpenChange={onOpenChange}\n >\n {children}\n </AlphaDialogPrimitive>\n )\n}\n\n/**\n * `ModalContent` is a container of the modal content.\n * It creates a portal to render the modal content outside of the DOM tree\n * and renders overlay behind the modal content too.\n */\nexport const ModalContent = forwardRef<HTMLDivElement, ModalContentProps>(\n function ModalContent(\n {\n children,\n style,\n className,\n container: givenContainer,\n showCloseIcon = false,\n preventHideOnOutsideClick = false,\n width = 'max-content',\n height = 'fit-content',\n zIndex = 'modal',\n collisionPadding = { top: 40, bottom: 40 },\n ...rest\n },\n forwardedRef\n ) {\n const rootElement = useRootElement()\n const container = givenContainer ?? rootElement\n const [contentContainer, setContentContainer] = useState<HTMLElement>()\n\n const contentRef = useMergeRefs(\n forwardedRef,\n useCallback((node: HTMLElement | null) => {\n setContentContainer(node ?? undefined)\n }, [])\n )\n\n const overlayStyle = (() => {\n const padding = (() => {\n if (isNumber(collisionPadding)) {\n return `${collisionPadding}px`\n }\n\n const { top, right, bottom, left } = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...collisionPadding,\n }\n\n return `${top}px ${right}px ${bottom}px ${left}px`\n })()\n\n return {\n '--b-modal-collision-padding': padding,\n } as React.CSSProperties\n })()\n\n const propsContextValue = useMemo(\n (): ModalContentPropsContextValue => ({\n showCloseIcon,\n }),\n [showCloseIcon]\n )\n\n return (\n <AlphaDialogPrimitivePortal container={container}>\n <ThemeProvider themeName={useThemeName()}>\n <AlphaDialogPrimitiveOverlay\n style={overlayStyle}\n className={classNames(\n styles.ModalOverlay,\n getZIndexClassName(zIndex)\n )}\n >\n <AlphaDialogPrimitiveContent\n asChild\n onPointerDownOutside={(e) => {\n if (preventHideOnOutsideClick) {\n e.preventDefault()\n }\n }}\n onInteractOutside={(e) => {\n if (preventHideOnOutsideClick) {\n e.preventDefault()\n }\n }}\n >\n <div\n aria-modal=\"true\"\n ref={contentRef}\n style={\n {\n '--b-modal-width': cssDimension(width),\n '--b-modal-height': cssDimension(height),\n ...style,\n } as React.CSSProperties\n }\n className={classNames(styles.ModalContent, className)}\n {...rest}\n >\n <section className={styles.ModalSection}>\n <ModalContainerContextProvider value={contentContainer}>\n <ModalContentPropsContextProvider value={propsContextValue}>\n {children}\n </ModalContentPropsContextProvider>\n </ModalContainerContextProvider>\n\n {/* NOTE: To prevent focusing first on the close button when opening the modal, place the close button behind. */}\n {showCloseIcon && (\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n <ModalClose>\n <Button\n className={styles.CloseIconButton}\n size=\"m\"\n leftContent={CancelIcon}\n colorVariant=\"monochrome-dark\"\n styleVariant=\"tertiary\"\n />\n </ModalClose>\n )}\n </section>\n </div>\n </AlphaDialogPrimitiveContent>\n </AlphaDialogPrimitiveOverlay>\n </ThemeProvider>\n </AlphaDialogPrimitivePortal>\n )\n }\n)\n\nfunction getTitleTypo(size: ModalTitleSize) {\n return (\n {\n l: '24',\n m: '16',\n } as const\n )[size]\n}\n\nfunction ModalHeaderTitle({\n children,\n size,\n subtitle,\n}: React.PropsWithChildren<\n Pick<ModalHeaderProps, 'subtitle'> & {\n size: NonNullable<ModalHeaderProps['titleSize']>\n }\n>) {\n const Title = (\n <Text\n className={styles.Title}\n as=\"h2\"\n typo={getTitleTypo(size)}\n bold\n color=\"txt-black-darkest\"\n >\n {children}\n </Text>\n )\n\n return (\n <AlphaDialogPrimitiveTitle asChild>\n {!isNil(subtitle) ? (\n <hgroup\n className={styles.HeadingGroup}\n role=\"group\"\n aria-roledescription=\"Heading group\"\n >\n {Title}\n\n <Text\n aria-roledescription=\"subtitle\"\n as=\"p\"\n bold\n color=\"txt-black-dark\"\n typo=\"13\"\n >\n {subtitle}\n </Text>\n </hgroup>\n ) : (\n Title\n )}\n </AlphaDialogPrimitiveTitle>\n )\n}\n\n/**\n * `ModalHeader` is a header of the modal content.\n * It renders the accessible title and description of the modal.\n * If you want to hide the title and description, use `hidden` prop.\n */\nexport const ModalHeader = forwardRef<HTMLElement, ModalHeaderProps>(\n function ModalHeader(\n {\n className,\n title,\n subtitle,\n description,\n titleSize = 'l',\n hidden = false,\n ...rest\n },\n forwardedRef\n ) {\n const { showCloseIcon } = useModalContentPropsContext()\n const hasTitleArea = title || showCloseIcon\n const Hidden = hidden ? VisuallyHidden : React.Fragment\n\n return (\n <Hidden>\n <header\n ref={forwardedRef}\n className={classNames(\n styles.ModalHeader,\n hidden && styles.hidden,\n className\n )}\n {...rest}\n >\n {hasTitleArea && (\n <div className={styles.TitleContainer}>\n {title && (\n <ModalHeaderTitle\n size={titleSize}\n subtitle={subtitle}\n >\n {title}\n </ModalHeaderTitle>\n )}\n\n {showCloseIcon && (\n <Button\n className={styles.CloseIconButtonSpacer}\n as=\"div\"\n size=\"m\"\n />\n )}\n </div>\n )}\n\n {description && (\n <AlphaDialogPrimitiveDescription asChild>\n <Text\n as=\"p\"\n color=\"txt-black-darkest\"\n typo=\"15\"\n >\n {description}\n </Text>\n </AlphaDialogPrimitiveDescription>\n )}\n </header>\n </Hidden>\n )\n }\n)\n\n/**\n * `ModalBody` is a simple wrapper of the main modal content.\n */\nexport const ModalBody = forwardRef(function ModalBody(\n { children, className, ...rest }: ModalBodyProps,\n forwardedRef: React.Ref<HTMLDivElement>\n) {\n return (\n <div\n ref={forwardedRef}\n className={classNames(styles.ModalBody, className)}\n {...rest}\n >\n {children}\n </div>\n )\n})\n\n/**\n * `ModalFooter` is a simple wrapper of the footer of the modal content.\n * Usually, it contains the action buttons of the modal.\n */\nexport const ModalFooter = forwardRef<HTMLElement, ModalFooterProps>(\n function ModalFooter(\n { className, leftContent, rightContent, ...rest },\n forwardedRef\n ) {\n return (\n <footer\n ref={forwardedRef}\n className={classNames(styles.ModalFooter, className)}\n {...rest}\n >\n {leftContent && (\n <div className={styles.FooterLeftContent}>{leftContent}</div>\n )}\n\n {rightContent && (\n <div className={styles.FooterRightContent}>{rightContent}</div>\n )}\n </footer>\n )\n }\n)\n\n/**\n * `ModalTrigger` is a button that opens the modal. **It doesn't render any DOM node.**\n * It passes the handler that opens the modal and accessibility properties to the children.\n *\n * It **must** be placed outside of the `ModalContent`.\n */\nexport function ModalTrigger({ children }: ModalTriggerProps) {\n return (\n <AlphaDialogPrimitiveTrigger asChild>\n {children}\n </AlphaDialogPrimitiveTrigger>\n )\n}\n\n/**\n * `ModalClose` is a button that closes the modal. **It doesn't render any DOM node.**\n * It passes the handler that closes the modal to the children.\n */\nexport function ModalClose({ children }: ModalCloseProps) {\n return (\n <AlphaDialogPrimitiveClose asChild>{children}</AlphaDialogPrimitiveClose>\n )\n}\n"],"names":["ModalContainerContextProvider","useModalContainerContext","createContext","undefined","ModalContentPropsContextProvider","useModalContentPropsContext","showCloseIcon","Modal","children","show","defaultShow","onShow","onHide","onOpenChange","useCallback","open","callback","React","createElement","AlphaDialogPrimitive","defaultOpen","ModalContent","forwardRef","style","className","container","givenContainer","preventHideOnOutsideClick","width","height","zIndex","collisionPadding","top","bottom","rest","forwardedRef","rootElement","useRootElement","contentContainer","setContentContainer","useState","contentRef","useMergeRefs","node","overlayStyle","padding","isNumber","right","left","propsContextValue","useMemo","AlphaDialogPrimitivePortal","ThemeProvider","themeName","useThemeName","AlphaDialogPrimitiveOverlay","classNames","styles","ModalOverlay","getZIndexClassName","AlphaDialogPrimitiveContent","asChild","onPointerDownOutside","e","preventDefault","onInteractOutside","Object","assign","ref","cssDimension","ModalSection","value","ModalClose","Button","CloseIconButton","size","leftContent","CancelIcon","colorVariant","styleVariant","getTitleTypo","l","m","ModalHeaderTitle","subtitle","Title","Text","as","typo","bold","color","AlphaDialogPrimitiveTitle","isNil","HeadingGroup","role","ModalHeader","title","description","titleSize","hidden","hasTitleArea","Hidden","VisuallyHidden","Fragment","TitleContainer","CloseIconButtonSpacer","AlphaDialogPrimitiveDescription","ModalBody","ModalFooter","rightContent","FooterLeftContent","FooterRightContent","ModalTrigger","AlphaDialogPrimitiveTrigger","AlphaDialogPrimitiveClose"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"NavGroup.js","sources":["../../../../src/components/NavGroup/NavGroup.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\nimport {\n ChevronSmallDownIcon,\n ChevronSmallRightIcon,\n} from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport { isNil } from '~/src/utils/type'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { Icon } from '~/src/components/Icon'\nimport { Text } from '~/src/components/Text'\n\n// eslint-disable-next-line no-restricted-imports\nimport commonStyles from '../NavItem/NavItem.module.scss'\n\nimport type { NavGroupProps } from './NavGroup.types'\n\nimport styles from './NavGroup.module.scss'\n\nexport const NAV_GROUP_TEST_ID = 'bezier-nav-group'\nexport const NAV_GROUP_LEFT_ICON_TEST_ID = 'bezier-nav-group-left-icon'\n\nexport const NavGroup = forwardRef<HTMLButtonElement, NavGroupProps>(\n function NavGroup(\n {\n name,\n className,\n children,\n content,\n rightContent,\n leftContent,\n open,\n active,\n onClick,\n ...rest\n },\n forwardedRef\n ) {\n const handleClickItem = (e?: React.MouseEvent) => {\n onClick?.(e, name)\n }\n\n const hasChildren = !isNil(children)\n const chevronIconSource = open\n ? ChevronSmallDownIcon\n : ChevronSmallRightIcon\n const ariaName = `${name}Menu`\n\n return (\n <li\n className={commonStyles.Wrapper}\n role=\"none\"\n >\n <BaseButton\n ref={forwardedRef}\n className={classNames(\n commonStyles.Item,\n active && commonStyles.active,\n className\n )}\n role=\"menuitem\"\n aria-haspopup={hasChildren}\n aria-expanded={open}\n aria-controls={ariaName}\n onClick={handleClickItem}\n data-testid={NAV_GROUP_TEST_ID}\n {...rest}\n >\n <div className={commonStyles.LeftIconWrapper}>\n <Icon\n source={leftContent}\n size=\"s\"\n color={active ? 'bgtxt-blue-normal' : 'txt-black-dark'}\n data-testid={NAV_GROUP_LEFT_ICON_TEST_ID}\n />\n </div>\n\n <Text\n typo=\"14\"\n truncated\n >\n {content}\n </Text>\n\n {hasChildren && (\n <div className={styles.ChevronWrapper}>\n <Icon\n source={chevronIconSource}\n size=\"s\"\n color=\"txt-black-dark\"\n />\n </div>\n )}\n\n {rightContent && (\n <div className={commonStyles.RightContentWrapper}>\n {rightContent}\n </div>\n )}\n </BaseButton>\n\n {open && (\n <ul\n className={styles.ChildrenWrapper}\n role=\"menu\"\n id={ariaName}\n >\n {open && children}\n </ul>\n )}\n </li>\n )\n }\n)\n"],"names":["NAV_GROUP_TEST_ID","NAV_GROUP_LEFT_ICON_TEST_ID","NavGroup","forwardRef","name","className","children","content","rightContent","leftContent","open","active","onClick","rest","forwardedRef","handleClickItem","e","hasChildren","isNil","chevronIconSource","ChevronSmallDownIcon","ChevronSmallRightIcon","ariaName","React","createElement","commonStyles","Wrapper","role","BaseButton","Object","assign","ref","classNames","Item","LeftIconWrapper","Icon","source","size","color","Text","typo","truncated","styles","ChevronWrapper","RightContentWrapper","ChildrenWrapper","id"],"mappings":"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"}
1
+ {"version":3,"file":"NavGroup.js","sources":["../../../../src/components/NavGroup/NavGroup.tsx"],"sourcesContent":["'use client'\n\nimport React, { forwardRef } from 'react'\n\nimport {\n ChevronSmallDownIcon,\n ChevronSmallRightIcon,\n} from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport { isNil } from '~/src/utils/type'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { Icon } from '~/src/components/Icon'\nimport { Text } from '~/src/components/Text'\n\n// eslint-disable-next-line no-restricted-imports\nimport commonStyles from '../NavItem/NavItem.module.scss'\n\nimport type { NavGroupProps } from './NavGroup.types'\n\nimport styles from './NavGroup.module.scss'\n\nexport const NAV_GROUP_TEST_ID = 'bezier-nav-group'\nexport const NAV_GROUP_LEFT_ICON_TEST_ID = 'bezier-nav-group-left-icon'\n\nexport const NavGroup = forwardRef<HTMLButtonElement, NavGroupProps>(\n function NavGroup(\n {\n name,\n className,\n children,\n content,\n rightContent,\n leftContent,\n open,\n active,\n onClick,\n ...rest\n },\n forwardedRef\n ) {\n const handleClickItem = (e?: React.MouseEvent) => {\n onClick?.(e, name)\n }\n\n const hasChildren = !isNil(children)\n const chevronIconSource = open\n ? ChevronSmallDownIcon\n : ChevronSmallRightIcon\n const ariaName = `${name}Menu`\n\n return (\n <li\n className={commonStyles.Wrapper}\n role=\"none\"\n >\n <BaseButton\n ref={forwardedRef}\n className={classNames(\n commonStyles.Item,\n active && commonStyles.active,\n className\n )}\n role=\"menuitem\"\n aria-haspopup={hasChildren}\n aria-expanded={open}\n aria-controls={ariaName}\n onClick={handleClickItem}\n data-testid={NAV_GROUP_TEST_ID}\n {...rest}\n >\n <div className={commonStyles.LeftIconWrapper}>\n <Icon\n source={leftContent}\n size=\"s\"\n color={active ? 'bgtxt-blue-normal' : 'txt-black-dark'}\n data-testid={NAV_GROUP_LEFT_ICON_TEST_ID}\n />\n </div>\n\n <Text\n typo=\"14\"\n truncated\n >\n {content}\n </Text>\n\n {hasChildren && (\n <div className={styles.ChevronWrapper}>\n <Icon\n source={chevronIconSource}\n size=\"s\"\n color=\"txt-black-dark\"\n />\n </div>\n )}\n\n {rightContent && (\n <div className={commonStyles.RightContentWrapper}>\n {rightContent}\n </div>\n )}\n </BaseButton>\n\n {open && (\n <ul\n className={styles.ChildrenWrapper}\n role=\"menu\"\n id={ariaName}\n >\n {open && children}\n </ul>\n )}\n </li>\n )\n }\n)\n"],"names":["NAV_GROUP_TEST_ID","NAV_GROUP_LEFT_ICON_TEST_ID","NavGroup","forwardRef","name","className","children","content","rightContent","leftContent","open","active","onClick","rest","forwardedRef","handleClickItem","e","hasChildren","isNil","chevronIconSource","ChevronSmallDownIcon","ChevronSmallRightIcon","ariaName","React","createElement","commonStyles","Wrapper","role","BaseButton","Object","assign","ref","classNames","Item","LeftIconWrapper","Icon","source","size","color","Text","typo","truncated","styles","ChevronWrapper","RightContentWrapper","ChildrenWrapper","id"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"NavItem.js","sources":["../../../../src/components/NavItem/NavItem.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\nimport classNames from 'classnames'\n\nimport { Icon } from '~/src/components/Icon'\nimport { Text } from '~/src/components/Text'\n\nimport type { NavItemProps } from './NavItem.types'\n\nimport styles from './NavItem.module.scss'\n\nexport const NAV_ITEM_TEST_ID = 'bezier-nav-item'\nexport const NAV_ITEM_LEFT_ICON_TEST_ID = 'bezier-nav-item-left-icon'\n\n/**\n * `NavItem` is a component for an item where you can navigate to another link.\n * @example\n * ```tsx\n * <NavItem\n * name=\"channel\"\n * content=\"https://channel.io\"\n * href=\"_parent\"\n * />\n * ```\n */\nexport const NavItem = forwardRef<HTMLAnchorElement, NavItemProps>(\n function NavItem(\n {\n name,\n style,\n className,\n content,\n href,\n target = '_self',\n rightContent,\n leftContent,\n active,\n onClick,\n ...rest\n },\n forwardedRef\n ) {\n const handleClickItem = (e?: React.MouseEvent) => {\n onClick?.(e, name)\n }\n\n return (\n <li\n className={styles.Wrapper}\n role=\"none\"\n >\n <a\n ref={forwardedRef}\n style={style}\n className={classNames(\n styles.Item,\n active && styles.active,\n className\n )}\n href={href}\n target={target}\n role=\"menuitem\"\n onClick={handleClickItem}\n data-testid={NAV_ITEM_TEST_ID}\n {...rest}\n >\n <div className={styles.LeftIconWrapper}>\n {leftContent && (\n <Icon\n data-testid={NAV_ITEM_LEFT_ICON_TEST_ID}\n source={leftContent}\n size=\"s\"\n color={active ? 'bgtxt-blue-normal' : 'txt-black-dark'}\n />\n )}\n </div>\n\n <Text\n typo=\"14\"\n truncated\n >\n {content}\n </Text>\n\n {rightContent && (\n <div className={styles.RightContentWrapper}>{rightContent}</div>\n )}\n </a>\n </li>\n )\n }\n)\n"],"names":["NAV_ITEM_TEST_ID","NAV_ITEM_LEFT_ICON_TEST_ID","NavItem","forwardRef","name","style","className","content","href","target","rightContent","leftContent","active","onClick","rest","forwardedRef","handleClickItem","e","React","createElement","styles","Wrapper","role","Object","assign","ref","classNames","Item","LeftIconWrapper","Icon","source","size","color","Text","typo","truncated","RightContentWrapper"],"mappings":";;;;;;;;AAWO,MAAMA,gBAAgB,GAAG,kBAAiB;AAC1C,MAAMC,0BAA0B,GAAG,4BAA2B;;AAErE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACaC,OAAO,gBAAGC,gBAAU,CAC/B,SAASD,OAAOA,CACd;EACEE,IAAI;EACJC,KAAK;EACLC,SAAS;EACTC,OAAO;EACPC,IAAI;AACJC,EAAAA,MAAM,GAAG,OAAO;EAChBC,YAAY;EACZC,WAAW;EACXC,MAAM;EACNC,OAAO;EACP,GAAGC,IAAAA;AACL,CAAC,EACDC,YAAY,EACZ;EACA,MAAMC,eAAe,GAAIC,CAAoB,IAAK;IAChDJ,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAPA,KAAAA,CAAAA,IAAAA,OAAO,CAAGI,CAAC,EAAEb,IAAI,CAAC,CAAA;GACnB,CAAA;EAED,oBACEc,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;IACEb,SAAS,EAAEc,sBAAM,CAACC,OAAQ;AAC1BC,IAAAA,IAAI,EAAC,MAAA;AAAM,GAAA,eAEXJ,KAAA,CAAAC,aAAA,CAAAI,GAAAA,EAAAA,MAAA,CAAAC,MAAA,CAAA;AACEC,IAAAA,GAAG,EAAEV,YAAa;AAClBV,IAAAA,KAAK,EAAEA,KAAM;AACbC,IAAAA,SAAS,EAAEoB,aAAU,CACnBN,sBAAM,CAACO,IAAI,EACXf,MAAM,IAAIQ,sBAAM,CAACR,MAAM,EACvBN,SACF,CAAE;AACFE,IAAAA,IAAI,EAAEA,IAAK;AACXC,IAAAA,MAAM,EAAEA,MAAO;AACfa,IAAAA,IAAI,EAAC,UAAU;AACfT,IAAAA,OAAO,EAAEG,eAAgB;IACzB,aAAahB,EAAAA,gBAAAA;AAAiB,GAAA,EAC1Bc,IAAI,CAAA,eAERI,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;IAAKb,SAAS,EAAEc,sBAAM,CAACQ,eAAAA;AAAgB,GAAA,EACpCjB,WAAW,iBACVO,KAAA,CAAAC,aAAA,CAACU,SAAI,EAAA;AACH,IAAA,aAAA,EAAa5B,0BAA2B;AACxC6B,IAAAA,MAAM,EAAEnB,WAAY;AACpBoB,IAAAA,IAAI,EAAC,GAAG;AACRC,IAAAA,KAAK,EAAEpB,MAAM,GAAG,mBAAmB,GAAG,gBAAA;AAAiB,GACxD,CAEA,CAAC,eAENM,KAAA,CAAAC,aAAA,CAACc,SAAI,EAAA;AACHC,IAAAA,IAAI,EAAC,IAAI;IACTC,SAAS,EAAA,IAAA;AAAA,GAAA,EAER5B,OACG,CAAC,EAENG,YAAY,iBACXQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;IAAKb,SAAS,EAAEc,sBAAM,CAACgB,mBAAAA;GAAsB1B,EAAAA,YAAkB,CAEhE,CACD,CAAC,CAAA;AAET,CACF;;;;;;"}
1
+ {"version":3,"file":"NavItem.js","sources":["../../../../src/components/NavItem/NavItem.tsx"],"sourcesContent":["'use client'\n\nimport React, { forwardRef } from 'react'\n\nimport classNames from 'classnames'\n\nimport { Icon } from '~/src/components/Icon'\nimport { Text } from '~/src/components/Text'\n\nimport type { NavItemProps } from './NavItem.types'\n\nimport styles from './NavItem.module.scss'\n\nexport const NAV_ITEM_TEST_ID = 'bezier-nav-item'\nexport const NAV_ITEM_LEFT_ICON_TEST_ID = 'bezier-nav-item-left-icon'\n\n/**\n * `NavItem` is a component for an item where you can navigate to another link.\n * @example\n * ```tsx\n * <NavItem\n * name=\"channel\"\n * content=\"https://channel.io\"\n * href=\"_parent\"\n * />\n * ```\n */\nexport const NavItem = forwardRef<HTMLAnchorElement, NavItemProps>(\n function NavItem(\n {\n name,\n style,\n className,\n content,\n href,\n target = '_self',\n rightContent,\n leftContent,\n active,\n onClick,\n ...rest\n },\n forwardedRef\n ) {\n const handleClickItem = (e?: React.MouseEvent) => {\n onClick?.(e, name)\n }\n\n return (\n <li\n className={styles.Wrapper}\n role=\"none\"\n >\n <a\n ref={forwardedRef}\n style={style}\n className={classNames(\n styles.Item,\n active && styles.active,\n className\n )}\n href={href}\n target={target}\n role=\"menuitem\"\n onClick={handleClickItem}\n data-testid={NAV_ITEM_TEST_ID}\n {...rest}\n >\n <div className={styles.LeftIconWrapper}>\n {leftContent && (\n <Icon\n data-testid={NAV_ITEM_LEFT_ICON_TEST_ID}\n source={leftContent}\n size=\"s\"\n color={active ? 'bgtxt-blue-normal' : 'txt-black-dark'}\n />\n )}\n </div>\n\n <Text\n typo=\"14\"\n truncated\n >\n {content}\n </Text>\n\n {rightContent && (\n <div className={styles.RightContentWrapper}>{rightContent}</div>\n )}\n </a>\n </li>\n )\n }\n)\n"],"names":["NAV_ITEM_TEST_ID","NAV_ITEM_LEFT_ICON_TEST_ID","NavItem","forwardRef","name","style","className","content","href","target","rightContent","leftContent","active","onClick","rest","forwardedRef","handleClickItem","e","React","createElement","styles","Wrapper","role","Object","assign","ref","classNames","Item","LeftIconWrapper","Icon","source","size","color","Text","typo","truncated","RightContentWrapper"],"mappings":";;;;;;;;AAaO,MAAMA,gBAAgB,GAAG,kBAAiB;AAC1C,MAAMC,0BAA0B,GAAG,4BAA2B;;AAErE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACaC,OAAO,gBAAGC,gBAAU,CAC/B,SAASD,OAAOA,CACd;EACEE,IAAI;EACJC,KAAK;EACLC,SAAS;EACTC,OAAO;EACPC,IAAI;AACJC,EAAAA,MAAM,GAAG,OAAO;EAChBC,YAAY;EACZC,WAAW;EACXC,MAAM;EACNC,OAAO;EACP,GAAGC,IAAAA;AACL,CAAC,EACDC,YAAY,EACZ;EACA,MAAMC,eAAe,GAAIC,CAAoB,IAAK;IAChDJ,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAPA,KAAAA,CAAAA,IAAAA,OAAO,CAAGI,CAAC,EAAEb,IAAI,CAAC,CAAA;GACnB,CAAA;EAED,oBACEc,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;IACEb,SAAS,EAAEc,sBAAM,CAACC,OAAQ;AAC1BC,IAAAA,IAAI,EAAC,MAAA;AAAM,GAAA,eAEXJ,KAAA,CAAAC,aAAA,CAAAI,GAAAA,EAAAA,MAAA,CAAAC,MAAA,CAAA;AACEC,IAAAA,GAAG,EAAEV,YAAa;AAClBV,IAAAA,KAAK,EAAEA,KAAM;AACbC,IAAAA,SAAS,EAAEoB,aAAU,CACnBN,sBAAM,CAACO,IAAI,EACXf,MAAM,IAAIQ,sBAAM,CAACR,MAAM,EACvBN,SACF,CAAE;AACFE,IAAAA,IAAI,EAAEA,IAAK;AACXC,IAAAA,MAAM,EAAEA,MAAO;AACfa,IAAAA,IAAI,EAAC,UAAU;AACfT,IAAAA,OAAO,EAAEG,eAAgB;IACzB,aAAahB,EAAAA,gBAAAA;AAAiB,GAAA,EAC1Bc,IAAI,CAAA,eAERI,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;IAAKb,SAAS,EAAEc,sBAAM,CAACQ,eAAAA;AAAgB,GAAA,EACpCjB,WAAW,iBACVO,KAAA,CAAAC,aAAA,CAACU,SAAI,EAAA;AACH,IAAA,aAAA,EAAa5B,0BAA2B;AACxC6B,IAAAA,MAAM,EAAEnB,WAAY;AACpBoB,IAAAA,IAAI,EAAC,GAAG;AACRC,IAAAA,KAAK,EAAEpB,MAAM,GAAG,mBAAmB,GAAG,gBAAA;AAAiB,GACxD,CAEA,CAAC,eAENM,KAAA,CAAAC,aAAA,CAACc,SAAI,EAAA;AACHC,IAAAA,IAAI,EAAC,IAAI;IACTC,SAAS,EAAA,IAAA;AAAA,GAAA,EAER5B,OACG,CAAC,EAENG,YAAY,iBACXQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;IAAKb,SAAS,EAAEc,sBAAM,CAACgB,mBAAAA;GAAsB1B,EAAAA,YAAkB,CAEhE,CACD,CAAC,CAAA;AAET,CACF;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"OutlineItem.js","sources":["../../../../src/components/OutlineItem/OutlineItem.tsx"],"sourcesContent":["import React, { forwardRef, useMemo } from 'react'\n\nimport {\n ChevronSmallDownIcon,\n ChevronSmallRightIcon,\n isBezierIcon,\n} from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport { createContext } from '~/src/utils/react'\nimport { isEmpty, isNil } from '~/src/utils/type'\n\nimport { Icon } from '~/src/components/Icon'\nimport { Text } from '~/src/components/Text'\n\nimport {\n type OutlineItemContextProps,\n type OutlineItemProps,\n} from './OutlineItem.types'\n\nimport styles from './OutlineItem.module.scss'\n\nconst [OutlineItemContextProvider, useOutlineItemContext] = createContext<\n OutlineItemContextProps | undefined\n>(undefined)\n\nconst DEFAULT_INDENT = 16\n\nexport const OUTLINE_ITEM_TEST_ID = 'bezier-outline-item'\n\nexport const OutlineItem = forwardRef<\n HTMLDivElement & HTMLAnchorElement,\n OutlineItemProps\n>(function OutlineItem(\n {\n children,\n style,\n className,\n as,\n open = false,\n disableChevron = false,\n active = false,\n focused = false,\n leftContent,\n content,\n rightContent,\n href,\n ...rest\n },\n forwardedRef\n) {\n const context = useOutlineItemContext()\n const isRoot = isNil(context)\n const indent = isRoot ? 0 : context.indent + DEFAULT_INDENT\n\n const isLink = !isEmpty(href)\n const Comp = isLink ? 'a' : ((as ?? 'div') as 'div')\n\n return (\n <>\n <Comp\n {...(isLink && {\n href,\n target: '_blank',\n rel: 'noopener noreferrer',\n })}\n style={\n {\n ...style,\n '--b-outline-item-indent': `${indent}px`,\n } as React.CSSProperties\n }\n className={classNames(\n styles.OutlineItem,\n active && styles.active,\n focused && styles.focused,\n className\n )}\n ref={forwardedRef}\n data-testid={OUTLINE_ITEM_TEST_ID}\n {...rest}\n >\n {!disableChevron && (\n <div className={styles.Chevron}>\n {!isNil(children) && (\n <Icon\n className={styles.Icon}\n source={open ? ChevronSmallDownIcon : ChevronSmallRightIcon}\n size=\"s\"\n color=\"txt-black-dark\"\n />\n )}\n </div>\n )}\n\n {leftContent && (\n <div className={styles.LeftContent}>\n {isBezierIcon(leftContent) ? (\n <Icon\n className={styles.Icon}\n size=\"s\"\n source={leftContent}\n color=\"txt-black-dark\"\n />\n ) : (\n leftContent\n )}\n </div>\n )}\n\n <Text\n className={styles.Content}\n typo=\"14\"\n truncated\n >\n {content}\n </Text>\n\n {rightContent}\n </Comp>\n\n <OutlineItemContextProvider value={useMemo(() => ({ indent }), [indent])}>\n {open && children}\n </OutlineItemContextProvider>\n </>\n )\n})\n"],"names":["OutlineItemContextProvider","useOutlineItemContext","createContext","undefined","DEFAULT_INDENT","OUTLINE_ITEM_TEST_ID","OutlineItem","forwardRef","children","style","className","as","open","disableChevron","active","focused","leftContent","content","rightContent","href","rest","forwardedRef","context","isRoot","isNil","indent","isLink","isEmpty","Comp","React","createElement","Fragment","Object","assign","target","rel","classNames","styles","ref","Chevron","Icon","source","ChevronSmallDownIcon","ChevronSmallRightIcon","size","color","LeftContent","isBezierIcon","Text","Content","typo","truncated","value","useMemo"],"mappings":"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"}
1
+ {"version":3,"file":"OutlineItem.js","sources":["../../../../src/components/OutlineItem/OutlineItem.tsx"],"sourcesContent":["'use client'\n\nimport React, { forwardRef, useMemo } from 'react'\n\nimport {\n ChevronSmallDownIcon,\n ChevronSmallRightIcon,\n isBezierIcon,\n} from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport { createContext } from '~/src/utils/react'\nimport { isEmpty, isNil } from '~/src/utils/type'\n\nimport { Icon } from '~/src/components/Icon'\nimport { Text } from '~/src/components/Text'\n\nimport {\n type OutlineItemContextProps,\n type OutlineItemProps,\n} from './OutlineItem.types'\n\nimport styles from './OutlineItem.module.scss'\n\nconst [OutlineItemContextProvider, useOutlineItemContext] = createContext<\n OutlineItemContextProps | undefined\n>(undefined)\n\nconst DEFAULT_INDENT = 16\n\nexport const OUTLINE_ITEM_TEST_ID = 'bezier-outline-item'\n\nexport const OutlineItem = forwardRef<\n HTMLDivElement & HTMLAnchorElement,\n OutlineItemProps\n>(function OutlineItem(\n {\n children,\n style,\n className,\n as,\n open = false,\n disableChevron = false,\n active = false,\n focused = false,\n leftContent,\n content,\n rightContent,\n href,\n ...rest\n },\n forwardedRef\n) {\n const context = useOutlineItemContext()\n const isRoot = isNil(context)\n const indent = isRoot ? 0 : context.indent + DEFAULT_INDENT\n\n const isLink = !isEmpty(href)\n const Comp = isLink ? 'a' : ((as ?? 'div') as 'div')\n\n return (\n <>\n <Comp\n {...(isLink && {\n href,\n target: '_blank',\n rel: 'noopener noreferrer',\n })}\n style={\n {\n ...style,\n '--b-outline-item-indent': `${indent}px`,\n } as React.CSSProperties\n }\n className={classNames(\n styles.OutlineItem,\n active && styles.active,\n focused && styles.focused,\n className\n )}\n ref={forwardedRef}\n data-testid={OUTLINE_ITEM_TEST_ID}\n {...rest}\n >\n {!disableChevron && (\n <div className={styles.Chevron}>\n {!isNil(children) && (\n <Icon\n className={styles.Icon}\n source={open ? ChevronSmallDownIcon : ChevronSmallRightIcon}\n size=\"s\"\n color=\"txt-black-dark\"\n />\n )}\n </div>\n )}\n\n {leftContent && (\n <div className={styles.LeftContent}>\n {isBezierIcon(leftContent) ? (\n <Icon\n className={styles.Icon}\n size=\"s\"\n source={leftContent}\n color=\"txt-black-dark\"\n />\n ) : (\n leftContent\n )}\n </div>\n )}\n\n <Text\n className={styles.Content}\n typo=\"14\"\n truncated\n >\n {content}\n </Text>\n\n {rightContent}\n </Comp>\n\n <OutlineItemContextProvider value={useMemo(() => ({ indent }), [indent])}>\n {open && children}\n </OutlineItemContextProvider>\n </>\n )\n})\n"],"names":["OutlineItemContextProvider","useOutlineItemContext","createContext","undefined","DEFAULT_INDENT","OUTLINE_ITEM_TEST_ID","OutlineItem","forwardRef","children","style","className","as","open","disableChevron","active","focused","leftContent","content","rightContent","href","rest","forwardedRef","context","isRoot","isNil","indent","isLink","isEmpty","Comp","React","createElement","Fragment","Object","assign","target","rel","classNames","styles","ref","Chevron","Icon","source","ChevronSmallDownIcon","ChevronSmallRightIcon","size","color","LeftContent","isBezierIcon","Text","Content","typo","truncated","value","useMemo"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Overlay.js","sources":["../../../../src/components/Overlay/Overlay.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useReducer,\n useRef,\n useState,\n} from 'react'\nimport ReactDOM from 'react-dom'\n\nimport classNames from 'classnames'\n\nimport useEventHandler from '~/src/hooks/useEventHandler'\nimport { useIsomorphicLayoutEffect } from '~/src/hooks/useIsomorphicLayoutEffect'\nimport useMergeRefs from '~/src/hooks/useMergeRefs'\n\nimport { useModalContainerContext } from '~/src/components/Modal'\nimport { ThemeProvider, useThemeName } from '~/src/components/ThemeProvider'\nimport { useWindow } from '~/src/components/WindowProvider'\n\nimport type {\n ContainerRectAttr,\n OverlayProps,\n TargetRectAttr,\n} from './Overlay.types'\nimport { getOverlayStyle } from './utils'\n\nimport styles from './Overlay.module.scss'\n\nexport const CONTAINER_TEST_ID = 'bezier-container'\nexport const OVERLAY_TEST_ID = 'bezier-overlay'\nexport const ESCAPE_KEY = 'Escape'\n\nexport const Overlay = forwardRef<HTMLDivElement, OverlayProps>(\n function Overlay(\n {\n children,\n style,\n className,\n show = false,\n container: givenContainer,\n target,\n position = 'left-center',\n marginX = 0,\n marginY = 0,\n keepInContainer = false,\n withTransition = false,\n enableClickOutside = false,\n containerStyle,\n containerClassName,\n onHide,\n onTransitionEnd,\n ...rest\n },\n forwardedRef\n ) {\n const { window, document, rootElement } = useWindow()\n\n const [shouldRender, setShouldRender] = useState(false)\n const [shouldShow, setShouldShow] = useState(false)\n\n const containerRect = useRef<ContainerRectAttr | null>(null)\n const targetRect = useRef<TargetRectAttr | null>(null)\n\n const [, forceUpdate] = useReducer((x) => !x, true)\n\n const containerRef = useRef<HTMLDivElement>(null)\n const overlayRef = useRef<HTMLDivElement>(null)\n const mergedRef = useMergeRefs<HTMLDivElement>(overlayRef, forwardedRef)\n\n const modalContainer = useModalContainerContext()\n const hasContainer = Boolean(givenContainer || modalContainer)\n const container = givenContainer ?? modalContainer ?? rootElement\n\n const handleOverlayForceUpdate = useCallback(() => {\n forceUpdate()\n }, [])\n\n const handleContainerRect = useCallback(() => {\n const {\n width: containerWidth,\n height: containerHeight,\n top: containerTop,\n left: containerLeft,\n } = container.getBoundingClientRect()\n\n containerRect.current = {\n containerWidth,\n containerHeight,\n containerTop,\n containerLeft,\n scrollTop: hasContainer ? container.scrollTop : 0,\n scrollLeft: hasContainer ? container.scrollLeft : 0,\n }\n }, [container, hasContainer])\n\n useIsomorphicLayoutEffect(\n function initContainerRect() {\n if (show) {\n handleContainerRect()\n }\n },\n [show, handleContainerRect]\n )\n\n const handleTargetRect = useCallback(() => {\n if (!target) {\n return\n }\n const {\n width: targetWidth,\n height: targetHeight,\n top: targetTop,\n left: targetLeft,\n } = target.getBoundingClientRect()\n const { clientTop, clientLeft } = target\n\n targetRect.current = {\n targetWidth,\n targetHeight,\n targetTop,\n targetLeft,\n clientTop,\n clientLeft,\n }\n }, [target])\n\n useIsomorphicLayoutEffect(\n function initTargetRect() {\n if (show) {\n handleTargetRect()\n }\n },\n [show, handleTargetRect]\n )\n\n const handleTransitionEnd = useCallback<\n React.TransitionEventHandler<HTMLDivElement>\n >(\n (event) => {\n onTransitionEnd?.(event)\n if (!show) {\n setShouldRender(false)\n }\n },\n [show, onTransitionEnd]\n )\n\n const handleBlockMouseWheel = useCallback(\n (event: HTMLElementEventMap['wheel']) => {\n event.stopPropagation()\n },\n []\n )\n\n const handleHideOverlay = useCallback(\n (event: MouseEvent) => {\n /**\n * NOTE: Type checking with instanceof makes it difficult to handle cases where the window object is different.\n */\n if (\n !event.target ||\n !(event.target as HTMLElement).closest(`.${styles.Overlay}`)\n ) {\n onHide?.()\n\n if (!enableClickOutside) {\n event.stopPropagation()\n }\n }\n },\n [enableClickOutside, onHide]\n )\n\n const handleKeydown = useCallback(\n (event: HTMLElementEventMap['keyup']) => {\n if (event.key === ESCAPE_KEY) {\n onHide?.()\n }\n },\n [onHide]\n )\n\n useEventHandler(document, 'click', handleHideOverlay, show, true)\n useEventHandler(document, 'keydown', handleKeydown, show)\n useEventHandler(containerRef.current, 'wheel', handleBlockMouseWheel, show)\n\n useEffect(() => {\n handleOverlayForceUpdate()\n }, [children, handleOverlayForceUpdate])\n\n /**\n * Case 1: show === true\n * show -> shouldRender -> shouldShow\n * shouldRender 를 true 로 설정하고, 직후에 shouldShow 를 true 로 설정하여 transition 유발\n *\n * Case 2: show === false\n * show -> shouldShow -> (...) -> shouldRender\n * shouldShow 를 false 로 설정하고, shouldRender 는 transition 필요 여부에 따라 다르게 결정함\n * Case 2-1: withTransition === true\n * shouldShow -> onTransitionEnd -> shouldRender\n * onTransitionEnd handler 를 이용해 transition 이 끝난 다음 shouldRender 를 false 로 설정\n * Case 2-2: withTransition === false\n * shouldShow && shouldRender\n * transition 을 기다릴 필요가 없으므로 바로 shouldRender 를 false 로 설정\n */\n useEffect(() => {\n if (show) {\n if (shouldRender) {\n window.requestAnimationFrame(() => setShouldShow(true))\n } else {\n window.requestAnimationFrame(() => setShouldRender(true))\n }\n }\n\n if (!show) {\n window.requestAnimationFrame(() => setShouldShow(false))\n\n if (!withTransition) {\n window.requestAnimationFrame(() => setShouldRender(false))\n }\n }\n }, [show, withTransition, shouldRender, shouldShow, window])\n\n const themeName = useThemeName()\n\n if (!shouldRender) {\n return null\n }\n\n const Content = (\n <ThemeProvider themeName={themeName}>\n <div\n className={classNames(\n styles.Overlay,\n !shouldShow && styles.hidden,\n withTransition && styles.transition,\n className\n )}\n style={{\n ...style,\n ...getOverlayStyle({\n containerRect: containerRect.current,\n targetRect: targetRect.current,\n overlay: overlayRef.current,\n position,\n marginX,\n marginY,\n keepInContainer,\n show: shouldShow,\n }),\n }}\n ref={mergedRef}\n data-testid={OVERLAY_TEST_ID}\n onTransitionEnd={handleTransitionEnd}\n {...rest}\n >\n {children}\n </div>\n </ThemeProvider>\n )\n\n return ReactDOM.createPortal(\n hasContainer ? (\n Content\n ) : (\n <div\n style={containerStyle}\n className={classNames(\n styles.OverlayContainer,\n !show && styles.hidden,\n containerClassName\n )}\n ref={containerRef}\n data-testid={CONTAINER_TEST_ID}\n >\n <div className={styles.OverlayWrapper}>{Content}</div>\n </div>\n ),\n container\n )\n }\n)\n"],"names":["CONTAINER_TEST_ID","OVERLAY_TEST_ID","ESCAPE_KEY","Overlay","forwardRef","children","style","className","show","container","givenContainer","target","position","marginX","marginY","keepInContainer","withTransition","enableClickOutside","containerStyle","containerClassName","onHide","onTransitionEnd","rest","forwardedRef","_ref","window","document","rootElement","useWindow","shouldRender","setShouldRender","useState","shouldShow","setShouldShow","containerRect","useRef","targetRect","forceUpdate","useReducer","x","containerRef","overlayRef","mergedRef","useMergeRefs","modalContainer","useModalContainerContext","hasContainer","Boolean","handleOverlayForceUpdate","useCallback","handleContainerRect","width","containerWidth","height","containerHeight","top","containerTop","left","containerLeft","getBoundingClientRect","current","scrollTop","scrollLeft","useIsomorphicLayoutEffect","initContainerRect","handleTargetRect","targetWidth","targetHeight","targetTop","targetLeft","clientTop","clientLeft","initTargetRect","handleTransitionEnd","event","handleBlockMouseWheel","stopPropagation","handleHideOverlay","closest","styles","handleKeydown","key","useEventHandler","useEffect","requestAnimationFrame","themeName","useThemeName","Content","React","createElement","ThemeProvider","Object","assign","classNames","hidden","transition","getOverlayStyle","overlay","ref","ReactDOM","createPortal","OverlayContainer","OverlayWrapper"],"mappings":"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"}
1
+ {"version":3,"file":"Overlay.js","sources":["../../../../src/components/Overlay/Overlay.tsx"],"sourcesContent":["'use client'\n\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useReducer,\n useRef,\n useState,\n} from 'react'\nimport ReactDOM from 'react-dom'\n\nimport classNames from 'classnames'\n\nimport useEventHandler from '~/src/hooks/useEventHandler'\nimport { useIsomorphicLayoutEffect } from '~/src/hooks/useIsomorphicLayoutEffect'\nimport useMergeRefs from '~/src/hooks/useMergeRefs'\n\nimport { useModalContainerContext } from '~/src/components/Modal'\nimport { ThemeProvider, useThemeName } from '~/src/components/ThemeProvider'\nimport { useWindow } from '~/src/components/WindowProvider'\n\nimport type {\n ContainerRectAttr,\n OverlayProps,\n TargetRectAttr,\n} from './Overlay.types'\nimport { getOverlayStyle } from './utils'\n\nimport styles from './Overlay.module.scss'\n\nexport const CONTAINER_TEST_ID = 'bezier-container'\nexport const OVERLAY_TEST_ID = 'bezier-overlay'\nexport const ESCAPE_KEY = 'Escape'\n\nexport const Overlay = forwardRef<HTMLDivElement, OverlayProps>(\n function Overlay(\n {\n children,\n style,\n className,\n show = false,\n container: givenContainer,\n target,\n position = 'left-center',\n marginX = 0,\n marginY = 0,\n keepInContainer = false,\n withTransition = false,\n enableClickOutside = false,\n containerStyle,\n containerClassName,\n onHide,\n onTransitionEnd,\n ...rest\n },\n forwardedRef\n ) {\n const { window, document, rootElement } = useWindow()\n\n const [shouldRender, setShouldRender] = useState(false)\n const [shouldShow, setShouldShow] = useState(false)\n\n const containerRect = useRef<ContainerRectAttr | null>(null)\n const targetRect = useRef<TargetRectAttr | null>(null)\n\n const [, forceUpdate] = useReducer((x) => !x, true)\n\n const containerRef = useRef<HTMLDivElement>(null)\n const overlayRef = useRef<HTMLDivElement>(null)\n const mergedRef = useMergeRefs<HTMLDivElement>(overlayRef, forwardedRef)\n\n const modalContainer = useModalContainerContext()\n const hasContainer = Boolean(givenContainer || modalContainer)\n const container = givenContainer ?? modalContainer ?? rootElement\n\n const handleOverlayForceUpdate = useCallback(() => {\n forceUpdate()\n }, [])\n\n const handleContainerRect = useCallback(() => {\n const {\n width: containerWidth,\n height: containerHeight,\n top: containerTop,\n left: containerLeft,\n } = container.getBoundingClientRect()\n\n containerRect.current = {\n containerWidth,\n containerHeight,\n containerTop,\n containerLeft,\n scrollTop: hasContainer ? container.scrollTop : 0,\n scrollLeft: hasContainer ? container.scrollLeft : 0,\n }\n }, [container, hasContainer])\n\n useIsomorphicLayoutEffect(\n function initContainerRect() {\n if (show) {\n handleContainerRect()\n }\n },\n [show, handleContainerRect]\n )\n\n const handleTargetRect = useCallback(() => {\n if (!target) {\n return\n }\n const {\n width: targetWidth,\n height: targetHeight,\n top: targetTop,\n left: targetLeft,\n } = target.getBoundingClientRect()\n const { clientTop, clientLeft } = target\n\n targetRect.current = {\n targetWidth,\n targetHeight,\n targetTop,\n targetLeft,\n clientTop,\n clientLeft,\n }\n }, [target])\n\n useIsomorphicLayoutEffect(\n function initTargetRect() {\n if (show) {\n handleTargetRect()\n }\n },\n [show, handleTargetRect]\n )\n\n const handleTransitionEnd = useCallback<\n React.TransitionEventHandler<HTMLDivElement>\n >(\n (event) => {\n onTransitionEnd?.(event)\n if (!show) {\n setShouldRender(false)\n }\n },\n [show, onTransitionEnd]\n )\n\n const handleBlockMouseWheel = useCallback(\n (event: HTMLElementEventMap['wheel']) => {\n event.stopPropagation()\n },\n []\n )\n\n const handleHideOverlay = useCallback(\n (event: MouseEvent) => {\n /**\n * NOTE: Type checking with instanceof makes it difficult to handle cases where the window object is different.\n */\n if (\n !event.target ||\n !(event.target as HTMLElement).closest(`.${styles.Overlay}`)\n ) {\n onHide?.()\n\n if (!enableClickOutside) {\n event.stopPropagation()\n }\n }\n },\n [enableClickOutside, onHide]\n )\n\n const handleKeydown = useCallback(\n (event: HTMLElementEventMap['keyup']) => {\n if (event.key === ESCAPE_KEY) {\n onHide?.()\n }\n },\n [onHide]\n )\n\n useEventHandler(document, 'click', handleHideOverlay, show, true)\n useEventHandler(document, 'keydown', handleKeydown, show)\n useEventHandler(containerRef.current, 'wheel', handleBlockMouseWheel, show)\n\n useEffect(() => {\n handleOverlayForceUpdate()\n }, [children, handleOverlayForceUpdate])\n\n /**\n * Case 1: show === true\n * show -> shouldRender -> shouldShow\n * shouldRender 를 true 로 설정하고, 직후에 shouldShow 를 true 로 설정하여 transition 유발\n *\n * Case 2: show === false\n * show -> shouldShow -> (...) -> shouldRender\n * shouldShow 를 false 로 설정하고, shouldRender 는 transition 필요 여부에 따라 다르게 결정함\n * Case 2-1: withTransition === true\n * shouldShow -> onTransitionEnd -> shouldRender\n * onTransitionEnd handler 를 이용해 transition 이 끝난 다음 shouldRender 를 false 로 설정\n * Case 2-2: withTransition === false\n * shouldShow && shouldRender\n * transition 을 기다릴 필요가 없으므로 바로 shouldRender 를 false 로 설정\n */\n useEffect(() => {\n if (show) {\n if (shouldRender) {\n window.requestAnimationFrame(() => setShouldShow(true))\n } else {\n window.requestAnimationFrame(() => setShouldRender(true))\n }\n }\n\n if (!show) {\n window.requestAnimationFrame(() => setShouldShow(false))\n\n if (!withTransition) {\n window.requestAnimationFrame(() => setShouldRender(false))\n }\n }\n }, [show, withTransition, shouldRender, shouldShow, window])\n\n const themeName = useThemeName()\n\n if (!shouldRender) {\n return null\n }\n\n const Content = (\n <ThemeProvider themeName={themeName}>\n <div\n className={classNames(\n styles.Overlay,\n !shouldShow && styles.hidden,\n withTransition && styles.transition,\n className\n )}\n style={{\n ...style,\n ...getOverlayStyle({\n containerRect: containerRect.current,\n targetRect: targetRect.current,\n overlay: overlayRef.current,\n position,\n marginX,\n marginY,\n keepInContainer,\n show: shouldShow,\n }),\n }}\n ref={mergedRef}\n data-testid={OVERLAY_TEST_ID}\n onTransitionEnd={handleTransitionEnd}\n {...rest}\n >\n {children}\n </div>\n </ThemeProvider>\n )\n\n return ReactDOM.createPortal(\n hasContainer ? (\n Content\n ) : (\n <div\n style={containerStyle}\n className={classNames(\n styles.OverlayContainer,\n !show && styles.hidden,\n containerClassName\n )}\n ref={containerRef}\n data-testid={CONTAINER_TEST_ID}\n >\n <div className={styles.OverlayWrapper}>{Content}</div>\n </div>\n ),\n container\n )\n }\n)\n"],"names":["CONTAINER_TEST_ID","OVERLAY_TEST_ID","ESCAPE_KEY","Overlay","forwardRef","children","style","className","show","container","givenContainer","target","position","marginX","marginY","keepInContainer","withTransition","enableClickOutside","containerStyle","containerClassName","onHide","onTransitionEnd","rest","forwardedRef","_ref","window","document","rootElement","useWindow","shouldRender","setShouldRender","useState","shouldShow","setShouldShow","containerRect","useRef","targetRect","forceUpdate","useReducer","x","containerRef","overlayRef","mergedRef","useMergeRefs","modalContainer","useModalContainerContext","hasContainer","Boolean","handleOverlayForceUpdate","useCallback","handleContainerRect","width","containerWidth","height","containerHeight","top","containerTop","left","containerLeft","getBoundingClientRect","current","scrollTop","scrollLeft","useIsomorphicLayoutEffect","initContainerRect","handleTargetRect","targetWidth","targetHeight","targetTop","targetLeft","clientTop","clientLeft","initTargetRect","handleTransitionEnd","event","handleBlockMouseWheel","stopPropagation","handleHideOverlay","closest","styles","handleKeydown","key","useEventHandler","useEffect","requestAnimationFrame","themeName","useThemeName","Content","React","createElement","ThemeProvider","Object","assign","classNames","hidden","transition","getOverlayStyle","overlay","ref","ReactDOM","createPortal","OverlayContainer","OverlayWrapper"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.js","sources":["../../../../src/components/ProgressBar/ProgressBar.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\nimport classNames from 'classnames'\n\nimport { clamp } from '~/src/utils/number'\nimport { cssDimension } from '~/src/utils/style'\n\nimport { useThemeName } from '~/src/components/ThemeProvider'\n\nimport type { ProgressBarProps } from './ProgressBar.types'\n\nimport styles from './ProgressBar.module.scss'\n\nexport const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(\n function ProgressBar(\n {\n style,\n className,\n size = 'm',\n variant = 'green',\n width = 36,\n value = 0,\n ...rest\n },\n forwardedRef\n ) {\n const clampedValue = clamp(value, 0, 1)\n\n return (\n <div\n style={\n {\n '--b-progress-bar-width': cssDimension(width),\n '--b-progress-bar-value': clampedValue,\n ...style,\n } as React.CSSProperties\n }\n className={classNames(\n styles.ProgressBar,\n styles[`size-${size}`],\n styles[`variant-${variant}`],\n className\n )}\n ref={forwardedRef}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={1}\n aria-valuenow={clampedValue}\n data-testid=\"bezier-progress-bar\"\n {...rest}\n >\n <div\n className={classNames(\n styles.ProgressBarActive,\n useThemeName() === 'dark' && styles['dark-theme']\n )}\n />\n </div>\n )\n }\n)\n"],"names":["ProgressBar","forwardRef","style","className","size","variant","width","value","rest","forwardedRef","clampedValue","clamp","React","createElement","Object","assign","cssDimension","classNames","styles","ref","role","ProgressBarActive","useThemeName"],"mappings":";;;;;;;;;MAaaA,WAAW,gBAAGC,gBAAU,CACnC,SAASD,WAAWA,CAClB;SACEE,OAAK;EACLC,SAAS;AACTC,EAAAA,IAAI,GAAG,GAAG;AACVC,EAAAA,OAAO,GAAG,OAAO;AACjBC,EAAAA,KAAK,GAAG,EAAE;AACVC,EAAAA,KAAK,GAAG,CAAC;EACT,GAAGC,IAAAA;AACL,CAAC,EACDC,YAAY,EACZ;EACA,MAAMC,YAAY,GAAGC,YAAK,CAACJ,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAEvC,EAAA,oBACEK,KAAA,CAAAC,aAAA,CAAAC,KAAAA,EAAAA,MAAA,CAAAC,MAAA,CAAA;AACEb,IAAAA,KAAK,EACH;AACE,MAAA,wBAAwB,EAAEc,kBAAY,CAACV,KAAK,CAAC;AAC7C,MAAA,wBAAwB,EAAEI,YAAY;MACtC,GAAGR,OAAAA;KAEN;IACDC,SAAS,EAAEc,aAAU,CACnBC,0BAAM,CAAClB,WAAW,EAClBkB,0BAAM,CAAC,CAAQd,KAAAA,EAAAA,IAAI,EAAE,CAAC,EACtBc,0BAAM,CAAC,CAAA,QAAA,EAAWb,OAAO,CAAE,CAAA,CAAC,EAC5BF,SACF,CAAE;AACFgB,IAAAA,GAAG,EAAEV,YAAa;AAClBW,IAAAA,IAAI,EAAC,aAAa;AAClB,IAAA,eAAA,EAAe,CAAE;AACjB,IAAA,eAAA,EAAe,CAAE;AACjB,IAAA,eAAA,EAAeV,YAAa;IAC5B,aAAY,EAAA,qBAAA;AAAqB,GAAA,EAC7BF,IAAI,CAAA,eAERI,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEV,IAAAA,SAAS,EAAEc,aAAU,CACnBC,0BAAM,CAACG,iBAAiB,EACxBC,0BAAY,EAAE,KAAK,MAAM,IAAIJ,0BAAM,CAAC,YAAY,CAClD,CAAA;AAAE,GACH,CACE,CAAC,CAAA;AAEV,CACF;;;;"}
1
+ {"version":3,"file":"ProgressBar.js","sources":["../../../../src/components/ProgressBar/ProgressBar.tsx"],"sourcesContent":["'use client'\n\nimport React, { forwardRef } from 'react'\n\nimport classNames from 'classnames'\n\nimport { clamp } from '~/src/utils/number'\nimport { cssDimension } from '~/src/utils/style'\n\nimport { useThemeName } from '~/src/components/ThemeProvider'\n\nimport type { ProgressBarProps } from './ProgressBar.types'\n\nimport styles from './ProgressBar.module.scss'\n\nexport const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(\n function ProgressBar(\n {\n style,\n className,\n size = 'm',\n variant = 'green',\n width = 36,\n value = 0,\n ...rest\n },\n forwardedRef\n ) {\n const clampedValue = clamp(value, 0, 1)\n\n return (\n <div\n style={\n {\n '--b-progress-bar-width': cssDimension(width),\n '--b-progress-bar-value': clampedValue,\n ...style,\n } as React.CSSProperties\n }\n className={classNames(\n styles.ProgressBar,\n styles[`size-${size}`],\n styles[`variant-${variant}`],\n className\n )}\n ref={forwardedRef}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={1}\n aria-valuenow={clampedValue}\n data-testid=\"bezier-progress-bar\"\n {...rest}\n >\n <div\n className={classNames(\n styles.ProgressBarActive,\n useThemeName() === 'dark' && styles['dark-theme']\n )}\n />\n </div>\n )\n }\n)\n"],"names":["ProgressBar","forwardRef","style","className","size","variant","width","value","rest","forwardedRef","clampedValue","clamp","React","createElement","Object","assign","cssDimension","classNames","styles","ref","role","ProgressBarActive","useThemeName"],"mappings":";;;;;;;;;MAeaA,WAAW,gBAAGC,gBAAU,CACnC,SAASD,WAAWA,CAClB;SACEE,OAAK;EACLC,SAAS;AACTC,EAAAA,IAAI,GAAG,GAAG;AACVC,EAAAA,OAAO,GAAG,OAAO;AACjBC,EAAAA,KAAK,GAAG,EAAE;AACVC,EAAAA,KAAK,GAAG,CAAC;EACT,GAAGC,IAAAA;AACL,CAAC,EACDC,YAAY,EACZ;EACA,MAAMC,YAAY,GAAGC,YAAK,CAACJ,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAEvC,EAAA,oBACEK,KAAA,CAAAC,aAAA,CAAAC,KAAAA,EAAAA,MAAA,CAAAC,MAAA,CAAA;AACEb,IAAAA,KAAK,EACH;AACE,MAAA,wBAAwB,EAAEc,kBAAY,CAACV,KAAK,CAAC;AAC7C,MAAA,wBAAwB,EAAEI,YAAY;MACtC,GAAGR,OAAAA;KAEN;IACDC,SAAS,EAAEc,aAAU,CACnBC,0BAAM,CAAClB,WAAW,EAClBkB,0BAAM,CAAC,CAAQd,KAAAA,EAAAA,IAAI,EAAE,CAAC,EACtBc,0BAAM,CAAC,CAAA,QAAA,EAAWb,OAAO,CAAE,CAAA,CAAC,EAC5BF,SACF,CAAE;AACFgB,IAAAA,GAAG,EAAEV,YAAa;AAClBW,IAAAA,IAAI,EAAC,aAAa;AAClB,IAAA,eAAA,EAAe,CAAE;AACjB,IAAA,eAAA,EAAe,CAAE;AACjB,IAAA,eAAA,EAAeV,YAAa;IAC5B,aAAY,EAAA,qBAAA;AAAqB,GAAA,EAC7BF,IAAI,CAAA,eAERI,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEV,IAAAA,SAAS,EAAEc,aAAU,CACnBC,0BAAM,CAACG,iBAAiB,EACxBC,0BAAY,EAAE,KAAK,MAAM,IAAIJ,0BAAM,CAAC,YAAY,CAClD,CAAA;AAAE,GACH,CACE,CAAC,CAAA;AAEV,CACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"RadioGroup.js","sources":["../../../../src/components/RadioGroup/RadioGroup.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\nimport classNames from 'classnames'\n\nimport useId from '~/src/hooks/useId'\nimport { getFormFieldSizeClassName } from '~/src/types/props-helpers'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { useFormFieldProps } from '~/src/components/FormControl'\nimport { Stack } from '~/src/components/Stack'\nimport { Text } from '~/src/components/Text'\n\nimport { type RadioGroupProps, type RadioProps } from './RadioGroup.types'\n\nimport styles from './RadioGroup.module.scss'\n\nfunction RadioGroupImpl<Value extends string>(\n {\n children,\n spacing = 0,\n direction = 'vertical',\n ...rest\n }: RadioGroupProps<Value>,\n forwardedRef: React.Ref<HTMLDivElement>\n) {\n const { hasError, ...formFieldProps } = useFormFieldProps(rest)\n\n return (\n <RadioGroupPrimitive.Root\n asChild\n {...formFieldProps}\n >\n <Stack\n ref={forwardedRef}\n justify=\"start\"\n align=\"stretch\"\n spacing={spacing}\n direction={direction}\n >\n {children}\n </Stack>\n </RadioGroupPrimitive.Root>\n )\n}\n\n/**\n * `RadioGroup` is a set of checkable buttons, known as radio buttons.\n *\n * `RadioGroup` is a context of the `Radio` components. also, it renders an element which has the 'radiogroup' role.\n * It controls all the parts of a radio group.\n * @example\n *\n * ```tsx\n * // Anatomy of the RadioGroup\n * <RadioGroup>\n * <Radio />\n * </RadioGroup>\n * ```\n */\nexport const RadioGroup = forwardRef(RadioGroupImpl) as <Value extends string>(\n props: RadioGroupProps<Value> & { ref?: React.ForwardedRef<HTMLDivElement> }\n) => ReturnType<typeof RadioGroupImpl<Value>>\n\nfunction RadioImpl<Value extends string>(\n { children, className, id: idProp, ...rest }: RadioProps<Value>,\n forwardedRef: React.Ref<HTMLButtonElement>\n) {\n const id = useId(idProp, 'bezier-radio')\n\n return (\n <RadioGroupPrimitive.Item\n asChild\n className={classNames(\n styles.RadioGroupItem,\n getFormFieldSizeClassName('m'),\n className\n )}\n ref={forwardedRef}\n id={id}\n {...rest}\n >\n <BaseButton>\n {children && (\n <Text\n className={styles.Label}\n as=\"label\"\n /* FIXME(@ed): Delete after applying polymorphic props */\n /* @ts-ignore */\n htmlFor={id}\n typo=\"14\"\n color=\"txt-black-darkest\"\n >\n {children}\n </Text>\n )}\n </BaseButton>\n </RadioGroupPrimitive.Item>\n )\n}\n\n/**\n * `Radio` is a checkable button, known as a radio button.\n * It should be a child of `RadioGroup`.\n */\nexport const Radio = forwardRef(RadioImpl) as <Value extends string>(\n props: RadioProps<Value> & { ref?: React.ForwardedRef<HTMLButtonElement> }\n) => ReturnType<typeof RadioImpl<Value>>\n"],"names":["RadioGroupImpl","children","spacing","direction","rest","forwardedRef","hasError","formFieldProps","useFormFieldProps","React","createElement","RadioGroupPrimitive","Object","assign","asChild","Stack","ref","justify","align","RadioGroup","forwardRef","RadioImpl","className","id","idProp","useId","classNames","styles","RadioGroupItem","getFormFieldSizeClassName","BaseButton","Text","Label","as","htmlFor","typo","color","Radio"],"mappings":";;;;;;;;;;;;;AAiBA,SAASA,cAAcA,CACrB;EACEC,QAAQ;AACRC,EAAAA,OAAO,GAAG,CAAC;AACXC,EAAAA,SAAS,GAAG,UAAU;EACtB,GAAGC,IAAAA;AACmB,CAAC,EACzBC,YAAuC,EACvC;EACA,MAAM;IAAEC,QAAQ;IAAE,GAAGC,cAAAA;AAAe,GAAC,GAAGC,6BAAiB,CAACJ,IAAI,CAAC,CAAA;EAE/D,oBACEK,KAAA,CAAAC,aAAA,CAACC,UAAwB,EAAAC,MAAA,CAAAC,MAAA,CAAA;IACvBC,OAAO,EAAA,IAAA;AAAA,GAAA,EACHP,cAAc,CAElBE,eAAAA,KAAA,CAAAC,aAAA,CAACK,WAAK,EAAA;AACJC,IAAAA,GAAG,EAAEX,YAAa;AAClBY,IAAAA,OAAO,EAAC,OAAO;AACfC,IAAAA,KAAK,EAAC,SAAS;AACfhB,IAAAA,OAAO,EAAEA,OAAQ;AACjBC,IAAAA,SAAS,EAAEA,SAAAA;GAEVF,EAAAA,QACI,CACiB,CAAC,CAAA;AAE/B,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACakB,UAAU,gBAAGC,gBAAU,CAACpB,cAAc,EAEN;AAE7C,SAASqB,SAASA,CAChB;EAAEpB,QAAQ;EAAEqB,SAAS;AAAEC,EAAAA,EAAE,EAAEC,MAAM;EAAE,GAAGpB,IAAAA;AAAwB,CAAC,EAC/DC,YAA0C,EAC1C;AACA,EAAA,MAAMkB,EAAE,GAAGE,aAAK,CAACD,MAAM,EAAE,cAAc,CAAC,CAAA;EAExC,oBACEf,KAAA,CAAAC,aAAA,CAACC,UAAwB,EAAAC,MAAA,CAAAC,MAAA,CAAA;IACvBC,OAAO,EAAA,IAAA;AACPQ,IAAAA,SAAS,EAAEI,eAAU,CACnBC,yBAAM,CAACC,cAAc,EACrBC,sCAAyB,CAAC,GAAG,CAAC,EAC9BP,SACF,CAAE;AACFN,IAAAA,GAAG,EAAEX,YAAa;AAClBkB,IAAAA,EAAE,EAAEA,EAAAA;AAAG,GAAA,EACHnB,IAAI,CAAA,eAERK,KAAA,CAAAC,aAAA,CAACoB,qBAAU,EACR7B,IAAAA,EAAAA,QAAQ,iBACPQ,KAAA,CAAAC,aAAA,CAACqB,SAAI,EAAA;IACHT,SAAS,EAAEK,yBAAM,CAACK,KAAM;AACxBC,IAAAA,EAAE,EAAC,OAAA;AACH;AACA;AACAC,IAAAA,OAAO,EAAEX,EAAG;AACZY,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,KAAK,EAAC,mBAAA;GAELnC,EAAAA,QACG,CAEE,CACY,CAAC,CAAA;AAE/B,CAAA;;AAEA;AACA;AACA;AACA;MACaoC,KAAK,gBAAGjB,gBAAU,CAACC,SAAS;;;;;"}
1
+ {"version":3,"file":"RadioGroup.js","sources":["../../../../src/components/RadioGroup/RadioGroup.tsx"],"sourcesContent":["'use client'\n\nimport React, { forwardRef } from 'react'\n\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\nimport classNames from 'classnames'\n\nimport useId from '~/src/hooks/useId'\nimport { getFormFieldSizeClassName } from '~/src/types/props-helpers'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { useFormFieldProps } from '~/src/components/FormControl'\nimport { Stack } from '~/src/components/Stack'\nimport { Text } from '~/src/components/Text'\n\nimport { type RadioGroupProps, type RadioProps } from './RadioGroup.types'\n\nimport styles from './RadioGroup.module.scss'\n\nfunction RadioGroupImpl<Value extends string>(\n {\n children,\n spacing = 0,\n direction = 'vertical',\n ...rest\n }: RadioGroupProps<Value>,\n forwardedRef: React.Ref<HTMLDivElement>\n) {\n const { hasError, ...formFieldProps } = useFormFieldProps(rest)\n\n return (\n <RadioGroupPrimitive.Root\n asChild\n {...formFieldProps}\n >\n <Stack\n ref={forwardedRef}\n justify=\"start\"\n align=\"stretch\"\n spacing={spacing}\n direction={direction}\n >\n {children}\n </Stack>\n </RadioGroupPrimitive.Root>\n )\n}\n\n/**\n * `RadioGroup` is a set of checkable buttons, known as radio buttons.\n *\n * `RadioGroup` is a context of the `Radio` components. also, it renders an element which has the 'radiogroup' role.\n * It controls all the parts of a radio group.\n * @example\n *\n * ```tsx\n * // Anatomy of the RadioGroup\n * <RadioGroup>\n * <Radio />\n * </RadioGroup>\n * ```\n */\nexport const RadioGroup = forwardRef(RadioGroupImpl) as <Value extends string>(\n props: RadioGroupProps<Value> & { ref?: React.ForwardedRef<HTMLDivElement> }\n) => ReturnType<typeof RadioGroupImpl<Value>>\n\nfunction RadioImpl<Value extends string>(\n { children, className, id: idProp, ...rest }: RadioProps<Value>,\n forwardedRef: React.Ref<HTMLButtonElement>\n) {\n const id = useId(idProp, 'bezier-radio')\n\n return (\n <RadioGroupPrimitive.Item\n asChild\n className={classNames(\n styles.RadioGroupItem,\n getFormFieldSizeClassName('m'),\n className\n )}\n ref={forwardedRef}\n id={id}\n {...rest}\n >\n <BaseButton>\n {children && (\n <Text\n className={styles.Label}\n as=\"label\"\n /* FIXME(@ed): Delete after applying polymorphic props */\n /* @ts-ignore */\n htmlFor={id}\n typo=\"14\"\n color=\"txt-black-darkest\"\n >\n {children}\n </Text>\n )}\n </BaseButton>\n </RadioGroupPrimitive.Item>\n )\n}\n\n/**\n * `Radio` is a checkable button, known as a radio button.\n * It should be a child of `RadioGroup`.\n */\nexport const Radio = forwardRef(RadioImpl) as <Value extends string>(\n props: RadioProps<Value> & { ref?: React.ForwardedRef<HTMLButtonElement> }\n) => ReturnType<typeof RadioImpl<Value>>\n"],"names":["RadioGroupImpl","children","spacing","direction","rest","forwardedRef","hasError","formFieldProps","useFormFieldProps","React","createElement","RadioGroupPrimitive","Object","assign","asChild","Stack","ref","justify","align","RadioGroup","forwardRef","RadioImpl","className","id","idProp","useId","classNames","styles","RadioGroupItem","getFormFieldSizeClassName","BaseButton","Text","Label","as","htmlFor","typo","color","Radio"],"mappings":";;;;;;;;;;;;;AAmBA,SAASA,cAAcA,CACrB;EACEC,QAAQ;AACRC,EAAAA,OAAO,GAAG,CAAC;AACXC,EAAAA,SAAS,GAAG,UAAU;EACtB,GAAGC,IAAAA;AACmB,CAAC,EACzBC,YAAuC,EACvC;EACA,MAAM;IAAEC,QAAQ;IAAE,GAAGC,cAAAA;AAAe,GAAC,GAAGC,6BAAiB,CAACJ,IAAI,CAAC,CAAA;EAE/D,oBACEK,KAAA,CAAAC,aAAA,CAACC,UAAwB,EAAAC,MAAA,CAAAC,MAAA,CAAA;IACvBC,OAAO,EAAA,IAAA;AAAA,GAAA,EACHP,cAAc,CAElBE,eAAAA,KAAA,CAAAC,aAAA,CAACK,WAAK,EAAA;AACJC,IAAAA,GAAG,EAAEX,YAAa;AAClBY,IAAAA,OAAO,EAAC,OAAO;AACfC,IAAAA,KAAK,EAAC,SAAS;AACfhB,IAAAA,OAAO,EAAEA,OAAQ;AACjBC,IAAAA,SAAS,EAAEA,SAAAA;GAEVF,EAAAA,QACI,CACiB,CAAC,CAAA;AAE/B,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACakB,UAAU,gBAAGC,gBAAU,CAACpB,cAAc,EAEN;AAE7C,SAASqB,SAASA,CAChB;EAAEpB,QAAQ;EAAEqB,SAAS;AAAEC,EAAAA,EAAE,EAAEC,MAAM;EAAE,GAAGpB,IAAAA;AAAwB,CAAC,EAC/DC,YAA0C,EAC1C;AACA,EAAA,MAAMkB,EAAE,GAAGE,aAAK,CAACD,MAAM,EAAE,cAAc,CAAC,CAAA;EAExC,oBACEf,KAAA,CAAAC,aAAA,CAACC,UAAwB,EAAAC,MAAA,CAAAC,MAAA,CAAA;IACvBC,OAAO,EAAA,IAAA;AACPQ,IAAAA,SAAS,EAAEI,eAAU,CACnBC,yBAAM,CAACC,cAAc,EACrBC,sCAAyB,CAAC,GAAG,CAAC,EAC9BP,SACF,CAAE;AACFN,IAAAA,GAAG,EAAEX,YAAa;AAClBkB,IAAAA,EAAE,EAAEA,EAAAA;AAAG,GAAA,EACHnB,IAAI,CAAA,eAERK,KAAA,CAAAC,aAAA,CAACoB,qBAAU,EACR7B,IAAAA,EAAAA,QAAQ,iBACPQ,KAAA,CAAAC,aAAA,CAACqB,SAAI,EAAA;IACHT,SAAS,EAAEK,yBAAM,CAACK,KAAM;AACxBC,IAAAA,EAAE,EAAC,OAAA;AACH;AACA;AACAC,IAAAA,OAAO,EAAEX,EAAG;AACZY,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,KAAK,EAAC,mBAAA;GAELnC,EAAAA,QACG,CAEE,CACY,CAAC,CAAA;AAE/B,CAAA;;AAEA;AACA;AACA;AACA;MACaoC,KAAK,gBAAGjB,gBAAU,CAACC,SAAS;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SectionLabel.js","sources":["../../../../src/components/SectionLabel/SectionLabel.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\nimport { isBezierIcon } from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport { warn } from '~/src/utils/assert'\nimport {\n isArray,\n isEmpty,\n isNil,\n isNumber,\n isObject,\n isString,\n} from '~/src/utils/type'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { Button } from '~/src/components/Button'\nimport { Help } from '~/src/components/Help'\nimport { Icon } from '~/src/components/Icon'\nimport { LegacyIcon, isIconName } from '~/src/components/LegacyIcon'\nimport { Text } from '~/src/components/Text'\n\nimport {\n type IconWithAction,\n type SectionLabelLeftContent,\n type SectionLabelProps,\n type SectionLabelRightContent,\n} from './SectionLabel.types'\n\nimport styles from './SectionLabel.module.scss'\n\nfunction LeftContent({ children }: { children: SectionLabelLeftContent }) {\n const isLegacyIcon = isIconName(children)\n\n if (!isBezierIcon(children) && !isLegacyIcon) {\n return <>{children}</>\n }\n\n if (isLegacyIcon) {\n warn(\n 'Deprecation: IconName as a value for the icon property of SectionLabel has been deprecated. Use the Icon of bezier-icons instead.'\n )\n }\n\n const Comp = isLegacyIcon ? LegacyIcon : Icon\n\n return (\n // @ts-expect-error\n <Comp\n {...(isLegacyIcon\n ? {\n name: children,\n }\n : {\n source: children,\n })}\n size=\"s\"\n color=\"txt-black-dark\"\n />\n )\n}\n\nfunction isIconWithAction(args: unknown): args is IconWithAction {\n return isObject(args) && 'icon' in args\n}\n\nfunction RightContent({ children }: { children: SectionLabelRightContent }) {\n const isLegacyIcon = isIconName(children)\n const withAction = isIconWithAction(children)\n\n if (!isBezierIcon(children) && !isLegacyIcon && !withAction) {\n return <>{children}</>\n }\n\n if (isLegacyIcon) {\n warn(\n 'Deprecation: IconName as a value for the icon property of SectionLabel has been deprecated. Use the Icon of bezier-icons instead.'\n )\n }\n\n return (\n <Button\n {...(withAction\n ? {\n leftContent: children.icon,\n onClick: children.onClick,\n }\n : {\n as: 'div',\n leftContent: children,\n })}\n className={styles.RightItem}\n size=\"xs\"\n styleVariant=\"tertiary\"\n colorVariant=\"monochrome-light\"\n />\n )\n}\n\nexport const SectionLabel = forwardRef<HTMLElement, SectionLabelProps>(\n function SectionLabel(\n {\n children,\n className,\n open = true,\n help,\n leftContent,\n content,\n rightContent,\n onClick,\n ...props\n },\n forwardedRef\n ) {\n const Comp = !isNil(onClick) ? BaseButton : 'div'\n\n return (\n <>\n <Comp\n // @ts-expect-error\n ref={forwardedRef}\n className={classNames(styles.SectionLabel, className)}\n data-testid=\"bezier-section-label\"\n onClick={onClick}\n {...props}\n >\n {leftContent && (\n <div className={styles.LeftContent}>\n <LeftContent>{leftContent}</LeftContent>\n </div>\n )}\n\n <div className={styles.Content}>\n {isString(content) || isNumber(content) ? (\n <Text\n bold\n typo=\"13\"\n color=\"txt-black-dark\"\n truncated\n >\n {content}\n </Text>\n ) : (\n content\n )}\n </div>\n\n {help && (\n <div className={styles.Help}>\n <Help allowHover>{help}</Help>\n </div>\n )}\n\n {!isNil(rightContent) && !isEmpty(rightContent) && (\n <div className={styles.RightContent}>\n {isArray(rightContent) ? (\n rightContent.map((eachContent, index) => (\n // eslint-disable-next-line react/no-array-index-key\n <RightContent key={index}>{eachContent}</RightContent>\n ))\n ) : (\n <RightContent>{rightContent}</RightContent>\n )}\n </div>\n )}\n </Comp>\n\n {children && open && <div>{children}</div>}\n </>\n )\n }\n)\n"],"names":["LeftContent","children","isLegacyIcon","isIconName","isBezierIcon","React","createElement","Fragment","warn","Comp","LegacyIcon","Icon","Object","assign","name","source","size","color","isIconWithAction","args","isObject","RightContent","withAction","Button","leftContent","icon","onClick","as","className","styles","RightItem","styleVariant","colorVariant","SectionLabel","forwardRef","open","help","content","rightContent","props","forwardedRef","isNil","BaseButton","ref","classNames","Content","isString","isNumber","Text","bold","typo","truncated","Help","allowHover","isEmpty","isArray","map","eachContent","index","key"],"mappings":"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"}
1
+ {"version":3,"file":"SectionLabel.js","sources":["../../../../src/components/SectionLabel/SectionLabel.tsx"],"sourcesContent":["'use client'\n\nimport React, { forwardRef } from 'react'\n\nimport { isBezierIcon } from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport { warn } from '~/src/utils/assert'\nimport {\n isArray,\n isEmpty,\n isNil,\n isNumber,\n isObject,\n isString,\n} from '~/src/utils/type'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { Button } from '~/src/components/Button'\nimport { Help } from '~/src/components/Help'\nimport { Icon } from '~/src/components/Icon'\nimport { LegacyIcon, isIconName } from '~/src/components/LegacyIcon'\nimport { Text } from '~/src/components/Text'\n\nimport {\n type IconWithAction,\n type SectionLabelLeftContent,\n type SectionLabelProps,\n type SectionLabelRightContent,\n} from './SectionLabel.types'\n\nimport styles from './SectionLabel.module.scss'\n\nfunction LeftContent({ children }: { children: SectionLabelLeftContent }) {\n const isLegacyIcon = isIconName(children)\n\n if (!isBezierIcon(children) && !isLegacyIcon) {\n return <>{children}</>\n }\n\n if (isLegacyIcon) {\n warn(\n 'Deprecation: IconName as a value for the icon property of SectionLabel has been deprecated. Use the Icon of bezier-icons instead.'\n )\n }\n\n const Comp = isLegacyIcon ? LegacyIcon : Icon\n\n return (\n // @ts-expect-error\n <Comp\n {...(isLegacyIcon\n ? {\n name: children,\n }\n : {\n source: children,\n })}\n size=\"s\"\n color=\"txt-black-dark\"\n />\n )\n}\n\nfunction isIconWithAction(args: unknown): args is IconWithAction {\n return isObject(args) && 'icon' in args\n}\n\nfunction RightContent({ children }: { children: SectionLabelRightContent }) {\n const isLegacyIcon = isIconName(children)\n const withAction = isIconWithAction(children)\n\n if (!isBezierIcon(children) && !isLegacyIcon && !withAction) {\n return <>{children}</>\n }\n\n if (isLegacyIcon) {\n warn(\n 'Deprecation: IconName as a value for the icon property of SectionLabel has been deprecated. Use the Icon of bezier-icons instead.'\n )\n }\n\n return (\n <Button\n {...(withAction\n ? {\n leftContent: children.icon,\n onClick: children.onClick,\n }\n : {\n as: 'div',\n leftContent: children,\n })}\n className={styles.RightItem}\n size=\"xs\"\n styleVariant=\"tertiary\"\n colorVariant=\"monochrome-light\"\n />\n )\n}\n\nexport const SectionLabel = forwardRef<HTMLElement, SectionLabelProps>(\n function SectionLabel(\n {\n children,\n className,\n open = true,\n help,\n leftContent,\n content,\n rightContent,\n onClick,\n ...props\n },\n forwardedRef\n ) {\n const Comp = !isNil(onClick) ? BaseButton : 'div'\n\n return (\n <>\n <Comp\n // @ts-expect-error\n ref={forwardedRef}\n className={classNames(styles.SectionLabel, className)}\n data-testid=\"bezier-section-label\"\n onClick={onClick}\n {...props}\n >\n {leftContent && (\n <div className={styles.LeftContent}>\n <LeftContent>{leftContent}</LeftContent>\n </div>\n )}\n\n <div className={styles.Content}>\n {isString(content) || isNumber(content) ? (\n <Text\n bold\n typo=\"13\"\n color=\"txt-black-dark\"\n truncated\n >\n {content}\n </Text>\n ) : (\n content\n )}\n </div>\n\n {help && (\n <div className={styles.Help}>\n <Help allowHover>{help}</Help>\n </div>\n )}\n\n {!isNil(rightContent) && !isEmpty(rightContent) && (\n <div className={styles.RightContent}>\n {isArray(rightContent) ? (\n rightContent.map((eachContent, index) => (\n // eslint-disable-next-line react/no-array-index-key\n <RightContent key={index}>{eachContent}</RightContent>\n ))\n ) : (\n <RightContent>{rightContent}</RightContent>\n )}\n </div>\n )}\n </Comp>\n\n {children && open && <div>{children}</div>}\n </>\n )\n }\n)\n"],"names":["LeftContent","children","isLegacyIcon","isIconName","isBezierIcon","React","createElement","Fragment","warn","Comp","LegacyIcon","Icon","Object","assign","name","source","size","color","isIconWithAction","args","isObject","RightContent","withAction","Button","leftContent","icon","onClick","as","className","styles","RightItem","styleVariant","colorVariant","SectionLabel","forwardRef","open","help","content","rightContent","props","forwardedRef","isNil","BaseButton","ref","classNames","Content","isString","isNumber","Text","bold","typo","truncated","Help","allowHover","isEmpty","isArray","map","eachContent","index","key"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControl.js","sources":["../../../../src/components/SegmentedControl/SegmentedControl.tsx"],"sourcesContent":["import React, {\n type ForwardedRef,\n forwardRef,\n useEffect,\n useMemo,\n useState,\n} from 'react'\n\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\nimport classNames from 'classnames'\n\nimport { ariaAttr } from '~/src/utils/aria'\nimport { createContext } from '~/src/utils/react'\nimport { cssDimension } from '~/src/utils/style'\nimport { isNil } from '~/src/utils/type'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { Divider } from '~/src/components/Divider'\nimport dividerStyles from '~/src/components/Divider/Divider.module.scss'\nimport { useFormFieldProps } from '~/src/components/FormControl'\nimport { HStack } from '~/src/components/Stack'\nimport { Text } from '~/src/components/Text'\n\nimport {\n type SegmentedControlItemListProps,\n type SegmentedControlItemProps,\n type SegmentedControlProps,\n type SegmentedControlRadioGroupProps,\n type SegmentedControlTabContentProps,\n type SegmentedControlTabListProps,\n type SegmentedControlTabsProps,\n type SegmentedControlType,\n} from './SegmentedControl.types'\n\nimport styles from './SegmentedControl.module.scss'\n\ntype SegmentedControlContextValue = Required<\n Pick<\n SegmentedControlProps<SegmentedControlType, string>,\n 'type' | 'size' | 'width'\n >\n>\n\nconst [SegmentedControlContextProvider, useSegmentedControlContext] =\n createContext<SegmentedControlContextValue | null>(null, 'SegmentedControl')\n\ntype SegmentedControlItemListContextValue = {\n setSelectedItemIndex: (index: number | null) => void\n}\n\nconst [SegmentedControlItemContextProvider, useSegmentedControlItemContext] =\n createContext<number | null>(null, 'SegmentedControlItem')\n\nconst [\n SegmentedControlItemListContextProvider,\n useSegmentedControlItemListContext,\n] = createContext<SegmentedControlItemListContextValue | null>(\n null,\n 'SegmentedControlItemList'\n)\n\nfunction SegmentedControlItemListImpl<\n Type extends SegmentedControlType,\n Value extends string,\n>(\n {\n children,\n style,\n className,\n ...rest\n }: SegmentedControlItemListProps<Type, Value>,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const [selectedItemIndex, setSelectedItemIndex] = useState<number | null>(\n null\n )\n\n const { type, size, width } = useSegmentedControlContext(\n 'SegmentedControlItemList'\n )\n\n const contextValue: SegmentedControlItemListContextValue = useMemo(\n () => ({\n setSelectedItemIndex,\n }),\n []\n )\n\n const SegmentedControlItemList =\n type === 'radiogroup' ? RadioGroupPrimitive.Root : TabsPrimitive.List\n\n return (\n <SegmentedControlItemList\n asChild\n ref={forwardedRef}\n {...rest}\n >\n <div\n style={\n {\n '--b-segmented-control-width': cssDimension(width),\n '--b-segmented-control-item-index': selectedItemIndex,\n '--b-segmented-control-item-count': React.Children.count(children),\n ...style,\n } as React.CSSProperties\n }\n className={classNames(\n styles.SegmentedControl,\n styles[`size-${size}`],\n className\n )}\n >\n <SegmentedControlItemListContextProvider value={contextValue}>\n {React.Children.map(children, (child, index) => (\n <>\n {index !== 0 && (\n <Divider\n withoutParallelIndent\n orientation=\"vertical\"\n />\n )}\n <SegmentedControlItemContextProvider value={index}>\n {child}\n </SegmentedControlItemContextProvider>\n </>\n ))}\n {!isNil(selectedItemIndex) && (\n <div\n className={classNames(\n styles.SegmentedControlIndicator,\n dividerStyles.variables\n )}\n />\n )}\n </SegmentedControlItemListContextProvider>\n </div>\n </SegmentedControlItemList>\n )\n}\n\nconst SegmentedControlItemList = forwardRef(SegmentedControlItemListImpl) as <\n Type extends SegmentedControlType,\n Value extends string,\n>(\n props: SegmentedControlItemListProps<Type, Value> & {\n ref?: React.ForwardedRef<HTMLDivElement>\n }\n) => JSX.Element\n\nfunction SegmentedControlRadioGroupImpl<Value extends string>(\n { children, size, ...rest }: SegmentedControlRadioGroupProps<Value>,\n forwardedRef: React.Ref<HTMLDivElement>\n) {\n const { hasError, ...ownProps } = useFormFieldProps(rest)\n return (\n <SegmentedControlItemList\n ref={forwardedRef}\n {...ownProps}\n size={size}\n >\n {children}\n </SegmentedControlItemList>\n )\n}\n\nconst SegmentedControlRadioGroup = forwardRef(\n SegmentedControlRadioGroupImpl\n) as <Value extends string>(\n props: SegmentedControlRadioGroupProps<Value> & {\n ref?: React.ForwardedRef<HTMLDivElement>\n }\n) => JSX.Element\n\n/**\n * `SegmentedControlTabList` is the component that wraps `SegmentedControlItem`.\n * It can be used only when `SegmentedControl` component is used as the `tabs` type.\n *\n * It must be used as a child of `SegmentedControl`.\n */\nexport const SegmentedControlTabList = SegmentedControlItemList as (\n props: SegmentedControlTabListProps & {\n ref?: React.ForwardedRef<HTMLDivElement>\n }\n) => JSX.Element\n\n/**\n * `SegmentedControlTabContent` is the component that wraps the content that corresponds to a specific value of `SegmentedControlItem`.\n * It can be used only when `SegmentedControl` component is used as the `tabs` type.\n *\n * It must be used as a child of `SegmentedControl`.\n */\nexport const SegmentedControlTabContent = TabsPrimitive.Content as <\n Value extends string,\n>(\n props: SegmentedControlTabContentProps<Value> & {\n ref?: React.ForwardedRef<HTMLDivElement>\n }\n) => JSX.Element\n\nconst SegmentedControlTabs = TabsPrimitive.Root as <Value extends string>(\n props: SegmentedControlTabsProps<Value> & {\n ref?: React.ForwardedRef<HTMLDivElement>\n }\n) => JSX.Element\n\nfunction SegmentedControlImpl<\n Type extends SegmentedControlType,\n Value extends string,\n>(\n {\n type = 'radiogroup' as Type,\n size = 'm',\n width = '100%',\n onValueChange,\n children,\n ...rest\n }: SegmentedControlProps<Type, Value>,\n forwardedRef: React.Ref<HTMLDivElement>\n) {\n const SegmentedControlRoot =\n type === 'radiogroup' ? SegmentedControlRadioGroup : SegmentedControlTabs\n\n const contextValue = useMemo(\n () => ({\n type,\n size,\n width,\n }),\n [type, size, width]\n )\n\n return (\n <SegmentedControlContextProvider value={contextValue}>\n <SegmentedControlRoot\n ref={forwardedRef}\n onValueChange={onValueChange}\n {...rest}\n >\n {children}\n </SegmentedControlRoot>\n </SegmentedControlContextProvider>\n )\n}\n\n/**\n * `SegmentedControl` is component that looks like a combination of a radio and a button.\n * They can be used in place of tabs and as input elements in modals.\n * If you have more than five items, use a different element, such as a dropdown.\n *\n * `SegmentedControl` can be used as a radio group, tabs element depending on its `type`.\n * @example\n *\n * ```tsx\n * // Anatomy of the SegmentedControl type=\"radiogroup\"\n * <SegmentedControl type=\"radiogroup\">\n * <SegmentedControlItem />\n * </SegmentedControl>\n *\n * // Anatomy of the SegmentedControl type=\"tabs\"\n * <SegmentedControl type=\"tabs\">\n * <SegmentedControlTabList>\n * <SegmentedControlItem />\n * </SegmentedControlTabList>\n *\n * <SegmentedControlTabContent />\n * </SegmentedControl>\n * ```\n */\nexport const SegmentedControl = forwardRef(SegmentedControlImpl) as <\n Type extends SegmentedControlType,\n Value extends string,\n>(\n props: SegmentedControlProps<Type, Value> & {\n ref?: React.ForwardedRef<HTMLDivElement>\n }\n) => JSX.Element\n\n/**\n * NOTE: (@ed) A property injected at runtime by the radix-ui lib.\n */\ntype ItemProps<Type extends SegmentedControlType> = (Type extends 'radiogroup'\n ? { 'data-state'?: 'unchecked' | 'checked' }\n : { 'data-state'?: 'inactive' | 'active' }) &\n React.HTMLAttributes<HTMLButtonElement> &\n Partial<SegmentedControlItemProps<Type>>\n\nconst Item = forwardRef<HTMLButtonElement, ItemProps<SegmentedControlType>>(\n function Item(\n { children, leftContent, rightContent, className, ...rest },\n forwardedRef\n ) {\n const { type, size } = useSegmentedControlContext('SegmentedControlItem')\n const { setSelectedItemIndex } = useSegmentedControlItemListContext(\n 'SegmentedControlItem'\n )\n const index = useSegmentedControlItemContext('SegmentedControlItem')\n\n const checked =\n type === 'radiogroup'\n ? (rest as ItemProps<typeof type>)?.['data-state'] === 'checked'\n : (rest as ItemProps<typeof type>)?.['data-state'] === 'active'\n\n useEffect(\n function setSelectedItem() {\n if (checked) {\n setSelectedItemIndex(index)\n }\n },\n [checked, index, setSelectedItemIndex]\n )\n\n return (\n <BaseButton\n {...rest}\n ref={forwardedRef}\n data-checked={ariaAttr(checked)}\n className={classNames(styles.SegmentedControlItem, className)}\n >\n <HStack\n className={styles.SegmentedControlItemContainer}\n align=\"center\"\n spacing={2}\n >\n {leftContent}\n <Text\n className={styles.SegmentedControlItemLabel}\n bold\n truncated\n typo={size === 'xs' ? '13' : '14'}\n >\n {children}\n </Text>\n {rightContent}\n </HStack>\n </BaseButton>\n )\n }\n)\n\nfunction SegmentedControlItemImpl<Value extends string>(\n { children, ...rest }: SegmentedControlItemProps<Value>,\n forwardedRef: React.Ref<HTMLButtonElement>\n) {\n const { type } = useSegmentedControlContext('SegmentedControlItem')\n\n const SegmentedControlItem =\n type === 'radiogroup' ? RadioGroupPrimitive.Item : TabsPrimitive.Trigger\n\n return (\n <SegmentedControlItem\n asChild\n ref={forwardedRef}\n {...rest}\n >\n <Item>{children}</Item>\n </SegmentedControlItem>\n )\n}\n\n/**\n * `SegmentedControlItem` component is each item in `SegmentedControl`.\n *\n * If the type of `SegmentedControl` is `radiogroup`, this component acts as a radio item.\n * In this case, it must be used as a child of `SegmentedControl`.\n *\n * If the type of `SegmentedControl` is `tabs`, this component acts as a tab item.\n * In this case, it must be used as a child of `SegmentedControlTabList`.\n */\nexport const SegmentedControlItem = forwardRef(SegmentedControlItemImpl) as <\n Value extends string,\n>(\n props: SegmentedControlItemProps<Value> & {\n ref?: React.ForwardedRef<HTMLButtonElement>\n }\n) => JSX.Element\n"],"names":["SegmentedControlContextProvider","useSegmentedControlContext","createContext","SegmentedControlItemContextProvider","useSegmentedControlItemContext","SegmentedControlItemListContextProvider","useSegmentedControlItemListContext","SegmentedControlItemListImpl","children","style","className","rest","forwardedRef","selectedItemIndex","setSelectedItemIndex","useState","type","size","width","contextValue","useMemo","SegmentedControlItemList","RadioGroupPrimitive","TabsPrimitive","React","createElement","Object","assign","asChild","ref","cssDimension","Children","count","classNames","styles","SegmentedControl","value","map","child","index","Fragment","Divider","withoutParallelIndent","orientation","isNil","SegmentedControlIndicator","dividerStyles","variables","forwardRef","SegmentedControlRadioGroupImpl","hasError","ownProps","useFormFieldProps","SegmentedControlRadioGroup","SegmentedControlTabList","SegmentedControlTabContent","SegmentedControlTabs","SegmentedControlImpl","onValueChange","SegmentedControlRoot","Item","leftContent","rightContent","checked","useEffect","setSelectedItem","BaseButton","ariaAttr","SegmentedControlItem","HStack","SegmentedControlItemContainer","align","spacing","Text","SegmentedControlItemLabel","bold","truncated","typo","SegmentedControlItemImpl"],"mappings":"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"}
1
+ {"version":3,"file":"SegmentedControl.js","sources":["../../../../src/components/SegmentedControl/SegmentedControl.tsx"],"sourcesContent":["'use client'\n\nimport React, {\n type ForwardedRef,\n forwardRef,\n useEffect,\n useMemo,\n useState,\n} from 'react'\n\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\nimport classNames from 'classnames'\n\nimport { ariaAttr } from '~/src/utils/aria'\nimport { createContext } from '~/src/utils/react'\nimport { cssDimension } from '~/src/utils/style'\nimport { isNil } from '~/src/utils/type'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { Divider } from '~/src/components/Divider'\nimport dividerStyles from '~/src/components/Divider/Divider.module.scss'\nimport { useFormFieldProps } from '~/src/components/FormControl'\nimport { HStack } from '~/src/components/Stack'\nimport { Text } from '~/src/components/Text'\n\nimport {\n type SegmentedControlItemListProps,\n type SegmentedControlItemProps,\n type SegmentedControlProps,\n type SegmentedControlRadioGroupProps,\n type SegmentedControlTabContentProps,\n type SegmentedControlTabListProps,\n type SegmentedControlTabsProps,\n type SegmentedControlType,\n} from './SegmentedControl.types'\n\nimport styles from './SegmentedControl.module.scss'\n\ntype SegmentedControlContextValue = Required<\n Pick<\n SegmentedControlProps<SegmentedControlType, string>,\n 'type' | 'size' | 'width'\n >\n>\n\nconst [SegmentedControlContextProvider, useSegmentedControlContext] =\n createContext<SegmentedControlContextValue | null>(null, 'SegmentedControl')\n\ntype SegmentedControlItemListContextValue = {\n setSelectedItemIndex: (index: number | null) => void\n}\n\nconst [SegmentedControlItemContextProvider, useSegmentedControlItemContext] =\n createContext<number | null>(null, 'SegmentedControlItem')\n\nconst [\n SegmentedControlItemListContextProvider,\n useSegmentedControlItemListContext,\n] = createContext<SegmentedControlItemListContextValue | null>(\n null,\n 'SegmentedControlItemList'\n)\n\nfunction SegmentedControlItemListImpl<\n Type extends SegmentedControlType,\n Value extends string,\n>(\n {\n children,\n style,\n className,\n ...rest\n }: SegmentedControlItemListProps<Type, Value>,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const [selectedItemIndex, setSelectedItemIndex] = useState<number | null>(\n null\n )\n\n const { type, size, width } = useSegmentedControlContext(\n 'SegmentedControlItemList'\n )\n\n const contextValue: SegmentedControlItemListContextValue = useMemo(\n () => ({\n setSelectedItemIndex,\n }),\n []\n )\n\n const SegmentedControlItemList =\n type === 'radiogroup' ? RadioGroupPrimitive.Root : TabsPrimitive.List\n\n return (\n <SegmentedControlItemList\n asChild\n ref={forwardedRef}\n {...rest}\n >\n <div\n style={\n {\n '--b-segmented-control-width': cssDimension(width),\n '--b-segmented-control-item-index': selectedItemIndex,\n '--b-segmented-control-item-count': React.Children.count(children),\n ...style,\n } as React.CSSProperties\n }\n className={classNames(\n styles.SegmentedControl,\n styles[`size-${size}`],\n className\n )}\n >\n <SegmentedControlItemListContextProvider value={contextValue}>\n {React.Children.map(children, (child, index) => (\n <>\n {index !== 0 && (\n <Divider\n withoutParallelIndent\n orientation=\"vertical\"\n />\n )}\n <SegmentedControlItemContextProvider value={index}>\n {child}\n </SegmentedControlItemContextProvider>\n </>\n ))}\n {!isNil(selectedItemIndex) && (\n <div\n className={classNames(\n styles.SegmentedControlIndicator,\n dividerStyles.variables\n )}\n />\n )}\n </SegmentedControlItemListContextProvider>\n </div>\n </SegmentedControlItemList>\n )\n}\n\nconst SegmentedControlItemList = forwardRef(SegmentedControlItemListImpl) as <\n Type extends SegmentedControlType,\n Value extends string,\n>(\n props: SegmentedControlItemListProps<Type, Value> & {\n ref?: React.ForwardedRef<HTMLDivElement>\n }\n) => JSX.Element\n\nfunction SegmentedControlRadioGroupImpl<Value extends string>(\n { children, size, ...rest }: SegmentedControlRadioGroupProps<Value>,\n forwardedRef: React.Ref<HTMLDivElement>\n) {\n const { hasError, ...ownProps } = useFormFieldProps(rest)\n return (\n <SegmentedControlItemList\n ref={forwardedRef}\n {...ownProps}\n size={size}\n >\n {children}\n </SegmentedControlItemList>\n )\n}\n\nconst SegmentedControlRadioGroup = forwardRef(\n SegmentedControlRadioGroupImpl\n) as <Value extends string>(\n props: SegmentedControlRadioGroupProps<Value> & {\n ref?: React.ForwardedRef<HTMLDivElement>\n }\n) => JSX.Element\n\n/**\n * `SegmentedControlTabList` is the component that wraps `SegmentedControlItem`.\n * It can be used only when `SegmentedControl` component is used as the `tabs` type.\n *\n * It must be used as a child of `SegmentedControl`.\n */\nexport const SegmentedControlTabList = SegmentedControlItemList as (\n props: SegmentedControlTabListProps & {\n ref?: React.ForwardedRef<HTMLDivElement>\n }\n) => JSX.Element\n\n/**\n * `SegmentedControlTabContent` is the component that wraps the content that corresponds to a specific value of `SegmentedControlItem`.\n * It can be used only when `SegmentedControl` component is used as the `tabs` type.\n *\n * It must be used as a child of `SegmentedControl`.\n */\nexport const SegmentedControlTabContent = TabsPrimitive.Content as <\n Value extends string,\n>(\n props: SegmentedControlTabContentProps<Value> & {\n ref?: React.ForwardedRef<HTMLDivElement>\n }\n) => JSX.Element\n\nconst SegmentedControlTabs = TabsPrimitive.Root as <Value extends string>(\n props: SegmentedControlTabsProps<Value> & {\n ref?: React.ForwardedRef<HTMLDivElement>\n }\n) => JSX.Element\n\nfunction SegmentedControlImpl<\n Type extends SegmentedControlType,\n Value extends string,\n>(\n {\n type = 'radiogroup' as Type,\n size = 'm',\n width = '100%',\n onValueChange,\n children,\n ...rest\n }: SegmentedControlProps<Type, Value>,\n forwardedRef: React.Ref<HTMLDivElement>\n) {\n const SegmentedControlRoot =\n type === 'radiogroup' ? SegmentedControlRadioGroup : SegmentedControlTabs\n\n const contextValue = useMemo(\n () => ({\n type,\n size,\n width,\n }),\n [type, size, width]\n )\n\n return (\n <SegmentedControlContextProvider value={contextValue}>\n <SegmentedControlRoot\n ref={forwardedRef}\n onValueChange={onValueChange}\n {...rest}\n >\n {children}\n </SegmentedControlRoot>\n </SegmentedControlContextProvider>\n )\n}\n\n/**\n * `SegmentedControl` is component that looks like a combination of a radio and a button.\n * They can be used in place of tabs and as input elements in modals.\n * If you have more than five items, use a different element, such as a dropdown.\n *\n * `SegmentedControl` can be used as a radio group, tabs element depending on its `type`.\n * @example\n *\n * ```tsx\n * // Anatomy of the SegmentedControl type=\"radiogroup\"\n * <SegmentedControl type=\"radiogroup\">\n * <SegmentedControlItem />\n * </SegmentedControl>\n *\n * // Anatomy of the SegmentedControl type=\"tabs\"\n * <SegmentedControl type=\"tabs\">\n * <SegmentedControlTabList>\n * <SegmentedControlItem />\n * </SegmentedControlTabList>\n *\n * <SegmentedControlTabContent />\n * </SegmentedControl>\n * ```\n */\nexport const SegmentedControl = forwardRef(SegmentedControlImpl) as <\n Type extends SegmentedControlType,\n Value extends string,\n>(\n props: SegmentedControlProps<Type, Value> & {\n ref?: React.ForwardedRef<HTMLDivElement>\n }\n) => JSX.Element\n\n/**\n * NOTE: (@ed) A property injected at runtime by the radix-ui lib.\n */\ntype ItemProps<Type extends SegmentedControlType> = (Type extends 'radiogroup'\n ? { 'data-state'?: 'unchecked' | 'checked' }\n : { 'data-state'?: 'inactive' | 'active' }) &\n React.HTMLAttributes<HTMLButtonElement> &\n Partial<SegmentedControlItemProps<Type>>\n\nconst Item = forwardRef<HTMLButtonElement, ItemProps<SegmentedControlType>>(\n function Item(\n { children, leftContent, rightContent, className, ...rest },\n forwardedRef\n ) {\n const { type, size } = useSegmentedControlContext('SegmentedControlItem')\n const { setSelectedItemIndex } = useSegmentedControlItemListContext(\n 'SegmentedControlItem'\n )\n const index = useSegmentedControlItemContext('SegmentedControlItem')\n\n const checked =\n type === 'radiogroup'\n ? (rest as ItemProps<typeof type>)?.['data-state'] === 'checked'\n : (rest as ItemProps<typeof type>)?.['data-state'] === 'active'\n\n useEffect(\n function setSelectedItem() {\n if (checked) {\n setSelectedItemIndex(index)\n }\n },\n [checked, index, setSelectedItemIndex]\n )\n\n return (\n <BaseButton\n {...rest}\n ref={forwardedRef}\n data-checked={ariaAttr(checked)}\n className={classNames(styles.SegmentedControlItem, className)}\n >\n <HStack\n className={styles.SegmentedControlItemContainer}\n align=\"center\"\n spacing={2}\n >\n {leftContent}\n <Text\n className={styles.SegmentedControlItemLabel}\n bold\n truncated\n typo={size === 'xs' ? '13' : '14'}\n >\n {children}\n </Text>\n {rightContent}\n </HStack>\n </BaseButton>\n )\n }\n)\n\nfunction SegmentedControlItemImpl<Value extends string>(\n { children, ...rest }: SegmentedControlItemProps<Value>,\n forwardedRef: React.Ref<HTMLButtonElement>\n) {\n const { type } = useSegmentedControlContext('SegmentedControlItem')\n\n const SegmentedControlItem =\n type === 'radiogroup' ? RadioGroupPrimitive.Item : TabsPrimitive.Trigger\n\n return (\n <SegmentedControlItem\n asChild\n ref={forwardedRef}\n {...rest}\n >\n <Item>{children}</Item>\n </SegmentedControlItem>\n )\n}\n\n/**\n * `SegmentedControlItem` component is each item in `SegmentedControl`.\n *\n * If the type of `SegmentedControl` is `radiogroup`, this component acts as a radio item.\n * In this case, it must be used as a child of `SegmentedControl`.\n *\n * If the type of `SegmentedControl` is `tabs`, this component acts as a tab item.\n * In this case, it must be used as a child of `SegmentedControlTabList`.\n */\nexport const SegmentedControlItem = forwardRef(SegmentedControlItemImpl) as <\n Value extends string,\n>(\n props: SegmentedControlItemProps<Value> & {\n ref?: React.ForwardedRef<HTMLButtonElement>\n }\n) => JSX.Element\n"],"names":["SegmentedControlContextProvider","useSegmentedControlContext","createContext","SegmentedControlItemContextProvider","useSegmentedControlItemContext","SegmentedControlItemListContextProvider","useSegmentedControlItemListContext","SegmentedControlItemListImpl","children","style","className","rest","forwardedRef","selectedItemIndex","setSelectedItemIndex","useState","type","size","width","contextValue","useMemo","SegmentedControlItemList","RadioGroupPrimitive","TabsPrimitive","React","createElement","Object","assign","asChild","ref","cssDimension","Children","count","classNames","styles","SegmentedControl","value","map","child","index","Fragment","Divider","withoutParallelIndent","orientation","isNil","SegmentedControlIndicator","dividerStyles","variables","forwardRef","SegmentedControlRadioGroupImpl","hasError","ownProps","useFormFieldProps","SegmentedControlRadioGroup","SegmentedControlTabList","SegmentedControlTabContent","SegmentedControlTabs","SegmentedControlImpl","onValueChange","SegmentedControlRoot","Item","leftContent","rightContent","checked","useEffect","setSelectedItem","BaseButton","ariaAttr","SegmentedControlItem","HStack","SegmentedControlItemContainer","align","spacing","Text","SegmentedControlItemLabel","bold","truncated","typo","SegmentedControlItemImpl"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport {\n ChevronDownIcon,\n ChevronUpIcon,\n isBezierIcon,\n} from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport {\n getFormFieldSizeClassName,\n getZIndexClassName,\n} from '~/src/types/props-helpers'\nimport { isEmpty } from '~/src/utils/type'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { useFormFieldProps } from '~/src/components/FormControl'\nimport { Icon } from '~/src/components/Icon'\nimport { Overlay } from '~/src/components/Overlay'\nimport { Text } from '~/src/components/Text'\n\nimport { type SelectProps, type SelectRef } from './Select.types'\n\nimport styles from './Select.module.scss'\n\nexport const SELECT_DROPDOWN_TEST_ID = 'bezier-select-dropdown'\n\nexport const Select = forwardRef<SelectRef, SelectProps>(function Select(\n {\n children,\n style,\n className,\n size: sizeProps,\n defaultFocus = false,\n placeholder = '',\n leftContent,\n rightContent,\n iconColor = 'txt-black-dark',\n text,\n textColor = 'txt-black-darkest',\n withoutChevron = false,\n dropdownStyle,\n dropdownClassName,\n dropdownContainer,\n dropdownMarginX,\n dropdownMarginY = 6,\n dropdownZIndex = 'overlay',\n dropdownPosition = 'bottom-left',\n dropdownKeepInContainer = false,\n onClickTrigger,\n onHideDropdown,\n ...rest\n },\n forwardedRef\n) {\n const {\n disabled,\n readOnly,\n hasError,\n size: formFieldSize,\n ...ownProps\n } = useFormFieldProps(rest)\n\n const containerRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement>(null)\n\n const size = sizeProps ?? formFieldSize ?? 'm'\n\n const [isDropdownOpened, setIsDropdownOpened] = useState(false)\n\n const handleClickTrigger = useCallback(\n (event: React.MouseEvent) => {\n if (!disabled && !readOnly) {\n setIsDropdownOpened((prevState) => !prevState)\n onClickTrigger?.(event)\n }\n },\n [disabled, readOnly, onClickTrigger]\n )\n\n const handleHideDropdown = useCallback(() => {\n setIsDropdownOpened(false)\n onHideDropdown?.()\n }, [onHideDropdown])\n\n const getDOMNode = useCallback(() => triggerRef.current, [])\n\n const handle = useMemo(\n (): SelectRef => ({\n handleClickTrigger,\n handleHideDropdown,\n getDOMNode,\n }),\n [handleClickTrigger, handleHideDropdown, getDOMNode]\n )\n\n useEffect(\n function handleDefaultFocus() {\n if (defaultFocus && !disabled && !readOnly) {\n setIsDropdownOpened(true)\n }\n },\n [defaultFocus, disabled, readOnly]\n )\n\n useImperativeHandle(forwardedRef, () => handle)\n\n const hasContent = !isEmpty(text)\n\n return (\n <div\n style={style}\n className={classNames(styles.SelectContainer, className)}\n ref={containerRef}\n >\n <BaseButton\n className={classNames(\n styles.SelectTrigger,\n getFormFieldSizeClassName(size),\n hasError && styles.invalid,\n readOnly && styles.readonly,\n isDropdownOpened && styles.active\n )}\n ref={triggerRef}\n disabled={disabled}\n onClick={handleClickTrigger}\n {...ownProps}\n >\n <div className={styles.SelectMainContent}>\n {isBezierIcon(leftContent) ? (\n <Icon\n source={leftContent}\n size=\"xs\"\n marginRight={6}\n color={iconColor}\n />\n ) : (\n leftContent\n )}\n\n <Text\n data-testid=\"bezier-select-trigger-text\"\n typo=\"14\"\n truncated\n color={hasContent ? textColor : 'txt-black-dark'}\n >\n {hasContent ? text : placeholder}\n </Text>\n\n {isBezierIcon(rightContent) ? (\n <Icon\n source={rightContent}\n size=\"xs\"\n marginRight={6}\n color={iconColor}\n />\n ) : (\n rightContent\n )}\n </div>\n\n {!withoutChevron && (\n <Icon\n source={isDropdownOpened ? ChevronUpIcon : ChevronDownIcon}\n size=\"xs\"\n color={readOnly ? 'txt-black-dark' : 'txt-black-darker'}\n marginLeft={6}\n />\n )}\n </BaseButton>\n\n <Overlay\n style={dropdownStyle}\n className={classNames(\n styles.SelectDropdown,\n getZIndexClassName(dropdownZIndex),\n dropdownClassName\n )}\n withTransition\n show={isDropdownOpened && !disabled}\n marginX={dropdownMarginX}\n marginY={dropdownMarginY}\n target={triggerRef.current}\n container={dropdownContainer || containerRef.current}\n position={dropdownPosition}\n keepInContainer={dropdownKeepInContainer}\n data-testid={SELECT_DROPDOWN_TEST_ID}\n onHide={handleHideDropdown}\n >\n {children}\n </Overlay>\n </div>\n )\n})\n"],"names":["SELECT_DROPDOWN_TEST_ID","Select","forwardRef","children","style","className","size","sizeProps","defaultFocus","placeholder","leftContent","rightContent","iconColor","text","textColor","withoutChevron","dropdownStyle","dropdownClassName","dropdownContainer","dropdownMarginX","dropdownMarginY","dropdownZIndex","dropdownPosition","dropdownKeepInContainer","onClickTrigger","onHideDropdown","rest","forwardedRef","_ref","disabled","readOnly","hasError","formFieldSize","ownProps","useFormFieldProps","containerRef","useRef","triggerRef","isDropdownOpened","setIsDropdownOpened","useState","handleClickTrigger","useCallback","event","prevState","handleHideDropdown","getDOMNode","current","handle","useMemo","useEffect","handleDefaultFocus","useImperativeHandle","hasContent","isEmpty","React","createElement","classNames","styles","SelectContainer","ref","BaseButton","Object","assign","SelectTrigger","getFormFieldSizeClassName","invalid","readonly","active","onClick","SelectMainContent","isBezierIcon","Icon","source","marginRight","color","Text","typo","truncated","ChevronUpIcon","ChevronDownIcon","marginLeft","Overlay","SelectDropdown","getZIndexClassName","withTransition","show","marginX","marginY","target","container","position","keepInContainer","onHide"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["'use client'\n\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport {\n ChevronDownIcon,\n ChevronUpIcon,\n isBezierIcon,\n} from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport {\n getFormFieldSizeClassName,\n getZIndexClassName,\n} from '~/src/types/props-helpers'\nimport { isEmpty } from '~/src/utils/type'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { useFormFieldProps } from '~/src/components/FormControl'\nimport { Icon } from '~/src/components/Icon'\nimport { Overlay } from '~/src/components/Overlay'\nimport { Text } from '~/src/components/Text'\n\nimport { type SelectProps, type SelectRef } from './Select.types'\n\nimport styles from './Select.module.scss'\n\nexport const SELECT_DROPDOWN_TEST_ID = 'bezier-select-dropdown'\n\nexport const Select = forwardRef<SelectRef, SelectProps>(function Select(\n {\n children,\n style,\n className,\n size: sizeProps,\n defaultFocus = false,\n placeholder = '',\n leftContent,\n rightContent,\n iconColor = 'txt-black-dark',\n text,\n textColor = 'txt-black-darkest',\n withoutChevron = false,\n dropdownStyle,\n dropdownClassName,\n dropdownContainer,\n dropdownMarginX,\n dropdownMarginY = 6,\n dropdownZIndex = 'overlay',\n dropdownPosition = 'bottom-left',\n dropdownKeepInContainer = false,\n onClickTrigger,\n onHideDropdown,\n ...rest\n },\n forwardedRef\n) {\n const {\n disabled,\n readOnly,\n hasError,\n size: formFieldSize,\n ...ownProps\n } = useFormFieldProps(rest)\n\n const containerRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement>(null)\n\n const size = sizeProps ?? formFieldSize ?? 'm'\n\n const [isDropdownOpened, setIsDropdownOpened] = useState(false)\n\n const handleClickTrigger = useCallback(\n (event: React.MouseEvent) => {\n if (!disabled && !readOnly) {\n setIsDropdownOpened((prevState) => !prevState)\n onClickTrigger?.(event)\n }\n },\n [disabled, readOnly, onClickTrigger]\n )\n\n const handleHideDropdown = useCallback(() => {\n setIsDropdownOpened(false)\n onHideDropdown?.()\n }, [onHideDropdown])\n\n const getDOMNode = useCallback(() => triggerRef.current, [])\n\n const handle = useMemo(\n (): SelectRef => ({\n handleClickTrigger,\n handleHideDropdown,\n getDOMNode,\n }),\n [handleClickTrigger, handleHideDropdown, getDOMNode]\n )\n\n useEffect(\n function handleDefaultFocus() {\n if (defaultFocus && !disabled && !readOnly) {\n setIsDropdownOpened(true)\n }\n },\n [defaultFocus, disabled, readOnly]\n )\n\n useImperativeHandle(forwardedRef, () => handle)\n\n const hasContent = !isEmpty(text)\n\n return (\n <div\n style={style}\n className={classNames(styles.SelectContainer, className)}\n ref={containerRef}\n >\n <BaseButton\n className={classNames(\n styles.SelectTrigger,\n getFormFieldSizeClassName(size),\n hasError && styles.invalid,\n readOnly && styles.readonly,\n isDropdownOpened && styles.active\n )}\n ref={triggerRef}\n disabled={disabled}\n onClick={handleClickTrigger}\n {...ownProps}\n >\n <div className={styles.SelectMainContent}>\n {isBezierIcon(leftContent) ? (\n <Icon\n source={leftContent}\n size=\"xs\"\n marginRight={6}\n color={iconColor}\n />\n ) : (\n leftContent\n )}\n\n <Text\n data-testid=\"bezier-select-trigger-text\"\n typo=\"14\"\n truncated\n color={hasContent ? textColor : 'txt-black-dark'}\n >\n {hasContent ? text : placeholder}\n </Text>\n\n {isBezierIcon(rightContent) ? (\n <Icon\n source={rightContent}\n size=\"xs\"\n marginRight={6}\n color={iconColor}\n />\n ) : (\n rightContent\n )}\n </div>\n\n {!withoutChevron && (\n <Icon\n source={isDropdownOpened ? ChevronUpIcon : ChevronDownIcon}\n size=\"xs\"\n color={readOnly ? 'txt-black-dark' : 'txt-black-darker'}\n marginLeft={6}\n />\n )}\n </BaseButton>\n\n <Overlay\n style={dropdownStyle}\n className={classNames(\n styles.SelectDropdown,\n getZIndexClassName(dropdownZIndex),\n dropdownClassName\n )}\n withTransition\n show={isDropdownOpened && !disabled}\n marginX={dropdownMarginX}\n marginY={dropdownMarginY}\n target={triggerRef.current}\n container={dropdownContainer || containerRef.current}\n position={dropdownPosition}\n keepInContainer={dropdownKeepInContainer}\n data-testid={SELECT_DROPDOWN_TEST_ID}\n onHide={handleHideDropdown}\n >\n {children}\n </Overlay>\n </div>\n )\n})\n"],"names":["SELECT_DROPDOWN_TEST_ID","Select","forwardRef","children","style","className","size","sizeProps","defaultFocus","placeholder","leftContent","rightContent","iconColor","text","textColor","withoutChevron","dropdownStyle","dropdownClassName","dropdownContainer","dropdownMarginX","dropdownMarginY","dropdownZIndex","dropdownPosition","dropdownKeepInContainer","onClickTrigger","onHideDropdown","rest","forwardedRef","_ref","disabled","readOnly","hasError","formFieldSize","ownProps","useFormFieldProps","containerRef","useRef","triggerRef","isDropdownOpened","setIsDropdownOpened","useState","handleClickTrigger","useCallback","event","prevState","handleHideDropdown","getDOMNode","current","handle","useMemo","useEffect","handleDefaultFocus","useImperativeHandle","hasContent","isEmpty","React","createElement","classNames","styles","SelectContainer","ref","BaseButton","Object","assign","SelectTrigger","getFormFieldSizeClassName","invalid","readonly","active","onClick","SelectMainContent","isBezierIcon","Icon","source","marginRight","color","Text","typo","truncated","ChevronUpIcon","ChevronDownIcon","marginLeft","Overlay","SelectDropdown","getZIndexClassName","withTransition","show","marginX","marginY","target","container","position","keepInContainer","onHide"],"mappings":"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"}