aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/atoms/loaders/spinner/spinner.module.scss
blob: 97882a47e4a570cbc685b4ca8a743f41d048adba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
@use "../../../../styles/abstracts/functions" as fun;

.wrapper {
  display: flex;
  align-items: center;
  gap: var(--spacing-xs);
  width: fit-content;

  &--left {
    flex-flow: row-reverse wrap;
  }

  &--right {
    flex-flow: row wrap;
  }

  &--bottom {
    flex-flow: column nowrap;
  }

  &--top {
    flex-flow: column-reverse nowrap;
  }
}

.icon {
  --ball-size: #{fun.convert-px(8)};

  display: flex;
  flex-flow: row nowrap;
  justify-content: space-between;
  width: calc((var(--ball-size) * 3) + var(--spacing-xs));

  &__ball {
    width: var(--ball-size);
    height: var(--ball-size);
    background: linear-gradient(
      to right,
      var(--color-primary-light) 0%,
      var(--color-primary-lighter) 100%
    );
    border-radius: 50%;
    animation: spinner 1.4s infinite ease-in-out both;

    &:first-child {
      animation-delay: -0.32s;
    }

    &:nth-child(2) {
      animation-delay: -0.16s;
    }
  }
}

.body {
  color: var(--color-primary-darker);
}

@keyframes spinner {
  0%,
  80%,
  100% {
    transform: scale(0);
  }

  40% {
    transform: scale(1);
  }
}