Skip to content
Snippets Groups Projects
Button.tsx 1.36 KiB
Newer Older
insert's avatar
insert committed
import styled, { css } from "styled-components";

interface Props {
    readonly contrast?: boolean;
    readonly error?: boolean;
insert's avatar
insert committed
}
insert's avatar
insert committed

export default styled.button<Props>`
insert's avatar
insert committed
    z-index: 1;
    padding: 8px;
    font-size: 16px;
    text-align: center;
insert's avatar
insert committed

insert's avatar
insert committed
    transition: 0.2s ease opacity;
    transition: 0.2s ease background-color;
insert's avatar
insert committed

insert's avatar
insert committed
    background: var(--primary-background);
insert's avatar
insert committed
    color: var(--foreground);

insert's avatar
insert committed
    border-radius: 6px;
    cursor: pointer;
insert's avatar
insert committed
    border: none;

insert's avatar
insert committed
    &:hover {
        background: var(--secondary-header);
    }
insert's avatar
insert committed

    &:disabled {
        background: var(--primary-background);
    }

    &:active {
        background: var(--secondary-background);
    }

insert's avatar
insert committed
    ${(props) =>
        props.contrast &&
        css`
            padding: 4px 8px;
insert's avatar
insert committed
            background: var(--secondary-header);

insert's avatar
insert committed
            &:hover {
                background: var(--primary-header);
            }
insert's avatar
insert committed

insert's avatar
insert committed
            &:disabled {
                background: var(--secondary-header);
            }
insert's avatar
insert committed

insert's avatar
insert committed
            &:active {
                background: var(--secondary-background);
            }
        `}
insert's avatar
insert committed

insert's avatar
insert committed
    ${(props) =>
        props.error &&
        css`
            color: white;
insert's avatar
insert committed
            background: var(--error);
insert's avatar
insert committed

            &:hover {
                filter: brightness(1.2);
            }

            &:disabled {
                background: var(--error);
            }
        `}
insert's avatar
insert committed
`;