@fremtind/jokul 4.7.0 → 4.7.2

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 (55) hide show
  1. package/build/build-stats.html +1 -1
  2. package/build/cjs/components/expander/Expander.cjs +1 -1
  3. package/build/cjs/components/expander/Expander.cjs.map +1 -1
  4. package/build/cjs/components/popover/Popover.cjs +1 -1
  5. package/build/cjs/components/popover/Popover.cjs.map +1 -1
  6. package/build/cjs/components/popover/types.d.cts +8 -1
  7. package/build/cjs/components/select/Select.cjs +1 -1
  8. package/build/cjs/components/select/Select.cjs.map +1 -1
  9. package/build/cjs/hooks/useListNavigation/useListNavigation.cjs +1 -1
  10. package/build/cjs/hooks/useListNavigation/useListNavigation.cjs.map +1 -1
  11. package/build/cjs/hooks/useListNavigation/useListNavigation.d.cts +11 -2
  12. package/build/es/components/expander/Expander.js +1 -1
  13. package/build/es/components/expander/Expander.js.map +1 -1
  14. package/build/es/components/popover/Popover.js +1 -1
  15. package/build/es/components/popover/Popover.js.map +1 -1
  16. package/build/es/components/popover/types.d.ts +8 -1
  17. package/build/es/components/select/Select.js +1 -1
  18. package/build/es/components/select/Select.js.map +1 -1
  19. package/build/es/hooks/useListNavigation/useListNavigation.d.ts +11 -2
  20. package/build/es/hooks/useListNavigation/useListNavigation.js +1 -1
  21. package/build/es/hooks/useListNavigation/useListNavigation.js.map +1 -1
  22. package/package.json +3 -3
  23. package/styles/components/button/button.css +7 -2
  24. package/styles/components/button/button.min.css +1 -1
  25. package/styles/components/button/button.scss +9 -3
  26. package/styles/components/countdown/countdown.css +2 -2
  27. package/styles/components/countdown/countdown.min.css +1 -1
  28. package/styles/components/expander/expandable.css +20 -13
  29. package/styles/components/expander/expandable.min.css +1 -1
  30. package/styles/components/expander/expandable.scss +22 -17
  31. package/styles/components/feedback/feedback.css +2 -2
  32. package/styles/components/feedback/feedback.min.css +1 -1
  33. package/styles/components/file-input/file-input.css +16 -11
  34. package/styles/components/file-input/file-input.min.css +1 -1
  35. package/styles/components/input-group/input-group.css +2 -2
  36. package/styles/components/input-group/input-group.min.css +1 -1
  37. package/styles/components/loader/loader.css +6 -6
  38. package/styles/components/loader/loader.min.css +1 -1
  39. package/styles/components/loader/skeleton-loader.css +3 -3
  40. package/styles/components/loader/skeleton-loader.min.css +1 -1
  41. package/styles/components/message/message.css +2 -2
  42. package/styles/components/message/message.min.css +1 -1
  43. package/styles/components/progress-bar/progress-bar.css +1 -1
  44. package/styles/components/progress-bar/progress-bar.min.css +1 -1
  45. package/styles/components/segmented-control/segmented-control.css +2 -2
  46. package/styles/components/segmented-control/segmented-control.min.css +1 -1
  47. package/styles/components/select/select.css +63 -14
  48. package/styles/components/select/select.min.css +1 -1
  49. package/styles/components/select/select.scss +120 -22
  50. package/styles/components/system-message/system-message.css +2 -2
  51. package/styles/components/system-message/system-message.min.css +1 -1
  52. package/styles/components/toast/toast.css +4 -4
  53. package/styles/components/toast/toast.min.css +1 -1
  54. package/styles/styles.css +114 -53
  55. package/styles/styles.min.css +1 -1
package/styles/styles.css CHANGED
@@ -481,7 +481,7 @@
481
481
  --color: var(--jkl-color-text-default);
482
482
  }
483
483
  .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 {
484
- animation: 400ms cubic-bezier(0, 0, 0.3, 1) 250ms jkl-support-icon-entrance-u5wtga8 forwards;
484
+ animation: 400ms cubic-bezier(0, 0, 0.3, 1) 250ms jkl-support-icon-entrance-ucys3ui forwards;
485
485
  }
486
486
  .jkl-form-support-label--sr-only {
487
487
  border: 0 !important;
@@ -547,7 +547,7 @@
547
547
  .jkl-label:has(+ .jkl-input-group-description) {
548
548
  margin-block-end: var(--jkl-spacing-4);
549
549
  }
550
- @keyframes jkl-support-icon-entrance-u5wtga8 {
550
+ @keyframes jkl-support-icon-entrance-ucys3ui {
551
551
  0% {
552
552
  margin-right: 0;
553
553
  opacity: 0;
@@ -766,6 +766,7 @@
766
766
  --jkl-button-padding-icon-button: var(--jkl-unit-10);
767
767
  --jkl-button-tertiary-padding-icon: var(--jkl-unit-05);
768
768
  --jkl-button-text-ink-offset: 0.1em;
769
+ --button-min-width: 9ch;
769
770
  --jkl-icon-weight: var(--jkl-icon-weight-bold);
770
771
  --text-color: var(--jkl-color-text-default);
771
772
  --background-color: transparent;
@@ -796,7 +797,10 @@
796
797
  transition-property: background-color;
797
798
  }
798
799
  .jkl-button:has(.jkl-button__text) {
799
- min-width: 9.5ch;
800
+ min-width: var(--button-min-width);
801
+ }
802
+ .jkl-button:has(.jkl-button__text):has(.jkl-icon) {
803
+ min-width: initial;
800
804
  }
801
805
  .jkl-button:has(.jkl-icon:first-child) {
802
806
  padding-inline-start: var(--jkl-button-padding-icon);
@@ -815,6 +819,7 @@
815
819
  display: flex;
816
820
  flex-direction: row;
817
821
  align-items: center;
822
+ justify-content: center;
818
823
  gap: calc(var(--jkl-unit-base) * 0.25);
819
824
  pointer-events: none;
820
825
  }
@@ -831,7 +836,7 @@
831
836
  }
832
837
  .jkl-button__text {
833
838
  display: block;
834
- width: 100%;
839
+ min-width: 0;
835
840
  max-width: 100%;
836
841
  padding-block-start: var(--jkl-button-text-ink-offset);
837
842
  margin-block-start: calc(var(--jkl-button-text-ink-offset) * -1);
@@ -904,22 +909,22 @@
904
909
  animation: 2500ms linear infinite;
905
910
  }
906
911
  .jkl-loader__dot--left {
907
- animation-name: jkl-loader-left-spin-u5wtgaz;
912
+ animation-name: jkl-loader-left-spin-ucys3ve;
908
913
  margin-right: calc(var(--jkl-loader-spacing) * 0.9);
909
914
  }
910
915
  .jkl-loader__dot--middle {
911
- animation-name: jkl-loader-middle-spin-u5wtgbc;
916
+ animation-name: jkl-loader-middle-spin-ucys3we;
912
917
  margin-right: var(--jkl-loader-spacing);
913
918
  }
914
919
  .jkl-loader__dot--right {
915
- animation-name: jkl-loader-right-spin-u5wtgbf;
920
+ animation-name: jkl-loader-right-spin-ucys3wx;
916
921
  }
917
922
  @media screen and (forced-colors: active) {
918
923
  .jkl-loader__dot {
919
924
  background-color: CanvasText;
920
925
  }
921
926
  }
922
- @keyframes jkl-loader-left-spin-u5wtgaz {
927
+ @keyframes jkl-loader-left-spin-ucys3ve {
923
928
  0% {
924
929
  transform: rotate(0) scale(0);
925
930
  }
@@ -933,7 +938,7 @@
933
938
  transform: rotate(180deg) scale(0);
934
939
  }
935
940
  }
936
- @keyframes jkl-loader-middle-spin-u5wtgbc {
941
+ @keyframes jkl-loader-middle-spin-ucys3we {
937
942
  0% {
938
943
  transform: rotate(20deg) scale(0);
939
944
  }
@@ -950,7 +955,7 @@
950
955
  transform: rotate(200deg) scale(0);
951
956
  }
952
957
  }
953
- @keyframes jkl-loader-right-spin-u5wtgbf {
958
+ @keyframes jkl-loader-right-spin-ucys3wx {
954
959
  0% {
955
960
  transform: rotate(40deg) scale(0);
956
961
  }
@@ -990,7 +995,7 @@
990
995
  @media screen and (forced-colors: active) {
991
996
  .jkl-skeleton-element {
992
997
  border: 1px solid CanvasText;
993
- animation: 2s ease infinite jkl-blink-u5wtgbu;
998
+ animation: 2s ease infinite jkl-blink-ucys3xe;
994
999
  }
995
1000
  }
996
1001
  .jkl-skeleton-input {
@@ -1038,10 +1043,10 @@
1038
1043
  }
1039
1044
  @media screen and (forced-colors: active) {
1040
1045
  .jkl-skeleton-table {
1041
- animation: 2s ease-in-out infinite jkl-blink-u5wtgbu;
1046
+ animation: 2s ease-in-out infinite jkl-blink-ucys3xe;
1042
1047
  }
1043
1048
  }
1044
- @keyframes jkl-blink-u5wtgbu {
1049
+ @keyframes jkl-blink-ucys3xe {
1045
1050
  0% {
1046
1051
  opacity: 1;
1047
1052
  }
@@ -2145,10 +2150,10 @@
2145
2150
  }
2146
2151
  }
2147
2152
  .jkl-countdown__tracker {
2148
- animation: jkl-downcount-u5wtgca var(--duration) linear forwards;
2153
+ animation: jkl-downcount-ucys3yv var(--duration) linear forwards;
2149
2154
  animation-play-state: var(--play-state, running);
2150
2155
  }
2151
- @keyframes jkl-downcount-u5wtgca {
2156
+ @keyframes jkl-downcount-ucys3yv {
2152
2157
  from {
2153
2158
  width: 100%;
2154
2159
  }
@@ -2513,12 +2518,16 @@
2513
2518
  @layer jokul.components {
2514
2519
  .jkl-expandable {
2515
2520
  background-color: var(--jkl-color-background-container-low);
2516
- border: 1px solid transparent;
2517
2521
  border-radius: var(--border-radius);
2518
2522
  box-sizing: border-box;
2519
2523
  width: 100%;
2520
2524
  overflow: hidden;
2521
2525
  }
2526
+ @media screen and (forced-colors: active) {
2527
+ .jkl-expandable {
2528
+ border: 1px solid CanvasText;
2529
+ }
2530
+ }
2522
2531
  .jkl-expandable__content[data-expanded=true] {
2523
2532
  height: auto;
2524
2533
  }
@@ -2532,13 +2541,13 @@
2532
2541
  padding: var(--jkl-unit-20);
2533
2542
  }
2534
2543
  .jkl-expandable--stroke {
2535
- border-color: var(--jkl-color-border-separator);
2544
+ border: 1px solid var(--jkl-color-border-separator);
2536
2545
  background-color: transparent;
2537
2546
  border-radius: 0;
2538
2547
  border-radius: var(--border-top-left-radius) var(--border-top-right-radius) var(--border-bottom-right-radius) var(--border-bottom-left-radius);
2539
2548
  }
2540
2549
  .jkl-expandable__wrapper {
2541
- --border-radius: 0.25rem;
2550
+ --border-radius: var(--jkl-border-radius-m);
2542
2551
  --outline-offset: 3px;
2543
2552
  --stroke-outline-offset: 3px;
2544
2553
  --border-top-left-radius: var(--border-radius);
@@ -2568,6 +2577,18 @@
2568
2577
  outline-offset: 3px;
2569
2578
  outline-offset: var(--outline-offset);
2570
2579
  }
2580
+ .jkl-expandable__wrapper .jkl-expander {
2581
+ padding: var(--jkl-unit-20);
2582
+ width: 100%;
2583
+ }
2584
+ .jkl-expandable__wrapper .jkl-expander__label {
2585
+ flex-grow: 1;
2586
+ }
2587
+ @media (hover: hover) {
2588
+ .jkl-expandable__wrapper .jkl-expander:hover {
2589
+ background-color: var(--jkl-color-background-interactive-selected);
2590
+ }
2591
+ }
2571
2592
  .jkl-expandable__focus-container {
2572
2593
  border-radius: var(--border-radius);
2573
2594
  position: absolute;
@@ -2579,10 +2600,9 @@
2579
2600
  appearance: none;
2580
2601
  border: none;
2581
2602
  text-align: left;
2582
- width: 100%;
2583
- padding: var(--jkl-unit-20);
2584
2603
  cursor: pointer;
2585
2604
  color: var(--jkl-color);
2605
+ -webkit-tap-highlight-color: transparent;
2586
2606
  display: flex;
2587
2607
  gap: 0.5rem;
2588
2608
  align-items: center;
@@ -2592,9 +2612,6 @@
2592
2612
  .jkl-expander::-webkit-details-marker {
2593
2613
  display: none;
2594
2614
  }
2595
- .jkl-expander__label {
2596
- flex-grow: 1;
2597
- }
2598
2615
  .jkl-expander__chevron {
2599
2616
  user-select: none;
2600
2617
  transition-property: transform;
@@ -2611,11 +2628,6 @@
2611
2628
  transition-timing-function: ease;
2612
2629
  transition-duration: 100ms;
2613
2630
  }
2614
- @media (hover: hover) {
2615
- .jkl-expander:hover {
2616
- background-color: var(--jkl-color-background-interactive-selected);
2617
- }
2618
- }
2619
2631
  .jkl-expander {
2620
2632
  outline: 0;
2621
2633
  border-style: none;
@@ -2660,12 +2672,12 @@
2660
2672
  --jkl-icon-size: 1.2em;
2661
2673
  }
2662
2674
  .jkl-feedback__fade-in {
2663
- animation: jkl-show-u5wtgcd 0.25s ease-out;
2675
+ animation: jkl-show-ucys3ze 0.25s ease-out;
2664
2676
  }
2665
2677
  .jkl-feedback__buttons {
2666
2678
  display: flex;
2667
2679
  }
2668
- @keyframes jkl-show-u5wtgcd {
2680
+ @keyframes jkl-show-ucys3ze {
2669
2681
  from {
2670
2682
  transform: translate3d(0, 0.5rem, 0);
2671
2683
  opacity: 0;
@@ -2880,7 +2892,7 @@
2880
2892
  --background-color: var(--jkl-color-background-alert-success);
2881
2893
  }
2882
2894
  .jkl-message--dismissed {
2883
- animation: jkl-dismiss-u5wtgcw 400ms ease-in-out forwards;
2895
+ animation: jkl-dismiss-ucys3zh 400ms ease-in-out forwards;
2884
2896
  transition: visibility 0ms 400ms;
2885
2897
  visibility: hidden;
2886
2898
  }
@@ -2902,7 +2914,7 @@
2902
2914
  .jkl-form-error-message {
2903
2915
  padding-bottom: calc(var(--jkl-unit-base) * 5);
2904
2916
  }
2905
- @keyframes jkl-dismiss-u5wtgcw {
2917
+ @keyframes jkl-dismiss-ucys3zh {
2906
2918
  from {
2907
2919
  opacity: 1;
2908
2920
  transform: translate3d(0, 0, 0);
@@ -4366,21 +4378,23 @@
4366
4378
  color: var(--jkl-color-text-on-alert);
4367
4379
  }
4368
4380
  .jkl-select__options-menu {
4369
- position: absolute;
4370
- left: -0.0625rem;
4371
- right: -0.0625rem;
4372
- top: 100%;
4373
- z-index: 7000;
4374
4381
  background-color: var(--jkl-color-background-container-high);
4375
4382
  border: 0.125rem solid var(--jkl-color-border-input-focus);
4376
- border-top: none;
4377
- border-radius: 0 0 var(--border-radius) var(--border-radius);
4378
4383
  box-sizing: border-box;
4384
+ margin-inline: -0.0625rem;
4385
+ width: calc(100% + 0.125rem);
4386
+ --min-option-height: min(var(--jkl-unit-60), 3rem);
4387
+ --option-padding: var(--jkl-unit-05) 0.75em;
4379
4388
  overflow-y: auto;
4380
4389
  max-height: calc((var(--jkl-select-max-shown-options, 5) + 0.5) * var(--min-option-height));
4381
- transition-property: height;
4382
- transition-timing-function: ease;
4383
- transition-duration: 150ms;
4390
+ }
4391
+ .jkl-select__options-menu[data-popover-placement=bottom] {
4392
+ border-top: none;
4393
+ border-radius: 0 0 var(--jkl-border-radius-s) var(--jkl-border-radius-s);
4394
+ }
4395
+ .jkl-select__options-menu[data-popover-placement=top] {
4396
+ border-bottom: none;
4397
+ border-radius: var(--jkl-border-radius-s) var(--jkl-border-radius-s) 0 0;
4384
4398
  }
4385
4399
  .jkl-select__option-wrapper {
4386
4400
  margin: 0;
@@ -4433,8 +4447,6 @@
4433
4447
  }
4434
4448
  .jkl-select--open .jkl-select__search-input,
4435
4449
  .jkl-select--open .jkl-select__button {
4436
- border-bottom-left-radius: 0;
4437
- border-bottom-right-radius: 0;
4438
4450
  border-color: var(--jkl-color-border-input-focus);
4439
4451
  background-color: var(--jkl-color-background-container-high);
4440
4452
  box-shadow: 0 0 0 0.0625rem var(--jkl-color-border-input-focus);
@@ -4443,6 +4455,16 @@
4443
4455
  .jkl-select--open .jkl-select__button:hover ~ .jkl-select__arrow {
4444
4456
  transform: translateY(calc(-50% + -0.1875rem));
4445
4457
  }
4458
+ .jkl-select--open .jkl-select__outer-wrapper[data-popover-placement=bottom] .jkl-select__search-input,
4459
+ .jkl-select--open .jkl-select__outer-wrapper[data-popover-placement=bottom] .jkl-select__button {
4460
+ border-bottom-left-radius: 0;
4461
+ border-bottom-right-radius: 0;
4462
+ }
4463
+ .jkl-select--open .jkl-select__outer-wrapper[data-popover-placement=top] .jkl-select__search-input,
4464
+ .jkl-select--open .jkl-select__outer-wrapper[data-popover-placement=top] .jkl-select__button {
4465
+ border-top-left-radius: 0;
4466
+ border-top-right-radius: 0;
4467
+ }
4446
4468
  .jkl-select--invalid .jkl-select__search-input,
4447
4469
  .jkl-select--invalid .jkl-select__button {
4448
4470
  background-color: var(--jkl-color-background-alert-error);
@@ -4462,12 +4484,14 @@
4462
4484
  .jkl-select .jkl-select__button:hover, .jkl-select .jkl-select__search-input:hover {
4463
4485
  border-color: Highlight;
4464
4486
  }
4465
- .jkl-select .jkl-select__option {
4487
+ }
4488
+ @media screen and (forced-colors: active) {
4489
+ .jkl-select__option {
4466
4490
  color: CanvasText;
4467
4491
  border-top: 1px solid Canvas;
4468
4492
  border-bottom: 1px solid Canvas;
4469
4493
  }
4470
- .jkl-select .jkl-select__option:hover, .jkl-select .jkl-select__option:focus {
4494
+ .jkl-select__option:hover, .jkl-select__option:focus {
4471
4495
  border-top: 1px solid SelectedItem;
4472
4496
  border-bottom: 1px solid SelectedItem;
4473
4497
  --jkl-icon-weight: 400;
@@ -4475,6 +4499,43 @@
4475
4499
  letter-spacing: -0.014em;
4476
4500
  }
4477
4501
  }
4502
+ .jkl-popover.jkl-select__popover {
4503
+ background: none;
4504
+ box-shadow: none;
4505
+ border-radius: 0;
4506
+ z-index: 7000;
4507
+ }
4508
+ @media (prefers-reduced-motion: no-preference) {
4509
+ .jkl-select__options-menu {
4510
+ animation: jkl-select-options-menu-in var(--jkl-motion-timing-snappy) var(--jkl-motion-easing-standard);
4511
+ }
4512
+ .jkl-select__options-menu[data-popover-placement=top] {
4513
+ animation-name: jkl-select-options-menu-in-from-top;
4514
+ }
4515
+ }
4516
+ @keyframes jkl-select-options-menu-in {
4517
+ from {
4518
+ opacity: 0;
4519
+ transform: translateY(-0.25rem);
4520
+ }
4521
+ to {
4522
+ opacity: 1;
4523
+ transform: translateY(0);
4524
+ }
4525
+ }
4526
+ @keyframes jkl-select-options-menu-in-from-top {
4527
+ from {
4528
+ opacity: 0;
4529
+ transform: translateY(0.25rem);
4530
+ }
4531
+ to {
4532
+ opacity: 1;
4533
+ transform: translateY(0);
4534
+ }
4535
+ }
4536
+ .jkl-select__option:focus-visible {
4537
+ outline: none;
4538
+ }
4478
4539
  }
4479
4540
  @layer jokul.components {
4480
4541
  .jkl-progress-bar {
@@ -4529,7 +4590,7 @@
4529
4590
  transition-timing-function: ease;
4530
4591
  transition-duration: 150ms;
4531
4592
  }
4532
- @keyframes jkl-downcount-u5wtgd2 {
4593
+ @keyframes jkl-downcount-ucys400 {
4533
4594
  from {
4534
4595
  width: 100%;
4535
4596
  }
@@ -5033,7 +5094,7 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-select--beta s
5033
5094
  margin-bottom: 0;
5034
5095
  }
5035
5096
  .jkl-system-message--dismissed {
5036
- animation: jkl-dismiss-u5wtgeh 400ms forwards;
5097
+ animation: jkl-dismiss-ucys41b 400ms forwards;
5037
5098
  transition: block 400ms 400ms;
5038
5099
  }
5039
5100
  .jkl-system-message--info {
@@ -5063,7 +5124,7 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-select--beta s
5063
5124
  border-width: 4px;
5064
5125
  }
5065
5126
  }
5066
- @keyframes jkl-dismiss-u5wtgeh {
5127
+ @keyframes jkl-dismiss-ucys41b {
5067
5128
  from {
5068
5129
  opacity: 1;
5069
5130
  transform: translateY(0);
@@ -5900,12 +5961,12 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-select--beta s
5900
5961
  }
5901
5962
  .jkl-toast[data-animation=entering],
5902
5963
  .jkl-toast[data-animation=queued] {
5903
- animation: jkl-entering-u5wtgf4 200ms ease-out forwards;
5964
+ animation: jkl-entering-ucys41s 200ms ease-out forwards;
5904
5965
  }
5905
5966
  .jkl-toast[data-animation=exiting] {
5906
- animation: jkl-exiting-u5wtgft 150ms ease-in forwards;
5967
+ animation: jkl-exiting-ucys42l 150ms ease-in forwards;
5907
5968
  }
5908
- @keyframes jkl-entering-u5wtgf4 {
5969
+ @keyframes jkl-entering-ucys41s {
5909
5970
  from {
5910
5971
  opacity: 0;
5911
5972
  transform: translate3d(0, 50%, 0);
@@ -5915,7 +5976,7 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-select--beta s
5915
5976
  transform: translate3d(0, 0, 0);
5916
5977
  }
5917
5978
  }
5918
- @keyframes jkl-exiting-u5wtgft {
5979
+ @keyframes jkl-exiting-ucys42l {
5919
5980
  from {
5920
5981
  opacity: 1;
5921
5982
  transform: translate3d(0, 0, 0);