@slexkit/theme-shadcn 0.2.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,245 @@
1
+ .slex-input-field {
2
+ box-sizing: border-box;
3
+ display: flex;
4
+ flex-direction: column;
5
+ gap: 0.375rem;
6
+ width: 100%;
7
+ min-width: 0;
8
+ }
9
+
10
+ .slex-input-label {
11
+ display: inline-flex;
12
+ align-items: center;
13
+ gap: 0.25rem;
14
+ width: fit-content;
15
+ color: var(--foreground);
16
+ font-size: 0.8125rem;
17
+ font-weight: 600;
18
+ line-height: 1.25;
19
+ }
20
+
21
+ .slex-input-field[data-required="true"] .slex-input-label::after {
22
+ content: "*";
23
+ color: var(--destructive);
24
+ font-weight: 700;
25
+ }
26
+
27
+ .slex-input-control {
28
+ display: flex;
29
+ align-items: stretch;
30
+ width: 100%;
31
+ min-width: 0;
32
+ }
33
+
34
+ .slex-input {
35
+ box-sizing: border-box;
36
+ display: inline-flex;
37
+ align-items: center;
38
+ flex: 1 1 auto;
39
+ min-width: 0;
40
+ width: 100%;
41
+ padding: 0.5rem 0.75rem;
42
+ border: 1px solid var(--input);
43
+ border-radius: var(--radius);
44
+ background: var(--background);
45
+ color: var(--foreground);
46
+ font-family: inherit;
47
+ font-size: 0.875rem;
48
+ line-height: 1.5;
49
+ outline: none;
50
+ transition: border-color 150ms ease, box-shadow 150ms ease;
51
+ }
52
+
53
+ .slex-input-control[data-has-unit="true"] .slex-input,
54
+ .slex-input-control[data-has-controls="true"] .slex-input {
55
+ border-top-right-radius: 0;
56
+ border-bottom-right-radius: 0;
57
+ }
58
+
59
+ .slex-input-unit {
60
+ box-sizing: border-box;
61
+ display: inline-flex;
62
+ align-items: center;
63
+ justify-content: center;
64
+ min-height: 2.5625rem;
65
+ padding: 0.5rem 0.75rem;
66
+ border: 1px solid var(--input);
67
+ border-left: 0;
68
+ border-radius: 0 var(--radius) var(--radius) 0;
69
+ background: var(--muted);
70
+ color: var(--muted-foreground);
71
+ font-size: 0.875rem;
72
+ font-weight: 600;
73
+ line-height: 1.5;
74
+ white-space: nowrap;
75
+ transition: border-color 150ms ease, box-shadow 150ms ease;
76
+ }
77
+
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
+ .slex-input::placeholder {
146
+ color: var(--muted-foreground);
147
+ }
148
+
149
+ .slex-input:focus {
150
+ border-color: var(--ring);
151
+ box-shadow: 0 0 0 2px color-mix(in oklab, var(--ring) 16%, transparent);
152
+ }
153
+
154
+ .slex-input[type="number"] {
155
+ appearance: textfield;
156
+ }
157
+
158
+ .slex-input[type="number"]::-webkit-outer-spin-button,
159
+ .slex-input[type="number"]::-webkit-inner-spin-button {
160
+ margin: 0;
161
+ appearance: none;
162
+ }
163
+
164
+ .slex-input[readonly] {
165
+ background: color-mix(in oklab, var(--muted) 42%, var(--background));
166
+ color: color-mix(in oklab, var(--foreground) 82%, var(--muted-foreground));
167
+ }
168
+
169
+ .slex-input-field[data-invalid="true"] .slex-input {
170
+ border-color: color-mix(in oklab, var(--destructive) 72%, var(--input));
171
+ }
172
+
173
+ .slex-input-field[data-invalid="true"] .slex-input:focus {
174
+ border-color: var(--destructive);
175
+ box-shadow: 0 0 0 2px color-mix(in oklab, var(--destructive) 18%, transparent);
176
+ }
177
+
178
+ .slex-input-control:focus-within .slex-input-unit {
179
+ border-color: var(--ring);
180
+ box-shadow: 0 0 0 2px color-mix(in oklab, var(--ring) 16%, transparent);
181
+ }
182
+
183
+ .slex-input-control:focus-within .slex-input-step {
184
+ border-color: var(--ring);
185
+ }
186
+
187
+ .slex-input-control:focus-within .slex-input-controls {
188
+ border-color: var(--ring);
189
+ box-shadow: 0 0 0 2px color-mix(in oklab, var(--ring) 16%, transparent);
190
+ }
191
+
192
+ .slex-input-field[data-invalid="true"] .slex-input-unit {
193
+ border-color: color-mix(in oklab, var(--destructive) 72%, var(--input));
194
+ color: color-mix(in oklab, var(--destructive) 84%, var(--muted-foreground));
195
+ }
196
+
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);
207
+ box-shadow: 0 0 0 2px color-mix(in oklab, var(--destructive) 18%, transparent);
208
+ }
209
+
210
+ .slex-input-field[data-invalid="true"] .slex-input-control:focus-within .slex-input-step {
211
+ border-color: var(--destructive);
212
+ }
213
+
214
+ .slex-input-field[data-invalid="true"] .slex-input-control:focus-within .slex-input-controls {
215
+ border-color: var(--destructive);
216
+ box-shadow: 0 0 0 2px color-mix(in oklab, var(--destructive) 18%, transparent);
217
+ }
218
+
219
+ .slex-input[disabled] {
220
+ opacity: 0.5;
221
+ cursor: not-allowed;
222
+ }
223
+
224
+ .slex-input[disabled] + .slex-input-unit {
225
+ opacity: 0.5;
226
+ cursor: not-allowed;
227
+ }
228
+
229
+ .slex-input[disabled] ~ .slex-input-controls,
230
+ .slex-input[readonly] ~ .slex-input-controls {
231
+ opacity: 0.6;
232
+ }
233
+
234
+ .slex-input-description {
235
+ color: var(--muted-foreground);
236
+ font-size: 0.75rem;
237
+ line-height: 1.35;
238
+ }
239
+
240
+ .slex-input-error {
241
+ color: var(--destructive);
242
+ font-size: 0.75rem;
243
+ font-weight: 500;
244
+ line-height: 1.35;
245
+ }