import styled from '@emotion/styled';

import { colors, colorsRaw, transitions, text } from './styles';

const stateColors = {
  default: {
    background: colors.textFieldBorder,
    text: colors.controlLabel,
  },
  active: {
    background: colors.active,
    text: colors.textLight,
  },
  error: {
    background: colors.errorText,
    text: colorsRaw.white,
  },
};

function getStateColors({ isActive, hasErrors }) {
  if (hasErrors) return stateColors.error;
  if (isActive) return stateColors.active;
  return stateColors.default;
}

const FieldLabel = styled.label`
  ${text.fieldLabel};
  color: ${props => getStateColors(props).text};
  background-color: ${props => getStateColors(props).background};
  display: inline-block;
  border: 0;
  border-radius: 3px 3px 0 0;
  padding: 3px 6px 2px;
  margin: 0;
  transition: all ${transitions.main};
  position: relative;

  /**
   * Faux outside curve into top of input
   */
  &:before,
  &:after {
    content: '';
    display: block;
    position: absolute;
    top: 0;
    right: -4px;
    height: 100%;
    width: 4px;
    background-color: inherit;
  }

  &:after {
    border-bottom-left-radius: 3px;
    background-color: #fff;
  }
`;

export default FieldLabel;
