import { Component, JSX, splitProps } from 'solid-js' import styles from '../styles/Button.module.css' export interface ButtonProps extends JSX.ButtonHTMLAttributes { variant?: 'primary' | 'secondary' | 'danger' size?: 'small' | 'medium' | 'large' loading?: boolean fullWidth?: boolean } const Button: Component = (props) => { const [local, rest] = splitProps(props, ['variant', 'size', 'loading', 'fullWidth', 'class', 'children']) const classes = () => { const baseClass = styles.button const variantClass = styles[`button-${local.variant || 'primary'}`] const sizeClass = styles[`button-${local.size || 'medium'}`] const loadingClass = local.loading ? styles['button-loading'] : '' const fullWidthClass = local.fullWidth ? styles['button-full-width'] : '' const customClass = local.class || '' return [baseClass, variantClass, sizeClass, loadingClass, fullWidthClass, customClass] .filter(Boolean) .join(' ') } return ( ) } export default Button