@tsiky/components-r19 1.0.0 → 1.1.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 (32) hide show
  1. package/index.ts +35 -33
  2. package/package.json +1 -1
  3. package/src/components/Charts/area-chart-admission/AreaChartAdmission.tsx +123 -89
  4. package/src/components/Charts/bar-chart/BarChart.tsx +167 -132
  5. package/src/components/Charts/mixed-chart/MixedChart.tsx +65 -9
  6. package/src/components/Charts/sankey-chart/SankeyChart.tsx +183 -155
  7. package/src/components/Confirmationpopup/ConfirmationPopup.module.css +88 -0
  8. package/src/components/Confirmationpopup/ConfirmationPopup.stories.tsx +94 -0
  9. package/src/components/Confirmationpopup/ConfirmationPopup.tsx +47 -0
  10. package/src/components/Confirmationpopup/index.ts +6 -0
  11. package/src/components/Confirmationpopup/useConfirmationPopup.ts +48 -0
  12. package/src/components/DayStatCard/DayStatCard.tsx +96 -69
  13. package/src/components/DynamicTable/AdvancedFilters.tsx +196 -196
  14. package/src/components/DynamicTable/ColumnSorter.tsx +185 -185
  15. package/src/components/DynamicTable/Pagination.tsx +115 -115
  16. package/src/components/DynamicTable/TableauDynamique.module.css +1287 -1287
  17. package/src/components/DynamicTable/filters/SelectFilter.tsx +69 -69
  18. package/src/components/EntryControl/EntryControl.tsx +117 -117
  19. package/src/components/Grid/Grid.tsx +5 -0
  20. package/src/components/Header/Header.tsx +4 -2
  21. package/src/components/Header/header.css +61 -31
  22. package/src/components/MetricsPanel/MetricsPanel.module.css +688 -636
  23. package/src/components/MetricsPanel/MetricsPanel.tsx +220 -282
  24. package/src/components/MetricsPanel/renderers/CompactRenderer.tsx +148 -125
  25. package/src/components/NavBar/NavBar.tsx +1 -1
  26. package/src/components/SelectFilter/SelectFilter.module.css +249 -0
  27. package/src/components/SelectFilter/SelectFilter.stories.tsx +321 -0
  28. package/src/components/SelectFilter/SelectFilter.tsx +219 -0
  29. package/src/components/SelectFilter/index.ts +2 -0
  30. package/src/components/SelectFilter/types.ts +19 -0
  31. package/src/components/TranslationKey/TranslationKey.tsx +265 -245
  32. package/src/components/TrendList/TrendList.tsx +72 -45
@@ -1,1287 +1,1287 @@
1
- /* ================ GENERAL CONTAINER ================ */
2
- .container {
3
- --card-shadow: 0 8px 30px rgba(15, 23, 42, 0.06);
4
- --filters-panel-height: 0px;
5
- --control-gap: 8px;
6
- --small-font: 12px;
7
- --xsmall-font: 11px;
8
- --muted: #6b7280;
9
- --border: #e6e9ef;
10
- --accent: #2563eb;
11
- --primary: #2563eb;
12
- --bg-card: #ffffff;
13
- --row-accent-width: 2px;
14
- --row-accent-gap: 12px;
15
- --row-accent-radius: 2px;
16
- --controls-text-size: 13px;
17
- border-radius: 12px;
18
- padding: 12px;
19
- position: relative;
20
- color: #0f172a;
21
- background: transparent;
22
- box-sizing: border-box;
23
- overflow: visible;
24
- }
25
- .container.filters-open .tableWrapper {
26
- margin-top: calc(var(--filters-panel-height) + 12px);
27
- transition: margin-top 240ms cubic-bezier(0.2, 0.9, 0.3, 1);
28
- }
29
-
30
- /* ================ CONTROLS (RIGHT-ALIGNED) ================ */
31
- .tableControls {
32
- display: flex;
33
- gap: var(--control-gap);
34
- align-items: center;
35
- justify-content: flex-end;
36
- flex-wrap: wrap;
37
- margin-bottom: 12px;
38
- position: relative;
39
- z-index: 30;
40
- }
41
- .controlsRight {
42
- display: inline-flex;
43
- align-items: center;
44
- gap: 6px;
45
- }
46
- .tableControls > * {
47
- flex: 0 1 auto;
48
- min-width: 0;
49
- }
50
-
51
- /* ================ TABLE WRAPPER & BASE ================ */
52
- .tableWrapper {
53
- overflow-x: auto;
54
- border-radius: 10px;
55
- transition: margin-top 220ms cubic-bezier(0.2, 0.9, 0.3, 1);
56
- padding: 6px;
57
- box-sizing: border-box;
58
- background: transparent;
59
- }
60
- .table {
61
- width: 100%;
62
- border-collapse: separate;
63
- border-spacing: 0;
64
- min-width: 640px;
65
- table-layout: auto;
66
- font-feature-settings:
67
- 'tnum' on,
68
- 'ss01' on;
69
- background: transparent;
70
- }
71
-
72
- .table thead {
73
- position: sticky;
74
- top: 0;
75
- z-index: 20;
76
- backdrop-filter: blur(4px);
77
- box-shadow: 0 2px 8px rgba(2, 6, 23, 0.04);
78
- }
79
- .headerCell {
80
- padding: 12px 14px;
81
- cursor: pointer;
82
- text-align: left;
83
- letter-spacing: 0.2px;
84
- white-space: nowrap;
85
- font-size: 13px;
86
- font-weight: 600;
87
- vertical-align: middle;
88
- }
89
- .headerContent {
90
- font-size: 13px;
91
- font-weight: 900;
92
- }
93
- .table tbody td {
94
- padding: 10px 14px;
95
- background: transparent;
96
- vertical-align: middle;
97
- font-size: 13px;
98
- min-width: 0;
99
- overflow: hidden;
100
- text-overflow: ellipsis;
101
- white-space: nowrap;
102
- }
103
- .tableRow {
104
- transition:
105
- transform 0.12s ease,
106
- box-shadow 0.12s ease;
107
- }
108
- .tableRow:hover {
109
- transform: translateY(-2px);
110
- box-shadow: 0 10px 20px rgba(2, 6, 23, 0.04);
111
- }
112
-
113
- /* ================ COMPACT VARIANT ================ */
114
- .container.compactTable .headerCell {
115
- padding: 8px 10px;
116
- font-size: 12px;
117
- }
118
- .container.compactTable .table tbody td {
119
- padding: 8px 10px;
120
- font-size: 12px;
121
- }
122
-
123
- /* ================ CARD ROWS ALTERNATIVE FOR XS ================ */
124
- .container.cardRows .table {
125
- display: block;
126
- min-width: 100%;
127
- }
128
- .container.cardRows .table thead {
129
- display: none;
130
- }
131
- .container.cardRows .table tbody {
132
- display: block;
133
- }
134
- .container.cardRows .table tbody tr {
135
- display: block;
136
- margin: 10px 0;
137
- border-radius: 10px;
138
- background: var(--bg-card);
139
- box-shadow: var(--card-shadow);
140
- padding: 10px;
141
- }
142
- .container.cardRows .table tbody td {
143
- display: flex;
144
- justify-content: space-between;
145
- padding: 8px 10px;
146
- white-space: normal;
147
- overflow: visible;
148
- }
149
-
150
- /* ================ SORT & FILTER BUTTONS ================ */
151
- .toggleFiltersButton,
152
- .toggleSortButton {
153
- display: inline-flex;
154
- align-items: center;
155
- gap: 8px;
156
- padding: 8px 12px;
157
- border: 1px solid #e5e7eb;
158
- border-radius: 999px;
159
- font-size: var(--small-font);
160
- font-weight: 600;
161
- cursor: pointer;
162
- transition: all 0.12s ease-in-out;
163
- box-shadow: 0 1px 3px rgba(15, 23, 42, 0.03);
164
- background: #fff;
165
- touch-action: manipulation;
166
- }
167
- .toggleFiltersButton:hover,
168
- .toggleSortButton:hover {
169
- transform: translateY(-1px);
170
- background: #f3f7ff;
171
- }
172
- .buttonTextCompact {
173
- font-size: var(--small-font);
174
- line-height: 1;
175
- }
176
- .countCompact,
177
- .resultCountCompact {
178
- font-size: var(--xsmall-font);
179
- color: var(--muted);
180
- }
181
- .clearFiltersButton {
182
- display: inline-flex;
183
- align-items: center;
184
- gap: 6px;
185
- background: #fff;
186
- border: 1px solid var(--border);
187
- border-radius: 999px;
188
- padding: 6px 10px;
189
- cursor: pointer;
190
- font-size: var(--xsmall-font);
191
- }
192
-
193
- /* ---------- NOUVELLES RÈGLES POUR LES LABELS DE TRI ---------- */
194
- .sortItemLabel {
195
- font-size: 13px;
196
- font-weight: 600;
197
- color: #111827;
198
- white-space: nowrap;
199
- overflow: hidden;
200
- text-overflow: ellipsis;
201
- max-width: 220px;
202
- display: inline-block;
203
- text-transform: none;
204
- line-height: 1;
205
- }
206
-
207
- .uppercaseSmall {
208
- font-size: 11px;
209
- letter-spacing: 0.4px;
210
- font-weight: 700;
211
- line-height: 1;
212
- }
213
-
214
- @media (max-width: 420px) {
215
- .uppercaseSmall {
216
- font-size: 10px;
217
- }
218
- }
219
-
220
- /* ================ FILTERS PANEL ================ */
221
- .filtersPanel {
222
- position: absolute;
223
- top: calc(100% + 8px);
224
- right: 0;
225
- z-index: 1000;
226
- width: min(680px, 94vw);
227
- background: var(--bg-card);
228
- border-radius: 12px;
229
- padding: 14px;
230
- box-shadow: 0 18px 40px rgba(15, 23, 42, 0.12);
231
- border: 1px solid rgba(15, 23, 42, 0.06);
232
- transition:
233
- transform 220ms ease,
234
- opacity 220ms ease;
235
- max-height: 72vh;
236
- overflow: auto;
237
- }
238
- .filtersPanelInline {
239
- position: absolute;
240
- top: 100%;
241
- left: 0;
242
- right: 0;
243
- width: 100%;
244
- margin-top: 10px;
245
- border-radius: 8px;
246
- padding: 12px;
247
- }
248
- .filtersPanelHorizontal .filtersRow {
249
- display: flex;
250
- gap: 12px;
251
- flex-wrap: wrap;
252
- align-items: flex-start;
253
- }
254
-
255
- @media (max-width: 680px) {
256
- .filtersPanel {
257
- position: fixed;
258
- left: 0;
259
- right: 0;
260
- bottom: 0;
261
- top: auto;
262
- width: 100%;
263
- max-height: 78vh;
264
- border-radius: 12px 12px 0 0;
265
- padding: 12px;
266
- box-shadow: 0 -12px 40px rgba(2, 6, 23, 0.18);
267
- border: none;
268
- overflow: auto;
269
- }
270
- .filtersPanel::before {
271
- content: '';
272
- display: block;
273
- width: 48px;
274
- height: 4px;
275
- border-radius: 999px;
276
- margin: 6px auto 8px;
277
- background: rgba(2, 6, 23, 0.06);
278
- }
279
- .filtersActionsHorizontal {
280
- position: sticky;
281
- bottom: 0;
282
- background: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1));
283
- padding-top: 10px;
284
- margin-top: 8px;
285
- }
286
- }
287
-
288
- /* ================ FILTER ITEMS LAYOUT ================ */
289
- .filtersRow {
290
- display: flex;
291
- flex-wrap: wrap;
292
- gap: 10px;
293
- align-items: flex-start;
294
- padding-bottom: 8px;
295
- }
296
- .filterItemInline {
297
- display: flex;
298
- flex-direction: column;
299
- gap: 6px;
300
- min-width: 180px;
301
- max-width: 320px;
302
- padding: 10px;
303
- border-radius: 10px;
304
- border: 1px solid rgba(15, 23, 42, 0.04);
305
- box-sizing: border-box;
306
- background: #fff;
307
- }
308
- @media (max-width: 980px) {
309
- .filterItemInline {
310
- min-width: 140px;
311
- max-width: 48%;
312
- }
313
- }
314
- @media (max-width: 540px) {
315
- .filterItemInline {
316
- min-width: 100%;
317
- max-width: 100%;
318
- padding: 10px;
319
- border-radius: 8px;
320
- }
321
- }
322
- .filterLabel {
323
- font-size: var(--xsmall-font);
324
- font-weight: 600;
325
- color: #111827;
326
- }
327
- .filterInput,
328
- .filterSelect,
329
- .operatorSelect,
330
- .operatorInput {
331
- font-size: 13px;
332
- padding: 8px 10px;
333
- border: 1px solid var(--border);
334
- border-radius: 8px;
335
- width: 100%;
336
- box-sizing: border-box;
337
- }
338
-
339
- .activeFilters {
340
- display: flex;
341
- gap: 8px;
342
- flex-wrap: wrap;
343
- align-items: center;
344
- }
345
- .activeFilterTag {
346
- display: flex;
347
- align-items: center;
348
- gap: 8px;
349
- font-size: 12px;
350
- font-weight: 600;
351
- color: #374151;
352
- background: #f1f5f9;
353
- border-radius: 18px;
354
- padding: 6px 10px;
355
- border: 1px solid #e6eef6;
356
- }
357
-
358
- .actionsGroup {
359
- display: flex;
360
- gap: 8px;
361
- align-items: center;
362
- }
363
- .applyButton {
364
- background: #008fbb;
365
- color: #fff;
366
- border: none;
367
- padding: 10px 14px;
368
- border-radius: 10px;
369
- font-weight: 700;
370
- cursor: pointer;
371
- font-size: 13px;
372
- }
373
- .cancelButton {
374
- background: #fff;
375
- color: #374151;
376
- border: 1px solid var(--border);
377
- padding: 10px 14px;
378
- border-radius: 10px;
379
- cursor: pointer;
380
- font-size: var(--xsmall-font);
381
- font-weight: 600;
382
- }
383
-
384
- @media (max-width: 680px) {
385
- .filtersActionsHorizontal {
386
- display: flex;
387
- gap: 12px;
388
- flex-direction: column-reverse;
389
- }
390
- .applyButton,
391
- .cancelButton {
392
- width: 100%;
393
- }
394
- }
395
-
396
- /* ================ COLUMN SORTER DROPDOWN ================ */
397
- .columnSorterContainer {
398
- position: relative;
399
- display: inline-block;
400
- }
401
- .sorterControls {
402
- display: flex;
403
- align-items: center;
404
- }
405
- .sortDropdownWrapper {
406
- position: relative;
407
- }
408
- .sortDropdown {
409
- position: absolute;
410
- top: calc(100% + 8px);
411
- right: 0;
412
- left: auto;
413
- background: #fff;
414
- border: 1px solid rgba(15, 23, 42, 0.08);
415
- border-radius: 10px;
416
- padding: 0;
417
- min-width: 220px;
418
- box-shadow: 0 8px 26px rgba(15, 23, 42, 0.08);
419
- z-index: 300;
420
- display: flex;
421
- flex-direction: column;
422
- }
423
-
424
- .sortDropdownHeader {
425
- display: flex;
426
- justify-content: space-between;
427
- align-items: center;
428
- padding: 12px 16px;
429
- font-weight: 700;
430
- font-size: var(--xsmall-font);
431
- color: #374151;
432
- }
433
-
434
- .closeButton {
435
- background: none;
436
- border: none;
437
- cursor: pointer;
438
- padding: 4px;
439
- border-radius: 4px;
440
- display: flex;
441
- align-items: center;
442
- justify-content: center;
443
- }
444
-
445
- .closeButton:hover {
446
- background: #f3f4f6;
447
- }
448
-
449
- .sortDropdownContent {
450
- max-height: 300px;
451
- overflow-y: auto;
452
- padding: 8px;
453
- }
454
-
455
- .sortDropdownItem {
456
- display: flex;
457
- align-items: center;
458
- gap: 12px;
459
- justify-content: space-between;
460
- padding: 10px;
461
- border-radius: 8px;
462
- transition: background 0.12s;
463
- margin-bottom: 4px;
464
- box-sizing: border-box;
465
- }
466
-
467
- .sortDropdownItem .sortItemLabel {
468
- flex: 1 1 auto;
469
- min-width: 0;
470
- white-space: nowrap;
471
- overflow: hidden;
472
- text-overflow: ellipsis;
473
- display: block;
474
- line-height: 1;
475
- font-size: 13px;
476
- font-weight: 400;
477
- color: #111827;
478
- max-width: 100%;
479
- }
480
-
481
- .sortDropdownItem .sortDirectionButtons {
482
- flex: 0 0 auto;
483
- display: flex;
484
- gap: 8px;
485
- margin-left: 12px;
486
- }
487
-
488
- @media (max-width: 480px) {
489
- .sortDropdownItem {
490
- padding: 8px;
491
- }
492
- .sortDropdownItem .sortItemLabel {
493
- font-size: 12px;
494
- }
495
- .sortDropdownItem .sortDirectionButtons {
496
- gap: 6px;
497
- }
498
- }
499
-
500
- .sortDropdownItem:hover {
501
- background: #f8fafc;
502
- }
503
-
504
- .sortItemLabel {
505
- font-size: 13px;
506
- font-weight: 600;
507
- color: #111827;
508
- white-space: nowrap;
509
- overflow: hidden;
510
- text-overflow: ellipsis;
511
- max-width: 160px;
512
- }
513
-
514
- .sortDirectionButtons {
515
- display: flex;
516
- gap: 6px;
517
- }
518
-
519
- .sortDirectionButton {
520
- display: inline-flex;
521
- align-items: center;
522
- justify-content: center;
523
- width: 32px;
524
- height: 32px;
525
- border-radius: 8px;
526
- border: 1px solid #e5e7eb;
527
- background: #fff;
528
- cursor: pointer;
529
- transition: all 0.12s;
530
- }
531
-
532
- .sortDirectionButton:hover {
533
- transform: translateY(-1px);
534
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
535
- }
536
-
537
- .activeSort {
538
- background: var(--primary);
539
- color: #fff;
540
- border-color: var(--primary);
541
- box-shadow: 0 4px 6px rgba(37, 99, 235, 0.2);
542
- }
543
-
544
- .sortActions {
545
- padding: 12px 16px;
546
- border-top: 1px solid #e5e7eb;
547
- display: flex;
548
- justify-content: flex-end;
549
- }
550
-
551
- @media (max-width: 680px) {
552
- .sortDropdown {
553
- position: fixed;
554
- left: 0;
555
- right: 0;
556
- top: auto;
557
- bottom: 0;
558
- min-width: auto;
559
- width: 100%;
560
- border-radius: 16px 16px 0 0;
561
- padding: 0;
562
- box-shadow: 0 -10px 30px rgba(2, 6, 23, 0.2);
563
- max-height: 70vh;
564
- animation: slideUp 0.3s ease-out;
565
- }
566
-
567
- .sortDropdown::before {
568
- content: '';
569
- display: block;
570
- width: 40px;
571
- height: 4px;
572
- border-radius: 999px;
573
- margin: 12px auto;
574
- background: rgba(2, 6, 23, 0.1);
575
- position: absolute;
576
- top: 0;
577
- left: 50%;
578
- transform: translateX(-50%);
579
- }
580
-
581
- .sortDropdownHeader {
582
- padding-top: 24px;
583
- }
584
-
585
- .sortDropdownContent {
586
- max-height: calc(70vh - 130px);
587
- }
588
-
589
- @keyframes slideUp {
590
- from {
591
- transform: translateY(100%);
592
- }
593
- to {
594
- transform: translateY(0);
595
- }
596
- }
597
- }
598
-
599
- @media (max-width: 480px) {
600
- .sortItemLabel {
601
- max-width: 120px;
602
- font-size: 12px;
603
- }
604
-
605
- .sortDirectionButton {
606
- width: 28px;
607
- height: 28px;
608
- }
609
-
610
- .sortDirectionButton svg {
611
- width: 12px;
612
- height: 12px;
613
- }
614
- }
615
- .sortDropdownHeader {
616
- font-weight: 700;
617
- font-size: var(--xsmall-font);
618
- color: #374151;
619
- margin-bottom: 8px;
620
- }
621
- .sortDropdownItem {
622
- display: flex;
623
- align-items: center;
624
- justify-content: space-between;
625
- padding: 8px;
626
- border-radius: 8px;
627
- transition: background 0.12s;
628
- }
629
- .sortDropdownItem:hover {
630
- background: #f8fafc;
631
- }
632
- .sortDirectionButtons {
633
- display: flex;
634
- gap: 8px;
635
- }
636
- .sortDirectionButton {
637
- display: inline-flex;
638
- align-items: center;
639
- justify-content: center;
640
- width: 34px;
641
- height: 34px;
642
- border-radius: 8px;
643
- border: 1px solid #e5e7eb;
644
- background: #fff;
645
- cursor: pointer;
646
- transition: all 0.12s;
647
- }
648
- .sortDirectionButton:hover {
649
- transform: translateY(-2px);
650
- }
651
- .activeSort {
652
- background: var(--primary);
653
- color: #fff;
654
- border-color: var(--primary);
655
- box-shadow: 0 6px 18px rgba(37, 99, 235, 0.12);
656
- }
657
-
658
- /* ================ FOCUS & ACCESSIBILITY ================ */
659
- .toggleFiltersButton:focus,
660
- .toggleSortButton:focus,
661
- .applyButton:focus,
662
- .cancelButton:focus,
663
- .paginationButton:focus,
664
- .sortDirectionButton:focus,
665
- .pageSizeSelect:focus,
666
- .filterInput:focus,
667
- .operatorInput:focus {
668
- outline: none;
669
- box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.12);
670
- border-color: var(--accent);
671
- }
672
-
673
- /* ================ PAGINATION ================ */
674
- .topPagination {
675
- margin: 12px 0;
676
- display: flex;
677
- justify-content: center;
678
- width: 100%;
679
- box-sizing: border-box;
680
- }
681
- .paginationContainer {
682
- display: flex;
683
- align-items: center;
684
- justify-content: space-between;
685
- gap: 12px;
686
- width: 100%;
687
- box-sizing: border-box;
688
- padding: 8px;
689
- border-radius: 10px;
690
- border: 1px solid rgba(15, 23, 42, 0.04);
691
- }
692
- .leftGroup {
693
- display: flex;
694
- align-items: center;
695
- gap: 10px;
696
- min-width: 150px;
697
- flex: 0 0 auto;
698
- }
699
- .pageSizeControls {
700
- display: flex;
701
- gap: 8px;
702
- align-items: center;
703
- }
704
- .pageSizeLabel {
705
- font-weight: 600;
706
- color: var(--muted);
707
- font-size: 13px;
708
- }
709
- .pageSizeSelect {
710
- border: 1px solid var(--border);
711
- border-radius: 8px;
712
- padding: 8px 10px;
713
- min-width: 64px;
714
- font-size: 13px;
715
- }
716
- .pageSizeSuffix {
717
- color: var(--muted);
718
- font-size: 13px;
719
- }
720
- .paginationInfo {
721
- text-align: center;
722
- color: var(--muted);
723
- flex: 1 1 auto;
724
- font-size: 13px;
725
- min-width: 120px;
726
- }
727
- .paginationControls {
728
- display: flex;
729
- align-items: center;
730
- gap: 8px;
731
- justify-content: flex-end;
732
- min-width: 140px;
733
- overflow-x: auto;
734
- -webkit-overflow-scrolling: touch;
735
- padding-bottom: 2px;
736
- }
737
- .paginationButton {
738
- min-width: 40px;
739
- height: 40px;
740
- display: inline-flex;
741
- align-items: center;
742
- justify-content: center;
743
- border-radius: 10px;
744
- border: 1px solid var(--border);
745
- font-size: 14px;
746
- cursor: pointer;
747
- transition: all 0.12s;
748
- padding: 0 12px;
749
- box-shadow: 0 1px 4px rgba(16, 24, 40, 0.03);
750
- background: transparent;
751
- color: var(--muted);
752
- }
753
- .paginationButton:hover:not(.disabledButton) {
754
- transform: translateY(-3px);
755
- box-shadow: 0 8px 20px rgba(2, 6, 23, 0.06);
756
- }
757
- .activeButton {
758
- background: var(--color-primary);
759
- color: #fff;
760
- font-weight: 700;
761
- }
762
- .disabledButton {
763
- opacity: 0.45;
764
- cursor: not-allowed;
765
- }
766
- .navigationButton:hover:not(.disabledButton) {
767
- background: #fff;
768
- }
769
-
770
- .navigationButton {
771
- background: var(--color-content-background);
772
- }
773
-
774
- .disabledButton {
775
- opacity: 0.5;
776
- cursor: not-allowed;
777
- }
778
- @media (max-width: 540px) {
779
- .paginationContainer {
780
- flex-direction: column;
781
- align-items: stretch;
782
- gap: 10px;
783
- padding: 10px;
784
- }
785
- .leftGroup,
786
- .paginationControls {
787
- justify-content: center;
788
- width: 100%;
789
- }
790
- .pageSizeSelect {
791
- min-width: 56px;
792
- padding: 6px 8px;
793
- }
794
- .paginationButton {
795
- min-width: 36px;
796
- height: 36px;
797
- border-radius: 8px;
798
- font-size: 13px;
799
- padding: 0 8px;
800
- }
801
- .pageSizeLabel,
802
- .paginationInfo {
803
- font-size: 12px;
804
- }
805
- }
806
- @media (max-width: 380px) {
807
- .table {
808
- min-width: 520px;
809
- font-size: 12px;
810
- }
811
- }
812
-
813
- /* ================ HELPERS ================ */
814
- .operatorFilterContainer {
815
- display: flex;
816
- align-items: center;
817
- gap: 6px;
818
- font-weight: 700;
819
- }
820
- .rangeSeparator {
821
- font-weight: 600;
822
- color: var(--muted);
823
- }
824
-
825
- /* ================ NOUVELLES AMÉLIORATIONS RESPONSIVE ================ */
826
- @media (max-width: 480px) {
827
- .container {
828
- padding: 8px;
829
- }
830
-
831
- .tableControls {
832
- justify-content: space-between;
833
- margin-bottom: 8px;
834
- }
835
-
836
- .controlsRight {
837
- flex-wrap: wrap;
838
- justify-content: flex-end;
839
- gap: 4px;
840
- }
841
-
842
- .toggleFiltersButton,
843
- .toggleSortButton {
844
- padding: 6px 10px;
845
- font-size: 11px;
846
- }
847
-
848
- .toggleFiltersButton svg,
849
- .toggleSortButton svg {
850
- width: 12px;
851
- height: 12px;
852
- }
853
-
854
- .buttonTextCompact {
855
- font-size: 11px;
856
- }
857
-
858
- .clearFiltersButton {
859
- padding: 4px 8px;
860
- font-size: 10px;
861
- }
862
-
863
- .clearFiltersButton svg {
864
- width: 12px;
865
- height: 12px;
866
- }
867
-
868
- .filtersPanel {
869
- padding: 10px;
870
- }
871
-
872
- .filterItemInline {
873
- padding: 8px;
874
- }
875
-
876
- .filterLabel {
877
- font-size: 10px;
878
- }
879
-
880
- .filterInput,
881
- .filterSelect,
882
- .operatorSelect,
883
- .operatorInput {
884
- font-size: 12px;
885
- padding: 6px 8px;
886
- }
887
-
888
- .activeFilterTag {
889
- font-size: 11px;
890
- padding: 4px 8px;
891
- }
892
-
893
- .applyButton,
894
- .cancelButton {
895
- padding: 8px 12px;
896
- font-size: 12px;
897
- }
898
-
899
- .sortDropdown {
900
- padding: 8px;
901
- }
902
-
903
- .sortDropdownHeader {
904
- font-size: 10px;
905
- }
906
-
907
- .sortItemLabel {
908
- font-size: 12px;
909
- max-width: 160px;
910
- }
911
-
912
- .sortDirectionButton {
913
- width: 28px;
914
- height: 28px;
915
- }
916
-
917
- .sortDirectionButton svg {
918
- width: 10px;
919
- height: 10px;
920
- }
921
-
922
- .paginationContainer {
923
- padding: 6px;
924
- }
925
-
926
- .pageSizeLabel,
927
- .pageSizeSuffix,
928
- .paginationInfo {
929
- font-size: 11px;
930
- }
931
-
932
- .pageSizeSelect {
933
- padding: 6px 8px;
934
- font-size: 11px;
935
- }
936
-
937
- .paginationButton {
938
- min-width: 32px;
939
- height: 32px;
940
- font-size: 12px;
941
- padding: 0 8px;
942
- }
943
- }
944
-
945
- @media (max-width: 360px) {
946
- .controlsRight {
947
- width: 100%;
948
- justify-content: space-between;
949
- margin-top: 8px;
950
- }
951
-
952
- .toggleFiltersButton,
953
- .toggleSortButton {
954
- flex: 1;
955
- min-width: 0;
956
- justify-content: center;
957
- }
958
-
959
- .clearFiltersButton {
960
- position: absolute;
961
- top: -30px;
962
- right: 0;
963
- }
964
- }
965
-
966
- @media (max-width: 680px) {
967
- .filtersPanel::after {
968
- content: '';
969
- position: fixed;
970
- top: 0;
971
- left: 0;
972
- right: 0;
973
- height: 12px;
974
- background: linear-gradient(to bottom, rgba(0, 0, 0, 0.1), transparent);
975
- opacity: 0.1;
976
- pointer-events: none;
977
- }
978
-
979
- .filtersRow {
980
- max-height: 60vh;
981
- overflow-y: auto;
982
- padding-right: 4px;
983
- }
984
-
985
- .filtersRow::-webkit-scrollbar {
986
- width: 4px;
987
- }
988
-
989
- .filtersRow::-webkit-scrollbar-track {
990
- background: #f1f1f1;
991
- border-radius: 10px;
992
- }
993
-
994
- .filtersRow::-webkit-scrollbar-thumb {
995
- background: #c1c1c1;
996
- border-radius: 10px;
997
- }
998
- }
999
-
1000
- @media (max-height: 480px) and (orientation: landscape) {
1001
- .filtersPanel {
1002
- max-height: 60vh;
1003
- }
1004
-
1005
- .filtersRow {
1006
- max-height: 45vh;
1007
- }
1008
- }
1009
-
1010
- .tableRow td:first-child {
1011
- position: relative;
1012
- padding-left: calc(var(--row-accent-gap) + 1px);
1013
- }
1014
-
1015
- .tableRow td:first-child::before {
1016
- content: '';
1017
- position: absolute;
1018
- left: 0px;
1019
- top: 0px;
1020
- bottom: 0px;
1021
- width: var(--row-accent-width);
1022
- border-radius: var(--row-accent-radius);
1023
- background: var(--row-accent, transparent);
1024
- transform-origin: center;
1025
- transform: scaleY(0.75);
1026
- opacity: 0;
1027
- transition:
1028
- opacity 140ms ease,
1029
- transform 140ms ease,
1030
- box-shadow 140ms ease;
1031
- box-shadow: 0 2px 6px rgba(2, 6, 23, 0.06);
1032
- pointer-events: none;
1033
- }
1034
-
1035
- .tableRow:hover td:first-child::before {
1036
- opacity: 1;
1037
- transform: scaleY(1);
1038
- }
1039
-
1040
- .tableRow.activeRow td:first-child::before,
1041
- .tableRow:focus-within td:first-child::before {
1042
- opacity: 1;
1043
- transform: scaleY(1);
1044
- }
1045
-
1046
- .tableRow td:first-child::before[style*='transparent'] {
1047
- opacity: 0;
1048
- }
1049
-
1050
- .container.cardRows .table tbody tr td:first-child::before {
1051
- display: none;
1052
- }
1053
-
1054
- @media (max-width: 480px) {
1055
- .tableControls {
1056
- justify-content: center !important;
1057
- }
1058
-
1059
- .controlsRight {
1060
- justify-content: center !important;
1061
- width: auto;
1062
- gap: 8px;
1063
- }
1064
-
1065
- .toggleFiltersButton,
1066
- .toggleSortButton {
1067
- flex: 0 0 auto !important;
1068
- min-width: 0;
1069
- margin: 0 6px;
1070
- }
1071
-
1072
- .clearFiltersButton {
1073
- position: static;
1074
- top: auto;
1075
- right: auto;
1076
- margin-left: 6px;
1077
- }
1078
- }
1079
-
1080
- @media (max-width: 360px) {
1081
- .tableControls {
1082
- justify-content: center !important;
1083
- padding-left: 6px;
1084
- padding-right: 6px;
1085
- }
1086
-
1087
- .controlsRight {
1088
- width: 100%;
1089
- justify-content: center !important;
1090
- gap: 6px;
1091
- }
1092
-
1093
- .toggleFiltersButton,
1094
- .toggleSortButton {
1095
- flex: 0 0 auto !important;
1096
- padding: 6px 10px;
1097
- font-size: 11px;
1098
- }
1099
-
1100
- .clearFiltersButton {
1101
- position: static;
1102
- margin-top: 6px;
1103
- }
1104
- }
1105
-
1106
- .pageSizeSelect {
1107
- background-color: var(--color-content-background);
1108
- color: var(--color-text);
1109
- border: 1px solid var(--color-border);
1110
- padding: 6px 10px;
1111
- border-radius: 6px;
1112
- appearance: none;
1113
- -webkit-appearance: none;
1114
- -moz-appearance: none;
1115
- background-repeat: no-repeat;
1116
- background-position: right 8px center;
1117
- background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6'><path d='M0 0l5 6 5-6' fill='none' stroke='%23000' stroke-width='1.2'/></svg>");
1118
- }
1119
-
1120
- .pageSizeSelect option {
1121
- background-color: var(--color-content-background);
1122
- color: var(--color-text);
1123
- }
1124
-
1125
- .container {
1126
- --controls-text-size: 13px;
1127
- }
1128
- .paginationButton {
1129
- transition:
1130
- background 0.14s,
1131
- transform 0.12s,
1132
- box-shadow 0.12s;
1133
- }
1134
-
1135
- .paginationButton:hover:not(.disabledButton) {
1136
- transform: translateY(-1px);
1137
- box-shadow: 0 10px 22px rgba(2, 6, 23, 0.12);
1138
- }
1139
-
1140
- .table thead,
1141
- .headerCell {
1142
- font-weight: 400 !important;
1143
- }
1144
-
1145
- .table tbody td {
1146
- font-weight: 400 !important;
1147
- }
1148
-
1149
- .tableRow,
1150
- .tableRow td,
1151
- .headerCell,
1152
- .pageSizeLabel,
1153
- .pageSizeSuffix,
1154
- .paginationInfo {
1155
- font-weight: 400 !important;
1156
- }
1157
-
1158
- .toggleSortButton,
1159
- .toggleFiltersButton,
1160
- .buttonTextCompact {
1161
- font-size: var(--controls-text-size);
1162
- font-weight: 400;
1163
- }
1164
-
1165
- .sortDropdownHeader,
1166
- .sortItemLabel,
1167
- .sortDropdownHeader span {
1168
- font-size: var(--controls-text-size);
1169
- font-weight: 400;
1170
- color: #374151;
1171
- }
1172
-
1173
- .sortItemLabel {
1174
- white-space: nowrap;
1175
- overflow: hidden;
1176
- text-overflow: ellipsis;
1177
- max-width: 220px;
1178
- display: inline-block;
1179
- vertical-align: middle;
1180
- }
1181
-
1182
- .closeButton {
1183
- font-weight: 400;
1184
- }
1185
-
1186
- .filterLabel,
1187
- .buttonTextCompact,
1188
- .countCompact,
1189
- .resultCountCompact,
1190
- .activeLabelCompact {
1191
- font-size: var(--controls-text-size);
1192
- font-weight: 400;
1193
- }
1194
-
1195
- .filtersPanel,
1196
- .filtersRow,
1197
- .filterItemInline,
1198
- .filterInput,
1199
- .filterSelect,
1200
- .operatorSelect,
1201
- .operatorInput,
1202
- .activeFilterTag {
1203
- font-size: var(--controls-text-size);
1204
- }
1205
-
1206
- .activeFilterTag {
1207
- font-weight: 400;
1208
- }
1209
-
1210
- .applyButton,
1211
- .cancelButton {
1212
- font-size: var(--controls-text-size);
1213
- font-weight: 400;
1214
- }
1215
-
1216
- .uppercaseSmall,
1217
- .sortDropdownHeader,
1218
- .operatorFilterContainer,
1219
- .rangeSeparator,
1220
- .pageSizeLabel {
1221
- font-weight: 400 !important;
1222
- }
1223
-
1224
- @media (max-width: 480px) {
1225
- .toggleFiltersButton,
1226
- .toggleSortButton,
1227
- .buttonTextCompact,
1228
- .filterLabel,
1229
- .sortItemLabel {
1230
- font-size: 12px;
1231
- }
1232
-
1233
- .headerCell {
1234
- max-width: 140px;
1235
- }
1236
-
1237
- .sortItemLabel {
1238
- max-width: 120px;
1239
- }
1240
- }
1241
-
1242
- .sortDropdownItem {
1243
- min-width: 0;
1244
- font-size: var(--small-font);
1245
- font-weight: 400;
1246
- }
1247
-
1248
- .sortDropdownHeader,
1249
- .sortItemLabel,
1250
- .sortDropdownItem .sortItemLabel {
1251
- font-size: var(--small-font);
1252
- font-weight: 400;
1253
- }
1254
-
1255
- .columnSorterLabel {
1256
- display: block;
1257
- flex: 1 1 0;
1258
- min-width: 0;
1259
- white-space: nowrap;
1260
- overflow: hidden;
1261
- text-overflow: ellipsis;
1262
- max-width: 180px;
1263
- line-height: 1;
1264
- font-size: var(--xsmall-font);
1265
- font-weight: 600;
1266
- text-transform: none;
1267
- }
1268
-
1269
- .uppercaseSmall {
1270
- font-size: var(--xsmall-font);
1271
- font-weight: 400;
1272
- letter-spacing: 0.4px;
1273
- text-transform: uppercase;
1274
- line-height: 1;
1275
- }
1276
-
1277
- @media (max-width: 480px) {
1278
- .columnSorterLabel {
1279
- max-width: 120px;
1280
- }
1281
- .sortDropdownHeader,
1282
- .sortItemLabel,
1283
- .uppercaseSmall {
1284
- font-size: var(--xsmall-font);
1285
- font-weight: 400;
1286
- }
1287
- }
1
+ /* ================ GENERAL CONTAINER ================ */
2
+ .container {
3
+ --card-shadow: 0 8px 30px rgba(15, 23, 42, 0.06);
4
+ --filters-panel-height: 0px;
5
+ --control-gap: 8px;
6
+ --small-font: 12px;
7
+ --xsmall-font: 11px;
8
+ --muted: #6b7280;
9
+ --border: #e6e9ef;
10
+ --accent: #2563eb;
11
+ --primary: #2563eb;
12
+ --bg-card: #ffffff;
13
+ --row-accent-width: 2px;
14
+ --row-accent-gap: 12px;
15
+ --row-accent-radius: 2px;
16
+ --controls-text-size: 13px;
17
+ border-radius: 12px;
18
+ padding: 12px;
19
+ position: relative;
20
+ color: #0f172a;
21
+ background: transparent;
22
+ box-sizing: border-box;
23
+ overflow: visible;
24
+ }
25
+ .container.filters-open .tableWrapper {
26
+ margin-top: calc(var(--filters-panel-height) + 12px);
27
+ transition: margin-top 240ms cubic-bezier(0.2, 0.9, 0.3, 1);
28
+ }
29
+
30
+ /* ================ CONTROLS (RIGHT-ALIGNED) ================ */
31
+ .tableControls {
32
+ display: flex;
33
+ gap: var(--control-gap);
34
+ align-items: center;
35
+ justify-content: flex-end;
36
+ flex-wrap: wrap;
37
+ margin-bottom: 12px;
38
+ position: relative;
39
+ z-index: 30;
40
+ }
41
+ .controlsRight {
42
+ display: inline-flex;
43
+ align-items: center;
44
+ gap: 6px;
45
+ }
46
+ .tableControls > * {
47
+ flex: 0 1 auto;
48
+ min-width: 0;
49
+ }
50
+
51
+ /* ================ TABLE WRAPPER & BASE ================ */
52
+ .tableWrapper {
53
+ overflow-x: auto;
54
+ border-radius: 10px;
55
+ transition: margin-top 220ms cubic-bezier(0.2, 0.9, 0.3, 1);
56
+ padding: 6px;
57
+ box-sizing: border-box;
58
+ background: transparent;
59
+ }
60
+ .table {
61
+ width: 100%;
62
+ border-collapse: separate;
63
+ border-spacing: 0;
64
+ min-width: 640px;
65
+ table-layout: auto;
66
+ font-feature-settings:
67
+ 'tnum' on,
68
+ 'ss01' on;
69
+ background: transparent;
70
+ }
71
+
72
+ .table thead {
73
+ position: sticky;
74
+ top: 0;
75
+ z-index: 20;
76
+ backdrop-filter: blur(4px);
77
+ box-shadow: 0 2px 8px rgba(2, 6, 23, 0.04);
78
+ }
79
+ .headerCell {
80
+ padding: 12px 14px;
81
+ cursor: pointer;
82
+ text-align: left;
83
+ letter-spacing: 0.2px;
84
+ white-space: nowrap;
85
+ font-size: 13px;
86
+ font-weight: 600;
87
+ vertical-align: middle;
88
+ }
89
+ .headerContent {
90
+ font-size: 13px;
91
+ font-weight: 900;
92
+ }
93
+ .table tbody td {
94
+ padding: 10px 14px;
95
+ background: transparent;
96
+ vertical-align: middle;
97
+ font-size: 13px;
98
+ min-width: 0;
99
+ overflow: hidden;
100
+ text-overflow: ellipsis;
101
+ white-space: nowrap;
102
+ }
103
+ .tableRow {
104
+ transition:
105
+ transform 0.12s ease,
106
+ box-shadow 0.12s ease;
107
+ }
108
+ .tableRow:hover {
109
+ transform: translateY(-2px);
110
+ box-shadow: 0 10px 20px rgba(2, 6, 23, 0.04);
111
+ }
112
+
113
+ /* ================ COMPACT VARIANT ================ */
114
+ .container.compactTable .headerCell {
115
+ padding: 8px 10px;
116
+ font-size: 12px;
117
+ }
118
+ .container.compactTable .table tbody td {
119
+ padding: 8px 10px;
120
+ font-size: 12px;
121
+ }
122
+
123
+ /* ================ CARD ROWS ALTERNATIVE FOR XS ================ */
124
+ .container.cardRows .table {
125
+ display: block;
126
+ min-width: 100%;
127
+ }
128
+ .container.cardRows .table thead {
129
+ display: none;
130
+ }
131
+ .container.cardRows .table tbody {
132
+ display: block;
133
+ }
134
+ .container.cardRows .table tbody tr {
135
+ display: block;
136
+ margin: 10px 0;
137
+ border-radius: 10px;
138
+ background: var(--bg-card);
139
+ box-shadow: var(--card-shadow);
140
+ padding: 10px;
141
+ }
142
+ .container.cardRows .table tbody td {
143
+ display: flex;
144
+ justify-content: space-between;
145
+ padding: 8px 10px;
146
+ white-space: normal;
147
+ overflow: visible;
148
+ }
149
+
150
+ /* ================ SORT & FILTER BUTTONS ================ */
151
+ .toggleFiltersButton,
152
+ .toggleSortButton {
153
+ display: inline-flex;
154
+ align-items: center;
155
+ gap: 8px;
156
+ padding: 8px 12px;
157
+ border: 1px solid #e5e7eb;
158
+ border-radius: 999px;
159
+ font-size: var(--small-font);
160
+ font-weight: 600;
161
+ cursor: pointer;
162
+ transition: all 0.12s ease-in-out;
163
+ box-shadow: 0 1px 3px rgba(15, 23, 42, 0.03);
164
+ background: #fff;
165
+ touch-action: manipulation;
166
+ }
167
+ .toggleFiltersButton:hover,
168
+ .toggleSortButton:hover {
169
+ transform: translateY(-1px);
170
+ background: #f3f7ff;
171
+ }
172
+ .buttonTextCompact {
173
+ font-size: var(--small-font);
174
+ line-height: 1;
175
+ }
176
+ .countCompact,
177
+ .resultCountCompact {
178
+ font-size: var(--xsmall-font);
179
+ color: var(--muted);
180
+ }
181
+ .clearFiltersButton {
182
+ display: inline-flex;
183
+ align-items: center;
184
+ gap: 6px;
185
+ background: #fff;
186
+ border: 1px solid var(--border);
187
+ border-radius: 999px;
188
+ padding: 6px 10px;
189
+ cursor: pointer;
190
+ font-size: var(--xsmall-font);
191
+ }
192
+
193
+ /* ---------- NOUVELLES RÈGLES POUR LES LABELS DE TRI ---------- */
194
+ .sortItemLabel {
195
+ font-size: 13px;
196
+ font-weight: 600;
197
+ color: #111827;
198
+ white-space: nowrap;
199
+ overflow: hidden;
200
+ text-overflow: ellipsis;
201
+ max-width: 220px;
202
+ display: inline-block;
203
+ text-transform: none;
204
+ line-height: 1;
205
+ }
206
+
207
+ .uppercaseSmall {
208
+ font-size: 11px;
209
+ letter-spacing: 0.4px;
210
+ font-weight: 700;
211
+ line-height: 1;
212
+ }
213
+
214
+ @media (max-width: 420px) {
215
+ .uppercaseSmall {
216
+ font-size: 10px;
217
+ }
218
+ }
219
+
220
+ /* ================ FILTERS PANEL ================ */
221
+ .filtersPanel {
222
+ position: absolute;
223
+ top: calc(100% + 8px);
224
+ right: 0;
225
+ z-index: 1000;
226
+ width: min(680px, 94vw);
227
+ background: var(--bg-card);
228
+ border-radius: 12px;
229
+ padding: 14px;
230
+ box-shadow: 0 18px 40px rgba(15, 23, 42, 0.12);
231
+ border: 1px solid rgba(15, 23, 42, 0.06);
232
+ transition:
233
+ transform 220ms ease,
234
+ opacity 220ms ease;
235
+ max-height: 72vh;
236
+ overflow: auto;
237
+ }
238
+ .filtersPanelInline {
239
+ position: absolute;
240
+ top: 100%;
241
+ left: 0;
242
+ right: 0;
243
+ width: 100%;
244
+ margin-top: 10px;
245
+ border-radius: 8px;
246
+ padding: 12px;
247
+ }
248
+ .filtersPanelHorizontal .filtersRow {
249
+ display: flex;
250
+ gap: 12px;
251
+ flex-wrap: wrap;
252
+ align-items: flex-start;
253
+ }
254
+
255
+ @media (max-width: 680px) {
256
+ .filtersPanel {
257
+ position: fixed;
258
+ left: 0;
259
+ right: 0;
260
+ bottom: 0;
261
+ top: auto;
262
+ width: 100%;
263
+ max-height: 78vh;
264
+ border-radius: 12px 12px 0 0;
265
+ padding: 12px;
266
+ box-shadow: 0 -12px 40px rgba(2, 6, 23, 0.18);
267
+ border: none;
268
+ overflow: auto;
269
+ }
270
+ .filtersPanel::before {
271
+ content: '';
272
+ display: block;
273
+ width: 48px;
274
+ height: 4px;
275
+ border-radius: 999px;
276
+ margin: 6px auto 8px;
277
+ background: rgba(2, 6, 23, 0.06);
278
+ }
279
+ .filtersActionsHorizontal {
280
+ position: sticky;
281
+ bottom: 0;
282
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1));
283
+ padding-top: 10px;
284
+ margin-top: 8px;
285
+ }
286
+ }
287
+
288
+ /* ================ FILTER ITEMS LAYOUT ================ */
289
+ .filtersRow {
290
+ display: flex;
291
+ flex-wrap: wrap;
292
+ gap: 10px;
293
+ align-items: flex-start;
294
+ padding-bottom: 8px;
295
+ }
296
+ .filterItemInline {
297
+ display: flex;
298
+ flex-direction: column;
299
+ gap: 6px;
300
+ min-width: 180px;
301
+ max-width: 320px;
302
+ padding: 10px;
303
+ border-radius: 10px;
304
+ border: 1px solid rgba(15, 23, 42, 0.04);
305
+ box-sizing: border-box;
306
+ background: #fff;
307
+ }
308
+ @media (max-width: 980px) {
309
+ .filterItemInline {
310
+ min-width: 140px;
311
+ max-width: 48%;
312
+ }
313
+ }
314
+ @media (max-width: 540px) {
315
+ .filterItemInline {
316
+ min-width: 100%;
317
+ max-width: 100%;
318
+ padding: 10px;
319
+ border-radius: 8px;
320
+ }
321
+ }
322
+ .filterLabel {
323
+ font-size: var(--xsmall-font);
324
+ font-weight: 600;
325
+ color: #111827;
326
+ }
327
+ .filterInput,
328
+ .filterSelect,
329
+ .operatorSelect,
330
+ .operatorInput {
331
+ font-size: 13px;
332
+ padding: 8px 10px;
333
+ border: 1px solid var(--border);
334
+ border-radius: 8px;
335
+ width: 100%;
336
+ box-sizing: border-box;
337
+ }
338
+
339
+ .activeFilters {
340
+ display: flex;
341
+ gap: 8px;
342
+ flex-wrap: wrap;
343
+ align-items: center;
344
+ }
345
+ .activeFilterTag {
346
+ display: flex;
347
+ align-items: center;
348
+ gap: 8px;
349
+ font-size: 12px;
350
+ font-weight: 600;
351
+ color: #374151;
352
+ background: #f1f5f9;
353
+ border-radius: 18px;
354
+ padding: 6px 10px;
355
+ border: 1px solid #e6eef6;
356
+ }
357
+
358
+ .actionsGroup {
359
+ display: flex;
360
+ gap: 8px;
361
+ align-items: center;
362
+ }
363
+ .applyButton {
364
+ background: #008fbb;
365
+ color: #fff;
366
+ border: none;
367
+ padding: 10px 14px;
368
+ border-radius: 10px;
369
+ font-weight: 700;
370
+ cursor: pointer;
371
+ font-size: 13px;
372
+ }
373
+ .cancelButton {
374
+ background: #fff;
375
+ color: #374151;
376
+ border: 1px solid var(--border);
377
+ padding: 10px 14px;
378
+ border-radius: 10px;
379
+ cursor: pointer;
380
+ font-size: var(--xsmall-font);
381
+ font-weight: 600;
382
+ }
383
+
384
+ @media (max-width: 680px) {
385
+ .filtersActionsHorizontal {
386
+ display: flex;
387
+ gap: 12px;
388
+ flex-direction: column-reverse;
389
+ }
390
+ .applyButton,
391
+ .cancelButton {
392
+ width: 100%;
393
+ }
394
+ }
395
+
396
+ /* ================ COLUMN SORTER DROPDOWN ================ */
397
+ .columnSorterContainer {
398
+ position: relative;
399
+ display: inline-block;
400
+ }
401
+ .sorterControls {
402
+ display: flex;
403
+ align-items: center;
404
+ }
405
+ .sortDropdownWrapper {
406
+ position: relative;
407
+ }
408
+ .sortDropdown {
409
+ position: absolute;
410
+ top: calc(100% + 8px);
411
+ right: 0;
412
+ left: auto;
413
+ background: #fff;
414
+ border: 1px solid rgba(15, 23, 42, 0.08);
415
+ border-radius: 10px;
416
+ padding: 0;
417
+ min-width: 220px;
418
+ box-shadow: 0 8px 26px rgba(15, 23, 42, 0.08);
419
+ z-index: 300;
420
+ display: flex;
421
+ flex-direction: column;
422
+ }
423
+
424
+ .sortDropdownHeader {
425
+ display: flex;
426
+ justify-content: space-between;
427
+ align-items: center;
428
+ padding: 12px 16px;
429
+ font-weight: 700;
430
+ font-size: var(--xsmall-font);
431
+ color: #374151;
432
+ }
433
+
434
+ .closeButton {
435
+ background: none;
436
+ border: none;
437
+ cursor: pointer;
438
+ padding: 4px;
439
+ border-radius: 4px;
440
+ display: flex;
441
+ align-items: center;
442
+ justify-content: center;
443
+ }
444
+
445
+ .closeButton:hover {
446
+ background: #f3f4f6;
447
+ }
448
+
449
+ .sortDropdownContent {
450
+ max-height: 300px;
451
+ overflow-y: auto;
452
+ padding: 8px;
453
+ }
454
+
455
+ .sortDropdownItem {
456
+ display: flex;
457
+ align-items: center;
458
+ gap: 12px;
459
+ justify-content: space-between;
460
+ padding: 10px;
461
+ border-radius: 8px;
462
+ transition: background 0.12s;
463
+ margin-bottom: 4px;
464
+ box-sizing: border-box;
465
+ }
466
+
467
+ .sortDropdownItem .sortItemLabel {
468
+ flex: 1 1 auto;
469
+ min-width: 0;
470
+ white-space: nowrap;
471
+ overflow: hidden;
472
+ text-overflow: ellipsis;
473
+ display: block;
474
+ line-height: 1;
475
+ font-size: 13px;
476
+ font-weight: 400;
477
+ color: #111827;
478
+ max-width: 100%;
479
+ }
480
+
481
+ .sortDropdownItem .sortDirectionButtons {
482
+ flex: 0 0 auto;
483
+ display: flex;
484
+ gap: 8px;
485
+ margin-left: 12px;
486
+ }
487
+
488
+ @media (max-width: 480px) {
489
+ .sortDropdownItem {
490
+ padding: 8px;
491
+ }
492
+ .sortDropdownItem .sortItemLabel {
493
+ font-size: 12px;
494
+ }
495
+ .sortDropdownItem .sortDirectionButtons {
496
+ gap: 6px;
497
+ }
498
+ }
499
+
500
+ .sortDropdownItem:hover {
501
+ background: #f8fafc;
502
+ }
503
+
504
+ .sortItemLabel {
505
+ font-size: 13px;
506
+ font-weight: 600;
507
+ color: #111827;
508
+ white-space: nowrap;
509
+ overflow: hidden;
510
+ text-overflow: ellipsis;
511
+ max-width: 160px;
512
+ }
513
+
514
+ .sortDirectionButtons {
515
+ display: flex;
516
+ gap: 6px;
517
+ }
518
+
519
+ .sortDirectionButton {
520
+ display: inline-flex;
521
+ align-items: center;
522
+ justify-content: center;
523
+ width: 32px;
524
+ height: 32px;
525
+ border-radius: 8px;
526
+ border: 1px solid #e5e7eb;
527
+ background: #fff;
528
+ cursor: pointer;
529
+ transition: all 0.12s;
530
+ }
531
+
532
+ .sortDirectionButton:hover {
533
+ transform: translateY(-1px);
534
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
535
+ }
536
+
537
+ .activeSort {
538
+ background: var(--primary);
539
+ color: #fff;
540
+ border-color: var(--primary);
541
+ box-shadow: 0 4px 6px rgba(37, 99, 235, 0.2);
542
+ }
543
+
544
+ .sortActions {
545
+ padding: 12px 16px;
546
+ border-top: 1px solid #e5e7eb;
547
+ display: flex;
548
+ justify-content: flex-end;
549
+ }
550
+
551
+ @media (max-width: 680px) {
552
+ .sortDropdown {
553
+ position: fixed;
554
+ left: 0;
555
+ right: 0;
556
+ top: auto;
557
+ bottom: 0;
558
+ min-width: auto;
559
+ width: 100%;
560
+ border-radius: 16px 16px 0 0;
561
+ padding: 0;
562
+ box-shadow: 0 -10px 30px rgba(2, 6, 23, 0.2);
563
+ max-height: 70vh;
564
+ animation: slideUp 0.3s ease-out;
565
+ }
566
+
567
+ .sortDropdown::before {
568
+ content: '';
569
+ display: block;
570
+ width: 40px;
571
+ height: 4px;
572
+ border-radius: 999px;
573
+ margin: 12px auto;
574
+ background: rgba(2, 6, 23, 0.1);
575
+ position: absolute;
576
+ top: 0;
577
+ left: 50%;
578
+ transform: translateX(-50%);
579
+ }
580
+
581
+ .sortDropdownHeader {
582
+ padding-top: 24px;
583
+ }
584
+
585
+ .sortDropdownContent {
586
+ max-height: calc(70vh - 130px);
587
+ }
588
+
589
+ @keyframes slideUp {
590
+ from {
591
+ transform: translateY(100%);
592
+ }
593
+ to {
594
+ transform: translateY(0);
595
+ }
596
+ }
597
+ }
598
+
599
+ @media (max-width: 480px) {
600
+ .sortItemLabel {
601
+ max-width: 120px;
602
+ font-size: 12px;
603
+ }
604
+
605
+ .sortDirectionButton {
606
+ width: 28px;
607
+ height: 28px;
608
+ }
609
+
610
+ .sortDirectionButton svg {
611
+ width: 12px;
612
+ height: 12px;
613
+ }
614
+ }
615
+ .sortDropdownHeader {
616
+ font-weight: 700;
617
+ font-size: var(--xsmall-font);
618
+ color: #374151;
619
+ margin-bottom: 8px;
620
+ }
621
+ .sortDropdownItem {
622
+ display: flex;
623
+ align-items: center;
624
+ justify-content: space-between;
625
+ padding: 8px;
626
+ border-radius: 8px;
627
+ transition: background 0.12s;
628
+ }
629
+ .sortDropdownItem:hover {
630
+ background: #f8fafc;
631
+ }
632
+ .sortDirectionButtons {
633
+ display: flex;
634
+ gap: 8px;
635
+ }
636
+ .sortDirectionButton {
637
+ display: inline-flex;
638
+ align-items: center;
639
+ justify-content: center;
640
+ width: 34px;
641
+ height: 34px;
642
+ border-radius: 8px;
643
+ border: 1px solid #e5e7eb;
644
+ background: #fff;
645
+ cursor: pointer;
646
+ transition: all 0.12s;
647
+ }
648
+ .sortDirectionButton:hover {
649
+ transform: translateY(-2px);
650
+ }
651
+ .activeSort {
652
+ background: var(--primary);
653
+ color: #fff;
654
+ border-color: var(--primary);
655
+ box-shadow: 0 6px 18px rgba(37, 99, 235, 0.12);
656
+ }
657
+
658
+ /* ================ FOCUS & ACCESSIBILITY ================ */
659
+ .toggleFiltersButton:focus,
660
+ .toggleSortButton:focus,
661
+ .applyButton:focus,
662
+ .cancelButton:focus,
663
+ .paginationButton:focus,
664
+ .sortDirectionButton:focus,
665
+ .pageSizeSelect:focus,
666
+ .filterInput:focus,
667
+ .operatorInput:focus {
668
+ outline: none;
669
+ box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.12);
670
+ border-color: var(--accent);
671
+ }
672
+
673
+ /* ================ PAGINATION ================ */
674
+ .topPagination {
675
+ margin: 12px 0;
676
+ display: flex;
677
+ justify-content: center;
678
+ width: 100%;
679
+ box-sizing: border-box;
680
+ }
681
+ .paginationContainer {
682
+ display: flex;
683
+ align-items: center;
684
+ justify-content: space-between;
685
+ gap: 12px;
686
+ width: 100%;
687
+ box-sizing: border-box;
688
+ padding: 8px;
689
+ border-radius: 10px;
690
+ border: 1px solid rgba(15, 23, 42, 0.04);
691
+ }
692
+ .leftGroup {
693
+ display: flex;
694
+ align-items: center;
695
+ gap: 10px;
696
+ min-width: 150px;
697
+ flex: 0 0 auto;
698
+ }
699
+ .pageSizeControls {
700
+ display: flex;
701
+ gap: 8px;
702
+ align-items: center;
703
+ }
704
+ .pageSizeLabel {
705
+ font-weight: 600;
706
+ color: var(--muted);
707
+ font-size: 13px;
708
+ }
709
+ .pageSizeSelect {
710
+ border: 1px solid var(--border);
711
+ border-radius: 8px;
712
+ padding: 8px 10px;
713
+ min-width: 64px;
714
+ font-size: 13px;
715
+ }
716
+ .pageSizeSuffix {
717
+ color: var(--muted);
718
+ font-size: 13px;
719
+ }
720
+ .paginationInfo {
721
+ text-align: center;
722
+ color: var(--muted);
723
+ flex: 1 1 auto;
724
+ font-size: 13px;
725
+ min-width: 120px;
726
+ }
727
+ .paginationControls {
728
+ display: flex;
729
+ align-items: center;
730
+ gap: 8px;
731
+ justify-content: flex-end;
732
+ min-width: 140px;
733
+ overflow-x: auto;
734
+ -webkit-overflow-scrolling: touch;
735
+ padding-bottom: 2px;
736
+ }
737
+ .paginationButton {
738
+ min-width: 40px;
739
+ height: 40px;
740
+ display: inline-flex;
741
+ align-items: center;
742
+ justify-content: center;
743
+ border-radius: 10px;
744
+ border: 1px solid var(--border);
745
+ font-size: 14px;
746
+ cursor: pointer;
747
+ transition: all 0.12s;
748
+ padding: 0 12px;
749
+ box-shadow: 0 1px 4px rgba(16, 24, 40, 0.03);
750
+ background: transparent;
751
+ color: var(--muted);
752
+ }
753
+ .paginationButton:hover:not(.disabledButton) {
754
+ transform: translateY(-3px);
755
+ box-shadow: 0 8px 20px rgba(2, 6, 23, 0.06);
756
+ }
757
+ .activeButton {
758
+ background: var(--color-primary);
759
+ color: #fff;
760
+ font-weight: 700;
761
+ }
762
+ .disabledButton {
763
+ opacity: 0.45;
764
+ cursor: not-allowed;
765
+ }
766
+ .navigationButton:hover:not(.disabledButton) {
767
+ background: #fff;
768
+ }
769
+
770
+ .navigationButton {
771
+ background: var(--color-content-background);
772
+ }
773
+
774
+ .disabledButton {
775
+ opacity: 0.5;
776
+ cursor: not-allowed;
777
+ }
778
+ @media (max-width: 540px) {
779
+ .paginationContainer {
780
+ flex-direction: column;
781
+ align-items: stretch;
782
+ gap: 10px;
783
+ padding: 10px;
784
+ }
785
+ .leftGroup,
786
+ .paginationControls {
787
+ justify-content: center;
788
+ width: 100%;
789
+ }
790
+ .pageSizeSelect {
791
+ min-width: 56px;
792
+ padding: 6px 8px;
793
+ }
794
+ .paginationButton {
795
+ min-width: 36px;
796
+ height: 36px;
797
+ border-radius: 8px;
798
+ font-size: 13px;
799
+ padding: 0 8px;
800
+ }
801
+ .pageSizeLabel,
802
+ .paginationInfo {
803
+ font-size: 12px;
804
+ }
805
+ }
806
+ @media (max-width: 380px) {
807
+ .table {
808
+ min-width: 520px;
809
+ font-size: 12px;
810
+ }
811
+ }
812
+
813
+ /* ================ HELPERS ================ */
814
+ .operatorFilterContainer {
815
+ display: flex;
816
+ align-items: center;
817
+ gap: 6px;
818
+ font-weight: 700;
819
+ }
820
+ .rangeSeparator {
821
+ font-weight: 600;
822
+ color: var(--muted);
823
+ }
824
+
825
+ /* ================ NOUVELLES AMÉLIORATIONS RESPONSIVE ================ */
826
+ @media (max-width: 480px) {
827
+ .container {
828
+ padding: 8px;
829
+ }
830
+
831
+ .tableControls {
832
+ justify-content: space-between;
833
+ margin-bottom: 8px;
834
+ }
835
+
836
+ .controlsRight {
837
+ flex-wrap: wrap;
838
+ justify-content: flex-end;
839
+ gap: 4px;
840
+ }
841
+
842
+ .toggleFiltersButton,
843
+ .toggleSortButton {
844
+ padding: 6px 10px;
845
+ font-size: 11px;
846
+ }
847
+
848
+ .toggleFiltersButton svg,
849
+ .toggleSortButton svg {
850
+ width: 12px;
851
+ height: 12px;
852
+ }
853
+
854
+ .buttonTextCompact {
855
+ font-size: 11px;
856
+ }
857
+
858
+ .clearFiltersButton {
859
+ padding: 4px 8px;
860
+ font-size: 10px;
861
+ }
862
+
863
+ .clearFiltersButton svg {
864
+ width: 12px;
865
+ height: 12px;
866
+ }
867
+
868
+ .filtersPanel {
869
+ padding: 10px;
870
+ }
871
+
872
+ .filterItemInline {
873
+ padding: 8px;
874
+ }
875
+
876
+ .filterLabel {
877
+ font-size: 10px;
878
+ }
879
+
880
+ .filterInput,
881
+ .filterSelect,
882
+ .operatorSelect,
883
+ .operatorInput {
884
+ font-size: 12px;
885
+ padding: 6px 8px;
886
+ }
887
+
888
+ .activeFilterTag {
889
+ font-size: 11px;
890
+ padding: 4px 8px;
891
+ }
892
+
893
+ .applyButton,
894
+ .cancelButton {
895
+ padding: 8px 12px;
896
+ font-size: 12px;
897
+ }
898
+
899
+ .sortDropdown {
900
+ padding: 8px;
901
+ }
902
+
903
+ .sortDropdownHeader {
904
+ font-size: 10px;
905
+ }
906
+
907
+ .sortItemLabel {
908
+ font-size: 12px;
909
+ max-width: 160px;
910
+ }
911
+
912
+ .sortDirectionButton {
913
+ width: 28px;
914
+ height: 28px;
915
+ }
916
+
917
+ .sortDirectionButton svg {
918
+ width: 10px;
919
+ height: 10px;
920
+ }
921
+
922
+ .paginationContainer {
923
+ padding: 6px;
924
+ }
925
+
926
+ .pageSizeLabel,
927
+ .pageSizeSuffix,
928
+ .paginationInfo {
929
+ font-size: 11px;
930
+ }
931
+
932
+ .pageSizeSelect {
933
+ padding: 6px 8px;
934
+ font-size: 11px;
935
+ }
936
+
937
+ .paginationButton {
938
+ min-width: 32px;
939
+ height: 32px;
940
+ font-size: 12px;
941
+ padding: 0 8px;
942
+ }
943
+ }
944
+
945
+ @media (max-width: 360px) {
946
+ .controlsRight {
947
+ width: 100%;
948
+ justify-content: space-between;
949
+ margin-top: 8px;
950
+ }
951
+
952
+ .toggleFiltersButton,
953
+ .toggleSortButton {
954
+ flex: 1;
955
+ min-width: 0;
956
+ justify-content: center;
957
+ }
958
+
959
+ .clearFiltersButton {
960
+ position: absolute;
961
+ top: -30px;
962
+ right: 0;
963
+ }
964
+ }
965
+
966
+ @media (max-width: 680px) {
967
+ .filtersPanel::after {
968
+ content: '';
969
+ position: fixed;
970
+ top: 0;
971
+ left: 0;
972
+ right: 0;
973
+ height: 12px;
974
+ background: linear-gradient(to bottom, rgba(0, 0, 0, 0.1), transparent);
975
+ opacity: 0.1;
976
+ pointer-events: none;
977
+ }
978
+
979
+ .filtersRow {
980
+ max-height: 60vh;
981
+ overflow-y: auto;
982
+ padding-right: 4px;
983
+ }
984
+
985
+ .filtersRow::-webkit-scrollbar {
986
+ width: 4px;
987
+ }
988
+
989
+ .filtersRow::-webkit-scrollbar-track {
990
+ background: #f1f1f1;
991
+ border-radius: 10px;
992
+ }
993
+
994
+ .filtersRow::-webkit-scrollbar-thumb {
995
+ background: #c1c1c1;
996
+ border-radius: 10px;
997
+ }
998
+ }
999
+
1000
+ @media (max-height: 480px) and (orientation: landscape) {
1001
+ .filtersPanel {
1002
+ max-height: 60vh;
1003
+ }
1004
+
1005
+ .filtersRow {
1006
+ max-height: 45vh;
1007
+ }
1008
+ }
1009
+
1010
+ .tableRow td:first-child {
1011
+ position: relative;
1012
+ padding-left: calc(var(--row-accent-gap) + 1px);
1013
+ }
1014
+
1015
+ .tableRow td:first-child::before {
1016
+ content: '';
1017
+ position: absolute;
1018
+ left: 0px;
1019
+ top: 0px;
1020
+ bottom: 0px;
1021
+ width: var(--row-accent-width);
1022
+ border-radius: var(--row-accent-radius);
1023
+ background: var(--row-accent, transparent);
1024
+ transform-origin: center;
1025
+ transform: scaleY(0.75);
1026
+ opacity: 0;
1027
+ transition:
1028
+ opacity 140ms ease,
1029
+ transform 140ms ease,
1030
+ box-shadow 140ms ease;
1031
+ box-shadow: 0 2px 6px rgba(2, 6, 23, 0.06);
1032
+ pointer-events: none;
1033
+ }
1034
+
1035
+ .tableRow:hover td:first-child::before {
1036
+ opacity: 1;
1037
+ transform: scaleY(1);
1038
+ }
1039
+
1040
+ .tableRow.activeRow td:first-child::before,
1041
+ .tableRow:focus-within td:first-child::before {
1042
+ opacity: 1;
1043
+ transform: scaleY(1);
1044
+ }
1045
+
1046
+ .tableRow td:first-child::before[style*='transparent'] {
1047
+ opacity: 0;
1048
+ }
1049
+
1050
+ .container.cardRows .table tbody tr td:first-child::before {
1051
+ display: none;
1052
+ }
1053
+
1054
+ @media (max-width: 480px) {
1055
+ .tableControls {
1056
+ justify-content: center !important;
1057
+ }
1058
+
1059
+ .controlsRight {
1060
+ justify-content: center !important;
1061
+ width: auto;
1062
+ gap: 8px;
1063
+ }
1064
+
1065
+ .toggleFiltersButton,
1066
+ .toggleSortButton {
1067
+ flex: 0 0 auto !important;
1068
+ min-width: 0;
1069
+ margin: 0 6px;
1070
+ }
1071
+
1072
+ .clearFiltersButton {
1073
+ position: static;
1074
+ top: auto;
1075
+ right: auto;
1076
+ margin-left: 6px;
1077
+ }
1078
+ }
1079
+
1080
+ @media (max-width: 360px) {
1081
+ .tableControls {
1082
+ justify-content: center !important;
1083
+ padding-left: 6px;
1084
+ padding-right: 6px;
1085
+ }
1086
+
1087
+ .controlsRight {
1088
+ width: 100%;
1089
+ justify-content: center !important;
1090
+ gap: 6px;
1091
+ }
1092
+
1093
+ .toggleFiltersButton,
1094
+ .toggleSortButton {
1095
+ flex: 0 0 auto !important;
1096
+ padding: 6px 10px;
1097
+ font-size: 11px;
1098
+ }
1099
+
1100
+ .clearFiltersButton {
1101
+ position: static;
1102
+ margin-top: 6px;
1103
+ }
1104
+ }
1105
+
1106
+ .pageSizeSelect {
1107
+ background-color: var(--color-content-background);
1108
+ color: var(--color-text);
1109
+ border: 1px solid var(--color-border);
1110
+ padding: 6px 10px;
1111
+ border-radius: 6px;
1112
+ appearance: none;
1113
+ -webkit-appearance: none;
1114
+ -moz-appearance: none;
1115
+ background-repeat: no-repeat;
1116
+ background-position: right 8px center;
1117
+ background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6'><path d='M0 0l5 6 5-6' fill='none' stroke='%23000' stroke-width='1.2'/></svg>");
1118
+ }
1119
+
1120
+ .pageSizeSelect option {
1121
+ background-color: var(--color-content-background);
1122
+ color: var(--color-text);
1123
+ }
1124
+
1125
+ .container {
1126
+ --controls-text-size: 13px;
1127
+ }
1128
+ .paginationButton {
1129
+ transition:
1130
+ background 0.14s,
1131
+ transform 0.12s,
1132
+ box-shadow 0.12s;
1133
+ }
1134
+
1135
+ .paginationButton:hover:not(.disabledButton) {
1136
+ transform: translateY(-1px);
1137
+ box-shadow: 0 10px 22px rgba(2, 6, 23, 0.12);
1138
+ }
1139
+
1140
+ .table thead,
1141
+ .headerCell {
1142
+ font-weight: 400 !important;
1143
+ }
1144
+
1145
+ .table tbody td {
1146
+ font-weight: 400 !important;
1147
+ }
1148
+
1149
+ .tableRow,
1150
+ .tableRow td,
1151
+ .headerCell,
1152
+ .pageSizeLabel,
1153
+ .pageSizeSuffix,
1154
+ .paginationInfo {
1155
+ font-weight: 400 !important;
1156
+ }
1157
+
1158
+ .toggleSortButton,
1159
+ .toggleFiltersButton,
1160
+ .buttonTextCompact {
1161
+ font-size: var(--controls-text-size);
1162
+ font-weight: 400;
1163
+ }
1164
+
1165
+ .sortDropdownHeader,
1166
+ .sortItemLabel,
1167
+ .sortDropdownHeader span {
1168
+ font-size: var(--controls-text-size);
1169
+ font-weight: 400;
1170
+ color: #374151;
1171
+ }
1172
+
1173
+ .sortItemLabel {
1174
+ white-space: nowrap;
1175
+ overflow: hidden;
1176
+ text-overflow: ellipsis;
1177
+ max-width: 220px;
1178
+ display: inline-block;
1179
+ vertical-align: middle;
1180
+ }
1181
+
1182
+ .closeButton {
1183
+ font-weight: 400;
1184
+ }
1185
+
1186
+ .filterLabel,
1187
+ .buttonTextCompact,
1188
+ .countCompact,
1189
+ .resultCountCompact,
1190
+ .activeLabelCompact {
1191
+ font-size: var(--controls-text-size);
1192
+ font-weight: 400;
1193
+ }
1194
+
1195
+ .filtersPanel,
1196
+ .filtersRow,
1197
+ .filterItemInline,
1198
+ .filterInput,
1199
+ .filterSelect,
1200
+ .operatorSelect,
1201
+ .operatorInput,
1202
+ .activeFilterTag {
1203
+ font-size: var(--controls-text-size);
1204
+ }
1205
+
1206
+ .activeFilterTag {
1207
+ font-weight: 400;
1208
+ }
1209
+
1210
+ .applyButton,
1211
+ .cancelButton {
1212
+ font-size: var(--controls-text-size);
1213
+ font-weight: 400;
1214
+ }
1215
+
1216
+ .uppercaseSmall,
1217
+ .sortDropdownHeader,
1218
+ .operatorFilterContainer,
1219
+ .rangeSeparator,
1220
+ .pageSizeLabel {
1221
+ font-weight: 400 !important;
1222
+ }
1223
+
1224
+ @media (max-width: 480px) {
1225
+ .toggleFiltersButton,
1226
+ .toggleSortButton,
1227
+ .buttonTextCompact,
1228
+ .filterLabel,
1229
+ .sortItemLabel {
1230
+ font-size: 12px;
1231
+ }
1232
+
1233
+ .headerCell {
1234
+ max-width: 140px;
1235
+ }
1236
+
1237
+ .sortItemLabel {
1238
+ max-width: 120px;
1239
+ }
1240
+ }
1241
+
1242
+ .sortDropdownItem {
1243
+ min-width: 0;
1244
+ font-size: var(--small-font);
1245
+ font-weight: 400;
1246
+ }
1247
+
1248
+ .sortDropdownHeader,
1249
+ .sortItemLabel,
1250
+ .sortDropdownItem .sortItemLabel {
1251
+ font-size: var(--small-font);
1252
+ font-weight: 400;
1253
+ }
1254
+
1255
+ .columnSorterLabel {
1256
+ display: block;
1257
+ flex: 1 1 0;
1258
+ min-width: 0;
1259
+ white-space: nowrap;
1260
+ overflow: hidden;
1261
+ text-overflow: ellipsis;
1262
+ max-width: 180px;
1263
+ line-height: 1;
1264
+ font-size: var(--xsmall-font);
1265
+ font-weight: 600;
1266
+ text-transform: none;
1267
+ }
1268
+
1269
+ .uppercaseSmall {
1270
+ font-size: var(--xsmall-font);
1271
+ font-weight: 400;
1272
+ letter-spacing: 0.4px;
1273
+ text-transform: uppercase;
1274
+ line-height: 1;
1275
+ }
1276
+
1277
+ @media (max-width: 480px) {
1278
+ .columnSorterLabel {
1279
+ max-width: 120px;
1280
+ }
1281
+ .sortDropdownHeader,
1282
+ .sortItemLabel,
1283
+ .uppercaseSmall {
1284
+ font-size: var(--xsmall-font);
1285
+ font-weight: 400;
1286
+ }
1287
+ }