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

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 (341) 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/__tests__/import-paths.test.mjs +273 -0
  106. package/codemods/import-paths.mjs +527 -0
  107. package/package.json +7 -1
  108. package/src/fonts/InterVariable-Italic.woff2 +0 -0
  109. package/src/fonts/InterVariable.woff2 +0 -0
  110. package/src/fonts/brands/dnb/DNB-Bold.woff2 +0 -0
  111. package/src/fonts/brands/dnb/DNB-Medium.woff2 +0 -0
  112. package/src/fonts/brands/dnb/DNB-Regular.woff2 +0 -0
  113. package/src/fonts/brands/dnb/DNBMono-Regular.woff2 +0 -0
  114. package/src/fonts/brands/eika/OpenSans-Bold.woff2 +0 -0
  115. package/src/fonts/brands/eika/OpenSans-Light.woff2 +0 -0
  116. package/src/fonts/brands/eika/OpenSans-Regular.woff2 +0 -0
  117. package/src/fonts/brands/eika/OpenSans-SemiBold.woff2 +0 -0
  118. package/src/fonts/brands/fremtind/Fremtind-Material-Symbols.woff2 +0 -0
  119. package/src/fonts/brands/fremtind/InterVariable-Italic.woff2 +0 -0
  120. package/src/fonts/brands/fremtind/InterVariable.woff2 +0 -0
  121. package/src/fonts/brands/sparebank1/SpareBank1-Medium-Web.woff2 +0 -0
  122. package/src/fonts/brands/sparebank1/SpareBank1-Regular-Web.woff2 +0 -0
  123. package/src/fonts/brands/sparebank1/SpareBank1-Title-Medium-Web.woff2 +0 -0
  124. package/styles/base.css +804 -185
  125. package/styles/base.min.css +1 -1
  126. package/styles/components/autosuggest/autosuggest.css +4 -4
  127. package/styles/components/autosuggest/autosuggest.min.css +1 -1
  128. package/styles/components/autosuggest/autosuggest.scss +4 -4
  129. package/styles/components/beta/description-list/description-list.css +1 -1
  130. package/styles/components/beta/description-list/description-list.min.css +1 -1
  131. package/styles/components/beta/description-list/description-list.scss +1 -1
  132. package/styles/components/beta/nav-link/navlink.css +4 -4
  133. package/styles/components/beta/nav-link/navlink.min.css +1 -1
  134. package/styles/components/beta/nav-link/navlink.scss +6 -4
  135. package/styles/components/beta/select/select.css +9 -9
  136. package/styles/components/beta/select/select.min.css +1 -1
  137. package/styles/components/beta/select/select.scss +8 -7
  138. package/styles/components/breadcrumb/breadcrumb.css +1 -1
  139. package/styles/components/breadcrumb/breadcrumb.min.css +1 -1
  140. package/styles/components/button/button.css +8 -4
  141. package/styles/components/button/button.min.css +1 -1
  142. package/styles/components/button/button.scss +14 -14
  143. package/styles/components/card/card.css +6 -11
  144. package/styles/components/card/card.min.css +1 -1
  145. package/styles/components/card/card.scss +5 -12
  146. package/styles/components/checkbox/checkbox.css +43 -15
  147. package/styles/components/checkbox/checkbox.min.css +1 -1
  148. package/styles/components/checkbox/checkbox.scss +35 -24
  149. package/styles/components/checkbox-panel/checkbox-panel.css +65 -32
  150. package/styles/components/checkbox-panel/checkbox-panel.min.css +1 -1
  151. package/styles/components/checkbox-panel/checkbox-panel.scss +4 -0
  152. package/styles/components/checkbox-panel/development/styles.scss +1 -1
  153. package/styles/components/chip/chip.css +6 -6
  154. package/styles/components/chip/chip.min.css +1 -1
  155. package/styles/components/chip/chip.scss +6 -6
  156. package/styles/components/combobox/combobox.css +25 -23
  157. package/styles/components/combobox/combobox.min.css +1 -1
  158. package/styles/components/combobox/combobox.scss +15 -18
  159. package/styles/components/countdown/countdown.css +4 -4
  160. package/styles/components/countdown/countdown.min.css +1 -1
  161. package/styles/components/datepicker/_calendar-date-button.scss +11 -9
  162. package/styles/components/datepicker/_calendar-navigation-dropdown.scss +1 -1
  163. package/styles/components/datepicker/_calendar.scss +6 -7
  164. package/styles/components/datepicker/datepicker.css +20 -12
  165. package/styles/components/datepicker/datepicker.min.css +1 -1
  166. package/styles/components/description-list/description-list.css +1 -1
  167. package/styles/components/description-list/description-list.min.css +1 -1
  168. package/styles/components/description-list/description-list.scss +1 -1
  169. package/styles/components/expander/expandable.css +21 -18
  170. package/styles/components/expander/expandable.min.css +1 -1
  171. package/styles/components/expander/expandable.scss +20 -20
  172. package/styles/components/feedback/_index.scss +1 -1
  173. package/styles/components/feedback/feedback.css +6 -8
  174. package/styles/components/feedback/feedback.min.css +1 -1
  175. package/styles/components/feedback/feedback.scss +4 -9
  176. package/styles/components/file/file.css +5 -5
  177. package/styles/components/file/file.min.css +1 -1
  178. package/styles/components/file/file.scss +5 -5
  179. package/styles/components/file-input/file-input.css +29 -25
  180. package/styles/components/file-input/file-input.min.css +1 -1
  181. package/styles/components/file-input/file-input.scss +3 -3
  182. package/styles/components/help/help.css +2 -2
  183. package/styles/components/help/help.min.css +1 -1
  184. package/styles/components/help/help.scss +4 -4
  185. package/styles/components/icon/_base-styles.scss +12 -14
  186. package/styles/components/icon/icon.css +5 -5
  187. package/styles/components/icon/icon.min.css +1 -1
  188. package/styles/components/icon/icon.scss +73 -73
  189. package/styles/components/icon-button/icon-button.css +2 -2
  190. package/styles/components/icon-button/icon-button.min.css +1 -1
  191. package/styles/components/icon-button/icon-button.scss +1 -1
  192. package/styles/components/input-group/input-group.css +2 -2
  193. package/styles/components/input-group/input-group.min.css +1 -1
  194. package/styles/components/input-panel/input-panel.css +19 -17
  195. package/styles/components/input-panel/input-panel.min.css +1 -1
  196. package/styles/components/input-panel/input-panel.scss +21 -20
  197. package/styles/components/link/link.css +2 -2
  198. package/styles/components/link/link.min.css +1 -1
  199. package/styles/components/link-list/link-list.css +8 -4
  200. package/styles/components/link-list/link-list.min.css +1 -1
  201. package/styles/components/link-list/link-list.scss +7 -3
  202. package/styles/components/loader/loader.css +6 -6
  203. package/styles/components/loader/loader.min.css +1 -1
  204. package/styles/components/loader/skeleton-loader.css +4 -4
  205. package/styles/components/loader/skeleton-loader.min.css +1 -1
  206. package/styles/components/loader/skeleton-loader.scss +1 -1
  207. package/styles/components/menu/_menu-divider.scss +1 -1
  208. package/styles/components/menu/_menu-item.scss +2 -2
  209. package/styles/components/menu/menu.css +5 -5
  210. package/styles/components/menu/menu.min.css +1 -1
  211. package/styles/components/menu/menu.scss +2 -2
  212. package/styles/components/message/message.css +20 -10
  213. package/styles/components/message/message.min.css +1 -1
  214. package/styles/components/message/message.scss +19 -12
  215. package/styles/components/modal/_layout.scss +22 -0
  216. package/styles/components/modal/_modal-base.scss +32 -0
  217. package/styles/components/modal/_motion.scss +45 -0
  218. package/styles/components/modal/_overlay.scss +20 -0
  219. package/styles/components/modal/_parts.scss +33 -0
  220. package/styles/components/modal/_placement.scss +59 -0
  221. package/styles/components/modal/modal.css +118 -34
  222. package/styles/components/modal/modal.min.css +1 -1
  223. package/styles/components/modal/modal.scss +6 -95
  224. package/styles/components/nav-link/nav-link.css +1 -1
  225. package/styles/components/nav-link/nav-link.min.css +1 -1
  226. package/styles/components/pagination/development/styles.scss +1 -1
  227. package/styles/components/pagination/pagination.css +3 -3
  228. package/styles/components/pagination/pagination.min.css +1 -1
  229. package/styles/components/pagination/pagination.scss +2 -2
  230. package/styles/components/popover/popover.css +12 -1
  231. package/styles/components/popover/popover.min.css +1 -1
  232. package/styles/components/popover/popover.scss +15 -1
  233. package/styles/components/progress-bar/progress-bar.css +27 -3
  234. package/styles/components/progress-bar/progress-bar.min.css +1 -1
  235. package/styles/components/progress-bar/progress-bar.scss +5 -0
  236. package/styles/components/radio-button/radio-button.css +43 -8
  237. package/styles/components/radio-button/radio-button.min.css +1 -1
  238. package/styles/components/radio-button/radio-button.scss +35 -16
  239. package/styles/components/radio-panel/development/styles.scss +1 -1
  240. package/styles/components/radio-panel/radio-panel.css +22 -17
  241. package/styles/components/radio-panel/radio-panel.min.css +1 -1
  242. package/styles/components/radio-panel/radio-panel.scss +4 -0
  243. package/styles/components/search/search-with-submit-button.css +1 -1
  244. package/styles/components/search/search-with-submit-button.min.css +1 -1
  245. package/styles/components/search/search-with-submit-button.scss +1 -1
  246. package/styles/components/search/search.css +4 -4
  247. package/styles/components/search/search.min.css +1 -1
  248. package/styles/components/search/search.scss +3 -3
  249. package/styles/components/segmented-control/segmented-control.css +61 -26
  250. package/styles/components/segmented-control/segmented-control.min.css +1 -1
  251. package/styles/components/segmented-control/segmented-control.scss +7 -7
  252. package/styles/components/select/select.css +17 -18
  253. package/styles/components/select/select.min.css +1 -1
  254. package/styles/components/select/select.scss +24 -29
  255. package/styles/components/summary-table/development/summary-table-example.scss +1 -1
  256. package/styles/components/summary-table/summary-table.css +2 -2
  257. package/styles/components/summary-table/summary-table.min.css +1 -1
  258. package/styles/components/summary-table/summary-table.scss +2 -2
  259. package/styles/components/system-message/system-message.css +23 -13
  260. package/styles/components/system-message/system-message.min.css +1 -1
  261. package/styles/components/system-message/system-message.scss +119 -108
  262. package/styles/components/table/_table-head.scss +1 -1
  263. package/styles/components/table/_table-row.scss +5 -3
  264. package/styles/components/table/table.css +6 -4
  265. package/styles/components/table/table.min.css +1 -1
  266. package/styles/components/table-of-contents/table-of-contents.css +2 -2
  267. package/styles/components/table-of-contents/table-of-contents.min.css +1 -1
  268. package/styles/components/table-of-contents/table-of-contents.scss +3 -3
  269. package/styles/components/tabs/tabs.css +5 -5
  270. package/styles/components/tabs/tabs.min.css +1 -1
  271. package/styles/components/tabs/tabs.scss +5 -6
  272. package/styles/components/tag/tag.css +16 -6
  273. package/styles/components/tag/tag.min.css +1 -1
  274. package/styles/components/tag/tag.scss +18 -7
  275. package/styles/components/text-area/text-area.css +12 -12
  276. package/styles/components/text-area/text-area.min.css +1 -1
  277. package/styles/components/text-input/text-input.css +12 -12
  278. package/styles/components/text-input/text-input.min.css +1 -1
  279. package/styles/components/toast/toast.css +20 -13
  280. package/styles/components/toast/toast.min.css +1 -1
  281. package/styles/components/toast/toast.scss +19 -18
  282. package/styles/components/toggle-switch/_toggle-slider.scss +4 -4
  283. package/styles/components/toggle-switch/toggle-switch.css +15 -25
  284. package/styles/components/toggle-switch/toggle-switch.min.css +1 -3
  285. package/styles/components/toggle-switch/toggle-switch.scss +10 -22
  286. package/styles/components/tooltip/tooltip.css +5 -5
  287. package/styles/components/tooltip/tooltip.min.css +1 -1
  288. package/styles/components/tooltip/tooltip.scss +5 -5
  289. package/styles/components/typography/_index.scss +2 -0
  290. package/styles/components/typography/text.css +38 -0
  291. package/styles/components/typography/text.min.css +1 -0
  292. package/styles/components/typography/text.scss +54 -0
  293. package/styles/components/typography/title.css +55 -0
  294. package/styles/components/typography/title.min.css +1 -0
  295. package/styles/components/typography/title.scss +59 -0
  296. package/styles/components.css +684 -365
  297. package/styles/components.min.css +1 -3
  298. package/styles/components.scss +53 -52
  299. package/styles/core/utility/_paragraphs.scss +39 -0
  300. package/styles/global/_base-class.scss +2 -2
  301. package/styles/global/_top-layer.scss +1 -1
  302. package/styles/hooks/stories/styles.scss +3 -3
  303. package/styles/jkl/_ornaments.scss +1 -1
  304. package/styles/jkl/_tokens.scss +140 -66
  305. package/styles/jkl/_typography.scss +13 -21
  306. package/styles/shared/input/shared-input-styles.scss +11 -15
  307. package/styles/shared/track/track.scss +2 -2
  308. package/styles/tailwind.css +104 -60
  309. package/styles/theme/_color-scheme.scss +107 -60
  310. package/styles/theme/_dynamic-spacing.scss +6 -6
  311. package/styles/theme/_fonts.scss +24 -74
  312. package/styles/theme/_index.scss +4 -0
  313. package/styles/theme/_tokens.scss +3 -3
  314. package/styles/theme/brands/dnb/_color-scheme.scss +121 -0
  315. package/styles/theme/brands/dnb/_fonts.scss +46 -0
  316. package/styles/theme/brands/dnb/_index.scss +2 -0
  317. package/styles/theme/brands/eika/_color-scheme.scss +121 -0
  318. package/styles/theme/brands/eika/_fonts.scss +46 -0
  319. package/styles/theme/brands/eika/_index.scss +2 -0
  320. package/styles/theme/brands/fremtind/_color-scheme.scss +121 -0
  321. package/styles/theme/brands/fremtind/_fonts.scss +30 -0
  322. package/styles/theme/brands/fremtind/_index.scss +2 -0
  323. package/styles/theme/brands/sparebank1/_color-scheme.scss +121 -0
  324. package/styles/theme/brands/sparebank1/_fonts.scss +38 -0
  325. package/styles/theme/brands/sparebank1/_index.scss +2 -0
  326. package/styles/utility/_headings.scss +1 -1
  327. package/styles/utility/_paragraphs.scss +2 -2
  328. package/styles/utility/_screen-reader.scss +1 -1
  329. package/styles/utility/_spacing.scss +2 -2
  330. package/src/fonts/FremtindGrotesk-Bold-Web.woff +0 -0
  331. package/src/fonts/FremtindGrotesk-Bold-Web.woff2 +0 -0
  332. package/src/fonts/FremtindGrotesk-BoldItalic-Web.woff +0 -0
  333. package/src/fonts/FremtindGrotesk-BoldItalic-Web.woff2 +0 -0
  334. package/src/fonts/FremtindGrotesk-Display-Web.woff +0 -0
  335. package/src/fonts/FremtindGrotesk-Display-Web.woff2 +0 -0
  336. package/src/fonts/FremtindGrotesk-Italic-Web.woff +0 -0
  337. package/src/fonts/FremtindGrotesk-Italic-Web.woff2 +0 -0
  338. package/src/fonts/FremtindGrotesk-Regular-Web.woff +0 -0
  339. package/src/fonts/FremtindGrotesk-Regular-Web.woff2 +0 -0
  340. package/src/fonts/FremtindGroteskMono-Regular-Web.woff +0 -0
  341. package/src/fonts/FremtindGroteskMono-Regular-Web.woff2 +0 -0
@@ -0,0 +1,273 @@
1
+ import test from "node:test";
2
+ import assert from "node:assert/strict";
3
+ import { transformImportPaths } from "../import-paths.mjs";
4
+
5
+ test("migrates core, styles and utilities imports", () => {
6
+ const source = `
7
+ import "@fremtind/jokul/styles/core/core.scss";
8
+ import "@fremtind/jokul/styles/styles.scss";
9
+ import type { WithChildren } from "@fremtind/jokul/core";
10
+ `;
11
+
12
+ const result = transformImportPaths(source, "/tmp/example.ts");
13
+
14
+ assert.equal(
15
+ result.text.includes('import "@fremtind/jokul/styles/base.scss";'),
16
+ true,
17
+ );
18
+ assert.equal(
19
+ result.text.includes('import "@fremtind/jokul/styles/components.scss";'),
20
+ true,
21
+ );
22
+ assert.equal(
23
+ result.text.includes(
24
+ 'import type { WithChildren } from "@fremtind/jokul/utilities";',
25
+ ),
26
+ true,
27
+ );
28
+ });
29
+
30
+ test("moves configured font imports ahead of base styles", () => {
31
+ const source = `@use "@fremtind/jokul/styles/core";
32
+ @use "@fremtind/jokul/styles/fonts" with (
33
+ $webfonts-dir: "../../src/fonts"
34
+ );
35
+ `;
36
+
37
+ const result = transformImportPaths(source, "/tmp/global.scss");
38
+
39
+ assert.match(
40
+ result.text,
41
+ /^@use "@fremtind\/jokul\/styles\/theme\/fonts" with \([\s\S]*?\);\n@use "@fremtind\/jokul\/styles\/base\.scss";/m,
42
+ );
43
+ assert.equal(result.reordered, true);
44
+ });
45
+
46
+ test("migrates internal relative core jkl imports", () => {
47
+ const source = `@use "../../../core/jkl";
48
+ `;
49
+
50
+ const result = transformImportPaths(
51
+ source,
52
+ "/tmp/components/modal/styles/_layout.scss",
53
+ );
54
+
55
+ assert.equal(result.text, '@use "../../../styles/jkl";\n');
56
+ });
57
+
58
+ test("rewrites beta style imports when the beta component is used in the same file", () => {
59
+ const source = `
60
+ import { BETA_Select } from "@fremtind/jokul/select";
61
+ import "@fremtind/jokul/styles/components/select/_index.scss";
62
+ `;
63
+
64
+ const result = transformImportPaths(source, "/tmp/example.tsx");
65
+
66
+ assert.equal(
67
+ result.text.includes(
68
+ '@fremtind/jokul/styles/components/beta/select/_index.scss',
69
+ ),
70
+ true,
71
+ );
72
+ assert.deepEqual(result.warnings, []);
73
+ });
74
+
75
+ test("warns when beta style imports are ambiguous", () => {
76
+ const source = `
77
+ import "@fremtind/jokul/styles/components/nav-link";
78
+ `;
79
+
80
+ const result = transformImportPaths(source, "/tmp/example.scss");
81
+
82
+ assert.equal(result.changed, false);
83
+ assert.equal(result.warnings.length, 1);
84
+ });
85
+
86
+ test("removes redundant webfonts.css imports when base or components css is also imported", () => {
87
+ const source = `import "@fremtind/jokul/styles/styles.css";
88
+ import "@fremtind/jokul/styles/core/core.css";
89
+ import "@fremtind/jokul/styles/fonts/webfonts.css";
90
+ `;
91
+
92
+ const result = transformImportPaths(source, "/tmp/main.tsx");
93
+
94
+ assert.equal(
95
+ result.text.includes("@fremtind/jokul/styles/fonts/webfonts.css"),
96
+ false,
97
+ );
98
+ assert.equal(
99
+ result.text.includes('import "@fremtind/jokul/styles/components.css";'),
100
+ true,
101
+ );
102
+ assert.equal(
103
+ result.text.includes('import "@fremtind/jokul/styles/base.css";'),
104
+ true,
105
+ );
106
+ assert.deepEqual(result.warnings, []);
107
+ });
108
+
109
+ test("removes minified webfonts.css imports as well", () => {
110
+ const source = `import "@fremtind/jokul/styles/core/core.min.css";
111
+ import "@fremtind/jokul/styles/fonts/webfonts.min.css";
112
+ `;
113
+
114
+ const result = transformImportPaths(source, "/tmp/main.ts");
115
+
116
+ assert.equal(
117
+ result.text.includes("webfonts"),
118
+ false,
119
+ );
120
+ assert.equal(
121
+ result.text.includes('import "@fremtind/jokul/styles/base.min.css";'),
122
+ true,
123
+ );
124
+ });
125
+
126
+ test("warns when webfonts.css is removed without a base or components import", () => {
127
+ const source = `import "@fremtind/jokul/styles/fonts/webfonts.css";
128
+ `;
129
+
130
+ const result = transformImportPaths(source, "/tmp/main.tsx");
131
+
132
+ assert.equal(result.text.includes("webfonts"), false);
133
+ assert.equal(result.warnings.length, 1);
134
+ assert.match(result.warnings[0], /styles\/base\.css/);
135
+ });
136
+
137
+ test("removes css @import of webfonts.css", () => {
138
+ const source = `@import "@fremtind/jokul/styles/components.css";
139
+ @import "@fremtind/jokul/styles/fonts/webfonts.css";
140
+ `;
141
+
142
+ const result = transformImportPaths(source, "/tmp/global.css");
143
+
144
+ assert.equal(result.text.includes("webfonts"), false);
145
+ assert.equal(
146
+ result.text.includes('@import "@fremtind/jokul/styles/components.css";'),
147
+ true,
148
+ );
149
+ assert.deepEqual(result.warnings, []);
150
+ });
151
+
152
+ test("warns about removed sass color variables", () => {
153
+ const source = `@use "@fremtind/jokul/styles/jkl";
154
+
155
+ .banner {
156
+ background: jkl.$color-granitt;
157
+ color: jkl.$color-snohvit;
158
+ }
159
+ `;
160
+
161
+ const result = transformImportPaths(source, "/tmp/banner.scss");
162
+
163
+ assert.equal(
164
+ result.warnings.some((warning) =>
165
+ /jkl\.\$color-\*/.test(warning),
166
+ ),
167
+ true,
168
+ );
169
+ // Bare én advarsel per mønster, selv om det er flere forekomster
170
+ assert.equal(
171
+ result.warnings.filter((warning) =>
172
+ /jkl\.\$color-\*/.test(warning),
173
+ ).length,
174
+ 1,
175
+ );
176
+ });
177
+
178
+ test("warns about removed light/dark mode mixins", () => {
179
+ const source = `@use "@fremtind/jokul/styles/jkl";
180
+
181
+ @include jkl.light-mode-variables {
182
+ --min-farge: jkl.$color-granitt;
183
+ }
184
+ @include jkl.dark-mode-variables {
185
+ --min-farge: jkl.$color-snohvit;
186
+ }
187
+ `;
188
+
189
+ const result = transformImportPaths(source, "/tmp/theme.scss");
190
+
191
+ assert.equal(
192
+ result.warnings.some((warning) =>
193
+ /light-mode-variables/.test(warning),
194
+ ),
195
+ true,
196
+ );
197
+ });
198
+
199
+ test("warns about deprecated text-style names", () => {
200
+ const source = `@use "@fremtind/jokul/styles/jkl";
201
+
202
+ .lead {
203
+ @include jkl.text-style("body");
204
+ }
205
+
206
+ .fineprint {
207
+ @include jkl.text-style("small");
208
+ }
209
+ `;
210
+
211
+ const result = transformImportPaths(source, "/tmp/typography.scss");
212
+
213
+ assert.equal(
214
+ result.warnings.some((warning) =>
215
+ /paragraph-large\/medium\/small/.test(warning),
216
+ ),
217
+ true,
218
+ );
219
+ assert.equal(
220
+ result.warnings.some((warning) => /<Text>-komponenten/.test(warning)),
221
+ true,
222
+ );
223
+ });
224
+
225
+ test("renames Fremtind Material Symbols font-family", () => {
226
+ const source = `.icon {
227
+ font-family: "Fremtind Material Symbols", "Fremtind Material Symbols Fallback", sans-serif;
228
+ }
229
+ `;
230
+
231
+ const result = transformImportPaths(source, "/tmp/icons.scss");
232
+
233
+ assert.equal(
234
+ result.text.includes("Fremtind Material Symbols"),
235
+ false,
236
+ );
237
+ assert.equal(
238
+ result.text.includes(
239
+ '"Jokul Icons", "Jokul Icons Fallback", sans-serif',
240
+ ),
241
+ true,
242
+ );
243
+ assert.equal(result.replacements, 2);
244
+ });
245
+
246
+ test("renames Fremtind Material Symbols inside CSS files too", () => {
247
+ const source = `.icon {
248
+ font-family: 'Fremtind Material Symbols';
249
+ }
250
+ `;
251
+
252
+ const result = transformImportPaths(source, "/tmp/icons.css");
253
+
254
+ assert.equal(
255
+ result.text.includes("Fremtind Material Symbols"),
256
+ false,
257
+ );
258
+ assert.equal(result.text.includes("'Jokul Icons'"), true);
259
+ });
260
+
261
+ test("does not warn about valid 5.0 patterns", () => {
262
+ const source = `@use "@fremtind/jokul/styles/jkl";
263
+
264
+ .title {
265
+ @include jkl.text-style("heading-1");
266
+ color: var(--jkl-color-text-default);
267
+ }
268
+ `;
269
+
270
+ const result = transformImportPaths(source, "/tmp/title.scss");
271
+
272
+ assert.deepEqual(result.warnings, []);
273
+ });