web-mojo 2.1.46

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 (91) hide show
  1. package/LICENSE +198 -0
  2. package/README.md +510 -0
  3. package/dist/admin.cjs.js +2 -0
  4. package/dist/admin.cjs.js.map +1 -0
  5. package/dist/admin.css +621 -0
  6. package/dist/admin.es.js +7973 -0
  7. package/dist/admin.es.js.map +1 -0
  8. package/dist/auth.cjs.js +2 -0
  9. package/dist/auth.cjs.js.map +1 -0
  10. package/dist/auth.css +804 -0
  11. package/dist/auth.es.js +2168 -0
  12. package/dist/auth.es.js.map +1 -0
  13. package/dist/charts.cjs.js +2 -0
  14. package/dist/charts.cjs.js.map +1 -0
  15. package/dist/charts.css +1002 -0
  16. package/dist/charts.es.js +16 -0
  17. package/dist/charts.es.js.map +1 -0
  18. package/dist/chunks/ContextMenu-BrHqj0fn.js +80 -0
  19. package/dist/chunks/ContextMenu-BrHqj0fn.js.map +1 -0
  20. package/dist/chunks/ContextMenu-gEcpSz56.js +2 -0
  21. package/dist/chunks/ContextMenu-gEcpSz56.js.map +1 -0
  22. package/dist/chunks/DataView-DPryYpEW.js +2 -0
  23. package/dist/chunks/DataView-DPryYpEW.js.map +1 -0
  24. package/dist/chunks/DataView-DjZQrpba.js +843 -0
  25. package/dist/chunks/DataView-DjZQrpba.js.map +1 -0
  26. package/dist/chunks/Dialog-BsRx4eg3.js +2 -0
  27. package/dist/chunks/Dialog-BsRx4eg3.js.map +1 -0
  28. package/dist/chunks/Dialog-DSlctbon.js +1377 -0
  29. package/dist/chunks/Dialog-DSlctbon.js.map +1 -0
  30. package/dist/chunks/FilePreviewView-BmFHzK5K.js +5868 -0
  31. package/dist/chunks/FilePreviewView-BmFHzK5K.js.map +1 -0
  32. package/dist/chunks/FilePreviewView-DcdRl_ta.js +2 -0
  33. package/dist/chunks/FilePreviewView-DcdRl_ta.js.map +1 -0
  34. package/dist/chunks/FormView-CmBuwKGD.js +2 -0
  35. package/dist/chunks/FormView-CmBuwKGD.js.map +1 -0
  36. package/dist/chunks/FormView-DqUBMPJ9.js +5054 -0
  37. package/dist/chunks/FormView-DqUBMPJ9.js.map +1 -0
  38. package/dist/chunks/MetricsChart-CM4CI6eA.js +2095 -0
  39. package/dist/chunks/MetricsChart-CM4CI6eA.js.map +1 -0
  40. package/dist/chunks/MetricsChart-CPidSMaN.js +2 -0
  41. package/dist/chunks/MetricsChart-CPidSMaN.js.map +1 -0
  42. package/dist/chunks/PDFViewer-BNQlnS83.js +2 -0
  43. package/dist/chunks/PDFViewer-BNQlnS83.js.map +1 -0
  44. package/dist/chunks/PDFViewer-Dyo-Oeyd.js +946 -0
  45. package/dist/chunks/PDFViewer-Dyo-Oeyd.js.map +1 -0
  46. package/dist/chunks/Page-B524zSQs.js +351 -0
  47. package/dist/chunks/Page-B524zSQs.js.map +1 -0
  48. package/dist/chunks/Page-BFgj0pAA.js +2 -0
  49. package/dist/chunks/Page-BFgj0pAA.js.map +1 -0
  50. package/dist/chunks/TokenManager-BXNva8Jk.js +287 -0
  51. package/dist/chunks/TokenManager-BXNva8Jk.js.map +1 -0
  52. package/dist/chunks/TokenManager-Bzn4guFm.js +2 -0
  53. package/dist/chunks/TokenManager-Bzn4guFm.js.map +1 -0
  54. package/dist/chunks/TopNav-D3I3_25f.js +371 -0
  55. package/dist/chunks/TopNav-D3I3_25f.js.map +1 -0
  56. package/dist/chunks/TopNav-MDjL4kV0.js +2 -0
  57. package/dist/chunks/TopNav-MDjL4kV0.js.map +1 -0
  58. package/dist/chunks/User-BalfYTEF.js +3 -0
  59. package/dist/chunks/User-BalfYTEF.js.map +1 -0
  60. package/dist/chunks/User-DwIT-CTQ.js +1937 -0
  61. package/dist/chunks/User-DwIT-CTQ.js.map +1 -0
  62. package/dist/chunks/WebApp-B6mgbNn2.js +4767 -0
  63. package/dist/chunks/WebApp-B6mgbNn2.js.map +1 -0
  64. package/dist/chunks/WebApp-DqDowtkl.js +2 -0
  65. package/dist/chunks/WebApp-DqDowtkl.js.map +1 -0
  66. package/dist/chunks/WebSocketClient-D6i85jl2.js +2 -0
  67. package/dist/chunks/WebSocketClient-D6i85jl2.js.map +1 -0
  68. package/dist/chunks/WebSocketClient-Dvl3AYx1.js +297 -0
  69. package/dist/chunks/WebSocketClient-Dvl3AYx1.js.map +1 -0
  70. package/dist/core.css +1181 -0
  71. package/dist/css/web-mojo.css +17 -0
  72. package/dist/css-manifest.json +6 -0
  73. package/dist/docit.cjs.js +2 -0
  74. package/dist/docit.cjs.js.map +1 -0
  75. package/dist/docit.es.js +959 -0
  76. package/dist/docit.es.js.map +1 -0
  77. package/dist/index.cjs.js +2 -0
  78. package/dist/index.cjs.js.map +1 -0
  79. package/dist/index.es.js +2681 -0
  80. package/dist/index.es.js.map +1 -0
  81. package/dist/lightbox.cjs.js +2 -0
  82. package/dist/lightbox.cjs.js.map +1 -0
  83. package/dist/lightbox.css +606 -0
  84. package/dist/lightbox.es.js +3737 -0
  85. package/dist/lightbox.es.js.map +1 -0
  86. package/dist/loader.es.js +115 -0
  87. package/dist/loader.umd.js +85 -0
  88. package/dist/portal.css +2446 -0
  89. package/dist/table.css +639 -0
  90. package/dist/toast.css +181 -0
  91. package/package.json +179 -0
package/dist/table.css ADDED
@@ -0,0 +1,639 @@
1
+ /**
2
+ * MOJO Framework Table Styles
3
+ * Custom table components, selection, table pages, and collection select
4
+ * Version: 2.0.0
5
+ *
6
+ * Note: This file contains only custom MOJO table styles.
7
+ * Bootstrap 5 is required as a dependency for base styles.
8
+ */
9
+
10
+ /* ========================================================================
11
+ MOJO Custom Selection Components
12
+ ======================================================================== */
13
+
14
+ .mojo-select-cell,
15
+ .mojo-select-all-cell {
16
+ background-color: transparent;
17
+ cursor: pointer;
18
+ transition: background-color 0.2s ease;
19
+ text-align: center;
20
+ vertical-align: middle;
21
+ width: 40px;
22
+ height: 40px;
23
+ display: flex;
24
+ align-items: center;
25
+ justify-content: center;
26
+ }
27
+
28
+ .mojo-select-cell.selected,
29
+ .mojo-select-all-cell.selected {
30
+ background-color: transparent;
31
+ }
32
+
33
+ /*.mojo-select-cell:hover,
34
+ .mojo-select-all-cell:hover {
35
+ background-color: var(--bs-primary);
36
+ }*/
37
+
38
+ .mojo-checkbox {
39
+ height: 20px;
40
+ width: 20px;
41
+ border-radius: 6px;
42
+ border: 2px solid var(--bs-border-color);
43
+ background-color: var(--bs-body-bg);
44
+
45
+ display: flex;
46
+ align-items: center;
47
+ justify-content: center;
48
+ transition: all 0.2s ease;
49
+ }
50
+
51
+ .mojo-checkbok:focused,
52
+ .mojo-checkbok:hover {
53
+ box-shadow: 0 0 0 0.25rem rgba(56, 116, 255, 0.25);
54
+ }
55
+
56
+ .mojo-select-cell:hover .mojo-checkbox {
57
+ box-shadow: 0 0 0 0.25rem rgba(56, 116, 255, 0.25);
58
+ }
59
+
60
+ .mojo-select-cell.selected .mojo-checkbox,
61
+ .mojo-select-all-cell.selected .mojo-checkbox {
62
+ color: #fff;
63
+ background-color: var(--bs-primary);
64
+ border-color: var(--bs-primary);
65
+ }
66
+
67
+ /*.mojo-select-cell:hover .mojo-checkbox,
68
+ .mojo-select-all-cell:hover .mojo-checkbox {
69
+ border-color: var(--bs-white);
70
+ background-color: var(--bs-white);
71
+ }*/
72
+
73
+ .mojo-checkbox i {
74
+ font-size: 1rem;
75
+ opacity: 0;
76
+ transition: opacity 0.2s ease;
77
+ }
78
+
79
+ .mojo-select-cell.selected .mojo-checkbox i,
80
+ .mojo-select-all-cell.selected .mojo-checkbox i {
81
+ opacity: 1;
82
+ }
83
+
84
+ .mojo-select-all-cell.indeterminate .mojo-checkbox {
85
+ border-color: var(--bs-primary);
86
+ background-color: var(--bs-primary);
87
+ }
88
+
89
+ .mojo-select-all-cell.indeterminate .mojo-checkbox i {
90
+ opacity: 1;
91
+ color: white;
92
+ }
93
+
94
+ /* ========================================================================
95
+ MOJO TablePage Component
96
+ ======================================================================== */
97
+
98
+ .table-page-container {
99
+ position: relative;
100
+ }
101
+
102
+ .mojo-table-wrapper {
103
+ padding: 1rem;
104
+ }
105
+
106
+ .mojo-table-loading {
107
+ position: absolute;
108
+ top: 0;
109
+ left: 0;
110
+ right: 0;
111
+ background-color: var(--bs-body-bg);
112
+ opacity: 0.8;
113
+ height: 100%;
114
+ }
115
+
116
+ .table-page-header {
117
+ border-bottom: 1px solid var(--bs-border-color);
118
+ padding-bottom: 1rem;
119
+ margin-bottom: 1.5rem;
120
+ }
121
+
122
+ .page-title {
123
+ font-size: 1.75rem;
124
+ font-weight: 600;
125
+ color: var(--bs-emphasis-color);
126
+ margin-bottom: 0.5rem;
127
+ }
128
+
129
+ .page-description {
130
+ font-size: 0.95rem;
131
+ color: var(--bs-secondary-color);
132
+ margin-bottom: 0;
133
+ }
134
+
135
+ /* MOJO Custom Table Container */
136
+ .table-container {
137
+ position: relative;
138
+ /*margin: 1rem;*/
139
+ transition: opacity 0.3s ease;
140
+ }
141
+
142
+ .table-container.is-loading {
143
+ opacity: 0.7;
144
+ pointer-events: none;
145
+ }
146
+
147
+ /* MOJO Table Status Bar */
148
+ /*.table-status-bar {
149
+ border-top: 1px solid var(--bs-border-color);
150
+ padding-top: 0.75rem;
151
+ }*/
152
+
153
+ .table-status-bar.table-status-top {
154
+ border-top: none;
155
+ border-bottom: 1px solid var(--bs-border-color);
156
+ padding-top: 0;
157
+ padding-bottom: 0.75rem;
158
+ margin-bottom: 1rem;
159
+ }
160
+
161
+ .status-info {
162
+ display: flex;
163
+ align-items: center;
164
+ gap: 1rem;
165
+ flex-wrap: wrap;
166
+ }
167
+
168
+ /* MOJO Loading States */
169
+ .table-loading-overlay {
170
+ position: absolute;
171
+ top: 0;
172
+ left: 0;
173
+ right: 0;
174
+ bottom: 0;
175
+ background: var(--bs-body-bg);
176
+ opacity: 0.9;
177
+ display: flex;
178
+ align-items: center;
179
+ justify-content: center;
180
+ z-index: 1000;
181
+ backdrop-filter: blur(2px);
182
+ }
183
+
184
+ .loading-content {
185
+ padding: 2rem;
186
+ text-align: center;
187
+ }
188
+
189
+ .loading-message {
190
+ margin-top: 1rem;
191
+ color: var(--bs-secondary-color);
192
+ font-size: 0.95rem;
193
+ }
194
+
195
+ .loading-indicator {
196
+ display: inline-flex;
197
+ align-items: center;
198
+ gap: 0.5rem;
199
+ }
200
+
201
+ .error-indicator {
202
+ animation: mojo-pulse 2s ease-in-out infinite;
203
+ display: inline-flex;
204
+ align-items: center;
205
+ gap: 0.25rem;
206
+ }
207
+
208
+ /* MOJO Action Buttons Toolbar */
209
+ /*.table-action-buttons {
210
+ border-bottom: 1px solid var(--bs-border-color);
211
+ padding-bottom: 1rem;
212
+ margin-bottom: 1rem;
213
+ }*/
214
+
215
+ .table-actions-bottom {
216
+ border-bottom: none;
217
+ border-top: 1px solid var(--bs-border-color);
218
+ padding-top: 1rem;
219
+ padding-bottom: 0;
220
+ margin-top: 1rem;
221
+ margin-bottom: 0;
222
+ }
223
+
224
+ /* MOJO Batch Actions Panel */
225
+ .batch-actions-panel {
226
+ position: sticky;
227
+ bottom: 10px;
228
+ box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.4);
229
+ background-color: var(--bs-body-bg);
230
+ height: 60px;
231
+ z-index: 20;
232
+ margin: 0 8px;
233
+ }
234
+
235
+ div.batch-select-count {
236
+ font-size: 1.5rem !important;
237
+ background-color: var(--bs-primary);
238
+ color: var(--bs-white);
239
+ min-width: 50px;
240
+ text-align: center;
241
+ height: 60px;
242
+ line-height: 60px;
243
+ }
244
+
245
+ div.batch-select-title {
246
+ font-size: 1.5rem !important;
247
+ line-height: 60px;
248
+ height: 60px;
249
+ }
250
+
251
+ div.batch-select-action {
252
+ cursor: pointer;
253
+ color: var(--bs-primary-text-emphasis);
254
+ transition: color 0.2s ease;
255
+ }
256
+
257
+ div.batch-select-action:hover {
258
+ color: var(--bs-primary);
259
+ }
260
+
261
+ div.batch-select-end {
262
+ border-radius: 0 4px 4px 0;
263
+ background-color: var(--bs-primary);
264
+ height: 60px;
265
+ width: 10px;
266
+ }
267
+
268
+ /* MOJO Batch Actions Panel - Top Position */
269
+ .batch-actions-panel-top {
270
+ border-left: 4px solid var(--bs-primary);
271
+ /*background-color: var(--bs-info-bg-subtle);*/
272
+ border-color: var(--bs-info-border-subtle);
273
+ /*border: none;*/
274
+ margin: 0 !important;
275
+ padding: 0.4rem;
276
+ animation: slideDown 0.3s ease-out;
277
+ }
278
+
279
+ .batch-actions-panel-top .batch-select-count {
280
+ font-weight: bold;
281
+ color: var(--bs-primary);
282
+ font-size: 1.1rem;
283
+ }
284
+
285
+ .batch-actions-panel-top button {
286
+ transition:
287
+ transform 0.2s ease,
288
+ box-shadow 0.2s ease;
289
+ }
290
+
291
+ .batch-actions-panel-top button:hover:not(:disabled) {
292
+ transform: translateY(-1px);
293
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
294
+ }
295
+
296
+ @keyframes slideDown {
297
+ from {
298
+ opacity: 0;
299
+ transform: translateY(-10px);
300
+ }
301
+ to {
302
+ opacity: 1;
303
+ transform: translateY(0);
304
+ }
305
+ }
306
+
307
+ /* MOJO Button Enhancements */
308
+ .btn-refresh:not(:disabled):hover .bi-arrow-clockwise {
309
+ animation: mojo-spin 0.5s ease-in-out;
310
+ }
311
+
312
+ .btn-add:not(:disabled):hover {
313
+ transform: translateY(-1px);
314
+ box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.1);
315
+ }
316
+
317
+ .btn-export:not(:disabled):hover .bi-download,
318
+ .btn-import:not(:disabled):hover .bi-upload {
319
+ animation: mojo-bounce 0.5s ease-in-out;
320
+ }
321
+
322
+ /* ========================================================================
323
+ MOJO Collection Select Component
324
+ ======================================================================== */
325
+
326
+ .collection-select-view {
327
+ position: relative;
328
+ }
329
+
330
+ .collection-select-view .form-control.is-invalid {
331
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath d='m5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
332
+ background-repeat: no-repeat;
333
+ background-position: right calc(0.375em + 0.1875rem) center;
334
+ background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
335
+ }
336
+
337
+ /* Enhanced dropdown for collection select */
338
+ .collection-select-view .dropdown-item:has(.spinner-border) {
339
+ justify-content: center;
340
+ align-items: center;
341
+ min-height: 3rem;
342
+ }
343
+
344
+ .collection-select-view .dropdown-item:focus-visible {
345
+ outline: 2px solid var(--bs-primary);
346
+ outline-offset: -2px;
347
+ }
348
+
349
+ /* Custom scrollbar for collection dropdown */
350
+ .collection-select-view .dropdown-menu::-webkit-scrollbar {
351
+ width: 6px;
352
+ }
353
+
354
+ .collection-select-view .dropdown-menu::-webkit-scrollbar-track {
355
+ background: var(--bs-secondary-bg);
356
+ border-radius: var(--bs-border-radius-sm);
357
+ }
358
+
359
+ .collection-select-view .dropdown-menu::-webkit-scrollbar-thumb {
360
+ background: var(--bs-border-color);
361
+ border-radius: var(--bs-border-radius-sm);
362
+ }
363
+
364
+ .collection-select-view .dropdown-menu::-webkit-scrollbar-thumb:hover {
365
+ background: var(--bs-secondary);
366
+ }
367
+
368
+ /* Collection select clear button */
369
+ .collection-select-view .btn[data-action="clear-selection"] {
370
+ width: 1.5rem;
371
+ height: 1.5rem;
372
+ padding: 0;
373
+ display: flex;
374
+ align-items: center;
375
+ justify-content: center;
376
+ background: none;
377
+ border: none;
378
+ color: var(--bs-secondary);
379
+ transition: color 0.15s ease-in-out;
380
+ }
381
+
382
+ .collection-select-view .btn[data-action="clear-selection"]:hover {
383
+ color: var(--bs-danger);
384
+ }
385
+
386
+ .collection-select-view .btn[data-action="clear-selection"]:focus {
387
+ box-shadow: none;
388
+ outline: 2px solid var(--bs-primary);
389
+ outline-offset: 2px;
390
+ }
391
+
392
+ .collection-select-view .btn[data-action="clear-selection"] i {
393
+ font-size: 1rem;
394
+ }
395
+
396
+ /* Adjust input padding when clear button is present */
397
+ .collection-select-view .form-control.pe-5 {
398
+ padding-right: 2.5rem !important;
399
+ }
400
+
401
+ /* Dark theme styles for collection select */
402
+ /* ========================================================================
403
+ MOJO Table Utilities
404
+ ======================================================================== */
405
+
406
+ .text-truncate-2 {
407
+ display: -webkit-box;
408
+ -webkit-line-clamp: 2;
409
+ -webkit-box-orient: vertical;
410
+ overflow: hidden;
411
+ text-overflow: ellipsis;
412
+ }
413
+
414
+ .data-view-item .data-view-label {
415
+ font-size: 0.6rem;
416
+ }
417
+
418
+ /* Custom scrollbar for table container */
419
+ .table-container::-webkit-scrollbar {
420
+ height: 8px;
421
+ width: 8px;
422
+ }
423
+
424
+ .table-container::-webkit-scrollbar-track {
425
+ background: var(--bs-secondary-bg);
426
+ border-radius: var(--bs-border-radius-sm);
427
+ }
428
+
429
+ .table-container::-webkit-scrollbar-thumb {
430
+ background: var(--bs-border-color);
431
+ border-radius: var(--bs-border-radius-sm);
432
+ }
433
+
434
+ .table-container::-webkit-scrollbar-thumb:hover {
435
+ background: var(--bs-secondary-color);
436
+ }
437
+
438
+ /* ========================================================================
439
+ MOJO Table Animations
440
+ ======================================================================== */
441
+
442
+ @keyframes mojo-spin {
443
+ from {
444
+ transform: rotate(0deg);
445
+ }
446
+ to {
447
+ transform: rotate(360deg);
448
+ }
449
+ }
450
+
451
+ @keyframes mojo-pulse {
452
+ 0%,
453
+ 100% {
454
+ opacity: 1;
455
+ }
456
+ 50% {
457
+ opacity: 0.6;
458
+ }
459
+ }
460
+
461
+ @keyframes mojo-bounce {
462
+ 0%,
463
+ 100% {
464
+ transform: translateY(0);
465
+ }
466
+ 50% {
467
+ transform: translateY(-3px);
468
+ }
469
+ }
470
+
471
+ /* ========================================================================
472
+ Responsive Design
473
+ ======================================================================== */
474
+
475
+ @media (max-width: 768px) {
476
+ .table-page-header {
477
+ padding-bottom: 0.75rem;
478
+ margin-bottom: 1rem;
479
+ }
480
+
481
+ /* Batch actions panel top - responsive */
482
+ .batch-actions-panel-top {
483
+ padding: 0.75rem !important;
484
+ }
485
+
486
+ .batch-actions-panel-top .d-flex {
487
+ flex-direction: column;
488
+ gap: 0.75rem;
489
+ }
490
+
491
+ .batch-actions-panel-top .batch-select-count {
492
+ font-size: 1rem;
493
+ }
494
+
495
+ .page-title {
496
+ font-size: 1.5rem;
497
+ }
498
+
499
+ .page-description {
500
+ font-size: 0.9rem;
501
+ }
502
+
503
+ .table-status-bar {
504
+ padding: 0.5rem 0.75rem;
505
+ }
506
+
507
+ .status-info {
508
+ flex-direction: column;
509
+ align-items: flex-start;
510
+ gap: 0.5rem;
511
+ }
512
+
513
+ .collection-select-view .dropdown-menu {
514
+ max-height: 200px;
515
+ }
516
+
517
+ .collection-select-view .dropdown-item {
518
+ padding: 0.75rem 1rem;
519
+ font-size: 1rem;
520
+ }
521
+ }
522
+
523
+ @media (max-width: 576px) {
524
+ .table-container {
525
+ overflow-x: auto;
526
+ }
527
+
528
+ .page-title {
529
+ font-size: 1.25rem;
530
+ }
531
+
532
+ .loading-content {
533
+ padding: 1rem;
534
+ }
535
+
536
+ /* Batch actions panel top - mobile */
537
+ .batch-actions-panel-top button {
538
+ font-size: 0.875rem;
539
+ padding: 0.25rem 0.5rem;
540
+ }
541
+
542
+ .batch-actions-panel-top .btn-group {
543
+ flex-wrap: wrap;
544
+ }
545
+ }
546
+
547
+ /* ========================================================================
548
+ Dark Theme Support
549
+ ======================================================================== */
550
+
551
+ [data-bs-theme="dark"] .table-loading-overlay {
552
+ background: var(--bs-dark);
553
+ opacity: 0.9;
554
+ }
555
+
556
+ [data-bs-theme="dark"] .batch-actions-panel {
557
+ background-color: var(--bs-dark);
558
+ }
559
+
560
+ [data-bs-theme="dark"] .batch-actions-panel-top {
561
+ background-color: rgba(13, 110, 253, 0.1);
562
+ border-color: rgba(13, 110, 253, 0.3);
563
+ }
564
+
565
+ [data-bs-theme="dark"] .collection-select-view .dropdown-menu::-webkit-scrollbar-track {
566
+ background: var(--bs-secondary-bg);
567
+ }
568
+
569
+ [data-bs-theme="dark"] .collection-select-view .dropdown-menu::-webkit-scrollbar-thumb {
570
+ background: var(--bs-border-color);
571
+ }
572
+
573
+ [data-bs-theme="dark"] .collection-select-view .dropdown-menu::-webkit-scrollbar-thumb:hover {
574
+ background: var(--bs-secondary-color);
575
+ }
576
+
577
+ /* Dark theme clear button */
578
+ [data-bs-theme="dark"] .collection-select-view .btn[data-action="clear-selection"] {
579
+ color: var(--bs-secondary);
580
+ }
581
+
582
+ [data-bs-theme="dark"] .collection-select-view .btn[data-action="clear-selection"]:hover {
583
+ color: var(--bs-danger);
584
+ }
585
+
586
+ [data-bs-theme="dark"] .collection-select-view .btn[data-action="clear-selection"]:focus {
587
+ outline-color: var(--bs-primary);
588
+ }
589
+
590
+ [data-bs-theme="dark"] .table-container::-webkit-scrollbar-track {
591
+ background: var(--bs-secondary-bg);
592
+ }
593
+
594
+ [data-bs-theme="dark"] .table-container::-webkit-scrollbar-thumb {
595
+ background: var(--bs-border-color);
596
+ }
597
+
598
+ [data-bs-theme="dark"] .table-container::-webkit-scrollbar-thumb:hover {
599
+ background: var(--bs-secondary-color);
600
+ }
601
+
602
+ /* ========================================================================
603
+ Accessibility
604
+ ======================================================================== */
605
+
606
+ @media (prefers-contrast: high) {
607
+ .collection-select-view .dropdown-item.active {
608
+ background-color: var(--bs-emphasis-color);
609
+ color: var(--bs-body-bg);
610
+ }
611
+
612
+ .mojo-checkbox {
613
+ border-width: 2px;
614
+ }
615
+ }
616
+
617
+ @media (prefers-reduced-motion: reduce) {
618
+ .table-container,
619
+ .mojo-checkbox,
620
+ .batch-select-action,
621
+ .batch-actions-panel-top,
622
+ .batch-actions-panel-top button {
623
+ transition: none;
624
+ }
625
+
626
+ @keyframes slideDown {
627
+ from,
628
+ to {
629
+ opacity: 1;
630
+ transform: none;
631
+ }
632
+ }
633
+
634
+ .btn-refresh:not(:disabled):hover .bi-arrow-clockwise,
635
+ .btn-export:not(:disabled):hover .bi-download,
636
+ .btn-import:not(:disabled):hover .bi-upload {
637
+ animation: none;
638
+ }
639
+ }