// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

import React from 'react';
import styled from 'styled-components';

import { Direction } from '../../../../types';
import Svg, { SvgProps } from '../Svg';

const dirTransform = {
  up: '0',
  right: '90',
  down: '180',
  left: '270',
};

interface CaretProps extends SvgProps {
  /** Defines the direction of the caret. */
  direction?: Direction;
  className?: string;
}

const StyledCaret = styled(Svg)<CaretProps>`
  transform: ${({ direction }) =>
    `rotate(${dirTransform[direction || 'up']}deg)`};
`;

export const Caret: React.FC<React.PropsWithChildren<CaretProps>> = ({
  direction = 'up',
  ...rest
}) => {
  return (
    <StyledCaret direction={direction} {...rest}>
      <path
        transform-origin="center"
        d="M8.824 13.88c-.21.18-.526.154-.705-.056-.159-.187-.156-.457-.006-.64l.063-.065 3.523-3c.165-.14.397-.156.577-.05l.074.052 3.477 3c.209.18.232.497.052.706-.16.185-.428.224-.632.104l-.074-.052-3.151-2.72-3.198 2.722z"
      />
    </StyledCaret>
  );
};

Caret.displayName = 'Caret';

export default Caret;
