@fremtind/jokul 5.0.0-next.1 → 5.0.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/README.md +29 -6
  2. package/bin/jokul.mjs +10 -0
  3. package/bin/run-jokul-cli.mjs +63 -0
  4. package/build/build-stats.html +1 -1
  5. package/build/cjs/components/card/Card.cjs +1 -1
  6. package/build/cjs/components/card/Card.cjs.map +1 -1
  7. package/build/cjs/components/card/types.cjs +1 -1
  8. package/build/cjs/components/card/types.cjs.map +1 -1
  9. package/build/cjs/components/card/types.d.cts +2 -2
  10. package/build/cjs/components/checkbox/Checkbox.cjs +1 -1
  11. package/build/cjs/components/checkbox/Checkbox.cjs.map +1 -1
  12. package/build/cjs/components/cookie-consent/CookieConsent.cjs +1 -1
  13. package/build/cjs/components/cookie-consent/CookieConsent.cjs.map +1 -1
  14. package/build/cjs/components/cookie-consent/CookieConsent.d.cts +1 -1
  15. package/build/cjs/components/cookie-consent/types.d.cts +4 -0
  16. package/build/cjs/components/datepicker/DatePicker.cjs +1 -1
  17. package/build/cjs/components/datepicker/DatePicker.cjs.map +1 -1
  18. package/build/cjs/components/expander/ExpandablePanel.cjs +1 -1
  19. package/build/cjs/components/expander/ExpandablePanel.cjs.map +1 -1
  20. package/build/cjs/components/link/Link.cjs +1 -1
  21. package/build/cjs/components/link/Link.cjs.map +1 -1
  22. package/build/cjs/components/link/Link.d.cts +2 -2
  23. package/build/cjs/components/link/types.d.cts +1 -4
  24. package/build/cjs/components/modal/Modal.cjs +1 -1
  25. package/build/cjs/components/modal/Modal.cjs.map +1 -1
  26. package/build/cjs/components/modal/Modal.d.cts +2 -9
  27. package/build/cjs/components/modal/index.d.cts +1 -1
  28. package/build/cjs/components/modal/types.d.cts +18 -0
  29. package/build/cjs/components/popover/Popover.cjs +1 -1
  30. package/build/cjs/components/popover/Popover.cjs.map +1 -1
  31. package/build/cjs/components/radio-button/BaseRadioButton.cjs +1 -1
  32. package/build/cjs/components/radio-button/BaseRadioButton.cjs.map +1 -1
  33. package/build/cjs/core/tokens.cjs +2 -0
  34. package/build/cjs/core/tokens.cjs.map +1 -0
  35. package/build/cjs/core/tokens.d.cts +593 -0
  36. package/build/cjs/tailwind/colors.cjs +2 -0
  37. package/build/cjs/tailwind/colors.cjs.map +1 -0
  38. package/build/cjs/tailwind/colors.d.cts +39 -0
  39. package/build/cjs/tokens.cjs +1 -1
  40. package/build/cjs/tokens.cjs.map +1 -1
  41. package/build/cjs/tokens.d.cts +98 -39
  42. package/build/es/components/card/Card.js +1 -1
  43. package/build/es/components/card/Card.js.map +1 -1
  44. package/build/es/components/card/types.d.ts +2 -2
  45. package/build/es/components/card/types.js +1 -1
  46. package/build/es/components/card/types.js.map +1 -1
  47. package/build/es/components/checkbox/Checkbox.js +1 -1
  48. package/build/es/components/checkbox/Checkbox.js.map +1 -1
  49. package/build/es/components/cookie-consent/CookieConsent.d.ts +1 -1
  50. package/build/es/components/cookie-consent/CookieConsent.js +1 -1
  51. package/build/es/components/cookie-consent/CookieConsent.js.map +1 -1
  52. package/build/es/components/cookie-consent/types.d.ts +4 -0
  53. package/build/es/components/datepicker/DatePicker.js +1 -1
  54. package/build/es/components/datepicker/DatePicker.js.map +1 -1
  55. package/build/es/components/expander/ExpandablePanel.js +1 -1
  56. package/build/es/components/expander/ExpandablePanel.js.map +1 -1
  57. package/build/es/components/link/Link.d.ts +2 -2
  58. package/build/es/components/link/Link.js +1 -1
  59. package/build/es/components/link/Link.js.map +1 -1
  60. package/build/es/components/link/types.d.ts +1 -4
  61. package/build/es/components/modal/Modal.d.ts +2 -9
  62. package/build/es/components/modal/Modal.js +1 -1
  63. package/build/es/components/modal/Modal.js.map +1 -1
  64. package/build/es/components/modal/index.d.ts +1 -1
  65. package/build/es/components/modal/types.d.ts +18 -0
  66. package/build/es/components/popover/Popover.js +1 -1
  67. package/build/es/components/popover/Popover.js.map +1 -1
  68. package/build/es/components/radio-button/BaseRadioButton.js +1 -1
  69. package/build/es/components/radio-button/BaseRadioButton.js.map +1 -1
  70. package/build/es/core/tokens.d.ts +593 -0
  71. package/build/es/core/tokens.js +2 -0
  72. package/build/es/core/tokens.js.map +1 -0
  73. package/build/es/tailwind/colors.d.ts +39 -0
  74. package/build/es/tailwind/colors.js +2 -0
  75. package/build/es/tailwind/colors.js.map +1 -0
  76. package/build/es/tokens.d.ts +98 -39
  77. package/build/es/tokens.js +1 -1
  78. package/build/es/tokens.js.map +1 -1
  79. package/codemods/__tests__/import-paths.test.mjs +84 -0
  80. package/codemods/import-paths.mjs +393 -0
  81. package/package.json +6 -1
  82. package/styles/base.css +483 -66
  83. package/styles/base.min.css +1 -1
  84. package/styles/components/autosuggest/autosuggest.css +2 -2
  85. package/styles/components/autosuggest/autosuggest.min.css +1 -1
  86. package/styles/components/autosuggest/autosuggest.scss +2 -2
  87. package/styles/components/beta/description-list/description-list.css +1 -1
  88. package/styles/components/beta/description-list/description-list.min.css +1 -1
  89. package/styles/components/beta/description-list/description-list.scss +1 -1
  90. package/styles/components/beta/nav-link/navlink.css +2 -2
  91. package/styles/components/beta/nav-link/navlink.min.css +1 -1
  92. package/styles/components/beta/nav-link/navlink.scss +2 -2
  93. package/styles/components/beta/select/select.css +9 -9
  94. package/styles/components/beta/select/select.min.css +1 -1
  95. package/styles/components/beta/select/select.scss +8 -7
  96. package/styles/components/breadcrumb/breadcrumb.css +1 -1
  97. package/styles/components/breadcrumb/breadcrumb.min.css +1 -1
  98. package/styles/components/button/button.css +6 -2
  99. package/styles/components/button/button.min.css +1 -1
  100. package/styles/components/button/button.scss +12 -12
  101. package/styles/components/card/card.css +6 -9
  102. package/styles/components/card/card.min.css +1 -1
  103. package/styles/components/card/card.scss +6 -10
  104. package/styles/components/checkbox/checkbox.css +43 -9
  105. package/styles/components/checkbox/checkbox.min.css +1 -1
  106. package/styles/components/checkbox/checkbox.scss +38 -21
  107. package/styles/components/checkbox-panel/checkbox-panel.css +65 -26
  108. package/styles/components/checkbox-panel/checkbox-panel.min.css +1 -1
  109. package/styles/components/checkbox-panel/checkbox-panel.scss +4 -0
  110. package/styles/components/chip/chip.css +2 -2
  111. package/styles/components/chip/chip.min.css +1 -1
  112. package/styles/components/chip/chip.scss +1 -1
  113. package/styles/components/combobox/combobox.css +18 -15
  114. package/styles/components/combobox/combobox.min.css +1 -1
  115. package/styles/components/combobox/combobox.scss +9 -6
  116. package/styles/components/countdown/countdown.css +4 -4
  117. package/styles/components/countdown/countdown.min.css +1 -1
  118. package/styles/components/datepicker/_calendar-date-button.scss +7 -7
  119. package/styles/components/datepicker/_calendar-navigation-dropdown.scss +1 -1
  120. package/styles/components/datepicker/_calendar.scss +6 -7
  121. package/styles/components/datepicker/datepicker.css +19 -11
  122. package/styles/components/datepicker/datepicker.min.css +1 -1
  123. package/styles/components/description-list/description-list.css +1 -1
  124. package/styles/components/description-list/description-list.min.css +1 -1
  125. package/styles/components/description-list/description-list.scss +1 -1
  126. package/styles/components/expander/expandable.css +17 -17
  127. package/styles/components/expander/expandable.min.css +1 -1
  128. package/styles/components/expander/expandable.scss +15 -19
  129. package/styles/components/feedback/feedback.css +6 -8
  130. package/styles/components/feedback/feedback.min.css +1 -1
  131. package/styles/components/feedback/feedback.scss +4 -9
  132. package/styles/components/file/file.css +5 -5
  133. package/styles/components/file/file.min.css +1 -1
  134. package/styles/components/file/file.scss +5 -5
  135. package/styles/components/file-input/file-input.css +26 -22
  136. package/styles/components/file-input/file-input.min.css +1 -1
  137. package/styles/components/file-input/file-input.scss +3 -3
  138. package/styles/components/help/help.css +2 -2
  139. package/styles/components/help/help.min.css +1 -1
  140. package/styles/components/help/help.scss +2 -2
  141. package/styles/components/icon/icon.css +4 -4
  142. package/styles/components/icon/icon.min.css +1 -1
  143. package/styles/components/icon/icon.scss +4 -4
  144. package/styles/components/icon-button/icon-button.css +1 -1
  145. package/styles/components/icon-button/icon-button.min.css +1 -1
  146. package/styles/components/input-group/input-group.css +2 -2
  147. package/styles/components/input-group/input-group.min.css +1 -1
  148. package/styles/components/input-panel/input-panel.css +19 -17
  149. package/styles/components/input-panel/input-panel.min.css +1 -1
  150. package/styles/components/input-panel/input-panel.scss +20 -18
  151. package/styles/components/link/link.css +1 -1
  152. package/styles/components/link/link.min.css +1 -1
  153. package/styles/components/link-list/link-list.css +6 -2
  154. package/styles/components/link-list/link-list.min.css +1 -1
  155. package/styles/components/link-list/link-list.scss +6 -2
  156. package/styles/components/loader/loader.css +6 -6
  157. package/styles/components/loader/loader.min.css +1 -1
  158. package/styles/components/loader/skeleton-loader.css +4 -4
  159. package/styles/components/loader/skeleton-loader.min.css +1 -1
  160. package/styles/components/loader/skeleton-loader.scss +1 -1
  161. package/styles/components/menu/_menu-divider.scss +1 -1
  162. package/styles/components/menu/menu.css +3 -3
  163. package/styles/components/menu/menu.min.css +1 -1
  164. package/styles/components/menu/menu.scss +2 -2
  165. package/styles/components/message/message.css +19 -9
  166. package/styles/components/message/message.min.css +1 -1
  167. package/styles/components/message/message.scss +16 -6
  168. package/styles/components/modal/_layout.scss +22 -0
  169. package/styles/components/modal/_modal-base.scss +32 -0
  170. package/styles/components/modal/_motion.scss +45 -0
  171. package/styles/components/modal/_overlay.scss +20 -0
  172. package/styles/components/modal/_parts.scss +33 -0
  173. package/styles/components/modal/_placement.scss +59 -0
  174. package/styles/components/modal/modal.css +118 -34
  175. package/styles/components/modal/modal.min.css +1 -1
  176. package/styles/components/modal/modal.scss +6 -95
  177. package/styles/components/nav-link/nav-link.css +1 -1
  178. package/styles/components/nav-link/nav-link.min.css +1 -1
  179. package/styles/components/pagination/pagination.css +1 -1
  180. package/styles/components/pagination/pagination.min.css +1 -1
  181. package/styles/components/popover/popover.css +12 -1
  182. package/styles/components/popover/popover.min.css +1 -1
  183. package/styles/components/popover/popover.scss +15 -1
  184. package/styles/components/progress-bar/progress-bar.css +27 -3
  185. package/styles/components/progress-bar/progress-bar.min.css +1 -1
  186. package/styles/components/progress-bar/progress-bar.scss +5 -0
  187. package/styles/components/radio-button/radio-button.css +41 -6
  188. package/styles/components/radio-button/radio-button.min.css +1 -1
  189. package/styles/components/radio-button/radio-button.scss +35 -16
  190. package/styles/components/radio-panel/radio-panel.css +22 -17
  191. package/styles/components/radio-panel/radio-panel.min.css +1 -1
  192. package/styles/components/radio-panel/radio-panel.scss +4 -0
  193. package/styles/components/search/search-with-submit-button.css +1 -1
  194. package/styles/components/search/search-with-submit-button.min.css +1 -1
  195. package/styles/components/search/search-with-submit-button.scss +1 -1
  196. package/styles/components/search/search.css +2 -2
  197. package/styles/components/search/search.min.css +1 -1
  198. package/styles/components/search/search.scss +1 -1
  199. package/styles/components/segmented-control/segmented-control.css +54 -19
  200. package/styles/components/segmented-control/segmented-control.min.css +1 -1
  201. package/styles/components/segmented-control/segmented-control.scss +4 -4
  202. package/styles/components/select/select.css +15 -15
  203. package/styles/components/select/select.min.css +1 -1
  204. package/styles/components/select/select.scss +12 -12
  205. package/styles/components/summary-table/summary-table.css +2 -2
  206. package/styles/components/summary-table/summary-table.min.css +1 -1
  207. package/styles/components/summary-table/summary-table.scss +2 -2
  208. package/styles/components/system-message/system-message.css +20 -10
  209. package/styles/components/system-message/system-message.min.css +1 -1
  210. package/styles/components/system-message/system-message.scss +17 -7
  211. package/styles/components/table/_table-head.scss +1 -1
  212. package/styles/components/table/_table-row.scss +2 -2
  213. package/styles/components/table/table.css +3 -3
  214. package/styles/components/table/table.min.css +1 -1
  215. package/styles/components/table-of-contents/table-of-contents.css +1 -1
  216. package/styles/components/table-of-contents/table-of-contents.min.css +1 -1
  217. package/styles/components/table-of-contents/table-of-contents.scss +1 -1
  218. package/styles/components/tabs/tabs.css +3 -3
  219. package/styles/components/tabs/tabs.min.css +1 -1
  220. package/styles/components/tabs/tabs.scss +2 -2
  221. package/styles/components/tag/tag.css +16 -6
  222. package/styles/components/tag/tag.min.css +1 -1
  223. package/styles/components/tag/tag.scss +16 -6
  224. package/styles/components/text-area/text-area.css +8 -8
  225. package/styles/components/text-area/text-area.min.css +1 -1
  226. package/styles/components/text-input/text-input.css +8 -8
  227. package/styles/components/text-input/text-input.min.css +1 -1
  228. package/styles/components/toast/toast.css +19 -12
  229. package/styles/components/toast/toast.min.css +1 -1
  230. package/styles/components/toast/toast.scss +15 -12
  231. package/styles/components/toggle-switch/_toggle-slider.scss +4 -4
  232. package/styles/components/toggle-switch/toggle-switch.css +14 -19
  233. package/styles/components/toggle-switch/toggle-switch.min.css +2 -2
  234. package/styles/components/toggle-switch/toggle-switch.scss +9 -16
  235. package/styles/components/tooltip/tooltip.css +3 -3
  236. package/styles/components/tooltip/tooltip.min.css +1 -1
  237. package/styles/components/tooltip/tooltip.scss +3 -3
  238. package/styles/components.css +536 -294
  239. package/styles/components.min.css +2 -2
  240. package/styles/core/jkl/_tokens.scss +59 -0
  241. package/styles/core/jkl/legacy/_dynamic-colors.scss +40 -0
  242. package/styles/core/jkl/legacy/_tokens.scss +742 -0
  243. package/styles/core/theme/_color-tokens.scss +73 -0
  244. package/styles/core/theme/_legacy-color-tokens.scss +81 -0
  245. package/styles/core/theme/_legacy-tokens.scss +279 -0
  246. package/styles/core/theme/_spacing-tokens.scss +33 -0
  247. package/styles/core/theme/_tokens.scss +33 -0
  248. package/styles/hooks/stories/styles.scss +2 -2
  249. package/styles/jkl/_ornaments.scss +1 -1
  250. package/styles/jkl/_tokens.scss +151 -71
  251. package/styles/shared/input/shared-input-styles.scss +6 -6
  252. package/styles/shared/track/track.scss +2 -2
  253. package/styles/tailwind.css +108 -66
  254. package/styles/theme/_color-scheme.scss +135 -66
  255. package/styles/theme/_index.scss +3 -0
  256. package/styles/theme/brands/dnb/_color-scheme.scss +119 -0
  257. package/styles/theme/brands/eika/_color-scheme.scss +119 -0
  258. package/styles/theme/brands/sparebank1/_color-scheme.scss +119 -0
@@ -2,6 +2,7 @@
2
2
  * Do not edit directly, this file was auto-generated.
3
3
  */
4
4
  @layer jokul.components {
5
+ /* Base layout */
5
6
  .jkl-modal-container,
6
7
  .jkl-modal-overlay {
7
8
  position: fixed;
@@ -10,29 +11,46 @@
10
11
  .jkl-modal-container {
11
12
  z-index: 9000;
12
13
  display: flex;
14
+ align-items: center;
15
+ justify-content: center;
13
16
  }
14
17
  .jkl-modal-container[aria-hidden=true] {
15
- display: none;
18
+ visibility: hidden;
19
+ pointer-events: none;
16
20
  }
21
+ }
22
+ @layer jokul.components {
17
23
  .jkl-modal-overlay {
18
24
  background-color: rgba(27, 25, 23, 0.8);
25
+ opacity: 0;
26
+ transition-timing-function: var(--jkl-motion-easing-entrance);
27
+ transition-duration: var(--jkl-motion-timing-expressive);
28
+ transition-property: opacity;
29
+ }
30
+ .jkl-modal-container:not([aria-hidden=true]) .jkl-modal-overlay {
31
+ opacity: 1;
32
+ }
33
+ @media (prefers-reduced-motion: reduce) {
34
+ .jkl-modal-overlay {
35
+ transition-duration: 0ms;
36
+ }
19
37
  }
38
+ }
39
+ @layer jokul.components {
20
40
  .jkl-modal {
21
- --jkl-modal-padding: var(--jkl-unit-50);
22
- --jkl-modal-min-width: 13.75rem;
23
- --jkl-modal-max-width: 41.25rem;
24
- margin: auto;
41
+ --margin: var(--jkl-spacing-m);
42
+ container-type: inline-size;
43
+ box-sizing: border-box;
44
+ margin: var(--margin);
45
+ padding: var(--modal-padding, var(--jkl-unit-40));
25
46
  z-index: 9000;
26
- position: relative;
27
- background-color: var(--jkl-color-background-container-high);
28
- border-radius: 0.125rem;
47
+ background-color: var(--jkl-color-background-container);
48
+ border-radius: var(--jkl-border-radius-l);
29
49
  box-shadow: 0 0.25rem 0.75rem rgba(37, 42, 49, 0.03);
30
- width: 100%;
31
- min-width: var(--jkl-modal-min-width);
32
- max-width: var(--jkl-modal-max-width);
50
+ width: min(100vw - 2 * var(--margin), var(--modal-width, 60ch));
51
+ max-width: none;
33
52
  max-height: 90vh;
34
53
  overflow: auto;
35
- padding: var(--jkl-modal-padding);
36
54
  display: flex;
37
55
  flex-direction: column;
38
56
  }
@@ -41,26 +59,100 @@
41
59
  border-color: CanvasText;
42
60
  }
43
61
  }
44
- @media (width >= 0) and (max-width: 679px) {
45
- .jkl-modal {
46
- margin: auto var(--jkl-unit-30);
62
+ }
63
+ @layer jokul.components {
64
+ .jkl-modal-container--slide-in {
65
+ --jkl-modal-slide-x: 0px;
66
+ --jkl-modal-slide-y: 12px;
67
+ transition-timing-function: var(--jkl-motion-easing-exit);
68
+ transition-duration: var(--jkl-motion-timing-expressive);
69
+ transition-property: visibility;
70
+ transition-duration: 0ms;
71
+ }
72
+ .jkl-modal-container--slide-in[aria-hidden=true] {
73
+ display: flex;
74
+ visibility: hidden;
75
+ pointer-events: none;
76
+ transition-delay: var(--jkl-motion-timing-expressive);
77
+ }
78
+ .jkl-modal-container--slide-in:not([aria-hidden=true]) {
79
+ visibility: visible;
80
+ transition-delay: 0ms;
81
+ }
82
+ .jkl-modal-container--slide-in .jkl-modal {
83
+ transition-timing-function: var(--jkl-motion-easing-entrance);
84
+ transition-duration: var(--jkl-motion-timing-expressive);
85
+ transition-property: transform, opacity;
86
+ transform: translate(var(--jkl-modal-slide-x), var(--jkl-modal-slide-y));
87
+ opacity: 0;
88
+ will-change: transform, opacity;
89
+ }
90
+ .jkl-modal-container--slide-in:not([aria-hidden=true]) .jkl-modal {
91
+ transform: translate(0, 0);
92
+ opacity: 1;
93
+ }
94
+ @media (prefers-reduced-motion: reduce) {
95
+ .jkl-modal-container--slide-in .jkl-modal {
96
+ transition-duration: 0ms;
47
97
  }
48
98
  }
99
+ }
100
+ @layer jokul.components {
101
+ /* Placement: bottom */
102
+ .jkl-modal-container--placement-bottom {
103
+ align-items: flex-end;
104
+ }
105
+ .jkl-modal-container--placement-bottom.jkl-modal-container--slide-in {
106
+ --jkl-modal-slide-x: 0px;
107
+ --jkl-modal-slide-y: 24px;
108
+ }
109
+ .jkl-modal-container--placement-bottom .jkl-modal {
110
+ --margin: 0px;
111
+ width: min(100vw, var(--modal-width, 100vw));
112
+ border-bottom-left-radius: 0;
113
+ border-bottom-right-radius: 0;
114
+ }
115
+ /* Placement: left */
116
+ .jkl-modal-container--placement-left {
117
+ justify-content: flex-start;
118
+ }
119
+ .jkl-modal-container--placement-left.jkl-modal-container--slide-in {
120
+ --jkl-modal-slide-x: -24px;
121
+ --jkl-modal-slide-y: 0px;
122
+ }
123
+ .jkl-modal-container--placement-left .jkl-modal {
124
+ height: 100%;
125
+ max-height: 100%;
126
+ margin-block: 0;
127
+ margin-inline-start: 0;
128
+ border-top-left-radius: 0;
129
+ border-bottom-left-radius: 0;
130
+ }
131
+ /* Placement: right */
132
+ .jkl-modal-container--placement-right {
133
+ justify-content: flex-end;
134
+ }
135
+ .jkl-modal-container--placement-right.jkl-modal-container--slide-in {
136
+ --jkl-modal-slide-x: 24px;
137
+ --jkl-modal-slide-y: 0px;
138
+ }
139
+ .jkl-modal-container--placement-right .jkl-modal {
140
+ height: 100%;
141
+ max-height: 100%;
142
+ margin-block: 0;
143
+ margin-inline-end: 0;
144
+ border-top-right-radius: 0;
145
+ border-bottom-right-radius: 0;
146
+ }
147
+ }
148
+ @layer jokul.components {
49
149
  .jkl-modal-header {
50
150
  --jkl-modal-header-margin: 0 0 var(--jkl-unit-20);
51
- }
52
- @media (width >= 0) and (max-width: 679px) {
53
- .jkl-modal-header {
54
- --jkl-modal-header-margin: 0 0 var(--jkl-unit-15);
55
- }
56
- }
57
- .jkl-modal-header {
58
151
  display: flex;
59
152
  flex-direction: row;
60
153
  justify-content: space-between;
61
154
  align-items: center;
62
155
  margin: var(--jkl-modal-header-margin);
63
- gap: var(--jkl-modal-gap);
64
156
  }
65
157
  .jkl-modal-body {
66
158
  font: var(--jkl-text-style-paragraph-medium);
@@ -69,20 +161,12 @@
69
161
  font: var(--jkl-text-style-heading-3);
70
162
  }
71
163
  .jkl-modal-actions {
72
- --jkl-modal-actions-margin: var(--jkl-unit-50) 0 0 0;
73
- }
74
- @media (width >= 0) and (max-width: 679px) {
75
- .jkl-modal-actions {
76
- --jkl-modal-actions-margin: var(--jkl-unit-40) 0 0 0;
77
- }
78
- }
79
- .jkl-modal-actions {
80
- margin: var(--jkl-modal-actions-margin);
164
+ margin-block-start: var(--jkl-unit-50);
81
165
  display: flex;
82
166
  flex-direction: column;
83
- gap: var(--jkl-unit-20);
167
+ gap: var(--jkl-unit-15) var(--jkl-unit-20);
84
168
  }
85
- @media (min-width: 60ch) {
169
+ @container (width > 35ch /* ~380px ved vanlig zoom/size */) {
86
170
  .jkl-modal-actions {
87
171
  flex-direction: row-reverse;
88
172
  align-self: flex-end;
@@ -1 +1 @@
1
- @layer jokul.components{.jkl-modal-container,.jkl-modal-overlay{inset:0;position:fixed}.jkl-modal-container{display:flex;z-index:9000}.jkl-modal-container[aria-hidden=true]{display:none}.jkl-modal-overlay{background-color:rgba(27,25,23,.8)}.jkl-modal{--jkl-modal-padding:var(--jkl-unit-50);--jkl-modal-min-width:13.75rem;--jkl-modal-max-width:41.25rem;background-color:var(--jkl-color-background-container-high);border-radius:.125rem;box-shadow:0 .25rem .75rem rgba(37,42,49,.03);display:flex;flex-direction:column;margin:auto;max-height:90vh;max-width:var(--jkl-modal-max-width);min-width:var(--jkl-modal-min-width);overflow:auto;padding:var(--jkl-modal-padding);position:relative;width:100%;z-index:9000}@media screen and (forced-colors:active){.jkl-modal{border-color:CanvasText}}@media (width >= 0) and (max-width:679px){.jkl-modal{margin:auto var(--jkl-unit-30)}}.jkl-modal-header{--jkl-modal-header-margin:0 0 var(--jkl-unit-20)}@media (width >= 0) and (max-width:679px){.jkl-modal-header{--jkl-modal-header-margin:0 0 var(--jkl-unit-15)}}.jkl-modal-header{align-items:center;display:flex;flex-direction:row;gap:var(--jkl-modal-gap);justify-content:space-between;margin:var(--jkl-modal-header-margin)}.jkl-modal-body{font:var(--jkl-text-style-paragraph-medium)}.jkl-modal-title{font:var(--jkl-text-style-heading-3)}.jkl-modal-actions{--jkl-modal-actions-margin:var(--jkl-unit-50) 0 0 0}@media (width >= 0) and (max-width:679px){.jkl-modal-actions{--jkl-modal-actions-margin:var(--jkl-unit-40) 0 0 0}}.jkl-modal-actions{display:flex;flex-direction:column;gap:var(--jkl-unit-20);margin:var(--jkl-modal-actions-margin)}@media (min-width:60ch){.jkl-modal-actions{align-self:flex-end;flex-direction:row-reverse}}}
1
+ @layer jokul.components{.jkl-modal-container,.jkl-modal-overlay{inset:0;position:fixed}.jkl-modal-container{align-items:center;display:flex;justify-content:center;z-index:9000}.jkl-modal-container[aria-hidden=true]{pointer-events:none;visibility:hidden}}@layer jokul.components{.jkl-modal-overlay{background-color:rgba(27,25,23,.8);opacity:0;transition-duration:var(--jkl-motion-timing-expressive);transition-property:opacity;transition-timing-function:var(--jkl-motion-easing-entrance)}.jkl-modal-container:not([aria-hidden=true]) .jkl-modal-overlay{opacity:1}@media (prefers-reduced-motion:reduce){.jkl-modal-overlay{transition-duration:0s}}}@layer jokul.components{.jkl-modal{--margin:var(--jkl-spacing-m);background-color:var(--jkl-color-background-container);border-radius:var(--jkl-border-radius-l);box-shadow:0 .25rem .75rem rgba(37,42,49,.03);box-sizing:border-box;container-type:inline-size;display:flex;flex-direction:column;margin:var(--margin);max-height:90vh;max-width:none;overflow:auto;padding:var(--modal-padding,var(--jkl-unit-40));width:min(100vw - 2 * var(--margin),var(--modal-width,60ch));z-index:9000}@media screen and (forced-colors:active){.jkl-modal{border-color:CanvasText}}}@layer jokul.components{.jkl-modal-container--slide-in{--jkl-modal-slide-x:0px;--jkl-modal-slide-y:12px;transition-duration:var(--jkl-motion-timing-expressive);transition-duration:0s;transition-property:visibility;transition-timing-function:var(--jkl-motion-easing-exit)}.jkl-modal-container--slide-in[aria-hidden=true]{display:flex;pointer-events:none;transition-delay:var(--jkl-motion-timing-expressive);visibility:hidden}.jkl-modal-container--slide-in:not([aria-hidden=true]){transition-delay:0s;visibility:visible}.jkl-modal-container--slide-in .jkl-modal{opacity:0;transform:translate(var(--jkl-modal-slide-x),var(--jkl-modal-slide-y));transition-duration:var(--jkl-motion-timing-expressive);transition-property:transform,opacity;transition-timing-function:var(--jkl-motion-easing-entrance);will-change:transform,opacity}.jkl-modal-container--slide-in:not([aria-hidden=true]) .jkl-modal{opacity:1;transform:translate(0)}@media (prefers-reduced-motion:reduce){.jkl-modal-container--slide-in .jkl-modal{transition-duration:0s}}}@layer jokul.components{.jkl-modal-container--placement-bottom{align-items:flex-end}.jkl-modal-container--placement-bottom.jkl-modal-container--slide-in{--jkl-modal-slide-x:0px;--jkl-modal-slide-y:24px}.jkl-modal-container--placement-bottom .jkl-modal{--margin:0px;border-bottom-left-radius:0;border-bottom-right-radius:0;width:min(100vw,var(--modal-width,100vw))}.jkl-modal-container--placement-left{justify-content:flex-start}.jkl-modal-container--placement-left.jkl-modal-container--slide-in{--jkl-modal-slide-x:-24px;--jkl-modal-slide-y:0px}.jkl-modal-container--placement-left .jkl-modal{height:100%;margin-block:0;max-height:100%;-webkit-margin-start:0;border-bottom-left-radius:0;border-top-left-radius:0;margin-inline-start:0}.jkl-modal-container--placement-right{justify-content:flex-end}.jkl-modal-container--placement-right.jkl-modal-container--slide-in{--jkl-modal-slide-x:24px;--jkl-modal-slide-y:0px}.jkl-modal-container--placement-right .jkl-modal{height:100%;margin-block:0;max-height:100%;-webkit-margin-end:0;border-bottom-right-radius:0;border-top-right-radius:0;margin-inline-end:0}.jkl-modal-header{--jkl-modal-header-margin:0 0 var(--jkl-unit-20);align-items:center;display:flex;flex-direction:row;justify-content:space-between;margin:var(--jkl-modal-header-margin)}.jkl-modal-body{font:var(--jkl-text-style-paragraph-medium)}.jkl-modal-title{font:var(--jkl-text-style-heading-3)}.jkl-modal-actions{-webkit-margin-before:var(--jkl-unit-50);display:flex;flex-direction:column;gap:var(--jkl-unit-15) var(--jkl-unit-20);margin-block-start:var(--jkl-unit-50)}}@layer jokul.components{@container (width > 35ch ){.jkl-modal-actions{align-self:flex-end;flex-direction:row-reverse}}}
@@ -1,96 +1,7 @@
1
1
  @charset "UTF-8";
2
- @use "../../jkl";
3
-
4
- @layer jokul.components {
5
- .jkl-modal-container,
6
- .jkl-modal-overlay {
7
- position: fixed;
8
- inset: 0;
9
- }
10
-
11
- .jkl-modal-container {
12
- z-index: jkl.$z-index--modal;
13
- display: flex;
14
-
15
- &[aria-hidden="true"] {
16
- display: none;
17
- }
18
- }
19
-
20
- .jkl-modal-overlay {
21
- background-color: rgb(27 25 23 / 80%);
22
- }
23
-
24
- .jkl-modal {
25
- --jkl-modal-padding: var(--jkl-unit-50);
26
- --jkl-modal-min-width: #{jkl.rem(220px)};
27
- --jkl-modal-max-width: #{jkl.rem(660px)};
28
-
29
- margin: auto;
30
- z-index: jkl.$z-index--modal;
31
- position: relative;
32
-
33
- background-color: var(--jkl-color-background-container-high);
34
- border-radius: jkl.rem(2px);
35
- box-shadow: jkl.$shadow-task-card;
36
-
37
- width: 100%;
38
- min-width: var(--jkl-modal-min-width);
39
- max-width: var(--jkl-modal-max-width);
40
- max-height: 90vh;
41
- overflow: auto;
42
-
43
- padding: var(--jkl-modal-padding);
44
- display: flex;
45
- flex-direction: column;
46
-
47
- @include jkl.forced-colors-mode {
48
- border-color: CanvasText;
49
- }
50
-
51
- @include jkl.small-device {
52
- margin: auto var(--jkl-unit-30);
53
- }
54
- }
55
-
56
- .jkl-modal-header {
57
- --jkl-modal-header-margin: 0 0 var(--jkl-unit-20);
58
-
59
- @include jkl.small-device {
60
- --jkl-modal-header-margin: 0 0 var(--jkl-unit-15);
61
- }
62
-
63
- display: flex;
64
- flex-direction: row;
65
- justify-content: space-between;
66
- align-items: center;
67
- margin: var(--jkl-modal-header-margin);
68
- gap: var(--jkl-modal-gap);
69
- }
70
-
71
- .jkl-modal-body {
72
- @include jkl.text-style("paragraph-medium");
73
- }
74
-
75
- .jkl-modal-title {
76
- @include jkl.text-style("heading-3");
77
- }
78
-
79
- .jkl-modal-actions {
80
- --jkl-modal-actions-margin: var(--jkl-unit-50) 0 0 0;
81
-
82
- @include jkl.small-device {
83
- --jkl-modal-actions-margin: var(--jkl-unit-40) 0 0 0;
84
- }
85
-
86
- margin: var(--jkl-modal-actions-margin);
87
- display: flex;
88
- flex-direction: column;
89
- gap: var(--jkl-unit-20);
90
-
91
- @include jkl.screen-from(60ch) {
92
- flex-direction: row-reverse;
93
- align-self: flex-end;
94
- }
95
- }
96
- }
2
+ @forward "layout";
3
+ @forward "overlay";
4
+ @forward "modal-base";
5
+ @forward "motion";
6
+ @forward "placement";
7
+ @forward "parts";
@@ -35,7 +35,7 @@
35
35
  color: var(--jkl-color-text-subdued);
36
36
  }
37
37
  .jkl-nav-link:focus-visible {
38
- outline: 3px solid var(--jkl-color-border-action);
38
+ outline: 3px solid var(--jkl-color-border-strong);
39
39
  outline-offset: 0;
40
40
  }
41
41
  .jkl-nav-link:focus-visible .jkl-nav-link__icon, .jkl-nav-link:hover:not(:focus) .jkl-nav-link__icon {
@@ -1 +1 @@
1
- @layer jokul.components{.jkl-nav-link{border-style:none;box-sizing:border-box;color:var(--jkl-color-text-default);font-weight:var(--jkl-font-weight-normal);margin-right:-.15rem;outline:0;outline-style:none;padding-right:.15rem;position:relative;text-decoration:none}.jkl-nav-link:active,.jkl-nav-link:focus,.jkl-nav-link:hover{outline:0;outline-style:none}@media screen and (forced-colors:active){.jkl-nav-link{border-style:revert;outline:revert;outline-style:revert}.jkl-nav-link:active,.jkl-nav-link:focus,.jkl-nav-link:hover{outline:revert;outline-style:revert}}.jkl-nav-link:hover:not(:focus){color:var(--jkl-color-text-subdued)}.jkl-nav-link:focus-visible{outline:3px solid var(--jkl-color-border-action);outline-offset:0}.jkl-nav-link:focus-visible .jkl-nav-link__icon,.jkl-nav-link:hover:not(:focus) .jkl-nav-link__icon{transform:translateX(.3rem)}.jkl-nav-link__icon{-webkit-margin-start:.1em;margin-inline-start:.1em;-webkit-margin-before:-.1em;margin-block-start:-.1em;transition-duration:var(--jkl-motion-timing-productive);transition-property:transform;transition-timing-function:var(--jkl-motion-easing-standard);vertical-align:middle}.jkl-nav-link--active{--jkl-icon-weight:400;font-weight:var(--jkl-font-weight-bold);letter-spacing:-.014em}.jkl-nav-link--back{margin-left:-.15rem;margin-right:0;padding-left:.15rem;padding-right:0}.jkl-nav-link--back .jkl-nav-link__icon{margin-inline:0 .1em}.jkl-nav-link--back:focus-visible .jkl-nav-link__icon,.jkl-nav-link--back:hover:not(:focus) .jkl-nav-link__icon{padding-left:0;transform:translateX(-.3rem)}}
1
+ @layer jokul.components{.jkl-nav-link{border-style:none;box-sizing:border-box;color:var(--jkl-color-text-default);font-weight:var(--jkl-font-weight-normal);margin-right:-.15rem;outline:0;outline-style:none;padding-right:.15rem;position:relative;text-decoration:none}.jkl-nav-link:active,.jkl-nav-link:focus,.jkl-nav-link:hover{outline:0;outline-style:none}@media screen and (forced-colors:active){.jkl-nav-link{border-style:revert;outline:revert;outline-style:revert}.jkl-nav-link:active,.jkl-nav-link:focus,.jkl-nav-link:hover{outline:revert;outline-style:revert}}.jkl-nav-link:hover:not(:focus){color:var(--jkl-color-text-subdued)}.jkl-nav-link:focus-visible{outline:3px solid var(--jkl-color-border-strong);outline-offset:0}.jkl-nav-link:focus-visible .jkl-nav-link__icon,.jkl-nav-link:hover:not(:focus) .jkl-nav-link__icon{transform:translateX(.3rem)}.jkl-nav-link__icon{-webkit-margin-start:.1em;margin-inline-start:.1em;-webkit-margin-before:-.1em;margin-block-start:-.1em;transition-duration:var(--jkl-motion-timing-productive);transition-property:transform;transition-timing-function:var(--jkl-motion-easing-standard);vertical-align:middle}.jkl-nav-link--active{--jkl-icon-weight:400;font-weight:var(--jkl-font-weight-bold);letter-spacing:-.014em}.jkl-nav-link--back{margin-left:-.15rem;margin-right:0;padding-left:.15rem;padding-right:0}.jkl-nav-link--back .jkl-nav-link__icon{margin-inline:0 .1em}.jkl-nav-link--back:focus-visible .jkl-nav-link__icon,.jkl-nav-link--back:hover:not(:focus) .jkl-nav-link__icon{padding-left:0;transform:translateX(-.3rem)}}
@@ -31,7 +31,7 @@
31
31
  color: var(--jkl-color-text-interactive-hover);
32
32
  }
33
33
  .jkl-pagination-button:focus-visible {
34
- outline: 3px solid var(--jkl-color-border-action);
34
+ outline: 3px solid var(--jkl-color-border-strong);
35
35
  outline-offset: 3px;
36
36
  }
37
37
  .jkl-pagination-button--current {
@@ -1 +1 @@
1
- @layer jokul.components{.jkl-pagination{display:flex}.jkl-pagination__pages{align-items:center;display:flex;flex-wrap:nowrap;list-style:none;margin:0;padding:0}.jkl-pagination-button{--button-size:var(--jkl-unit-40);all:unset;align-items:center;border-radius:.1875rem;color:var(--jkl-color-text-interactive);cursor:pointer;display:flex;height:var(--button-size);justify-content:center;min-width:var(--button-size);text-align:center;-webkit-user-select:none;user-select:none}.jkl-pagination-button:hover:not(:focus){color:var(--jkl-color-text-interactive-hover)}.jkl-pagination-button:focus-visible{outline:3px solid var(--jkl-color-border-action);outline-offset:3px}.jkl-pagination-button--current{--jkl-icon-weight:400;font-weight:var(--jkl-font-weight-bold);letter-spacing:-.014em}.jkl-pagination-button--elipsis{display:block;height:var(--button-size);text-align:center;-webkit-user-select:none;user-select:none;width:var(--button-size)}}
1
+ @layer jokul.components{.jkl-pagination{display:flex}.jkl-pagination__pages{align-items:center;display:flex;flex-wrap:nowrap;list-style:none;margin:0;padding:0}.jkl-pagination-button{--button-size:var(--jkl-unit-40);all:unset;align-items:center;border-radius:.1875rem;color:var(--jkl-color-text-interactive);cursor:pointer;display:flex;height:var(--button-size);justify-content:center;min-width:var(--button-size);text-align:center;-webkit-user-select:none;user-select:none}.jkl-pagination-button:hover:not(:focus){color:var(--jkl-color-text-interactive-hover)}.jkl-pagination-button:focus-visible{outline:3px solid var(--jkl-color-border-strong);outline-offset:3px}.jkl-pagination-button--current{--jkl-icon-weight:400;font-weight:var(--jkl-font-weight-bold);letter-spacing:-.014em}.jkl-pagination-button--elipsis{display:block;height:var(--button-size);text-align:center;-webkit-user-select:none;user-select:none;width:var(--button-size)}}
@@ -10,7 +10,18 @@
10
10
  padding: var(--popover-padding, 0);
11
11
  z-index: 10000;
12
12
  box-shadow: 0 4px 20px 0 var(--shadow-color);
13
- background-color: var(--jkl-color-background-container-high);
13
+ background-color: var(--jkl-color-background-container);
14
14
  border-radius: var(--jkl-border-radius-s);
15
15
  }
16
+ .jkl-popover:focus-visible {
17
+ outline: 3px solid var(--jkl-color-border-strong);
18
+ outline-offset: 3px;
19
+ }
20
+ .jkl-popover-trigger:focus {
21
+ outline: 0;
22
+ }
23
+ .jkl-popover-trigger:focus-visible {
24
+ outline: 3px solid var(--jkl-color-border-strong);
25
+ outline-offset: 3px;
26
+ }
16
27
  }
@@ -1 +1 @@
1
- @layer jokul.components{.jkl-popover{--shadow-color:rgba(49,48,48,.2);--shadow-color:light-dark(rgba(49,48,48,.2),rgba(0,0,0,.5));background-color:var(--jkl-color-background-container-high);border-radius:var(--jkl-border-radius-s);box-shadow:0 4px 20px 0 var(--shadow-color);padding:var(--popover-padding,0);z-index:10000}}
1
+ @layer jokul.components{.jkl-popover{--shadow-color:rgba(49,48,48,.2);--shadow-color:light-dark(rgba(49,48,48,.2),rgba(0,0,0,.5));background-color:var(--jkl-color-background-container);border-radius:var(--jkl-border-radius-s);box-shadow:0 4px 20px 0 var(--shadow-color);padding:var(--popover-padding,0);z-index:10000}.jkl-popover:focus-visible{outline:3px solid var(--jkl-color-border-strong);outline-offset:3px}.jkl-popover-trigger:focus{outline:0}.jkl-popover-trigger:focus-visible{outline:3px solid var(--jkl-color-border-strong);outline-offset:3px}}
@@ -10,7 +10,21 @@
10
10
  padding: var(--popover-padding, 0);
11
11
  z-index: jkl.$z-index--floating;
12
12
  box-shadow: 0 4px 20px 0 var(--shadow-color);
13
- background-color: var(--jkl-color-background-container-high);
13
+ background-color: var(--jkl-color-background-container);
14
14
  border-radius: var(--jkl-border-radius-s);
15
+
16
+ &:focus-visible {
17
+ @include jkl.focus-outline;
18
+ }
19
+ }
20
+
21
+ .jkl-popover-trigger {
22
+ &:focus {
23
+ outline: 0;
24
+ }
25
+
26
+ &:focus-visible {
27
+ @include jkl.focus-outline;
28
+ }
15
29
  }
16
30
  }
@@ -3,8 +3,8 @@
3
3
  */
4
4
  @layer jokul.components {
5
5
  .jkl-progress-bar {
6
- --track-color: var(--jkl-color-border-separator);
7
- --bar-color: var(--jkl-color-border-input-focus);
6
+ --track-color: var(--jkl-color-border-subdued);
7
+ --bar-color: var(--jkl-color-border-strong);
8
8
  --bar-height: 0.25rem;
9
9
  background-color: var(--track-color);
10
10
  border-radius: 6.25rem;
@@ -25,12 +25,36 @@
25
25
  background-color: CanvasText;
26
26
  }
27
27
  }
28
+ .jkl-progress-bar {
29
+ outline: 0;
30
+ border-style: none;
31
+ outline-style: none;
32
+ }
33
+ .jkl-progress-bar:active, .jkl-progress-bar:hover, .jkl-progress-bar:focus {
34
+ outline: 0;
35
+ outline-style: none;
36
+ }
37
+ @media screen and (forced-colors: active) {
38
+ .jkl-progress-bar {
39
+ outline: revert;
40
+ border-style: revert;
41
+ outline-style: revert;
42
+ }
43
+ .jkl-progress-bar:active, .jkl-progress-bar:hover, .jkl-progress-bar:focus {
44
+ outline: revert;
45
+ outline-style: revert;
46
+ }
47
+ }
48
+ .jkl-progress-bar:focus-visible {
49
+ outline: 3px solid var(--jkl-color-border-strong);
50
+ outline-offset: 3px;
51
+ }
28
52
  .jkl-progress-bar__tracker {
29
53
  transition-property: width;
30
54
  transition-timing-function: var(--jkl-motion-easing-standard);
31
55
  transition-duration: var(--jkl-motion-timing-productive);
32
56
  }
33
- @keyframes jkl-downcount-u9avzon {
57
+ @keyframes jkl-downcount-upzg6xb {
34
58
  from {
35
59
  width: 100%;
36
60
  }
@@ -1 +1 @@
1
- @layer jokul.components{.jkl-progress-bar{--track-color:var(--jkl-color-border-separator);--bar-color:var(--jkl-color-border-input-focus);--bar-height:0.25rem;background-color:var(--track-color);border-radius:6.25rem;height:var(--bar-height);overflow:hidden;width:100%}.jkl-progress-bar__tracker{background-color:var(--bar-color);display:block;height:var(--bar-height)}@media screen and (forced-colors:active){.jkl-progress-bar{background-color:Canvas}.jkl-progress-bar__tracker{background-color:CanvasText}}.jkl-progress-bar__tracker{transition-duration:var(--jkl-motion-timing-productive);transition-property:width;transition-timing-function:var(--jkl-motion-easing-standard)}@keyframes jkl-downcount-u9avzon{0%{width:100%}to{width:0}}}
1
+ @layer jokul.components{.jkl-progress-bar{--track-color:var(--jkl-color-border-subdued);--bar-color:var(--jkl-color-border-strong);--bar-height:0.25rem;background-color:var(--track-color);border-radius:6.25rem;height:var(--bar-height);overflow:hidden;width:100%}.jkl-progress-bar__tracker{background-color:var(--bar-color);display:block;height:var(--bar-height)}@media screen and (forced-colors:active){.jkl-progress-bar{background-color:Canvas}.jkl-progress-bar__tracker{background-color:CanvasText}}.jkl-progress-bar{border-style:none;outline:0;outline-style:none}.jkl-progress-bar:active,.jkl-progress-bar:focus,.jkl-progress-bar:hover{outline:0;outline-style:none}@media screen and (forced-colors:active){.jkl-progress-bar{border-style:revert;outline:revert;outline-style:revert}.jkl-progress-bar:active,.jkl-progress-bar:focus,.jkl-progress-bar:hover{outline:revert;outline-style:revert}}.jkl-progress-bar:focus-visible{outline:3px solid var(--jkl-color-border-strong);outline-offset:3px}.jkl-progress-bar__tracker{transition-duration:var(--jkl-motion-timing-productive);transition-property:width;transition-timing-function:var(--jkl-motion-easing-standard)}@keyframes jkl-downcount-upzg6xb{0%{width:100%}to{width:0}}}
@@ -7,6 +7,11 @@ $_downcount: jkl-downcount-#{string.unique-id()};
7
7
  @layer jokul.components {
8
8
  .jkl-progress-bar {
9
9
  @include track.track;
10
+ @include jkl.reset-outline;
11
+
12
+ &:focus-visible {
13
+ @include jkl.focus-outline;
14
+ }
10
15
 
11
16
  &__tracker {
12
17
  transition-property: width;
@@ -32,10 +32,37 @@
32
32
  }
33
33
  .jkl-radio-button__input {
34
34
  position: absolute;
35
- opacity: 0;
36
- pointer-events: none;
37
- inset: 0 auto 0 0;
38
- width: 1lh;
35
+ inset-block-start: 0;
36
+ inset-inline-start: 0;
37
+ block-size: 1lh;
38
+ inline-size: 1lh;
39
+ margin: 0;
40
+ padding: 0;
41
+ cursor: pointer;
42
+ z-index: 1;
43
+ appearance: none;
44
+ background: transparent;
45
+ border: 0;
46
+ }
47
+ .jkl-radio-button__input {
48
+ outline: 0;
49
+ border-style: none;
50
+ outline-style: none;
51
+ }
52
+ .jkl-radio-button__input:active, .jkl-radio-button__input:hover, .jkl-radio-button__input:focus {
53
+ outline: 0;
54
+ outline-style: none;
55
+ }
56
+ @media screen and (forced-colors: active) {
57
+ .jkl-radio-button__input {
58
+ outline: revert;
59
+ border-style: revert;
60
+ outline-style: revert;
61
+ }
62
+ .jkl-radio-button__input:active, .jkl-radio-button__input:hover, .jkl-radio-button__input:focus {
63
+ outline: revert;
64
+ outline-style: revert;
65
+ }
39
66
  }
40
67
  .jkl-radio-button__label {
41
68
  cursor: pointer;
@@ -61,10 +88,18 @@
61
88
  transition-duration: var(--jkl-motion-timing-energetic);
62
89
  transition-property: font-variation-settings, transform;
63
90
  }
64
- .jkl-radio-button__label:has(+ :checked)::before {
91
+ .jkl-radio-button__input:focus-visible + .jkl-radio-button__label::before {
92
+ border-radius: var(--jkl-border-radius-full);
93
+ outline: 3px solid var(--jkl-color-border-strong);
94
+ outline-offset: 3px;
95
+ }
96
+ .jkl-radio-button__input:is(:hover, :active) + .jkl-radio-button__label, .jkl-radio-button__label:hover, .jkl-radio-button__label:active {
97
+ --jkl-icon-weight: var(--jkl-font-weight-bold);
98
+ }
99
+ .jkl-radio-button__input:checked + .jkl-radio-button__label::before {
65
100
  content: "radio_button_checked";
66
101
  }
67
- .jkl-radio-button__label:has(+ [aria-invalid=true])::before {
102
+ .jkl-radio-button__input[aria-invalid=true] + .jkl-radio-button__label::before {
68
103
  color: var(--jkl-radio-button-error-color);
69
104
  }
70
105
  .jkl-radio-button + .jkl-radio-button, .jkl-dormant-form-support-label + .jkl-radio-button, .jkl-form-support-label + .jkl-radio-button {
@@ -1 +1 @@
1
- @layer jokul.components{.jkl-radio-button{--jkl-radio-button-error-color:#ab2e43;--jkl-radio-button-error-color:light-dark(#ab2e43,#d79ba5);border-style:none;display:flex;outline:0;outline-style:none;position:relative}.jkl-radio-button:active,.jkl-radio-button:focus,.jkl-radio-button:hover{outline:0;outline-style:none}@media screen and (forced-colors:active){.jkl-radio-button{border-style:revert;outline:revert;outline-style:revert}.jkl-radio-button:active,.jkl-radio-button:focus,.jkl-radio-button:hover{outline:revert;outline-style:revert}}.jkl-radio-button__input{inset:0 auto 0 0;opacity:0;pointer-events:none;position:absolute;width:1lh}.jkl-radio-button__label{cursor:pointer;display:flex;font:var(--jkl-text-style-text-medium);transition-duration:var(--jkl-motion-timing-productive);transition-property:color;transition-timing-function:var(--jkl-motion-easing-standard)}.jkl-radio-button__label:before{content:"radio_button_unchecked";-webkit-margin-end:.25em;display:inline-block;font-family:Fremtind Material Symbols,Fremtind Material Symbols Fallback,sans-serif;font-feature-settings:"liga";-webkit-font-feature-settings:"liga";font-size:1.3em;font-variation-settings:"FILL" var(--jkl-icon-fill,0);font-weight:400;line-height:1;margin-inline-end:.25em;-webkit-font-smoothing:antialiased;transition-duration:var(--jkl-motion-timing-energetic);transition-property:font-variation-settings,transform;transition-timing-function:var(--jkl-motion-easing-standard)}.jkl-radio-button__label:has(+:checked):before{content:"radio_button_checked"}.jkl-radio-button__label:has(+[aria-invalid=true]):before{color:var(--jkl-radio-button-error-color)}.jkl-dormant-form-support-label+.jkl-radio-button,.jkl-form-support-label+.jkl-radio-button,.jkl-radio-button+.jkl-radio-button{margin-top:.75lh}.jkl-radio-button--inline{display:inline-flex;margin-right:var(--jkl-unit-30)}.jkl-dormant-form-support-label+.jkl-radio-button--inline,.jkl-form-support-label+.jkl-radio-button--inline,.jkl-radio-button--inline+.jkl-radio-button--inline{margin-top:0}.jkl-radio-button+.jkl-form-support-label{margin-bottom:var(--jkl-unit-10);margin-left:1.75em;margin-top:.25lh}}
1
+ @layer jokul.components{.jkl-radio-button{--jkl-radio-button-error-color:#ab2e43;--jkl-radio-button-error-color:light-dark(#ab2e43,#d79ba5);border-style:none;display:flex;outline:0;outline-style:none;position:relative}.jkl-radio-button:active,.jkl-radio-button:focus,.jkl-radio-button:hover{outline:0;outline-style:none}@media screen and (forced-colors:active){.jkl-radio-button{border-style:revert;outline:revert;outline-style:revert}.jkl-radio-button:active,.jkl-radio-button:focus,.jkl-radio-button:hover{outline:revert;outline-style:revert}}.jkl-radio-button__input{-webkit-appearance:none;appearance:none;background:transparent;block-size:1lh;border:0;border-style:none;cursor:pointer;inline-size:1lh;inset-block-start:0;inset-inline-start:0;margin:0;outline:0;outline-style:none;padding:0;position:absolute;z-index:1}.jkl-radio-button__input:active,.jkl-radio-button__input:focus,.jkl-radio-button__input:hover{outline:0;outline-style:none}@media screen and (forced-colors:active){.jkl-radio-button__input{border-style:revert;outline:revert;outline-style:revert}.jkl-radio-button__input:active,.jkl-radio-button__input:focus,.jkl-radio-button__input:hover{outline:revert;outline-style:revert}}.jkl-radio-button__label{cursor:pointer;display:flex;font:var(--jkl-text-style-text-medium);transition-duration:var(--jkl-motion-timing-productive);transition-property:color;transition-timing-function:var(--jkl-motion-easing-standard)}.jkl-radio-button__label:before{content:"radio_button_unchecked";-webkit-margin-end:.25em;display:inline-block;font-family:Fremtind Material Symbols,Fremtind Material Symbols Fallback,sans-serif;font-feature-settings:"liga";-webkit-font-feature-settings:"liga";font-size:1.3em;font-variation-settings:"FILL" var(--jkl-icon-fill,0);font-weight:400;line-height:1;margin-inline-end:.25em;-webkit-font-smoothing:antialiased;transition-duration:var(--jkl-motion-timing-energetic);transition-property:font-variation-settings,transform;transition-timing-function:var(--jkl-motion-easing-standard)}.jkl-radio-button__input:focus-visible+.jkl-radio-button__label:before{border-radius:var(--jkl-border-radius-full);outline:3px solid var(--jkl-color-border-strong);outline-offset:3px}.jkl-radio-button__input:is(:hover,:active)+.jkl-radio-button__label,.jkl-radio-button__label:active,.jkl-radio-button__label:hover{--jkl-icon-weight:var(--jkl-font-weight-bold)}.jkl-radio-button__input:checked+.jkl-radio-button__label:before{content:"radio_button_checked"}.jkl-radio-button__input[aria-invalid=true]+.jkl-radio-button__label:before{color:var(--jkl-radio-button-error-color)}.jkl-dormant-form-support-label+.jkl-radio-button,.jkl-form-support-label+.jkl-radio-button,.jkl-radio-button+.jkl-radio-button{margin-top:.75lh}.jkl-radio-button--inline{display:inline-flex;margin-right:var(--jkl-unit-30)}.jkl-dormant-form-support-label+.jkl-radio-button--inline,.jkl-form-support-label+.jkl-radio-button--inline,.jkl-radio-button--inline+.jkl-radio-button--inline{margin-top:0}.jkl-radio-button+.jkl-form-support-label{margin-bottom:var(--jkl-unit-10);margin-left:1.75em;margin-top:.25lh}}
@@ -15,14 +15,21 @@
15
15
  @include jkl.reset-outline;
16
16
 
17
17
  &__input {
18
- // Hide native radio button
18
+ // Keep the real input on top of the icon so automation tools can target it.
19
19
  position: absolute;
20
- opacity: 0;
21
- pointer-events: none;
22
- // Make sure that when the browser scrolls here because of focus, the control
23
- // is positioned below the label so that the label becomes visible.
24
- inset: 0 auto 0 0;
25
- width: 1lh;
20
+ inset-block-start: 0;
21
+ inset-inline-start: 0;
22
+ block-size: 1lh;
23
+ inline-size: 1lh;
24
+ margin: 0;
25
+ padding: 0;
26
+ cursor: pointer;
27
+ z-index: 1;
28
+ appearance: none;
29
+ background: transparent;
30
+ border: 0;
31
+
32
+ @include jkl.reset-outline;
26
33
  }
27
34
 
28
35
  &__label {
@@ -40,20 +47,32 @@
40
47
 
41
48
  @include icon.base-styles;
42
49
  }
50
+ }
43
51
 
44
- &:has(+ :checked)::before {
45
- content: "radio_button_checked";
46
- }
52
+ &__input:focus-visible + &__label::before {
53
+ border-radius: var(--jkl-border-radius-full);
47
54
 
48
- &:has(+ [aria-invalid="true"])::before {
49
- color: var(--jkl-radio-button-error-color);
50
- }
55
+ @include jkl.focus-outline;
56
+ }
57
+
58
+ &__input:is(:hover, :active) + &__label,
59
+ &__label:hover,
60
+ &__label:active {
61
+ --jkl-icon-weight: #{jkl.$font-weight-bold};
62
+ }
63
+
64
+ &__input:checked + &__label::before {
65
+ content: "radio_button_checked";
66
+ }
67
+
68
+ &__input[aria-invalid="true"] + &__label::before {
69
+ color: var(--jkl-radio-button-error-color);
51
70
  }
52
71
 
53
72
  & + &,
54
73
  /* Ta høyde for at det rendres support label etter radio button inntil videre */
55
- .jkl-dormant-form-support-label + &,
56
- .jkl-form-support-label + & {
74
+ .jkl-dormant-form-support-label + &,
75
+ .jkl-form-support-label + & {
57
76
  margin-top: 0.75lh;
58
77
  }
59
78
 
@@ -75,4 +94,4 @@
75
94
  margin-bottom: jkl.$unit-10;
76
95
  }
77
96
  }
78
- }
97
+ }