@fremtind/jokul 6.1.0-next.4 → 6.1.0-next.5

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 (215) hide show
  1. package/build/build-stats.html +1 -1
  2. package/build/cjs/components/checkbox/types.d.cts +2 -2
  3. package/build/cjs/components/combobox/Combobox.cjs +1 -1
  4. package/build/cjs/components/combobox/Combobox.cjs.map +1 -1
  5. package/build/cjs/components/combobox/types.d.cts +2 -1
  6. package/build/cjs/components/date-input/DateInput.d.cts +1 -1
  7. package/build/cjs/components/date-input/types.d.cts +2 -2
  8. package/build/cjs/components/input-group/InputGroup.cjs +1 -1
  9. package/build/cjs/components/input-group/InputGroup.cjs.map +1 -1
  10. package/build/cjs/components/input-group/types.d.cts +2 -2
  11. package/build/cjs/components/input-panel/InputPanel.d.cts +1 -1
  12. package/build/cjs/components/input-panel/types.d.cts +2 -2
  13. package/build/cjs/components/message/Message.cjs +1 -1
  14. package/build/cjs/components/message/Message.cjs.map +1 -1
  15. package/build/cjs/components/message/types.d.cts +5 -1
  16. package/build/cjs/components/notification-badge/NotificationBadge.cjs +2 -0
  17. package/build/cjs/components/notification-badge/NotificationBadge.cjs.map +1 -0
  18. package/build/cjs/components/notification-badge/NotificationBadge.d.cts +3 -0
  19. package/build/cjs/components/notification-badge/index.cjs +2 -0
  20. package/build/cjs/components/notification-badge/index.cjs.map +1 -0
  21. package/build/cjs/components/notification-badge/index.d.cts +2 -0
  22. package/build/cjs/components/notification-badge/types.cjs +2 -0
  23. package/build/cjs/components/notification-badge/types.cjs.map +1 -0
  24. package/build/cjs/components/notification-badge/types.d.cts +40 -0
  25. package/build/cjs/components/number-input/NumberInput.d.cts +1 -1
  26. package/build/cjs/components/number-input/types.d.cts +2 -1
  27. package/build/cjs/components/radio-button/types.d.cts +2 -1
  28. package/build/cjs/components/search/Search.cjs +1 -1
  29. package/build/cjs/components/search/Search.cjs.map +1 -1
  30. package/build/cjs/components/search/types.d.cts +2 -1
  31. package/build/cjs/components/select/Option.d.cts +1 -1
  32. package/build/cjs/components/select/Select.cjs.map +1 -1
  33. package/build/cjs/components/select/Select.d.cts +2 -2
  34. package/build/cjs/components/system-message/SystemMessage.cjs +1 -1
  35. package/build/cjs/components/system-message/SystemMessage.cjs.map +1 -1
  36. package/build/cjs/components/tag/Tag.cjs +1 -1
  37. package/build/cjs/components/tag/Tag.cjs.map +1 -1
  38. package/build/cjs/components/text-area/types.d.cts +2 -1
  39. package/build/cjs/components/text-input/types.d.cts +3 -2
  40. package/build/cjs/components/toast/Toast.cjs +1 -1
  41. package/build/cjs/components/toast/Toast.cjs.map +1 -1
  42. package/build/cjs/components/toggle-switch/ToggleSwitch.d.cts +1 -1
  43. package/build/cjs/components/toggle-switch/types.d.cts +2 -2
  44. package/build/cjs/tokens.cjs +1 -1
  45. package/build/cjs/tokens.cjs.map +1 -1
  46. package/build/cjs/tokens.d.cts +3 -0
  47. package/build/cjs/utilities/index.cjs +1 -1
  48. package/build/cjs/utilities/types.cjs +1 -1
  49. package/build/cjs/utilities/types.cjs.map +1 -1
  50. package/build/cjs/utilities/types.d.cts +36 -2
  51. package/build/es/components/checkbox/types.d.ts +2 -2
  52. package/build/es/components/combobox/Combobox.js +1 -1
  53. package/build/es/components/combobox/Combobox.js.map +1 -1
  54. package/build/es/components/combobox/types.d.ts +2 -1
  55. package/build/es/components/date-input/DateInput.d.ts +1 -1
  56. package/build/es/components/date-input/types.d.ts +2 -2
  57. package/build/es/components/input-group/InputGroup.js +1 -1
  58. package/build/es/components/input-group/InputGroup.js.map +1 -1
  59. package/build/es/components/input-group/types.d.ts +2 -2
  60. package/build/es/components/input-panel/InputPanel.d.ts +1 -1
  61. package/build/es/components/input-panel/types.d.ts +2 -2
  62. package/build/es/components/message/Message.js +1 -1
  63. package/build/es/components/message/Message.js.map +1 -1
  64. package/build/es/components/message/types.d.ts +5 -1
  65. package/build/es/components/notification-badge/NotificationBadge.d.ts +3 -0
  66. package/build/es/components/notification-badge/NotificationBadge.js +2 -0
  67. package/build/es/components/notification-badge/NotificationBadge.js.map +1 -0
  68. package/build/es/components/notification-badge/index.d.ts +2 -0
  69. package/build/es/components/notification-badge/index.js +2 -0
  70. package/build/es/components/notification-badge/index.js.map +1 -0
  71. package/build/es/components/notification-badge/types.d.ts +40 -0
  72. package/build/es/components/notification-badge/types.js +2 -0
  73. package/build/es/components/notification-badge/types.js.map +1 -0
  74. package/build/es/components/number-input/NumberInput.d.ts +1 -1
  75. package/build/es/components/number-input/types.d.ts +2 -1
  76. package/build/es/components/radio-button/types.d.ts +2 -1
  77. package/build/es/components/search/Search.js +1 -1
  78. package/build/es/components/search/Search.js.map +1 -1
  79. package/build/es/components/search/types.d.ts +2 -1
  80. package/build/es/components/select/Option.d.ts +1 -1
  81. package/build/es/components/select/Select.d.ts +2 -2
  82. package/build/es/components/select/Select.js.map +1 -1
  83. package/build/es/components/system-message/SystemMessage.js +1 -1
  84. package/build/es/components/system-message/SystemMessage.js.map +1 -1
  85. package/build/es/components/tag/Tag.js +1 -1
  86. package/build/es/components/tag/Tag.js.map +1 -1
  87. package/build/es/components/text-area/types.d.ts +2 -1
  88. package/build/es/components/text-input/types.d.ts +3 -2
  89. package/build/es/components/toast/Toast.js +1 -1
  90. package/build/es/components/toast/Toast.js.map +1 -1
  91. package/build/es/components/toggle-switch/ToggleSwitch.d.ts +1 -1
  92. package/build/es/components/toggle-switch/types.d.ts +2 -2
  93. package/build/es/tokens.d.ts +3 -0
  94. package/build/es/tokens.js +1 -1
  95. package/build/es/tokens.js.map +1 -1
  96. package/build/es/utilities/index.js +1 -1
  97. package/build/es/utilities/types.d.ts +36 -2
  98. package/build/es/utilities/types.js +1 -1
  99. package/build/es/utilities/types.js.map +1 -1
  100. package/package.json +1 -1
  101. package/styles/base.css +194 -116
  102. package/styles/base.min.css +1 -1
  103. package/styles/components/button/button.css +2 -1
  104. package/styles/components/button/button.min.css +1 -1
  105. package/styles/components/button/button.scss +2 -3
  106. package/styles/components/checkbox/checkbox.css +15 -0
  107. package/styles/components/checkbox/checkbox.min.css +1 -1
  108. package/styles/components/checkbox/checkbox.scss +4 -0
  109. package/styles/components/checkbox-panel/checkbox-panel.css +32 -0
  110. package/styles/components/checkbox-panel/checkbox-panel.min.css +1 -1
  111. package/styles/components/chip/chip.css +6 -13
  112. package/styles/components/chip/chip.min.css +1 -1
  113. package/styles/components/chip/chip.scss +4 -14
  114. package/styles/components/combobox/combobox.css +45 -0
  115. package/styles/components/combobox/combobox.min.css +1 -1
  116. package/styles/components/combobox/combobox.scss +11 -0
  117. package/styles/components/countdown/countdown.css +2 -2
  118. package/styles/components/countdown/countdown.min.css +1 -1
  119. package/styles/components/date-input/calendar/calendar.css +15 -4
  120. package/styles/components/date-input/calendar/calendar.min.css +1 -1
  121. package/styles/components/date-input/calendar/calendar.scss +6 -10
  122. package/styles/components/date-input/date-input.css +25 -0
  123. package/styles/components/date-input/date-input.min.css +1 -1
  124. package/styles/components/expander/expandable.css +1 -1
  125. package/styles/components/expander/expandable.min.css +1 -1
  126. package/styles/components/expander/expandable.scss +2 -2
  127. package/styles/components/feedback/feedback.css +2 -2
  128. package/styles/components/feedback/feedback.min.css +1 -1
  129. package/styles/components/file-input/file-input.css +26 -10
  130. package/styles/components/file-input/file-input.min.css +1 -1
  131. package/styles/components/file-input/file-input.scss +6 -0
  132. package/styles/components/input-group/_labels.scss +29 -0
  133. package/styles/components/input-group/input-group.css +32 -2
  134. package/styles/components/input-group/input-group.min.css +1 -1
  135. package/styles/components/input-panel/input-panel.css +17 -0
  136. package/styles/components/input-panel/input-panel.min.css +1 -1
  137. package/styles/components/input-panel/input-panel.scss +7 -0
  138. package/styles/components/link-list/link-list.css +1 -1
  139. package/styles/components/link-list/link-list.min.css +1 -1
  140. package/styles/components/link-list/link-list.scss +1 -1
  141. package/styles/components/loader/loader.css +6 -6
  142. package/styles/components/loader/loader.min.css +1 -1
  143. package/styles/components/loader/skeleton-loader.css +3 -3
  144. package/styles/components/loader/skeleton-loader.min.css +1 -1
  145. package/styles/components/menu/_menu-item.scss +1 -1
  146. package/styles/components/menu/menu.css +1 -1
  147. package/styles/components/menu/menu.min.css +1 -1
  148. package/styles/components/message/message.css +5 -25
  149. package/styles/components/message/message.min.css +1 -1
  150. package/styles/components/message/message.scss +3 -27
  151. package/styles/components/notification-badge/_index.scss +1 -0
  152. package/styles/components/notification-badge/notification-badge.css +45 -0
  153. package/styles/components/notification-badge/notification-badge.min.css +3 -0
  154. package/styles/components/notification-badge/notification-badge.scss +58 -0
  155. package/styles/components/number-input/number-input.css +37 -1
  156. package/styles/components/number-input/number-input.min.css +1 -1
  157. package/styles/components/number-input/number-input.scss +1 -2
  158. package/styles/components/progress-bar/progress-bar.css +1 -1
  159. package/styles/components/progress-bar/progress-bar.min.css +1 -1
  160. package/styles/components/radio-button/radio-button.css +15 -0
  161. package/styles/components/radio-button/radio-button.min.css +1 -1
  162. package/styles/components/radio-button/radio-button.scss +4 -0
  163. package/styles/components/radio-panel/radio-panel.css +17 -0
  164. package/styles/components/radio-panel/radio-panel.min.css +1 -1
  165. package/styles/components/search/search-with-submit-button.css +29 -43
  166. package/styles/components/search/search-with-submit-button.min.css +1 -1
  167. package/styles/components/search/search-with-submit-button.scss +9 -24
  168. package/styles/components/search/search.css +246 -125
  169. package/styles/components/search/search.min.css +1 -1
  170. package/styles/components/search/search.scss +98 -103
  171. package/styles/components/segmented-control/segmented-control.css +63 -2
  172. package/styles/components/segmented-control/segmented-control.min.css +1 -1
  173. package/styles/components/segmented-control/segmented-control.scss +6 -0
  174. package/styles/components/select/option.css +17 -2
  175. package/styles/components/select/option.min.css +1 -1
  176. package/styles/components/select/option.scss +6 -3
  177. package/styles/components/select/select.css +17 -0
  178. package/styles/components/select/select.min.css +1 -1
  179. package/styles/components/select/select.scss +7 -0
  180. package/styles/components/system-message/system-message.css +5 -25
  181. package/styles/components/system-message/system-message.min.css +1 -1
  182. package/styles/components/system-message/system-message.scss +3 -27
  183. package/styles/components/table/_table-row.scss +2 -2
  184. package/styles/components/table/table.css +2 -2
  185. package/styles/components/table/table.min.css +1 -1
  186. package/styles/components/tabs/tabs.css +2 -0
  187. package/styles/components/tabs/tabs.min.css +1 -1
  188. package/styles/components/tabs/tabs.scss +2 -0
  189. package/styles/components/tag/tag.css +4 -24
  190. package/styles/components/tag/tag.min.css +1 -1
  191. package/styles/components/tag/tag.scss +4 -28
  192. package/styles/components/text-area/text-area.css +25 -0
  193. package/styles/components/text-area/text-area.min.css +1 -1
  194. package/styles/components/text-input/text-input.css +25 -0
  195. package/styles/components/text-input/text-input.min.css +1 -1
  196. package/styles/components/toast/toast.css +12 -52
  197. package/styles/components/toast/toast.min.css +1 -1
  198. package/styles/components/toast/toast.scss +6 -60
  199. package/styles/components/toggle-switch/toggle-switch.css +12 -7
  200. package/styles/components/toggle-switch/toggle-switch.min.css +1 -1
  201. package/styles/components/toggle-switch/toggle-switch.scss +1 -11
  202. package/styles/components.css +726 -368
  203. package/styles/components.min.css +4 -2
  204. package/styles/components.scss +1 -0
  205. package/styles/jkl/_index.scss +1 -0
  206. package/styles/jkl/_ornaments.scss +8 -0
  207. package/styles/jkl/_states.scss +45 -0
  208. package/styles/jkl/_tokens.scss +4 -0
  209. package/styles/shared/input/shared-input-styles.scss +21 -0
  210. package/styles/theme/_color-mode.scss +62 -0
  211. package/styles/theme/_color-scheme.scss +60 -57
  212. package/styles/theme/_data-theme.scss +21 -0
  213. package/styles/theme/_index.scss +2 -0
  214. package/styles/theme/_tokens.scss +2 -2
  215. package/styles/theme/brands/dnb/_color-scheme.scss +60 -57
@@ -111,6 +111,31 @@
111
111
  border: 0.125rem solid ButtonText;
112
112
  }
113
113
  }
114
+ .jkl-text-input-wrapper:has(> :is(input, textarea):disabled) {
115
+ opacity: var(--jkl-nested-disabled-opacity, 0.5);
116
+ cursor: not-allowed;
117
+ }
118
+ .jkl-text-input-wrapper:has(> :is(input, textarea):disabled) * {
119
+ --jkl-nested-disabled-opacity: 1;
120
+ cursor: not-allowed;
121
+ }
122
+ @media screen and (forced-colors: active) {
123
+ .jkl-text-input-wrapper:has(> :is(input, textarea):disabled) {
124
+ opacity: 1;
125
+ color: GrayText;
126
+ border-color: GrayText;
127
+ }
128
+ }
129
+ .jkl-text-input-wrapper:has(> :is(input, textarea):read-only:not(:disabled)) {
130
+ --border-color: var(--jkl-color-border-subdued);
131
+ --background-color: transparent;
132
+ cursor: default;
133
+ }
134
+ .jkl-text-input-wrapper:has(> :is(input, textarea):read-only:not(:disabled)):hover, .jkl-text-input-wrapper:has(> :is(input, textarea):read-only:not(:disabled)):focus-within, .jkl-text-input-wrapper:has(> :is(input, textarea):read-only:not(:disabled)):has([data-focused=true]) {
135
+ --border-color: var(--jkl-color-border-subdued);
136
+ --background-color: transparent;
137
+ box-shadow: inset 0 0 0 0.0625rem var(--border-color), 0 0 0 0.0625rem transparent;
138
+ }
114
139
  html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-text-input-wrapper:has(.jkl-text-input__input:focus-visible), html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-text-input-wrapper:has(.jkl-text-area__text-area:focus-visible) {
115
140
  outline: 3px solid var(--jkl-color-border-strong);
116
141
  outline-offset: 3px;
@@ -425,7 +450,7 @@
425
450
  display: inline-flex;
426
451
  }
427
452
  .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 {
428
- animation: var(--jkl-motion-timing-lazy) cubic-bezier(0, 0, 0.3, 1) var(--jkl-motion-timing-expressive) jkl-support-icon-entrance-u8trttj forwards;
453
+ animation: var(--jkl-motion-timing-lazy) cubic-bezier(0, 0, 0.3, 1) var(--jkl-motion-timing-expressive) jkl-support-icon-entrance-uhyh5jl forwards;
429
454
  }
430
455
  .jkl-form-support-label--sr-only {
431
456
  border: 0 !important;
@@ -479,6 +504,36 @@
479
504
  .jkl-label:has(+ .jkl-input-group-description) {
480
505
  margin-block-end: var(--jkl-spacing-4);
481
506
  }
507
+ .jkl-input-group:has(:is(.jkl-text-input__input,
508
+ .jkl-text-area__text-area,
509
+ .jkl-number-input__input,
510
+ .jkl-date-input__input,
511
+ .jkl-combobox__search-input,
512
+ input[type=search]):read-only:not(:disabled)) > .jkl-label > .jkl-label__text::before,
513
+ .jkl-input-group:has(:is(.jkl-text-input__input,
514
+ .jkl-text-area__text-area,
515
+ .jkl-number-input__input,
516
+ .jkl-date-input__input,
517
+ .jkl-combobox__search-input,
518
+ input[type=search]):read-only:not(:disabled)) > .jkl-label:not(:has(> .jkl-label__text))::before {
519
+ font-family: var(--jkl-font-family-icons);
520
+ font-variation-settings: "FILL" var(--jkl-icon-fill, 0);
521
+ font-feature-settings: "liga";
522
+ -webkit-font-feature-settings: "liga";
523
+ font-size: 1.3em;
524
+ font-weight: 400;
525
+ line-height: 1;
526
+ display: inline-block;
527
+ flex-shrink: 0;
528
+ -webkit-font-smoothing: antialiased;
529
+ transition-timing-function: var(--jkl-motion-easing-standard);
530
+ transition-duration: var(--jkl-motion-timing-energetic);
531
+ transition-property: font-variation-settings, transform;
532
+ content: "lock"/"";
533
+ vertical-align: text-bottom;
534
+ margin-inline-end: var(--jkl-spacing-4);
535
+ color: var(--jkl-color-text-subdued);
536
+ }
482
537
  h1.jkl-label-heading {
483
538
  font: var(--jkl-text-style-heading-3);
484
539
  margin-block: 0;
@@ -499,7 +554,7 @@
499
554
  font: var(--jkl-text-style-paragraph-medium);
500
555
  margin-block-end: var(--jkl-spacing-32);
501
556
  }
502
- @keyframes jkl-support-icon-entrance-u8trttj {
557
+ @keyframes jkl-support-icon-entrance-uhyh5jl {
503
558
  0% {
504
559
  margin-right: 0;
505
560
  opacity: 0;
@@ -806,7 +861,7 @@
806
861
  outline-offset: 3px;
807
862
  }
808
863
  .jkl-button:hover {
809
- background-color: color-mix(in srgb, var(--background-color), var(--text-color) 15%);
864
+ background-color: color-mix(in srgb, var(--background-color, transparent), var(--hover-accent-color, var(--jkl-color-background-contrast)) var(--jkl-opacity-hover, 10%));
810
865
  }
811
866
  @media (forced-colors: active) {
812
867
  .jkl-button:hover {
@@ -820,6 +875,7 @@
820
875
  .jkl-button--primary {
821
876
  --background-color: var(--jkl-color-background-contrast);
822
877
  --text-color: var(--jkl-color-text-on-contrast);
878
+ --hover-accent-color: var(--jkl-color-text-on-contrast);
823
879
  }
824
880
  @media (forced-colors: active) {
825
881
  .jkl-button--primary {
@@ -858,22 +914,22 @@
858
914
  animation: 2500ms linear infinite;
859
915
  }
860
916
  .jkl-loader__dot--left {
861
- animation-name: jkl-loader-left-spin-u8trtud;
917
+ animation-name: jkl-loader-left-spin-uhyh5jv;
862
918
  margin-right: calc(var(--jkl-loader-spacing) * 0.9);
863
919
  }
864
920
  .jkl-loader__dot--middle {
865
- animation-name: jkl-loader-middle-spin-u8trtuw;
921
+ animation-name: jkl-loader-middle-spin-uhyh5ku;
866
922
  margin-right: var(--jkl-loader-spacing);
867
923
  }
868
924
  .jkl-loader__dot--right {
869
- animation-name: jkl-loader-right-spin-u8trtvq;
925
+ animation-name: jkl-loader-right-spin-uhyh5lh;
870
926
  }
871
927
  @media screen and (forced-colors: active) {
872
928
  .jkl-loader__dot {
873
929
  background-color: CanvasText;
874
930
  }
875
931
  }
876
- @keyframes jkl-loader-left-spin-u8trtud {
932
+ @keyframes jkl-loader-left-spin-uhyh5jv {
877
933
  0% {
878
934
  transform: rotate(0) scale(0);
879
935
  }
@@ -887,7 +943,7 @@
887
943
  transform: rotate(180deg) scale(0);
888
944
  }
889
945
  }
890
- @keyframes jkl-loader-middle-spin-u8trtuw {
946
+ @keyframes jkl-loader-middle-spin-uhyh5ku {
891
947
  0% {
892
948
  transform: rotate(20deg) scale(0);
893
949
  }
@@ -904,7 +960,7 @@
904
960
  transform: rotate(200deg) scale(0);
905
961
  }
906
962
  }
907
- @keyframes jkl-loader-right-spin-u8trtvq {
963
+ @keyframes jkl-loader-right-spin-uhyh5lh {
908
964
  0% {
909
965
  transform: rotate(40deg) scale(0);
910
966
  }
@@ -944,7 +1000,7 @@
944
1000
  @media screen and (forced-colors: active) {
945
1001
  .jkl-skeleton-element {
946
1002
  border: 1px solid CanvasText;
947
- animation: 2s ease infinite jkl-blink-u8trtw4;
1003
+ animation: 2s ease infinite jkl-blink-uhyh5m0;
948
1004
  }
949
1005
  }
950
1006
  .jkl-skeleton-input {
@@ -992,10 +1048,10 @@
992
1048
  }
993
1049
  @media screen and (forced-colors: active) {
994
1050
  .jkl-skeleton-table {
995
- animation: 2s ease-in-out infinite jkl-blink-u8trtw4;
1051
+ animation: 2s ease-in-out infinite jkl-blink-uhyh5m0;
996
1052
  }
997
1053
  }
998
- @keyframes jkl-blink-u8trtw4 {
1054
+ @keyframes jkl-blink-uhyh5m0 {
999
1055
  0% {
1000
1056
  opacity: 1;
1001
1057
  }
@@ -1156,42 +1212,22 @@
1156
1212
  padding: var(--padding);
1157
1213
  gap: var(--gap);
1158
1214
  }
1159
- .jkl-tag--info {
1160
- --background-color: var(--jkl-color-info-background-container-accent);
1161
- --text-color: var(--jkl-color-info-text-default);
1162
- --border-color: var(--jkl-color-info-border-subdued);
1163
- }
1164
- .jkl-tag--warning {
1165
- --background-color: var(--jkl-color-warning-background-container-accent);
1166
- --text-color: var(--jkl-color-warning-text-default);
1167
- --border-color: var(--jkl-color-warning-border-subdued);
1168
- }
1169
- .jkl-tag--error {
1170
- --background-color: var(--jkl-color-error-background-container-accent);
1171
- --text-color: var(--jkl-color-error-text-default);
1172
- --border-color: var(--jkl-color-error-border-subdued);
1173
- }
1174
- .jkl-tag--success {
1175
- --background-color: var(--jkl-color-success-background-container-accent);
1176
- --text-color: var(--jkl-color-success-text-default);
1177
- --border-color: var(--jkl-color-success-border-subdued);
1178
- }
1179
1215
  @media screen and (forced-colors: active) {
1180
1216
  .jkl-tag {
1181
1217
  border: 2px none CanvasText;
1182
1218
  border-bottom-style: dotted;
1183
1219
  }
1184
- .jkl-tag--info {
1220
+ .jkl-tag[data-color=info] {
1185
1221
  border-style: dotted;
1186
1222
  }
1187
- .jkl-tag--warning {
1223
+ .jkl-tag[data-color=warning] {
1188
1224
  border-style: dashed;
1189
1225
  }
1190
- .jkl-tag--error {
1226
+ .jkl-tag[data-color=error] {
1191
1227
  border-style: double;
1192
1228
  border-width: 4px;
1193
1229
  }
1194
- .jkl-tag--success {
1230
+ .jkl-tag[data-color=success] {
1195
1231
  border-style: solid;
1196
1232
  }
1197
1233
  }
@@ -1294,6 +1330,21 @@
1294
1330
  .jkl-checkbox--inline:not(:last-of-type) {
1295
1331
  margin-right: var(--jkl-unit-30);
1296
1332
  }
1333
+ .jkl-checkbox:has(> .jkl-checkbox__input:disabled) {
1334
+ opacity: var(--jkl-nested-disabled-opacity, 0.5);
1335
+ cursor: not-allowed;
1336
+ }
1337
+ .jkl-checkbox:has(> .jkl-checkbox__input:disabled) * {
1338
+ --jkl-nested-disabled-opacity: 1;
1339
+ cursor: not-allowed;
1340
+ }
1341
+ @media screen and (forced-colors: active) {
1342
+ .jkl-checkbox:has(> .jkl-checkbox__input:disabled) {
1343
+ opacity: 1;
1344
+ color: GrayText;
1345
+ border-color: GrayText;
1346
+ }
1347
+ }
1297
1348
  }
1298
1349
  @layer jokul.components {
1299
1350
  .jkl-input-panel {
@@ -1377,6 +1428,23 @@
1377
1428
  --outer-border-thickness: 0.125rem;
1378
1429
  cursor: pointer;
1379
1430
  }
1431
+ .jkl-input-panel:has(.jkl-input-panel__header input:disabled) {
1432
+ --outer-border-color: var(--jkl-color-border-default);
1433
+ --outer-border-thickness: 0.0625rem;
1434
+ opacity: var(--jkl-nested-disabled-opacity, 0.5);
1435
+ cursor: not-allowed;
1436
+ }
1437
+ .jkl-input-panel:has(.jkl-input-panel__header input:disabled) * {
1438
+ --jkl-nested-disabled-opacity: 1;
1439
+ cursor: not-allowed;
1440
+ }
1441
+ @media screen and (forced-colors: active) {
1442
+ .jkl-input-panel:has(.jkl-input-panel__header input:disabled) {
1443
+ opacity: 1;
1444
+ color: GrayText;
1445
+ border-color: GrayText;
1446
+ }
1447
+ }
1380
1448
  }
1381
1449
  @layer jokul.components {
1382
1450
  .jkl-checkbox-panel .jkl-checkbox {
@@ -1410,6 +1478,9 @@
1410
1478
  gap: var(--gap);
1411
1479
  padding: 0 var(--padding-inline);
1412
1480
  min-height: var(--height);
1481
+ transition-timing-function: var(--jkl-motion-easing-standard);
1482
+ transition-duration: var(--jkl-motion-timing-productive);
1483
+ transition-property: background-color;
1413
1484
  }
1414
1485
  @media screen and (forced-colors: active) {
1415
1486
  .jkl-chip {
@@ -1417,27 +1488,17 @@
1417
1488
  border-bottom-style: dotted;
1418
1489
  }
1419
1490
  }
1420
- .jkl-chip::after {
1421
- content: "";
1422
- opacity: 0;
1423
- position: absolute;
1424
- inset: 0;
1425
- border-radius: inherit;
1426
- background-color: var(--text-color);
1427
- transition-timing-function: var(--jkl-motion-easing-standard);
1428
- transition-duration: var(--jkl-motion-timing-productive);
1429
- transition-property: opacity;
1430
- }
1431
1491
  .jkl-chip:focus-visible {
1432
1492
  outline: 3px solid var(--jkl-color-border-strong);
1433
1493
  outline-offset: 3px;
1434
1494
  }
1435
- .jkl-chip:hover::after {
1436
- opacity: 0.15;
1495
+ .jkl-chip:hover {
1496
+ background-color: color-mix(in srgb, var(--background-color, transparent), var(--hover-accent-color, var(--jkl-color-background-contrast)) var(--jkl-opacity-hover, 10%));
1437
1497
  }
1438
1498
  .jkl-chip--filter[aria-pressed=true] {
1439
1499
  --background-color: var(--jkl-color-background-contrast);
1440
1500
  --text-color: var(--jkl-color-text-on-contrast);
1501
+ --hover-accent-color: var(--jkl-color-text-on-contrast);
1441
1502
  --border-color: var(--jkl-color-border-strong);
1442
1503
  }
1443
1504
  @media screen and (forced-colors: active) {
@@ -1545,6 +1606,31 @@
1545
1606
  border: 0.125rem solid ButtonText;
1546
1607
  }
1547
1608
  }
1609
+ .jkl-combobox__wrapper:has(> :is(input, textarea):disabled) {
1610
+ opacity: var(--jkl-nested-disabled-opacity, 0.5);
1611
+ cursor: not-allowed;
1612
+ }
1613
+ .jkl-combobox__wrapper:has(> :is(input, textarea):disabled) * {
1614
+ --jkl-nested-disabled-opacity: 1;
1615
+ cursor: not-allowed;
1616
+ }
1617
+ @media screen and (forced-colors: active) {
1618
+ .jkl-combobox__wrapper:has(> :is(input, textarea):disabled) {
1619
+ opacity: 1;
1620
+ color: GrayText;
1621
+ border-color: GrayText;
1622
+ }
1623
+ }
1624
+ .jkl-combobox__wrapper:has(> :is(input, textarea):read-only:not(:disabled)) {
1625
+ --border-color: var(--jkl-color-border-subdued);
1626
+ --background-color: transparent;
1627
+ cursor: default;
1628
+ }
1629
+ .jkl-combobox__wrapper:has(> :is(input, textarea):read-only:not(:disabled)):hover, .jkl-combobox__wrapper:has(> :is(input, textarea):read-only:not(:disabled)):focus-within, .jkl-combobox__wrapper:has(> :is(input, textarea):read-only:not(:disabled)):has([data-focused=true]) {
1630
+ --border-color: var(--jkl-color-border-subdued);
1631
+ --background-color: transparent;
1632
+ box-shadow: inset 0 0 0 0.0625rem var(--border-color), 0 0 0 0.0625rem transparent;
1633
+ }
1548
1634
  html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-combobox__wrapper:has(.jkl-text-input__input:focus-visible), html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-combobox__wrapper:has(.jkl-text-area__text-area:focus-visible) {
1549
1635
  outline: 3px solid var(--jkl-color-border-strong);
1550
1636
  outline-offset: 3px;
@@ -1603,6 +1689,26 @@
1603
1689
  .jkl-combobox__wrapper:hover ~ .jkl-combobox__arrow {
1604
1690
  transform: translateY(calc(-50% + 0.1875rem));
1605
1691
  }
1692
+ .jkl-combobox__wrapper:has(.jkl-combobox__search-input:disabled) {
1693
+ opacity: var(--jkl-nested-disabled-opacity, 0.5);
1694
+ cursor: not-allowed;
1695
+ }
1696
+ .jkl-combobox__wrapper:has(.jkl-combobox__search-input:disabled) * {
1697
+ --jkl-nested-disabled-opacity: 1;
1698
+ cursor: not-allowed;
1699
+ }
1700
+ @media screen and (forced-colors: active) {
1701
+ .jkl-combobox__wrapper:has(.jkl-combobox__search-input:disabled) {
1702
+ opacity: 1;
1703
+ color: GrayText;
1704
+ border-color: GrayText;
1705
+ }
1706
+ }
1707
+ .jkl-combobox__wrapper:has(.jkl-combobox__search-input:read-only:not(:disabled)) {
1708
+ --border-color: var(--jkl-color-border-subdued);
1709
+ --background-color: transparent;
1710
+ cursor: default;
1711
+ }
1606
1712
  .jkl-combobox__search-input {
1607
1713
  border: none;
1608
1714
  outline: none;
@@ -2155,10 +2261,10 @@
2155
2261
  }
2156
2262
  }
2157
2263
  .jkl-countdown__tracker {
2158
- animation: jkl-downcount-u8trtx3 var(--duration) linear forwards;
2264
+ animation: jkl-downcount-uhyh5nf var(--duration) linear forwards;
2159
2265
  animation-play-state: var(--play-state, running);
2160
2266
  }
2161
- @keyframes jkl-downcount-u8trtx3 {
2267
+ @keyframes jkl-downcount-uhyh5nf {
2162
2268
  from {
2163
2269
  width: 100%;
2164
2270
  }
@@ -2214,6 +2320,31 @@
2214
2320
  border: 0.125rem solid ButtonText;
2215
2321
  }
2216
2322
  }
2323
+ .jkl-date-input__wrapper:has(> :is(input, textarea):disabled) {
2324
+ opacity: var(--jkl-nested-disabled-opacity, 0.5);
2325
+ cursor: not-allowed;
2326
+ }
2327
+ .jkl-date-input__wrapper:has(> :is(input, textarea):disabled) * {
2328
+ --jkl-nested-disabled-opacity: 1;
2329
+ cursor: not-allowed;
2330
+ }
2331
+ @media screen and (forced-colors: active) {
2332
+ .jkl-date-input__wrapper:has(> :is(input, textarea):disabled) {
2333
+ opacity: 1;
2334
+ color: GrayText;
2335
+ border-color: GrayText;
2336
+ }
2337
+ }
2338
+ .jkl-date-input__wrapper:has(> :is(input, textarea):read-only:not(:disabled)) {
2339
+ --border-color: var(--jkl-color-border-subdued);
2340
+ --background-color: transparent;
2341
+ cursor: default;
2342
+ }
2343
+ .jkl-date-input__wrapper:has(> :is(input, textarea):read-only:not(:disabled)):hover, .jkl-date-input__wrapper:has(> :is(input, textarea):read-only:not(:disabled)):focus-within, .jkl-date-input__wrapper:has(> :is(input, textarea):read-only:not(:disabled)):has([data-focused=true]) {
2344
+ --border-color: var(--jkl-color-border-subdued);
2345
+ --background-color: transparent;
2346
+ box-shadow: inset 0 0 0 0.0625rem var(--border-color), 0 0 0 0.0625rem transparent;
2347
+ }
2217
2348
  html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-date-input__wrapper:has(.jkl-text-input__input:focus-visible), html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-date-input__wrapper:has(.jkl-text-area__text-area:focus-visible) {
2218
2349
  outline: 3px solid var(--jkl-color-border-strong);
2219
2350
  outline-offset: 3px;
@@ -2391,19 +2522,30 @@
2391
2522
  .jkl-calendar .jkl-button--calendar:has(.day:not(:disabled)), .jkl-calendar .jkl-button--calendar:has(.day:not(:disabled)) * {
2392
2523
  cursor: pointer;
2393
2524
  }
2394
- .jkl-calendar .jkl-button--calendar:has(.day:not(:disabled)):has(.day:not(:checked)):hover::after {
2395
- background-color: color-mix(in srgb, currentColor 15%, transparent);
2525
+ .jkl-calendar .jkl-button--calendar:has(.day:not(:disabled)):has(.day:not(:disabled)):hover::after {
2526
+ background-color: color-mix(in srgb, var(--background-color, transparent), var(--hover-accent-color, var(--jkl-color-background-contrast)) var(--jkl-opacity-hover, 10%));
2396
2527
  }
2397
2528
  .jkl-calendar .jkl-button--calendar:has(.day:disabled) {
2398
- opacity: 0.5;
2529
+ opacity: var(--jkl-nested-disabled-opacity, 0.5);
2530
+ cursor: not-allowed;
2399
2531
  }
2400
- .jkl-calendar .jkl-button--calendar:has(.day:disabled), .jkl-calendar .jkl-button--calendar:has(.day:disabled) * {
2532
+ .jkl-calendar .jkl-button--calendar:has(.day:disabled) * {
2533
+ --jkl-nested-disabled-opacity: 1;
2401
2534
  cursor: not-allowed;
2402
2535
  }
2536
+ @media screen and (forced-colors: active) {
2537
+ .jkl-calendar .jkl-button--calendar:has(.day:disabled) {
2538
+ opacity: 1;
2539
+ color: GrayText;
2540
+ border-color: GrayText;
2541
+ }
2542
+ }
2403
2543
  .jkl-calendar .jkl-button--calendar:has(.day:checked) {
2404
2544
  color: var(--jkl-color-text-on-contrast);
2405
2545
  }
2406
2546
  .jkl-calendar .jkl-button--calendar:has(.day:checked)::after {
2547
+ --hover-accent-color: var(--jkl-color-text-on-contrast);
2548
+ --background-color: var(--jkl-color-background-contrast);
2407
2549
  background-color: var(--jkl-color-background-contrast);
2408
2550
  }
2409
2551
  .jkl-calendar .jkl-button--calendar:has(.day:focus-visible, .day:focus) {
@@ -2475,6 +2617,23 @@
2475
2617
  --border-color: var(--jkl-color-error-border-default);
2476
2618
  --box-shadow: 0 0 0 0.0625rem var(--border-color);
2477
2619
  }
2620
+ .jkl-select__button:disabled {
2621
+ --border-color: var(--jkl-color-border-default);
2622
+ --box-shadow: 0 0 0 0.0625rem transparent;
2623
+ opacity: var(--jkl-nested-disabled-opacity, 0.5);
2624
+ cursor: not-allowed;
2625
+ }
2626
+ .jkl-select__button:disabled * {
2627
+ --jkl-nested-disabled-opacity: 1;
2628
+ cursor: not-allowed;
2629
+ }
2630
+ @media screen and (forced-colors: active) {
2631
+ .jkl-select__button:disabled {
2632
+ opacity: 1;
2633
+ color: GrayText;
2634
+ border-color: GrayText;
2635
+ }
2636
+ }
2478
2637
  .jkl-select__popover {
2479
2638
  /* stylelint-disable declaration-block-no-duplicate-custom-properties -- fallback for browsers without light-dark() support */
2480
2639
  --shadow-color: rgb(49 48 48 / 20%);
@@ -2573,8 +2732,23 @@
2573
2732
  color: var(--icon-color);
2574
2733
  content: "check"/"";
2575
2734
  }
2576
- .jkl-option:hover, .jkl-option:focus-visible {
2577
- background-color: var(--jkl-color-background-container-accent);
2735
+ .jkl-option:is(:hover, :focus-visible):not(:disabled):not([aria-disabled=true]) {
2736
+ background-color: color-mix(in srgb, var(--background-color, transparent), var(--hover-accent-color, var(--jkl-color-background-contrast)) var(--jkl-opacity-hover, 10%));
2737
+ }
2738
+ .jkl-option:disabled, .jkl-option[aria-disabled=true] {
2739
+ opacity: var(--jkl-nested-disabled-opacity, 0.5);
2740
+ cursor: not-allowed;
2741
+ }
2742
+ .jkl-option:disabled *, .jkl-option[aria-disabled=true] * {
2743
+ --jkl-nested-disabled-opacity: 1;
2744
+ cursor: not-allowed;
2745
+ }
2746
+ @media screen and (forced-colors: active) {
2747
+ .jkl-option:disabled, .jkl-option[aria-disabled=true] {
2748
+ opacity: 1;
2749
+ color: GrayText;
2750
+ border-color: GrayText;
2751
+ }
2578
2752
  }
2579
2753
  .jkl-option[aria-selected=true]::before {
2580
2754
  --icon-color: var(--jkl-color-background-contrast);
@@ -2583,208 +2757,313 @@
2583
2757
  .jkl-option[data-multiple] {
2584
2758
  --icon-color: var(--jkl-color-background-contrast);
2585
2759
  }
2586
- .jkl-option[data-multiple]::before {
2587
- content: "check_box_outline_blank"/"";
2760
+ .jkl-option[data-multiple]::before {
2761
+ content: "check_box_outline_blank"/"";
2762
+ }
2763
+ .jkl-option[data-multiple][aria-selected=true]::before {
2764
+ --jkl-icon-fill: 1;
2765
+ content: "check_box"/"";
2766
+ }
2767
+ .jkl-option__label {
2768
+ flex-grow: 999;
2769
+ }
2770
+ .jkl-option__media {
2771
+ position: relative;
2772
+ width: var(--media-size, 2em);
2773
+ min-width: 2em;
2774
+ aspect-ratio: 1;
2775
+ flex-shrink: 0;
2776
+ overflow: hidden;
2777
+ border-radius: var(--jkl-border-radius-xs);
2778
+ }
2779
+ .jkl-option__media :is(img, picture, video) {
2780
+ position: absolute;
2781
+ inset: 0;
2782
+ object-fit: cover;
2783
+ width: 100%;
2784
+ height: 100%;
2785
+ }
2786
+ }
2787
+ @layer jokul.components {
2788
+ .jkl-search {
2789
+ width: 100%;
2790
+ }
2791
+ .jkl-search .jkl-input-group {
2792
+ display: contents;
2793
+ }
2794
+ .jkl-search__wrapper {
2795
+ --jkl-text-input-padding: var(--jkl-text-input-vertical-padding) var(--jkl-text-input-horizontal-padding);
2796
+ --jkl-text-input-vertical-padding: var(--jkl-unit-15);
2797
+ --jkl-text-input-horizontal-padding: var(--jkl-unit-15);
2798
+ --jkl-text-input-action-button-size: var(--jkl-unit-60);
2799
+ --jkl-text-input-action-button-icon-size: var(--jkl-unit-30);
2800
+ --jkl-text-input-action-button-padding: var(--jkl-unit-10) 0;
2801
+ --jkl-text-input-action-button-focus-position: var(--jkl-unit-05);
2802
+ --text-color: var(--jkl-color-text-default);
2803
+ --background-color: transparent;
2804
+ --border-color: var(--jkl-color-border-default);
2805
+ --placeholder-color: var(--jkl-color-text-subdued);
2806
+ border-radius: var(--jkl-border-radius-s);
2807
+ box-sizing: border-box;
2808
+ max-width: 100%;
2809
+ position: relative;
2810
+ display: flex;
2811
+ align-items: center;
2812
+ font: var(--jkl-text-style-text-medium);
2813
+ transition-timing-function: var(--jkl-motion-easing-standard);
2814
+ transition-duration: var(--jkl-motion-timing-productive);
2815
+ transition-property: color, box-shadow, background-color;
2816
+ background-color: var(--background-color);
2817
+ color: var(--text-color);
2818
+ box-shadow: inset 0 0 0 0.0625rem var(--border-color), 0 0 0 0.0625rem transparent;
2819
+ }
2820
+ .jkl-search__wrapper:focus-within, .jkl-search__wrapper:has([data-focused=true]) {
2821
+ --background-color: var(--jkl-color-background-container);
2822
+ }
2823
+ .jkl-search__wrapper[data-invalid=true]:not(:focus-within):not(:has([data-focused=true])) {
2824
+ --text-color: var(--jkl-color-error-text-default);
2825
+ --border-color: var(--jkl-color-error-border-default);
2826
+ --placeholder-color: var(--jkl-color-error-text-subdued);
2827
+ }
2828
+ .jkl-search__wrapper:hover, .jkl-search__wrapper:focus-within, .jkl-search__wrapper:has([data-focused=true]) {
2829
+ --border-color: var(--jkl-color-border-strong);
2830
+ box-shadow: inset 0 0 0 0.0625rem var(--border-color), 0 0 0 0.0625rem var(--border-color);
2831
+ }
2832
+ @media screen and (forced-colors: active) {
2833
+ .jkl-search__wrapper:hover, .jkl-search__wrapper:focus-within, .jkl-search__wrapper:has([data-focused=true]) {
2834
+ border: 0.125rem solid ButtonText;
2835
+ }
2836
+ }
2837
+ .jkl-search__wrapper:has(> :is(input, textarea):disabled) {
2838
+ opacity: var(--jkl-nested-disabled-opacity, 0.5);
2839
+ cursor: not-allowed;
2840
+ }
2841
+ .jkl-search__wrapper:has(> :is(input, textarea):disabled) * {
2842
+ --jkl-nested-disabled-opacity: 1;
2843
+ cursor: not-allowed;
2844
+ }
2845
+ @media screen and (forced-colors: active) {
2846
+ .jkl-search__wrapper:has(> :is(input, textarea):disabled) {
2847
+ opacity: 1;
2848
+ color: GrayText;
2849
+ border-color: GrayText;
2850
+ }
2851
+ }
2852
+ .jkl-search__wrapper:has(> :is(input, textarea):read-only:not(:disabled)) {
2853
+ --border-color: var(--jkl-color-border-subdued);
2854
+ --background-color: transparent;
2855
+ cursor: default;
2856
+ }
2857
+ .jkl-search__wrapper:has(> :is(input, textarea):read-only:not(:disabled)):hover, .jkl-search__wrapper:has(> :is(input, textarea):read-only:not(:disabled)):focus-within, .jkl-search__wrapper:has(> :is(input, textarea):read-only:not(:disabled)):has([data-focused=true]) {
2858
+ --border-color: var(--jkl-color-border-subdued);
2859
+ --background-color: transparent;
2860
+ box-shadow: inset 0 0 0 0.0625rem var(--border-color), 0 0 0 0.0625rem transparent;
2861
+ }
2862
+ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-search__wrapper:has(.jkl-text-input__input:focus-visible), html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-search__wrapper:has(.jkl-text-area__text-area:focus-visible) {
2863
+ outline: 3px solid var(--jkl-color-border-strong);
2864
+ outline-offset: 3px;
2865
+ }
2866
+ .jkl-search__wrapper > .jkl-icon-button:focus-visible {
2867
+ outline: 3px solid var(--jkl-color-border-strong);
2868
+ outline-offset: -8px;
2869
+ }
2870
+ @media screen and (forced-colors: active) {
2871
+ .jkl-search__wrapper > .jkl-icon-button:focus-visible {
2872
+ --border-color: ButtonText;
2873
+ }
2874
+ }
2875
+ .jkl-search__wrapper > .jkl-text-input-action-button {
2876
+ flex-shrink: 0;
2877
+ display: flex;
2878
+ box-sizing: border-box;
2879
+ align-items: center;
2880
+ justify-content: center;
2881
+ padding: var(--jkl-text-input-action-button-padding);
2882
+ height: var(--jkl-text-input-action-button-size);
2883
+ width: var(--jkl-text-input-action-button-size);
2884
+ margin-inline-start: calc(var(--jkl-text-input-horizontal-padding) * -1);
2885
+ }
2886
+ .jkl-search__wrapper > .jkl-text-input-action-button .jkl-icon-button__icon {
2887
+ height: var(--jkl-text-input-action-button-icon-size);
2888
+ width: var(--jkl-text-input-action-button-icon-size);
2889
+ }
2890
+ .jkl-search__wrapper > .jkl-text-input-action-button:hover {
2891
+ color: var(--jkl-color-text-subdued);
2892
+ }
2893
+ @media screen and (forced-colors: active) {
2894
+ .jkl-search__wrapper > .jkl-text-input-action-button:hover {
2895
+ border: 0.125rem inset ButtonText;
2896
+ }
2897
+ }
2898
+ @media screen and (forced-colors: active) {
2899
+ .jkl-search__wrapper {
2900
+ border: 0.125rem inset ButtonText;
2901
+ }
2902
+ }
2903
+ .jkl-search__wrapper {
2904
+ gap: 0.25em;
2905
+ padding-inline: var(--jkl-text-input-horizontal-padding);
2906
+ }
2907
+ .jkl-search__wrapper:has(.jkl-search-submit) {
2908
+ padding-inline-end: 0;
2909
+ }
2910
+ .jkl-search__wrapper::before {
2911
+ content: attr(data-icon)/"";
2912
+ flex: none;
2913
+ inline-size: 1.3em;
2914
+ display: inline-flex;
2915
+ align-items: center;
2916
+ justify-content: center;
2917
+ font-family: var(--jkl-font-family-icons);
2918
+ }
2919
+ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-search__wrapper:has(> input[type=search]:focus-visible) {
2920
+ outline: 3px solid var(--jkl-color-border-strong);
2921
+ outline-offset: 3px;
2922
+ }
2923
+ .jkl-search input[type=search] {
2924
+ background: none;
2925
+ -webkit-appearance: none;
2926
+ color: inherit;
2927
+ font: var(--jkl-text-style-text-medium);
2928
+ }
2929
+ .jkl-search input[type=search] {
2930
+ outline: 0;
2931
+ border-style: none;
2932
+ outline-style: none;
2933
+ }
2934
+ .jkl-search input[type=search]:active, .jkl-search input[type=search]:hover, .jkl-search input[type=search]:focus {
2935
+ outline: 0;
2936
+ outline-style: none;
2937
+ }
2938
+ @media screen and (forced-colors: active) {
2939
+ .jkl-search input[type=search] {
2940
+ outline: revert;
2941
+ border-style: revert;
2942
+ outline-style: revert;
2943
+ }
2944
+ .jkl-search input[type=search]:active, .jkl-search input[type=search]:hover, .jkl-search input[type=search]:focus {
2945
+ outline: revert;
2946
+ outline-style: revert;
2947
+ }
2948
+ }
2949
+ .jkl-search input[type=search] input[type=number]::-webkit-outer-spin-button,
2950
+ .jkl-search input[type=search] input[type=number]::-webkit-inner-spin-button {
2951
+ -webkit-appearance: none;
2952
+ }
2953
+ .jkl-search input[type=search] input[type=number] {
2954
+ -moz-appearance: textfield;
2955
+ }
2956
+ @media screen and (forced-colors: active) {
2957
+ .jkl-search input[type=search] {
2958
+ outline: none;
2959
+ border: none;
2960
+ }
2961
+ .jkl-search input[type=search]:focus-visible {
2962
+ outline: none;
2963
+ }
2964
+ }
2965
+ .jkl-search input[type=search]::placeholder {
2966
+ opacity: 1;
2967
+ color: var(--placeholder-color);
2968
+ }
2969
+ .jkl-search input[type=search] {
2970
+ flex: 1 1 0;
2971
+ min-width: 0;
2972
+ padding-block: var(--jkl-text-input-vertical-padding);
2973
+ }
2974
+ .jkl-search input[type=search]::-webkit-search-cancel-button, .jkl-search input[type=search]::-webkit-calendar-picker-indicator, .jkl-search input[type=search]::-webkit-search-results-button {
2975
+ appearance: none;
2976
+ display: none !important;
2977
+ }
2978
+ .jkl-search:has(input:not(:valid), input:placeholder-shown) .jkl-search__clear-button {
2979
+ display: none;
2980
+ }
2981
+ .jkl-search__clear-button {
2982
+ position: relative;
2983
+ display: grid;
2984
+ flex: none;
2985
+ align-self: stretch;
2986
+ appearance: none;
2987
+ background-color: transparent;
2988
+ border: 0;
2989
+ padding: 0;
2990
+ color: var(--text-color);
2991
+ border-radius: 100%;
2992
+ }
2993
+ .jkl-search__clear-button::before {
2994
+ content: "close"/"";
2995
+ display: inline-grid;
2996
+ align-items: center;
2997
+ justify-content: center;
2998
+ place-self: center;
2999
+ align-self: center;
3000
+ grid-row: 1;
3001
+ grid-column: 1;
3002
+ z-index: 1;
3003
+ font-family: var(--jkl-font-family-icons);
3004
+ font-variation-settings: "FILL" var(--jkl-icon-fill, 0);
3005
+ font-feature-settings: "liga";
3006
+ -webkit-font-feature-settings: "liga";
3007
+ font-size: 1.3em;
3008
+ font-weight: 400;
3009
+ line-height: 1;
3010
+ display: inline-block;
3011
+ flex-shrink: 0;
3012
+ -webkit-font-smoothing: antialiased;
3013
+ transition-timing-function: var(--jkl-motion-easing-standard);
3014
+ transition-duration: var(--jkl-motion-timing-energetic);
3015
+ transition-property: font-variation-settings, transform;
3016
+ }
3017
+ .jkl-search__clear-button::after {
3018
+ --tap-size: 1.25lh;
3019
+ content: "";
3020
+ position: absolute;
3021
+ inset: calc((var(--tap-size) - 100%) / 2 * -1);
3022
+ background-color: var(--text-color);
3023
+ opacity: 0;
3024
+ border-radius: inherit;
3025
+ transition-timing-function: var(--jkl-motion-easing-standard);
3026
+ transition-duration: var(--jkl-motion-timing-productive);
3027
+ transition-property: opacity;
2588
3028
  }
2589
- .jkl-option[data-multiple][aria-selected=true]::before {
2590
- --jkl-icon-fill: 1;
2591
- content: "check_box"/"";
3029
+ .jkl-search__clear-button:hover::after {
3030
+ opacity: 0.15;
2592
3031
  }
2593
- .jkl-option__label {
2594
- flex-grow: 999;
3032
+ .jkl-search__clear-button:focus-visible {
3033
+ outline: 3px solid var(--jkl-color-border-strong);
3034
+ outline-offset: 3px;
2595
3035
  }
2596
- .jkl-option__media {
3036
+ }
3037
+ @layer jokul.components {
3038
+ .jkl-search button.jkl-search-submit {
3039
+ --border-radius: 0;
3040
+ flex: none;
3041
+ align-self: stretch;
3042
+ min-width: unset;
3043
+ border-start-end-radius: var(--jkl-border-radius-s);
3044
+ border-end-end-radius: var(--jkl-border-radius-s);
3045
+ --inset-size: 1ex;
3046
+ --separator-color: var(--jkl-color-border-subdued);
2597
3047
  position: relative;
2598
- width: var(--media-size, 2em);
2599
- min-width: 2em;
2600
- aspect-ratio: 1;
2601
- flex-shrink: 0;
2602
- overflow: hidden;
2603
- border-radius: var(--jkl-border-radius-xs);
2604
3048
  }
2605
- .jkl-option__media :is(img, picture, video) {
3049
+ .jkl-search button.jkl-search-submit::before {
3050
+ content: "";
2606
3051
  position: absolute;
2607
- inset: 0;
2608
- object-fit: cover;
2609
- width: 100%;
2610
- height: 100%;
2611
- }
2612
- }
2613
- .jkl-search {
2614
- --icon-size: var(--jkl-text-input-height);
2615
- --border-radius: var(--jkl-border-radius-s);
2616
- --border-width: 1px;
2617
- --border: var(--border-width) solid var(--jkl-color-border-default);
2618
- width: 100%;
2619
- font: var(--jkl-text-style-text-medium);
2620
- }
2621
- .jkl-search .jkl-input-group {
2622
- display: contents;
2623
- }
2624
- .jkl-search input[type=search] {
2625
- appearance: none;
2626
- padding: 0;
2627
- background-color: transparent;
2628
- color: var(--jkl-color-text-default);
2629
- grid-column: 2/3;
2630
- }
2631
- .jkl-search input[type=search] {
2632
- outline: 0;
2633
- border-style: none;
2634
- outline-style: none;
2635
- }
2636
- .jkl-search input[type=search]:active, .jkl-search input[type=search]:hover, .jkl-search input[type=search]:focus {
2637
- outline: 0;
2638
- outline-style: none;
2639
- }
2640
- @media screen and (forced-colors: active) {
2641
- .jkl-search input[type=search] {
2642
- outline: revert;
2643
- border-style: revert;
2644
- outline-style: revert;
3052
+ block-size: calc(100% * var(--inset-size));
3053
+ top: 0;
3054
+ left: 0;
3055
+ inset-block: var(--inset-size);
3056
+ border-inline-end: 1px solid var(--separator-color);
3057
+ z-index: 1;
3058
+ transition-timing-function: var(--jkl-motion-easing-standard);
3059
+ transition-duration: var(--jkl-motion-timing-productive);
3060
+ transition-property: inset, border-color;
2645
3061
  }
2646
- .jkl-search input[type=search]:active, .jkl-search input[type=search]:hover, .jkl-search input[type=search]:focus {
2647
- outline: revert;
2648
- outline-style: revert;
3062
+ .jkl-search button.jkl-search-submit:hover, .jkl-search button.jkl-search-submit:focus-within {
3063
+ --inset-size: 1px;
3064
+ --separator-color: var(--jkl-color-border-subdued);
2649
3065
  }
2650
3066
  }
2651
- .jkl-search input[type=search] {
2652
- font: var(--jkl-text-style-text-medium);
2653
- }
2654
- .jkl-search input[type=search]::-webkit-search-cancel-button, .jkl-search input[type=search]::-webkit-calendar-picker-indicator, .jkl-search input[type=search]::-webkit-search-results-button {
2655
- appearance: none;
2656
- display: none !important;
2657
- }
2658
- .jkl-search .input-wrapper {
2659
- box-sizing: border-box;
2660
- display: grid;
2661
- grid-template-columns: 1.3em 1fr;
2662
- gap: 0.25em;
2663
- border: var(--border);
2664
- border-radius: var(--border-radius);
2665
- padding-inline-end: 0;
2666
- padding: calc(var(--jkl-unit-15) - var(--border-width));
2667
- }
2668
- .jkl-search .input-wrapper::before {
2669
- content: attr(data-icon)/"";
2670
- display: inline-flex;
2671
- align-items: center;
2672
- justify-content: center;
2673
- height: 100%;
2674
- grid-column: 1;
2675
- font-family: var(--jkl-font-family-icons);
2676
- }
2677
- .jkl-search .input-wrapper:has(.clear-button) {
2678
- grid-template-columns: 1.3em 1fr 1.3em;
2679
- }
2680
- .jkl-search .input-wrapper:has(input:focus-visible) {
2681
- outline: 3px solid var(--jkl-color-border-strong);
2682
- outline-offset: 3px;
2683
- background-color: var(--jkl-color-background-container);
2684
- }
2685
- .jkl-search:has(input:not(:valid), input:placeholder-shown) .clear-button {
2686
- display: none;
2687
- }
2688
- .jkl-search .clear-button {
2689
- position: relative;
2690
- display: grid;
2691
- appearance: none;
2692
- background-color: transparent;
2693
- border: 0;
2694
- height: 100%;
2695
- padding: 0;
2696
- color: var(--jkl-color-text-default);
2697
- border-radius: 100%;
2698
- }
2699
- .jkl-search .clear-button::before {
2700
- content: "close"/"";
2701
- display: inline-grid;
2702
- align-items: center;
2703
- justify-content: center;
2704
- place-self: center;
2705
- align-self: center;
2706
- grid-row: 1;
2707
- grid-column: 1;
2708
- z-index: 1;
2709
- font-family: var(--jkl-font-family-icons);
2710
- font-variation-settings: "FILL" var(--jkl-icon-fill, 0);
2711
- font-feature-settings: "liga";
2712
- -webkit-font-feature-settings: "liga";
2713
- font-size: 1.3em;
2714
- font-weight: 400;
2715
- line-height: 1;
2716
- display: inline-block;
2717
- flex-shrink: 0;
2718
- -webkit-font-smoothing: antialiased;
2719
- transition-timing-function: var(--jkl-motion-easing-standard);
2720
- transition-duration: var(--jkl-motion-timing-energetic);
2721
- transition-property: font-variation-settings, transform;
2722
- }
2723
- .jkl-search .clear-button::after {
2724
- --tap-size: 1.25lh;
2725
- content: "";
2726
- position: absolute;
2727
- inset: calc((var(--tap-size) - 100%) / 2 * -1);
2728
- background-color: var(--jkl-color-text-default);
2729
- opacity: 0;
2730
- border-radius: inherit;
2731
- transition-timing-function: var(--jkl-motion-easing-standard);
2732
- transition-duration: var(--jkl-motion-timing-productive);
2733
- transition-property: opacity;
2734
- }
2735
- .jkl-search .clear-button:hover::after {
2736
- opacity: 0.15;
2737
- }
2738
- .jkl-search .clear-button:focus-visible {
2739
- outline: 3px solid var(--jkl-color-border-strong);
2740
- outline-offset: 3px;
2741
- }
2742
-
2743
- .jkl-search:has(button.jkl-search-submit) {
2744
- display: grid;
2745
- grid-template-columns: 1fr max-content;
2746
- align-items: end;
2747
- }
2748
- .jkl-search:has(button.jkl-search-submit) .jkl-input-group-description,
2749
- .jkl-search:has(button.jkl-search-submit) .jkl-label,
2750
- .jkl-search:has(button.jkl-search-submit) .input-wrapper {
2751
- grid-column: 1/2;
2752
- }
2753
- .jkl-search:has(button.jkl-search-submit) .input-wrapper {
2754
- border-inline-end: 0;
2755
- border-top-right-radius: 0;
2756
- border-bottom-right-radius: 0;
2757
- }
2758
- .jkl-search:has(button.jkl-search-submit) button.jkl-search-submit {
2759
- height: 100%;
2760
- border: var(--border);
2761
- border-inline-start: 0;
2762
- border-radius: var(--jkl-border-radius-s);
2763
- border-top-left-radius: 0;
2764
- border-bottom-left-radius: 0;
2765
- min-width: unset;
2766
- --inset-size: 1ex;
2767
- --separator-color: var(--jkl-color-border-subdued);
2768
- position: relative;
2769
- }
2770
- .jkl-search:has(button.jkl-search-submit) button.jkl-search-submit::before {
2771
- content: "";
2772
- position: absolute;
2773
- block-size: calc(100% * var(--inset-size));
2774
- top: 0;
2775
- left: 0;
2776
- inset-block: var(--inset-size);
2777
- border-inline-end: 1px solid var(--separator-color);
2778
- z-index: 1;
2779
- transition-timing-function: var(--jkl-motion-easing-standard);
2780
- transition-duration: var(--jkl-motion-timing-productive);
2781
- transition-property: inset, border-color;
2782
- }
2783
- .jkl-search:has(button.jkl-search-submit) button.jkl-search-submit:hover, .jkl-search:has(button.jkl-search-submit) button.jkl-search-submit:focus-within {
2784
- --inset-size: 1px;
2785
- --separator-color: var(--jkl-color-border-subdued);
2786
- }
2787
-
2788
3067
  @layer jokul.components {
2789
3068
  :where(.jkl-text) {
2790
3069
  line-height: var(--jkl-line-height-relaxed);
@@ -3229,10 +3508,10 @@
3229
3508
  }
3230
3509
  .jkl-table-row--clickable {
3231
3510
  outline: 0;
3511
+ cursor: pointer;
3232
3512
  }
3233
3513
  .jkl-table-row--clickable:hover, html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-table-row--clickable:focus {
3234
- cursor: pointer;
3235
- background-color: var(--jkl-table-row-highlight-color);
3514
+ background-color: color-mix(in srgb, var(--background-color, transparent), var(--hover-accent-color, var(--jkl-color-background-contrast)) var(--jkl-opacity-hover, 10%));
3236
3515
  border-top: double 0.0625rem var(--jkl-table-row-hover-border-color);
3237
3516
  border-bottom: double 0.0625rem var(--jkl-table-row-hover-border-color);
3238
3517
  }
@@ -3401,7 +3680,7 @@
3401
3680
  }
3402
3681
  @media (hover: hover) {
3403
3682
  .jkl-expandable-panel__wrapper .jkl-expander:hover {
3404
- background-color: var(--jkl-color-background-container-accent);
3683
+ background-color: color-mix(in srgb, var(--background-color, transparent), var(--hover-accent-color, var(--jkl-color-background-contrast)) var(--jkl-opacity-hover, 10%));
3405
3684
  }
3406
3685
  }
3407
3686
  .jkl-expandable-panel__focus-container {
@@ -3587,12 +3866,12 @@
3587
3866
  font: var(--jkl-text-style-paragraph-small);
3588
3867
  }
3589
3868
  .jkl-feedback__fade-in {
3590
- animation: jkl-show-u8trtxc 0.25s ease-out;
3869
+ animation: jkl-show-uhyh5nu 0.25s ease-out;
3591
3870
  }
3592
3871
  .jkl-feedback__buttons {
3593
3872
  display: flex;
3594
3873
  }
3595
- @keyframes jkl-show-u8trtxc {
3874
+ @keyframes jkl-show-uhyh5nu {
3596
3875
  from {
3597
3876
  transform: translate3d(0, 0.5rem, 0);
3598
3877
  opacity: 0;
@@ -3783,28 +4062,8 @@
3783
4062
  .jkl-message--full {
3784
4063
  max-width: 100%;
3785
4064
  }
3786
- .jkl-message--info {
3787
- --background-color: var(--jkl-color-info-background-container);
3788
- --text-color: var(--jkl-color-info-text-default);
3789
- --icon-color: var(--jkl-color-info-background-contrast);
3790
- }
3791
- .jkl-message--warning {
3792
- --background-color: var(--jkl-color-warning-background-container);
3793
- --text-color: var(--jkl-color-warning-text-default);
3794
- --icon-color: var(--jkl-color-warning-background-contrast);
3795
- }
3796
- .jkl-message--error {
3797
- --background-color: var(--jkl-color-error-background-container);
3798
- --text-color: var(--jkl-color-error-text-default);
3799
- --icon-color: var(--jkl-color-error-background-contrast);
3800
- }
3801
- .jkl-message--success {
3802
- --background-color: var(--jkl-color-success-background-container);
3803
- --text-color: var(--jkl-color-success-text-default);
3804
- --icon-color: var(--jkl-color-success-background-contrast);
3805
- }
3806
4065
  .jkl-message--dismissed {
3807
- animation: jkl-dismiss-u8trtxe var(--jkl-motion-timing-lazy) ease-in-out forwards;
4066
+ animation: jkl-dismiss-uhyh5o9 var(--jkl-motion-timing-lazy) ease-in-out forwards;
3808
4067
  transition: visibility 0ms var(--jkl-motion-timing-lazy);
3809
4068
  visibility: hidden;
3810
4069
  }
@@ -3812,13 +4071,13 @@
3812
4071
  .jkl-message {
3813
4072
  border: 2px solid CanvasText;
3814
4073
  }
3815
- .jkl-message--info {
4074
+ .jkl-message[data-color=info] {
3816
4075
  border-style: dotted;
3817
4076
  }
3818
- .jkl-message--warning {
4077
+ .jkl-message[data-color=warning] {
3819
4078
  border-style: dashed;
3820
4079
  }
3821
- .jkl-message--error {
4080
+ .jkl-message[data-color=error] {
3822
4081
  border-style: double;
3823
4082
  border-width: 4px;
3824
4083
  }
@@ -3826,7 +4085,7 @@
3826
4085
  .jkl-form-error-message {
3827
4086
  padding-bottom: var(--jkl-unit-50);
3828
4087
  }
3829
- @keyframes jkl-dismiss-u8trtxe {
4088
+ @keyframes jkl-dismiss-uhyh5o9 {
3830
4089
  from {
3831
4090
  opacity: 1;
3832
4091
  transform: translate3d(0, 0, 0);
@@ -3954,6 +4213,21 @@
3954
4213
  margin-top: 0.25lh;
3955
4214
  margin-bottom: var(--jkl-unit-10);
3956
4215
  }
4216
+ .jkl-radio-button:has(> .jkl-radio-button__input:disabled) {
4217
+ opacity: var(--jkl-nested-disabled-opacity, 0.5);
4218
+ cursor: not-allowed;
4219
+ }
4220
+ .jkl-radio-button:has(> .jkl-radio-button__input:disabled) * {
4221
+ --jkl-nested-disabled-opacity: 1;
4222
+ cursor: not-allowed;
4223
+ }
4224
+ @media screen and (forced-colors: active) {
4225
+ .jkl-radio-button:has(> .jkl-radio-button__input:disabled) {
4226
+ opacity: 1;
4227
+ color: GrayText;
4228
+ border-color: GrayText;
4229
+ }
4230
+ }
3957
4231
  }
3958
4232
  @layer jokul.components {
3959
4233
  .jkl-text-area-wrapper {
@@ -4000,6 +4274,31 @@
4000
4274
  border: 0.125rem solid ButtonText;
4001
4275
  }
4002
4276
  }
4277
+ .jkl-text-area-wrapper:has(> :is(input, textarea):disabled) {
4278
+ opacity: var(--jkl-nested-disabled-opacity, 0.5);
4279
+ cursor: not-allowed;
4280
+ }
4281
+ .jkl-text-area-wrapper:has(> :is(input, textarea):disabled) * {
4282
+ --jkl-nested-disabled-opacity: 1;
4283
+ cursor: not-allowed;
4284
+ }
4285
+ @media screen and (forced-colors: active) {
4286
+ .jkl-text-area-wrapper:has(> :is(input, textarea):disabled) {
4287
+ opacity: 1;
4288
+ color: GrayText;
4289
+ border-color: GrayText;
4290
+ }
4291
+ }
4292
+ .jkl-text-area-wrapper:has(> :is(input, textarea):read-only:not(:disabled)) {
4293
+ --border-color: var(--jkl-color-border-subdued);
4294
+ --background-color: transparent;
4295
+ cursor: default;
4296
+ }
4297
+ .jkl-text-area-wrapper:has(> :is(input, textarea):read-only:not(:disabled)):hover, .jkl-text-area-wrapper:has(> :is(input, textarea):read-only:not(:disabled)):focus-within, .jkl-text-area-wrapper:has(> :is(input, textarea):read-only:not(:disabled)):has([data-focused=true]) {
4298
+ --border-color: var(--jkl-color-border-subdued);
4299
+ --background-color: transparent;
4300
+ box-shadow: inset 0 0 0 0.0625rem var(--border-color), 0 0 0 0.0625rem transparent;
4301
+ }
4003
4302
  html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-text-area-wrapper:has(.jkl-text-input__input:focus-visible), html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-text-area-wrapper:has(.jkl-text-area__text-area:focus-visible) {
4004
4303
  outline: 3px solid var(--jkl-color-border-strong);
4005
4304
  outline-offset: 3px;
@@ -4437,6 +4736,21 @@
4437
4736
  margin-top: calc(-1 * var(--jkl-unit-15));
4438
4737
  margin-bottom: var(--jkl-unit-20);
4439
4738
  }
4739
+ .jkl-file-input:disabled .jkl-file-input__dropzone {
4740
+ opacity: var(--jkl-nested-disabled-opacity, 0.5);
4741
+ cursor: not-allowed;
4742
+ }
4743
+ .jkl-file-input:disabled .jkl-file-input__dropzone * {
4744
+ --jkl-nested-disabled-opacity: 1;
4745
+ cursor: not-allowed;
4746
+ }
4747
+ @media screen and (forced-colors: active) {
4748
+ .jkl-file-input:disabled .jkl-file-input__dropzone {
4749
+ opacity: 1;
4750
+ color: GrayText;
4751
+ border-color: GrayText;
4752
+ }
4753
+ }
4440
4754
  }
4441
4755
  @layer jokul.components {
4442
4756
  .jkl-link-list {
@@ -4496,7 +4810,7 @@
4496
4810
  transition-property: translate;
4497
4811
  }
4498
4812
  .jkl-link-list ul .jkl-link-list-link:is(:hover, :focus-visible) {
4499
- background-color: var(--jkl-color-background-container-accent);
4813
+ background-color: color-mix(in srgb, var(--background-color, transparent), var(--hover-accent-color, var(--jkl-color-background-contrast)) var(--jkl-opacity-hover, 10%));
4500
4814
  }
4501
4815
  .jkl-link-list ul .jkl-link-list-link:is(:hover, :focus-visible)::after {
4502
4816
  translate: 4px 0;
@@ -4653,7 +4967,7 @@
4653
4967
  flex-shrink: 0;
4654
4968
  }
4655
4969
  .jkl-menu-item:hover, .jkl-menu-item:focus-visible {
4656
- --background-color: var(--jkl-color-background-container-accent);
4970
+ background-color: color-mix(in srgb, var(--background-color, transparent), var(--hover-accent-color, var(--jkl-color-background-contrast)) var(--jkl-opacity-hover, 10%));
4657
4971
  }
4658
4972
  }
4659
4973
  @layer jokul.components {
@@ -4757,6 +5071,51 @@
4757
5071
  transform: translateX(-0.3rem);
4758
5072
  }
4759
5073
  }
5074
+ @layer jokul.components {
5075
+ .jkl-notification-badge {
5076
+ --jkl-notification-badge-color: var(--jkl-color-background-contrast);
5077
+ position-anchor: var(--jkl-notification-badge-anchor-name);
5078
+ background: var(--jkl-notification-badge-color);
5079
+ color: var(--jkl-color-text-on-contrast);
5080
+ text-box-trim: trim-both;
5081
+ overflow: hidden;
5082
+ display: inline-block;
5083
+ border-radius: var(--jkl-border-radius-full);
5084
+ font: var(--jkl-text-style-text-micro);
5085
+ font-weight: var(--jkl-font-weight-bold);
5086
+ min-inline-size: 2ch;
5087
+ text-align: center;
5088
+ padding: var(--jkl-spacing-2);
5089
+ pointer-events: none;
5090
+ align-self: center;
5091
+ }
5092
+ .jkl-notification-badge--dot {
5093
+ min-inline-size: unset;
5094
+ inline-size: 1ch;
5095
+ padding: 0;
5096
+ aspect-ratio: 1;
5097
+ }
5098
+ .jkl-notification-badge[data-urgent=true] {
5099
+ --jkl-notification-badge-color: var(
5100
+ --jkl-color-error-background-contrast
5101
+ );
5102
+ }
5103
+ .jkl-notification-badge-anchor {
5104
+ anchor-name: var(--jkl-notification-badge-anchor-name);
5105
+ }
5106
+ @supports (position-anchor: --jkl-notification-badge-anchor) {
5107
+ .jkl-notification-badge-anchor + .jkl-notification-badge {
5108
+ position: absolute;
5109
+ inset-inline-end: calc(anchor(end) - 0.5ch);
5110
+ inset-block-start: calc(anchor(start) - 1ch);
5111
+ }
5112
+ .jkl-notification-badge-anchor + .jkl-notification-badge--dot {
5113
+ --dot-inset: min(1ch, anchor-size(inline) / 8);
5114
+ inset-inline-end: calc(anchor(end) + var(--dot-inset));
5115
+ inset-block-start: calc(anchor(start) - 0.3ch);
5116
+ }
5117
+ }
5118
+ }
4760
5119
  @layer jokul.components {
4761
5120
  .jkl-number-input {
4762
5121
  display: flex;
@@ -4806,6 +5165,31 @@
4806
5165
  border: 0.125rem solid ButtonText;
4807
5166
  }
4808
5167
  }
5168
+ .jkl-number-input__wrapper:has(> :is(input, textarea):disabled) {
5169
+ opacity: var(--jkl-nested-disabled-opacity, 0.5);
5170
+ cursor: not-allowed;
5171
+ }
5172
+ .jkl-number-input__wrapper:has(> :is(input, textarea):disabled) * {
5173
+ --jkl-nested-disabled-opacity: 1;
5174
+ cursor: not-allowed;
5175
+ }
5176
+ @media screen and (forced-colors: active) {
5177
+ .jkl-number-input__wrapper:has(> :is(input, textarea):disabled) {
5178
+ opacity: 1;
5179
+ color: GrayText;
5180
+ border-color: GrayText;
5181
+ }
5182
+ }
5183
+ .jkl-number-input__wrapper:has(> :is(input, textarea):read-only:not(:disabled)) {
5184
+ --border-color: var(--jkl-color-border-subdued);
5185
+ --background-color: transparent;
5186
+ cursor: default;
5187
+ }
5188
+ .jkl-number-input__wrapper:has(> :is(input, textarea):read-only:not(:disabled)):hover, .jkl-number-input__wrapper:has(> :is(input, textarea):read-only:not(:disabled)):focus-within, .jkl-number-input__wrapper:has(> :is(input, textarea):read-only:not(:disabled)):has([data-focused=true]) {
5189
+ --border-color: var(--jkl-color-border-subdued);
5190
+ --background-color: transparent;
5191
+ box-shadow: inset 0 0 0 0.0625rem var(--border-color), 0 0 0 0.0625rem transparent;
5192
+ }
4809
5193
  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) {
4810
5194
  outline: 3px solid var(--jkl-color-border-strong);
4811
5195
  outline-offset: 3px;
@@ -4951,9 +5335,20 @@
4951
5335
  inset-block: 0.0625rem;
4952
5336
  }
4953
5337
  .jkl-number-input button[data-direction]:disabled {
4954
- opacity: 0.4;
5338
+ opacity: var(--jkl-nested-disabled-opacity, 0.4);
5339
+ cursor: not-allowed;
5340
+ }
5341
+ .jkl-number-input button[data-direction]:disabled * {
5342
+ --jkl-nested-disabled-opacity: 1;
4955
5343
  cursor: not-allowed;
4956
5344
  }
5345
+ @media screen and (forced-colors: active) {
5346
+ .jkl-number-input button[data-direction]:disabled {
5347
+ opacity: 1;
5348
+ color: GrayText;
5349
+ border-color: GrayText;
5350
+ }
5351
+ }
4957
5352
  .jkl-number-input button[data-direction=decrement]::before {
4958
5353
  inset-inline-end: 0;
4959
5354
  }
@@ -5129,7 +5524,7 @@
5129
5524
  transition-timing-function: var(--jkl-motion-easing-standard);
5130
5525
  transition-duration: var(--jkl-motion-timing-productive);
5131
5526
  }
5132
- @keyframes jkl-downcount-u8trtxs {
5527
+ @keyframes jkl-downcount-uhyh5oy {
5133
5528
  from {
5134
5529
  width: 100%;
5135
5530
  }
@@ -5185,6 +5580,22 @@
5185
5580
  border-color: var(--jkl-color-border-subdued);
5186
5581
  z-index: 1;
5187
5582
  }
5583
+ .jkl-segmented-control .jkl-segmented-control-item.jkl-radio-button:has(> input:disabled) {
5584
+ border-color: var(--jkl-color-border-subdued);
5585
+ opacity: var(--jkl-nested-disabled-opacity, 0.5);
5586
+ cursor: not-allowed;
5587
+ }
5588
+ .jkl-segmented-control .jkl-segmented-control-item.jkl-radio-button:has(> input:disabled) * {
5589
+ --jkl-nested-disabled-opacity: 1;
5590
+ cursor: not-allowed;
5591
+ }
5592
+ @media screen and (forced-colors: active) {
5593
+ .jkl-segmented-control .jkl-segmented-control-item.jkl-radio-button:has(> input:disabled) {
5594
+ opacity: 1;
5595
+ color: GrayText;
5596
+ border-color: GrayText;
5597
+ }
5598
+ }
5188
5599
  .jkl-segmented-control .jkl-segmented-control-item.jkl-radio-button:has(input[data-separated=true]) {
5189
5600
  border-radius: var(--jkl-segmented-controls-border-radius);
5190
5601
  margin-inline-start: var(--jkl-segmented-controls-margin);
@@ -5369,45 +5780,25 @@
5369
5780
  margin-bottom: 0;
5370
5781
  }
5371
5782
  .jkl-system-message--dismissed {
5372
- animation: jkl-dismiss-u8trtyy var(--jkl-motion-timing-lazy) forwards;
5783
+ animation: jkl-dismiss-uhyh5ph var(--jkl-motion-timing-lazy) forwards;
5373
5784
  transition: block var(--jkl-motion-timing-lazy) var(--jkl-motion-timing-lazy);
5374
5785
  }
5375
- .jkl-system-message--info {
5376
- --background-color: var(--jkl-color-info-background-container);
5377
- --text-color: var(--jkl-color-info-text-default);
5378
- --icon-color: var(--jkl-color-info-background-contrast);
5379
- }
5380
- .jkl-system-message--warning {
5381
- --background-color: var(--jkl-color-warning-background-container);
5382
- --text-color: var(--jkl-color-warning-text-default);
5383
- --icon-color: var(--jkl-color-warning-background-contrast);
5384
- }
5385
- .jkl-system-message--error {
5386
- --background-color: var(--jkl-color-error-background-container);
5387
- --text-color: var(--jkl-color-error-text-default);
5388
- --icon-color: var(--jkl-color-error-background-contrast);
5389
- }
5390
- .jkl-system-message--success {
5391
- --background-color: var(--jkl-color-success-background-container);
5392
- --text-color: var(--jkl-color-success-text-default);
5393
- --icon-color: var(--jkl-color-success-background-contrast);
5394
- }
5395
5786
  @media screen and (forced-colors: active) {
5396
5787
  .jkl-system-message {
5397
5788
  border: 2px solid CanvasText;
5398
5789
  }
5399
- .jkl-system-message--info {
5790
+ .jkl-system-message[data-color=info] {
5400
5791
  border-style: dotted;
5401
5792
  }
5402
- .jkl-system-message--warning {
5793
+ .jkl-system-message[data-color=warning] {
5403
5794
  border-style: dashed;
5404
5795
  }
5405
- .jkl-system-message--error {
5796
+ .jkl-system-message[data-color=error] {
5406
5797
  border-style: double;
5407
5798
  border-width: 4px;
5408
5799
  }
5409
5800
  }
5410
- @keyframes jkl-dismiss-u8trtyy {
5801
+ @keyframes jkl-dismiss-uhyh5ph {
5411
5802
  from {
5412
5803
  opacity: 1;
5413
5804
  transform: translateY(0);
@@ -5548,6 +5939,8 @@
5548
5939
  scroll-snap-align: start;
5549
5940
  text-decoration: none;
5550
5941
  white-space: nowrap;
5942
+ display: inline-flex;
5943
+ gap: var(--jkl-unit-10);
5551
5944
  }
5552
5945
  .jkl-tab {
5553
5946
  outline: 0;
@@ -5627,7 +6020,8 @@
5627
6020
  .jkl-toast {
5628
6021
  --background-color: var(--jkl-color-background-container);
5629
6022
  --text-color: var(--jkl-color-text-default);
5630
- --border-color: transparent;
6023
+ --icon-color: var(--jkl-color-background-contrast);
6024
+ --border-color: var(--jkl-color-border-subdued);
5631
6025
  --jkl-toast-padding: var(--jkl-unit-20);
5632
6026
  color: var(--text-color);
5633
6027
  background-color: var(--background-color);
@@ -5658,6 +6052,9 @@
5658
6052
  stroke: CanvasText;
5659
6053
  }
5660
6054
  }
6055
+ .jkl-toast__icon {
6056
+ color: var(--icon-color);
6057
+ }
5661
6058
  .jkl-toast:not(:has(.jkl-toast__title)) .jkl-toast__icon {
5662
6059
  margin-block-start: 0.0625rem;
5663
6060
  }
@@ -5698,73 +6095,29 @@
5698
6095
  position: absolute;
5699
6096
  inset: calc((var(--tap-size) - 100%) / 2 * -1);
5700
6097
  }
5701
- .jkl-toast--info {
5702
- --background-color: var(--jkl-color-info-background-container);
5703
- --text-color: var(--jkl-color-info-text-default);
5704
- --border-color: var(--jkl-color-info-border-subdued);
5705
- }
5706
- .jkl-toast--info .jkl-countdown {
5707
- --bar-color: var(--jkl-color-info-background-contrast);
5708
- }
5709
- .jkl-toast--info .jkl-toast__icon {
5710
- color: var(--jkl-color-info-background-contrast);
5711
- }
5712
- .jkl-toast--warning {
5713
- --background-color: var(--jkl-color-warning-background-container);
5714
- --text-color: var(--jkl-color-warning-text-default);
5715
- --border-color: var(--jkl-color-warning-border-subdued);
5716
- }
5717
- .jkl-toast--warning .jkl-countdown {
5718
- --bar-color: var(--jkl-color-warning-background-contrast);
5719
- }
5720
- .jkl-toast--warning .jkl-toast__icon {
5721
- color: var(--jkl-color-warning-background-contrast);
5722
- }
5723
- .jkl-toast--error {
5724
- --background-color: var(--jkl-color-error-background-container);
5725
- --text-color: var(--jkl-color-error-text-default);
5726
- --border-color: var(--jkl-color-error-border-subdued);
5727
- }
5728
- .jkl-toast--error .jkl-countdown {
5729
- --bar-color: var(--jkl-color-error-background-contrast);
5730
- }
5731
- .jkl-toast--error .jkl-toast__icon {
5732
- color: var(--jkl-color-error-background-contrast);
5733
- }
5734
- .jkl-toast--success {
5735
- --background-color: var(--jkl-color-success-background-container);
5736
- --text-color: var(--jkl-color-success-text-default);
5737
- --border-color: var(--jkl-color-success-border-subdued);
5738
- }
5739
- .jkl-toast--success .jkl-countdown {
5740
- --bar-color: var(--jkl-color-success-background-contrast);
5741
- }
5742
- .jkl-toast--success .jkl-toast__icon {
5743
- color: var(--jkl-color-success-background-contrast);
5744
- }
5745
6098
  @media screen and (forced-colors: active) {
5746
6099
  .jkl-toast {
5747
6100
  border: 2px solid CanvasText;
5748
6101
  }
5749
- .jkl-toast--info {
6102
+ .jkl-toast[data-color=info] {
5750
6103
  border-style: dotted;
5751
6104
  }
5752
- .jkl-toast--warning {
6105
+ .jkl-toast[data-color=warning] {
5753
6106
  border-style: dashed;
5754
6107
  }
5755
- .jkl-toast--error {
6108
+ .jkl-toast[data-color=error] {
5756
6109
  border-style: double;
5757
6110
  border-width: 4px;
5758
6111
  }
5759
6112
  }
5760
6113
  .jkl-toast[data-animation=entering],
5761
6114
  .jkl-toast[data-animation=queued] {
5762
- animation: jkl-entering-u8trtzh var(--jkl-motion-timing-polite) var(--jkl-motion-easing-entrance) forwards;
6115
+ animation: jkl-entering-uhyh5qe var(--jkl-motion-timing-polite) var(--jkl-motion-easing-entrance) forwards;
5763
6116
  }
5764
6117
  .jkl-toast[data-animation=exiting] {
5765
- animation: jkl-exiting-u8trtzp var(--jkl-motion-timing-productive) var(--jkl-motion-easing-exit) forwards;
6118
+ animation: jkl-exiting-uhyh5r7 var(--jkl-motion-timing-productive) var(--jkl-motion-easing-exit) forwards;
5766
6119
  }
5767
- @keyframes jkl-entering-u8trtzh {
6120
+ @keyframes jkl-entering-uhyh5qe {
5768
6121
  from {
5769
6122
  opacity: 0;
5770
6123
  transform: translate3d(0, 50%, 0);
@@ -5774,7 +6127,7 @@
5774
6127
  transform: translate3d(0, 0, 0);
5775
6128
  }
5776
6129
  }
5777
- @keyframes jkl-exiting-u8trtzp {
6130
+ @keyframes jkl-exiting-uhyh5r7 {
5778
6131
  from {
5779
6132
  opacity: 1;
5780
6133
  transform: translate3d(0, 0, 0);
@@ -5943,14 +6296,19 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-toggle-slider:
5943
6296
  --knob-position: calc(var(--jkl-toggle-switch-width) - var(--jkl-toggle-switch-knob-size) - var(--switch-padding) * 2);
5944
6297
  }
5945
6298
  .jkl-toggle-switch[disabled] {
5946
- cursor: revert;
5947
- --text-color: var(--jkl-color-text-subdued);
5948
- --switch-border-color: var(--jkl-color-border-subdued);
5949
- --knob-border-color: var(--jkl-color-border-subdued);
6299
+ opacity: var(--jkl-nested-disabled-opacity, 0.5);
6300
+ cursor: not-allowed;
5950
6301
  }
5951
- .jkl-toggle-switch[disabled][aria-pressed=true], [aria-checked=true] > .jkl-toggle-switch[disabled] {
5952
- --indicator-color: var(--jkl-color-border-subdued);
5953
- --switch-border-color: var(--indicator-color);
6302
+ .jkl-toggle-switch[disabled] * {
6303
+ --jkl-nested-disabled-opacity: 1;
6304
+ cursor: not-allowed;
6305
+ }
6306
+ @media screen and (forced-colors: active) {
6307
+ .jkl-toggle-switch[disabled] {
6308
+ opacity: 1;
6309
+ color: GrayText;
6310
+ border-color: GrayText;
6311
+ }
5954
6312
  }
5955
6313
 
5956
6314
  .jkl-toggle-switch-widget {