import React, { useEffect, useState } from 'react' import classNames from 'classnames' import Link from 'next/link' import AddIcon from '~public/icons/Add.svg' import CheckIcon from '~public/icons/LargeCheck.svg' import CrossIcon from '~public/icons/Cross.svg' import EditIcon from '~public/icons/Edit.svg' import LinkIcon from '~public/icons/Link.svg' import MenuIcon from '~public/icons/Menu.svg' import SaveIcon from '~public/icons/Save.svg' import SettingsIcon from '~public/icons/Settings.svg' import './index.scss' import { ButtonType } from '~utils/enums' interface Props { active?: boolean disabled?: boolean classes?: string[] icon?: string type?: ButtonType children?: React.ReactNode onClick?: (event: React.MouseEvent) => void } const Button = (props: Props) => { // States const [active, setActive] = useState(false) const [disabled, setDisabled] = useState(false) const [pressed, setPressed] = useState(false) const [buttonType, setButtonType] = useState(ButtonType.Base) const classes = classNames( { Button: true, Active: active, 'btn-pressed': pressed, 'btn-disabled': disabled, save: props.icon === 'save', destructive: props.type == ButtonType.Destructive, }, props.classes ) useEffect(() => { if (props.active) setActive(props.active) if (props.disabled) setDisabled(props.disabled) if (props.type) setButtonType(props.type) }, [props.active, props.disabled, props.type]) const addIcon = ( ) const menuIcon = ( ) const linkIcon = ( ) const checkIcon = ( ) const crossIcon = ( ) const editIcon = ( ) const saveIcon = ( ) const settingsIcon = ( ) function getIcon() { let icon: React.ReactNode switch (props.icon) { case 'new': icon = addIcon break case 'menu': icon = menuIcon break case 'link': icon = linkIcon break case 'check': icon = checkIcon break case 'cross': icon = crossIcon break case 'edit': icon = editIcon break case 'save': icon = saveIcon break case 'settings': icon = settingsIcon break } return icon } function handleMouseDown() { setPressed(true) } function handleMouseUp() { setPressed(false) } return ( ) } export default Button