@kerkhoff-ict/solora 1.0.0 → 2.0.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.
Files changed (3) hide show
  1. package/dist/index.css +583 -732
  2. package/dist/index.js +1970 -0
  3. package/package.json +11 -4
package/dist/index.css CHANGED
@@ -1,755 +1,606 @@
1
- .btn-primary {
2
- background: #0071e3;
3
- color: #fff;
1
+ /* ======================
2
+ Root kleurvariabelen (fallbacks)
3
+ ====================== */
4
+ :root {
5
+ --color-primary: #0071e3;
6
+ --color-secondary: #f5f5f5;
7
+ --color-success: #28a745;
8
+ --color-warning: #ffc107;
9
+ --color-danger: #dc3545;
10
+ --color-text-light: #ffffff;
11
+ --color-text-dark: #000000;
12
+ }
13
+ /* ======================
14
+ Basis button styles
15
+ ====================== */
16
+ .btn {
4
17
  font-weight: 600;
5
18
  border: none;
6
- box-shadow: 0 2px 8px 0 rgba(0,0,0,0.10);
7
- transition: background 0.2s;
19
+ border-radius: 9999px;
20
+ box-shadow: 0 2px 8px rgba(0,0,0,0.1);
21
+ border-radius: 9999px;
8
22
  cursor: pointer;
9
- }
10
-
11
- .btn-primary:hover {
12
- background: #005bb5;
13
- }
14
-
23
+ transition: background 0.2s, filter 0.2s;
24
+ }
25
+ .btn-sm { padding: 0.1875rem 1rem; font-size: 0.9375rem; }
26
+ .btn-md { padding: 0.5rem 1.2rem; font-size: 1rem; }
27
+ .btn-lg { padding: 0.8125rem 1.5625rem; font-size: 1.0625rem; }
28
+ .btn-xl { padding: 0.9375rem 1.875rem; font-size: 1.3125rem; }
29
+ .btn.disabled {
30
+ opacity: 0.5;
31
+ cursor: not-allowed;
32
+ pointer-events: none;
33
+ }
34
+ /* ======================
35
+ Predefined color buttons met fallback
36
+ ====================== */
37
+ .btn-primary {
38
+ background: var(--color-primary, #0071e3);
39
+ color: var(--color-text-light, #fff);
40
+ }
41
+ .btn-primary:hover { filter: brightness(0.85); }
42
+ .btn-secondary {
43
+ background: var(--color-secondary, #f5f5f5);
44
+ color: var(--color-text-dark, #000);
45
+ border: 2px solid rgba(0,0,0,0.1);
46
+ }
47
+ .btn-secondary.active,
48
+ .btn-secondary:hover { filter: brightness(0.9); }
49
+ .btn-success {
50
+ background: var(--color-success, #28a745);
51
+ color: var(--color-text-light, #fff);
52
+ }
53
+ .btn-success:hover { filter: brightness(0.85); }
54
+ .btn-warning {
55
+ background: var(--color-warning, #ffc107);
56
+ color: var(--color-text-dark, #000);
57
+ }
58
+ .btn-warning:hover { filter: brightness(0.85); }
59
+ .btn-danger {
60
+ background: var(--color-danger, #dc3545);
61
+ color: var(--color-text-light, #fff);
62
+ }
63
+ .btn-danger:hover { filter: brightness(0.85); }
64
+ /* ======================
65
+ Glass button (special)
66
+ ====================== */
15
67
  .btn-glass {
16
- background: rgba(255, 255, 255, 0.2);
17
- color: #000;
18
- font-weight: 600;
68
+ position: relative;
69
+ background: rgba(255,255,255,0.2);
70
+ color: var(--color-text-dark, #000);
19
71
  border: 1px solid rgba(255,255,255,0.3);
20
- backdrop-filter: blur(8px);
21
- transition: background 0.2s, box-shadow 0.2s;
22
- cursor: pointer;
72
+ box-shadow: 0 8px 32px rgba(0,0,0,0.12), inset 0 0 0 1px rgba(255,255,255,0.1);
73
+ backdrop-filter: blur(12px);
74
+ -webkit-backdrop-filter: blur(12px);
75
+ overflow: hidden;
76
+ transition: all 0.3s ease;
77
+ }
78
+ .btn-glass::before {
79
+ content:"";
80
+ position:absolute;
81
+ top:4px; left:4px; right:4px; bottom:0;
82
+ background: rgba(0,0,0,0.084);
83
+ filter: blur(16px);
84
+ z-index:-1;
85
+ border-radius: inherit;
86
+ pointer-events: none;
23
87
  }
24
-
25
88
  .btn-glass:hover {
26
- background: rgba(255,255,255,0.3);
27
- }
28
-
29
- .btn-sm {
30
- padding: 0.1875rem 1rem;
31
- font-size: 0.9375rem;
32
- }
33
-
34
- .btn-md {
35
- padding: 0.5rem 1.25rem;
36
- font-size: 1rem;
37
- }
38
-
39
- .btn-lg {
40
- padding: 0.8125rem 1.5625rem;
41
- font-size: 1.0625rem;
42
- }
43
-
44
- .btn-xl {
45
- padding: 0.9375rem 1.875rem;
46
- font-size: 1.3125rem;
89
+ background: rgba(255,255,255,0.35);
90
+ box-shadow: 0 12px 28px rgba(0,0,0,0.18), inset 0 0 0 1px rgba(255,255,255,0.15);
91
+ }
92
+ .btn-glass:active {
93
+ background: rgba(255,255,255,0.25);
94
+ box-shadow: 0 4px 10px rgba(0,0,0,0.1), inset 0 0 0 1px rgba(255,255,255,0.2);
95
+ transform: translateY(1px);
96
+ }
97
+ /* ======================
98
+ Custom color button helper
99
+ Usage: .btn-[#ff6600] of .btn-[rgba(255,0,0,0.5)]
100
+ ====================== */
101
+ [class*="btn-["] {
102
+ color: var(--color-text-light, #fff);
103
+ transition: all 0.2s ease;
104
+ }
105
+ [class*="btn-["]:hover {
106
+ filter: brightness(0.85);
107
+ }
108
+ /* ======================
109
+ Dark mode support
110
+ ====================== */
111
+ @media (prefers-color-scheme: dark) {
112
+ .btn-primary { background: #0558be; color: var(--color-text-light, #fff); box-shadow: 0 2px 8px rgba(0,0,0,0.5); }
113
+ .btn-primary:hover { background: #2b76d2; }
114
+
115
+ .btn-secondary { background: #1c1c1e; color: #f0f0f0; border: 2px solid rgba(255,255,255,0.2); box-shadow: 0 2px 8px rgba(0,0,0,0.5); }
116
+ .btn-secondary.active,
117
+ .btn-secondary:hover { background-color: #2a2a2c; }
118
+
119
+ .btn-success { background: #1c3e23; }
120
+ .btn-success:hover { filter: brightness(1.2); }
121
+
122
+ .btn-warning { background: #664d03; }
123
+ .btn-warning:hover { filter: brightness(1.2); }
124
+
125
+ .btn-danger { background: #7a1f1f; }
126
+ .btn-danger:hover { filter: brightness(1.2); }
127
+
128
+ .btn-glass { background: rgba(255,255,255,0.05); color: #fff; border: 1px solid rgba(255,255,255,0.2); box-shadow: 0 8px 32px rgba(0,0,0,0.6), inset 0 0 0 1px rgba(255,255,255,0.05); }
129
+ .btn-glass::before { background: rgba(255,255,255,0.04); }
130
+ .btn-glass:hover { background: rgba(255,255,255,0.1); box-shadow: 0 12px 28px rgba(0,0,0,0.7), inset 0 0 0 1px rgba(255,255,255,0.08); }
131
+ .btn-glass:active { background: rgba(255,255,255,0.07); box-shadow: 0 4px 10px rgba(0,0,0,0.4), inset 0 0 0 1px rgba(255,255,255,0.1); }
132
+ }
133
+ .codeblock {
134
+ position: relative;
135
+ border-radius: 12px;
136
+ overflow: hidden;
137
+ font-family: "SF Mono", "Menlo", monospace;
138
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
139
+ background: #fefefe55;
140
+ backdrop-filter: blur(8px);
47
141
  }
48
-
49
- .block {
142
+ .pre-content {
143
+ margin: 0;
144
+ backdrop-filter: blur(12px);
145
+ color: #000000;
146
+ padding-left: 16px;
147
+ width: 100%;
148
+ height: 100%;
149
+ overflow-x: auto;
150
+ font-size: 0.9rem;
151
+ line-height: 1.5;
152
+ /* white-space: pre-wrap; */
153
+ word-break: break-word;
50
154
  display: block;
51
- }
52
-
53
- .inline-block {
54
- display: inline-block;
55
- }
56
-
57
- .inline {
58
- display: inline;
59
- }
60
-
61
- .flex {
62
- display: flex;
63
- }
64
-
65
- .inline-flex {
66
- display: inline-flex;
67
- }
68
-
69
- .grid {
70
- display: grid;
71
- }
72
-
73
- .inline-grid {
74
- display: inline-grid;
75
- }
76
-
77
- .hidden {
78
- display: hidden;
79
- }
80
-
81
- .flex-row {
155
+ background: transparent;
156
+ color: inherit;
157
+ position: relative;
158
+ transition:
159
+ max-height 0.3s ease,
160
+ opacity 0.3s ease;
161
+ opacity: 1;
162
+ }
163
+ .pre-content.collapsed {
164
+ max-height: 0;
165
+ opacity: 0;
166
+ }
167
+ /* .codeblock.fullscreen {
168
+ position: fixed;
169
+ top: 0;
170
+ left: 0;
171
+ width: 100%;
172
+ height: 100%;
173
+ border-radius: 0;
174
+ z-index: 9999;
175
+ } */
176
+ .pre-copy-btn {
177
+ justify-self: end;
178
+ transition:
179
+ background 0.2s ease,
180
+ color 0.2s ease;
181
+ }
182
+ .pre-copy-btn.btn-in-pre {
183
+ position: absolute;
184
+ top: 8px;
185
+ right: 8px;
186
+ /* padding: 4px 10px; */
187
+ /* font-size: 0.8rem; */
188
+ /* border-radius: 6px; */
189
+ /* background: rgba(255, 255, 255, 0.15); */
190
+ /* color: #000; */
191
+ /* border: 1px solid rgba(255, 255, 255, 0.3); */
192
+ /* backdrop-filter: blur(8px); */
193
+ /* transition: background 0.2s, transform 0.1s; */
194
+ z-index: 5;
195
+ }
196
+ /* .pre-copy-btn.btn-in-pre:hover {
197
+ background: rgba(255, 255, 255, 0.25);
198
+ transform: scale(1.05);
199
+ } */
200
+ .pre-top {
201
+ background: rgb(74, 74, 74);
82
202
  display: flex;
203
+ width: 100%;
83
204
  flex-direction: row;
205
+ justify-content: space-between;
206
+ align-items: center;
207
+ padding: 9px;
208
+ padding-left: 20px;
84
209
  }
85
-
86
- .flex-row-reverse {
87
- display: flex;
88
- flex-direction: row-reverse;
89
- }
90
-
91
- .flex-col {
92
- display: flex;
93
- flex-direction: column;
94
- }
95
-
96
- .flex-col-reverse {
97
- display: flex;
98
- flex-direction: column-reverse;
99
- }
100
-
101
- .flex-wrap {
210
+ .pre-top-btns {
102
211
  display: flex;
103
- flex-direction: wrap;
212
+ gap: 8px;
213
+ z-index: 10;
214
+ cursor: pointer !important;
215
+ }
216
+ .pre-top-btns span {
217
+ width: 15px;
218
+ height: 15px;
219
+ border-radius: 50%;
220
+ display: inline-block;
104
221
  }
105
-
106
- .flex-nowrap {
222
+ .pre-btn-red {
223
+ background: #ff5f57;
224
+ position: relative;
225
+ }
226
+ .pre-btn-orange {
227
+ background: #ffbd2e;
228
+ position: relative;
229
+ }
230
+ .pre-btn-green {
231
+ background: #28c940;
232
+ position: relative;
233
+ }
234
+ /* Iconen toevoegen */
235
+ .pre-btn-red::before {
236
+ content: '×';
237
+ position: absolute;
238
+ top: 50%;
239
+ left: 50%;
240
+ transform: translate(-50%, -50%);
241
+ font-size: 13px;
242
+ color: black;
243
+ font-weight: bold;
244
+ opacity: 0;
245
+ pointer-events: none;
246
+ }
247
+ .pre-btn-orange::before {
248
+ content: '–';
249
+ position: absolute;
250
+ top: 50%;
251
+ left: 50%;
252
+ transform: translate(-50%, -50%);
253
+ font-size: 13px;
254
+ color: black;
255
+ font-weight: bold;
256
+ opacity: 0;
257
+ pointer-events: none;
258
+ }
259
+ .pre-btn-green::before {
260
+ content: "⛶";
261
+ position: absolute;
262
+ top: 50%;
263
+ left: 50%;
264
+ transform: translate(-50%, -50%);
265
+ font-size: 10px;
266
+ color: black;
267
+ font-weight: bold;
268
+ opacity: 0;
269
+ pointer-events: none;
270
+ }
271
+ .pre-top-btns span:hover::before { opacity: 1; }
272
+ .pre-btn-red:hover {
273
+ filter: brightness(1.2);
274
+ }
275
+ .pre-btn-orange:hover {
276
+ filter: brightness(1.2);
277
+ }
278
+ .pre-btn-green:hover {
279
+ filter: brightness(1.2);
280
+ }
281
+ .codeblock .token.comment,
282
+ .codeblock .token.prolog,
283
+ .codeblock .token.doctype,
284
+ .codeblock .token.cdata {
285
+ color: #7f8c8d;
286
+ font-style: italic;
287
+ }
288
+ .codeblock .token.punctuation {
289
+ color: #2c3e50;
290
+ }
291
+ .codeblock .token.operator,
292
+ .codeblock .token.boolean,
293
+ .codeblock .token.symbol,
294
+ .codeblock .token.entity {
295
+ color: #2c3e50;
296
+ }
297
+ .codeblock .token.number {
298
+ color: #d35400;
299
+ }
300
+ .codeblock .token.property,
301
+ .codeblock .token.tag,
302
+ .codeblock .token.constant,
303
+ .codeblock .token.class-name,
304
+ .codeblock .token.function {
305
+ color: #2980b9;
306
+ font-weight: 500;
307
+ }
308
+ .codeblock .token.selector,
309
+ .codeblock .token.attr-name,
310
+ .codeblock .token.string,
311
+ .codeblock .token.char,
312
+ .codeblock .token.builtin,
313
+ .codeblock .token.inserted {
314
+ color: #27ae60;
315
+ }
316
+ .codeblock .token.keyword,
317
+ .codeblock .token.atrule,
318
+ .codeblock .token.attr-value,
319
+ .codeblock .token.deleted,
320
+ .codeblock .token.regex,
321
+ .codeblock .token.important {
322
+ color: #e67e22;
323
+ font-weight: 500;
324
+ }
325
+ .codeblock .token.entity {
326
+ cursor: help;
327
+ }
328
+ .codeblock .token.important,
329
+ .codeblock .token.bold {
330
+ font-weight: bold;
331
+ }
332
+ .codeblock .token.italic {
333
+ font-style: italic;
334
+ }
335
+ /* Optional: highlight background for selected text */
336
+ .codeblock ::selection {
337
+ background: rgba(46, 204, 113, 0.2);
338
+ }
339
+ .codeblock pre::-webkit-scrollbar {
340
+ height: 6px;
341
+ width: 6px;
342
+ }
343
+ .codeblock pre::-webkit-scrollbar-thumb {
344
+ background: rgba(255, 255, 255, 0.2);
345
+ border-radius: 3px;
346
+ }
347
+ .codeblock pre::-webkit-scrollbar-track {
348
+ background: transparent;
349
+ }
350
+ /* --- Dark mode via media query --- */
351
+ @media (prefers-color-scheme: dark) {
352
+
353
+ .codeblock {
354
+ background: #1e1e2f88; /* donkere blur achtergrond */
355
+ box-shadow: 0 4px 12px rgba(0,0,0,0.5);
356
+ }
357
+
358
+ .pre-content {
359
+ color: #f0f0f0;
360
+ }
361
+
362
+ .pre-top {
363
+ background: #2c2c3e;
364
+ }
365
+
366
+ /* Prism tokens dark */
367
+ .codeblock .token.comment,
368
+ .codeblock .token.prolog,
369
+ .codeblock .token.doctype,
370
+ .codeblock .token.cdata {
371
+ color: #95a5a6;
372
+ font-style: italic;
373
+ }
374
+
375
+ .codeblock .token.punctuation {
376
+ color: #ecf0f1;
377
+ }
378
+
379
+ .codeblock .token.operator,
380
+ .codeblock .token.boolean,
381
+ .codeblock .token.symbol,
382
+ .codeblock .token.entity {
383
+ color: #ecf0f1;
384
+ }
385
+
386
+ .codeblock .token.number {
387
+ color: #e67e22;
388
+ }
389
+
390
+ .codeblock .token.property,
391
+ .codeblock .token.tag,
392
+ .codeblock .token.constant,
393
+ .codeblock .token.class-name,
394
+ .codeblock .token.function {
395
+ color: #3498db;
396
+ font-weight: 500;
397
+ }
398
+
399
+ .codeblock .token.selector,
400
+ .codeblock .token.attr-name,
401
+ .codeblock .token.string,
402
+ .codeblock .token.char,
403
+ .codeblock .token.builtin,
404
+ .codeblock .token.inserted {
405
+ color: #2ecc71;
406
+ }
407
+
408
+ .codeblock .token.keyword,
409
+ .codeblock .token.atrule,
410
+ .codeblock .token.attr-value,
411
+ .codeblock .token.deleted,
412
+ .codeblock .token.regex,
413
+ .codeblock .token.important {
414
+ color: #f39c12;
415
+ font-weight: 500;
416
+ }
417
+
418
+ }
419
+ /* ======================
420
+ Basis dropdown container
421
+ ====================== */
422
+ .dropdown {
423
+ position: relative;
424
+ display: inline-block;
425
+ font-family:
426
+ -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial,
427
+ sans-serif;
428
+ cursor: pointer;
429
+ user-select: none;
430
+ }
431
+ /* ======================
432
+ Dropdown button
433
+ ====================== */
434
+ .dropdown-btn {
435
+ padding: 0.3rem 0.4rem;
436
+ border-radius: 12px;
437
+ border: 1px solid rgba(0, 0, 0, 0.1);
438
+ background: var(--color-bg, #fefefe);
439
+ color: var(--color-text-dark, #000);
440
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
441
+ transition: all 0.2s ease;
107
442
  display: flex;
108
- flex-direction: nowrap;
109
- }
110
-
111
- .items-start {
112
- align-items: flex-start;
113
- }
114
-
115
- .items-center {
116
443
  align-items: center;
117
- }
118
-
119
- .items-end {
120
- align-items: flex-end;
121
- }
122
-
123
- .justify-start {
124
- justify-content: flex-start;
125
- }
126
-
127
- .justify-center {
128
- justify-content: center;
129
- }
130
-
131
- .justify-end {
132
- justify-content: flex-end;
133
- }
134
-
135
- .justify-between {
136
444
  justify-content: space-between;
445
+ white-space: nowrap;
446
+ overflow: hidden;
447
+ text-overflow: ellipsis;
137
448
  }
138
-
139
- .justify-around {
140
- justify-content: space-around;
141
- }
142
-
143
- .justify-evenly {
144
- justify-content: space-evenly;
145
- }
146
-
147
- .h-sm {
148
- height: 8rem;
149
- }
150
-
151
- .h-md {
152
- height: 16rem;
153
- }
154
-
155
- .h-lg {
156
- height: 24rem;
157
- }
158
-
159
- .h-xl {
160
- height: 32rem;
161
- }
162
-
163
- .h-2xl {
164
- height: 48rem;
165
- }
166
-
167
- .h-full {
168
- height: 100%;
169
- }
170
-
171
- .h-screen {
172
- height: 100vh;
173
- }
174
-
175
- .max-h-sm {
176
- max-height: 8rem;
177
- }
178
-
179
- .max-h-md {
180
- max-height: 16rem;
181
- }
182
-
183
- .max-h-lg {
184
- max-height: 24rem;
185
- }
186
-
187
- .max-h-xl {
188
- max-height: 32rem;
189
- }
190
-
191
- .max-h-2xl {
192
- max-height: 48rem;
193
- }
194
-
195
- .max-h-full {
196
- max-height: 100%;
197
- }
198
-
199
- .max-h-screen {
200
- max-height: 100vh;
201
- }
202
-
203
- .max-w-sm {
204
- max-width: 8rem;
205
- }
206
-
207
- .max-w-md {
208
- max-width: 16rem;
209
- }
210
-
211
- .max-w-lg {
212
- max-width: 24rem;
213
- }
214
-
215
- .max-w-xl {
216
- max-width: 32rem;
217
- }
218
-
219
- .max-w-2xl {
220
- max-width: 48rem;
221
- }
222
-
223
- .max-w-full {
224
- max-width: 100%;
225
- }
226
-
227
- .max-w-screen {
228
- max-width: 100vh;
229
- }
230
-
231
- .mb-sm {
232
- margin-bottom: 0.25rem;
233
- }
234
-
235
- .mb-md {
236
- margin-bottom: 0.5rem;
237
- }
238
-
239
- .mb-lg {
240
- margin-bottom: 1rem;
241
- }
242
-
243
- .mb-xl {
244
- margin-bottom: 2rem;
245
- }
246
-
247
- .mb-2xl {
248
- margin-bottom: 4rem;
249
- }
250
-
251
- .mb-auto {
252
- margin-bottom: auto;
253
- }
254
-
255
- .mb-full {
256
- margin-bottom: 100%;
257
- }
258
-
259
- .m-sm {
260
- margin: 0.25rem;
261
- }
262
-
263
- .m-md {
264
- margin: 0.5rem;
265
- }
266
-
267
- .m-lg {
268
- margin: 1rem;
269
- }
270
-
271
- .m-xl {
272
- margin: 2rem;
449
+ .dropdown-btn:hover {
450
+ background: var(--color-bg-hover, rgba(0, 0, 0, 0.05));
273
451
  }
274
-
275
- .m-2xl {
276
- margin: 4rem;
277
- }
278
-
279
- .m-auto {
280
- margin: auto;
281
- }
282
-
283
- .m-full {
284
- margin: 100%;
285
- }
286
-
287
- .min-h-sm {
288
- min-height: 8rem;
289
- }
290
-
291
- .min-h-md {
292
- min-height: 16rem;
293
- }
294
-
295
- .min-h-lg {
296
- min-height: 24rem;
297
- }
298
-
299
- .min-h-xl {
300
- min-height: 32rem;
301
- }
302
-
303
- .min-h-2xl {
304
- min-height: 48rem;
305
- }
306
-
307
- .min-h-full {
308
- min-height: 100%;
309
- }
310
-
311
- .min-h-screen {
312
- min-height: 100vh;
313
- }
314
-
315
- .min-w-sm {
316
- min-width: 8rem;
317
- }
318
-
319
- .min-w-md {
320
- min-width: 16rem;
321
- }
322
-
323
- .min-w-lg {
324
- min-width: 24rem;
325
- }
326
-
327
- .min-w-xl {
328
- min-width: 32rem;
329
- }
330
-
331
- .min-w-2xl {
332
- min-width: 48rem;
333
- }
334
-
335
- .min-w-full {
336
- min-width: 100%;
337
- }
338
-
339
- .min-w-screen {
340
- min-width: 100vh;
341
- }
342
-
343
- .ml-sm {
344
- margin-left: 0.25rem;
345
- }
346
-
347
- .ml-md {
452
+ .dropdown-btn:after {
453
+ content: "▾";
348
454
  margin-left: 0.5rem;
349
- }
350
-
351
- .ml-lg {
352
- margin-left: 1rem;
353
- }
354
-
355
- .ml-xl {
356
- margin-left: 2rem;
357
- }
358
-
359
- .ml-2xl {
360
- margin-left: 4rem;
361
- }
362
-
363
- .ml-auto {
364
- margin-left: auto;
365
- }
366
-
367
- .ml-full {
368
- margin-left: 100%;
369
- }
370
-
371
- .mr-sm {
372
- margin-right: 0.25rem;
373
- }
374
-
375
- .mr-md {
376
- margin-right: 0.5rem;
377
- }
378
-
379
- .mr-lg {
380
- margin-right: 1rem;
381
- }
382
-
383
- .mr-xl {
384
- margin-right: 2rem;
385
- }
386
-
387
- .mr-2xl {
388
- margin-right: 4rem;
389
- }
390
-
391
- .mr-auto {
392
- margin-right: auto;
393
- }
394
-
395
- .mr-full {
396
- margin-right: 100%;
397
- }
398
-
399
- .mt-sm {
400
- margin-top: 0.25rem;
401
- }
402
-
403
- .mt-md {
455
+ font-size: 0.75rem;
456
+ transition: transform 0.2s ease;
457
+ }
458
+ .dropdown.open .dropdown-btn:after {
459
+ transform: rotate(180deg);
460
+ }
461
+ .dropdown-btn:focus {
462
+ outline: 2px solid var(--color-primary, #0071e3);
463
+ outline-offset: 2px;
464
+ }
465
+ /* ======================
466
+ Dropdown content
467
+ ====================== */
468
+ .dropdown-content {
469
+ position: absolute;
470
+ top: 100%;
471
+ left: 0;
472
+ width: 100%;
473
+ min-width: 10rem;
474
+ border-radius: 12px;
404
475
  margin-top: 0.5rem;
476
+ background: rgba(255, 255, 255, 0.8);
477
+ backdrop-filter: blur(12px);
478
+ -webkit-backdrop-filter: blur(12px);
479
+ box-shadow: 0 12px 32px rgba(0, 0, 0, 0.15);
480
+ max-height: 15rem;
481
+ overflow-y: auto;
482
+ scrollbar-width: thin;
483
+ scrollbar-color: rgba(0,0,0,0.2) transparent;
484
+ opacity: 0;
485
+ transform: translateY(-10px) scale(0.95);
486
+ pointer-events: none;
487
+ transition: all 0.25s cubic-bezier(0.25, 0.8, 0.25, 1);
488
+ z-index: 1000;
489
+ }
490
+ .dropdown-content::-webkit-scrollbar {
491
+ width: 6px;
492
+ }
493
+ .dropdown-content::-webkit-scrollbar-thumb {
494
+ background: rgba(0,0,0,0.2);
495
+ border-radius: 3px;
496
+ }
497
+ .dropdown-content::-webkit-scrollbar-track {
498
+ background: transparent;
499
+ }
500
+ /* Show dropdown */
501
+ .dropdown.open .dropdown-content {
502
+ opacity: 1;
503
+ transform: translateY(0) scale(1);
504
+ pointer-events: auto;
505
+ }
506
+ /* ======================
507
+ Dropdown items
508
+ ====================== */
509
+ .dropdown-item {
510
+ padding: 0.3rem 0.4rem;
511
+ color: var(--color-text-dark, #000);
512
+ transition: background 0.2s, color 0.2s;
513
+ cursor: pointer;
405
514
  }
406
-
407
- .mt-lg {
408
- margin-top: 1rem;
409
- }
410
-
411
- .mt-xl {
412
- margin-top: 2rem;
413
- }
414
-
415
- .mt-2xl {
416
- margin-top: 4rem;
417
- }
418
-
419
- .mt-auto {
420
- margin-top: auto;
421
- }
422
-
423
- .mt-full {
424
- margin-top: 100%;
425
- }
426
-
427
- .mx-sm {
428
- margin-left: 0.25rem;
429
- margin-right: 0.25rem;
430
- }
431
-
432
- .mx-md {
433
- margin-left: 0.5rem;
434
- margin-right: 0.5rem;
435
- }
436
-
437
- .mx-lg {
438
- margin-left: 1rem;
439
- margin-right: 1rem;
440
- }
441
-
442
- .mx-xl {
443
- margin-left: 2rem;
444
- margin-right: 2rem;
445
- }
446
-
447
- .mx-2xl {
448
- margin-left: 4rem;
449
- margin-right: 4rem;
450
- }
451
-
452
- .mx-auto {
453
- margin-left: auto;
454
- margin-right: auto;
455
- }
456
-
457
- .mx-full {
458
- margin-left: 100%;
459
- margin-right: 100%;
460
- }
461
-
462
- .my-sm {
463
- margin-top: 0.25rem;
464
- margin-bottom: 0.25rem;
465
- }
466
-
467
- .my-md {
468
- margin-top: 0.5rem;
469
- margin-bottom: 0.5rem;
470
- }
471
-
472
- .my-lg {
473
- margin-top: 1rem;
474
- margin-bottom: 1rem;
475
- }
476
-
477
- .my-xl {
478
- margin-top: 2rem;
479
- margin-bottom: 2rem;
480
- }
481
-
482
- .my-2xl {
483
- margin-top: 4rem;
484
- margin-bottom: 4rem;
485
- }
486
-
487
- .my-auto {
488
- margin-top: auto;
489
- margin-bottom: auto;
490
- }
491
-
492
- .my-full {
493
- margin-top: 100%;
494
- margin-bottom: 100%;
495
- }
496
-
497
- .pb-sm {
498
- padding-bottom: 0.25rem;
499
- }
500
-
501
- .pb-md {
502
- padding-bottom: 0.5rem;
503
- }
504
-
505
- .pb-lg {
506
- padding-bottom: 1rem;
507
- }
508
-
509
- .pb-xl {
510
- padding-bottom: 2rem;
511
- }
512
-
513
- .pb-2xl {
514
- padding-bottom: 4rem;
515
- }
516
-
517
- .pb-auto {
518
- padding-bottom: auto;
519
- }
520
-
521
- .pb-full {
522
- padding-bottom: 100%;
523
- }
524
-
525
- .p-sm {
526
- padding: 0.25rem;
527
- }
528
-
529
- .p-md {
530
- padding: 0.5rem;
531
- }
532
-
533
- .p-lg {
534
- padding: 1rem;
535
- }
536
-
537
- .p-xl {
538
- padding: 2rem;
539
- }
540
-
541
- .p-2xl {
542
- padding: 4rem;
543
- }
544
-
545
- .p-auto {
546
- padding: auto;
547
- }
548
-
549
- .p-full {
550
- padding: 100%;
551
- }
552
-
553
- .pl-sm {
554
- padding-left: 0.25rem;
555
- }
556
-
557
- .pl-md {
558
- padding-left: 0.5rem;
559
- }
560
-
561
- .pl-lg {
562
- padding-left: 1rem;
563
- }
564
-
565
- .pl-xl {
566
- padding-left: 2rem;
567
- }
568
-
569
- .pl-2xl {
570
- padding-left: 4rem;
571
- }
572
-
573
- .pl-auto {
574
- padding-left: auto;
575
- }
576
-
577
- .pl-full {
578
- padding-left: 100%;
579
- }
580
-
581
- .pr-sm {
582
- padding-right: 0.25rem;
583
- }
584
-
585
- .pr-md {
586
- padding-right: 0.5rem;
587
- }
588
-
589
- .pr-lg {
590
- padding-right: 1rem;
591
- }
592
-
593
- .pr-xl {
594
- padding-right: 2rem;
595
- }
596
-
597
- .pr-2xl {
598
- padding-right: 4rem;
599
- }
600
-
601
- .pr-auto {
602
- padding-right: auto;
603
- }
604
-
605
- .pr-full {
606
- padding-right: 100%;
607
- }
608
-
609
- .pt-sm {
610
- padding-top: 0.25rem;
611
- }
612
-
613
- .pt-md {
614
- padding-top: 0.5rem;
615
- }
616
-
617
- .pt-lg {
618
- padding-top: 1rem;
619
- }
620
-
621
- .pt-xl {
622
- padding-top: 2rem;
623
- }
624
-
625
- .pt-2xl {
626
- padding-top: 4rem;
627
- }
628
-
629
- .pt-auto {
630
- padding-top: auto;
631
- }
632
-
633
- .pt-full {
634
- padding-top: 100%;
635
- }
636
-
637
- .px-sm {
638
- padding-left: 0.25rem;
639
- padding-right: 0.25rem;
640
- }
641
-
642
- .px-md {
643
- padding-left: 0.5rem;
644
- padding-right: 0.5rem;
645
- }
646
-
647
- .px-lg {
648
- padding-left: 1rem;
649
- padding-right: 1rem;
650
- }
651
-
652
- .px-xl {
653
- padding-left: 2rem;
654
- padding-right: 2rem;
655
- }
656
-
657
- .px-2xl {
658
- padding-left: 4rem;
659
- padding-right: 4rem;
660
- }
661
-
662
- .px-auto {
663
- padding-left: auto;
664
- padding-right: auto;
665
- }
666
-
667
- .px-full {
668
- padding-left: 100%;
669
- padding-right: 100%;
670
- }
671
-
672
- .py-sm {
673
- padding-top: 0.25rem;
674
- padding-bottom: 0.25rem;
675
- }
676
-
677
- .py-md {
678
- padding-top: 0.5rem;
679
- padding-bottom: 0.5rem;
680
- }
681
-
682
- .py-lg {
683
- padding-top: 1rem;
684
- padding-bottom: 1rem;
685
- }
686
-
687
- .py-xl {
688
- padding-top: 2rem;
689
- padding-bottom: 2rem;
690
- }
691
-
692
- .py-2xl {
693
- padding-top: 4rem;
694
- padding-bottom: 4rem;
695
- }
696
-
697
- .py-auto {
698
- padding-top: auto;
699
- padding-bottom: auto;
700
- }
701
-
702
- .py-full {
703
- padding-top: 100%;
704
- padding-bottom: 100%;
705
- }
706
-
707
- .rounded-sm {
708
- border-radius: 0.125rem;
709
- }
710
-
711
- .rounded-md {
712
- border-radius: 0.25rem;
713
- }
714
-
715
- .rounded-lg {
716
- border-radius: 0.5rem;
717
- }
718
-
719
- .rounded-xl {
720
- border-radius: 1rem;
721
- }
722
-
723
- .rounded-2xl {
724
- border-radius: 1.5rem;
725
- }
726
-
727
- .rounded-3xl {
728
- border-radius: 2rem;
729
- }
730
-
731
- .rounded-full {
732
- border-radius: 9999px;
515
+ .dropdown-item:hover {
516
+ background: rgba(0, 0, 0, 0.05);
733
517
  }
734
-
735
- .text-left { text-align: left; }
736
-
737
- .text-center { text-align: center; }
738
-
739
- .text-right { text-align: right; }
740
-
741
- .text-justify { text-align: justify; }
742
-
743
- .w-sm { width: 8rem; }
744
-
745
- .w-md { width: 16rem; }
746
-
747
- .w-lg { width: 24rem; }
748
-
749
- .w-xl { width: 32rem; }
750
-
751
- .w-2xl { width: 48rem; }
752
-
753
- .w-full { width: 100%; }
754
-
755
- .w-screen { width: 100vh; }
518
+ .dropdown-item.active {
519
+ font-weight: 600;
520
+ background: rgba(0, 0, 0, 0.1);
521
+ }
522
+ .dropdown-item:focus {
523
+ outline: 2px solid var(--color-primary, #0071e3);
524
+ outline-offset: 2px;
525
+ }
526
+ /* Placeholder or disabled items */
527
+ .dropdown-item[aria-disabled="true"],
528
+ .dropdown-item.placeholder {
529
+ color: rgba(0, 0, 0, 0.4);
530
+ cursor: default;
531
+ pointer-events: none;
532
+ }
533
+ /* ======================
534
+ Hidden input styling
535
+ ====================== */
536
+ .dropdown input[type="hidden"] {
537
+ display: none;
538
+ }
539
+ /* ======================
540
+ Dividers
541
+ ====================== */
542
+ .dropdown-divider {
543
+ height: 1px;
544
+ margin: 0.25rem 0;
545
+ background: rgba(0, 0, 0, 0.1);
546
+ }
547
+ /* ======================
548
+ Option group labels
549
+ ====================== */
550
+ .dropdown-label {
551
+ padding: 0.3rem 0.4rem;
552
+ font-weight: 600;
553
+ color: rgba(0, 0, 0, 0.6);
554
+ cursor: default;
555
+ }
556
+ /* ======================
557
+ Dark mode support
558
+ ====================== */
559
+ @media (prefers-color-scheme: dark) {
560
+ .dropdown-btn {
561
+ background: #1c1c1e;
562
+ color: #f0f0f0;
563
+ border: 1px solid rgba(255, 255, 255, 0.2);
564
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.5);
565
+ }
566
+
567
+ .dropdown-btn:hover {
568
+ background: rgba(255, 255, 255, 0.05);
569
+ }
570
+
571
+ .dropdown-content {
572
+ background: rgba(28, 28, 30, 0.8);
573
+ backdrop-filter: blur(12px);
574
+ -webkit-backdrop-filter: blur(12px);
575
+ box-shadow: 0 12px 32px rgba(0, 0, 0, 0.6);
576
+ }
577
+
578
+ .dropdown-item {
579
+ color: #f0f0f0;
580
+ }
581
+
582
+ .dropdown-item:hover {
583
+ background: rgba(255, 255, 255, 0.08);
584
+ }
585
+
586
+ .dropdown-item.active {
587
+ background: rgba(255, 255, 255, 0.12);
588
+ }
589
+
590
+ .dropdown-divider {
591
+ background: rgba(255, 255, 255, 0.2);
592
+ }
593
+
594
+ .dropdown-item[aria-disabled="true"],
595
+ .dropdown-item.placeholder {
596
+ color: rgba(255, 255, 255, 0.4);
597
+ }
598
+
599
+ .dropdown-label {
600
+ color: rgba(255, 255, 255, 0.6);
601
+ }
602
+
603
+ .dropdown-content::-webkit-scrollbar-thumb {
604
+ background: rgba(255,255,255,0.2);
605
+ }
606
+ }