import { createElement, ReactHTML, ReactNode } from 'react'; import { type TStyle, useClassnames } from '../../hooks/use-classnames'; import style from './index.module.pcss'; export interface IProps { /** * Уникальный идентификатор компонента. **/ readonly id?: string, /** * Один или несколько классов для стилизации компонента. **/ readonly className?: TStyle | string, /** * Ориентация кнопок в группе. **/ readonly direction?: 'row' | 'column', /** * Предустановленный стиль для компонента. **/ readonly presetStyle?: 'desktop' | 'mobile', /** * Кнопки, которые нужно группировать. **/ readonly children?: ReactNode, /** * Тег, который будет использоваться для рендеринга компонента. **/ readonly tagName?: keyof ReactHTML | '' } /** * Компонент для группирования кнопок. **/ export const ButtonGroup = ({ direction = 'column', tagName = 'div', presetStyle = 'desktop', ...props }: IProps) => { const cn = useClassnames(style, props.className); return createElement(tagName || 'div', { id : props.id, children : props.children, className: cn('button-group', { [`button-group_${direction}`] : direction, [`button-group_${presetStyle}`]: presetStyle }) }); };