import {
    AnchorHTMLAttributes,
    ButtonHTMLAttributes,
    DetailedHTMLProps,
} from 'react';
import Link from 'next/link';
import { UrlObject } from 'url';

interface CustomProps {
    noDefaultColous?: boolean;
}

export default function Button({
    className,
    noDefaultColous,
    ...props
}: DetailedHTMLProps<
    ButtonHTMLAttributes<HTMLButtonElement>,
    HTMLButtonElement
> &
    CustomProps) {
    const classes = [className];
    classes.push(
        'p-2',
        'rounded',
        'shadow',
        'shadow-slate-800',
        'transition-colors'
    );
    if (!noDefaultColous) {
        classes.push(
            'bg-slate-600',
            'text-slate-50',
            'hover:bg-slate-500',
            'disabled:bg-slate-900',
            'disabled:text-slate-200'
        );
    }
    return <button className={classes.join(' ')} {...props} />;
}

type LinkButtonProps = Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> & {
    href: string | UrlObject;
};

export function LinkButton({
    className,
    children,
    href,
    ...props
}: LinkButtonProps) {
    return (
        <Link href={href}>
            <a
                className={'text-blue-200 hover:underline ' + (className || '')}
                {...props}
            >
                {children}
            </a>
        </Link>
    );
}
