fokus-styles 2.0.0 → 2.4.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 (137) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +4 -3
  3. package/dist/css/components.css +532 -2
  4. package/dist/css/components.css.map +1 -1
  5. package/dist/css/components.min.css +1 -1
  6. package/dist/css/components.min.css.map +1 -1
  7. package/dist/css/fokus-components.css +4072 -0
  8. package/dist/css/fokus-components.css.map +1 -0
  9. package/dist/css/fokus-components.min.css +2 -0
  10. package/dist/css/fokus-components.min.css.map +1 -0
  11. package/dist/css/fokus-core.css +1585 -0
  12. package/dist/css/fokus-core.css.map +1 -0
  13. package/dist/css/fokus-core.min.css +2 -0
  14. package/dist/css/fokus-core.min.css.map +1 -0
  15. package/dist/css/fokus-dark.css +314 -0
  16. package/dist/css/fokus-dark.css.map +1 -0
  17. package/dist/css/fokus-dark.min.css +2 -0
  18. package/dist/css/fokus-dark.min.css.map +1 -0
  19. package/dist/css/fokus-rtl.css +8552 -0
  20. package/dist/css/fokus-rtl.css.map +1 -0
  21. package/dist/css/fokus-rtl.min.css +2 -0
  22. package/dist/css/fokus-rtl.min.css.map +1 -0
  23. package/dist/css/fokus-utilities.css +4198 -0
  24. package/dist/css/fokus-utilities.css.map +1 -0
  25. package/dist/css/fokus-utilities.min.css +2 -0
  26. package/dist/css/fokus-utilities.min.css.map +1 -0
  27. package/dist/css/fokus.css +1361 -53
  28. package/dist/css/fokus.css.map +1 -1
  29. package/dist/css/fokus.min.css +1 -1
  30. package/dist/css/fokus.min.css.map +1 -1
  31. package/dist/css/forms.css +137 -2
  32. package/dist/css/forms.css.map +1 -1
  33. package/dist/css/forms.min.css +1 -1
  34. package/dist/css/forms.min.css.map +1 -1
  35. package/dist/css/helpers.css +398 -2
  36. package/dist/css/helpers.css.map +1 -1
  37. package/dist/css/helpers.min.css +1 -1
  38. package/dist/css/helpers.min.css.map +1 -1
  39. package/dist/css/layout.css +582 -2
  40. package/dist/css/layout.css.map +1 -1
  41. package/dist/css/layout.min.css +1 -1
  42. package/dist/css/layout.min.css.map +1 -1
  43. package/dist/js/fokus.js +347 -12
  44. package/dist/js/fokus.js.map +4 -4
  45. package/dist/js/fokus.min.js +17 -17
  46. package/dist/js/fokus.min.js.map +4 -4
  47. package/docs/components/accordion.md +3 -0
  48. package/docs/components/avatar.md +13 -0
  49. package/docs/components/button-group.md +13 -0
  50. package/docs/components/close-button.md +13 -0
  51. package/docs/components/code.md +13 -0
  52. package/docs/components/icon-link.md +13 -0
  53. package/docs/components/list-group.md +13 -0
  54. package/docs/components/modal.md +3 -0
  55. package/docs/components/navbar.md +3 -0
  56. package/docs/components/pagination.md +3 -0
  57. package/docs/components/placeholder.md +13 -0
  58. package/docs/components/ratio.md +13 -0
  59. package/docs/components/scrollspy.md +13 -0
  60. package/docs/components/skeleton.md +3 -0
  61. package/docs/components/table.md +3 -0
  62. package/docs/guides/javascript-api.md +9 -0
  63. package/docs/guides/rtl-and-system-preferences.md +28 -0
  64. package/docs/guides/utility-api.md +9 -0
  65. package/docs/reference/size-baseline.json +13 -13
  66. package/mockup/assets/example-theme.css +3 -1
  67. package/mockup/assets/example-theme.js +2 -0
  68. package/mockup/assets/showcase-contracts.js +2 -2
  69. package/mockup/assets/showcase.css +4 -2
  70. package/mockup/assets/showcase.js +2 -0
  71. package/mockup/examples/js-foundation.html +25 -0
  72. package/mockup/examples/tables-navbar.html +12 -8
  73. package/mockup/examples/theming.html +2 -1
  74. package/mockup/foundations.html +2 -2
  75. package/package.json +15 -1
  76. package/packages/fokus-cli/bin/fokus.mjs +18 -1
  77. package/packages/fokus-cli/lib/build.mjs +12 -2
  78. package/packages/fokus-components/scss/components/_accordion.scss +19 -0
  79. package/packages/fokus-components/scss/components/_avatar.scss +22 -0
  80. package/packages/fokus-components/scss/components/_button-group.scss +14 -0
  81. package/packages/fokus-components/scss/components/_close-button.scss +22 -0
  82. package/packages/fokus-components/scss/components/_code.scss +19 -0
  83. package/packages/fokus-components/scss/components/_icon-link.scss +8 -0
  84. package/packages/fokus-components/scss/components/_index.scss +10 -0
  85. package/packages/fokus-components/scss/components/_list-group.scss +26 -0
  86. package/packages/fokus-components/scss/components/_modal.scss +36 -0
  87. package/packages/fokus-components/scss/components/_navbar.scss +48 -0
  88. package/packages/fokus-components/scss/components/_offcanvas.scss +19 -0
  89. package/packages/fokus-components/scss/components/_pagination.scss +10 -0
  90. package/packages/fokus-components/scss/components/_placeholder.scss +13 -0
  91. package/packages/fokus-components/scss/components/_progress.scss +8 -0
  92. package/packages/fokus-components/scss/components/_ratio.scss +10 -0
  93. package/packages/fokus-components/scss/components/_scrollspy.scss +5 -0
  94. package/packages/fokus-components/scss/components/_skeleton.scss +19 -0
  95. package/packages/fokus-components/scss/components/_spinner.scss +9 -53
  96. package/packages/fokus-components/scss/components/_tables.scss +20 -0
  97. package/packages/fokus-components/scss/forms/_forms.scss +29 -0
  98. package/packages/fokus-core/scss/base/_accessibility.scss +59 -0
  99. package/packages/fokus-core/scss/base/_index.scss +1 -0
  100. package/packages/fokus-core/scss/layout/_grid.scss +18 -0
  101. package/packages/fokus-core/scss/settings/_config.scss +43 -0
  102. package/packages/fokus-core/scss/settings/_index.scss +1 -0
  103. package/packages/fokus-core/scss/themes/_dark.scss +38 -2
  104. package/packages/fokus-core/scss/tokens/_root.scss +25 -0
  105. package/packages/fokus-core/scss/tools/_mixins.scss +8 -0
  106. package/packages/fokus-js/js/accordion.js +7 -1
  107. package/packages/fokus-js/js/core/focus.js +20 -0
  108. package/packages/fokus-js/js/core/overlay.d.ts +2 -0
  109. package/packages/fokus-js/js/core/overlay.js +10 -0
  110. package/packages/fokus-js/js/core/register.js +4 -2
  111. package/packages/fokus-js/js/focus-trap.d.ts +3 -0
  112. package/packages/fokus-js/js/focus-trap.js +1 -0
  113. package/packages/fokus-js/js/fokus.d.ts +7 -0
  114. package/packages/fokus-js/js/fokus.js +7 -0
  115. package/packages/fokus-js/js/form-validation.d.ts +7 -0
  116. package/packages/fokus-js/js/form-validation.js +20 -0
  117. package/packages/fokus-js/js/modal.js +16 -2
  118. package/packages/fokus-js/js/navbar.d.ts +10 -0
  119. package/packages/fokus-js/js/navbar.js +27 -0
  120. package/packages/fokus-js/js/offcanvas.d.ts +4 -0
  121. package/packages/fokus-js/js/offcanvas.js +16 -2
  122. package/packages/fokus-js/js/pagination.d.ts +7 -0
  123. package/packages/fokus-js/js/pagination.js +38 -0
  124. package/packages/fokus-js/js/scrollspy.d.ts +7 -0
  125. package/packages/fokus-js/js/scrollspy.js +26 -0
  126. package/packages/fokus-js/js/spinner.d.ts +9 -0
  127. package/packages/fokus-js/js/spinner.js +18 -0
  128. package/packages/fokus-js/js/theme.d.ts +9 -0
  129. package/packages/fokus-js/js/theme.js +19 -0
  130. package/packages/fokus-js/js/toast.js +4 -0
  131. package/packages/fokus-utilities/scss/utilities/_api.scss +48 -0
  132. package/packages/fokus-utilities/scss/utilities/_index.scss +2 -0
  133. package/packages/fokus-utilities/scss/utilities/_states.scss +19 -0
  134. package/packages/fokus-utilities/scss/utilities/_visibility.scss +24 -0
  135. package/scss/entries/core-entry.scss +5 -0
  136. package/scss/entries/dark-entry.scss +3 -0
  137. package/scss/entries/rtl-entry.scss +11 -0
@@ -48,12 +48,28 @@
48
48
  --fs-control-padding-x-lg: 16px;
49
49
  --fs-focus-width: 2px;
50
50
  --fs-focus-offset: 2px;
51
+ --fs-focus-color: var(--fs-color-primary);
52
+ --fs-focus-ring-size: 3px;
53
+ --fs-focus-ring-color: color-mix(in srgb, var(--fs-focus-color) 22%, transparent);
51
54
  --fs-focus-ring-alpha: 22%;
52
55
  --fs-transition-fast: 150ms;
53
56
  --fs-transition-normal: 220ms;
57
+ --fs-motion-duration-fast: var(--fs-transition-fast);
58
+ --fs-motion-duration-normal: var(--fs-transition-normal);
59
+ --fs-motion-ease-standard: var(--fs-ease-standard);
54
60
  --fs-ease-standard: cubic-bezier(0.2, 0, 0, 1);
55
61
  --fs-border-width: 1px;
56
62
  --fs-disabled-opacity: 0.5;
63
+ --fs-safe-area-top: env(safe-area-inset-top, 0px);
64
+ --fs-safe-area-right: env(safe-area-inset-right, 0px);
65
+ --fs-safe-area-bottom: env(safe-area-inset-bottom, 0px);
66
+ --fs-safe-area-left: env(safe-area-inset-left, 0px);
67
+ --fs-component-control-height: var(--fs-control-height);
68
+ --fs-component-overlay-backdrop: rgb(0 0 0 / 55%);
69
+ --fs-component-panel-radius: var(--fs-radius-md);
70
+ --fs-component-panel-shadow: var(--fs-shadow-lg);
71
+ --fs-contrast-border-width: var(--fs-border-width);
72
+ --fs-contrast-focus-width: var(--fs-focus-width);
57
73
  --fs-cq-sm: 320px;
58
74
  --fs-cq-md: 480px;
59
75
  --fs-cq-lg: 640px;
@@ -132,6 +148,14 @@
132
148
  --fs-feedback-info-bg: oklch(96.4918490239% 0.0173174767 286.0707018324deg);
133
149
  }
134
150
  }
151
+ @media (prefers-contrast: more) {
152
+ :root {
153
+ --fs-contrast-border-width: 2px;
154
+ --fs-contrast-focus-width: 3px;
155
+ --fs-focus-width: var(--fs-contrast-focus-width);
156
+ --fs-border-width: var(--fs-contrast-border-width);
157
+ }
158
+ }
135
159
  }
136
160
  @layer tokens {
137
161
  :root {
@@ -243,6 +267,59 @@
243
267
  }
244
268
  }
245
269
  }
270
+ /* stylelint-disable property-no-deprecated, selector-not-notation */
271
+ @layer reset {
272
+ :focus-visible {
273
+ outline: var(--fs-focus-width) solid var(--fs-focus-color);
274
+ outline-offset: var(--fs-focus-offset);
275
+ }
276
+ @media (forced-colors: active) {
277
+ :focus-visible {
278
+ outline: 2px solid CanvasText;
279
+ outline-offset: 2px;
280
+ }
281
+ button,
282
+ [role=button],
283
+ input,
284
+ select,
285
+ textarea,
286
+ .fs-btn {
287
+ border-color: ButtonText;
288
+ forced-color-adjust: auto;
289
+ }
290
+ .fs-u-focus-ring:focus-visible {
291
+ outline: 3px solid Highlight;
292
+ }
293
+ }
294
+ }
295
+ @layer utilities {
296
+ .fs-u-visually-hidden:not(:focus):not(:focus-within),
297
+ .fs-u-visually-hidden-focusable:not(:focus):not(:focus-within) {
298
+ position: absolute !important;
299
+ width: 1px !important;
300
+ height: 1px !important;
301
+ padding: 0 !important;
302
+ margin: -1px !important;
303
+ overflow: hidden !important;
304
+ clip-path: inset(50%) !important;
305
+ white-space: nowrap !important;
306
+ border: 0 !important;
307
+ }
308
+ .fs-skip-link {
309
+ position: fixed;
310
+ z-index: 1000;
311
+ inset-block-start: var(--fs-space-2);
312
+ inset-inline-start: var(--fs-space-2);
313
+ transform: translateY(-200%);
314
+ padding: var(--fs-space-2) var(--fs-space-3);
315
+ color: var(--fs-color-on-primary);
316
+ background: var(--fs-color-primary);
317
+ border-radius: var(--fs-radius-sm);
318
+ }
319
+ .fs-skip-link:focus {
320
+ transform: translateY(0);
321
+ }
322
+ }
246
323
  @layer layout {
247
324
  .fs-cluster {
248
325
  display: flex;
@@ -338,6 +415,73 @@
338
415
  .fs-col-fluid {
339
416
  width: 100%;
340
417
  }
418
+ .fs-row-cols-auto > * {
419
+ flex: 0 0 auto;
420
+ width: auto;
421
+ }
422
+ .fs-row-cols-1 > * {
423
+ flex: 0 0 auto;
424
+ width: 100%;
425
+ }
426
+ .fs-row-cols-2 > * {
427
+ flex: 0 0 auto;
428
+ width: 50%;
429
+ }
430
+ .fs-row-cols-3 > * {
431
+ flex: 0 0 auto;
432
+ width: 33.3333333333%;
433
+ }
434
+ .fs-row-cols-4 > * {
435
+ flex: 0 0 auto;
436
+ width: 25%;
437
+ }
438
+ .fs-row-cols-5 > * {
439
+ flex: 0 0 auto;
440
+ width: 20%;
441
+ }
442
+ .fs-row-cols-6 > * {
443
+ flex: 0 0 auto;
444
+ width: 16.6666666667%;
445
+ }
446
+ .fs-order-0 {
447
+ order: 0;
448
+ }
449
+ .fs-order-1 {
450
+ order: 1;
451
+ }
452
+ .fs-order-2 {
453
+ order: 2;
454
+ }
455
+ .fs-order-3 {
456
+ order: 3;
457
+ }
458
+ .fs-order-4 {
459
+ order: 4;
460
+ }
461
+ .fs-order-5 {
462
+ order: 5;
463
+ }
464
+ .fs-order-6 {
465
+ order: 6;
466
+ }
467
+ .fs-order-7 {
468
+ order: 7;
469
+ }
470
+ .fs-order-8 {
471
+ order: 8;
472
+ }
473
+ .fs-order-9 {
474
+ order: 9;
475
+ }
476
+ .fs-order-10 {
477
+ order: 10;
478
+ }
479
+ .fs-order-11 {
480
+ order: 11;
481
+ }
482
+ .fs-order-12 {
483
+ order: 12;
484
+ }
341
485
  .fs-col {
342
486
  flex: 1 0 0%;
343
487
  }
@@ -394,6 +538,73 @@
394
538
  width: 100%;
395
539
  }
396
540
  @media (min-width: 640px) {
541
+ .fs-row-cols-sm-auto > * {
542
+ flex: 0 0 auto;
543
+ width: auto;
544
+ }
545
+ .fs-row-cols-sm-1 > * {
546
+ flex: 0 0 auto;
547
+ width: 100%;
548
+ }
549
+ .fs-row-cols-sm-2 > * {
550
+ flex: 0 0 auto;
551
+ width: 50%;
552
+ }
553
+ .fs-row-cols-sm-3 > * {
554
+ flex: 0 0 auto;
555
+ width: 33.3333333333%;
556
+ }
557
+ .fs-row-cols-sm-4 > * {
558
+ flex: 0 0 auto;
559
+ width: 25%;
560
+ }
561
+ .fs-row-cols-sm-5 > * {
562
+ flex: 0 0 auto;
563
+ width: 20%;
564
+ }
565
+ .fs-row-cols-sm-6 > * {
566
+ flex: 0 0 auto;
567
+ width: 16.6666666667%;
568
+ }
569
+ .fs-order-sm-0 {
570
+ order: 0;
571
+ }
572
+ .fs-order-sm-1 {
573
+ order: 1;
574
+ }
575
+ .fs-order-sm-2 {
576
+ order: 2;
577
+ }
578
+ .fs-order-sm-3 {
579
+ order: 3;
580
+ }
581
+ .fs-order-sm-4 {
582
+ order: 4;
583
+ }
584
+ .fs-order-sm-5 {
585
+ order: 5;
586
+ }
587
+ .fs-order-sm-6 {
588
+ order: 6;
589
+ }
590
+ .fs-order-sm-7 {
591
+ order: 7;
592
+ }
593
+ .fs-order-sm-8 {
594
+ order: 8;
595
+ }
596
+ .fs-order-sm-9 {
597
+ order: 9;
598
+ }
599
+ .fs-order-sm-10 {
600
+ order: 10;
601
+ }
602
+ .fs-order-sm-11 {
603
+ order: 11;
604
+ }
605
+ .fs-order-sm-12 {
606
+ order: 12;
607
+ }
397
608
  .fs-col-sm {
398
609
  flex: 1 0 0%;
399
610
  }
@@ -451,6 +662,73 @@
451
662
  }
452
663
  }
453
664
  @media (min-width: 768px) {
665
+ .fs-row-cols-md-auto > * {
666
+ flex: 0 0 auto;
667
+ width: auto;
668
+ }
669
+ .fs-row-cols-md-1 > * {
670
+ flex: 0 0 auto;
671
+ width: 100%;
672
+ }
673
+ .fs-row-cols-md-2 > * {
674
+ flex: 0 0 auto;
675
+ width: 50%;
676
+ }
677
+ .fs-row-cols-md-3 > * {
678
+ flex: 0 0 auto;
679
+ width: 33.3333333333%;
680
+ }
681
+ .fs-row-cols-md-4 > * {
682
+ flex: 0 0 auto;
683
+ width: 25%;
684
+ }
685
+ .fs-row-cols-md-5 > * {
686
+ flex: 0 0 auto;
687
+ width: 20%;
688
+ }
689
+ .fs-row-cols-md-6 > * {
690
+ flex: 0 0 auto;
691
+ width: 16.6666666667%;
692
+ }
693
+ .fs-order-md-0 {
694
+ order: 0;
695
+ }
696
+ .fs-order-md-1 {
697
+ order: 1;
698
+ }
699
+ .fs-order-md-2 {
700
+ order: 2;
701
+ }
702
+ .fs-order-md-3 {
703
+ order: 3;
704
+ }
705
+ .fs-order-md-4 {
706
+ order: 4;
707
+ }
708
+ .fs-order-md-5 {
709
+ order: 5;
710
+ }
711
+ .fs-order-md-6 {
712
+ order: 6;
713
+ }
714
+ .fs-order-md-7 {
715
+ order: 7;
716
+ }
717
+ .fs-order-md-8 {
718
+ order: 8;
719
+ }
720
+ .fs-order-md-9 {
721
+ order: 9;
722
+ }
723
+ .fs-order-md-10 {
724
+ order: 10;
725
+ }
726
+ .fs-order-md-11 {
727
+ order: 11;
728
+ }
729
+ .fs-order-md-12 {
730
+ order: 12;
731
+ }
454
732
  .fs-col-md {
455
733
  flex: 1 0 0%;
456
734
  }
@@ -508,6 +786,73 @@
508
786
  }
509
787
  }
510
788
  @media (min-width: 1024px) {
789
+ .fs-row-cols-lg-auto > * {
790
+ flex: 0 0 auto;
791
+ width: auto;
792
+ }
793
+ .fs-row-cols-lg-1 > * {
794
+ flex: 0 0 auto;
795
+ width: 100%;
796
+ }
797
+ .fs-row-cols-lg-2 > * {
798
+ flex: 0 0 auto;
799
+ width: 50%;
800
+ }
801
+ .fs-row-cols-lg-3 > * {
802
+ flex: 0 0 auto;
803
+ width: 33.3333333333%;
804
+ }
805
+ .fs-row-cols-lg-4 > * {
806
+ flex: 0 0 auto;
807
+ width: 25%;
808
+ }
809
+ .fs-row-cols-lg-5 > * {
810
+ flex: 0 0 auto;
811
+ width: 20%;
812
+ }
813
+ .fs-row-cols-lg-6 > * {
814
+ flex: 0 0 auto;
815
+ width: 16.6666666667%;
816
+ }
817
+ .fs-order-lg-0 {
818
+ order: 0;
819
+ }
820
+ .fs-order-lg-1 {
821
+ order: 1;
822
+ }
823
+ .fs-order-lg-2 {
824
+ order: 2;
825
+ }
826
+ .fs-order-lg-3 {
827
+ order: 3;
828
+ }
829
+ .fs-order-lg-4 {
830
+ order: 4;
831
+ }
832
+ .fs-order-lg-5 {
833
+ order: 5;
834
+ }
835
+ .fs-order-lg-6 {
836
+ order: 6;
837
+ }
838
+ .fs-order-lg-7 {
839
+ order: 7;
840
+ }
841
+ .fs-order-lg-8 {
842
+ order: 8;
843
+ }
844
+ .fs-order-lg-9 {
845
+ order: 9;
846
+ }
847
+ .fs-order-lg-10 {
848
+ order: 10;
849
+ }
850
+ .fs-order-lg-11 {
851
+ order: 11;
852
+ }
853
+ .fs-order-lg-12 {
854
+ order: 12;
855
+ }
511
856
  .fs-col-lg {
512
857
  flex: 1 0 0%;
513
858
  }
@@ -565,6 +910,73 @@
565
910
  }
566
911
  }
567
912
  @media (min-width: 1280px) {
913
+ .fs-row-cols-xl-auto > * {
914
+ flex: 0 0 auto;
915
+ width: auto;
916
+ }
917
+ .fs-row-cols-xl-1 > * {
918
+ flex: 0 0 auto;
919
+ width: 100%;
920
+ }
921
+ .fs-row-cols-xl-2 > * {
922
+ flex: 0 0 auto;
923
+ width: 50%;
924
+ }
925
+ .fs-row-cols-xl-3 > * {
926
+ flex: 0 0 auto;
927
+ width: 33.3333333333%;
928
+ }
929
+ .fs-row-cols-xl-4 > * {
930
+ flex: 0 0 auto;
931
+ width: 25%;
932
+ }
933
+ .fs-row-cols-xl-5 > * {
934
+ flex: 0 0 auto;
935
+ width: 20%;
936
+ }
937
+ .fs-row-cols-xl-6 > * {
938
+ flex: 0 0 auto;
939
+ width: 16.6666666667%;
940
+ }
941
+ .fs-order-xl-0 {
942
+ order: 0;
943
+ }
944
+ .fs-order-xl-1 {
945
+ order: 1;
946
+ }
947
+ .fs-order-xl-2 {
948
+ order: 2;
949
+ }
950
+ .fs-order-xl-3 {
951
+ order: 3;
952
+ }
953
+ .fs-order-xl-4 {
954
+ order: 4;
955
+ }
956
+ .fs-order-xl-5 {
957
+ order: 5;
958
+ }
959
+ .fs-order-xl-6 {
960
+ order: 6;
961
+ }
962
+ .fs-order-xl-7 {
963
+ order: 7;
964
+ }
965
+ .fs-order-xl-8 {
966
+ order: 8;
967
+ }
968
+ .fs-order-xl-9 {
969
+ order: 9;
970
+ }
971
+ .fs-order-xl-10 {
972
+ order: 10;
973
+ }
974
+ .fs-order-xl-11 {
975
+ order: 11;
976
+ }
977
+ .fs-order-xl-12 {
978
+ order: 12;
979
+ }
568
980
  .fs-col-xl {
569
981
  flex: 1 0 0%;
570
982
  }
@@ -622,6 +1034,73 @@
622
1034
  }
623
1035
  }
624
1036
  @media (min-width: 1536px) {
1037
+ .fs-row-cols-xxl-auto > * {
1038
+ flex: 0 0 auto;
1039
+ width: auto;
1040
+ }
1041
+ .fs-row-cols-xxl-1 > * {
1042
+ flex: 0 0 auto;
1043
+ width: 100%;
1044
+ }
1045
+ .fs-row-cols-xxl-2 > * {
1046
+ flex: 0 0 auto;
1047
+ width: 50%;
1048
+ }
1049
+ .fs-row-cols-xxl-3 > * {
1050
+ flex: 0 0 auto;
1051
+ width: 33.3333333333%;
1052
+ }
1053
+ .fs-row-cols-xxl-4 > * {
1054
+ flex: 0 0 auto;
1055
+ width: 25%;
1056
+ }
1057
+ .fs-row-cols-xxl-5 > * {
1058
+ flex: 0 0 auto;
1059
+ width: 20%;
1060
+ }
1061
+ .fs-row-cols-xxl-6 > * {
1062
+ flex: 0 0 auto;
1063
+ width: 16.6666666667%;
1064
+ }
1065
+ .fs-order-xxl-0 {
1066
+ order: 0;
1067
+ }
1068
+ .fs-order-xxl-1 {
1069
+ order: 1;
1070
+ }
1071
+ .fs-order-xxl-2 {
1072
+ order: 2;
1073
+ }
1074
+ .fs-order-xxl-3 {
1075
+ order: 3;
1076
+ }
1077
+ .fs-order-xxl-4 {
1078
+ order: 4;
1079
+ }
1080
+ .fs-order-xxl-5 {
1081
+ order: 5;
1082
+ }
1083
+ .fs-order-xxl-6 {
1084
+ order: 6;
1085
+ }
1086
+ .fs-order-xxl-7 {
1087
+ order: 7;
1088
+ }
1089
+ .fs-order-xxl-8 {
1090
+ order: 8;
1091
+ }
1092
+ .fs-order-xxl-9 {
1093
+ order: 9;
1094
+ }
1095
+ .fs-order-xxl-10 {
1096
+ order: 10;
1097
+ }
1098
+ .fs-order-xxl-11 {
1099
+ order: 11;
1100
+ }
1101
+ .fs-order-xxl-12 {
1102
+ order: 12;
1103
+ }
625
1104
  .fs-col-xxl {
626
1105
  flex: 1 0 0%;
627
1106
  }
@@ -679,6 +1158,73 @@
679
1158
  }
680
1159
  }
681
1160
  @media (min-width: 1920px) {
1161
+ .fs-row-cols-xxxl-auto > * {
1162
+ flex: 0 0 auto;
1163
+ width: auto;
1164
+ }
1165
+ .fs-row-cols-xxxl-1 > * {
1166
+ flex: 0 0 auto;
1167
+ width: 100%;
1168
+ }
1169
+ .fs-row-cols-xxxl-2 > * {
1170
+ flex: 0 0 auto;
1171
+ width: 50%;
1172
+ }
1173
+ .fs-row-cols-xxxl-3 > * {
1174
+ flex: 0 0 auto;
1175
+ width: 33.3333333333%;
1176
+ }
1177
+ .fs-row-cols-xxxl-4 > * {
1178
+ flex: 0 0 auto;
1179
+ width: 25%;
1180
+ }
1181
+ .fs-row-cols-xxxl-5 > * {
1182
+ flex: 0 0 auto;
1183
+ width: 20%;
1184
+ }
1185
+ .fs-row-cols-xxxl-6 > * {
1186
+ flex: 0 0 auto;
1187
+ width: 16.6666666667%;
1188
+ }
1189
+ .fs-order-xxxl-0 {
1190
+ order: 0;
1191
+ }
1192
+ .fs-order-xxxl-1 {
1193
+ order: 1;
1194
+ }
1195
+ .fs-order-xxxl-2 {
1196
+ order: 2;
1197
+ }
1198
+ .fs-order-xxxl-3 {
1199
+ order: 3;
1200
+ }
1201
+ .fs-order-xxxl-4 {
1202
+ order: 4;
1203
+ }
1204
+ .fs-order-xxxl-5 {
1205
+ order: 5;
1206
+ }
1207
+ .fs-order-xxxl-6 {
1208
+ order: 6;
1209
+ }
1210
+ .fs-order-xxxl-7 {
1211
+ order: 7;
1212
+ }
1213
+ .fs-order-xxxl-8 {
1214
+ order: 8;
1215
+ }
1216
+ .fs-order-xxxl-9 {
1217
+ order: 9;
1218
+ }
1219
+ .fs-order-xxxl-10 {
1220
+ order: 10;
1221
+ }
1222
+ .fs-order-xxxl-11 {
1223
+ order: 11;
1224
+ }
1225
+ .fs-order-xxxl-12 {
1226
+ order: 12;
1227
+ }
682
1228
  .fs-col-xxxl {
683
1229
  flex: 1 0 0%;
684
1230
  }
@@ -909,6 +1455,30 @@
909
1455
  background-color: var(--fs-color-subtle);
910
1456
  cursor: default;
911
1457
  }
1458
+ .fs-floating-label {
1459
+ position: relative;
1460
+ }
1461
+ .fs-floating-label > .fs-form-control {
1462
+ height: 56px;
1463
+ padding-top: 20px;
1464
+ }
1465
+ .fs-floating-label > .fs-form-label {
1466
+ position: absolute;
1467
+ z-index: 1;
1468
+ top: 8px;
1469
+ left: 8px;
1470
+ color: var(--fs-color-muted);
1471
+ font-size: 0.6875rem;
1472
+ pointer-events: none;
1473
+ }
1474
+ .fs-form-control[aria-invalid=true],
1475
+ .fs-was-validated .fs-form-control:invalid {
1476
+ border-color: var(--fs-color-danger);
1477
+ }
1478
+ .fs-form-control[aria-invalid=false],
1479
+ .fs-was-validated .fs-form-control:valid {
1480
+ border-color: var(--fs-color-success);
1481
+ }
912
1482
  .fs-form-control-sm {
913
1483
  height: var(--fs-control-height-sm);
914
1484
  font-size: 0.6875rem;
@@ -2155,6 +2725,23 @@
2155
2725
  .fs-table-responsive {
2156
2726
  overflow-x: auto;
2157
2727
  }
2728
+ .fs-table-caption {
2729
+ caption-side: top;
2730
+ padding: var(--fs-space-2) 0;
2731
+ color: var(--fs-color-muted);
2732
+ text-align: start;
2733
+ }
2734
+ .fs-table-empty {
2735
+ padding: var(--fs-space-5);
2736
+ color: var(--fs-color-muted);
2737
+ text-align: center;
2738
+ }
2739
+ @media (width < 640px) {
2740
+ .fs-table-priority th:nth-child(n+4),
2741
+ .fs-table-priority td:nth-child(n+4) {
2742
+ display: none;
2743
+ }
2744
+ }
2158
2745
  }
2159
2746
  @layer components {
2160
2747
  .fs-navbar {
@@ -2181,6 +2768,47 @@
2181
2768
  padding: 0;
2182
2769
  list-style: none;
2183
2770
  }
2771
+ .fs-navbar-toggler {
2772
+ display: inline-flex;
2773
+ align-items: center;
2774
+ justify-content: center;
2775
+ min-width: 44px;
2776
+ min-height: 44px;
2777
+ padding: 8px;
2778
+ color: var(--fs-color-text);
2779
+ background: transparent;
2780
+ border: 1px solid var(--fs-color-border);
2781
+ border-radius: var(--fs-radius-sm);
2782
+ cursor: pointer;
2783
+ }
2784
+ .fs-navbar-collapse {
2785
+ flex-basis: 100%;
2786
+ width: 100%;
2787
+ }
2788
+ .fs-navbar-collapse:not(.is-open) {
2789
+ display: none;
2790
+ }
2791
+ .fs-navbar-collapse.is-open .fs-navbar-nav {
2792
+ flex-direction: column;
2793
+ align-items: stretch;
2794
+ }
2795
+ @media (width >= 768px) {
2796
+ .fs-navbar-toggler {
2797
+ display: none;
2798
+ }
2799
+ .fs-navbar-collapse,
2800
+ .fs-navbar-collapse:not(.is-open),
2801
+ .fs-navbar-collapse[hidden] {
2802
+ display: flex;
2803
+ flex: 1 1 auto;
2804
+ align-items: center;
2805
+ justify-content: flex-end;
2806
+ width: auto;
2807
+ }
2808
+ .fs-navbar-collapse .fs-navbar-nav {
2809
+ flex-direction: row;
2810
+ }
2811
+ }
2184
2812
  .fs-nav-link {
2185
2813
  display: inline-flex;
2186
2814
  align-items: center;
@@ -2594,6 +3222,13 @@
2594
3222
  .fs-modal-dialog.fs-modal-lg {
2595
3223
  max-width: 720px;
2596
3224
  }
3225
+ .fs-modal-dialog.fs-modal-xl {
3226
+ max-width: 1140px;
3227
+ }
3228
+ .fs-modal-dialog.fs-modal-fullscreen {
3229
+ max-width: none;
3230
+ height: 100%;
3231
+ }
2597
3232
  .fs-modal-content {
2598
3233
  display: flex;
2599
3234
  flex-direction: column;
@@ -2620,6 +3255,28 @@
2620
3255
  padding: 20px;
2621
3256
  overflow-y: auto;
2622
3257
  }
3258
+ .fs-modal-scrollable .fs-modal-content {
3259
+ overflow: hidden;
3260
+ }
3261
+ .fs-modal-scrollable .fs-modal-body {
3262
+ overflow-y: auto;
3263
+ }
3264
+ @media (width < 640px) {
3265
+ .fs-modal {
3266
+ align-items: flex-end;
3267
+ padding: 0;
3268
+ }
3269
+ .fs-modal-dialog,
3270
+ .fs-modal-dialog.fs-modal-sm,
3271
+ .fs-modal-dialog.fs-modal-lg,
3272
+ .fs-modal-dialog.fs-modal-xl {
3273
+ max-width: none;
3274
+ }
3275
+ .fs-modal-content {
3276
+ max-height: calc(100dvh - var(--fs-safe-area-top));
3277
+ border-radius: var(--fs-radius-md) var(--fs-radius-md) 0 0;
3278
+ }
3279
+ }
2623
3280
  .fs-modal-footer {
2624
3281
  display: flex;
2625
3282
  align-items: center;
@@ -2983,6 +3640,22 @@
2983
3640
  padding: 16px 20px;
2984
3641
  border-top: 1px solid var(--fs-color-border);
2985
3642
  }
3643
+ .fs-offcanvas-responsive {
3644
+ width: min(100%, 420px);
3645
+ }
3646
+ @media (width >= 1024px) {
3647
+ .fs-offcanvas-lg {
3648
+ position: static;
3649
+ width: auto;
3650
+ height: auto;
3651
+ visibility: visible;
3652
+ transform: none;
3653
+ box-shadow: none;
3654
+ }
3655
+ .fs-offcanvas-lg + .fs-offcanvas-backdrop {
3656
+ display: none;
3657
+ }
3658
+ }
2986
3659
  @media (prefers-reduced-motion: reduce) {
2987
3660
  .fs-offcanvas,
2988
3661
  .fs-offcanvas-backdrop {
@@ -3011,6 +3684,16 @@
3011
3684
  border-bottom-right-radius: var(--fs-radius-md);
3012
3685
  border-bottom-left-radius: var(--fs-radius-md);
3013
3686
  }
3687
+ .fs-accordion-flush .fs-accordion-item {
3688
+ border-inline: 0;
3689
+ border-radius: 0;
3690
+ }
3691
+ .fs-accordion-flush .fs-accordion-item:first-child {
3692
+ border-block-start: 0;
3693
+ }
3694
+ .fs-accordion-always-open .fs-accordion-button[aria-expanded=true]::after {
3695
+ transform: rotate(-135deg);
3696
+ }
3014
3697
  .fs-accordion-header {
3015
3698
  margin: 0;
3016
3699
  }
@@ -3059,6 +3742,11 @@
3059
3742
  border-top: 1px solid var(--fs-color-border);
3060
3743
  background-color: var(--fs-color-surface-raised);
3061
3744
  }
3745
+ @media (prefers-reduced-motion: reduce) {
3746
+ .fs-accordion-button::after {
3747
+ transition: none;
3748
+ }
3749
+ }
3062
3750
  }
3063
3751
  @layer components {
3064
3752
  .fs-tabs {
@@ -3320,6 +4008,14 @@
3320
4008
  padding: 0;
3321
4009
  list-style: none;
3322
4010
  }
4011
+ .fs-pagination-scroll {
4012
+ max-width: 100%;
4013
+ overflow-x: auto;
4014
+ padding-block: 2px;
4015
+ }
4016
+ .fs-pagination-scroll .fs-pagination {
4017
+ width: max-content;
4018
+ }
3323
4019
  .fs-page-link {
3324
4020
  display: inline-flex;
3325
4021
  align-items: center;
@@ -3548,6 +4244,9 @@
3548
4244
  --fs-progress-bar-bg: var(--fs-color-info);
3549
4245
  --fs-progress-color: #ffffff;
3550
4246
  }
4247
+ .fs-spinner[data-fs-loading=false] {
4248
+ display: none;
4249
+ }
3551
4250
  .fs-progress-sm {
3552
4251
  --fs-progress-height: 4px;
3553
4252
  }
@@ -4273,6 +4972,22 @@
4273
4972
  .fs-skeleton-rect {
4274
4973
  border-radius: var(--fs-radius-md);
4275
4974
  }
4975
+ .fs-skeleton-card {
4976
+ display: grid;
4977
+ gap: var(--fs-space-3);
4978
+ min-height: 10rem;
4979
+ padding: var(--fs-space-4);
4980
+ border-radius: var(--fs-radius-md);
4981
+ }
4982
+ .fs-skeleton-table {
4983
+ height: 1.25rem;
4984
+ margin-block-end: var(--fs-space-2);
4985
+ }
4986
+ .fs-skeleton-avatar {
4987
+ width: 2.5rem;
4988
+ height: 2.5rem;
4989
+ border-radius: 50%;
4990
+ }
4276
4991
  @keyframes fokus-skeleton-pulse {
4277
4992
  0%, 100% {
4278
4993
  opacity: 1;
@@ -4593,71 +5308,345 @@
4593
5308
  flex: 1 1 auto;
4594
5309
  min-width: 0;
4595
5310
  }
4596
- .fs-tile-title {
4597
- margin: 0;
4598
- color: var(--fs-color-text);
4599
- font-size: 0.8125rem;
4600
- font-weight: 500;
4601
- overflow: hidden;
4602
- text-overflow: ellipsis;
4603
- white-space: nowrap;
5311
+ .fs-tile-title {
5312
+ margin: 0;
5313
+ color: var(--fs-color-text);
5314
+ font-size: 0.8125rem;
5315
+ font-weight: 500;
5316
+ overflow: hidden;
5317
+ text-overflow: ellipsis;
5318
+ white-space: nowrap;
5319
+ }
5320
+ .fs-tile-subtitle {
5321
+ margin: 0;
5322
+ color: var(--fs-color-muted);
5323
+ font-size: 0.75rem;
5324
+ overflow: hidden;
5325
+ text-overflow: ellipsis;
5326
+ white-space: nowrap;
5327
+ }
5328
+ .fs-tile-actions {
5329
+ display: flex;
5330
+ flex-shrink: 0;
5331
+ align-items: center;
5332
+ gap: 8px;
5333
+ }
5334
+ .fs-tile-actions-bottom {
5335
+ flex-wrap: wrap;
5336
+ }
5337
+ .fs-tile-actions-bottom .fs-tile-actions {
5338
+ flex-basis: 100%;
5339
+ justify-content: flex-end;
5340
+ margin-top: 4px;
5341
+ }
5342
+ .fs-tile-clickable {
5343
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
5344
+ }
5345
+ .fs-tile-clickable:hover,
5346
+ .fs-tile-clickable:focus-within {
5347
+ border-color: var(--fs-color-primary);
5348
+ box-shadow: var(--fs-shadow-sm);
5349
+ }
5350
+ .fs-tile-sm {
5351
+ gap: 8px;
5352
+ padding: 8px;
5353
+ }
5354
+ .fs-tile-sm .fs-tile-icon {
5355
+ width: 32px;
5356
+ height: 32px;
5357
+ font-size: 0.8125rem;
5358
+ }
5359
+ .fs-tile-sm .fs-tile-title {
5360
+ font-size: 0.75rem;
5361
+ }
5362
+ .fs-tile-sm .fs-tile-subtitle {
5363
+ font-size: 0.6875rem;
5364
+ }
5365
+ .fs-tile-lg {
5366
+ gap: 16px;
5367
+ padding: 16px;
5368
+ }
5369
+ .fs-tile-lg .fs-tile-icon {
5370
+ width: 48px;
5371
+ height: 48px;
5372
+ font-size: 1.25rem;
5373
+ }
5374
+ .fs-tile-lg .fs-tile-title {
5375
+ font-size: 1rem;
5376
+ }
5377
+ }
5378
+ /* stylelint-disable declaration-block-single-line-max-declarations */
5379
+ @layer components {
5380
+ .fs-avatar {
5381
+ display: inline-flex;
5382
+ flex: 0 0 auto;
5383
+ align-items: center;
5384
+ justify-content: center;
5385
+ width: 2.5rem;
5386
+ height: 2.5rem;
5387
+ overflow: hidden;
5388
+ color: var(--fs-color-on-primary);
5389
+ font-weight: 600;
5390
+ background: var(--fs-color-primary);
5391
+ border-radius: 50%;
5392
+ object-fit: cover;
5393
+ }
5394
+ .fs-avatar-sm {
5395
+ width: 2rem;
5396
+ height: 2rem;
5397
+ font-size: 0.8125rem;
5398
+ }
5399
+ .fs-avatar-lg {
5400
+ width: 3.5rem;
5401
+ height: 3.5rem;
5402
+ font-size: 1.25rem;
5403
+ }
5404
+ .fs-avatar-square {
5405
+ border-radius: var(--fs-radius-md);
5406
+ }
5407
+ .fs-avatar img {
5408
+ width: 100%;
5409
+ height: 100%;
5410
+ object-fit: cover;
5411
+ }
5412
+ }
5413
+ /* stylelint-disable declaration-block-single-line-max-declarations */
5414
+ @layer components {
5415
+ .fs-button-group {
5416
+ display: inline-flex;
5417
+ vertical-align: middle;
5418
+ }
5419
+ .fs-button-group > .fs-btn {
5420
+ border-radius: 0;
5421
+ }
5422
+ .fs-button-group > .fs-btn:first-child {
5423
+ border-start-start-radius: var(--fs-radius-sm);
5424
+ border-end-start-radius: var(--fs-radius-sm);
5425
+ }
5426
+ .fs-button-group > .fs-btn:last-child {
5427
+ border-start-end-radius: var(--fs-radius-sm);
5428
+ border-end-end-radius: var(--fs-radius-sm);
5429
+ }
5430
+ .fs-button-group > .fs-btn + .fs-btn {
5431
+ margin-inline-start: -1px;
5432
+ }
5433
+ .fs-button-group-vertical {
5434
+ flex-direction: column;
5435
+ align-items: flex-start;
5436
+ }
5437
+ .fs-button-group-vertical > .fs-btn {
5438
+ width: 100%;
5439
+ }
5440
+ }
5441
+ /* stylelint-disable declaration-block-single-line-max-declarations */
5442
+ @layer components {
5443
+ .fs-close {
5444
+ display: inline-grid;
5445
+ width: 2rem;
5446
+ height: 2rem;
5447
+ place-items: center;
5448
+ padding: 0;
5449
+ color: currentcolor;
5450
+ font-size: 1.5rem;
5451
+ line-height: 1;
5452
+ background: transparent;
5453
+ border: 0;
5454
+ border-radius: 50%;
5455
+ cursor: pointer;
5456
+ opacity: 0.72;
5457
+ }
5458
+ .fs-close::before {
5459
+ content: "×";
5460
+ }
5461
+ .fs-close:hover {
5462
+ opacity: 1;
5463
+ background: var(--fs-color-subtle);
5464
+ }
5465
+ .fs-close:focus-visible {
5466
+ outline: var(--fs-focus-width) solid var(--fs-focus-color);
5467
+ outline-offset: var(--fs-focus-offset);
5468
+ }
5469
+ }
5470
+ /* stylelint-disable declaration-block-single-line-max-declarations */
5471
+ @layer components {
5472
+ .fs-list-group {
5473
+ display: flex;
5474
+ flex-direction: column;
5475
+ padding: 0;
5476
+ margin: 0;
5477
+ list-style: none;
5478
+ border: 1px solid var(--fs-color-border);
5479
+ border-radius: var(--fs-radius-md);
5480
+ }
5481
+ .fs-list-group-item {
5482
+ position: relative;
5483
+ display: block;
5484
+ padding: var(--fs-space-3) var(--fs-space-4);
5485
+ color: var(--fs-color-text);
5486
+ background: var(--fs-color-surface);
5487
+ border-block-end: 1px solid var(--fs-color-border);
5488
+ }
5489
+ .fs-list-group-item:last-child {
5490
+ border-block-end: 0;
5491
+ }
5492
+ button.fs-list-group-item, a.fs-list-group-item {
5493
+ width: 100%;
5494
+ text-align: start;
5495
+ cursor: pointer;
5496
+ }
5497
+ .fs-list-group-item:hover {
5498
+ background: var(--fs-color-subtle);
5499
+ }
5500
+ .fs-list-group-item.is-active {
5501
+ color: var(--fs-color-on-primary);
5502
+ background: var(--fs-color-primary);
5503
+ }
5504
+ }
5505
+ @layer components {
5506
+ .fs-code {
5507
+ padding: 0.125em 0.35em;
5508
+ color: var(--fs-color-danger);
5509
+ background: var(--fs-color-subtle);
5510
+ border-radius: var(--fs-radius-sm);
5511
+ }
5512
+ .fs-pre {
5513
+ display: block;
5514
+ max-width: 100%;
5515
+ padding: var(--fs-space-4);
5516
+ overflow: auto;
5517
+ color: var(--fs-color-text);
5518
+ background: var(--fs-color-subtle);
5519
+ border: 1px solid var(--fs-color-border);
5520
+ border-radius: var(--fs-radius-md);
5521
+ }
5522
+ }
5523
+ /* stylelint-disable declaration-block-single-line-max-declarations */
5524
+ @layer components {
5525
+ .fs-ratio {
5526
+ position: relative;
5527
+ width: 100%;
5528
+ }
5529
+ .fs-ratio::before {
5530
+ display: block;
5531
+ padding-top: var(--fs-ratio, 56.25%);
5532
+ content: "";
5533
+ }
5534
+ .fs-ratio > * {
5535
+ position: absolute;
5536
+ inset: 0;
5537
+ width: 100%;
5538
+ height: 100%;
5539
+ object-fit: cover;
5540
+ }
5541
+ .fs-ratio-1x1 {
5542
+ --fs-ratio: 100%;
4604
5543
  }
4605
- .fs-tile-subtitle {
4606
- margin: 0;
4607
- color: var(--fs-color-muted);
4608
- font-size: 0.75rem;
4609
- overflow: hidden;
4610
- text-overflow: ellipsis;
4611
- white-space: nowrap;
5544
+ .fs-ratio-4x3 {
5545
+ --fs-ratio: 75%;
4612
5546
  }
4613
- .fs-tile-actions {
4614
- display: flex;
4615
- flex-shrink: 0;
5547
+ .fs-ratio-16x9 {
5548
+ --fs-ratio: 56.25%;
5549
+ }
5550
+ .fs-ratio-21x9 {
5551
+ --fs-ratio: 42.857%;
5552
+ }
5553
+ }
5554
+ /* stylelint-disable declaration-block-single-line-max-declarations */
5555
+ @layer components {
5556
+ .fs-icon-link {
5557
+ display: inline-flex;
5558
+ gap: 0.5em;
4616
5559
  align-items: center;
4617
- gap: 8px;
4618
5560
  }
4619
- .fs-tile-actions-bottom {
4620
- flex-wrap: wrap;
5561
+ .fs-icon-link svg {
5562
+ width: 1em;
5563
+ height: 1em;
5564
+ flex: 0 0 auto;
4621
5565
  }
4622
- .fs-tile-actions-bottom .fs-tile-actions {
4623
- flex-basis: 100%;
4624
- justify-content: flex-end;
4625
- margin-top: 4px;
5566
+ .fs-icon-link:hover svg {
5567
+ transform: translateX(0.15em);
4626
5568
  }
4627
- .fs-tile-clickable {
4628
- transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
5569
+ @media (prefers-reduced-motion: reduce) {
5570
+ .fs-icon-link svg {
5571
+ transition: none;
5572
+ }
4629
5573
  }
4630
- .fs-tile-clickable:hover,
4631
- .fs-tile-clickable:focus-within {
4632
- border-color: var(--fs-color-primary);
4633
- box-shadow: var(--fs-shadow-sm);
5574
+ }
5575
+ /* stylelint-disable declaration-block-single-line-max-declarations */
5576
+ @layer components {
5577
+ .fs-placeholder {
5578
+ display: inline-block;
5579
+ min-height: 1em;
5580
+ vertical-align: middle;
5581
+ cursor: wait;
5582
+ background: currentcolor;
5583
+ opacity: 0.18;
4634
5584
  }
4635
- .fs-tile-sm {
4636
- gap: 8px;
4637
- padding: 8px;
5585
+ .fs-placeholder-glow {
5586
+ animation: fs-placeholder-glow 1.5s ease-in-out infinite;
4638
5587
  }
4639
- .fs-tile-sm .fs-tile-icon {
4640
- width: 32px;
4641
- height: 32px;
4642
- font-size: 0.8125rem;
5588
+ .fs-placeholder-wave {
5589
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.35), transparent), currentcolor;
5590
+ background-size: 200% 100%;
5591
+ animation: fs-placeholder-wave 1.5s linear infinite;
4643
5592
  }
4644
- .fs-tile-sm .fs-tile-title {
4645
- font-size: 0.75rem;
5593
+ .fs-placeholder-btn {
5594
+ width: 6rem;
5595
+ height: 2.5rem;
5596
+ border-radius: var(--fs-radius-sm);
4646
5597
  }
4647
- .fs-tile-sm .fs-tile-subtitle {
4648
- font-size: 0.6875rem;
5598
+ @keyframes fs-placeholder-glow {
5599
+ 50% {
5600
+ opacity: 0.08;
5601
+ }
4649
5602
  }
4650
- .fs-tile-lg {
4651
- gap: 16px;
4652
- padding: 16px;
5603
+ @keyframes fs-placeholder-wave {
5604
+ to {
5605
+ background-position: -200% 0;
5606
+ }
4653
5607
  }
4654
- .fs-tile-lg .fs-tile-icon {
4655
- width: 48px;
4656
- height: 48px;
4657
- font-size: 1.25rem;
5608
+ @media (prefers-reduced-motion: reduce) {
5609
+ .fs-placeholder-glow, .fs-placeholder-wave {
5610
+ animation: none;
5611
+ }
4658
5612
  }
4659
- .fs-tile-lg .fs-tile-title {
4660
- font-size: 1rem;
5613
+ }
5614
+ /* stylelint-disable declaration-block-single-line-max-declarations */
5615
+ @layer components {
5616
+ .fs-progress {
5617
+ display: flex;
5618
+ height: 0.75rem;
5619
+ overflow: hidden;
5620
+ background: var(--fs-color-subtle);
5621
+ border-radius: 999px;
5622
+ }
5623
+ .fs-progress-bar {
5624
+ display: flex;
5625
+ align-items: center;
5626
+ justify-content: center;
5627
+ color: var(--fs-color-on-primary);
5628
+ background: var(--fs-color-primary);
5629
+ transition: width var(--fs-motion-duration-normal) var(--fs-motion-ease-standard);
5630
+ }
5631
+ .fs-progress-bar-striped {
5632
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%);
5633
+ background-size: 1rem 1rem;
5634
+ }
5635
+ @media (prefers-reduced-motion: reduce) {
5636
+ .fs-progress-bar {
5637
+ transition: none;
5638
+ }
5639
+ }
5640
+ }
5641
+ /* stylelint-disable declaration-block-single-line-max-declarations */
5642
+ @layer components {
5643
+ [data-fs-scrollspy] .is-active {
5644
+ color: var(--fs-color-primary);
5645
+ font-weight: 600;
5646
+ }
5647
+ .fs-scrollspy-nav {
5648
+ position: sticky;
5649
+ inset-block-start: var(--fs-space-4);
4661
5650
  }
4662
5651
  }
4663
5652
  @layer utilities {
@@ -8029,6 +9018,291 @@
8029
9018
  .fs-u-invisible {
8030
9019
  visibility: hidden;
8031
9020
  }
9021
+ .fs-u-visually-hidden,
9022
+ .fs-u-visually-hidden-focusable {
9023
+ position: absolute !important;
9024
+ width: 1px !important;
9025
+ height: 1px !important;
9026
+ padding: 0 !important;
9027
+ margin: -1px !important;
9028
+ overflow: hidden !important;
9029
+ clip-path: inset(50%) !important;
9030
+ white-space: nowrap !important;
9031
+ border: 0 !important;
9032
+ }
9033
+ .fs-u-visually-hidden-focusable:focus,
9034
+ .fs-u-visually-hidden-focusable:focus-within {
9035
+ position: static !important;
9036
+ width: auto !important;
9037
+ height: auto !important;
9038
+ margin: 0 !important;
9039
+ overflow: visible !important;
9040
+ clip-path: none !important;
9041
+ white-space: normal !important;
9042
+ }
9043
+ }
9044
+ @layer utilities {
9045
+ .fs-u-focus-ring:focus-visible {
9046
+ outline: var(--fs-focus-width) solid var(--fs-focus-color);
9047
+ outline-offset: var(--fs-focus-offset);
9048
+ box-shadow: 0 0 0 var(--fs-focus-ring-size) var(--fs-focus-ring-color);
9049
+ }
9050
+ .fs-u-disabled,
9051
+ .fs-u-disabled[aria-disabled=true] {
9052
+ cursor: not-allowed;
9053
+ opacity: var(--fs-disabled-opacity);
9054
+ pointer-events: none;
9055
+ }
9056
+ @media print {
9057
+ .fs-u-print-hidden {
9058
+ display: none !important;
9059
+ }
9060
+ .fs-u-print-visible {
9061
+ display: block !important;
9062
+ }
9063
+ }
9064
+ }
9065
+ @layer utilities {
9066
+ .fs-u-color-primary {
9067
+ color: var(--fs-color-primary, oklch(53.5630074284% 0.2132145174 261.6264320248deg)) !important;
9068
+ }
9069
+ .fs-u-bg-primary {
9070
+ background-color: var(--fs-color-primary, oklch(53.5630074284% 0.2132145174 261.6264320248deg)) !important;
9071
+ }
9072
+ .fs-u-color-secondary {
9073
+ color: var(--fs-color-secondary, oklch(55.4391007662% 0.040717043 257.4166191214deg)) !important;
9074
+ }
9075
+ .fs-u-bg-secondary {
9076
+ background-color: var(--fs-color-secondary, oklch(55.4391007662% 0.040717043 257.4166191214deg)) !important;
9077
+ }
9078
+ .fs-u-color-success {
9079
+ color: var(--fs-color-success, oklch(75.151587899% 0.2146126169 148.125846236deg)) !important;
9080
+ }
9081
+ .fs-u-bg-success {
9082
+ background-color: var(--fs-color-success, oklch(75.151587899% 0.2146126169 148.125846236deg)) !important;
9083
+ }
9084
+ .fs-u-color-warning {
9085
+ color: var(--fs-color-warning, oklch(81.9510815663% 0.1562613975 78.6575213966deg)) !important;
9086
+ }
9087
+ .fs-u-bg-warning {
9088
+ background-color: var(--fs-color-warning, oklch(81.9510815663% 0.1562613975 78.6575213966deg)) !important;
9089
+ }
9090
+ .fs-u-color-danger {
9091
+ color: var(--fs-color-danger, oklch(55.9653139301% 0.1897270855 25.2407937498deg)) !important;
9092
+ }
9093
+ .fs-u-bg-danger {
9094
+ background-color: var(--fs-color-danger, oklch(55.9653139301% 0.1897270855 25.2407937498deg)) !important;
9095
+ }
9096
+ .fs-u-color-info {
9097
+ color: var(--fs-color-info, oklch(53.3359780029% 0.1620131129 280.2231949375deg)) !important;
9098
+ }
9099
+ .fs-u-bg-info {
9100
+ background-color: var(--fs-color-info, oklch(53.3359780029% 0.1620131129 280.2231949375deg)) !important;
9101
+ }
9102
+ .fs-u-m-0 {
9103
+ margin: 0 !important;
9104
+ }
9105
+ .fs-u-mx-0 {
9106
+ margin-inline: 0 !important;
9107
+ }
9108
+ .fs-u-my-0 {
9109
+ margin-block: 0 !important;
9110
+ }
9111
+ .fs-u-p-0 {
9112
+ padding: 0 !important;
9113
+ }
9114
+ .fs-u-px-0 {
9115
+ padding-inline: 0 !important;
9116
+ }
9117
+ .fs-u-py-0 {
9118
+ padding-block: 0 !important;
9119
+ }
9120
+ .fs-u-m-1 {
9121
+ margin: 0.25rem !important;
9122
+ }
9123
+ .fs-u-mx-1 {
9124
+ margin-inline: 0.25rem !important;
9125
+ }
9126
+ .fs-u-my-1 {
9127
+ margin-block: 0.25rem !important;
9128
+ }
9129
+ .fs-u-p-1 {
9130
+ padding: 0.25rem !important;
9131
+ }
9132
+ .fs-u-px-1 {
9133
+ padding-inline: 0.25rem !important;
9134
+ }
9135
+ .fs-u-py-1 {
9136
+ padding-block: 0.25rem !important;
9137
+ }
9138
+ .fs-u-m-2 {
9139
+ margin: 0.5rem !important;
9140
+ }
9141
+ .fs-u-mx-2 {
9142
+ margin-inline: 0.5rem !important;
9143
+ }
9144
+ .fs-u-my-2 {
9145
+ margin-block: 0.5rem !important;
9146
+ }
9147
+ .fs-u-p-2 {
9148
+ padding: 0.5rem !important;
9149
+ }
9150
+ .fs-u-px-2 {
9151
+ padding-inline: 0.5rem !important;
9152
+ }
9153
+ .fs-u-py-2 {
9154
+ padding-block: 0.5rem !important;
9155
+ }
9156
+ .fs-u-m-3 {
9157
+ margin: 1rem !important;
9158
+ }
9159
+ .fs-u-mx-3 {
9160
+ margin-inline: 1rem !important;
9161
+ }
9162
+ .fs-u-my-3 {
9163
+ margin-block: 1rem !important;
9164
+ }
9165
+ .fs-u-p-3 {
9166
+ padding: 1rem !important;
9167
+ }
9168
+ .fs-u-px-3 {
9169
+ padding-inline: 1rem !important;
9170
+ }
9171
+ .fs-u-py-3 {
9172
+ padding-block: 1rem !important;
9173
+ }
9174
+ .fs-u-m-4 {
9175
+ margin: 1.5rem !important;
9176
+ }
9177
+ .fs-u-mx-4 {
9178
+ margin-inline: 1.5rem !important;
9179
+ }
9180
+ .fs-u-my-4 {
9181
+ margin-block: 1.5rem !important;
9182
+ }
9183
+ .fs-u-p-4 {
9184
+ padding: 1.5rem !important;
9185
+ }
9186
+ .fs-u-px-4 {
9187
+ padding-inline: 1.5rem !important;
9188
+ }
9189
+ .fs-u-py-4 {
9190
+ padding-block: 1.5rem !important;
9191
+ }
9192
+ .fs-u-m-5 {
9193
+ margin: 3rem !important;
9194
+ }
9195
+ .fs-u-mx-5 {
9196
+ margin-inline: 3rem !important;
9197
+ }
9198
+ .fs-u-my-5 {
9199
+ margin-block: 3rem !important;
9200
+ }
9201
+ .fs-u-p-5 {
9202
+ padding: 3rem !important;
9203
+ }
9204
+ .fs-u-px-5 {
9205
+ padding-inline: 3rem !important;
9206
+ }
9207
+ .fs-u-py-5 {
9208
+ padding-block: 3rem !important;
9209
+ }
9210
+ .fs-u-w-25 {
9211
+ width: 25% !important;
9212
+ }
9213
+ .fs-u-h-25 {
9214
+ height: 25% !important;
9215
+ }
9216
+ .fs-u-w-50 {
9217
+ width: 50% !important;
9218
+ }
9219
+ .fs-u-h-50 {
9220
+ height: 50% !important;
9221
+ }
9222
+ .fs-u-w-75 {
9223
+ width: 75% !important;
9224
+ }
9225
+ .fs-u-h-75 {
9226
+ height: 75% !important;
9227
+ }
9228
+ .fs-u-w-100 {
9229
+ width: 100% !important;
9230
+ }
9231
+ .fs-u-h-100 {
9232
+ height: 100% !important;
9233
+ }
9234
+ .fs-u-w-auto {
9235
+ width: auto !important;
9236
+ }
9237
+ .fs-u-h-auto {
9238
+ height: auto !important;
9239
+ }
9240
+ @media (min-width: 640px) {
9241
+ .fs-u-d-sm-flex {
9242
+ display: flex !important;
9243
+ }
9244
+ .fs-u-d-sm-none {
9245
+ display: none !important;
9246
+ }
9247
+ .fs-u-text-sm-start {
9248
+ text-align: start !important;
9249
+ }
9250
+ }
9251
+ @media (min-width: 768px) {
9252
+ .fs-u-d-md-flex {
9253
+ display: flex !important;
9254
+ }
9255
+ .fs-u-d-md-none {
9256
+ display: none !important;
9257
+ }
9258
+ .fs-u-text-md-start {
9259
+ text-align: start !important;
9260
+ }
9261
+ }
9262
+ @media (min-width: 1024px) {
9263
+ .fs-u-d-lg-flex {
9264
+ display: flex !important;
9265
+ }
9266
+ .fs-u-d-lg-none {
9267
+ display: none !important;
9268
+ }
9269
+ .fs-u-text-lg-start {
9270
+ text-align: start !important;
9271
+ }
9272
+ }
9273
+ @media (min-width: 1280px) {
9274
+ .fs-u-d-xl-flex {
9275
+ display: flex !important;
9276
+ }
9277
+ .fs-u-d-xl-none {
9278
+ display: none !important;
9279
+ }
9280
+ .fs-u-text-xl-start {
9281
+ text-align: start !important;
9282
+ }
9283
+ }
9284
+ @media (min-width: 1536px) {
9285
+ .fs-u-d-xxl-flex {
9286
+ display: flex !important;
9287
+ }
9288
+ .fs-u-d-xxl-none {
9289
+ display: none !important;
9290
+ }
9291
+ .fs-u-text-xxl-start {
9292
+ text-align: start !important;
9293
+ }
9294
+ }
9295
+ @media (min-width: 1920px) {
9296
+ .fs-u-d-xxxl-flex {
9297
+ display: flex !important;
9298
+ }
9299
+ .fs-u-d-xxxl-none {
9300
+ display: none !important;
9301
+ }
9302
+ .fs-u-text-xxxl-start {
9303
+ text-align: start !important;
9304
+ }
9305
+ }
8032
9306
  }
8033
9307
  @layer tokens {
8034
9308
  [data-fs-brand=violet] {
@@ -8125,7 +9399,8 @@
8125
9399
  }
8126
9400
  }
8127
9401
  @layer tokens {
8128
- [data-theme=dark] {
9402
+ [data-theme=dark],
9403
+ [data-fs-theme=dark] {
8129
9404
  --fs-color-text: #f1f3f4;
8130
9405
  --fs-color-muted: #bdc1c6;
8131
9406
  --fs-color-border: #3c4043;
@@ -8172,7 +9447,8 @@
8172
9447
  --fs-feedback-info-bg: rgb(35.0058091619, 49.6887857769, 78.5757788254);
8173
9448
  }
8174
9449
  @supports (color: oklch(0% 0 0deg)) {
8175
- [data-theme=dark] {
9450
+ [data-theme=dark],
9451
+ [data-fs-theme=dark] {
8176
9452
  --fs-color-text: oklch(96.2913383165% 0.002529697 228.7848682695deg);
8177
9453
  --fs-color-muted: oklch(80.9268110646% 0.0083071608 253.8653061211deg);
8178
9454
  --fs-color-border: oklch(36.8827622528% 0.0074489239 240.018838067deg);
@@ -8216,5 +9492,37 @@
8216
9492
  --fs-feedback-info-bg: oklch(31.7574919059% 0.0556228738 263.0598185246deg);
8217
9493
  }
8218
9494
  }
9495
+ @media (prefers-color-scheme: dark) {
9496
+ [data-fs-theme=auto] {
9497
+ --fs-color-text: #f1f3f4;
9498
+ --fs-color-muted: #bdc1c6;
9499
+ --fs-color-border: #3c4043;
9500
+ --fs-color-surface: #202124;
9501
+ --fs-color-subtle: #2b2c2f;
9502
+ --fs-color-bg-surface: var(--fs-color-surface);
9503
+ --fs-color-bg-subtle: var(--fs-color-subtle);
9504
+ --fs-color-surface-raised: var(--fs-color-surface);
9505
+ --fs-color-surface-interactive: var(--fs-color-subtle);
9506
+ --fs-color-text-primary: var(--fs-color-text);
9507
+ --fs-color-text-muted: var(--fs-color-muted);
9508
+ --fs-color-border-default: var(--fs-color-border);
9509
+ --fs-color-focus: var(--fs-color-primary);
9510
+ --fs-tooltip-bg: #f8fafc;
9511
+ --fs-tooltip-text: #1e293b;
9512
+ }
9513
+ }
9514
+ @media (forced-colors: active) {
9515
+ :root,
9516
+ [data-theme=dark],
9517
+ [data-fs-theme=light],
9518
+ [data-fs-theme=dark],
9519
+ [data-fs-theme=auto] {
9520
+ --fs-color-border: CanvasText;
9521
+ --fs-color-text: CanvasText;
9522
+ --fs-color-surface: Canvas;
9523
+ --fs-color-subtle: Canvas;
9524
+ --fs-focus-color: Highlight;
9525
+ }
9526
+ }
8219
9527
  }
8220
9528
  /*# sourceMappingURL=fokus.css.map */