import React, { forwardRef } from 'react' import { classNames } from '../utils/classNames' export interface ButtonBaseProps extends React.HTMLAttributes { component?: React.ElementType children?: React.ReactNode disabled?: boolean onClick?: React.MouseEventHandler onFocus?: React.FocusEventHandler onBlur?: React.FocusEventHandler tabIndex?: number type?: 'button' | 'submit' | 'reset' } export const ButtonBase = forwardRef(function ButtonBase( { component: Component = 'button', className, disabled = false, children, onClick, onFocus, onBlur, tabIndex = 0, type = 'button', ...props }, ref ) { return ( {children} ) }) export interface InputBaseProps extends Omit, 'onChange' | 'defaultValue' | 'onFocus' | 'onBlur'> { disabled?: boolean error?: boolean fullWidth?: boolean multiline?: boolean rows?: number minRows?: number maxRows?: number startAdornment?: React.ReactNode endAdornment?: React.ReactNode inputComponent?: React.ElementType inputProps?: React.InputHTMLAttributes | React.TextareaHTMLAttributes inputRef?: React.Ref value?: string | number defaultValue?: string | number onChange?: React.ChangeEventHandler onFocus?: React.FocusEventHandler onBlur?: React.FocusEventHandler placeholder?: string readOnly?: boolean required?: boolean type?: string } export const InputBase = forwardRef(function InputBase( { className, disabled = false, error = false, fullWidth = false, multiline = false, rows, minRows, maxRows, startAdornment, endAdornment, inputComponent: InputComponent = 'input', inputProps = {}, inputRef, value, defaultValue, onChange, onFocus, onBlur, placeholder, readOnly = false, required = false, type = 'text', ...props }, ref ) { const inputElement = multiline ? (