@channel.io/bezier-react 2.3.2 → 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.
- package/dist/cjs/components/AlphaAvatar/Avatar.js.map +1 -1
- package/dist/cjs/components/AlphaAvatarGroup/AvatarGroup.js.map +1 -1
- package/dist/cjs/components/AlphaButton/Button.js.map +1 -1
- package/dist/cjs/components/AlphaButton/Button.module.scss.js +1 -1
- package/dist/cjs/components/AlphaDialogPrimitive/DialogPrimitive.js.map +1 -1
- package/dist/cjs/components/AlphaFloatingButton/FloatingButton.js.map +1 -1
- package/dist/cjs/components/AlphaFloatingButton/FloatingButton.module.scss.js +1 -1
- package/dist/cjs/components/AlphaFloatingIconButton/FloatingIconButton.js.map +1 -1
- package/dist/cjs/components/AlphaFloatingIconButton/FloatingIconButton.module.scss.js +1 -1
- package/dist/cjs/components/AlphaIconButton/IconButton.js.map +1 -1
- package/dist/cjs/components/AlphaLoader/Loader.js.map +1 -1
- package/dist/cjs/components/AlphaStatusBadge/StatusBadge.js.map +1 -1
- package/dist/cjs/components/AlphaToggleButton/ToggleButton.js +1 -11
- package/dist/cjs/components/AlphaToggleButton/ToggleButton.js.map +1 -1
- package/dist/cjs/components/AlphaToggleButton/ToggleButton.module.scss.js +1 -1
- package/dist/cjs/components/AlphaToggleButtonGroup/ToggleButtonGroup.js.map +1 -1
- package/dist/cjs/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.js +103 -0
- package/dist/cjs/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.js.map +1 -0
- package/dist/cjs/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.module.scss.js +8 -0
- package/dist/cjs/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.module.scss.js.map +1 -0
- package/dist/cjs/components/AlphaToggleEmojiButtonGroup/useToggleEmojiButtonSize.js +45 -0
- package/dist/cjs/components/AlphaToggleEmojiButtonGroup/useToggleEmojiButtonSize.js.map +1 -0
- package/dist/cjs/components/AlphaTooltipPrimitive/TooltipPrimitive.js.map +1 -1
- package/dist/cjs/components/AppProvider/AppProvider.js.map +1 -1
- package/dist/cjs/components/AutoFocus/AutoFocus.js.map +1 -1
- package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
- package/dist/cjs/components/AvatarGroup/AvatarGroup.js.map +1 -1
- package/dist/cjs/components/Badge/Badge.js.map +1 -1
- package/dist/cjs/components/Banner/Banner.js.map +1 -1
- package/dist/cjs/components/BaseButton/BaseButton.js.map +1 -1
- package/dist/cjs/components/BaseTagBadge/BaseTagBadge.js.map +1 -1
- package/dist/cjs/components/Box/Box.js.map +1 -1
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/ButtonGroup/ButtonGroup.js.map +1 -1
- package/dist/cjs/components/Center/Center.js.map +1 -1
- package/dist/cjs/components/CheckableAvatar/CheckableAvatar.js.map +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cjs/components/ConfirmModal/ConfirmModal.js.map +1 -1
- package/dist/cjs/components/Divider/Divider.js.map +1 -1
- package/dist/cjs/components/Emoji/Emoji.js +1 -1
- package/dist/cjs/components/Emoji/Emoji.js.map +1 -1
- package/dist/cjs/components/FeatureProvider/FeatureProvider.js.map +1 -1
- package/dist/cjs/components/FormControl/FormControl.js.map +1 -1
- package/dist/cjs/components/FormGroup/FormGroup.js.map +1 -1
- package/dist/cjs/components/FormHelperText/FormHelperText.js.map +1 -1
- package/dist/cjs/components/FormLabel/FormLabel.js.map +1 -1
- package/dist/cjs/components/Help/Help.js.map +1 -1
- package/dist/cjs/components/Icon/Icon.js.map +1 -1
- package/dist/cjs/components/KeyValueItem/KeyValueItem.js.map +1 -1
- package/dist/cjs/components/LegacyIcon/LegacyIcon.js.map +1 -1
- package/dist/cjs/components/LegacyStack/LegacyHStack/LegacyHStack.js.map +1 -1
- package/dist/cjs/components/LegacyStack/LegacySpacer/LegacySpacer.js.map +1 -1
- package/dist/cjs/components/LegacyStack/LegacyStack/LegacyStack.js.map +1 -1
- package/dist/cjs/components/LegacyStack/LegacyStackItem/LegacyStackItem.js.map +1 -1
- package/dist/cjs/components/LegacyStack/LegacyVStack/LegacyVStack.js.map +1 -1
- package/dist/cjs/components/LegacyTooltip/LegacyTooltip.js.map +1 -1
- package/dist/cjs/components/LegacyTooltip/LegacyTooltipContent.js.map +1 -1
- package/dist/cjs/components/ListItem/ListItem.js.map +1 -1
- package/dist/cjs/components/Modal/Modal.js.map +1 -1
- package/dist/cjs/components/NavGroup/NavGroup.js.map +1 -1
- package/dist/cjs/components/NavItem/NavItem.js.map +1 -1
- package/dist/cjs/components/OutlineItem/OutlineItem.js.map +1 -1
- package/dist/cjs/components/Overlay/Overlay.js.map +1 -1
- package/dist/cjs/components/ProgressBar/ProgressBar.js.map +1 -1
- package/dist/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/cjs/components/SectionLabel/SectionLabel.js.map +1 -1
- package/dist/cjs/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/cjs/components/Select/Select.js.map +1 -1
- package/dist/cjs/components/Slider/Slider.js.map +1 -1
- package/dist/cjs/components/SmoothCornersBox/SmoothCornersBox.js.map +1 -1
- package/dist/cjs/components/Spinner/Spinner.js.map +1 -1
- package/dist/cjs/components/Stack/Stack.js.map +1 -1
- package/dist/cjs/components/Status/Status.js.map +1 -1
- package/dist/cjs/components/Switch/Switch.js.map +1 -1
- package/dist/cjs/components/Tabs/Tabs.js.map +1 -1
- package/dist/cjs/components/Tag/Tag.js.map +1 -1
- package/dist/cjs/components/Text/Text.js.map +1 -1
- package/dist/cjs/components/TextArea/TextArea.js.map +1 -1
- package/dist/cjs/components/TextField/TextField.js.map +1 -1
- package/dist/cjs/components/ThemeProvider/ThemeProvider.js.map +1 -1
- package/dist/cjs/components/Toast/Toast.js.map +1 -1
- package/dist/cjs/components/TokenProvider/TokenProvider.js.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/cjs/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/cjs/components/WindowProvider/WindowProvider.js.map +1 -1
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/styles.css +1 -1
- package/dist/esm/components/AlphaAvatar/Avatar.mjs.map +1 -1
- package/dist/esm/components/AlphaAvatarGroup/AvatarGroup.mjs.map +1 -1
- package/dist/esm/components/AlphaButton/Button.mjs.map +1 -1
- package/dist/esm/components/AlphaButton/Button.module.scss.mjs +1 -1
- package/dist/esm/components/AlphaDialogPrimitive/DialogPrimitive.mjs.map +1 -1
- package/dist/esm/components/AlphaFloatingButton/FloatingButton.mjs.map +1 -1
- package/dist/esm/components/AlphaFloatingButton/FloatingButton.module.scss.mjs +1 -1
- package/dist/esm/components/AlphaFloatingIconButton/FloatingIconButton.mjs.map +1 -1
- package/dist/esm/components/AlphaFloatingIconButton/FloatingIconButton.module.scss.mjs +1 -1
- package/dist/esm/components/AlphaIconButton/IconButton.mjs.map +1 -1
- package/dist/esm/components/AlphaLoader/Loader.mjs.map +1 -1
- package/dist/esm/components/AlphaStatusBadge/StatusBadge.mjs.map +1 -1
- package/dist/esm/components/AlphaToggleButton/ToggleButton.mjs +1 -11
- package/dist/esm/components/AlphaToggleButton/ToggleButton.mjs.map +1 -1
- package/dist/esm/components/AlphaToggleButton/ToggleButton.module.scss.mjs +1 -1
- package/dist/esm/components/AlphaToggleButtonGroup/ToggleButtonGroup.mjs.map +1 -1
- package/dist/esm/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.mjs +100 -0
- package/dist/esm/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.mjs.map +1 -0
- package/dist/esm/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.module.scss.mjs +4 -0
- package/dist/esm/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.module.scss.mjs.map +1 -0
- package/dist/esm/components/AlphaToggleEmojiButtonGroup/useToggleEmojiButtonSize.mjs +41 -0
- package/dist/esm/components/AlphaToggleEmojiButtonGroup/useToggleEmojiButtonSize.mjs.map +1 -0
- package/dist/esm/components/AlphaTooltipPrimitive/TooltipPrimitive.mjs.map +1 -1
- package/dist/esm/components/AppProvider/AppProvider.mjs.map +1 -1
- package/dist/esm/components/AutoFocus/AutoFocus.mjs.map +1 -1
- package/dist/esm/components/Avatar/Avatar.mjs.map +1 -1
- package/dist/esm/components/AvatarGroup/AvatarGroup.mjs.map +1 -1
- package/dist/esm/components/Badge/Badge.mjs.map +1 -1
- package/dist/esm/components/Banner/Banner.mjs.map +1 -1
- package/dist/esm/components/BaseButton/BaseButton.mjs.map +1 -1
- package/dist/esm/components/BaseTagBadge/BaseTagBadge.mjs.map +1 -1
- package/dist/esm/components/Box/Box.mjs.map +1 -1
- package/dist/esm/components/Button/Button.mjs.map +1 -1
- package/dist/esm/components/ButtonGroup/ButtonGroup.mjs.map +1 -1
- package/dist/esm/components/Center/Center.mjs.map +1 -1
- package/dist/esm/components/CheckableAvatar/CheckableAvatar.mjs.map +1 -1
- package/dist/esm/components/Checkbox/Checkbox.mjs.map +1 -1
- package/dist/esm/components/ConfirmModal/ConfirmModal.mjs.map +1 -1
- package/dist/esm/components/Divider/Divider.mjs.map +1 -1
- package/dist/esm/components/Emoji/Emoji.mjs +1 -1
- package/dist/esm/components/Emoji/Emoji.mjs.map +1 -1
- package/dist/esm/components/FeatureProvider/FeatureProvider.mjs.map +1 -1
- package/dist/esm/components/FormControl/FormControl.mjs.map +1 -1
- package/dist/esm/components/FormGroup/FormGroup.mjs.map +1 -1
- package/dist/esm/components/FormHelperText/FormHelperText.mjs.map +1 -1
- package/dist/esm/components/FormLabel/FormLabel.mjs.map +1 -1
- package/dist/esm/components/Help/Help.mjs.map +1 -1
- package/dist/esm/components/Icon/Icon.mjs.map +1 -1
- package/dist/esm/components/KeyValueItem/KeyValueItem.mjs.map +1 -1
- package/dist/esm/components/LegacyIcon/LegacyIcon.mjs.map +1 -1
- package/dist/esm/components/LegacyStack/LegacyHStack/LegacyHStack.mjs.map +1 -1
- package/dist/esm/components/LegacyStack/LegacySpacer/LegacySpacer.mjs.map +1 -1
- package/dist/esm/components/LegacyStack/LegacyStack/LegacyStack.mjs.map +1 -1
- package/dist/esm/components/LegacyStack/LegacyStackItem/LegacyStackItem.mjs.map +1 -1
- package/dist/esm/components/LegacyStack/LegacyVStack/LegacyVStack.mjs.map +1 -1
- package/dist/esm/components/LegacyTooltip/LegacyTooltip.mjs.map +1 -1
- package/dist/esm/components/LegacyTooltip/LegacyTooltipContent.mjs.map +1 -1
- package/dist/esm/components/ListItem/ListItem.mjs.map +1 -1
- package/dist/esm/components/Modal/Modal.mjs.map +1 -1
- package/dist/esm/components/NavGroup/NavGroup.mjs.map +1 -1
- package/dist/esm/components/NavItem/NavItem.mjs.map +1 -1
- package/dist/esm/components/OutlineItem/OutlineItem.mjs.map +1 -1
- package/dist/esm/components/Overlay/Overlay.mjs.map +1 -1
- package/dist/esm/components/ProgressBar/ProgressBar.mjs.map +1 -1
- package/dist/esm/components/RadioGroup/RadioGroup.mjs.map +1 -1
- package/dist/esm/components/SectionLabel/SectionLabel.mjs.map +1 -1
- package/dist/esm/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
- package/dist/esm/components/Select/Select.mjs.map +1 -1
- package/dist/esm/components/Slider/Slider.mjs.map +1 -1
- package/dist/esm/components/SmoothCornersBox/SmoothCornersBox.mjs.map +1 -1
- package/dist/esm/components/Spinner/Spinner.mjs.map +1 -1
- package/dist/esm/components/Stack/Stack.mjs.map +1 -1
- package/dist/esm/components/Status/Status.mjs.map +1 -1
- package/dist/esm/components/Switch/Switch.mjs.map +1 -1
- package/dist/esm/components/Tabs/Tabs.mjs.map +1 -1
- package/dist/esm/components/Tag/Tag.mjs.map +1 -1
- package/dist/esm/components/Text/Text.mjs.map +1 -1
- package/dist/esm/components/TextArea/TextArea.mjs.map +1 -1
- package/dist/esm/components/TextField/TextField.mjs.map +1 -1
- package/dist/esm/components/ThemeProvider/ThemeProvider.mjs.map +1 -1
- package/dist/esm/components/Toast/Toast.mjs.map +1 -1
- package/dist/esm/components/TokenProvider/TokenProvider.mjs.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.mjs.map +1 -1
- package/dist/esm/components/VisuallyHidden/VisuallyHidden.mjs.map +1 -1
- package/dist/esm/components/WindowProvider/WindowProvider.mjs.map +1 -1
- package/dist/esm/index.mjs +1 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/styles.css +1 -1
- package/dist/types/components/AlphaAvatar/Avatar.d.ts.map +1 -1
- package/dist/types/components/AlphaAvatarGroup/AvatarGroup.d.ts.map +1 -1
- package/dist/types/components/AlphaButton/Button.d.ts.map +1 -1
- package/dist/types/components/AlphaDialogPrimitive/DialogPrimitive.d.ts.map +1 -1
- package/dist/types/components/AlphaFloatingButton/FloatingButton.d.ts.map +1 -1
- package/dist/types/components/AlphaFloatingIconButton/FloatingIconButton.d.ts.map +1 -1
- package/dist/types/components/AlphaIconButton/IconButton.d.ts.map +1 -1
- package/dist/types/components/AlphaLoader/Loader.d.ts.map +1 -1
- package/dist/types/components/AlphaStatusBadge/StatusBadge.d.ts.map +1 -1
- package/dist/types/components/AlphaToggleButton/ToggleButton.d.ts.map +1 -1
- package/dist/types/components/AlphaToggleButton/ToggleButton.types.d.ts +0 -5
- package/dist/types/components/AlphaToggleButton/ToggleButton.types.d.ts.map +1 -1
- package/dist/types/components/AlphaToggleButtonGroup/ToggleButtonGroup.d.ts.map +1 -1
- package/dist/types/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.d.ts +32 -0
- package/dist/types/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.d.ts.map +1 -0
- package/dist/types/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.types.d.ts +54 -0
- package/dist/types/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.types.d.ts.map +1 -0
- package/dist/types/components/AlphaToggleEmojiButtonGroup/index.d.ts +3 -0
- package/dist/types/components/AlphaToggleEmojiButtonGroup/index.d.ts.map +1 -0
- package/dist/types/components/AlphaToggleEmojiButtonGroup/useToggleEmojiButtonSize.d.ts +10 -0
- package/dist/types/components/AlphaToggleEmojiButtonGroup/useToggleEmojiButtonSize.d.ts.map +1 -0
- package/dist/types/components/AlphaTooltipPrimitive/TooltipPrimitive.d.ts.map +1 -1
- package/dist/types/components/AppProvider/AppProvider.d.ts.map +1 -1
- package/dist/types/components/AutoFocus/AutoFocus.d.ts.map +1 -1
- package/dist/types/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/types/components/AvatarGroup/AvatarGroup.d.ts.map +1 -1
- package/dist/types/components/Badge/Badge.d.ts.map +1 -1
- package/dist/types/components/Banner/Banner.d.ts.map +1 -1
- package/dist/types/components/BaseButton/BaseButton.d.ts.map +1 -1
- package/dist/types/components/BaseTagBadge/BaseTagBadge.d.ts.map +1 -1
- package/dist/types/components/Box/Box.d.ts.map +1 -1
- package/dist/types/components/Button/Button.d.ts.map +1 -1
- package/dist/types/components/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/dist/types/components/Center/Center.d.ts.map +1 -1
- package/dist/types/components/CheckableAvatar/CheckableAvatar.d.ts.map +1 -1
- package/dist/types/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/types/components/ConfirmModal/ConfirmModal.d.ts.map +1 -1
- package/dist/types/components/Divider/Divider.d.ts.map +1 -1
- package/dist/types/components/Emoji/Emoji.d.ts.map +1 -1
- package/dist/types/components/FeatureProvider/FeatureProvider.d.ts.map +1 -1
- package/dist/types/components/FormControl/FormControl.d.ts.map +1 -1
- package/dist/types/components/FormGroup/FormGroup.d.ts.map +1 -1
- package/dist/types/components/FormHelperText/FormHelperText.d.ts.map +1 -1
- package/dist/types/components/FormLabel/FormLabel.d.ts.map +1 -1
- package/dist/types/components/Help/Help.d.ts.map +1 -1
- package/dist/types/components/Icon/Icon.d.ts.map +1 -1
- package/dist/types/components/KeyValueItem/KeyValueItem.d.ts.map +1 -1
- package/dist/types/components/LegacyIcon/LegacyIcon.d.ts.map +1 -1
- package/dist/types/components/LegacyStack/LegacyHStack/LegacyHStack.d.ts.map +1 -1
- package/dist/types/components/LegacyStack/LegacySpacer/LegacySpacer.d.ts.map +1 -1
- package/dist/types/components/LegacyStack/LegacyStack/LegacyStack.d.ts.map +1 -1
- package/dist/types/components/LegacyStack/LegacyStackItem/LegacyStackItem.d.ts.map +1 -1
- package/dist/types/components/LegacyStack/LegacyVStack/LegacyVStack.d.ts.map +1 -1
- package/dist/types/components/LegacyTooltip/LegacyTooltip.d.ts.map +1 -1
- package/dist/types/components/LegacyTooltip/LegacyTooltipContent.d.ts.map +1 -1
- package/dist/types/components/ListItem/ListItem.d.ts.map +1 -1
- package/dist/types/components/Modal/Modal.d.ts.map +1 -1
- package/dist/types/components/NavGroup/NavGroup.d.ts.map +1 -1
- package/dist/types/components/NavItem/NavItem.d.ts.map +1 -1
- package/dist/types/components/OutlineItem/OutlineItem.d.ts.map +1 -1
- package/dist/types/components/Overlay/Overlay.d.ts.map +1 -1
- package/dist/types/components/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/types/components/RadioGroup/RadioGroup.d.ts.map +1 -1
- package/dist/types/components/SectionLabel/SectionLabel.d.ts.map +1 -1
- package/dist/types/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/types/components/Select/Select.d.ts.map +1 -1
- package/dist/types/components/Slider/Slider.d.ts.map +1 -1
- package/dist/types/components/SmoothCornersBox/SmoothCornersBox.d.ts.map +1 -1
- package/dist/types/components/Spinner/Spinner.d.ts.map +1 -1
- package/dist/types/components/Stack/Stack.d.ts.map +1 -1
- package/dist/types/components/Status/Status.d.ts.map +1 -1
- package/dist/types/components/Switch/Switch.d.ts.map +1 -1
- package/dist/types/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/types/components/Tag/Tag.d.ts.map +1 -1
- package/dist/types/components/Text/Text.d.ts.map +1 -1
- package/dist/types/components/TextArea/TextArea.d.ts.map +1 -1
- package/dist/types/components/TextField/TextField.d.ts.map +1 -1
- package/dist/types/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/dist/types/components/Toast/Toast.d.ts.map +1 -1
- package/dist/types/components/TokenProvider/TokenProvider.d.ts.map +1 -1
- package/dist/types/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/types/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
- package/dist/types/components/WindowProvider/WindowProvider.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/components/AlphaAvatar/Avatar.tsx +2 -0
- package/src/components/AlphaAvatarGroup/AvatarGroup.tsx +2 -0
- package/src/components/AlphaButton/Button.module.scss +42 -55
- package/src/components/AlphaButton/Button.tsx +2 -0
- package/src/components/AlphaDialogPrimitive/DialogPrimitive.tsx +2 -0
- package/src/components/AlphaFloatingButton/FloatingButton.module.scss +57 -77
- package/src/components/AlphaFloatingButton/FloatingButton.tsx +2 -0
- package/src/components/AlphaFloatingIconButton/FloatingIconButton.module.scss +45 -58
- package/src/components/AlphaFloatingIconButton/FloatingIconButton.tsx +2 -0
- package/src/components/AlphaIconButton/IconButton.tsx +2 -0
- package/src/components/AlphaLoader/Loader.tsx +2 -0
- package/src/components/AlphaStatusBadge/StatusBadge.tsx +2 -0
- package/src/components/AlphaToggleButton/AlphaToggleButton.stories.tsx +0 -1
- package/src/components/AlphaToggleButton/ToggleButton.module.scss +0 -24
- package/src/components/AlphaToggleButton/ToggleButton.tsx +3 -24
- package/src/components/AlphaToggleButton/ToggleButton.types.ts +0 -6
- package/src/components/AlphaToggleButtonGroup/ToggleButtonGroup.tsx +2 -0
- package/src/components/AlphaToggleEmojiButtonGroup/AlphaToggleEmojiButtonGroup.stories.tsx +66 -0
- package/src/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.module.scss +76 -0
- package/src/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.tsx +141 -0
- package/src/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.types.ts +62 -0
- package/src/components/AlphaToggleEmojiButtonGroup/index.ts +9 -0
- package/src/components/AlphaToggleEmojiButtonGroup/useToggleEmojiButtonSize.ts +62 -0
- package/src/components/AlphaTooltipPrimitive/TooltipPrimitive.tsx +2 -0
- package/src/components/AppProvider/AppProvider.tsx +2 -0
- package/src/components/AutoFocus/AutoFocus.tsx +2 -0
- package/src/components/Avatar/Avatar.tsx +2 -0
- package/src/components/AvatarGroup/AvatarGroup.tsx +2 -0
- package/src/components/Badge/Badge.tsx +2 -0
- package/src/components/Banner/Banner.tsx +2 -0
- package/src/components/BaseButton/BaseButton.tsx +2 -0
- package/src/components/BaseTagBadge/BaseTagBadge.tsx +2 -0
- package/src/components/Box/Box.tsx +2 -0
- package/src/components/Button/Button.tsx +2 -0
- package/src/components/ButtonGroup/ButtonGroup.tsx +2 -0
- package/src/components/Center/Center.tsx +2 -0
- package/src/components/CheckableAvatar/CheckableAvatar.tsx +2 -0
- package/src/components/Checkbox/Checkbox.tsx +2 -0
- package/src/components/ConfirmModal/ConfirmModal.tsx +2 -0
- package/src/components/Divider/Divider.tsx +2 -0
- package/src/components/Emoji/Emoji.tsx +3 -1
- package/src/components/FeatureProvider/FeatureProvider.tsx +2 -0
- package/src/components/FormControl/FormControl.tsx +2 -0
- package/src/components/FormGroup/FormGroup.tsx +2 -0
- package/src/components/FormHelperText/FormHelperText.tsx +2 -0
- package/src/components/FormLabel/FormLabel.tsx +2 -0
- package/src/components/Help/Help.tsx +2 -0
- package/src/components/Icon/Icon.tsx +2 -0
- package/src/components/KeyValueItem/KeyValueItem.tsx +2 -0
- package/src/components/LegacyIcon/LegacyIcon.tsx +2 -0
- package/src/components/LegacyStack/LegacyHStack/LegacyHStack.tsx +2 -0
- package/src/components/LegacyStack/LegacySpacer/LegacySpacer.tsx +2 -0
- package/src/components/LegacyStack/LegacyStack/LegacyStack.tsx +2 -0
- package/src/components/LegacyStack/LegacyStackItem/LegacyStackItem.tsx +2 -0
- package/src/components/LegacyStack/LegacyVStack/LegacyVStack.tsx +2 -0
- package/src/components/LegacyTooltip/LegacyTooltip.tsx +2 -0
- package/src/components/LegacyTooltip/LegacyTooltipContent.tsx +2 -0
- package/src/components/ListItem/ListItem.tsx +2 -0
- package/src/components/Modal/Modal.tsx +2 -0
- package/src/components/NavGroup/NavGroup.tsx +2 -0
- package/src/components/NavItem/NavItem.tsx +2 -0
- package/src/components/OutlineItem/OutlineItem.tsx +2 -0
- package/src/components/Overlay/Overlay.tsx +2 -0
- package/src/components/ProgressBar/ProgressBar.tsx +2 -0
- package/src/components/RadioGroup/RadioGroup.tsx +2 -0
- package/src/components/SectionLabel/SectionLabel.tsx +2 -0
- package/src/components/SegmentedControl/SegmentedControl.tsx +2 -0
- package/src/components/Select/Select.tsx +2 -0
- package/src/components/Slider/Slider.tsx +2 -0
- package/src/components/SmoothCornersBox/SmoothCornersBox.tsx +2 -0
- package/src/components/Spinner/Spinner.tsx +2 -0
- package/src/components/Stack/Stack.tsx +2 -0
- package/src/components/Status/Status.tsx +2 -0
- package/src/components/Switch/Switch.tsx +2 -0
- package/src/components/Tabs/Tabs.tsx +2 -0
- package/src/components/Tag/Tag.tsx +2 -0
- package/src/components/Text/Text.tsx +2 -0
- package/src/components/TextArea/TextArea.tsx +2 -0
- package/src/components/TextField/TextField.tsx +2 -0
- package/src/components/ThemeProvider/ThemeProvider.tsx +2 -0
- package/src/components/Toast/Toast.tsx +2 -0
- package/src/components/TokenProvider/TokenProvider.tsx +2 -0
- package/src/components/Tooltip/Tooltip.tsx +2 -0
- package/src/components/VisuallyHidden/VisuallyHidden.tsx +2 -0
- package/src/components/WindowProvider/WindowProvider.tsx +2 -0
- package/src/index.ts +1 -0
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
1
3
|
import React, { forwardRef } from 'react'
|
|
2
4
|
|
|
3
5
|
import { isBezierIcon } from '@channel.io/bezier-icons'
|
|
4
6
|
import * as TogglePrimitive from '@radix-ui/react-toggle'
|
|
5
7
|
import classNames from 'classnames'
|
|
6
8
|
|
|
7
|
-
import { AlphaLoader } from '~/src/components/AlphaLoader'
|
|
8
9
|
import { useToggleButtonContext } from '~/src/components/AlphaToggleButton/ToggleButtonContext'
|
|
9
10
|
import { BaseButton } from '~/src/components/BaseButton'
|
|
10
11
|
import { Icon, type IconSize } from '~/src/components/Icon'
|
|
@@ -43,7 +44,6 @@ export const ToggleButton = forwardRef<HTMLButtonElement, ToggleButtonProps>(
|
|
|
43
44
|
shape: shapeProps,
|
|
44
45
|
size = 'm',
|
|
45
46
|
className,
|
|
46
|
-
loading,
|
|
47
47
|
onSelectedChange,
|
|
48
48
|
...rest
|
|
49
49
|
},
|
|
@@ -70,12 +70,7 @@ export const ToggleButton = forwardRef<HTMLButtonElement, ToggleButtonProps>(
|
|
|
70
70
|
className
|
|
71
71
|
)}
|
|
72
72
|
>
|
|
73
|
-
<div
|
|
74
|
-
className={classNames(
|
|
75
|
-
styles.ButtonContent,
|
|
76
|
-
loading && styles.loading
|
|
77
|
-
)}
|
|
78
|
-
>
|
|
73
|
+
<div className={classNames(styles.ButtonContent)}>
|
|
79
74
|
<SideContent
|
|
80
75
|
size={ICON_SIZE}
|
|
81
76
|
content={prefixContent}
|
|
@@ -96,22 +91,6 @@ export const ToggleButton = forwardRef<HTMLButtonElement, ToggleButtonProps>(
|
|
|
96
91
|
content={suffixContent}
|
|
97
92
|
/>
|
|
98
93
|
</div>
|
|
99
|
-
|
|
100
|
-
{loading && (
|
|
101
|
-
<div
|
|
102
|
-
className={classNames(
|
|
103
|
-
styles.ButtonLoader,
|
|
104
|
-
// NOTE: Loader size is the same as icon size
|
|
105
|
-
styles[`size-${ICON_SIZE}`]
|
|
106
|
-
)}
|
|
107
|
-
>
|
|
108
|
-
<AlphaLoader
|
|
109
|
-
size="s"
|
|
110
|
-
className={styles.Loader}
|
|
111
|
-
variant="secondary"
|
|
112
|
-
/>
|
|
113
|
-
</div>
|
|
114
|
-
)}
|
|
115
94
|
</Comp>
|
|
116
95
|
</TogglePrimitive.Root>
|
|
117
96
|
)
|
|
@@ -17,12 +17,6 @@ interface ToggleButtonOwnProps {
|
|
|
17
17
|
*/
|
|
18
18
|
text: string
|
|
19
19
|
|
|
20
|
-
/**
|
|
21
|
-
* If `loading` is true, spinner will be shown, replacing the content.
|
|
22
|
-
* @default false
|
|
23
|
-
*/
|
|
24
|
-
loading?: boolean
|
|
25
|
-
|
|
26
20
|
/**
|
|
27
21
|
* Props that shows whether the button is selected.
|
|
28
22
|
* @default false
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
|
|
3
|
+
import type { Meta, StoryFn, StoryObj } from '@storybook/react'
|
|
4
|
+
|
|
5
|
+
import { Center } from '~/src/components/Center'
|
|
6
|
+
|
|
7
|
+
import {
|
|
8
|
+
ToggleEmojiButtonGroup,
|
|
9
|
+
ToggleEmojiButtonSource,
|
|
10
|
+
} from './ToggleEmojiButtonGroup'
|
|
11
|
+
import type {
|
|
12
|
+
ToggleEmojiButtonGroupProps,
|
|
13
|
+
ToggleEmojiButtonSourceProps,
|
|
14
|
+
} from './ToggleEmojiButtonGroup.types'
|
|
15
|
+
|
|
16
|
+
const meta: Meta<typeof ToggleEmojiButtonGroup> = {
|
|
17
|
+
component: ToggleEmojiButtonGroup,
|
|
18
|
+
}
|
|
19
|
+
export default meta
|
|
20
|
+
|
|
21
|
+
type ToggleButtonCompositionType = ToggleEmojiButtonGroupProps &
|
|
22
|
+
Pick<ToggleEmojiButtonSourceProps, 'variant'>
|
|
23
|
+
|
|
24
|
+
const Template: StoryFn<ToggleButtonCompositionType> = ({
|
|
25
|
+
fillDirection,
|
|
26
|
+
variant,
|
|
27
|
+
}) => {
|
|
28
|
+
return (
|
|
29
|
+
<Center
|
|
30
|
+
width="25vw"
|
|
31
|
+
height="15vh"
|
|
32
|
+
backgroundColor="bg-lounge"
|
|
33
|
+
>
|
|
34
|
+
<ToggleEmojiButtonGroup
|
|
35
|
+
defaultValue="blush"
|
|
36
|
+
fillDirection={fillDirection}
|
|
37
|
+
>
|
|
38
|
+
<ToggleEmojiButtonSource
|
|
39
|
+
variant={variant}
|
|
40
|
+
value="blush"
|
|
41
|
+
name="blush"
|
|
42
|
+
/>
|
|
43
|
+
<ToggleEmojiButtonSource
|
|
44
|
+
variant={variant}
|
|
45
|
+
value="grinning"
|
|
46
|
+
name="grinning"
|
|
47
|
+
/>
|
|
48
|
+
</ToggleEmojiButtonGroup>
|
|
49
|
+
</Center>
|
|
50
|
+
)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export const Primary = {
|
|
54
|
+
render: Template,
|
|
55
|
+
|
|
56
|
+
args: {
|
|
57
|
+
fillDirection: 'horizontal',
|
|
58
|
+
variant: 'primary',
|
|
59
|
+
},
|
|
60
|
+
parameters: {
|
|
61
|
+
design: {
|
|
62
|
+
type: 'link',
|
|
63
|
+
url: 'https://www.figma.com/design/fPXP9zfjZU9NyARnhTWL6o/Input?node-id=425-281&t=ktusTVyr8cD3cTlt-1',
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
} satisfies StoryObj<ToggleButtonCompositionType>
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
@use '../../styles/mixins/dimension';
|
|
2
|
+
|
|
3
|
+
.ToggleEmojiButtonGroup {
|
|
4
|
+
display: flex;
|
|
5
|
+
gap: var(--b-toggle-emoji-button-group-gap);
|
|
6
|
+
align-items: center;
|
|
7
|
+
justify-content: center;
|
|
8
|
+
|
|
9
|
+
/* stylelint-disable-next-line selector-class-pattern */
|
|
10
|
+
&:where(.fillDirection-horizontal) {
|
|
11
|
+
width: 100%;
|
|
12
|
+
|
|
13
|
+
& :where(.ToggleEmojiButtonSource) {
|
|
14
|
+
flex-grow: 1;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/* stylelint-disable-next-line selector-class-pattern */
|
|
19
|
+
&:where(.fillDirection-all) {
|
|
20
|
+
width: 100%;
|
|
21
|
+
height: 100%;
|
|
22
|
+
|
|
23
|
+
& :is(.ToggleEmojiButtonSource) {
|
|
24
|
+
max-width: 160px;
|
|
25
|
+
max-height: 160px;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.ToggleEmojiButtonSource {
|
|
31
|
+
position: relative;
|
|
32
|
+
|
|
33
|
+
display: flex;
|
|
34
|
+
align-items: center;
|
|
35
|
+
justify-content: center;
|
|
36
|
+
|
|
37
|
+
padding: 12px;
|
|
38
|
+
|
|
39
|
+
border-radius: var(--radius-12);
|
|
40
|
+
|
|
41
|
+
&:where(.size-m) {
|
|
42
|
+
@include dimension.square(var(--b-toggle-emoji-button-size));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
&:where(.variant-primary) {
|
|
46
|
+
background-color: var(--alpha-color-bg-grey-lightest);
|
|
47
|
+
box-shadow: var(--alpha-shadow-input-default);
|
|
48
|
+
|
|
49
|
+
&:where(&:hover) {
|
|
50
|
+
background-color: var(--alpha-color-bg-grey-lighter);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
&:where([data-state='on']) {
|
|
54
|
+
background-color: var(--alpha-color-bg-blue-lightest);
|
|
55
|
+
box-shadow: 0 0 0 1px var(--alpha-color-primary-bg-normal) inset;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
&:where(.variant-secondary) {
|
|
60
|
+
background-color: var(--alpha-color-bg-black-lightest);
|
|
61
|
+
|
|
62
|
+
&:where(&:hover) {
|
|
63
|
+
background-color: var(--alpha-color-bg-black-lighter);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
&:where([data-state='on']) {
|
|
67
|
+
background-color: var(--alpha-color-primary-bg-lighter);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
& :where(.ButtonContent) {
|
|
72
|
+
display: flex;
|
|
73
|
+
align-items: center;
|
|
74
|
+
justify-content: center;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import React, { type CSSProperties, forwardRef, useState } from 'react'
|
|
2
|
+
|
|
3
|
+
import * as ToggleGroup from '@radix-ui/react-toggle-group'
|
|
4
|
+
import classNames from 'classnames'
|
|
5
|
+
|
|
6
|
+
import useMergeRefs from '~/src/hooks/useMergeRefs'
|
|
7
|
+
import { cssDimension } from '~/src/utils/style'
|
|
8
|
+
|
|
9
|
+
import {
|
|
10
|
+
EMOJI_BUTTON_GROUP_GAP,
|
|
11
|
+
EMOJI_BUTTON_SIZE,
|
|
12
|
+
useToggleEmojiButtonSize,
|
|
13
|
+
} from '~/src/components/AlphaToggleEmojiButtonGroup/useToggleEmojiButtonSize'
|
|
14
|
+
import { BaseButton } from '~/src/components/BaseButton'
|
|
15
|
+
import { Emoji } from '~/src/components/Emoji'
|
|
16
|
+
|
|
17
|
+
import {
|
|
18
|
+
type ToggleEmojiButtonGroupProps,
|
|
19
|
+
type ToggleEmojiButtonSourceProps,
|
|
20
|
+
} from './ToggleEmojiButtonGroup.types'
|
|
21
|
+
|
|
22
|
+
import styles from './ToggleEmojiButtonGroup.module.scss'
|
|
23
|
+
|
|
24
|
+
const EMOJI_SIZE = 30
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Toggle Button that contains `Emoji` component with size fixed to 30.
|
|
28
|
+
* It should be used with `ToggleEmojiButtonGroup` component.
|
|
29
|
+
* @example
|
|
30
|
+
* ```tsx
|
|
31
|
+
* <ToggleEmojiButtonSource
|
|
32
|
+
* content={
|
|
33
|
+
* <Emoji
|
|
34
|
+
* imageUrl="https://cf.exp.channel.io/asset/emoji/images/80/a.png"
|
|
35
|
+
* name="A"
|
|
36
|
+
* />
|
|
37
|
+
* }
|
|
38
|
+
* />
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export const ToggleEmojiButtonSource = forwardRef<
|
|
42
|
+
HTMLButtonElement,
|
|
43
|
+
ToggleEmojiButtonSourceProps
|
|
44
|
+
>(function ToggleEmojiButtonSource(
|
|
45
|
+
{ name, variant, className, selected, size = 'm', value, onResize, ...rest },
|
|
46
|
+
forwardedRef
|
|
47
|
+
) {
|
|
48
|
+
return (
|
|
49
|
+
<ToggleGroup.Item
|
|
50
|
+
value={value}
|
|
51
|
+
asChild
|
|
52
|
+
>
|
|
53
|
+
<BaseButton
|
|
54
|
+
ref={forwardedRef}
|
|
55
|
+
className={classNames(
|
|
56
|
+
styles.ToggleEmojiButtonSource,
|
|
57
|
+
styles[`size-${size}`],
|
|
58
|
+
styles[`variant-${variant}`],
|
|
59
|
+
className
|
|
60
|
+
)}
|
|
61
|
+
{...rest}
|
|
62
|
+
>
|
|
63
|
+
<div className={classNames(styles.ButtonContent)}>
|
|
64
|
+
<Emoji
|
|
65
|
+
name={name}
|
|
66
|
+
size={`${EMOJI_SIZE}`}
|
|
67
|
+
/>
|
|
68
|
+
</div>
|
|
69
|
+
</BaseButton>
|
|
70
|
+
</ToggleGroup.Item>
|
|
71
|
+
)
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Component for grouping `ToggleEmojiButtonSource`.
|
|
76
|
+
* @example
|
|
77
|
+
* ```tsx
|
|
78
|
+
* <ToggleEmojiButtonGroup
|
|
79
|
+
* fillDirection="horizontal"
|
|
80
|
+
* >
|
|
81
|
+
* <ToggleEmojiButtonSource content={<Emoji />} />
|
|
82
|
+
* <ToggleEmojiButtonSource content={<Emoji />} />
|
|
83
|
+
* </ToggleEmojiButtonGroup>
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export const ToggleEmojiButtonGroup = forwardRef<
|
|
87
|
+
HTMLDivElement,
|
|
88
|
+
ToggleEmojiButtonGroupProps
|
|
89
|
+
>(function ToggleEmojiButtonGroup(
|
|
90
|
+
{
|
|
91
|
+
fillDirection,
|
|
92
|
+
value,
|
|
93
|
+
className,
|
|
94
|
+
defaultValue,
|
|
95
|
+
children,
|
|
96
|
+
style,
|
|
97
|
+
dir = 'ltr',
|
|
98
|
+
onValueChange,
|
|
99
|
+
...rest
|
|
100
|
+
},
|
|
101
|
+
forwardedRef
|
|
102
|
+
) {
|
|
103
|
+
const [container, setContainer] = useState<null | HTMLDivElement>(null)
|
|
104
|
+
const mergedRefs = useMergeRefs(setContainer, forwardedRef)
|
|
105
|
+
const shouldResizeButton = fillDirection === 'all'
|
|
106
|
+
const resizedButtonSize = useToggleEmojiButtonSize({
|
|
107
|
+
container,
|
|
108
|
+
enabled: shouldResizeButton,
|
|
109
|
+
buttonCount: React.Children.count(children),
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
return (
|
|
113
|
+
<ToggleGroup.Root
|
|
114
|
+
type="single"
|
|
115
|
+
defaultValue={defaultValue}
|
|
116
|
+
onValueChange={onValueChange}
|
|
117
|
+
value={value}
|
|
118
|
+
ref={mergedRefs}
|
|
119
|
+
style={
|
|
120
|
+
{
|
|
121
|
+
'--b-toggle-emoji-button-emoji-size': cssDimension(EMOJI_SIZE),
|
|
122
|
+
'--b-toggle-emoji-button-size': cssDimension(
|
|
123
|
+
shouldResizeButton ? resizedButtonSize : EMOJI_BUTTON_SIZE
|
|
124
|
+
),
|
|
125
|
+
'--b-toggle-emoji-button-group-gap': cssDimension(
|
|
126
|
+
EMOJI_BUTTON_GROUP_GAP
|
|
127
|
+
),
|
|
128
|
+
...style,
|
|
129
|
+
} as CSSProperties
|
|
130
|
+
}
|
|
131
|
+
className={classNames(
|
|
132
|
+
styles.ToggleEmojiButtonGroup,
|
|
133
|
+
fillDirection && styles[`fillDirection-${fillDirection}`],
|
|
134
|
+
className
|
|
135
|
+
)}
|
|
136
|
+
{...rest}
|
|
137
|
+
>
|
|
138
|
+
{children}
|
|
139
|
+
</ToggleGroup.Root>
|
|
140
|
+
)
|
|
141
|
+
})
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type BezierComponentProps, type SizeProps } from '~/src/types/props'
|
|
2
|
+
|
|
3
|
+
interface ToggleEmojiButtonSourceOwnProps {
|
|
4
|
+
/**
|
|
5
|
+
* Types of visual styles for button.
|
|
6
|
+
* @default 'primary'
|
|
7
|
+
*/
|
|
8
|
+
variant: 'primary' | 'secondary'
|
|
9
|
+
/**
|
|
10
|
+
* Props that shows whether the button is selected.
|
|
11
|
+
* @default false
|
|
12
|
+
*/
|
|
13
|
+
selected?: boolean
|
|
14
|
+
/**
|
|
15
|
+
* Name of emoji in the button.
|
|
16
|
+
*/
|
|
17
|
+
name: string
|
|
18
|
+
/**
|
|
19
|
+
* Controlled value of the button.
|
|
20
|
+
*/
|
|
21
|
+
value: string
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
interface ToggleEmojiButtonGroupOwnProps {
|
|
25
|
+
/**
|
|
26
|
+
* Growing direction of button.
|
|
27
|
+
* @default undefined
|
|
28
|
+
*/
|
|
29
|
+
fillDirection?: 'horizontal' | 'all'
|
|
30
|
+
/**
|
|
31
|
+
* Controlled value of the button item to select.
|
|
32
|
+
* should be used with `onValueChange`.
|
|
33
|
+
*/
|
|
34
|
+
value?: string
|
|
35
|
+
/**
|
|
36
|
+
* The value of the button to show as selected when initially rendered.
|
|
37
|
+
* Use when you do not need to control the state of the items.
|
|
38
|
+
*/
|
|
39
|
+
defaultValue?: string
|
|
40
|
+
/**
|
|
41
|
+
*
|
|
42
|
+
* @default 'ltr'
|
|
43
|
+
* The reading direction of the toggle group.
|
|
44
|
+
*/
|
|
45
|
+
dir?: 'ltr' | 'rtl'
|
|
46
|
+
/**
|
|
47
|
+
* Event handler called when the value changes.
|
|
48
|
+
*/
|
|
49
|
+
onValueChange?: (value: string) => void
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export interface ToggleEmojiButtonGroupProps
|
|
53
|
+
extends Omit<BezierComponentProps<'div'>, 'dir' | 'defaultValue'>,
|
|
54
|
+
ToggleEmojiButtonGroupOwnProps {}
|
|
55
|
+
|
|
56
|
+
export interface ToggleEmojiButtonSourceProps
|
|
57
|
+
extends Omit<
|
|
58
|
+
BezierComponentProps<'button'>,
|
|
59
|
+
keyof ToggleEmojiButtonSourceOwnProps
|
|
60
|
+
>,
|
|
61
|
+
SizeProps<'m'>,
|
|
62
|
+
ToggleEmojiButtonSourceOwnProps {}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type {
|
|
2
|
+
ToggleEmojiButtonGroupProps as AlphaToggleEmojiButtonGroupProps,
|
|
3
|
+
ToggleEmojiButtonSourceProps as AlphaToggleEmojiButtonSourceProps,
|
|
4
|
+
} from './ToggleEmojiButtonGroup.types'
|
|
5
|
+
|
|
6
|
+
export {
|
|
7
|
+
ToggleEmojiButtonGroup as AlphaToggleEmojiButtonGroup,
|
|
8
|
+
ToggleEmojiButtonSource as AlphaToggleEmojiButtonSource,
|
|
9
|
+
} from './ToggleEmojiButtonGroup'
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { useCallback, useEffect, useState } from 'react'
|
|
2
|
+
|
|
3
|
+
export const EMOJI_BUTTON_GROUP_GAP = 6
|
|
4
|
+
export const EMOJI_BUTTON_SIZE = 54
|
|
5
|
+
|
|
6
|
+
interface UseToggleEmojiButtonSizeProps {
|
|
7
|
+
container: HTMLDivElement | null
|
|
8
|
+
enabled: boolean
|
|
9
|
+
buttonCount: number
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function useToggleEmojiButtonSize({
|
|
13
|
+
container,
|
|
14
|
+
enabled,
|
|
15
|
+
buttonCount,
|
|
16
|
+
}: UseToggleEmojiButtonSizeProps) {
|
|
17
|
+
const [buttonSize, setButtonSize] = useState(EMOJI_BUTTON_SIZE)
|
|
18
|
+
|
|
19
|
+
const adjustButtonSize = useCallback(() => {
|
|
20
|
+
if (!container || !enabled) {
|
|
21
|
+
return
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const containerWidth = container.clientWidth
|
|
25
|
+
const containerHeight = container.clientHeight
|
|
26
|
+
const size = Math.max(
|
|
27
|
+
Math.min(
|
|
28
|
+
(containerWidth - EMOJI_BUTTON_GROUP_GAP * (buttonCount - 1)) /
|
|
29
|
+
buttonCount,
|
|
30
|
+
containerHeight - EMOJI_BUTTON_GROUP_GAP
|
|
31
|
+
),
|
|
32
|
+
EMOJI_BUTTON_SIZE
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
setButtonSize(size)
|
|
36
|
+
}, [buttonCount, container, enabled])
|
|
37
|
+
|
|
38
|
+
useEffect(
|
|
39
|
+
function setResizeObserver() {
|
|
40
|
+
let resizeObserver: ResizeObserver | null = null
|
|
41
|
+
|
|
42
|
+
if (enabled && container) {
|
|
43
|
+
resizeObserver = new ResizeObserver(() => {
|
|
44
|
+
adjustButtonSize()
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
resizeObserver.observe(container)
|
|
48
|
+
container.addEventListener('resize', adjustButtonSize)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return () => {
|
|
52
|
+
if (container) {
|
|
53
|
+
resizeObserver?.unobserve(container)
|
|
54
|
+
container?.removeEventListener('resize', adjustButtonSize)
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
[adjustButtonSize, container, enabled]
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
return buttonSize
|
|
62
|
+
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
1
3
|
import React, { type CSSProperties, forwardRef } from 'react'
|
|
2
4
|
|
|
3
5
|
import classNames from 'classnames'
|
|
@@ -12,7 +14,7 @@ import styles from './Emoji.module.scss'
|
|
|
12
14
|
export const EMOJI_TEST_ID = 'bezier-emoji'
|
|
13
15
|
|
|
14
16
|
const getEmojiUrl = (name: EmojiProps['name'], size: '160' | '80' | '44') => {
|
|
15
|
-
return `https://cf${isDev() ? '.exp' : ''}.channel.io/asset/emoji/images/${size}/${name}.png`
|
|
17
|
+
return `https://cf${isDev() ? '.exp' : ''}.channel.io/asset/emoji/images/${size}/${encodeURIComponent(name)}.png`
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
/**
|