fokus-styles 2.0.0 → 2.3.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 (131) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +4 -3
  3. package/dist/css/components.css +510 -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 +4050 -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 +1563 -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 +304 -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-utilities.css +4176 -0
  20. package/dist/css/fokus-utilities.css.map +1 -0
  21. package/dist/css/fokus-utilities.min.css +2 -0
  22. package/dist/css/fokus-utilities.min.css.map +1 -0
  23. package/dist/css/fokus.css +1339 -53
  24. package/dist/css/fokus.css.map +1 -1
  25. package/dist/css/fokus.min.css +1 -1
  26. package/dist/css/fokus.min.css.map +1 -1
  27. package/dist/css/forms.css +115 -2
  28. package/dist/css/forms.css.map +1 -1
  29. package/dist/css/forms.min.css +1 -1
  30. package/dist/css/forms.min.css.map +1 -1
  31. package/dist/css/helpers.css +376 -2
  32. package/dist/css/helpers.css.map +1 -1
  33. package/dist/css/helpers.min.css +1 -1
  34. package/dist/css/helpers.min.css.map +1 -1
  35. package/dist/css/layout.css +560 -2
  36. package/dist/css/layout.css.map +1 -1
  37. package/dist/css/layout.min.css +1 -1
  38. package/dist/css/layout.min.css.map +1 -1
  39. package/dist/js/fokus.js +347 -12
  40. package/dist/js/fokus.js.map +4 -4
  41. package/dist/js/fokus.min.js +17 -17
  42. package/dist/js/fokus.min.js.map +4 -4
  43. package/docs/components/accordion.md +3 -0
  44. package/docs/components/avatar.md +13 -0
  45. package/docs/components/button-group.md +13 -0
  46. package/docs/components/close-button.md +13 -0
  47. package/docs/components/code.md +13 -0
  48. package/docs/components/icon-link.md +13 -0
  49. package/docs/components/list-group.md +13 -0
  50. package/docs/components/modal.md +3 -0
  51. package/docs/components/navbar.md +3 -0
  52. package/docs/components/pagination.md +3 -0
  53. package/docs/components/placeholder.md +13 -0
  54. package/docs/components/ratio.md +13 -0
  55. package/docs/components/scrollspy.md +13 -0
  56. package/docs/components/skeleton.md +3 -0
  57. package/docs/components/table.md +3 -0
  58. package/docs/guides/javascript-api.md +9 -0
  59. package/docs/guides/utility-api.md +9 -0
  60. package/docs/reference/size-baseline.json +13 -13
  61. package/mockup/assets/example-theme.css +3 -1
  62. package/mockup/assets/example-theme.js +2 -0
  63. package/mockup/assets/showcase-contracts.js +2 -2
  64. package/mockup/assets/showcase.css +4 -2
  65. package/mockup/assets/showcase.js +2 -0
  66. package/mockup/examples/js-foundation.html +25 -0
  67. package/mockup/examples/tables-navbar.html +12 -8
  68. package/mockup/examples/theming.html +2 -1
  69. package/mockup/foundations.html +2 -2
  70. package/package.json +14 -1
  71. package/packages/fokus-cli/bin/fokus.mjs +18 -1
  72. package/packages/fokus-cli/lib/build.mjs +12 -2
  73. package/packages/fokus-components/scss/components/_accordion.scss +19 -0
  74. package/packages/fokus-components/scss/components/_avatar.scss +22 -0
  75. package/packages/fokus-components/scss/components/_button-group.scss +14 -0
  76. package/packages/fokus-components/scss/components/_close-button.scss +22 -0
  77. package/packages/fokus-components/scss/components/_code.scss +19 -0
  78. package/packages/fokus-components/scss/components/_icon-link.scss +8 -0
  79. package/packages/fokus-components/scss/components/_index.scss +10 -0
  80. package/packages/fokus-components/scss/components/_list-group.scss +26 -0
  81. package/packages/fokus-components/scss/components/_modal.scss +36 -0
  82. package/packages/fokus-components/scss/components/_navbar.scss +48 -0
  83. package/packages/fokus-components/scss/components/_offcanvas.scss +19 -0
  84. package/packages/fokus-components/scss/components/_pagination.scss +10 -0
  85. package/packages/fokus-components/scss/components/_placeholder.scss +13 -0
  86. package/packages/fokus-components/scss/components/_progress.scss +8 -0
  87. package/packages/fokus-components/scss/components/_ratio.scss +10 -0
  88. package/packages/fokus-components/scss/components/_scrollspy.scss +5 -0
  89. package/packages/fokus-components/scss/components/_skeleton.scss +19 -0
  90. package/packages/fokus-components/scss/components/_spinner.scss +9 -53
  91. package/packages/fokus-components/scss/components/_tables.scss +20 -0
  92. package/packages/fokus-components/scss/forms/_forms.scss +29 -0
  93. package/packages/fokus-core/scss/base/_accessibility.scss +45 -0
  94. package/packages/fokus-core/scss/base/_index.scss +1 -0
  95. package/packages/fokus-core/scss/layout/_grid.scss +18 -0
  96. package/packages/fokus-core/scss/settings/_config.scss +43 -0
  97. package/packages/fokus-core/scss/settings/_index.scss +1 -0
  98. package/packages/fokus-core/scss/themes/_dark.scss +38 -2
  99. package/packages/fokus-core/scss/tokens/_root.scss +14 -0
  100. package/packages/fokus-core/scss/tools/_mixins.scss +8 -0
  101. package/packages/fokus-js/js/accordion.js +7 -1
  102. package/packages/fokus-js/js/core/focus.js +20 -0
  103. package/packages/fokus-js/js/core/overlay.d.ts +2 -0
  104. package/packages/fokus-js/js/core/overlay.js +10 -0
  105. package/packages/fokus-js/js/core/register.js +4 -2
  106. package/packages/fokus-js/js/focus-trap.d.ts +3 -0
  107. package/packages/fokus-js/js/focus-trap.js +1 -0
  108. package/packages/fokus-js/js/fokus.d.ts +7 -0
  109. package/packages/fokus-js/js/fokus.js +7 -0
  110. package/packages/fokus-js/js/form-validation.d.ts +7 -0
  111. package/packages/fokus-js/js/form-validation.js +20 -0
  112. package/packages/fokus-js/js/modal.js +16 -2
  113. package/packages/fokus-js/js/navbar.d.ts +10 -0
  114. package/packages/fokus-js/js/navbar.js +27 -0
  115. package/packages/fokus-js/js/offcanvas.d.ts +4 -0
  116. package/packages/fokus-js/js/offcanvas.js +16 -2
  117. package/packages/fokus-js/js/pagination.d.ts +7 -0
  118. package/packages/fokus-js/js/pagination.js +38 -0
  119. package/packages/fokus-js/js/scrollspy.d.ts +7 -0
  120. package/packages/fokus-js/js/scrollspy.js +26 -0
  121. package/packages/fokus-js/js/spinner.d.ts +9 -0
  122. package/packages/fokus-js/js/spinner.js +18 -0
  123. package/packages/fokus-js/js/theme.d.ts +9 -0
  124. package/packages/fokus-js/js/theme.js +19 -0
  125. package/packages/fokus-js/js/toast.js +4 -0
  126. package/packages/fokus-utilities/scss/utilities/_api.scss +48 -0
  127. package/packages/fokus-utilities/scss/utilities/_index.scss +2 -0
  128. package/packages/fokus-utilities/scss/utilities/_states.scss +19 -0
  129. package/packages/fokus-utilities/scss/utilities/_visibility.scss +24 -0
  130. package/scss/entries/core-entry.scss +5 -0
  131. package/scss/entries/dark-entry.scss +3 -0
@@ -48,12 +48,26 @@
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);
57
71
  --fs-cq-sm: 320px;
58
72
  --fs-cq-md: 480px;
59
73
  --fs-cq-lg: 640px;
@@ -243,6 +257,47 @@
243
257
  }
244
258
  }
245
259
  }
260
+ /* stylelint-disable property-no-deprecated, selector-not-notation */
261
+ @layer reset {
262
+ :focus-visible {
263
+ outline: var(--fs-focus-width) solid var(--fs-focus-color);
264
+ outline-offset: var(--fs-focus-offset);
265
+ }
266
+ @media (forced-colors: active) {
267
+ :focus-visible {
268
+ outline: 2px solid CanvasText;
269
+ outline-offset: 2px;
270
+ }
271
+ }
272
+ }
273
+ @layer utilities {
274
+ .fs-u-visually-hidden:not(:focus):not(:focus-within),
275
+ .fs-u-visually-hidden-focusable:not(:focus):not(:focus-within) {
276
+ position: absolute !important;
277
+ width: 1px !important;
278
+ height: 1px !important;
279
+ padding: 0 !important;
280
+ margin: -1px !important;
281
+ overflow: hidden !important;
282
+ clip-path: inset(50%) !important;
283
+ white-space: nowrap !important;
284
+ border: 0 !important;
285
+ }
286
+ .fs-skip-link {
287
+ position: fixed;
288
+ z-index: 1000;
289
+ inset-block-start: var(--fs-space-2);
290
+ inset-inline-start: var(--fs-space-2);
291
+ transform: translateY(-200%);
292
+ padding: var(--fs-space-2) var(--fs-space-3);
293
+ color: var(--fs-color-on-primary);
294
+ background: var(--fs-color-primary);
295
+ border-radius: var(--fs-radius-sm);
296
+ }
297
+ .fs-skip-link:focus {
298
+ transform: translateY(0);
299
+ }
300
+ }
246
301
  @layer layout {
247
302
  .fs-cluster {
248
303
  display: flex;
@@ -338,6 +393,73 @@
338
393
  .fs-col-fluid {
339
394
  width: 100%;
340
395
  }
396
+ .fs-row-cols-auto > * {
397
+ flex: 0 0 auto;
398
+ width: auto;
399
+ }
400
+ .fs-row-cols-1 > * {
401
+ flex: 0 0 auto;
402
+ width: 100%;
403
+ }
404
+ .fs-row-cols-2 > * {
405
+ flex: 0 0 auto;
406
+ width: 50%;
407
+ }
408
+ .fs-row-cols-3 > * {
409
+ flex: 0 0 auto;
410
+ width: 33.3333333333%;
411
+ }
412
+ .fs-row-cols-4 > * {
413
+ flex: 0 0 auto;
414
+ width: 25%;
415
+ }
416
+ .fs-row-cols-5 > * {
417
+ flex: 0 0 auto;
418
+ width: 20%;
419
+ }
420
+ .fs-row-cols-6 > * {
421
+ flex: 0 0 auto;
422
+ width: 16.6666666667%;
423
+ }
424
+ .fs-order-0 {
425
+ order: 0;
426
+ }
427
+ .fs-order-1 {
428
+ order: 1;
429
+ }
430
+ .fs-order-2 {
431
+ order: 2;
432
+ }
433
+ .fs-order-3 {
434
+ order: 3;
435
+ }
436
+ .fs-order-4 {
437
+ order: 4;
438
+ }
439
+ .fs-order-5 {
440
+ order: 5;
441
+ }
442
+ .fs-order-6 {
443
+ order: 6;
444
+ }
445
+ .fs-order-7 {
446
+ order: 7;
447
+ }
448
+ .fs-order-8 {
449
+ order: 8;
450
+ }
451
+ .fs-order-9 {
452
+ order: 9;
453
+ }
454
+ .fs-order-10 {
455
+ order: 10;
456
+ }
457
+ .fs-order-11 {
458
+ order: 11;
459
+ }
460
+ .fs-order-12 {
461
+ order: 12;
462
+ }
341
463
  .fs-col {
342
464
  flex: 1 0 0%;
343
465
  }
@@ -394,6 +516,73 @@
394
516
  width: 100%;
395
517
  }
396
518
  @media (min-width: 640px) {
519
+ .fs-row-cols-sm-auto > * {
520
+ flex: 0 0 auto;
521
+ width: auto;
522
+ }
523
+ .fs-row-cols-sm-1 > * {
524
+ flex: 0 0 auto;
525
+ width: 100%;
526
+ }
527
+ .fs-row-cols-sm-2 > * {
528
+ flex: 0 0 auto;
529
+ width: 50%;
530
+ }
531
+ .fs-row-cols-sm-3 > * {
532
+ flex: 0 0 auto;
533
+ width: 33.3333333333%;
534
+ }
535
+ .fs-row-cols-sm-4 > * {
536
+ flex: 0 0 auto;
537
+ width: 25%;
538
+ }
539
+ .fs-row-cols-sm-5 > * {
540
+ flex: 0 0 auto;
541
+ width: 20%;
542
+ }
543
+ .fs-row-cols-sm-6 > * {
544
+ flex: 0 0 auto;
545
+ width: 16.6666666667%;
546
+ }
547
+ .fs-order-sm-0 {
548
+ order: 0;
549
+ }
550
+ .fs-order-sm-1 {
551
+ order: 1;
552
+ }
553
+ .fs-order-sm-2 {
554
+ order: 2;
555
+ }
556
+ .fs-order-sm-3 {
557
+ order: 3;
558
+ }
559
+ .fs-order-sm-4 {
560
+ order: 4;
561
+ }
562
+ .fs-order-sm-5 {
563
+ order: 5;
564
+ }
565
+ .fs-order-sm-6 {
566
+ order: 6;
567
+ }
568
+ .fs-order-sm-7 {
569
+ order: 7;
570
+ }
571
+ .fs-order-sm-8 {
572
+ order: 8;
573
+ }
574
+ .fs-order-sm-9 {
575
+ order: 9;
576
+ }
577
+ .fs-order-sm-10 {
578
+ order: 10;
579
+ }
580
+ .fs-order-sm-11 {
581
+ order: 11;
582
+ }
583
+ .fs-order-sm-12 {
584
+ order: 12;
585
+ }
397
586
  .fs-col-sm {
398
587
  flex: 1 0 0%;
399
588
  }
@@ -451,6 +640,73 @@
451
640
  }
452
641
  }
453
642
  @media (min-width: 768px) {
643
+ .fs-row-cols-md-auto > * {
644
+ flex: 0 0 auto;
645
+ width: auto;
646
+ }
647
+ .fs-row-cols-md-1 > * {
648
+ flex: 0 0 auto;
649
+ width: 100%;
650
+ }
651
+ .fs-row-cols-md-2 > * {
652
+ flex: 0 0 auto;
653
+ width: 50%;
654
+ }
655
+ .fs-row-cols-md-3 > * {
656
+ flex: 0 0 auto;
657
+ width: 33.3333333333%;
658
+ }
659
+ .fs-row-cols-md-4 > * {
660
+ flex: 0 0 auto;
661
+ width: 25%;
662
+ }
663
+ .fs-row-cols-md-5 > * {
664
+ flex: 0 0 auto;
665
+ width: 20%;
666
+ }
667
+ .fs-row-cols-md-6 > * {
668
+ flex: 0 0 auto;
669
+ width: 16.6666666667%;
670
+ }
671
+ .fs-order-md-0 {
672
+ order: 0;
673
+ }
674
+ .fs-order-md-1 {
675
+ order: 1;
676
+ }
677
+ .fs-order-md-2 {
678
+ order: 2;
679
+ }
680
+ .fs-order-md-3 {
681
+ order: 3;
682
+ }
683
+ .fs-order-md-4 {
684
+ order: 4;
685
+ }
686
+ .fs-order-md-5 {
687
+ order: 5;
688
+ }
689
+ .fs-order-md-6 {
690
+ order: 6;
691
+ }
692
+ .fs-order-md-7 {
693
+ order: 7;
694
+ }
695
+ .fs-order-md-8 {
696
+ order: 8;
697
+ }
698
+ .fs-order-md-9 {
699
+ order: 9;
700
+ }
701
+ .fs-order-md-10 {
702
+ order: 10;
703
+ }
704
+ .fs-order-md-11 {
705
+ order: 11;
706
+ }
707
+ .fs-order-md-12 {
708
+ order: 12;
709
+ }
454
710
  .fs-col-md {
455
711
  flex: 1 0 0%;
456
712
  }
@@ -508,6 +764,73 @@
508
764
  }
509
765
  }
510
766
  @media (min-width: 1024px) {
767
+ .fs-row-cols-lg-auto > * {
768
+ flex: 0 0 auto;
769
+ width: auto;
770
+ }
771
+ .fs-row-cols-lg-1 > * {
772
+ flex: 0 0 auto;
773
+ width: 100%;
774
+ }
775
+ .fs-row-cols-lg-2 > * {
776
+ flex: 0 0 auto;
777
+ width: 50%;
778
+ }
779
+ .fs-row-cols-lg-3 > * {
780
+ flex: 0 0 auto;
781
+ width: 33.3333333333%;
782
+ }
783
+ .fs-row-cols-lg-4 > * {
784
+ flex: 0 0 auto;
785
+ width: 25%;
786
+ }
787
+ .fs-row-cols-lg-5 > * {
788
+ flex: 0 0 auto;
789
+ width: 20%;
790
+ }
791
+ .fs-row-cols-lg-6 > * {
792
+ flex: 0 0 auto;
793
+ width: 16.6666666667%;
794
+ }
795
+ .fs-order-lg-0 {
796
+ order: 0;
797
+ }
798
+ .fs-order-lg-1 {
799
+ order: 1;
800
+ }
801
+ .fs-order-lg-2 {
802
+ order: 2;
803
+ }
804
+ .fs-order-lg-3 {
805
+ order: 3;
806
+ }
807
+ .fs-order-lg-4 {
808
+ order: 4;
809
+ }
810
+ .fs-order-lg-5 {
811
+ order: 5;
812
+ }
813
+ .fs-order-lg-6 {
814
+ order: 6;
815
+ }
816
+ .fs-order-lg-7 {
817
+ order: 7;
818
+ }
819
+ .fs-order-lg-8 {
820
+ order: 8;
821
+ }
822
+ .fs-order-lg-9 {
823
+ order: 9;
824
+ }
825
+ .fs-order-lg-10 {
826
+ order: 10;
827
+ }
828
+ .fs-order-lg-11 {
829
+ order: 11;
830
+ }
831
+ .fs-order-lg-12 {
832
+ order: 12;
833
+ }
511
834
  .fs-col-lg {
512
835
  flex: 1 0 0%;
513
836
  }
@@ -565,6 +888,73 @@
565
888
  }
566
889
  }
567
890
  @media (min-width: 1280px) {
891
+ .fs-row-cols-xl-auto > * {
892
+ flex: 0 0 auto;
893
+ width: auto;
894
+ }
895
+ .fs-row-cols-xl-1 > * {
896
+ flex: 0 0 auto;
897
+ width: 100%;
898
+ }
899
+ .fs-row-cols-xl-2 > * {
900
+ flex: 0 0 auto;
901
+ width: 50%;
902
+ }
903
+ .fs-row-cols-xl-3 > * {
904
+ flex: 0 0 auto;
905
+ width: 33.3333333333%;
906
+ }
907
+ .fs-row-cols-xl-4 > * {
908
+ flex: 0 0 auto;
909
+ width: 25%;
910
+ }
911
+ .fs-row-cols-xl-5 > * {
912
+ flex: 0 0 auto;
913
+ width: 20%;
914
+ }
915
+ .fs-row-cols-xl-6 > * {
916
+ flex: 0 0 auto;
917
+ width: 16.6666666667%;
918
+ }
919
+ .fs-order-xl-0 {
920
+ order: 0;
921
+ }
922
+ .fs-order-xl-1 {
923
+ order: 1;
924
+ }
925
+ .fs-order-xl-2 {
926
+ order: 2;
927
+ }
928
+ .fs-order-xl-3 {
929
+ order: 3;
930
+ }
931
+ .fs-order-xl-4 {
932
+ order: 4;
933
+ }
934
+ .fs-order-xl-5 {
935
+ order: 5;
936
+ }
937
+ .fs-order-xl-6 {
938
+ order: 6;
939
+ }
940
+ .fs-order-xl-7 {
941
+ order: 7;
942
+ }
943
+ .fs-order-xl-8 {
944
+ order: 8;
945
+ }
946
+ .fs-order-xl-9 {
947
+ order: 9;
948
+ }
949
+ .fs-order-xl-10 {
950
+ order: 10;
951
+ }
952
+ .fs-order-xl-11 {
953
+ order: 11;
954
+ }
955
+ .fs-order-xl-12 {
956
+ order: 12;
957
+ }
568
958
  .fs-col-xl {
569
959
  flex: 1 0 0%;
570
960
  }
@@ -622,6 +1012,73 @@
622
1012
  }
623
1013
  }
624
1014
  @media (min-width: 1536px) {
1015
+ .fs-row-cols-xxl-auto > * {
1016
+ flex: 0 0 auto;
1017
+ width: auto;
1018
+ }
1019
+ .fs-row-cols-xxl-1 > * {
1020
+ flex: 0 0 auto;
1021
+ width: 100%;
1022
+ }
1023
+ .fs-row-cols-xxl-2 > * {
1024
+ flex: 0 0 auto;
1025
+ width: 50%;
1026
+ }
1027
+ .fs-row-cols-xxl-3 > * {
1028
+ flex: 0 0 auto;
1029
+ width: 33.3333333333%;
1030
+ }
1031
+ .fs-row-cols-xxl-4 > * {
1032
+ flex: 0 0 auto;
1033
+ width: 25%;
1034
+ }
1035
+ .fs-row-cols-xxl-5 > * {
1036
+ flex: 0 0 auto;
1037
+ width: 20%;
1038
+ }
1039
+ .fs-row-cols-xxl-6 > * {
1040
+ flex: 0 0 auto;
1041
+ width: 16.6666666667%;
1042
+ }
1043
+ .fs-order-xxl-0 {
1044
+ order: 0;
1045
+ }
1046
+ .fs-order-xxl-1 {
1047
+ order: 1;
1048
+ }
1049
+ .fs-order-xxl-2 {
1050
+ order: 2;
1051
+ }
1052
+ .fs-order-xxl-3 {
1053
+ order: 3;
1054
+ }
1055
+ .fs-order-xxl-4 {
1056
+ order: 4;
1057
+ }
1058
+ .fs-order-xxl-5 {
1059
+ order: 5;
1060
+ }
1061
+ .fs-order-xxl-6 {
1062
+ order: 6;
1063
+ }
1064
+ .fs-order-xxl-7 {
1065
+ order: 7;
1066
+ }
1067
+ .fs-order-xxl-8 {
1068
+ order: 8;
1069
+ }
1070
+ .fs-order-xxl-9 {
1071
+ order: 9;
1072
+ }
1073
+ .fs-order-xxl-10 {
1074
+ order: 10;
1075
+ }
1076
+ .fs-order-xxl-11 {
1077
+ order: 11;
1078
+ }
1079
+ .fs-order-xxl-12 {
1080
+ order: 12;
1081
+ }
625
1082
  .fs-col-xxl {
626
1083
  flex: 1 0 0%;
627
1084
  }
@@ -679,6 +1136,73 @@
679
1136
  }
680
1137
  }
681
1138
  @media (min-width: 1920px) {
1139
+ .fs-row-cols-xxxl-auto > * {
1140
+ flex: 0 0 auto;
1141
+ width: auto;
1142
+ }
1143
+ .fs-row-cols-xxxl-1 > * {
1144
+ flex: 0 0 auto;
1145
+ width: 100%;
1146
+ }
1147
+ .fs-row-cols-xxxl-2 > * {
1148
+ flex: 0 0 auto;
1149
+ width: 50%;
1150
+ }
1151
+ .fs-row-cols-xxxl-3 > * {
1152
+ flex: 0 0 auto;
1153
+ width: 33.3333333333%;
1154
+ }
1155
+ .fs-row-cols-xxxl-4 > * {
1156
+ flex: 0 0 auto;
1157
+ width: 25%;
1158
+ }
1159
+ .fs-row-cols-xxxl-5 > * {
1160
+ flex: 0 0 auto;
1161
+ width: 20%;
1162
+ }
1163
+ .fs-row-cols-xxxl-6 > * {
1164
+ flex: 0 0 auto;
1165
+ width: 16.6666666667%;
1166
+ }
1167
+ .fs-order-xxxl-0 {
1168
+ order: 0;
1169
+ }
1170
+ .fs-order-xxxl-1 {
1171
+ order: 1;
1172
+ }
1173
+ .fs-order-xxxl-2 {
1174
+ order: 2;
1175
+ }
1176
+ .fs-order-xxxl-3 {
1177
+ order: 3;
1178
+ }
1179
+ .fs-order-xxxl-4 {
1180
+ order: 4;
1181
+ }
1182
+ .fs-order-xxxl-5 {
1183
+ order: 5;
1184
+ }
1185
+ .fs-order-xxxl-6 {
1186
+ order: 6;
1187
+ }
1188
+ .fs-order-xxxl-7 {
1189
+ order: 7;
1190
+ }
1191
+ .fs-order-xxxl-8 {
1192
+ order: 8;
1193
+ }
1194
+ .fs-order-xxxl-9 {
1195
+ order: 9;
1196
+ }
1197
+ .fs-order-xxxl-10 {
1198
+ order: 10;
1199
+ }
1200
+ .fs-order-xxxl-11 {
1201
+ order: 11;
1202
+ }
1203
+ .fs-order-xxxl-12 {
1204
+ order: 12;
1205
+ }
682
1206
  .fs-col-xxxl {
683
1207
  flex: 1 0 0%;
684
1208
  }
@@ -909,6 +1433,30 @@
909
1433
  background-color: var(--fs-color-subtle);
910
1434
  cursor: default;
911
1435
  }
1436
+ .fs-floating-label {
1437
+ position: relative;
1438
+ }
1439
+ .fs-floating-label > .fs-form-control {
1440
+ height: 56px;
1441
+ padding-top: 20px;
1442
+ }
1443
+ .fs-floating-label > .fs-form-label {
1444
+ position: absolute;
1445
+ z-index: 1;
1446
+ top: 8px;
1447
+ left: 8px;
1448
+ color: var(--fs-color-muted);
1449
+ font-size: 0.6875rem;
1450
+ pointer-events: none;
1451
+ }
1452
+ .fs-form-control[aria-invalid=true],
1453
+ .fs-was-validated .fs-form-control:invalid {
1454
+ border-color: var(--fs-color-danger);
1455
+ }
1456
+ .fs-form-control[aria-invalid=false],
1457
+ .fs-was-validated .fs-form-control:valid {
1458
+ border-color: var(--fs-color-success);
1459
+ }
912
1460
  .fs-form-control-sm {
913
1461
  height: var(--fs-control-height-sm);
914
1462
  font-size: 0.6875rem;
@@ -2155,6 +2703,23 @@
2155
2703
  .fs-table-responsive {
2156
2704
  overflow-x: auto;
2157
2705
  }
2706
+ .fs-table-caption {
2707
+ caption-side: top;
2708
+ padding: var(--fs-space-2) 0;
2709
+ color: var(--fs-color-muted);
2710
+ text-align: start;
2711
+ }
2712
+ .fs-table-empty {
2713
+ padding: var(--fs-space-5);
2714
+ color: var(--fs-color-muted);
2715
+ text-align: center;
2716
+ }
2717
+ @media (width < 640px) {
2718
+ .fs-table-priority th:nth-child(n+4),
2719
+ .fs-table-priority td:nth-child(n+4) {
2720
+ display: none;
2721
+ }
2722
+ }
2158
2723
  }
2159
2724
  @layer components {
2160
2725
  .fs-navbar {
@@ -2181,6 +2746,47 @@
2181
2746
  padding: 0;
2182
2747
  list-style: none;
2183
2748
  }
2749
+ .fs-navbar-toggler {
2750
+ display: inline-flex;
2751
+ align-items: center;
2752
+ justify-content: center;
2753
+ min-width: 44px;
2754
+ min-height: 44px;
2755
+ padding: 8px;
2756
+ color: var(--fs-color-text);
2757
+ background: transparent;
2758
+ border: 1px solid var(--fs-color-border);
2759
+ border-radius: var(--fs-radius-sm);
2760
+ cursor: pointer;
2761
+ }
2762
+ .fs-navbar-collapse {
2763
+ flex-basis: 100%;
2764
+ width: 100%;
2765
+ }
2766
+ .fs-navbar-collapse:not(.is-open) {
2767
+ display: none;
2768
+ }
2769
+ .fs-navbar-collapse.is-open .fs-navbar-nav {
2770
+ flex-direction: column;
2771
+ align-items: stretch;
2772
+ }
2773
+ @media (width >= 768px) {
2774
+ .fs-navbar-toggler {
2775
+ display: none;
2776
+ }
2777
+ .fs-navbar-collapse,
2778
+ .fs-navbar-collapse:not(.is-open),
2779
+ .fs-navbar-collapse[hidden] {
2780
+ display: flex;
2781
+ flex: 1 1 auto;
2782
+ align-items: center;
2783
+ justify-content: flex-end;
2784
+ width: auto;
2785
+ }
2786
+ .fs-navbar-collapse .fs-navbar-nav {
2787
+ flex-direction: row;
2788
+ }
2789
+ }
2184
2790
  .fs-nav-link {
2185
2791
  display: inline-flex;
2186
2792
  align-items: center;
@@ -2594,6 +3200,13 @@
2594
3200
  .fs-modal-dialog.fs-modal-lg {
2595
3201
  max-width: 720px;
2596
3202
  }
3203
+ .fs-modal-dialog.fs-modal-xl {
3204
+ max-width: 1140px;
3205
+ }
3206
+ .fs-modal-dialog.fs-modal-fullscreen {
3207
+ max-width: none;
3208
+ height: 100%;
3209
+ }
2597
3210
  .fs-modal-content {
2598
3211
  display: flex;
2599
3212
  flex-direction: column;
@@ -2620,6 +3233,28 @@
2620
3233
  padding: 20px;
2621
3234
  overflow-y: auto;
2622
3235
  }
3236
+ .fs-modal-scrollable .fs-modal-content {
3237
+ overflow: hidden;
3238
+ }
3239
+ .fs-modal-scrollable .fs-modal-body {
3240
+ overflow-y: auto;
3241
+ }
3242
+ @media (width < 640px) {
3243
+ .fs-modal {
3244
+ align-items: flex-end;
3245
+ padding: 0;
3246
+ }
3247
+ .fs-modal-dialog,
3248
+ .fs-modal-dialog.fs-modal-sm,
3249
+ .fs-modal-dialog.fs-modal-lg,
3250
+ .fs-modal-dialog.fs-modal-xl {
3251
+ max-width: none;
3252
+ }
3253
+ .fs-modal-content {
3254
+ max-height: calc(100dvh - var(--fs-safe-area-top));
3255
+ border-radius: var(--fs-radius-md) var(--fs-radius-md) 0 0;
3256
+ }
3257
+ }
2623
3258
  .fs-modal-footer {
2624
3259
  display: flex;
2625
3260
  align-items: center;
@@ -2983,6 +3618,22 @@
2983
3618
  padding: 16px 20px;
2984
3619
  border-top: 1px solid var(--fs-color-border);
2985
3620
  }
3621
+ .fs-offcanvas-responsive {
3622
+ width: min(100%, 420px);
3623
+ }
3624
+ @media (width >= 1024px) {
3625
+ .fs-offcanvas-lg {
3626
+ position: static;
3627
+ width: auto;
3628
+ height: auto;
3629
+ visibility: visible;
3630
+ transform: none;
3631
+ box-shadow: none;
3632
+ }
3633
+ .fs-offcanvas-lg + .fs-offcanvas-backdrop {
3634
+ display: none;
3635
+ }
3636
+ }
2986
3637
  @media (prefers-reduced-motion: reduce) {
2987
3638
  .fs-offcanvas,
2988
3639
  .fs-offcanvas-backdrop {
@@ -3011,6 +3662,16 @@
3011
3662
  border-bottom-right-radius: var(--fs-radius-md);
3012
3663
  border-bottom-left-radius: var(--fs-radius-md);
3013
3664
  }
3665
+ .fs-accordion-flush .fs-accordion-item {
3666
+ border-inline: 0;
3667
+ border-radius: 0;
3668
+ }
3669
+ .fs-accordion-flush .fs-accordion-item:first-child {
3670
+ border-block-start: 0;
3671
+ }
3672
+ .fs-accordion-always-open .fs-accordion-button[aria-expanded=true]::after {
3673
+ transform: rotate(-135deg);
3674
+ }
3014
3675
  .fs-accordion-header {
3015
3676
  margin: 0;
3016
3677
  }
@@ -3059,6 +3720,11 @@
3059
3720
  border-top: 1px solid var(--fs-color-border);
3060
3721
  background-color: var(--fs-color-surface-raised);
3061
3722
  }
3723
+ @media (prefers-reduced-motion: reduce) {
3724
+ .fs-accordion-button::after {
3725
+ transition: none;
3726
+ }
3727
+ }
3062
3728
  }
3063
3729
  @layer components {
3064
3730
  .fs-tabs {
@@ -3320,6 +3986,14 @@
3320
3986
  padding: 0;
3321
3987
  list-style: none;
3322
3988
  }
3989
+ .fs-pagination-scroll {
3990
+ max-width: 100%;
3991
+ overflow-x: auto;
3992
+ padding-block: 2px;
3993
+ }
3994
+ .fs-pagination-scroll .fs-pagination {
3995
+ width: max-content;
3996
+ }
3323
3997
  .fs-page-link {
3324
3998
  display: inline-flex;
3325
3999
  align-items: center;
@@ -3548,6 +4222,9 @@
3548
4222
  --fs-progress-bar-bg: var(--fs-color-info);
3549
4223
  --fs-progress-color: #ffffff;
3550
4224
  }
4225
+ .fs-spinner[data-fs-loading=false] {
4226
+ display: none;
4227
+ }
3551
4228
  .fs-progress-sm {
3552
4229
  --fs-progress-height: 4px;
3553
4230
  }
@@ -4273,6 +4950,22 @@
4273
4950
  .fs-skeleton-rect {
4274
4951
  border-radius: var(--fs-radius-md);
4275
4952
  }
4953
+ .fs-skeleton-card {
4954
+ display: grid;
4955
+ gap: var(--fs-space-3);
4956
+ min-height: 10rem;
4957
+ padding: var(--fs-space-4);
4958
+ border-radius: var(--fs-radius-md);
4959
+ }
4960
+ .fs-skeleton-table {
4961
+ height: 1.25rem;
4962
+ margin-block-end: var(--fs-space-2);
4963
+ }
4964
+ .fs-skeleton-avatar {
4965
+ width: 2.5rem;
4966
+ height: 2.5rem;
4967
+ border-radius: 50%;
4968
+ }
4276
4969
  @keyframes fokus-skeleton-pulse {
4277
4970
  0%, 100% {
4278
4971
  opacity: 1;
@@ -4593,71 +5286,345 @@
4593
5286
  flex: 1 1 auto;
4594
5287
  min-width: 0;
4595
5288
  }
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;
5289
+ .fs-tile-title {
5290
+ margin: 0;
5291
+ color: var(--fs-color-text);
5292
+ font-size: 0.8125rem;
5293
+ font-weight: 500;
5294
+ overflow: hidden;
5295
+ text-overflow: ellipsis;
5296
+ white-space: nowrap;
5297
+ }
5298
+ .fs-tile-subtitle {
5299
+ margin: 0;
5300
+ color: var(--fs-color-muted);
5301
+ font-size: 0.75rem;
5302
+ overflow: hidden;
5303
+ text-overflow: ellipsis;
5304
+ white-space: nowrap;
5305
+ }
5306
+ .fs-tile-actions {
5307
+ display: flex;
5308
+ flex-shrink: 0;
5309
+ align-items: center;
5310
+ gap: 8px;
5311
+ }
5312
+ .fs-tile-actions-bottom {
5313
+ flex-wrap: wrap;
5314
+ }
5315
+ .fs-tile-actions-bottom .fs-tile-actions {
5316
+ flex-basis: 100%;
5317
+ justify-content: flex-end;
5318
+ margin-top: 4px;
5319
+ }
5320
+ .fs-tile-clickable {
5321
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
5322
+ }
5323
+ .fs-tile-clickable:hover,
5324
+ .fs-tile-clickable:focus-within {
5325
+ border-color: var(--fs-color-primary);
5326
+ box-shadow: var(--fs-shadow-sm);
5327
+ }
5328
+ .fs-tile-sm {
5329
+ gap: 8px;
5330
+ padding: 8px;
5331
+ }
5332
+ .fs-tile-sm .fs-tile-icon {
5333
+ width: 32px;
5334
+ height: 32px;
5335
+ font-size: 0.8125rem;
5336
+ }
5337
+ .fs-tile-sm .fs-tile-title {
5338
+ font-size: 0.75rem;
5339
+ }
5340
+ .fs-tile-sm .fs-tile-subtitle {
5341
+ font-size: 0.6875rem;
5342
+ }
5343
+ .fs-tile-lg {
5344
+ gap: 16px;
5345
+ padding: 16px;
5346
+ }
5347
+ .fs-tile-lg .fs-tile-icon {
5348
+ width: 48px;
5349
+ height: 48px;
5350
+ font-size: 1.25rem;
5351
+ }
5352
+ .fs-tile-lg .fs-tile-title {
5353
+ font-size: 1rem;
5354
+ }
5355
+ }
5356
+ /* stylelint-disable declaration-block-single-line-max-declarations */
5357
+ @layer components {
5358
+ .fs-avatar {
5359
+ display: inline-flex;
5360
+ flex: 0 0 auto;
5361
+ align-items: center;
5362
+ justify-content: center;
5363
+ width: 2.5rem;
5364
+ height: 2.5rem;
5365
+ overflow: hidden;
5366
+ color: var(--fs-color-on-primary);
5367
+ font-weight: 600;
5368
+ background: var(--fs-color-primary);
5369
+ border-radius: 50%;
5370
+ object-fit: cover;
5371
+ }
5372
+ .fs-avatar-sm {
5373
+ width: 2rem;
5374
+ height: 2rem;
5375
+ font-size: 0.8125rem;
5376
+ }
5377
+ .fs-avatar-lg {
5378
+ width: 3.5rem;
5379
+ height: 3.5rem;
5380
+ font-size: 1.25rem;
5381
+ }
5382
+ .fs-avatar-square {
5383
+ border-radius: var(--fs-radius-md);
5384
+ }
5385
+ .fs-avatar img {
5386
+ width: 100%;
5387
+ height: 100%;
5388
+ object-fit: cover;
5389
+ }
5390
+ }
5391
+ /* stylelint-disable declaration-block-single-line-max-declarations */
5392
+ @layer components {
5393
+ .fs-button-group {
5394
+ display: inline-flex;
5395
+ vertical-align: middle;
5396
+ }
5397
+ .fs-button-group > .fs-btn {
5398
+ border-radius: 0;
5399
+ }
5400
+ .fs-button-group > .fs-btn:first-child {
5401
+ border-start-start-radius: var(--fs-radius-sm);
5402
+ border-end-start-radius: var(--fs-radius-sm);
5403
+ }
5404
+ .fs-button-group > .fs-btn:last-child {
5405
+ border-start-end-radius: var(--fs-radius-sm);
5406
+ border-end-end-radius: var(--fs-radius-sm);
5407
+ }
5408
+ .fs-button-group > .fs-btn + .fs-btn {
5409
+ margin-inline-start: -1px;
5410
+ }
5411
+ .fs-button-group-vertical {
5412
+ flex-direction: column;
5413
+ align-items: flex-start;
5414
+ }
5415
+ .fs-button-group-vertical > .fs-btn {
5416
+ width: 100%;
5417
+ }
5418
+ }
5419
+ /* stylelint-disable declaration-block-single-line-max-declarations */
5420
+ @layer components {
5421
+ .fs-close {
5422
+ display: inline-grid;
5423
+ width: 2rem;
5424
+ height: 2rem;
5425
+ place-items: center;
5426
+ padding: 0;
5427
+ color: currentcolor;
5428
+ font-size: 1.5rem;
5429
+ line-height: 1;
5430
+ background: transparent;
5431
+ border: 0;
5432
+ border-radius: 50%;
5433
+ cursor: pointer;
5434
+ opacity: 0.72;
5435
+ }
5436
+ .fs-close::before {
5437
+ content: "×";
5438
+ }
5439
+ .fs-close:hover {
5440
+ opacity: 1;
5441
+ background: var(--fs-color-subtle);
5442
+ }
5443
+ .fs-close:focus-visible {
5444
+ outline: var(--fs-focus-width) solid var(--fs-focus-color);
5445
+ outline-offset: var(--fs-focus-offset);
5446
+ }
5447
+ }
5448
+ /* stylelint-disable declaration-block-single-line-max-declarations */
5449
+ @layer components {
5450
+ .fs-list-group {
5451
+ display: flex;
5452
+ flex-direction: column;
5453
+ padding: 0;
5454
+ margin: 0;
5455
+ list-style: none;
5456
+ border: 1px solid var(--fs-color-border);
5457
+ border-radius: var(--fs-radius-md);
5458
+ }
5459
+ .fs-list-group-item {
5460
+ position: relative;
5461
+ display: block;
5462
+ padding: var(--fs-space-3) var(--fs-space-4);
5463
+ color: var(--fs-color-text);
5464
+ background: var(--fs-color-surface);
5465
+ border-block-end: 1px solid var(--fs-color-border);
5466
+ }
5467
+ .fs-list-group-item:last-child {
5468
+ border-block-end: 0;
5469
+ }
5470
+ button.fs-list-group-item, a.fs-list-group-item {
5471
+ width: 100%;
5472
+ text-align: start;
5473
+ cursor: pointer;
5474
+ }
5475
+ .fs-list-group-item:hover {
5476
+ background: var(--fs-color-subtle);
5477
+ }
5478
+ .fs-list-group-item.is-active {
5479
+ color: var(--fs-color-on-primary);
5480
+ background: var(--fs-color-primary);
5481
+ }
5482
+ }
5483
+ @layer components {
5484
+ .fs-code {
5485
+ padding: 0.125em 0.35em;
5486
+ color: var(--fs-color-danger);
5487
+ background: var(--fs-color-subtle);
5488
+ border-radius: var(--fs-radius-sm);
5489
+ }
5490
+ .fs-pre {
5491
+ display: block;
5492
+ max-width: 100%;
5493
+ padding: var(--fs-space-4);
5494
+ overflow: auto;
5495
+ color: var(--fs-color-text);
5496
+ background: var(--fs-color-subtle);
5497
+ border: 1px solid var(--fs-color-border);
5498
+ border-radius: var(--fs-radius-md);
5499
+ }
5500
+ }
5501
+ /* stylelint-disable declaration-block-single-line-max-declarations */
5502
+ @layer components {
5503
+ .fs-ratio {
5504
+ position: relative;
5505
+ width: 100%;
5506
+ }
5507
+ .fs-ratio::before {
5508
+ display: block;
5509
+ padding-top: var(--fs-ratio, 56.25%);
5510
+ content: "";
5511
+ }
5512
+ .fs-ratio > * {
5513
+ position: absolute;
5514
+ inset: 0;
5515
+ width: 100%;
5516
+ height: 100%;
5517
+ object-fit: cover;
5518
+ }
5519
+ .fs-ratio-1x1 {
5520
+ --fs-ratio: 100%;
4604
5521
  }
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;
5522
+ .fs-ratio-4x3 {
5523
+ --fs-ratio: 75%;
4612
5524
  }
4613
- .fs-tile-actions {
4614
- display: flex;
4615
- flex-shrink: 0;
5525
+ .fs-ratio-16x9 {
5526
+ --fs-ratio: 56.25%;
5527
+ }
5528
+ .fs-ratio-21x9 {
5529
+ --fs-ratio: 42.857%;
5530
+ }
5531
+ }
5532
+ /* stylelint-disable declaration-block-single-line-max-declarations */
5533
+ @layer components {
5534
+ .fs-icon-link {
5535
+ display: inline-flex;
5536
+ gap: 0.5em;
4616
5537
  align-items: center;
4617
- gap: 8px;
4618
5538
  }
4619
- .fs-tile-actions-bottom {
4620
- flex-wrap: wrap;
5539
+ .fs-icon-link svg {
5540
+ width: 1em;
5541
+ height: 1em;
5542
+ flex: 0 0 auto;
4621
5543
  }
4622
- .fs-tile-actions-bottom .fs-tile-actions {
4623
- flex-basis: 100%;
4624
- justify-content: flex-end;
4625
- margin-top: 4px;
5544
+ .fs-icon-link:hover svg {
5545
+ transform: translateX(0.15em);
4626
5546
  }
4627
- .fs-tile-clickable {
4628
- transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
5547
+ @media (prefers-reduced-motion: reduce) {
5548
+ .fs-icon-link svg {
5549
+ transition: none;
5550
+ }
4629
5551
  }
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);
5552
+ }
5553
+ /* stylelint-disable declaration-block-single-line-max-declarations */
5554
+ @layer components {
5555
+ .fs-placeholder {
5556
+ display: inline-block;
5557
+ min-height: 1em;
5558
+ vertical-align: middle;
5559
+ cursor: wait;
5560
+ background: currentcolor;
5561
+ opacity: 0.18;
4634
5562
  }
4635
- .fs-tile-sm {
4636
- gap: 8px;
4637
- padding: 8px;
5563
+ .fs-placeholder-glow {
5564
+ animation: fs-placeholder-glow 1.5s ease-in-out infinite;
4638
5565
  }
4639
- .fs-tile-sm .fs-tile-icon {
4640
- width: 32px;
4641
- height: 32px;
4642
- font-size: 0.8125rem;
5566
+ .fs-placeholder-wave {
5567
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.35), transparent), currentcolor;
5568
+ background-size: 200% 100%;
5569
+ animation: fs-placeholder-wave 1.5s linear infinite;
4643
5570
  }
4644
- .fs-tile-sm .fs-tile-title {
4645
- font-size: 0.75rem;
5571
+ .fs-placeholder-btn {
5572
+ width: 6rem;
5573
+ height: 2.5rem;
5574
+ border-radius: var(--fs-radius-sm);
4646
5575
  }
4647
- .fs-tile-sm .fs-tile-subtitle {
4648
- font-size: 0.6875rem;
5576
+ @keyframes fs-placeholder-glow {
5577
+ 50% {
5578
+ opacity: 0.08;
5579
+ }
4649
5580
  }
4650
- .fs-tile-lg {
4651
- gap: 16px;
4652
- padding: 16px;
5581
+ @keyframes fs-placeholder-wave {
5582
+ to {
5583
+ background-position: -200% 0;
5584
+ }
4653
5585
  }
4654
- .fs-tile-lg .fs-tile-icon {
4655
- width: 48px;
4656
- height: 48px;
4657
- font-size: 1.25rem;
5586
+ @media (prefers-reduced-motion: reduce) {
5587
+ .fs-placeholder-glow, .fs-placeholder-wave {
5588
+ animation: none;
5589
+ }
4658
5590
  }
4659
- .fs-tile-lg .fs-tile-title {
4660
- font-size: 1rem;
5591
+ }
5592
+ /* stylelint-disable declaration-block-single-line-max-declarations */
5593
+ @layer components {
5594
+ .fs-progress {
5595
+ display: flex;
5596
+ height: 0.75rem;
5597
+ overflow: hidden;
5598
+ background: var(--fs-color-subtle);
5599
+ border-radius: 999px;
5600
+ }
5601
+ .fs-progress-bar {
5602
+ display: flex;
5603
+ align-items: center;
5604
+ justify-content: center;
5605
+ color: var(--fs-color-on-primary);
5606
+ background: var(--fs-color-primary);
5607
+ transition: width var(--fs-motion-duration-normal) var(--fs-motion-ease-standard);
5608
+ }
5609
+ .fs-progress-bar-striped {
5610
+ 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%);
5611
+ background-size: 1rem 1rem;
5612
+ }
5613
+ @media (prefers-reduced-motion: reduce) {
5614
+ .fs-progress-bar {
5615
+ transition: none;
5616
+ }
5617
+ }
5618
+ }
5619
+ /* stylelint-disable declaration-block-single-line-max-declarations */
5620
+ @layer components {
5621
+ [data-fs-scrollspy] .is-active {
5622
+ color: var(--fs-color-primary);
5623
+ font-weight: 600;
5624
+ }
5625
+ .fs-scrollspy-nav {
5626
+ position: sticky;
5627
+ inset-block-start: var(--fs-space-4);
4661
5628
  }
4662
5629
  }
4663
5630
  @layer utilities {
@@ -8029,6 +8996,291 @@
8029
8996
  .fs-u-invisible {
8030
8997
  visibility: hidden;
8031
8998
  }
8999
+ .fs-u-visually-hidden,
9000
+ .fs-u-visually-hidden-focusable {
9001
+ position: absolute !important;
9002
+ width: 1px !important;
9003
+ height: 1px !important;
9004
+ padding: 0 !important;
9005
+ margin: -1px !important;
9006
+ overflow: hidden !important;
9007
+ clip-path: inset(50%) !important;
9008
+ white-space: nowrap !important;
9009
+ border: 0 !important;
9010
+ }
9011
+ .fs-u-visually-hidden-focusable:focus,
9012
+ .fs-u-visually-hidden-focusable:focus-within {
9013
+ position: static !important;
9014
+ width: auto !important;
9015
+ height: auto !important;
9016
+ margin: 0 !important;
9017
+ overflow: visible !important;
9018
+ clip-path: none !important;
9019
+ white-space: normal !important;
9020
+ }
9021
+ }
9022
+ @layer utilities {
9023
+ .fs-u-focus-ring:focus-visible {
9024
+ outline: var(--fs-focus-width) solid var(--fs-focus-color);
9025
+ outline-offset: var(--fs-focus-offset);
9026
+ box-shadow: 0 0 0 var(--fs-focus-ring-size) var(--fs-focus-ring-color);
9027
+ }
9028
+ .fs-u-disabled,
9029
+ .fs-u-disabled[aria-disabled=true] {
9030
+ cursor: not-allowed;
9031
+ opacity: var(--fs-disabled-opacity);
9032
+ pointer-events: none;
9033
+ }
9034
+ @media print {
9035
+ .fs-u-print-hidden {
9036
+ display: none !important;
9037
+ }
9038
+ .fs-u-print-visible {
9039
+ display: block !important;
9040
+ }
9041
+ }
9042
+ }
9043
+ @layer utilities {
9044
+ .fs-u-color-primary {
9045
+ color: var(--fs-color-primary, oklch(53.5630074284% 0.2132145174 261.6264320248deg)) !important;
9046
+ }
9047
+ .fs-u-bg-primary {
9048
+ background-color: var(--fs-color-primary, oklch(53.5630074284% 0.2132145174 261.6264320248deg)) !important;
9049
+ }
9050
+ .fs-u-color-secondary {
9051
+ color: var(--fs-color-secondary, oklch(55.4391007662% 0.040717043 257.4166191214deg)) !important;
9052
+ }
9053
+ .fs-u-bg-secondary {
9054
+ background-color: var(--fs-color-secondary, oklch(55.4391007662% 0.040717043 257.4166191214deg)) !important;
9055
+ }
9056
+ .fs-u-color-success {
9057
+ color: var(--fs-color-success, oklch(75.151587899% 0.2146126169 148.125846236deg)) !important;
9058
+ }
9059
+ .fs-u-bg-success {
9060
+ background-color: var(--fs-color-success, oklch(75.151587899% 0.2146126169 148.125846236deg)) !important;
9061
+ }
9062
+ .fs-u-color-warning {
9063
+ color: var(--fs-color-warning, oklch(81.9510815663% 0.1562613975 78.6575213966deg)) !important;
9064
+ }
9065
+ .fs-u-bg-warning {
9066
+ background-color: var(--fs-color-warning, oklch(81.9510815663% 0.1562613975 78.6575213966deg)) !important;
9067
+ }
9068
+ .fs-u-color-danger {
9069
+ color: var(--fs-color-danger, oklch(55.9653139301% 0.1897270855 25.2407937498deg)) !important;
9070
+ }
9071
+ .fs-u-bg-danger {
9072
+ background-color: var(--fs-color-danger, oklch(55.9653139301% 0.1897270855 25.2407937498deg)) !important;
9073
+ }
9074
+ .fs-u-color-info {
9075
+ color: var(--fs-color-info, oklch(53.3359780029% 0.1620131129 280.2231949375deg)) !important;
9076
+ }
9077
+ .fs-u-bg-info {
9078
+ background-color: var(--fs-color-info, oklch(53.3359780029% 0.1620131129 280.2231949375deg)) !important;
9079
+ }
9080
+ .fs-u-m-0 {
9081
+ margin: 0 !important;
9082
+ }
9083
+ .fs-u-mx-0 {
9084
+ margin-inline: 0 !important;
9085
+ }
9086
+ .fs-u-my-0 {
9087
+ margin-block: 0 !important;
9088
+ }
9089
+ .fs-u-p-0 {
9090
+ padding: 0 !important;
9091
+ }
9092
+ .fs-u-px-0 {
9093
+ padding-inline: 0 !important;
9094
+ }
9095
+ .fs-u-py-0 {
9096
+ padding-block: 0 !important;
9097
+ }
9098
+ .fs-u-m-1 {
9099
+ margin: 0.25rem !important;
9100
+ }
9101
+ .fs-u-mx-1 {
9102
+ margin-inline: 0.25rem !important;
9103
+ }
9104
+ .fs-u-my-1 {
9105
+ margin-block: 0.25rem !important;
9106
+ }
9107
+ .fs-u-p-1 {
9108
+ padding: 0.25rem !important;
9109
+ }
9110
+ .fs-u-px-1 {
9111
+ padding-inline: 0.25rem !important;
9112
+ }
9113
+ .fs-u-py-1 {
9114
+ padding-block: 0.25rem !important;
9115
+ }
9116
+ .fs-u-m-2 {
9117
+ margin: 0.5rem !important;
9118
+ }
9119
+ .fs-u-mx-2 {
9120
+ margin-inline: 0.5rem !important;
9121
+ }
9122
+ .fs-u-my-2 {
9123
+ margin-block: 0.5rem !important;
9124
+ }
9125
+ .fs-u-p-2 {
9126
+ padding: 0.5rem !important;
9127
+ }
9128
+ .fs-u-px-2 {
9129
+ padding-inline: 0.5rem !important;
9130
+ }
9131
+ .fs-u-py-2 {
9132
+ padding-block: 0.5rem !important;
9133
+ }
9134
+ .fs-u-m-3 {
9135
+ margin: 1rem !important;
9136
+ }
9137
+ .fs-u-mx-3 {
9138
+ margin-inline: 1rem !important;
9139
+ }
9140
+ .fs-u-my-3 {
9141
+ margin-block: 1rem !important;
9142
+ }
9143
+ .fs-u-p-3 {
9144
+ padding: 1rem !important;
9145
+ }
9146
+ .fs-u-px-3 {
9147
+ padding-inline: 1rem !important;
9148
+ }
9149
+ .fs-u-py-3 {
9150
+ padding-block: 1rem !important;
9151
+ }
9152
+ .fs-u-m-4 {
9153
+ margin: 1.5rem !important;
9154
+ }
9155
+ .fs-u-mx-4 {
9156
+ margin-inline: 1.5rem !important;
9157
+ }
9158
+ .fs-u-my-4 {
9159
+ margin-block: 1.5rem !important;
9160
+ }
9161
+ .fs-u-p-4 {
9162
+ padding: 1.5rem !important;
9163
+ }
9164
+ .fs-u-px-4 {
9165
+ padding-inline: 1.5rem !important;
9166
+ }
9167
+ .fs-u-py-4 {
9168
+ padding-block: 1.5rem !important;
9169
+ }
9170
+ .fs-u-m-5 {
9171
+ margin: 3rem !important;
9172
+ }
9173
+ .fs-u-mx-5 {
9174
+ margin-inline: 3rem !important;
9175
+ }
9176
+ .fs-u-my-5 {
9177
+ margin-block: 3rem !important;
9178
+ }
9179
+ .fs-u-p-5 {
9180
+ padding: 3rem !important;
9181
+ }
9182
+ .fs-u-px-5 {
9183
+ padding-inline: 3rem !important;
9184
+ }
9185
+ .fs-u-py-5 {
9186
+ padding-block: 3rem !important;
9187
+ }
9188
+ .fs-u-w-25 {
9189
+ width: 25% !important;
9190
+ }
9191
+ .fs-u-h-25 {
9192
+ height: 25% !important;
9193
+ }
9194
+ .fs-u-w-50 {
9195
+ width: 50% !important;
9196
+ }
9197
+ .fs-u-h-50 {
9198
+ height: 50% !important;
9199
+ }
9200
+ .fs-u-w-75 {
9201
+ width: 75% !important;
9202
+ }
9203
+ .fs-u-h-75 {
9204
+ height: 75% !important;
9205
+ }
9206
+ .fs-u-w-100 {
9207
+ width: 100% !important;
9208
+ }
9209
+ .fs-u-h-100 {
9210
+ height: 100% !important;
9211
+ }
9212
+ .fs-u-w-auto {
9213
+ width: auto !important;
9214
+ }
9215
+ .fs-u-h-auto {
9216
+ height: auto !important;
9217
+ }
9218
+ @media (min-width: 640px) {
9219
+ .fs-u-d-sm-flex {
9220
+ display: flex !important;
9221
+ }
9222
+ .fs-u-d-sm-none {
9223
+ display: none !important;
9224
+ }
9225
+ .fs-u-text-sm-start {
9226
+ text-align: start !important;
9227
+ }
9228
+ }
9229
+ @media (min-width: 768px) {
9230
+ .fs-u-d-md-flex {
9231
+ display: flex !important;
9232
+ }
9233
+ .fs-u-d-md-none {
9234
+ display: none !important;
9235
+ }
9236
+ .fs-u-text-md-start {
9237
+ text-align: start !important;
9238
+ }
9239
+ }
9240
+ @media (min-width: 1024px) {
9241
+ .fs-u-d-lg-flex {
9242
+ display: flex !important;
9243
+ }
9244
+ .fs-u-d-lg-none {
9245
+ display: none !important;
9246
+ }
9247
+ .fs-u-text-lg-start {
9248
+ text-align: start !important;
9249
+ }
9250
+ }
9251
+ @media (min-width: 1280px) {
9252
+ .fs-u-d-xl-flex {
9253
+ display: flex !important;
9254
+ }
9255
+ .fs-u-d-xl-none {
9256
+ display: none !important;
9257
+ }
9258
+ .fs-u-text-xl-start {
9259
+ text-align: start !important;
9260
+ }
9261
+ }
9262
+ @media (min-width: 1536px) {
9263
+ .fs-u-d-xxl-flex {
9264
+ display: flex !important;
9265
+ }
9266
+ .fs-u-d-xxl-none {
9267
+ display: none !important;
9268
+ }
9269
+ .fs-u-text-xxl-start {
9270
+ text-align: start !important;
9271
+ }
9272
+ }
9273
+ @media (min-width: 1920px) {
9274
+ .fs-u-d-xxxl-flex {
9275
+ display: flex !important;
9276
+ }
9277
+ .fs-u-d-xxxl-none {
9278
+ display: none !important;
9279
+ }
9280
+ .fs-u-text-xxxl-start {
9281
+ text-align: start !important;
9282
+ }
9283
+ }
8032
9284
  }
8033
9285
  @layer tokens {
8034
9286
  [data-fs-brand=violet] {
@@ -8125,7 +9377,8 @@
8125
9377
  }
8126
9378
  }
8127
9379
  @layer tokens {
8128
- [data-theme=dark] {
9380
+ [data-theme=dark],
9381
+ [data-fs-theme=dark] {
8129
9382
  --fs-color-text: #f1f3f4;
8130
9383
  --fs-color-muted: #bdc1c6;
8131
9384
  --fs-color-border: #3c4043;
@@ -8172,7 +9425,8 @@
8172
9425
  --fs-feedback-info-bg: rgb(35.0058091619, 49.6887857769, 78.5757788254);
8173
9426
  }
8174
9427
  @supports (color: oklch(0% 0 0deg)) {
8175
- [data-theme=dark] {
9428
+ [data-theme=dark],
9429
+ [data-fs-theme=dark] {
8176
9430
  --fs-color-text: oklch(96.2913383165% 0.002529697 228.7848682695deg);
8177
9431
  --fs-color-muted: oklch(80.9268110646% 0.0083071608 253.8653061211deg);
8178
9432
  --fs-color-border: oklch(36.8827622528% 0.0074489239 240.018838067deg);
@@ -8216,5 +9470,37 @@
8216
9470
  --fs-feedback-info-bg: oklch(31.7574919059% 0.0556228738 263.0598185246deg);
8217
9471
  }
8218
9472
  }
9473
+ @media (prefers-color-scheme: dark) {
9474
+ [data-fs-theme=auto] {
9475
+ --fs-color-text: #f1f3f4;
9476
+ --fs-color-muted: #bdc1c6;
9477
+ --fs-color-border: #3c4043;
9478
+ --fs-color-surface: #202124;
9479
+ --fs-color-subtle: #2b2c2f;
9480
+ --fs-color-bg-surface: var(--fs-color-surface);
9481
+ --fs-color-bg-subtle: var(--fs-color-subtle);
9482
+ --fs-color-surface-raised: var(--fs-color-surface);
9483
+ --fs-color-surface-interactive: var(--fs-color-subtle);
9484
+ --fs-color-text-primary: var(--fs-color-text);
9485
+ --fs-color-text-muted: var(--fs-color-muted);
9486
+ --fs-color-border-default: var(--fs-color-border);
9487
+ --fs-color-focus: var(--fs-color-primary);
9488
+ --fs-tooltip-bg: #f8fafc;
9489
+ --fs-tooltip-text: #1e293b;
9490
+ }
9491
+ }
9492
+ @media (forced-colors: active) {
9493
+ :root,
9494
+ [data-theme=dark],
9495
+ [data-fs-theme=light],
9496
+ [data-fs-theme=dark],
9497
+ [data-fs-theme=auto] {
9498
+ --fs-color-border: CanvasText;
9499
+ --fs-color-text: CanvasText;
9500
+ --fs-color-surface: Canvas;
9501
+ --fs-color-subtle: Canvas;
9502
+ --fs-focus-color: Highlight;
9503
+ }
9504
+ }
8219
9505
  }
8220
9506
  /*# sourceMappingURL=fokus.css.map */