import React, { type FC } from 'react';
import styled from '@emotion/styled';

const BarsSpinnerBox = styled.div<{ bars: number }>`
  position: relative;
  width: 35px;
  height: 35px;

  & > div {
    position: absolute;
    width: 2px;
    height: 8px;
    background-color: #25363f;
    opacity: 0.05;
    animation: fadeit 0.8s linear infinite;
  }

  ${({ bars }: { bars: number }) =>
    Array(bars)
      .fill(null)
      .map(
        (_, i) => `
  & > div:nth-child(${i + 1}) {
    transform: rotate(${((360 / bars) * i).toFixed(2)}deg) translate(0, -12px);
    animation-delay:${((0.8 / bars) * (i + 1)).toFixed(2)}s;
  }
  `,
      )} @keyframes fadeit {
    0% {
      opacity: 1;
    }
    100% {
      opacity: 0;
    }
  }
`;

export const BarsSpinner: FC<{ bars?: number }> = ({ bars = 16 }) => {
  return (
    <BarsSpinnerBox bars={bars}>
      {Array(bars)
        .fill(null)
        .map((_, i) => (
          <div key={i} />
        ))}
    </BarsSpinnerBox>
  );
};
