import './index.css' import React, { ForwardedRef, ReactNode, forwardRef, useMemo, type JSX, } from 'react' import { useClassNames } from '../../_lib/useClassNames' type Variant = 'Primary' | 'Default' | 'Overlay' | 'Danger' | 'Navigation' type Size = 'S' | 'M' export type ButtonProps = { children?: ReactNode variant?: Variant size?: Size fullWidth?: boolean isActive?: boolean /** * The component used for root element. * @type T extends React.ElementType = 'button' */ component?: T } & Omit, 'children'> const Button = forwardRef(function Button( { variant, fullWidth, size, className, component, isActive, ...props }: ButtonProps, ref: ForwardedRef, ) { const Component = useMemo(() => component ?? 'button', [component]) const classNames = useClassNames('charcoal-button', className) return ( ) }) as ( p: 'button' extends T ? ButtonProps<'button'> : ButtonProps & { component: T // required }, ) => JSX.Element export default Button