ywana-core8 0.1.74 → 0.1.76

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 (123) hide show
  1. package/ACCORDION_EVALUATION.md +583 -0
  2. package/CHECKBOX_EVALUATION.md +273 -0
  3. package/CHIP_EVALUATION.md +542 -0
  4. package/COLOR_EVALUATION.md +524 -0
  5. package/COMPONENTS_EVALUATION.md +477 -0
  6. package/FORM_EVALUATION.md +459 -0
  7. package/HEADER_EVALUATION.md +436 -0
  8. package/ICON_EVALUATION.md +254 -0
  9. package/LIST_EVALUATION.md +574 -0
  10. package/PROGRESS_EVALUATION.md +450 -0
  11. package/RADIO_EVALUATION.md +439 -0
  12. package/RADIO_VISUAL_FIX.md +183 -0
  13. package/SECTION_IMPROVEMENTS.md +153 -0
  14. package/SWITCH_EVALUATION.md +335 -0
  15. package/SWITCH_VISUAL_FIX.md +232 -0
  16. package/TAB_EVALUATION.md +626 -0
  17. package/TEXTFIELD_EVALUATION.md +747 -0
  18. package/TOOLTIP_FIX.md +157 -0
  19. package/TREE_EVALUATION.md +708 -0
  20. package/dist/index.cjs +7900 -1615
  21. package/dist/index.cjs.map +1 -1
  22. package/dist/index.css +6094 -1122
  23. package/dist/index.css.map +1 -1
  24. package/dist/index.modern.js +7929 -1645
  25. package/dist/index.modern.js.map +1 -1
  26. package/dist/index.umd.js +7900 -1615
  27. package/dist/index.umd.js.map +1 -1
  28. package/jest.config.js +24 -0
  29. package/package.json +10 -1
  30. package/src/html/accordion.css +208 -4
  31. package/src/html/accordion.example.js +390 -0
  32. package/src/html/accordion.js +284 -28
  33. package/src/html/accordion.unit.test.js +334 -0
  34. package/src/html/button.css +157 -16
  35. package/src/html/button.example.js +374 -0
  36. package/src/html/button.js +240 -60
  37. package/src/html/button.test.js +422 -0
  38. package/src/html/checkbox.css +74 -2
  39. package/src/html/checkbox.example.js +316 -0
  40. package/src/html/checkbox.js +113 -26
  41. package/src/html/checkbox.test.js +285 -0
  42. package/src/html/chip.css +230 -19
  43. package/src/html/chip.example.js +355 -0
  44. package/src/html/chip.js +321 -25
  45. package/src/html/chip.test.js +425 -0
  46. package/src/html/color.css +435 -6
  47. package/src/html/color.example.js +527 -0
  48. package/src/html/color.js +458 -9
  49. package/src/html/color.test.js +362 -4
  50. package/src/html/components.example.js +492 -0
  51. package/src/html/components_enhanced.test.js +581 -0
  52. package/src/html/form.css +70 -3
  53. package/src/html/form.example.js +385 -0
  54. package/src/html/form.js +232 -34
  55. package/src/html/form.test.js +369 -0
  56. package/src/html/header2.css +264 -0
  57. package/src/html/header2.example.js +411 -0
  58. package/src/html/header2.js +203 -0
  59. package/src/html/header2.test.js +377 -0
  60. package/src/html/icon.css +20 -2
  61. package/src/html/icon.example.js +268 -0
  62. package/src/html/icon.js +86 -16
  63. package/src/html/icon.test.js +231 -0
  64. package/src/html/index.js +1 -1
  65. package/src/html/list.css +393 -1
  66. package/src/html/list.example.js +404 -0
  67. package/src/html/list.js +583 -40
  68. package/src/html/list.test.js +383 -0
  69. package/src/html/progress.css +707 -17
  70. package/src/html/progress.example.js +424 -0
  71. package/src/html/progress.js +906 -9
  72. package/src/html/progress.test.js +313 -0
  73. package/src/html/property.css +399 -0
  74. package/src/html/property.example.js +553 -0
  75. package/src/html/property.js +393 -15
  76. package/src/html/property.test.js +351 -2
  77. package/src/html/radio-visual-test.js +289 -0
  78. package/src/html/radio.css +137 -11
  79. package/src/html/radio.example.js +389 -0
  80. package/src/html/radio.js +234 -10
  81. package/src/html/radio.test.js +318 -0
  82. package/src/html/section.example.js +99 -0
  83. package/src/html/section.js +40 -3
  84. package/src/html/section.test.js +131 -0
  85. package/src/html/selector.css +329 -3
  86. package/src/html/selector.js +369 -23
  87. package/src/html/switch-debug.js +197 -0
  88. package/src/html/switch-test-visual.js +294 -0
  89. package/src/html/switch.css +200 -0
  90. package/src/html/switch.example.js +461 -0
  91. package/src/html/switch.js +283 -23
  92. package/src/html/switch.test.js +355 -0
  93. package/src/html/tab.css +288 -0
  94. package/src/html/tab.example.js +446 -0
  95. package/src/html/tab.js +387 -22
  96. package/src/html/tab_enhanced.js +378 -0
  97. package/src/html/tab_enhanced.test.js +504 -0
  98. package/src/html/table2.css +576 -0
  99. package/src/html/table2.example.js +703 -0
  100. package/src/html/table2.js +1252 -0
  101. package/src/html/table2.migration.md +328 -0
  102. package/src/html/table2.test.js +582 -0
  103. package/src/html/text.css +375 -0
  104. package/src/html/text.js +311 -20
  105. package/src/html/textfield.js +1 -1
  106. package/src/html/textfield2.css +842 -0
  107. package/src/html/textfield2.example.js +499 -0
  108. package/src/html/textfield2.js +1130 -0
  109. package/src/html/textfield2.test.js +950 -0
  110. package/src/html/thumbnail.css +289 -2
  111. package/src/html/thumbnail.js +214 -9
  112. package/src/html/tokenfield.css +449 -1
  113. package/src/html/tokenfield.example.js +503 -0
  114. package/src/html/tokenfield.js +561 -56
  115. package/src/html/tokenfield.test.js +423 -0
  116. package/src/html/tooltip-positioning-demo.js +187 -0
  117. package/src/html/tooltip.css +25 -2
  118. package/src/html/tree.css +228 -0
  119. package/src/html/tree.example.js +475 -0
  120. package/src/html/tree.js +712 -28
  121. package/src/html/tree_enhanced.test.js +495 -0
  122. package/table2.test.js +454 -0
  123. package/src/html/button.tsx +0 -38
@@ -0,0 +1,842 @@
1
+ /* Enhanced TextField2 Styles */
2
+
3
+ .textfield2 {
4
+ flex: 1;
5
+ position: relative;
6
+ padding-top: 1.5rem;
7
+ overflow: visible;
8
+ display: flex;
9
+ flex-direction: column;
10
+ min-height: auto;
11
+ transition: all 0.2s ease;
12
+ }
13
+
14
+ .textfield2.no-label {
15
+ padding-top: 0.5rem;
16
+ padding-bottom: 0.5rem;
17
+ }
18
+
19
+ .textfield2.label-left {
20
+ flex-direction: row;
21
+ align-items: center;
22
+ padding-top: 0.5rem;
23
+ }
24
+
25
+ /* Input and textarea base styles */
26
+ .textfield2 > input,
27
+ .textfield2 > textarea {
28
+ flex: 1;
29
+ padding: 10px 10px 10px 0.5rem;
30
+ display: block;
31
+ border: none;
32
+ border-bottom: 1px solid var(--divider-color, #e0e0e0);
33
+ overflow: hidden;
34
+ font-size: 1rem;
35
+ color: var(--text-color, #333);
36
+ background-color: var(--paper-color, #fff);
37
+ transition: border-color 0.2s ease;
38
+ resize: vertical;
39
+ min-height: 2.5rem;
40
+ }
41
+
42
+ .textfield2 > textarea {
43
+ min-height: 4rem;
44
+ padding-top: 0.75rem;
45
+ line-height: 1.4;
46
+ }
47
+
48
+ /* Focus styles */
49
+ .textfield2 > input:focus,
50
+ .textfield2 > textarea:focus {
51
+ outline: none;
52
+ border-color: var(--primary-color, #2196f3);
53
+ }
54
+
55
+ .textfield2.focused > input,
56
+ .textfield2.focused > textarea {
57
+ border-color: var(--primary-color, #2196f3);
58
+ }
59
+
60
+ /* Read-only styles */
61
+ .textfield2 > input:read-only,
62
+ .textfield2 > textarea:read-only,
63
+ .textfield2.readonly > input,
64
+ .textfield2.readonly > textarea {
65
+ background-color: var(--disabled-background, #f5f5f5);
66
+ border-bottom: 1px solid var(--divider-color-light, #f0f0f0);
67
+ cursor: default;
68
+ }
69
+
70
+ /* Disabled styles */
71
+ .textfield2.disabled {
72
+ opacity: 0.6;
73
+ pointer-events: none;
74
+ }
75
+
76
+ .textfield2.disabled > input,
77
+ .textfield2.disabled > textarea {
78
+ background-color: var(--disabled-background, #f5f5f5);
79
+ color: var(--text-color-disabled, #999);
80
+ cursor: not-allowed;
81
+ }
82
+
83
+ /* Error styles */
84
+ .textfield2.error > input,
85
+ .textfield2.error > textarea,
86
+ .textfield2.invalid > input,
87
+ .textfield2.invalid > textarea {
88
+ border-color: var(--error-color, #f44336);
89
+ }
90
+
91
+ .textfield2.error > label,
92
+ .textfield2.invalid > label {
93
+ color: var(--error-color, #f44336);
94
+ }
95
+
96
+ /* Icons */
97
+ .textfield2-clear,
98
+ .textfield2-password-toggle {
99
+ position: absolute;
100
+ top: 1.5rem;
101
+ right: 0.2rem;
102
+ color: var(--text-color-light, #666);
103
+ cursor: pointer;
104
+ transition: color 0.2s ease;
105
+ }
106
+
107
+ .textfield2-clear:hover,
108
+ .textfield2-password-toggle:hover {
109
+ color: var(--text-color, #333);
110
+ }
111
+
112
+ .textfield2.no-label .textfield2-clear,
113
+ .textfield2.no-label .textfield2-password-toggle {
114
+ top: 0.5rem;
115
+ }
116
+
117
+ .textfield2-password-toggle {
118
+ right: 2.2rem;
119
+ }
120
+
121
+ .textfield2.textfield2-date .textfield2-clear,
122
+ .textfield2.textfield2-time .textfield2-clear {
123
+ right: 2.5rem;
124
+ }
125
+
126
+ /* Labels */
127
+ .textfield2 > label {
128
+ color: var(--primary-color, #2196f3);
129
+ font-size: 0.9rem;
130
+ font-weight: normal;
131
+ position: absolute;
132
+ pointer-events: none;
133
+ left: 0.4rem;
134
+ top: 2rem;
135
+ transition: all 0.2s ease;
136
+ transform-origin: left top;
137
+ }
138
+
139
+ .textfield2.label-left > label {
140
+ position: relative;
141
+ margin-right: 0.5rem;
142
+ top: 0;
143
+ font-size: 0.9rem;
144
+ color: var(--text-color, #333);
145
+ pointer-events: auto;
146
+ min-width: max-content;
147
+ }
148
+
149
+ /* Active label states */
150
+ .textfield2 > input:focus ~ label,
151
+ .textfield2 > input:valid ~ label,
152
+ .textfield2 > input[value]:not([value=""]) ~ label,
153
+ .textfield2 > textarea:focus ~ label,
154
+ .textfield2 > textarea:valid ~ label,
155
+ .textfield2 > textarea[value]:not([value=""]) ~ label,
156
+ .textfield2.focused > label {
157
+ top: 0.3rem;
158
+ font-size: 0.8rem;
159
+ color: var(--primary-color, #2196f3);
160
+ transform: scale(0.9);
161
+ }
162
+
163
+ .textfield2.error > input:focus ~ label,
164
+ .textfield2.error > textarea:focus ~ label,
165
+ .textfield2.invalid > input:focus ~ label,
166
+ .textfield2.invalid > textarea:focus ~ label {
167
+ color: var(--error-color, #f44336);
168
+ }
169
+
170
+ /* Date/time input labels */
171
+ .textfield2 input[type="date"] ~ label,
172
+ .textfield2 input[type="time"] ~ label,
173
+ .textfield2 input[type="datetime-local"] ~ label,
174
+ .textfield2 input[type="month"] ~ label,
175
+ .textfield2 input[type="week"] ~ label {
176
+ top: 0.3rem;
177
+ font-size: 0.8rem;
178
+ color: var(--primary-color, #2196f3);
179
+ transform: scale(0.9);
180
+ }
181
+
182
+ /* Focus bar animation */
183
+ .textfield2-bar {
184
+ position: relative;
185
+ display: block;
186
+ width: 100%;
187
+ }
188
+
189
+ .textfield2-bar:before,
190
+ .textfield2-bar:after {
191
+ content: "";
192
+ height: 2px;
193
+ width: 0;
194
+ bottom: 1px;
195
+ position: absolute;
196
+ background: var(--primary-color, #2196f3);
197
+ transition: width 0.2s ease;
198
+ }
199
+
200
+ .textfield2-bar:before {
201
+ left: 50%;
202
+ }
203
+
204
+ .textfield2-bar:after {
205
+ right: 50%;
206
+ }
207
+
208
+ /* Active bar state */
209
+ .textfield2 > input:focus ~ .textfield2-bar:before,
210
+ .textfield2 > input:focus ~ .textfield2-bar:after,
211
+ .textfield2 > textarea:focus ~ .textfield2-bar:before,
212
+ .textfield2 > textarea:focus ~ .textfield2-bar:after,
213
+ .textfield2.focused .textfield2-bar:before,
214
+ .textfield2.focused .textfield2-bar:after {
215
+ width: 50%;
216
+ }
217
+
218
+ .textfield2.error .textfield2-bar:before,
219
+ .textfield2.error .textfield2-bar:after,
220
+ .textfield2.invalid .textfield2-bar:before,
221
+ .textfield2.invalid .textfield2-bar:after {
222
+ background: var(--error-color, #f44336);
223
+ }
224
+
225
+ /* Helper text */
226
+ .textfield2-helper {
227
+ display: flex;
228
+ align-items: center;
229
+ gap: 0.25rem;
230
+ margin-top: 0.25rem;
231
+ font-size: 0.75rem;
232
+ line-height: 1.2;
233
+ min-height: 1rem;
234
+ }
235
+
236
+ .textfield2-helper.helper {
237
+ color: var(--text-color-light, #666);
238
+ }
239
+
240
+ .textfield2-helper.error {
241
+ color: var(--error-color, #f44336);
242
+ }
243
+
244
+ .textfield2-helper .icon {
245
+ flex-shrink: 0;
246
+ }
247
+
248
+ /* Outlined variant */
249
+ .textfield2-outlined {
250
+ border: 1px solid var(--divider-color, #e0e0e0);
251
+ border-radius: 4px;
252
+ padding: 0.5rem;
253
+ background-color: var(--paper-color, #fff);
254
+ }
255
+
256
+ .textfield2-outlined > input,
257
+ .textfield2-outlined > textarea {
258
+ border: none;
259
+ padding: 0.5rem;
260
+ }
261
+
262
+ .textfield2-outlined > label {
263
+ background-color: var(--paper-color, #fff);
264
+ padding: 0 0.25rem;
265
+ left: 0.75rem;
266
+ top: -0.5rem;
267
+ }
268
+
269
+ .textfield2-outlined.focused,
270
+ .textfield2-outlined > input:focus,
271
+ .textfield2-outlined > textarea:focus {
272
+ border-color: var(--primary-color, #2196f3);
273
+ box-shadow: 0 0 0 1px var(--primary-color, #2196f3);
274
+ }
275
+
276
+ .textfield2-outlined.error,
277
+ .textfield2-outlined.invalid {
278
+ border-color: var(--error-color, #f44336);
279
+ box-shadow: 0 0 0 1px var(--error-color, #f44336);
280
+ }
281
+
282
+ .textfield2-outlined .textfield2-bar {
283
+ display: none;
284
+ }
285
+
286
+ /* Responsive adjustments */
287
+ @media (max-width: 768px) {
288
+ .textfield2 {
289
+ padding-top: 1.25rem;
290
+ }
291
+
292
+ .textfield2 > input,
293
+ .textfield2 > textarea {
294
+ font-size: 0.9rem;
295
+ padding: 8px 8px 8px 0.4rem;
296
+ }
297
+
298
+ .textfield2 > label {
299
+ font-size: 0.8rem;
300
+ left: 0.3rem;
301
+ }
302
+
303
+ .textfield2-helper {
304
+ font-size: 0.7rem;
305
+ }
306
+ }
307
+
308
+ /* High contrast mode support */
309
+ @media (prefers-contrast: high) {
310
+ .textfield2 > input,
311
+ .textfield2 > textarea {
312
+ border-width: 2px;
313
+ }
314
+
315
+ .textfield2.focused > input,
316
+ .textfield2.focused > textarea {
317
+ border-width: 3px;
318
+ }
319
+
320
+ .textfield2-outlined {
321
+ border-width: 2px;
322
+ }
323
+
324
+ .textfield2-outlined.focused {
325
+ border-width: 3px;
326
+ }
327
+ }
328
+
329
+ /* Reduced motion support */
330
+ @media (prefers-reduced-motion: reduce) {
331
+ .textfield2,
332
+ .textfield2 > input,
333
+ .textfield2 > textarea,
334
+ .textfield2 > label,
335
+ .textfield2-bar:before,
336
+ .textfield2-bar:after,
337
+ .textfield2-clear,
338
+ .textfield2-password-toggle {
339
+ transition: none;
340
+ }
341
+ }
342
+
343
+ /* Dark theme support */
344
+ @media (prefers-color-scheme: dark) {
345
+ .textfield2 > input,
346
+ .textfield2 > textarea {
347
+ background-color: var(--paper-color-dark, #424242);
348
+ color: var(--text-color-dark, #ffffff);
349
+ border-color: var(--divider-color-dark, #616161);
350
+ }
351
+
352
+ .textfield2-outlined {
353
+ background-color: var(--paper-color-dark, #424242);
354
+ border-color: var(--divider-color-dark, #616161);
355
+ }
356
+
357
+ .textfield2 > label {
358
+ background-color: var(--paper-color-dark, #424242);
359
+ }
360
+ }
361
+
362
+ /* Print styles */
363
+ @media print {
364
+ .textfield2 {
365
+ break-inside: avoid;
366
+ }
367
+
368
+ .textfield2-clear,
369
+ .textfield2-password-toggle {
370
+ display: none !important;
371
+ }
372
+
373
+ .textfield2 > input,
374
+ .textfield2 > textarea {
375
+ border: 1px solid black !important;
376
+ background: white !important;
377
+ color: black !important;
378
+ }
379
+
380
+ .textfield2-helper {
381
+ color: black !important;
382
+ }
383
+ }
384
+
385
+ /* Enhanced DropDown2 Styles */
386
+
387
+ .dropdown2 {
388
+ position: relative;
389
+ display: flex;
390
+ flex-direction: column;
391
+ min-width: 200px;
392
+ }
393
+
394
+ .dropdown2-control {
395
+ display: flex;
396
+ align-items: center;
397
+ min-height: 2.5rem;
398
+ padding: 0.5rem;
399
+ border: 1px solid var(--divider-color, #e0e0e0);
400
+ border-radius: 4px;
401
+ background-color: var(--paper-color, #fff);
402
+ cursor: pointer;
403
+ transition: all 0.2s ease;
404
+ position: relative;
405
+ }
406
+
407
+ .dropdown2-control:focus {
408
+ outline: none;
409
+ border-color: var(--primary-color, #2196f3);
410
+ box-shadow: 0 0 0 1px var(--primary-color, #2196f3);
411
+ }
412
+
413
+ .dropdown2.disabled .dropdown2-control {
414
+ opacity: 0.6;
415
+ cursor: not-allowed;
416
+ pointer-events: none;
417
+ }
418
+
419
+ .dropdown2.readonly .dropdown2-control {
420
+ background-color: var(--disabled-background, #f5f5f5);
421
+ cursor: default;
422
+ }
423
+
424
+ .dropdown2.error .dropdown2-control {
425
+ border-color: var(--error-color, #f44336);
426
+ }
427
+
428
+ .dropdown2.outlined .dropdown2-control {
429
+ border-width: 2px;
430
+ }
431
+
432
+ /* Dropdown value and search */
433
+ .dropdown2-value {
434
+ flex: 1;
435
+ color: var(--text-color, #333);
436
+ white-space: nowrap;
437
+ overflow: hidden;
438
+ text-overflow: ellipsis;
439
+ }
440
+
441
+ .dropdown2-value.placeholder {
442
+ color: var(--text-color-light, #666);
443
+ }
444
+
445
+ .dropdown2-search {
446
+ flex: 1;
447
+ border: none;
448
+ outline: none;
449
+ background: transparent;
450
+ color: var(--text-color, #333);
451
+ font-size: inherit;
452
+ }
453
+
454
+ /* Indicators */
455
+ .dropdown2-indicators {
456
+ display: flex;
457
+ align-items: center;
458
+ gap: 0.25rem;
459
+ margin-left: 0.5rem;
460
+ }
461
+
462
+ .dropdown2-clear {
463
+ color: var(--text-color-light, #666);
464
+ cursor: pointer;
465
+ transition: color 0.2s ease;
466
+ }
467
+
468
+ .dropdown2-clear:hover {
469
+ color: var(--text-color, #333);
470
+ }
471
+
472
+ .dropdown2-arrow {
473
+ color: var(--text-color-light, #666);
474
+ transition: transform 0.2s ease;
475
+ }
476
+
477
+ .dropdown2.open .dropdown2-arrow {
478
+ transform: rotate(180deg);
479
+ }
480
+
481
+ /* Label */
482
+ .dropdown2-label {
483
+ position: absolute;
484
+ top: -0.5rem;
485
+ left: 0.75rem;
486
+ background-color: var(--paper-color, #fff);
487
+ padding: 0 0.25rem;
488
+ font-size: 0.8rem;
489
+ color: var(--primary-color, #2196f3);
490
+ transition: all 0.2s ease;
491
+ pointer-events: none;
492
+ }
493
+
494
+ .dropdown2-label.active {
495
+ transform: scale(0.9);
496
+ }
497
+
498
+ /* Dropdown menu */
499
+ .dropdown2-menu {
500
+ position: absolute;
501
+ top: 100%;
502
+ left: 0;
503
+ right: 0;
504
+ z-index: 1000;
505
+ background-color: var(--paper-color, #fff);
506
+ border: 1px solid var(--divider-color, #e0e0e0);
507
+ border-radius: 4px;
508
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
509
+ overflow: hidden;
510
+ margin-top: 0.25rem;
511
+ }
512
+
513
+ .dropdown2-menu.top {
514
+ top: auto;
515
+ bottom: 100%;
516
+ margin-top: 0;
517
+ margin-bottom: 0.25rem;
518
+ }
519
+
520
+ .dropdown2-menu ul {
521
+ list-style: none;
522
+ margin: 0;
523
+ padding: 0.25rem 0;
524
+ max-height: inherit;
525
+ overflow-y: auto;
526
+ }
527
+
528
+ /* Options */
529
+ .dropdown2-option {
530
+ display: flex;
531
+ align-items: center;
532
+ padding: 0.5rem 0.75rem;
533
+ cursor: pointer;
534
+ transition: background-color 0.2s ease;
535
+ gap: 0.5rem;
536
+ }
537
+
538
+ .dropdown2-option:hover,
539
+ .dropdown2-option.focused {
540
+ background-color: var(--primary-color-lighter, #e3f2fd);
541
+ }
542
+
543
+ .dropdown2-option.selected {
544
+ background-color: var(--primary-color-light, #bbdefb);
545
+ color: var(--primary-color-text, #1976d2);
546
+ }
547
+
548
+ .dropdown2-option.selected:hover {
549
+ background-color: var(--primary-color, #2196f3);
550
+ color: var(--primary-color-text, white);
551
+ }
552
+
553
+ .dropdown2-checkbox,
554
+ .dropdown2-option-icon,
555
+ .dropdown2-check {
556
+ flex-shrink: 0;
557
+ }
558
+
559
+ .dropdown2-option-text {
560
+ flex: 1;
561
+ overflow: hidden;
562
+ text-overflow: ellipsis;
563
+ white-space: nowrap;
564
+ }
565
+
566
+ /* Group labels */
567
+ .dropdown2-group-label {
568
+ padding: 0.5rem 0.75rem 0.25rem;
569
+ font-weight: 600;
570
+ color: var(--text-color-light, #666);
571
+ font-size: 0.8rem;
572
+ text-transform: uppercase;
573
+ letter-spacing: 0.5px;
574
+ border-bottom: 1px solid var(--divider-color-light, #f0f0f0);
575
+ }
576
+
577
+ /* No options */
578
+ .dropdown2-no-options {
579
+ padding: 1rem 0.75rem;
580
+ text-align: center;
581
+ color: var(--text-color-light, #666);
582
+ font-style: italic;
583
+ }
584
+
585
+ /* Helper text */
586
+ .dropdown2-helper {
587
+ display: flex;
588
+ align-items: center;
589
+ gap: 0.25rem;
590
+ margin-top: 0.25rem;
591
+ font-size: 0.75rem;
592
+ line-height: 1.2;
593
+ min-height: 1rem;
594
+ }
595
+
596
+ .dropdown2-helper.helper {
597
+ color: var(--text-color-light, #666);
598
+ }
599
+
600
+ .dropdown2-helper.error {
601
+ color: var(--error-color, #f44336);
602
+ }
603
+
604
+ .dropdown2-helper .icon {
605
+ flex-shrink: 0;
606
+ }
607
+
608
+ /* Multiple selection */
609
+ .dropdown2.multiple .dropdown2-value {
610
+ display: flex;
611
+ align-items: center;
612
+ gap: 0.25rem;
613
+ }
614
+
615
+ /* Responsive adjustments */
616
+ @media (max-width: 768px) {
617
+ .dropdown2 {
618
+ min-width: 150px;
619
+ }
620
+
621
+ .dropdown2-control {
622
+ min-height: 2.25rem;
623
+ padding: 0.375rem;
624
+ }
625
+
626
+ .dropdown2-option {
627
+ padding: 0.375rem 0.5rem;
628
+ }
629
+
630
+ .dropdown2-menu {
631
+ max-height: 150px;
632
+ }
633
+ }
634
+
635
+ /* High contrast mode support */
636
+ @media (prefers-contrast: high) {
637
+ .dropdown2-control {
638
+ border-width: 2px;
639
+ }
640
+
641
+ .dropdown2-control:focus {
642
+ border-width: 3px;
643
+ }
644
+
645
+ .dropdown2-option.selected {
646
+ border: 2px solid var(--primary-color, #2196f3);
647
+ }
648
+ }
649
+
650
+ /* Reduced motion support */
651
+ @media (prefers-reduced-motion: reduce) {
652
+ .dropdown2-control,
653
+ .dropdown2-arrow,
654
+ .dropdown2-label,
655
+ .dropdown2-option,
656
+ .dropdown2-clear {
657
+ transition: none;
658
+ }
659
+ }
660
+
661
+ /* Dark theme support */
662
+ @media (prefers-color-scheme: dark) {
663
+ .dropdown2-control {
664
+ background-color: var(--paper-color-dark, #424242);
665
+ border-color: var(--divider-color-dark, #616161);
666
+ }
667
+
668
+ .dropdown2-menu {
669
+ background-color: var(--paper-color-dark, #424242);
670
+ border-color: var(--divider-color-dark, #616161);
671
+ }
672
+
673
+ .dropdown2-label {
674
+ background-color: var(--paper-color-dark, #424242);
675
+ }
676
+
677
+ .dropdown2-value,
678
+ .dropdown2-search {
679
+ color: var(--text-color-dark, #ffffff);
680
+ }
681
+ }
682
+
683
+ /* Print styles for dropdown */
684
+ @media print {
685
+ .dropdown2-menu {
686
+ display: none !important;
687
+ }
688
+
689
+ .dropdown2-control {
690
+ border: 1px solid black !important;
691
+ background: white !important;
692
+ }
693
+
694
+ .dropdown2-value {
695
+ color: black !important;
696
+ }
697
+
698
+ .dropdown2-indicators {
699
+ display: none !important;
700
+ }
701
+ }
702
+
703
+ /* Enhanced DateRange2 Styles */
704
+
705
+ .date-range2 {
706
+ display: flex;
707
+ flex-direction: column;
708
+ gap: 0.5rem;
709
+ }
710
+
711
+ .date-range2-label {
712
+ font-size: 0.9rem;
713
+ font-weight: 500;
714
+ color: var(--text-color, #333);
715
+ margin-bottom: 0.25rem;
716
+ }
717
+
718
+ .date-range2-fields {
719
+ display: flex;
720
+ align-items: center;
721
+ gap: 1rem;
722
+ flex-wrap: wrap;
723
+ }
724
+
725
+ .date-range2-from,
726
+ .date-range2-to {
727
+ flex: 1;
728
+ min-width: 150px;
729
+ }
730
+
731
+ .date-range2-separator {
732
+ color: var(--text-color-light, #666);
733
+ font-size: 0.9rem;
734
+ padding: 0 0.5rem;
735
+ white-space: nowrap;
736
+ }
737
+
738
+ /* States */
739
+ .date-range2.disabled {
740
+ opacity: 0.6;
741
+ pointer-events: none;
742
+ }
743
+
744
+ .date-range2.readonly {
745
+ opacity: 0.8;
746
+ }
747
+
748
+ .date-range2.error .date-range2-label {
749
+ color: var(--error-color, #f44336);
750
+ }
751
+
752
+ .date-range2.outlined .date-range2-fields {
753
+ padding: 0.5rem;
754
+ border: 1px solid var(--divider-color, #e0e0e0);
755
+ border-radius: 4px;
756
+ background-color: var(--paper-color, #fff);
757
+ }
758
+
759
+ .date-range2.outlined.error {
760
+ border-color: var(--error-color, #f44336);
761
+ }
762
+
763
+ /* Helper text */
764
+ .date-range2-helper {
765
+ display: flex;
766
+ align-items: center;
767
+ gap: 0.25rem;
768
+ margin-top: 0.25rem;
769
+ font-size: 0.75rem;
770
+ line-height: 1.2;
771
+ min-height: 1rem;
772
+ }
773
+
774
+ .date-range2-helper.helper {
775
+ color: var(--text-color-light, #666);
776
+ }
777
+
778
+ .date-range2-helper.error {
779
+ color: var(--error-color, #f44336);
780
+ }
781
+
782
+ .date-range2-helper .icon {
783
+ flex-shrink: 0;
784
+ }
785
+
786
+ /* Responsive adjustments */
787
+ @media (max-width: 768px) {
788
+ .date-range2-fields {
789
+ flex-direction: column;
790
+ gap: 0.75rem;
791
+ align-items: stretch;
792
+ }
793
+
794
+ .date-range2-from,
795
+ .date-range2-to {
796
+ min-width: auto;
797
+ }
798
+
799
+ .date-range2-separator {
800
+ text-align: center;
801
+ padding: 0;
802
+ }
803
+ }
804
+
805
+ /* High contrast mode support */
806
+ @media (prefers-contrast: high) {
807
+ .date-range2.outlined .date-range2-fields {
808
+ border-width: 2px;
809
+ }
810
+
811
+ .date-range2.outlined.error {
812
+ border-width: 2px;
813
+ }
814
+ }
815
+
816
+ /* Dark theme support */
817
+ @media (prefers-color-scheme: dark) {
818
+ .date-range2-label {
819
+ color: var(--text-color-dark, #ffffff);
820
+ }
821
+
822
+ .date-range2.outlined .date-range2-fields {
823
+ background-color: var(--paper-color-dark, #424242);
824
+ border-color: var(--divider-color-dark, #616161);
825
+ }
826
+ }
827
+
828
+ /* Print styles for date range */
829
+ @media print {
830
+ .date-range2-fields {
831
+ border: 1px solid black !important;
832
+ background: white !important;
833
+ }
834
+
835
+ .date-range2-label {
836
+ color: black !important;
837
+ }
838
+
839
+ .date-range2-separator {
840
+ color: black !important;
841
+ }
842
+ }