@slexkit/theme-shadcn 0.2.0 → 0.3.1

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,114 +1,114 @@
1
- .slex-switch {
2
- display: inline-flex;
3
- align-items: center;
4
- gap: 0.5rem;
5
- cursor: pointer;
6
- }
7
-
8
- .slex-switch-event-layer {
9
- display: inline-flex;
10
- }
11
-
12
- .slex-choice-event-layer {
13
- display: inline-flex;
14
- }
15
-
1
+ .slex-switch {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ gap: 0.5rem;
5
+ cursor: pointer;
6
+ }
7
+
8
+ .slex-switch-event-layer {
9
+ display: inline-flex;
10
+ }
11
+
12
+ .slex-choice-event-layer {
13
+ display: inline-flex;
14
+ }
15
+
16
16
  .slex-switch-label {
17
17
  display: inline-flex;
18
18
  align-items: center;
19
19
  gap: 0.375rem;
20
20
  min-width: 0;
21
21
  color: var(--foreground);
22
- font-size: 0.8125rem;
23
- font-weight: 500;
24
- }
25
-
26
- .slex-switch-input {
27
- position: absolute;
28
- width: 1px;
29
- height: 1px;
30
- padding: 0;
31
- margin: -1px;
32
- overflow: hidden;
33
- clip: rect(0, 0, 0, 0);
34
- white-space: nowrap;
35
- border: 0;
36
- }
37
-
38
- .slex-switch-control {
39
- box-sizing: border-box;
40
- position: relative;
41
- display: inline-flex;
42
- align-items: center;
43
- flex: 0 0 auto;
44
- width: 2.75rem;
45
- height: 1.5rem;
46
- margin-inline-end: 0;
47
- padding: 0;
48
- border: 2px solid transparent;
22
+ font-size: 0.8125rem;
23
+ font-weight: 500;
24
+ }
25
+
26
+ .slex-switch-input {
27
+ position: absolute;
28
+ width: 1px;
29
+ height: 1px;
30
+ padding: 0;
31
+ margin: -1px;
32
+ overflow: hidden;
33
+ clip: rect(0, 0, 0, 0);
34
+ white-space: nowrap;
35
+ border: 0;
36
+ }
37
+
38
+ .slex-switch-control {
39
+ box-sizing: border-box;
40
+ position: relative;
41
+ display: inline-flex;
42
+ align-items: center;
43
+ flex: 0 0 auto;
44
+ width: 2.75rem;
45
+ height: 1.5rem;
46
+ margin-inline-end: 0;
47
+ padding: 0;
48
+ border: 2px solid transparent;
49
49
  border-radius: 9999px;
50
- background: var(--input);
51
- transition: background-color 150ms ease, border-color 150ms ease, box-shadow 150ms ease;
52
- }
53
-
54
- .slex-switch-control::after {
55
- content: "";
56
- display: block;
57
- width: 1.25rem;
58
- height: 1.25rem;
59
- border: 0;
50
+ background: var(--input);
51
+ transition: background-color 150ms ease, border-color 150ms ease, box-shadow 150ms ease;
52
+ }
53
+
54
+ .slex-switch-control::after {
55
+ content: "";
56
+ display: block;
57
+ width: 1.25rem;
58
+ height: 1.25rem;
59
+ border: 0;
60
60
  border-radius: 9999px;
61
- background: var(--background);
62
- box-shadow: 0 1px 2px color-mix(in oklab, var(--foreground) 12%, transparent);
63
- transition: border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease, transform 150ms ease;
64
- transform: translateX(0);
65
- will-change: transform;
66
- }
67
-
68
- .slex-switch:hover .slex-switch-control {
69
- border-color: color-mix(in oklab, var(--primary) 42%, var(--input));
70
- box-shadow: 0 0 0 4px color-mix(in oklab, var(--primary) 8%, transparent);
71
- }
72
-
73
- .slex-switch:hover .slex-switch-control::after {
74
- box-shadow: 0 0 0 4px color-mix(in oklab, var(--primary) 10%, transparent);
75
- }
76
-
77
- .slex-switch:active .slex-switch-control::after {
78
- box-shadow: 0 0 0 5px color-mix(in oklab, var(--primary) 16%, transparent);
79
- }
80
-
81
- .slex-switch-input:checked + .slex-switch-control {
82
- border-color: var(--primary);
83
- background: var(--primary);
84
- }
85
-
86
- .slex-switch:hover .slex-switch-input:checked + .slex-switch-control {
87
- background: color-mix(in oklab, var(--primary) 88%, var(--background));
88
- }
89
-
90
- .slex-switch-input:checked + .slex-switch-control::after {
91
- background: var(--background);
92
- transform: translateX(1.25rem);
93
- }
94
-
95
- .slexkit-root[dir="rtl"] .slex-switch-input:checked + .slex-switch-control::after {
96
- transform: translateX(-1.25rem);
97
- }
98
-
99
- .slex-switch-input:focus-visible + .slex-switch-control {
100
- box-shadow: 0 0 0 3px color-mix(in oklab, var(--ring) 18%, transparent);
101
- }
102
-
103
- .slex-switch-input:disabled + .slex-switch-control {
104
- opacity: 0.55;
105
- }
106
-
107
- .slex-switch:has(.slex-switch-input:disabled) {
108
- cursor: not-allowed;
109
- }
110
-
111
- .slex-switch:has(.slex-switch-input:disabled):hover .slex-switch-control,
112
- .slex-switch:has(.slex-switch-input:disabled):hover .slex-switch-control::after {
113
- box-shadow: none;
61
+ background: var(--background);
62
+ box-shadow: 0 1px 2px color-mix(in oklab, var(--foreground) 12%, transparent);
63
+ transition: border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease, transform 150ms ease;
64
+ transform: translateX(0);
65
+ will-change: transform;
66
+ }
67
+
68
+ .slex-switch:hover .slex-switch-control {
69
+ border-color: color-mix(in oklab, var(--primary) 42%, var(--input));
70
+ box-shadow: 0 0 0 4px color-mix(in oklab, var(--primary) 8%, transparent);
71
+ }
72
+
73
+ .slex-switch:hover .slex-switch-control::after {
74
+ box-shadow: 0 0 0 4px color-mix(in oklab, var(--primary) 10%, transparent);
75
+ }
76
+
77
+ .slex-switch:active .slex-switch-control::after {
78
+ box-shadow: 0 0 0 5px color-mix(in oklab, var(--primary) 16%, transparent);
79
+ }
80
+
81
+ .slex-switch-input:checked + .slex-switch-control {
82
+ border-color: var(--primary);
83
+ background: var(--primary);
84
+ }
85
+
86
+ .slex-switch:hover .slex-switch-input:checked + .slex-switch-control {
87
+ background: color-mix(in oklab, var(--primary) 88%, var(--background));
88
+ }
89
+
90
+ .slex-switch-input:checked + .slex-switch-control::after {
91
+ background: var(--background);
92
+ transform: translateX(1.25rem);
93
+ }
94
+
95
+ .slexkit-root[dir="rtl"] .slex-switch-input:checked + .slex-switch-control::after {
96
+ transform: translateX(-1.25rem);
97
+ }
98
+
99
+ .slex-switch-input:focus-visible + .slex-switch-control {
100
+ box-shadow: 0 0 0 3px color-mix(in oklab, var(--ring) 18%, transparent);
101
+ }
102
+
103
+ .slex-switch-input:disabled + .slex-switch-control {
104
+ opacity: 0.55;
105
+ }
106
+
107
+ .slex-switch[data-disabled="true"] {
108
+ cursor: not-allowed;
109
+ }
110
+
111
+ .slex-switch[data-disabled="true"]:hover .slex-switch-control,
112
+ .slex-switch[data-disabled="true"]:hover .slex-switch-control::after {
113
+ box-shadow: none;
114
114
  }
@@ -1,43 +1,43 @@
1
- .slex-tabs {
2
- display: flex;
3
- flex-direction: column;
4
- width: 100%;
5
- }
6
-
7
- .slex-tabs[data-orientation="vertical"] {
8
- flex-direction: row;
9
- }
10
-
1
+ .slex-tabs {
2
+ display: flex;
3
+ flex-direction: column;
4
+ width: 100%;
5
+ }
6
+
7
+ .slex-tabs[data-orientation="vertical"] {
8
+ flex-direction: row;
9
+ }
10
+
11
11
  .slex-tabs-list {
12
12
  --slex-tabs-indicator-inline-inset: 12px;
13
13
  --slex-tabs-indicator-block-inset: 8px;
14
14
  position: relative;
15
15
  display: flex;
16
- gap: 0;
17
- margin: 0;
18
- padding: 0;
19
- list-style: none;
20
- overflow: hidden;
21
- border-bottom: 1px solid var(--border);
22
- }
23
-
24
- .slexkit-root .slex-tabs-list {
25
- display: flex;
26
- gap: 0;
27
- margin: 0;
28
- padding: 0;
29
- list-style: none;
30
- }
31
-
32
- .slexkit-root .slex-tabs-list li {
33
- margin: 0;
34
- padding: 0;
35
- color: inherit;
36
- font: inherit;
37
- line-height: inherit;
38
- list-style: none;
39
- }
40
-
16
+ gap: 0;
17
+ margin: 0;
18
+ padding: 0;
19
+ list-style: none;
20
+ overflow: hidden;
21
+ border-bottom: 1px solid var(--border);
22
+ }
23
+
24
+ .slexkit-root .slex-tabs-list {
25
+ display: flex;
26
+ gap: 0;
27
+ margin: 0;
28
+ padding: 0;
29
+ list-style: none;
30
+ }
31
+
32
+ .slexkit-root .slex-tabs-list li {
33
+ margin: 0;
34
+ padding: 0;
35
+ color: inherit;
36
+ font: inherit;
37
+ line-height: inherit;
38
+ list-style: none;
39
+ }
40
+
41
41
  .slex-tabs-selected-indicator {
42
42
  position: absolute;
43
43
  z-index: 20;
@@ -63,25 +63,25 @@
63
63
  .slex-tabs[data-orientation="vertical"] .slex-tabs-list {
64
64
  flex-direction: column;
65
65
  border-right: 1px solid var(--border);
66
- border-bottom: none;
67
- }
68
-
69
- .slex-tabs-trigger {
70
- position: relative;
71
- padding: 0.5rem 1rem;
72
- border: none;
73
- border-radius: 0;
74
- background: transparent;
75
- color: var(--muted-foreground);
76
- font-family: inherit;
77
- font-size: 0.875rem;
78
- font-weight: 500;
79
- white-space: nowrap;
66
+ border-bottom: none;
67
+ }
68
+
69
+ .slex-tabs-trigger {
70
+ position: relative;
71
+ padding: 0.5rem 1rem;
72
+ border: none;
73
+ border-radius: 0;
74
+ background: transparent;
75
+ color: var(--muted-foreground);
76
+ font-family: inherit;
77
+ font-size: 0.875rem;
78
+ font-weight: 500;
79
+ white-space: nowrap;
80
80
  cursor: pointer;
81
81
  outline: none;
82
82
  user-select: none;
83
83
  }
84
-
84
+
85
85
  .slex-tabs-trigger--icon {
86
86
  display: inline-grid;
87
87
  width: var(--slex-control-height, 2.25rem);
@@ -123,17 +123,17 @@
123
123
  .slex-tabs-trigger.slex-tabs-trigger--selected:hover:not([data-disabled]) {
124
124
  color: var(--primary);
125
125
  }
126
-
127
- .slex-tabs-trigger[data-disabled] {
128
- opacity: 0.4;
129
- cursor: not-allowed;
130
- }
131
-
132
- .slex-tabs-trigger:focus-visible {
133
- outline: 2px solid var(--ring);
134
- outline-offset: -2px;
135
- }
136
-
126
+
127
+ .slex-tabs-trigger[data-disabled] {
128
+ opacity: 0.4;
129
+ cursor: not-allowed;
130
+ }
131
+
132
+ .slex-tabs-trigger:focus-visible {
133
+ outline: 2px solid var(--ring);
134
+ outline-offset: -2px;
135
+ }
136
+
137
137
  .slex-tabs-content {
138
138
  margin-top: 0.75rem !important;
139
139
  border-radius: 0 !important;
@@ -155,38 +155,38 @@
155
155
  }
156
156
 
157
157
  @keyframes slex-tabs-content-in {
158
- from {
159
- opacity: 0;
160
- transform: translateY(2px);
161
- }
162
- to {
163
- opacity: 1;
164
- transform: translateY(0);
165
- }
166
- }
167
-
168
- .slex-tabs-content[hidden] {
169
- display: none;
170
- }
171
-
172
- @media (max-width: 640px) {
173
- .slex-tabs-list {
174
- overflow-x: auto;
175
- scrollbar-width: none;
176
- }
177
-
178
- .slex-tabs-list::-webkit-scrollbar {
179
- display: none;
180
- }
181
-
182
- .slex-tabs[data-orientation="vertical"] {
183
- flex-direction: column;
184
- }
185
-
186
- .slex-tabs[data-orientation="vertical"] .slex-tabs-list {
187
- flex-direction: row;
188
- border-right: 0;
189
- border-bottom: 1px solid var(--border);
190
- }
191
-
158
+ from {
159
+ opacity: 0;
160
+ transform: translateY(2px);
161
+ }
162
+ to {
163
+ opacity: 1;
164
+ transform: translateY(0);
165
+ }
166
+ }
167
+
168
+ .slex-tabs-content[hidden] {
169
+ display: none;
170
+ }
171
+
172
+ @media (max-width: 640px) {
173
+ .slex-tabs-list {
174
+ overflow-x: auto;
175
+ scrollbar-width: none;
176
+ }
177
+
178
+ .slex-tabs-list::-webkit-scrollbar {
179
+ display: none;
180
+ }
181
+
182
+ .slex-tabs[data-orientation="vertical"] {
183
+ flex-direction: column;
184
+ }
185
+
186
+ .slex-tabs[data-orientation="vertical"] .slex-tabs-list {
187
+ flex-direction: row;
188
+ border-right: 0;
189
+ border-bottom: 1px solid var(--border);
190
+ }
191
+
192
192
  }
@@ -25,10 +25,13 @@
25
25
  }
26
26
 
27
27
  .slex-input-control {
28
+ position: relative;
28
29
  display: flex;
29
30
  align-items: stretch;
30
31
  width: 100%;
31
32
  min-width: 0;
33
+ border-radius: var(--radius);
34
+ transition: box-shadow 150ms ease;
32
35
  }
33
36
 
34
37
  .slex-input {
@@ -42,16 +45,18 @@
42
45
  border: 1px solid var(--input);
43
46
  border-radius: var(--radius);
44
47
  background: var(--background);
48
+ background-clip: padding-box;
45
49
  color: var(--foreground);
46
50
  font-family: inherit;
47
51
  font-size: 0.875rem;
48
52
  line-height: 1.5;
49
53
  outline: none;
54
+ -webkit-appearance: none;
55
+ appearance: none;
50
56
  transition: border-color 150ms ease, box-shadow 150ms ease;
51
57
  }
52
58
 
53
- .slex-input-control[data-has-unit="true"] .slex-input,
54
- .slex-input-control[data-has-controls="true"] .slex-input {
59
+ .slex-input-control[data-has-unit="true"] .slex-input {
55
60
  border-top-right-radius: 0;
56
61
  border-bottom-right-radius: 0;
57
62
  }
@@ -75,80 +80,17 @@
75
80
  transition: border-color 150ms ease, box-shadow 150ms ease;
76
81
  }
77
82
 
78
- .slex-input-control[data-has-controls="true"] .slex-input-unit {
79
- border-radius: 0;
80
- }
81
-
82
- .slex-input-controls {
83
- box-sizing: border-box;
84
- display: inline-grid;
85
- grid-template-columns: repeat(2, minmax(0, 1fr));
86
- align-items: stretch;
87
- flex: 0 0 auto;
88
- width: 3.75rem;
89
- min-width: 3.75rem;
90
- min-height: 2.5625rem;
91
- overflow: hidden;
92
- border: 1px solid var(--input);
93
- border-left: 0;
94
- border-radius: 0 var(--radius) var(--radius) 0;
95
- background: var(--background);
96
- transition: border-color 150ms ease, box-shadow 150ms ease;
97
- }
98
-
99
- .slex-input-step {
100
- box-sizing: border-box;
101
- display: inline-flex;
102
- align-items: center;
103
- justify-content: center;
104
- width: 100%;
105
- min-width: 0;
106
- min-height: 100%;
107
- padding: 0;
108
- border: 0;
109
- border-left: 1px solid var(--input);
110
- border-radius: 0;
111
- background: transparent;
112
- color: var(--foreground);
113
- font: inherit;
114
- font-size: 0.875rem;
115
- font-weight: 600;
116
- line-height: 1;
117
- cursor: pointer;
118
- transition: border-color 150ms ease, background 150ms ease, box-shadow 150ms ease;
119
- }
120
-
121
- .slex-input-step:first-child {
122
- border-left: 0;
123
- }
124
-
125
- .slex-input-step:last-child {
126
- border-radius: 0;
127
- }
128
-
129
- .slex-input-step:hover:not(:disabled) {
130
- background: color-mix(in oklab, var(--muted) 52%, var(--background));
131
- }
132
-
133
- .slex-input-step:focus-visible {
134
- z-index: 1;
135
- border-color: var(--ring);
136
- outline: none;
137
- box-shadow: 0 0 0 2px color-mix(in oklab, var(--ring) 16%, transparent);
138
- }
139
-
140
- .slex-input-step:disabled {
141
- opacity: 0.45;
142
- cursor: not-allowed;
143
- }
144
-
145
83
  .slex-input::placeholder {
146
84
  color: var(--muted-foreground);
147
85
  }
148
86
 
149
87
  .slex-input:focus {
150
88
  border-color: var(--ring);
151
- box-shadow: 0 0 0 2px color-mix(in oklab, var(--ring) 16%, transparent);
89
+ box-shadow: 0 0 0 2px color-mix(in oklab, var(--ring) 18%, transparent);
90
+ }
91
+
92
+ .slex-input-control[data-has-unit="true"] .slex-input:focus {
93
+ box-shadow: none;
152
94
  }
153
95
 
154
96
  .slex-input[type="number"] {
@@ -175,18 +117,21 @@
175
117
  box-shadow: 0 0 0 2px color-mix(in oklab, var(--destructive) 18%, transparent);
176
118
  }
177
119
 
178
- .slex-input-control:focus-within .slex-input-unit {
179
- border-color: var(--ring);
120
+ .slex-input-field[data-invalid="true"] .slex-input-control[data-has-unit="true"] .slex-input:focus {
121
+ box-shadow: none;
122
+ }
123
+
124
+ .slex-input-control:focus-within {
180
125
  box-shadow: 0 0 0 2px color-mix(in oklab, var(--ring) 16%, transparent);
181
126
  }
182
127
 
183
- .slex-input-control:focus-within .slex-input-step {
184
- border-color: var(--ring);
128
+ .slex-input-control:not([data-has-unit]):focus-within {
129
+ box-shadow: none;
185
130
  }
186
131
 
187
- .slex-input-control:focus-within .slex-input-controls {
132
+ .slex-input-control:focus-within .slex-input,
133
+ .slex-input-control:focus-within .slex-input-unit {
188
134
  border-color: var(--ring);
189
- box-shadow: 0 0 0 2px color-mix(in oklab, var(--ring) 16%, transparent);
190
135
  }
191
136
 
192
137
  .slex-input-field[data-invalid="true"] .slex-input-unit {
@@ -194,26 +139,17 @@
194
139
  color: color-mix(in oklab, var(--destructive) 84%, var(--muted-foreground));
195
140
  }
196
141
 
197
- .slex-input-field[data-invalid="true"] .slex-input-step {
198
- border-color: color-mix(in oklab, var(--destructive) 72%, var(--input));
199
- }
200
-
201
- .slex-input-field[data-invalid="true"] .slex-input-controls {
202
- border-color: color-mix(in oklab, var(--destructive) 72%, var(--input));
203
- }
204
-
205
- .slex-input-field[data-invalid="true"] .slex-input-control:focus-within .slex-input-unit {
206
- border-color: var(--destructive);
142
+ .slex-input-field[data-invalid="true"] .slex-input-control:focus-within {
207
143
  box-shadow: 0 0 0 2px color-mix(in oklab, var(--destructive) 18%, transparent);
208
144
  }
209
145
 
210
- .slex-input-field[data-invalid="true"] .slex-input-control:focus-within .slex-input-step {
211
- border-color: var(--destructive);
146
+ .slex-input-field[data-invalid="true"] .slex-input-control:not([data-has-unit]):focus-within {
147
+ box-shadow: none;
212
148
  }
213
149
 
214
- .slex-input-field[data-invalid="true"] .slex-input-control:focus-within .slex-input-controls {
150
+ .slex-input-field[data-invalid="true"] .slex-input-control:focus-within .slex-input,
151
+ .slex-input-field[data-invalid="true"] .slex-input-control:focus-within .slex-input-unit {
215
152
  border-color: var(--destructive);
216
- box-shadow: 0 0 0 2px color-mix(in oklab, var(--destructive) 18%, transparent);
217
153
  }
218
154
 
219
155
  .slex-input[disabled] {
@@ -226,11 +162,6 @@
226
162
  cursor: not-allowed;
227
163
  }
228
164
 
229
- .slex-input[disabled] ~ .slex-input-controls,
230
- .slex-input[readonly] ~ .slex-input-controls {
231
- opacity: 0.6;
232
- }
233
-
234
165
  .slex-input-description {
235
166
  color: var(--muted-foreground);
236
167
  font-size: 0.75rem;
@@ -572,7 +572,6 @@
572
572
  overflow: hidden;
573
573
  clip: rect(0 0 0 0);
574
574
  white-space: nowrap;
575
- clip-path: inset(50%);
576
575
  }
577
576
 
578
577
  .slex-playground-error {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slexkit/theme-shadcn",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "Official shadcn-token theme CSS for SlexKit.",
5
5
  "author": "SlexKit contributors",
6
6
  "type": "module",