import React, { ReactHTML, ReactNode, MouseEvent } from 'react'; import { type TStyle, useClassnames } from '../../hooks/use-classnames'; import style from './index.module.pcss'; export interface IProps { /** * Параметр `children` может содержать любые дочерние элементы, например строки, числа, другие компоненты React и т. д. */ readonly children?: ReactNode, /** * Параметр `className` используется для добавления пользовательских CSS классов к компоненту. Это позволяет настраивать внешний вид компонента с помощью пользовательских стилей. */ readonly className?: string | TStyle, /** * При использовании `presetStyle` компонент будет автоматически применять стили, соответствующие выбранному значению. */ readonly presetStyle?: 'orange' | 'dark-gray' | 'purple', /** * При использовании `presetSize` компонент будет автоматически применять размер, соответствующий выбранному значению. */ readonly presetSize?: 'small' | 'big', /** * Параметр `tagName` используется для указания HTML-тега, который будет использоваться для отображения компонента или его части. */ readonly tagName?: keyof ReactHTML, /** * Обработчик события клика на компоненте. */ readonly onClick?: (e: MouseEvent) => void } /** * Компонент `Counter` используется для отображения информации в виде счетчика, которые могут быть прикреплены к другим элементам интерфейса. */ export const Counter = ({ tagName: Component = 'span', presetSize = 'small', presetStyle = 'orange', ...props }: IProps) => { const cn = useClassnames(style, props.className); return ( ); };