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

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 (350) hide show
  1. package/README.md +41 -22
  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/index.d.cts +1 -1
  8. package/build/cjs/components/card/types.cjs +1 -1
  9. package/build/cjs/components/card/types.cjs.map +1 -1
  10. package/build/cjs/components/card/types.d.cts +3 -6
  11. package/build/cjs/components/checkbox/Checkbox.cjs +1 -1
  12. package/build/cjs/components/checkbox/Checkbox.cjs.map +1 -1
  13. package/build/cjs/components/cookie-consent/CookieConsent.cjs +1 -1
  14. package/build/cjs/components/cookie-consent/CookieConsent.cjs.map +1 -1
  15. package/build/cjs/components/cookie-consent/CookieConsent.d.cts +1 -1
  16. package/build/cjs/components/cookie-consent/types.d.cts +4 -0
  17. package/build/cjs/components/datepicker/DatePicker.cjs +1 -1
  18. package/build/cjs/components/datepicker/DatePicker.cjs.map +1 -1
  19. package/build/cjs/components/expander/ExpandablePanel.cjs +1 -1
  20. package/build/cjs/components/expander/ExpandablePanel.cjs.map +1 -1
  21. package/build/cjs/components/link/Link.cjs +1 -1
  22. package/build/cjs/components/link/Link.cjs.map +1 -1
  23. package/build/cjs/components/link/Link.d.cts +2 -2
  24. package/build/cjs/components/link/types.d.cts +1 -4
  25. package/build/cjs/components/modal/Modal.cjs +1 -1
  26. package/build/cjs/components/modal/Modal.cjs.map +1 -1
  27. package/build/cjs/components/modal/Modal.d.cts +2 -9
  28. package/build/cjs/components/modal/index.d.cts +1 -1
  29. package/build/cjs/components/modal/types.d.cts +18 -0
  30. package/build/cjs/components/popover/Popover.cjs +1 -1
  31. package/build/cjs/components/popover/Popover.cjs.map +1 -1
  32. package/build/cjs/components/radio-button/BaseRadioButton.cjs +1 -1
  33. package/build/cjs/components/radio-button/BaseRadioButton.cjs.map +1 -1
  34. package/build/cjs/components/text-area/BaseTextArea.cjs +1 -1
  35. package/build/cjs/components/text-area/BaseTextArea.cjs.map +1 -1
  36. package/build/cjs/components/text-area/counter.cjs +2 -0
  37. package/build/cjs/components/text-area/counter.cjs.map +1 -0
  38. package/build/cjs/components/text-area/counter.d.cts +2 -0
  39. package/build/cjs/components/text-area/types.d.cts +21 -1
  40. package/build/cjs/components/typography/Text.cjs +2 -0
  41. package/build/cjs/components/typography/Text.cjs.map +1 -0
  42. package/build/cjs/components/typography/Text.d.cts +5 -0
  43. package/build/cjs/components/typography/Title.cjs +2 -0
  44. package/build/cjs/components/typography/Title.cjs.map +1 -0
  45. package/build/cjs/components/typography/Title.d.cts +5 -0
  46. package/build/cjs/components/typography/index.cjs +2 -0
  47. package/build/cjs/components/typography/index.cjs.map +1 -0
  48. package/build/cjs/components/typography/index.d.cts +3 -0
  49. package/build/cjs/components/typography/types.cjs +2 -0
  50. package/build/cjs/components/typography/types.cjs.map +1 -0
  51. package/build/cjs/components/typography/types.d.cts +48 -0
  52. package/build/cjs/tokens.cjs +1 -1
  53. package/build/cjs/tokens.cjs.map +1 -1
  54. package/build/cjs/tokens.d.cts +90 -38
  55. package/build/es/components/card/Card.js +1 -1
  56. package/build/es/components/card/Card.js.map +1 -1
  57. package/build/es/components/card/index.d.ts +1 -1
  58. package/build/es/components/card/types.d.ts +3 -6
  59. package/build/es/components/card/types.js +1 -1
  60. package/build/es/components/card/types.js.map +1 -1
  61. package/build/es/components/checkbox/Checkbox.js +1 -1
  62. package/build/es/components/checkbox/Checkbox.js.map +1 -1
  63. package/build/es/components/cookie-consent/CookieConsent.d.ts +1 -1
  64. package/build/es/components/cookie-consent/CookieConsent.js +1 -1
  65. package/build/es/components/cookie-consent/CookieConsent.js.map +1 -1
  66. package/build/es/components/cookie-consent/types.d.ts +4 -0
  67. package/build/es/components/datepicker/DatePicker.js +1 -1
  68. package/build/es/components/datepicker/DatePicker.js.map +1 -1
  69. package/build/es/components/expander/ExpandablePanel.js +1 -1
  70. package/build/es/components/expander/ExpandablePanel.js.map +1 -1
  71. package/build/es/components/link/Link.d.ts +2 -2
  72. package/build/es/components/link/Link.js +1 -1
  73. package/build/es/components/link/Link.js.map +1 -1
  74. package/build/es/components/link/types.d.ts +1 -4
  75. package/build/es/components/modal/Modal.d.ts +2 -9
  76. package/build/es/components/modal/Modal.js +1 -1
  77. package/build/es/components/modal/Modal.js.map +1 -1
  78. package/build/es/components/modal/index.d.ts +1 -1
  79. package/build/es/components/modal/types.d.ts +18 -0
  80. package/build/es/components/popover/Popover.js +1 -1
  81. package/build/es/components/popover/Popover.js.map +1 -1
  82. package/build/es/components/radio-button/BaseRadioButton.js +1 -1
  83. package/build/es/components/radio-button/BaseRadioButton.js.map +1 -1
  84. package/build/es/components/text-area/BaseTextArea.js +1 -1
  85. package/build/es/components/text-area/BaseTextArea.js.map +1 -1
  86. package/build/es/components/text-area/counter.d.ts +2 -0
  87. package/build/es/components/text-area/counter.js +2 -0
  88. package/build/es/components/text-area/counter.js.map +1 -0
  89. package/build/es/components/text-area/types.d.ts +21 -1
  90. package/build/es/components/typography/Text.d.ts +5 -0
  91. package/build/es/components/typography/Text.js +2 -0
  92. package/build/es/components/typography/Text.js.map +1 -0
  93. package/build/es/components/typography/Title.d.ts +5 -0
  94. package/build/es/components/typography/Title.js +2 -0
  95. package/build/es/components/typography/Title.js.map +1 -0
  96. package/build/es/components/typography/index.d.ts +3 -0
  97. package/build/es/components/typography/index.js +2 -0
  98. package/build/es/components/typography/index.js.map +1 -0
  99. package/build/es/components/typography/types.d.ts +48 -0
  100. package/build/es/components/typography/types.js +2 -0
  101. package/build/es/components/typography/types.js.map +1 -0
  102. package/build/es/tokens.d.ts +90 -38
  103. package/build/es/tokens.js +1 -1
  104. package/build/es/tokens.js.map +1 -1
  105. package/codemods/CODEMODS.md +133 -0
  106. package/codemods/__tests__/import-paths.test.mjs +648 -0
  107. package/codemods/import-paths.mjs +198 -0
  108. package/codemods/transforms/color-tokens.mjs +77 -0
  109. package/codemods/transforms/font-family.mjs +23 -0
  110. package/codemods/transforms/import-specifiers.mjs +230 -0
  111. package/codemods/transforms/warnings.mjs +41 -0
  112. package/codemods/utils.mjs +35 -0
  113. package/package.json +7 -1
  114. package/src/fonts/InterVariable-Italic.woff2 +0 -0
  115. package/src/fonts/InterVariable.woff2 +0 -0
  116. package/src/fonts/brands/dnb/DNB-Bold.woff2 +0 -0
  117. package/src/fonts/brands/dnb/DNB-Medium.woff2 +0 -0
  118. package/src/fonts/brands/dnb/DNB-Regular.woff2 +0 -0
  119. package/src/fonts/brands/dnb/DNBMono-Regular.woff2 +0 -0
  120. package/src/fonts/brands/eika/OpenSans-Bold.woff2 +0 -0
  121. package/src/fonts/brands/eika/OpenSans-Light.woff2 +0 -0
  122. package/src/fonts/brands/eika/OpenSans-Regular.woff2 +0 -0
  123. package/src/fonts/brands/eika/OpenSans-SemiBold.woff2 +0 -0
  124. package/src/fonts/brands/fremtind/Fremtind-Material-Symbols.woff2 +0 -0
  125. package/src/fonts/brands/fremtind/InterVariable-Italic.woff2 +0 -0
  126. package/src/fonts/brands/fremtind/InterVariable.woff2 +0 -0
  127. package/src/fonts/brands/sparebank1/SpareBank1-Medium-Web.woff2 +0 -0
  128. package/src/fonts/brands/sparebank1/SpareBank1-Regular-Web.woff2 +0 -0
  129. package/src/fonts/brands/sparebank1/SpareBank1-Title-Medium-Web.woff2 +0 -0
  130. package/styles/base.css +819 -218
  131. package/styles/base.min.css +1 -1
  132. package/styles/components/autosuggest/autosuggest.css +4 -4
  133. package/styles/components/autosuggest/autosuggest.min.css +1 -1
  134. package/styles/components/autosuggest/autosuggest.scss +4 -4
  135. package/styles/components/beta/description-list/description-list.css +1 -1
  136. package/styles/components/beta/description-list/description-list.min.css +1 -1
  137. package/styles/components/beta/description-list/description-list.scss +1 -1
  138. package/styles/components/beta/nav-link/navlink.css +4 -4
  139. package/styles/components/beta/nav-link/navlink.min.css +1 -1
  140. package/styles/components/beta/nav-link/navlink.scss +6 -4
  141. package/styles/components/beta/select/select.css +9 -9
  142. package/styles/components/beta/select/select.min.css +1 -1
  143. package/styles/components/beta/select/select.scss +8 -7
  144. package/styles/components/breadcrumb/breadcrumb.css +1 -1
  145. package/styles/components/breadcrumb/breadcrumb.min.css +1 -1
  146. package/styles/components/button/button.css +8 -4
  147. package/styles/components/button/button.min.css +1 -1
  148. package/styles/components/button/button.scss +14 -14
  149. package/styles/components/card/card.css +6 -11
  150. package/styles/components/card/card.min.css +1 -1
  151. package/styles/components/card/card.scss +5 -12
  152. package/styles/components/checkbox/checkbox.css +43 -15
  153. package/styles/components/checkbox/checkbox.min.css +1 -1
  154. package/styles/components/checkbox/checkbox.scss +35 -24
  155. package/styles/components/checkbox-panel/checkbox-panel.css +65 -32
  156. package/styles/components/checkbox-panel/checkbox-panel.min.css +1 -1
  157. package/styles/components/checkbox-panel/checkbox-panel.scss +4 -0
  158. package/styles/components/checkbox-panel/development/styles.scss +1 -1
  159. package/styles/components/chip/chip.css +6 -6
  160. package/styles/components/chip/chip.min.css +1 -1
  161. package/styles/components/chip/chip.scss +6 -6
  162. package/styles/components/combobox/combobox.css +25 -23
  163. package/styles/components/combobox/combobox.min.css +1 -1
  164. package/styles/components/combobox/combobox.scss +15 -18
  165. package/styles/components/countdown/countdown.css +4 -4
  166. package/styles/components/countdown/countdown.min.css +1 -1
  167. package/styles/components/datepicker/_calendar-date-button.scss +11 -9
  168. package/styles/components/datepicker/_calendar-navigation-dropdown.scss +1 -1
  169. package/styles/components/datepicker/_calendar.scss +6 -7
  170. package/styles/components/datepicker/datepicker.css +20 -12
  171. package/styles/components/datepicker/datepicker.min.css +1 -1
  172. package/styles/components/description-list/description-list.css +1 -1
  173. package/styles/components/description-list/description-list.min.css +1 -1
  174. package/styles/components/description-list/description-list.scss +1 -1
  175. package/styles/components/expander/expandable.css +29 -27
  176. package/styles/components/expander/expandable.min.css +1 -1
  177. package/styles/components/expander/expandable.scss +29 -30
  178. package/styles/components/feedback/_index.scss +1 -1
  179. package/styles/components/feedback/feedback.css +6 -8
  180. package/styles/components/feedback/feedback.min.css +1 -1
  181. package/styles/components/feedback/feedback.scss +4 -9
  182. package/styles/components/file/file.css +5 -5
  183. package/styles/components/file/file.min.css +1 -1
  184. package/styles/components/file/file.scss +5 -5
  185. package/styles/components/file-input/file-input.css +29 -25
  186. package/styles/components/file-input/file-input.min.css +1 -1
  187. package/styles/components/file-input/file-input.scss +3 -3
  188. package/styles/components/help/help.css +2 -2
  189. package/styles/components/help/help.min.css +1 -1
  190. package/styles/components/help/help.scss +4 -4
  191. package/styles/components/icon/_base-styles.scss +12 -14
  192. package/styles/components/icon/icon.css +5 -5
  193. package/styles/components/icon/icon.min.css +1 -1
  194. package/styles/components/icon/icon.scss +73 -73
  195. package/styles/components/icon-button/icon-button.css +2 -2
  196. package/styles/components/icon-button/icon-button.min.css +1 -1
  197. package/styles/components/icon-button/icon-button.scss +1 -1
  198. package/styles/components/input-group/input-group.css +2 -2
  199. package/styles/components/input-group/input-group.min.css +1 -1
  200. package/styles/components/input-panel/input-panel.css +19 -17
  201. package/styles/components/input-panel/input-panel.min.css +1 -1
  202. package/styles/components/input-panel/input-panel.scss +21 -20
  203. package/styles/components/link/link.css +2 -2
  204. package/styles/components/link/link.min.css +1 -1
  205. package/styles/components/link-list/link-list.css +8 -4
  206. package/styles/components/link-list/link-list.min.css +1 -1
  207. package/styles/components/link-list/link-list.scss +7 -3
  208. package/styles/components/list/list.css +37 -21
  209. package/styles/components/list/list.min.css +1 -1
  210. package/styles/components/list/list.scss +27 -23
  211. package/styles/components/loader/loader.css +6 -6
  212. package/styles/components/loader/loader.min.css +1 -1
  213. package/styles/components/loader/skeleton-loader.css +4 -4
  214. package/styles/components/loader/skeleton-loader.min.css +1 -1
  215. package/styles/components/loader/skeleton-loader.scss +1 -1
  216. package/styles/components/menu/_menu-divider.scss +1 -1
  217. package/styles/components/menu/_menu-item.scss +2 -2
  218. package/styles/components/menu/menu.css +5 -5
  219. package/styles/components/menu/menu.min.css +1 -1
  220. package/styles/components/menu/menu.scss +2 -2
  221. package/styles/components/message/message.css +20 -10
  222. package/styles/components/message/message.min.css +1 -1
  223. package/styles/components/message/message.scss +19 -12
  224. package/styles/components/modal/_layout.scss +22 -0
  225. package/styles/components/modal/_modal-base.scss +32 -0
  226. package/styles/components/modal/_motion.scss +45 -0
  227. package/styles/components/modal/_overlay.scss +20 -0
  228. package/styles/components/modal/_parts.scss +33 -0
  229. package/styles/components/modal/_placement.scss +59 -0
  230. package/styles/components/modal/modal.css +118 -34
  231. package/styles/components/modal/modal.min.css +1 -1
  232. package/styles/components/modal/modal.scss +6 -95
  233. package/styles/components/nav-link/nav-link.css +1 -1
  234. package/styles/components/nav-link/nav-link.min.css +1 -1
  235. package/styles/components/pagination/development/styles.scss +1 -1
  236. package/styles/components/pagination/pagination.css +3 -3
  237. package/styles/components/pagination/pagination.min.css +1 -1
  238. package/styles/components/pagination/pagination.scss +2 -2
  239. package/styles/components/popover/popover.css +12 -1
  240. package/styles/components/popover/popover.min.css +1 -1
  241. package/styles/components/popover/popover.scss +15 -1
  242. package/styles/components/progress-bar/progress-bar.css +27 -3
  243. package/styles/components/progress-bar/progress-bar.min.css +1 -1
  244. package/styles/components/progress-bar/progress-bar.scss +5 -0
  245. package/styles/components/radio-button/radio-button.css +43 -8
  246. package/styles/components/radio-button/radio-button.min.css +1 -1
  247. package/styles/components/radio-button/radio-button.scss +35 -16
  248. package/styles/components/radio-panel/development/styles.scss +1 -1
  249. package/styles/components/radio-panel/radio-panel.css +22 -17
  250. package/styles/components/radio-panel/radio-panel.min.css +1 -1
  251. package/styles/components/radio-panel/radio-panel.scss +4 -0
  252. package/styles/components/search/search-with-submit-button.css +1 -1
  253. package/styles/components/search/search-with-submit-button.min.css +1 -1
  254. package/styles/components/search/search-with-submit-button.scss +1 -1
  255. package/styles/components/search/search.css +4 -4
  256. package/styles/components/search/search.min.css +1 -1
  257. package/styles/components/search/search.scss +3 -3
  258. package/styles/components/segmented-control/segmented-control.css +61 -26
  259. package/styles/components/segmented-control/segmented-control.min.css +1 -1
  260. package/styles/components/segmented-control/segmented-control.scss +7 -7
  261. package/styles/components/select/select.css +17 -18
  262. package/styles/components/select/select.min.css +1 -1
  263. package/styles/components/select/select.scss +24 -29
  264. package/styles/components/summary-table/development/summary-table-example.scss +1 -1
  265. package/styles/components/summary-table/summary-table.css +2 -2
  266. package/styles/components/summary-table/summary-table.min.css +1 -1
  267. package/styles/components/summary-table/summary-table.scss +2 -2
  268. package/styles/components/system-message/system-message.css +23 -13
  269. package/styles/components/system-message/system-message.min.css +1 -1
  270. package/styles/components/system-message/system-message.scss +119 -108
  271. package/styles/components/table/_table-head.scss +1 -1
  272. package/styles/components/table/_table-row.scss +5 -3
  273. package/styles/components/table/table.css +6 -4
  274. package/styles/components/table/table.min.css +1 -1
  275. package/styles/components/table-of-contents/table-of-contents.css +2 -2
  276. package/styles/components/table-of-contents/table-of-contents.min.css +1 -1
  277. package/styles/components/table-of-contents/table-of-contents.scss +3 -3
  278. package/styles/components/tabs/tabs.css +5 -5
  279. package/styles/components/tabs/tabs.min.css +1 -1
  280. package/styles/components/tabs/tabs.scss +5 -6
  281. package/styles/components/tag/tag.css +16 -6
  282. package/styles/components/tag/tag.min.css +1 -1
  283. package/styles/components/tag/tag.scss +18 -7
  284. package/styles/components/text-area/text-area.css +12 -12
  285. package/styles/components/text-area/text-area.min.css +1 -1
  286. package/styles/components/text-input/text-input.css +12 -12
  287. package/styles/components/text-input/text-input.min.css +1 -1
  288. package/styles/components/toast/toast.css +20 -13
  289. package/styles/components/toast/toast.min.css +1 -1
  290. package/styles/components/toast/toast.scss +19 -18
  291. package/styles/components/toggle-switch/_toggle-slider.scss +4 -4
  292. package/styles/components/toggle-switch/toggle-switch.css +15 -25
  293. package/styles/components/toggle-switch/toggle-switch.min.css +1 -3
  294. package/styles/components/toggle-switch/toggle-switch.scss +10 -22
  295. package/styles/components/tooltip/tooltip.css +5 -5
  296. package/styles/components/tooltip/tooltip.min.css +1 -1
  297. package/styles/components/tooltip/tooltip.scss +5 -5
  298. package/styles/components/typography/_index.scss +2 -0
  299. package/styles/components/typography/text.css +38 -0
  300. package/styles/components/typography/text.min.css +1 -0
  301. package/styles/components/typography/text.scss +54 -0
  302. package/styles/components/typography/title.css +55 -0
  303. package/styles/components/typography/title.min.css +1 -0
  304. package/styles/components/typography/title.scss +59 -0
  305. package/styles/components.css +729 -395
  306. package/styles/components.min.css +1 -3
  307. package/styles/components.scss +53 -52
  308. package/styles/global/_base-class.scss +2 -2
  309. package/styles/global/_top-layer.scss +1 -1
  310. package/styles/hooks/stories/styles.scss +3 -3
  311. package/styles/jkl/_ornaments.scss +1 -1
  312. package/styles/jkl/_tokens.scss +140 -66
  313. package/styles/jkl/_typography.scss +13 -21
  314. package/styles/shared/input/shared-input-styles.scss +11 -15
  315. package/styles/shared/track/track.scss +2 -2
  316. package/styles/tailwind.css +106 -62
  317. package/styles/theme/_color-scheme.scss +107 -60
  318. package/styles/theme/_dynamic-spacing.scss +24 -18
  319. package/styles/theme/_fonts.scss +19 -78
  320. package/styles/theme/_index.scss +4 -0
  321. package/styles/theme/_size.scss +20 -20
  322. package/styles/theme/_tokens.scss +14 -14
  323. package/styles/theme/brands/dnb/_color-scheme.scss +121 -0
  324. package/styles/theme/brands/dnb/_fonts.scss +46 -0
  325. package/styles/theme/brands/dnb/_index.scss +2 -0
  326. package/styles/theme/brands/eika/_color-scheme.scss +121 -0
  327. package/styles/theme/brands/eika/_fonts.scss +46 -0
  328. package/styles/theme/brands/eika/_index.scss +2 -0
  329. package/styles/theme/brands/fremtind/_color-scheme.scss +121 -0
  330. package/styles/theme/brands/fremtind/_fonts.scss +30 -0
  331. package/styles/theme/brands/fremtind/_index.scss +2 -0
  332. package/styles/theme/brands/sparebank1/_color-scheme.scss +121 -0
  333. package/styles/theme/brands/sparebank1/_fonts.scss +38 -0
  334. package/styles/theme/brands/sparebank1/_index.scss +2 -0
  335. package/styles/utility/_headings.scss +1 -1
  336. package/styles/utility/_paragraphs.scss +2 -2
  337. package/styles/utility/_screen-reader.scss +1 -1
  338. package/styles/utility/_spacing.scss +2 -2
  339. package/src/fonts/FremtindGrotesk-Bold-Web.woff +0 -0
  340. package/src/fonts/FremtindGrotesk-Bold-Web.woff2 +0 -0
  341. package/src/fonts/FremtindGrotesk-BoldItalic-Web.woff +0 -0
  342. package/src/fonts/FremtindGrotesk-BoldItalic-Web.woff2 +0 -0
  343. package/src/fonts/FremtindGrotesk-Display-Web.woff +0 -0
  344. package/src/fonts/FremtindGrotesk-Display-Web.woff2 +0 -0
  345. package/src/fonts/FremtindGrotesk-Italic-Web.woff +0 -0
  346. package/src/fonts/FremtindGrotesk-Italic-Web.woff2 +0 -0
  347. package/src/fonts/FremtindGrotesk-Regular-Web.woff +0 -0
  348. package/src/fonts/FremtindGrotesk-Regular-Web.woff2 +0 -0
  349. package/src/fonts/FremtindGroteskMono-Regular-Web.woff +0 -0
  350. package/src/fonts/FremtindGroteskMono-Regular-Web.woff2 +0 -0
@@ -11,6 +11,7 @@
11
11
  --jkl-button-padding-icon: var(--jkl-unit-20);
12
12
  --jkl-button-padding-icon-button: var(--jkl-unit-10);
13
13
  --jkl-button-tertiary-padding-icon: var(--jkl-unit-05);
14
+ --jkl-button-text-ink-offset: 0.1em;
14
15
  --jkl-icon-weight: var(--jkl-icon-weight-bold);
15
16
  --text-color: var(--jkl-color-text-default);
16
17
  --background-color: transparent;
@@ -83,8 +84,13 @@
83
84
  // Håndter tekster som er lenger enn knappen
84
85
  // Knappen vokser til teksten, men kan f.eks. begrenses
85
86
  // av sidebredde på mobil
87
+ display: block;
86
88
  width: 100%;
87
89
  max-width: 100%;
90
+ // Gir diakritiske tegn litt ekstra plass i tekstboksen uten
91
+ // å endre knappens totale høyde.
92
+ padding-block-start: var(--jkl-button-text-ink-offset);
93
+ margin-block-start: calc(var(--jkl-button-text-ink-offset) * -1);
88
94
  overflow: hidden;
89
95
  white-space: nowrap;
90
96
  text-overflow: ellipsis;
@@ -104,11 +110,9 @@
104
110
  }
105
111
 
106
112
  &:hover {
107
- background-color: color-mix(
108
- in srgb,
109
- var(--background-color),
110
- var(--text-color) 15%
111
- );
113
+ background-color: color-mix(in srgb,
114
+ var(--background-color),
115
+ var(--text-color) 15%);
112
116
 
113
117
  @media (forced-colors: active) {
114
118
  @include jkl.focus-outline;
@@ -122,8 +126,8 @@
122
126
  }
123
127
 
124
128
  &--primary {
125
- --background-color: var(--jkl-color-background-action);
126
- --text-color: var(--jkl-color-text-on-action);
129
+ --background-color: var(--jkl-color-background-contrast);
130
+ --text-color: var(--jkl-color-text-on-contrast);
127
131
 
128
132
  @media (forced-colors: active) {
129
133
  border: calc(var(--border-width) * 2) solid Highlight;
@@ -139,16 +143,12 @@
139
143
  padding-inline: var(--jkl-button-tertiary-padding-icon);
140
144
 
141
145
  &:has(.jkl-icon:first-child) {
142
- padding-inline: var(--jkl-button-tertiary-padding-icon)
143
- calc(var(--jkl-button-tertiary-padding-icon) * 2);
146
+ padding-inline: var(--jkl-button-tertiary-padding-icon) calc(var(--jkl-button-tertiary-padding-icon) * 2);
144
147
  }
145
148
 
146
149
  &:has(.jkl-icon:last-child) {
147
- padding-inline: calc(
148
- var(--jkl-button-tertiary-padding-icon) * 2
149
- )
150
- var(--jkl-button-tertiary-padding-icon);
150
+ padding-inline: calc(var(--jkl-button-tertiary-padding-icon) * 2) var(--jkl-button-tertiary-padding-icon);
151
151
  }
152
152
  }
153
153
  }
154
- }
154
+ }
@@ -7,10 +7,10 @@
7
7
  --padding-m: var(--jkl-unit-15);
8
8
  --padding-l: var(--jkl-unit-20);
9
9
  --padding-xl: var(--jkl-unit-30);
10
- --border-radius: 0.25rem;
10
+ --border-radius: var(--jkl-border-radius-m);
11
11
  --border-color: transparent;
12
12
  --border-width: 0.0625rem;
13
- --background-color: transparent;
13
+ --background-color: var(--jkl-color-background-container);
14
14
  position: relative;
15
15
  overflow: hidden;
16
16
  display: block;
@@ -52,24 +52,19 @@
52
52
  .jkl-card[data-padding=xl] {
53
53
  --padding: var(--padding-xl);
54
54
  }
55
- .jkl-card--high {
56
- --background-color: var(--jkl-color-background-container-high);
57
- }
58
- .jkl-card--low {
59
- --background-color: var(--jkl-color-background-container-low);
60
- }
61
55
  .jkl-card--outlined {
62
- --border-color: var(--jkl-color-border-separator);
56
+ --border-color: var(--jkl-color-border-subdued);
57
+ --background-color: transparent;
63
58
  }
64
59
  .jkl-card[data-clickable=true] {
65
60
  cursor: pointer;
66
61
  }
67
62
  .jkl-card[data-clickable=true]:hover {
68
- --border-color: var(--jkl-color-border-separator-hover);
63
+ --border-color: var(--jkl-color-border-strong);
69
64
  --border-width: 0.125rem;
70
65
  }
71
66
  .jkl-card[data-clickable=true]:focus-visible {
72
- outline: 3px solid var(--jkl-color-border-action);
67
+ outline: 3px solid var(--jkl-color-border-strong);
73
68
  outline-offset: 3px;
74
69
  }
75
70
  .jkl-card-image {
@@ -1 +1 @@
1
- @layer jokul.components{.jkl-card{--padding-s:var(--jkl-unit-05);--padding-m:var(--jkl-unit-15);--padding-l:var(--jkl-unit-20);--padding-xl:var(--jkl-unit-30);--border-radius:0.25rem;--border-color:transparent;--border-width:0.0625rem;--background-color:transparent;background-color:var(--background-color);border-radius:var(--border-radius);box-sizing:border-box;color:var(--jkl-color-text-default);display:block;overflow:hidden;padding:var(--padding,var(--padding-s));position:relative;text-decoration:none}.jkl-card:after{border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);content:"";inset:0;pointer-events:none;position:absolute;transition-duration:var(--jkl-motion-timing-snappy);transition-property:border-color,border-size;transition-timing-function:var(--jkl-motion-easing-standard)}@media (min-width:680px){.jkl-card{--padding-s:var(--jkl-unit-10);--padding-m:var(--jkl-unit-20);--padding-l:var(--jkl-unit-30);--padding-xl:var(--jkl-unit-40)}}.jkl-card[data-padding=s]{--padding:var(--padding-s)}.jkl-card[data-padding=m]{--padding:var(--padding-m)}.jkl-card[data-padding=l]{--padding:var(--padding-l)}.jkl-card[data-padding=xl]{--padding:var(--padding-xl)}.jkl-card--high{--background-color:var(--jkl-color-background-container-high)}.jkl-card--low{--background-color:var(--jkl-color-background-container-low)}.jkl-card--outlined{--border-color:var(--jkl-color-border-separator)}.jkl-card[data-clickable=true]{cursor:pointer}.jkl-card[data-clickable=true]:hover{--border-color:var(--jkl-color-border-separator-hover);--border-width:0.125rem}.jkl-card[data-clickable=true]:focus-visible{outline:3px solid var(--jkl-color-border-action);outline-offset:3px}.jkl-card-image{--margin:calc(var(--padding, 0)*-1);aspect-ratio:var(--image-aspect-ratio,3/2);margin-inline:var(--margin,0);object-fit:cover;width:calc(100% + var(--padding, 0)*2)}.jkl-card-image--top{margin-top:var(--margin,0)}.jkl-card-image--bottom{margin-bottom:var(--margin,0)}.jkl-card-image--full{margin-block:var(--margin,0)}}
1
+ @layer jokul.components{.jkl-card{--padding-s:var(--jkl-unit-05);--padding-m:var(--jkl-unit-15);--padding-l:var(--jkl-unit-20);--padding-xl:var(--jkl-unit-30);--border-radius:var(--jkl-border-radius-m);--border-color:transparent;--border-width:0.0625rem;--background-color:var(--jkl-color-background-container);background-color:var(--background-color);border-radius:var(--border-radius);box-sizing:border-box;color:var(--jkl-color-text-default);display:block;overflow:hidden;padding:var(--padding,var(--padding-s));position:relative;text-decoration:none}.jkl-card:after{border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);content:"";inset:0;pointer-events:none;position:absolute;transition-duration:var(--jkl-motion-timing-snappy);transition-property:border-color,border-size;transition-timing-function:var(--jkl-motion-easing-standard)}@media (min-width:680px){.jkl-card{--padding-s:var(--jkl-unit-10);--padding-m:var(--jkl-unit-20);--padding-l:var(--jkl-unit-30);--padding-xl:var(--jkl-unit-40)}}.jkl-card[data-padding=s]{--padding:var(--padding-s)}.jkl-card[data-padding=m]{--padding:var(--padding-m)}.jkl-card[data-padding=l]{--padding:var(--padding-l)}.jkl-card[data-padding=xl]{--padding:var(--padding-xl)}.jkl-card--outlined{--border-color:var(--jkl-color-border-subdued);--background-color:transparent}.jkl-card[data-clickable=true]{cursor:pointer}.jkl-card[data-clickable=true]:hover{--border-color:var(--jkl-color-border-strong);--border-width:0.125rem}.jkl-card[data-clickable=true]:focus-visible{outline:3px solid var(--jkl-color-border-strong);outline-offset:3px}.jkl-card-image{--margin:calc(var(--padding, 0)*-1);aspect-ratio:var(--image-aspect-ratio,3/2);margin-inline:var(--margin,0);object-fit:cover;width:calc(100% + var(--padding, 0)*2)}.jkl-card-image--top{margin-top:var(--margin,0)}.jkl-card-image--bottom{margin-bottom:var(--margin,0)}.jkl-card-image--full{margin-block:var(--margin,0)}}
@@ -7,10 +7,10 @@
7
7
  --padding-m: var(--jkl-unit-15);
8
8
  --padding-l: var(--jkl-unit-20);
9
9
  --padding-xl: var(--jkl-unit-30);
10
- --border-radius: #{jkl.rem(4px)};
10
+ --border-radius: var(--jkl-border-radius-m);
11
11
  --border-color: transparent;
12
12
  --border-width: #{jkl.rem(1px)};
13
- --background-color: transparent;
13
+ --background-color: var(--jkl-color-background-container);
14
14
 
15
15
  position: relative;
16
16
  overflow: hidden;
@@ -56,23 +56,16 @@
56
56
  --padding: var(--padding-xl);
57
57
  }
58
58
 
59
- &--high {
60
- --background-color: var(--jkl-color-background-container-high);
61
- }
62
-
63
- &--low {
64
- --background-color: var(--jkl-color-background-container-low);
65
- }
66
-
67
59
  &--outlined {
68
- --border-color: var(--jkl-color-border-separator);
60
+ --border-color: var(--jkl-color-border-subdued);
61
+ --background-color: transparent;
69
62
  }
70
63
 
71
64
  &[data-clickable="true"] {
72
65
  cursor: pointer;
73
66
 
74
67
  &:hover {
75
- --border-color: var(--jkl-color-border-separator-hover);
68
+ --border-color: var(--jkl-color-border-strong);
76
69
  --border-width: #{jkl.rem(2px)};
77
70
  }
78
71
 
@@ -3,12 +3,6 @@
3
3
  */
4
4
  @layer jokul.components {
5
5
  .jkl-checkbox {
6
- /* stylelint-disable declaration-block-no-duplicate-custom-properties -- fallback for browsers without light-dark() support */
7
- --jkl-checkbox-error-color: #ab2e43;
8
- --jkl-checkbox-error-color: light-dark(#ab2e43, #d79ba5);
9
- /* stylelint-enable declaration-block-no-duplicate-custom-properties */
10
- --box-color: var(--jkl-color-border-action);
11
- --check-color: var(--jkl-color-border-action);
12
6
  --text-color: var(--jkl-color-text-default);
13
7
  --background-color: transparent;
14
8
  font: var(--jkl-text-style-text-medium);
@@ -19,10 +13,37 @@
19
13
  }
20
14
  .jkl-checkbox__input {
21
15
  position: absolute;
22
- opacity: 0;
23
- pointer-events: none;
24
- inset: 0 auto 0 0;
25
- width: 1lh;
16
+ inset-block-start: 0;
17
+ inset-inline-start: 0;
18
+ block-size: 1lh;
19
+ inline-size: 1lh;
20
+ margin: 0;
21
+ padding: 0;
22
+ cursor: pointer;
23
+ z-index: 1;
24
+ appearance: none;
25
+ background: transparent;
26
+ border: 0;
27
+ }
28
+ .jkl-checkbox__input {
29
+ outline: 0;
30
+ border-style: none;
31
+ outline-style: none;
32
+ }
33
+ .jkl-checkbox__input:active, .jkl-checkbox__input:hover, .jkl-checkbox__input:focus {
34
+ outline: 0;
35
+ outline-style: none;
36
+ }
37
+ @media screen and (forced-colors: active) {
38
+ .jkl-checkbox__input {
39
+ outline: revert;
40
+ border-style: revert;
41
+ outline-style: revert;
42
+ }
43
+ .jkl-checkbox__input:active, .jkl-checkbox__input:hover, .jkl-checkbox__input:focus {
44
+ outline: revert;
45
+ outline-style: revert;
46
+ }
26
47
  }
27
48
  .jkl-checkbox__label {
28
49
  cursor: pointer;
@@ -35,7 +56,7 @@
35
56
  .jkl-checkbox__label::before {
36
57
  content: "check_box_outline_blank";
37
58
  margin-inline-end: 0.25em;
38
- font-family: "Fremtind Material Symbols", "Fremtind Material Symbols Fallback", sans-serif;
59
+ font-family: "Jokul Icons", "Jokul Icons Fallback", sans-serif;
39
60
  font-variation-settings: "FILL" var(--jkl-icon-fill, 0);
40
61
  font-feature-settings: "liga";
41
62
  -webkit-font-feature-settings: "liga";
@@ -48,16 +69,23 @@
48
69
  transition-duration: var(--jkl-motion-timing-energetic);
49
70
  transition-property: font-variation-settings, transform;
50
71
  }
51
- .jkl-checkbox__label:has(+ :checked)::before {
72
+ .jkl-checkbox__input:focus-visible + .jkl-checkbox__label::before {
73
+ outline: 3px solid var(--jkl-color-border-strong);
74
+ outline-offset: 3px;
75
+ }
76
+ .jkl-checkbox__input:is(:hover, :active) + .jkl-checkbox__label, .jkl-checkbox__label:hover, .jkl-checkbox__label:active {
77
+ --jkl-icon-weight: var(--jkl-font-weight-bold);
78
+ }
79
+ .jkl-checkbox__input:checked + .jkl-checkbox__label::before {
52
80
  content: "check_box";
53
81
  --jkl-icon-fill: 1;
54
82
  }
55
- .jkl-checkbox__label:has(+ :indeterminate:not(:checked))::before {
83
+ .jkl-checkbox__input:indeterminate:not(:checked) + .jkl-checkbox__label::before {
56
84
  content: "indeterminate_check_box";
57
85
  --jkl-icon-fill: 1;
58
86
  }
59
- .jkl-checkbox__label:has(+ [aria-invalid=true])::before {
60
- color: var(--jkl-checkbox-error-color);
87
+ .jkl-checkbox__input[aria-invalid=true] + .jkl-checkbox__label::before {
88
+ color: var(--jkl-color-error-background-contrast);
61
89
  }
62
90
  .jkl-checkbox + .jkl-checkbox {
63
91
  margin-top: 0.75em;
@@ -1 +1 @@
1
- @layer jokul.components{.jkl-checkbox{--jkl-checkbox-error-color:#ab2e43;--jkl-checkbox-error-color:light-dark(#ab2e43,#d79ba5);--box-color:var(--jkl-color-border-action);--check-color:var(--jkl-color-border-action);--text-color:var(--jkl-color-text-default);--background-color:transparent;color:var(--text-color);display:flex;flex-wrap:wrap;font:var(--jkl-text-style-text-medium);position:relative}.jkl-checkbox__input{inset:0 auto 0 0;opacity:0;pointer-events:none;position:absolute;width:1lh}.jkl-checkbox__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-checkbox__label:before{content:"check_box_outline_blank";-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-checkbox__label:has(+:checked):before{content:"check_box";--jkl-icon-fill:1}.jkl-checkbox__label:has(+:indeterminate:not(:checked)):before{content:"indeterminate_check_box";--jkl-icon-fill:1}.jkl-checkbox__label:has(+[aria-invalid=true]):before{color:var(--jkl-checkbox-error-color)}.jkl-checkbox+.jkl-checkbox{margin-top:.75em}.jkl-checkbox--inline{display:inline-flex}.jkl-checkbox--inline:not(:last-of-type){margin-right:var(--jkl-unit-30)}}
1
+ @layer jokul.components{.jkl-checkbox{--text-color:var(--jkl-color-text-default);--background-color:transparent;color:var(--text-color);display:flex;flex-wrap:wrap;font:var(--jkl-text-style-text-medium);position:relative}.jkl-checkbox__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-checkbox__input:active,.jkl-checkbox__input:focus,.jkl-checkbox__input:hover{outline:0;outline-style:none}@media screen and (forced-colors:active){.jkl-checkbox__input{border-style:revert;outline:revert;outline-style:revert}.jkl-checkbox__input:active,.jkl-checkbox__input:focus,.jkl-checkbox__input:hover{outline:revert;outline-style:revert}}.jkl-checkbox__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-checkbox__label:before{content:"check_box_outline_blank";-webkit-margin-end:.25em;display:inline-block;font-family:Jokul Icons,Jokul Icons 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-checkbox__input:focus-visible+.jkl-checkbox__label:before{outline:3px solid var(--jkl-color-border-strong);outline-offset:3px}.jkl-checkbox__input:is(:hover,:active)+.jkl-checkbox__label,.jkl-checkbox__label:active,.jkl-checkbox__label:hover{--jkl-icon-weight:var(--jkl-font-weight-bold)}.jkl-checkbox__input:checked+.jkl-checkbox__label:before{content:"check_box";--jkl-icon-fill:1}.jkl-checkbox__input:indeterminate:not(:checked)+.jkl-checkbox__label:before{content:"indeterminate_check_box";--jkl-icon-fill:1}.jkl-checkbox__input[aria-invalid=true]+.jkl-checkbox__label:before{color:var(--jkl-color-error-background-contrast)}.jkl-checkbox+.jkl-checkbox{margin-top:.75em}.jkl-checkbox--inline{display:inline-flex}.jkl-checkbox--inline:not(:last-of-type){margin-right:var(--jkl-unit-30)}}
@@ -5,12 +5,6 @@
5
5
 
6
6
  @layer jokul.components {
7
7
  .jkl-checkbox {
8
- /* stylelint-disable declaration-block-no-duplicate-custom-properties -- fallback for browsers without light-dark() support */
9
- --jkl-checkbox-error-color: #ab2e43;
10
- --jkl-checkbox-error-color: light-dark(#ab2e43, #d79ba5);
11
- /* stylelint-enable declaration-block-no-duplicate-custom-properties */
12
- --box-color: var(--jkl-color-border-action);
13
- --check-color: var(--jkl-color-border-action);
14
8
  --text-color: var(--jkl-color-text-default);
15
9
  --background-color: transparent;
16
10
 
@@ -22,14 +16,21 @@
22
16
  position: relative;
23
17
 
24
18
  &__input {
25
- // Hide native checkbox
19
+ // Keep the real input on top of the icon so automation tools can target it.
26
20
  position: absolute;
27
- opacity: 0;
28
- pointer-events: none;
29
- // Make sure that when the browser scrolls here because of focus, the control
30
- // is positioned below the label so that the label becomes visible.
31
- inset: 0 auto 0 0;
32
- width: 1lh;
21
+ inset-block-start: 0;
22
+ inset-inline-start: 0;
23
+ block-size: 1lh;
24
+ inline-size: 1lh;
25
+ margin: 0;
26
+ padding: 0;
27
+ cursor: pointer;
28
+ z-index: 1;
29
+ appearance: none;
30
+ background: transparent;
31
+ border: 0;
32
+
33
+ @include jkl.reset-outline;
33
34
  }
34
35
 
35
36
  &__label {
@@ -47,22 +48,32 @@
47
48
 
48
49
  @include icon.base-styles;
49
50
  }
51
+ }
50
52
 
51
- &:has(+ :checked)::before {
52
- content: "check_box";
53
+ &__input:focus-visible + &__label::before {
54
+ @include jkl.focus-outline;
55
+ }
53
56
 
54
- --jkl-icon-fill: 1;
55
- }
57
+ &__input:is(:hover, :active) + &__label,
58
+ &__label:hover,
59
+ &__label:active {
60
+ --jkl-icon-weight: #{jkl.$font-weight-bold};
61
+ }
56
62
 
57
- &:has(+ :indeterminate:not(:checked))::before {
58
- content: "indeterminate_check_box";
63
+ &__input:checked + &__label::before {
64
+ content: "check_box";
59
65
 
60
- --jkl-icon-fill: 1;
61
- }
66
+ --jkl-icon-fill: 1;
67
+ }
62
68
 
63
- &:has(+ [aria-invalid="true"])::before {
64
- color: var(--jkl-checkbox-error-color);
65
- }
69
+ &__input:indeterminate:not(:checked) + &__label::before {
70
+ content: "indeterminate_check_box";
71
+
72
+ --jkl-icon-fill: 1;
73
+ }
74
+
75
+ &__input[aria-invalid="true"] + &__label::before {
76
+ color: var(--jkl-color-error-background-contrast);
66
77
  }
67
78
 
68
79
  & + & {
@@ -3,7 +3,7 @@
3
3
  */
4
4
  @layer jokul.components {
5
5
  .jkl-input-panel {
6
- --outer-border-color: var(--jkl-color-border-input);
6
+ --outer-border-color: var(--jkl-color-border-default);
7
7
  --outer-border-thickness: 0.0625rem;
8
8
  --background-color: transparent;
9
9
  --padding-inline: var(--jkl-unit-25);
@@ -26,26 +26,28 @@
26
26
  position: relative;
27
27
  padding: var(--jkl-unit-20) var(--padding-inline);
28
28
  }
29
+ .jkl-input-panel__header .jkl-radio-button,
30
+ .jkl-input-panel__header .jkl-checkbox {
31
+ grid-column: 1/-1;
32
+ grid-row: 1;
33
+ inline-size: 100%;
34
+ }
35
+ .jkl-input-panel__header label {
36
+ inline-size: 100%;
37
+ }
29
38
  .jkl-input-panel__header__amount {
30
39
  display: flex;
31
40
  height: 100%;
32
41
  align-items: center;
42
+ grid-column: 2;
43
+ grid-row: 1;
44
+ justify-self: end;
45
+ pointer-events: none;
46
+ position: relative;
47
+ z-index: 1;
33
48
  font: var(--jkl-text-style-text-medium);
34
49
  font-weight: var(--jkl-font-weight-bold);
35
50
  }
36
- .jkl-input-panel__header label,
37
- .jkl-input-panel__header .jkl-radio-button,
38
- .jkl-input-panel__header .jkl-checkbox {
39
- position: unset;
40
- }
41
- .jkl-input-panel__header label::after {
42
- content: "";
43
- position: absolute;
44
- top: 0;
45
- left: 0;
46
- inline-size: 100%;
47
- block-size: 100%;
48
- }
49
51
  .jkl-input-panel__description {
50
52
  height: 0;
51
53
  overflow: hidden;
@@ -58,30 +60,24 @@
58
60
  transition-property: height;
59
61
  }
60
62
  .jkl-input-panel:has(:focus-visible) {
61
- outline: 3px solid var(--jkl-color-border-action);
63
+ outline: 3px solid var(--jkl-color-border-strong);
62
64
  outline-offset: 3px;
63
65
  }
64
66
  .jkl-input-panel:has(:checked), .jkl-input-panel[data-always-open=true], .jkl-input-panel:not([data-always-open]) {
65
- --background-color: var(--jkl-color-background-container-high);
67
+ --background-color: var(--jkl-color-background-container);
66
68
  }
67
69
  .jkl-input-panel:has(:checked) .jkl-input-panel__description, .jkl-input-panel[data-always-open=true] .jkl-input-panel__description, .jkl-input-panel:not([data-always-open]) .jkl-input-panel__description {
68
70
  height: auto;
69
71
  padding-block-end: var(--jkl-unit-20);
70
72
  }
71
73
  .jkl-input-panel:has(input:hover) {
72
- --outer-border-color: var(--jkl-color-border-separator-hover);
74
+ --outer-border-color: var(--jkl-color-border-strong);
73
75
  --outer-border-thickness: 0.125rem;
74
76
  cursor: pointer;
75
77
  }
76
78
  }
77
79
  @layer jokul.components {
78
80
  .jkl-checkbox {
79
- /* stylelint-disable declaration-block-no-duplicate-custom-properties -- fallback for browsers without light-dark() support */
80
- --jkl-checkbox-error-color: #ab2e43;
81
- --jkl-checkbox-error-color: light-dark(#ab2e43, #d79ba5);
82
- /* stylelint-enable declaration-block-no-duplicate-custom-properties */
83
- --box-color: var(--jkl-color-border-action);
84
- --check-color: var(--jkl-color-border-action);
85
81
  --text-color: var(--jkl-color-text-default);
86
82
  --background-color: transparent;
87
83
  font: var(--jkl-text-style-text-medium);
@@ -92,10 +88,37 @@
92
88
  }
93
89
  .jkl-checkbox__input {
94
90
  position: absolute;
95
- opacity: 0;
96
- pointer-events: none;
97
- inset: 0 auto 0 0;
98
- width: 1lh;
91
+ inset-block-start: 0;
92
+ inset-inline-start: 0;
93
+ block-size: 1lh;
94
+ inline-size: 1lh;
95
+ margin: 0;
96
+ padding: 0;
97
+ cursor: pointer;
98
+ z-index: 1;
99
+ appearance: none;
100
+ background: transparent;
101
+ border: 0;
102
+ }
103
+ .jkl-checkbox__input {
104
+ outline: 0;
105
+ border-style: none;
106
+ outline-style: none;
107
+ }
108
+ .jkl-checkbox__input:active, .jkl-checkbox__input:hover, .jkl-checkbox__input:focus {
109
+ outline: 0;
110
+ outline-style: none;
111
+ }
112
+ @media screen and (forced-colors: active) {
113
+ .jkl-checkbox__input {
114
+ outline: revert;
115
+ border-style: revert;
116
+ outline-style: revert;
117
+ }
118
+ .jkl-checkbox__input:active, .jkl-checkbox__input:hover, .jkl-checkbox__input:focus {
119
+ outline: revert;
120
+ outline-style: revert;
121
+ }
99
122
  }
100
123
  .jkl-checkbox__label {
101
124
  cursor: pointer;
@@ -108,7 +131,7 @@
108
131
  .jkl-checkbox__label::before {
109
132
  content: "check_box_outline_blank";
110
133
  margin-inline-end: 0.25em;
111
- font-family: "Fremtind Material Symbols", "Fremtind Material Symbols Fallback", sans-serif;
134
+ font-family: "Jokul Icons", "Jokul Icons Fallback", sans-serif;
112
135
  font-variation-settings: "FILL" var(--jkl-icon-fill, 0);
113
136
  font-feature-settings: "liga";
114
137
  -webkit-font-feature-settings: "liga";
@@ -121,16 +144,23 @@
121
144
  transition-duration: var(--jkl-motion-timing-energetic);
122
145
  transition-property: font-variation-settings, transform;
123
146
  }
124
- .jkl-checkbox__label:has(+ :checked)::before {
147
+ .jkl-checkbox__input:focus-visible + .jkl-checkbox__label::before {
148
+ outline: 3px solid var(--jkl-color-border-strong);
149
+ outline-offset: 3px;
150
+ }
151
+ .jkl-checkbox__input:is(:hover, :active) + .jkl-checkbox__label, .jkl-checkbox__label:hover, .jkl-checkbox__label:active {
152
+ --jkl-icon-weight: var(--jkl-font-weight-bold);
153
+ }
154
+ .jkl-checkbox__input:checked + .jkl-checkbox__label::before {
125
155
  content: "check_box";
126
156
  --jkl-icon-fill: 1;
127
157
  }
128
- .jkl-checkbox__label:has(+ :indeterminate:not(:checked))::before {
158
+ .jkl-checkbox__input:indeterminate:not(:checked) + .jkl-checkbox__label::before {
129
159
  content: "indeterminate_check_box";
130
160
  --jkl-icon-fill: 1;
131
161
  }
132
- .jkl-checkbox__label:has(+ [aria-invalid=true])::before {
133
- color: var(--jkl-checkbox-error-color);
162
+ .jkl-checkbox__input[aria-invalid=true] + .jkl-checkbox__label::before {
163
+ color: var(--jkl-color-error-background-contrast);
134
164
  }
135
165
  .jkl-checkbox + .jkl-checkbox {
136
166
  margin-top: 0.75em;
@@ -147,4 +177,7 @@
147
177
  /* Visuell justering ettersom ikonet ikke fyller bounding box helt */
148
178
  margin-inline-start: -0.1em;
149
179
  }
180
+ .jkl-checkbox-panel .jkl-checkbox__input:focus-visible + .jkl-checkbox__label::before {
181
+ outline: none;
182
+ }
150
183
  }
@@ -1 +1 @@
1
- @layer jokul.components{.jkl-input-panel{--outer-border-color:var(--jkl-color-border-input);--outer-border-thickness:0.0625rem;--background-color:transparent;--padding-inline:var(--jkl-unit-25);background-color:var(--background-color);border-radius:var(--jkl-border-radius-s);box-shadow:inset 0 0 0 var(--outer-border-thickness) var(--outer-border-color);display:flex;flex-direction:column;interpolate-size:allow-keywords;transition-duration:var(--jkl-motion-timing-productive);transition-property:box-shadow;transition-timing-function:var(--jkl-motion-easing-standard)}.jkl-input-panel__header{align-items:center;cursor:pointer;display:grid;gap:.5rem;grid-template-columns:1fr -webkit-max-content;grid-template-columns:1fr max-content;padding:var(--jkl-unit-20) var(--padding-inline);position:relative}.jkl-input-panel__header__amount{align-items:center;display:flex;font:var(--jkl-text-style-text-medium);font-weight:var(--jkl-font-weight-bold);height:100%}.jkl-input-panel__header .jkl-checkbox,.jkl-input-panel__header .jkl-radio-button,.jkl-input-panel__header label{position:unset}.jkl-input-panel__header label:after{block-size:100%;content:"";inline-size:100%;left:0;position:absolute;top:0}.jkl-input-panel__description{height:0;overflow:hidden;padding-inline:var(--padding-inline);-webkit-padding-after:var(--jkl-spacing-none);line-height:normal;font:var(--jkl-text-style-paragraph-medium);padding-block-end:var(--jkl-spacing-none);transition-duration:var(--jkl-motion-timing-productive);transition-property:height;transition-timing-function:var(--jkl-motion-easing-standard)}.jkl-input-panel:has(:focus-visible){outline:3px solid var(--jkl-color-border-action);outline-offset:3px}.jkl-input-panel:has(:checked),.jkl-input-panel:not([data-always-open]),.jkl-input-panel[data-always-open=true]{--background-color:var(--jkl-color-background-container-high)}.jkl-input-panel:has(:checked) .jkl-input-panel__description,.jkl-input-panel:not([data-always-open]) .jkl-input-panel__description,.jkl-input-panel[data-always-open=true] .jkl-input-panel__description{height:auto;-webkit-padding-after:var(--jkl-unit-20);padding-block-end:var(--jkl-unit-20)}.jkl-input-panel:has(input:hover){--outer-border-color:var(--jkl-color-border-separator-hover);--outer-border-thickness:0.125rem;cursor:pointer}}@layer jokul.components{.jkl-checkbox{--jkl-checkbox-error-color:#ab2e43;--jkl-checkbox-error-color:light-dark(#ab2e43,#d79ba5);--box-color:var(--jkl-color-border-action);--check-color:var(--jkl-color-border-action);--text-color:var(--jkl-color-text-default);--background-color:transparent;color:var(--text-color);display:flex;flex-wrap:wrap;font:var(--jkl-text-style-text-medium);position:relative}.jkl-checkbox__input{inset:0 auto 0 0;opacity:0;pointer-events:none;position:absolute;width:1lh}.jkl-checkbox__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-checkbox__label:before{content:"check_box_outline_blank";-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-checkbox__label:has(+:checked):before{content:"check_box";--jkl-icon-fill:1}.jkl-checkbox__label:has(+:indeterminate:not(:checked)):before{content:"indeterminate_check_box";--jkl-icon-fill:1}.jkl-checkbox__label:has(+[aria-invalid=true]):before{color:var(--jkl-checkbox-error-color)}.jkl-checkbox+.jkl-checkbox{margin-top:.75em}.jkl-checkbox--inline{display:inline-flex}.jkl-checkbox--inline:not(:last-of-type){margin-right:var(--jkl-unit-30)}}@layer jokul.components{.jkl-checkbox-panel .jkl-checkbox{-webkit-margin-start:-.1em;margin-inline-start:-.1em}}
1
+ @layer jokul.components{.jkl-input-panel{--outer-border-color:var(--jkl-color-border-default);--outer-border-thickness:0.0625rem;--background-color:transparent;--padding-inline:var(--jkl-unit-25);background-color:var(--background-color);border-radius:var(--jkl-border-radius-s);box-shadow:inset 0 0 0 var(--outer-border-thickness) var(--outer-border-color);display:flex;flex-direction:column;interpolate-size:allow-keywords;transition-duration:var(--jkl-motion-timing-productive);transition-property:box-shadow;transition-timing-function:var(--jkl-motion-easing-standard)}.jkl-input-panel__header{align-items:center;cursor:pointer;display:grid;gap:.5rem;grid-template-columns:1fr -webkit-max-content;grid-template-columns:1fr max-content;padding:var(--jkl-unit-20) var(--padding-inline);position:relative}.jkl-input-panel__header .jkl-checkbox,.jkl-input-panel__header .jkl-radio-button{grid-column:1/-1;grid-row:1;inline-size:100%}.jkl-input-panel__header label{inline-size:100%}.jkl-input-panel__header__amount{align-items:center;display:flex;font:var(--jkl-text-style-text-medium);font-weight:var(--jkl-font-weight-bold);grid-column:2;grid-row:1;height:100%;justify-self:end;pointer-events:none;position:relative;z-index:1}.jkl-input-panel__description{height:0;overflow:hidden;padding-inline:var(--padding-inline);-webkit-padding-after:var(--jkl-spacing-none);line-height:normal;font:var(--jkl-text-style-paragraph-medium);padding-block-end:var(--jkl-spacing-none);transition-duration:var(--jkl-motion-timing-productive);transition-property:height;transition-timing-function:var(--jkl-motion-easing-standard)}.jkl-input-panel:has(:focus-visible){outline:3px solid var(--jkl-color-border-strong);outline-offset:3px}.jkl-input-panel:has(:checked),.jkl-input-panel:not([data-always-open]),.jkl-input-panel[data-always-open=true]{--background-color:var(--jkl-color-background-container)}.jkl-input-panel:has(:checked) .jkl-input-panel__description,.jkl-input-panel:not([data-always-open]) .jkl-input-panel__description,.jkl-input-panel[data-always-open=true] .jkl-input-panel__description{height:auto;-webkit-padding-after:var(--jkl-unit-20);padding-block-end:var(--jkl-unit-20)}.jkl-input-panel:has(input:hover){--outer-border-color:var(--jkl-color-border-strong);--outer-border-thickness:0.125rem;cursor:pointer}}@layer jokul.components{.jkl-checkbox{--text-color:var(--jkl-color-text-default);--background-color:transparent;color:var(--text-color);display:flex;flex-wrap:wrap;font:var(--jkl-text-style-text-medium);position:relative}.jkl-checkbox__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-checkbox__input:active,.jkl-checkbox__input:focus,.jkl-checkbox__input:hover{outline:0;outline-style:none}@media screen and (forced-colors:active){.jkl-checkbox__input{border-style:revert;outline:revert;outline-style:revert}.jkl-checkbox__input:active,.jkl-checkbox__input:focus,.jkl-checkbox__input:hover{outline:revert;outline-style:revert}}.jkl-checkbox__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-checkbox__label:before{content:"check_box_outline_blank";-webkit-margin-end:.25em;display:inline-block;font-family:Jokul Icons,Jokul Icons 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-checkbox__input:focus-visible+.jkl-checkbox__label:before{outline:3px solid var(--jkl-color-border-strong);outline-offset:3px}.jkl-checkbox__input:is(:hover,:active)+.jkl-checkbox__label,.jkl-checkbox__label:active,.jkl-checkbox__label:hover{--jkl-icon-weight:var(--jkl-font-weight-bold)}.jkl-checkbox__input:checked+.jkl-checkbox__label:before{content:"check_box";--jkl-icon-fill:1}.jkl-checkbox__input:indeterminate:not(:checked)+.jkl-checkbox__label:before{content:"indeterminate_check_box";--jkl-icon-fill:1}.jkl-checkbox__input[aria-invalid=true]+.jkl-checkbox__label:before{color:var(--jkl-color-error-background-contrast)}.jkl-checkbox+.jkl-checkbox{margin-top:.75em}.jkl-checkbox--inline{display:inline-flex}.jkl-checkbox--inline:not(:last-of-type){margin-right:var(--jkl-unit-30)}}@layer jokul.components{.jkl-checkbox-panel .jkl-checkbox{-webkit-margin-start:-.1em;margin-inline-start:-.1em}.jkl-checkbox-panel .jkl-checkbox__input:focus-visible+.jkl-checkbox__label:before{outline:none}}
@@ -10,4 +10,8 @@ $_checkbox-checked-animation-name: jkl-checkbox-checked-#{string.unique-id()};
10
10
  /* Visuell justering ettersom ikonet ikke fyller bounding box helt */
11
11
  margin-inline-start: -0.1em;
12
12
  }
13
+
14
+ .jkl-checkbox-panel .jkl-checkbox__input:focus-visible + .jkl-checkbox__label::before {
15
+ outline: none;
16
+ }
13
17
  }
@@ -1,4 +1,4 @@
1
- @use "../../jkl/" as jkl;
1
+ @use "../../../jkl" as jkl;
2
2
 
3
3
  .input-panel-example {
4
4
  &__season-tag {
@@ -7,8 +7,8 @@
7
7
  --height: var(--jkl-unit-40);
8
8
  --gap: var(--jkl-unit-05);
9
9
  --text-color: var(--jkl-color-text-default);
10
- --border-color: var(--jkl-color-border-separator);
11
- --background-color: transparent;
10
+ --border-color: var(--jkl-color-border-subdued);
11
+ --background-color: var(--jkl-color-background-container);
12
12
  --border-width: 0.0625rem;
13
13
  font: var(--jkl-text-style-text-small);
14
14
  font-weight: var(--jkl-font-weight-bold);
@@ -44,16 +44,16 @@
44
44
  transition-property: opacity;
45
45
  }
46
46
  .jkl-chip:focus-visible {
47
- outline: 3px solid var(--jkl-color-border-action);
47
+ outline: 3px solid var(--jkl-color-border-strong);
48
48
  outline-offset: 3px;
49
49
  }
50
50
  .jkl-chip:hover::after {
51
51
  opacity: 0.15;
52
52
  }
53
53
  .jkl-chip--filter[aria-pressed=true] {
54
- --background-color: var(--jkl-color-background-action);
55
- --text-color: var(--jkl-color-text-on-action);
56
- --border-color: var(--text-color);
54
+ --background-color: var(--jkl-color-background-contrast);
55
+ --text-color: var(--jkl-color-text-on-contrast);
56
+ --border-color: var(--jkl-color-border-strong);
57
57
  }
58
58
  @media screen and (forced-colors: active) {
59
59
  .jkl-chip--filter[aria-pressed=true] {
@@ -1 +1 @@
1
- .jkl-chip{--padding-inline:var(--jkl-unit-15);--padding-icon:var(--jkl-unit-10);--height:var(--jkl-unit-40);--gap:var(--jkl-unit-05);--text-color:var(--jkl-color-text-default);--border-color:var(--jkl-color-border-separator);--background-color:transparent;--border-width:0.0625rem;align-items:center;background-color:var(--background-color);border:var(--border-width) solid var(--border-color);border-radius:99999px;color:var(--text-color);cursor:pointer;display:inline-flex;font:var(--jkl-text-style-text-small);font-weight:var(--jkl-font-weight-bold);gap:var(--gap);min-height:var(--height);padding:0 var(--padding-inline);position:relative;text-align:initial;white-space:nowrap}@media screen and (forced-colors:active){.jkl-chip{border:2px CanvasText;border-style:none none dotted}}.jkl-chip:after{background-color:var(--text-color);border-radius:inherit;content:"";inset:0;opacity:0;position:absolute;transition-duration:var(--jkl-motion-timing-productive);transition-property:opacity;transition-timing-function:var(--jkl-motion-easing-standard)}.jkl-chip:focus-visible{outline:3px solid var(--jkl-color-border-action);outline-offset:3px}.jkl-chip:hover:after{opacity:.15}.jkl-chip--filter[aria-pressed=true]{--background-color:var(--jkl-color-background-action);--text-color:var(--jkl-color-text-on-action);--border-color:var(--text-color)}@media screen and (forced-colors:active){.jkl-chip--filter[aria-pressed=true]{forced-color-adjust:none;--background-color:CanvasText;--text-color:Canvas}}.jkl-chip:has(.jkl-icon){-webkit-padding-end:var(--padding-icon);padding-inline-end:var(--padding-icon)}
1
+ .jkl-chip{--padding-inline:var(--jkl-unit-15);--padding-icon:var(--jkl-unit-10);--height:var(--jkl-unit-40);--gap:var(--jkl-unit-05);--text-color:var(--jkl-color-text-default);--border-color:var(--jkl-color-border-subdued);--background-color:var(--jkl-color-background-container);--border-width:0.0625rem;align-items:center;background-color:var(--background-color);border:var(--border-width) solid var(--border-color);border-radius:99999px;color:var(--text-color);cursor:pointer;display:inline-flex;font:var(--jkl-text-style-text-small);font-weight:var(--jkl-font-weight-bold);gap:var(--gap);min-height:var(--height);padding:0 var(--padding-inline);position:relative;text-align:initial;white-space:nowrap}@media screen and (forced-colors:active){.jkl-chip{border:2px CanvasText;border-style:none none dotted}}.jkl-chip:after{background-color:var(--text-color);border-radius:inherit;content:"";inset:0;opacity:0;position:absolute;transition-duration:var(--jkl-motion-timing-productive);transition-property:opacity;transition-timing-function:var(--jkl-motion-easing-standard)}.jkl-chip:focus-visible{outline:3px solid var(--jkl-color-border-strong);outline-offset:3px}.jkl-chip:hover:after{opacity:.15}.jkl-chip--filter[aria-pressed=true]{--background-color:var(--jkl-color-background-contrast);--text-color:var(--jkl-color-text-on-contrast);--border-color:var(--jkl-color-border-strong)}@media screen and (forced-colors:active){.jkl-chip--filter[aria-pressed=true]{forced-color-adjust:none;--background-color:CanvasText;--text-color:Canvas}}.jkl-chip:has(.jkl-icon){-webkit-padding-end:var(--padding-icon);padding-inline-end:var(--padding-icon)}
@@ -7,13 +7,13 @@
7
7
  --height: var(--jkl-unit-40);
8
8
  --gap: var(--jkl-unit-05);
9
9
  --text-color: var(--jkl-color-text-default);
10
- --border-color: var(--jkl-color-border-separator);
11
- --background-color: transparent;
10
+ --border-color: var(--jkl-color-border-subdued);
11
+ --background-color: var(--jkl-color-background-container);
12
12
  --border-width: #{jkl.rem(1px)};
13
13
 
14
14
  @include jkl.text-style("text-small") {
15
15
  font-weight: jkl.$font-weight-bold;
16
- };
16
+ }
17
17
 
18
18
  cursor: pointer;
19
19
  position: relative;
@@ -57,9 +57,9 @@
57
57
 
58
58
  &--filter {
59
59
  &[aria-pressed="true"] {
60
- --background-color: var(--jkl-color-background-action);
61
- --text-color: var(--jkl-color-text-on-action);
62
- --border-color: var(--text-color);
60
+ --background-color: var(--jkl-color-background-contrast);
61
+ --text-color: var(--jkl-color-text-on-contrast);
62
+ --border-color: var(--jkl-color-border-strong);
63
63
 
64
64
  @include jkl.forced-colors-mode {
65
65
  forced-color-adjust: none;