zenkit-css 1.2.0 → 1.2.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.
@@ -0,0 +1,378 @@
1
+ // ========================================
2
+ // ZenKit - Fieldset Component
3
+ // ========================================
4
+
5
+ @use '../abstracts/variables' as *;
6
+
7
+ // ----------------------------------------
8
+ // Fieldset Base
9
+ // ----------------------------------------
10
+ .fieldset {
11
+ border: 1px solid var(--border);
12
+ border-radius: $border-radius-lg;
13
+ padding: 1.25rem;
14
+ margin: 0;
15
+ }
16
+
17
+ // ----------------------------------------
18
+ // Fieldset Legend
19
+ // ----------------------------------------
20
+ .fieldset-legend {
21
+ font-size: var(--text-sm);
22
+ font-weight: $font-weight-semibold;
23
+ color: var(--text);
24
+ padding: 0 0.5rem;
25
+ margin-left: -0.5rem;
26
+ }
27
+
28
+ // ----------------------------------------
29
+ // Fieldset without Border
30
+ // ----------------------------------------
31
+ .fieldset-borderless {
32
+ border: none;
33
+ padding: 0;
34
+
35
+ .fieldset-legend {
36
+ padding: 0;
37
+ margin-left: 0;
38
+ margin-bottom: 0.75rem;
39
+ }
40
+ }
41
+
42
+ // ----------------------------------------
43
+ // Fieldset with Background
44
+ // ----------------------------------------
45
+ .fieldset-filled {
46
+ background-color: var(--gray-50);
47
+ border-color: transparent;
48
+ }
49
+
50
+ // ----------------------------------------
51
+ // Fieldset Content
52
+ // ----------------------------------------
53
+ .fieldset-content {
54
+ display: flex;
55
+ flex-direction: column;
56
+ gap: 1rem;
57
+ }
58
+
59
+ .fieldset-content-horizontal {
60
+ flex-direction: row;
61
+ flex-wrap: wrap;
62
+ gap: 1.5rem;
63
+ }
64
+
65
+ // ----------------------------------------
66
+ // Fieldset Description
67
+ // ----------------------------------------
68
+ .fieldset-description {
69
+ font-size: var(--text-sm);
70
+ color: var(--text-muted);
71
+ margin-top: -0.5rem;
72
+ margin-bottom: 0.5rem;
73
+ }
74
+
75
+ // ----------------------------------------
76
+ // Fieldset Sizes
77
+ // ----------------------------------------
78
+ .fieldset-sm {
79
+ padding: 0.875rem;
80
+
81
+ .fieldset-legend {
82
+ font-size: var(--text-xs);
83
+ }
84
+
85
+ .fieldset-content {
86
+ gap: 0.75rem;
87
+ }
88
+ }
89
+
90
+ .fieldset-lg {
91
+ padding: 1.5rem;
92
+
93
+ .fieldset-legend {
94
+ font-size: var(--text-base);
95
+ }
96
+
97
+ .fieldset-content {
98
+ gap: 1.25rem;
99
+ }
100
+ }
101
+
102
+ // ----------------------------------------
103
+ // Fieldset Disabled
104
+ // ----------------------------------------
105
+ .fieldset:disabled,
106
+ .fieldset-disabled {
107
+ opacity: 0.6;
108
+ pointer-events: none;
109
+ }
110
+
111
+ // ----------------------------------------
112
+ // Fieldset Card Style
113
+ // ----------------------------------------
114
+ .fieldset-card {
115
+ background-color: var(--bg);
116
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
117
+
118
+ .fieldset-legend {
119
+ background-color: var(--bg);
120
+ }
121
+ }
122
+
123
+ // ----------------------------------------
124
+ // Fieldset Header (Alternative to Legend)
125
+ // ----------------------------------------
126
+ .fieldset-header {
127
+ display: flex;
128
+ align-items: center;
129
+ justify-content: space-between;
130
+ margin-bottom: 1rem;
131
+ padding-bottom: 0.75rem;
132
+ border-bottom: 1px solid var(--border);
133
+ }
134
+
135
+ .fieldset-title {
136
+ font-size: var(--text-base);
137
+ font-weight: $font-weight-semibold;
138
+ color: var(--text);
139
+ }
140
+
141
+ .fieldset-subtitle {
142
+ font-size: var(--text-sm);
143
+ color: var(--text-muted);
144
+ margin-top: 0.125rem;
145
+ }
146
+
147
+ .fieldset-actions {
148
+ display: flex;
149
+ gap: 0.5rem;
150
+ }
151
+
152
+ // ----------------------------------------
153
+ // Fieldset with Icon
154
+ // ----------------------------------------
155
+ .fieldset-icon {
156
+ display: flex;
157
+ align-items: center;
158
+ gap: 0.5rem;
159
+ }
160
+
161
+ .fieldset-icon-wrapper {
162
+ display: flex;
163
+ align-items: center;
164
+ justify-content: center;
165
+ width: 2rem;
166
+ height: 2rem;
167
+ background-color: var(--primary-100);
168
+ color: var(--primary);
169
+ border-radius: $border-radius;
170
+
171
+ svg {
172
+ width: 1rem;
173
+ height: 1rem;
174
+ }
175
+ }
176
+
177
+ // ----------------------------------------
178
+ // Nested Fieldsets
179
+ // ----------------------------------------
180
+ .fieldset .fieldset {
181
+ background-color: var(--bg);
182
+ border-color: var(--border);
183
+ }
184
+
185
+ // ----------------------------------------
186
+ // Fieldset Footer
187
+ // ----------------------------------------
188
+ .fieldset-footer {
189
+ display: flex;
190
+ align-items: center;
191
+ justify-content: flex-end;
192
+ gap: 0.75rem;
193
+ margin-top: 1rem;
194
+ padding-top: 1rem;
195
+ border-top: 1px solid var(--border);
196
+ }
197
+
198
+ // ----------------------------------------
199
+ // Collapsible Fieldset
200
+ // ----------------------------------------
201
+ .fieldset-collapsible {
202
+ .fieldset-legend {
203
+ cursor: pointer;
204
+ display: flex;
205
+ align-items: center;
206
+ gap: 0.5rem;
207
+ user-select: none;
208
+
209
+ &::before {
210
+ content: "";
211
+ display: inline-block;
212
+ width: 0;
213
+ height: 0;
214
+ border: solid var(--text);
215
+ border-width: 0 2px 2px 0;
216
+ padding: 3px;
217
+ transform: rotate(45deg);
218
+ transition: transform $transition-fast $transition-timing;
219
+ }
220
+ }
221
+
222
+ &.collapsed .fieldset-legend::before {
223
+ transform: rotate(-45deg);
224
+ }
225
+
226
+ &.collapsed .fieldset-content {
227
+ display: none;
228
+ }
229
+ }
230
+
231
+ // ----------------------------------------
232
+ // Fieldset Error State
233
+ // ----------------------------------------
234
+ .fieldset-error {
235
+ border-color: var(--danger);
236
+
237
+ .fieldset-legend {
238
+ color: var(--danger);
239
+ }
240
+ }
241
+
242
+ .fieldset-error-message {
243
+ display: flex;
244
+ align-items: center;
245
+ gap: 0.375rem;
246
+ font-size: var(--text-sm);
247
+ color: var(--danger);
248
+ margin-top: 0.5rem;
249
+
250
+ svg {
251
+ width: 1rem;
252
+ height: 1rem;
253
+ flex-shrink: 0;
254
+ }
255
+ }
256
+
257
+ // ----------------------------------------
258
+ // Fieldset Success State
259
+ // ----------------------------------------
260
+ .fieldset-success {
261
+ border-color: var(--success);
262
+
263
+ .fieldset-legend {
264
+ color: var(--success);
265
+ }
266
+ }
267
+
268
+ // ----------------------------------------
269
+ // Fieldset Variants by Color
270
+ // ----------------------------------------
271
+ .fieldset-primary {
272
+ border-color: var(--primary-200);
273
+ background-color: var(--primary-50);
274
+
275
+ .fieldset-legend {
276
+ color: var(--primary-700);
277
+ }
278
+ }
279
+
280
+ .fieldset-warning {
281
+ border-color: var(--warning-200);
282
+ background-color: var(--warning-50);
283
+
284
+ .fieldset-legend {
285
+ color: var(--warning-700);
286
+ }
287
+ }
288
+
289
+ .fieldset-info {
290
+ border-color: var(--info-200);
291
+ background-color: var(--info-50);
292
+
293
+ .fieldset-legend {
294
+ color: var(--info-700);
295
+ }
296
+ }
297
+
298
+ // ----------------------------------------
299
+ // Form Row Helper
300
+ // ----------------------------------------
301
+ .fieldset-row {
302
+ display: grid;
303
+ gap: 1rem;
304
+ }
305
+
306
+ .fieldset-row-2 {
307
+ grid-template-columns: repeat(2, 1fr);
308
+ }
309
+
310
+ .fieldset-row-3 {
311
+ grid-template-columns: repeat(3, 1fr);
312
+ }
313
+
314
+ .fieldset-row-4 {
315
+ grid-template-columns: repeat(4, 1fr);
316
+ }
317
+
318
+ @media (max-width: 767px) {
319
+ .fieldset-row-2,
320
+ .fieldset-row-3,
321
+ .fieldset-row-4 {
322
+ grid-template-columns: 1fr;
323
+ }
324
+ }
325
+
326
+ // ----------------------------------------
327
+ // Dark Mode
328
+ // ----------------------------------------
329
+ [data-theme="dark"] {
330
+ .fieldset {
331
+ border-color: var(--gray-700);
332
+ }
333
+
334
+ .fieldset-filled {
335
+ background-color: var(--gray-800);
336
+ }
337
+
338
+ .fieldset-card {
339
+ background-color: var(--gray-900);
340
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
341
+
342
+ .fieldset-legend {
343
+ background-color: var(--gray-900);
344
+ }
345
+ }
346
+
347
+ .fieldset-header {
348
+ border-color: var(--gray-700);
349
+ }
350
+
351
+ .fieldset-footer {
352
+ border-color: var(--gray-700);
353
+ }
354
+
355
+ .fieldset .fieldset {
356
+ background-color: var(--gray-800);
357
+ border-color: var(--gray-700);
358
+ }
359
+
360
+ .fieldset-icon-wrapper {
361
+ background-color: rgba($primary, 0.2);
362
+ }
363
+
364
+ .fieldset-primary {
365
+ border-color: rgba($primary, 0.3);
366
+ background-color: rgba($primary, 0.1);
367
+ }
368
+
369
+ .fieldset-warning {
370
+ border-color: rgba($warning, 0.3);
371
+ background-color: rgba($warning, 0.1);
372
+ }
373
+
374
+ .fieldset-info {
375
+ border-color: rgba($info, 0.3);
376
+ background-color: rgba($info, 0.1);
377
+ }
378
+ }