summaryrefslogtreecommitdiffstats
path: root/src/components/Tooltip/Tooltip.module.scss
blob: fb9fd946ab1cb2162d8984d54cd2fec69e9e9584 (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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
@use "@styles/abstracts/functions" as fun;
@use "@styles/abstracts/mixins" as mix;

.title {
  padding: var(--spacing-2xs) var(--spacing-xs);
  position: absolute;
  top: calc(var(--spacing-sm) * -1);
  left: var(--spacing-lg);
  background: var(--color-bg);
  border: fun.convert-px(1) solid var(--color-primary-dark);
  box-shadow: fun.convert-px(1) fun.convert-px(1) 0 0 var(--color-shadow);
  color: var(--color-primary-darker);
  font-size: var(--font-size-sm);
  font-variant: small-caps;
  font-weight: 500;

  @include mix.media("screen") {
    @include mix.dimensions("md") {
      left: var(--spacing-md);
    }
  }

  &::before {
    content: "?";
    padding: var(--spacing-2xs);
    position: absolute;
    top: fun.convert-px(-1);
    bottom: fun.convert-px(-1);
    right: 100%;
    background: var(--color-primary-dark);
    border: fun.convert-px(1) solid var(--color-primary-dark);
    box-shadow: fun.convert-px(1) fun.convert-px(1) 0 0 var(--color-shadow);
    color: var(--color-fg-inverted);
    font-weight: 600;
  }
}

.message {
  transition: all 0.5s ease-in-out 0;
}

.wrapper {
  padding: var(--spacing-lg) var(--spacing-md) var(--spacing-sm)
    var(--spacing-md);
  position: absolute;
  top: fun.convert-px(-30);
  left: fun.convert-px(15);
  right: fun.convert-px(15);
  background: var(--color-bg);
  border: fun.convert-px(2) solid var(--color-primary-dark);
  border-radius: fun.convert-px(3);
  box-shadow: fun.convert-px(1) fun.convert-px(1) 0 0 var(--color-shadow),
    fun.convert-px(2) fun.convert-px(2) fun.convert-px(1) fun.convert-px(1)
      var(--color-shadow-light);

  @include mix.media("screen") {
    @include mix.dimensions("sm") {
      padding-top: var(--spacing-md);
      bottom: unset;
      left: fun.convert-px(15);
      right: fun.convert-px(15);
      top: calc(100% - #{fun.convert-px(4)});
    }
  }

  ul,
  p {
    margin: 0;
    padding: 0;
  }
}

.hidden {
  visibility: hidden;
  opacity: 0;
  max-height: 0;
  transition: all 0.5s ease-in-out 0s, opacity 0.3s ease-in-out 0.2s;

  .message,
  .title {
    opacity: 0;
  }

  .message {
    transition: all 0.3s ease-in-out 0s;
  }

  .title {
    transition: all 0.2s ease-in-out 0.2s;
  }
}

.visible {
  visibility: visible;
  opacity: 1;
  max-height: 100%;
  transition: all 0.8s ease-in-out 0s, opacity 0.7s ease-in-out 0.2s;

  .message,
  .title {
    opacity: 1;
  }

  .message {
    transition: all 0.5s ease-in-out 0.2s;
  }

  .title {
    transition: all 0.4s ease-in-out 0s;
  }
}