@fremtind/jokul 4.3.0 → 4.5.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 (92) hide show
  1. package/build/build-stats.html +1 -1
  2. package/build/cjs/components/checkbox/Checkbox.cjs +1 -1
  3. package/build/cjs/components/checkbox/Checkbox.cjs.map +1 -1
  4. package/build/cjs/components/cookie-consent/CookieConsent.cjs +1 -1
  5. package/build/cjs/components/cookie-consent/CookieConsent.cjs.map +1 -1
  6. package/build/cjs/components/cookie-consent/CookieConsent.d.cts +1 -1
  7. package/build/cjs/components/cookie-consent/types.d.cts +4 -0
  8. package/build/cjs/components/datepicker/DatePicker.cjs +1 -1
  9. package/build/cjs/components/datepicker/DatePicker.cjs.map +1 -1
  10. package/build/cjs/components/expander/ExpandablePanel.cjs +1 -1
  11. package/build/cjs/components/expander/ExpandablePanel.cjs.map +1 -1
  12. package/build/cjs/components/popover/Popover.cjs +1 -1
  13. package/build/cjs/components/popover/Popover.cjs.map +1 -1
  14. package/build/cjs/components/radio-button/BaseRadioButton.cjs +1 -1
  15. package/build/cjs/components/radio-button/BaseRadioButton.cjs.map +1 -1
  16. package/build/es/components/checkbox/Checkbox.js +1 -1
  17. package/build/es/components/checkbox/Checkbox.js.map +1 -1
  18. package/build/es/components/cookie-consent/CookieConsent.d.ts +1 -1
  19. package/build/es/components/cookie-consent/CookieConsent.js +1 -1
  20. package/build/es/components/cookie-consent/CookieConsent.js.map +1 -1
  21. package/build/es/components/cookie-consent/types.d.ts +4 -0
  22. package/build/es/components/datepicker/DatePicker.js +1 -1
  23. package/build/es/components/datepicker/DatePicker.js.map +1 -1
  24. package/build/es/components/expander/ExpandablePanel.js +1 -1
  25. package/build/es/components/expander/ExpandablePanel.js.map +1 -1
  26. package/build/es/components/popover/Popover.js +1 -1
  27. package/build/es/components/popover/Popover.js.map +1 -1
  28. package/build/es/components/radio-button/BaseRadioButton.js +1 -1
  29. package/build/es/components/radio-button/BaseRadioButton.js.map +1 -1
  30. package/package.json +1 -1
  31. package/styles/components/button/button.css +4 -0
  32. package/styles/components/button/button.min.css +1 -1
  33. package/styles/components/button/button.scss +11 -11
  34. package/styles/components/card/card.css +1 -1
  35. package/styles/components/card/card.min.css +1 -1
  36. package/styles/components/card/card.scss +1 -1
  37. package/styles/components/checkbox/checkbox.css +41 -10
  38. package/styles/components/checkbox/checkbox.min.css +1 -1
  39. package/styles/components/checkbox/checkbox.scss +35 -23
  40. package/styles/components/checkbox-panel/checkbox-panel.css +59 -23
  41. package/styles/components/checkbox-panel/checkbox-panel.min.css +1 -1
  42. package/styles/components/checkbox-panel/checkbox-panel.scss +4 -0
  43. package/styles/components/combobox/combobox.css +4 -1
  44. package/styles/components/combobox/combobox.min.css +1 -1
  45. package/styles/components/combobox/combobox.scss +4 -1
  46. package/styles/components/countdown/countdown.css +2 -2
  47. package/styles/components/countdown/countdown.min.css +1 -1
  48. package/styles/components/expander/expandable.css +14 -14
  49. package/styles/components/expander/expandable.min.css +1 -1
  50. package/styles/components/expander/expandable.scss +13 -17
  51. package/styles/components/feedback/feedback.css +6 -8
  52. package/styles/components/feedback/feedback.min.css +1 -1
  53. package/styles/components/feedback/feedback.scss +3 -9
  54. package/styles/components/file-input/file-input.css +13 -9
  55. package/styles/components/file-input/file-input.min.css +1 -1
  56. package/styles/components/input-group/input-group.css +2 -2
  57. package/styles/components/input-group/input-group.min.css +1 -1
  58. package/styles/components/input-panel/input-panel.css +15 -13
  59. package/styles/components/input-panel/input-panel.min.css +1 -1
  60. package/styles/components/input-panel/input-panel.scss +17 -15
  61. package/styles/components/link-list/link-list.css +4 -1
  62. package/styles/components/link-list/link-list.min.css +1 -1
  63. package/styles/components/link-list/link-list.scss +4 -1
  64. package/styles/components/loader/loader.css +6 -6
  65. package/styles/components/loader/loader.min.css +1 -1
  66. package/styles/components/loader/skeleton-loader.css +3 -3
  67. package/styles/components/loader/skeleton-loader.min.css +1 -1
  68. package/styles/components/message/message.css +2 -2
  69. package/styles/components/message/message.min.css +1 -1
  70. package/styles/components/popover/popover.css +11 -0
  71. package/styles/components/popover/popover.min.css +1 -1
  72. package/styles/components/popover/popover.scss +14 -0
  73. package/styles/components/progress-bar/progress-bar.css +25 -1
  74. package/styles/components/progress-bar/progress-bar.min.css +1 -1
  75. package/styles/components/progress-bar/progress-bar.scss +5 -0
  76. package/styles/components/radio-button/radio-button.css +41 -9
  77. package/styles/components/radio-button/radio-button.min.css +1 -1
  78. package/styles/components/radio-button/radio-button.scss +31 -18
  79. package/styles/components/radio-panel/radio-panel.css +18 -13
  80. package/styles/components/radio-panel/radio-panel.min.css +1 -1
  81. package/styles/components/radio-panel/radio-panel.scss +4 -0
  82. package/styles/components/segmented-control/segmented-control.css +43 -11
  83. package/styles/components/segmented-control/segmented-control.min.css +1 -1
  84. package/styles/components/system-message/system-message.css +2 -2
  85. package/styles/components/system-message/system-message.min.css +1 -1
  86. package/styles/components/toast/toast.css +4 -4
  87. package/styles/components/toast/toast.min.css +1 -1
  88. package/styles/components/toggle-switch/toggle-switch.css +2 -7
  89. package/styles/components/toggle-switch/toggle-switch.min.css +2 -2
  90. package/styles/components/toggle-switch/toggle-switch.scss +2 -9
  91. package/styles/styles.css +195 -86
  92. package/styles/styles.min.css +2 -2
package/styles/styles.css CHANGED
@@ -467,7 +467,7 @@
467
467
  --color: var(--jkl-color-text-default);
468
468
  }
469
469
  .jkl-form-support-label--error .jkl-form-support-label__icon, .jkl-form-support-label--warning .jkl-form-support-label__icon, .jkl-form-support-label--success .jkl-form-support-label__icon {
470
- animation: 400ms cubic-bezier(0, 0, 0.3, 1) 250ms jkl-support-icon-entrance-uz58f67 forwards;
470
+ animation: 400ms cubic-bezier(0, 0, 0.3, 1) 250ms jkl-support-icon-entrance-u0o407z forwards;
471
471
  }
472
472
  .jkl-form-support-label--sr-only {
473
473
  border: 0 !important;
@@ -533,7 +533,7 @@
533
533
  .jkl-label:has(+ .jkl-input-group-description) {
534
534
  margin-block-end: var(--jkl-spacing-4);
535
535
  }
536
- @keyframes jkl-support-icon-entrance-uz58f67 {
536
+ @keyframes jkl-support-icon-entrance-u0o407z {
537
537
  0% {
538
538
  margin-right: 0;
539
539
  opacity: 0;
@@ -751,6 +751,7 @@
751
751
  --jkl-button-padding-icon: var(--jkl-unit-20);
752
752
  --jkl-button-padding-icon-button: var(--jkl-unit-10);
753
753
  --jkl-button-tertiary-padding-icon: var(--jkl-unit-05);
754
+ --jkl-button-text-ink-offset: 0.1em;
754
755
  --jkl-icon-weight: var(--jkl-icon-weight-bold);
755
756
  --text-color: var(--jkl-color-text-default);
756
757
  --background-color: transparent;
@@ -815,8 +816,11 @@
815
816
  pointer-events: none;
816
817
  }
817
818
  .jkl-button__text {
819
+ display: block;
818
820
  width: 100%;
819
821
  max-width: 100%;
822
+ padding-block-start: var(--jkl-button-text-ink-offset);
823
+ margin-block-start: calc(var(--jkl-button-text-ink-offset) * -1);
820
824
  overflow: hidden;
821
825
  white-space: nowrap;
822
826
  text-overflow: ellipsis;
@@ -885,22 +889,22 @@
885
889
  animation: 2500ms linear infinite;
886
890
  }
887
891
  .jkl-loader__dot--left {
888
- animation-name: jkl-loader-left-spin-uz58f6g;
892
+ animation-name: jkl-loader-left-spin-u0o408j;
889
893
  margin-right: calc(var(--jkl-loader-spacing) * 0.9);
890
894
  }
891
895
  .jkl-loader__dot--middle {
892
- animation-name: jkl-loader-middle-spin-uz58f73;
896
+ animation-name: jkl-loader-middle-spin-u0o4092;
893
897
  margin-right: var(--jkl-loader-spacing);
894
898
  }
895
899
  .jkl-loader__dot--right {
896
- animation-name: jkl-loader-right-spin-uz58f7o;
900
+ animation-name: jkl-loader-right-spin-u0o409n;
897
901
  }
898
902
  @media screen and (forced-colors: active) {
899
903
  .jkl-loader__dot {
900
904
  background-color: CanvasText;
901
905
  }
902
906
  }
903
- @keyframes jkl-loader-left-spin-uz58f6g {
907
+ @keyframes jkl-loader-left-spin-u0o408j {
904
908
  0% {
905
909
  transform: rotate(0) scale(0);
906
910
  }
@@ -914,7 +918,7 @@
914
918
  transform: rotate(180deg) scale(0);
915
919
  }
916
920
  }
917
- @keyframes jkl-loader-middle-spin-uz58f73 {
921
+ @keyframes jkl-loader-middle-spin-u0o4092 {
918
922
  0% {
919
923
  transform: rotate(20deg) scale(0);
920
924
  }
@@ -931,7 +935,7 @@
931
935
  transform: rotate(200deg) scale(0);
932
936
  }
933
937
  }
934
- @keyframes jkl-loader-right-spin-uz58f7o {
938
+ @keyframes jkl-loader-right-spin-u0o409n {
935
939
  0% {
936
940
  transform: rotate(40deg) scale(0);
937
941
  }
@@ -971,7 +975,7 @@
971
975
  @media screen and (forced-colors: active) {
972
976
  .jkl-skeleton-element {
973
977
  border: 1px solid CanvasText;
974
- animation: 2s ease infinite jkl-blink-uz58f86;
978
+ animation: 2s ease infinite jkl-blink-u0o409o;
975
979
  }
976
980
  }
977
981
  .jkl-skeleton-input {
@@ -1019,10 +1023,10 @@
1019
1023
  }
1020
1024
  @media screen and (forced-colors: active) {
1021
1025
  .jkl-skeleton-table {
1022
- animation: 2s ease-in-out infinite jkl-blink-uz58f86;
1026
+ animation: 2s ease-in-out infinite jkl-blink-u0o409o;
1023
1027
  }
1024
1028
  }
1025
- @keyframes jkl-blink-uz58f86 {
1029
+ @keyframes jkl-blink-u0o409o {
1026
1030
  0% {
1027
1031
  opacity: 1;
1028
1032
  }
@@ -1048,7 +1052,7 @@
1048
1052
  --padding-m: var(--jkl-unit-15);
1049
1053
  --padding-l: var(--jkl-unit-20);
1050
1054
  --padding-xl: var(--jkl-unit-30);
1051
- --border-radius: 0.25rem;
1055
+ --border-radius: var(--jkl-border-radius-m);
1052
1056
  --border-color: transparent;
1053
1057
  --border-width: 0.0625rem;
1054
1058
  --background-color: transparent;
@@ -1242,10 +1246,37 @@
1242
1246
  }
1243
1247
  .jkl-checkbox__input {
1244
1248
  position: absolute;
1245
- opacity: 0;
1246
- pointer-events: none;
1247
- inset: 0 auto 0 0;
1248
- width: 1lh;
1249
+ inset-block-start: 0;
1250
+ inset-inline-start: 0;
1251
+ block-size: 1lh;
1252
+ inline-size: 1lh;
1253
+ margin: 0;
1254
+ padding: 0;
1255
+ cursor: pointer;
1256
+ z-index: 1;
1257
+ appearance: none;
1258
+ background: transparent;
1259
+ border: 0;
1260
+ }
1261
+ .jkl-checkbox__input {
1262
+ outline: 0;
1263
+ border-style: none;
1264
+ outline-style: none;
1265
+ }
1266
+ .jkl-checkbox__input:active, .jkl-checkbox__input:hover, .jkl-checkbox__input:focus {
1267
+ outline: 0;
1268
+ outline-style: none;
1269
+ }
1270
+ @media screen and (forced-colors: active) {
1271
+ .jkl-checkbox__input {
1272
+ outline: revert;
1273
+ border-style: revert;
1274
+ outline-style: revert;
1275
+ }
1276
+ .jkl-checkbox__input:active, .jkl-checkbox__input:hover, .jkl-checkbox__input:focus {
1277
+ outline: revert;
1278
+ outline-style: revert;
1279
+ }
1249
1280
  }
1250
1281
  .jkl-checkbox__label {
1251
1282
  cursor: pointer;
@@ -1258,9 +1289,6 @@
1258
1289
  font-weight: 400;
1259
1290
  --jkl-icon-weight: 300;
1260
1291
  }
1261
- .jkl-checkbox__label:hover, .jkl-checkbox__label:active {
1262
- --jkl-icon-weight: 400;
1263
- }
1264
1292
  .jkl-checkbox__label::before {
1265
1293
  content: "check_box_outline_blank";
1266
1294
  margin-inline-end: 0.25em;
@@ -1277,15 +1305,22 @@
1277
1305
  transition-duration: 75ms;
1278
1306
  transition-property: font-variation-settings, transform;
1279
1307
  }
1280
- .jkl-checkbox__label:has(+ :checked)::before {
1308
+ .jkl-checkbox__input:focus-visible + .jkl-checkbox__label::before {
1309
+ outline: 3px solid var(--jkl-color-border-action);
1310
+ outline-offset: 3px;
1311
+ }
1312
+ .jkl-checkbox__input:is(:hover, :active) + .jkl-checkbox__label, .jkl-checkbox__label:hover, .jkl-checkbox__label:active {
1313
+ --jkl-icon-weight: 400;
1314
+ }
1315
+ .jkl-checkbox__input:checked + .jkl-checkbox__label::before {
1281
1316
  content: "check_box";
1282
1317
  --jkl-icon-fill: 1;
1283
1318
  }
1284
- .jkl-checkbox__label:has(+ :indeterminate:not(:checked))::before {
1319
+ .jkl-checkbox__input:indeterminate:not(:checked) + .jkl-checkbox__label::before {
1285
1320
  content: "indeterminate_check_box";
1286
1321
  --jkl-icon-fill: 1;
1287
1322
  }
1288
- .jkl-checkbox__label:has(+ [aria-invalid=true])::before {
1323
+ .jkl-checkbox__input[aria-invalid=true] + .jkl-checkbox__label::before {
1289
1324
  color: var(--jkl-checkbox-error-color);
1290
1325
  }
1291
1326
  .jkl-checkbox + .jkl-checkbox {
@@ -1323,29 +1358,31 @@
1323
1358
  position: relative;
1324
1359
  padding: var(--jkl-unit-20) var(--padding-inline);
1325
1360
  }
1361
+ .jkl-input-panel__header .jkl-radio-button,
1362
+ .jkl-input-panel__header .jkl-checkbox {
1363
+ grid-column: 1/-1;
1364
+ grid-row: 1;
1365
+ inline-size: 100%;
1366
+ }
1367
+ .jkl-input-panel__header label {
1368
+ inline-size: 100%;
1369
+ }
1326
1370
  .jkl-input-panel__header__amount {
1327
1371
  display: flex;
1328
1372
  height: 100%;
1329
1373
  align-items: center;
1374
+ grid-column: 2;
1375
+ grid-row: 1;
1376
+ justify-self: end;
1377
+ pointer-events: none;
1378
+ position: relative;
1379
+ z-index: 1;
1330
1380
  font-size: var(--jkl-font-size-3);
1331
1381
  line-height: var(--jkl-line-height-tight);
1332
1382
  font-weight: 400;
1333
1383
  --jkl-icon-weight: 300;
1334
1384
  font-weight: 700;
1335
1385
  }
1336
- .jkl-input-panel__header label,
1337
- .jkl-input-panel__header .jkl-radio-button,
1338
- .jkl-input-panel__header .jkl-checkbox {
1339
- position: unset;
1340
- }
1341
- .jkl-input-panel__header label::after {
1342
- content: "";
1343
- position: absolute;
1344
- top: 0;
1345
- left: 0;
1346
- inline-size: 100%;
1347
- block-size: 100%;
1348
- }
1349
1386
  .jkl-input-panel__description {
1350
1387
  height: 0;
1351
1388
  overflow: hidden;
@@ -1382,6 +1419,9 @@
1382
1419
  /* Visuell justering ettersom ikonet ikke fyller bounding box helt */
1383
1420
  margin-inline-start: -0.1em;
1384
1421
  }
1422
+ .jkl-checkbox-panel .jkl-checkbox__input:focus-visible + .jkl-checkbox__label::before {
1423
+ outline: none;
1424
+ }
1385
1425
  }
1386
1426
  .jkl-chip {
1387
1427
  --padding-inline: var(--jkl-unit-15);
@@ -1612,6 +1652,7 @@
1612
1652
  outline: none;
1613
1653
  padding: 0;
1614
1654
  flex: 1 1 1ch;
1655
+ min-width: 0;
1615
1656
  max-height: var(--jkl-combobox-search-input-height);
1616
1657
  background: none;
1617
1658
  -webkit-appearance: none;
@@ -1733,10 +1774,12 @@
1733
1774
  }
1734
1775
  .jkl-combobox__chips {
1735
1776
  display: flex;
1777
+ flex: 1 1 auto;
1736
1778
  flex-wrap: wrap;
1737
1779
  align-items: center;
1738
1780
  gap: var(--jkl-combobox-chips-gap);
1739
- width: 100%;
1781
+ min-width: 0;
1782
+ box-sizing: border-box;
1740
1783
  padding: var(--jkl-text-input-padding);
1741
1784
  }
1742
1785
  .jkl-combobox__chips .jkl-chip {
@@ -2093,10 +2136,10 @@
2093
2136
  }
2094
2137
  }
2095
2138
  .jkl-countdown__tracker {
2096
- animation: jkl-downcount-uz58f9a var(--duration) linear forwards;
2139
+ animation: jkl-downcount-u0o40ag var(--duration) linear forwards;
2097
2140
  animation-play-state: var(--play-state, running);
2098
2141
  }
2099
- @keyframes jkl-downcount-uz58f9a {
2142
+ @keyframes jkl-downcount-u0o40ag {
2100
2143
  from {
2101
2144
  width: 100%;
2102
2145
  }
@@ -2386,6 +2429,17 @@
2386
2429
  background-color: var(--jkl-color-background-container-high);
2387
2430
  border-radius: var(--jkl-border-radius-s);
2388
2431
  }
2432
+ .jkl-popover:focus-visible {
2433
+ outline: 3px solid var(--jkl-color-border-action);
2434
+ outline-offset: 3px;
2435
+ }
2436
+ .jkl-popover-trigger:focus {
2437
+ outline: 0;
2438
+ }
2439
+ .jkl-popover-trigger:focus-visible {
2440
+ outline: 3px solid var(--jkl-color-border-action);
2441
+ outline-offset: 3px;
2442
+ }
2389
2443
  }
2390
2444
  @layer jokul.components {
2391
2445
  .jkl-description-list {
@@ -2477,34 +2531,34 @@
2477
2531
  .jkl-expandable__wrapper {
2478
2532
  --border-radius: 0.25rem;
2479
2533
  --outline-offset: 3px;
2534
+ --stroke-outline-offset: 3px;
2535
+ --border-top-left-radius: var(--border-radius);
2536
+ --border-top-right-radius: var(--border-radius);
2537
+ --border-bottom-left-radius: var(--border-radius);
2538
+ --border-bottom-right-radius: var(--border-radius);
2539
+ position: relative;
2540
+ }
2541
+ .jkl-expandable__wrapper + .jkl-expandable__wrapper {
2480
2542
  --border-top-left-radius: 0;
2481
2543
  --border-top-right-radius: 0;
2482
- --border-bottom-left-radius: 0;
2483
- --border-bottom-right-radius: 0;
2484
- position: relative;
2544
+ --stroke-outline-offset: -1px;
2485
2545
  }
2486
2546
  .jkl-expandable__wrapper + .jkl-expandable__wrapper .jkl-expandable--stroke {
2487
2547
  border-top: none;
2488
2548
  }
2489
- .jkl-expandable__wrapper:first-child {
2490
- --border-top-left-radius: var(--border-radius);
2491
- --border-top-right-radius: var(--border-radius);
2492
- }
2493
- .jkl-expandable__wrapper:last-child {
2494
- --border-bottom-left-radius: var(--border-radius);
2495
- --border-bottom-right-radius: var(--border-radius);
2549
+ .jkl-expandable__wrapper:has(+ .jkl-expandable__wrapper) {
2550
+ --border-bottom-left-radius: 0;
2551
+ --border-bottom-right-radius: 0;
2552
+ --stroke-outline-offset: -1px;
2496
2553
  }
2497
2554
  .jkl-expandable__wrapper:has(.jkl-expander:focus-visible):has(.jkl-expandable--stroke) {
2498
- --outline-offset: -1px;
2555
+ --outline-offset: var(--stroke-outline-offset);
2499
2556
  }
2500
2557
  .jkl-expandable__wrapper:has(.jkl-expander:focus-visible) .jkl-expandable__focus-container {
2501
2558
  outline: 3px solid var(--jkl-color-border-action);
2502
2559
  outline-offset: 3px;
2503
2560
  outline-offset: var(--outline-offset);
2504
2561
  }
2505
- .jkl-expandable__wrapper:has(:focus-visible):first-child:last-child {
2506
- --outline-offset: 3px;
2507
- }
2508
2562
  .jkl-expandable__focus-container {
2509
2563
  border-radius: var(--border-radius);
2510
2564
  position: absolute;
@@ -2597,12 +2651,12 @@
2597
2651
  --jkl-icon-size: 1.2em;
2598
2652
  }
2599
2653
  .jkl-feedback__fade-in {
2600
- animation: jkl-show-uz58f9x 0.25s ease-out;
2654
+ animation: jkl-show-u0o40ao 0.25s ease-out;
2601
2655
  }
2602
2656
  .jkl-feedback__buttons {
2603
2657
  display: flex;
2604
2658
  }
2605
- @keyframes jkl-show-uz58f9x {
2659
+ @keyframes jkl-show-u0o40ao {
2606
2660
  from {
2607
2661
  transform: translate3d(0, 0.5rem, 0);
2608
2662
  opacity: 0;
@@ -2648,10 +2702,6 @@
2648
2702
  transition-duration: 150ms;
2649
2703
  transition-property: opacity;
2650
2704
  }
2651
- .jkl-feedback-smiley-option::after {
2652
- inset: -0.125rem -0.125rem -0.125rem -0.125rem;
2653
- box-shadow: 0 0 0 0.125rem currentColor;
2654
- }
2655
2705
  .jkl-feedback-smiley-option::before {
2656
2706
  inset: 0;
2657
2707
  box-shadow: 0 0.125rem 1.875rem rgba(0, 0, 0, 0.1);
@@ -2666,8 +2716,10 @@
2666
2716
  input:checked + .jkl-feedback-smiley-option::before {
2667
2717
  opacity: 1;
2668
2718
  }
2669
- html:not([data-mousenavigation]):not([data-touchnavigation]) input:focus + .jkl-feedback-smiley-option::after {
2670
- opacity: 1;
2719
+ input:focus-visible + .jkl-feedback-smiley-option {
2720
+ border-radius: var(--jkl-border-radius-full);
2721
+ outline: 3px solid var(--jkl-color-border-action);
2722
+ outline-offset: 3px;
2671
2723
  }
2672
2724
  }
2673
2725
  @layer jokul.components {
@@ -2819,7 +2871,7 @@
2819
2871
  --background-color: var(--jkl-color-background-alert-success);
2820
2872
  }
2821
2873
  .jkl-message--dismissed {
2822
- animation: jkl-dismiss-uz58fa3 400ms ease-in-out forwards;
2874
+ animation: jkl-dismiss-u0o40b9 400ms ease-in-out forwards;
2823
2875
  transition: visibility 0ms 400ms;
2824
2876
  visibility: hidden;
2825
2877
  }
@@ -2841,7 +2893,7 @@
2841
2893
  .jkl-form-error-message {
2842
2894
  padding-bottom: calc(var(--jkl-unit-base) * 5);
2843
2895
  }
2844
- @keyframes jkl-dismiss-uz58fa3 {
2896
+ @keyframes jkl-dismiss-u0o40b9 {
2845
2897
  from {
2846
2898
  opacity: 1;
2847
2899
  transform: translate3d(0, 0, 0);
@@ -2895,10 +2947,37 @@
2895
2947
  }
2896
2948
  .jkl-radio-button__input {
2897
2949
  position: absolute;
2898
- opacity: 0;
2899
- pointer-events: none;
2900
- inset: 0 auto 0 0;
2901
- width: 1lh;
2950
+ inset-block-start: 0;
2951
+ inset-inline-start: 0;
2952
+ block-size: 1lh;
2953
+ inline-size: 1lh;
2954
+ margin: 0;
2955
+ padding: 0;
2956
+ cursor: pointer;
2957
+ z-index: 1;
2958
+ appearance: none;
2959
+ background: transparent;
2960
+ border: 0;
2961
+ }
2962
+ .jkl-radio-button__input {
2963
+ outline: 0;
2964
+ border-style: none;
2965
+ outline-style: none;
2966
+ }
2967
+ .jkl-radio-button__input:active, .jkl-radio-button__input:hover, .jkl-radio-button__input:focus {
2968
+ outline: 0;
2969
+ outline-style: none;
2970
+ }
2971
+ @media screen and (forced-colors: active) {
2972
+ .jkl-radio-button__input {
2973
+ outline: revert;
2974
+ border-style: revert;
2975
+ outline-style: revert;
2976
+ }
2977
+ .jkl-radio-button__input:active, .jkl-radio-button__input:hover, .jkl-radio-button__input:focus {
2978
+ outline: revert;
2979
+ outline-style: revert;
2980
+ }
2902
2981
  }
2903
2982
  .jkl-radio-button__label {
2904
2983
  cursor: pointer;
@@ -2911,9 +2990,6 @@
2911
2990
  font-weight: 400;
2912
2991
  --jkl-icon-weight: 300;
2913
2992
  }
2914
- .jkl-radio-button__label:hover, .jkl-radio-button__label:active {
2915
- --jkl-icon-weight: 400;
2916
- }
2917
2993
  .jkl-radio-button__label::before {
2918
2994
  content: "radio_button_unchecked";
2919
2995
  margin-inline-end: 0.25em;
@@ -2930,10 +3006,18 @@
2930
3006
  transition-duration: 75ms;
2931
3007
  transition-property: font-variation-settings, transform;
2932
3008
  }
2933
- .jkl-radio-button__label:has(+ :checked)::before {
3009
+ .jkl-radio-button__input:focus-visible + .jkl-radio-button__label::before {
3010
+ border-radius: var(--jkl-border-radius-full);
3011
+ outline: 3px solid var(--jkl-color-border-action);
3012
+ outline-offset: 3px;
3013
+ }
3014
+ .jkl-radio-button__input:is(:hover, :active) + .jkl-radio-button__label, .jkl-radio-button__label:hover, .jkl-radio-button__label:active {
3015
+ --jkl-icon-weight: 400;
3016
+ }
3017
+ .jkl-radio-button__input:checked + .jkl-radio-button__label::before {
2934
3018
  content: "radio_button_checked";
2935
3019
  }
2936
- .jkl-radio-button__label:has(+ [aria-invalid=true])::before {
3020
+ .jkl-radio-button__input[aria-invalid=true] + .jkl-radio-button__label::before {
2937
3021
  color: var(--jkl-radio-button-error-color);
2938
3022
  }
2939
3023
  .jkl-radio-button + .jkl-radio-button, .jkl-dormant-form-support-label + .jkl-radio-button, .jkl-form-support-label + .jkl-radio-button {
@@ -3496,7 +3580,6 @@
3496
3580
  margin: 0;
3497
3581
  height: min-content;
3498
3582
  border-radius: var(--jkl-unit-05);
3499
- overflow: hidden;
3500
3583
  background: var(--jkl-color-background-container-low);
3501
3584
  }
3502
3585
  .jkl-link-list ul .jkl-link-list-link {
@@ -3542,6 +3625,10 @@
3542
3625
  .jkl-link-list ul .jkl-link-list-link:is(:hover, :focus-visible)::after {
3543
3626
  translate: 4px 0;
3544
3627
  }
3628
+ .jkl-link-list ul .jkl-link-list-link:focus-visible {
3629
+ outline: 3px solid var(--jkl-color-border-action);
3630
+ outline-offset: 3px;
3631
+ }
3545
3632
  .jkl-link-list .jkl-link-list-item {
3546
3633
  display: flex;
3547
3634
  }
@@ -4185,12 +4272,36 @@
4185
4272
  background-color: CanvasText;
4186
4273
  }
4187
4274
  }
4275
+ .jkl-progress-bar {
4276
+ outline: 0;
4277
+ border-style: none;
4278
+ outline-style: none;
4279
+ }
4280
+ .jkl-progress-bar:active, .jkl-progress-bar:hover, .jkl-progress-bar:focus {
4281
+ outline: 0;
4282
+ outline-style: none;
4283
+ }
4284
+ @media screen and (forced-colors: active) {
4285
+ .jkl-progress-bar {
4286
+ outline: revert;
4287
+ border-style: revert;
4288
+ outline-style: revert;
4289
+ }
4290
+ .jkl-progress-bar:active, .jkl-progress-bar:hover, .jkl-progress-bar:focus {
4291
+ outline: revert;
4292
+ outline-style: revert;
4293
+ }
4294
+ }
4295
+ .jkl-progress-bar:focus-visible {
4296
+ outline: 3px solid var(--jkl-color-border-action);
4297
+ outline-offset: 3px;
4298
+ }
4188
4299
  .jkl-progress-bar__tracker {
4189
4300
  transition-property: width;
4190
4301
  transition-timing-function: ease;
4191
4302
  transition-duration: 150ms;
4192
4303
  }
4193
- @keyframes jkl-downcount-uz58fau {
4304
+ @keyframes jkl-downcount-u0o40c3 {
4194
4305
  from {
4195
4306
  width: 100%;
4196
4307
  }
@@ -4204,6 +4315,9 @@
4204
4315
  /* Visuell justering pga. rundt ikon */
4205
4316
  margin-inline-start: -0.15em;
4206
4317
  }
4318
+ .jkl-radio-panel .jkl-radio-button__input:focus-visible + .jkl-radio-button__label::before {
4319
+ outline: none;
4320
+ }
4207
4321
  }
4208
4322
  .jkl-select--beta {
4209
4323
  --border-color: var(--jkl-color-border-input);
@@ -4700,7 +4814,7 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-select--beta s
4700
4814
  margin-bottom: 0;
4701
4815
  }
4702
4816
  .jkl-system-message--dismissed {
4703
- animation: jkl-dismiss-uz58fbx 400ms forwards;
4817
+ animation: jkl-dismiss-u0o40dq 400ms forwards;
4704
4818
  transition: block 400ms 400ms;
4705
4819
  }
4706
4820
  .jkl-system-message--info {
@@ -4730,7 +4844,7 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-select--beta s
4730
4844
  border-width: 4px;
4731
4845
  }
4732
4846
  }
4733
- @keyframes jkl-dismiss-uz58fbx {
4847
+ @keyframes jkl-dismiss-u0o40dq {
4734
4848
  from {
4735
4849
  opacity: 1;
4736
4850
  transform: translateY(0);
@@ -5567,12 +5681,12 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-select--beta s
5567
5681
  }
5568
5682
  .jkl-toast[data-animation=entering],
5569
5683
  .jkl-toast[data-animation=queued] {
5570
- animation: jkl-entering-uz58fc9 200ms ease-out forwards;
5684
+ animation: jkl-entering-u0o40ee 200ms ease-out forwards;
5571
5685
  }
5572
5686
  .jkl-toast[data-animation=exiting] {
5573
- animation: jkl-exiting-uz58fcr 150ms ease-in forwards;
5687
+ animation: jkl-exiting-u0o40f9 150ms ease-in forwards;
5574
5688
  }
5575
- @keyframes jkl-entering-uz58fc9 {
5689
+ @keyframes jkl-entering-u0o40ee {
5576
5690
  from {
5577
5691
  opacity: 0;
5578
5692
  transform: translate3d(0, 50%, 0);
@@ -5582,7 +5696,7 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-select--beta s
5582
5696
  transform: translate3d(0, 0, 0);
5583
5697
  }
5584
5698
  }
5585
- @keyframes jkl-exiting-uz58fcr {
5699
+ @keyframes jkl-exiting-u0o40f9 {
5586
5700
  from {
5587
5701
  opacity: 1;
5588
5702
  transform: translate3d(0, 0, 0);
@@ -7046,7 +7160,7 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-toggle-slider:
7046
7160
  --jkl-toggle-switch-width: var(--jkl-unit-60);
7047
7161
  --jkl-toggle-switch-knob-size: var(--jkl-unit-30);
7048
7162
  --border-width: 0.0625rem;
7049
- --switch-padding: 0.25rem;
7163
+ --switch-padding: var(--jkl-unit-05);
7050
7164
  --knob-position: 0;
7051
7165
  --switch-border-color: var(--jkl-color-border-action);
7052
7166
  --indicator-color: var(--jkl-color-background-container-high);
@@ -7119,7 +7233,6 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-toggle-slider:
7119
7233
  --jkl-toggle-switch-height: var(--jkl-unit-40);
7120
7234
  --jkl-toggle-switch-width: var(--jkl-unit-60);
7121
7235
  --jkl-toggle-switch-knob-size: var(--jkl-unit-30);
7122
- --jkl-toggle-switch-indicator-spacing: 0;
7123
7236
  position: relative;
7124
7237
  box-sizing: border-box;
7125
7238
  display: flex;
@@ -7167,13 +7280,9 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-toggle-slider:
7167
7280
  position: absolute;
7168
7281
  top: 50%;
7169
7282
  right: 100%;
7170
- margin-right: var(--jkl-toggle-switch-indicator-spacing);
7283
+ font-size: var(--jkl-unit-20);
7171
7284
  transform: translate(0, -50%);
7172
7285
  }
7173
- .jkl-toggle-switch-widget__indicator > .jkl-icon__icon {
7174
- position: absolute;
7175
- inset: 0;
7176
- }
7177
7286
 
7178
7287
  @layer jokul.components {
7179
7288
  .jkl-help {