@typlog/ui 0.12.2 → 0.13.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.
@@ -1,107 +0,0 @@
1
-
2
- .ui-root {
3
- --scrollarea-scrollbar-horizontal-margin-top: var(--space-1);
4
- --scrollarea-scrollbar-horizontal-margin-bottom: var(--space-1);
5
- --scrollarea-scrollbar-horizontal-margin-left: var(--space-1);
6
- --scrollarea-scrollbar-horizontal-margin-right: var(--space-1);
7
- --scrollarea-scrollbar-vertical-margin-top: var(--space-1);
8
- --scrollarea-scrollbar-vertical-margin-bottom: var(--space-1);
9
- --scrollarea-scrollbar-vertical-margin-left: var(--space-1);
10
- --scrollarea-scrollbar-vertical-margin-right: var(--space-1);
11
- }
12
- .ui-ScrollArea {
13
- display: flex;
14
- flex-direction: column;
15
- overflow: hidden;
16
- width: 100%;
17
- height: 100%;
18
- }
19
- .ui-ScrollAreaViewport {
20
- display: flex;
21
- flex-direction: column;
22
- width: 100%;
23
- height: 100%;
24
- }
25
- .ui-ScrollAreaViewport:where(:focus-visible) + :where(.ui-ScrollAreaViewportFocusRing) {
26
- position: absolute;
27
- inset: 0;
28
- pointer-events: none;
29
- outline: 2px solid var(--focus-8);
30
- outline-offset: -2px;
31
- }
32
- .ui-ScrollAreaViewport:where(:has(.ui-ScrollAreaScrollbar[data-orientation='horizontal'])) {
33
- overscroll-behavior-x: contain;
34
- }
35
- .ui-ScrollAreaScrollbar {
36
- display: flex;
37
- -webkit-user-select: none;
38
- -moz-user-select: none;
39
- user-select: none;
40
- touch-action: none;
41
- }
42
- .ui-ScrollAreaScrollbar:where([data-orientation='vertical']) {
43
- flex-direction: column;
44
- width: var(--scrollarea-scrollbar-size);
45
- }
46
- .ui-ScrollAreaScrollbar:where([data-orientation='horizontal']) {
47
- flex-direction: row;
48
- height: var(--scrollarea-scrollbar-size);
49
- }
50
- .ui-ScrollAreaThumb {
51
- position: relative;
52
- }
53
- .ui-ScrollAreaThumb::before {
54
- content: '';
55
- position: absolute;
56
- top: 50%;
57
- left: 50%;
58
- transform: translate(-50%, -50%);
59
- width: 100%;
60
- height: 100%;
61
- min-width: var(--space-4);
62
- min-height: var(--space-4);
63
- }
64
- .ui-ScrollAreaScrollbar:where([data-size="1"]) {
65
- --scrollarea-scrollbar-size: var(--space-1);
66
- --scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full));
67
- }
68
- .ui-ScrollAreaScrollbar:where([data-size="2"]) {
69
- --scrollarea-scrollbar-size: var(--space-2);
70
- --scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full));
71
- }
72
- .ui-ScrollAreaScrollbar:where([data-size="3"]) {
73
- --scrollarea-scrollbar-size: var(--space-3);
74
- --scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full));
75
- }
76
- .ui-ScrollAreaScrollbar {
77
- background-color: var(--gray-a3);
78
- border-radius: var(--scrollarea-scrollbar-border-radius);
79
- animation-duration: 120ms;
80
- animation-timing-function: ease-out;
81
- }
82
- .ui-ScrollAreaScrollbar:where([data-state='visible']) {
83
- animation-name: ui-fade-in;
84
- }
85
- .ui-ScrollAreaScrollbar:where([data-state='hidden']) {
86
- animation-name: ui-fade-out;
87
- }
88
- .ui-ScrollAreaScrollbar:where([data-orientation='horizontal']) {
89
- margin-top: var(--scrollarea-scrollbar-horizontal-margin-top);
90
- margin-bottom: var(--scrollarea-scrollbar-horizontal-margin-bottom);
91
- margin-left: var(--scrollarea-scrollbar-horizontal-margin-left);
92
- margin-right: var(--scrollarea-scrollbar-horizontal-margin-right);
93
- }
94
- .ui-ScrollAreaScrollbar:where([data-orientation='vertical']) {
95
- margin-top: var(--scrollarea-scrollbar-vertical-margin-top);
96
- margin-bottom: var(--scrollarea-scrollbar-vertical-margin-bottom);
97
- margin-left: var(--scrollarea-scrollbar-vertical-margin-left);
98
- margin-right: var(--scrollarea-scrollbar-vertical-margin-right);
99
- }
100
- .ui-ScrollAreaThumb {
101
- background-color: var(--gray-a8);
102
- border-radius: inherit;
103
- transition: background-color 100ms;
104
- }
105
- .ui-ScrollAreaThumb:hover {
106
- background-color: var(--gray-a9);
107
- }
@@ -1,26 +0,0 @@
1
-
2
- .ui-Separator {
3
- display: block;
4
- box-sizing: border-box;
5
- background-color: var(--accent-a6);
6
- }
7
- .ui-Separator[aria-orientation="horizontal"] {
8
- width: var(--separator-size, auto);
9
- height: 1px;
10
- }
11
- .ui-Separator[aria-orientation="vertical"] {
12
- width: 1px;
13
- height: var(--separator-size, auto);
14
- }
15
- .ui-Separator:where(.r-size-1) {
16
- --separator-size: var(--space-4);
17
- }
18
- .ui-Separator:where(.r-size-2) {
19
- --separator-size: var(--space-6);
20
- }
21
- .ui-Separator:where(.r-size-3) {
22
- --separator-size: var(--space-9);
23
- }
24
- .ui-Separator:where(.r-size-4) {
25
- --separator-size: 100%;
26
- }
@@ -1,176 +0,0 @@
1
-
2
- .ui-root {
3
- --switch-disabled-blend-mode: multiply;
4
- --switch-high-contrast-checked-color-overlay: var(--black-a8);
5
- --switch-high-contrast-checked-active-before-filter: contrast(0.82) saturate(1.2) brightness(1.16);
6
- --switch-surface-checked-active-filter: brightness(0.92) saturate(1.1);
7
- }
8
- :is(.dark, .dark-theme) .ui-root {
9
- --switch-disabled-blend-mode: screen;
10
- --switch-high-contrast-checked-color-overlay: transparent;
11
- --switch-high-contrast-checked-active-before-filter: brightness(1.08);
12
- --switch-surface-checked-active-filter: brightness(1.08);
13
- }
14
- .ui-Switch {
15
- position: relative;
16
- display: inline-flex;
17
- align-items: center;
18
- vertical-align: top;
19
- flex-shrink: 0;
20
- outline: none;
21
-
22
- height: var(--switch-height);
23
- --switch-width: calc(var(--switch-height) * 1.75);
24
- --switch-thumb-inset: 1px;
25
- --switch-thumb-size: calc(var(--switch-height) - var(--switch-thumb-inset) * 2);
26
- --switch-thumb-translate-x: calc(var(--switch-width) - var(--switch-height));
27
- }
28
- .ui-Switch::before {
29
- content: '';
30
- display: block;
31
- width: var(--switch-width);
32
- height: var(--switch-height);
33
- border-radius: var(--switch-border-radius);
34
- transition: background-position, background-color, box-shadow, filter;
35
- transition-timing-function: linear, ease-in-out, ease-in-out, ease-in-out;
36
- background-repeat: no-repeat;
37
- background-size: calc(var(--switch-width) * 2 + var(--switch-height)) 100%;
38
- }
39
- .ui-Switch:where([data-state='unchecked'])::before {
40
- transition-duration: 120ms, 140ms, 140ms, 140ms;
41
- background-position-x: 100%;
42
- }
43
- .ui-Switch:where([data-state='checked'])::before {
44
- transition-duration: 160ms, 140ms, 140ms, 140ms;
45
- background-position: 0%;
46
- }
47
- .ui-Switch:where(:active)::before {
48
- transition-duration: 30ms;
49
- }
50
- .ui-Switch:where(:focus-visible)::before {
51
- outline: 2px solid var(--focus-8);
52
- outline-offset: 2px;
53
- }
54
- .ui-Switch::before {
55
- cursor: default;
56
- }
57
- .ui-Switch:where([data-disabled])::before {
58
- cursor: not-allowed;
59
- }
60
- .ui-SwitchThumb {
61
- background-color: white;
62
- position: absolute;
63
- left: var(--switch-thumb-inset);
64
- width: var(--switch-thumb-size);
65
- height: var(--switch-thumb-size);
66
- border-radius: calc(var(--switch-border-radius) - var(--switch-thumb-inset));
67
- transition: transform 140ms cubic-bezier(0.45, 0.05, 0.55, 0.95), box-shadow 140ms ease-in-out;
68
- }
69
- .ui-SwitchThumb:where([data-state='checked']) {
70
- transform: translateX(var(--switch-thumb-translate-x));
71
- }
72
- .ui-Switch:where(.r-size-1) {
73
- --switch-height: var(--space-4);
74
- --switch-border-radius: max(var(--radius-1), var(--radius-thumb));
75
- }
76
- .ui-Switch:where(.r-size-2) {
77
- --switch-height: calc(var(--space-5) * 5 / 6);
78
- --switch-border-radius: max(var(--radius-2), var(--radius-thumb));
79
- }
80
- .ui-Switch:where(.r-size-3) {
81
- --switch-height: var(--space-5);
82
- --switch-border-radius: max(var(--radius-2), var(--radius-thumb));
83
- }
84
- .ui-Switch:where(.r-variant-surface)::before {
85
- background-color: var(--gray-a3);
86
- background-image: linear-gradient(to right, var(--accent-track) 40%, transparent 60%);
87
- box-shadow: inset 0 0 0 1px var(--gray-a5);
88
- }
89
- .ui-Switch:where(.r-variant-surface):where(:active)::before {
90
- background-color: var(--gray-a4);
91
- }
92
- .ui-Switch:where(.r-variant-surface):where([data-state='checked']:active)::before {
93
- filter: var(--switch-surface-checked-active-filter);
94
- }
95
- .ui-Switch:where(.r-variant-surface):where(.r-high-contrast)::before {
96
- background-image:
97
- linear-gradient(to right, var(--switch-high-contrast-checked-color-overlay) 40%, transparent 60%),
98
- linear-gradient(to right, var(--accent-track) 40%, transparent 60%);
99
- }
100
- .ui-Switch:where(.r-variant-surface):where(.r-high-contrast):where([data-state='checked']:active)::before {
101
- filter: var(--switch-high-contrast-checked-active-before-filter);
102
- }
103
- .ui-Switch:where(.r-variant-surface):where([data-disabled]) {
104
- mix-blend-mode: var(--switch-disabled-blend-mode);
105
- }
106
- .ui-Switch:where(.r-variant-surface):where([data-disabled])::before {
107
- filter: none;
108
- background-image: none;
109
- background-color: var(--gray-a3);
110
- box-shadow: inset 0 0 0 1px var(--gray-a3);
111
- }
112
- .ui-Switch:where(.r-variant-surface) .ui-SwitchThumb:where([data-state='unchecked']) {
113
- box-shadow: 0 0 1px 1px var(--black-a2), 0 1px 1px var(--black-a1), 0 2px 4px -1px var(--black-a1);
114
- }
115
- .ui-Switch:where(.r-variant-surface) .ui-SwitchThumb:where([data-state='checked']) {
116
- box-shadow: 0 1px 3px var(--black-a2), 0 2px 4px -1px var(--black-a1), 0 0 0 1px var(--black-a1),
117
- 0 0 0 1px var(--accent-a4), -1px 0 1px var(--black-a2);
118
- }
119
- .ui-Switch:where(.r-variant-surface):where(.r-high-contrast) .ui-SwitchThumb:where([data-state='checked']) {
120
- box-shadow: 0 1px 3px var(--black-a2), 0 2px 4px -1px var(--black-a1), 0 0 0 1px var(--black-a2),
121
- -1px 0 1px var(--black-a2);
122
- }
123
- .ui-Switch:where(.r-variant-surface) .ui-SwitchThumb:where([data-disabled]) {
124
- background-color: var(--gray-2);
125
- box-shadow: 0 0 0 1px var(--gray-a2), 0 1px 3px var(--black-a1);
126
- transition: none;
127
- }
128
- .ui-Switch:where(.r-variant-soft)::before {
129
- background-image:
130
- linear-gradient(to right, var(--accent-a4) 40%, transparent 60%),
131
- linear-gradient(to right, var(--accent-a4) 40%, transparent 60%),
132
- linear-gradient(to right, var(--accent-a4) 40%, var(--white-a1) 60%),
133
- linear-gradient(to right, var(--gray-a2) 40%, var(--gray-a3) 60%);
134
- }
135
- .ui-Switch:where(.r-variant-soft):where([data-state='unchecked'])::before {
136
- background-color: var(--gray-a3);
137
- }
138
- .ui-Switch:where(.r-variant-soft):where(:active)::before {
139
- background-color: var(--gray-a4);
140
- }
141
- .ui-Switch:where(.r-variant-soft):where(.r-high-contrast)::before {
142
- background-image:
143
- linear-gradient(to right, var(--switch-high-contrast-checked-color-overlay) 40%, transparent 60%),
144
- linear-gradient(to right, var(--accent-a6) 40%, transparent 60%),
145
- linear-gradient(to right, var(--accent-a6) 40%, transparent 60%),
146
- linear-gradient(to right, var(--accent-a6) 40%, var(--white-a1) 60%),
147
- linear-gradient(to right, var(--accent-a3) 40%, var(--gray-a3) 60%);
148
- }
149
- .ui-Switch:where(.r-variant-soft):where(.r-high-contrast):where([data-state='checked']:active)::before {
150
- filter: var(--switch-high-contrast-checked-active-before-filter);
151
- }
152
- .ui-Switch:where(.r-variant-soft):where([data-disabled]) {
153
- mix-blend-mode: var(--switch-disabled-blend-mode);
154
- }
155
- .ui-Switch:where(.r-variant-soft):where([data-disabled])::before {
156
- filter: none;
157
- background-image: none;
158
- background-color: var(--gray-a4);
159
- }
160
- .ui-Switch:where(.r-variant-soft) .ui-SwitchThumb {
161
- filter: saturate(0.45);
162
- }
163
- .ui-Switch:where(.r-variant-soft) .ui-SwitchThumb:where([data-state='unchecked']) {
164
- box-shadow: 0 0 0 1px var(--black-a1), 0 1px 3px var(--black-a1), 0 1px 3px var(--black-a1),
165
- 0 2px 4px -1px var(--black-a1);
166
- }
167
- .ui-Switch:where(.r-variant-soft) .ui-SwitchThumb:where([data-state='checked']) {
168
- box-shadow: 0 0 0 1px var(--black-a1), 0 1px 3px var(--black-a2), 0 1px 3px var(--accent-a3),
169
- 0 2px 4px -1px var(--accent-a3);
170
- }
171
- .ui-Switch:where(.r-variant-soft) .ui-SwitchThumb:where([data-disabled]) {
172
- filter: none;
173
- background-color: var(--gray-2);
174
- box-shadow: 0 0 0 1px var(--gray-a2), 0 1px 3px var(--black-a1);
175
- transition: none;
176
- }
@@ -1,198 +0,0 @@
1
-
2
- .ui-root {
3
- --scrollarea-scrollbar-horizontal-margin-top: var(--space-1);
4
- --scrollarea-scrollbar-horizontal-margin-bottom: var(--space-1);
5
- --scrollarea-scrollbar-horizontal-margin-left: var(--space-1);
6
- --scrollarea-scrollbar-horizontal-margin-right: var(--space-1);
7
- --scrollarea-scrollbar-vertical-margin-top: var(--space-1);
8
- --scrollarea-scrollbar-vertical-margin-bottom: var(--space-1);
9
- --scrollarea-scrollbar-vertical-margin-left: var(--space-1);
10
- --scrollarea-scrollbar-vertical-margin-right: var(--space-1);
11
- }
12
- .ui-ScrollArea {
13
- display: flex;
14
- flex-direction: column;
15
- overflow: hidden;
16
- width: 100%;
17
- height: 100%;
18
- }
19
- .ui-ScrollAreaViewport {
20
- display: flex;
21
- flex-direction: column;
22
- width: 100%;
23
- height: 100%;
24
- }
25
- .ui-ScrollAreaViewport:where(:focus-visible) + :where(.ui-ScrollAreaViewportFocusRing) {
26
- position: absolute;
27
- inset: 0;
28
- pointer-events: none;
29
- outline: 2px solid var(--focus-8);
30
- outline-offset: -2px;
31
- }
32
- .ui-ScrollAreaViewport:where(:has(.ui-ScrollAreaScrollbar[data-orientation='horizontal'])) {
33
- overscroll-behavior-x: contain;
34
- }
35
- .ui-ScrollAreaScrollbar {
36
- display: flex;
37
- -webkit-user-select: none;
38
- -moz-user-select: none;
39
- user-select: none;
40
- touch-action: none;
41
- }
42
- .ui-ScrollAreaScrollbar:where([data-orientation='vertical']) {
43
- flex-direction: column;
44
- width: var(--scrollarea-scrollbar-size);
45
- }
46
- .ui-ScrollAreaScrollbar:where([data-orientation='horizontal']) {
47
- flex-direction: row;
48
- height: var(--scrollarea-scrollbar-size);
49
- }
50
- .ui-ScrollAreaThumb {
51
- position: relative;
52
- }
53
- .ui-ScrollAreaThumb::before {
54
- content: '';
55
- position: absolute;
56
- top: 50%;
57
- left: 50%;
58
- transform: translate(-50%, -50%);
59
- width: 100%;
60
- height: 100%;
61
- min-width: var(--space-4);
62
- min-height: var(--space-4);
63
- }
64
- .ui-ScrollAreaScrollbar:where([data-size="1"]) {
65
- --scrollarea-scrollbar-size: var(--space-1);
66
- --scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full));
67
- }
68
- .ui-ScrollAreaScrollbar:where([data-size="2"]) {
69
- --scrollarea-scrollbar-size: var(--space-2);
70
- --scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full));
71
- }
72
- .ui-ScrollAreaScrollbar:where([data-size="3"]) {
73
- --scrollarea-scrollbar-size: var(--space-3);
74
- --scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full));
75
- }
76
- .ui-ScrollAreaScrollbar {
77
- background-color: var(--gray-a3);
78
- border-radius: var(--scrollarea-scrollbar-border-radius);
79
- animation-duration: 120ms;
80
- animation-timing-function: ease-out;
81
- }
82
- .ui-ScrollAreaScrollbar:where([data-state='visible']) {
83
- animation-name: ui-fade-in;
84
- }
85
- .ui-ScrollAreaScrollbar:where([data-state='hidden']) {
86
- animation-name: ui-fade-out;
87
- }
88
- .ui-ScrollAreaScrollbar:where([data-orientation='horizontal']) {
89
- margin-top: var(--scrollarea-scrollbar-horizontal-margin-top);
90
- margin-bottom: var(--scrollarea-scrollbar-horizontal-margin-bottom);
91
- margin-left: var(--scrollarea-scrollbar-horizontal-margin-left);
92
- margin-right: var(--scrollarea-scrollbar-horizontal-margin-right);
93
- }
94
- .ui-ScrollAreaScrollbar:where([data-orientation='vertical']) {
95
- margin-top: var(--scrollarea-scrollbar-vertical-margin-top);
96
- margin-bottom: var(--scrollarea-scrollbar-vertical-margin-bottom);
97
- margin-left: var(--scrollarea-scrollbar-vertical-margin-left);
98
- margin-right: var(--scrollarea-scrollbar-vertical-margin-right);
99
- }
100
- .ui-ScrollAreaThumb {
101
- background-color: var(--gray-a8);
102
- border-radius: inherit;
103
- transition: background-color 100ms;
104
- }
105
- .ui-ScrollAreaThumb:hover {
106
- background-color: var(--gray-a9);
107
- }
108
-
109
- .ui-TableContent {
110
- --table-row-background-color: transparent;
111
- --table-row-box-shadow: inset 0 -1px var(--gray-a5);
112
-
113
- width: 100%;
114
- text-align: left;
115
- vertical-align: top;
116
- border-collapse: collapse;
117
- border-radius: calc(var(--table-border-radius) - 1px);
118
- border-spacing: 0;
119
- box-sizing: border-box;
120
-
121
- /* Makes "height: 100%" work on content inside cells */
122
- height: 0;
123
- }
124
- .ui-TableContent tr {
125
- color: var(--gray-12);
126
- }
127
- .ui-TableContent td,
128
- .ui-TableContent th {
129
- background-color: var(--table-row-background-color);
130
- box-shadow: var(--table-row-box-shadow);
131
- box-sizing: border-box;
132
- padding: var(--table-cell-padding);
133
- min-height: var(--table-cell-min-height);
134
- }
135
- .ui-TableContent thead th {
136
- font-weight: var(--font-weight-semibold);
137
- }
138
- .ui-TableContent tbody th {
139
- font-weight: var(--font-weight-regular);
140
- }
141
- .ui-TableContent button {
142
- vertical-align: middle;
143
- }
144
- .ui-Table[data-size="1"] {
145
- --table-border-radius: var(--radius-3);
146
- --table-cell-padding: var(--space-2);
147
- --table-cell-min-height: calc(36px * var(--scaling));
148
- }
149
- .ui-Table[data-size="1"] .ui-TableContent {
150
- font-size: var(--font-size-2);
151
- line-height: var(--line-height-2);
152
- }
153
- .ui-Table[data-size="2"] {
154
- --table-border-radius: var(--radius-4);
155
- --table-cell-padding: var(--space-3);
156
- --table-cell-min-height: calc(44px * var(--scaling));
157
- }
158
- .ui-Table[data-size="2"] .ui-TableContent {
159
- font-size: var(--font-size-2);
160
- line-height: var(--line-height-2);
161
- }
162
- .ui-Table[data-size="3"] {
163
- --table-border-radius: var(--radius-4);
164
- --table-cell-padding: var(--space-3) var(--space-4);
165
- --table-cell-min-height: var(--space-8);
166
- }
167
- .ui-Table[data-size="3"] .ui-TableContent {
168
- font-size: var(--font-size-3);
169
- line-height: var(--line-height-3);
170
- }
171
- .ui-Table:where([data-variant="surface"]) {
172
- box-sizing: border-box;
173
- border: 1px solid var(--gray-a5);
174
- border-radius: var(--table-border-radius);
175
- background-color: var(--color-panel);
176
- -webkit-backdrop-filter: var(--backdrop-filter-panel);
177
- backdrop-filter: var(--backdrop-filter-panel);
178
- background-clip: padding-box;
179
- position: relative;
180
- }
181
- @supports (box-shadow: 0 0 0 1px color-mix(in oklab, white, black)) {
182
- .ui-Table:where([data-variant="surface"]) {
183
- border-color: color-mix(in oklab, var(--gray-a5), var(--gray-6));
184
- }
185
- }
186
- .ui-Table:where([data-variant="surface"]) .ui-TableContent {
187
- overflow: hidden;
188
- }
189
- .ui-Table:where([data-variant="surface"]) thead {
190
- --table-row-background-color: var(--gray-a2);
191
- }
192
- .ui-Table:where([data-variant="surface"]) tbody :where(tr:last-child) {
193
- --table-row-box-shadow: none;
194
- }
195
- .ui-Table:where([data-variant="ghost"]) {
196
- --scrollarea-scrollbar-horizontal-margin-left: 0;
197
- --scrollarea-scrollbar-horizontal-margin-right: 0;
198
- }
@@ -1,201 +0,0 @@
1
-
2
- .ui-TabList::-webkit-scrollbar {
3
- display: none;
4
- }
5
- .ui-TabList:where(.r-size-1) {
6
- --tab-font-size: var(--font-size-1);
7
- --tab-line-height: var(--line-height-1);
8
- --tab-letter-spacing: var(--letter-spacing-1);
9
- --tab-height: var(--space-6);
10
- --tab-padding-x: var(--space-1);
11
- --tab-radius: max(var(--radius-2), var(--radius-full));
12
- --tab-item-radius: max(var(--radius-1), var(--radius-full));
13
- --tab-inner-padding-x: var(--space-1);
14
- --tab-inner-height: var(--space-5);
15
- }
16
- .ui-TabList:where(.r-size-2) {
17
- --tab-font-size: var(--font-size-2);
18
- --tab-line-height: var(--line-height-2);
19
- --tab-letter-spacing: var(--letter-spacing-2);
20
- --tab-height: var(--space-7);
21
- --tab-padding-x: var(--space-2);
22
- --tab-radius: max(var(--radius-3), var(--radius-full));
23
- --tab-item-radius: max(var(--radius-2), var(--radius-full));
24
- --tab-inner-padding-x: var(--space-2);
25
- --tab-inner-height: calc(var(--space-6) - var(--space-1));
26
- }
27
- .ui-TabList:where(.r-variant-surface.r-size-1),
28
- .ui-TabList:where(.r-variant-soft.r-size-1) {
29
- --tab-inner-padding-x: calc(var(--space-2) / 4 * 3);
30
- }
31
- @layer components {
32
- .ui-TabList {
33
- justify-content: flex-start;
34
- position: relative;
35
- overflow-x: auto;
36
- white-space: nowrap;
37
- font-style: normal;
38
- scrollbar-width: none;
39
- font-size: var(--tab-font-size);
40
- line-height: var(--tab-line-height);
41
- letter-spacing: var(--tab-letter-spacing);
42
- }
43
-
44
- /** classic & surface */
45
- .ui-TabList:where(.r-variant-surface, .r-variant-classic) {
46
- position: relative;
47
- display: inline-flex;
48
- width: -moz-fit-content;
49
- width: fit-content;
50
- align-items: center;
51
- justify-content: center;
52
- vertical-align: top;
53
- flex-shrink: 0;
54
- border-radius: var(--tab-radius);
55
- }
56
- .ui-TabList:where(.r-variant-classic) {
57
- background-color: var(--accent-a3);
58
- padding-left: var(--tab-padding-x);
59
- padding-right: var(--tab-padding-x);
60
- }
61
- .ui-TabList:where(.r-variant-surface) {
62
- --tab-item-radius: 0;
63
- --tab-inner-height: var(--tab-height);
64
- box-shadow: inset 0 0 0 1px var(--gray-a6);
65
- }
66
-
67
- /** soft & outline */
68
- .ui-TabList:where(.r-variant-outline, .r-variant-soft) {
69
- display: flex;
70
- box-shadow: inset 0 -1px 0 0 var(--gray-a5);
71
- }
72
- .ui-TabList:where(.r-variant-soft) {
73
- padding-left: var(--tab-padding-x);
74
- padding-right: var(--tab-padding-x);
75
- }
76
- }
77
- .ui-TabsIndicator {
78
- position: absolute;
79
- left: 0;
80
- transition-property: width, transform;
81
- transform: translateX(var(--reka-tabs-indicator-position));
82
- width: var(--reka-tabs-indicator-size);
83
- }
84
- .ui-TabList:where(.r-variant-surface) :where(.ui-TabsIndicator) {
85
- top: 0;
86
- height: var(--tab-inner-height);
87
- background-color: var(--accent-a3);
88
- transition-duration: 100ms;
89
- }
90
- .ui-TabList:where(.r-variant-classic) :where(.ui-TabsIndicator) {
91
- top: calc((var(--tab-height) - var(--tab-inner-height)) / 2);
92
- height: var(--tab-inner-height);
93
- background-color: var(--color-panel-solid);
94
- box-shadow:
95
- 0 0 0 0.5px var(--black-a1),
96
- 0 1px 1px 0 var(--gray-a2),
97
- 0 2px 1px -1px var(--black-a1),
98
- 0 1px 3px 0 var(--black-a1);
99
- border-radius: var(--tab-item-radius);
100
- transition-duration: 100ms;
101
- }
102
- .ui-TabList:where(.r-variant-soft) :where(.ui-TabsIndicator) {
103
- top: calc((var(--tab-height) - var(--tab-inner-height)) / 2);
104
- height: var(--tab-inner-height);
105
- background-color: var(--accent-a3);
106
- border-radius: var(--tab-item-radius);
107
- transition-duration: 100ms;
108
- }
109
- .ui-TabList:where(.r-variant-outline) :where(.ui-TabsIndicator) {
110
- bottom: 0;
111
- height: 2px;
112
- background-color: var(--accent-indicator);
113
- transition-duration: 300ms;
114
- }
115
-
116
- /** high contrast */
117
- :where(.ui-TabList.r-variant-outline.r-high-contrast) .ui-TabsIndicator {
118
- background-color: var(--accent-12);
119
- }
120
-
121
- .ui-TabTrigger {
122
- display: flex;
123
- align-items: center;
124
- justify-content: center;
125
- flex-shrink: 0;
126
- position: relative;
127
- -webkit-user-select: none;
128
- -moz-user-select: none;
129
- user-select: none;
130
- box-sizing: border-box;
131
- height: var(--tab-height);
132
- color: var(--gray-a11);
133
- outline: none;
134
- }
135
- .ui-TabTrigger:disabled {
136
- color: var(--gray-a8);
137
- border-color: currentColor;
138
- }
139
- .ui-TabTriggerInner,
140
- .ui-TabTriggerInnerHidden {
141
- display: flex;
142
- align-items: center;
143
- justify-content: center;
144
- box-sizing: border-box;
145
- height: var(--tab-inner-height);
146
- padding-left: var(--tab-inner-padding-x);
147
- padding-right: var(--tab-inner-padding-x);
148
- border-radius: var(--tab-item-radius);
149
- }
150
- .ui-TabTriggerInner {
151
- position: absolute;
152
- }
153
- :where(.ui-TabTrigger[data-state='inactive']) .ui-TabTriggerInner {
154
- letter-spacing: var(--tab-inactive-letter-spacing);
155
- word-spacing: var(--tab-inactive-word-spacing);
156
- }
157
- :where(.ui-TabTrigger[data-state='active']) .ui-TabTriggerInner {
158
- font-weight: var(--font-weight-medium);
159
- letter-spacing: var(--tab-active-letter-spacing);
160
- word-spacing: var(--tab-active-word-spacing);
161
- }
162
- .ui-TabTriggerInnerHidden {
163
- visibility: hidden;
164
- font-weight: var(--font-weight-medium);
165
- letter-spacing: var(--tab-active-letter-spacing);
166
- word-spacing: var(--tab-active-word-spacing);
167
- }
168
- @media (hover: hover) {
169
- .ui-TabList:where(.r-variant-outline, .r-variant-classic) :where(.ui-TabTrigger:hover) {
170
- color: var(--gray-12);
171
- }
172
- .ui-TabList:where(.r-variant-surface, .r-variant-soft) :where(.ui-TabTrigger:hover) {
173
- color: var(--accent-a11);
174
- }
175
- .ui-TabList:where(.r-variant-outline) :where(.ui-TabTrigger:not(:disabled):hover) :where(.ui-TabTriggerInner) {
176
- background-color: var(--gray-a3);
177
- }
178
- .ui-TabTrigger:where(:focus-visible:hover) :where(.ui-TabTriggerInner) {
179
- background-color: var(--accent-a3);
180
- }
181
- }
182
- .ui-TabTrigger:where(:focus-visible) :where(.ui-TabTriggerInner) {
183
- outline: 2px solid var(--focus-8);
184
- outline-offset: -2px;
185
- }
186
- .ui-TabList:where(.r-variant-outline) :where(.ui-TabTrigger) {
187
- padding-left: var(--tab-padding-x);
188
- padding-right: var(--tab-padding-x);
189
- }
190
- .ui-TabList:where(.r-variant-classic, .r-variant-outline) :where(.ui-TabTrigger[data-state='active']) {
191
- color: var(--gray-12);
192
- }
193
- .ui-TabList:where(.r-variant-soft) :where(.ui-TabTrigger + .ui-TabTrigger) {
194
- margin-left: calc(var(--tab-padding-x) / 2)
195
- }
196
- .ui-TabList:where(.r-variant-surface) :where(.ui-TabTrigger + .ui-TabTrigger) {
197
- box-shadow: inset 1px 0 0 var(--gray-a4);
198
- }
199
- .ui-TabList:where(.r-variant-surface, .r-variant-soft) :where(.ui-TabTrigger[data-state='active']) {
200
- color: var(--accent-a11);
201
- }