ywana-core8 0.1.75 → 0.1.77

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 (122) 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 +10893 -1969
  21. package/dist/index.cjs.map +1 -1
  22. package/dist/index.css +7768 -1096
  23. package/dist/index.css.map +1 -1
  24. package/dist/index.modern.js +10921 -2005
  25. package/dist/index.modern.js.map +1 -1
  26. package/dist/index.umd.js +10893 -1969
  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 +4 -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 +289 -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/textfield2.css +841 -0
  106. package/src/html/textfield2.example.js +1370 -0
  107. package/src/html/textfield2.js +1143 -0
  108. package/src/html/textfield2.test.js +950 -0
  109. package/src/html/thumbnail.css +289 -2
  110. package/src/html/thumbnail.js +214 -9
  111. package/src/html/tokenfield.css +449 -1
  112. package/src/html/tokenfield.example.js +503 -0
  113. package/src/html/tokenfield.js +561 -56
  114. package/src/html/tokenfield.test.js +423 -0
  115. package/src/html/tooltip-positioning-demo.js +187 -0
  116. package/src/html/tooltip.css +25 -2
  117. package/src/html/tree.css +240 -10
  118. package/src/html/tree.example.js +475 -0
  119. package/src/html/tree.js +714 -28
  120. package/src/html/tree_enhanced.test.js +495 -0
  121. package/table2.test.js +454 -0
  122. package/src/html/button.tsx +0 -38
@@ -0,0 +1,841 @@
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
+ .textfield2.has-placeholder > label {
158
+ top: 0.3rem;
159
+ font-size: 0.8rem;
160
+ color: var(--primary-color, #2196f3);
161
+ transform: scale(0.9);
162
+ }
163
+
164
+ .textfield2.error > input:focus ~ label,
165
+ .textfield2.error > textarea:focus ~ label,
166
+ .textfield2.invalid > input:focus ~ label,
167
+ .textfield2.invalid > textarea:focus ~ label {
168
+ color: var(--error-color, #f44336);
169
+ }
170
+
171
+ /* Date/time input labels */
172
+ .textfield2 input[type="date"] ~ label,
173
+ .textfield2 input[type="time"] ~ label,
174
+ .textfield2 input[type="datetime-local"] ~ label,
175
+ .textfield2 input[type="month"] ~ label,
176
+ .textfield2 input[type="week"] ~ label {
177
+ top: 0.3rem;
178
+ font-size: 0.8rem;
179
+ color: var(--primary-color, #2196f3);
180
+ transform: scale(0.9);
181
+ }
182
+
183
+ /* Focus bar animation */
184
+ .textfield2-bar {
185
+ position: relative;
186
+ display: block;
187
+ width: 100%;
188
+ }
189
+
190
+ .textfield2-bar:before,
191
+ .textfield2-bar:after {
192
+ content: "";
193
+ height: 2px;
194
+ width: 0;
195
+ bottom: 1px;
196
+ position: absolute;
197
+ background: var(--primary-color, #2196f3);
198
+ transition: width 0.2s ease;
199
+ }
200
+
201
+ .textfield2-bar:before {
202
+ left: 50%;
203
+ }
204
+
205
+ .textfield2-bar:after {
206
+ right: 50%;
207
+ }
208
+
209
+ /* Active bar state */
210
+ .textfield2 > input:focus ~ .textfield2-bar:before,
211
+ .textfield2 > input:focus ~ .textfield2-bar:after,
212
+ .textfield2 > textarea:focus ~ .textfield2-bar:before,
213
+ .textfield2 > textarea:focus ~ .textfield2-bar:after,
214
+ .textfield2.focused .textfield2-bar:before,
215
+ .textfield2.focused .textfield2-bar:after {
216
+ width: 50%;
217
+ }
218
+
219
+ .textfield2.error .textfield2-bar:before,
220
+ .textfield2.error .textfield2-bar:after,
221
+ .textfield2.invalid .textfield2-bar:before,
222
+ .textfield2.invalid .textfield2-bar:after {
223
+ background: var(--error-color, #f44336);
224
+ }
225
+
226
+ /* Helper text */
227
+ .textfield2-helper {
228
+ display: flex;
229
+ align-items: center;
230
+ gap: 0.25rem;
231
+ margin-top: 0.25rem;
232
+ font-size: 0.75rem;
233
+ line-height: 1.2;
234
+ min-height: 1rem;
235
+ }
236
+
237
+ .textfield2-helper.helper {
238
+ color: var(--text-color-light, #666);
239
+ }
240
+
241
+ .textfield2-helper.error {
242
+ color: var(--error-color, #f44336);
243
+ }
244
+
245
+ .textfield2-helper .icon {
246
+ flex-shrink: 0;
247
+ }
248
+
249
+ /* Outlined variant */
250
+ .textfield2-outlined {
251
+ border: 1px solid var(--divider-color, #e0e0e0);
252
+ border-radius: 4px;
253
+ padding: 0.5rem;
254
+ background-color: var(--paper-color, #fff);
255
+ }
256
+
257
+ .textfield2-outlined > input,
258
+ .textfield2-outlined > textarea {
259
+ border: none;
260
+ padding: 0.5rem;
261
+ }
262
+
263
+ .textfield2-outlined > label {
264
+ background-color: var(--paper-color, #fff);
265
+ padding: 0 0.25rem;
266
+ left: 0.75rem;
267
+ top: -0.5rem;
268
+ }
269
+
270
+ .textfield2-outlined.focused,
271
+ .textfield2-outlined > input:focus,
272
+ .textfield2-outlined > textarea:focus {
273
+ border-color: var(--primary-color, #2196f3);
274
+ outline: none;
275
+ }
276
+
277
+ .textfield2-outlined.error,
278
+ .textfield2-outlined.invalid {
279
+ border-color: 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
+ }
411
+
412
+ .dropdown2.disabled .dropdown2-control {
413
+ opacity: 0.6;
414
+ cursor: not-allowed;
415
+ pointer-events: none;
416
+ }
417
+
418
+ .dropdown2.readonly .dropdown2-control {
419
+ background-color: var(--disabled-background, #f5f5f5);
420
+ cursor: default;
421
+ }
422
+
423
+ .dropdown2.error .dropdown2-control {
424
+ border-color: var(--error-color, #f44336);
425
+ }
426
+
427
+ .dropdown2.outlined .dropdown2-control {
428
+ border-width: 2px;
429
+ }
430
+
431
+ /* Dropdown value and search */
432
+ .dropdown2-value {
433
+ flex: 1;
434
+ color: var(--text-color, #333);
435
+ white-space: nowrap;
436
+ overflow: hidden;
437
+ text-overflow: ellipsis;
438
+ }
439
+
440
+ .dropdown2-value.placeholder {
441
+ color: var(--text-color-light, #666);
442
+ }
443
+
444
+ .dropdown2-search {
445
+ flex: 1;
446
+ border: none;
447
+ outline: none;
448
+ background: transparent;
449
+ color: var(--text-color, #333);
450
+ font-size: inherit;
451
+ }
452
+
453
+ /* Indicators */
454
+ .dropdown2-indicators {
455
+ display: flex;
456
+ align-items: center;
457
+ gap: 0.25rem;
458
+ margin-left: 0.5rem;
459
+ }
460
+
461
+ .dropdown2-clear {
462
+ color: var(--text-color-light, #666);
463
+ cursor: pointer;
464
+ transition: color 0.2s ease;
465
+ }
466
+
467
+ .dropdown2-clear:hover {
468
+ color: var(--text-color, #333);
469
+ }
470
+
471
+ .dropdown2-arrow {
472
+ color: var(--text-color-light, #666);
473
+ transition: transform 0.2s ease;
474
+ }
475
+
476
+ .dropdown2.open .dropdown2-arrow {
477
+ transform: rotate(180deg);
478
+ }
479
+
480
+ /* Label */
481
+ .dropdown2-label {
482
+ position: absolute;
483
+ top: -0.5rem;
484
+ left: 0.75rem;
485
+ background-color: var(--paper-color, #fff);
486
+ padding: 0 0.25rem;
487
+ font-size: 0.8rem;
488
+ color: var(--primary-color, #2196f3);
489
+ transition: all 0.2s ease;
490
+ pointer-events: none;
491
+ }
492
+
493
+ .dropdown2-label.active {
494
+ transform: scale(0.9);
495
+ }
496
+
497
+ /* Dropdown menu */
498
+ .dropdown2-menu {
499
+ position: absolute;
500
+ top: 100%;
501
+ left: 0;
502
+ right: 0;
503
+ z-index: 1000;
504
+ background-color: var(--paper-color, #fff);
505
+ border: 1px solid var(--divider-color, #e0e0e0);
506
+ border-radius: 4px;
507
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
508
+ overflow: hidden;
509
+ margin-top: 0.25rem;
510
+ }
511
+
512
+ .dropdown2-menu.top {
513
+ top: auto;
514
+ bottom: 100%;
515
+ margin-top: 0;
516
+ margin-bottom: 0.25rem;
517
+ }
518
+
519
+ .dropdown2-menu ul {
520
+ list-style: none;
521
+ margin: 0;
522
+ padding: 0.25rem 0;
523
+ max-height: inherit;
524
+ overflow-y: auto;
525
+ }
526
+
527
+ /* Options */
528
+ .dropdown2-option {
529
+ display: flex;
530
+ align-items: center;
531
+ padding: 0.5rem 0.75rem;
532
+ cursor: pointer;
533
+ transition: background-color 0.2s ease;
534
+ gap: 0.5rem;
535
+ }
536
+
537
+ .dropdown2-option:hover,
538
+ .dropdown2-option.focused {
539
+ background-color: var(--primary-color-lighter, #e3f2fd);
540
+ }
541
+
542
+ .dropdown2-option.selected {
543
+ background-color: var(--primary-color-light, #bbdefb);
544
+ color: var(--primary-color-text, #1976d2);
545
+ }
546
+
547
+ .dropdown2-option.selected:hover {
548
+ background-color: var(--primary-color, #2196f3);
549
+ color: var(--primary-color-text, white);
550
+ }
551
+
552
+ .dropdown2-checkbox,
553
+ .dropdown2-option-icon,
554
+ .dropdown2-check {
555
+ flex-shrink: 0;
556
+ }
557
+
558
+ .dropdown2-option-text {
559
+ flex: 1;
560
+ overflow: hidden;
561
+ text-overflow: ellipsis;
562
+ white-space: nowrap;
563
+ }
564
+
565
+ /* Group labels */
566
+ .dropdown2-group-label {
567
+ padding: 0.5rem 0.75rem 0.25rem;
568
+ font-weight: 600;
569
+ color: var(--text-color-light, #666);
570
+ font-size: 0.8rem;
571
+ text-transform: uppercase;
572
+ letter-spacing: 0.5px;
573
+ border-bottom: 1px solid var(--divider-color-light, #f0f0f0);
574
+ }
575
+
576
+ /* No options */
577
+ .dropdown2-no-options {
578
+ padding: 1rem 0.75rem;
579
+ text-align: center;
580
+ color: var(--text-color-light, #666);
581
+ font-style: italic;
582
+ }
583
+
584
+ /* Helper text */
585
+ .dropdown2-helper {
586
+ display: flex;
587
+ align-items: center;
588
+ gap: 0.25rem;
589
+ margin-top: 0.25rem;
590
+ font-size: 0.75rem;
591
+ line-height: 1.2;
592
+ min-height: 1rem;
593
+ }
594
+
595
+ .dropdown2-helper.helper {
596
+ color: var(--text-color-light, #666);
597
+ }
598
+
599
+ .dropdown2-helper.error {
600
+ color: var(--error-color, #f44336);
601
+ }
602
+
603
+ .dropdown2-helper .icon {
604
+ flex-shrink: 0;
605
+ }
606
+
607
+ /* Multiple selection */
608
+ .dropdown2.multiple .dropdown2-value {
609
+ display: flex;
610
+ align-items: center;
611
+ gap: 0.25rem;
612
+ }
613
+
614
+ /* Responsive adjustments */
615
+ @media (max-width: 768px) {
616
+ .dropdown2 {
617
+ min-width: 150px;
618
+ }
619
+
620
+ .dropdown2-control {
621
+ min-height: 2.25rem;
622
+ padding: 0.375rem;
623
+ }
624
+
625
+ .dropdown2-option {
626
+ padding: 0.375rem 0.5rem;
627
+ }
628
+
629
+ .dropdown2-menu {
630
+ max-height: 150px;
631
+ }
632
+ }
633
+
634
+ /* High contrast mode support */
635
+ @media (prefers-contrast: high) {
636
+ .dropdown2-control {
637
+ border-width: 2px;
638
+ }
639
+
640
+ .dropdown2-control:focus {
641
+ border-width: 3px;
642
+ }
643
+
644
+ .dropdown2-option.selected {
645
+ border: 2px solid var(--primary-color, #2196f3);
646
+ }
647
+ }
648
+
649
+ /* Reduced motion support */
650
+ @media (prefers-reduced-motion: reduce) {
651
+ .dropdown2-control,
652
+ .dropdown2-arrow,
653
+ .dropdown2-label,
654
+ .dropdown2-option,
655
+ .dropdown2-clear {
656
+ transition: none;
657
+ }
658
+ }
659
+
660
+ /* Dark theme support */
661
+ @media (prefers-color-scheme: dark) {
662
+ .dropdown2-control {
663
+ background-color: var(--paper-color-dark, #424242);
664
+ border-color: var(--divider-color-dark, #616161);
665
+ }
666
+
667
+ .dropdown2-menu {
668
+ background-color: var(--paper-color-dark, #424242);
669
+ border-color: var(--divider-color-dark, #616161);
670
+ }
671
+
672
+ .dropdown2-label {
673
+ background-color: var(--paper-color-dark, #424242);
674
+ }
675
+
676
+ .dropdown2-value,
677
+ .dropdown2-search {
678
+ color: var(--text-color-dark, #ffffff);
679
+ }
680
+ }
681
+
682
+ /* Print styles for dropdown */
683
+ @media print {
684
+ .dropdown2-menu {
685
+ display: none !important;
686
+ }
687
+
688
+ .dropdown2-control {
689
+ border: 1px solid black !important;
690
+ background: white !important;
691
+ }
692
+
693
+ .dropdown2-value {
694
+ color: black !important;
695
+ }
696
+
697
+ .dropdown2-indicators {
698
+ display: none !important;
699
+ }
700
+ }
701
+
702
+ /* Enhanced DateRange2 Styles */
703
+
704
+ .date-range2 {
705
+ display: flex;
706
+ flex-direction: column;
707
+ gap: 0.5rem;
708
+ }
709
+
710
+ .date-range2-label {
711
+ font-size: 0.9rem;
712
+ font-weight: 500;
713
+ color: var(--text-color, #333);
714
+ margin-bottom: 0.25rem;
715
+ }
716
+
717
+ .date-range2-fields {
718
+ display: flex;
719
+ align-items: center;
720
+ gap: 1rem;
721
+ flex-wrap: wrap;
722
+ }
723
+
724
+ .date-range2-from,
725
+ .date-range2-to {
726
+ flex: 1;
727
+ min-width: 150px;
728
+ }
729
+
730
+ .date-range2-separator {
731
+ color: var(--text-color-light, #666);
732
+ font-size: 0.9rem;
733
+ padding: 0 0.5rem;
734
+ white-space: nowrap;
735
+ }
736
+
737
+ /* States */
738
+ .date-range2.disabled {
739
+ opacity: 0.6;
740
+ pointer-events: none;
741
+ }
742
+
743
+ .date-range2.readonly {
744
+ opacity: 0.8;
745
+ }
746
+
747
+ .date-range2.error .date-range2-label {
748
+ color: var(--error-color, #f44336);
749
+ }
750
+
751
+ .date-range2.outlined .date-range2-fields {
752
+ padding: 0.5rem;
753
+ border: 1px solid var(--divider-color, #e0e0e0);
754
+ border-radius: 4px;
755
+ background-color: var(--paper-color, #fff);
756
+ }
757
+
758
+ .date-range2.outlined.error {
759
+ border-color: var(--error-color, #f44336);
760
+ }
761
+
762
+ /* Helper text */
763
+ .date-range2-helper {
764
+ display: flex;
765
+ align-items: center;
766
+ gap: 0.25rem;
767
+ margin-top: 0.25rem;
768
+ font-size: 0.75rem;
769
+ line-height: 1.2;
770
+ min-height: 1rem;
771
+ }
772
+
773
+ .date-range2-helper.helper {
774
+ color: var(--text-color-light, #666);
775
+ }
776
+
777
+ .date-range2-helper.error {
778
+ color: var(--error-color, #f44336);
779
+ }
780
+
781
+ .date-range2-helper .icon {
782
+ flex-shrink: 0;
783
+ }
784
+
785
+ /* Responsive adjustments */
786
+ @media (max-width: 768px) {
787
+ .date-range2-fields {
788
+ flex-direction: column;
789
+ gap: 0.75rem;
790
+ align-items: stretch;
791
+ }
792
+
793
+ .date-range2-from,
794
+ .date-range2-to {
795
+ min-width: auto;
796
+ }
797
+
798
+ .date-range2-separator {
799
+ text-align: center;
800
+ padding: 0;
801
+ }
802
+ }
803
+
804
+ /* High contrast mode support */
805
+ @media (prefers-contrast: high) {
806
+ .date-range2.outlined .date-range2-fields {
807
+ border-width: 2px;
808
+ }
809
+
810
+ .date-range2.outlined.error {
811
+ border-width: 2px;
812
+ }
813
+ }
814
+
815
+ /* Dark theme support */
816
+ @media (prefers-color-scheme: dark) {
817
+ .date-range2-label {
818
+ color: var(--text-color-dark, #ffffff);
819
+ }
820
+
821
+ .date-range2.outlined .date-range2-fields {
822
+ background-color: var(--paper-color-dark, #424242);
823
+ border-color: var(--divider-color-dark, #616161);
824
+ }
825
+ }
826
+
827
+ /* Print styles for date range */
828
+ @media print {
829
+ .date-range2-fields {
830
+ border: 1px solid black !important;
831
+ background: white !important;
832
+ }
833
+
834
+ .date-range2-label {
835
+ color: black !important;
836
+ }
837
+
838
+ .date-range2-separator {
839
+ color: black !important;
840
+ }
841
+ }