import type { CSSProperties } from 'react'
import { Children, forwardRef, useState } from 'react'
import * as ToggleGroup from '@radix-ui/react-toggle-group'
import classNames from 'classnames'
import useMergeRefs from '~/src/hooks/useMergeRefs'
import { cssDimension } from '~/src/utils/style'
import {
EMOJI_BUTTON_GROUP_GAP,
EMOJI_BUTTON_SIZE,
useToggleEmojiButtonSize,
} from '~/src/components/AlphaToggleEmojiButtonGroup/useToggleEmojiButtonSize'
import { BaseButton } from '~/src/components/BaseButton'
import { Emoji } from '~/src/components/Emoji'
import {
type ToggleEmojiButtonGroupProps,
type ToggleEmojiButtonSourceProps,
} from './ToggleEmojiButtonGroup.types'
import styles from './ToggleEmojiButtonGroup.module.scss'
const EMOJI_SIZE = 30
/**
* Toggle Button that contains `Emoji` component with size fixed to 30.
* It should be used with `ToggleEmojiButtonGroup` component.
* @example
* ```tsx
*
* }
* />
* ```
*/
export const ToggleEmojiButtonSource = forwardRef<
HTMLButtonElement,
ToggleEmojiButtonSourceProps
>(function ToggleEmojiButtonSource(
{ name, variant, className, selected, size = 'm', value, onResize, ...rest },
forwardedRef
) {
return (
)
})
/**
* Component for grouping `ToggleEmojiButtonSource`.
* @example
* ```tsx
*
* } />
* } />
*
* ```
*/
export const ToggleEmojiButtonGroup = forwardRef<
HTMLDivElement,
ToggleEmojiButtonGroupProps
>(function ToggleEmojiButtonGroup(
{
fillDirection,
value,
className,
defaultValue,
children,
style,
dir = 'ltr',
onValueChange,
...rest
},
forwardedRef
) {
const [container, setContainer] = useState(null)
const mergedRefs = useMergeRefs(setContainer, forwardedRef)
const shouldResizeButton = fillDirection === 'all'
const resizedButtonSize = useToggleEmojiButtonSize({
container,
enabled: shouldResizeButton,
buttonCount: Children.count(children),
})
return (
{children}
)
})