@neo-design/foundations 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,190 @@
1
+ /* packages/foundations/css/brand-loader.css — emitted without comments. The reasoning behind each decision lives in Neo's source repository. */
2
+
3
+ .brand-loader-shell {
4
+ container-type: inline-size;
5
+ container-name: brand-loader;
6
+ display: flex;
7
+ flex-direction: column;
8
+ justify-content: center;
9
+ align-items: center;
10
+ min-height: 100dvh;
11
+ }
12
+
13
+ .brand-loader {
14
+ display: flex;
15
+ flex-direction: column;
16
+ justify-content: center;
17
+ align-items: center;
18
+ gap: var(--neo-space-lg-rem);
19
+ width: 100%;
20
+ max-width: 280px;
21
+ margin-inline: auto;
22
+ }
23
+
24
+ @container brand-loader (min-width: 720px) {
25
+ .brand-loader { max-width: 400px; }
26
+ }
27
+
28
+ .brand-loader__isotype {
29
+ display: block;
30
+ flex: none;
31
+ width: 64px;
32
+ height: 64px;
33
+ overflow: visible;
34
+ }
35
+
36
+ @container brand-loader (min-width: 720px) {
37
+ .brand-loader__isotype { width: 100px; height: 100px; }
38
+ }
39
+
40
+ .brand-loader__base { fill: var(--fill--brand--secondary--default); }
41
+
42
+ .brand-loader__fill {
43
+ fill: none;
44
+ stroke: var(--fill--brand--primary--default);
45
+ stroke-width: 10;
46
+ stroke-linecap: butt;
47
+ stroke-linejoin: miter;
48
+ }
49
+
50
+ .brand-loader__fill mask * { stroke: none; }
51
+
52
+ .brand-loader__messages {
53
+ display: grid;
54
+ width: 100%;
55
+ }
56
+
57
+ .brand-loader__message {
58
+ grid-area: 1 / 1;
59
+ margin: 0;
60
+ text-align: center;
61
+ color: var(--text--base--secondary);
62
+ font-size: var(--neo-type-title-sm-bold-size-rem);
63
+ font-weight: var(--neo-type-title-sm-bold-weight);
64
+ line-height: var(--neo-type-title-sm-bold-line-height-rem);
65
+ }
66
+
67
+ @container brand-loader (min-width: 720px) {
68
+ .brand-loader__message {
69
+ font-size: var(--neo-type-title-md-bold-size-rem);
70
+ font-weight: var(--neo-type-title-md-bold-weight);
71
+ line-height: var(--neo-type-title-md-bold-line-height-rem);
72
+ }
73
+ }
74
+
75
+ .brand-loader__load { stroke-dasharray: 1 1; stroke-dashoffset: 0; animation: neo-brand-loader-lobe 3s linear infinite; }
76
+ .brand-loader__load--e { animation-name: neo-brand-loader-e; }
77
+ .brand-loader__load--bar { animation-name: neo-brand-loader-bar; }
78
+
79
+ @keyframes neo-brand-loader-lobe {
80
+ 0% { stroke-dashoffset: 1; animation-timing-function: cubic-bezier(0.42, 0, 0.58, 1); }
81
+ 46.667%, 53.333% { stroke-dashoffset: 0; animation-timing-function: cubic-bezier(0.42, 0, 0.58, 1); }
82
+ 96.667%, 100% { stroke-dashoffset: -1; }
83
+ }
84
+
85
+ @keyframes neo-brand-loader-e {
86
+ 0% { stroke-dashoffset: 1; }
87
+ 1.667% { stroke-dashoffset: 0.997; }
88
+ 3.333% { stroke-dashoffset: 0.988; }
89
+ 5% { stroke-dashoffset: 0.9725; }
90
+ 6.667% { stroke-dashoffset: 0.9505; }
91
+ 8.333% { stroke-dashoffset: 0.9218; }
92
+ 10% { stroke-dashoffset: 0.8862; }
93
+ 11.667% { stroke-dashoffset: 0.8438; }
94
+ 13.333% { stroke-dashoffset: 0.7947; }
95
+ 15% { stroke-dashoffset: 0.7394; }
96
+ 16.667% { stroke-dashoffset: 0.6783; }
97
+ 18.333% { stroke-dashoffset: 0.6123; }
98
+ 20% { stroke-dashoffset: 0.5423; }
99
+ 21.667% { stroke-dashoffset: 0.4695; }
100
+ 23.333% { stroke-dashoffset: 0.3952; }
101
+ 25% { stroke-dashoffset: 0.321; }
102
+ 26.667% { stroke-dashoffset: 0.2482; }
103
+ 28.333% { stroke-dashoffset: 0.1782; }
104
+ 30% { stroke-dashoffset: 0.1121; }
105
+ 31.667% { stroke-dashoffset: 0.0511; }
106
+ 33.333% { stroke-dashoffset: 0; }
107
+ 53.333% { stroke-dashoffset: 0; }
108
+ 54.881% { stroke-dashoffset: -0.003; }
109
+ 56.429% { stroke-dashoffset: -0.012; }
110
+ 57.976% { stroke-dashoffset: -0.0275; }
111
+ 59.524% { stroke-dashoffset: -0.0495; }
112
+ 61.071% { stroke-dashoffset: -0.0782; }
113
+ 62.619% { stroke-dashoffset: -0.1138; }
114
+ 64.167% { stroke-dashoffset: -0.1562; }
115
+ 65.714% { stroke-dashoffset: -0.2053; }
116
+ 67.262% { stroke-dashoffset: -0.2606; }
117
+ 68.81% { stroke-dashoffset: -0.3217; }
118
+ 70.357% { stroke-dashoffset: -0.3877; }
119
+ 71.905% { stroke-dashoffset: -0.4577; }
120
+ 73.452% { stroke-dashoffset: -0.5305; }
121
+ 75% { stroke-dashoffset: -0.6048; }
122
+ 76.548% { stroke-dashoffset: -0.679; }
123
+ 78.095% { stroke-dashoffset: -0.7518; }
124
+ 79.643% { stroke-dashoffset: -0.8218; }
125
+ 81.19% { stroke-dashoffset: -0.8879; }
126
+ 82.738% { stroke-dashoffset: -0.9489; }
127
+ 84.286% { stroke-dashoffset: -1; }
128
+ 100% { stroke-dashoffset: -1; }
129
+ }
130
+ @keyframes neo-brand-loader-bar {
131
+ 0% { stroke-dashoffset: 1; }
132
+ 30% { stroke-dashoffset: 1; }
133
+ 31.667% { stroke-dashoffset: 0.8951; }
134
+ 33.333% { stroke-dashoffset: 0.7051; }
135
+ 35% { stroke-dashoffset: 0.5366; }
136
+ 36.667% { stroke-dashoffset: 0.391; }
137
+ 38.333% { stroke-dashoffset: 0.2687; }
138
+ 40% { stroke-dashoffset: 0.1699; }
139
+ 41.667% { stroke-dashoffset: 0.0943; }
140
+ 43.333% { stroke-dashoffset: 0.0413; }
141
+ 45% { stroke-dashoffset: 0.0102; }
142
+ 46.667% { stroke-dashoffset: 0; }
143
+ 81.19% { stroke-dashoffset: 0; }
144
+ 82.738% { stroke-dashoffset: -0.1049; }
145
+ 84.286% { stroke-dashoffset: -0.2949; }
146
+ 85.833% { stroke-dashoffset: -0.4634; }
147
+ 87.381% { stroke-dashoffset: -0.609; }
148
+ 88.929% { stroke-dashoffset: -0.7313; }
149
+ 90.476% { stroke-dashoffset: -0.8301; }
150
+ 92.024% { stroke-dashoffset: -0.9057; }
151
+ 93.571% { stroke-dashoffset: -0.9587; }
152
+ 95.119% { stroke-dashoffset: -0.9898; }
153
+ 96.667% { stroke-dashoffset: -1; }
154
+ 100% { stroke-dashoffset: -1; }
155
+ }
156
+
157
+ @keyframes neo-brand-loader-message-2 {
158
+ 0% { opacity: 0; }
159
+ 1.667%, 48.333% { opacity: 1; }
160
+ 50%, 100% { opacity: 0; }
161
+ }
162
+ .brand-loader__messages--2 .brand-loader__message { animation: neo-brand-loader-message-2 6s linear infinite both; }
163
+ @keyframes neo-brand-loader-message-3 {
164
+ 0% { opacity: 0; }
165
+ 1.111%, 32.222% { opacity: 1; }
166
+ 33.333%, 100% { opacity: 0; }
167
+ }
168
+ .brand-loader__messages--3 .brand-loader__message { animation: neo-brand-loader-message-3 9s linear infinite both; }
169
+ @keyframes neo-brand-loader-message-4 {
170
+ 0% { opacity: 0; }
171
+ 0.833%, 24.167% { opacity: 1; }
172
+ 25%, 100% { opacity: 0; }
173
+ }
174
+ .brand-loader__messages--4 .brand-loader__message { animation: neo-brand-loader-message-4 12s linear infinite both; }
175
+ @keyframes neo-brand-loader-message-5 {
176
+ 0% { opacity: 0; }
177
+ 0.667%, 19.333% { opacity: 1; }
178
+ 20%, 100% { opacity: 0; }
179
+ }
180
+ .brand-loader__messages--5 .brand-loader__message { animation: neo-brand-loader-message-5 15s linear infinite both; }
181
+ .brand-loader__message:nth-child(2) { animation-delay: 3s; }
182
+ .brand-loader__message:nth-child(3) { animation-delay: 6s; }
183
+ .brand-loader__message:nth-child(4) { animation-delay: 9s; }
184
+ .brand-loader__message:nth-child(5) { animation-delay: 12s; }
185
+
186
+ @media (prefers-reduced-motion: reduce) {
187
+ .brand-loader__load { animation: none; stroke-dashoffset: 0; }
188
+ .brand-loader__messages .brand-loader__message { animation: none; }
189
+ .brand-loader__messages .brand-loader__message:not(:first-child) { visibility: hidden; }
190
+ }
package/css/button.css CHANGED
@@ -10,7 +10,7 @@
10
10
  cursor: pointer;
11
11
  font-weight: var(--neo-type-body-lg-medium-weight);
12
12
  white-space: nowrap;
13
- transition: background 100ms ease, color 100ms ease, border-color 100ms ease, box-shadow 100ms ease;
13
+ transition: background 250ms cubic-bezier(0.4, 0, 0.2, 1), color 250ms cubic-bezier(0.4, 0, 0.2, 1), border-color 250ms cubic-bezier(0.4, 0, 0.2, 1), box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1);
14
14
  text-decoration: none;
15
15
  }
16
16
 
package/css/checkbox.css CHANGED
@@ -36,7 +36,7 @@
36
36
  align-items: center;
37
37
  justify-content: center;
38
38
  flex-shrink: 0;
39
- transition: background 100ms ease, border-color 100ms ease;
39
+ transition: background 200ms cubic-bezier(0.4, 0, 0.2, 1), border-color 200ms cubic-bezier(0.4, 0, 0.2, 1);
40
40
  }
41
41
 
42
42
  .checkbox__control svg {
package/css/chips.css CHANGED
@@ -17,7 +17,7 @@
17
17
  color: var(--text--base--default);
18
18
  cursor: pointer;
19
19
  white-space: nowrap;
20
- transition: background 100ms ease, border-color 100ms ease, color 100ms ease;
20
+ transition: background 300ms cubic-bezier(0.4, 0, 0.2, 1), border-color 300ms cubic-bezier(0.4, 0, 0.2, 1), color 300ms cubic-bezier(0.4, 0, 0.2, 1);
21
21
  }
22
22
 
23
23
 
package/css/combobox.css CHANGED
@@ -48,7 +48,6 @@
48
48
  border-radius: var(--neo-radius-sm);
49
49
  background: var(--fill--base--default);
50
50
  width: 100%;
51
- transition: border-color 100ms ease, box-shadow 100ms ease;
52
51
  }
53
52
 
54
53
  .combobox__input {
@@ -109,11 +108,6 @@
109
108
  height: var(--neo-icon-size-md-rem);
110
109
  fill: var(--icon--base--secondary);
111
110
  color: var(--icon--base--secondary);
112
- transition: transform 150ms ease;
113
- }
114
-
115
- @media (prefers-reduced-motion: reduce) {
116
- .combobox__chevron { transition: none; }
117
111
  }
118
112
 
119
113
 
package/css/drawer.css CHANGED
@@ -66,6 +66,8 @@
66
66
  }
67
67
 
68
68
  .drawer__content {
69
+ display: flex;
70
+ flex-direction: column;
69
71
  flex: 1 1 auto;
70
72
  overflow-y: auto;
71
73
  padding-inline: var(--neo-space-xl-rem);
@@ -85,6 +87,7 @@
85
87
 
86
88
  .drawer__image {
87
89
  display: block;
90
+ flex: 0 0 auto;
88
91
  height: 224px;
89
92
  margin-inline: calc(-1 * var(--neo-space-xl-rem));
90
93
  overflow: hidden;
package/css/index.css CHANGED
@@ -5,6 +5,7 @@
5
5
  @import './badge.css';
6
6
  @import './banner.css';
7
7
  @import './bottom-sheet.css';
8
+ @import './brand-loader.css';
8
9
  @import './button.css';
9
10
  @import './button-icon.css';
10
11
  @import './checkbox.css';
@@ -19,6 +20,7 @@
19
20
  @import './modal-fullscreen.css';
20
21
  @import './radio-button.css';
21
22
  @import './select.css';
23
+ @import './skeleton.css';
22
24
  @import './snackbar.css';
23
25
  @import './spinner.css';
24
26
  @import './tabs.css';
@@ -28,10 +30,10 @@
28
30
  @import './tooltip.css';
29
31
 
30
32
  .alert, .aspect-ratio, .badge, .notification, .banner, .btn, .checkbox, .checkbox-group,
31
- .bottom-sheet, .chip, .chips-group, .combobox, .drawer, .empty-state, .empty-state-shell, .link, .menu-item, .menu-list, .menu-divider, .modal-overlay, .modal-dialog,
32
- .modal-full, .radio, .radio-group, .select, .snackbar, .spinner, .tabs, .tag, .field, .toggle, .tooltip,
33
+ .bottom-sheet, .brand-loader, .brand-loader-shell, .chip, .chips-group, .combobox, .drawer, .empty-state, .empty-state-shell, .link, .menu-item, .menu-list, .menu-divider, .modal-overlay, .modal-dialog,
34
+ .modal-full, .radio, .radio-group, .select, .skeleton, .snackbar, .spinner, .tabs, .tag, .field, .toggle, .tooltip,
33
35
  .alert *, .aspect-ratio *, .badge *, .banner *, .btn *, .checkbox *, .chip *, .combobox *,
34
- .bottom-sheet *, .drawer *, .empty-state *, .menu-item *, .menu-list *, .modal-dialog *, .modal-full *, .radio *, .select *, .snackbar *, .tabs *,
36
+ .bottom-sheet *, .brand-loader *, .drawer *, .empty-state *, .menu-item *, .menu-list *, .modal-dialog *, .modal-full *, .radio *, .select *, .snackbar *, .tabs *,
35
37
  .tag *, .field *, .toggle *, .tooltip *,
36
38
  [role="tablist"], [role="tab"] {
37
39
  box-sizing: border-box;
@@ -36,7 +36,7 @@
36
36
  align-items: center;
37
37
  justify-content: center;
38
38
  flex-shrink: 0;
39
- transition: background 100ms ease, border-color 100ms ease;
39
+ transition: background 200ms cubic-bezier(0.4, 0, 0.2, 1), border-color 200ms cubic-bezier(0.4, 0, 0.2, 1);
40
40
  position: relative;
41
41
  }
42
42
 
package/css/select.css CHANGED
@@ -50,7 +50,6 @@
50
50
  cursor: pointer;
51
51
  width: 100%;
52
52
  text-align: left;
53
- transition: border-color 100ms ease, box-shadow 100ms ease;
54
53
  }
55
54
 
56
55
  .select__value {
@@ -0,0 +1,42 @@
1
+ /* packages/foundations/css/skeleton.css — emitted without comments. The reasoning behind each decision lives in Neo's source repository. */
2
+
3
+ .skeleton {
4
+ display: block;
5
+ position: relative;
6
+ overflow: hidden;
7
+ -webkit-mask-image: -webkit-radial-gradient(white, black);
8
+ height: 1.2em;
9
+ background-color: var(--fill--base--medium);
10
+ }
11
+
12
+ .skeleton--text {
13
+ height: auto;
14
+ margin: 0;
15
+ transform-origin: 0 55%;
16
+ transform: scale(1, 0.6);
17
+ border-radius: var(--neo-radius-xs) / calc(var(--neo-radius-xs) / 0.6);
18
+ }
19
+ .skeleton--text:empty::before { content: '\00a0'; }
20
+
21
+ .skeleton--circular { width: 40px; height: 40px; border-radius: var(--neo-radius-pill); }
22
+
23
+ .skeleton--rounded { height: 60px; border-radius: var(--neo-radius-xs); }
24
+
25
+ .skeleton::after {
26
+ content: '';
27
+ position: absolute;
28
+ inset: 0;
29
+ transform: translateX(-100%);
30
+ background: linear-gradient(90deg, var(--fill--base--medium), var(--fill--base--light), var(--fill--base--medium));
31
+ animation: neo-skeleton-wave 2s linear 0.5s infinite;
32
+ }
33
+
34
+ @keyframes neo-skeleton-wave {
35
+ 0% { transform: translateX(-100%); }
36
+ 50% { transform: translateX(100%); }
37
+ 100% { transform: translateX(100%); }
38
+ }
39
+
40
+ @media (prefers-reduced-motion: reduce) {
41
+ .skeleton::after { animation: none; }
42
+ }
package/css/spinner.css CHANGED
@@ -2,15 +2,28 @@
2
2
 
3
3
  .spinner {
4
4
  display: inline-block;
5
- border: 2px solid transparent;
6
- border-top-color: var(--icon--base--default);
7
- border-radius: var(--neo-radius-pill);
8
- animation: neo-spin 0.8s linear infinite;
5
+ position: relative;
6
+ animation: neo-spin 1.4s linear infinite;
7
+ }
8
+
9
+ .spinner::before {
10
+ content: '';
11
+ position: absolute;
12
+ inset: 0;
13
+ background-color: var(--icon--base--default);
14
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='22 22 44 44'%3E%3Cstyle%3Ecircle%7Bstroke-dasharray:80px,200px;stroke-dashoffset:0;animation:d 1.4s ease-in-out infinite%7D@keyframes d%7B0%25%7Bstroke-dasharray:1px,200px;stroke-dashoffset:0%7D50%25%7Bstroke-dasharray:100px,200px;stroke-dashoffset:-15px%7D100%25%7Bstroke-dasharray:100px,200px;stroke-dashoffset:-125px%7D%7D%3C/style%3E%3Ccircle cx='44' cy='44' r='20.2' fill='none' stroke='black' stroke-width='3.6' stroke-linecap='round'/%3E%3C/svg%3E");
15
+ -webkit-mask-position: center;
16
+ -webkit-mask-size: 100%;
17
+ -webkit-mask-repeat: no-repeat;
18
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='22 22 44 44'%3E%3Cstyle%3Ecircle%7Bstroke-dasharray:80px,200px;stroke-dashoffset:0;animation:d 1.4s ease-in-out infinite%7D@keyframes d%7B0%25%7Bstroke-dasharray:1px,200px;stroke-dashoffset:0%7D50%25%7Bstroke-dasharray:100px,200px;stroke-dashoffset:-15px%7D100%25%7Bstroke-dasharray:100px,200px;stroke-dashoffset:-125px%7D%7D%3C/style%3E%3Ccircle cx='44' cy='44' r='20.2' fill='none' stroke='black' stroke-width='3.6' stroke-linecap='round'/%3E%3C/svg%3E");
19
+ mask-position: center;
20
+ mask-size: 100%;
21
+ mask-repeat: no-repeat;
9
22
  }
10
23
 
11
24
  .spinner--small { width: 20px; height: 20px; }
12
25
  .spinner--medium { width: 24px; height: 24px; }
13
- .spinner--large { width: 32px; height: 32px; border-width: 3px; }
26
+ .spinner--large { width: 32px; height: 32px; }
14
27
 
15
28
  @keyframes neo-spin {
16
29
  to { transform: rotate(360deg); }
@@ -18,4 +31,8 @@
18
31
 
19
32
  @media (prefers-reduced-motion: reduce) {
20
33
  .spinner { animation: none; }
34
+ .spinner::before {
35
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='22 22 44 44'%3E%3Cstyle%3Ecircle%7Bstroke-dasharray:80px,200px;stroke-dashoffset:0%7D%3C/style%3E%3Ccircle cx='44' cy='44' r='20.2' fill='none' stroke='black' stroke-width='3.6' stroke-linecap='round'/%3E%3C/svg%3E");
36
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='22 22 44 44'%3E%3Cstyle%3Ecircle%7Bstroke-dasharray:80px,200px;stroke-dashoffset:0%7D%3C/style%3E%3Ccircle cx='44' cy='44' r='20.2' fill='none' stroke='black' stroke-width='3.6' stroke-linecap='round'/%3E%3C/svg%3E");
37
+ }
21
38
  }
package/css/tabs.css CHANGED
@@ -36,7 +36,6 @@
36
36
  color: var(--text--base--secondary);
37
37
  position: relative;
38
38
  white-space: nowrap;
39
- transition: color 100ms ease, background 100ms ease;
40
39
  }
41
40
 
42
41
  [role="tab"]:first-child { border-top-left-radius: var(--neo-radius-sm); }
@@ -69,7 +68,6 @@
69
68
  right: 0;
70
69
  height: var(--neo-stroke-sm);
71
70
  background: var(--border--base--default);
72
- transition: background 100ms ease;
73
71
  }
74
72
 
75
73
  [role="tab"]:hover:not([aria-selected="true"]):not([aria-disabled="true"]) {
@@ -48,7 +48,6 @@
48
48
  border: var(--neo-stroke-xs) solid var(--border--base--default);
49
49
  border-radius: var(--neo-radius-sm);
50
50
  background: var(--fill--base--default);
51
- transition: border-color 100ms ease, box-shadow 100ms ease;
52
51
  }
53
52
 
54
53
  .field__input {
package/css/toggle.css CHANGED
@@ -20,7 +20,7 @@
20
20
  padding-inline: var(--neo-space-xs-rem);
21
21
  border-radius: var(--neo-radius-pill);
22
22
  background: var(--fill--base--strong);
23
- transition: background 120ms ease-out;
23
+ transition: background 150ms cubic-bezier(0.4, 0, 0.2, 1);
24
24
  }
25
25
 
26
26
  .toggle__thumb {
@@ -28,7 +28,7 @@
28
28
  height: 16px;
29
29
  border-radius: var(--neo-radius-pill);
30
30
  background: var(--fill--base--default);
31
- transition: transform 120ms ease-out;
31
+ transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1);
32
32
  }
33
33
 
34
34
  .toggle[aria-checked="true"] .toggle__track { background: var(--fill--semantic--success--solid); }
package/css/tooltip.css CHANGED
@@ -22,11 +22,16 @@
22
22
  border: 6px solid transparent;
23
23
  }
24
24
 
25
- .tooltip--top::before { content: ""; bottom: 100%; left: 50%; transform: translateX(-50%); border-bottom-color: var(--fill--semantic--info--solid); }
26
- .tooltip--bottom::before { content: ""; top: 100%; left: 50%; transform: translateX(-50%); border-top-color: var(--fill--semantic--info--solid); }
27
- .tooltip--left::before { content: ""; right: 100%; top: 50%; transform: translateY(-50%); border-right-color: var(--fill--semantic--info--solid); }
28
- .tooltip--right::before { content: ""; left: 100%; top: 50%; transform: translateY(-50%); border-left-color: var(--fill--semantic--info--solid); }
29
- .tooltip--top-start::before { content: ""; bottom: 100%; left: var(--neo-space-md-rem); border-bottom-color: var(--fill--semantic--info--solid); }
30
- .tooltip--top-end::before { content: ""; bottom: 100%; right: var(--neo-space-md-rem); border-bottom-color: var(--fill--semantic--info--solid); }
31
- .tooltip--bottom-start::before { content: ""; top: 100%; left: var(--neo-space-md-rem); border-top-color: var(--fill--semantic--info--solid); }
32
- .tooltip--bottom-end::before { content: ""; top: 100%; right: var(--neo-space-md-rem); border-top-color: var(--fill--semantic--info--solid); }
25
+ .tooltip--top::before { content: ""; top: 100%; left: 50%; transform: translateX(-50%); border-top-color: var(--fill--semantic--info--solid); }
26
+ .tooltip--bottom::before { content: ""; bottom: 100%; left: 50%; transform: translateX(-50%); border-bottom-color: var(--fill--semantic--info--solid); }
27
+ .tooltip--left::before { content: ""; left: 100%; top: 50%; transform: translateY(-50%); border-left-color: var(--fill--semantic--info--solid); }
28
+ .tooltip--right::before { content: ""; right: 100%; top: 50%; transform: translateY(-50%); border-right-color: var(--fill--semantic--info--solid); }
29
+ .tooltip--top, .tooltip--top-start, .tooltip--top-end { margin-bottom: calc(var(--neo-space-sm-rem) + 6px); }
30
+ .tooltip--bottom, .tooltip--bottom-start, .tooltip--bottom-end { margin-top: calc(var(--neo-space-sm-rem) + 6px); }
31
+ .tooltip--left { margin-right: calc(var(--neo-space-sm-rem) + 6px); }
32
+ .tooltip--right { margin-left: calc(var(--neo-space-sm-rem) + 6px); }
33
+
34
+ .tooltip--top-start::before { content: ""; top: 100%; left: var(--neo-space-md-rem); border-top-color: var(--fill--semantic--info--solid); }
35
+ .tooltip--top-end::before { content: ""; top: 100%; right: var(--neo-space-md-rem); border-top-color: var(--fill--semantic--info--solid); }
36
+ .tooltip--bottom-start::before { content: ""; bottom: 100%; left: var(--neo-space-md-rem); border-bottom-color: var(--fill--semantic--info--solid); }
37
+ .tooltip--bottom-end::before { content: ""; bottom: 100%; right: var(--neo-space-md-rem); border-bottom-color: var(--fill--semantic--info--solid); }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neo-design/foundations",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Neo — the system foundations: semantic tokens in JS and CSS, icons and the plain CSS layer. It does not depend on React or Material UI.",
5
5
  "homepage": "https://github.com/jzamorano-ui/neo-ds/blob/main/docs/dev/INTEGRATION.md",
6
6
  "repository": {