@fremtind/jokul 4.5.1 → 4.6.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 (85) hide show
  1. package/build/build-stats.html +1 -1
  2. package/build/cjs/components/icon/Icon.cjs +1 -1
  3. package/build/cjs/components/icon/Icon.cjs.map +1 -1
  4. package/build/cjs/components/icon/Icon.d.cts +2 -2
  5. package/build/cjs/components/icon/icons/GreenCheckIcon.cjs +1 -1
  6. package/build/cjs/components/icon/icons/GreenCheckIcon.cjs.map +1 -1
  7. package/build/cjs/components/icon/icons/GreenCheckIcon.d.cts +2 -3
  8. package/build/cjs/components/icon/icons/RedCrossIcon.cjs +1 -1
  9. package/build/cjs/components/icon/icons/RedCrossIcon.cjs.map +1 -1
  10. package/build/cjs/components/icon/icons/RedCrossIcon.d.cts +2 -3
  11. package/build/cjs/components/number-input/NumberInput.cjs +2 -0
  12. package/build/cjs/components/number-input/NumberInput.cjs.map +1 -0
  13. package/build/cjs/components/number-input/NumberInput.d.cts +7 -0
  14. package/build/cjs/components/number-input/index.cjs +2 -0
  15. package/build/cjs/components/number-input/index.cjs.map +1 -0
  16. package/build/cjs/components/number-input/index.d.cts +2 -0
  17. package/build/cjs/components/number-input/types.cjs +2 -0
  18. package/build/cjs/components/number-input/types.cjs.map +1 -0
  19. package/build/cjs/components/number-input/types.d.cts +20 -0
  20. package/build/cjs/components/text-area/BaseTextArea.cjs +1 -1
  21. package/build/cjs/components/text-area/BaseTextArea.cjs.map +1 -1
  22. package/build/cjs/components/text-area/counter.cjs +2 -0
  23. package/build/cjs/components/text-area/counter.cjs.map +1 -0
  24. package/build/cjs/components/text-area/counter.d.cts +2 -0
  25. package/build/cjs/components/text-area/types.d.cts +21 -1
  26. package/build/es/components/icon/Icon.d.ts +2 -2
  27. package/build/es/components/icon/Icon.js +1 -1
  28. package/build/es/components/icon/Icon.js.map +1 -1
  29. package/build/es/components/icon/icons/GreenCheckIcon.d.ts +2 -3
  30. package/build/es/components/icon/icons/GreenCheckIcon.js +1 -1
  31. package/build/es/components/icon/icons/GreenCheckIcon.js.map +1 -1
  32. package/build/es/components/icon/icons/RedCrossIcon.d.ts +2 -3
  33. package/build/es/components/icon/icons/RedCrossIcon.js +1 -1
  34. package/build/es/components/icon/icons/RedCrossIcon.js.map +1 -1
  35. package/build/es/components/number-input/NumberInput.d.ts +7 -0
  36. package/build/es/components/number-input/NumberInput.js +2 -0
  37. package/build/es/components/number-input/NumberInput.js.map +1 -0
  38. package/build/es/components/number-input/index.d.ts +2 -0
  39. package/build/es/components/number-input/index.js +2 -0
  40. package/build/es/components/number-input/index.js.map +1 -0
  41. package/build/es/components/number-input/types.d.ts +20 -0
  42. package/build/es/components/number-input/types.js +2 -0
  43. package/build/es/components/number-input/types.js.map +1 -0
  44. package/build/es/components/text-area/BaseTextArea.js +1 -1
  45. package/build/es/components/text-area/BaseTextArea.js.map +1 -1
  46. package/build/es/components/text-area/counter.d.ts +2 -0
  47. package/build/es/components/text-area/counter.js +2 -0
  48. package/build/es/components/text-area/counter.js.map +1 -0
  49. package/build/es/components/text-area/types.d.ts +21 -1
  50. package/package.json +13 -1
  51. package/styles/components/countdown/countdown.css +2 -2
  52. package/styles/components/countdown/countdown.min.css +1 -1
  53. package/styles/components/feedback/feedback.css +2 -2
  54. package/styles/components/feedback/feedback.min.css +1 -1
  55. package/styles/components/file-input/file-input.css +9 -9
  56. package/styles/components/file-input/file-input.min.css +1 -1
  57. package/styles/components/icon/icon.css +28 -14
  58. package/styles/components/icon/icon.min.css +1 -1
  59. package/styles/components/icon/icon.scss +26 -20
  60. package/styles/components/input-group/input-group.css +2 -2
  61. package/styles/components/input-group/input-group.min.css +1 -1
  62. package/styles/components/list/list.css +34 -40
  63. package/styles/components/list/list.min.css +1 -1
  64. package/styles/components/list/list.scss +23 -25
  65. package/styles/components/loader/loader.css +6 -6
  66. package/styles/components/loader/loader.min.css +1 -1
  67. package/styles/components/loader/skeleton-loader.css +3 -3
  68. package/styles/components/loader/skeleton-loader.min.css +1 -1
  69. package/styles/components/message/message.css +2 -2
  70. package/styles/components/message/message.min.css +1 -1
  71. package/styles/components/number-input/_index.scss +2 -0
  72. package/styles/components/number-input/number-input.css +222 -0
  73. package/styles/components/number-input/number-input.min.css +1 -0
  74. package/styles/components/number-input/number-input.scss +121 -0
  75. package/styles/components/progress-bar/progress-bar.css +1 -1
  76. package/styles/components/progress-bar/progress-bar.min.css +1 -1
  77. package/styles/components/segmented-control/segmented-control.css +30 -16
  78. package/styles/components/segmented-control/segmented-control.min.css +1 -1
  79. package/styles/components/system-message/system-message.css +2 -2
  80. package/styles/components/system-message/system-message.min.css +1 -1
  81. package/styles/components/toast/toast.css +4 -4
  82. package/styles/components/toast/toast.min.css +1 -1
  83. package/styles/styles.css +305 -78
  84. package/styles/styles.min.css +1 -1
  85. package/styles/styles.scss +1 -0
package/styles/styles.css CHANGED
@@ -277,28 +277,42 @@
277
277
  display: block;
278
278
  }
279
279
  .jkl-icon-red-cross {
280
- --red-cross-circle: var(--jkl-color-background-alert-error);
281
- --red-cross-path: var(--jkl-color-text-on-alert);
282
280
  width: 1.3em;
283
281
  height: 1.3em;
282
+ box-sizing: border-box;
283
+ border-radius: 999px;
284
+ background-color: var(--jkl-color-background-alert-error);
285
+ color: var(--jkl-color-text-on-alert);
286
+ display: inline-grid;
287
+ place-items: center;
288
+ font-size: 1em;
289
+ --jkl-icon-weight: var(--jkl-icon-weight-bold);
284
290
  }
285
- .jkl-icon-red-cross path {
286
- fill: var(--red-cross-path);
287
- }
288
- .jkl-icon-red-cross circle {
289
- fill: var(--red-cross-circle);
291
+ @media screen and (forced-colors: active) {
292
+ .jkl-icon-red-cross {
293
+ background-color: Canvas;
294
+ color: CanvasText;
295
+ border: 1px solid CanvasText;
296
+ }
290
297
  }
291
298
  .jkl-icon-green-check {
292
- --green-check-circle: var(--jkl-color-background-alert-success);
293
- --green-check-path: var(--jkl-color-text-on-alert);
294
299
  width: 1.3em;
295
300
  height: 1.3em;
301
+ box-sizing: border-box;
302
+ border-radius: 999px;
303
+ background-color: var(--jkl-color-background-alert-success);
304
+ color: var(--jkl-color-text-on-alert);
305
+ display: inline-grid;
306
+ place-items: center;
307
+ font-size: 1em;
308
+ --jkl-icon-weight: var(--jkl-icon-weight-bold);
296
309
  }
297
- .jkl-icon-green-check path {
298
- fill: var(--green-check-path);
299
- }
300
- .jkl-icon-green-check circle {
301
- fill: var(--green-check-circle);
310
+ @media screen and (forced-colors: active) {
311
+ .jkl-icon-green-check {
312
+ background-color: Canvas;
313
+ color: CanvasText;
314
+ border: 1px solid CanvasText;
315
+ }
302
316
  }
303
317
  .jkl-animated-horizontal-arrows,
304
318
  .jkl-animated-vertical-arrows {
@@ -467,7 +481,7 @@
467
481
  --color: var(--jkl-color-text-default);
468
482
  }
469
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 {
470
- animation: 400ms cubic-bezier(0, 0, 0.3, 1) 250ms jkl-support-icon-entrance-uuk6hei forwards;
484
+ animation: 400ms cubic-bezier(0, 0, 0.3, 1) 250ms jkl-support-icon-entrance-uw1i6bw forwards;
471
485
  }
472
486
  .jkl-form-support-label--sr-only {
473
487
  border: 0 !important;
@@ -533,7 +547,7 @@
533
547
  .jkl-label:has(+ .jkl-input-group-description) {
534
548
  margin-block-end: var(--jkl-spacing-4);
535
549
  }
536
- @keyframes jkl-support-icon-entrance-uuk6hei {
550
+ @keyframes jkl-support-icon-entrance-uw1i6bw {
537
551
  0% {
538
552
  margin-right: 0;
539
553
  opacity: 0;
@@ -889,22 +903,22 @@
889
903
  animation: 2500ms linear infinite;
890
904
  }
891
905
  .jkl-loader__dot--left {
892
- animation-name: jkl-loader-left-spin-uuk6hep;
906
+ animation-name: jkl-loader-left-spin-uw1i6c3;
893
907
  margin-right: calc(var(--jkl-loader-spacing) * 0.9);
894
908
  }
895
909
  .jkl-loader__dot--middle {
896
- animation-name: jkl-loader-middle-spin-uuk6hf8;
910
+ animation-name: jkl-loader-middle-spin-uw1i6cy;
897
911
  margin-right: var(--jkl-loader-spacing);
898
912
  }
899
913
  .jkl-loader__dot--right {
900
- animation-name: jkl-loader-right-spin-uuk6hfe;
914
+ animation-name: jkl-loader-right-spin-uw1i6dq;
901
915
  }
902
916
  @media screen and (forced-colors: active) {
903
917
  .jkl-loader__dot {
904
918
  background-color: CanvasText;
905
919
  }
906
920
  }
907
- @keyframes jkl-loader-left-spin-uuk6hep {
921
+ @keyframes jkl-loader-left-spin-uw1i6c3 {
908
922
  0% {
909
923
  transform: rotate(0) scale(0);
910
924
  }
@@ -918,7 +932,7 @@
918
932
  transform: rotate(180deg) scale(0);
919
933
  }
920
934
  }
921
- @keyframes jkl-loader-middle-spin-uuk6hf8 {
935
+ @keyframes jkl-loader-middle-spin-uw1i6cy {
922
936
  0% {
923
937
  transform: rotate(20deg) scale(0);
924
938
  }
@@ -935,7 +949,7 @@
935
949
  transform: rotate(200deg) scale(0);
936
950
  }
937
951
  }
938
- @keyframes jkl-loader-right-spin-uuk6hfe {
952
+ @keyframes jkl-loader-right-spin-uw1i6dq {
939
953
  0% {
940
954
  transform: rotate(40deg) scale(0);
941
955
  }
@@ -975,7 +989,7 @@
975
989
  @media screen and (forced-colors: active) {
976
990
  .jkl-skeleton-element {
977
991
  border: 1px solid CanvasText;
978
- animation: 2s ease infinite jkl-blink-uuk6hg8;
992
+ animation: 2s ease infinite jkl-blink-uw1i6e4;
979
993
  }
980
994
  }
981
995
  .jkl-skeleton-input {
@@ -1023,10 +1037,10 @@
1023
1037
  }
1024
1038
  @media screen and (forced-colors: active) {
1025
1039
  .jkl-skeleton-table {
1026
- animation: 2s ease-in-out infinite jkl-blink-uuk6hg8;
1040
+ animation: 2s ease-in-out infinite jkl-blink-uw1i6e4;
1027
1041
  }
1028
1042
  }
1029
- @keyframes jkl-blink-uuk6hg8 {
1043
+ @keyframes jkl-blink-uw1i6e4 {
1030
1044
  0% {
1031
1045
  opacity: 1;
1032
1046
  }
@@ -1841,32 +1855,9 @@
1841
1855
  }
1842
1856
  }
1843
1857
  /*
1844
- * NOTE: These icon also exists as a copy in the jkl-icons-react package.
1845
- * If you're here to change them, consider changing them there as well, or
1846
- * finding a technical solution to sharing the SVG markup
1858
+ * NOTE: These markers should stay visually aligned with GreenCheckIcon and
1859
+ * RedCrossIcon in the icon package.
1847
1860
  */
1848
- @media screen and (prefers-color-scheme: light) {
1849
- :root {
1850
- --jkl-list-marker-cross: url("data:image/svg+xml,%3Csvg width='19' height='19' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='9.5' cy='9.5' r='8.75' fill='%23F6B3B3'/%3E%3Cpath fill='%231B1917' d='M5.54 12.68l7.14-7.1.84.85-7.13 7.09z'/%3E%3Cpath fill='%231B1917' d='M12.67 13.47l-7.13-7.1.85-.83 7.13 7.1z'/%3E%3C/svg%3E%0A");
1851
- --jkl-list-marker-check: url("data:image/svg+xml,%3Csvg width='19' height='19' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='9.5' cy='9.5' r='9.5' fill='%23ACD3B5'/%3E%3Cpath d='M4.75 11l2.35 2.36 7.84-7.84' stroke='%231B1917' stroke-width='1.5'/%3E%3C/svg%3E%0A");
1852
- }
1853
- }
1854
- [data-theme=light] {
1855
- --jkl-list-marker-cross: url("data:image/svg+xml,%3Csvg width='19' height='19' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='9.5' cy='9.5' r='8.75' fill='%23F6B3B3'/%3E%3Cpath fill='%231B1917' d='M5.54 12.68l7.14-7.1.84.85-7.13 7.09z'/%3E%3Cpath fill='%231B1917' d='M12.67 13.47l-7.13-7.1.85-.83 7.13 7.1z'/%3E%3C/svg%3E%0A");
1856
- --jkl-list-marker-check: url("data:image/svg+xml,%3Csvg width='19' height='19' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='9.5' cy='9.5' r='9.5' fill='%23ACD3B5'/%3E%3Cpath d='M4.75 11l2.35 2.36 7.84-7.84' stroke='%231B1917' stroke-width='1.5'/%3E%3C/svg%3E%0A");
1857
- }
1858
-
1859
- @media screen and (prefers-color-scheme: dark) {
1860
- :root {
1861
- --jkl-list-marker-cross: url("data:image/svg+xml,%3Csvg width='19' height='19' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='9.5' cy='9.5' r='8.75' fill='%23DE9E9E'/%3E%3Cpath fill='%231B1917' d='M5.54 12.68l7.14-7.1.84.85-7.13 7.09z'/%3E%3Cpath fill='%231B1917' d='M12.67 13.47l-7.13-7.1.85-.83 7.13 7.1z'/%3E%3C/svg%3E%0A");
1862
- --jkl-list-marker-check: url("data:image/svg+xml,%3Csvg width='19' height='19' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='9.5' cy='9.5' r='9.5' fill='%2394B79B'/%3E%3Cpath d='M4.75 11l2.35 2.36 7.84-7.84' stroke='%231B1917' stroke-width='1.5'/%3E%3C/svg%3E%0A");
1863
- }
1864
- }
1865
- [data-theme=dark] {
1866
- --jkl-list-marker-cross: url("data:image/svg+xml,%3Csvg width='19' height='19' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='9.5' cy='9.5' r='8.75' fill='%23DE9E9E'/%3E%3Cpath fill='%231B1917' d='M5.54 12.68l7.14-7.1.84.85-7.13 7.09z'/%3E%3Cpath fill='%231B1917' d='M12.67 13.47l-7.13-7.1.85-.83 7.13 7.1z'/%3E%3C/svg%3E%0A");
1867
- --jkl-list-marker-check: url("data:image/svg+xml,%3Csvg width='19' height='19' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='9.5' cy='9.5' r='9.5' fill='%2394B79B'/%3E%3Cpath d='M4.75 11l2.35 2.36 7.84-7.84' stroke='%231B1917' stroke-width='1.5'/%3E%3C/svg%3E%0A");
1868
- }
1869
-
1870
1861
  @layer jokul.components {
1871
1862
  .jkl-list {
1872
1863
  --list-text-color: var(--jkl-color-text-default);
@@ -1904,32 +1895,49 @@
1904
1895
  padding-left: 0;
1905
1896
  }
1906
1897
  .jkl-list__item--iconed::before {
1907
- text-indent: -9999px;
1908
- background-size: contain;
1909
- width: 1em;
1910
- height: 1em;
1898
+ font-family: "Fremtind Material Symbols", "Fremtind Material Symbols Fallback", sans-serif;
1899
+ font-variation-settings: "FILL" var(--jkl-icon-fill, 0), "GRAD" var(--jkl-icon-grade, 0), "opsz" var(--jkl-icon-opsz, 24);
1900
+ font-feature-settings: "liga";
1901
+ -webkit-font-feature-settings: "liga";
1902
+ font-size: 1.3em;
1903
+ font-weight: var(--jkl-icon-weight, 300);
1904
+ line-height: 1;
1905
+ display: inline-block;
1906
+ -webkit-font-smoothing: antialiased;
1907
+ transition-timing-function: ease;
1908
+ transition-duration: 75ms;
1909
+ transition-property: font-variation-settings, transform;
1910
+ display: inline-grid;
1911
+ place-items: center;
1912
+ width: 1.1875em;
1913
+ height: 1.1875em;
1914
+ box-sizing: border-box;
1911
1915
  flex-shrink: 0;
1912
1916
  margin-right: 0.5em;
1913
1917
  margin-top: 0.2em;
1918
+ font-size: 1em;
1919
+ line-height: 1;
1920
+ border-radius: 999px;
1921
+ color: var(--jkl-color-text-on-alert);
1922
+ --jkl-icon-weight: var(--jkl-icon-weight-bold);
1914
1923
  }
1915
1924
  .jkl-list__item--check::before {
1916
- content: "";
1917
- content: ""/"";
1925
+ content: "\e5ca";
1926
+ content: "\e5ca"/"";
1918
1927
  alt: " ";
1919
- background-image: var(--jkl-list-marker-check);
1928
+ background-color: var(--jkl-color-background-alert-success);
1920
1929
  }
1921
1930
  .jkl-list__item--cross::before {
1922
- content: "";
1923
- content: ""/"";
1931
+ content: "\e5cd";
1932
+ content: "\e5cd"/"";
1924
1933
  alt: " ";
1925
- background-image: var(--jkl-list-marker-cross);
1934
+ background-color: var(--jkl-color-background-alert-error);
1926
1935
  }
1927
1936
  @media screen and (forced-colors: active) {
1928
- .jkl-list .jkl-list__item--check::before {
1929
- background-image: _check(CanvasText, Canvas);
1930
- }
1931
- .jkl-list .jkl-list__item--cross::before {
1932
- background-image: _cross(CanvasText, Canvas);
1937
+ .jkl-list .jkl-list__item--check::before, .jkl-list .jkl-list__item--cross::before {
1938
+ background-color: Canvas;
1939
+ color: CanvasText;
1940
+ border: 1px solid CanvasText;
1933
1941
  }
1934
1942
  }
1935
1943
  }
@@ -2136,10 +2144,10 @@
2136
2144
  }
2137
2145
  }
2138
2146
  .jkl-countdown__tracker {
2139
- animation: jkl-downcount-uuk6hho var(--duration) linear forwards;
2147
+ animation: jkl-downcount-uw1i6f0 var(--duration) linear forwards;
2140
2148
  animation-play-state: var(--play-state, running);
2141
2149
  }
2142
- @keyframes jkl-downcount-uuk6hho {
2150
+ @keyframes jkl-downcount-uw1i6f0 {
2143
2151
  from {
2144
2152
  width: 100%;
2145
2153
  }
@@ -2651,12 +2659,12 @@
2651
2659
  --jkl-icon-size: 1.2em;
2652
2660
  }
2653
2661
  .jkl-feedback__fade-in {
2654
- animation: jkl-show-uuk6hhz 0.25s ease-out;
2662
+ animation: jkl-show-uw1i6fq 0.25s ease-out;
2655
2663
  }
2656
2664
  .jkl-feedback__buttons {
2657
2665
  display: flex;
2658
2666
  }
2659
- @keyframes jkl-show-uuk6hhz {
2667
+ @keyframes jkl-show-uw1i6fq {
2660
2668
  from {
2661
2669
  transform: translate3d(0, 0.5rem, 0);
2662
2670
  opacity: 0;
@@ -2871,7 +2879,7 @@
2871
2879
  --background-color: var(--jkl-color-background-alert-success);
2872
2880
  }
2873
2881
  .jkl-message--dismissed {
2874
- animation: jkl-dismiss-uuk6hiy 400ms ease-in-out forwards;
2882
+ animation: jkl-dismiss-uw1i6gf 400ms ease-in-out forwards;
2875
2883
  transition: visibility 0ms 400ms;
2876
2884
  visibility: hidden;
2877
2885
  }
@@ -2893,7 +2901,7 @@
2893
2901
  .jkl-form-error-message {
2894
2902
  padding-bottom: calc(var(--jkl-unit-base) * 5);
2895
2903
  }
2896
- @keyframes jkl-dismiss-uuk6hiy {
2904
+ @keyframes jkl-dismiss-uw1i6gf {
2897
2905
  from {
2898
2906
  opacity: 1;
2899
2907
  transform: translate3d(0, 0, 0);
@@ -3958,6 +3966,225 @@
3958
3966
  border-block-end: var(--separator);
3959
3967
  }
3960
3968
 
3969
+ @layer jokul.components {
3970
+ .jkl-number-input {
3971
+ display: flex;
3972
+ flex-direction: column;
3973
+ align-items: flex-start;
3974
+ }
3975
+ .jkl-number-input__wrapper {
3976
+ --jkl-text-input-padding: var(--jkl-text-input-vertical-padding)
3977
+ var(--jkl-text-input-horizontal-padding);
3978
+ --jkl-text-input-vertical-padding: var(--jkl-unit-15);
3979
+ --jkl-text-input-horizontal-padding: var(--jkl-unit-15);
3980
+ --jkl-text-input-action-button-size: var(--jkl-unit-60);
3981
+ --jkl-text-input-action-button-icon-size: var(--jkl-unit-30);
3982
+ --jkl-text-input-action-button-padding: var(--jkl-unit-10) 0;
3983
+ --jkl-text-input-action-button-focus-position: var(--jkl-unit-05);
3984
+ --text-color: var(--jkl-color-text-default);
3985
+ --background-color: var(--jkl-color-background-input-base);
3986
+ --border-color: var(--jkl-color-border-input);
3987
+ --placeholder-color: var(--jkl-color-text-subdued);
3988
+ border-radius: var(--jkl-border-radius-s);
3989
+ box-sizing: border-box;
3990
+ max-width: 100%;
3991
+ position: relative;
3992
+ display: flex;
3993
+ align-items: center;
3994
+ font-size: var(--jkl-font-size-3);
3995
+ line-height: var(--jkl-line-height-tight);
3996
+ font-weight: 400;
3997
+ --jkl-icon-weight: 300;
3998
+ transition-timing-function: ease;
3999
+ transition-duration: 150ms;
4000
+ transition-property: color, box-shadow, background-color;
4001
+ background-color: var(--background-color);
4002
+ color: var(--text-color);
4003
+ box-shadow: inset 0 0 0 0.0625rem var(--border-color), 0 0 0 0.0625rem transparent;
4004
+ }
4005
+ .jkl-number-input__wrapper:focus-within, .jkl-number-input__wrapper:has([data-focused=true]) {
4006
+ --background-color: var(--jkl-color-background-input-focus);
4007
+ }
4008
+ .jkl-number-input__wrapper[data-invalid=true]:not(:focus-within):not(:has([data-focused=true])) {
4009
+ --background-color: var(--jkl-color-background-alert-error);
4010
+ --text-color: var(--jkl-color-text-on-alert);
4011
+ --placeholder-color: color(from currentColor sRGB r g b / 75%);
4012
+ }
4013
+ .jkl-number-input__wrapper:hover, .jkl-number-input__wrapper:focus-within, .jkl-number-input__wrapper:has([data-focused=true]) {
4014
+ --border-color: var(--jkl-color-border-input-focus);
4015
+ box-shadow: inset 0 0 0 0.0625rem var(--border-color), 0 0 0 0.0625rem var(--border-color);
4016
+ }
4017
+ @media screen and (forced-colors: active) {
4018
+ .jkl-number-input__wrapper:hover, .jkl-number-input__wrapper:focus-within, .jkl-number-input__wrapper:has([data-focused=true]) {
4019
+ border: 0.125rem solid ButtonText;
4020
+ }
4021
+ }
4022
+ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-number-input__wrapper:has(.jkl-text-input__input:focus-visible), html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-number-input__wrapper:has(.jkl-text-area__text-area:focus-visible) {
4023
+ outline: 3px solid var(--jkl-color-border-action);
4024
+ outline-offset: 3px;
4025
+ }
4026
+ .jkl-number-input__wrapper > .jkl-icon-button:focus-visible {
4027
+ outline: 3px solid var(--jkl-color-border-action);
4028
+ outline-offset: -8px;
4029
+ }
4030
+ @media screen and (forced-colors: active) {
4031
+ .jkl-number-input__wrapper > .jkl-icon-button:focus-visible {
4032
+ --border-color: ButtonText;
4033
+ }
4034
+ }
4035
+ .jkl-number-input__wrapper > .jkl-text-input-action-button {
4036
+ flex-shrink: 0;
4037
+ display: flex;
4038
+ box-sizing: border-box;
4039
+ align-items: center;
4040
+ justify-content: center;
4041
+ padding: var(--jkl-text-input-action-button-padding);
4042
+ height: var(--jkl-text-input-action-button-size);
4043
+ width: var(--jkl-text-input-action-button-size);
4044
+ margin-inline-start: calc(var(--jkl-text-input-horizontal-padding) * -1);
4045
+ }
4046
+ .jkl-number-input__wrapper > .jkl-text-input-action-button .jkl-icon-button__icon {
4047
+ height: var(--jkl-text-input-action-button-icon-size);
4048
+ width: var(--jkl-text-input-action-button-icon-size);
4049
+ }
4050
+ .jkl-number-input__wrapper > .jkl-text-input-action-button:hover {
4051
+ color: var(--jkl-color-text-interactive-hover);
4052
+ }
4053
+ @media screen and (forced-colors: active) {
4054
+ .jkl-number-input__wrapper > .jkl-text-input-action-button:hover {
4055
+ border: 0.125rem inset ButtonText;
4056
+ }
4057
+ }
4058
+ @media screen and (forced-colors: active) {
4059
+ .jkl-number-input__wrapper {
4060
+ border: 0.125rem inset ButtonText;
4061
+ }
4062
+ }
4063
+ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-number-input__wrapper:has(.jkl-number-input__input:focus-visible) {
4064
+ outline: 3px solid var(--jkl-color-border-action);
4065
+ outline-offset: 3px;
4066
+ }
4067
+ .jkl-number-input__wrapper:has(.jkl-number-input__input:invalid):not(:focus-within):not(:has([data-focused=true])) {
4068
+ --background-color: var(--jkl-color-background-alert-error);
4069
+ --text-color: var(--jkl-color-text-on-alert);
4070
+ --placeholder-color: color(from currentColor sRGB r g b / 75%);
4071
+ }
4072
+ .jkl-number-input__wrapper--stepper {
4073
+ --jkl-number-input-stepper-min-width: calc(
4074
+ 3ch + (var(--jkl-text-input-horizontal-padding) * 2)
4075
+ );
4076
+ --jkl-number-input-stepper-text-color: var(--text-color);
4077
+ display: grid;
4078
+ grid-template-columns: max-content minmax(var(--jkl-number-input-stepper-min-width), 1fr) max-content;
4079
+ overflow: hidden;
4080
+ }
4081
+ .jkl-number-input__wrapper--stepper:has(button[data-direction]:focus-visible) {
4082
+ overflow: visible;
4083
+ }
4084
+ .jkl-number-input__input {
4085
+ padding: var(--jkl-text-input-padding);
4086
+ width: 100%;
4087
+ appearance: textfield;
4088
+ -moz-appearance: textfield;
4089
+ background: none;
4090
+ -webkit-appearance: none;
4091
+ color: inherit;
4092
+ font-size: var(--jkl-font-size-3);
4093
+ line-height: var(--jkl-line-height-tight);
4094
+ font-weight: 400;
4095
+ --jkl-icon-weight: 300;
4096
+ }
4097
+ .jkl-number-input__input {
4098
+ outline: 0;
4099
+ border-style: none;
4100
+ outline-style: none;
4101
+ }
4102
+ .jkl-number-input__input:active, .jkl-number-input__input:hover, .jkl-number-input__input:focus {
4103
+ outline: 0;
4104
+ outline-style: none;
4105
+ }
4106
+ @media screen and (forced-colors: active) {
4107
+ .jkl-number-input__input {
4108
+ outline: revert;
4109
+ border-style: revert;
4110
+ outline-style: revert;
4111
+ }
4112
+ .jkl-number-input__input:active, .jkl-number-input__input:hover, .jkl-number-input__input:focus {
4113
+ outline: revert;
4114
+ outline-style: revert;
4115
+ }
4116
+ }
4117
+ .jkl-number-input__input input[type=number]::-webkit-outer-spin-button,
4118
+ .jkl-number-input__input input[type=number]::-webkit-inner-spin-button {
4119
+ -webkit-appearance: none;
4120
+ }
4121
+ .jkl-number-input__input input[type=number] {
4122
+ -moz-appearance: textfield;
4123
+ }
4124
+ @media screen and (forced-colors: active) {
4125
+ .jkl-number-input__input {
4126
+ outline: none;
4127
+ border: none;
4128
+ }
4129
+ .jkl-number-input__input:focus-visible {
4130
+ outline: none;
4131
+ }
4132
+ }
4133
+ .jkl-number-input__input::placeholder {
4134
+ opacity: 1;
4135
+ color: var(--placeholder-color);
4136
+ }
4137
+ .jkl-number-input__input::-webkit-inner-spin-button, .jkl-number-input__input::-webkit-outer-spin-button {
4138
+ -webkit-appearance: none;
4139
+ margin: 0;
4140
+ }
4141
+ .jkl-number-input__input--align-right {
4142
+ text-align: right;
4143
+ }
4144
+ .jkl-number-input__input--stepper {
4145
+ box-sizing: border-box;
4146
+ min-inline-size: var(--jkl-number-input-stepper-min-width);
4147
+ text-align: center;
4148
+ }
4149
+ .jkl-number-input button[data-direction] {
4150
+ --text-color: var(--jkl-number-input-stepper-text-color);
4151
+ aspect-ratio: 1;
4152
+ padding: 0;
4153
+ display: inline-grid;
4154
+ place-items: center;
4155
+ text-align: center;
4156
+ height: 100%;
4157
+ }
4158
+ .jkl-number-input button[data-direction]::before {
4159
+ content: "";
4160
+ position: absolute;
4161
+ width: 1px;
4162
+ inset-block: 20%;
4163
+ background-color: var(--jkl-color-border-separator);
4164
+ transition-timing-function: ease;
4165
+ transition-duration: 150ms;
4166
+ transition-property: inset;
4167
+ }
4168
+ .jkl-number-input button[data-direction]:hover::before, .jkl-number-input button[data-direction]:focus-visible::before {
4169
+ inset-block: 0.0625rem;
4170
+ }
4171
+ .jkl-number-input button[data-direction]:disabled {
4172
+ opacity: 0.4;
4173
+ cursor: not-allowed;
4174
+ }
4175
+ .jkl-number-input button[data-direction=decrement]::before {
4176
+ inset-inline-end: 0;
4177
+ }
4178
+ .jkl-number-input button[data-direction=increment]::before {
4179
+ inset-inline-start: 0;
4180
+ }
4181
+ .jkl-number-input button[data-direction].jkl-button {
4182
+ border-radius: 0;
4183
+ }
4184
+ .jkl-number-input button[data-direction].jkl-button .jkl-icon {
4185
+ margin-block-start: 0.4ex;
4186
+ }
4187
+ }
3961
4188
  @layer jokul.components {
3962
4189
  .jkl-pagination {
3963
4190
  display: flex;
@@ -4301,7 +4528,7 @@
4301
4528
  transition-timing-function: ease;
4302
4529
  transition-duration: 150ms;
4303
4530
  }
4304
- @keyframes jkl-downcount-uuk6hj4 {
4531
+ @keyframes jkl-downcount-uw1i6h8 {
4305
4532
  from {
4306
4533
  width: 100%;
4307
4534
  }
@@ -4814,7 +5041,7 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-select--beta s
4814
5041
  margin-bottom: 0;
4815
5042
  }
4816
5043
  .jkl-system-message--dismissed {
4817
- animation: jkl-dismiss-uuk6hjy 400ms forwards;
5044
+ animation: jkl-dismiss-uw1i6i9 400ms forwards;
4818
5045
  transition: block 400ms 400ms;
4819
5046
  }
4820
5047
  .jkl-system-message--info {
@@ -4844,7 +5071,7 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-select--beta s
4844
5071
  border-width: 4px;
4845
5072
  }
4846
5073
  }
4847
- @keyframes jkl-dismiss-uuk6hjy {
5074
+ @keyframes jkl-dismiss-uw1i6i9 {
4848
5075
  from {
4849
5076
  opacity: 1;
4850
5077
  transform: translateY(0);
@@ -5681,12 +5908,12 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-select--beta s
5681
5908
  }
5682
5909
  .jkl-toast[data-animation=entering],
5683
5910
  .jkl-toast[data-animation=queued] {
5684
- animation: jkl-entering-uuk6hk0 200ms ease-out forwards;
5911
+ animation: jkl-entering-uw1i6in 200ms ease-out forwards;
5685
5912
  }
5686
5913
  .jkl-toast[data-animation=exiting] {
5687
- animation: jkl-exiting-uuk6hkt 150ms ease-in forwards;
5914
+ animation: jkl-exiting-uw1i6iv 150ms ease-in forwards;
5688
5915
  }
5689
- @keyframes jkl-entering-uuk6hk0 {
5916
+ @keyframes jkl-entering-uw1i6in {
5690
5917
  from {
5691
5918
  opacity: 0;
5692
5919
  transform: translate3d(0, 50%, 0);
@@ -5696,7 +5923,7 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-select--beta s
5696
5923
  transform: translate3d(0, 0, 0);
5697
5924
  }
5698
5925
  }
5699
- @keyframes jkl-exiting-uuk6hkt {
5926
+ @keyframes jkl-exiting-uw1i6iv {
5700
5927
  from {
5701
5928
  opacity: 1;
5702
5929
  transform: translate3d(0, 0, 0);