tyrell-components 1.0.0-TC52 → 1.0.0-TC53
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.
- package/css/tyrell-theme.css +25 -2
- package/css/tyrell.css +4 -0
- package/dist/tyrell-colors-static.css +1 -316
- package/dist/tyrell-theme.css +1 -1443
- package/dist/tyrell.css +1 -1390
- package/dist/tyrell.js +1 -1
- package/lib/base/ty-component.js +196 -196
- package/lib/components/button.d.ts +1 -1
- package/lib/components/button.js +260 -259
- package/lib/components/calendar-month.d.ts +2 -2
- package/lib/components/calendar-month.js +426 -416
- package/lib/components/calendar-navigation.js +238 -238
- package/lib/components/calendar.js +605 -602
- package/lib/components/checkbox.d.ts +1 -1
- package/lib/components/checkbox.js +273 -272
- package/lib/components/copy.d.ts +1 -1
- package/lib/components/copy.js +279 -278
- package/lib/components/date-picker.d.ts +1 -1
- package/lib/components/date-picker.js +1103 -1108
- package/lib/components/file-upload.js +404 -404
- package/lib/components/icon.js +141 -141
- package/lib/components/input.d.ts +1 -1
- package/lib/components/input.js +593 -596
- package/lib/components/modal.js +319 -319
- package/lib/components/option.js +167 -167
- package/lib/components/popup.js +233 -233
- package/lib/components/radio.d.ts +2 -2
- package/lib/components/radio.js +407 -406
- package/lib/components/resize-observer.js +67 -67
- package/lib/components/scroll-container.js +294 -294
- package/lib/components/select.d.ts +1 -1
- package/lib/components/select.js +1524 -1532
- package/lib/components/selected-tags.js +184 -184
- package/lib/components/step.js +62 -62
- package/lib/components/switch.d.ts +1 -1
- package/lib/components/switch.js +214 -213
- package/lib/components/tab.js +62 -62
- package/lib/components/tabs.js +507 -507
- package/lib/components/tag.d.ts +1 -1
- package/lib/components/tag.js +236 -235
- package/lib/components/textarea.d.ts +1 -1
- package/lib/components/textarea.js +457 -456
- package/lib/components/tooltip.js +283 -283
- package/lib/components/wizard.js +384 -384
- package/lib/icons/heroicons/micro.js +392 -392
- package/lib/icons/heroicons/mini.js +382 -382
- package/lib/icons/heroicons/outline.js +337 -337
- package/lib/icons/heroicons/solid.js +407 -407
- package/lib/icons/lucide.js +22843 -22843
- package/lib/icons/material/filled.js +9653 -9653
- package/lib/icons/material/outlined.js +10271 -10271
- package/lib/icons/material/round.js +10495 -10495
- package/lib/icons/material/sharp.js +9905 -9905
- package/lib/icons/material/two-tone.js +12792 -12792
- package/lib/index.js +21 -21
- package/lib/styles/button.js +176 -288
- package/lib/styles/calendar-month.js +123 -183
- package/lib/styles/calendar-navigation.js +60 -79
- package/lib/styles/calendar.js +8 -9
- package/lib/styles/checkbox.js +45 -72
- package/lib/styles/copy.js +67 -91
- package/lib/styles/custom-scrollbar.js +80 -100
- package/lib/styles/date-picker.js +261 -331
- package/lib/styles/field-size.d.ts +6 -0
- package/lib/styles/field-size.js +91 -0
- package/lib/styles/file-upload.js +139 -169
- package/lib/styles/icon.js +92 -156
- package/lib/styles/input.js +125 -241
- package/lib/styles/modal.js +67 -102
- package/lib/styles/option.d.ts +1 -1
- package/lib/styles/option.js +47 -67
- package/lib/styles/popup.js +34 -65
- package/lib/styles/radio.js +69 -96
- package/lib/styles/resize-observer.js +2 -5
- package/lib/styles/scroll-container.js +100 -130
- package/lib/styles/select-base.js +525 -778
- package/lib/styles/select.js +140 -228
- package/lib/styles/step.js +22 -29
- package/lib/styles/switch.js +34 -55
- package/lib/styles/tab.js +22 -29
- package/lib/styles/tabs.js +171 -252
- package/lib/styles/tag.js +135 -188
- package/lib/styles/textarea.d.ts +1 -1
- package/lib/styles/textarea.js +205 -271
- package/lib/styles/tooltip.js +3 -3
- package/lib/styles/wizard.js +170 -226
- package/lib/types/common.d.ts +2 -0
- package/lib/types/common.js +6 -5
- package/lib/utils/calendar-utils.js +100 -100
- package/lib/utils/custom-scrollbar.js +272 -272
- package/lib/utils/flavor-sheet.js +14 -14
- package/lib/utils/icon-registry.js +127 -127
- package/lib/utils/loader-registry.js +3 -3
- package/lib/utils/locale.js +34 -34
- package/lib/utils/mobile.js +1 -1
- package/lib/utils/number-format.js +54 -54
- package/lib/utils/positioning.js +212 -212
- package/lib/utils/property-capture.js +36 -36
- package/lib/utils/property-manager.js +125 -125
- package/lib/utils/resize-observer.js +23 -23
- package/lib/utils/scroll-lock.js +57 -57
- package/lib/utils/styles.js +17 -17
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +4 -4
package/lib/styles/tab.js
CHANGED
|
@@ -1,46 +1,39 @@
|
|
|
1
1
|
import { customScrollbarStyles } from './custom-scrollbar.js';
|
|
2
2
|
export const tabStyles = `
|
|
3
3
|
:host {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
|
|
4
|
+
width: var(--tabs-width, 100%);
|
|
5
|
+
height: calc(var(--tabs-height, 400px) - var(--buttons-height, 48px));
|
|
6
|
+
display: block;
|
|
7
|
+
box-sizing: border-box;
|
|
8
|
+
flex-shrink: 0;
|
|
9
|
+
transition: opacity var(--ty-tabs-transition-duration, 400ms) var(--ty-tabs-transition-easing, ease-in-out);
|
|
10
|
+
}
|
|
12
11
|
@media (prefers-reduced-motion: reduce) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
:host {
|
|
13
|
+
transition-duration: 0ms !important;
|
|
14
|
+
}
|
|
16
15
|
}
|
|
17
|
-
|
|
18
16
|
.tab-wrapper {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
width: 100%;
|
|
18
|
+
height: 100%;
|
|
19
|
+
position: relative;
|
|
20
|
+
overflow: hidden;
|
|
23
21
|
}
|
|
24
|
-
|
|
25
22
|
.tab-panel {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
width: 100%;
|
|
24
|
+
height: 100%;
|
|
25
|
+
overflow: auto;
|
|
26
|
+
box-sizing: border-box;
|
|
30
27
|
}
|
|
31
|
-
|
|
32
28
|
.tab-panel.ty-custom-scroll {
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
scrollbar-width: none;
|
|
30
|
+
-ms-overflow-style: none;
|
|
35
31
|
}
|
|
36
|
-
|
|
37
32
|
.tab-panel.ty-custom-scroll::-webkit-scrollbar {
|
|
38
|
-
|
|
33
|
+
display: none;
|
|
39
34
|
}
|
|
40
|
-
|
|
41
35
|
.tab-wrapper:hover .ty-scrollbar-track-y.has-overflow {
|
|
42
|
-
|
|
36
|
+
opacity: 1;
|
|
43
37
|
}
|
|
44
|
-
|
|
45
38
|
${customScrollbarStyles}
|
|
46
39
|
`;
|
package/lib/styles/tabs.js
CHANGED
|
@@ -1,303 +1,222 @@
|
|
|
1
1
|
export const tabsStyles = `
|
|
2
2
|
:host {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
display: block;
|
|
4
|
+
width: var(--tabs-width, 100%);
|
|
5
|
+
height: var(--tabs-height, 400px);
|
|
6
|
+
box-sizing: border-box;
|
|
7
7
|
}
|
|
8
|
-
|
|
9
8
|
.tabs-container {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
|
|
9
|
+
width: 100%;
|
|
10
|
+
height: 100%;
|
|
11
|
+
display: flex;
|
|
12
|
+
flex-direction: column;
|
|
13
|
+
position: relative;
|
|
14
|
+
box-sizing: border-box;
|
|
15
|
+
}
|
|
18
16
|
.tabs-container[data-placement="bottom"] {
|
|
19
|
-
|
|
17
|
+
flex-direction: column-reverse;
|
|
20
18
|
}
|
|
21
|
-
|
|
22
|
-
/* Tab buttons container — exposed as a CSS Part for full styling control */
|
|
23
19
|
.tab-buttons {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
background: transparent;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/* Separator drawn as a pseudo-element, not a border: a border sits OUTSIDE the
|
|
34
|
-
strip's box, so the marker (absolutely positioned inside the strip) could only
|
|
35
|
-
ever stop just above it, reading as two stacked lines. As an overlaid line it
|
|
36
|
-
lands inside the marker's range, and .tab-strip's z-index lets the marker
|
|
37
|
-
cover it. */
|
|
20
|
+
display: flex;
|
|
21
|
+
gap: 0;
|
|
22
|
+
flex-shrink: 0;
|
|
23
|
+
position: relative;
|
|
24
|
+
background: transparent;
|
|
25
|
+
}
|
|
38
26
|
.tab-buttons::after {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
|
|
27
|
+
content: "";
|
|
28
|
+
position: absolute;
|
|
29
|
+
left: 0;
|
|
30
|
+
right: 0;
|
|
31
|
+
bottom: 0;
|
|
32
|
+
height: 1px;
|
|
33
|
+
background: var(--ty-tabs-separator, var(--ty-border));
|
|
34
|
+
pointer-events: none;
|
|
35
|
+
}
|
|
50
36
|
.tabs-container[data-placement="bottom"] .tab-buttons::after {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/* Scrollable strip holding the buttons + marker. Tabs never collapse — the
|
|
56
|
-
strip scrolls (scrollbar hidden; touch/wheel still work) and activation
|
|
57
|
-
glides the active tab into view. The "…" trigger sits OUTSIDE this strip,
|
|
58
|
-
pinned at the edge. position:relative makes it the offsetParent for the
|
|
59
|
-
marker, so the marker scrolls with the buttons and can't desync. */
|
|
37
|
+
bottom: auto;
|
|
38
|
+
top: 0;
|
|
39
|
+
}
|
|
60
40
|
.tab-strip {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
mask-image: linear-gradient(to right,
|
|
78
|
-
transparent, black var(--fade-left),
|
|
79
|
-
black calc(100% - var(--fade-right)), transparent);
|
|
80
|
-
}
|
|
81
|
-
|
|
41
|
+
display: flex;
|
|
42
|
+
flex: 1 1 auto;
|
|
43
|
+
min-width: 0;
|
|
44
|
+
position: relative;
|
|
45
|
+
z-index: 1;
|
|
46
|
+
overflow-x: auto;
|
|
47
|
+
scrollbar-width: none;
|
|
48
|
+
--fade-left: 0px;
|
|
49
|
+
--fade-right: 0px;
|
|
50
|
+
-webkit-mask-image: linear-gradient(to right,
|
|
51
|
+
transparent, black var(--fade-left),
|
|
52
|
+
black calc(100% - var(--fade-right)), transparent);
|
|
53
|
+
mask-image: linear-gradient(to right,
|
|
54
|
+
transparent, black var(--fade-left),
|
|
55
|
+
black calc(100% - var(--fade-right)), transparent);
|
|
56
|
+
}
|
|
82
57
|
.tab-strip::-webkit-scrollbar {
|
|
83
|
-
|
|
58
|
+
display: none;
|
|
84
59
|
}
|
|
85
|
-
|
|
86
|
-
/* When every tab fits there is nothing to scroll, so drop the clipping —
|
|
87
|
-
both overflow and the mask cut a custom marker's box-shadow off at the
|
|
88
|
-
strip edge. Set by updateOverflow(); clipping stays the pre-measurement
|
|
89
|
-
default so overflowing tabs can't spill for a frame on first render. */
|
|
90
60
|
.tab-strip.unclipped {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
61
|
+
overflow: visible;
|
|
62
|
+
-webkit-mask-image: none;
|
|
63
|
+
mask-image: none;
|
|
94
64
|
}
|
|
95
|
-
|
|
96
|
-
/* Marker wrapper — exposed as a CSS Part for custom marker styling */
|
|
97
65
|
.marker-wrapper {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
top var(--ty-tabs-transition-duration, 300ms) var(--ty-tabs-transition-easing, ease-in-out);
|
|
107
|
-
}
|
|
108
|
-
|
|
66
|
+
position: absolute;
|
|
67
|
+
z-index: 0;
|
|
68
|
+
pointer-events: none;
|
|
69
|
+
transition: left var(--ty-tabs-transition-duration, 300ms) var(--ty-tabs-transition-easing, ease-in-out),
|
|
70
|
+
width var(--ty-tabs-transition-duration, 300ms) var(--ty-tabs-transition-easing, ease-in-out),
|
|
71
|
+
height var(--ty-tabs-transition-duration, 300ms) var(--ty-tabs-transition-easing, ease-in-out),
|
|
72
|
+
top var(--ty-tabs-transition-duration, 300ms) var(--ty-tabs-transition-easing, ease-in-out);
|
|
73
|
+
}
|
|
109
74
|
.default-marker {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/* Bottom placement: marker rides the top edge, next to the content it marks */
|
|
75
|
+
position: absolute;
|
|
76
|
+
bottom: 0;
|
|
77
|
+
left: 0;
|
|
78
|
+
height: 3px;
|
|
79
|
+
width: 100%;
|
|
80
|
+
background: var(--ty-color-primary);
|
|
81
|
+
pointer-events: none;
|
|
82
|
+
}
|
|
120
83
|
.tabs-container[data-placement="bottom"] .default-marker {
|
|
121
|
-
|
|
122
|
-
|
|
84
|
+
bottom: auto;
|
|
85
|
+
top: 0;
|
|
123
86
|
}
|
|
124
|
-
|
|
125
87
|
::slotted([slot="marker"]) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
88
|
+
display: block;
|
|
89
|
+
width: 100%;
|
|
90
|
+
height: 100%;
|
|
91
|
+
box-sizing: border-box;
|
|
130
92
|
}
|
|
131
|
-
|
|
132
93
|
.tab-button {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
justify-content: center;
|
|
153
|
-
gap: 8px;
|
|
154
|
-
font-weight: var(--ty-font-bold);
|
|
155
|
-
font-size: var(--ty-font-sm);
|
|
156
|
-
position: relative;
|
|
157
|
-
/* Establish stacking context */
|
|
158
|
-
z-index: 10;
|
|
159
|
-
/* Above marker */
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/* Fixed tabs: the bar is divided between them instead of scrolling. Material
|
|
163
|
-
calls this "fixed tabs" — for a small, known set of short labels. No
|
|
164
|
-
min-width floor, no overflow, no "…". */
|
|
94
|
+
min-width: var(--ty-tab-min-width, 72px);
|
|
95
|
+
flex-shrink: 0;
|
|
96
|
+
padding: 6px 12px;
|
|
97
|
+
border: none;
|
|
98
|
+
background: transparent;
|
|
99
|
+
cursor: pointer;
|
|
100
|
+
font: inherit;
|
|
101
|
+
color: var(--ty-text-soft);
|
|
102
|
+
transition: var(--ty-local-transition, color 200ms, background-color 200ms);
|
|
103
|
+
white-space: nowrap;
|
|
104
|
+
display: inline-flex;
|
|
105
|
+
align-items: center;
|
|
106
|
+
justify-content: center;
|
|
107
|
+
gap: 8px;
|
|
108
|
+
font-weight: var(--ty-font-bold);
|
|
109
|
+
font-size: var(--ty-font-sm);
|
|
110
|
+
position: relative;
|
|
111
|
+
z-index: 10;
|
|
112
|
+
}
|
|
165
113
|
.tabs-container[data-fixed] .tab-button {
|
|
166
|
-
|
|
167
|
-
|
|
114
|
+
flex: 1 1 0;
|
|
115
|
+
min-width: 0;
|
|
168
116
|
}
|
|
169
|
-
|
|
170
|
-
/* Fixed tabs only. A scrollable tab is never narrower than its label, so
|
|
171
|
-
ellipsizing there would hide text the user could simply scroll to. */
|
|
172
117
|
.tabs-container[data-fixed] .tab-label {
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
118
|
+
overflow: hidden;
|
|
119
|
+
text-overflow: ellipsis;
|
|
120
|
+
white-space: nowrap;
|
|
176
121
|
}
|
|
177
|
-
|
|
178
122
|
.tab-button[aria-selected=true] {
|
|
179
|
-
|
|
123
|
+
color: var(--ty-text-strong);
|
|
180
124
|
}
|
|
181
|
-
|
|
182
125
|
.tab-button[disabled] {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
126
|
+
opacity: 0.5;
|
|
127
|
+
cursor: not-allowed;
|
|
128
|
+
pointer-events: none;
|
|
186
129
|
}
|
|
187
|
-
|
|
188
130
|
.tab-button:focus-visible {
|
|
189
|
-
|
|
190
|
-
|
|
131
|
+
outline: 2px solid var(--ty-color-primary);
|
|
132
|
+
outline-offset: -2px;
|
|
191
133
|
}
|
|
192
|
-
|
|
193
|
-
/* Overflow "more" trigger (pill) + menu */
|
|
194
134
|
.tab-overflow-trigger {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
}
|
|
215
|
-
|
|
135
|
+
flex-shrink: 0;
|
|
136
|
+
align-self: center;
|
|
137
|
+
min-width: 36px;
|
|
138
|
+
height: 24px;
|
|
139
|
+
margin: 0 8px;
|
|
140
|
+
padding: 0 10px;
|
|
141
|
+
border: 1px solid var(--ty-border);
|
|
142
|
+
border-radius: 9999px;
|
|
143
|
+
background: transparent;
|
|
144
|
+
cursor: pointer;
|
|
145
|
+
color: var(--ty-text-soft);
|
|
146
|
+
font-size: 16px;
|
|
147
|
+
line-height: 1;
|
|
148
|
+
display: inline-flex;
|
|
149
|
+
align-items: center;
|
|
150
|
+
justify-content: center;
|
|
151
|
+
position: relative;
|
|
152
|
+
z-index: 10;
|
|
153
|
+
transition: color 200ms, border-color 200ms;
|
|
154
|
+
}
|
|
216
155
|
.tab-overflow-trigger:hover {
|
|
217
|
-
|
|
218
|
-
|
|
156
|
+
color: var(--ty-text-strong);
|
|
157
|
+
border-color: var(--ty-text-soft);
|
|
219
158
|
}
|
|
220
|
-
|
|
221
159
|
.tab-overflow-trigger:focus-visible {
|
|
222
|
-
|
|
223
|
-
|
|
160
|
+
outline: 2px solid var(--ty-color-primary);
|
|
161
|
+
outline-offset: -2px;
|
|
224
162
|
}
|
|
225
|
-
|
|
226
163
|
.tab-overflow-menu {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
}
|
|
237
|
-
|
|
164
|
+
display: flex;
|
|
165
|
+
flex-direction: column;
|
|
166
|
+
min-width: 160px;
|
|
167
|
+
max-height: 300px;
|
|
168
|
+
overflow-y: auto;
|
|
169
|
+
padding: var(--ty-spacing-2, 4px);
|
|
170
|
+
background: var(--ty-surface-floating);
|
|
171
|
+
border-radius: var(--ty-radius-md);
|
|
172
|
+
box-shadow: var(--ty-shadow-md, 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1));
|
|
173
|
+
}
|
|
238
174
|
.tab-overflow-item {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
}
|
|
250
|
-
|
|
175
|
+
padding: var(--ty-spacing-2, 6px) var(--ty-spacing-3, 12px);
|
|
176
|
+
border: none;
|
|
177
|
+
background: transparent;
|
|
178
|
+
text-align: left;
|
|
179
|
+
cursor: pointer;
|
|
180
|
+
border-radius: var(--ty-radius-md);
|
|
181
|
+
color: var(--ty-text);
|
|
182
|
+
font: inherit;
|
|
183
|
+
font-size: var(--ty-font-sm);
|
|
184
|
+
white-space: nowrap;
|
|
185
|
+
}
|
|
251
186
|
.tab-overflow-item:hover {
|
|
252
|
-
|
|
253
|
-
|
|
187
|
+
background: var(--ty-bg-neutral-soft);
|
|
188
|
+
color: var(--ty-text-strong);
|
|
254
189
|
}
|
|
255
|
-
|
|
256
190
|
.tab-overflow-item[data-active="true"] {
|
|
257
|
-
|
|
258
|
-
|
|
191
|
+
color: var(--ty-color-primary);
|
|
192
|
+
font-weight: var(--ty-font-bold);
|
|
259
193
|
}
|
|
260
|
-
|
|
261
194
|
.tab-overflow-item[disabled] {
|
|
262
|
-
|
|
263
|
-
|
|
195
|
+
opacity: 0.5;
|
|
196
|
+
cursor: not-allowed;
|
|
264
197
|
}
|
|
265
|
-
|
|
266
|
-
/* Panels viewport — exposed as a CSS Part */
|
|
267
198
|
.panels-viewport {
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
/* Allows flex child to shrink */
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
/* Panels wrapper slides horizontally */
|
|
199
|
+
position: relative;
|
|
200
|
+
flex: 1;
|
|
201
|
+
overflow: hidden;
|
|
202
|
+
min-height: 0;
|
|
203
|
+
}
|
|
277
204
|
.panels-wrapper {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
205
|
+
display: flex;
|
|
206
|
+
height: 100%;
|
|
207
|
+
transition: transform var(--ty-tabs-transition-duration, 300ms) var(--ty-tabs-transition-easing, ease-in-out);
|
|
281
208
|
}
|
|
282
|
-
|
|
283
209
|
@media (prefers-reduced-motion: reduce) {
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
}
|
|
292
|
-
|
|
210
|
+
.panels-wrapper {
|
|
211
|
+
transition-duration: 0ms !important;
|
|
212
|
+
}
|
|
213
|
+
.marker-wrapper {
|
|
214
|
+
transition-duration: 0ms !important;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
293
217
|
::slotted(ty-tab) {
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
feeding a measured pixel value back into the host's own width is a
|
|
298
|
-
self-referential loop (see setupResizeObserver). */
|
|
299
|
-
width: var(--tabs-page-width, var(--tabs-width, 100%));
|
|
300
|
-
height: 100%;
|
|
301
|
-
flex-shrink: 0;
|
|
218
|
+
width: var(--tabs-page-width, var(--tabs-width, 100%));
|
|
219
|
+
height: 100%;
|
|
220
|
+
flex-shrink: 0;
|
|
302
221
|
}
|
|
303
222
|
`;
|